[PATCH v5 10/14] regulator: Add driver for Maxim 77802 PMIC regulators
From: Lee Jones <hidden>
Date: 2014-06-27 09:26:21
Also in:
linux-devicetree, linux-samsung-soc, lkml
On Thu, 26 Jun 2014, Javier Martinez Canillas wrote:
quoted hunk ↗ jump to hunk
The MAX77802 PMIC has 10 high-efficiency Buck and 32 Low-dropout (LDO) regulators. This patch adds support for all these regulators found on the 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 <redacted> Tested-by: Naveen Krishna Chatradhi <redacted> --- Changes since v4: None Changes since v3: - Set the supply_name for regulators to lookup their parent supply node. Suggested by Mark Brown. - Change Exyno5 for Exynos5420/Exynos5800 in regulator driver Kconfig. Suggested by Doug Anderson. Changes since v2: - Use dev_warn() instead pr_warn(). Suggested by Mark Brown. - Add a generic function to regmap core to copy registers instead of having a driver-specific function. Suggested by Mark Brown. - Remove unnecessary probe debug log. Suggested by Mark Brown. - Set struct regulator_config dev field to MFD instead of the platform dev. Suggested by Mark Brown. - Read the regulators operational mode from the hardware registers instead of setting to normal as default on probe. Suggested by Mark Brown. - Remove unnecessary cross-subsystem dependencies. Suggested by Lee Jones. Changes since v1: - Remove unneeded check if num_regulators != MAX77802_MAX_REGULATORS. - Fix .set_suspend_mode handler comment and split regulators ops for regulators that behave differently. Suggested by Mark Brown. - Use module_platform_driver() instead of having init/exit functions. Suggested by Mark Brown. - Use the new descriptor-based GPIO interface instead of the deprecated integer based GPIO one. Suggested by Mark Brown. - Look for "regulators" child node instead of "voltage-regulators" to be consistent with other PMIC drivers. Suggested by Mark Brown. drivers/mfd/max77802.c | 8 +- drivers/regulator/Kconfig | 9 + drivers/regulator/Makefile | 1 + drivers/regulator/max77802.c | 694 +++++++++++++++++++++++++++++++++++ include/linux/mfd/max77802-private.h | 3 - 5 files changed, 711 insertions(+), 4 deletions(-) create mode 100644 drivers/regulator/max77802.cdiff --git a/drivers/mfd/max77802.c b/drivers/mfd/max77802.c index 3d477fb..79d36b6 100644 --- a/drivers/mfd/max77802.c +++ b/drivers/mfd/max77802.c@@ -228,7 +228,7 @@ static int max77802_i2c_probe(struct i2c_client *i2c, max77802 = devm_kzalloc(&i2c->dev, sizeof(struct max77802_dev), GFP_KERNEL); - if (max77802 == NULL) + if (!max77802) return -ENOMEM; i2c_set_clientdata(i2c, max77802);@@ -315,6 +315,12 @@ static int max77802_suspend(struct device *dev) if (device_may_wakeup(dev)) enable_irq_wake(max77802->irq); + /* + * The IRQ must be disabled during suspend since due wakeup + * ordering issues it may be possible that the I2C controller + * is still suspended when the interrupt happens so the IRQ + * handler will fail to read the I2C bus. + */
Please re-word this, the English is a little off.
disable_irq(max77802->irq); return 0;
Please separate the MFD changes out. There is no need for them to be munged in with regulator changes. [...] -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog