[U-Boot] [PATCH 1/2] misc:max8998 Support for MAX8998 PMIC driver
Lukasz Majewski
l.majewski at samsung.com
Thu Sep 1 11:13:31 CEST 2011
This commit adds support for MAX8998 driver. CONFIG_MAX8998_PMIC
flag shall be defined on an architecture supporting it.
Signed-off-by: Lukasz Majewski <l.majewski at samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
Cc: Minkyu Kang <mk7.kang at samsung.com>
Cc: Wolfgang Denk <wd at denx.de>
---
drivers/misc/Makefile | 1 +
drivers/misc/max8998_pmic.c | 74 ++++++++++++++++++++++++++++++++++++
include/max8998_pmic.h | 87 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 162 insertions(+), 0 deletions(-)
create mode 100644 drivers/misc/max8998_pmic.c
create mode 100644 include/max8998_pmic.h
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index b152486..551bea9 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -35,6 +35,7 @@ COBJS-$(CONFIG_NS87308) += ns87308.o
COBJS-$(CONFIG_PDSP188x) += pdsp188x.o
COBJS-$(CONFIG_STATUS_LED) += status_led.o
COBJS-$(CONFIG_TWL4030_LED) += twl4030_led.o
+COBJS-$(CONFIG_MAX8998_PMIC) += max8998_pmic.o
COBJS := $(COBJS-y)
SRCS := $(COBJS:.o=.c)
diff --git a/drivers/misc/max8998_pmic.c b/drivers/misc/max8998_pmic.c
new file mode 100644
index 0000000..0600976
--- /dev/null
+++ b/drivers/misc/max8998_pmic.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2011 Samsung Electronics
+ * Lukasz Majewski <l.majewski at samsung.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <i2c.h>
+#include <max8998_pmic.h>
+
+static int max8998_read_reg(unsigned int reg, unsigned char *val)
+{
+ if (i2c_read(MAX8998_I2C_ADDR, reg, 1, val, 1))
+ return -1;
+
+ return 0;
+}
+
+static int max8998_write_reg(unsigned int reg, unsigned char *val)
+{
+
+ if (i2c_write(MAX8998_I2C_ADDR, reg, 1, val, 1))
+ return -1;
+
+ return 0;
+}
+
+int max8998_probe(void)
+{
+ i2c_set_bus_num(I2C_PMIC);
+
+ if (i2c_probe(MAX8998_I2C_ADDR)) {
+ puts("Can't find max8998\n");
+ return 1;
+ }
+
+ return 0;
+}
+
+int max8998_set_ldo(unsigned int reg, unsigned char ldo, int on)
+{
+ unsigned char val;
+
+ if (max8998_read_reg(reg, &val))
+ return -1;
+
+ if (on)
+ val |= ldo;
+ else
+ val &= ~ldo;
+
+ if (max8998_write_reg(reg, &val))
+ return -1;
+
+ printf("MAX ONOFF1: val:0x%x\n", val);
+ return 0;
+}
diff --git a/include/max8998_pmic.h b/include/max8998_pmic.h
new file mode 100644
index 0000000..1a4281d
--- /dev/null
+++ b/include/max8998_pmic.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2011 Samsung Electronics
+ * Lukasz Majewski <l.majewski at samsung.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __MAX8998_PMIC_H_
+#define __MAX8998_PMIC_H_
+
+/* MAX 8998 registers */
+enum {
+ MAX8998_REG_IRQ1,
+ MAX8998_REG_IRQ2,
+ MAX8998_REG_IRQ3,
+ MAX8998_REG_IRQ4,
+ MAX8998_REG_IRQM1,
+ MAX8998_REG_IRQM2,
+ MAX8998_REG_IRQM3,
+ MAX8998_REG_IRQM4,
+ MAX8998_REG_STATUS1,
+ MAX8998_REG_STATUS2,
+ MAX8998_REG_STATUSM1,
+ MAX8998_REG_STATUSM2,
+ MAX8998_REG_CHGR1,
+ MAX8998_REG_CHGR2,
+ MAX8998_REG_LDO_ACTIVE_DISCHARGE1,
+ MAX8998_REG_LDO_ACTIVE_DISCHARGE2,
+ MAX8998_REG_BUCK_ACTIVE_DISCHARGE3,
+ MAX8998_REG_ONOFF1,
+ MAX8998_REG_ONOFF2,
+ MAX8998_REG_ONOFF3,
+ MAX8998_REG_ONOFF4,
+ MAX8998_REG_BUCK1_VOLTAGE1,
+ MAX8998_REG_BUCK1_VOLTAGE2,
+ MAX8998_REG_BUCK1_VOLTAGE3,
+ MAX8998_REG_BUCK1_VOLTAGE4,
+ MAX8998_REG_BUCK2_VOLTAGE1,
+ MAX8998_REG_BUCK2_VOLTAGE2,
+ MAX8998_REG_BUCK3,
+ MAX8998_REG_BUCK4,
+ MAX8998_REG_LDO2_LDO3,
+ MAX8998_REG_LDO4,
+ MAX8998_REG_LDO5,
+ MAX8998_REG_LDO6,
+ MAX8998_REG_LDO7,
+ MAX8998_REG_LDO8_LDO9,
+ MAX8998_REG_LDO10_LDO11,
+ MAX8998_REG_LDO12,
+ MAX8998_REG_LDO13,
+ MAX8998_REG_LDO14,
+ MAX8998_REG_LDO15,
+ MAX8998_REG_LDO16,
+ MAX8998_REG_LDO17,
+ MAX8998_REG_BKCHR,
+ MAX8998_REG_LBCNFG1,
+ MAX8998_REG_LBCNFG2,
+};
+
+#define MAX8998_LDO3 (1 << 2)
+#define MAX8998_LDO8 (1 << 5)
+
+#define MAX8998_I2C_ADDR (0xCC >> 1)
+
+enum { LDO_OFF, LDO_ON };
+enum { I2C_PMIC, I2C_NUM, };
+
+int max8998_probe(void);
+int max8998_set_ldo(unsigned int reg, unsigned char ldo, int on);
+
+#endif /* __MAX8998_PMIC_H_ */
--
1.7.2.3
More information about the U-Boot
mailing list