Re: [U-Boot] [PATCH v3 11/17] dm: regulator: add max77686 regulator driver

2015-04-03 Thread Przemyslaw Marczak

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

2015-03-29 Thread Simon Glass
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

2015-03-24 Thread Przemyslaw Marczak
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),
+