--- v1
+++ v10
@@ -1,34 +1,14 @@
Patch series introducing support for ROHM BD70528 PMIC
-
-Please note that patch 2 breaks compilation without patches 3 and 4
ROHM BD70528 is a programmable Power Management IC for battery
powered 'ultra low power' systems like the pre-announced NXP
-i.MX7 ULP. This patch series introduces support for the PMIC.
-
-I send this a RFC now as I would like to receive comments from
-Lee, Mark and Stephen regarding splitting the existing
-include/linux/mfd/bd718x7.h into ROHM generic and chip specific
-portions. Benefit is that for example the clk sub-driver does
-not need to be aware of chip specific structure(s) (struct
-bd718x7 and struct bd70528) as it only needs to derefernce the
-generic struct rohm_regmap_dev. Thus same clk subdriver can
-support both the bd718x7 and bd70528 as long as MFD driver
-data has this generic structure in the beginning of allocated
-data. But knowing the bd718x7 driver is already in upstream,
-it might be good if this change went through single tree, right?
-
-Another 'RFC' item is 'main register support' for regmap-irq.
-This has been initially discussed with Mark in these mail threads
-
-Option 1
-https://lore.kernel.org/lkml/20181217185014.GH27909@sirena.org.uk/
-
-Option 2
-https://lore.kernel.org/lkml/20181218085803.GD2477@localhost.localdomain/
-
-But I think it is Ok to show it to wider audience with this real
-usage example.
+i.MX7 ULP. This patch series introduces support for the PMIC. Please
+note that this driver only supports HW setup where PMIC is connected
+to I2C on A7 core. The other scenario is to use M4 as a power manager
+and connect pmic to M4. On such setups the A7 can only access pmic
+via M4 core using RPMSG virtio. Such setup depends on RPMSG
+implementation on M4 core and is currently not supported by this
+patch series.
RTC block of the bd70528 can support 'wake' irq which wakes PMIC
from standby state. Wake irq's can be armed to wake up system up
@@ -45,96 +25,168 @@
are used for I/O or interrupts and it is up-to driver user to
ensure there is no misconfiguration or "double use".
-Currently only MFD core, clk, RTC and regulator portions are
-somehow tested. The RFC series also include initial gpio, power-supply
-and watchdog patches in order to provide better overview on chip
-and to collect initial feedback. Reset and ADC are not supported by
-this series.
+The power-supply patch included in series is only poorly tested as I
+lack of hardware with real battery connected. Reset and ADC are not
+supported by this series.
+
+Changelog v10:
+- Exported locking functions for RTC lock and as a result dropped hid
+ the struct bd70528 from sub-devices who no longer needed it.
+- removed linux/gpio.h header from GPIO driver.
+
+Changelog v9: Changes suggested by Lee Jones
+- MFD, DT-binding, RTC and WDT changed
+- DT-bindings: Spelling fixes
+- RTC and WDT: Use exported function instead of function pointer for WDT
+ arming/disarming
+- MFD: Export WDT arming/disarming function instead of providing a
+ pointer to it.
+- Various styling fixes.
+
+Changelog v8:
+- regulators(*), wdt, gpio, rtc, mfd(*) and dt-bindings unchanged.
+ (*)Patches 1-3 squashed to not break bisecting.
+
+- removed unnecessary newline from clk
+- fixed possible use of uninitialized 'reg' from power-supply.
+ Found by 0-day tests and reported by Dan Carpenter.
+
+Changelog v7:
+Only patch 2 changed.
+- Avoid out-of-array-bounds access at regulator probe if unsupported
+ chip type is passed to bd718x7 regulator driver.
+
+Changelog v6:
+Only patch 10 changed.
+- styling fixes pointed by Gunter Roeck
+- dropped RFC tag
+
+Changelog v5 (RFC):
+Only patch 7 changed.
+- Explained why lock is not needed at GPIO value getting
+- removed ampersands from function pointer assignments.
+
+Changelog v4 (RFC):
+patches 1,2,3,4,5,10 are unchanged from v3
+DT-binding fixes suggested by Rob Herring:
+- drop interrupt-parent
+- drop clock-frequency
+- change pmic node name to a generic one
+RTC:
+- enable RTC block's irqs before registering rtc
+GPIO fixes after initial testing:
+- fix getting GPIO value when direction is output
+POWER:
+- Add ASCII art intended to clarify the charger HW state machine
+
+Changelog v3 (RFC):
+patches 1,2,3,4,5,6,7,8 and 10 are unchanged from v2
+RTC fixups suggested by Guenter Roeck:
+- create bd70528_set_time_locked function in order to simplify
+ error handling and to make mutex lock/unlock path more obvious
+- don't ignore errors on bd70528_set_time_locked
+- simplify bd70528_read_alarm enabled condition setting
+- add __packed to structs where members are mapped to HW registers
+- remove unnecessary brackets from enable condition in set_wake
+RTC: fixups suggested by Alessandro Belloni
+- don't use deprecated devm_rtc_device_register
+- add alarm_irq_enable callback
+- add range_min and range_max
+WDT:
+- add regmap and mutex pointers to WDT data so that they can be accessed
+ without dereferencing the parent data
+- remove parent data pointer from WDT data
+- embed struct watchdog_device into WDT data in order to avoid double
+ allocation.
+GPIO:
+- remove unused header as pointed by Linus Walleij
+POWER:
+- do not copy the whole MFD data (especially the mutex to avoid
+ all possibilities of accidentally using the copy of a mutex)
+
+Changelog v2 (RFC): Mainly feedback from Guenter Roeck:
+- patches 1, 2, 3, 4, 5, 9 are unchanged.
+- mfd: own mutex for each bd70528 instance - embed in struct bd70528
+- watchdog: do not copy parent device data
+- watchdog: fix deadlock caused by double locked mutex
+- watchdog: set initial timeouts and WDT parent information
+- watchdog: remove unnecessary ping function from ops
+- watchdog: and the comment regarding it
+- watchdog: allocate watchdog struct in order to allow multiple WDG
+ instances
+- rtc: bd70528 fix the order of mutex unlock and re-enabling RTC based
+ timers
+- rtc: fix the irq mask register address
+- power: fix the irq mask register address
+- regulator/regmap-irq: Drop the patches 1, 8 and 9 from original series
+ as those were already applied by Mark
Patch 1:
- regmap-irq, 'main status register support'. See discussion
- https://lore.kernel.org/lkml/20181217185014.GH27909@sirena.org.uk/
+ split the bd718x7.h to generic and chip specific portions.
+ (breaks compilation without patch 2 and 3)
+ - adapt bd718x7.h changes to bd718x7 regulator driver
+ - adapt bd718x7.h changes to bd718x7 clk driver
Patch 2:
- split the bd718x7.h to generic and chip specific portions.
- (breaks compilation without patch 3 and 4)
+ add MFD core support for bd70528
Patch 3:
- adapt bd718x7.h changes to bd718x7 regulator driver
+ support bd70528 clk using bd718x7 clk driver
Patch 4:
- adapt bd718x7.h changes to bd718x7 clk driver
+ document DT bindings for BD70528
Patch 5:
- add MFD core support for bd70528
+ support BD70528 GPIO block
Patch 6:
- support bd70528 clk using bd718x7 clk driver
+ support BD70528 RTC
Patch 7:
- document DT bindings for BD70528
+ support BD70528 battery charger
Patch 8:
- support bd70528 regulators
+ support BD70528 watchdog
Patch 9:
- document regulator DT bindings for BD70528
-Patch 10:
- support BD70528 GPIO block
-Patch 11:
- support BD70528 RTC
-Patch 12:
- support BD70528 battery charger
-Patch 13:
- support BD70528 watchdog
+ drop struct bd70528 from regulator
This patch series is based on Mark's regulator/for-next branch
---
-Matti Vaittinen (13):
- regmap: regmap-irq: Add main status register support
- mfd: bd718x7.h split to ROHM common and bd718x7 specific parts
- regulator: bd718x7 use chip specific and generic data structs
- clk: bd718x7: use chip specific and generic data structs
+Matti Vaittinen (9):
+ mfd: regulator: clk: split rohm-bd718x7.h
mfd: bd70528: Support ROHM bd70528 PMIC - core
clk: bd718x7: Support ROHM BD70528 clk block
devicetree: bindings: Document first ROHM BD70528 bindings
- regulator: bd70528: Support ROHM BD70528 regulator block
- devicetree: bindings: ROHM bd70528 regulator bindings
gpio: Initial support for ROHM bd70528 GPIO block
rtc: bd70528: Initial support for ROHM bd70528 RTC
power: supply: Initial support for ROHM BD70528 PMIC charger block
watchdog: bd70528: Initial support for ROHM BD70528 watchdog block
-
- .../devicetree/bindings/mfd/rohm,bd70528-pmic.txt | 104 ++++
- .../bindings/regulator/rohm,bd70528-regulator.txt | 68 +++
- drivers/base/regmap/regmap-irq.c | 99 ++-
+ regulator: bd70528: drop struct bd70528
+
+ .../devicetree/bindings/mfd/rohm,bd70528-pmic.txt | 102 +++
drivers/clk/Kconfig | 6 +-
- drivers/clk/clk-bd718x7.c | 25 +-
+ drivers/clk/clk-bd718x7.c | 24 +-
drivers/gpio/Kconfig | 11 +
drivers/gpio/Makefile | 1 +
- drivers/gpio/gpio-bd70528.c | 192 ++++++
+ drivers/gpio/gpio-bd70528.c | 231 +++++++
drivers/mfd/Kconfig | 17 +
drivers/mfd/Makefile | 1 +
- drivers/mfd/rohm-bd70528.c | 409 +++++++++++++
+ drivers/mfd/rohm-bd70528.c | 438 ++++++++++++
drivers/mfd/rohm-bd718x7.c | 23 +-
drivers/power/supply/Kconfig | 9 +
drivers/power/supply/Makefile | 1 +
- drivers/power/supply/bd70528-charger.c | 670 +++++++++++++++++++++
- drivers/regulator/Kconfig | 11 +
- drivers/regulator/Makefile | 1 +
- drivers/regulator/bd70528-regulator.c | 290 +++++++++
- drivers/regulator/bd718x7-regulator.c | 22 +-
+ drivers/power/supply/bd70528-charger.c | 745 +++++++++++++++++++++
+ drivers/regulator/bd70528-regulator.c | 4 +-
+ drivers/regulator/bd718x7-regulator.c | 24 +-
drivers/rtc/Kconfig | 8 +
drivers/rtc/Makefile | 1 +
- drivers/rtc/rtc-bd70528.c | 439 ++++++++++++++
+ drivers/rtc/rtc-bd70528.c | 500 ++++++++++++++
drivers/watchdog/Kconfig | 12 +
drivers/watchdog/Makefile | 1 +
- drivers/watchdog/bd70528_wdt.c | 161 +++++
- include/linux/mfd/rohm-bd70528.h | 392 ++++++++++++
+ drivers/watchdog/bd70528_wdt.c | 187 ++++++
+ include/linux/mfd/rohm-bd70528.h | 383 +++++++++++
include/linux/mfd/rohm-bd718x7.h | 22 +-
include/linux/mfd/rohm-generic.h | 20 +
- include/linux/regmap.h | 31 +
- 29 files changed, 2998 insertions(+), 49 deletions(-)
+ 24 files changed, 2723 insertions(+), 48 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd70528-pmic.txt
- create mode 100644 Documentation/devicetree/bindings/regulator/rohm,bd70528-regulator.txt
create mode 100644 drivers/gpio/gpio-bd70528.c
create mode 100644 drivers/mfd/rohm-bd70528.c
create mode 100644 drivers/power/supply/bd70528-charger.c
- create mode 100644 drivers/regulator/bd70528-regulator.c
create mode 100644 drivers/rtc/rtc-bd70528.c
create mode 100644 drivers/watchdog/bd70528_wdt.c
create mode 100644 include/linux/mfd/rohm-bd70528.h
@@ -145,7 +197,10 @@
--
-Matti Vaittinen
-ROHM Semiconductors
+Matti Vaittinen, Linux device drivers
+ROHM Semiconductors, Finland SWDC
+Kiviharjunlenkki 1E
+90220 OULU
+FINLAND
~~~ "I don't think so," said Rene Descartes. Just then, he vanished ~~~