aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/boot/dts/kirkwood-dns320.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood-dns325.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood-dreamplug.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood-ib62x0.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood-iconnect.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood.dtsi6
-rw-r--r--arch/arm/boot/dts/tegra20-trimslice.dts2
-rw-r--r--arch/arm/mach-dove/common.c4
-rw-r--r--arch/arm/mach-kirkwood/common.c70
-rw-r--r--arch/arm/mach-mxs/mach-mxs.c8
-rw-r--r--arch/arm/mach-tegra/board-harmony-power.c33
12 files changed, 89 insertions, 46 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index b25c9d3c379a..9124ff75fe53 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -279,7 +279,6 @@ config ARCH_INTEGRATOR
279 select ICST 279 select ICST
280 select GENERIC_CLOCKEVENTS 280 select GENERIC_CLOCKEVENTS
281 select PLAT_VERSATILE 281 select PLAT_VERSATILE
282 select PLAT_VERSATILE_CLOCK
283 select PLAT_VERSATILE_FPGA_IRQ 282 select PLAT_VERSATILE_FPGA_IRQ
284 select NEED_MACH_IO_H 283 select NEED_MACH_IO_H
285 select NEED_MACH_MEMORY_H 284 select NEED_MACH_MEMORY_H
@@ -336,7 +335,6 @@ config ARCH_VEXPRESS
336 select ICST 335 select ICST
337 select NO_IOPORT 336 select NO_IOPORT
338 select PLAT_VERSATILE 337 select PLAT_VERSATILE
339 select PLAT_VERSATILE_CLOCK
340 select PLAT_VERSATILE_CLCD 338 select PLAT_VERSATILE_CLCD
341 select REGULATOR_FIXED_VOLTAGE if REGULATOR 339 select REGULATOR_FIXED_VOLTAGE if REGULATOR
342 help 340 help
diff --git a/arch/arm/boot/dts/kirkwood-dns320.dts b/arch/arm/boot/dts/kirkwood-dns320.dts
index dc09a735b04a..9a33077130e8 100644
--- a/arch/arm/boot/dts/kirkwood-dns320.dts
+++ b/arch/arm/boot/dts/kirkwood-dns320.dts
@@ -4,7 +4,7 @@
4 4
5/ { 5/ {
6 model = "D-Link DNS-320 NAS (Rev A1)"; 6 model = "D-Link DNS-320 NAS (Rev A1)";
7 compatible = "dlink,dns-320-a1", "dlink,dns-320", "dlink,dns-kirkwood", "mrvl,kirkwood-88f6281", "mrvl,kirkwood"; 7 compatible = "dlink,dns-320-a1", "dlink,dns-320", "dlink,dns-kirkwood", "marvell,kirkwood-88f6281", "marvell,kirkwood";
8 8
9 memory { 9 memory {
10 device_type = "memory"; 10 device_type = "memory";
diff --git a/arch/arm/boot/dts/kirkwood-dns325.dts b/arch/arm/boot/dts/kirkwood-dns325.dts
index c2a5562525d2..16734c1b5dfe 100644
--- a/arch/arm/boot/dts/kirkwood-dns325.dts
+++ b/arch/arm/boot/dts/kirkwood-dns325.dts
@@ -4,7 +4,7 @@
4 4
5/ { 5/ {
6 model = "D-Link DNS-325 NAS (Rev A1)"; 6 model = "D-Link DNS-325 NAS (Rev A1)";
7 compatible = "dlink,dns-325-a1", "dlink,dns-325", "dlink,dns-kirkwood", "mrvl,kirkwood-88f6281", "mrvl,kirkwood"; 7 compatible = "dlink,dns-325-a1", "dlink,dns-325", "dlink,dns-kirkwood", "marvell,kirkwood-88f6281", "marvell,kirkwood";
8 8
9 memory { 9 memory {
10 device_type = "memory"; 10 device_type = "memory";
diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts
index a5376b84227f..78b0f06a09a2 100644
--- a/arch/arm/boot/dts/kirkwood-dreamplug.dts
+++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts
@@ -4,7 +4,7 @@
4 4
5/ { 5/ {
6 model = "Globalscale Technologies Dreamplug"; 6 model = "Globalscale Technologies Dreamplug";
7 compatible = "globalscale,dreamplug-003-ds2001", "globalscale,dreamplug", "mrvl,kirkwood-88f6281", "mrvl,kirkwood"; 7 compatible = "globalscale,dreamplug-003-ds2001", "globalscale,dreamplug", "marvell,kirkwood-88f6281", "marvell,kirkwood";
8 8
9 memory { 9 memory {
10 device_type = "memory"; 10 device_type = "memory";
diff --git a/arch/arm/boot/dts/kirkwood-ib62x0.dts b/arch/arm/boot/dts/kirkwood-ib62x0.dts
index ada0f0c23085..f59dcf6dc45f 100644
--- a/arch/arm/boot/dts/kirkwood-ib62x0.dts
+++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts
@@ -4,7 +4,7 @@
4 4
5/ { 5/ {
6 model = "RaidSonic ICY BOX IB-NAS62x0 (Rev B)"; 6 model = "RaidSonic ICY BOX IB-NAS62x0 (Rev B)";
7 compatible = "raidsonic,ib-nas6210-b", "raidsonic,ib-nas6220-b", "raidsonic,ib-nas6210", "raidsonic,ib-nas6220", "raidsonic,ib-nas62x0", "mrvl,kirkwood-88f6281", "mrvl,kirkwood"; 7 compatible = "raidsonic,ib-nas6210-b", "raidsonic,ib-nas6220-b", "raidsonic,ib-nas6210", "raidsonic,ib-nas6220", "raidsonic,ib-nas62x0", "marvell,kirkwood-88f6281", "marvell,kirkwood";
8 8
9 memory { 9 memory {
10 device_type = "memory"; 10 device_type = "memory";
diff --git a/arch/arm/boot/dts/kirkwood-iconnect.dts b/arch/arm/boot/dts/kirkwood-iconnect.dts
index 1ba75d4adecc..026a1f82d813 100644
--- a/arch/arm/boot/dts/kirkwood-iconnect.dts
+++ b/arch/arm/boot/dts/kirkwood-iconnect.dts
@@ -4,7 +4,7 @@
4 4
5/ { 5/ {
6 model = "Iomega Iconnect"; 6 model = "Iomega Iconnect";
7 compatible = "iom,iconnect-1.1", "iom,iconnect", "mrvl,kirkwood-88f6281", "mrvl,kirkwood"; 7 compatible = "iom,iconnect-1.1", "iom,iconnect", "marvell,kirkwood-88f6281", "marvell,kirkwood";
8 8
9 memory { 9 memory {
10 device_type = "memory"; 10 device_type = "memory";
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi
index 926528b81baa..f95dbc190ab6 100644
--- a/arch/arm/boot/dts/kirkwood.dtsi
+++ b/arch/arm/boot/dts/kirkwood.dtsi
@@ -1,7 +1,7 @@
1/include/ "skeleton.dtsi" 1/include/ "skeleton.dtsi"
2 2
3/ { 3/ {
4 compatible = "mrvl,kirkwood"; 4 compatible = "marvell,kirkwood";
5 5
6 ocp@f1000000 { 6 ocp@f1000000 {
7 compatible = "simple-bus"; 7 compatible = "simple-bus";
@@ -28,7 +28,7 @@
28 }; 28 };
29 29
30 rtc@10300 { 30 rtc@10300 {
31 compatible = "mrvl,kirkwood-rtc", "mrvl,orion-rtc"; 31 compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc";
32 reg = <0x10300 0x20>; 32 reg = <0x10300 0x20>;
33 interrupts = <53>; 33 interrupts = <53>;
34 }; 34 };
@@ -39,7 +39,7 @@
39 cle = <0>; 39 cle = <0>;
40 ale = <1>; 40 ale = <1>;
41 bank-width = <1>; 41 bank-width = <1>;
42 compatible = "mrvl,orion-nand"; 42 compatible = "marvell,orion-nand";
43 reg = <0x3000000 0x400>; 43 reg = <0x3000000 0x400>;
44 chip-delay = <25>; 44 chip-delay = <25>;
45 /* set partition map and/or chip-delay in board dts */ 45 /* set partition map and/or chip-delay in board dts */
diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts
index 9de5636023f6..27fb8a67ea42 100644
--- a/arch/arm/boot/dts/tegra20-trimslice.dts
+++ b/arch/arm/boot/dts/tegra20-trimslice.dts
@@ -276,9 +276,11 @@
276 276
277 usb@c5000000 { 277 usb@c5000000 {
278 status = "okay"; 278 status = "okay";
279 nvidia,vbus-gpio = <&gpio 170 0>; /* gpio PV2 */
279 }; 280 };
280 281
281 usb@c5004000 { 282 usb@c5004000 {
283 status = "okay";
282 nvidia,phy-reset-gpio = <&gpio 168 0>; /* gpio PV0 */ 284 nvidia,phy-reset-gpio = <&gpio 168 0>; /* gpio PV0 */
283 }; 285 };
284 286
diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
index 9493076fc594..4db5de54b6a7 100644
--- a/arch/arm/mach-dove/common.c
+++ b/arch/arm/mach-dove/common.c
@@ -101,8 +101,8 @@ void __init dove_ehci1_init(void)
101 ****************************************************************************/ 101 ****************************************************************************/
102void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data) 102void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data)
103{ 103{
104 orion_ge00_init(eth_data, 104 orion_ge00_init(eth_data, DOVE_GE00_PHYS_BASE,
105 DOVE_GE00_PHYS_BASE, IRQ_DOVE_GE00_SUM, 0); 105 IRQ_DOVE_GE00_SUM, IRQ_DOVE_GE00_ERR);
106} 106}
107 107
108/***************************************************************************** 108/*****************************************************************************
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
index f261cd242643..c9201539ffbd 100644
--- a/arch/arm/mach-kirkwood/common.c
+++ b/arch/arm/mach-kirkwood/common.c
@@ -67,6 +67,14 @@ void __init kirkwood_map_io(void)
67 * CLK tree 67 * CLK tree
68 ****************************************************************************/ 68 ****************************************************************************/
69 69
70static void enable_sata0(void)
71{
72 /* Enable PLL and IVREF */
73 writel(readl(SATA0_PHY_MODE_2) | 0xf, SATA0_PHY_MODE_2);
74 /* Enable PHY */
75 writel(readl(SATA0_IF_CTRL) & ~0x200, SATA0_IF_CTRL);
76}
77
70static void disable_sata0(void) 78static void disable_sata0(void)
71{ 79{
72 /* Disable PLL and IVREF */ 80 /* Disable PLL and IVREF */
@@ -75,6 +83,14 @@ static void disable_sata0(void)
75 writel(readl(SATA0_IF_CTRL) | 0x200, SATA0_IF_CTRL); 83 writel(readl(SATA0_IF_CTRL) | 0x200, SATA0_IF_CTRL);
76} 84}
77 85
86static void enable_sata1(void)
87{
88 /* Enable PLL and IVREF */
89 writel(readl(SATA1_PHY_MODE_2) | 0xf, SATA1_PHY_MODE_2);
90 /* Enable PHY */
91 writel(readl(SATA1_IF_CTRL) & ~0x200, SATA1_IF_CTRL);
92}
93
78static void disable_sata1(void) 94static void disable_sata1(void)
79{ 95{
80 /* Disable PLL and IVREF */ 96 /* Disable PLL and IVREF */
@@ -107,23 +123,38 @@ static void disable_pcie1(void)
107 } 123 }
108} 124}
109 125
110/* An extended version of the gated clk. This calls fn() before 126/* An extended version of the gated clk. This calls fn_en()/fn_dis
111 * disabling the clock. We use this to turn off PHYs etc. */ 127 * before enabling/disabling the clock. We use this to turn on/off
128 * PHYs etc. */
112struct clk_gate_fn { 129struct clk_gate_fn {
113 struct clk_gate gate; 130 struct clk_gate gate;
114 void (*fn)(void); 131 void (*fn_en)(void);
132 void (*fn_dis)(void);
115}; 133};
116 134
117#define to_clk_gate_fn(_gate) container_of(_gate, struct clk_gate_fn, gate) 135#define to_clk_gate_fn(_gate) container_of(_gate, struct clk_gate_fn, gate)
118#define to_clk_gate(_hw) container_of(_hw, struct clk_gate, hw) 136#define to_clk_gate(_hw) container_of(_hw, struct clk_gate, hw)
119 137
138static int clk_gate_fn_enable(struct clk_hw *hw)
139{
140 struct clk_gate *gate = to_clk_gate(hw);
141 struct clk_gate_fn *gate_fn = to_clk_gate_fn(gate);
142 int ret;
143
144 ret = clk_gate_ops.enable(hw);
145 if (!ret && gate_fn->fn_en)
146 gate_fn->fn_en();
147
148 return ret;
149}
150
120static void clk_gate_fn_disable(struct clk_hw *hw) 151static void clk_gate_fn_disable(struct clk_hw *hw)
121{ 152{
122 struct clk_gate *gate = to_clk_gate(hw); 153 struct clk_gate *gate = to_clk_gate(hw);
123 struct clk_gate_fn *gate_fn = to_clk_gate_fn(gate); 154 struct clk_gate_fn *gate_fn = to_clk_gate_fn(gate);
124 155
125 if (gate_fn->fn) 156 if (gate_fn->fn_dis)
126 gate_fn->fn(); 157 gate_fn->fn_dis();
127 158
128 clk_gate_ops.disable(hw); 159 clk_gate_ops.disable(hw);
129} 160}
@@ -135,7 +166,7 @@ static struct clk __init *clk_register_gate_fn(struct device *dev,
135 const char *parent_name, unsigned long flags, 166 const char *parent_name, unsigned long flags,
136 void __iomem *reg, u8 bit_idx, 167 void __iomem *reg, u8 bit_idx,
137 u8 clk_gate_flags, spinlock_t *lock, 168 u8 clk_gate_flags, spinlock_t *lock,
138 void (*fn)(void)) 169 void (*fn_en)(void), void (*fn_dis)(void))
139{ 170{
140 struct clk_gate_fn *gate_fn; 171 struct clk_gate_fn *gate_fn;
141 struct clk *clk; 172 struct clk *clk;
@@ -159,11 +190,14 @@ static struct clk __init *clk_register_gate_fn(struct device *dev,
159 gate_fn->gate.flags = clk_gate_flags; 190 gate_fn->gate.flags = clk_gate_flags;
160 gate_fn->gate.lock = lock; 191 gate_fn->gate.lock = lock;
161 gate_fn->gate.hw.init = &init; 192 gate_fn->gate.hw.init = &init;
162 gate_fn->fn = fn; 193 gate_fn->fn_en = fn_en;
194 gate_fn->fn_dis = fn_dis;
163 195
164 /* ops is the gate ops, but with our disable function */ 196 /* ops is the gate ops, but with our enable/disable functions */
165 if (clk_gate_fn_ops.disable != clk_gate_fn_disable) { 197 if (clk_gate_fn_ops.enable != clk_gate_fn_enable ||
198 clk_gate_fn_ops.disable != clk_gate_fn_disable) {
166 clk_gate_fn_ops = clk_gate_ops; 199 clk_gate_fn_ops = clk_gate_ops;
200 clk_gate_fn_ops.enable = clk_gate_fn_enable;
167 clk_gate_fn_ops.disable = clk_gate_fn_disable; 201 clk_gate_fn_ops.disable = clk_gate_fn_disable;
168 } 202 }
169 203
@@ -187,11 +221,12 @@ static struct clk __init *kirkwood_register_gate(const char *name, u8 bit_idx)
187 221
188static struct clk __init *kirkwood_register_gate_fn(const char *name, 222static struct clk __init *kirkwood_register_gate_fn(const char *name,
189 u8 bit_idx, 223 u8 bit_idx,
190 void (*fn)(void)) 224 void (*fn_en)(void),
225 void (*fn_dis)(void))
191{ 226{
192 return clk_register_gate_fn(NULL, name, "tclk", 0, 227 return clk_register_gate_fn(NULL, name, "tclk", 0,
193 (void __iomem *)CLOCK_GATING_CTRL, 228 (void __iomem *)CLOCK_GATING_CTRL,
194 bit_idx, 0, &gating_lock, fn); 229 bit_idx, 0, &gating_lock, fn_en, fn_dis);
195} 230}
196 231
197static struct clk *ge0, *ge1; 232static struct clk *ge0, *ge1;
@@ -208,18 +243,18 @@ void __init kirkwood_clk_init(void)
208 ge0 = kirkwood_register_gate("ge0", CGC_BIT_GE0); 243 ge0 = kirkwood_register_gate("ge0", CGC_BIT_GE0);
209 ge1 = kirkwood_register_gate("ge1", CGC_BIT_GE1); 244 ge1 = kirkwood_register_gate("ge1", CGC_BIT_GE1);
210 sata0 = kirkwood_register_gate_fn("sata0", CGC_BIT_SATA0, 245 sata0 = kirkwood_register_gate_fn("sata0", CGC_BIT_SATA0,
211 disable_sata0); 246 enable_sata0, disable_sata0);
212 sata1 = kirkwood_register_gate_fn("sata1", CGC_BIT_SATA1, 247 sata1 = kirkwood_register_gate_fn("sata1", CGC_BIT_SATA1,
213 disable_sata1); 248 enable_sata1, disable_sata1);
214 usb0 = kirkwood_register_gate("usb0", CGC_BIT_USB0); 249 usb0 = kirkwood_register_gate("usb0", CGC_BIT_USB0);
215 sdio = kirkwood_register_gate("sdio", CGC_BIT_SDIO); 250 sdio = kirkwood_register_gate("sdio", CGC_BIT_SDIO);
216 crypto = kirkwood_register_gate("crypto", CGC_BIT_CRYPTO); 251 crypto = kirkwood_register_gate("crypto", CGC_BIT_CRYPTO);
217 xor0 = kirkwood_register_gate("xor0", CGC_BIT_XOR0); 252 xor0 = kirkwood_register_gate("xor0", CGC_BIT_XOR0);
218 xor1 = kirkwood_register_gate("xor1", CGC_BIT_XOR1); 253 xor1 = kirkwood_register_gate("xor1", CGC_BIT_XOR1);
219 pex0 = kirkwood_register_gate_fn("pex0", CGC_BIT_PEX0, 254 pex0 = kirkwood_register_gate_fn("pex0", CGC_BIT_PEX0,
220 disable_pcie0); 255 NULL, disable_pcie0);
221 pex1 = kirkwood_register_gate_fn("pex1", CGC_BIT_PEX1, 256 pex1 = kirkwood_register_gate_fn("pex1", CGC_BIT_PEX1,
222 disable_pcie1); 257 NULL, disable_pcie1);
223 audio = kirkwood_register_gate("audio", CGC_BIT_AUDIO); 258 audio = kirkwood_register_gate("audio", CGC_BIT_AUDIO);
224 kirkwood_register_gate("tdm", CGC_BIT_TDM); 259 kirkwood_register_gate("tdm", CGC_BIT_TDM);
225 kirkwood_register_gate("tsu", CGC_BIT_TSU); 260 kirkwood_register_gate("tsu", CGC_BIT_TSU);
@@ -241,6 +276,11 @@ void __init kirkwood_clk_init(void)
241 orion_clkdev_add("0", "pcie", pex0); 276 orion_clkdev_add("0", "pcie", pex0);
242 orion_clkdev_add("1", "pcie", pex1); 277 orion_clkdev_add("1", "pcie", pex1);
243 orion_clkdev_add(NULL, "kirkwood-i2s", audio); 278 orion_clkdev_add(NULL, "kirkwood-i2s", audio);
279
280 /* Marvell says runit is used by SPI, UART, NAND, TWSI, ...,
281 * so should never be gated.
282 */
283 clk_prepare_enable(runit);
244} 284}
245 285
246/***************************************************************************** 286/*****************************************************************************
diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c
index 648bdd05d38b..8dabfe81d07c 100644
--- a/arch/arm/mach-mxs/mach-mxs.c
+++ b/arch/arm/mach-mxs/mach-mxs.c
@@ -162,7 +162,7 @@ enum mac_oui {
162static void __init update_fec_mac_prop(enum mac_oui oui) 162static void __init update_fec_mac_prop(enum mac_oui oui)
163{ 163{
164 struct device_node *np, *from = NULL; 164 struct device_node *np, *from = NULL;
165 struct property *oldmac, *newmac; 165 struct property *newmac;
166 const u32 *ocotp = mxs_get_ocotp(); 166 const u32 *ocotp = mxs_get_ocotp();
167 u8 *macaddr; 167 u8 *macaddr;
168 u32 val; 168 u32 val;
@@ -208,11 +208,7 @@ static void __init update_fec_mac_prop(enum mac_oui oui)
208 macaddr[4] = (val >> 8) & 0xff; 208 macaddr[4] = (val >> 8) & 0xff;
209 macaddr[5] = (val >> 0) & 0xff; 209 macaddr[5] = (val >> 0) & 0xff;
210 210
211 oldmac = of_find_property(np, newmac->name, NULL); 211 prom_update_property(np, newmac);
212 if (oldmac)
213 prom_update_property(np, newmac, oldmac);
214 else
215 prom_add_property(np, newmac);
216 } 212 }
217} 213}
218 214
diff --git a/arch/arm/mach-tegra/board-harmony-power.c b/arch/arm/mach-tegra/board-harmony-power.c
index 44dcb2e869b5..8fd387bf31f0 100644
--- a/arch/arm/mach-tegra/board-harmony-power.c
+++ b/arch/arm/mach-tegra/board-harmony-power.c
@@ -19,6 +19,7 @@
19#include <linux/platform_device.h> 19#include <linux/platform_device.h>
20#include <linux/gpio.h> 20#include <linux/gpio.h>
21#include <linux/regulator/machine.h> 21#include <linux/regulator/machine.h>
22#include <linux/regulator/fixed.h>
22#include <linux/mfd/tps6586x.h> 23#include <linux/mfd/tps6586x.h>
23#include <linux/of.h> 24#include <linux/of.h>
24#include <linux/of_i2c.h> 25#include <linux/of_i2c.h>
@@ -34,7 +35,9 @@ static struct regulator_consumer_supply tps658621_ldo0_supply[] = {
34}; 35};
35 36
36static struct regulator_init_data ldo0_data = { 37static struct regulator_init_data ldo0_data = {
38 .supply_regulator = "vdd_sm2",
37 .constraints = { 39 .constraints = {
40 .name = "vdd_ldo0",
38 .min_uV = 3300 * 1000, 41 .min_uV = 3300 * 1000,
39 .max_uV = 3300 * 1000, 42 .max_uV = 3300 * 1000,
40 .valid_modes_mask = (REGULATOR_MODE_NORMAL | 43 .valid_modes_mask = (REGULATOR_MODE_NORMAL |
@@ -48,9 +51,11 @@ static struct regulator_init_data ldo0_data = {
48 .consumer_supplies = tps658621_ldo0_supply, 51 .consumer_supplies = tps658621_ldo0_supply,
49}; 52};
50 53
51#define HARMONY_REGULATOR_INIT(_id, _minmv, _maxmv) \ 54#define HARMONY_REGULATOR_INIT(_id, _name, _supply, _minmv, _maxmv) \
52 static struct regulator_init_data _id##_data = { \ 55 static struct regulator_init_data _id##_data = { \
56 .supply_regulator = _supply, \
53 .constraints = { \ 57 .constraints = { \
58 .name = _name, \
54 .min_uV = (_minmv)*1000, \ 59 .min_uV = (_minmv)*1000, \
55 .max_uV = (_maxmv)*1000, \ 60 .max_uV = (_maxmv)*1000, \
56 .valid_modes_mask = (REGULATOR_MODE_NORMAL | \ 61 .valid_modes_mask = (REGULATOR_MODE_NORMAL | \
@@ -61,18 +66,18 @@ static struct regulator_init_data ldo0_data = {
61 }, \ 66 }, \
62 } 67 }
63 68
64HARMONY_REGULATOR_INIT(sm0, 725, 1500); 69HARMONY_REGULATOR_INIT(sm0, "vdd_sm0", "vdd_sys", 725, 1500);
65HARMONY_REGULATOR_INIT(sm1, 725, 1500); 70HARMONY_REGULATOR_INIT(sm1, "vdd_sm1", "vdd_sys", 725, 1500);
66HARMONY_REGULATOR_INIT(sm2, 3000, 4550); 71HARMONY_REGULATOR_INIT(sm2, "vdd_sm2", "vdd_sys", 3000, 4550);
67HARMONY_REGULATOR_INIT(ldo1, 725, 1500); 72HARMONY_REGULATOR_INIT(ldo1, "vdd_ldo1", "vdd_sm2", 725, 1500);
68HARMONY_REGULATOR_INIT(ldo2, 725, 1500); 73HARMONY_REGULATOR_INIT(ldo2, "vdd_ldo2", "vdd_sm2", 725, 1500);
69HARMONY_REGULATOR_INIT(ldo3, 1250, 3300); 74HARMONY_REGULATOR_INIT(ldo3, "vdd_ldo3", "vdd_sm2", 1250, 3300);
70HARMONY_REGULATOR_INIT(ldo4, 1700, 2475); 75HARMONY_REGULATOR_INIT(ldo4, "vdd_ldo4", "vdd_sm2", 1700, 2475);
71HARMONY_REGULATOR_INIT(ldo5, 1250, 3300); 76HARMONY_REGULATOR_INIT(ldo5, "vdd_ldo5", NULL, 1250, 3300);
72HARMONY_REGULATOR_INIT(ldo6, 1250, 3300); 77HARMONY_REGULATOR_INIT(ldo6, "vdd_ldo6", "vdd_sm2", 1250, 3300);
73HARMONY_REGULATOR_INIT(ldo7, 1250, 3300); 78HARMONY_REGULATOR_INIT(ldo7, "vdd_ldo7", "vdd_sm2", 1250, 3300);
74HARMONY_REGULATOR_INIT(ldo8, 1250, 3300); 79HARMONY_REGULATOR_INIT(ldo8, "vdd_ldo8", "vdd_sm2", 1250, 3300);
75HARMONY_REGULATOR_INIT(ldo9, 1250, 3300); 80HARMONY_REGULATOR_INIT(ldo9, "vdd_ldo9", "vdd_sm2", 1250, 3300);
76 81
77#define TPS_REG(_id, _data) \ 82#define TPS_REG(_id, _data) \
78 { \ 83 { \
@@ -115,6 +120,8 @@ static struct i2c_board_info __initdata harmony_regulators[] = {
115int __init harmony_regulator_init(void) 120int __init harmony_regulator_init(void)
116{ 121{
117 if (machine_is_harmony()) { 122 if (machine_is_harmony()) {
123 regulator_register_always_on(0, "vdd_sys",
124 NULL, 0, 5000000);
118 i2c_register_board_info(3, harmony_regulators, 1); 125 i2c_register_board_info(3, harmony_regulators, 1);
119 } else { /* Harmony, booted using device tree */ 126 } else { /* Harmony, booted using device tree */
120 struct device_node *np; 127 struct device_node *np;