Re: [U-Boot] [PATCH v3 11/17] dm: regulator: add max77686 regulator driver
Hello Simon, On 03/29/2015 03:08 PM, Simon Glass wrote: Hi Przemyslaw, On 24 March 2015 at 14:30, Przemyslaw Marczak p.marc...@samsung.com wrote: This commit adds support to max77686 regulator driver based on a uclass regulator driver-model api, which provides implementation of all uclass regulator api function calls. New file: drivers/power/regulator/max77686.c New config: CONFIG_DM_REGULATOR_MAX77686 Signed-off-by: Przemyslaw Marczak p.marc...@samsung.com Acked-by: Simon Glass s...@chromium.org See nit below. --- Changes V2: - change debug() to error() - code cleanup - fix data types - ldo/buck state implementation - adjust to new uclass api Changes V3: - regulator/max77686.c: -- adjust to api changes -- add separeted drivers for buck and ldo -- bind regulators by its compatibles - Kconfig: add regulator max77686 entry --- Makefile | 1 + drivers/power/Kconfig | 8 + drivers/power/Makefile | 1 - drivers/power/regulator/Makefile | 8 + drivers/power/regulator/max77686.c | 876 + include/power/max77686_pmic.h | 24 +- 6 files changed, 914 insertions(+), 4 deletions(-) create mode 100644 drivers/power/regulator/Makefile create mode 100644 drivers/power/regulator/max77686.c diff --git a/Makefile b/Makefile index 1b3ebe7..9ecf3bb 100644 --- a/Makefile +++ b/Makefile @@ -632,6 +632,7 @@ libs-y += drivers/power/ \ drivers/power/fuel_gauge/ \ drivers/power/mfd/ \ drivers/power/pmic/ \ + drivers/power/regulator/ \ drivers/power/battery/ libs-y += drivers/spi/ libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index c4d4c72..97abbf0 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig @@ -112,6 +112,14 @@ config DM_REGULATOR Say y here to enable support for the axp221 / axp223 pmic found on most sun6i (A31) / sun8i (A23) boards. +config DM_REGULATOR_MAX77686 + bool Enable Driver Model for REGULATOR MAX77686 + depends on DM_REGULATOR DM_PMIC_MAX77686 + ---help--- + This config enables implementation of driver-model regulator uclass + features for REGULATOR MAX77686. The driver implements get/set api for: + value, enable and mode. This should probably go in drivers/power/regulator/Kconfig. Ok, will fix this. [snip] Regards, Simon Thanks, -- Przemyslaw Marczak Samsung RD Institute Poland Samsung Electronics p.marc...@samsung.com ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v3 11/17] dm: regulator: add max77686 regulator driver
Hi Przemyslaw, On 24 March 2015 at 14:30, Przemyslaw Marczak p.marc...@samsung.com wrote: This commit adds support to max77686 regulator driver based on a uclass regulator driver-model api, which provides implementation of all uclass regulator api function calls. New file: drivers/power/regulator/max77686.c New config: CONFIG_DM_REGULATOR_MAX77686 Signed-off-by: Przemyslaw Marczak p.marc...@samsung.com Acked-by: Simon Glass s...@chromium.org See nit below. --- Changes V2: - change debug() to error() - code cleanup - fix data types - ldo/buck state implementation - adjust to new uclass api Changes V3: - regulator/max77686.c: -- adjust to api changes -- add separeted drivers for buck and ldo -- bind regulators by its compatibles - Kconfig: add regulator max77686 entry --- Makefile | 1 + drivers/power/Kconfig | 8 + drivers/power/Makefile | 1 - drivers/power/regulator/Makefile | 8 + drivers/power/regulator/max77686.c | 876 + include/power/max77686_pmic.h | 24 +- 6 files changed, 914 insertions(+), 4 deletions(-) create mode 100644 drivers/power/regulator/Makefile create mode 100644 drivers/power/regulator/max77686.c diff --git a/Makefile b/Makefile index 1b3ebe7..9ecf3bb 100644 --- a/Makefile +++ b/Makefile @@ -632,6 +632,7 @@ libs-y += drivers/power/ \ drivers/power/fuel_gauge/ \ drivers/power/mfd/ \ drivers/power/pmic/ \ + drivers/power/regulator/ \ drivers/power/battery/ libs-y += drivers/spi/ libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index c4d4c72..97abbf0 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig @@ -112,6 +112,14 @@ config DM_REGULATOR Say y here to enable support for the axp221 / axp223 pmic found on most sun6i (A31) / sun8i (A23) boards. +config DM_REGULATOR_MAX77686 + bool Enable Driver Model for REGULATOR MAX77686 + depends on DM_REGULATOR DM_PMIC_MAX77686 + ---help--- + This config enables implementation of driver-model regulator uclass + features for REGULATOR MAX77686. The driver implements get/set api for: + value, enable and mode. This should probably go in drivers/power/regulator/Kconfig. + config AXP221_DCDC1_VOLT int axp221 dcdc1 voltage depends on AXP221_POWER diff --git a/drivers/power/Makefile b/drivers/power/Makefile index a6b7012..f206bdd 100644 --- a/drivers/power/Makefile +++ b/drivers/power/Makefile @@ -15,7 +15,6 @@ obj-$(CONFIG_TPS6586X_POWER) += tps6586x.o obj-$(CONFIG_TWL4030_POWER)+= twl4030.o obj-$(CONFIG_TWL6030_POWER)+= twl6030.o obj-$(CONFIG_PALMAS_POWER) += palmas.o - obj-$(CONFIG_POWER) += power_core.o obj-$(CONFIG_DIALOG_POWER) += power_dialog.o obj-$(CONFIG_POWER_FSL) += power_fsl.o diff --git a/drivers/power/regulator/Makefile b/drivers/power/regulator/Makefile new file mode 100644 index 000..9d282e3 --- /dev/null +++ b/drivers/power/regulator/Makefile @@ -0,0 +1,8 @@ +# +# Copyright (C) 2014 Samsung Electronics +# Przemyslaw Marczak p.marc...@samsung.com +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-$(CONFIG_DM_REGULATOR_MAX77686) += max77686.o diff --git a/drivers/power/regulator/max77686.c b/drivers/power/regulator/max77686.c new file mode 100644 index 000..496c70a --- /dev/null +++ b/drivers/power/regulator/max77686.c @@ -0,0 +1,876 @@ +/* + * Copyright (C) 2012-2015 Samsung Electronics + * + * Rajeshwari Shinde rajeshwar...@samsung.com + * Przemyslaw Marczak p.marc...@samsung.com + * + * SPDX-License-Identifier:GPL-2.0+ + */ + +#include common.h +#include fdtdec.h +#include i2c.h +#include dm.h +#include power/pmic.h +#include power/regulator.h +#include power/max77686_pmic.h +#include errno.h +#include dm.h + +DECLARE_GLOBAL_DATA_PTR; + +#define MODE(_id, _val, _name) { \ + .id = _id, \ + .register_value = _val, \ + .name = _name, \ +} + +/* LDO: 1,3,4,5,9,17,18,19,20,21,22,23,24,26,26,27 */ +static struct dm_regulator_mode max77686_ldo_mode_standby1[] = { + MODE(OPMODE_OFF, MAX77686_LDO_MODE_OFF, OFF), + MODE(OPMODE_LPM, MAX77686_LDO_MODE_LPM, LPM), + MODE(OPMODE_STANDBY_LPM, MAX77686_LDO_MODE_STANDBY_LPM, ON/LPM), + MODE(OPMODE_ON, MAX77686_LDO_MODE_ON, ON), +}; + +/* LDO: 2,6,7,8,10,11,12,14,15,16 */ +static struct dm_regulator_mode max77686_ldo_mode_standby2[] = { + MODE(OPMODE_OFF, MAX77686_LDO_MODE_OFF, OFF), + MODE(OPMODE_STANDBY, MAX77686_LDO_MODE_STANDBY, ON/OFF), + MODE(OPMODE_STANDBY_LPM, MAX77686_LDO_MODE_STANDBY_LPM, ON/LPM), + MODE(OPMODE_ON, MAX77686_LDO_MODE_ON, ON), +}; + +/* Buck: 1 */ +static struct dm_regulator_mode max77686_buck_mode_standby[] = { + MODE(OPMODE_OFF,
[U-Boot] [PATCH v3 11/17] dm: regulator: add max77686 regulator driver
This commit adds support to max77686 regulator driver based on a uclass regulator driver-model api, which provides implementation of all uclass regulator api function calls. New file: drivers/power/regulator/max77686.c New config: CONFIG_DM_REGULATOR_MAX77686 Signed-off-by: Przemyslaw Marczak p.marc...@samsung.com --- Changes V2: - change debug() to error() - code cleanup - fix data types - ldo/buck state implementation - adjust to new uclass api Changes V3: - regulator/max77686.c: -- adjust to api changes -- add separeted drivers for buck and ldo -- bind regulators by its compatibles - Kconfig: add regulator max77686 entry --- Makefile | 1 + drivers/power/Kconfig | 8 + drivers/power/Makefile | 1 - drivers/power/regulator/Makefile | 8 + drivers/power/regulator/max77686.c | 876 + include/power/max77686_pmic.h | 24 +- 6 files changed, 914 insertions(+), 4 deletions(-) create mode 100644 drivers/power/regulator/Makefile create mode 100644 drivers/power/regulator/max77686.c diff --git a/Makefile b/Makefile index 1b3ebe7..9ecf3bb 100644 --- a/Makefile +++ b/Makefile @@ -632,6 +632,7 @@ libs-y += drivers/power/ \ drivers/power/fuel_gauge/ \ drivers/power/mfd/ \ drivers/power/pmic/ \ + drivers/power/regulator/ \ drivers/power/battery/ libs-y += drivers/spi/ libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index c4d4c72..97abbf0 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig @@ -112,6 +112,14 @@ config DM_REGULATOR Say y here to enable support for the axp221 / axp223 pmic found on most sun6i (A31) / sun8i (A23) boards. +config DM_REGULATOR_MAX77686 + bool Enable Driver Model for REGULATOR MAX77686 + depends on DM_REGULATOR DM_PMIC_MAX77686 + ---help--- + This config enables implementation of driver-model regulator uclass + features for REGULATOR MAX77686. The driver implements get/set api for: + value, enable and mode. + config AXP221_DCDC1_VOLT int axp221 dcdc1 voltage depends on AXP221_POWER diff --git a/drivers/power/Makefile b/drivers/power/Makefile index a6b7012..f206bdd 100644 --- a/drivers/power/Makefile +++ b/drivers/power/Makefile @@ -15,7 +15,6 @@ obj-$(CONFIG_TPS6586X_POWER) += tps6586x.o obj-$(CONFIG_TWL4030_POWER)+= twl4030.o obj-$(CONFIG_TWL6030_POWER)+= twl6030.o obj-$(CONFIG_PALMAS_POWER) += palmas.o - obj-$(CONFIG_POWER) += power_core.o obj-$(CONFIG_DIALOG_POWER) += power_dialog.o obj-$(CONFIG_POWER_FSL) += power_fsl.o diff --git a/drivers/power/regulator/Makefile b/drivers/power/regulator/Makefile new file mode 100644 index 000..9d282e3 --- /dev/null +++ b/drivers/power/regulator/Makefile @@ -0,0 +1,8 @@ +# +# Copyright (C) 2014 Samsung Electronics +# Przemyslaw Marczak p.marc...@samsung.com +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-$(CONFIG_DM_REGULATOR_MAX77686) += max77686.o diff --git a/drivers/power/regulator/max77686.c b/drivers/power/regulator/max77686.c new file mode 100644 index 000..496c70a --- /dev/null +++ b/drivers/power/regulator/max77686.c @@ -0,0 +1,876 @@ +/* + * Copyright (C) 2012-2015 Samsung Electronics + * + * Rajeshwari Shinde rajeshwar...@samsung.com + * Przemyslaw Marczak p.marc...@samsung.com + * + * SPDX-License-Identifier:GPL-2.0+ + */ + +#include common.h +#include fdtdec.h +#include i2c.h +#include dm.h +#include power/pmic.h +#include power/regulator.h +#include power/max77686_pmic.h +#include errno.h +#include dm.h + +DECLARE_GLOBAL_DATA_PTR; + +#define MODE(_id, _val, _name) { \ + .id = _id, \ + .register_value = _val, \ + .name = _name, \ +} + +/* LDO: 1,3,4,5,9,17,18,19,20,21,22,23,24,26,26,27 */ +static struct dm_regulator_mode max77686_ldo_mode_standby1[] = { + MODE(OPMODE_OFF, MAX77686_LDO_MODE_OFF, OFF), + MODE(OPMODE_LPM, MAX77686_LDO_MODE_LPM, LPM), + MODE(OPMODE_STANDBY_LPM, MAX77686_LDO_MODE_STANDBY_LPM, ON/LPM), + MODE(OPMODE_ON, MAX77686_LDO_MODE_ON, ON), +}; + +/* LDO: 2,6,7,8,10,11,12,14,15,16 */ +static struct dm_regulator_mode max77686_ldo_mode_standby2[] = { + MODE(OPMODE_OFF, MAX77686_LDO_MODE_OFF, OFF), + MODE(OPMODE_STANDBY, MAX77686_LDO_MODE_STANDBY, ON/OFF), + MODE(OPMODE_STANDBY_LPM, MAX77686_LDO_MODE_STANDBY_LPM, ON/LPM), + MODE(OPMODE_ON, MAX77686_LDO_MODE_ON, ON), +}; + +/* Buck: 1 */ +static struct dm_regulator_mode max77686_buck_mode_standby[] = { + MODE(OPMODE_OFF, MAX77686_BUCK_MODE_OFF, OFF), + MODE(OPMODE_STANDBY, MAX77686_BUCK_MODE_STANDBY, ON/OFF), + MODE(OPMODE_ON, MAX77686_BUCK_MODE_ON, ON), +}; + +/* Buck: 2,3,4 */ +static struct dm_regulator_mode max77686_buck_mode_lpm[] = { + MODE(OPMODE_OFF, MAX77686_BUCK_MODE_OFF, OFF), + MODE(OPMODE_STANDBY, MAX77686_BUCK_MODE_STANDBY, ON/OFF), +