Skip to contentSkip to conversation

API to select twl4030 voltage and dev group

PATCH New Syed Mohammed Khasim 1 participant 1 message Jan 9, 2010

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 API to select twl4030 voltage and dev group

Adds a new API "twl4030_pmrecv_vsel_cfg" to select voltage and its device group

---
 drivers/power/twl4030.c |   24 +++++++++++++++---------
 include/twl4030.h       |   16 ++++++++++++++++
 2 files changed, 31 insertions(+), 9 deletions(-)
drivers/power/twl4030.c +15 -9
index eb066cb..d68e515 100644
@@ -59,16 +59,9 @@ void twl4030_power_reset_init(void)
 	}
 }
 
-
 /*
  * Power Init
  */
-#define DEV_GRP_P1		0x20
-#define VAUX3_VSEL_28		0x03
-#define DEV_GRP_ALL		0xE0
-#define VPLL2_VSEL_18		0x05
-#define VDAC_VSEL_18		0x03
-
 void twl4030_power_init(void)
 {
 	unsigned char byte;
@@ -98,8 +91,6 @@ void twl4030_power_init(void)
 			     TWL4030_PM_RECEIVER_VDAC_DEDICATED);
 }
 
-#define VMMC1_VSEL_30		0x02
-
 void twl4030_power_mmc_init(void)
 {
 	unsigned char byte;
@@ -113,3 +104,18 @@ void twl4030_power_mmc_init(void)
 	twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, byte,
 			     TWL4030_PM_RECEIVER_VMMC1_DEDICATED);
 }
+
+/*
+ * Generic function to select Device Group and Voltage
+ */
+void twl4030_pmrecv_vsel_cfg(u8 vsel_reg, u8 vsel_val,
+				u8 dev_grp, u8 dev_grp_sel)
+{
+	/* Select the Device Group */
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, dev_grp_sel,
+				dev_grp);
+
+	/* Select the Voltage */
+	twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, vsel_val,
+				vsel_reg);
+}
include/twl4030.h +16 -0
index f260ecb..b96c96c 100644
@@ -359,6 +359,22 @@
 #define TWL4030_USB_PHY_DPLL_CLK			(1 << 0)
 
 /*
+ * Voltage Selection in PM Receiver Module
+ */
+#define VAUX2_VSEL_18		0x05
+#define VDD1_VSEL_14		0x40
+#define VAUX3_VSEL_28		0x03
+#define VPLL2_VSEL_18		0x05
+#define VDAC_VSEL_18		0x03
+#define VMMC1_VSEL_30		0x02
+
+/*
+ * Device Selection
+ */
+#define DEV_GRP_P1		0x20
+#define DEV_GRP_ALL		0xE0
+
+/*
  * Convience functions to read and write from TWL4030
  *
  * chip_no is the i2c address, it must be one of the chip addresses
Signature · 1 line
1.5.6.3