Merge tag 'mfd-3.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
Pull MFD bits from Samuel Ortiz: "We have support for a few new drivers: - Samsung s2mps11 - Wolfson Microelectronics wm5102 and wm5110 - Marvell 88PM800 and 88PM805 - TI twl6041 We also have our regular driver improvements: - Device tree and IRQ domain support for STE AB8500 - Regmap and devm_* API conversion for TI tps6586x - Device tree support for Samsung max77686 - devm_* API conversion for STE AB3100 Besides that, quite a lot of fixing and cleanup for mc13xxx, tps65910, tps65090, da9052 and twl-core." Fix up mostly trivial conflicts, with the exception of drivers/usb/host/ehci-omap.c in particular, which had some re-organization of the reset sequence (commit1a49e2ac96
: "EHCI: centralize controller initialization") that clashed with commit2761a63945
("mfd: USB: Fix the omap-usb EHCI ULPI PHY reset fix issues"). In particular, commit2761a63945
moved the usb_add_hcd() to the *middle* of the reset sequence, which clashes fairly badly with the reset sequence re-organization (although it could have been done inside the new omap_ehci_init() function). I left that part of commit2761a63945
just undone. * tag 'mfd-3.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (110 commits) mfd: Ensure AB8500 platform data is passed through db8500-prcmu to MFD Core mfd: Arizone core should select MFD_CORE mfd: Fix arizona-irq.c build by selecting REGMAP_IRQ mfd: Add debug trace on entering and leaving arizone runtime suspend mfd: Correct tps65090 cell names mfd: Remove gpio support from tps6586x core driver ARM: tegra: defconfig: Enable tps6586x gpio gpio: tps6586x: Add gpio support through platform driver mfd: Cache tps6586x register through regmap mfd: Use regmap for tps6586x register access. mfd: Use devm managed resources for tps6586x input: Add onkey support for 88PM80X PMIC mfd: Add support for twl6041 mfd: Fix twl6040 revision information mfd: Matches should be NULL when populate anatop child devices input: ab8500-ponkey: Create AB8500 domain IRQ mapping mfd: Add missing out of memory check for pcf50633 Documentation: Describe the AB8500 Device Tree bindings mfd: Add tps65910 32-kHz-crystal-input init mfd: Drop modifying mc13xxx driver's id_table in probe ...
This commit is contained in:
369
include/linux/mfd/88pm80x.h
Normal file
369
include/linux/mfd/88pm80x.h
Normal file
@@ -0,0 +1,369 @@
|
||||
/*
|
||||
* Marvell 88PM80x Interface
|
||||
*
|
||||
* Copyright (C) 2012 Marvell International Ltd.
|
||||
* Qiao Zhou <zhouqiao@marvell.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.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_88PM80X_H
|
||||
#define __LINUX_MFD_88PM80X_H
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/atomic.h>
|
||||
|
||||
#define PM80X_VERSION_MASK (0xFF) /* 80X chip ID mask */
|
||||
enum {
|
||||
CHIP_INVALID = 0,
|
||||
CHIP_PM800,
|
||||
CHIP_PM805,
|
||||
CHIP_MAX,
|
||||
};
|
||||
|
||||
enum {
|
||||
PM800_ID_BUCK1 = 0,
|
||||
PM800_ID_BUCK2,
|
||||
PM800_ID_BUCK3,
|
||||
PM800_ID_BUCK4,
|
||||
PM800_ID_BUCK5,
|
||||
|
||||
PM800_ID_LDO1,
|
||||
PM800_ID_LDO2,
|
||||
PM800_ID_LDO3,
|
||||
PM800_ID_LDO4,
|
||||
PM800_ID_LDO5,
|
||||
PM800_ID_LDO6,
|
||||
PM800_ID_LDO7,
|
||||
PM800_ID_LDO8,
|
||||
PM800_ID_LDO9,
|
||||
PM800_ID_LDO10,
|
||||
PM800_ID_LDO11,
|
||||
PM800_ID_LDO12,
|
||||
PM800_ID_LDO13,
|
||||
PM800_ID_LDO14,
|
||||
PM800_ID_LDO15,
|
||||
PM800_ID_LDO16,
|
||||
PM800_ID_LDO17,
|
||||
PM800_ID_LDO18,
|
||||
PM800_ID_LDO19,
|
||||
|
||||
PM800_ID_RG_MAX,
|
||||
};
|
||||
#define PM800_MAX_REGULATOR PM800_ID_RG_MAX /* 5 Bucks, 19 LDOs */
|
||||
#define PM800_NUM_BUCK (5) /*5 Bucks */
|
||||
#define PM800_NUM_LDO (19) /*19 Bucks */
|
||||
|
||||
/* page 0 basic: slave adder 0x60 */
|
||||
|
||||
#define PM800_STATUS_1 (0x01)
|
||||
#define PM800_ONKEY_STS1 (1 << 0)
|
||||
#define PM800_EXTON_STS1 (1 << 1)
|
||||
#define PM800_CHG_STS1 (1 << 2)
|
||||
#define PM800_BAT_STS1 (1 << 3)
|
||||
#define PM800_VBUS_STS1 (1 << 4)
|
||||
#define PM800_LDO_PGOOD_STS1 (1 << 5)
|
||||
#define PM800_BUCK_PGOOD_STS1 (1 << 6)
|
||||
|
||||
#define PM800_STATUS_2 (0x02)
|
||||
#define PM800_RTC_ALARM_STS2 (1 << 0)
|
||||
|
||||
/* Wakeup Registers */
|
||||
#define PM800_WAKEUP1 (0x0D)
|
||||
|
||||
#define PM800_WAKEUP2 (0x0E)
|
||||
#define PM800_WAKEUP2_INV_INT (1 << 0)
|
||||
#define PM800_WAKEUP2_INT_CLEAR (1 << 1)
|
||||
#define PM800_WAKEUP2_INT_MASK (1 << 2)
|
||||
|
||||
#define PM800_POWER_UP_LOG (0x10)
|
||||
|
||||
/* Referance and low power registers */
|
||||
#define PM800_LOW_POWER1 (0x20)
|
||||
#define PM800_LOW_POWER2 (0x21)
|
||||
#define PM800_LOW_POWER_CONFIG3 (0x22)
|
||||
#define PM800_LOW_POWER_CONFIG4 (0x23)
|
||||
|
||||
/* GPIO register */
|
||||
#define PM800_GPIO_0_1_CNTRL (0x30)
|
||||
#define PM800_GPIO0_VAL (1 << 0)
|
||||
#define PM800_GPIO0_GPIO_MODE(x) (x << 1)
|
||||
#define PM800_GPIO1_VAL (1 << 4)
|
||||
#define PM800_GPIO1_GPIO_MODE(x) (x << 5)
|
||||
|
||||
#define PM800_GPIO_2_3_CNTRL (0x31)
|
||||
#define PM800_GPIO2_VAL (1 << 0)
|
||||
#define PM800_GPIO2_GPIO_MODE(x) (x << 1)
|
||||
#define PM800_GPIO3_VAL (1 << 4)
|
||||
#define PM800_GPIO3_GPIO_MODE(x) (x << 5)
|
||||
#define PM800_GPIO3_MODE_MASK 0x1F
|
||||
#define PM800_GPIO3_HEADSET_MODE PM800_GPIO3_GPIO_MODE(6)
|
||||
|
||||
#define PM800_GPIO_4_CNTRL (0x32)
|
||||
#define PM800_GPIO4_VAL (1 << 0)
|
||||
#define PM800_GPIO4_GPIO_MODE(x) (x << 1)
|
||||
|
||||
#define PM800_HEADSET_CNTRL (0x38)
|
||||
#define PM800_HEADSET_DET_EN (1 << 7)
|
||||
#define PM800_HSDET_SLP (1 << 1)
|
||||
/* PWM register */
|
||||
#define PM800_PWM1 (0x40)
|
||||
#define PM800_PWM2 (0x41)
|
||||
#define PM800_PWM3 (0x42)
|
||||
#define PM800_PWM4 (0x43)
|
||||
|
||||
/* RTC Registers */
|
||||
#define PM800_RTC_CONTROL (0xD0)
|
||||
#define PM800_RTC_MISC1 (0xE1)
|
||||
#define PM800_RTC_MISC2 (0xE2)
|
||||
#define PM800_RTC_MISC3 (0xE3)
|
||||
#define PM800_RTC_MISC4 (0xE4)
|
||||
#define PM800_RTC_MISC5 (0xE7)
|
||||
/* bit definitions of RTC Register 1 (0xD0) */
|
||||
#define PM800_ALARM1_EN (1 << 0)
|
||||
#define PM800_ALARM_WAKEUP (1 << 4)
|
||||
#define PM800_ALARM (1 << 5)
|
||||
#define PM800_RTC1_USE_XO (1 << 7)
|
||||
|
||||
/* Regulator Control Registers: BUCK1,BUCK5,LDO1 have DVC */
|
||||
|
||||
/* buck registers */
|
||||
#define PM800_SLEEP_BUCK1 (0x30)
|
||||
|
||||
/* BUCK Sleep Mode Register 1: BUCK[1..4] */
|
||||
#define PM800_BUCK_SLP1 (0x5A)
|
||||
#define PM800_BUCK1_SLP1_SHIFT 0
|
||||
#define PM800_BUCK1_SLP1_MASK (0x3 << PM800_BUCK1_SLP1_SHIFT)
|
||||
|
||||
/* page 2 GPADC: slave adder 0x02 */
|
||||
#define PM800_GPADC_MEAS_EN1 (0x01)
|
||||
#define PM800_MEAS_EN1_VBAT (1 << 2)
|
||||
#define PM800_GPADC_MEAS_EN2 (0x02)
|
||||
#define PM800_MEAS_EN2_RFTMP (1 << 0)
|
||||
#define PM800_MEAS_GP0_EN (1 << 2)
|
||||
#define PM800_MEAS_GP1_EN (1 << 3)
|
||||
#define PM800_MEAS_GP2_EN (1 << 4)
|
||||
#define PM800_MEAS_GP3_EN (1 << 5)
|
||||
#define PM800_MEAS_GP4_EN (1 << 6)
|
||||
|
||||
#define PM800_GPADC_MISC_CONFIG1 (0x05)
|
||||
#define PM800_GPADC_MISC_CONFIG2 (0x06)
|
||||
#define PM800_GPADC_MISC_GPFSM_EN (1 << 0)
|
||||
#define PM800_GPADC_SLOW_MODE(x) (x << 3)
|
||||
|
||||
#define PM800_GPADC_MISC_CONFIG3 (0x09)
|
||||
#define PM800_GPADC_MISC_CONFIG4 (0x0A)
|
||||
|
||||
#define PM800_GPADC_PREBIAS1 (0x0F)
|
||||
#define PM800_GPADC0_GP_PREBIAS_TIME(x) (x << 0)
|
||||
#define PM800_GPADC_PREBIAS2 (0x10)
|
||||
|
||||
#define PM800_GP_BIAS_ENA1 (0x14)
|
||||
#define PM800_GPADC_GP_BIAS_EN0 (1 << 0)
|
||||
#define PM800_GPADC_GP_BIAS_EN1 (1 << 1)
|
||||
#define PM800_GPADC_GP_BIAS_EN2 (1 << 2)
|
||||
#define PM800_GPADC_GP_BIAS_EN3 (1 << 3)
|
||||
|
||||
#define PM800_GP_BIAS_OUT1 (0x15)
|
||||
#define PM800_BIAS_OUT_GP0 (1 << 0)
|
||||
#define PM800_BIAS_OUT_GP1 (1 << 1)
|
||||
#define PM800_BIAS_OUT_GP2 (1 << 2)
|
||||
#define PM800_BIAS_OUT_GP3 (1 << 3)
|
||||
|
||||
#define PM800_GPADC0_LOW_TH 0x20
|
||||
#define PM800_GPADC1_LOW_TH 0x21
|
||||
#define PM800_GPADC2_LOW_TH 0x22
|
||||
#define PM800_GPADC3_LOW_TH 0x23
|
||||
#define PM800_GPADC4_LOW_TH 0x24
|
||||
|
||||
#define PM800_GPADC0_UPP_TH 0x30
|
||||
#define PM800_GPADC1_UPP_TH 0x31
|
||||
#define PM800_GPADC2_UPP_TH 0x32
|
||||
#define PM800_GPADC3_UPP_TH 0x33
|
||||
#define PM800_GPADC4_UPP_TH 0x34
|
||||
|
||||
#define PM800_VBBAT_MEAS1 0x40
|
||||
#define PM800_VBBAT_MEAS2 0x41
|
||||
#define PM800_VBAT_MEAS1 0x42
|
||||
#define PM800_VBAT_MEAS2 0x43
|
||||
#define PM800_VSYS_MEAS1 0x44
|
||||
#define PM800_VSYS_MEAS2 0x45
|
||||
#define PM800_VCHG_MEAS1 0x46
|
||||
#define PM800_VCHG_MEAS2 0x47
|
||||
#define PM800_TINT_MEAS1 0x50
|
||||
#define PM800_TINT_MEAS2 0x51
|
||||
#define PM800_PMOD_MEAS1 0x52
|
||||
#define PM800_PMOD_MEAS2 0x53
|
||||
|
||||
#define PM800_GPADC0_MEAS1 0x54
|
||||
#define PM800_GPADC0_MEAS2 0x55
|
||||
#define PM800_GPADC1_MEAS1 0x56
|
||||
#define PM800_GPADC1_MEAS2 0x57
|
||||
#define PM800_GPADC2_MEAS1 0x58
|
||||
#define PM800_GPADC2_MEAS2 0x59
|
||||
#define PM800_GPADC3_MEAS1 0x5A
|
||||
#define PM800_GPADC3_MEAS2 0x5B
|
||||
#define PM800_GPADC4_MEAS1 0x5C
|
||||
#define PM800_GPADC4_MEAS2 0x5D
|
||||
|
||||
#define PM800_GPADC4_AVG1 0xA8
|
||||
#define PM800_GPADC4_AVG2 0xA9
|
||||
|
||||
/* 88PM805 Registers */
|
||||
#define PM805_MAIN_POWERUP (0x01)
|
||||
#define PM805_INT_STATUS0 (0x02) /* for ena/dis all interrupts */
|
||||
|
||||
#define PM805_STATUS0_INT_CLEAR (1 << 0)
|
||||
#define PM805_STATUS0_INV_INT (1 << 1)
|
||||
#define PM800_STATUS0_INT_MASK (1 << 2)
|
||||
|
||||
#define PM805_INT_STATUS1 (0x03)
|
||||
|
||||
#define PM805_INT1_HP1_SHRT (1 << 0)
|
||||
#define PM805_INT1_HP2_SHRT (1 << 1)
|
||||
#define PM805_INT1_MIC_CONFLICT (1 << 2)
|
||||
#define PM805_INT1_CLIP_FAULT (1 << 3)
|
||||
#define PM805_INT1_LDO_OFF (1 << 4)
|
||||
#define PM805_INT1_SRC_DPLL_LOCK (1 << 5)
|
||||
|
||||
#define PM805_INT_STATUS2 (0x04)
|
||||
|
||||
#define PM805_INT2_MIC_DET (1 << 0)
|
||||
#define PM805_INT2_SHRT_BTN_DET (1 << 1)
|
||||
#define PM805_INT2_VOLM_BTN_DET (1 << 2)
|
||||
#define PM805_INT2_VOLP_BTN_DET (1 << 3)
|
||||
#define PM805_INT2_RAW_PLL_FAULT (1 << 4)
|
||||
#define PM805_INT2_FINE_PLL_FAULT (1 << 5)
|
||||
|
||||
#define PM805_INT_MASK1 (0x05)
|
||||
#define PM805_INT_MASK2 (0x06)
|
||||
#define PM805_SHRT_BTN_DET (1 << 1)
|
||||
|
||||
/* number of status and int reg in a row */
|
||||
#define PM805_INT_REG_NUM (2)
|
||||
|
||||
#define PM805_MIC_DET1 (0x07)
|
||||
#define PM805_MIC_DET_EN_MIC_DET (1 << 0)
|
||||
#define PM805_MIC_DET2 (0x08)
|
||||
#define PM805_MIC_DET_STATUS1 (0x09)
|
||||
|
||||
#define PM805_MIC_DET_STATUS3 (0x0A)
|
||||
#define PM805_AUTO_SEQ_STATUS1 (0x0B)
|
||||
#define PM805_AUTO_SEQ_STATUS2 (0x0C)
|
||||
|
||||
#define PM805_ADC_SETTING1 (0x10)
|
||||
#define PM805_ADC_SETTING2 (0x11)
|
||||
#define PM805_ADC_SETTING3 (0x11)
|
||||
#define PM805_ADC_GAIN1 (0x12)
|
||||
#define PM805_ADC_GAIN2 (0x13)
|
||||
#define PM805_DMIC_SETTING (0x15)
|
||||
#define PM805_DWS_SETTING (0x16)
|
||||
#define PM805_MIC_CONFLICT_STS (0x17)
|
||||
|
||||
#define PM805_PDM_SETTING1 (0x20)
|
||||
#define PM805_PDM_SETTING2 (0x21)
|
||||
#define PM805_PDM_SETTING3 (0x22)
|
||||
#define PM805_PDM_CONTROL1 (0x23)
|
||||
#define PM805_PDM_CONTROL2 (0x24)
|
||||
#define PM805_PDM_CONTROL3 (0x25)
|
||||
|
||||
#define PM805_HEADPHONE_SETTING (0x26)
|
||||
#define PM805_HEADPHONE_GAIN_A2A (0x27)
|
||||
#define PM805_HEADPHONE_SHORT_STATE (0x28)
|
||||
#define PM805_EARPHONE_SETTING (0x29)
|
||||
#define PM805_AUTO_SEQ_SETTING (0x2A)
|
||||
|
||||
struct pm80x_rtc_pdata {
|
||||
int vrtc;
|
||||
int rtc_wakeup;
|
||||
};
|
||||
|
||||
struct pm80x_subchip {
|
||||
struct i2c_client *power_page; /* chip client for power page */
|
||||
struct i2c_client *gpadc_page; /* chip client for gpadc page */
|
||||
struct regmap *regmap_power;
|
||||
struct regmap *regmap_gpadc;
|
||||
unsigned short power_page_addr; /* power page I2C address */
|
||||
unsigned short gpadc_page_addr; /* gpadc page I2C address */
|
||||
};
|
||||
|
||||
struct pm80x_chip {
|
||||
struct pm80x_subchip *subchip;
|
||||
struct device *dev;
|
||||
struct i2c_client *client;
|
||||
struct i2c_client *companion;
|
||||
struct regmap *regmap;
|
||||
struct regmap_irq_chip *regmap_irq_chip;
|
||||
struct regmap_irq_chip_data *irq_data;
|
||||
unsigned char version;
|
||||
int id;
|
||||
int irq;
|
||||
int irq_mode;
|
||||
unsigned long wu_flag;
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
||||
struct pm80x_platform_data {
|
||||
struct pm80x_rtc_pdata *rtc;
|
||||
unsigned short power_page_addr; /* power page I2C address */
|
||||
unsigned short gpadc_page_addr; /* gpadc page I2C address */
|
||||
int irq_mode; /* Clear interrupt by read/write(0/1) */
|
||||
int batt_det; /* enable/disable */
|
||||
int (*plat_config)(struct pm80x_chip *chip,
|
||||
struct pm80x_platform_data *pdata);
|
||||
};
|
||||
|
||||
extern const struct dev_pm_ops pm80x_pm_ops;
|
||||
extern const struct regmap_config pm80x_regmap_config;
|
||||
|
||||
static inline int pm80x_request_irq(struct pm80x_chip *pm80x, int irq,
|
||||
irq_handler_t handler, unsigned long flags,
|
||||
const char *name, void *data)
|
||||
{
|
||||
if (!pm80x->irq_data)
|
||||
return -EINVAL;
|
||||
return request_threaded_irq(regmap_irq_get_virq(pm80x->irq_data, irq),
|
||||
NULL, handler, flags, name, data);
|
||||
}
|
||||
|
||||
static inline void pm80x_free_irq(struct pm80x_chip *pm80x, int irq, void *data)
|
||||
{
|
||||
if (!pm80x->irq_data)
|
||||
return;
|
||||
free_irq(regmap_irq_get_virq(pm80x->irq_data, irq), data);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static inline int pm80x_dev_suspend(struct device *dev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent);
|
||||
int irq = platform_get_irq(pdev, 0);
|
||||
|
||||
if (device_may_wakeup(dev))
|
||||
set_bit((1 << irq), &chip->wu_flag);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int pm80x_dev_resume(struct device *dev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent);
|
||||
int irq = platform_get_irq(pdev, 0);
|
||||
|
||||
if (device_may_wakeup(dev))
|
||||
clear_bit((1 << irq), &chip->wu_flag);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
extern int pm80x_init(struct i2c_client *client,
|
||||
const struct i2c_device_id *id) __devinit;
|
||||
extern int pm80x_deinit(struct i2c_client *client);
|
||||
#endif /* __LINUX_MFD_88PM80X_H */
|
@@ -136,6 +136,7 @@ enum {
|
||||
PM8607_ID_LDO13,
|
||||
PM8607_ID_LDO14,
|
||||
PM8607_ID_LDO15,
|
||||
PM8606_ID_PREG,
|
||||
|
||||
PM8607_ID_RG_MAX,
|
||||
};
|
||||
|
@@ -9,6 +9,7 @@
|
||||
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/irqdomain.h>
|
||||
|
||||
struct device;
|
||||
|
||||
@@ -227,6 +228,7 @@ enum ab8500_version {
|
||||
* @irq_lock: genirq bus lock
|
||||
* @transfer_ongoing: 0 if no transfer ongoing
|
||||
* @irq: irq line
|
||||
* @irq_domain: irq domain
|
||||
* @version: chip version id (e.g. ab8500 or ab9540)
|
||||
* @chip_id: chip revision id
|
||||
* @write: register write
|
||||
@@ -247,6 +249,7 @@ struct ab8500 {
|
||||
atomic_t transfer_ongoing;
|
||||
int irq_base;
|
||||
int irq;
|
||||
struct irq_domain *domain;
|
||||
enum ab8500_version version;
|
||||
u8 chip_id;
|
||||
|
||||
@@ -338,4 +341,6 @@ static inline int is_ab8500_2p0(struct ab8500 *ab)
|
||||
return (is_ab8500(ab) && (ab->chip_id == AB8500_CUT2P0));
|
||||
}
|
||||
|
||||
int ab8500_irq_get_virq(struct ab8500 *ab8500, int irq);
|
||||
|
||||
#endif /* MFD_AB8500_H */
|
||||
|
114
include/linux/mfd/arizona/core.h
Normal file
114
include/linux/mfd/arizona/core.h
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* Arizona MFD internals
|
||||
*
|
||||
* Copyright 2012 Wolfson Microelectronics plc
|
||||
*
|
||||
* Author: Mark Brown <broonie@opensource.wolfsonmicro.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.
|
||||
*/
|
||||
|
||||
#ifndef _WM_ARIZONA_CORE_H
|
||||
#define _WM_ARIZONA_CORE_H
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/mfd/arizona/pdata.h>
|
||||
|
||||
#define ARIZONA_MAX_CORE_SUPPLIES 3
|
||||
|
||||
enum arizona_type {
|
||||
WM5102 = 1,
|
||||
WM5110 = 2,
|
||||
};
|
||||
|
||||
#define ARIZONA_IRQ_GP1 0
|
||||
#define ARIZONA_IRQ_GP2 1
|
||||
#define ARIZONA_IRQ_GP3 2
|
||||
#define ARIZONA_IRQ_GP4 3
|
||||
#define ARIZONA_IRQ_GP5_FALL 4
|
||||
#define ARIZONA_IRQ_GP5_RISE 5
|
||||
#define ARIZONA_IRQ_JD_FALL 6
|
||||
#define ARIZONA_IRQ_JD_RISE 7
|
||||
#define ARIZONA_IRQ_DSP1_RAM_RDY 8
|
||||
#define ARIZONA_IRQ_DSP2_RAM_RDY 9
|
||||
#define ARIZONA_IRQ_DSP3_RAM_RDY 10
|
||||
#define ARIZONA_IRQ_DSP4_RAM_RDY 11
|
||||
#define ARIZONA_IRQ_DSP_IRQ1 12
|
||||
#define ARIZONA_IRQ_DSP_IRQ2 13
|
||||
#define ARIZONA_IRQ_DSP_IRQ3 14
|
||||
#define ARIZONA_IRQ_DSP_IRQ4 15
|
||||
#define ARIZONA_IRQ_DSP_IRQ5 16
|
||||
#define ARIZONA_IRQ_DSP_IRQ6 17
|
||||
#define ARIZONA_IRQ_DSP_IRQ7 18
|
||||
#define ARIZONA_IRQ_DSP_IRQ8 19
|
||||
#define ARIZONA_IRQ_SPK_SHUTDOWN_WARN 20
|
||||
#define ARIZONA_IRQ_SPK_SHUTDOWN 21
|
||||
#define ARIZONA_IRQ_MICDET 22
|
||||
#define ARIZONA_IRQ_HPDET 23
|
||||
#define ARIZONA_IRQ_WSEQ_DONE 24
|
||||
#define ARIZONA_IRQ_DRC2_SIG_DET 25
|
||||
#define ARIZONA_IRQ_DRC1_SIG_DET 26
|
||||
#define ARIZONA_IRQ_ASRC2_LOCK 27
|
||||
#define ARIZONA_IRQ_ASRC1_LOCK 28
|
||||
#define ARIZONA_IRQ_UNDERCLOCKED 29
|
||||
#define ARIZONA_IRQ_OVERCLOCKED 30
|
||||
#define ARIZONA_IRQ_FLL2_LOCK 31
|
||||
#define ARIZONA_IRQ_FLL1_LOCK 32
|
||||
#define ARIZONA_IRQ_CLKGEN_ERR 33
|
||||
#define ARIZONA_IRQ_CLKGEN_ERR_ASYNC 34
|
||||
#define ARIZONA_IRQ_ASRC_CFG_ERR 35
|
||||
#define ARIZONA_IRQ_AIF3_ERR 36
|
||||
#define ARIZONA_IRQ_AIF2_ERR 37
|
||||
#define ARIZONA_IRQ_AIF1_ERR 38
|
||||
#define ARIZONA_IRQ_CTRLIF_ERR 39
|
||||
#define ARIZONA_IRQ_MIXER_DROPPED_SAMPLES 40
|
||||
#define ARIZONA_IRQ_ASYNC_CLK_ENA_LOW 41
|
||||
#define ARIZONA_IRQ_SYSCLK_ENA_LOW 42
|
||||
#define ARIZONA_IRQ_ISRC1_CFG_ERR 43
|
||||
#define ARIZONA_IRQ_ISRC2_CFG_ERR 44
|
||||
#define ARIZONA_IRQ_BOOT_DONE 45
|
||||
#define ARIZONA_IRQ_DCS_DAC_DONE 46
|
||||
#define ARIZONA_IRQ_DCS_HP_DONE 47
|
||||
#define ARIZONA_IRQ_FLL2_CLOCK_OK 48
|
||||
#define ARIZONA_IRQ_FLL1_CLOCK_OK 49
|
||||
|
||||
#define ARIZONA_NUM_IRQ 50
|
||||
|
||||
struct arizona {
|
||||
struct regmap *regmap;
|
||||
struct device *dev;
|
||||
|
||||
enum arizona_type type;
|
||||
unsigned int rev;
|
||||
|
||||
int num_core_supplies;
|
||||
struct regulator_bulk_data core_supplies[ARIZONA_MAX_CORE_SUPPLIES];
|
||||
struct regulator *dcvdd;
|
||||
|
||||
struct arizona_pdata pdata;
|
||||
|
||||
int irq;
|
||||
struct irq_domain *virq;
|
||||
struct regmap_irq_chip_data *aod_irq_chip;
|
||||
struct regmap_irq_chip_data *irq_chip;
|
||||
|
||||
struct mutex clk_lock;
|
||||
int clk32k_ref;
|
||||
};
|
||||
|
||||
int arizona_clk32k_enable(struct arizona *arizona);
|
||||
int arizona_clk32k_disable(struct arizona *arizona);
|
||||
|
||||
int arizona_request_irq(struct arizona *arizona, int irq, char *name,
|
||||
irq_handler_t handler, void *data);
|
||||
void arizona_free_irq(struct arizona *arizona, int irq, void *data);
|
||||
int arizona_set_irq_wake(struct arizona *arizona, int irq, int on);
|
||||
|
||||
int wm5102_patch(struct arizona *arizona);
|
||||
int wm5110_patch(struct arizona *arizona);
|
||||
|
||||
#endif
|
119
include/linux/mfd/arizona/pdata.h
Normal file
119
include/linux/mfd/arizona/pdata.h
Normal file
@@ -0,0 +1,119 @@
|
||||
/*
|
||||
* Platform data for Arizona devices
|
||||
*
|
||||
* Copyright 2012 Wolfson Microelectronics. PLC.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _ARIZONA_PDATA_H
|
||||
#define _ARIZONA_PDATA_H
|
||||
|
||||
#define ARIZONA_GPN_DIR 0x8000 /* GPN_DIR */
|
||||
#define ARIZONA_GPN_DIR_MASK 0x8000 /* GPN_DIR */
|
||||
#define ARIZONA_GPN_DIR_SHIFT 15 /* GPN_DIR */
|
||||
#define ARIZONA_GPN_DIR_WIDTH 1 /* GPN_DIR */
|
||||
#define ARIZONA_GPN_PU 0x4000 /* GPN_PU */
|
||||
#define ARIZONA_GPN_PU_MASK 0x4000 /* GPN_PU */
|
||||
#define ARIZONA_GPN_PU_SHIFT 14 /* GPN_PU */
|
||||
#define ARIZONA_GPN_PU_WIDTH 1 /* GPN_PU */
|
||||
#define ARIZONA_GPN_PD 0x2000 /* GPN_PD */
|
||||
#define ARIZONA_GPN_PD_MASK 0x2000 /* GPN_PD */
|
||||
#define ARIZONA_GPN_PD_SHIFT 13 /* GPN_PD */
|
||||
#define ARIZONA_GPN_PD_WIDTH 1 /* GPN_PD */
|
||||
#define ARIZONA_GPN_LVL 0x0800 /* GPN_LVL */
|
||||
#define ARIZONA_GPN_LVL_MASK 0x0800 /* GPN_LVL */
|
||||
#define ARIZONA_GPN_LVL_SHIFT 11 /* GPN_LVL */
|
||||
#define ARIZONA_GPN_LVL_WIDTH 1 /* GPN_LVL */
|
||||
#define ARIZONA_GPN_POL 0x0400 /* GPN_POL */
|
||||
#define ARIZONA_GPN_POL_MASK 0x0400 /* GPN_POL */
|
||||
#define ARIZONA_GPN_POL_SHIFT 10 /* GPN_POL */
|
||||
#define ARIZONA_GPN_POL_WIDTH 1 /* GPN_POL */
|
||||
#define ARIZONA_GPN_OP_CFG 0x0200 /* GPN_OP_CFG */
|
||||
#define ARIZONA_GPN_OP_CFG_MASK 0x0200 /* GPN_OP_CFG */
|
||||
#define ARIZONA_GPN_OP_CFG_SHIFT 9 /* GPN_OP_CFG */
|
||||
#define ARIZONA_GPN_OP_CFG_WIDTH 1 /* GPN_OP_CFG */
|
||||
#define ARIZONA_GPN_DB 0x0100 /* GPN_DB */
|
||||
#define ARIZONA_GPN_DB_MASK 0x0100 /* GPN_DB */
|
||||
#define ARIZONA_GPN_DB_SHIFT 8 /* GPN_DB */
|
||||
#define ARIZONA_GPN_DB_WIDTH 1 /* GPN_DB */
|
||||
#define ARIZONA_GPN_FN_MASK 0x007F /* GPN_FN - [6:0] */
|
||||
#define ARIZONA_GPN_FN_SHIFT 0 /* GPN_FN - [6:0] */
|
||||
#define ARIZONA_GPN_FN_WIDTH 7 /* GPN_FN - [6:0] */
|
||||
|
||||
#define ARIZONA_MAX_GPIO 5
|
||||
|
||||
#define ARIZONA_32KZ_MCLK1 1
|
||||
#define ARIZONA_32KZ_MCLK2 2
|
||||
#define ARIZONA_32KZ_NONE 3
|
||||
|
||||
#define ARIZONA_MAX_INPUT 4
|
||||
|
||||
#define ARIZONA_DMIC_MICVDD 0
|
||||
#define ARIZONA_DMIC_MICBIAS1 1
|
||||
#define ARIZONA_DMIC_MICBIAS2 2
|
||||
#define ARIZONA_DMIC_MICBIAS3 3
|
||||
|
||||
#define ARIZONA_INMODE_DIFF 0
|
||||
#define ARIZONA_INMODE_SE 1
|
||||
#define ARIZONA_INMODE_DMIC 2
|
||||
|
||||
#define ARIZONA_MAX_OUTPUT 6
|
||||
|
||||
#define ARIZONA_MAX_PDM_SPK 2
|
||||
|
||||
struct regulator_init_data;
|
||||
|
||||
struct arizona_micd_config {
|
||||
unsigned int src;
|
||||
unsigned int bias;
|
||||
bool gpio;
|
||||
};
|
||||
|
||||
struct arizona_pdata {
|
||||
int reset; /** GPIO controlling /RESET, if any */
|
||||
int ldoena; /** GPIO controlling LODENA, if any */
|
||||
|
||||
/** Regulator configuration for MICVDD */
|
||||
struct regulator_init_data *micvdd;
|
||||
|
||||
/** Regulator configuration for LDO1 */
|
||||
struct regulator_init_data *ldo1;
|
||||
|
||||
/** If a direct 32kHz clock is provided on an MCLK specify it here */
|
||||
int clk32k_src;
|
||||
|
||||
bool irq_active_high; /** IRQ polarity */
|
||||
|
||||
/* Base GPIO */
|
||||
int gpio_base;
|
||||
|
||||
/** Pin state for GPIO pins */
|
||||
int gpio_defaults[ARIZONA_MAX_GPIO];
|
||||
|
||||
/** GPIO for mic detection polarity */
|
||||
int micd_pol_gpio;
|
||||
|
||||
/** Headset polarity configurations */
|
||||
struct arizona_micd_config *micd_configs;
|
||||
int num_micd_configs;
|
||||
|
||||
/** Reference voltage for DMIC inputs */
|
||||
int dmic_ref[ARIZONA_MAX_INPUT];
|
||||
|
||||
/** Mode of input structures */
|
||||
int inmode[ARIZONA_MAX_INPUT];
|
||||
|
||||
/** Mode for outputs */
|
||||
bool out_mono[ARIZONA_MAX_OUTPUT];
|
||||
|
||||
/** PDM speaker mute setting */
|
||||
unsigned int spk_mute[ARIZONA_MAX_PDM_SPK];
|
||||
|
||||
/** PDM speaker format */
|
||||
unsigned int spk_fmt[ARIZONA_MAX_PDM_SPK];
|
||||
};
|
||||
|
||||
#endif
|
6594
include/linux/mfd/arizona/registers.h
Normal file
6594
include/linux/mfd/arizona/registers.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -36,6 +36,11 @@ struct mfd_cell {
|
||||
/* platform data passed to the sub devices drivers */
|
||||
void *platform_data;
|
||||
size_t pdata_size;
|
||||
/*
|
||||
* Device Tree compatible string
|
||||
* See: Documentation/devicetree/usage-model.txt Chapter 2.2 for details
|
||||
*/
|
||||
const char *of_compatible;
|
||||
|
||||
/*
|
||||
* These resources can be specified relative to the parent device.
|
||||
|
@@ -530,7 +530,7 @@ int db8500_prcmu_stop_temp_sense(void);
|
||||
int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
|
||||
int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size);
|
||||
|
||||
void prcmu_ac_wake_req(void);
|
||||
int prcmu_ac_wake_req(void);
|
||||
void prcmu_ac_sleep_req(void);
|
||||
void db8500_prcmu_modem_reset(void);
|
||||
|
||||
@@ -680,7 +680,10 @@ static inline int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline void prcmu_ac_wake_req(void) {}
|
||||
static inline int prcmu_ac_wake_req(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void prcmu_ac_sleep_req(void) {}
|
||||
|
||||
|
@@ -345,7 +345,7 @@ static inline u16 prcmu_get_reset_code(void)
|
||||
return db8500_prcmu_get_reset_code();
|
||||
}
|
||||
|
||||
void prcmu_ac_wake_req(void);
|
||||
int prcmu_ac_wake_req(void);
|
||||
void prcmu_ac_sleep_req(void);
|
||||
static inline void prcmu_modem_reset(void)
|
||||
{
|
||||
@@ -533,7 +533,10 @@ static inline u16 prcmu_get_reset_code(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void prcmu_ac_wake_req(void) {}
|
||||
static inline int prcmu_ac_wake_req(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void prcmu_ac_sleep_req(void) {}
|
||||
|
||||
|
246
include/linux/mfd/max77686-private.h
Normal file
246
include/linux/mfd/max77686-private.h
Normal file
@@ -0,0 +1,246 @@
|
||||
/*
|
||||
* max77686.h - Voltage regulator driver for the Maxim 77686
|
||||
*
|
||||
* Copyright (C) 2012 Samsung Electrnoics
|
||||
* Chiwoong Byun <woong.byun@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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_MAX77686_PRIV_H
|
||||
#define __LINUX_MFD_MAX77686_PRIV_H
|
||||
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#define MAX77686_REG_INVALID (0xff)
|
||||
|
||||
enum max77686_pmic_reg {
|
||||
MAX77686_REG_DEVICE_ID = 0x00,
|
||||
MAX77686_REG_INTSRC = 0x01,
|
||||
MAX77686_REG_INT1 = 0x02,
|
||||
MAX77686_REG_INT2 = 0x03,
|
||||
|
||||
MAX77686_REG_INT1MSK = 0x04,
|
||||
MAX77686_REG_INT2MSK = 0x05,
|
||||
|
||||
MAX77686_REG_STATUS1 = 0x06,
|
||||
MAX77686_REG_STATUS2 = 0x07,
|
||||
|
||||
MAX77686_REG_PWRON = 0x08,
|
||||
MAX77686_REG_ONOFF_DELAY = 0x09,
|
||||
MAX77686_REG_MRSTB = 0x0A,
|
||||
/* Reserved: 0x0B-0x0F */
|
||||
|
||||
MAX77686_REG_BUCK1CTRL = 0x10,
|
||||
MAX77686_REG_BUCK1OUT = 0x11,
|
||||
MAX77686_REG_BUCK2CTRL1 = 0x12,
|
||||
MAX77686_REG_BUCK234FREQ = 0x13,
|
||||
MAX77686_REG_BUCK2DVS1 = 0x14,
|
||||
MAX77686_REG_BUCK2DVS2 = 0x15,
|
||||
MAX77686_REG_BUCK2DVS3 = 0x16,
|
||||
MAX77686_REG_BUCK2DVS4 = 0x17,
|
||||
MAX77686_REG_BUCK2DVS5 = 0x18,
|
||||
MAX77686_REG_BUCK2DVS6 = 0x19,
|
||||
MAX77686_REG_BUCK2DVS7 = 0x1A,
|
||||
MAX77686_REG_BUCK2DVS8 = 0x1B,
|
||||
MAX77686_REG_BUCK3CTRL1 = 0x1C,
|
||||
/* Reserved: 0x1D */
|
||||
MAX77686_REG_BUCK3DVS1 = 0x1E,
|
||||
MAX77686_REG_BUCK3DVS2 = 0x1F,
|
||||
MAX77686_REG_BUCK3DVS3 = 0x20,
|
||||
MAX77686_REG_BUCK3DVS4 = 0x21,
|
||||
MAX77686_REG_BUCK3DVS5 = 0x22,
|
||||
MAX77686_REG_BUCK3DVS6 = 0x23,
|
||||
MAX77686_REG_BUCK3DVS7 = 0x24,
|
||||
MAX77686_REG_BUCK3DVS8 = 0x25,
|
||||
MAX77686_REG_BUCK4CTRL1 = 0x26,
|
||||
/* Reserved: 0x27 */
|
||||
MAX77686_REG_BUCK4DVS1 = 0x28,
|
||||
MAX77686_REG_BUCK4DVS2 = 0x29,
|
||||
MAX77686_REG_BUCK4DVS3 = 0x2A,
|
||||
MAX77686_REG_BUCK4DVS4 = 0x2B,
|
||||
MAX77686_REG_BUCK4DVS5 = 0x2C,
|
||||
MAX77686_REG_BUCK4DVS6 = 0x2D,
|
||||
MAX77686_REG_BUCK4DVS7 = 0x2E,
|
||||
MAX77686_REG_BUCK4DVS8 = 0x2F,
|
||||
MAX77686_REG_BUCK5CTRL = 0x30,
|
||||
MAX77686_REG_BUCK5OUT = 0x31,
|
||||
MAX77686_REG_BUCK6CTRL = 0x32,
|
||||
MAX77686_REG_BUCK6OUT = 0x33,
|
||||
MAX77686_REG_BUCK7CTRL = 0x34,
|
||||
MAX77686_REG_BUCK7OUT = 0x35,
|
||||
MAX77686_REG_BUCK8CTRL = 0x36,
|
||||
MAX77686_REG_BUCK8OUT = 0x37,
|
||||
MAX77686_REG_BUCK9CTRL = 0x38,
|
||||
MAX77686_REG_BUCK9OUT = 0x39,
|
||||
/* Reserved: 0x3A-0x3F */
|
||||
|
||||
MAX77686_REG_LDO1CTRL1 = 0x40,
|
||||
MAX77686_REG_LDO2CTRL1 = 0x41,
|
||||
MAX77686_REG_LDO3CTRL1 = 0x42,
|
||||
MAX77686_REG_LDO4CTRL1 = 0x43,
|
||||
MAX77686_REG_LDO5CTRL1 = 0x44,
|
||||
MAX77686_REG_LDO6CTRL1 = 0x45,
|
||||
MAX77686_REG_LDO7CTRL1 = 0x46,
|
||||
MAX77686_REG_LDO8CTRL1 = 0x47,
|
||||
MAX77686_REG_LDO9CTRL1 = 0x48,
|
||||
MAX77686_REG_LDO10CTRL1 = 0x49,
|
||||
MAX77686_REG_LDO11CTRL1 = 0x4A,
|
||||
MAX77686_REG_LDO12CTRL1 = 0x4B,
|
||||
MAX77686_REG_LDO13CTRL1 = 0x4C,
|
||||
MAX77686_REG_LDO14CTRL1 = 0x4D,
|
||||
MAX77686_REG_LDO15CTRL1 = 0x4E,
|
||||
MAX77686_REG_LDO16CTRL1 = 0x4F,
|
||||
MAX77686_REG_LDO17CTRL1 = 0x50,
|
||||
MAX77686_REG_LDO18CTRL1 = 0x51,
|
||||
MAX77686_REG_LDO19CTRL1 = 0x52,
|
||||
MAX77686_REG_LDO20CTRL1 = 0x53,
|
||||
MAX77686_REG_LDO21CTRL1 = 0x54,
|
||||
MAX77686_REG_LDO22CTRL1 = 0x55,
|
||||
MAX77686_REG_LDO23CTRL1 = 0x56,
|
||||
MAX77686_REG_LDO24CTRL1 = 0x57,
|
||||
MAX77686_REG_LDO25CTRL1 = 0x58,
|
||||
MAX77686_REG_LDO26CTRL1 = 0x59,
|
||||
/* Reserved: 0x5A-0x5F */
|
||||
MAX77686_REG_LDO1CTRL2 = 0x60,
|
||||
MAX77686_REG_LDO2CTRL2 = 0x61,
|
||||
MAX77686_REG_LDO3CTRL2 = 0x62,
|
||||
MAX77686_REG_LDO4CTRL2 = 0x63,
|
||||
MAX77686_REG_LDO5CTRL2 = 0x64,
|
||||
MAX77686_REG_LDO6CTRL2 = 0x65,
|
||||
MAX77686_REG_LDO7CTRL2 = 0x66,
|
||||
MAX77686_REG_LDO8CTRL2 = 0x67,
|
||||
MAX77686_REG_LDO9CTRL2 = 0x68,
|
||||
MAX77686_REG_LDO10CTRL2 = 0x69,
|
||||
MAX77686_REG_LDO11CTRL2 = 0x6A,
|
||||
MAX77686_REG_LDO12CTRL2 = 0x6B,
|
||||
MAX77686_REG_LDO13CTRL2 = 0x6C,
|
||||
MAX77686_REG_LDO14CTRL2 = 0x6D,
|
||||
MAX77686_REG_LDO15CTRL2 = 0x6E,
|
||||
MAX77686_REG_LDO16CTRL2 = 0x6F,
|
||||
MAX77686_REG_LDO17CTRL2 = 0x70,
|
||||
MAX77686_REG_LDO18CTRL2 = 0x71,
|
||||
MAX77686_REG_LDO19CTRL2 = 0x72,
|
||||
MAX77686_REG_LDO20CTRL2 = 0x73,
|
||||
MAX77686_REG_LDO21CTRL2 = 0x74,
|
||||
MAX77686_REG_LDO22CTRL2 = 0x75,
|
||||
MAX77686_REG_LDO23CTRL2 = 0x76,
|
||||
MAX77686_REG_LDO24CTRL2 = 0x77,
|
||||
MAX77686_REG_LDO25CTRL2 = 0x78,
|
||||
MAX77686_REG_LDO26CTRL2 = 0x79,
|
||||
/* Reserved: 0x7A-0x7D */
|
||||
|
||||
MAX77686_REG_BBAT_CHG = 0x7E,
|
||||
MAX77686_REG_32KHZ = 0x7F,
|
||||
|
||||
MAX77686_REG_PMIC_END = 0x80,
|
||||
};
|
||||
|
||||
enum max77686_rtc_reg {
|
||||
MAX77686_RTC_INT = 0x00,
|
||||
MAX77686_RTC_INTM = 0x01,
|
||||
MAX77686_RTC_CONTROLM = 0x02,
|
||||
MAX77686_RTC_CONTROL = 0x03,
|
||||
MAX77686_RTC_UPDATE0 = 0x04,
|
||||
/* Reserved: 0x5 */
|
||||
MAX77686_WTSR_SMPL_CNTL = 0x06,
|
||||
MAX77686_RTC_SEC = 0x07,
|
||||
MAX77686_RTC_MIN = 0x08,
|
||||
MAX77686_RTC_HOUR = 0x09,
|
||||
MAX77686_RTC_WEEKDAY = 0x0A,
|
||||
MAX77686_RTC_MONTH = 0x0B,
|
||||
MAX77686_RTC_YEAR = 0x0C,
|
||||
MAX77686_RTC_DATE = 0x0D,
|
||||
MAX77686_ALARM1_SEC = 0x0E,
|
||||
MAX77686_ALARM1_MIN = 0x0F,
|
||||
MAX77686_ALARM1_HOUR = 0x10,
|
||||
MAX77686_ALARM1_WEEKDAY = 0x11,
|
||||
MAX77686_ALARM1_MONTH = 0x12,
|
||||
MAX77686_ALARM1_YEAR = 0x13,
|
||||
MAX77686_ALARM1_DATE = 0x14,
|
||||
MAX77686_ALARM2_SEC = 0x15,
|
||||
MAX77686_ALARM2_MIN = 0x16,
|
||||
MAX77686_ALARM2_HOUR = 0x17,
|
||||
MAX77686_ALARM2_WEEKDAY = 0x18,
|
||||
MAX77686_ALARM2_MONTH = 0x19,
|
||||
MAX77686_ALARM2_YEAR = 0x1A,
|
||||
MAX77686_ALARM2_DATE = 0x1B,
|
||||
};
|
||||
|
||||
#define MAX77686_IRQSRC_PMIC (0)
|
||||
#define MAX77686_IRQSRC_RTC (1 << 0)
|
||||
|
||||
enum max77686_irq_source {
|
||||
PMIC_INT1 = 0,
|
||||
PMIC_INT2,
|
||||
RTC_INT,
|
||||
|
||||
MAX77686_IRQ_GROUP_NR,
|
||||
};
|
||||
|
||||
enum max77686_irq {
|
||||
MAX77686_PMICIRQ_PWRONF,
|
||||
MAX77686_PMICIRQ_PWRONR,
|
||||
MAX77686_PMICIRQ_JIGONBF,
|
||||
MAX77686_PMICIRQ_JIGONBR,
|
||||
MAX77686_PMICIRQ_ACOKBF,
|
||||
MAX77686_PMICIRQ_ACOKBR,
|
||||
MAX77686_PMICIRQ_ONKEY1S,
|
||||
MAX77686_PMICIRQ_MRSTB,
|
||||
|
||||
MAX77686_PMICIRQ_140C,
|
||||
MAX77686_PMICIRQ_120C,
|
||||
|
||||
MAX77686_RTCIRQ_RTC60S,
|
||||
MAX77686_RTCIRQ_RTCA1,
|
||||
MAX77686_RTCIRQ_RTCA2,
|
||||
MAX77686_RTCIRQ_SMPL,
|
||||
MAX77686_RTCIRQ_RTC1S,
|
||||
MAX77686_RTCIRQ_WTSR,
|
||||
|
||||
MAX77686_IRQ_NR,
|
||||
};
|
||||
|
||||
struct max77686_dev {
|
||||
struct device *dev;
|
||||
struct i2c_client *i2c; /* 0xcc / PMIC, Battery Control, and FLASH */
|
||||
struct i2c_client *rtc; /* slave addr 0x0c */
|
||||
|
||||
int type;
|
||||
|
||||
struct regmap *regmap; /* regmap for mfd */
|
||||
struct regmap *rtc_regmap; /* regmap for rtc */
|
||||
|
||||
struct irq_domain *irq_domain;
|
||||
|
||||
int irq;
|
||||
int irq_gpio;
|
||||
bool wakeup;
|
||||
struct mutex irqlock;
|
||||
int irq_masks_cur[MAX77686_IRQ_GROUP_NR];
|
||||
int irq_masks_cache[MAX77686_IRQ_GROUP_NR];
|
||||
};
|
||||
|
||||
enum max77686_types {
|
||||
TYPE_MAX77686,
|
||||
};
|
||||
|
||||
extern int max77686_irq_init(struct max77686_dev *max77686);
|
||||
extern void max77686_irq_exit(struct max77686_dev *max77686);
|
||||
extern int max77686_irq_resume(struct max77686_dev *max77686);
|
||||
|
||||
#endif /* __LINUX_MFD_MAX77686_PRIV_H */
|
114
include/linux/mfd/max77686.h
Normal file
114
include/linux/mfd/max77686.h
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* max77686.h - Driver for the Maxim 77686
|
||||
*
|
||||
* Copyright (C) 2012 Samsung Electrnoics
|
||||
* Chiwoong Byun <woong.byun@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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* This driver is based on max8997.h
|
||||
*
|
||||
* MAX77686 has PMIC, RTC devices.
|
||||
* The devices share the same I2C bus and included in
|
||||
* this mfd driver.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_MAX77686_H
|
||||
#define __LINUX_MFD_MAX77686_H
|
||||
|
||||
#include <linux/regulator/consumer.h>
|
||||
|
||||
/* MAX77686 regulator IDs */
|
||||
enum max77686_regulators {
|
||||
MAX77686_LDO1 = 0,
|
||||
MAX77686_LDO2,
|
||||
MAX77686_LDO3,
|
||||
MAX77686_LDO4,
|
||||
MAX77686_LDO5,
|
||||
MAX77686_LDO6,
|
||||
MAX77686_LDO7,
|
||||
MAX77686_LDO8,
|
||||
MAX77686_LDO9,
|
||||
MAX77686_LDO10,
|
||||
MAX77686_LDO11,
|
||||
MAX77686_LDO12,
|
||||
MAX77686_LDO13,
|
||||
MAX77686_LDO14,
|
||||
MAX77686_LDO15,
|
||||
MAX77686_LDO16,
|
||||
MAX77686_LDO17,
|
||||
MAX77686_LDO18,
|
||||
MAX77686_LDO19,
|
||||
MAX77686_LDO20,
|
||||
MAX77686_LDO21,
|
||||
MAX77686_LDO22,
|
||||
MAX77686_LDO23,
|
||||
MAX77686_LDO24,
|
||||
MAX77686_LDO25,
|
||||
MAX77686_LDO26,
|
||||
MAX77686_BUCK1,
|
||||
MAX77686_BUCK2,
|
||||
MAX77686_BUCK3,
|
||||
MAX77686_BUCK4,
|
||||
MAX77686_BUCK5,
|
||||
MAX77686_BUCK6,
|
||||
MAX77686_BUCK7,
|
||||
MAX77686_BUCK8,
|
||||
MAX77686_BUCK9,
|
||||
|
||||
MAX77686_REG_MAX,
|
||||
};
|
||||
|
||||
struct max77686_regulator_data {
|
||||
int id;
|
||||
struct regulator_init_data *initdata;
|
||||
};
|
||||
|
||||
enum max77686_opmode {
|
||||
MAX77686_OPMODE_NORMAL,
|
||||
MAX77686_OPMODE_LP,
|
||||
MAX77686_OPMODE_STANDBY,
|
||||
};
|
||||
|
||||
struct max77686_opmode_data {
|
||||
int id;
|
||||
int mode;
|
||||
};
|
||||
|
||||
struct max77686_platform_data {
|
||||
/* IRQ */
|
||||
int irq_gpio;
|
||||
int ono;
|
||||
int wakeup;
|
||||
|
||||
/* ---- PMIC ---- */
|
||||
struct max77686_regulator_data *regulators;
|
||||
int num_regulators;
|
||||
|
||||
struct max77686_opmode_data *opmode_data;
|
||||
|
||||
/*
|
||||
* GPIO-DVS feature is not enabled with the current version of
|
||||
* MAX77686 driver. Buck2/3/4_voltages[0] is used as the default
|
||||
* voltage at probe. DVS/SELB gpios are set as OUTPUT-LOW.
|
||||
*/
|
||||
int buck234_gpio_dvs[3]; /* GPIO of [0]DVS1, [1]DVS2, [2]DVS3 */
|
||||
int buck234_gpio_selb[3]; /* [0]SELB2, [1]SELB3, [2]SELB4 */
|
||||
unsigned int buck2_voltage[8]; /* buckx_voltage in uV */
|
||||
unsigned int buck3_voltage[8];
|
||||
unsigned int buck4_voltage[8];
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_MAX77686_H */
|
@@ -190,7 +190,6 @@ struct max77693_dev {
|
||||
struct i2c_client *i2c; /* 0xCC , PMIC, Charger, Flash LED */
|
||||
struct i2c_client *muic; /* 0x4A , MUIC */
|
||||
struct i2c_client *haptic; /* 0x90 , Haptic */
|
||||
struct mutex iolock;
|
||||
|
||||
int type;
|
||||
|
||||
|
@@ -23,6 +23,8 @@
|
||||
#define __LINUX_MFD_MAX8997_PRIV_H
|
||||
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/irqdomain.h>
|
||||
|
||||
#define MAX8997_REG_INVALID (0xff)
|
||||
|
||||
@@ -325,7 +327,7 @@ struct max8997_dev {
|
||||
|
||||
int irq;
|
||||
int ono;
|
||||
int irq_base;
|
||||
struct irq_domain *irq_domain;
|
||||
struct mutex irqlock;
|
||||
int irq_masks_cur[MAX8997_IRQ_GROUP_NR];
|
||||
int irq_masks_cache[MAX8997_IRQ_GROUP_NR];
|
||||
|
@@ -181,7 +181,6 @@ struct max8997_led_platform_data {
|
||||
|
||||
struct max8997_platform_data {
|
||||
/* IRQ */
|
||||
int irq_base;
|
||||
int ono;
|
||||
int wakeup;
|
||||
|
||||
|
@@ -1,379 +0,0 @@
|
||||
/*
|
||||
* s5m-core.h
|
||||
*
|
||||
* Copyright (c) 2011 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_S5M_CORE_H
|
||||
#define __LINUX_MFD_S5M_CORE_H
|
||||
|
||||
#define NUM_IRQ_REGS 4
|
||||
|
||||
enum s5m_device_type {
|
||||
S5M8751X,
|
||||
S5M8763X,
|
||||
S5M8767X,
|
||||
};
|
||||
|
||||
/* S5M8767 registers */
|
||||
enum s5m8767_reg {
|
||||
S5M8767_REG_ID,
|
||||
S5M8767_REG_INT1,
|
||||
S5M8767_REG_INT2,
|
||||
S5M8767_REG_INT3,
|
||||
S5M8767_REG_INT1M,
|
||||
S5M8767_REG_INT2M,
|
||||
S5M8767_REG_INT3M,
|
||||
S5M8767_REG_STATUS1,
|
||||
S5M8767_REG_STATUS2,
|
||||
S5M8767_REG_STATUS3,
|
||||
S5M8767_REG_CTRL1,
|
||||
S5M8767_REG_CTRL2,
|
||||
S5M8767_REG_LOWBAT1,
|
||||
S5M8767_REG_LOWBAT2,
|
||||
S5M8767_REG_BUCHG,
|
||||
S5M8767_REG_DVSRAMP,
|
||||
S5M8767_REG_DVSTIMER2 = 0x10,
|
||||
S5M8767_REG_DVSTIMER3,
|
||||
S5M8767_REG_DVSTIMER4,
|
||||
S5M8767_REG_LDO1,
|
||||
S5M8767_REG_LDO2,
|
||||
S5M8767_REG_LDO3,
|
||||
S5M8767_REG_LDO4,
|
||||
S5M8767_REG_LDO5,
|
||||
S5M8767_REG_LDO6,
|
||||
S5M8767_REG_LDO7,
|
||||
S5M8767_REG_LDO8,
|
||||
S5M8767_REG_LDO9,
|
||||
S5M8767_REG_LDO10,
|
||||
S5M8767_REG_LDO11,
|
||||
S5M8767_REG_LDO12,
|
||||
S5M8767_REG_LDO13,
|
||||
S5M8767_REG_LDO14 = 0x20,
|
||||
S5M8767_REG_LDO15,
|
||||
S5M8767_REG_LDO16,
|
||||
S5M8767_REG_LDO17,
|
||||
S5M8767_REG_LDO18,
|
||||
S5M8767_REG_LDO19,
|
||||
S5M8767_REG_LDO20,
|
||||
S5M8767_REG_LDO21,
|
||||
S5M8767_REG_LDO22,
|
||||
S5M8767_REG_LDO23,
|
||||
S5M8767_REG_LDO24,
|
||||
S5M8767_REG_LDO25,
|
||||
S5M8767_REG_LDO26,
|
||||
S5M8767_REG_LDO27,
|
||||
S5M8767_REG_LDO28,
|
||||
S5M8767_REG_UVLO = 0x31,
|
||||
S5M8767_REG_BUCK1CTRL1,
|
||||
S5M8767_REG_BUCK1CTRL2,
|
||||
S5M8767_REG_BUCK2CTRL,
|
||||
S5M8767_REG_BUCK2DVS1,
|
||||
S5M8767_REG_BUCK2DVS2,
|
||||
S5M8767_REG_BUCK2DVS3,
|
||||
S5M8767_REG_BUCK2DVS4,
|
||||
S5M8767_REG_BUCK2DVS5,
|
||||
S5M8767_REG_BUCK2DVS6,
|
||||
S5M8767_REG_BUCK2DVS7,
|
||||
S5M8767_REG_BUCK2DVS8,
|
||||
S5M8767_REG_BUCK3CTRL,
|
||||
S5M8767_REG_BUCK3DVS1,
|
||||
S5M8767_REG_BUCK3DVS2,
|
||||
S5M8767_REG_BUCK3DVS3,
|
||||
S5M8767_REG_BUCK3DVS4,
|
||||
S5M8767_REG_BUCK3DVS5,
|
||||
S5M8767_REG_BUCK3DVS6,
|
||||
S5M8767_REG_BUCK3DVS7,
|
||||
S5M8767_REG_BUCK3DVS8,
|
||||
S5M8767_REG_BUCK4CTRL,
|
||||
S5M8767_REG_BUCK4DVS1,
|
||||
S5M8767_REG_BUCK4DVS2,
|
||||
S5M8767_REG_BUCK4DVS3,
|
||||
S5M8767_REG_BUCK4DVS4,
|
||||
S5M8767_REG_BUCK4DVS5,
|
||||
S5M8767_REG_BUCK4DVS6,
|
||||
S5M8767_REG_BUCK4DVS7,
|
||||
S5M8767_REG_BUCK4DVS8,
|
||||
S5M8767_REG_BUCK5CTRL1,
|
||||
S5M8767_REG_BUCK5CTRL2,
|
||||
S5M8767_REG_BUCK5CTRL3,
|
||||
S5M8767_REG_BUCK5CTRL4,
|
||||
S5M8767_REG_BUCK5CTRL5,
|
||||
S5M8767_REG_BUCK6CTRL1,
|
||||
S5M8767_REG_BUCK6CTRL2,
|
||||
S5M8767_REG_BUCK7CTRL1,
|
||||
S5M8767_REG_BUCK7CTRL2,
|
||||
S5M8767_REG_BUCK8CTRL1,
|
||||
S5M8767_REG_BUCK8CTRL2,
|
||||
S5M8767_REG_BUCK9CTRL1,
|
||||
S5M8767_REG_BUCK9CTRL2,
|
||||
S5M8767_REG_LDO1CTRL,
|
||||
S5M8767_REG_LDO2_1CTRL,
|
||||
S5M8767_REG_LDO2_2CTRL,
|
||||
S5M8767_REG_LDO2_3CTRL,
|
||||
S5M8767_REG_LDO2_4CTRL,
|
||||
S5M8767_REG_LDO3CTRL,
|
||||
S5M8767_REG_LDO4CTRL,
|
||||
S5M8767_REG_LDO5CTRL,
|
||||
S5M8767_REG_LDO6CTRL,
|
||||
S5M8767_REG_LDO7CTRL,
|
||||
S5M8767_REG_LDO8CTRL,
|
||||
S5M8767_REG_LDO9CTRL,
|
||||
S5M8767_REG_LDO10CTRL,
|
||||
S5M8767_REG_LDO11CTRL,
|
||||
S5M8767_REG_LDO12CTRL,
|
||||
S5M8767_REG_LDO13CTRL,
|
||||
S5M8767_REG_LDO14CTRL,
|
||||
S5M8767_REG_LDO15CTRL,
|
||||
S5M8767_REG_LDO16CTRL,
|
||||
S5M8767_REG_LDO17CTRL,
|
||||
S5M8767_REG_LDO18CTRL,
|
||||
S5M8767_REG_LDO19CTRL,
|
||||
S5M8767_REG_LDO20CTRL,
|
||||
S5M8767_REG_LDO21CTRL,
|
||||
S5M8767_REG_LDO22CTRL,
|
||||
S5M8767_REG_LDO23CTRL,
|
||||
S5M8767_REG_LDO24CTRL,
|
||||
S5M8767_REG_LDO25CTRL,
|
||||
S5M8767_REG_LDO26CTRL,
|
||||
S5M8767_REG_LDO27CTRL,
|
||||
S5M8767_REG_LDO28CTRL,
|
||||
};
|
||||
|
||||
/* S5M8763 registers */
|
||||
enum s5m8763_reg {
|
||||
S5M8763_REG_IRQ1,
|
||||
S5M8763_REG_IRQ2,
|
||||
S5M8763_REG_IRQ3,
|
||||
S5M8763_REG_IRQ4,
|
||||
S5M8763_REG_IRQM1,
|
||||
S5M8763_REG_IRQM2,
|
||||
S5M8763_REG_IRQM3,
|
||||
S5M8763_REG_IRQM4,
|
||||
S5M8763_REG_STATUS1,
|
||||
S5M8763_REG_STATUS2,
|
||||
S5M8763_REG_STATUSM1,
|
||||
S5M8763_REG_STATUSM2,
|
||||
S5M8763_REG_CHGR1,
|
||||
S5M8763_REG_CHGR2,
|
||||
S5M8763_REG_LDO_ACTIVE_DISCHARGE1,
|
||||
S5M8763_REG_LDO_ACTIVE_DISCHARGE2,
|
||||
S5M8763_REG_BUCK_ACTIVE_DISCHARGE3,
|
||||
S5M8763_REG_ONOFF1,
|
||||
S5M8763_REG_ONOFF2,
|
||||
S5M8763_REG_ONOFF3,
|
||||
S5M8763_REG_ONOFF4,
|
||||
S5M8763_REG_BUCK1_VOLTAGE1,
|
||||
S5M8763_REG_BUCK1_VOLTAGE2,
|
||||
S5M8763_REG_BUCK1_VOLTAGE3,
|
||||
S5M8763_REG_BUCK1_VOLTAGE4,
|
||||
S5M8763_REG_BUCK2_VOLTAGE1,
|
||||
S5M8763_REG_BUCK2_VOLTAGE2,
|
||||
S5M8763_REG_BUCK3,
|
||||
S5M8763_REG_BUCK4,
|
||||
S5M8763_REG_LDO1_LDO2,
|
||||
S5M8763_REG_LDO3,
|
||||
S5M8763_REG_LDO4,
|
||||
S5M8763_REG_LDO5,
|
||||
S5M8763_REG_LDO6,
|
||||
S5M8763_REG_LDO7,
|
||||
S5M8763_REG_LDO7_LDO8,
|
||||
S5M8763_REG_LDO9_LDO10,
|
||||
S5M8763_REG_LDO11,
|
||||
S5M8763_REG_LDO12,
|
||||
S5M8763_REG_LDO13,
|
||||
S5M8763_REG_LDO14,
|
||||
S5M8763_REG_LDO15,
|
||||
S5M8763_REG_LDO16,
|
||||
S5M8763_REG_BKCHR,
|
||||
S5M8763_REG_LBCNFG1,
|
||||
S5M8763_REG_LBCNFG2,
|
||||
};
|
||||
|
||||
enum s5m8767_irq {
|
||||
S5M8767_IRQ_PWRR,
|
||||
S5M8767_IRQ_PWRF,
|
||||
S5M8767_IRQ_PWR1S,
|
||||
S5M8767_IRQ_JIGR,
|
||||
S5M8767_IRQ_JIGF,
|
||||
S5M8767_IRQ_LOWBAT2,
|
||||
S5M8767_IRQ_LOWBAT1,
|
||||
|
||||
S5M8767_IRQ_MRB,
|
||||
S5M8767_IRQ_DVSOK2,
|
||||
S5M8767_IRQ_DVSOK3,
|
||||
S5M8767_IRQ_DVSOK4,
|
||||
|
||||
S5M8767_IRQ_RTC60S,
|
||||
S5M8767_IRQ_RTCA1,
|
||||
S5M8767_IRQ_RTCA2,
|
||||
S5M8767_IRQ_SMPL,
|
||||
S5M8767_IRQ_RTC1S,
|
||||
S5M8767_IRQ_WTSR,
|
||||
|
||||
S5M8767_IRQ_NR,
|
||||
};
|
||||
|
||||
#define S5M8767_IRQ_PWRR_MASK (1 << 0)
|
||||
#define S5M8767_IRQ_PWRF_MASK (1 << 1)
|
||||
#define S5M8767_IRQ_PWR1S_MASK (1 << 3)
|
||||
#define S5M8767_IRQ_JIGR_MASK (1 << 4)
|
||||
#define S5M8767_IRQ_JIGF_MASK (1 << 5)
|
||||
#define S5M8767_IRQ_LOWBAT2_MASK (1 << 6)
|
||||
#define S5M8767_IRQ_LOWBAT1_MASK (1 << 7)
|
||||
|
||||
#define S5M8767_IRQ_MRB_MASK (1 << 2)
|
||||
#define S5M8767_IRQ_DVSOK2_MASK (1 << 3)
|
||||
#define S5M8767_IRQ_DVSOK3_MASK (1 << 4)
|
||||
#define S5M8767_IRQ_DVSOK4_MASK (1 << 5)
|
||||
|
||||
#define S5M8767_IRQ_RTC60S_MASK (1 << 0)
|
||||
#define S5M8767_IRQ_RTCA1_MASK (1 << 1)
|
||||
#define S5M8767_IRQ_RTCA2_MASK (1 << 2)
|
||||
#define S5M8767_IRQ_SMPL_MASK (1 << 3)
|
||||
#define S5M8767_IRQ_RTC1S_MASK (1 << 4)
|
||||
#define S5M8767_IRQ_WTSR_MASK (1 << 5)
|
||||
|
||||
enum s5m8763_irq {
|
||||
S5M8763_IRQ_DCINF,
|
||||
S5M8763_IRQ_DCINR,
|
||||
S5M8763_IRQ_JIGF,
|
||||
S5M8763_IRQ_JIGR,
|
||||
S5M8763_IRQ_PWRONF,
|
||||
S5M8763_IRQ_PWRONR,
|
||||
|
||||
S5M8763_IRQ_WTSREVNT,
|
||||
S5M8763_IRQ_SMPLEVNT,
|
||||
S5M8763_IRQ_ALARM1,
|
||||
S5M8763_IRQ_ALARM0,
|
||||
|
||||
S5M8763_IRQ_ONKEY1S,
|
||||
S5M8763_IRQ_TOPOFFR,
|
||||
S5M8763_IRQ_DCINOVPR,
|
||||
S5M8763_IRQ_CHGRSTF,
|
||||
S5M8763_IRQ_DONER,
|
||||
S5M8763_IRQ_CHGFAULT,
|
||||
|
||||
S5M8763_IRQ_LOBAT1,
|
||||
S5M8763_IRQ_LOBAT2,
|
||||
|
||||
S5M8763_IRQ_NR,
|
||||
};
|
||||
|
||||
#define S5M8763_IRQ_DCINF_MASK (1 << 2)
|
||||
#define S5M8763_IRQ_DCINR_MASK (1 << 3)
|
||||
#define S5M8763_IRQ_JIGF_MASK (1 << 4)
|
||||
#define S5M8763_IRQ_JIGR_MASK (1 << 5)
|
||||
#define S5M8763_IRQ_PWRONF_MASK (1 << 6)
|
||||
#define S5M8763_IRQ_PWRONR_MASK (1 << 7)
|
||||
|
||||
#define S5M8763_IRQ_WTSREVNT_MASK (1 << 0)
|
||||
#define S5M8763_IRQ_SMPLEVNT_MASK (1 << 1)
|
||||
#define S5M8763_IRQ_ALARM1_MASK (1 << 2)
|
||||
#define S5M8763_IRQ_ALARM0_MASK (1 << 3)
|
||||
|
||||
#define S5M8763_IRQ_ONKEY1S_MASK (1 << 0)
|
||||
#define S5M8763_IRQ_TOPOFFR_MASK (1 << 2)
|
||||
#define S5M8763_IRQ_DCINOVPR_MASK (1 << 3)
|
||||
#define S5M8763_IRQ_CHGRSTF_MASK (1 << 4)
|
||||
#define S5M8763_IRQ_DONER_MASK (1 << 5)
|
||||
#define S5M8763_IRQ_CHGFAULT_MASK (1 << 7)
|
||||
|
||||
#define S5M8763_IRQ_LOBAT1_MASK (1 << 0)
|
||||
#define S5M8763_IRQ_LOBAT2_MASK (1 << 1)
|
||||
|
||||
#define S5M8763_ENRAMP (1 << 4)
|
||||
|
||||
/**
|
||||
* struct s5m87xx_dev - s5m87xx master device for sub-drivers
|
||||
* @dev: master device of the chip (can be used to access platform data)
|
||||
* @i2c: i2c client private data for regulator
|
||||
* @rtc: i2c client private data for rtc
|
||||
* @iolock: mutex for serializing io access
|
||||
* @irqlock: mutex for buslock
|
||||
* @irq_base: base IRQ number for s5m87xx, required for IRQs
|
||||
* @irq: generic IRQ number for s5m87xx
|
||||
* @ono: power onoff IRQ number for s5m87xx
|
||||
* @irq_masks_cur: currently active value
|
||||
* @irq_masks_cache: cached hardware value
|
||||
* @type: indicate which s5m87xx "variant" is used
|
||||
*/
|
||||
struct s5m87xx_dev {
|
||||
struct device *dev;
|
||||
struct regmap *regmap;
|
||||
struct i2c_client *i2c;
|
||||
struct i2c_client *rtc;
|
||||
struct mutex iolock;
|
||||
struct mutex irqlock;
|
||||
|
||||
int device_type;
|
||||
int irq_base;
|
||||
int irq;
|
||||
int ono;
|
||||
u8 irq_masks_cur[NUM_IRQ_REGS];
|
||||
u8 irq_masks_cache[NUM_IRQ_REGS];
|
||||
int type;
|
||||
bool wakeup;
|
||||
};
|
||||
|
||||
int s5m_irq_init(struct s5m87xx_dev *s5m87xx);
|
||||
void s5m_irq_exit(struct s5m87xx_dev *s5m87xx);
|
||||
int s5m_irq_resume(struct s5m87xx_dev *s5m87xx);
|
||||
|
||||
extern int s5m_reg_read(struct s5m87xx_dev *s5m87xx, u8 reg, void *dest);
|
||||
extern int s5m_bulk_read(struct s5m87xx_dev *s5m87xx, u8 reg, int count, u8 *buf);
|
||||
extern int s5m_reg_write(struct s5m87xx_dev *s5m87xx, u8 reg, u8 value);
|
||||
extern int s5m_bulk_write(struct s5m87xx_dev *s5m87xx, u8 reg, int count, u8 *buf);
|
||||
extern int s5m_reg_update(struct s5m87xx_dev *s5m87xx, u8 reg, u8 val, u8 mask);
|
||||
|
||||
struct s5m_platform_data {
|
||||
struct s5m_regulator_data *regulators;
|
||||
struct s5m_opmode_data *opmode;
|
||||
int device_type;
|
||||
int num_regulators;
|
||||
|
||||
int irq_base;
|
||||
int (*cfg_pmic_irq)(void);
|
||||
|
||||
int ono;
|
||||
bool wakeup;
|
||||
bool buck_voltage_lock;
|
||||
|
||||
int buck_gpios[3];
|
||||
int buck_ds[3];
|
||||
int buck2_voltage[8];
|
||||
bool buck2_gpiodvs;
|
||||
int buck3_voltage[8];
|
||||
bool buck3_gpiodvs;
|
||||
int buck4_voltage[8];
|
||||
bool buck4_gpiodvs;
|
||||
|
||||
int buck_set1;
|
||||
int buck_set2;
|
||||
int buck_set3;
|
||||
int buck2_enable;
|
||||
int buck3_enable;
|
||||
int buck4_enable;
|
||||
int buck_default_idx;
|
||||
int buck2_default_idx;
|
||||
int buck3_default_idx;
|
||||
int buck4_default_idx;
|
||||
|
||||
int buck_ramp_delay;
|
||||
bool buck2_ramp_enable;
|
||||
bool buck3_ramp_enable;
|
||||
bool buck4_ramp_enable;
|
||||
|
||||
int buck2_init;
|
||||
int buck3_init;
|
||||
int buck4_init;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_S5M_CORE_H */
|
@@ -1,129 +0,0 @@
|
||||
/* s5m87xx.h
|
||||
*
|
||||
* Copyright (c) 2010-2011 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 version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_S5M_PMIC_H
|
||||
#define __LINUX_MFD_S5M_PMIC_H
|
||||
|
||||
#include <linux/regulator/machine.h>
|
||||
|
||||
/* S5M8767 regulator ids */
|
||||
enum s5m8767_regulators {
|
||||
S5M8767_LDO1,
|
||||
S5M8767_LDO2,
|
||||
S5M8767_LDO3,
|
||||
S5M8767_LDO4,
|
||||
S5M8767_LDO5,
|
||||
S5M8767_LDO6,
|
||||
S5M8767_LDO7,
|
||||
S5M8767_LDO8,
|
||||
S5M8767_LDO9,
|
||||
S5M8767_LDO10,
|
||||
S5M8767_LDO11,
|
||||
S5M8767_LDO12,
|
||||
S5M8767_LDO13,
|
||||
S5M8767_LDO14,
|
||||
S5M8767_LDO15,
|
||||
S5M8767_LDO16,
|
||||
S5M8767_LDO17,
|
||||
S5M8767_LDO18,
|
||||
S5M8767_LDO19,
|
||||
S5M8767_LDO20,
|
||||
S5M8767_LDO21,
|
||||
S5M8767_LDO22,
|
||||
S5M8767_LDO23,
|
||||
S5M8767_LDO24,
|
||||
S5M8767_LDO25,
|
||||
S5M8767_LDO26,
|
||||
S5M8767_LDO27,
|
||||
S5M8767_LDO28,
|
||||
S5M8767_BUCK1,
|
||||
S5M8767_BUCK2,
|
||||
S5M8767_BUCK3,
|
||||
S5M8767_BUCK4,
|
||||
S5M8767_BUCK5,
|
||||
S5M8767_BUCK6,
|
||||
S5M8767_BUCK7,
|
||||
S5M8767_BUCK8,
|
||||
S5M8767_BUCK9,
|
||||
S5M8767_AP_EN32KHZ,
|
||||
S5M8767_CP_EN32KHZ,
|
||||
|
||||
S5M8767_REG_MAX,
|
||||
};
|
||||
|
||||
#define S5M8767_ENCTRL_SHIFT 6
|
||||
|
||||
/* S5M8763 regulator ids */
|
||||
enum s5m8763_regulators {
|
||||
S5M8763_LDO1,
|
||||
S5M8763_LDO2,
|
||||
S5M8763_LDO3,
|
||||
S5M8763_LDO4,
|
||||
S5M8763_LDO5,
|
||||
S5M8763_LDO6,
|
||||
S5M8763_LDO7,
|
||||
S5M8763_LDO8,
|
||||
S5M8763_LDO9,
|
||||
S5M8763_LDO10,
|
||||
S5M8763_LDO11,
|
||||
S5M8763_LDO12,
|
||||
S5M8763_LDO13,
|
||||
S5M8763_LDO14,
|
||||
S5M8763_LDO15,
|
||||
S5M8763_LDO16,
|
||||
S5M8763_BUCK1,
|
||||
S5M8763_BUCK2,
|
||||
S5M8763_BUCK3,
|
||||
S5M8763_BUCK4,
|
||||
S5M8763_AP_EN32KHZ,
|
||||
S5M8763_CP_EN32KHZ,
|
||||
S5M8763_ENCHGVI,
|
||||
S5M8763_ESAFEUSB1,
|
||||
S5M8763_ESAFEUSB2,
|
||||
};
|
||||
|
||||
/**
|
||||
* s5m87xx_regulator_data - regulator data
|
||||
* @id: regulator id
|
||||
* @initdata: regulator init data (contraints, supplies, ...)
|
||||
*/
|
||||
struct s5m_regulator_data {
|
||||
int id;
|
||||
struct regulator_init_data *initdata;
|
||||
};
|
||||
|
||||
/*
|
||||
* s5m_opmode_data - regulator operation mode data
|
||||
* @id: regulator id
|
||||
* @mode: regulator operation mode
|
||||
*/
|
||||
struct s5m_opmode_data {
|
||||
int id;
|
||||
int mode;
|
||||
};
|
||||
|
||||
/*
|
||||
* s5m regulator operation mode
|
||||
* S5M_OPMODE_OFF Regulator always OFF
|
||||
* S5M_OPMODE_ON Regulator always ON
|
||||
* S5M_OPMODE_LOWPOWER Regulator is on in low-power mode
|
||||
* S5M_OPMODE_SUSPEND Regulator is changed by PWREN pin
|
||||
* If PWREN is high, regulator is on
|
||||
* If PWREN is low, regulator is off
|
||||
*/
|
||||
|
||||
enum s5m_opmode {
|
||||
S5M_OPMODE_OFF,
|
||||
S5M_OPMODE_ON,
|
||||
S5M_OPMODE_LOWPOWER,
|
||||
S5M_OPMODE_SUSPEND,
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_S5M_PMIC_H */
|
159
include/linux/mfd/samsung/core.h
Normal file
159
include/linux/mfd/samsung/core.h
Normal file
@@ -0,0 +1,159 @@
|
||||
/*
|
||||
* core.h
|
||||
*
|
||||
* copyright (c) 2011 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_SEC_CORE_H
|
||||
#define __LINUX_MFD_SEC_CORE_H
|
||||
|
||||
#define NUM_IRQ_REGS 4
|
||||
|
||||
enum sec_device_type {
|
||||
S5M8751X,
|
||||
S5M8763X,
|
||||
S5M8767X,
|
||||
S2MPS11X,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct sec_pmic_dev - s5m87xx master device for sub-drivers
|
||||
* @dev: master device of the chip (can be used to access platform data)
|
||||
* @i2c: i2c client private data for regulator
|
||||
* @rtc: i2c client private data for rtc
|
||||
* @iolock: mutex for serializing io access
|
||||
* @irqlock: mutex for buslock
|
||||
* @irq_base: base IRQ number for sec-pmic, required for IRQs
|
||||
* @irq: generic IRQ number for s5m87xx
|
||||
* @ono: power onoff IRQ number for s5m87xx
|
||||
* @irq_masks_cur: currently active value
|
||||
* @irq_masks_cache: cached hardware value
|
||||
* @type: indicate which s5m87xx "variant" is used
|
||||
*/
|
||||
struct sec_pmic_dev {
|
||||
struct device *dev;
|
||||
struct regmap *regmap;
|
||||
struct i2c_client *i2c;
|
||||
struct i2c_client *rtc;
|
||||
struct mutex iolock;
|
||||
struct mutex irqlock;
|
||||
|
||||
int device_type;
|
||||
int irq_base;
|
||||
int irq;
|
||||
struct regmap_irq_chip_data *irq_data;
|
||||
|
||||
int ono;
|
||||
u8 irq_masks_cur[NUM_IRQ_REGS];
|
||||
u8 irq_masks_cache[NUM_IRQ_REGS];
|
||||
int type;
|
||||
bool wakeup;
|
||||
};
|
||||
|
||||
int sec_irq_init(struct sec_pmic_dev *sec_pmic);
|
||||
void sec_irq_exit(struct sec_pmic_dev *sec_pmic);
|
||||
int sec_irq_resume(struct sec_pmic_dev *sec_pmic);
|
||||
|
||||
extern int sec_reg_read(struct sec_pmic_dev *sec_pmic, u8 reg, void *dest);
|
||||
extern int sec_bulk_read(struct sec_pmic_dev *sec_pmic, u8 reg, int count, u8 *buf);
|
||||
extern int sec_reg_write(struct sec_pmic_dev *sec_pmic, u8 reg, u8 value);
|
||||
extern int sec_bulk_write(struct sec_pmic_dev *sec_pmic, u8 reg, int count, u8 *buf);
|
||||
extern int sec_reg_update(struct sec_pmic_dev *sec_pmic, u8 reg, u8 val, u8 mask);
|
||||
|
||||
struct sec_platform_data {
|
||||
struct sec_regulator_data *regulators;
|
||||
struct sec_opmode_data *opmode;
|
||||
int device_type;
|
||||
int num_regulators;
|
||||
|
||||
int irq_base;
|
||||
int (*cfg_pmic_irq)(void);
|
||||
|
||||
int ono;
|
||||
bool wakeup;
|
||||
bool buck_voltage_lock;
|
||||
|
||||
int buck_gpios[3];
|
||||
int buck_ds[3];
|
||||
int buck2_voltage[8];
|
||||
bool buck2_gpiodvs;
|
||||
int buck3_voltage[8];
|
||||
bool buck3_gpiodvs;
|
||||
int buck4_voltage[8];
|
||||
bool buck4_gpiodvs;
|
||||
|
||||
int buck_set1;
|
||||
int buck_set2;
|
||||
int buck_set3;
|
||||
int buck2_enable;
|
||||
int buck3_enable;
|
||||
int buck4_enable;
|
||||
int buck_default_idx;
|
||||
int buck2_default_idx;
|
||||
int buck3_default_idx;
|
||||
int buck4_default_idx;
|
||||
|
||||
int buck_ramp_delay;
|
||||
|
||||
int buck2_ramp_delay;
|
||||
int buck34_ramp_delay;
|
||||
int buck5_ramp_delay;
|
||||
int buck16_ramp_delay;
|
||||
int buck7810_ramp_delay;
|
||||
int buck9_ramp_delay;
|
||||
|
||||
bool buck2_ramp_enable;
|
||||
bool buck3_ramp_enable;
|
||||
bool buck4_ramp_enable;
|
||||
bool buck6_ramp_enable;
|
||||
|
||||
int buck2_init;
|
||||
int buck3_init;
|
||||
int buck4_init;
|
||||
};
|
||||
|
||||
/**
|
||||
* sec_regulator_data - regulator data
|
||||
* @id: regulator id
|
||||
* @initdata: regulator init data (contraints, supplies, ...)
|
||||
*/
|
||||
struct sec_regulator_data {
|
||||
int id;
|
||||
struct regulator_init_data *initdata;
|
||||
};
|
||||
|
||||
/*
|
||||
* sec_opmode_data - regulator operation mode data
|
||||
* @id: regulator id
|
||||
* @mode: regulator operation mode
|
||||
*/
|
||||
struct sec_opmode_data {
|
||||
int id;
|
||||
int mode;
|
||||
};
|
||||
|
||||
/*
|
||||
* samsung regulator operation mode
|
||||
* SEC_OPMODE_OFF Regulator always OFF
|
||||
* SEC_OPMODE_ON Regulator always ON
|
||||
* SEC_OPMODE_LOWPOWER Regulator is on in low-power mode
|
||||
* SEC_OPMODE_SUSPEND Regulator is changed by PWREN pin
|
||||
* If PWREN is high, regulator is on
|
||||
* If PWREN is low, regulator is off
|
||||
*/
|
||||
|
||||
enum sec_opmode {
|
||||
SEC_OPMODE_OFF,
|
||||
SEC_OPMODE_ON,
|
||||
SEC_OPMODE_LOWPOWER,
|
||||
SEC_OPMODE_SUSPEND,
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_SEC_CORE_H */
|
152
include/linux/mfd/samsung/irq.h
Normal file
152
include/linux/mfd/samsung/irq.h
Normal file
@@ -0,0 +1,152 @@
|
||||
/* irq.h
|
||||
*
|
||||
* Copyright (c) 2012 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_SEC_IRQ_H
|
||||
#define __LINUX_MFD_SEC_IRQ_H
|
||||
|
||||
enum s2mps11_irq {
|
||||
S2MPS11_IRQ_PWRONF,
|
||||
S2MPS11_IRQ_PWRONR,
|
||||
S2MPS11_IRQ_JIGONBF,
|
||||
S2MPS11_IRQ_JIGONBR,
|
||||
S2MPS11_IRQ_ACOKBF,
|
||||
S2MPS11_IRQ_ACOKBR,
|
||||
S2MPS11_IRQ_PWRON1S,
|
||||
S2MPS11_IRQ_MRB,
|
||||
|
||||
S2MPS11_IRQ_RTC60S,
|
||||
S2MPS11_IRQ_RTCA1,
|
||||
S2MPS11_IRQ_RTCA2,
|
||||
S2MPS11_IRQ_SMPL,
|
||||
S2MPS11_IRQ_RTC1S,
|
||||
S2MPS11_IRQ_WTSR,
|
||||
|
||||
S2MPS11_IRQ_INT120C,
|
||||
S2MPS11_IRQ_INT140C,
|
||||
|
||||
S2MPS11_IRQ_NR,
|
||||
};
|
||||
|
||||
#define S2MPS11_IRQ_PWRONF_MASK (1 << 0)
|
||||
#define S2MPS11_IRQ_PWRONR_MASK (1 << 1)
|
||||
#define S2MPS11_IRQ_JIGONBF_MASK (1 << 2)
|
||||
#define S2MPS11_IRQ_JIGONBR_MASK (1 << 3)
|
||||
#define S2MPS11_IRQ_ACOKBF_MASK (1 << 4)
|
||||
#define S2MPS11_IRQ_ACOKBR_MASK (1 << 5)
|
||||
#define S2MPS11_IRQ_PWRON1S_MASK (1 << 6)
|
||||
#define S2MPS11_IRQ_MRB_MASK (1 << 7)
|
||||
|
||||
#define S2MPS11_IRQ_RTC60S_MASK (1 << 0)
|
||||
#define S2MPS11_IRQ_RTCA1_MASK (1 << 1)
|
||||
#define S2MPS11_IRQ_RTCA2_MASK (1 << 2)
|
||||
#define S2MPS11_IRQ_SMPL_MASK (1 << 3)
|
||||
#define S2MPS11_IRQ_RTC1S_MASK (1 << 4)
|
||||
#define S2MPS11_IRQ_WTSR_MASK (1 << 5)
|
||||
|
||||
#define S2MPS11_IRQ_INT120C_MASK (1 << 0)
|
||||
#define S2MPS11_IRQ_INT140C_MASK (1 << 1)
|
||||
|
||||
enum s5m8767_irq {
|
||||
S5M8767_IRQ_PWRR,
|
||||
S5M8767_IRQ_PWRF,
|
||||
S5M8767_IRQ_PWR1S,
|
||||
S5M8767_IRQ_JIGR,
|
||||
S5M8767_IRQ_JIGF,
|
||||
S5M8767_IRQ_LOWBAT2,
|
||||
S5M8767_IRQ_LOWBAT1,
|
||||
|
||||
S5M8767_IRQ_MRB,
|
||||
S5M8767_IRQ_DVSOK2,
|
||||
S5M8767_IRQ_DVSOK3,
|
||||
S5M8767_IRQ_DVSOK4,
|
||||
|
||||
S5M8767_IRQ_RTC60S,
|
||||
S5M8767_IRQ_RTCA1,
|
||||
S5M8767_IRQ_RTCA2,
|
||||
S5M8767_IRQ_SMPL,
|
||||
S5M8767_IRQ_RTC1S,
|
||||
S5M8767_IRQ_WTSR,
|
||||
|
||||
S5M8767_IRQ_NR,
|
||||
};
|
||||
|
||||
#define S5M8767_IRQ_PWRR_MASK (1 << 0)
|
||||
#define S5M8767_IRQ_PWRF_MASK (1 << 1)
|
||||
#define S5M8767_IRQ_PWR1S_MASK (1 << 3)
|
||||
#define S5M8767_IRQ_JIGR_MASK (1 << 4)
|
||||
#define S5M8767_IRQ_JIGF_MASK (1 << 5)
|
||||
#define S5M8767_IRQ_LOWBAT2_MASK (1 << 6)
|
||||
#define S5M8767_IRQ_LOWBAT1_MASK (1 << 7)
|
||||
|
||||
#define S5M8767_IRQ_MRB_MASK (1 << 2)
|
||||
#define S5M8767_IRQ_DVSOK2_MASK (1 << 3)
|
||||
#define S5M8767_IRQ_DVSOK3_MASK (1 << 4)
|
||||
#define S5M8767_IRQ_DVSOK4_MASK (1 << 5)
|
||||
|
||||
#define S5M8767_IRQ_RTC60S_MASK (1 << 0)
|
||||
#define S5M8767_IRQ_RTCA1_MASK (1 << 1)
|
||||
#define S5M8767_IRQ_RTCA2_MASK (1 << 2)
|
||||
#define S5M8767_IRQ_SMPL_MASK (1 << 3)
|
||||
#define S5M8767_IRQ_RTC1S_MASK (1 << 4)
|
||||
#define S5M8767_IRQ_WTSR_MASK (1 << 5)
|
||||
|
||||
enum s5m8763_irq {
|
||||
S5M8763_IRQ_DCINF,
|
||||
S5M8763_IRQ_DCINR,
|
||||
S5M8763_IRQ_JIGF,
|
||||
S5M8763_IRQ_JIGR,
|
||||
S5M8763_IRQ_PWRONF,
|
||||
S5M8763_IRQ_PWRONR,
|
||||
|
||||
S5M8763_IRQ_WTSREVNT,
|
||||
S5M8763_IRQ_SMPLEVNT,
|
||||
S5M8763_IRQ_ALARM1,
|
||||
S5M8763_IRQ_ALARM0,
|
||||
|
||||
S5M8763_IRQ_ONKEY1S,
|
||||
S5M8763_IRQ_TOPOFFR,
|
||||
S5M8763_IRQ_DCINOVPR,
|
||||
S5M8763_IRQ_CHGRSTF,
|
||||
S5M8763_IRQ_DONER,
|
||||
S5M8763_IRQ_CHGFAULT,
|
||||
|
||||
S5M8763_IRQ_LOBAT1,
|
||||
S5M8763_IRQ_LOBAT2,
|
||||
|
||||
S5M8763_IRQ_NR,
|
||||
};
|
||||
|
||||
#define S5M8763_IRQ_DCINF_MASK (1 << 2)
|
||||
#define S5M8763_IRQ_DCINR_MASK (1 << 3)
|
||||
#define S5M8763_IRQ_JIGF_MASK (1 << 4)
|
||||
#define S5M8763_IRQ_JIGR_MASK (1 << 5)
|
||||
#define S5M8763_IRQ_PWRONF_MASK (1 << 6)
|
||||
#define S5M8763_IRQ_PWRONR_MASK (1 << 7)
|
||||
|
||||
#define S5M8763_IRQ_WTSREVNT_MASK (1 << 0)
|
||||
#define S5M8763_IRQ_SMPLEVNT_MASK (1 << 1)
|
||||
#define S5M8763_IRQ_ALARM1_MASK (1 << 2)
|
||||
#define S5M8763_IRQ_ALARM0_MASK (1 << 3)
|
||||
|
||||
#define S5M8763_IRQ_ONKEY1S_MASK (1 << 0)
|
||||
#define S5M8763_IRQ_TOPOFFR_MASK (1 << 2)
|
||||
#define S5M8763_IRQ_DCINOVPR_MASK (1 << 3)
|
||||
#define S5M8763_IRQ_CHGRSTF_MASK (1 << 4)
|
||||
#define S5M8763_IRQ_DONER_MASK (1 << 5)
|
||||
#define S5M8763_IRQ_CHGFAULT_MASK (1 << 7)
|
||||
|
||||
#define S5M8763_IRQ_LOBAT1_MASK (1 << 0)
|
||||
#define S5M8763_IRQ_LOBAT2_MASK (1 << 1)
|
||||
|
||||
#define S5M8763_ENRAMP (1 << 4)
|
||||
|
||||
#endif /* __LINUX_MFD_SEC_IRQ_H */
|
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
* s5m-rtc.h
|
||||
/* rtc.h
|
||||
*
|
||||
* Copyright (c) 2011 Samsung Electronics Co., Ltd
|
||||
* http://www.samsung.com
|
||||
@@ -11,39 +10,39 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_S5M_RTC_H
|
||||
#define __LINUX_MFD_S5M_RTC_H
|
||||
#ifndef __LINUX_MFD_SEC_RTC_H
|
||||
#define __LINUX_MFD_SEC_RTC_H
|
||||
|
||||
enum s5m87xx_rtc_reg {
|
||||
S5M87XX_RTC_SEC,
|
||||
S5M87XX_RTC_MIN,
|
||||
S5M87XX_RTC_HOUR,
|
||||
S5M87XX_RTC_WEEKDAY,
|
||||
S5M87XX_RTC_DATE,
|
||||
S5M87XX_RTC_MONTH,
|
||||
S5M87XX_RTC_YEAR1,
|
||||
S5M87XX_RTC_YEAR2,
|
||||
S5M87XX_ALARM0_SEC,
|
||||
S5M87XX_ALARM0_MIN,
|
||||
S5M87XX_ALARM0_HOUR,
|
||||
S5M87XX_ALARM0_WEEKDAY,
|
||||
S5M87XX_ALARM0_DATE,
|
||||
S5M87XX_ALARM0_MONTH,
|
||||
S5M87XX_ALARM0_YEAR1,
|
||||
S5M87XX_ALARM0_YEAR2,
|
||||
S5M87XX_ALARM1_SEC,
|
||||
S5M87XX_ALARM1_MIN,
|
||||
S5M87XX_ALARM1_HOUR,
|
||||
S5M87XX_ALARM1_WEEKDAY,
|
||||
S5M87XX_ALARM1_DATE,
|
||||
S5M87XX_ALARM1_MONTH,
|
||||
S5M87XX_ALARM1_YEAR1,
|
||||
S5M87XX_ALARM1_YEAR2,
|
||||
S5M87XX_ALARM0_CONF,
|
||||
S5M87XX_ALARM1_CONF,
|
||||
S5M87XX_RTC_STATUS,
|
||||
S5M87XX_WTSR_SMPL_CNTL,
|
||||
S5M87XX_RTC_UDR_CON,
|
||||
enum sec_rtc_reg {
|
||||
SEC_RTC_SEC,
|
||||
SEC_RTC_MIN,
|
||||
SEC_RTC_HOUR,
|
||||
SEC_RTC_WEEKDAY,
|
||||
SEC_RTC_DATE,
|
||||
SEC_RTC_MONTH,
|
||||
SEC_RTC_YEAR1,
|
||||
SEC_RTC_YEAR2,
|
||||
SEC_ALARM0_SEC,
|
||||
SEC_ALARM0_MIN,
|
||||
SEC_ALARM0_HOUR,
|
||||
SEC_ALARM0_WEEKDAY,
|
||||
SEC_ALARM0_DATE,
|
||||
SEC_ALARM0_MONTH,
|
||||
SEC_ALARM0_YEAR1,
|
||||
SEC_ALARM0_YEAR2,
|
||||
SEC_ALARM1_SEC,
|
||||
SEC_ALARM1_MIN,
|
||||
SEC_ALARM1_HOUR,
|
||||
SEC_ALARM1_WEEKDAY,
|
||||
SEC_ALARM1_DATE,
|
||||
SEC_ALARM1_MONTH,
|
||||
SEC_ALARM1_YEAR1,
|
||||
SEC_ALARM1_YEAR2,
|
||||
SEC_ALARM0_CONF,
|
||||
SEC_ALARM1_CONF,
|
||||
SEC_RTC_STATUS,
|
||||
SEC_WTSR_SMPL_CNTL,
|
||||
SEC_RTC_UDR_CON,
|
||||
};
|
||||
|
||||
#define RTC_I2C_ADDR (0x0C >> 1)
|
||||
@@ -81,4 +80,4 @@ enum {
|
||||
RTC_YEAR2,
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_S5M_RTC_H */
|
||||
#endif /* __LINUX_MFD_SEC_RTC_H */
|
196
include/linux/mfd/samsung/s2mps11.h
Normal file
196
include/linux/mfd/samsung/s2mps11.h
Normal file
@@ -0,0 +1,196 @@
|
||||
/*
|
||||
* s2mps11.h
|
||||
*
|
||||
* Copyright (c) 2012 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_S2MPS11_H
|
||||
#define __LINUX_MFD_S2MPS11_H
|
||||
|
||||
/* S2MPS11 registers */
|
||||
enum s2mps11_reg {
|
||||
S2MPS11_REG_ID,
|
||||
S2MPS11_REG_INT1,
|
||||
S2MPS11_REG_INT2,
|
||||
S2MPS11_REG_INT3,
|
||||
S2MPS11_REG_INT1M,
|
||||
S2MPS11_REG_INT2M,
|
||||
S2MPS11_REG_INT3M,
|
||||
S2MPS11_REG_ST1,
|
||||
S2MPS11_REG_ST2,
|
||||
S2MPS11_REG_OFFSRC,
|
||||
S2MPS11_REG_PWRONSRC,
|
||||
S2MPS11_REG_RTC_CTRL,
|
||||
S2MPS11_REG_CTRL1,
|
||||
S2MPS11_REG_ETC_TEST,
|
||||
S2MPS11_REG_RSVD3,
|
||||
S2MPS11_REG_BU_CHG,
|
||||
S2MPS11_REG_RAMP,
|
||||
S2MPS11_REG_RAMP_BUCK,
|
||||
S2MPS11_REG_LDO1_8,
|
||||
S2MPS11_REG_LDO9_16,
|
||||
S2MPS11_REG_LDO17_24,
|
||||
S2MPS11_REG_LDO25_32,
|
||||
S2MPS11_REG_LDO33_38,
|
||||
S2MPS11_REG_LDO1_8_1,
|
||||
S2MPS11_REG_LDO9_16_1,
|
||||
S2MPS11_REG_LDO17_24_1,
|
||||
S2MPS11_REG_LDO25_32_1,
|
||||
S2MPS11_REG_LDO33_38_1,
|
||||
S2MPS11_REG_OTP_ADRL,
|
||||
S2MPS11_REG_OTP_ADRH,
|
||||
S2MPS11_REG_OTP_DATA,
|
||||
S2MPS11_REG_MON1SEL,
|
||||
S2MPS11_REG_MON2SEL,
|
||||
S2MPS11_REG_LEE,
|
||||
S2MPS11_REG_RSVD_NO,
|
||||
S2MPS11_REG_UVLO,
|
||||
S2MPS11_REG_LEE_NO,
|
||||
S2MPS11_REG_B1CTRL1,
|
||||
S2MPS11_REG_B1CTRL2,
|
||||
S2MPS11_REG_B2CTRL1,
|
||||
S2MPS11_REG_B2CTRL2,
|
||||
S2MPS11_REG_B3CTRL1,
|
||||
S2MPS11_REG_B3CTRL2,
|
||||
S2MPS11_REG_B4CTRL1,
|
||||
S2MPS11_REG_B4CTRL2,
|
||||
S2MPS11_REG_B5CTRL1,
|
||||
S2MPS11_REG_BUCK5_SW,
|
||||
S2MPS11_REG_B5CTRL2,
|
||||
S2MPS11_REG_B5CTRL3,
|
||||
S2MPS11_REG_B5CTRL4,
|
||||
S2MPS11_REG_B5CTRL5,
|
||||
S2MPS11_REG_B6CTRL1,
|
||||
S2MPS11_REG_B6CTRL2,
|
||||
S2MPS11_REG_B7CTRL1,
|
||||
S2MPS11_REG_B7CTRL2,
|
||||
S2MPS11_REG_B8CTRL1,
|
||||
S2MPS11_REG_B8CTRL2,
|
||||
S2MPS11_REG_B9CTRL1,
|
||||
S2MPS11_REG_B9CTRL2,
|
||||
S2MPS11_REG_B10CTRL1,
|
||||
S2MPS11_REG_B10CTRL2,
|
||||
S2MPS11_REG_L1CTRL,
|
||||
S2MPS11_REG_L2CTRL,
|
||||
S2MPS11_REG_L3CTRL,
|
||||
S2MPS11_REG_L4CTRL,
|
||||
S2MPS11_REG_L5CTRL,
|
||||
S2MPS11_REG_L6CTRL,
|
||||
S2MPS11_REG_L7CTRL,
|
||||
S2MPS11_REG_L8CTRL,
|
||||
S2MPS11_REG_L9CTRL,
|
||||
S2MPS11_REG_L10CTRL,
|
||||
S2MPS11_REG_L11CTRL,
|
||||
S2MPS11_REG_L12CTRL,
|
||||
S2MPS11_REG_L13CTRL,
|
||||
S2MPS11_REG_L14CTRL,
|
||||
S2MPS11_REG_L15CTRL,
|
||||
S2MPS11_REG_L16CTRL,
|
||||
S2MPS11_REG_L17CTRL,
|
||||
S2MPS11_REG_L18CTRL,
|
||||
S2MPS11_REG_L19CTRL,
|
||||
S2MPS11_REG_L20CTRL,
|
||||
S2MPS11_REG_L21CTRL,
|
||||
S2MPS11_REG_L22CTRL,
|
||||
S2MPS11_REG_L23CTRL,
|
||||
S2MPS11_REG_L24CTRL,
|
||||
S2MPS11_REG_L25CTRL,
|
||||
S2MPS11_REG_L26CTRL,
|
||||
S2MPS11_REG_L27CTRL,
|
||||
S2MPS11_REG_L28CTRL,
|
||||
S2MPS11_REG_L29CTRL,
|
||||
S2MPS11_REG_L30CTRL,
|
||||
S2MPS11_REG_L31CTRL,
|
||||
S2MPS11_REG_L32CTRL,
|
||||
S2MPS11_REG_L33CTRL,
|
||||
S2MPS11_REG_L34CTRL,
|
||||
S2MPS11_REG_L35CTRL,
|
||||
S2MPS11_REG_L36CTRL,
|
||||
S2MPS11_REG_L37CTRL,
|
||||
S2MPS11_REG_L38CTRL,
|
||||
};
|
||||
|
||||
/* S2MPS11 regulator ids */
|
||||
enum s2mps11_regulators {
|
||||
S2MPS11_LDO1,
|
||||
S2MPS11_LDO2,
|
||||
S2MPS11_LDO3,
|
||||
S2MPS11_LDO4,
|
||||
S2MPS11_LDO5,
|
||||
S2MPS11_LDO6,
|
||||
S2MPS11_LDO7,
|
||||
S2MPS11_LDO8,
|
||||
S2MPS11_LDO9,
|
||||
S2MPS11_LDO10,
|
||||
S2MPS11_LDO11,
|
||||
S2MPS11_LDO12,
|
||||
S2MPS11_LDO13,
|
||||
S2MPS11_LDO14,
|
||||
S2MPS11_LDO15,
|
||||
S2MPS11_LDO16,
|
||||
S2MPS11_LDO17,
|
||||
S2MPS11_LDO18,
|
||||
S2MPS11_LDO19,
|
||||
S2MPS11_LDO20,
|
||||
S2MPS11_LDO21,
|
||||
S2MPS11_LDO22,
|
||||
S2MPS11_LDO23,
|
||||
S2MPS11_LDO24,
|
||||
S2MPS11_LDO25,
|
||||
S2MPS11_LDO26,
|
||||
S2MPS11_LDO27,
|
||||
S2MPS11_LDO28,
|
||||
S2MPS11_LDO29,
|
||||
S2MPS11_LDO30,
|
||||
S2MPS11_LDO31,
|
||||
S2MPS11_LDO32,
|
||||
S2MPS11_LDO33,
|
||||
S2MPS11_LDO34,
|
||||
S2MPS11_LDO35,
|
||||
S2MPS11_LDO36,
|
||||
S2MPS11_LDO37,
|
||||
S2MPS11_LDO38,
|
||||
S2MPS11_BUCK1,
|
||||
S2MPS11_BUCK2,
|
||||
S2MPS11_BUCK3,
|
||||
S2MPS11_BUCK4,
|
||||
S2MPS11_BUCK5,
|
||||
S2MPS11_BUCK6,
|
||||
S2MPS11_BUCK7,
|
||||
S2MPS11_BUCK8,
|
||||
S2MPS11_BUCK9,
|
||||
S2MPS11_BUCK10,
|
||||
S2MPS11_AP_EN32KHZ,
|
||||
S2MPS11_CP_EN32KHZ,
|
||||
S2MPS11_BT_EN32KHZ,
|
||||
|
||||
S2MPS11_REG_MAX,
|
||||
};
|
||||
|
||||
#define S2MPS11_BUCK_MIN1 600000
|
||||
#define S2MPS11_BUCK_MIN2 750000
|
||||
#define S2MPS11_BUCK_MIN3 3000000
|
||||
#define S2MPS11_LDO_MIN 800000
|
||||
#define S2MPS11_BUCK_STEP1 6250
|
||||
#define S2MPS11_BUCK_STEP2 12500
|
||||
#define S2MPS11_BUCK_STEP3 25000
|
||||
#define S2MPS11_LDO_STEP1 50000
|
||||
#define S2MPS11_LDO_STEP2 25000
|
||||
#define S2MPS11_LDO_VSEL_MASK 0x3F
|
||||
#define S2MPS11_BUCK_VSEL_MASK 0xFF
|
||||
#define S2MPS11_ENABLE_MASK (0x03 << S2MPS11_ENABLE_SHIFT)
|
||||
#define S2MPS11_ENABLE_SHIFT 0x06
|
||||
#define S2MPS11_LDO_N_VOLTAGES (S2MPS11_LDO_VSEL_MASK + 1)
|
||||
#define S2MPS11_BUCK_N_VOLTAGES (S2MPS11_BUCK_VSEL_MASK + 1)
|
||||
|
||||
#define S2MPS11_PMIC_EN_SHIFT 6
|
||||
#define S2MPS11_REGULATOR_MAX (S2MPS11_REG_MAX - 3)
|
||||
|
||||
#endif /* __LINUX_MFD_S2MPS11_H */
|
96
include/linux/mfd/samsung/s5m8763.h
Normal file
96
include/linux/mfd/samsung/s5m8763.h
Normal file
@@ -0,0 +1,96 @@
|
||||
/* s5m8763.h
|
||||
*
|
||||
* Copyright (c) 2011 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_S5M8763_H
|
||||
#define __LINUX_MFD_S5M8763_H
|
||||
|
||||
/* S5M8763 registers */
|
||||
enum s5m8763_reg {
|
||||
S5M8763_REG_IRQ1,
|
||||
S5M8763_REG_IRQ2,
|
||||
S5M8763_REG_IRQ3,
|
||||
S5M8763_REG_IRQ4,
|
||||
S5M8763_REG_IRQM1,
|
||||
S5M8763_REG_IRQM2,
|
||||
S5M8763_REG_IRQM3,
|
||||
S5M8763_REG_IRQM4,
|
||||
S5M8763_REG_STATUS1,
|
||||
S5M8763_REG_STATUS2,
|
||||
S5M8763_REG_STATUSM1,
|
||||
S5M8763_REG_STATUSM2,
|
||||
S5M8763_REG_CHGR1,
|
||||
S5M8763_REG_CHGR2,
|
||||
S5M8763_REG_LDO_ACTIVE_DISCHARGE1,
|
||||
S5M8763_REG_LDO_ACTIVE_DISCHARGE2,
|
||||
S5M8763_REG_BUCK_ACTIVE_DISCHARGE3,
|
||||
S5M8763_REG_ONOFF1,
|
||||
S5M8763_REG_ONOFF2,
|
||||
S5M8763_REG_ONOFF3,
|
||||
S5M8763_REG_ONOFF4,
|
||||
S5M8763_REG_BUCK1_VOLTAGE1,
|
||||
S5M8763_REG_BUCK1_VOLTAGE2,
|
||||
S5M8763_REG_BUCK1_VOLTAGE3,
|
||||
S5M8763_REG_BUCK1_VOLTAGE4,
|
||||
S5M8763_REG_BUCK2_VOLTAGE1,
|
||||
S5M8763_REG_BUCK2_VOLTAGE2,
|
||||
S5M8763_REG_BUCK3,
|
||||
S5M8763_REG_BUCK4,
|
||||
S5M8763_REG_LDO1_LDO2,
|
||||
S5M8763_REG_LDO3,
|
||||
S5M8763_REG_LDO4,
|
||||
S5M8763_REG_LDO5,
|
||||
S5M8763_REG_LDO6,
|
||||
S5M8763_REG_LDO7,
|
||||
S5M8763_REG_LDO7_LDO8,
|
||||
S5M8763_REG_LDO9_LDO10,
|
||||
S5M8763_REG_LDO11,
|
||||
S5M8763_REG_LDO12,
|
||||
S5M8763_REG_LDO13,
|
||||
S5M8763_REG_LDO14,
|
||||
S5M8763_REG_LDO15,
|
||||
S5M8763_REG_LDO16,
|
||||
S5M8763_REG_BKCHR,
|
||||
S5M8763_REG_LBCNFG1,
|
||||
S5M8763_REG_LBCNFG2,
|
||||
};
|
||||
|
||||
/* S5M8763 regulator ids */
|
||||
enum s5m8763_regulators {
|
||||
S5M8763_LDO1,
|
||||
S5M8763_LDO2,
|
||||
S5M8763_LDO3,
|
||||
S5M8763_LDO4,
|
||||
S5M8763_LDO5,
|
||||
S5M8763_LDO6,
|
||||
S5M8763_LDO7,
|
||||
S5M8763_LDO8,
|
||||
S5M8763_LDO9,
|
||||
S5M8763_LDO10,
|
||||
S5M8763_LDO11,
|
||||
S5M8763_LDO12,
|
||||
S5M8763_LDO13,
|
||||
S5M8763_LDO14,
|
||||
S5M8763_LDO15,
|
||||
S5M8763_LDO16,
|
||||
S5M8763_BUCK1,
|
||||
S5M8763_BUCK2,
|
||||
S5M8763_BUCK3,
|
||||
S5M8763_BUCK4,
|
||||
S5M8763_AP_EN32KHZ,
|
||||
S5M8763_CP_EN32KHZ,
|
||||
S5M8763_ENCHGVI,
|
||||
S5M8763_ESAFEUSB1,
|
||||
S5M8763_ESAFEUSB2,
|
||||
};
|
||||
|
||||
#define S5M8763_ENRAMP (1 << 4)
|
||||
#endif /* __LINUX_MFD_S5M8763_H */
|
188
include/linux/mfd/samsung/s5m8767.h
Normal file
188
include/linux/mfd/samsung/s5m8767.h
Normal file
@@ -0,0 +1,188 @@
|
||||
/* s5m8767.h
|
||||
*
|
||||
* Copyright (c) 2011 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_S5M8767_H
|
||||
#define __LINUX_MFD_S5M8767_H
|
||||
|
||||
/* S5M8767 registers */
|
||||
enum s5m8767_reg {
|
||||
S5M8767_REG_ID,
|
||||
S5M8767_REG_INT1,
|
||||
S5M8767_REG_INT2,
|
||||
S5M8767_REG_INT3,
|
||||
S5M8767_REG_INT1M,
|
||||
S5M8767_REG_INT2M,
|
||||
S5M8767_REG_INT3M,
|
||||
S5M8767_REG_STATUS1,
|
||||
S5M8767_REG_STATUS2,
|
||||
S5M8767_REG_STATUS3,
|
||||
S5M8767_REG_CTRL1,
|
||||
S5M8767_REG_CTRL2,
|
||||
S5M8767_REG_LOWBAT1,
|
||||
S5M8767_REG_LOWBAT2,
|
||||
S5M8767_REG_BUCHG,
|
||||
S5M8767_REG_DVSRAMP,
|
||||
S5M8767_REG_DVSTIMER2 = 0x10,
|
||||
S5M8767_REG_DVSTIMER3,
|
||||
S5M8767_REG_DVSTIMER4,
|
||||
S5M8767_REG_LDO1,
|
||||
S5M8767_REG_LDO2,
|
||||
S5M8767_REG_LDO3,
|
||||
S5M8767_REG_LDO4,
|
||||
S5M8767_REG_LDO5,
|
||||
S5M8767_REG_LDO6,
|
||||
S5M8767_REG_LDO7,
|
||||
S5M8767_REG_LDO8,
|
||||
S5M8767_REG_LDO9,
|
||||
S5M8767_REG_LDO10,
|
||||
S5M8767_REG_LDO11,
|
||||
S5M8767_REG_LDO12,
|
||||
S5M8767_REG_LDO13,
|
||||
S5M8767_REG_LDO14 = 0x20,
|
||||
S5M8767_REG_LDO15,
|
||||
S5M8767_REG_LDO16,
|
||||
S5M8767_REG_LDO17,
|
||||
S5M8767_REG_LDO18,
|
||||
S5M8767_REG_LDO19,
|
||||
S5M8767_REG_LDO20,
|
||||
S5M8767_REG_LDO21,
|
||||
S5M8767_REG_LDO22,
|
||||
S5M8767_REG_LDO23,
|
||||
S5M8767_REG_LDO24,
|
||||
S5M8767_REG_LDO25,
|
||||
S5M8767_REG_LDO26,
|
||||
S5M8767_REG_LDO27,
|
||||
S5M8767_REG_LDO28,
|
||||
S5M8767_REG_UVLO = 0x31,
|
||||
S5M8767_REG_BUCK1CTRL1,
|
||||
S5M8767_REG_BUCK1CTRL2,
|
||||
S5M8767_REG_BUCK2CTRL,
|
||||
S5M8767_REG_BUCK2DVS1,
|
||||
S5M8767_REG_BUCK2DVS2,
|
||||
S5M8767_REG_BUCK2DVS3,
|
||||
S5M8767_REG_BUCK2DVS4,
|
||||
S5M8767_REG_BUCK2DVS5,
|
||||
S5M8767_REG_BUCK2DVS6,
|
||||
S5M8767_REG_BUCK2DVS7,
|
||||
S5M8767_REG_BUCK2DVS8,
|
||||
S5M8767_REG_BUCK3CTRL,
|
||||
S5M8767_REG_BUCK3DVS1,
|
||||
S5M8767_REG_BUCK3DVS2,
|
||||
S5M8767_REG_BUCK3DVS3,
|
||||
S5M8767_REG_BUCK3DVS4,
|
||||
S5M8767_REG_BUCK3DVS5,
|
||||
S5M8767_REG_BUCK3DVS6,
|
||||
S5M8767_REG_BUCK3DVS7,
|
||||
S5M8767_REG_BUCK3DVS8,
|
||||
S5M8767_REG_BUCK4CTRL,
|
||||
S5M8767_REG_BUCK4DVS1,
|
||||
S5M8767_REG_BUCK4DVS2,
|
||||
S5M8767_REG_BUCK4DVS3,
|
||||
S5M8767_REG_BUCK4DVS4,
|
||||
S5M8767_REG_BUCK4DVS5,
|
||||
S5M8767_REG_BUCK4DVS6,
|
||||
S5M8767_REG_BUCK4DVS7,
|
||||
S5M8767_REG_BUCK4DVS8,
|
||||
S5M8767_REG_BUCK5CTRL1,
|
||||
S5M8767_REG_BUCK5CTRL2,
|
||||
S5M8767_REG_BUCK5CTRL3,
|
||||
S5M8767_REG_BUCK5CTRL4,
|
||||
S5M8767_REG_BUCK5CTRL5,
|
||||
S5M8767_REG_BUCK6CTRL1,
|
||||
S5M8767_REG_BUCK6CTRL2,
|
||||
S5M8767_REG_BUCK7CTRL1,
|
||||
S5M8767_REG_BUCK7CTRL2,
|
||||
S5M8767_REG_BUCK8CTRL1,
|
||||
S5M8767_REG_BUCK8CTRL2,
|
||||
S5M8767_REG_BUCK9CTRL1,
|
||||
S5M8767_REG_BUCK9CTRL2,
|
||||
S5M8767_REG_LDO1CTRL,
|
||||
S5M8767_REG_LDO2_1CTRL,
|
||||
S5M8767_REG_LDO2_2CTRL,
|
||||
S5M8767_REG_LDO2_3CTRL,
|
||||
S5M8767_REG_LDO2_4CTRL,
|
||||
S5M8767_REG_LDO3CTRL,
|
||||
S5M8767_REG_LDO4CTRL,
|
||||
S5M8767_REG_LDO5CTRL,
|
||||
S5M8767_REG_LDO6CTRL,
|
||||
S5M8767_REG_LDO7CTRL,
|
||||
S5M8767_REG_LDO8CTRL,
|
||||
S5M8767_REG_LDO9CTRL,
|
||||
S5M8767_REG_LDO10CTRL,
|
||||
S5M8767_REG_LDO11CTRL,
|
||||
S5M8767_REG_LDO12CTRL,
|
||||
S5M8767_REG_LDO13CTRL,
|
||||
S5M8767_REG_LDO14CTRL,
|
||||
S5M8767_REG_LDO15CTRL,
|
||||
S5M8767_REG_LDO16CTRL,
|
||||
S5M8767_REG_LDO17CTRL,
|
||||
S5M8767_REG_LDO18CTRL,
|
||||
S5M8767_REG_LDO19CTRL,
|
||||
S5M8767_REG_LDO20CTRL,
|
||||
S5M8767_REG_LDO21CTRL,
|
||||
S5M8767_REG_LDO22CTRL,
|
||||
S5M8767_REG_LDO23CTRL,
|
||||
S5M8767_REG_LDO24CTRL,
|
||||
S5M8767_REG_LDO25CTRL,
|
||||
S5M8767_REG_LDO26CTRL,
|
||||
S5M8767_REG_LDO27CTRL,
|
||||
S5M8767_REG_LDO28CTRL,
|
||||
};
|
||||
|
||||
/* S5M8767 regulator ids */
|
||||
enum s5m8767_regulators {
|
||||
S5M8767_LDO1,
|
||||
S5M8767_LDO2,
|
||||
S5M8767_LDO3,
|
||||
S5M8767_LDO4,
|
||||
S5M8767_LDO5,
|
||||
S5M8767_LDO6,
|
||||
S5M8767_LDO7,
|
||||
S5M8767_LDO8,
|
||||
S5M8767_LDO9,
|
||||
S5M8767_LDO10,
|
||||
S5M8767_LDO11,
|
||||
S5M8767_LDO12,
|
||||
S5M8767_LDO13,
|
||||
S5M8767_LDO14,
|
||||
S5M8767_LDO15,
|
||||
S5M8767_LDO16,
|
||||
S5M8767_LDO17,
|
||||
S5M8767_LDO18,
|
||||
S5M8767_LDO19,
|
||||
S5M8767_LDO20,
|
||||
S5M8767_LDO21,
|
||||
S5M8767_LDO22,
|
||||
S5M8767_LDO23,
|
||||
S5M8767_LDO24,
|
||||
S5M8767_LDO25,
|
||||
S5M8767_LDO26,
|
||||
S5M8767_LDO27,
|
||||
S5M8767_LDO28,
|
||||
S5M8767_BUCK1,
|
||||
S5M8767_BUCK2,
|
||||
S5M8767_BUCK3,
|
||||
S5M8767_BUCK4,
|
||||
S5M8767_BUCK5,
|
||||
S5M8767_BUCK6,
|
||||
S5M8767_BUCK7,
|
||||
S5M8767_BUCK8,
|
||||
S5M8767_BUCK9,
|
||||
S5M8767_AP_EN32KHZ,
|
||||
S5M8767_CP_EN32KHZ,
|
||||
|
||||
S5M8767_REG_MAX,
|
||||
};
|
||||
|
||||
#define S5M8767_ENCTRL_SHIFT 6
|
||||
|
||||
#endif /* __LINUX_MFD_S5M8767_H */
|
@@ -807,6 +807,7 @@ struct tps65910_board {
|
||||
int irq_base;
|
||||
int vmbch_threshold;
|
||||
int vmbch2_threshold;
|
||||
bool en_ck32k_xtal;
|
||||
bool en_dev_slp;
|
||||
struct tps65910_sleep_keepon_data *slp_keepon;
|
||||
bool en_gpio_sleep[TPS6591X_MAX_NUM_GPIO];
|
||||
|
@@ -161,8 +161,9 @@
|
||||
#define TWL6040_CELLS 2
|
||||
|
||||
#define TWL6040_REV_ES1_0 0x00
|
||||
#define TWL6040_REV_ES1_1 0x01
|
||||
#define TWL6040_REV_ES1_2 0x02
|
||||
#define TWL6040_REV_ES1_1 0x01 /* Rev ES1.1 and ES1.2 */
|
||||
#define TWL6040_REV_ES1_3 0x02
|
||||
#define TWL6041_REV_ES2_0 0x10
|
||||
|
||||
#define TWL6040_IRQ_TH 0
|
||||
#define TWL6040_IRQ_PLUG 1
|
||||
@@ -206,7 +207,6 @@ struct twl6040 {
|
||||
struct regmap *regmap;
|
||||
struct regulator_bulk_data supplies[2]; /* supplies for vio, v2v1 */
|
||||
struct mutex mutex;
|
||||
struct mutex io_mutex;
|
||||
struct mutex irq_mutex;
|
||||
struct mfd_cell cells[TWL6040_CELLS];
|
||||
struct completion ready;
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/completion.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
#include <linux/mfd/wm8350/audio.h>
|
||||
#include <linux/mfd/wm8350/gpio.h>
|
||||
@@ -66,6 +67,9 @@
|
||||
|
||||
#define WM8350_MAX_REGISTER 0xFF
|
||||
|
||||
#define WM8350_UNLOCK_KEY 0x0013
|
||||
#define WM8350_LOCK_KEY 0x0000
|
||||
|
||||
/*
|
||||
* Field Definitions.
|
||||
*/
|
||||
@@ -582,27 +586,9 @@
|
||||
|
||||
#define WM8350_NUM_IRQ_REGS 7
|
||||
|
||||
struct wm8350_reg_access {
|
||||
u16 readable; /* Mask of readable bits */
|
||||
u16 writable; /* Mask of writable bits */
|
||||
u16 vol; /* Mask of volatile bits */
|
||||
};
|
||||
extern const struct wm8350_reg_access wm8350_reg_io_map[];
|
||||
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[];
|
||||
extern const struct regmap_config wm8350_regmap;
|
||||
|
||||
struct wm8350;
|
||||
struct regmap;
|
||||
|
||||
struct wm8350_hwmon {
|
||||
struct platform_device *pdev;
|
||||
@@ -614,7 +600,7 @@ struct wm8350 {
|
||||
|
||||
/* device IO */
|
||||
struct regmap *regmap;
|
||||
u16 *reg_cache;
|
||||
bool unlocked;
|
||||
|
||||
struct mutex auxadc_mutex;
|
||||
struct completion auxadc_done;
|
||||
|
@@ -141,6 +141,7 @@ struct wm8994_pdata {
|
||||
struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO];
|
||||
|
||||
int irq_base; /** Base IRQ number for WM8994, required for IRQs */
|
||||
unsigned long irq_flags; /** user irq flags */
|
||||
|
||||
int num_drc_cfgs;
|
||||
struct wm8994_drc_cfg *drc_cfgs;
|
||||
|
Reference in New Issue
Block a user