Merge branches 'ib-mfd-gpio-i2c-3.19', 'ib-mfd-iio-3.19' and 'ib-mfd-regulator-v3.19', tag 'ib-mfd-regulator-clk-v3.19' into ibs-for-mfd-merged
Immutable branch between MFD, Regulator and Clk, due for v3.19
This commit is contained in:
@@ -14,6 +14,8 @@
|
||||
enum {
|
||||
AXP202_ID = 0,
|
||||
AXP209_ID,
|
||||
AXP288_ID,
|
||||
NR_AXP20X_VARIANTS,
|
||||
};
|
||||
|
||||
#define AXP20X_DATACACHE(m) (0x04 + (m))
|
||||
@@ -49,11 +51,13 @@ enum {
|
||||
#define AXP20X_IRQ3_EN 0x42
|
||||
#define AXP20X_IRQ4_EN 0x43
|
||||
#define AXP20X_IRQ5_EN 0x44
|
||||
#define AXP20X_IRQ6_EN 0x45
|
||||
#define AXP20X_IRQ1_STATE 0x48
|
||||
#define AXP20X_IRQ2_STATE 0x49
|
||||
#define AXP20X_IRQ3_STATE 0x4a
|
||||
#define AXP20X_IRQ4_STATE 0x4b
|
||||
#define AXP20X_IRQ5_STATE 0x4c
|
||||
#define AXP20X_IRQ6_STATE 0x4d
|
||||
|
||||
/* ADC */
|
||||
#define AXP20X_ACIN_V_ADC_H 0x56
|
||||
@@ -116,6 +120,15 @@ enum {
|
||||
#define AXP20X_CC_CTRL 0xb8
|
||||
#define AXP20X_FG_RES 0xb9
|
||||
|
||||
/* AXP288 specific registers */
|
||||
#define AXP288_PMIC_ADC_H 0x56
|
||||
#define AXP288_PMIC_ADC_L 0x57
|
||||
#define AXP288_ADC_TS_PIN_CTRL 0x84
|
||||
|
||||
#define AXP288_PMIC_ADC_EN 0x84
|
||||
#define AXP288_FG_TUNE5 0xed
|
||||
|
||||
|
||||
/* Regulators IDs */
|
||||
enum {
|
||||
AXP20X_LDO1 = 0,
|
||||
@@ -169,12 +182,58 @@ enum {
|
||||
AXP20X_IRQ_GPIO0_INPUT,
|
||||
};
|
||||
|
||||
enum axp288_irqs {
|
||||
AXP288_IRQ_VBUS_FALL = 2,
|
||||
AXP288_IRQ_VBUS_RISE,
|
||||
AXP288_IRQ_OV,
|
||||
AXP288_IRQ_FALLING_ALT,
|
||||
AXP288_IRQ_RISING_ALT,
|
||||
AXP288_IRQ_OV_ALT,
|
||||
AXP288_IRQ_DONE = 10,
|
||||
AXP288_IRQ_CHARGING,
|
||||
AXP288_IRQ_SAFE_QUIT,
|
||||
AXP288_IRQ_SAFE_ENTER,
|
||||
AXP288_IRQ_ABSENT,
|
||||
AXP288_IRQ_APPEND,
|
||||
AXP288_IRQ_QWBTU,
|
||||
AXP288_IRQ_WBTU,
|
||||
AXP288_IRQ_QWBTO,
|
||||
AXP288_IRQ_WBTO,
|
||||
AXP288_IRQ_QCBTU,
|
||||
AXP288_IRQ_CBTU,
|
||||
AXP288_IRQ_QCBTO,
|
||||
AXP288_IRQ_CBTO,
|
||||
AXP288_IRQ_WL2,
|
||||
AXP288_IRQ_WL1,
|
||||
AXP288_IRQ_GPADC,
|
||||
AXP288_IRQ_OT = 31,
|
||||
AXP288_IRQ_GPIO0,
|
||||
AXP288_IRQ_GPIO1,
|
||||
AXP288_IRQ_POKO,
|
||||
AXP288_IRQ_POKL,
|
||||
AXP288_IRQ_POKS,
|
||||
AXP288_IRQ_POKN,
|
||||
AXP288_IRQ_POKP,
|
||||
AXP288_IRQ_TIMER,
|
||||
AXP288_IRQ_MV_CHNG,
|
||||
AXP288_IRQ_BC_USB_CHNG,
|
||||
};
|
||||
|
||||
#define AXP288_TS_ADC_H 0x58
|
||||
#define AXP288_TS_ADC_L 0x59
|
||||
#define AXP288_GP_ADC_H 0x5a
|
||||
#define AXP288_GP_ADC_L 0x5b
|
||||
|
||||
struct axp20x_dev {
|
||||
struct device *dev;
|
||||
struct i2c_client *i2c_client;
|
||||
struct regmap *regmap;
|
||||
struct regmap_irq_chip_data *regmap_irqc;
|
||||
long variant;
|
||||
int nr_cells;
|
||||
struct mfd_cell *cells;
|
||||
const struct regmap_config *regmap_cfg;
|
||||
const struct regmap_irq_chip *regmap_irq_chip;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_AXP20X_H */
|
||||
|
||||
@@ -111,6 +111,13 @@ extern int mfd_add_devices(struct device *parent, int id,
|
||||
struct resource *mem_base,
|
||||
int irq_base, struct irq_domain *irq_domain);
|
||||
|
||||
static inline int mfd_add_hotplug_devices(struct device *parent,
|
||||
const struct mfd_cell *cells, int n_devs)
|
||||
{
|
||||
return mfd_add_devices(parent, PLATFORM_DEVID_AUTO, cells, n_devs,
|
||||
NULL, 0, NULL);
|
||||
}
|
||||
|
||||
extern void mfd_remove_devices(struct device *parent);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
#ifndef __LINUX_USB_DLN2_H
|
||||
#define __LINUX_USB_DLN2_H
|
||||
|
||||
#define DLN2_CMD(cmd, id) ((cmd) | ((id) << 8))
|
||||
|
||||
struct dln2_platform_data {
|
||||
u16 handle; /* sub-driver handle (internally used only) */
|
||||
u8 port; /* I2C/SPI port */
|
||||
};
|
||||
|
||||
/**
|
||||
* dln2_event_cb_t - event callback function signature
|
||||
*
|
||||
* @pdev - the sub-device that registered this callback
|
||||
* @echo - the echo header field received in the message
|
||||
* @data - the data payload
|
||||
* @len - the data payload length
|
||||
*
|
||||
* The callback function is called in interrupt context and the data payload is
|
||||
* only valid during the call. If the user needs later access of the data, it
|
||||
* must copy it.
|
||||
*/
|
||||
|
||||
typedef void (*dln2_event_cb_t)(struct platform_device *pdev, u16 echo,
|
||||
const void *data, int len);
|
||||
|
||||
/**
|
||||
* dl2n_register_event_cb - register a callback function for an event
|
||||
*
|
||||
* @pdev - the sub-device that registers the callback
|
||||
* @event - the event for which to register a callback
|
||||
* @event_cb - the callback function
|
||||
*
|
||||
* @return 0 in case of success, negative value in case of error
|
||||
*/
|
||||
int dln2_register_event_cb(struct platform_device *pdev, u16 event,
|
||||
dln2_event_cb_t event_cb);
|
||||
|
||||
/**
|
||||
* dln2_unregister_event_cb - unregister the callback function for an event
|
||||
*
|
||||
* @pdev - the sub-device that registered the callback
|
||||
* @event - the event for which to register a callback
|
||||
*/
|
||||
void dln2_unregister_event_cb(struct platform_device *pdev, u16 event);
|
||||
|
||||
/**
|
||||
* dln2_transfer - issue a DLN2 command and wait for a response and the
|
||||
* associated data
|
||||
*
|
||||
* @pdev - the sub-device which is issuing this transfer
|
||||
* @cmd - the command to be sent to the device
|
||||
* @obuf - the buffer to be sent to the device; it can be NULL if the user
|
||||
* doesn't need to transmit data with this command
|
||||
* @obuf_len - the size of the buffer to be sent to the device
|
||||
* @ibuf - any data associated with the response will be copied here; it can be
|
||||
* NULL if the user doesn't need the response data
|
||||
* @ibuf_len - must be initialized to the input buffer size; it will be modified
|
||||
* to indicate the actual data transferred;
|
||||
*
|
||||
* @return 0 for success, negative value for errors
|
||||
*/
|
||||
int dln2_transfer(struct platform_device *pdev, u16 cmd,
|
||||
const void *obuf, unsigned obuf_len,
|
||||
void *ibuf, unsigned *ibuf_len);
|
||||
|
||||
/**
|
||||
* dln2_transfer_rx - variant of @dln2_transfer() where TX buffer is not needed
|
||||
*
|
||||
* @pdev - the sub-device which is issuing this transfer
|
||||
* @cmd - the command to be sent to the device
|
||||
* @ibuf - any data associated with the response will be copied here; it can be
|
||||
* NULL if the user doesn't need the response data
|
||||
* @ibuf_len - must be initialized to the input buffer size; it will be modified
|
||||
* to indicate the actual data transferred;
|
||||
*
|
||||
* @return 0 for success, negative value for errors
|
||||
*/
|
||||
|
||||
static inline int dln2_transfer_rx(struct platform_device *pdev, u16 cmd,
|
||||
void *ibuf, unsigned *ibuf_len)
|
||||
{
|
||||
return dln2_transfer(pdev, cmd, NULL, 0, ibuf, ibuf_len);
|
||||
}
|
||||
|
||||
/**
|
||||
* dln2_transfer_tx - variant of @dln2_transfer() where RX buffer is not needed
|
||||
*
|
||||
* @pdev - the sub-device which is issuing this transfer
|
||||
* @cmd - the command to be sent to the device
|
||||
* @obuf - the buffer to be sent to the device; it can be NULL if the
|
||||
* user doesn't need to transmit data with this command
|
||||
* @obuf_len - the size of the buffer to be sent to the device
|
||||
*
|
||||
* @return 0 for success, negative value for errors
|
||||
*/
|
||||
static inline int dln2_transfer_tx(struct platform_device *pdev, u16 cmd,
|
||||
const void *obuf, unsigned obuf_len)
|
||||
{
|
||||
return dln2_transfer(pdev, cmd, obuf, obuf_len, NULL, NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -28,6 +28,7 @@
|
||||
#define MIN_800_MV 800000
|
||||
#define MIN_750_MV 750000
|
||||
#define MIN_600_MV 600000
|
||||
#define MIN_500_MV 500000
|
||||
|
||||
/* Macros to represent steps for LDO/BUCK */
|
||||
#define STEP_50_MV 50000
|
||||
@@ -41,6 +42,7 @@ enum sec_device_type {
|
||||
S5M8767X,
|
||||
S2MPA01,
|
||||
S2MPS11X,
|
||||
S2MPS13X,
|
||||
S2MPS14X,
|
||||
S2MPU02,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,186 @@
|
||||
/*
|
||||
* s2mps13.h
|
||||
*
|
||||
* Copyright (c) 2014 Samsung Electronics Co., Ltd
|
||||
* http://www.samsung.com
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_S2MPS13_H
|
||||
#define __LINUX_MFD_S2MPS13_H
|
||||
|
||||
/* S2MPS13 registers */
|
||||
enum s2mps13_reg {
|
||||
S2MPS13_REG_ID,
|
||||
S2MPS13_REG_INT1,
|
||||
S2MPS13_REG_INT2,
|
||||
S2MPS13_REG_INT3,
|
||||
S2MPS13_REG_INT1M,
|
||||
S2MPS13_REG_INT2M,
|
||||
S2MPS13_REG_INT3M,
|
||||
S2MPS13_REG_ST1,
|
||||
S2MPS13_REG_ST2,
|
||||
S2MPS13_REG_PWRONSRC,
|
||||
S2MPS13_REG_OFFSRC,
|
||||
S2MPS13_REG_BU_CHG,
|
||||
S2MPS13_REG_RTCCTRL,
|
||||
S2MPS13_REG_CTRL1,
|
||||
S2MPS13_REG_CTRL2,
|
||||
S2MPS13_REG_RSVD1,
|
||||
S2MPS13_REG_RSVD2,
|
||||
S2MPS13_REG_RSVD3,
|
||||
S2MPS13_REG_RSVD4,
|
||||
S2MPS13_REG_RSVD5,
|
||||
S2MPS13_REG_RSVD6,
|
||||
S2MPS13_REG_CTRL3,
|
||||
S2MPS13_REG_RSVD7,
|
||||
S2MPS13_REG_RSVD8,
|
||||
S2MPS13_REG_WRSTBI,
|
||||
S2MPS13_REG_B1CTRL,
|
||||
S2MPS13_REG_B1OUT,
|
||||
S2MPS13_REG_B2CTRL,
|
||||
S2MPS13_REG_B2OUT,
|
||||
S2MPS13_REG_B3CTRL,
|
||||
S2MPS13_REG_B3OUT,
|
||||
S2MPS13_REG_B4CTRL,
|
||||
S2MPS13_REG_B4OUT,
|
||||
S2MPS13_REG_B5CTRL,
|
||||
S2MPS13_REG_B5OUT,
|
||||
S2MPS13_REG_B6CTRL,
|
||||
S2MPS13_REG_B6OUT,
|
||||
S2MPS13_REG_B7CTRL,
|
||||
S2MPS13_REG_B7OUT,
|
||||
S2MPS13_REG_B8CTRL,
|
||||
S2MPS13_REG_B8OUT,
|
||||
S2MPS13_REG_B9CTRL,
|
||||
S2MPS13_REG_B9OUT,
|
||||
S2MPS13_REG_B10CTRL,
|
||||
S2MPS13_REG_B10OUT,
|
||||
S2MPS13_REG_BB1CTRL,
|
||||
S2MPS13_REG_BB1OUT,
|
||||
S2MPS13_REG_BUCK_RAMP1,
|
||||
S2MPS13_REG_BUCK_RAMP2,
|
||||
S2MPS13_REG_LDO_DVS1,
|
||||
S2MPS13_REG_LDO_DVS2,
|
||||
S2MPS13_REG_LDO_DVS3,
|
||||
S2MPS13_REG_B6OUT2,
|
||||
S2MPS13_REG_L1CTRL,
|
||||
S2MPS13_REG_L2CTRL,
|
||||
S2MPS13_REG_L3CTRL,
|
||||
S2MPS13_REG_L4CTRL,
|
||||
S2MPS13_REG_L5CTRL,
|
||||
S2MPS13_REG_L6CTRL,
|
||||
S2MPS13_REG_L7CTRL,
|
||||
S2MPS13_REG_L8CTRL,
|
||||
S2MPS13_REG_L9CTRL,
|
||||
S2MPS13_REG_L10CTRL,
|
||||
S2MPS13_REG_L11CTRL,
|
||||
S2MPS13_REG_L12CTRL,
|
||||
S2MPS13_REG_L13CTRL,
|
||||
S2MPS13_REG_L14CTRL,
|
||||
S2MPS13_REG_L15CTRL,
|
||||
S2MPS13_REG_L16CTRL,
|
||||
S2MPS13_REG_L17CTRL,
|
||||
S2MPS13_REG_L18CTRL,
|
||||
S2MPS13_REG_L19CTRL,
|
||||
S2MPS13_REG_L20CTRL,
|
||||
S2MPS13_REG_L21CTRL,
|
||||
S2MPS13_REG_L22CTRL,
|
||||
S2MPS13_REG_L23CTRL,
|
||||
S2MPS13_REG_L24CTRL,
|
||||
S2MPS13_REG_L25CTRL,
|
||||
S2MPS13_REG_L26CTRL,
|
||||
S2MPS13_REG_L27CTRL,
|
||||
S2MPS13_REG_L28CTRL,
|
||||
S2MPS13_REG_L30CTRL,
|
||||
S2MPS13_REG_L31CTRL,
|
||||
S2MPS13_REG_L32CTRL,
|
||||
S2MPS13_REG_L33CTRL,
|
||||
S2MPS13_REG_L34CTRL,
|
||||
S2MPS13_REG_L35CTRL,
|
||||
S2MPS13_REG_L36CTRL,
|
||||
S2MPS13_REG_L37CTRL,
|
||||
S2MPS13_REG_L38CTRL,
|
||||
S2MPS13_REG_L39CTRL,
|
||||
S2MPS13_REG_L40CTRL,
|
||||
S2MPS13_REG_LDODSCH1,
|
||||
S2MPS13_REG_LDODSCH2,
|
||||
S2MPS13_REG_LDODSCH3,
|
||||
S2MPS13_REG_LDODSCH4,
|
||||
S2MPS13_REG_LDODSCH5,
|
||||
};
|
||||
|
||||
/* regulator ids */
|
||||
enum s2mps13_regulators {
|
||||
S2MPS13_LDO1,
|
||||
S2MPS13_LDO2,
|
||||
S2MPS13_LDO3,
|
||||
S2MPS13_LDO4,
|
||||
S2MPS13_LDO5,
|
||||
S2MPS13_LDO6,
|
||||
S2MPS13_LDO7,
|
||||
S2MPS13_LDO8,
|
||||
S2MPS13_LDO9,
|
||||
S2MPS13_LDO10,
|
||||
S2MPS13_LDO11,
|
||||
S2MPS13_LDO12,
|
||||
S2MPS13_LDO13,
|
||||
S2MPS13_LDO14,
|
||||
S2MPS13_LDO15,
|
||||
S2MPS13_LDO16,
|
||||
S2MPS13_LDO17,
|
||||
S2MPS13_LDO18,
|
||||
S2MPS13_LDO19,
|
||||
S2MPS13_LDO20,
|
||||
S2MPS13_LDO21,
|
||||
S2MPS13_LDO22,
|
||||
S2MPS13_LDO23,
|
||||
S2MPS13_LDO24,
|
||||
S2MPS13_LDO25,
|
||||
S2MPS13_LDO26,
|
||||
S2MPS13_LDO27,
|
||||
S2MPS13_LDO28,
|
||||
S2MPS13_LDO29,
|
||||
S2MPS13_LDO30,
|
||||
S2MPS13_LDO31,
|
||||
S2MPS13_LDO32,
|
||||
S2MPS13_LDO33,
|
||||
S2MPS13_LDO34,
|
||||
S2MPS13_LDO35,
|
||||
S2MPS13_LDO36,
|
||||
S2MPS13_LDO37,
|
||||
S2MPS13_LDO38,
|
||||
S2MPS13_LDO39,
|
||||
S2MPS13_LDO40,
|
||||
S2MPS13_BUCK1,
|
||||
S2MPS13_BUCK2,
|
||||
S2MPS13_BUCK3,
|
||||
S2MPS13_BUCK4,
|
||||
S2MPS13_BUCK5,
|
||||
S2MPS13_BUCK6,
|
||||
S2MPS13_BUCK7,
|
||||
S2MPS13_BUCK8,
|
||||
S2MPS13_BUCK9,
|
||||
S2MPS13_BUCK10,
|
||||
|
||||
S2MPS13_REGULATOR_MAX,
|
||||
};
|
||||
|
||||
/*
|
||||
* Default ramp delay in uv/us. Datasheet says that ramp delay can be
|
||||
* controlled however it does not specify which register is used for that.
|
||||
* Let's assume that default value will be set.
|
||||
*/
|
||||
#define S2MPS13_BUCK_RAMP_DELAY 12500
|
||||
|
||||
#endif /* __LINUX_MFD_S2MPS13_H */
|
||||
Reference in New Issue
Block a user