[U-Boot] [PATCH 3/4] power: Add support for LTC3676 PMIC

Tim Harvey tharvey at gateworks.com
Wed Apr 23 06:53:58 CEST 2014


The LTC3676 PMIC includes four DC/DC converters, and three 300mA
LDO Regulators (two Adjustable). The DC/DC converters are adjustable based
on a resistor devider (board-specific).

This adds support for the LTC3676 by creating a namespace unique init function
that uses the PMIC API to allocate a pmic and defines the registers.

Signed-off-by: Tim Harvey <tharvey at gateworks.com>
---
 drivers/power/pmic/Makefile       |  1 +
 drivers/power/pmic/pmic_ltc3676.c | 32 ++++++++++++++++++++++++
 include/power/ltc3676_pmic.h      | 51 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 84 insertions(+)
 create mode 100644 drivers/power/pmic/pmic_ltc3676.c
 create mode 100644 include/power/ltc3676_pmic.h

diff --git a/drivers/power/pmic/Makefile b/drivers/power/pmic/Makefile
index 4129bda..920bbdc 100644
--- a/drivers/power/pmic/Makefile
+++ b/drivers/power/pmic/Makefile
@@ -5,6 +5,7 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
+obj-$(CONFIG_POWER_LTC3676) += pmic_ltc3676.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_ltc3676.c b/drivers/power/pmic/pmic_ltc3676.c
new file mode 100644
index 0000000..9b874cb
--- /dev/null
+++ b/drivers/power/pmic/pmic_ltc3676.c
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2014 Gateworks Corporation
+ * Tim Harvey <tharvey at gateworks.com>
+ *
+ * SPDX-License-Identifier:      GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <i2c.h>
+#include <power/pmic.h>
+#include <power/ltc3676_pmic.h>
+
+int power_ltc3676_init(unsigned char bus)
+{
+	static const char name[] = "LTC3676_PMIC";
+	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 = LTC3676_NUM_OF_REGS;
+	p->hw.i2c.addr = CONFIG_POWER_LTC3676_I2C_ADDR;
+	p->hw.i2c.tx_num = 1;
+	p->bus = bus;
+
+	return 0;
+}
diff --git a/include/power/ltc3676_pmic.h b/include/power/ltc3676_pmic.h
new file mode 100644
index 0000000..dcaa985
--- /dev/null
+++ b/include/power/ltc3676_pmic.h
@@ -0,0 +1,51 @@
+/*
+ *  Copyright (C) 2014 Gateworks Corporation
+ *  Tim Harvey <tharvey at gateworks.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __LTC3676_PMIC_H_
+#define __LTC3676_PMIC_H_
+
+/* LTC3676 registers */
+enum {
+	LTC3676_BUCK1	= 0x01,
+	LTC3676_BUCK2	= 0x02,
+	LTC3676_BUCK3	= 0x03,
+	LTC3676_BUCK4	= 0x04,
+	LTC3676_LDOA	= 0x05,
+	LTC3676_LDOB	= 0x06,
+	LTC3676_SQD1	= 0x07,
+	LTC3676_SQD2	= 0x08,
+	LTC3676_CNTRL	= 0x09,
+	LTC3676_DVB1A	= 0x0A,
+	LTC3676_DVB1B	= 0x0B,
+	LTC3676_DVB2A	= 0x0C,
+	LTC3676_DVB2B	= 0x0D,
+	LTC3676_DVB3A	= 0x0E,
+	LTC3676_DVB3B	= 0x0F,
+	LTC3676_DVB4A	= 0x10,
+	LTC3676_DVB4B	= 0x11,
+	LTC3676_MSKIRQ	= 0x12,
+	LTC3676_MSKPG	= 0x13,
+	LTC3676_USER	= 0x14,
+	LTC3676_HRST	= 0x1E,
+	LTC3676_CLIRQ	= 0x1F,
+	LTC3676_IRQSTAT	= 0x15,
+	LTC3676_PGSTATL	= 0x16,
+	LTC3676_PGSTATR	= 0x17,
+	LTC3676_NUM_OF_REGS = 0x20,
+};
+
+/*
+ * SW Configuration
+ */
+
+#define LTC3676_DVB_MASK	0x1f
+#define LTC3676_PGOOD_MASK	(1<<5)
+#define LTC3676_REF_SELA	(0<<5)
+#define LTC3676_REF_SELB	(1<<5)
+
+int power_ltc3676_init(unsigned char bus);
+#endif
-- 
1.8.3.2



More information about the U-Boot mailing list