[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