Maxim MAX77802 is a power management chip that contains 10 high
efficiency Buck regulators, 32 Low-dropout (LDO) regulators used
to power up application processors and peripherals, a 2-channel
32kHz clock outputs, a Real-Time-Clock (RTC) and a I2C interface
to program the individual regulators, clocks outputs and the RTC.
This patch adds the core support for MAX77802 PMIC and is based
on a driver added by Simon Glass to the Chrome OS kernel 3.8 tree.
Signed-off-by: Javier Martinez Canillas javier.marti...@collabora.co.uk
---
Changes since v1:
- Convert max77{686,802} to regmap irq API and get rid of max77{686,802}-irq.c
suggested by Krzysztof Kozlowski.
- Don't protect max77802 mfd_cells using Kconfig options since mfd core omits
devices that don't match. Suggested by Lee Jones.
- Change mfd driver to be tristate instead of boolean. Suggested by Mark Brown.
- Change binding voltage-regulators property to regulators to be consistent
with other PMIC drivers. Suggested by Mark Brown.
- Use regulators node names instead of the deprecated regulator-compatible
property. Suggested by Mark Brown.
- Use the new descriptor-based GPIO interface instead of the deprecated
integer based GPIO one. Suggested by Mark Brown.
- Remove the type parameter from i2c_device_id table since was not used.
- Fix device not found error message and remove unneeded device found message.
Documentation/devicetree/bindings/mfd/max77802.txt | 87 +
drivers/mfd/Kconfig| 14 +
drivers/mfd/Makefile | 1 +
drivers/mfd/max77802.c | 362 +
include/linux/mfd/max77802-private.h | 309 ++
include/linux/mfd/max77802.h | 124 +++
6 files changed, 897 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/max77802.txt
create mode 100644 drivers/mfd/max77802.c
create mode 100644 include/linux/mfd/max77802-private.h
create mode 100644 include/linux/mfd/max77802.h
diff --git a/Documentation/devicetree/bindings/mfd/max77802.txt
b/Documentation/devicetree/bindings/mfd/max77802.txt
new file mode 100644
index 000..e6c4860
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/max77802.txt
@@ -0,0 +1,87 @@
+Maxim MAX77802 multi-function device
+
+MAX77802 is a Mulitifunction device with PMIC, RTC and Charger on chip. It is
+interfaced to host controller using i2c interface. PMIC, Charger and RTC
+submodules are addressed using same i2c slave address
+
+This document describes the binding for mfd device and PMIC submodule.
+
+Binding for the built-in 32k clock generator block is defined separately
+in bindings/clk/maxim,max77802.txt file.
+
+Required properties:
+- compatible : Must be maxim,max77802;
+- reg : Specifies the i2c slave address of PMIC block.
+- interrupts : This i2c device has an IRQ line connected to the main SoC.
+- interrupt-parent : The parent interrupt controller.
+
+Optional properties:
+- max77802,pmic-buck-default-dvs-idx: We'll always write this DVS index in the
+ PMIC for BUCKs with DVS (Bucks 1-4, 6).
+ NOTE: at the moment these bindings don't include enough details for actual
+ GPIO-DVS--this just lets you choose which single slot to use.
+
+- max77802,pmic-buck-dvs-gpios: The DVS GPIOs. We'll try to set these GPIOs
+ to match pmic-buck-default-dvs-idx at probe time if they are defined. If
+ some or all of these GPIOs are not defined it's assumed that the board has
+ any missing GPIOs hardwired to match pmic-buck-default-dvs-idx.
+
+- max77802,pmic-buck-selb-gpios: GPIOs to enable DVS-GPIO for BUCKs.
+ Should be five values: 1, 2, 3, 4, 6. It is strongly suggested to include
+ these GPIOs if there's any chance that changing DVS GPIOs one line at a
+ time might glitch your DVS values.
+
+Optional node:
+- regulators : The regulators of max77802 have to be instantiated
+ under subnode named regulators using the following format.
+
+ regulator_name {
+ standard regulator constraints
+ };
+ refer Documentation/devicetree/bindings/regulator/regulator.txt
+
+ The regulator node name should be initialized with a string
+to get matched with their hardware counterparts as follow:
+
+ -LDOn : for LDOs, where n can lie in range 1 to 35.
+ example: LDO1, LDO2, LDO35.
+ -BUCKn : for BUCKs, where n can lie in range 1 to 10.
+ example: BUCK1, BUCK5, BUCK10.
+Example:
+
+ max77802@09 {
+ compatible = maxim,max77802;
+ interrupt-parent = wakeup_eint;
+ interrupts = 26 0;
+ reg = 0x09;
+ #address-cells = 1;
+ #size-cells = 0;
+
+ max77802,pmic-buck-default-dvs-idx = 1;
+ max77802,pmic-buck-dvs-gpios = gpy7 6 0,
+ gpj4 2 0,
+