* [U-Boot] [PATCH v2 1/2] power: pmic: Add support for MAX77696 PMIC
@ 2015-07-22 0:47 Fabio Estevam
2015-07-22 0:47 ` [U-Boot] [PATCH v2 2/2] warp: Add MAX77696 support Fabio Estevam
2015-07-26 10:13 ` [U-Boot] [PATCH v2 1/2] power: pmic: Add support for MAX77696 PMIC Stefano Babic
0 siblings, 2 replies; 4+ messages in thread
From: Fabio Estevam @ 2015-07-22 0:47 UTC (permalink / raw)
To: u-boot
From: Fabio Estevam <fabio.estevam@freescale.com>
Add support for MAX77696 PMIC.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v1:
- Fix the range of PMIC registers
drivers/power/pmic/Makefile | 1 +
drivers/power/pmic/pmic_max77696.c | 32 ++++++++++++++++++++
include/power/max77696_pmic.h | 61 ++++++++++++++++++++++++++++++++++++++
3 files changed, 94 insertions(+)
create mode 100644 drivers/power/pmic/pmic_max77696.c
create mode 100644 include/power/max77696_pmic.h
diff --git a/drivers/power/pmic/Makefile b/drivers/power/pmic/Makefile
index ae86f04..4ad6df3 100644
--- a/drivers/power/pmic/Makefile
+++ b/drivers/power/pmic/Makefile
@@ -9,6 +9,7 @@ obj-$(CONFIG_DM_PMIC) += pmic-uclass.o
obj-$(CONFIG_DM_PMIC_MAX77686) += max77686.o
obj-$(CONFIG_DM_PMIC_SANDBOX) += sandbox.o i2c_pmic_emul.o
obj-$(CONFIG_POWER_LTC3676) += pmic_ltc3676.o
+obj-$(CONFIG_POWER_MAX77696) += pmic_max77696.o
obj-$(CONFIG_POWER_MAX8998) += pmic_max8998.o
obj-$(CONFIG_POWER_MAX8997) += pmic_max8997.o
obj-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o
diff --git a/drivers/power/pmic/pmic_max77696.c b/drivers/power/pmic/pmic_max77696.c
new file mode 100644
index 0000000..93d92f5
--- /dev/null
+++ b/drivers/power/pmic/pmic_max77696.c
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ * Fabio Estevam <fabio.estevam@freescale.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <i2c.h>
+#include <power/pmic.h>
+#include <power/max77696_pmic.h>
+
+int power_max77696_init(unsigned char bus)
+{
+ static const char name[] = "MAX77696";
+ struct pmic *p = pmic_alloc();
+
+ if (!p) {
+ printf("%s: POWER allocation error!\n", __func__);
+ return -ENOMEM;
+ }
+
+ p->name = name;
+ p->interface = PMIC_I2C;
+ p->number_of_regs = PMIC_NUM_OF_REGS;
+ p->hw.i2c.addr = CONFIG_POWER_MAX77696_I2C_ADDR;
+ p->hw.i2c.tx_num = 1;
+ p->bus = bus;
+
+ return 0;
+}
diff --git a/include/power/max77696_pmic.h b/include/power/max77696_pmic.h
new file mode 100644
index 0000000..58f295c
--- /dev/null
+++ b/include/power/max77696_pmic.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ * Fabio Estevam <fabio.estevam@freescale.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __MAX77696_PMIC_H__
+#define __MAX77696_PMIC_H__
+
+#define CONFIG_POWER_MAX77696_I2C_ADDR 0x3C
+
+enum {
+ L01_CNFG1 = 0x43,
+ L01_CNFG2,
+ L02_CNFG1,
+ L02_CNFG2,
+ L03_CNFG1,
+ L03_CNFG2,
+ L04_CNFG1,
+ L04_CNFG2,
+ L05_CNFG1,
+ L05_CNFG2,
+ L06_CNFG1,
+ L06_CNFG2,
+ L07_CNFG1,
+ L07_CNFG2,
+ L08_CNFG1,
+ L08_CNFG2,
+ L09_CNFG1,
+ L09_CNFG2,
+ L10_CNFG1,
+ L10_CNFG2,
+ LDO_INT1,
+ LDO_INT2,
+ LDO_INT1M,
+ LDO_INT2M,
+ LDO_CNFG3,
+ SW1_CNTRL,
+ SW2_CNTRL,
+ SW3_CNTRL,
+ SW4_CNTRL,
+ EPDCNFG,
+ EPDINTS,
+ EPDINT,
+ EPDINTM,
+ EPDVCOM,
+ EPDVEE,
+ EPDVNEG,
+ EPDVPOS,
+ EPDVDDH,
+ EPDSEQ,
+ EPDOKINTS,
+ CID = 0x9c,
+ EPDDIS = 0xb5,
+ PMIC_NUM_OF_REGS,
+};
+
+int power_max77696_init(unsigned char bus);
+
+#endif
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v2 2/2] warp: Add MAX77696 support
2015-07-22 0:47 [U-Boot] [PATCH v2 1/2] power: pmic: Add support for MAX77696 PMIC Fabio Estevam
@ 2015-07-22 0:47 ` Fabio Estevam
2015-07-26 10:14 ` Stefano Babic
2015-07-26 10:13 ` [U-Boot] [PATCH v2 1/2] power: pmic: Add support for MAX77696 PMIC Stefano Babic
1 sibling, 1 reply; 4+ messages in thread
From: Fabio Estevam @ 2015-07-22 0:47 UTC (permalink / raw)
To: u-boot
From: Fabio Estevam <fabio.estevam@freescale.com>
Warp has a MAX77696 PMIC connected via I2C1 bus.
Add support for it.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v1:
- None
board/warp/warp.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
include/configs/warp.h | 11 +++++++++++
2 files changed, 61 insertions(+)
diff --git a/board/warp/warp.c b/board/warp/warp.c
index 21ac5e7..49dfdb6 100644
--- a/board/warp/warp.c
+++ b/board/warp/warp.c
@@ -15,13 +15,17 @@
#include <asm/arch/sys_proto.h>
#include <asm/gpio.h>
#include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/mxc_i2c.h>
#include <asm/io.h>
#include <linux/sizes.h>
#include <common.h>
#include <watchdog.h>
#include <fsl_esdhc.h>
+#include <i2c.h>
#include <mmc.h>
#include <usb.h>
+#include <power/pmic.h>
+#include <power/max77696_pmic.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -35,6 +39,11 @@ DECLARE_GLOBAL_DATA_PTR;
PAD_CTL_SRE_FAST | PAD_CTL_HYS | \
PAD_CTL_LVE)
+#define I2C_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
+ PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
+ PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \
+ PAD_CTL_ODE | PAD_CTL_SRE_FAST)
+
int dram_init(void)
{
gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
@@ -88,6 +97,45 @@ int board_usb_phy_mode(int port)
return USB_INIT_DEVICE;
}
+/* I2C1 for PMIC */
+#define I2C_PMIC 0
+#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
+struct i2c_pads_info i2c_pad_info1 = {
+ .sda = {
+ .i2c_mode = MX6_PAD_I2C1_SDA__I2C1_SDA | PC,
+ .gpio_mode = MX6_PAD_I2C1_SDA__GPIO_3_13 | PC,
+ .gp = IMX_GPIO_NR(3, 13),
+ },
+ .scl = {
+ .i2c_mode = MX6_PAD_I2C1_SCL__I2C1_SCL | PC,
+ .gpio_mode = MX6_PAD_I2C1_SCL__GPIO_3_12 | PC,
+ .gp = IMX_GPIO_NR(3, 12),
+ },
+};
+
+int power_init_board(void)
+{
+ struct pmic *p;
+ int ret;
+ unsigned int reg;
+
+ ret = power_max77696_init(I2C_PMIC);
+ if (ret)
+ return ret;
+
+ p = pmic_get("MAX77696");
+ if (!p)
+ return -EINVAL;
+
+ ret = pmic_reg_read(p, CID, ®);
+ if (ret)
+ return ret;
+
+ printf("PMIC: MAX77696 detected, rev=0x%x\n", reg);
+
+ return pmic_probe(p);
+}
+
int board_early_init_f(void)
{
setup_iomux_uart();
@@ -99,6 +147,8 @@ int board_init(void)
/* address of boot parameters */
gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+ setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
+
return 0;
}
diff --git a/include/configs/warp.h b/include/configs/warp.h
index 48e2058..f38f781 100644
--- a/include/configs/warp.h
+++ b/include/configs/warp.h
@@ -98,6 +98,17 @@
#define CONFIG_CMD_FUSE
#define CONFIG_MXC_OCOTP
+/* I2C Configs */
+#define CONFIG_CMD_I2C
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MXC
+#define CONFIG_SYS_I2C_SPEED 100000
+
+/* PMIC */
+#define CONFIG_POWER
+#define CONFIG_POWER_I2C
+#define CONFIG_POWER_MAX77696
+
#define CONFIG_EXTRA_ENV_SETTINGS \
"script=boot.scr\0" \
"image=zImage\0" \
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v2 1/2] power: pmic: Add support for MAX77696 PMIC
2015-07-22 0:47 [U-Boot] [PATCH v2 1/2] power: pmic: Add support for MAX77696 PMIC Fabio Estevam
2015-07-22 0:47 ` [U-Boot] [PATCH v2 2/2] warp: Add MAX77696 support Fabio Estevam
@ 2015-07-26 10:13 ` Stefano Babic
1 sibling, 0 replies; 4+ messages in thread
From: Stefano Babic @ 2015-07-26 10:13 UTC (permalink / raw)
To: u-boot
On 22/07/2015 02:47, Fabio Estevam wrote:
> From: Fabio Estevam <fabio.estevam@freescale.com>
>
> Add support for MAX77696 PMIC.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
> Changes since v1:
> - Fix the range of PMIC registers
>
> drivers/power/pmic/Makefile | 1 +
> drivers/power/pmic/pmic_max77696.c | 32 ++++++++++++++++++++
> include/power/max77696_pmic.h | 61 ++++++++++++++++++++++++++++++++++++++
> 3 files changed, 94 insertions(+)
> create mode 100644 drivers/power/pmic/pmic_max77696.c
> create mode 100644 include/power/max77696_pmic.h
>
> diff --git a/drivers/power/pmic/Makefile b/drivers/power/pmic/Makefile
> index ae86f04..4ad6df3 100644
> --- a/drivers/power/pmic/Makefile
> +++ b/drivers/power/pmic/Makefile
> @@ -9,6 +9,7 @@ obj-$(CONFIG_DM_PMIC) += pmic-uclass.o
> obj-$(CONFIG_DM_PMIC_MAX77686) += max77686.o
> obj-$(CONFIG_DM_PMIC_SANDBOX) += sandbox.o i2c_pmic_emul.o
> obj-$(CONFIG_POWER_LTC3676) += pmic_ltc3676.o
> +obj-$(CONFIG_POWER_MAX77696) += pmic_max77696.o
> obj-$(CONFIG_POWER_MAX8998) += pmic_max8998.o
> obj-$(CONFIG_POWER_MAX8997) += pmic_max8997.o
> obj-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o
> diff --git a/drivers/power/pmic/pmic_max77696.c b/drivers/power/pmic/pmic_max77696.c
> new file mode 100644
> index 0000000..93d92f5
> --- /dev/null
> +++ b/drivers/power/pmic/pmic_max77696.c
> @@ -0,0 +1,32 @@
> +/*
> + * Copyright (C) 2015 Freescale Semiconductor, Inc.
> + * Fabio Estevam <fabio.estevam@freescale.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <errno.h>
> +#include <i2c.h>
> +#include <power/pmic.h>
> +#include <power/max77696_pmic.h>
> +
> +int power_max77696_init(unsigned char bus)
> +{
> + static const char name[] = "MAX77696";
> + struct pmic *p = pmic_alloc();
> +
> + if (!p) {
> + printf("%s: POWER allocation error!\n", __func__);
> + return -ENOMEM;
> + }
> +
> + p->name = name;
> + p->interface = PMIC_I2C;
> + p->number_of_regs = PMIC_NUM_OF_REGS;
> + p->hw.i2c.addr = CONFIG_POWER_MAX77696_I2C_ADDR;
> + p->hw.i2c.tx_num = 1;
> + p->bus = bus;
> +
> + return 0;
> +}
> diff --git a/include/power/max77696_pmic.h b/include/power/max77696_pmic.h
> new file mode 100644
> index 0000000..58f295c
> --- /dev/null
> +++ b/include/power/max77696_pmic.h
> @@ -0,0 +1,61 @@
> +/*
> + * Copyright (C) 2015 Freescale Semiconductor, Inc.
> + * Fabio Estevam <fabio.estevam@freescale.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#ifndef __MAX77696_PMIC_H__
> +#define __MAX77696_PMIC_H__
> +
> +#define CONFIG_POWER_MAX77696_I2C_ADDR 0x3C
> +
> +enum {
> + L01_CNFG1 = 0x43,
> + L01_CNFG2,
> + L02_CNFG1,
> + L02_CNFG2,
> + L03_CNFG1,
> + L03_CNFG2,
> + L04_CNFG1,
> + L04_CNFG2,
> + L05_CNFG1,
> + L05_CNFG2,
> + L06_CNFG1,
> + L06_CNFG2,
> + L07_CNFG1,
> + L07_CNFG2,
> + L08_CNFG1,
> + L08_CNFG2,
> + L09_CNFG1,
> + L09_CNFG2,
> + L10_CNFG1,
> + L10_CNFG2,
> + LDO_INT1,
> + LDO_INT2,
> + LDO_INT1M,
> + LDO_INT2M,
> + LDO_CNFG3,
> + SW1_CNTRL,
> + SW2_CNTRL,
> + SW3_CNTRL,
> + SW4_CNTRL,
> + EPDCNFG,
> + EPDINTS,
> + EPDINT,
> + EPDINTM,
> + EPDVCOM,
> + EPDVEE,
> + EPDVNEG,
> + EPDVPOS,
> + EPDVDDH,
> + EPDSEQ,
> + EPDOKINTS,
> + CID = 0x9c,
> + EPDDIS = 0xb5,
> + PMIC_NUM_OF_REGS,
> +};
> +
> +int power_max77696_init(unsigned char bus);
> +
> +#endif
>
Applied to u-boot-imx, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v2 2/2] warp: Add MAX77696 support
2015-07-22 0:47 ` [U-Boot] [PATCH v2 2/2] warp: Add MAX77696 support Fabio Estevam
@ 2015-07-26 10:14 ` Stefano Babic
0 siblings, 0 replies; 4+ messages in thread
From: Stefano Babic @ 2015-07-26 10:14 UTC (permalink / raw)
To: u-boot
On 22/07/2015 02:47, Fabio Estevam wrote:
> From: Fabio Estevam <fabio.estevam@freescale.com>
>
> Warp has a MAX77696 PMIC connected via I2C1 bus.
>
> Add support for it.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
> Changes since v1:
> - None
>
> board/warp/warp.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
> include/configs/warp.h | 11 +++++++++++
> 2 files changed, 61 insertions(+)
>
> diff --git a/board/warp/warp.c b/board/warp/warp.c
> index 21ac5e7..49dfdb6 100644
> --- a/board/warp/warp.c
> +++ b/board/warp/warp.c
> @@ -15,13 +15,17 @@
> #include <asm/arch/sys_proto.h>
> #include <asm/gpio.h>
> #include <asm/imx-common/iomux-v3.h>
> +#include <asm/imx-common/mxc_i2c.h>
> #include <asm/io.h>
> #include <linux/sizes.h>
> #include <common.h>
> #include <watchdog.h>
> #include <fsl_esdhc.h>
> +#include <i2c.h>
> #include <mmc.h>
> #include <usb.h>
> +#include <power/pmic.h>
> +#include <power/max77696_pmic.h>
>
> DECLARE_GLOBAL_DATA_PTR;
>
> @@ -35,6 +39,11 @@ DECLARE_GLOBAL_DATA_PTR;
> PAD_CTL_SRE_FAST | PAD_CTL_HYS | \
> PAD_CTL_LVE)
>
> +#define I2C_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
> + PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
> + PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \
> + PAD_CTL_ODE | PAD_CTL_SRE_FAST)
> +
> int dram_init(void)
> {
> gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
> @@ -88,6 +97,45 @@ int board_usb_phy_mode(int port)
> return USB_INIT_DEVICE;
> }
>
> +/* I2C1 for PMIC */
> +#define I2C_PMIC 0
> +#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
> +struct i2c_pads_info i2c_pad_info1 = {
> + .sda = {
> + .i2c_mode = MX6_PAD_I2C1_SDA__I2C1_SDA | PC,
> + .gpio_mode = MX6_PAD_I2C1_SDA__GPIO_3_13 | PC,
> + .gp = IMX_GPIO_NR(3, 13),
> + },
> + .scl = {
> + .i2c_mode = MX6_PAD_I2C1_SCL__I2C1_SCL | PC,
> + .gpio_mode = MX6_PAD_I2C1_SCL__GPIO_3_12 | PC,
> + .gp = IMX_GPIO_NR(3, 12),
> + },
> +};
> +
> +int power_init_board(void)
> +{
> + struct pmic *p;
> + int ret;
> + unsigned int reg;
> +
> + ret = power_max77696_init(I2C_PMIC);
> + if (ret)
> + return ret;
> +
> + p = pmic_get("MAX77696");
> + if (!p)
> + return -EINVAL;
> +
> + ret = pmic_reg_read(p, CID, ®);
> + if (ret)
> + return ret;
> +
> + printf("PMIC: MAX77696 detected, rev=0x%x\n", reg);
> +
> + return pmic_probe(p);
> +}
> +
> int board_early_init_f(void)
> {
> setup_iomux_uart();
> @@ -99,6 +147,8 @@ int board_init(void)
> /* address of boot parameters */
> gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
>
> + setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
> +
> return 0;
> }
>
> diff --git a/include/configs/warp.h b/include/configs/warp.h
> index 48e2058..f38f781 100644
> --- a/include/configs/warp.h
> +++ b/include/configs/warp.h
> @@ -98,6 +98,17 @@
> #define CONFIG_CMD_FUSE
> #define CONFIG_MXC_OCOTP
>
> +/* I2C Configs */
> +#define CONFIG_CMD_I2C
> +#define CONFIG_SYS_I2C
> +#define CONFIG_SYS_I2C_MXC
> +#define CONFIG_SYS_I2C_SPEED 100000
> +
> +/* PMIC */
> +#define CONFIG_POWER
> +#define CONFIG_POWER_I2C
> +#define CONFIG_POWER_MAX77696
> +
> #define CONFIG_EXTRA_ENV_SETTINGS \
> "script=boot.scr\0" \
> "image=zImage\0" \
>
Applied to u-boot-imx, thanks !
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-07-26 10:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-22 0:47 [U-Boot] [PATCH v2 1/2] power: pmic: Add support for MAX77696 PMIC Fabio Estevam
2015-07-22 0:47 ` [U-Boot] [PATCH v2 2/2] warp: Add MAX77696 support Fabio Estevam
2015-07-26 10:14 ` Stefano Babic
2015-07-26 10:13 ` [U-Boot] [PATCH v2 1/2] power: pmic: Add support for MAX77696 PMIC Stefano Babic
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.