You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'mfd-for-linus-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
Pull MFD updates from Lee Jones:
"Changes to the core:
- Honour PLATFORM_DEVID_NONE and PLATFORM_DEVID_AUTO dev IDs
Changes to existing drivers:
- IRQ additions/fixes; axp20x, da9063-core
- Code simplification; i2c-dln2
- Regmap additions/fixes; max77693
- Error checking/handling improvements; dln2, db8500-prcmu
- Bug fixes; dln2, wm8350-core
- DT support/documentation; max77693, max77686, tps65217, twl4030-power,
gpio-tc3589x
- Decouple syscon interface from platform devices
- Use MFD hotplug registration; rtsx_usb, viperboard, hid-sensor-hub
- Regulator fixups; sec-core
- Power Management additions/fixes; rts5227, tc6393xb
- Remove relic/redundant code; ab8500-sysctrl, lpc_sch, max77693-private
- Clean-up/coding style changes; tps65090
- Clk additions/fixes; tc6393xb, tc6387xb, t7l66xb
- Add USB-SPI support; dln2
- Trivial changes; max14577, arizona-spi, lpc_sch, wm8997-tables, wm5102-tables
wm5110-tables, axp20x, atmel-hlcdc, rtsx_pci
New drivers/supported devices:
- axp288 PMIC support added to axp20x
- s2mps13 support added to sec-core
- New support for Diolan DLN-2
- New support for atmel-hlcdc"
* tag 'mfd-for-linus-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (55 commits)
mfd: rtsx: Add func to split u32 into register
mfd: atmel-hlcdc: Add Kconfig option description and name
mfd: da9063: Get irq base dynamically before registering device
mfd: max14577: Fix obvious typo in company name in copyright
mfd: axp20x: Constify axp20x_acpi_match and rid unused warning
mfd: t7l66xb: prepare/unprepare clocks
mfd: tc6387xb: prepare/unprepare clocks
mfd: dln2: add support for USB-SPI module
mfd: wm5110: Add missing registers for AIF2 channels 3-6
mfd: tc3589x: get rid of static base
mfd: arizona: Document HP_CTRL_1L and HP_CTRL_1R registers
mfd: wm8997: Mark INTERRUPT_STATUS_2_MASK as readable
mfd: tc6393xb: Prepare/unprepare clocks
mfd: tps65090: Fix bonkers indenting strategy
mfd: tc6393xb: Fail ohci suspend if full state restore is required
mfd: lpc_sch: Don't call mfd_remove_devices()
mfd: wm8350-core: Fix probable mask then right shift defect
mfd: ab8500-sysctrl: Drop ab8500_restart
mfd: db8500-prcmu: Provide sane error path values
mfd: db8500-prcmu: Check return of devm_ioremap for error
...
This commit is contained in:
@@ -12,7 +12,6 @@
|
||||
|
||||
int ab8500_sysctrl_read(u16 reg, u8 *value);
|
||||
int ab8500_sysctrl_write(u16 reg, u8 mask, u8 value);
|
||||
void ab8500_restart(char mode, const char *cmd);
|
||||
|
||||
#else
|
||||
|
||||
|
||||
@@ -125,6 +125,8 @@
|
||||
#define ARIZONA_MIC_BIAS_CTRL_1 0x218
|
||||
#define ARIZONA_MIC_BIAS_CTRL_2 0x219
|
||||
#define ARIZONA_MIC_BIAS_CTRL_3 0x21A
|
||||
#define ARIZONA_HP_CTRL_1L 0x225
|
||||
#define ARIZONA_HP_CTRL_1R 0x226
|
||||
#define ARIZONA_ACCESSORY_DETECT_MODE_1 0x293
|
||||
#define ARIZONA_HEADPHONE_DETECT_1 0x29B
|
||||
#define ARIZONA_HEADPHONE_DETECT_2 0x29C
|
||||
@@ -279,8 +281,16 @@
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_2 0x548
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_3 0x549
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_4 0x54A
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_5 0x54B
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_6 0x54C
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_7 0x54D
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_8 0x54E
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_11 0x551
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_12 0x552
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_13 0x553
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_14 0x554
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_15 0x555
|
||||
#define ARIZONA_AIF2_FRAME_CTRL_16 0x556
|
||||
#define ARIZONA_AIF2_TX_ENABLES 0x559
|
||||
#define ARIZONA_AIF2_RX_ENABLES 0x55A
|
||||
#define ARIZONA_AIF2_FORCE_WRITE 0x55B
|
||||
@@ -2244,6 +2254,46 @@
|
||||
#define ARIZONA_MICB3_ENA_SHIFT 0 /* MICB3_ENA */
|
||||
#define ARIZONA_MICB3_ENA_WIDTH 1 /* MICB3_ENA */
|
||||
|
||||
/*
|
||||
* R549 (0x225) - HP Ctrl 1L
|
||||
*/
|
||||
#define ARIZONA_RMV_SHRT_HP1L 0x4000 /* RMV_SHRT_HP1L */
|
||||
#define ARIZONA_RMV_SHRT_HP1L_MASK 0x4000 /* RMV_SHRT_HP1L */
|
||||
#define ARIZONA_RMV_SHRT_HP1L_SHIFT 14 /* RMV_SHRT_HP1L */
|
||||
#define ARIZONA_RMV_SHRT_HP1L_WIDTH 1 /* RMV_SHRT_HP1L */
|
||||
#define ARIZONA_HP1L_FLWR 0x0004 /* HP1L_FLWR */
|
||||
#define ARIZONA_HP1L_FLWR_MASK 0x0004 /* HP1L_FLWR */
|
||||
#define ARIZONA_HP1L_FLWR_SHIFT 2 /* HP1L_FLWR */
|
||||
#define ARIZONA_HP1L_FLWR_WIDTH 1 /* HP1L_FLWR */
|
||||
#define ARIZONA_HP1L_SHRTI 0x0002 /* HP1L_SHRTI */
|
||||
#define ARIZONA_HP1L_SHRTI_MASK 0x0002 /* HP1L_SHRTI */
|
||||
#define ARIZONA_HP1L_SHRTI_SHIFT 1 /* HP1L_SHRTI */
|
||||
#define ARIZONA_HP1L_SHRTI_WIDTH 1 /* HP1L_SHRTI */
|
||||
#define ARIZONA_HP1L_SHRTO 0x0001 /* HP1L_SHRTO */
|
||||
#define ARIZONA_HP1L_SHRTO_MASK 0x0001 /* HP1L_SHRTO */
|
||||
#define ARIZONA_HP1L_SHRTO_SHIFT 0 /* HP1L_SHRTO */
|
||||
#define ARIZONA_HP1L_SHRTO_WIDTH 1 /* HP1L_SHRTO */
|
||||
|
||||
/*
|
||||
* R550 (0x226) - HP Ctrl 1R
|
||||
*/
|
||||
#define ARIZONA_RMV_SHRT_HP1R 0x4000 /* RMV_SHRT_HP1R */
|
||||
#define ARIZONA_RMV_SHRT_HP1R_MASK 0x4000 /* RMV_SHRT_HP1R */
|
||||
#define ARIZONA_RMV_SHRT_HP1R_SHIFT 14 /* RMV_SHRT_HP1R */
|
||||
#define ARIZONA_RMV_SHRT_HP1R_WIDTH 1 /* RMV_SHRT_HP1R */
|
||||
#define ARIZONA_HP1R_FLWR 0x0004 /* HP1R_FLWR */
|
||||
#define ARIZONA_HP1R_FLWR_MASK 0x0004 /* HP1R_FLWR */
|
||||
#define ARIZONA_HP1R_FLWR_SHIFT 2 /* HP1R_FLWR */
|
||||
#define ARIZONA_HP1R_FLWR_WIDTH 1 /* HP1R_FLWR */
|
||||
#define ARIZONA_HP1R_SHRTI 0x0002 /* HP1R_SHRTI */
|
||||
#define ARIZONA_HP1R_SHRTI_MASK 0x0002 /* HP1R_SHRTI */
|
||||
#define ARIZONA_HP1R_SHRTI_SHIFT 1 /* HP1R_SHRTI */
|
||||
#define ARIZONA_HP1R_SHRTI_WIDTH 1 /* HP1R_SHRTI */
|
||||
#define ARIZONA_HP1R_SHRTO 0x0001 /* HP1R_SHRTO */
|
||||
#define ARIZONA_HP1R_SHRTO_MASK 0x0001 /* HP1R_SHRTO */
|
||||
#define ARIZONA_HP1R_SHRTO_SHIFT 0 /* HP1R_SHRTO */
|
||||
#define ARIZONA_HP1R_SHRTO_WIDTH 1 /* HP1R_SHRTO */
|
||||
|
||||
/*
|
||||
* R659 (0x293) - Accessory Detect Mode 1
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Free Electrons
|
||||
* Copyright (C) 2014 Atmel
|
||||
*
|
||||
* Author: Boris BREZILLON <boris.brezillon@free-electrons.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_HLCDC_H
|
||||
#define __LINUX_MFD_HLCDC_H
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
#define ATMEL_HLCDC_CFG(i) ((i) * 0x4)
|
||||
#define ATMEL_HLCDC_SIG_CFG LCDCFG(5)
|
||||
#define ATMEL_HLCDC_HSPOL BIT(0)
|
||||
#define ATMEL_HLCDC_VSPOL BIT(1)
|
||||
#define ATMEL_HLCDC_VSPDLYS BIT(2)
|
||||
#define ATMEL_HLCDC_VSPDLYE BIT(3)
|
||||
#define ATMEL_HLCDC_DISPPOL BIT(4)
|
||||
#define ATMEL_HLCDC_DITHER BIT(6)
|
||||
#define ATMEL_HLCDC_DISPDLY BIT(7)
|
||||
#define ATMEL_HLCDC_MODE_MASK GENMASK(9, 8)
|
||||
#define ATMEL_HLCDC_PP BIT(10)
|
||||
#define ATMEL_HLCDC_VSPSU BIT(12)
|
||||
#define ATMEL_HLCDC_VSPHO BIT(13)
|
||||
#define ATMEL_HLCDC_GUARDTIME_MASK GENMASK(20, 16)
|
||||
|
||||
#define ATMEL_HLCDC_EN 0x20
|
||||
#define ATMEL_HLCDC_DIS 0x24
|
||||
#define ATMEL_HLCDC_SR 0x28
|
||||
#define ATMEL_HLCDC_IER 0x2c
|
||||
#define ATMEL_HLCDC_IDR 0x30
|
||||
#define ATMEL_HLCDC_IMR 0x34
|
||||
#define ATMEL_HLCDC_ISR 0x38
|
||||
|
||||
#define ATMEL_HLCDC_CLKPOL BIT(0)
|
||||
#define ATMEL_HLCDC_CLKSEL BIT(2)
|
||||
#define ATMEL_HLCDC_CLKPWMSEL BIT(3)
|
||||
#define ATMEL_HLCDC_CGDIS(i) BIT(8 + (i))
|
||||
#define ATMEL_HLCDC_CLKDIV_SHFT 16
|
||||
#define ATMEL_HLCDC_CLKDIV_MASK GENMASK(23, 16)
|
||||
#define ATMEL_HLCDC_CLKDIV(div) ((div - 2) << ATMEL_HLCDC_CLKDIV_SHFT)
|
||||
|
||||
#define ATMEL_HLCDC_PIXEL_CLK BIT(0)
|
||||
#define ATMEL_HLCDC_SYNC BIT(1)
|
||||
#define ATMEL_HLCDC_DISP BIT(2)
|
||||
#define ATMEL_HLCDC_PWM BIT(3)
|
||||
#define ATMEL_HLCDC_SIP BIT(4)
|
||||
|
||||
#define ATMEL_HLCDC_SOF BIT(0)
|
||||
#define ATMEL_HLCDC_SYNCDIS BIT(1)
|
||||
#define ATMEL_HLCDC_FIFOERR BIT(4)
|
||||
#define ATMEL_HLCDC_LAYER_STATUS(x) BIT((x) + 8)
|
||||
|
||||
/**
|
||||
* Structure shared by the MFD device and its subdevices.
|
||||
*
|
||||
* @regmap: register map used to access HLCDC IP registers
|
||||
* @periph_clk: the hlcdc peripheral clock
|
||||
* @sys_clk: the hlcdc system clock
|
||||
* @slow_clk: the system slow clk
|
||||
* @irq: the hlcdc irq
|
||||
*/
|
||||
struct atmel_hlcdc {
|
||||
struct regmap *regmap;
|
||||
struct clk *periph_clk;
|
||||
struct clk *sys_clk;
|
||||
struct clk *slow_clk;
|
||||
int irq;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_HLCDC_H */
|
||||
@@ -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
|
||||
@@ -26,7 +26,6 @@
|
||||
|
||||
#include <linux/i2c.h>
|
||||
|
||||
#define MAX77693_NUM_IRQ_MUIC_REGS 3
|
||||
#define MAX77693_REG_INVALID (0xff)
|
||||
|
||||
/* Slave addr = 0xCC: PMIC, Charger, Flash LED */
|
||||
|
||||
@@ -558,6 +558,7 @@
|
||||
#define SD_SAMPLE_POINT_CTL 0xFDA7
|
||||
#define SD_PUSH_POINT_CTL 0xFDA8
|
||||
#define SD_CMD0 0xFDA9
|
||||
#define SD_CMD_START 0x40
|
||||
#define SD_CMD1 0xFDAA
|
||||
#define SD_CMD2 0xFDAB
|
||||
#define SD_CMD3 0xFDAC
|
||||
@@ -707,6 +708,14 @@
|
||||
#define PM_CTRL1 0xFF44
|
||||
#define PM_CTRL2 0xFF45
|
||||
#define PM_CTRL3 0xFF46
|
||||
#define SDIO_SEND_PME_EN 0x80
|
||||
#define FORCE_RC_MODE_ON 0x40
|
||||
#define FORCE_RX50_LINK_ON 0x20
|
||||
#define D3_DELINK_MODE_EN 0x10
|
||||
#define USE_PESRTB_CTL_DELINK 0x08
|
||||
#define DELAY_PIN_WAKE 0x04
|
||||
#define RESET_PIN_WAKE 0x02
|
||||
#define PM_WAKE_EN 0x01
|
||||
#define PM_CTRL4 0xFF47
|
||||
|
||||
/* Memory mapping */
|
||||
@@ -752,6 +761,14 @@
|
||||
#define PHY_DUM_REG 0x1F
|
||||
|
||||
#define LCTLR 0x80
|
||||
#define LCTLR_EXT_SYNC 0x80
|
||||
#define LCTLR_COMMON_CLOCK_CFG 0x40
|
||||
#define LCTLR_RETRAIN_LINK 0x20
|
||||
#define LCTLR_LINK_DISABLE 0x10
|
||||
#define LCTLR_RCB 0x08
|
||||
#define LCTLR_RESERVED 0x04
|
||||
#define LCTLR_ASPM_CTL_MASK 0x03
|
||||
|
||||
#define PCR_SETTING_REG1 0x724
|
||||
#define PCR_SETTING_REG2 0x814
|
||||
#define PCR_SETTING_REG3 0x747
|
||||
@@ -967,4 +984,24 @@ static inline u8 *rtsx_pci_get_cmd_data(struct rtsx_pcr *pcr)
|
||||
return (u8 *)(pcr->host_cmds_ptr);
|
||||
}
|
||||
|
||||
static inline int rtsx_pci_update_cfg_byte(struct rtsx_pcr *pcr, int addr,
|
||||
u8 mask, u8 append)
|
||||
{
|
||||
int err;
|
||||
u8 val;
|
||||
|
||||
err = pci_read_config_byte(pcr->pci, addr, &val);
|
||||
if (err < 0)
|
||||
return err;
|
||||
return pci_write_config_byte(pcr->pci, addr, (val & mask) | append);
|
||||
}
|
||||
|
||||
static inline void rtsx_pci_write_be32(struct rtsx_pcr *pcr, u16 reg, u32 val)
|
||||
{
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, reg, 0xFF, val >> 24);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, reg + 1, 0xFF, val >> 16);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, reg + 2, 0xFF, val >> 8);
|
||||
rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, reg + 3, 0xFF, val);
|
||||
}
|
||||
|
||||
#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 */
|
||||
@@ -164,13 +164,10 @@ struct tc3589x_keypad_platform_data {
|
||||
|
||||
/**
|
||||
* struct tc3589x_gpio_platform_data - TC3589x GPIO platform data
|
||||
* @gpio_base: first gpio number assigned to TC3589x. A maximum of
|
||||
* %TC3589x_NR_GPIOS GPIOs will be allocated.
|
||||
* @setup: callback for board-specific initialization
|
||||
* @remove: callback for board-specific teardown
|
||||
*/
|
||||
struct tc3589x_gpio_platform_data {
|
||||
int gpio_base;
|
||||
void (*setup)(struct tc3589x *tc3589x, unsigned gpio_base);
|
||||
void (*remove)(struct tc3589x *tc3589x, unsigned gpio_base);
|
||||
};
|
||||
@@ -178,18 +175,13 @@ struct tc3589x_gpio_platform_data {
|
||||
/**
|
||||
* struct tc3589x_platform_data - TC3589x platform data
|
||||
* @block: bitmask of blocks to enable (use TC3589x_BLOCK_*)
|
||||
* @irq_base: base IRQ number. %TC3589x_NR_IRQS irqs will be used.
|
||||
* @gpio: GPIO-specific platform data
|
||||
* @keypad: keypad-specific platform data
|
||||
*/
|
||||
struct tc3589x_platform_data {
|
||||
unsigned int block;
|
||||
int irq_base;
|
||||
struct tc3589x_gpio_platform_data *gpio;
|
||||
const struct tc3589x_keypad_platform_data *keypad;
|
||||
};
|
||||
|
||||
#define TC3589x_NR_GPIOS 24
|
||||
#define TC3589x_NR_IRQS TC3589x_INT_GPIO(TC3589x_NR_GPIOS)
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user