Merge branch 'topic/asoc' into next/asoc
This commit is contained in:
@@ -164,4 +164,12 @@
|
||||
#define WM8350_AUXADC_BATT 6
|
||||
#define WM8350_AUXADC_TEMP 7
|
||||
|
||||
struct wm8350;
|
||||
|
||||
/*
|
||||
* AUX ADC Readback
|
||||
*/
|
||||
int wm8350_read_auxadc(struct wm8350 *wm8350, int channel, int scale,
|
||||
int vref);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
*/
|
||||
#define WM8350_RESET_ID 0x00
|
||||
#define WM8350_ID 0x01
|
||||
#define WM8350_REVISION 0x02
|
||||
#define WM8350_SYSTEM_CONTROL_1 0x03
|
||||
#define WM8350_SYSTEM_CONTROL_2 0x04
|
||||
#define WM8350_SYSTEM_HIBERNATE 0x05
|
||||
@@ -57,6 +58,10 @@
|
||||
#define WM8350_OVER_CURRENT_INT_STATUS_MASK 0x25
|
||||
#define WM8350_GPIO_INT_STATUS_MASK 0x26
|
||||
#define WM8350_COMPARATOR_INT_STATUS_MASK 0x27
|
||||
#define WM8350_CHARGER_OVERRIDES 0xE2
|
||||
#define WM8350_MISC_OVERRIDES 0xE3
|
||||
#define WM8350_COMPARATOR_OVERRIDES 0xE7
|
||||
#define WM8350_STATE_MACHINE_STATUS 0xE9
|
||||
|
||||
#define WM8350_MAX_REGISTER 0xFF
|
||||
|
||||
@@ -76,6 +81,11 @@
|
||||
#define WM8350_CONF_STS_MASK 0x0C00
|
||||
#define WM8350_CUST_ID_MASK 0x00FF
|
||||
|
||||
/*
|
||||
* R2 (0x02) - Revision
|
||||
*/
|
||||
#define WM8350_MASK_REV_MASK 0x00FF
|
||||
|
||||
/*
|
||||
* R3 (0x03) - System Control 1
|
||||
*/
|
||||
@@ -523,6 +533,35 @@
|
||||
#define WM8350_DC2_STS 0x0002
|
||||
#define WM8350_DC1_STS 0x0001
|
||||
|
||||
/*
|
||||
* R226 (0xE2) - Charger status
|
||||
*/
|
||||
#define WM8350_CHG_BATT_HOT_OVRDE 0x8000
|
||||
#define WM8350_CHG_BATT_COLD_OVRDE 0x4000
|
||||
|
||||
/*
|
||||
* R227 (0xE3) - Misc Overrides
|
||||
*/
|
||||
#define WM8350_USB_LIMIT_OVRDE 0x0400
|
||||
|
||||
/*
|
||||
* R227 (0xE7) - Comparator Overrides
|
||||
*/
|
||||
#define WM8350_USB_FB_OVRDE 0x8000
|
||||
#define WM8350_WALL_FB_OVRDE 0x4000
|
||||
#define WM8350_BATT_FB_OVRDE 0x2000
|
||||
|
||||
|
||||
/*
|
||||
* R233 (0xE9) - State Machinine Status
|
||||
*/
|
||||
#define WM8350_USB_SM_MASK 0x0700
|
||||
#define WM8350_USB_SM_SHIFT 8
|
||||
|
||||
#define WM8350_USB_SM_100_SLV 1
|
||||
#define WM8350_USB_SM_500_SLV 5
|
||||
#define WM8350_USB_SM_STDBY_SLV 7
|
||||
|
||||
/* WM8350 wake up conditions */
|
||||
#define WM8350_IRQ_WKUP_OFF_STATE 43
|
||||
#define WM8350_IRQ_WKUP_HIB_STATE 44
|
||||
@@ -536,6 +575,7 @@
|
||||
#define WM8350_REV_E 0x4
|
||||
#define WM8350_REV_F 0x5
|
||||
#define WM8350_REV_G 0x6
|
||||
#define WM8350_REV_H 0x7
|
||||
|
||||
#define WM8350_NUM_IRQ 63
|
||||
|
||||
@@ -549,6 +589,14 @@ extern const u16 wm8350_mode0_defaults[];
|
||||
extern const u16 wm8350_mode1_defaults[];
|
||||
extern const u16 wm8350_mode2_defaults[];
|
||||
extern const u16 wm8350_mode3_defaults[];
|
||||
extern const u16 wm8351_mode0_defaults[];
|
||||
extern const u16 wm8351_mode1_defaults[];
|
||||
extern const u16 wm8351_mode2_defaults[];
|
||||
extern const u16 wm8351_mode3_defaults[];
|
||||
extern const u16 wm8352_mode0_defaults[];
|
||||
extern const u16 wm8352_mode1_defaults[];
|
||||
extern const u16 wm8352_mode2_defaults[];
|
||||
extern const u16 wm8352_mode3_defaults[];
|
||||
|
||||
struct wm8350;
|
||||
|
||||
@@ -558,8 +606,6 @@ struct wm8350_irq {
|
||||
};
|
||||
|
||||
struct wm8350 {
|
||||
int rev; /* chip revision */
|
||||
|
||||
struct device *dev;
|
||||
|
||||
/* device IO */
|
||||
@@ -572,6 +618,8 @@ struct wm8350 {
|
||||
void *src);
|
||||
u16 *reg_cache;
|
||||
|
||||
struct mutex auxadc_mutex;
|
||||
|
||||
/* Interrupt handling */
|
||||
struct work_struct irq_work;
|
||||
struct mutex irq_mutex; /* IRQ table mutex */
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
#ifndef __LINUX_MFD_WM8350_PMIC_H
|
||||
#define __LINUX_MFD_WM8350_PMIC_H
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
|
||||
/*
|
||||
* Register values.
|
||||
*/
|
||||
@@ -700,7 +704,38 @@ struct wm8350;
|
||||
struct platform_device;
|
||||
struct regulator_init_data;
|
||||
|
||||
/*
|
||||
* WM8350 LED platform data
|
||||
*/
|
||||
struct wm8350_led_platform_data {
|
||||
const char *name;
|
||||
const char *default_trigger;
|
||||
int max_uA;
|
||||
};
|
||||
|
||||
struct wm8350_led {
|
||||
struct platform_device *pdev;
|
||||
struct mutex mutex;
|
||||
struct work_struct work;
|
||||
spinlock_t value_lock;
|
||||
enum led_brightness value;
|
||||
struct led_classdev cdev;
|
||||
int max_uA_index;
|
||||
int enabled;
|
||||
|
||||
struct regulator *isink;
|
||||
struct regulator_consumer_supply isink_consumer;
|
||||
struct regulator_init_data isink_init;
|
||||
struct regulator *dcdc;
|
||||
struct regulator_consumer_supply dcdc_consumer;
|
||||
struct regulator_init_data dcdc_init;
|
||||
};
|
||||
|
||||
struct wm8350_pmic {
|
||||
/* Number of regulators of each type on this device */
|
||||
int max_dcdc;
|
||||
int max_isink;
|
||||
|
||||
/* ISINK to DCDC mapping */
|
||||
int isink_A_dcdc;
|
||||
int isink_B_dcdc;
|
||||
@@ -713,10 +748,15 @@ struct wm8350_pmic {
|
||||
|
||||
/* regulator devices */
|
||||
struct platform_device *pdev[NUM_WM8350_REGULATORS];
|
||||
|
||||
/* LED devices */
|
||||
struct wm8350_led led[2];
|
||||
};
|
||||
|
||||
int wm8350_register_regulator(struct wm8350 *wm8350, int reg,
|
||||
struct regulator_init_data *initdata);
|
||||
int wm8350_register_led(struct wm8350 *wm8350, int lednum, int dcdc, int isink,
|
||||
struct wm8350_led_platform_data *pdata);
|
||||
|
||||
/*
|
||||
* Additional DCDC control not supported via regulator API
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
#ifndef __LINUX_MFD_WM8350_SUPPLY_H_
|
||||
#define __LINUX_MFD_WM8350_SUPPLY_H_
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/power_supply.h>
|
||||
|
||||
/*
|
||||
* Charger registers
|
||||
@@ -104,8 +105,30 @@
|
||||
#define WM8350_IRQ_EXT_WALL_FB 37
|
||||
#define WM8350_IRQ_EXT_BAT_FB 38
|
||||
|
||||
/*
|
||||
* Policy to control charger state machine.
|
||||
*/
|
||||
struct wm8350_charger_policy {
|
||||
|
||||
/* charger state machine policy - set in machine driver */
|
||||
int eoc_mA; /* end of charge current (mA) */
|
||||
int charge_mV; /* charge voltage */
|
||||
int fast_limit_mA; /* fast charge current limit */
|
||||
int fast_limit_USB_mA; /* USB fast charge current limit */
|
||||
int charge_timeout; /* charge timeout (mins) */
|
||||
int trickle_start_mV; /* trickle charge starts at mV */
|
||||
int trickle_charge_mA; /* trickle charge current */
|
||||
int trickle_charge_USB_mA; /* USB trickle charge current */
|
||||
};
|
||||
|
||||
struct wm8350_power {
|
||||
struct platform_device *pdev;
|
||||
struct power_supply battery;
|
||||
struct power_supply usb;
|
||||
struct power_supply ac;
|
||||
struct wm8350_charger_policy *policy;
|
||||
|
||||
int rev_g_coeff;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user