This header file is created to provide user generic macros for
providing regulator supplies and regulator init data. Wrappers
are created using these macros which could be used in default
scenarios. In other cases, user can use the macros to provide
his own configuration information.

Wrappers are created only for TWL4030/TPS65950 right now. For
other PMICs, they will be added later on.

Signed-off-by: Anuj Aggarwal <[email protected]>
---
 arch/arm/mach-omap2/board-omap35x-pmic.h |  191 ++++++++++++++++++++++++++++++
 1 files changed, 191 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/mach-omap2/board-omap35x-pmic.h

diff --git a/arch/arm/mach-omap2/board-omap35x-pmic.h 
b/arch/arm/mach-omap2/board-omap35x-pmic.h
new file mode 100644
index 0000000..a370fdd
--- /dev/null
+++ b/arch/arm/mach-omap2/board-omap35x-pmic.h
@@ -0,0 +1,191 @@
+/*
+ * board-omap35x-pmic.h
+ *
+ * Macros to create regulator supplies and regulator init data, along with the
+ * default wrappers for various TI PMICs like TWL4030/TPS65950, TPS65023 etc.
+ *
+ * Copyright (C) 2009 Texas Instrument Incorporated - http://www.ti.com/
+ *
+ * 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 version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any kind,
+ * whether express or implied; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ */
+
+#include <linux/regulator/driver.h>
+#include <linux/regulator/machine.h>
+#include <linux/platform_device.h>
+#include <plat/common.h>
+
+/* Create supplies for a specific regulator */
+#define REGULATOR_COMSUMER_START(regulator) \
+       static struct regulator_consumer_supply regulator##_consumers[]
+/* Add/define supplies to the specific regulator */
+#define REGULATOR_COMSUMER_DEFINE(s, device) \
+               { \
+                       .supply = #s, \
+                       .dev = device, \
+               }
+
+/* Define regulator with no supplies attached to it */
+#define REGULATOR_CONSUMER_NO_SUPPLY(regulator) \
+       REGULATOR_COMSUMER_START(regulator) = {}
+
+/* Define regulator with a single supply attached to it */
+#define REGULATOR_CONSUMER_SINGLE_SUPPLY(regulator, s, device) \
+       REGULATOR_COMSUMER_START(regulator) = { \
+       REGULATOR_COMSUMER_DEFINE(s, device), \
+       }
+
+/* Define regulator with multiple supplies attached to it like */
+       /*
+       REGULATOR_COMSUMER_START(name) = {
+       REGULATOR_COMSUMER_DEFINE(supply, device),
+       REGULATOR_COMSUMER_DEFINE(supply, device),
+       REGULATOR_COMSUMER_DEFINE(supply, device),
+       }
+       */
+
+/* Define regulation constraints */
+#define REGULATOR_CONSTRAINTS(n, min, max, modes, ops, apply_uv_f) \
+               { \
+                       .name = #n, \
+                       .min_uV = min, \
+                       .max_uV = max, \
+                       .valid_modes_mask = modes, \
+                       .valid_ops_mask = ops, \
+                       .apply_uV = apply_uv_f, \
+               },
+
+/* Declare the regulator initialization data */
+#define REGULATOR_INIT_DATA_START(regulator) \
+       static struct regulator_init_data regulator##_data[]
+
+/* Populate various fields in the regulator initialization data */
+#define REGULATOR_INIT_DATA_DEFINE(regulator, n, min, max, modes, ops, \
+               apply_uv_f) \
+       { \
+               .constraints = REGULATOR_CONSTRAINTS(n, min, max, modes, ops, \
+                               apply_uv_f) \
+               .num_consumer_supplies = ARRAY_SIZE(regulator##_consumers), \
+               .consumer_supplies = regulator##_consumers, \
+       },
+
+/* Define regulator initialization data */
+#define REGULATOR_INIT_DATA(regulator, n, min, max, modes, ops, apply_uv_f) \
+       REGULATOR_INIT_DATA_START(regulator) = { \
+       REGULATOR_INIT_DATA_DEFINE(regulator, n, min, max, modes, ops, \
+                       apply_uv_f) \
+       }
+
+/*
+ * Default wrappers specific to TWL4030/TPS65950 PMIC
+ */
+#if defined(CONFIG_PMIC_TWL4030) || defined(CONFIG_TWL4030_CORE)
+#define TWL_REGULATOR_MODES_DEFAULT    (REGULATOR_MODE_NORMAL | \
+                                       REGULATOR_MODE_STANDBY)
+#define TWL_REGULATOR_OPS_DEFAULT      (REGULATOR_CHANGE_MODE | \
+                                       REGULATOR_CHANGE_STATUS)
+
+/* Default supplies for TWL4030 regulators */
+#define TWL_VAUX1_SUPPLY       REGULATOR_CONSUMER_SINGLE_SUPPLY(vaux1, \
+                                       vaux1, NULL)
+#define TWL_VAUX2_SUPPLY       REGULATOR_CONSUMER_SINGLE_SUPPLY(vaux2, \
+                                       vaux2, NULL)
+#define TWL_VAUX3_SUPPLY       REGULATOR_CONSUMER_SINGLE_SUPPLY(vaux3, \
+                                       vaux3, NULL)
+#define TWL_VAUX4_SUPPLY       REGULATOR_CONSUMER_SINGLE_SUPPLY(vaux4, \
+                                       vaux4, NULL)
+
+#define TWL_VMMC1_SUPPLY       REGULATOR_CONSUMER_SINGLE_SUPPLY(vmmc1, \
+                                       vmmc, NULL)
+#define TWL_VMMC2_SUPPLY       REGULATOR_CONSUMER_SINGLE_SUPPLY(vmmc2, \
+                                       vmmc, NULL)
+
+#define TWL_VPLL1_SUPPLY       REGULATOR_CONSUMER_SINGLE_SUPPLY(vpll1, \
+                                       vpll1, NULL)
+#define TWL_VPLL2_SUPPLY       REGULATOR_CONSUMER_SINGLE_SUPPLY(vpll2, \
+                                       vdvi, NULL)
+
+#define TWL_VSIM_SUPPLY                REGULATOR_CONSUMER_SINGLE_SUPPLY(vsim, \
+                                       vmmc_aux, NULL)
+#define TWL_VDAC_SUPPLY                REGULATOR_CONSUMER_SINGLE_SUPPLY(vdac, \
+                                       vdac, NULL)
+
+/* Default initialization data for TWL4030 regulators */
+/* VAUX1 */
+#define TWL_VAUX1_DATA REGULATOR_INIT_DATA(vaux1, VAUX1, 2800000, 2800000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               true)
+
+/* VAUX2 */
+#define TWL_VAUX2_DATA REGULATOR_INIT_DATA(vaux2, VAUX2, 2800000, 2800000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               true)
+
+/* VAUX3 */
+#define TWL_VAUX3_DATA REGULATOR_INIT_DATA(vaux3, VAUX3, 2800000, 2800000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               true)
+
+/* VAUX4 */
+#define TWL_VAUX4_DATA REGULATOR_INIT_DATA(vaux4, VAUX4, 1800000, 1800000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               true)
+
+/* VMMC1 */
+#define TWL_VMMC1_DATA REGULATOR_INIT_DATA(vmmc1, VMMC1, 1850000, 3150000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               true)
+
+/* VMMC2 */
+#define TWL_VMMC2_DATA REGULATOR_INIT_DATA(vmmc2, VMMC2, 1850000, 1850000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               true)
+
+/* VPLL1 */
+#define TWL_VPLL1_DATA REGULATOR_INIT_DATA(vpll1, VPLL1, 1300000, 1300000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               true)
+
+/* VPLL2 */
+#define TWL_VPLL2_DATA REGULATOR_INIT_DATA(vpll2, VDVI, 1800000, 1800000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               false)
+
+/* VSIM */
+#define TWL_VSIM_DATA  REGULATOR_INIT_DATA(vsim, VSIM, 1800000, 3000000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               false)
+
+/* VDAC */
+#define TWL_VDAC_DATA  REGULATOR_INIT_DATA(vdac, VDAC, 1800000, 1800000, \
+                                               TWL_REGULATOR_MODES_DEFAULT, \
+                                               TWL_REGULATOR_OPS_DEFAULT, \
+                                               true)
+#endif /* CONFIG_PMIC_TWL4030 || CONFIG_TWL4030_CORE */
+
+/*
+ * Definitions specific to TPS65023
+ */
+#if defined(CONFIG_PMIC_TPS65023)
+#endif /* CONFIG_PMIC_TPS65023 */
+
+/*
+ * Definitions specific to TPS65073
+ */
+#if defined(CONFIG_PMIC_TPS65073)
+#endif /* CONFIG_PMIC_TPS65073 */
-- 
1.6.2.4

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to