Commit e3db2217f3cdabf170ed2131831b42aa0878a0ac

Authored by Olof Johansson

Merge tag 'omap-for-v3.19/fixes-rc1' of git://git.kernel.org/pub/scm/linux/kerne…

…l/git/tmlind/linux-omap into fixes

Merge "omap fixes against v3.19-rc1" from Tony Lindgren:

Fixes for omaps mostly to deal with dra7 timer issues
and hypervisor mode. The other fixes are minor fixes for
various boards. The summary of the fixes is:

- Fix real-time counter rate typos for some frequencies
- Fix counter frequency drift for am572x
- Fix booting of secondary CPU in HYP mode
- Fix n900 board name for legacy user space
- Fix cpufreq in omap2plus_defconfig after Kconfig change
- Fix dra7 qspi partitions

And also, let's re-enable smc91x on some n900 boards that
we have sitting in a few test boot systems after the boot
loader dependencies got fixed.

* tag 'omap-for-v3.19/fixes-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: dts: Revert disabling of smc91x for n900
  ARM: dts: dra7-evm: fix qspi device tree partition size
  ARM: omap2plus_defconfig: use CONFIG_CPUFREQ_DT
  ARM: OMAP2+: Fix n900 board name for legacy user space
  ARM: omap5/dra7xx: Enable booting secondary CPU in HYP mode
  ARM: dra7xx: Fix counter frequency drift for AM572x errata i856
  ARM: omap5/dra7xx: Fix frequency typos

Signed-off-by: Olof Johansson <olof@lixom.net>

Showing 9 changed files Inline Diff

arch/arm/boot/dts/dra7-evm.dts
1 /* 1 /*
2 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ 2 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
3 * 3 *
4 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as 5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation. 6 * published by the Free Software Foundation.
7 */ 7 */
8 /dts-v1/; 8 /dts-v1/;
9 9
10 #include "dra74x.dtsi" 10 #include "dra74x.dtsi"
11 #include <dt-bindings/gpio/gpio.h> 11 #include <dt-bindings/gpio/gpio.h>
12 12
13 / { 13 / {
14 model = "TI DRA742"; 14 model = "TI DRA742";
15 compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7"; 15 compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7";
16 16
17 memory { 17 memory {
18 device_type = "memory"; 18 device_type = "memory";
19 reg = <0x80000000 0x60000000>; /* 1536 MB */ 19 reg = <0x80000000 0x60000000>; /* 1536 MB */
20 }; 20 };
21 21
22 mmc2_3v3: fixedregulator-mmc2 { 22 mmc2_3v3: fixedregulator-mmc2 {
23 compatible = "regulator-fixed"; 23 compatible = "regulator-fixed";
24 regulator-name = "mmc2_3v3"; 24 regulator-name = "mmc2_3v3";
25 regulator-min-microvolt = <3300000>; 25 regulator-min-microvolt = <3300000>;
26 regulator-max-microvolt = <3300000>; 26 regulator-max-microvolt = <3300000>;
27 }; 27 };
28 28
29 vtt_fixed: fixedregulator-vtt { 29 vtt_fixed: fixedregulator-vtt {
30 compatible = "regulator-fixed"; 30 compatible = "regulator-fixed";
31 regulator-name = "vtt_fixed"; 31 regulator-name = "vtt_fixed";
32 regulator-min-microvolt = <1350000>; 32 regulator-min-microvolt = <1350000>;
33 regulator-max-microvolt = <1350000>; 33 regulator-max-microvolt = <1350000>;
34 regulator-always-on; 34 regulator-always-on;
35 regulator-boot-on; 35 regulator-boot-on;
36 enable-active-high; 36 enable-active-high;
37 gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>; 37 gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
38 }; 38 };
39 }; 39 };
40 40
41 &dra7_pmx_core { 41 &dra7_pmx_core {
42 pinctrl-names = "default"; 42 pinctrl-names = "default";
43 pinctrl-0 = <&vtt_pin>; 43 pinctrl-0 = <&vtt_pin>;
44 44
45 vtt_pin: pinmux_vtt_pin { 45 vtt_pin: pinmux_vtt_pin {
46 pinctrl-single,pins = < 46 pinctrl-single,pins = <
47 0x3b4 (PIN_OUTPUT | MUX_MODE14) /* spi1_cs1.gpio7_11 */ 47 0x3b4 (PIN_OUTPUT | MUX_MODE14) /* spi1_cs1.gpio7_11 */
48 >; 48 >;
49 }; 49 };
50 50
51 i2c1_pins: pinmux_i2c1_pins { 51 i2c1_pins: pinmux_i2c1_pins {
52 pinctrl-single,pins = < 52 pinctrl-single,pins = <
53 0x400 (PIN_INPUT | MUX_MODE0) /* i2c1_sda */ 53 0x400 (PIN_INPUT | MUX_MODE0) /* i2c1_sda */
54 0x404 (PIN_INPUT | MUX_MODE0) /* i2c1_scl */ 54 0x404 (PIN_INPUT | MUX_MODE0) /* i2c1_scl */
55 >; 55 >;
56 }; 56 };
57 57
58 i2c2_pins: pinmux_i2c2_pins { 58 i2c2_pins: pinmux_i2c2_pins {
59 pinctrl-single,pins = < 59 pinctrl-single,pins = <
60 0x408 (PIN_INPUT | MUX_MODE0) /* i2c2_sda */ 60 0x408 (PIN_INPUT | MUX_MODE0) /* i2c2_sda */
61 0x40c (PIN_INPUT | MUX_MODE0) /* i2c2_scl */ 61 0x40c (PIN_INPUT | MUX_MODE0) /* i2c2_scl */
62 >; 62 >;
63 }; 63 };
64 64
65 i2c3_pins: pinmux_i2c3_pins { 65 i2c3_pins: pinmux_i2c3_pins {
66 pinctrl-single,pins = < 66 pinctrl-single,pins = <
67 0x288 (PIN_INPUT | MUX_MODE9) /* gpio6_14.i2c3_sda */ 67 0x288 (PIN_INPUT | MUX_MODE9) /* gpio6_14.i2c3_sda */
68 0x28c (PIN_INPUT | MUX_MODE9) /* gpio6_15.i2c3_scl */ 68 0x28c (PIN_INPUT | MUX_MODE9) /* gpio6_15.i2c3_scl */
69 >; 69 >;
70 }; 70 };
71 71
72 mcspi1_pins: pinmux_mcspi1_pins { 72 mcspi1_pins: pinmux_mcspi1_pins {
73 pinctrl-single,pins = < 73 pinctrl-single,pins = <
74 0x3a4 (PIN_INPUT | MUX_MODE0) /* spi1_sclk */ 74 0x3a4 (PIN_INPUT | MUX_MODE0) /* spi1_sclk */
75 0x3a8 (PIN_INPUT | MUX_MODE0) /* spi1_d1 */ 75 0x3a8 (PIN_INPUT | MUX_MODE0) /* spi1_d1 */
76 0x3ac (PIN_INPUT | MUX_MODE0) /* spi1_d0 */ 76 0x3ac (PIN_INPUT | MUX_MODE0) /* spi1_d0 */
77 0x3b0 (PIN_INPUT_SLEW | MUX_MODE0) /* spi1_cs0 */ 77 0x3b0 (PIN_INPUT_SLEW | MUX_MODE0) /* spi1_cs0 */
78 0x3b8 (PIN_INPUT_SLEW | MUX_MODE6) /* spi1_cs2.hdmi1_hpd */ 78 0x3b8 (PIN_INPUT_SLEW | MUX_MODE6) /* spi1_cs2.hdmi1_hpd */
79 0x3bc (PIN_INPUT_SLEW | MUX_MODE6) /* spi1_cs3.hdmi1_cec */ 79 0x3bc (PIN_INPUT_SLEW | MUX_MODE6) /* spi1_cs3.hdmi1_cec */
80 >; 80 >;
81 }; 81 };
82 82
83 mcspi2_pins: pinmux_mcspi2_pins { 83 mcspi2_pins: pinmux_mcspi2_pins {
84 pinctrl-single,pins = < 84 pinctrl-single,pins = <
85 0x3c0 (PIN_INPUT | MUX_MODE0) /* spi2_sclk */ 85 0x3c0 (PIN_INPUT | MUX_MODE0) /* spi2_sclk */
86 0x3c4 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_d1 */ 86 0x3c4 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_d1 */
87 0x3c8 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_d1 */ 87 0x3c8 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_d1 */
88 0x3cc (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_cs0 */ 88 0x3cc (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_cs0 */
89 >; 89 >;
90 }; 90 };
91 91
92 uart1_pins: pinmux_uart1_pins { 92 uart1_pins: pinmux_uart1_pins {
93 pinctrl-single,pins = < 93 pinctrl-single,pins = <
94 0x3e0 (PIN_INPUT_SLEW | MUX_MODE0) /* uart1_rxd */ 94 0x3e0 (PIN_INPUT_SLEW | MUX_MODE0) /* uart1_rxd */
95 0x3e4 (PIN_INPUT_SLEW | MUX_MODE0) /* uart1_txd */ 95 0x3e4 (PIN_INPUT_SLEW | MUX_MODE0) /* uart1_txd */
96 0x3e8 (PIN_INPUT | MUX_MODE3) /* uart1_ctsn */ 96 0x3e8 (PIN_INPUT | MUX_MODE3) /* uart1_ctsn */
97 0x3ec (PIN_INPUT | MUX_MODE3) /* uart1_rtsn */ 97 0x3ec (PIN_INPUT | MUX_MODE3) /* uart1_rtsn */
98 >; 98 >;
99 }; 99 };
100 100
101 uart2_pins: pinmux_uart2_pins { 101 uart2_pins: pinmux_uart2_pins {
102 pinctrl-single,pins = < 102 pinctrl-single,pins = <
103 0x3f0 (PIN_INPUT | MUX_MODE0) /* uart2_rxd */ 103 0x3f0 (PIN_INPUT | MUX_MODE0) /* uart2_rxd */
104 0x3f4 (PIN_INPUT | MUX_MODE0) /* uart2_txd */ 104 0x3f4 (PIN_INPUT | MUX_MODE0) /* uart2_txd */
105 0x3f8 (PIN_INPUT | MUX_MODE0) /* uart2_ctsn */ 105 0x3f8 (PIN_INPUT | MUX_MODE0) /* uart2_ctsn */
106 0x3fc (PIN_INPUT | MUX_MODE0) /* uart2_rtsn */ 106 0x3fc (PIN_INPUT | MUX_MODE0) /* uart2_rtsn */
107 >; 107 >;
108 }; 108 };
109 109
110 uart3_pins: pinmux_uart3_pins { 110 uart3_pins: pinmux_uart3_pins {
111 pinctrl-single,pins = < 111 pinctrl-single,pins = <
112 0x248 (PIN_INPUT_SLEW | MUX_MODE0) /* uart3_rxd */ 112 0x248 (PIN_INPUT_SLEW | MUX_MODE0) /* uart3_rxd */
113 0x24c (PIN_INPUT_SLEW | MUX_MODE0) /* uart3_txd */ 113 0x24c (PIN_INPUT_SLEW | MUX_MODE0) /* uart3_txd */
114 >; 114 >;
115 }; 115 };
116 116
117 qspi1_pins: pinmux_qspi1_pins { 117 qspi1_pins: pinmux_qspi1_pins {
118 pinctrl-single,pins = < 118 pinctrl-single,pins = <
119 0x4c (PIN_INPUT | MUX_MODE1) /* gpmc_a3.qspi1_cs2 */ 119 0x4c (PIN_INPUT | MUX_MODE1) /* gpmc_a3.qspi1_cs2 */
120 0x50 (PIN_INPUT | MUX_MODE1) /* gpmc_a4.qspi1_cs3 */ 120 0x50 (PIN_INPUT | MUX_MODE1) /* gpmc_a4.qspi1_cs3 */
121 0x74 (PIN_INPUT | MUX_MODE1) /* gpmc_a13.qspi1_rtclk */ 121 0x74 (PIN_INPUT | MUX_MODE1) /* gpmc_a13.qspi1_rtclk */
122 0x78 (PIN_INPUT | MUX_MODE1) /* gpmc_a14.qspi1_d3 */ 122 0x78 (PIN_INPUT | MUX_MODE1) /* gpmc_a14.qspi1_d3 */
123 0x7c (PIN_INPUT | MUX_MODE1) /* gpmc_a15.qspi1_d2 */ 123 0x7c (PIN_INPUT | MUX_MODE1) /* gpmc_a15.qspi1_d2 */
124 0x80 (PIN_INPUT | MUX_MODE1) /* gpmc_a16.qspi1_d1 */ 124 0x80 (PIN_INPUT | MUX_MODE1) /* gpmc_a16.qspi1_d1 */
125 0x84 (PIN_INPUT | MUX_MODE1) /* gpmc_a17.qspi1_d0 */ 125 0x84 (PIN_INPUT | MUX_MODE1) /* gpmc_a17.qspi1_d0 */
126 0x88 (PIN_INPUT | MUX_MODE1) /* qpmc_a18.qspi1_sclk */ 126 0x88 (PIN_INPUT | MUX_MODE1) /* qpmc_a18.qspi1_sclk */
127 0xb8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs2.qspi1_cs0 */ 127 0xb8 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs2.qspi1_cs0 */
128 0xbc (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs3.qspi1_cs1 */ 128 0xbc (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_cs3.qspi1_cs1 */
129 >; 129 >;
130 }; 130 };
131 131
132 usb1_pins: pinmux_usb1_pins { 132 usb1_pins: pinmux_usb1_pins {
133 pinctrl-single,pins = < 133 pinctrl-single,pins = <
134 0x280 (PIN_INPUT_SLEW | MUX_MODE0) /* usb1_drvvbus */ 134 0x280 (PIN_INPUT_SLEW | MUX_MODE0) /* usb1_drvvbus */
135 >; 135 >;
136 }; 136 };
137 137
138 usb2_pins: pinmux_usb2_pins { 138 usb2_pins: pinmux_usb2_pins {
139 pinctrl-single,pins = < 139 pinctrl-single,pins = <
140 0x284 (PIN_INPUT_SLEW | MUX_MODE0) /* usb2_drvvbus */ 140 0x284 (PIN_INPUT_SLEW | MUX_MODE0) /* usb2_drvvbus */
141 >; 141 >;
142 }; 142 };
143 143
144 nand_flash_x16: nand_flash_x16 { 144 nand_flash_x16: nand_flash_x16 {
145 /* On DRA7 EVM, GPMC_WPN and NAND_BOOTn comes from DIP switch 145 /* On DRA7 EVM, GPMC_WPN and NAND_BOOTn comes from DIP switch
146 * So NAND flash requires following switch settings: 146 * So NAND flash requires following switch settings:
147 * SW5.9 (GPMC_WPN) = LOW 147 * SW5.9 (GPMC_WPN) = LOW
148 * SW5.1 (NAND_BOOTn) = HIGH */ 148 * SW5.1 (NAND_BOOTn) = HIGH */
149 pinctrl-single,pins = < 149 pinctrl-single,pins = <
150 0x0 (PIN_INPUT | MUX_MODE0) /* gpmc_ad0 */ 150 0x0 (PIN_INPUT | MUX_MODE0) /* gpmc_ad0 */
151 0x4 (PIN_INPUT | MUX_MODE0) /* gpmc_ad1 */ 151 0x4 (PIN_INPUT | MUX_MODE0) /* gpmc_ad1 */
152 0x8 (PIN_INPUT | MUX_MODE0) /* gpmc_ad2 */ 152 0x8 (PIN_INPUT | MUX_MODE0) /* gpmc_ad2 */
153 0xc (PIN_INPUT | MUX_MODE0) /* gpmc_ad3 */ 153 0xc (PIN_INPUT | MUX_MODE0) /* gpmc_ad3 */
154 0x10 (PIN_INPUT | MUX_MODE0) /* gpmc_ad4 */ 154 0x10 (PIN_INPUT | MUX_MODE0) /* gpmc_ad4 */
155 0x14 (PIN_INPUT | MUX_MODE0) /* gpmc_ad5 */ 155 0x14 (PIN_INPUT | MUX_MODE0) /* gpmc_ad5 */
156 0x18 (PIN_INPUT | MUX_MODE0) /* gpmc_ad6 */ 156 0x18 (PIN_INPUT | MUX_MODE0) /* gpmc_ad6 */
157 0x1c (PIN_INPUT | MUX_MODE0) /* gpmc_ad7 */ 157 0x1c (PIN_INPUT | MUX_MODE0) /* gpmc_ad7 */
158 0x20 (PIN_INPUT | MUX_MODE0) /* gpmc_ad8 */ 158 0x20 (PIN_INPUT | MUX_MODE0) /* gpmc_ad8 */
159 0x24 (PIN_INPUT | MUX_MODE0) /* gpmc_ad9 */ 159 0x24 (PIN_INPUT | MUX_MODE0) /* gpmc_ad9 */
160 0x28 (PIN_INPUT | MUX_MODE0) /* gpmc_ad10 */ 160 0x28 (PIN_INPUT | MUX_MODE0) /* gpmc_ad10 */
161 0x2c (PIN_INPUT | MUX_MODE0) /* gpmc_ad11 */ 161 0x2c (PIN_INPUT | MUX_MODE0) /* gpmc_ad11 */
162 0x30 (PIN_INPUT | MUX_MODE0) /* gpmc_ad12 */ 162 0x30 (PIN_INPUT | MUX_MODE0) /* gpmc_ad12 */
163 0x34 (PIN_INPUT | MUX_MODE0) /* gpmc_ad13 */ 163 0x34 (PIN_INPUT | MUX_MODE0) /* gpmc_ad13 */
164 0x38 (PIN_INPUT | MUX_MODE0) /* gpmc_ad14 */ 164 0x38 (PIN_INPUT | MUX_MODE0) /* gpmc_ad14 */
165 0x3c (PIN_INPUT | MUX_MODE0) /* gpmc_ad15 */ 165 0x3c (PIN_INPUT | MUX_MODE0) /* gpmc_ad15 */
166 0xd8 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_wait0 */ 166 0xd8 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_wait0 */
167 0xcc (PIN_OUTPUT | MUX_MODE0) /* gpmc_wen */ 167 0xcc (PIN_OUTPUT | MUX_MODE0) /* gpmc_wen */
168 0xb4 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_csn0 */ 168 0xb4 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_csn0 */
169 0xc4 (PIN_OUTPUT | MUX_MODE0) /* gpmc_advn_ale */ 169 0xc4 (PIN_OUTPUT | MUX_MODE0) /* gpmc_advn_ale */
170 0xc8 (PIN_OUTPUT | MUX_MODE0) /* gpmc_oen_ren */ 170 0xc8 (PIN_OUTPUT | MUX_MODE0) /* gpmc_oen_ren */
171 0xd0 (PIN_OUTPUT | MUX_MODE0) /* gpmc_be0n_cle */ 171 0xd0 (PIN_OUTPUT | MUX_MODE0) /* gpmc_be0n_cle */
172 >; 172 >;
173 }; 173 };
174 174
175 cpsw_default: cpsw_default { 175 cpsw_default: cpsw_default {
176 pinctrl-single,pins = < 176 pinctrl-single,pins = <
177 /* Slave 1 */ 177 /* Slave 1 */
178 0x250 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txc.rgmii0_txc */ 178 0x250 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txc.rgmii0_txc */
179 0x254 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txctl.rgmii0_txctl */ 179 0x254 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txctl.rgmii0_txctl */
180 0x258 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_td3.rgmii0_txd3 */ 180 0x258 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_td3.rgmii0_txd3 */
181 0x25c (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txd2.rgmii0_txd2 */ 181 0x25c (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txd2.rgmii0_txd2 */
182 0x260 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txd1.rgmii0_txd1 */ 182 0x260 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txd1.rgmii0_txd1 */
183 0x264 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txd0.rgmii0_txd0 */ 183 0x264 (PIN_OUTPUT | MUX_MODE0) /* rgmii0_txd0.rgmii0_txd0 */
184 0x268 (PIN_INPUT | MUX_MODE0) /* rgmii0_rxc.rgmii0_rxc */ 184 0x268 (PIN_INPUT | MUX_MODE0) /* rgmii0_rxc.rgmii0_rxc */
185 0x26c (PIN_INPUT | MUX_MODE0) /* rgmii0_rxctl.rgmii0_rxctl */ 185 0x26c (PIN_INPUT | MUX_MODE0) /* rgmii0_rxctl.rgmii0_rxctl */
186 0x270 (PIN_INPUT | MUX_MODE0) /* rgmii0_rxd3.rgmii0_rxd3 */ 186 0x270 (PIN_INPUT | MUX_MODE0) /* rgmii0_rxd3.rgmii0_rxd3 */
187 0x274 (PIN_INPUT | MUX_MODE0) /* rgmii0_rxd2.rgmii0_rxd2 */ 187 0x274 (PIN_INPUT | MUX_MODE0) /* rgmii0_rxd2.rgmii0_rxd2 */
188 0x278 (PIN_INPUT | MUX_MODE0) /* rgmii0_rxd1.rgmii0_rxd1 */ 188 0x278 (PIN_INPUT | MUX_MODE0) /* rgmii0_rxd1.rgmii0_rxd1 */
189 0x27c (PIN_INPUT | MUX_MODE0) /* rgmii0_rxd0.rgmii0_rxd0 */ 189 0x27c (PIN_INPUT | MUX_MODE0) /* rgmii0_rxd0.rgmii0_rxd0 */
190 190
191 /* Slave 2 */ 191 /* Slave 2 */
192 0x198 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d12.rgmii1_txc */ 192 0x198 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d12.rgmii1_txc */
193 0x19c (PIN_OUTPUT | MUX_MODE3) /* vin2a_d13.rgmii1_tctl */ 193 0x19c (PIN_OUTPUT | MUX_MODE3) /* vin2a_d13.rgmii1_tctl */
194 0x1a0 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d14.rgmii1_td3 */ 194 0x1a0 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d14.rgmii1_td3 */
195 0x1a4 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d15.rgmii1_td2 */ 195 0x1a4 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d15.rgmii1_td2 */
196 0x1a8 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d16.rgmii1_td1 */ 196 0x1a8 (PIN_OUTPUT | MUX_MODE3) /* vin2a_d16.rgmii1_td1 */
197 0x1ac (PIN_OUTPUT | MUX_MODE3) /* vin2a_d17.rgmii1_td0 */ 197 0x1ac (PIN_OUTPUT | MUX_MODE3) /* vin2a_d17.rgmii1_td0 */
198 0x1b0 (PIN_INPUT | MUX_MODE3) /* vin2a_d18.rgmii1_rclk */ 198 0x1b0 (PIN_INPUT | MUX_MODE3) /* vin2a_d18.rgmii1_rclk */
199 0x1b4 (PIN_INPUT | MUX_MODE3) /* vin2a_d19.rgmii1_rctl */ 199 0x1b4 (PIN_INPUT | MUX_MODE3) /* vin2a_d19.rgmii1_rctl */
200 0x1b8 (PIN_INPUT | MUX_MODE3) /* vin2a_d20.rgmii1_rd3 */ 200 0x1b8 (PIN_INPUT | MUX_MODE3) /* vin2a_d20.rgmii1_rd3 */
201 0x1bc (PIN_INPUT | MUX_MODE3) /* vin2a_d21.rgmii1_rd2 */ 201 0x1bc (PIN_INPUT | MUX_MODE3) /* vin2a_d21.rgmii1_rd2 */
202 0x1c0 (PIN_INPUT | MUX_MODE3) /* vin2a_d22.rgmii1_rd1 */ 202 0x1c0 (PIN_INPUT | MUX_MODE3) /* vin2a_d22.rgmii1_rd1 */
203 0x1c4 (PIN_INPUT | MUX_MODE3) /* vin2a_d23.rgmii1_rd0 */ 203 0x1c4 (PIN_INPUT | MUX_MODE3) /* vin2a_d23.rgmii1_rd0 */
204 >; 204 >;
205 205
206 }; 206 };
207 207
208 cpsw_sleep: cpsw_sleep { 208 cpsw_sleep: cpsw_sleep {
209 pinctrl-single,pins = < 209 pinctrl-single,pins = <
210 /* Slave 1 */ 210 /* Slave 1 */
211 0x250 (MUX_MODE15) 211 0x250 (MUX_MODE15)
212 0x254 (MUX_MODE15) 212 0x254 (MUX_MODE15)
213 0x258 (MUX_MODE15) 213 0x258 (MUX_MODE15)
214 0x25c (MUX_MODE15) 214 0x25c (MUX_MODE15)
215 0x260 (MUX_MODE15) 215 0x260 (MUX_MODE15)
216 0x264 (MUX_MODE15) 216 0x264 (MUX_MODE15)
217 0x268 (MUX_MODE15) 217 0x268 (MUX_MODE15)
218 0x26c (MUX_MODE15) 218 0x26c (MUX_MODE15)
219 0x270 (MUX_MODE15) 219 0x270 (MUX_MODE15)
220 0x274 (MUX_MODE15) 220 0x274 (MUX_MODE15)
221 0x278 (MUX_MODE15) 221 0x278 (MUX_MODE15)
222 0x27c (MUX_MODE15) 222 0x27c (MUX_MODE15)
223 223
224 /* Slave 2 */ 224 /* Slave 2 */
225 0x198 (MUX_MODE15) 225 0x198 (MUX_MODE15)
226 0x19c (MUX_MODE15) 226 0x19c (MUX_MODE15)
227 0x1a0 (MUX_MODE15) 227 0x1a0 (MUX_MODE15)
228 0x1a4 (MUX_MODE15) 228 0x1a4 (MUX_MODE15)
229 0x1a8 (MUX_MODE15) 229 0x1a8 (MUX_MODE15)
230 0x1ac (MUX_MODE15) 230 0x1ac (MUX_MODE15)
231 0x1b0 (MUX_MODE15) 231 0x1b0 (MUX_MODE15)
232 0x1b4 (MUX_MODE15) 232 0x1b4 (MUX_MODE15)
233 0x1b8 (MUX_MODE15) 233 0x1b8 (MUX_MODE15)
234 0x1bc (MUX_MODE15) 234 0x1bc (MUX_MODE15)
235 0x1c0 (MUX_MODE15) 235 0x1c0 (MUX_MODE15)
236 0x1c4 (MUX_MODE15) 236 0x1c4 (MUX_MODE15)
237 >; 237 >;
238 }; 238 };
239 239
240 davinci_mdio_default: davinci_mdio_default { 240 davinci_mdio_default: davinci_mdio_default {
241 pinctrl-single,pins = < 241 pinctrl-single,pins = <
242 0x23c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_d.mdio_d */ 242 0x23c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_d.mdio_d */
243 0x240 (PIN_INPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */ 243 0x240 (PIN_INPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
244 >; 244 >;
245 }; 245 };
246 246
247 davinci_mdio_sleep: davinci_mdio_sleep { 247 davinci_mdio_sleep: davinci_mdio_sleep {
248 pinctrl-single,pins = < 248 pinctrl-single,pins = <
249 0x23c (MUX_MODE15) 249 0x23c (MUX_MODE15)
250 0x240 (MUX_MODE15) 250 0x240 (MUX_MODE15)
251 >; 251 >;
252 }; 252 };
253 253
254 dcan1_pins_default: dcan1_pins_default { 254 dcan1_pins_default: dcan1_pins_default {
255 pinctrl-single,pins = < 255 pinctrl-single,pins = <
256 0x3d0 (PIN_OUTPUT | MUX_MODE0) /* dcan1_tx */ 256 0x3d0 (PIN_OUTPUT | MUX_MODE0) /* dcan1_tx */
257 0x3d4 (MUX_MODE15) /* dcan1_rx.off */ 257 0x3d4 (MUX_MODE15) /* dcan1_rx.off */
258 0x418 (PULL_DIS | MUX_MODE1) /* wakeup0.dcan1_rx */ 258 0x418 (PULL_DIS | MUX_MODE1) /* wakeup0.dcan1_rx */
259 >; 259 >;
260 }; 260 };
261 261
262 dcan1_pins_sleep: dcan1_pins_sleep { 262 dcan1_pins_sleep: dcan1_pins_sleep {
263 pinctrl-single,pins = < 263 pinctrl-single,pins = <
264 0x3d0 (MUX_MODE15) /* dcan1_tx.off */ 264 0x3d0 (MUX_MODE15) /* dcan1_tx.off */
265 0x3d4 (MUX_MODE15) /* dcan1_rx.off */ 265 0x3d4 (MUX_MODE15) /* dcan1_rx.off */
266 0x418 (MUX_MODE15) /* wakeup0.off */ 266 0x418 (MUX_MODE15) /* wakeup0.off */
267 >; 267 >;
268 }; 268 };
269 }; 269 };
270 270
271 &i2c1 { 271 &i2c1 {
272 status = "okay"; 272 status = "okay";
273 pinctrl-names = "default"; 273 pinctrl-names = "default";
274 pinctrl-0 = <&i2c1_pins>; 274 pinctrl-0 = <&i2c1_pins>;
275 clock-frequency = <400000>; 275 clock-frequency = <400000>;
276 276
277 tps659038: tps659038@58 { 277 tps659038: tps659038@58 {
278 compatible = "ti,tps659038"; 278 compatible = "ti,tps659038";
279 reg = <0x58>; 279 reg = <0x58>;
280 280
281 tps659038_pmic { 281 tps659038_pmic {
282 compatible = "ti,tps659038-pmic"; 282 compatible = "ti,tps659038-pmic";
283 283
284 regulators { 284 regulators {
285 smps123_reg: smps123 { 285 smps123_reg: smps123 {
286 /* VDD_MPU */ 286 /* VDD_MPU */
287 regulator-name = "smps123"; 287 regulator-name = "smps123";
288 regulator-min-microvolt = < 850000>; 288 regulator-min-microvolt = < 850000>;
289 regulator-max-microvolt = <1250000>; 289 regulator-max-microvolt = <1250000>;
290 regulator-always-on; 290 regulator-always-on;
291 regulator-boot-on; 291 regulator-boot-on;
292 }; 292 };
293 293
294 smps45_reg: smps45 { 294 smps45_reg: smps45 {
295 /* VDD_DSPEVE */ 295 /* VDD_DSPEVE */
296 regulator-name = "smps45"; 296 regulator-name = "smps45";
297 regulator-min-microvolt = < 850000>; 297 regulator-min-microvolt = < 850000>;
298 regulator-max-microvolt = <1150000>; 298 regulator-max-microvolt = <1150000>;
299 regulator-always-on; 299 regulator-always-on;
300 regulator-boot-on; 300 regulator-boot-on;
301 }; 301 };
302 302
303 smps6_reg: smps6 { 303 smps6_reg: smps6 {
304 /* VDD_GPU - over VDD_SMPS6 */ 304 /* VDD_GPU - over VDD_SMPS6 */
305 regulator-name = "smps6"; 305 regulator-name = "smps6";
306 regulator-min-microvolt = <850000>; 306 regulator-min-microvolt = <850000>;
307 regulator-max-microvolt = <1250000>; 307 regulator-max-microvolt = <1250000>;
308 regulator-always-on; 308 regulator-always-on;
309 regulator-boot-on; 309 regulator-boot-on;
310 }; 310 };
311 311
312 smps7_reg: smps7 { 312 smps7_reg: smps7 {
313 /* CORE_VDD */ 313 /* CORE_VDD */
314 regulator-name = "smps7"; 314 regulator-name = "smps7";
315 regulator-min-microvolt = <850000>; 315 regulator-min-microvolt = <850000>;
316 regulator-max-microvolt = <1060000>; 316 regulator-max-microvolt = <1060000>;
317 regulator-always-on; 317 regulator-always-on;
318 regulator-boot-on; 318 regulator-boot-on;
319 }; 319 };
320 320
321 smps8_reg: smps8 { 321 smps8_reg: smps8 {
322 /* VDD_IVAHD */ 322 /* VDD_IVAHD */
323 regulator-name = "smps8"; 323 regulator-name = "smps8";
324 regulator-min-microvolt = < 850000>; 324 regulator-min-microvolt = < 850000>;
325 regulator-max-microvolt = <1250000>; 325 regulator-max-microvolt = <1250000>;
326 regulator-always-on; 326 regulator-always-on;
327 regulator-boot-on; 327 regulator-boot-on;
328 }; 328 };
329 329
330 smps9_reg: smps9 { 330 smps9_reg: smps9 {
331 /* VDDS1V8 */ 331 /* VDDS1V8 */
332 regulator-name = "smps9"; 332 regulator-name = "smps9";
333 regulator-min-microvolt = <1800000>; 333 regulator-min-microvolt = <1800000>;
334 regulator-max-microvolt = <1800000>; 334 regulator-max-microvolt = <1800000>;
335 regulator-always-on; 335 regulator-always-on;
336 regulator-boot-on; 336 regulator-boot-on;
337 }; 337 };
338 338
339 ldo1_reg: ldo1 { 339 ldo1_reg: ldo1 {
340 /* LDO1_OUT --> SDIO */ 340 /* LDO1_OUT --> SDIO */
341 regulator-name = "ldo1"; 341 regulator-name = "ldo1";
342 regulator-min-microvolt = <1800000>; 342 regulator-min-microvolt = <1800000>;
343 regulator-max-microvolt = <3300000>; 343 regulator-max-microvolt = <3300000>;
344 regulator-boot-on; 344 regulator-boot-on;
345 }; 345 };
346 346
347 ldo2_reg: ldo2 { 347 ldo2_reg: ldo2 {
348 /* VDD_RTCIO */ 348 /* VDD_RTCIO */
349 /* LDO2 -> VDDSHV5, LDO2 also goes to CAN_PHY_3V3 */ 349 /* LDO2 -> VDDSHV5, LDO2 also goes to CAN_PHY_3V3 */
350 regulator-name = "ldo2"; 350 regulator-name = "ldo2";
351 regulator-min-microvolt = <3300000>; 351 regulator-min-microvolt = <3300000>;
352 regulator-max-microvolt = <3300000>; 352 regulator-max-microvolt = <3300000>;
353 regulator-always-on; 353 regulator-always-on;
354 regulator-boot-on; 354 regulator-boot-on;
355 }; 355 };
356 356
357 ldo3_reg: ldo3 { 357 ldo3_reg: ldo3 {
358 /* VDDA_1V8_PHY */ 358 /* VDDA_1V8_PHY */
359 regulator-name = "ldo3"; 359 regulator-name = "ldo3";
360 regulator-min-microvolt = <1800000>; 360 regulator-min-microvolt = <1800000>;
361 regulator-max-microvolt = <1800000>; 361 regulator-max-microvolt = <1800000>;
362 regulator-always-on; 362 regulator-always-on;
363 regulator-boot-on; 363 regulator-boot-on;
364 }; 364 };
365 365
366 ldo9_reg: ldo9 { 366 ldo9_reg: ldo9 {
367 /* VDD_RTC */ 367 /* VDD_RTC */
368 regulator-name = "ldo9"; 368 regulator-name = "ldo9";
369 regulator-min-microvolt = <1050000>; 369 regulator-min-microvolt = <1050000>;
370 regulator-max-microvolt = <1050000>; 370 regulator-max-microvolt = <1050000>;
371 regulator-always-on; 371 regulator-always-on;
372 regulator-boot-on; 372 regulator-boot-on;
373 }; 373 };
374 374
375 ldoln_reg: ldoln { 375 ldoln_reg: ldoln {
376 /* VDDA_1V8_PLL */ 376 /* VDDA_1V8_PLL */
377 regulator-name = "ldoln"; 377 regulator-name = "ldoln";
378 regulator-min-microvolt = <1800000>; 378 regulator-min-microvolt = <1800000>;
379 regulator-max-microvolt = <1800000>; 379 regulator-max-microvolt = <1800000>;
380 regulator-always-on; 380 regulator-always-on;
381 regulator-boot-on; 381 regulator-boot-on;
382 }; 382 };
383 383
384 ldousb_reg: ldousb { 384 ldousb_reg: ldousb {
385 /* VDDA_3V_USB: VDDA_USBHS33 */ 385 /* VDDA_3V_USB: VDDA_USBHS33 */
386 regulator-name = "ldousb"; 386 regulator-name = "ldousb";
387 regulator-min-microvolt = <3300000>; 387 regulator-min-microvolt = <3300000>;
388 regulator-max-microvolt = <3300000>; 388 regulator-max-microvolt = <3300000>;
389 regulator-boot-on; 389 regulator-boot-on;
390 }; 390 };
391 }; 391 };
392 }; 392 };
393 }; 393 };
394 }; 394 };
395 395
396 &i2c2 { 396 &i2c2 {
397 status = "okay"; 397 status = "okay";
398 pinctrl-names = "default"; 398 pinctrl-names = "default";
399 pinctrl-0 = <&i2c2_pins>; 399 pinctrl-0 = <&i2c2_pins>;
400 clock-frequency = <400000>; 400 clock-frequency = <400000>;
401 }; 401 };
402 402
403 &i2c3 { 403 &i2c3 {
404 status = "okay"; 404 status = "okay";
405 pinctrl-names = "default"; 405 pinctrl-names = "default";
406 pinctrl-0 = <&i2c3_pins>; 406 pinctrl-0 = <&i2c3_pins>;
407 clock-frequency = <400000>; 407 clock-frequency = <400000>;
408 }; 408 };
409 409
410 &mcspi1 { 410 &mcspi1 {
411 status = "okay"; 411 status = "okay";
412 pinctrl-names = "default"; 412 pinctrl-names = "default";
413 pinctrl-0 = <&mcspi1_pins>; 413 pinctrl-0 = <&mcspi1_pins>;
414 }; 414 };
415 415
416 &mcspi2 { 416 &mcspi2 {
417 status = "okay"; 417 status = "okay";
418 pinctrl-names = "default"; 418 pinctrl-names = "default";
419 pinctrl-0 = <&mcspi2_pins>; 419 pinctrl-0 = <&mcspi2_pins>;
420 }; 420 };
421 421
422 &uart1 { 422 &uart1 {
423 status = "okay"; 423 status = "okay";
424 pinctrl-names = "default"; 424 pinctrl-names = "default";
425 pinctrl-0 = <&uart1_pins>; 425 pinctrl-0 = <&uart1_pins>;
426 interrupts-extended = <&gic GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>, 426 interrupts-extended = <&gic GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
427 <&dra7_pmx_core 0x3e0>; 427 <&dra7_pmx_core 0x3e0>;
428 }; 428 };
429 429
430 &uart2 { 430 &uart2 {
431 status = "okay"; 431 status = "okay";
432 pinctrl-names = "default"; 432 pinctrl-names = "default";
433 pinctrl-0 = <&uart2_pins>; 433 pinctrl-0 = <&uart2_pins>;
434 }; 434 };
435 435
436 &uart3 { 436 &uart3 {
437 status = "okay"; 437 status = "okay";
438 pinctrl-names = "default"; 438 pinctrl-names = "default";
439 pinctrl-0 = <&uart3_pins>; 439 pinctrl-0 = <&uart3_pins>;
440 }; 440 };
441 441
442 &mmc1 { 442 &mmc1 {
443 status = "okay"; 443 status = "okay";
444 vmmc-supply = <&ldo1_reg>; 444 vmmc-supply = <&ldo1_reg>;
445 bus-width = <4>; 445 bus-width = <4>;
446 }; 446 };
447 447
448 &mmc2 { 448 &mmc2 {
449 status = "okay"; 449 status = "okay";
450 vmmc-supply = <&mmc2_3v3>; 450 vmmc-supply = <&mmc2_3v3>;
451 bus-width = <8>; 451 bus-width = <8>;
452 }; 452 };
453 453
454 &cpu0 { 454 &cpu0 {
455 cpu0-supply = <&smps123_reg>; 455 cpu0-supply = <&smps123_reg>;
456 }; 456 };
457 457
458 &qspi { 458 &qspi {
459 status = "okay"; 459 status = "okay";
460 pinctrl-names = "default"; 460 pinctrl-names = "default";
461 pinctrl-0 = <&qspi1_pins>; 461 pinctrl-0 = <&qspi1_pins>;
462 462
463 spi-max-frequency = <48000000>; 463 spi-max-frequency = <48000000>;
464 m25p80@0 { 464 m25p80@0 {
465 compatible = "s25fl256s1"; 465 compatible = "s25fl256s1";
466 spi-max-frequency = <48000000>; 466 spi-max-frequency = <48000000>;
467 reg = <0>; 467 reg = <0>;
468 spi-tx-bus-width = <1>; 468 spi-tx-bus-width = <1>;
469 spi-rx-bus-width = <4>; 469 spi-rx-bus-width = <4>;
470 spi-cpol; 470 spi-cpol;
471 spi-cpha; 471 spi-cpha;
472 #address-cells = <1>; 472 #address-cells = <1>;
473 #size-cells = <1>; 473 #size-cells = <1>;
474 474
475 /* MTD partition table. 475 /* MTD partition table.
476 * The ROM checks the first four physical blocks 476 * The ROM checks the first four physical blocks
477 * for a valid file to boot and the flash here is 477 * for a valid file to boot and the flash here is
478 * 64KiB block size. 478 * 64KiB block size.
479 */ 479 */
480 partition@0 { 480 partition@0 {
481 label = "QSPI.SPL"; 481 label = "QSPI.SPL";
482 reg = <0x00000000 0x000010000>; 482 reg = <0x00000000 0x000010000>;
483 }; 483 };
484 partition@1 { 484 partition@1 {
485 label = "QSPI.SPL.backup1"; 485 label = "QSPI.SPL.backup1";
486 reg = <0x00010000 0x00010000>; 486 reg = <0x00010000 0x00010000>;
487 }; 487 };
488 partition@2 { 488 partition@2 {
489 label = "QSPI.SPL.backup2"; 489 label = "QSPI.SPL.backup2";
490 reg = <0x00020000 0x00010000>; 490 reg = <0x00020000 0x00010000>;
491 }; 491 };
492 partition@3 { 492 partition@3 {
493 label = "QSPI.SPL.backup3"; 493 label = "QSPI.SPL.backup3";
494 reg = <0x00030000 0x00010000>; 494 reg = <0x00030000 0x00010000>;
495 }; 495 };
496 partition@4 { 496 partition@4 {
497 label = "QSPI.u-boot"; 497 label = "QSPI.u-boot";
498 reg = <0x00040000 0x00100000>; 498 reg = <0x00040000 0x00100000>;
499 }; 499 };
500 partition@5 { 500 partition@5 {
501 label = "QSPI.u-boot-spl-os"; 501 label = "QSPI.u-boot-spl-os";
502 reg = <0x00140000 0x00010000>; 502 reg = <0x00140000 0x00080000>;
503 }; 503 };
504 partition@6 { 504 partition@6 {
505 label = "QSPI.u-boot-env"; 505 label = "QSPI.u-boot-env";
506 reg = <0x00150000 0x00010000>; 506 reg = <0x001c0000 0x00010000>;
507 }; 507 };
508 partition@7 { 508 partition@7 {
509 label = "QSPI.u-boot-env.backup1"; 509 label = "QSPI.u-boot-env.backup1";
510 reg = <0x00160000 0x0010000>; 510 reg = <0x001d0000 0x0010000>;
511 }; 511 };
512 partition@8 { 512 partition@8 {
513 label = "QSPI.kernel"; 513 label = "QSPI.kernel";
514 reg = <0x00170000 0x0800000>; 514 reg = <0x001e0000 0x0800000>;
515 }; 515 };
516 partition@9 { 516 partition@9 {
517 label = "QSPI.file-system"; 517 label = "QSPI.file-system";
518 reg = <0x00970000 0x01690000>; 518 reg = <0x009e0000 0x01620000>;
519 }; 519 };
520 }; 520 };
521 }; 521 };
522 522
523 &usb1 { 523 &usb1 {
524 dr_mode = "peripheral"; 524 dr_mode = "peripheral";
525 pinctrl-names = "default"; 525 pinctrl-names = "default";
526 pinctrl-0 = <&usb1_pins>; 526 pinctrl-0 = <&usb1_pins>;
527 }; 527 };
528 528
529 &usb2 { 529 &usb2 {
530 dr_mode = "host"; 530 dr_mode = "host";
531 pinctrl-names = "default"; 531 pinctrl-names = "default";
532 pinctrl-0 = <&usb2_pins>; 532 pinctrl-0 = <&usb2_pins>;
533 }; 533 };
534 534
535 &elm { 535 &elm {
536 status = "okay"; 536 status = "okay";
537 }; 537 };
538 538
539 &gpmc { 539 &gpmc {
540 status = "okay"; 540 status = "okay";
541 pinctrl-names = "default"; 541 pinctrl-names = "default";
542 pinctrl-0 = <&nand_flash_x16>; 542 pinctrl-0 = <&nand_flash_x16>;
543 ranges = <0 0 0 0x01000000>; /* minimum GPMC partition = 16MB */ 543 ranges = <0 0 0 0x01000000>; /* minimum GPMC partition = 16MB */
544 nand@0,0 { 544 nand@0,0 {
545 reg = <0 0 4>; /* device IO registers */ 545 reg = <0 0 4>; /* device IO registers */
546 ti,nand-ecc-opt = "bch8"; 546 ti,nand-ecc-opt = "bch8";
547 ti,elm-id = <&elm>; 547 ti,elm-id = <&elm>;
548 nand-bus-width = <16>; 548 nand-bus-width = <16>;
549 gpmc,device-width = <2>; 549 gpmc,device-width = <2>;
550 gpmc,sync-clk-ps = <0>; 550 gpmc,sync-clk-ps = <0>;
551 gpmc,cs-on-ns = <0>; 551 gpmc,cs-on-ns = <0>;
552 gpmc,cs-rd-off-ns = <80>; 552 gpmc,cs-rd-off-ns = <80>;
553 gpmc,cs-wr-off-ns = <80>; 553 gpmc,cs-wr-off-ns = <80>;
554 gpmc,adv-on-ns = <0>; 554 gpmc,adv-on-ns = <0>;
555 gpmc,adv-rd-off-ns = <60>; 555 gpmc,adv-rd-off-ns = <60>;
556 gpmc,adv-wr-off-ns = <60>; 556 gpmc,adv-wr-off-ns = <60>;
557 gpmc,we-on-ns = <10>; 557 gpmc,we-on-ns = <10>;
558 gpmc,we-off-ns = <50>; 558 gpmc,we-off-ns = <50>;
559 gpmc,oe-on-ns = <4>; 559 gpmc,oe-on-ns = <4>;
560 gpmc,oe-off-ns = <40>; 560 gpmc,oe-off-ns = <40>;
561 gpmc,access-ns = <40>; 561 gpmc,access-ns = <40>;
562 gpmc,wr-access-ns = <80>; 562 gpmc,wr-access-ns = <80>;
563 gpmc,rd-cycle-ns = <80>; 563 gpmc,rd-cycle-ns = <80>;
564 gpmc,wr-cycle-ns = <80>; 564 gpmc,wr-cycle-ns = <80>;
565 gpmc,bus-turnaround-ns = <0>; 565 gpmc,bus-turnaround-ns = <0>;
566 gpmc,cycle2cycle-delay-ns = <0>; 566 gpmc,cycle2cycle-delay-ns = <0>;
567 gpmc,clk-activation-ns = <0>; 567 gpmc,clk-activation-ns = <0>;
568 gpmc,wait-monitoring-ns = <0>; 568 gpmc,wait-monitoring-ns = <0>;
569 gpmc,wr-data-mux-bus-ns = <0>; 569 gpmc,wr-data-mux-bus-ns = <0>;
570 /* MTD partition table */ 570 /* MTD partition table */
571 /* All SPL-* partitions are sized to minimal length 571 /* All SPL-* partitions are sized to minimal length
572 * which can be independently programmable. For 572 * which can be independently programmable. For
573 * NAND flash this is equal to size of erase-block */ 573 * NAND flash this is equal to size of erase-block */
574 #address-cells = <1>; 574 #address-cells = <1>;
575 #size-cells = <1>; 575 #size-cells = <1>;
576 partition@0 { 576 partition@0 {
577 label = "NAND.SPL"; 577 label = "NAND.SPL";
578 reg = <0x00000000 0x000020000>; 578 reg = <0x00000000 0x000020000>;
579 }; 579 };
580 partition@1 { 580 partition@1 {
581 label = "NAND.SPL.backup1"; 581 label = "NAND.SPL.backup1";
582 reg = <0x00020000 0x00020000>; 582 reg = <0x00020000 0x00020000>;
583 }; 583 };
584 partition@2 { 584 partition@2 {
585 label = "NAND.SPL.backup2"; 585 label = "NAND.SPL.backup2";
586 reg = <0x00040000 0x00020000>; 586 reg = <0x00040000 0x00020000>;
587 }; 587 };
588 partition@3 { 588 partition@3 {
589 label = "NAND.SPL.backup3"; 589 label = "NAND.SPL.backup3";
590 reg = <0x00060000 0x00020000>; 590 reg = <0x00060000 0x00020000>;
591 }; 591 };
592 partition@4 { 592 partition@4 {
593 label = "NAND.u-boot-spl-os"; 593 label = "NAND.u-boot-spl-os";
594 reg = <0x00080000 0x00040000>; 594 reg = <0x00080000 0x00040000>;
595 }; 595 };
596 partition@5 { 596 partition@5 {
597 label = "NAND.u-boot"; 597 label = "NAND.u-boot";
598 reg = <0x000c0000 0x00100000>; 598 reg = <0x000c0000 0x00100000>;
599 }; 599 };
600 partition@6 { 600 partition@6 {
601 label = "NAND.u-boot-env"; 601 label = "NAND.u-boot-env";
602 reg = <0x001c0000 0x00020000>; 602 reg = <0x001c0000 0x00020000>;
603 }; 603 };
604 partition@7 { 604 partition@7 {
605 label = "NAND.u-boot-env.backup1"; 605 label = "NAND.u-boot-env.backup1";
606 reg = <0x001e0000 0x00020000>; 606 reg = <0x001e0000 0x00020000>;
607 }; 607 };
608 partition@8 { 608 partition@8 {
609 label = "NAND.kernel"; 609 label = "NAND.kernel";
610 reg = <0x00200000 0x00800000>; 610 reg = <0x00200000 0x00800000>;
611 }; 611 };
612 partition@9 { 612 partition@9 {
613 label = "NAND.file-system"; 613 label = "NAND.file-system";
614 reg = <0x00a00000 0x0f600000>; 614 reg = <0x00a00000 0x0f600000>;
615 }; 615 };
616 }; 616 };
617 }; 617 };
618 618
619 &usb2_phy1 { 619 &usb2_phy1 {
620 phy-supply = <&ldousb_reg>; 620 phy-supply = <&ldousb_reg>;
621 }; 621 };
622 622
623 &usb2_phy2 { 623 &usb2_phy2 {
624 phy-supply = <&ldousb_reg>; 624 phy-supply = <&ldousb_reg>;
625 }; 625 };
626 626
627 &gpio7 { 627 &gpio7 {
628 ti,no-reset-on-init; 628 ti,no-reset-on-init;
629 ti,no-idle-on-init; 629 ti,no-idle-on-init;
630 }; 630 };
631 631
632 &mac { 632 &mac {
633 status = "okay"; 633 status = "okay";
634 pinctrl-names = "default", "sleep"; 634 pinctrl-names = "default", "sleep";
635 pinctrl-0 = <&cpsw_default>; 635 pinctrl-0 = <&cpsw_default>;
636 pinctrl-1 = <&cpsw_sleep>; 636 pinctrl-1 = <&cpsw_sleep>;
637 dual_emac; 637 dual_emac;
638 }; 638 };
639 639
640 &cpsw_emac0 { 640 &cpsw_emac0 {
641 phy_id = <&davinci_mdio>, <2>; 641 phy_id = <&davinci_mdio>, <2>;
642 phy-mode = "rgmii"; 642 phy-mode = "rgmii";
643 dual_emac_res_vlan = <1>; 643 dual_emac_res_vlan = <1>;
644 }; 644 };
645 645
646 &cpsw_emac1 { 646 &cpsw_emac1 {
647 phy_id = <&davinci_mdio>, <3>; 647 phy_id = <&davinci_mdio>, <3>;
648 phy-mode = "rgmii"; 648 phy-mode = "rgmii";
649 dual_emac_res_vlan = <2>; 649 dual_emac_res_vlan = <2>;
650 }; 650 };
651 651
652 &davinci_mdio { 652 &davinci_mdio {
653 pinctrl-names = "default", "sleep"; 653 pinctrl-names = "default", "sleep";
654 pinctrl-0 = <&davinci_mdio_default>; 654 pinctrl-0 = <&davinci_mdio_default>;
655 pinctrl-1 = <&davinci_mdio_sleep>; 655 pinctrl-1 = <&davinci_mdio_sleep>;
656 }; 656 };
657 657
658 &dcan1 { 658 &dcan1 {
659 status = "ok"; 659 status = "ok";
660 pinctrl-names = "default", "sleep"; 660 pinctrl-names = "default", "sleep";
661 pinctrl-0 = <&dcan1_pins_default>; 661 pinctrl-0 = <&dcan1_pins_default>;
662 pinctrl-1 = <&dcan1_pins_sleep>; 662 pinctrl-1 = <&dcan1_pins_sleep>;
663 }; 663 };
664 664
arch/arm/boot/dts/omap3-n900.dts
1 /* 1 /*
2 * Copyright (C) 2013 Pavel Machek <pavel@ucw.cz> 2 * Copyright (C) 2013 Pavel Machek <pavel@ucw.cz>
3 * Copyright (C) 2013-2014 Aaro Koskinen <aaro.koskinen@iki.fi> 3 * Copyright (C) 2013-2014 Aaro Koskinen <aaro.koskinen@iki.fi>
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 (or later) as 6 * it under the terms of the GNU General Public License version 2 (or later) as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 */ 8 */
9 9
10 /dts-v1/; 10 /dts-v1/;
11 11
12 #include "omap34xx-hs.dtsi" 12 #include "omap34xx-hs.dtsi"
13 #include <dt-bindings/input/input.h> 13 #include <dt-bindings/input/input.h>
14 14
15 / { 15 / {
16 model = "Nokia N900"; 16 model = "Nokia N900";
17 compatible = "nokia,omap3-n900", "ti,omap3430", "ti,omap3"; 17 compatible = "nokia,omap3-n900", "ti,omap3430", "ti,omap3";
18 18
19 cpus { 19 cpus {
20 cpu@0 { 20 cpu@0 {
21 cpu0-supply = <&vcc>; 21 cpu0-supply = <&vcc>;
22 }; 22 };
23 }; 23 };
24 24
25 leds { 25 leds {
26 compatible = "gpio-leds"; 26 compatible = "gpio-leds";
27 heartbeat { 27 heartbeat {
28 label = "debug::sleep"; 28 label = "debug::sleep";
29 gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>; /* gpio162 */ 29 gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>; /* gpio162 */
30 linux,default-trigger = "default-on"; 30 linux,default-trigger = "default-on";
31 pinctrl-names = "default"; 31 pinctrl-names = "default";
32 pinctrl-0 = <&debug_leds>; 32 pinctrl-0 = <&debug_leds>;
33 }; 33 };
34 }; 34 };
35 35
36 memory { 36 memory {
37 device_type = "memory"; 37 device_type = "memory";
38 reg = <0x80000000 0x10000000>; /* 256 MB */ 38 reg = <0x80000000 0x10000000>; /* 256 MB */
39 }; 39 };
40 40
41 gpio_keys { 41 gpio_keys {
42 compatible = "gpio-keys"; 42 compatible = "gpio-keys";
43 43
44 camera_lens_cover { 44 camera_lens_cover {
45 label = "Camera Lens Cover"; 45 label = "Camera Lens Cover";
46 gpios = <&gpio4 14 GPIO_ACTIVE_LOW>; /* 110 */ 46 gpios = <&gpio4 14 GPIO_ACTIVE_LOW>; /* 110 */
47 linux,input-type = <5>; /* EV_SW */ 47 linux,input-type = <5>; /* EV_SW */
48 linux,code = <0x09>; /* SW_CAMERA_LENS_COVER */ 48 linux,code = <0x09>; /* SW_CAMERA_LENS_COVER */
49 gpio-key,wakeup; 49 gpio-key,wakeup;
50 }; 50 };
51 51
52 camera_focus { 52 camera_focus {
53 label = "Camera Focus"; 53 label = "Camera Focus";
54 gpios = <&gpio3 4 GPIO_ACTIVE_LOW>; /* 68 */ 54 gpios = <&gpio3 4 GPIO_ACTIVE_LOW>; /* 68 */
55 linux,code = <0x210>; /* KEY_CAMERA_FOCUS */ 55 linux,code = <0x210>; /* KEY_CAMERA_FOCUS */
56 gpio-key,wakeup; 56 gpio-key,wakeup;
57 }; 57 };
58 58
59 camera_capture { 59 camera_capture {
60 label = "Camera Capture"; 60 label = "Camera Capture";
61 gpios = <&gpio3 5 GPIO_ACTIVE_LOW>; /* 69 */ 61 gpios = <&gpio3 5 GPIO_ACTIVE_LOW>; /* 69 */
62 linux,code = <0xd4>; /* KEY_CAMERA */ 62 linux,code = <0xd4>; /* KEY_CAMERA */
63 gpio-key,wakeup; 63 gpio-key,wakeup;
64 }; 64 };
65 65
66 lock_button { 66 lock_button {
67 label = "Lock Button"; 67 label = "Lock Button";
68 gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; /* 113 */ 68 gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; /* 113 */
69 linux,code = <0x98>; /* KEY_SCREENLOCK */ 69 linux,code = <0x98>; /* KEY_SCREENLOCK */
70 gpio-key,wakeup; 70 gpio-key,wakeup;
71 }; 71 };
72 72
73 keypad_slide { 73 keypad_slide {
74 label = "Keypad Slide"; 74 label = "Keypad Slide";
75 gpios = <&gpio3 7 GPIO_ACTIVE_LOW>; /* 71 */ 75 gpios = <&gpio3 7 GPIO_ACTIVE_LOW>; /* 71 */
76 linux,input-type = <5>; /* EV_SW */ 76 linux,input-type = <5>; /* EV_SW */
77 linux,code = <0x0a>; /* SW_KEYPAD_SLIDE */ 77 linux,code = <0x0a>; /* SW_KEYPAD_SLIDE */
78 gpio-key,wakeup; 78 gpio-key,wakeup;
79 }; 79 };
80 80
81 proximity_sensor { 81 proximity_sensor {
82 label = "Proximity Sensor"; 82 label = "Proximity Sensor";
83 gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>; /* 89 */ 83 gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>; /* 89 */
84 linux,input-type = <5>; /* EV_SW */ 84 linux,input-type = <5>; /* EV_SW */
85 linux,code = <0x0b>; /* SW_FRONT_PROXIMITY */ 85 linux,code = <0x0b>; /* SW_FRONT_PROXIMITY */
86 }; 86 };
87 }; 87 };
88 88
89 isp1704: isp1704 { 89 isp1704: isp1704 {
90 compatible = "nxp,isp1704"; 90 compatible = "nxp,isp1704";
91 nxp,enable-gpio = <&gpio3 3 GPIO_ACTIVE_HIGH>; 91 nxp,enable-gpio = <&gpio3 3 GPIO_ACTIVE_HIGH>;
92 usb-phy = <&usb2_phy>; 92 usb-phy = <&usb2_phy>;
93 }; 93 };
94 94
95 tv: connector { 95 tv: connector {
96 compatible = "composite-video-connector"; 96 compatible = "composite-video-connector";
97 label = "tv"; 97 label = "tv";
98 98
99 port { 99 port {
100 tv_connector_in: endpoint { 100 tv_connector_in: endpoint {
101 remote-endpoint = <&venc_out>; 101 remote-endpoint = <&venc_out>;
102 }; 102 };
103 }; 103 };
104 }; 104 };
105 105
106 sound: n900-audio { 106 sound: n900-audio {
107 compatible = "nokia,n900-audio"; 107 compatible = "nokia,n900-audio";
108 108
109 nokia,cpu-dai = <&mcbsp2>; 109 nokia,cpu-dai = <&mcbsp2>;
110 nokia,audio-codec = <&tlv320aic3x>, <&tlv320aic3x_aux>; 110 nokia,audio-codec = <&tlv320aic3x>, <&tlv320aic3x_aux>;
111 nokia,headphone-amplifier = <&tpa6130a2>; 111 nokia,headphone-amplifier = <&tpa6130a2>;
112 112
113 tvout-selection-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; /* 40 */ 113 tvout-selection-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; /* 40 */
114 jack-detection-gpios = <&gpio6 17 GPIO_ACTIVE_HIGH>; /* 177 */ 114 jack-detection-gpios = <&gpio6 17 GPIO_ACTIVE_HIGH>; /* 177 */
115 eci-switch-gpios = <&gpio6 22 GPIO_ACTIVE_HIGH>; /* 182 */ 115 eci-switch-gpios = <&gpio6 22 GPIO_ACTIVE_HIGH>; /* 182 */
116 speaker-amplifier-gpios = <&twl_gpio 7 GPIO_ACTIVE_HIGH>; 116 speaker-amplifier-gpios = <&twl_gpio 7 GPIO_ACTIVE_HIGH>;
117 }; 117 };
118 118
119 battery: n900-battery { 119 battery: n900-battery {
120 compatible = "nokia,n900-battery"; 120 compatible = "nokia,n900-battery";
121 io-channels = <&twl_madc 0>, <&twl_madc 4>, <&twl_madc 12>; 121 io-channels = <&twl_madc 0>, <&twl_madc 4>, <&twl_madc 12>;
122 io-channel-names = "temp", "bsi", "vbat"; 122 io-channel-names = "temp", "bsi", "vbat";
123 }; 123 };
124 }; 124 };
125 125
126 &omap3_pmx_core { 126 &omap3_pmx_core {
127 pinctrl-names = "default"; 127 pinctrl-names = "default";
128 128
129 uart2_pins: pinmux_uart2_pins { 129 uart2_pins: pinmux_uart2_pins {
130 pinctrl-single,pins = < 130 pinctrl-single,pins = <
131 0x14a (PIN_INPUT | MUX_MODE0) /* uart2_rx */ 131 0x14a (PIN_INPUT | MUX_MODE0) /* uart2_rx */
132 0x148 (PIN_OUTPUT | MUX_MODE0) /* uart2_tx */ 132 0x148 (PIN_OUTPUT | MUX_MODE0) /* uart2_tx */
133 >; 133 >;
134 }; 134 };
135 135
136 uart3_pins: pinmux_uart3_pins { 136 uart3_pins: pinmux_uart3_pins {
137 pinctrl-single,pins = < 137 pinctrl-single,pins = <
138 0x16e (PIN_INPUT | MUX_MODE0) /* uart3_rx */ 138 0x16e (PIN_INPUT | MUX_MODE0) /* uart3_rx */
139 0x170 (PIN_OUTPUT | MUX_MODE0) /* uart3_tx */ 139 0x170 (PIN_OUTPUT | MUX_MODE0) /* uart3_tx */
140 >; 140 >;
141 }; 141 };
142 142
143 ethernet_pins: pinmux_ethernet_pins { 143 ethernet_pins: pinmux_ethernet_pins {
144 pinctrl-single,pins = < 144 pinctrl-single,pins = <
145 OMAP3_CORE1_IOPAD(0x20b4, PIN_INPUT_PULLDOWN | MUX_MODE4) /* gpmc_ncs3.gpio_54 */ 145 OMAP3_CORE1_IOPAD(0x20b4, PIN_INPUT_PULLDOWN | MUX_MODE4) /* gpmc_ncs3.gpio_54 */
146 OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE4) /* dss_data16.gpio_86 */ 146 OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE4) /* dss_data16.gpio_86 */
147 OMAP3_CORE1_IOPAD(0x219c, PIN_OUTPUT | MUX_MODE4) /* uart3_rts_sd.gpio_164 */ 147 OMAP3_CORE1_IOPAD(0x219c, PIN_OUTPUT | MUX_MODE4) /* uart3_rts_sd.gpio_164 */
148 >; 148 >;
149 }; 149 };
150 150
151 gpmc_pins: pinmux_gpmc_pins { 151 gpmc_pins: pinmux_gpmc_pins {
152 pinctrl-single,pins = < 152 pinctrl-single,pins = <
153 153
154 /* address lines */ 154 /* address lines */
155 OMAP3_CORE1_IOPAD(0x207a, PIN_OUTPUT | MUX_MODE0) /* gpmc_a1.gpmc_a1 */ 155 OMAP3_CORE1_IOPAD(0x207a, PIN_OUTPUT | MUX_MODE0) /* gpmc_a1.gpmc_a1 */
156 OMAP3_CORE1_IOPAD(0x207c, PIN_OUTPUT | MUX_MODE0) /* gpmc_a2.gpmc_a2 */ 156 OMAP3_CORE1_IOPAD(0x207c, PIN_OUTPUT | MUX_MODE0) /* gpmc_a2.gpmc_a2 */
157 OMAP3_CORE1_IOPAD(0x207e, PIN_OUTPUT | MUX_MODE0) /* gpmc_a3.gpmc_a3 */ 157 OMAP3_CORE1_IOPAD(0x207e, PIN_OUTPUT | MUX_MODE0) /* gpmc_a3.gpmc_a3 */
158 158
159 /* data lines, gpmc_d0..d7 not muxable according to TRM */ 159 /* data lines, gpmc_d0..d7 not muxable according to TRM */
160 OMAP3_CORE1_IOPAD(0x209e, PIN_INPUT | MUX_MODE0) /* gpmc_d8.gpmc_d8 */ 160 OMAP3_CORE1_IOPAD(0x209e, PIN_INPUT | MUX_MODE0) /* gpmc_d8.gpmc_d8 */
161 OMAP3_CORE1_IOPAD(0x20a0, PIN_INPUT | MUX_MODE0) /* gpmc_d9.gpmc_d9 */ 161 OMAP3_CORE1_IOPAD(0x20a0, PIN_INPUT | MUX_MODE0) /* gpmc_d9.gpmc_d9 */
162 OMAP3_CORE1_IOPAD(0x20a2, PIN_INPUT | MUX_MODE0) /* gpmc_d10.gpmc_d10 */ 162 OMAP3_CORE1_IOPAD(0x20a2, PIN_INPUT | MUX_MODE0) /* gpmc_d10.gpmc_d10 */
163 OMAP3_CORE1_IOPAD(0x20a4, PIN_INPUT | MUX_MODE0) /* gpmc_d11.gpmc_d11 */ 163 OMAP3_CORE1_IOPAD(0x20a4, PIN_INPUT | MUX_MODE0) /* gpmc_d11.gpmc_d11 */
164 OMAP3_CORE1_IOPAD(0x20a6, PIN_INPUT | MUX_MODE0) /* gpmc_d12.gpmc_d12 */ 164 OMAP3_CORE1_IOPAD(0x20a6, PIN_INPUT | MUX_MODE0) /* gpmc_d12.gpmc_d12 */
165 OMAP3_CORE1_IOPAD(0x20a8, PIN_INPUT | MUX_MODE0) /* gpmc_d13.gpmc_d13 */ 165 OMAP3_CORE1_IOPAD(0x20a8, PIN_INPUT | MUX_MODE0) /* gpmc_d13.gpmc_d13 */
166 OMAP3_CORE1_IOPAD(0x20aa, PIN_INPUT | MUX_MODE0) /* gpmc_d14.gpmc_d14 */ 166 OMAP3_CORE1_IOPAD(0x20aa, PIN_INPUT | MUX_MODE0) /* gpmc_d14.gpmc_d14 */
167 OMAP3_CORE1_IOPAD(0x20ac, PIN_INPUT | MUX_MODE0) /* gpmc_d15.gpmc_d15 */ 167 OMAP3_CORE1_IOPAD(0x20ac, PIN_INPUT | MUX_MODE0) /* gpmc_d15.gpmc_d15 */
168 168
169 /* 169 /*
170 * gpmc_ncs0, gpmc_nadv_ale, gpmc_noe, gpmc_nwe, gpmc_wait0 not muxable 170 * gpmc_ncs0, gpmc_nadv_ale, gpmc_noe, gpmc_nwe, gpmc_wait0 not muxable
171 * according to TRM. OneNAND seems to require PIN_INPUT on clock. 171 * according to TRM. OneNAND seems to require PIN_INPUT on clock.
172 */ 172 */
173 OMAP3_CORE1_IOPAD(0x20b0, PIN_OUTPUT | MUX_MODE0) /* gpmc_ncs1.gpmc_ncs1 */ 173 OMAP3_CORE1_IOPAD(0x20b0, PIN_OUTPUT | MUX_MODE0) /* gpmc_ncs1.gpmc_ncs1 */
174 OMAP3_CORE1_IOPAD(0x20be, PIN_INPUT | MUX_MODE0) /* gpmc_clk.gpmc_clk */ 174 OMAP3_CORE1_IOPAD(0x20be, PIN_INPUT | MUX_MODE0) /* gpmc_clk.gpmc_clk */
175 >; 175 >;
176 }; 176 };
177 177
178 i2c1_pins: pinmux_i2c1_pins { 178 i2c1_pins: pinmux_i2c1_pins {
179 pinctrl-single,pins = < 179 pinctrl-single,pins = <
180 0x18a (PIN_INPUT | MUX_MODE0) /* i2c1_scl */ 180 0x18a (PIN_INPUT | MUX_MODE0) /* i2c1_scl */
181 0x18c (PIN_INPUT | MUX_MODE0) /* i2c1_sda */ 181 0x18c (PIN_INPUT | MUX_MODE0) /* i2c1_sda */
182 >; 182 >;
183 }; 183 };
184 184
185 i2c2_pins: pinmux_i2c2_pins { 185 i2c2_pins: pinmux_i2c2_pins {
186 pinctrl-single,pins = < 186 pinctrl-single,pins = <
187 0x18e (PIN_INPUT | MUX_MODE0) /* i2c2_scl */ 187 0x18e (PIN_INPUT | MUX_MODE0) /* i2c2_scl */
188 0x190 (PIN_INPUT | MUX_MODE0) /* i2c2_sda */ 188 0x190 (PIN_INPUT | MUX_MODE0) /* i2c2_sda */
189 >; 189 >;
190 }; 190 };
191 191
192 i2c3_pins: pinmux_i2c3_pins { 192 i2c3_pins: pinmux_i2c3_pins {
193 pinctrl-single,pins = < 193 pinctrl-single,pins = <
194 0x192 (PIN_INPUT | MUX_MODE0) /* i2c3_scl */ 194 0x192 (PIN_INPUT | MUX_MODE0) /* i2c3_scl */
195 0x194 (PIN_INPUT | MUX_MODE0) /* i2c3_sda */ 195 0x194 (PIN_INPUT | MUX_MODE0) /* i2c3_sda */
196 >; 196 >;
197 }; 197 };
198 198
199 debug_leds: pinmux_debug_led_pins { 199 debug_leds: pinmux_debug_led_pins {
200 pinctrl-single,pins = < 200 pinctrl-single,pins = <
201 OMAP3_CORE1_IOPAD(0x2198, PIN_OUTPUT | MUX_MODE4) /* mcbsp1_clkx.gpio_162 */ 201 OMAP3_CORE1_IOPAD(0x2198, PIN_OUTPUT | MUX_MODE4) /* mcbsp1_clkx.gpio_162 */
202 >; 202 >;
203 }; 203 };
204 204
205 mcspi4_pins: pinmux_mcspi4_pins { 205 mcspi4_pins: pinmux_mcspi4_pins {
206 pinctrl-single,pins = < 206 pinctrl-single,pins = <
207 0x15c (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_clk */ 207 0x15c (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_clk */
208 0x162 (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_somi */ 208 0x162 (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mcspi4_somi */
209 0x160 (PIN_OUTPUT | MUX_MODE1) /* mcspi4_simo */ 209 0x160 (PIN_OUTPUT | MUX_MODE1) /* mcspi4_simo */
210 0x166 (PIN_OUTPUT | MUX_MODE1) /* mcspi4_cs0 */ 210 0x166 (PIN_OUTPUT | MUX_MODE1) /* mcspi4_cs0 */
211 >; 211 >;
212 }; 212 };
213 213
214 mmc1_pins: pinmux_mmc1_pins { 214 mmc1_pins: pinmux_mmc1_pins {
215 pinctrl-single,pins = < 215 pinctrl-single,pins = <
216 0x114 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_clk */ 216 0x114 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_clk */
217 0x116 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_cmd */ 217 0x116 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_cmd */
218 0x118 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat0 */ 218 0x118 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat0 */
219 0x11a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat1 */ 219 0x11a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat1 */
220 0x11c (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat2 */ 220 0x11c (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat2 */
221 0x11e (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat3 */ 221 0x11e (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat3 */
222 >; 222 >;
223 }; 223 };
224 224
225 mmc2_pins: pinmux_mmc2_pins { 225 mmc2_pins: pinmux_mmc2_pins {
226 pinctrl-single,pins = < 226 pinctrl-single,pins = <
227 0x128 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk */ 227 0x128 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk */
228 0x12a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd */ 228 0x12a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd */
229 0x12c (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0 */ 229 0x12c (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0 */
230 0x12e (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1 */ 230 0x12e (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1 */
231 0x130 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2 */ 231 0x130 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2 */
232 0x132 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3 */ 232 0x132 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3 */
233 0x134 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat4 */ 233 0x134 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat4 */
234 0x136 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat5 */ 234 0x136 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat5 */
235 0x138 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat6 */ 235 0x138 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat6 */
236 0x13a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat7 */ 236 0x13a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat7 */
237 >; 237 >;
238 }; 238 };
239 239
240 acx565akm_pins: pinmux_acx565akm_pins { 240 acx565akm_pins: pinmux_acx565akm_pins {
241 pinctrl-single,pins = < 241 pinctrl-single,pins = <
242 0x0d4 (PIN_OUTPUT | MUX_MODE4) /* RX51_LCD_RESET_GPIO */ 242 0x0d4 (PIN_OUTPUT | MUX_MODE4) /* RX51_LCD_RESET_GPIO */
243 >; 243 >;
244 }; 244 };
245 245
246 dss_sdi_pins: pinmux_dss_sdi_pins { 246 dss_sdi_pins: pinmux_dss_sdi_pins {
247 pinctrl-single,pins = < 247 pinctrl-single,pins = <
248 0x0c0 (PIN_OUTPUT | MUX_MODE1) /* dss_data10.sdi_dat1n */ 248 0x0c0 (PIN_OUTPUT | MUX_MODE1) /* dss_data10.sdi_dat1n */
249 0x0c2 (PIN_OUTPUT | MUX_MODE1) /* dss_data11.sdi_dat1p */ 249 0x0c2 (PIN_OUTPUT | MUX_MODE1) /* dss_data11.sdi_dat1p */
250 0x0c4 (PIN_OUTPUT | MUX_MODE1) /* dss_data12.sdi_dat2n */ 250 0x0c4 (PIN_OUTPUT | MUX_MODE1) /* dss_data12.sdi_dat2n */
251 0x0c6 (PIN_OUTPUT | MUX_MODE1) /* dss_data13.sdi_dat2p */ 251 0x0c6 (PIN_OUTPUT | MUX_MODE1) /* dss_data13.sdi_dat2p */
252 252
253 0x0d8 (PIN_OUTPUT | MUX_MODE1) /* dss_data22.sdi_clkp */ 253 0x0d8 (PIN_OUTPUT | MUX_MODE1) /* dss_data22.sdi_clkp */
254 0x0da (PIN_OUTPUT | MUX_MODE1) /* dss_data23.sdi_clkn */ 254 0x0da (PIN_OUTPUT | MUX_MODE1) /* dss_data23.sdi_clkn */
255 >; 255 >;
256 }; 256 };
257 257
258 wl1251_pins: pinmux_wl1251 { 258 wl1251_pins: pinmux_wl1251 {
259 pinctrl-single,pins = < 259 pinctrl-single,pins = <
260 0x0ce (PIN_OUTPUT | MUX_MODE4) /* gpio 87 => wl1251 enable */ 260 0x0ce (PIN_OUTPUT | MUX_MODE4) /* gpio 87 => wl1251 enable */
261 0x05a (PIN_INPUT | MUX_MODE4) /* gpio 42 => wl1251 irq */ 261 0x05a (PIN_INPUT | MUX_MODE4) /* gpio 42 => wl1251 irq */
262 >; 262 >;
263 }; 263 };
264 264
265 ssi_pins: pinmux_ssi { 265 ssi_pins: pinmux_ssi {
266 pinctrl-single,pins = < 266 pinctrl-single,pins = <
267 0x150 (PIN_INPUT_PULLUP | MUX_MODE1) /* ssi1_rdy_tx */ 267 0x150 (PIN_INPUT_PULLUP | MUX_MODE1) /* ssi1_rdy_tx */
268 0x14e (PIN_OUTPUT | MUX_MODE1) /* ssi1_flag_tx */ 268 0x14e (PIN_OUTPUT | MUX_MODE1) /* ssi1_flag_tx */
269 0x152 (PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* ssi1_wake_tx (cawake) */ 269 0x152 (PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* ssi1_wake_tx (cawake) */
270 0x14c (PIN_OUTPUT | MUX_MODE1) /* ssi1_dat_tx */ 270 0x14c (PIN_OUTPUT | MUX_MODE1) /* ssi1_dat_tx */
271 0x154 (PIN_INPUT | MUX_MODE1) /* ssi1_dat_rx */ 271 0x154 (PIN_INPUT | MUX_MODE1) /* ssi1_dat_rx */
272 0x156 (PIN_INPUT | MUX_MODE1) /* ssi1_flag_rx */ 272 0x156 (PIN_INPUT | MUX_MODE1) /* ssi1_flag_rx */
273 0x158 (PIN_OUTPUT | MUX_MODE1) /* ssi1_rdy_rx */ 273 0x158 (PIN_OUTPUT | MUX_MODE1) /* ssi1_rdy_rx */
274 0x15a (PIN_OUTPUT | MUX_MODE1) /* ssi1_wake */ 274 0x15a (PIN_OUTPUT | MUX_MODE1) /* ssi1_wake */
275 >; 275 >;
276 }; 276 };
277 277
278 modem_pins: pinmux_modem { 278 modem_pins: pinmux_modem {
279 pinctrl-single,pins = < 279 pinctrl-single,pins = <
280 0x0ac (PIN_OUTPUT | MUX_MODE4) /* gpio 70 => cmt_apeslpx */ 280 0x0ac (PIN_OUTPUT | MUX_MODE4) /* gpio 70 => cmt_apeslpx */
281 0x0b0 (PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* gpio 72 => ape_rst_rq */ 281 0x0b0 (PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* gpio 72 => ape_rst_rq */
282 0x0b2 (PIN_OUTPUT | MUX_MODE4) /* gpio 73 => cmt_rst_rq */ 282 0x0b2 (PIN_OUTPUT | MUX_MODE4) /* gpio 73 => cmt_rst_rq */
283 0x0b4 (PIN_OUTPUT | MUX_MODE4) /* gpio 74 => cmt_en */ 283 0x0b4 (PIN_OUTPUT | MUX_MODE4) /* gpio 74 => cmt_en */
284 0x0b6 (PIN_OUTPUT | MUX_MODE4) /* gpio 75 => cmt_rst */ 284 0x0b6 (PIN_OUTPUT | MUX_MODE4) /* gpio 75 => cmt_rst */
285 0x15e (PIN_OUTPUT | MUX_MODE4) /* gpio 157 => cmt_bsi */ 285 0x15e (PIN_OUTPUT | MUX_MODE4) /* gpio 157 => cmt_bsi */
286 >; 286 >;
287 }; 287 };
288 }; 288 };
289 289
290 &i2c1 { 290 &i2c1 {
291 pinctrl-names = "default"; 291 pinctrl-names = "default";
292 pinctrl-0 = <&i2c1_pins>; 292 pinctrl-0 = <&i2c1_pins>;
293 293
294 clock-frequency = <2200000>; 294 clock-frequency = <2200000>;
295 295
296 twl: twl@48 { 296 twl: twl@48 {
297 reg = <0x48>; 297 reg = <0x48>;
298 interrupts = <7>; /* SYS_NIRQ cascaded to intc */ 298 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
299 interrupt-parent = <&intc>; 299 interrupt-parent = <&intc>;
300 }; 300 };
301 }; 301 };
302 302
303 #include "twl4030.dtsi" 303 #include "twl4030.dtsi"
304 #include "twl4030_omap3.dtsi" 304 #include "twl4030_omap3.dtsi"
305 305
306 &vaux1 { 306 &vaux1 {
307 regulator-name = "V28"; 307 regulator-name = "V28";
308 regulator-min-microvolt = <2800000>; 308 regulator-min-microvolt = <2800000>;
309 regulator-max-microvolt = <2800000>; 309 regulator-max-microvolt = <2800000>;
310 regulator-always-on; /* due battery cover sensor */ 310 regulator-always-on; /* due battery cover sensor */
311 }; 311 };
312 312
313 &vaux2 { 313 &vaux2 {
314 regulator-name = "VCSI"; 314 regulator-name = "VCSI";
315 regulator-min-microvolt = <1800000>; 315 regulator-min-microvolt = <1800000>;
316 regulator-max-microvolt = <1800000>; 316 regulator-max-microvolt = <1800000>;
317 }; 317 };
318 318
319 &vaux3 { 319 &vaux3 {
320 regulator-name = "VMMC2_30"; 320 regulator-name = "VMMC2_30";
321 regulator-min-microvolt = <2800000>; 321 regulator-min-microvolt = <2800000>;
322 regulator-max-microvolt = <3000000>; 322 regulator-max-microvolt = <3000000>;
323 }; 323 };
324 324
325 &vaux4 { 325 &vaux4 {
326 regulator-name = "VCAM_ANA_28"; 326 regulator-name = "VCAM_ANA_28";
327 regulator-min-microvolt = <2800000>; 327 regulator-min-microvolt = <2800000>;
328 regulator-max-microvolt = <2800000>; 328 regulator-max-microvolt = <2800000>;
329 }; 329 };
330 330
331 &vmmc1 { 331 &vmmc1 {
332 regulator-name = "VMMC1"; 332 regulator-name = "VMMC1";
333 regulator-min-microvolt = <1850000>; 333 regulator-min-microvolt = <1850000>;
334 regulator-max-microvolt = <3150000>; 334 regulator-max-microvolt = <3150000>;
335 }; 335 };
336 336
337 &vmmc2 { 337 &vmmc2 {
338 regulator-name = "V28_A"; 338 regulator-name = "V28_A";
339 regulator-min-microvolt = <2800000>; 339 regulator-min-microvolt = <2800000>;
340 regulator-max-microvolt = <3000000>; 340 regulator-max-microvolt = <3000000>;
341 regulator-always-on; /* due VIO leak to AIC34 VDDs */ 341 regulator-always-on; /* due VIO leak to AIC34 VDDs */
342 }; 342 };
343 343
344 &vpll1 { 344 &vpll1 {
345 regulator-name = "VPLL"; 345 regulator-name = "VPLL";
346 regulator-min-microvolt = <1800000>; 346 regulator-min-microvolt = <1800000>;
347 regulator-max-microvolt = <1800000>; 347 regulator-max-microvolt = <1800000>;
348 regulator-always-on; 348 regulator-always-on;
349 }; 349 };
350 350
351 &vpll2 { 351 &vpll2 {
352 regulator-name = "VSDI_CSI"; 352 regulator-name = "VSDI_CSI";
353 regulator-min-microvolt = <1800000>; 353 regulator-min-microvolt = <1800000>;
354 regulator-max-microvolt = <1800000>; 354 regulator-max-microvolt = <1800000>;
355 regulator-always-on; 355 regulator-always-on;
356 }; 356 };
357 357
358 &vsim { 358 &vsim {
359 regulator-name = "VMMC2_IO_18"; 359 regulator-name = "VMMC2_IO_18";
360 regulator-min-microvolt = <1800000>; 360 regulator-min-microvolt = <1800000>;
361 regulator-max-microvolt = <1800000>; 361 regulator-max-microvolt = <1800000>;
362 }; 362 };
363 363
364 &vio { 364 &vio {
365 regulator-name = "VIO"; 365 regulator-name = "VIO";
366 regulator-min-microvolt = <1800000>; 366 regulator-min-microvolt = <1800000>;
367 regulator-max-microvolt = <1800000>; 367 regulator-max-microvolt = <1800000>;
368 368
369 }; 369 };
370 370
371 &vintana1 { 371 &vintana1 {
372 regulator-name = "VINTANA1"; 372 regulator-name = "VINTANA1";
373 /* fixed to 1500000 */ 373 /* fixed to 1500000 */
374 regulator-always-on; 374 regulator-always-on;
375 }; 375 };
376 376
377 &vintana2 { 377 &vintana2 {
378 regulator-name = "VINTANA2"; 378 regulator-name = "VINTANA2";
379 regulator-min-microvolt = <2750000>; 379 regulator-min-microvolt = <2750000>;
380 regulator-max-microvolt = <2750000>; 380 regulator-max-microvolt = <2750000>;
381 regulator-always-on; 381 regulator-always-on;
382 }; 382 };
383 383
384 &vintdig { 384 &vintdig {
385 regulator-name = "VINTDIG"; 385 regulator-name = "VINTDIG";
386 /* fixed to 1500000 */ 386 /* fixed to 1500000 */
387 regulator-always-on; 387 regulator-always-on;
388 }; 388 };
389 389
390 &twl { 390 &twl {
391 twl_audio: audio { 391 twl_audio: audio {
392 compatible = "ti,twl4030-audio"; 392 compatible = "ti,twl4030-audio";
393 ti,enable-vibra = <1>; 393 ti,enable-vibra = <1>;
394 }; 394 };
395 395
396 twl_power: power { 396 twl_power: power {
397 compatible = "ti,twl4030-power-n900", "ti,twl4030-power-idle-osc-off"; 397 compatible = "ti,twl4030-power-n900", "ti,twl4030-power-idle-osc-off";
398 ti,use_poweroff; 398 ti,use_poweroff;
399 }; 399 };
400 }; 400 };
401 401
402 &twl_keypad { 402 &twl_keypad {
403 linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_Q) 403 linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_Q)
404 MATRIX_KEY(0x00, 0x01, KEY_O) 404 MATRIX_KEY(0x00, 0x01, KEY_O)
405 MATRIX_KEY(0x00, 0x02, KEY_P) 405 MATRIX_KEY(0x00, 0x02, KEY_P)
406 MATRIX_KEY(0x00, 0x03, KEY_COMMA) 406 MATRIX_KEY(0x00, 0x03, KEY_COMMA)
407 MATRIX_KEY(0x00, 0x04, KEY_BACKSPACE) 407 MATRIX_KEY(0x00, 0x04, KEY_BACKSPACE)
408 MATRIX_KEY(0x00, 0x06, KEY_A) 408 MATRIX_KEY(0x00, 0x06, KEY_A)
409 MATRIX_KEY(0x00, 0x07, KEY_S) 409 MATRIX_KEY(0x00, 0x07, KEY_S)
410 410
411 MATRIX_KEY(0x01, 0x00, KEY_W) 411 MATRIX_KEY(0x01, 0x00, KEY_W)
412 MATRIX_KEY(0x01, 0x01, KEY_D) 412 MATRIX_KEY(0x01, 0x01, KEY_D)
413 MATRIX_KEY(0x01, 0x02, KEY_F) 413 MATRIX_KEY(0x01, 0x02, KEY_F)
414 MATRIX_KEY(0x01, 0x03, KEY_G) 414 MATRIX_KEY(0x01, 0x03, KEY_G)
415 MATRIX_KEY(0x01, 0x04, KEY_H) 415 MATRIX_KEY(0x01, 0x04, KEY_H)
416 MATRIX_KEY(0x01, 0x05, KEY_J) 416 MATRIX_KEY(0x01, 0x05, KEY_J)
417 MATRIX_KEY(0x01, 0x06, KEY_K) 417 MATRIX_KEY(0x01, 0x06, KEY_K)
418 MATRIX_KEY(0x01, 0x07, KEY_L) 418 MATRIX_KEY(0x01, 0x07, KEY_L)
419 419
420 MATRIX_KEY(0x02, 0x00, KEY_E) 420 MATRIX_KEY(0x02, 0x00, KEY_E)
421 MATRIX_KEY(0x02, 0x01, KEY_DOT) 421 MATRIX_KEY(0x02, 0x01, KEY_DOT)
422 MATRIX_KEY(0x02, 0x02, KEY_UP) 422 MATRIX_KEY(0x02, 0x02, KEY_UP)
423 MATRIX_KEY(0x02, 0x03, KEY_ENTER) 423 MATRIX_KEY(0x02, 0x03, KEY_ENTER)
424 MATRIX_KEY(0x02, 0x05, KEY_Z) 424 MATRIX_KEY(0x02, 0x05, KEY_Z)
425 MATRIX_KEY(0x02, 0x06, KEY_X) 425 MATRIX_KEY(0x02, 0x06, KEY_X)
426 MATRIX_KEY(0x02, 0x07, KEY_C) 426 MATRIX_KEY(0x02, 0x07, KEY_C)
427 MATRIX_KEY(0x02, 0x08, KEY_F9) 427 MATRIX_KEY(0x02, 0x08, KEY_F9)
428 428
429 MATRIX_KEY(0x03, 0x00, KEY_R) 429 MATRIX_KEY(0x03, 0x00, KEY_R)
430 MATRIX_KEY(0x03, 0x01, KEY_V) 430 MATRIX_KEY(0x03, 0x01, KEY_V)
431 MATRIX_KEY(0x03, 0x02, KEY_B) 431 MATRIX_KEY(0x03, 0x02, KEY_B)
432 MATRIX_KEY(0x03, 0x03, KEY_N) 432 MATRIX_KEY(0x03, 0x03, KEY_N)
433 MATRIX_KEY(0x03, 0x04, KEY_M) 433 MATRIX_KEY(0x03, 0x04, KEY_M)
434 MATRIX_KEY(0x03, 0x05, KEY_SPACE) 434 MATRIX_KEY(0x03, 0x05, KEY_SPACE)
435 MATRIX_KEY(0x03, 0x06, KEY_SPACE) 435 MATRIX_KEY(0x03, 0x06, KEY_SPACE)
436 MATRIX_KEY(0x03, 0x07, KEY_LEFT) 436 MATRIX_KEY(0x03, 0x07, KEY_LEFT)
437 437
438 MATRIX_KEY(0x04, 0x00, KEY_T) 438 MATRIX_KEY(0x04, 0x00, KEY_T)
439 MATRIX_KEY(0x04, 0x01, KEY_DOWN) 439 MATRIX_KEY(0x04, 0x01, KEY_DOWN)
440 MATRIX_KEY(0x04, 0x02, KEY_RIGHT) 440 MATRIX_KEY(0x04, 0x02, KEY_RIGHT)
441 MATRIX_KEY(0x04, 0x04, KEY_LEFTCTRL) 441 MATRIX_KEY(0x04, 0x04, KEY_LEFTCTRL)
442 MATRIX_KEY(0x04, 0x05, KEY_RIGHTALT) 442 MATRIX_KEY(0x04, 0x05, KEY_RIGHTALT)
443 MATRIX_KEY(0x04, 0x06, KEY_LEFTSHIFT) 443 MATRIX_KEY(0x04, 0x06, KEY_LEFTSHIFT)
444 MATRIX_KEY(0x04, 0x08, KEY_F10) 444 MATRIX_KEY(0x04, 0x08, KEY_F10)
445 445
446 MATRIX_KEY(0x05, 0x00, KEY_Y) 446 MATRIX_KEY(0x05, 0x00, KEY_Y)
447 MATRIX_KEY(0x05, 0x08, KEY_F11) 447 MATRIX_KEY(0x05, 0x08, KEY_F11)
448 448
449 MATRIX_KEY(0x06, 0x00, KEY_U) 449 MATRIX_KEY(0x06, 0x00, KEY_U)
450 450
451 MATRIX_KEY(0x07, 0x00, KEY_I) 451 MATRIX_KEY(0x07, 0x00, KEY_I)
452 MATRIX_KEY(0x07, 0x01, KEY_F7) 452 MATRIX_KEY(0x07, 0x01, KEY_F7)
453 MATRIX_KEY(0x07, 0x02, KEY_F8) 453 MATRIX_KEY(0x07, 0x02, KEY_F8)
454 >; 454 >;
455 }; 455 };
456 456
457 &twl_gpio { 457 &twl_gpio {
458 ti,pullups = <0x0>; 458 ti,pullups = <0x0>;
459 ti,pulldowns = <0x03ff3f>; /* BIT(0..5) | BIT(8..17) */ 459 ti,pulldowns = <0x03ff3f>; /* BIT(0..5) | BIT(8..17) */
460 }; 460 };
461 461
462 &i2c2 { 462 &i2c2 {
463 pinctrl-names = "default"; 463 pinctrl-names = "default";
464 pinctrl-0 = <&i2c2_pins>; 464 pinctrl-0 = <&i2c2_pins>;
465 465
466 clock-frequency = <100000>; 466 clock-frequency = <100000>;
467 467
468 tlv320aic3x: tlv320aic3x@18 { 468 tlv320aic3x: tlv320aic3x@18 {
469 compatible = "ti,tlv320aic3x"; 469 compatible = "ti,tlv320aic3x";
470 reg = <0x18>; 470 reg = <0x18>;
471 gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */ 471 gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
472 ai3x-gpio-func = < 472 ai3x-gpio-func = <
473 0 /* AIC3X_GPIO1_FUNC_DISABLED */ 473 0 /* AIC3X_GPIO1_FUNC_DISABLED */
474 5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */ 474 5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
475 >; 475 >;
476 476
477 AVDD-supply = <&vmmc2>; 477 AVDD-supply = <&vmmc2>;
478 DRVDD-supply = <&vmmc2>; 478 DRVDD-supply = <&vmmc2>;
479 IOVDD-supply = <&vio>; 479 IOVDD-supply = <&vio>;
480 DVDD-supply = <&vio>; 480 DVDD-supply = <&vio>;
481 }; 481 };
482 482
483 tlv320aic3x_aux: tlv320aic3x@19 { 483 tlv320aic3x_aux: tlv320aic3x@19 {
484 compatible = "ti,tlv320aic3x"; 484 compatible = "ti,tlv320aic3x";
485 reg = <0x19>; 485 reg = <0x19>;
486 gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */ 486 gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
487 487
488 AVDD-supply = <&vmmc2>; 488 AVDD-supply = <&vmmc2>;
489 DRVDD-supply = <&vmmc2>; 489 DRVDD-supply = <&vmmc2>;
490 IOVDD-supply = <&vio>; 490 IOVDD-supply = <&vio>;
491 DVDD-supply = <&vio>; 491 DVDD-supply = <&vio>;
492 }; 492 };
493 493
494 tsl2563: tsl2563@29 { 494 tsl2563: tsl2563@29 {
495 compatible = "amstaos,tsl2563"; 495 compatible = "amstaos,tsl2563";
496 reg = <0x29>; 496 reg = <0x29>;
497 497
498 amstaos,cover-comp-gain = <16>; 498 amstaos,cover-comp-gain = <16>;
499 }; 499 };
500 500
501 lp5523: lp5523@32 { 501 lp5523: lp5523@32 {
502 compatible = "national,lp5523"; 502 compatible = "national,lp5523";
503 reg = <0x32>; 503 reg = <0x32>;
504 clock-mode = /bits/ 8 <0>; /* LP55XX_CLOCK_AUTO */ 504 clock-mode = /bits/ 8 <0>; /* LP55XX_CLOCK_AUTO */
505 enable-gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */ 505 enable-gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */
506 506
507 chan0 { 507 chan0 {
508 chan-name = "lp5523:kb1"; 508 chan-name = "lp5523:kb1";
509 led-cur = /bits/ 8 <50>; 509 led-cur = /bits/ 8 <50>;
510 max-cur = /bits/ 8 <100>; 510 max-cur = /bits/ 8 <100>;
511 }; 511 };
512 512
513 chan1 { 513 chan1 {
514 chan-name = "lp5523:kb2"; 514 chan-name = "lp5523:kb2";
515 led-cur = /bits/ 8 <50>; 515 led-cur = /bits/ 8 <50>;
516 max-cur = /bits/ 8 <100>; 516 max-cur = /bits/ 8 <100>;
517 }; 517 };
518 518
519 chan2 { 519 chan2 {
520 chan-name = "lp5523:kb3"; 520 chan-name = "lp5523:kb3";
521 led-cur = /bits/ 8 <50>; 521 led-cur = /bits/ 8 <50>;
522 max-cur = /bits/ 8 <100>; 522 max-cur = /bits/ 8 <100>;
523 }; 523 };
524 524
525 chan3 { 525 chan3 {
526 chan-name = "lp5523:kb4"; 526 chan-name = "lp5523:kb4";
527 led-cur = /bits/ 8 <50>; 527 led-cur = /bits/ 8 <50>;
528 max-cur = /bits/ 8 <100>; 528 max-cur = /bits/ 8 <100>;
529 }; 529 };
530 530
531 chan4 { 531 chan4 {
532 chan-name = "lp5523:b"; 532 chan-name = "lp5523:b";
533 led-cur = /bits/ 8 <50>; 533 led-cur = /bits/ 8 <50>;
534 max-cur = /bits/ 8 <100>; 534 max-cur = /bits/ 8 <100>;
535 }; 535 };
536 536
537 chan5 { 537 chan5 {
538 chan-name = "lp5523:g"; 538 chan-name = "lp5523:g";
539 led-cur = /bits/ 8 <50>; 539 led-cur = /bits/ 8 <50>;
540 max-cur = /bits/ 8 <100>; 540 max-cur = /bits/ 8 <100>;
541 }; 541 };
542 542
543 chan6 { 543 chan6 {
544 chan-name = "lp5523:r"; 544 chan-name = "lp5523:r";
545 led-cur = /bits/ 8 <50>; 545 led-cur = /bits/ 8 <50>;
546 max-cur = /bits/ 8 <100>; 546 max-cur = /bits/ 8 <100>;
547 }; 547 };
548 548
549 chan7 { 549 chan7 {
550 chan-name = "lp5523:kb5"; 550 chan-name = "lp5523:kb5";
551 led-cur = /bits/ 8 <50>; 551 led-cur = /bits/ 8 <50>;
552 max-cur = /bits/ 8 <100>; 552 max-cur = /bits/ 8 <100>;
553 }; 553 };
554 554
555 chan8 { 555 chan8 {
556 chan-name = "lp5523:kb6"; 556 chan-name = "lp5523:kb6";
557 led-cur = /bits/ 8 <50>; 557 led-cur = /bits/ 8 <50>;
558 max-cur = /bits/ 8 <100>; 558 max-cur = /bits/ 8 <100>;
559 }; 559 };
560 }; 560 };
561 561
562 bq27200: bq27200@55 { 562 bq27200: bq27200@55 {
563 compatible = "ti,bq27200"; 563 compatible = "ti,bq27200";
564 reg = <0x55>; 564 reg = <0x55>;
565 }; 565 };
566 566
567 tpa6130a2: tpa6130a2@60 { 567 tpa6130a2: tpa6130a2@60 {
568 compatible = "ti,tpa6130a2"; 568 compatible = "ti,tpa6130a2";
569 reg = <0x60>; 569 reg = <0x60>;
570 570
571 Vdd-supply = <&vmmc2>; 571 Vdd-supply = <&vmmc2>;
572 572
573 power-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>; /* 98 */ 573 power-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>; /* 98 */
574 }; 574 };
575 575
576 si4713: si4713@63 { 576 si4713: si4713@63 {
577 compatible = "silabs,si4713"; 577 compatible = "silabs,si4713";
578 reg = <0x63>; 578 reg = <0x63>;
579 579
580 interrupts-extended = <&gpio2 21 IRQ_TYPE_EDGE_FALLING>; /* 53 */ 580 interrupts-extended = <&gpio2 21 IRQ_TYPE_EDGE_FALLING>; /* 53 */
581 reset-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>; /* 163 */ 581 reset-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>; /* 163 */
582 vio-supply = <&vio>; 582 vio-supply = <&vio>;
583 vdd-supply = <&vaux1>; 583 vdd-supply = <&vaux1>;
584 }; 584 };
585 585
586 bq24150a: bq24150a@6b { 586 bq24150a: bq24150a@6b {
587 compatible = "ti,bq24150a"; 587 compatible = "ti,bq24150a";
588 reg = <0x6b>; 588 reg = <0x6b>;
589 589
590 ti,current-limit = <100>; 590 ti,current-limit = <100>;
591 ti,weak-battery-voltage = <3400>; 591 ti,weak-battery-voltage = <3400>;
592 ti,battery-regulation-voltage = <4200>; 592 ti,battery-regulation-voltage = <4200>;
593 ti,charge-current = <650>; 593 ti,charge-current = <650>;
594 ti,termination-current = <100>; 594 ti,termination-current = <100>;
595 ti,resistor-sense = <68>; 595 ti,resistor-sense = <68>;
596 596
597 ti,usb-charger-detection = <&isp1704>; 597 ti,usb-charger-detection = <&isp1704>;
598 }; 598 };
599 }; 599 };
600 600
601 &i2c3 { 601 &i2c3 {
602 pinctrl-names = "default"; 602 pinctrl-names = "default";
603 pinctrl-0 = <&i2c3_pins>; 603 pinctrl-0 = <&i2c3_pins>;
604 604
605 clock-frequency = <400000>; 605 clock-frequency = <400000>;
606 }; 606 };
607 607
608 &mmc1 { 608 &mmc1 {
609 pinctrl-names = "default"; 609 pinctrl-names = "default";
610 pinctrl-0 = <&mmc1_pins>; 610 pinctrl-0 = <&mmc1_pins>;
611 vmmc-supply = <&vmmc1>; 611 vmmc-supply = <&vmmc1>;
612 bus-width = <4>; 612 bus-width = <4>;
613 cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */ 613 cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */
614 }; 614 };
615 615
616 /* most boards use vaux3, only some old versions use vmmc2 instead */ 616 /* most boards use vaux3, only some old versions use vmmc2 instead */
617 &mmc2 { 617 &mmc2 {
618 pinctrl-names = "default"; 618 pinctrl-names = "default";
619 pinctrl-0 = <&mmc2_pins>; 619 pinctrl-0 = <&mmc2_pins>;
620 vmmc-supply = <&vaux3>; 620 vmmc-supply = <&vaux3>;
621 vmmc_aux-supply = <&vsim>; 621 vmmc_aux-supply = <&vsim>;
622 bus-width = <8>; 622 bus-width = <8>;
623 non-removable; 623 non-removable;
624 }; 624 };
625 625
626 &mmc3 { 626 &mmc3 {
627 status = "disabled"; 627 status = "disabled";
628 }; 628 };
629 629
630 &gpmc { 630 &gpmc {
631 ranges = <0 0 0x01000000 0x01000000>, /* 16 MB for OneNAND */ 631 ranges = <0 0 0x01000000 0x01000000>, /* 16 MB for OneNAND */
632 <1 0 0x02000000 0x01000000>; /* 16 MB for smc91c96 */ 632 <1 0 0x02000000 0x01000000>; /* 16 MB for smc91c96 */
633 pinctrl-names = "default"; 633 pinctrl-names = "default";
634 pinctrl-0 = <&gpmc_pins>; 634 pinctrl-0 = <&gpmc_pins>;
635 635
636 /* sys_ndmareq1 could be used by the driver, not as gpio65 though */ 636 /* sys_ndmareq1 could be used by the driver, not as gpio65 though */
637 onenand@0,0 { 637 onenand@0,0 {
638 #address-cells = <1>; 638 #address-cells = <1>;
639 #size-cells = <1>; 639 #size-cells = <1>;
640 reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */ 640 reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */
641 641
642 gpmc,sync-read; 642 gpmc,sync-read;
643 gpmc,sync-write; 643 gpmc,sync-write;
644 gpmc,burst-length = <16>; 644 gpmc,burst-length = <16>;
645 gpmc,burst-read; 645 gpmc,burst-read;
646 gpmc,burst-wrap; 646 gpmc,burst-wrap;
647 gpmc,burst-write; 647 gpmc,burst-write;
648 gpmc,device-width = <2>; /* GPMC_DEVWIDTH_16BIT */ 648 gpmc,device-width = <2>; /* GPMC_DEVWIDTH_16BIT */
649 gpmc,mux-add-data = <2>; /* GPMC_MUX_AD */ 649 gpmc,mux-add-data = <2>; /* GPMC_MUX_AD */
650 gpmc,cs-on-ns = <0>; 650 gpmc,cs-on-ns = <0>;
651 gpmc,cs-rd-off-ns = <87>; 651 gpmc,cs-rd-off-ns = <87>;
652 gpmc,cs-wr-off-ns = <87>; 652 gpmc,cs-wr-off-ns = <87>;
653 gpmc,adv-on-ns = <0>; 653 gpmc,adv-on-ns = <0>;
654 gpmc,adv-rd-off-ns = <10>; 654 gpmc,adv-rd-off-ns = <10>;
655 gpmc,adv-wr-off-ns = <10>; 655 gpmc,adv-wr-off-ns = <10>;
656 gpmc,oe-on-ns = <15>; 656 gpmc,oe-on-ns = <15>;
657 gpmc,oe-off-ns = <87>; 657 gpmc,oe-off-ns = <87>;
658 gpmc,we-on-ns = <0>; 658 gpmc,we-on-ns = <0>;
659 gpmc,we-off-ns = <87>; 659 gpmc,we-off-ns = <87>;
660 gpmc,rd-cycle-ns = <112>; 660 gpmc,rd-cycle-ns = <112>;
661 gpmc,wr-cycle-ns = <112>; 661 gpmc,wr-cycle-ns = <112>;
662 gpmc,access-ns = <81>; 662 gpmc,access-ns = <81>;
663 gpmc,page-burst-access-ns = <15>; 663 gpmc,page-burst-access-ns = <15>;
664 gpmc,bus-turnaround-ns = <0>; 664 gpmc,bus-turnaround-ns = <0>;
665 gpmc,cycle2cycle-delay-ns = <0>; 665 gpmc,cycle2cycle-delay-ns = <0>;
666 gpmc,wait-monitoring-ns = <0>; 666 gpmc,wait-monitoring-ns = <0>;
667 gpmc,clk-activation-ns = <5>; 667 gpmc,clk-activation-ns = <5>;
668 gpmc,wr-data-mux-bus-ns = <30>; 668 gpmc,wr-data-mux-bus-ns = <30>;
669 gpmc,wr-access-ns = <81>; 669 gpmc,wr-access-ns = <81>;
670 gpmc,sync-clk-ps = <15000>; 670 gpmc,sync-clk-ps = <15000>;
671 671
672 /* 672 /*
673 * MTD partition table corresponding to Nokia's 673 * MTD partition table corresponding to Nokia's
674 * Maemo 5 (Fremantle) release. 674 * Maemo 5 (Fremantle) release.
675 */ 675 */
676 partition@0 { 676 partition@0 {
677 label = "bootloader"; 677 label = "bootloader";
678 reg = <0x00000000 0x00020000>; 678 reg = <0x00000000 0x00020000>;
679 read-only; 679 read-only;
680 }; 680 };
681 partition@1 { 681 partition@1 {
682 label = "config"; 682 label = "config";
683 reg = <0x00020000 0x00060000>; 683 reg = <0x00020000 0x00060000>;
684 }; 684 };
685 partition@2 { 685 partition@2 {
686 label = "log"; 686 label = "log";
687 reg = <0x00080000 0x00040000>; 687 reg = <0x00080000 0x00040000>;
688 }; 688 };
689 partition@3 { 689 partition@3 {
690 label = "kernel"; 690 label = "kernel";
691 reg = <0x000c0000 0x00200000>; 691 reg = <0x000c0000 0x00200000>;
692 }; 692 };
693 partition@4 { 693 partition@4 {
694 label = "initfs"; 694 label = "initfs";
695 reg = <0x002c0000 0x00200000>; 695 reg = <0x002c0000 0x00200000>;
696 }; 696 };
697 partition@5 { 697 partition@5 {
698 label = "rootfs"; 698 label = "rootfs";
699 reg = <0x004c0000 0x0fb40000>; 699 reg = <0x004c0000 0x0fb40000>;
700 }; 700 };
701 }; 701 };
702 702
703 /* Ethernet is on some early development boards and qemu */
703 ethernet@gpmc { 704 ethernet@gpmc {
704 compatible = "smsc,lan91c94"; 705 compatible = "smsc,lan91c94";
705
706 status = "disabled";
707
708 interrupt-parent = <&gpio2>; 706 interrupt-parent = <&gpio2>;
709 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>; /* gpio54 */ 707 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>; /* gpio54 */
710 reg = <1 0x300 0xf>; /* 16 byte IO range at offset 0x300 */ 708 reg = <1 0x300 0xf>; /* 16 byte IO range at offset 0x300 */
711 bank-width = <2>; 709 bank-width = <2>;
712 pinctrl-names = "default"; 710 pinctrl-names = "default";
713 pinctrl-0 = <&ethernet_pins>; 711 pinctrl-0 = <&ethernet_pins>;
714 power-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>; /* gpio86 */ 712 power-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>; /* gpio86 */
715 reset-gpios = <&gpio6 4 GPIO_ACTIVE_HIGH>; /* gpio164 */ 713 reset-gpios = <&gpio6 4 GPIO_ACTIVE_HIGH>; /* gpio164 */
716 gpmc,device-width = <2>; 714 gpmc,device-width = <2>;
717 gpmc,sync-clk-ps = <0>; 715 gpmc,sync-clk-ps = <0>;
718 gpmc,cs-on-ns = <0>; 716 gpmc,cs-on-ns = <0>;
719 gpmc,cs-rd-off-ns = <48>; 717 gpmc,cs-rd-off-ns = <48>;
720 gpmc,cs-wr-off-ns = <24>; 718 gpmc,cs-wr-off-ns = <24>;
721 gpmc,adv-on-ns = <0>; 719 gpmc,adv-on-ns = <0>;
722 gpmc,adv-rd-off-ns = <0>; 720 gpmc,adv-rd-off-ns = <0>;
723 gpmc,adv-wr-off-ns = <0>; 721 gpmc,adv-wr-off-ns = <0>;
724 gpmc,we-on-ns = <12>; 722 gpmc,we-on-ns = <12>;
725 gpmc,we-off-ns = <18>; 723 gpmc,we-off-ns = <18>;
726 gpmc,oe-on-ns = <12>; 724 gpmc,oe-on-ns = <12>;
727 gpmc,oe-off-ns = <48>; 725 gpmc,oe-off-ns = <48>;
728 gpmc,page-burst-access-ns = <0>; 726 gpmc,page-burst-access-ns = <0>;
729 gpmc,access-ns = <42>; 727 gpmc,access-ns = <42>;
730 gpmc,rd-cycle-ns = <180>; 728 gpmc,rd-cycle-ns = <180>;
731 gpmc,wr-cycle-ns = <180>; 729 gpmc,wr-cycle-ns = <180>;
732 gpmc,bus-turnaround-ns = <0>; 730 gpmc,bus-turnaround-ns = <0>;
733 gpmc,cycle2cycle-delay-ns = <0>; 731 gpmc,cycle2cycle-delay-ns = <0>;
734 gpmc,wait-monitoring-ns = <0>; 732 gpmc,wait-monitoring-ns = <0>;
735 gpmc,clk-activation-ns = <0>; 733 gpmc,clk-activation-ns = <0>;
736 gpmc,wr-access-ns = <0>; 734 gpmc,wr-access-ns = <0>;
737 gpmc,wr-data-mux-bus-ns = <12>; 735 gpmc,wr-data-mux-bus-ns = <12>;
738 }; 736 };
739 }; 737 };
740 738
741 &mcspi1 { 739 &mcspi1 {
742 /* 740 /*
743 * For some reason, touchscreen is necessary for screen to work at 741 * For some reason, touchscreen is necessary for screen to work at
744 * all on real hw. It works well without it on emulator. 742 * all on real hw. It works well without it on emulator.
745 * 743 *
746 * Also... order in the device tree actually matters here. 744 * Also... order in the device tree actually matters here.
747 */ 745 */
748 tsc2005@0 { 746 tsc2005@0 {
749 compatible = "ti,tsc2005"; 747 compatible = "ti,tsc2005";
750 spi-max-frequency = <6000000>; 748 spi-max-frequency = <6000000>;
751 reg = <0>; 749 reg = <0>;
752 750
753 vio-supply = <&vio>; 751 vio-supply = <&vio>;
754 752
755 reset-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* 104 */ 753 reset-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* 104 */
756 interrupts-extended = <&gpio4 4 IRQ_TYPE_EDGE_RISING>; /* 100 */ 754 interrupts-extended = <&gpio4 4 IRQ_TYPE_EDGE_RISING>; /* 100 */
757 755
758 touchscreen-fuzz-x = <4>; 756 touchscreen-fuzz-x = <4>;
759 touchscreen-fuzz-y = <7>; 757 touchscreen-fuzz-y = <7>;
760 touchscreen-fuzz-pressure = <2>; 758 touchscreen-fuzz-pressure = <2>;
761 touchscreen-max-x = <4096>; 759 touchscreen-max-x = <4096>;
762 touchscreen-max-y = <4096>; 760 touchscreen-max-y = <4096>;
763 touchscreen-max-pressure = <2048>; 761 touchscreen-max-pressure = <2048>;
764 762
765 ti,x-plate-ohms = <280>; 763 ti,x-plate-ohms = <280>;
766 ti,esd-recovery-timeout-ms = <8000>; 764 ti,esd-recovery-timeout-ms = <8000>;
767 }; 765 };
768 766
769 acx565akm@2 { 767 acx565akm@2 {
770 compatible = "sony,acx565akm"; 768 compatible = "sony,acx565akm";
771 spi-max-frequency = <6000000>; 769 spi-max-frequency = <6000000>;
772 reg = <2>; 770 reg = <2>;
773 771
774 pinctrl-names = "default"; 772 pinctrl-names = "default";
775 pinctrl-0 = <&acx565akm_pins>; 773 pinctrl-0 = <&acx565akm_pins>;
776 774
777 label = "lcd"; 775 label = "lcd";
778 reset-gpios = <&gpio3 26 GPIO_ACTIVE_HIGH>; /* 90 */ 776 reset-gpios = <&gpio3 26 GPIO_ACTIVE_HIGH>; /* 90 */
779 777
780 port { 778 port {
781 lcd_in: endpoint { 779 lcd_in: endpoint {
782 remote-endpoint = <&sdi_out>; 780 remote-endpoint = <&sdi_out>;
783 }; 781 };
784 }; 782 };
785 }; 783 };
786 }; 784 };
787 785
788 &mcspi4 { 786 &mcspi4 {
789 pinctrl-names = "default"; 787 pinctrl-names = "default";
790 pinctrl-0 = <&mcspi4_pins>; 788 pinctrl-0 = <&mcspi4_pins>;
791 789
792 wl1251@0 { 790 wl1251@0 {
793 pinctrl-names = "default"; 791 pinctrl-names = "default";
794 pinctrl-0 = <&wl1251_pins>; 792 pinctrl-0 = <&wl1251_pins>;
795 793
796 vio-supply = <&vio>; 794 vio-supply = <&vio>;
797 795
798 compatible = "ti,wl1251"; 796 compatible = "ti,wl1251";
799 reg = <0>; 797 reg = <0>;
800 spi-max-frequency = <48000000>; 798 spi-max-frequency = <48000000>;
801 799
802 spi-cpol; 800 spi-cpol;
803 spi-cpha; 801 spi-cpha;
804 802
805 ti,power-gpio = <&gpio3 23 GPIO_ACTIVE_HIGH>; /* 87 */ 803 ti,power-gpio = <&gpio3 23 GPIO_ACTIVE_HIGH>; /* 87 */
806 804
807 interrupt-parent = <&gpio2>; 805 interrupt-parent = <&gpio2>;
808 interrupts = <10 IRQ_TYPE_NONE>; /* gpio line 42 */ 806 interrupts = <10 IRQ_TYPE_NONE>; /* gpio line 42 */
809 }; 807 };
810 }; 808 };
811 809
812 &usb_otg_hs { 810 &usb_otg_hs {
813 interface-type = <0>; 811 interface-type = <0>;
814 usb-phy = <&usb2_phy>; 812 usb-phy = <&usb2_phy>;
815 phys = <&usb2_phy>; 813 phys = <&usb2_phy>;
816 phy-names = "usb2-phy"; 814 phy-names = "usb2-phy";
817 mode = <2>; 815 mode = <2>;
818 power = <50>; 816 power = <50>;
819 }; 817 };
820 818
821 &uart1 { 819 &uart1 {
822 status = "disabled"; 820 status = "disabled";
823 }; 821 };
824 822
825 &uart2 { 823 &uart2 {
826 interrupts-extended = <&intc 73 &omap3_pmx_core OMAP3_UART2_RX>; 824 interrupts-extended = <&intc 73 &omap3_pmx_core OMAP3_UART2_RX>;
827 pinctrl-names = "default"; 825 pinctrl-names = "default";
828 pinctrl-0 = <&uart2_pins>; 826 pinctrl-0 = <&uart2_pins>;
829 }; 827 };
830 828
831 &uart3 { 829 &uart3 {
832 interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>; 830 interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>;
833 pinctrl-names = "default"; 831 pinctrl-names = "default";
834 pinctrl-0 = <&uart3_pins>; 832 pinctrl-0 = <&uart3_pins>;
835 }; 833 };
836 834
837 &dss { 835 &dss {
838 status = "ok"; 836 status = "ok";
839 837
840 pinctrl-names = "default"; 838 pinctrl-names = "default";
841 pinctrl-0 = <&dss_sdi_pins>; 839 pinctrl-0 = <&dss_sdi_pins>;
842 840
843 vdds_sdi-supply = <&vaux1>; 841 vdds_sdi-supply = <&vaux1>;
844 842
845 ports { 843 ports {
846 #address-cells = <1>; 844 #address-cells = <1>;
847 #size-cells = <0>; 845 #size-cells = <0>;
848 846
849 port@1 { 847 port@1 {
850 reg = <1>; 848 reg = <1>;
851 849
852 sdi_out: endpoint { 850 sdi_out: endpoint {
853 remote-endpoint = <&lcd_in>; 851 remote-endpoint = <&lcd_in>;
854 datapairs = <2>; 852 datapairs = <2>;
855 }; 853 };
856 }; 854 };
857 }; 855 };
858 }; 856 };
859 857
860 &venc { 858 &venc {
861 status = "ok"; 859 status = "ok";
862 860
863 vdda-supply = <&vdac>; 861 vdda-supply = <&vdac>;
864 862
865 port { 863 port {
866 venc_out: endpoint { 864 venc_out: endpoint {
867 remote-endpoint = <&tv_connector_in>; 865 remote-endpoint = <&tv_connector_in>;
868 ti,channels = <1>; 866 ti,channels = <1>;
869 }; 867 };
870 }; 868 };
871 }; 869 };
872 870
873 &mcbsp2 { 871 &mcbsp2 {
874 status = "ok"; 872 status = "ok";
875 }; 873 };
876 874
877 &ssi_port1 { 875 &ssi_port1 {
878 pinctrl-names = "default"; 876 pinctrl-names = "default";
879 pinctrl-0 = <&ssi_pins>; 877 pinctrl-0 = <&ssi_pins>;
880 878
881 ti,ssi-cawake-gpio = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* 151 */ 879 ti,ssi-cawake-gpio = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* 151 */
882 880
883 modem: hsi-client { 881 modem: hsi-client {
884 compatible = "nokia,n900-modem"; 882 compatible = "nokia,n900-modem";
885 883
886 pinctrl-names = "default"; 884 pinctrl-names = "default";
887 pinctrl-0 = <&modem_pins>; 885 pinctrl-0 = <&modem_pins>;
888 886
889 hsi-channel-ids = <0>, <1>, <2>, <3>; 887 hsi-channel-ids = <0>, <1>, <2>, <3>;
890 hsi-channel-names = "mcsaab-control", 888 hsi-channel-names = "mcsaab-control",
891 "speech-control", 889 "speech-control",
892 "speech-data", 890 "speech-data",
893 "mcsaab-data"; 891 "mcsaab-data";
894 hsi-speed-kbps = <55000>; 892 hsi-speed-kbps = <55000>;
895 hsi-mode = "frame"; 893 hsi-mode = "frame";
896 hsi-flow = "synchronized"; 894 hsi-flow = "synchronized";
897 hsi-arb-mode = "round-robin"; 895 hsi-arb-mode = "round-robin";
898 896
899 interrupts-extended = <&gpio3 8 IRQ_TYPE_EDGE_FALLING>; /* 72 */ 897 interrupts-extended = <&gpio3 8 IRQ_TYPE_EDGE_FALLING>; /* 72 */
900 898
901 gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>, /* 70 */ 899 gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>, /* 70 */
902 <&gpio3 9 GPIO_ACTIVE_HIGH>, /* 73 */ 900 <&gpio3 9 GPIO_ACTIVE_HIGH>, /* 73 */
903 <&gpio3 10 GPIO_ACTIVE_HIGH>, /* 74 */ 901 <&gpio3 10 GPIO_ACTIVE_HIGH>, /* 74 */
904 <&gpio3 11 GPIO_ACTIVE_HIGH>, /* 75 */ 902 <&gpio3 11 GPIO_ACTIVE_HIGH>, /* 75 */
905 <&gpio5 29 GPIO_ACTIVE_HIGH>; /* 157 */ 903 <&gpio5 29 GPIO_ACTIVE_HIGH>; /* 157 */
906 gpio-names = "cmt_apeslpx", 904 gpio-names = "cmt_apeslpx",
907 "cmt_rst_rq", 905 "cmt_rst_rq",
908 "cmt_en", 906 "cmt_en",
909 "cmt_rst", 907 "cmt_rst",
910 "cmt_bsi"; 908 "cmt_bsi";
911 }; 909 };
912 }; 910 };
913 911
914 &ssi_port2 { 912 &ssi_port2 {
915 status = "disabled"; 913 status = "disabled";
916 }; 914 };
arch/arm/configs/omap2plus_defconfig
1 CONFIG_SYSVIPC=y 1 CONFIG_SYSVIPC=y
2 CONFIG_POSIX_MQUEUE=y 2 CONFIG_POSIX_MQUEUE=y
3 CONFIG_FHANDLE=y 3 CONFIG_FHANDLE=y
4 CONFIG_AUDIT=y 4 CONFIG_AUDIT=y
5 CONFIG_NO_HZ=y 5 CONFIG_NO_HZ=y
6 CONFIG_HIGH_RES_TIMERS=y 6 CONFIG_HIGH_RES_TIMERS=y
7 CONFIG_BSD_PROCESS_ACCT=y 7 CONFIG_BSD_PROCESS_ACCT=y
8 CONFIG_IKCONFIG=y 8 CONFIG_IKCONFIG=y
9 CONFIG_IKCONFIG_PROC=y 9 CONFIG_IKCONFIG_PROC=y
10 CONFIG_LOG_BUF_SHIFT=16 10 CONFIG_LOG_BUF_SHIFT=16
11 CONFIG_CGROUPS=y 11 CONFIG_CGROUPS=y
12 CONFIG_CGROUP_FREEZER=y 12 CONFIG_CGROUP_FREEZER=y
13 CONFIG_CGROUP_DEVICE=y 13 CONFIG_CGROUP_DEVICE=y
14 CONFIG_CPUSETS=y 14 CONFIG_CPUSETS=y
15 CONFIG_CGROUP_CPUACCT=y 15 CONFIG_CGROUP_CPUACCT=y
16 CONFIG_RESOURCE_COUNTERS=y 16 CONFIG_RESOURCE_COUNTERS=y
17 CONFIG_MEMCG=y 17 CONFIG_MEMCG=y
18 CONFIG_MEMCG_SWAP=y 18 CONFIG_MEMCG_SWAP=y
19 CONFIG_MEMCG_KMEM=y 19 CONFIG_MEMCG_KMEM=y
20 CONFIG_CGROUP_PERF=y 20 CONFIG_CGROUP_PERF=y
21 CONFIG_CGROUP_SCHED=y 21 CONFIG_CGROUP_SCHED=y
22 CONFIG_CFS_BANDWIDTH=y 22 CONFIG_CFS_BANDWIDTH=y
23 CONFIG_RT_GROUP_SCHED=y 23 CONFIG_RT_GROUP_SCHED=y
24 CONFIG_BLK_CGROUP=y 24 CONFIG_BLK_CGROUP=y
25 CONFIG_NAMESPACES=y 25 CONFIG_NAMESPACES=y
26 CONFIG_BLK_DEV_INITRD=y 26 CONFIG_BLK_DEV_INITRD=y
27 CONFIG_EXPERT=y 27 CONFIG_EXPERT=y
28 CONFIG_SLAB=y 28 CONFIG_SLAB=y
29 CONFIG_PROFILING=y 29 CONFIG_PROFILING=y
30 CONFIG_OPROFILE=y 30 CONFIG_OPROFILE=y
31 CONFIG_KPROBES=y 31 CONFIG_KPROBES=y
32 CONFIG_MODULES=y 32 CONFIG_MODULES=y
33 CONFIG_MODULE_FORCE_LOAD=y 33 CONFIG_MODULE_FORCE_LOAD=y
34 CONFIG_MODULE_UNLOAD=y 34 CONFIG_MODULE_UNLOAD=y
35 CONFIG_MODULE_FORCE_UNLOAD=y 35 CONFIG_MODULE_FORCE_UNLOAD=y
36 CONFIG_MODVERSIONS=y 36 CONFIG_MODVERSIONS=y
37 CONFIG_MODULE_SRCVERSION_ALL=y 37 CONFIG_MODULE_SRCVERSION_ALL=y
38 # CONFIG_BLK_DEV_BSG is not set 38 # CONFIG_BLK_DEV_BSG is not set
39 CONFIG_PARTITION_ADVANCED=y 39 CONFIG_PARTITION_ADVANCED=y
40 CONFIG_ARCH_MULTI_V6=y 40 CONFIG_ARCH_MULTI_V6=y
41 CONFIG_POWER_AVS_OMAP=y 41 CONFIG_POWER_AVS_OMAP=y
42 CONFIG_POWER_AVS_OMAP_CLASS3=y 42 CONFIG_POWER_AVS_OMAP_CLASS3=y
43 CONFIG_OMAP_RESET_CLOCKS=y 43 CONFIG_OMAP_RESET_CLOCKS=y
44 CONFIG_OMAP_MUX_DEBUG=y 44 CONFIG_OMAP_MUX_DEBUG=y
45 CONFIG_ARCH_OMAP2=y 45 CONFIG_ARCH_OMAP2=y
46 CONFIG_ARCH_OMAP3=y 46 CONFIG_ARCH_OMAP3=y
47 CONFIG_ARCH_OMAP4=y 47 CONFIG_ARCH_OMAP4=y
48 CONFIG_SOC_OMAP5=y 48 CONFIG_SOC_OMAP5=y
49 CONFIG_SOC_AM33XX=y 49 CONFIG_SOC_AM33XX=y
50 CONFIG_SOC_AM43XX=y 50 CONFIG_SOC_AM43XX=y
51 CONFIG_SOC_DRA7XX=y 51 CONFIG_SOC_DRA7XX=y
52 CONFIG_ARM_THUMBEE=y 52 CONFIG_ARM_THUMBEE=y
53 CONFIG_ARM_ERRATA_411920=y 53 CONFIG_ARM_ERRATA_411920=y
54 CONFIG_ARM_ERRATA_430973=y 54 CONFIG_ARM_ERRATA_430973=y
55 CONFIG_SMP=y 55 CONFIG_SMP=y
56 CONFIG_NR_CPUS=2 56 CONFIG_NR_CPUS=2
57 CONFIG_CMA=y 57 CONFIG_CMA=y
58 CONFIG_SECCOMP=y 58 CONFIG_SECCOMP=y
59 CONFIG_ZBOOT_ROM_TEXT=0x0 59 CONFIG_ZBOOT_ROM_TEXT=0x0
60 CONFIG_ZBOOT_ROM_BSS=0x0 60 CONFIG_ZBOOT_ROM_BSS=0x0
61 CONFIG_ARM_APPENDED_DTB=y 61 CONFIG_ARM_APPENDED_DTB=y
62 CONFIG_ARM_ATAG_DTB_COMPAT=y 62 CONFIG_ARM_ATAG_DTB_COMPAT=y
63 CONFIG_CMDLINE="root=/dev/mmcblk0p2 rootwait console=ttyO2,115200" 63 CONFIG_CMDLINE="root=/dev/mmcblk0p2 rootwait console=ttyO2,115200"
64 CONFIG_KEXEC=y 64 CONFIG_KEXEC=y
65 CONFIG_CPU_FREQ=y 65 CONFIG_CPU_FREQ=y
66 CONFIG_CPU_FREQ_STAT_DETAILS=y 66 CONFIG_CPU_FREQ_STAT_DETAILS=y
67 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y 67 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
68 CONFIG_CPU_FREQ_GOV_POWERSAVE=y 68 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
69 CONFIG_CPU_FREQ_GOV_USERSPACE=y 69 CONFIG_CPU_FREQ_GOV_USERSPACE=y
70 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y 70 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
71 CONFIG_GENERIC_CPUFREQ_CPU0=y 71 CONFIG_CPUFREQ_DT=y
72 # CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set 72 # CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set
73 CONFIG_CPU_IDLE=y 73 CONFIG_CPU_IDLE=y
74 CONFIG_BINFMT_MISC=y 74 CONFIG_BINFMT_MISC=y
75 CONFIG_PM_DEBUG=y 75 CONFIG_PM_DEBUG=y
76 CONFIG_NET=y 76 CONFIG_NET=y
77 CONFIG_PACKET=y 77 CONFIG_PACKET=y
78 CONFIG_UNIX=y 78 CONFIG_UNIX=y
79 CONFIG_XFRM_USER=y 79 CONFIG_XFRM_USER=y
80 CONFIG_NET_KEY=y 80 CONFIG_NET_KEY=y
81 CONFIG_NET_KEY_MIGRATE=y 81 CONFIG_NET_KEY_MIGRATE=y
82 CONFIG_INET=y 82 CONFIG_INET=y
83 CONFIG_IP_MULTICAST=y 83 CONFIG_IP_MULTICAST=y
84 CONFIG_IP_PNP=y 84 CONFIG_IP_PNP=y
85 CONFIG_IP_PNP_DHCP=y 85 CONFIG_IP_PNP_DHCP=y
86 CONFIG_IP_PNP_BOOTP=y 86 CONFIG_IP_PNP_BOOTP=y
87 CONFIG_IP_PNP_RARP=y 87 CONFIG_IP_PNP_RARP=y
88 # CONFIG_INET_LRO is not set 88 # CONFIG_INET_LRO is not set
89 CONFIG_NETFILTER=y 89 CONFIG_NETFILTER=y
90 CONFIG_CAN=m 90 CONFIG_CAN=m
91 CONFIG_CAN_C_CAN=m 91 CONFIG_CAN_C_CAN=m
92 CONFIG_CAN_C_CAN_PLATFORM=m 92 CONFIG_CAN_C_CAN_PLATFORM=m
93 CONFIG_BT=m 93 CONFIG_BT=m
94 CONFIG_BT_HCIUART=m 94 CONFIG_BT_HCIUART=m
95 CONFIG_BT_HCIUART_H4=y 95 CONFIG_BT_HCIUART_H4=y
96 CONFIG_BT_HCIUART_BCSP=y 96 CONFIG_BT_HCIUART_BCSP=y
97 CONFIG_BT_HCIUART_LL=y 97 CONFIG_BT_HCIUART_LL=y
98 CONFIG_BT_HCIBCM203X=m 98 CONFIG_BT_HCIBCM203X=m
99 CONFIG_BT_HCIBPA10X=m 99 CONFIG_BT_HCIBPA10X=m
100 CONFIG_CFG80211=m 100 CONFIG_CFG80211=m
101 CONFIG_MAC80211=m 101 CONFIG_MAC80211=m
102 CONFIG_DEVTMPFS=y 102 CONFIG_DEVTMPFS=y
103 CONFIG_DEVTMPFS_MOUNT=y 103 CONFIG_DEVTMPFS_MOUNT=y
104 CONFIG_DMA_CMA=y 104 CONFIG_DMA_CMA=y
105 CONFIG_OMAP_OCP2SCP=y 105 CONFIG_OMAP_OCP2SCP=y
106 CONFIG_CONNECTOR=y 106 CONFIG_CONNECTOR=y
107 CONFIG_MTD=y 107 CONFIG_MTD=y
108 CONFIG_MTD_CMDLINE_PARTS=y 108 CONFIG_MTD_CMDLINE_PARTS=y
109 CONFIG_MTD_BLOCK=y 109 CONFIG_MTD_BLOCK=y
110 CONFIG_MTD_OOPS=y 110 CONFIG_MTD_OOPS=y
111 CONFIG_MTD_CFI=y 111 CONFIG_MTD_CFI=y
112 CONFIG_MTD_CFI_INTELEXT=y 112 CONFIG_MTD_CFI_INTELEXT=y
113 CONFIG_MTD_NAND=y 113 CONFIG_MTD_NAND=y
114 CONFIG_MTD_NAND_ECC_BCH=y 114 CONFIG_MTD_NAND_ECC_BCH=y
115 CONFIG_MTD_NAND_OMAP2=y 115 CONFIG_MTD_NAND_OMAP2=y
116 CONFIG_MTD_ONENAND=y 116 CONFIG_MTD_ONENAND=y
117 CONFIG_MTD_ONENAND_VERIFY_WRITE=y 117 CONFIG_MTD_ONENAND_VERIFY_WRITE=y
118 CONFIG_MTD_ONENAND_OMAP2=y 118 CONFIG_MTD_ONENAND_OMAP2=y
119 CONFIG_MTD_UBI=y 119 CONFIG_MTD_UBI=y
120 CONFIG_BLK_DEV_LOOP=y 120 CONFIG_BLK_DEV_LOOP=y
121 CONFIG_BLK_DEV_RAM=y 121 CONFIG_BLK_DEV_RAM=y
122 CONFIG_BLK_DEV_RAM_SIZE=16384 122 CONFIG_BLK_DEV_RAM_SIZE=16384
123 CONFIG_SENSORS_TSL2550=m 123 CONFIG_SENSORS_TSL2550=m
124 CONFIG_BMP085_I2C=m 124 CONFIG_BMP085_I2C=m
125 CONFIG_SENSORS_LIS3_I2C=m 125 CONFIG_SENSORS_LIS3_I2C=m
126 CONFIG_SRAM=y 126 CONFIG_SRAM=y
127 CONFIG_SCSI=y 127 CONFIG_SCSI=y
128 CONFIG_BLK_DEV_SD=y 128 CONFIG_BLK_DEV_SD=y
129 CONFIG_SCSI_SCAN_ASYNC=y 129 CONFIG_SCSI_SCAN_ASYNC=y
130 CONFIG_ATA=y 130 CONFIG_ATA=y
131 CONFIG_SATA_AHCI_PLATFORM=y 131 CONFIG_SATA_AHCI_PLATFORM=y
132 CONFIG_MD=y 132 CONFIG_MD=y
133 CONFIG_NETDEVICES=y 133 CONFIG_NETDEVICES=y
134 # CONFIG_NET_VENDOR_ARC is not set 134 # CONFIG_NET_VENDOR_ARC is not set
135 # CONFIG_NET_CADENCE is not set 135 # CONFIG_NET_CADENCE is not set
136 # CONFIG_NET_VENDOR_BROADCOM is not set 136 # CONFIG_NET_VENDOR_BROADCOM is not set
137 # CONFIG_NET_VENDOR_CIRRUS is not set 137 # CONFIG_NET_VENDOR_CIRRUS is not set
138 # CONFIG_NET_VENDOR_FARADAY is not set 138 # CONFIG_NET_VENDOR_FARADAY is not set
139 # CONFIG_NET_VENDOR_HISILICON is not set 139 # CONFIG_NET_VENDOR_HISILICON is not set
140 # CONFIG_NET_VENDOR_INTEL is not set 140 # CONFIG_NET_VENDOR_INTEL is not set
141 # CONFIG_NET_VENDOR_MARVELL is not set 141 # CONFIG_NET_VENDOR_MARVELL is not set
142 CONFIG_KS8851=y 142 CONFIG_KS8851=y
143 CONFIG_KS8851_MLL=y 143 CONFIG_KS8851_MLL=y
144 # CONFIG_NET_VENDOR_MICROCHIP is not set 144 # CONFIG_NET_VENDOR_MICROCHIP is not set
145 # CONFIG_NET_VENDOR_NATSEMI is not set 145 # CONFIG_NET_VENDOR_NATSEMI is not set
146 # CONFIG_NET_VENDOR_QUALCOMM is not set 146 # CONFIG_NET_VENDOR_QUALCOMM is not set
147 # CONFIG_NET_VENDOR_SAMSUNG is not set 147 # CONFIG_NET_VENDOR_SAMSUNG is not set
148 # CONFIG_NET_VENDOR_SEEQ is not set 148 # CONFIG_NET_VENDOR_SEEQ is not set
149 CONFIG_SMC91X=y 149 CONFIG_SMC91X=y
150 CONFIG_SMSC911X=y 150 CONFIG_SMSC911X=y
151 # CONFIG_NET_VENDOR_STMICRO is not set 151 # CONFIG_NET_VENDOR_STMICRO is not set
152 CONFIG_TI_CPSW=y 152 CONFIG_TI_CPSW=y
153 # CONFIG_NET_VENDOR_VIA is not set 153 # CONFIG_NET_VENDOR_VIA is not set
154 # CONFIG_NET_VENDOR_WIZNET is not set 154 # CONFIG_NET_VENDOR_WIZNET is not set
155 CONFIG_AT803X_PHY=y 155 CONFIG_AT803X_PHY=y
156 CONFIG_SMSC_PHY=y 156 CONFIG_SMSC_PHY=y
157 CONFIG_USB_USBNET=y 157 CONFIG_USB_USBNET=y
158 CONFIG_USB_NET_SMSC95XX=y 158 CONFIG_USB_NET_SMSC95XX=y
159 CONFIG_USB_ALI_M5632=y 159 CONFIG_USB_ALI_M5632=y
160 CONFIG_USB_AN2720=y 160 CONFIG_USB_AN2720=y
161 CONFIG_USB_EPSON2888=y 161 CONFIG_USB_EPSON2888=y
162 CONFIG_USB_KC2190=y 162 CONFIG_USB_KC2190=y
163 CONFIG_LIBERTAS=m 163 CONFIG_LIBERTAS=m
164 CONFIG_LIBERTAS_USB=m 164 CONFIG_LIBERTAS_USB=m
165 CONFIG_LIBERTAS_SDIO=m 165 CONFIG_LIBERTAS_SDIO=m
166 CONFIG_LIBERTAS_DEBUG=y 166 CONFIG_LIBERTAS_DEBUG=y
167 CONFIG_WL_TI=y 167 CONFIG_WL_TI=y
168 CONFIG_WL12XX=m 168 CONFIG_WL12XX=m
169 CONFIG_WL18XX=m 169 CONFIG_WL18XX=m
170 CONFIG_WLCORE_SPI=m 170 CONFIG_WLCORE_SPI=m
171 CONFIG_WLCORE_SDIO=m 171 CONFIG_WLCORE_SDIO=m
172 CONFIG_MWIFIEX=m 172 CONFIG_MWIFIEX=m
173 CONFIG_MWIFIEX_SDIO=m 173 CONFIG_MWIFIEX_SDIO=m
174 CONFIG_MWIFIEX_USB=m 174 CONFIG_MWIFIEX_USB=m
175 CONFIG_INPUT_JOYDEV=y 175 CONFIG_INPUT_JOYDEV=y
176 CONFIG_INPUT_EVDEV=y 176 CONFIG_INPUT_EVDEV=y
177 CONFIG_KEYBOARD_GPIO=y 177 CONFIG_KEYBOARD_GPIO=y
178 CONFIG_KEYBOARD_MATRIX=m 178 CONFIG_KEYBOARD_MATRIX=m
179 CONFIG_KEYBOARD_TWL4030=y 179 CONFIG_KEYBOARD_TWL4030=y
180 CONFIG_INPUT_TOUCHSCREEN=y 180 CONFIG_INPUT_TOUCHSCREEN=y
181 CONFIG_TOUCHSCREEN_ADS7846=m 181 CONFIG_TOUCHSCREEN_ADS7846=m
182 CONFIG_TOUCHSCREEN_EDT_FT5X06=m 182 CONFIG_TOUCHSCREEN_EDT_FT5X06=m
183 CONFIG_TOUCHSCREEN_TSC2005=m 183 CONFIG_TOUCHSCREEN_TSC2005=m
184 CONFIG_TOUCHSCREEN_TSC2007=m 184 CONFIG_TOUCHSCREEN_TSC2007=m
185 CONFIG_INPUT_MISC=y 185 CONFIG_INPUT_MISC=y
186 CONFIG_INPUT_TWL4030_PWRBUTTON=y 186 CONFIG_INPUT_TWL4030_PWRBUTTON=y
187 # CONFIG_LEGACY_PTYS is not set 187 # CONFIG_LEGACY_PTYS is not set
188 CONFIG_SERIAL_8250=y 188 CONFIG_SERIAL_8250=y
189 CONFIG_SERIAL_8250_CONSOLE=y 189 CONFIG_SERIAL_8250_CONSOLE=y
190 CONFIG_SERIAL_8250_NR_UARTS=32 190 CONFIG_SERIAL_8250_NR_UARTS=32
191 CONFIG_SERIAL_8250_EXTENDED=y 191 CONFIG_SERIAL_8250_EXTENDED=y
192 CONFIG_SERIAL_8250_MANY_PORTS=y 192 CONFIG_SERIAL_8250_MANY_PORTS=y
193 CONFIG_SERIAL_8250_SHARE_IRQ=y 193 CONFIG_SERIAL_8250_SHARE_IRQ=y
194 CONFIG_SERIAL_8250_DETECT_IRQ=y 194 CONFIG_SERIAL_8250_DETECT_IRQ=y
195 CONFIG_SERIAL_8250_RSA=y 195 CONFIG_SERIAL_8250_RSA=y
196 CONFIG_SERIAL_OF_PLATFORM=y 196 CONFIG_SERIAL_OF_PLATFORM=y
197 CONFIG_SERIAL_OMAP=y 197 CONFIG_SERIAL_OMAP=y
198 CONFIG_SERIAL_OMAP_CONSOLE=y 198 CONFIG_SERIAL_OMAP_CONSOLE=y
199 CONFIG_HW_RANDOM=y 199 CONFIG_HW_RANDOM=y
200 CONFIG_I2C_CHARDEV=y 200 CONFIG_I2C_CHARDEV=y
201 CONFIG_SPI=y 201 CONFIG_SPI=y
202 CONFIG_SPI_OMAP24XX=y 202 CONFIG_SPI_OMAP24XX=y
203 CONFIG_PINCTRL_SINGLE=y 203 CONFIG_PINCTRL_SINGLE=y
204 CONFIG_DEBUG_GPIO=y 204 CONFIG_DEBUG_GPIO=y
205 CONFIG_GPIO_SYSFS=y 205 CONFIG_GPIO_SYSFS=y
206 CONFIG_GPIO_TWL4030=y 206 CONFIG_GPIO_TWL4030=y
207 CONFIG_W1=y 207 CONFIG_W1=y
208 CONFIG_BATTERY_BQ27x00=m 208 CONFIG_BATTERY_BQ27x00=m
209 CONFIG_CHARGER_ISP1704=m 209 CONFIG_CHARGER_ISP1704=m
210 CONFIG_CHARGER_TWL4030=m 210 CONFIG_CHARGER_TWL4030=m
211 CONFIG_CHARGER_BQ2415X=m 211 CONFIG_CHARGER_BQ2415X=m
212 CONFIG_CHARGER_BQ24190=m 212 CONFIG_CHARGER_BQ24190=m
213 CONFIG_CHARGER_BQ24735=m 213 CONFIG_CHARGER_BQ24735=m
214 CONFIG_POWER_RESET=y 214 CONFIG_POWER_RESET=y
215 CONFIG_POWER_AVS=y 215 CONFIG_POWER_AVS=y
216 CONFIG_SENSORS_LM75=m 216 CONFIG_SENSORS_LM75=m
217 CONFIG_THERMAL=y 217 CONFIG_THERMAL=y
218 CONFIG_THERMAL_GOV_FAIR_SHARE=y 218 CONFIG_THERMAL_GOV_FAIR_SHARE=y
219 CONFIG_THERMAL_GOV_USER_SPACE=y 219 CONFIG_THERMAL_GOV_USER_SPACE=y
220 CONFIG_CPU_THERMAL=y 220 CONFIG_CPU_THERMAL=y
221 CONFIG_TI_SOC_THERMAL=y 221 CONFIG_TI_SOC_THERMAL=y
222 CONFIG_TI_THERMAL=y 222 CONFIG_TI_THERMAL=y
223 CONFIG_OMAP4_THERMAL=y 223 CONFIG_OMAP4_THERMAL=y
224 CONFIG_OMAP5_THERMAL=y 224 CONFIG_OMAP5_THERMAL=y
225 CONFIG_DRA752_THERMAL=y 225 CONFIG_DRA752_THERMAL=y
226 CONFIG_WATCHDOG=y 226 CONFIG_WATCHDOG=y
227 CONFIG_OMAP_WATCHDOG=y 227 CONFIG_OMAP_WATCHDOG=y
228 CONFIG_TWL4030_WATCHDOG=y 228 CONFIG_TWL4030_WATCHDOG=y
229 CONFIG_MFD_SYSCON=y 229 CONFIG_MFD_SYSCON=y
230 CONFIG_MFD_PALMAS=y 230 CONFIG_MFD_PALMAS=y
231 CONFIG_MFD_TPS65217=y 231 CONFIG_MFD_TPS65217=y
232 CONFIG_MFD_TPS65218=y 232 CONFIG_MFD_TPS65218=y
233 CONFIG_MFD_TPS65910=y 233 CONFIG_MFD_TPS65910=y
234 CONFIG_TWL6040_CORE=y 234 CONFIG_TWL6040_CORE=y
235 CONFIG_REGULATOR_PALMAS=y 235 CONFIG_REGULATOR_PALMAS=y
236 CONFIG_REGULATOR_PBIAS=y 236 CONFIG_REGULATOR_PBIAS=y
237 CONFIG_REGULATOR_TI_ABB=y 237 CONFIG_REGULATOR_TI_ABB=y
238 CONFIG_REGULATOR_TPS65023=y 238 CONFIG_REGULATOR_TPS65023=y
239 CONFIG_REGULATOR_TPS6507X=y 239 CONFIG_REGULATOR_TPS6507X=y
240 CONFIG_REGULATOR_TPS65217=y 240 CONFIG_REGULATOR_TPS65217=y
241 CONFIG_REGULATOR_TPS65218=y 241 CONFIG_REGULATOR_TPS65218=y
242 CONFIG_REGULATOR_TPS65910=y 242 CONFIG_REGULATOR_TPS65910=y
243 CONFIG_REGULATOR_TWL4030=y 243 CONFIG_REGULATOR_TWL4030=y
244 CONFIG_FB=y 244 CONFIG_FB=y
245 CONFIG_FIRMWARE_EDID=y 245 CONFIG_FIRMWARE_EDID=y
246 CONFIG_FB_MODE_HELPERS=y 246 CONFIG_FB_MODE_HELPERS=y
247 CONFIG_FB_TILEBLITTING=y 247 CONFIG_FB_TILEBLITTING=y
248 CONFIG_OMAP2_DSS=m 248 CONFIG_OMAP2_DSS=m
249 CONFIG_OMAP5_DSS_HDMI=y 249 CONFIG_OMAP5_DSS_HDMI=y
250 CONFIG_OMAP2_DSS_SDI=y 250 CONFIG_OMAP2_DSS_SDI=y
251 CONFIG_OMAP2_DSS_DSI=y 251 CONFIG_OMAP2_DSS_DSI=y
252 CONFIG_FB_OMAP2=m 252 CONFIG_FB_OMAP2=m
253 CONFIG_DISPLAY_ENCODER_TFP410=m 253 CONFIG_DISPLAY_ENCODER_TFP410=m
254 CONFIG_DISPLAY_ENCODER_TPD12S015=m 254 CONFIG_DISPLAY_ENCODER_TPD12S015=m
255 CONFIG_DISPLAY_CONNECTOR_DVI=m 255 CONFIG_DISPLAY_CONNECTOR_DVI=m
256 CONFIG_DISPLAY_CONNECTOR_HDMI=m 256 CONFIG_DISPLAY_CONNECTOR_HDMI=m
257 CONFIG_DISPLAY_CONNECTOR_ANALOG_TV=m 257 CONFIG_DISPLAY_CONNECTOR_ANALOG_TV=m
258 CONFIG_DISPLAY_PANEL_DPI=m 258 CONFIG_DISPLAY_PANEL_DPI=m
259 CONFIG_DISPLAY_PANEL_DSI_CM=m 259 CONFIG_DISPLAY_PANEL_DSI_CM=m
260 CONFIG_DISPLAY_PANEL_SONY_ACX565AKM=m 260 CONFIG_DISPLAY_PANEL_SONY_ACX565AKM=m
261 CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02=m 261 CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02=m
262 CONFIG_DISPLAY_PANEL_SHARP_LS037V7DW01=m 262 CONFIG_DISPLAY_PANEL_SHARP_LS037V7DW01=m
263 CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1=m 263 CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1=m
264 CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1=m 264 CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1=m
265 CONFIG_DISPLAY_PANEL_NEC_NL8048HL11=m 265 CONFIG_DISPLAY_PANEL_NEC_NL8048HL11=m
266 CONFIG_BACKLIGHT_LCD_SUPPORT=y 266 CONFIG_BACKLIGHT_LCD_SUPPORT=y
267 CONFIG_LCD_CLASS_DEVICE=y 267 CONFIG_LCD_CLASS_DEVICE=y
268 CONFIG_LCD_PLATFORM=y 268 CONFIG_LCD_PLATFORM=y
269 CONFIG_BACKLIGHT_CLASS_DEVICE=y 269 CONFIG_BACKLIGHT_CLASS_DEVICE=y
270 CONFIG_BACKLIGHT_GENERIC=m 270 CONFIG_BACKLIGHT_GENERIC=m
271 CONFIG_BACKLIGHT_PWM=m 271 CONFIG_BACKLIGHT_PWM=m
272 CONFIG_BACKLIGHT_PANDORA=m 272 CONFIG_BACKLIGHT_PANDORA=m
273 CONFIG_BACKLIGHT_GPIO=m 273 CONFIG_BACKLIGHT_GPIO=m
274 CONFIG_FRAMEBUFFER_CONSOLE=y 274 CONFIG_FRAMEBUFFER_CONSOLE=y
275 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y 275 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
276 CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y 276 CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
277 CONFIG_LOGO=y 277 CONFIG_LOGO=y
278 CONFIG_SOUND=m 278 CONFIG_SOUND=m
279 CONFIG_SND=m 279 CONFIG_SND=m
280 CONFIG_SND_MIXER_OSS=m 280 CONFIG_SND_MIXER_OSS=m
281 CONFIG_SND_PCM_OSS=m 281 CONFIG_SND_PCM_OSS=m
282 CONFIG_SND_VERBOSE_PRINTK=y 282 CONFIG_SND_VERBOSE_PRINTK=y
283 CONFIG_SND_DEBUG=y 283 CONFIG_SND_DEBUG=y
284 CONFIG_SND_USB_AUDIO=m 284 CONFIG_SND_USB_AUDIO=m
285 CONFIG_SND_SOC=m 285 CONFIG_SND_SOC=m
286 CONFIG_SND_EDMA_SOC=m 286 CONFIG_SND_EDMA_SOC=m
287 CONFIG_SND_AM33XX_SOC_EVM=m 287 CONFIG_SND_AM33XX_SOC_EVM=m
288 CONFIG_SND_OMAP_SOC=m 288 CONFIG_SND_OMAP_SOC=m
289 CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m 289 CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
290 CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m 290 CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m
291 CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m 291 CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
292 CONFIG_USB=y 292 CONFIG_USB=y
293 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y 293 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
294 CONFIG_USB_MON=y 294 CONFIG_USB_MON=y
295 CONFIG_USB_XHCI_HCD=m 295 CONFIG_USB_XHCI_HCD=m
296 CONFIG_USB_WDM=y 296 CONFIG_USB_WDM=y
297 CONFIG_USB_STORAGE=y 297 CONFIG_USB_STORAGE=y
298 CONFIG_USB_DWC3=m 298 CONFIG_USB_DWC3=m
299 CONFIG_USB_TEST=y 299 CONFIG_USB_TEST=y
300 CONFIG_AM335X_PHY_USB=y 300 CONFIG_AM335X_PHY_USB=y
301 CONFIG_USB_GADGET=y 301 CONFIG_USB_GADGET=y
302 CONFIG_USB_GADGET_DEBUG=y 302 CONFIG_USB_GADGET_DEBUG=y
303 CONFIG_USB_GADGET_DEBUG_FILES=y 303 CONFIG_USB_GADGET_DEBUG_FILES=y
304 CONFIG_USB_GADGET_DEBUG_FS=y 304 CONFIG_USB_GADGET_DEBUG_FS=y
305 CONFIG_USB_ZERO=m 305 CONFIG_USB_ZERO=m
306 CONFIG_MMC=y 306 CONFIG_MMC=y
307 CONFIG_SDIO_UART=y 307 CONFIG_SDIO_UART=y
308 CONFIG_MMC_OMAP=y 308 CONFIG_MMC_OMAP=y
309 CONFIG_MMC_OMAP_HS=y 309 CONFIG_MMC_OMAP_HS=y
310 CONFIG_NEW_LEDS=y 310 CONFIG_NEW_LEDS=y
311 CONFIG_LEDS_CLASS=y 311 CONFIG_LEDS_CLASS=y
312 CONFIG_LEDS_GPIO=y 312 CONFIG_LEDS_GPIO=y
313 CONFIG_LEDS_TRIGGERS=y 313 CONFIG_LEDS_TRIGGERS=y
314 CONFIG_LEDS_TRIGGER_TIMER=y 314 CONFIG_LEDS_TRIGGER_TIMER=y
315 CONFIG_LEDS_TRIGGER_ONESHOT=y 315 CONFIG_LEDS_TRIGGER_ONESHOT=y
316 CONFIG_LEDS_TRIGGER_HEARTBEAT=y 316 CONFIG_LEDS_TRIGGER_HEARTBEAT=y
317 CONFIG_LEDS_TRIGGER_BACKLIGHT=y 317 CONFIG_LEDS_TRIGGER_BACKLIGHT=y
318 CONFIG_LEDS_TRIGGER_CPU=y 318 CONFIG_LEDS_TRIGGER_CPU=y
319 CONFIG_LEDS_TRIGGER_GPIO=y 319 CONFIG_LEDS_TRIGGER_GPIO=y
320 CONFIG_LEDS_TRIGGER_DEFAULT_ON=y 320 CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
321 CONFIG_RTC_CLASS=y 321 CONFIG_RTC_CLASS=y
322 CONFIG_RTC_DRV_TWL92330=y 322 CONFIG_RTC_DRV_TWL92330=y
323 CONFIG_RTC_DRV_TWL4030=y 323 CONFIG_RTC_DRV_TWL4030=y
324 CONFIG_RTC_DRV_OMAP=y 324 CONFIG_RTC_DRV_OMAP=y
325 CONFIG_DMADEVICES=y 325 CONFIG_DMADEVICES=y
326 CONFIG_TI_EDMA=y 326 CONFIG_TI_EDMA=y
327 CONFIG_DMA_OMAP=y 327 CONFIG_DMA_OMAP=y
328 CONFIG_EXTCON=y 328 CONFIG_EXTCON=y
329 CONFIG_EXTCON_PALMAS=y 329 CONFIG_EXTCON_PALMAS=y
330 CONFIG_PWM=y 330 CONFIG_PWM=y
331 CONFIG_PWM_TIECAP=y 331 CONFIG_PWM_TIECAP=y
332 CONFIG_PWM_TIEHRPWM=y 332 CONFIG_PWM_TIEHRPWM=y
333 CONFIG_PWM_TWL=y 333 CONFIG_PWM_TWL=y
334 CONFIG_PWM_TWL_LED=y 334 CONFIG_PWM_TWL_LED=y
335 CONFIG_OMAP_USB2=y 335 CONFIG_OMAP_USB2=y
336 CONFIG_TI_PIPE3=y 336 CONFIG_TI_PIPE3=y
337 CONFIG_EXT2_FS=y 337 CONFIG_EXT2_FS=y
338 CONFIG_EXT3_FS=y 338 CONFIG_EXT3_FS=y
339 # CONFIG_EXT3_FS_XATTR is not set 339 # CONFIG_EXT3_FS_XATTR is not set
340 CONFIG_EXT4_FS=y 340 CONFIG_EXT4_FS=y
341 CONFIG_FANOTIFY=y 341 CONFIG_FANOTIFY=y
342 CONFIG_QUOTA=y 342 CONFIG_QUOTA=y
343 CONFIG_QFMT_V2=y 343 CONFIG_QFMT_V2=y
344 CONFIG_AUTOFS4_FS=m 344 CONFIG_AUTOFS4_FS=m
345 CONFIG_MSDOS_FS=y 345 CONFIG_MSDOS_FS=y
346 CONFIG_VFAT_FS=y 346 CONFIG_VFAT_FS=y
347 CONFIG_TMPFS=y 347 CONFIG_TMPFS=y
348 CONFIG_TMPFS_POSIX_ACL=y 348 CONFIG_TMPFS_POSIX_ACL=y
349 CONFIG_JFFS2_FS=y 349 CONFIG_JFFS2_FS=y
350 CONFIG_JFFS2_SUMMARY=y 350 CONFIG_JFFS2_SUMMARY=y
351 CONFIG_JFFS2_FS_XATTR=y 351 CONFIG_JFFS2_FS_XATTR=y
352 CONFIG_JFFS2_COMPRESSION_OPTIONS=y 352 CONFIG_JFFS2_COMPRESSION_OPTIONS=y
353 CONFIG_JFFS2_LZO=y 353 CONFIG_JFFS2_LZO=y
354 CONFIG_JFFS2_RUBIN=y 354 CONFIG_JFFS2_RUBIN=y
355 CONFIG_UBIFS_FS=y 355 CONFIG_UBIFS_FS=y
356 CONFIG_CRAMFS=y 356 CONFIG_CRAMFS=y
357 CONFIG_NFS_FS=y 357 CONFIG_NFS_FS=y
358 CONFIG_NFS_V3_ACL=y 358 CONFIG_NFS_V3_ACL=y
359 CONFIG_NFS_V4=y 359 CONFIG_NFS_V4=y
360 CONFIG_ROOT_NFS=y 360 CONFIG_ROOT_NFS=y
361 CONFIG_NLS_CODEPAGE_437=y 361 CONFIG_NLS_CODEPAGE_437=y
362 CONFIG_NLS_ISO8859_1=y 362 CONFIG_NLS_ISO8859_1=y
363 CONFIG_PRINTK_TIME=y 363 CONFIG_PRINTK_TIME=y
364 CONFIG_DEBUG_INFO=y 364 CONFIG_DEBUG_INFO=y
365 CONFIG_MAGIC_SYSRQ=y 365 CONFIG_MAGIC_SYSRQ=y
366 CONFIG_SCHEDSTATS=y 366 CONFIG_SCHEDSTATS=y
367 CONFIG_TIMER_STATS=y 367 CONFIG_TIMER_STATS=y
368 CONFIG_PROVE_LOCKING=y 368 CONFIG_PROVE_LOCKING=y
369 # CONFIG_DEBUG_BUGVERBOSE is not set 369 # CONFIG_DEBUG_BUGVERBOSE is not set
370 CONFIG_SECURITY=y 370 CONFIG_SECURITY=y
371 CONFIG_CRYPTO_MICHAEL_MIC=y 371 CONFIG_CRYPTO_MICHAEL_MIC=y
372 # CONFIG_CRYPTO_ANSI_CPRNG is not set 372 # CONFIG_CRYPTO_ANSI_CPRNG is not set
373 CONFIG_CRC_CCITT=y 373 CONFIG_CRC_CCITT=y
374 CONFIG_CRC_T10DIF=y 374 CONFIG_CRC_T10DIF=y
375 CONFIG_CRC_ITU_T=y 375 CONFIG_CRC_ITU_T=y
376 CONFIG_CRC7=y 376 CONFIG_CRC7=y
377 CONFIG_LIBCRC32C=y 377 CONFIG_LIBCRC32C=y
378 CONFIG_FONTS=y 378 CONFIG_FONTS=y
379 CONFIG_FONT_8x8=y 379 CONFIG_FONT_8x8=y
380 CONFIG_FONT_8x16=y 380 CONFIG_FONT_8x16=y
381 381
arch/arm/mach-omap2/board-generic.c
1 /* 1 /*
2 * Copyright (C) 2005 Nokia Corporation 2 * Copyright (C) 2005 Nokia Corporation
3 * Author: Paul Mundt <paul.mundt@nokia.com> 3 * Author: Paul Mundt <paul.mundt@nokia.com>
4 * 4 *
5 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ 5 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
6 * 6 *
7 * Modified from the original mach-omap/omap2/board-generic.c did by Paul 7 * Modified from the original mach-omap/omap2/board-generic.c did by Paul
8 * to support the OMAP2+ device tree boards with an unique board file. 8 * to support the OMAP2+ device tree boards with an unique board file.
9 * 9 *
10 * This program is free software; you can redistribute it and/or modify 10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as 11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation. 12 * published by the Free Software Foundation.
13 */ 13 */
14 #include <linux/io.h> 14 #include <linux/io.h>
15 #include <linux/of_irq.h> 15 #include <linux/of_irq.h>
16 #include <linux/of_platform.h> 16 #include <linux/of_platform.h>
17 #include <linux/irqdomain.h> 17 #include <linux/irqdomain.h>
18 18
19 #include <asm/mach/arch.h> 19 #include <asm/mach/arch.h>
20 20
21 #include "common.h" 21 #include "common.h"
22 22
23 #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)) 23 #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
24 #define intc_of_init NULL 24 #define intc_of_init NULL
25 #endif 25 #endif
26 #ifndef CONFIG_ARCH_OMAP4 26 #ifndef CONFIG_ARCH_OMAP4
27 #define gic_of_init NULL 27 #define gic_of_init NULL
28 #endif 28 #endif
29 29
30 static const struct of_device_id omap_dt_match_table[] __initconst = { 30 static const struct of_device_id omap_dt_match_table[] __initconst = {
31 { .compatible = "simple-bus", }, 31 { .compatible = "simple-bus", },
32 { .compatible = "ti,omap-infra", }, 32 { .compatible = "ti,omap-infra", },
33 { } 33 { }
34 }; 34 };
35 35
36 static void __init omap_generic_init(void) 36 static void __init omap_generic_init(void)
37 { 37 {
38 omapdss_early_init_of(); 38 omapdss_early_init_of();
39 39
40 pdata_quirks_init(omap_dt_match_table); 40 pdata_quirks_init(omap_dt_match_table);
41 41
42 omapdss_init_of(); 42 omapdss_init_of();
43 } 43 }
44 44
45 #ifdef CONFIG_SOC_OMAP2420 45 #ifdef CONFIG_SOC_OMAP2420
46 static const char *const omap242x_boards_compat[] __initconst = { 46 static const char *const omap242x_boards_compat[] __initconst = {
47 "ti,omap2420", 47 "ti,omap2420",
48 NULL, 48 NULL,
49 }; 49 };
50 50
51 DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)") 51 DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
52 .reserve = omap_reserve, 52 .reserve = omap_reserve,
53 .map_io = omap242x_map_io, 53 .map_io = omap242x_map_io,
54 .init_early = omap2420_init_early, 54 .init_early = omap2420_init_early,
55 .init_machine = omap_generic_init, 55 .init_machine = omap_generic_init,
56 .init_time = omap2_sync32k_timer_init, 56 .init_time = omap2_sync32k_timer_init,
57 .dt_compat = omap242x_boards_compat, 57 .dt_compat = omap242x_boards_compat,
58 .restart = omap2xxx_restart, 58 .restart = omap2xxx_restart,
59 MACHINE_END 59 MACHINE_END
60 #endif 60 #endif
61 61
62 #ifdef CONFIG_SOC_OMAP2430 62 #ifdef CONFIG_SOC_OMAP2430
63 static const char *const omap243x_boards_compat[] __initconst = { 63 static const char *const omap243x_boards_compat[] __initconst = {
64 "ti,omap2430", 64 "ti,omap2430",
65 NULL, 65 NULL,
66 }; 66 };
67 67
68 DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)") 68 DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
69 .reserve = omap_reserve, 69 .reserve = omap_reserve,
70 .map_io = omap243x_map_io, 70 .map_io = omap243x_map_io,
71 .init_early = omap2430_init_early, 71 .init_early = omap2430_init_early,
72 .init_machine = omap_generic_init, 72 .init_machine = omap_generic_init,
73 .init_time = omap2_sync32k_timer_init, 73 .init_time = omap2_sync32k_timer_init,
74 .dt_compat = omap243x_boards_compat, 74 .dt_compat = omap243x_boards_compat,
75 .restart = omap2xxx_restart, 75 .restart = omap2xxx_restart,
76 MACHINE_END 76 MACHINE_END
77 #endif 77 #endif
78 78
79 #ifdef CONFIG_ARCH_OMAP3 79 #ifdef CONFIG_ARCH_OMAP3
80 /* Some boards need board name for legacy userspace in /proc/cpuinfo */
81 static const char *const n900_boards_compat[] __initconst = {
82 "nokia,omap3-n900",
83 NULL,
84 };
85
86 DT_MACHINE_START(OMAP3_N900_DT, "Nokia RX-51 board")
87 .reserve = omap_reserve,
88 .map_io = omap3_map_io,
89 .init_early = omap3430_init_early,
90 .init_machine = omap_generic_init,
91 .init_late = omap3_init_late,
92 .init_time = omap3_sync32k_timer_init,
93 .dt_compat = n900_boards_compat,
94 .restart = omap3xxx_restart,
95 MACHINE_END
96
97 /* Generic omap3 boards, most boards can use these */
80 static const char *const omap3_boards_compat[] __initconst = { 98 static const char *const omap3_boards_compat[] __initconst = {
81 "ti,omap3430", 99 "ti,omap3430",
82 "ti,omap3", 100 "ti,omap3",
83 NULL, 101 NULL,
84 }; 102 };
85 103
86 DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") 104 DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
87 .reserve = omap_reserve, 105 .reserve = omap_reserve,
88 .map_io = omap3_map_io, 106 .map_io = omap3_map_io,
89 .init_early = omap3430_init_early, 107 .init_early = omap3430_init_early,
90 .init_machine = omap_generic_init, 108 .init_machine = omap_generic_init,
91 .init_late = omap3_init_late, 109 .init_late = omap3_init_late,
92 .init_time = omap3_sync32k_timer_init, 110 .init_time = omap3_sync32k_timer_init,
93 .dt_compat = omap3_boards_compat, 111 .dt_compat = omap3_boards_compat,
94 .restart = omap3xxx_restart, 112 .restart = omap3xxx_restart,
95 MACHINE_END 113 MACHINE_END
96 114
97 static const char *const omap36xx_boards_compat[] __initconst = { 115 static const char *const omap36xx_boards_compat[] __initconst = {
98 "ti,omap36xx", 116 "ti,omap36xx",
99 NULL, 117 NULL,
100 }; 118 };
101 119
102 DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)") 120 DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)")
103 .reserve = omap_reserve, 121 .reserve = omap_reserve,
104 .map_io = omap3_map_io, 122 .map_io = omap3_map_io,
105 .init_early = omap3630_init_early, 123 .init_early = omap3630_init_early,
106 .init_machine = omap_generic_init, 124 .init_machine = omap_generic_init,
107 .init_late = omap3_init_late, 125 .init_late = omap3_init_late,
108 .init_time = omap3_sync32k_timer_init, 126 .init_time = omap3_sync32k_timer_init,
109 .dt_compat = omap36xx_boards_compat, 127 .dt_compat = omap36xx_boards_compat,
110 .restart = omap3xxx_restart, 128 .restart = omap3xxx_restart,
111 MACHINE_END 129 MACHINE_END
112 130
113 static const char *const omap3_gp_boards_compat[] __initconst = { 131 static const char *const omap3_gp_boards_compat[] __initconst = {
114 "ti,omap3-beagle", 132 "ti,omap3-beagle",
115 "timll,omap3-devkit8000", 133 "timll,omap3-devkit8000",
116 NULL, 134 NULL,
117 }; 135 };
118 136
119 DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)") 137 DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)")
120 .reserve = omap_reserve, 138 .reserve = omap_reserve,
121 .map_io = omap3_map_io, 139 .map_io = omap3_map_io,
122 .init_early = omap3430_init_early, 140 .init_early = omap3430_init_early,
123 .init_machine = omap_generic_init, 141 .init_machine = omap_generic_init,
124 .init_late = omap3_init_late, 142 .init_late = omap3_init_late,
125 .init_time = omap3_secure_sync32k_timer_init, 143 .init_time = omap3_secure_sync32k_timer_init,
126 .dt_compat = omap3_gp_boards_compat, 144 .dt_compat = omap3_gp_boards_compat,
127 .restart = omap3xxx_restart, 145 .restart = omap3xxx_restart,
128 MACHINE_END 146 MACHINE_END
129 147
130 static const char *const am3517_boards_compat[] __initconst = { 148 static const char *const am3517_boards_compat[] __initconst = {
131 "ti,am3517", 149 "ti,am3517",
132 NULL, 150 NULL,
133 }; 151 };
134 152
135 DT_MACHINE_START(AM3517_DT, "Generic AM3517 (Flattened Device Tree)") 153 DT_MACHINE_START(AM3517_DT, "Generic AM3517 (Flattened Device Tree)")
136 .reserve = omap_reserve, 154 .reserve = omap_reserve,
137 .map_io = omap3_map_io, 155 .map_io = omap3_map_io,
138 .init_early = am35xx_init_early, 156 .init_early = am35xx_init_early,
139 .init_machine = omap_generic_init, 157 .init_machine = omap_generic_init,
140 .init_late = omap3_init_late, 158 .init_late = omap3_init_late,
141 .init_time = omap3_gptimer_timer_init, 159 .init_time = omap3_gptimer_timer_init,
142 .dt_compat = am3517_boards_compat, 160 .dt_compat = am3517_boards_compat,
143 .restart = omap3xxx_restart, 161 .restart = omap3xxx_restart,
144 MACHINE_END 162 MACHINE_END
145 #endif 163 #endif
146 164
147 #ifdef CONFIG_SOC_AM33XX 165 #ifdef CONFIG_SOC_AM33XX
148 static const char *const am33xx_boards_compat[] __initconst = { 166 static const char *const am33xx_boards_compat[] __initconst = {
149 "ti,am33xx", 167 "ti,am33xx",
150 NULL, 168 NULL,
151 }; 169 };
152 170
153 DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)") 171 DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)")
154 .reserve = omap_reserve, 172 .reserve = omap_reserve,
155 .map_io = am33xx_map_io, 173 .map_io = am33xx_map_io,
156 .init_early = am33xx_init_early, 174 .init_early = am33xx_init_early,
157 .init_machine = omap_generic_init, 175 .init_machine = omap_generic_init,
158 .init_late = am33xx_init_late, 176 .init_late = am33xx_init_late,
159 .init_time = omap3_gptimer_timer_init, 177 .init_time = omap3_gptimer_timer_init,
160 .dt_compat = am33xx_boards_compat, 178 .dt_compat = am33xx_boards_compat,
161 .restart = am33xx_restart, 179 .restart = am33xx_restart,
162 MACHINE_END 180 MACHINE_END
163 #endif 181 #endif
164 182
165 #ifdef CONFIG_ARCH_OMAP4 183 #ifdef CONFIG_ARCH_OMAP4
166 static const char *const omap4_boards_compat[] __initconst = { 184 static const char *const omap4_boards_compat[] __initconst = {
167 "ti,omap4460", 185 "ti,omap4460",
168 "ti,omap4430", 186 "ti,omap4430",
169 "ti,omap4", 187 "ti,omap4",
170 NULL, 188 NULL,
171 }; 189 };
172 190
173 DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") 191 DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
174 .reserve = omap_reserve, 192 .reserve = omap_reserve,
175 .smp = smp_ops(omap4_smp_ops), 193 .smp = smp_ops(omap4_smp_ops),
176 .map_io = omap4_map_io, 194 .map_io = omap4_map_io,
177 .init_early = omap4430_init_early, 195 .init_early = omap4430_init_early,
178 .init_irq = omap_gic_of_init, 196 .init_irq = omap_gic_of_init,
179 .init_machine = omap_generic_init, 197 .init_machine = omap_generic_init,
180 .init_late = omap4430_init_late, 198 .init_late = omap4430_init_late,
181 .init_time = omap4_local_timer_init, 199 .init_time = omap4_local_timer_init,
182 .dt_compat = omap4_boards_compat, 200 .dt_compat = omap4_boards_compat,
183 .restart = omap44xx_restart, 201 .restart = omap44xx_restart,
184 MACHINE_END 202 MACHINE_END
185 #endif 203 #endif
186 204
187 #ifdef CONFIG_SOC_OMAP5 205 #ifdef CONFIG_SOC_OMAP5
188 static const char *const omap5_boards_compat[] __initconst = { 206 static const char *const omap5_boards_compat[] __initconst = {
189 "ti,omap5432", 207 "ti,omap5432",
190 "ti,omap5430", 208 "ti,omap5430",
191 "ti,omap5", 209 "ti,omap5",
192 NULL, 210 NULL,
193 }; 211 };
194 212
195 DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)") 213 DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")
196 .reserve = omap_reserve, 214 .reserve = omap_reserve,
197 .smp = smp_ops(omap4_smp_ops), 215 .smp = smp_ops(omap4_smp_ops),
198 .map_io = omap5_map_io, 216 .map_io = omap5_map_io,
199 .init_early = omap5_init_early, 217 .init_early = omap5_init_early,
200 .init_irq = omap_gic_of_init, 218 .init_irq = omap_gic_of_init,
201 .init_machine = omap_generic_init, 219 .init_machine = omap_generic_init,
202 .init_late = omap5_init_late, 220 .init_late = omap5_init_late,
203 .init_time = omap5_realtime_timer_init, 221 .init_time = omap5_realtime_timer_init,
204 .dt_compat = omap5_boards_compat, 222 .dt_compat = omap5_boards_compat,
205 .restart = omap44xx_restart, 223 .restart = omap44xx_restart,
206 MACHINE_END 224 MACHINE_END
207 #endif 225 #endif
208 226
209 #ifdef CONFIG_SOC_AM43XX 227 #ifdef CONFIG_SOC_AM43XX
210 static const char *const am43_boards_compat[] __initconst = { 228 static const char *const am43_boards_compat[] __initconst = {
211 "ti,am4372", 229 "ti,am4372",
212 "ti,am43", 230 "ti,am43",
213 NULL, 231 NULL,
214 }; 232 };
215 233
216 DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)") 234 DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
217 .map_io = am33xx_map_io, 235 .map_io = am33xx_map_io,
218 .init_early = am43xx_init_early, 236 .init_early = am43xx_init_early,
219 .init_late = am43xx_init_late, 237 .init_late = am43xx_init_late,
220 .init_irq = omap_gic_of_init, 238 .init_irq = omap_gic_of_init,
221 .init_machine = omap_generic_init, 239 .init_machine = omap_generic_init,
222 .init_time = omap3_gptimer_timer_init, 240 .init_time = omap3_gptimer_timer_init,
223 .dt_compat = am43_boards_compat, 241 .dt_compat = am43_boards_compat,
224 .restart = omap44xx_restart, 242 .restart = omap44xx_restart,
225 MACHINE_END 243 MACHINE_END
226 #endif 244 #endif
227 245
228 #ifdef CONFIG_SOC_DRA7XX 246 #ifdef CONFIG_SOC_DRA7XX
229 static const char *const dra74x_boards_compat[] __initconst = { 247 static const char *const dra74x_boards_compat[] __initconst = {
230 "ti,am5728", 248 "ti,am5728",
231 "ti,am5726", 249 "ti,am5726",
232 "ti,dra742", 250 "ti,dra742",
233 "ti,dra7", 251 "ti,dra7",
234 NULL, 252 NULL,
235 }; 253 };
236 254
237 DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)") 255 DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)")
238 .reserve = omap_reserve, 256 .reserve = omap_reserve,
239 .smp = smp_ops(omap4_smp_ops), 257 .smp = smp_ops(omap4_smp_ops),
240 .map_io = omap5_map_io, 258 .map_io = omap5_map_io,
241 .init_early = dra7xx_init_early, 259 .init_early = dra7xx_init_early,
242 .init_late = dra7xx_init_late, 260 .init_late = dra7xx_init_late,
243 .init_irq = omap_gic_of_init, 261 .init_irq = omap_gic_of_init,
244 .init_machine = omap_generic_init, 262 .init_machine = omap_generic_init,
245 .init_time = omap5_realtime_timer_init, 263 .init_time = omap5_realtime_timer_init,
246 .dt_compat = dra74x_boards_compat, 264 .dt_compat = dra74x_boards_compat,
247 .restart = omap44xx_restart, 265 .restart = omap44xx_restart,
248 MACHINE_END 266 MACHINE_END
249 267
250 static const char *const dra72x_boards_compat[] __initconst = { 268 static const char *const dra72x_boards_compat[] __initconst = {
251 "ti,am5718", 269 "ti,am5718",
252 "ti,am5716", 270 "ti,am5716",
253 "ti,dra722", 271 "ti,dra722",
254 NULL, 272 NULL,
255 }; 273 };
256 274
257 DT_MACHINE_START(DRA72X_DT, "Generic DRA72X (Flattened Device Tree)") 275 DT_MACHINE_START(DRA72X_DT, "Generic DRA72X (Flattened Device Tree)")
258 .reserve = omap_reserve, 276 .reserve = omap_reserve,
259 .map_io = omap5_map_io, 277 .map_io = omap5_map_io,
260 .init_early = dra7xx_init_early, 278 .init_early = dra7xx_init_early,
261 .init_late = dra7xx_init_late, 279 .init_late = dra7xx_init_late,
262 .init_irq = omap_gic_of_init, 280 .init_irq = omap_gic_of_init,
263 .init_machine = omap_generic_init, 281 .init_machine = omap_generic_init,
264 .init_time = omap5_realtime_timer_init, 282 .init_time = omap5_realtime_timer_init,
265 .dt_compat = dra72x_boards_compat, 283 .dt_compat = dra72x_boards_compat,
266 .restart = omap44xx_restart, 284 .restart = omap44xx_restart,
267 MACHINE_END 285 MACHINE_END
268 #endif 286 #endif
269 287
arch/arm/mach-omap2/common.h
1 /* 1 /*
2 * Header for code common to all OMAP2+ machines. 2 * Header for code common to all OMAP2+ machines.
3 * 3 *
4 * This program is free software; you can redistribute it and/or modify it 4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the 5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your 6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version. 7 * option) any later version.
8 * 8 *
9 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 9 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
10 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 10 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 11 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
12 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 12 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
13 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 13 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
14 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 14 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
15 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 15 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
16 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 16 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
17 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 17 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
18 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 18 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
19 * 19 *
20 * You should have received a copy of the GNU General Public License along 20 * You should have received a copy of the GNU General Public License along
21 * with this program; if not, write to the Free Software Foundation, Inc., 21 * with this program; if not, write to the Free Software Foundation, Inc.,
22 * 675 Mass Ave, Cambridge, MA 02139, USA. 22 * 675 Mass Ave, Cambridge, MA 02139, USA.
23 */ 23 */
24 24
25 #ifndef __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H 25 #ifndef __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H
26 #define __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H 26 #define __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H
27 #ifndef __ASSEMBLER__ 27 #ifndef __ASSEMBLER__
28 28
29 #include <linux/irq.h> 29 #include <linux/irq.h>
30 #include <linux/delay.h> 30 #include <linux/delay.h>
31 #include <linux/i2c.h> 31 #include <linux/i2c.h>
32 #include <linux/i2c/twl.h> 32 #include <linux/i2c/twl.h>
33 #include <linux/i2c-omap.h> 33 #include <linux/i2c-omap.h>
34 #include <linux/reboot.h> 34 #include <linux/reboot.h>
35 #include <linux/irqchip/irq-omap-intc.h> 35 #include <linux/irqchip/irq-omap-intc.h>
36 36
37 #include <asm/proc-fns.h> 37 #include <asm/proc-fns.h>
38 38
39 #include "i2c.h" 39 #include "i2c.h"
40 #include "serial.h" 40 #include "serial.h"
41 41
42 #include "usb.h" 42 #include "usb.h"
43 43
44 #define OMAP_INTC_START NR_IRQS 44 #define OMAP_INTC_START NR_IRQS
45 45
46 #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP2) 46 #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP2)
47 int omap2_pm_init(void); 47 int omap2_pm_init(void);
48 #else 48 #else
49 static inline int omap2_pm_init(void) 49 static inline int omap2_pm_init(void)
50 { 50 {
51 return 0; 51 return 0;
52 } 52 }
53 #endif 53 #endif
54 54
55 #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP3) 55 #if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP3)
56 int omap3_pm_init(void); 56 int omap3_pm_init(void);
57 #else 57 #else
58 static inline int omap3_pm_init(void) 58 static inline int omap3_pm_init(void)
59 { 59 {
60 return 0; 60 return 0;
61 } 61 }
62 #endif 62 #endif
63 63
64 #if defined(CONFIG_PM) && (defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX)) 64 #if defined(CONFIG_PM) && (defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX))
65 int omap4_pm_init(void); 65 int omap4_pm_init(void);
66 int omap4_pm_init_early(void); 66 int omap4_pm_init_early(void);
67 #else 67 #else
68 static inline int omap4_pm_init(void) 68 static inline int omap4_pm_init(void)
69 { 69 {
70 return 0; 70 return 0;
71 } 71 }
72 72
73 static inline int omap4_pm_init_early(void) 73 static inline int omap4_pm_init_early(void)
74 { 74 {
75 return 0; 75 return 0;
76 } 76 }
77 #endif 77 #endif
78 78
79 #ifdef CONFIG_OMAP_MUX 79 #ifdef CONFIG_OMAP_MUX
80 int omap_mux_late_init(void); 80 int omap_mux_late_init(void);
81 #else 81 #else
82 static inline int omap_mux_late_init(void) 82 static inline int omap_mux_late_init(void)
83 { 83 {
84 return 0; 84 return 0;
85 } 85 }
86 #endif 86 #endif
87 87
88 extern void omap2_init_common_infrastructure(void); 88 extern void omap2_init_common_infrastructure(void);
89 89
90 extern void omap2_sync32k_timer_init(void); 90 extern void omap2_sync32k_timer_init(void);
91 extern void omap3_sync32k_timer_init(void); 91 extern void omap3_sync32k_timer_init(void);
92 extern void omap3_secure_sync32k_timer_init(void); 92 extern void omap3_secure_sync32k_timer_init(void);
93 extern void omap3_gptimer_timer_init(void); 93 extern void omap3_gptimer_timer_init(void);
94 extern void omap4_local_timer_init(void); 94 extern void omap4_local_timer_init(void);
95 #ifdef CONFIG_CACHE_L2X0 95 #ifdef CONFIG_CACHE_L2X0
96 int omap_l2_cache_init(void); 96 int omap_l2_cache_init(void);
97 #else 97 #else
98 static inline int omap_l2_cache_init(void) 98 static inline int omap_l2_cache_init(void)
99 { 99 {
100 return 0; 100 return 0;
101 } 101 }
102 #endif 102 #endif
103 extern void omap5_realtime_timer_init(void); 103 extern void omap5_realtime_timer_init(void);
104 104
105 void omap2420_init_early(void); 105 void omap2420_init_early(void);
106 void omap2430_init_early(void); 106 void omap2430_init_early(void);
107 void omap3430_init_early(void); 107 void omap3430_init_early(void);
108 void omap35xx_init_early(void); 108 void omap35xx_init_early(void);
109 void omap3630_init_early(void); 109 void omap3630_init_early(void);
110 void omap3_init_early(void); /* Do not use this one */ 110 void omap3_init_early(void); /* Do not use this one */
111 void am33xx_init_early(void); 111 void am33xx_init_early(void);
112 void am35xx_init_early(void); 112 void am35xx_init_early(void);
113 void ti81xx_init_early(void); 113 void ti81xx_init_early(void);
114 void am33xx_init_early(void); 114 void am33xx_init_early(void);
115 void am43xx_init_early(void); 115 void am43xx_init_early(void);
116 void am43xx_init_late(void); 116 void am43xx_init_late(void);
117 void omap4430_init_early(void); 117 void omap4430_init_early(void);
118 void omap5_init_early(void); 118 void omap5_init_early(void);
119 void omap3_init_late(void); /* Do not use this one */ 119 void omap3_init_late(void); /* Do not use this one */
120 void omap4430_init_late(void); 120 void omap4430_init_late(void);
121 void omap2420_init_late(void); 121 void omap2420_init_late(void);
122 void omap2430_init_late(void); 122 void omap2430_init_late(void);
123 void omap3430_init_late(void); 123 void omap3430_init_late(void);
124 void omap35xx_init_late(void); 124 void omap35xx_init_late(void);
125 void omap3630_init_late(void); 125 void omap3630_init_late(void);
126 void am35xx_init_late(void); 126 void am35xx_init_late(void);
127 void ti81xx_init_late(void); 127 void ti81xx_init_late(void);
128 void am33xx_init_late(void); 128 void am33xx_init_late(void);
129 void omap5_init_late(void); 129 void omap5_init_late(void);
130 int omap2_common_pm_late_init(void); 130 int omap2_common_pm_late_init(void);
131 void dra7xx_init_early(void); 131 void dra7xx_init_early(void);
132 void dra7xx_init_late(void); 132 void dra7xx_init_late(void);
133 133
134 #ifdef CONFIG_SOC_BUS 134 #ifdef CONFIG_SOC_BUS
135 void omap_soc_device_init(void); 135 void omap_soc_device_init(void);
136 #else 136 #else
137 static inline void omap_soc_device_init(void) 137 static inline void omap_soc_device_init(void)
138 { 138 {
139 } 139 }
140 #endif 140 #endif
141 141
142 #if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430) 142 #if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430)
143 void omap2xxx_restart(enum reboot_mode mode, const char *cmd); 143 void omap2xxx_restart(enum reboot_mode mode, const char *cmd);
144 #else 144 #else
145 static inline void omap2xxx_restart(enum reboot_mode mode, const char *cmd) 145 static inline void omap2xxx_restart(enum reboot_mode mode, const char *cmd)
146 { 146 {
147 } 147 }
148 #endif 148 #endif
149 149
150 #ifdef CONFIG_SOC_AM33XX 150 #ifdef CONFIG_SOC_AM33XX
151 void am33xx_restart(enum reboot_mode mode, const char *cmd); 151 void am33xx_restart(enum reboot_mode mode, const char *cmd);
152 #else 152 #else
153 static inline void am33xx_restart(enum reboot_mode mode, const char *cmd) 153 static inline void am33xx_restart(enum reboot_mode mode, const char *cmd)
154 { 154 {
155 } 155 }
156 #endif 156 #endif
157 157
158 #ifdef CONFIG_ARCH_OMAP3 158 #ifdef CONFIG_ARCH_OMAP3
159 void omap3xxx_restart(enum reboot_mode mode, const char *cmd); 159 void omap3xxx_restart(enum reboot_mode mode, const char *cmd);
160 #else 160 #else
161 static inline void omap3xxx_restart(enum reboot_mode mode, const char *cmd) 161 static inline void omap3xxx_restart(enum reboot_mode mode, const char *cmd)
162 { 162 {
163 } 163 }
164 #endif 164 #endif
165 165
166 #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \ 166 #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \
167 defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM43XX) 167 defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM43XX)
168 void omap44xx_restart(enum reboot_mode mode, const char *cmd); 168 void omap44xx_restart(enum reboot_mode mode, const char *cmd);
169 #else 169 #else
170 static inline void omap44xx_restart(enum reboot_mode mode, const char *cmd) 170 static inline void omap44xx_restart(enum reboot_mode mode, const char *cmd)
171 { 171 {
172 } 172 }
173 #endif 173 #endif
174 174
175 /* This gets called from mach-omap2/io.c, do not call this */ 175 /* This gets called from mach-omap2/io.c, do not call this */
176 void __init omap2_set_globals_tap(u32 class, void __iomem *tap); 176 void __init omap2_set_globals_tap(u32 class, void __iomem *tap);
177 177
178 void __init omap242x_map_io(void); 178 void __init omap242x_map_io(void);
179 void __init omap243x_map_io(void); 179 void __init omap243x_map_io(void);
180 void __init omap3_map_io(void); 180 void __init omap3_map_io(void);
181 void __init am33xx_map_io(void); 181 void __init am33xx_map_io(void);
182 void __init omap4_map_io(void); 182 void __init omap4_map_io(void);
183 void __init omap5_map_io(void); 183 void __init omap5_map_io(void);
184 void __init ti81xx_map_io(void); 184 void __init ti81xx_map_io(void);
185 185
186 /* omap_barriers_init() is OMAP4 only */ 186 /* omap_barriers_init() is OMAP4 only */
187 void omap_barriers_init(void); 187 void omap_barriers_init(void);
188 188
189 /** 189 /**
190 * omap_test_timeout - busy-loop, testing a condition 190 * omap_test_timeout - busy-loop, testing a condition
191 * @cond: condition to test until it evaluates to true 191 * @cond: condition to test until it evaluates to true
192 * @timeout: maximum number of microseconds in the timeout 192 * @timeout: maximum number of microseconds in the timeout
193 * @index: loop index (integer) 193 * @index: loop index (integer)
194 * 194 *
195 * Loop waiting for @cond to become true or until at least @timeout 195 * Loop waiting for @cond to become true or until at least @timeout
196 * microseconds have passed. To use, define some integer @index in the 196 * microseconds have passed. To use, define some integer @index in the
197 * calling code. After running, if @index == @timeout, then the loop has 197 * calling code. After running, if @index == @timeout, then the loop has
198 * timed out. 198 * timed out.
199 */ 199 */
200 #define omap_test_timeout(cond, timeout, index) \ 200 #define omap_test_timeout(cond, timeout, index) \
201 ({ \ 201 ({ \
202 for (index = 0; index < timeout; index++) { \ 202 for (index = 0; index < timeout; index++) { \
203 if (cond) \ 203 if (cond) \
204 break; \ 204 break; \
205 udelay(1); \ 205 udelay(1); \
206 } \ 206 } \
207 }) 207 })
208 208
209 extern struct device *omap2_get_mpuss_device(void); 209 extern struct device *omap2_get_mpuss_device(void);
210 extern struct device *omap2_get_iva_device(void); 210 extern struct device *omap2_get_iva_device(void);
211 extern struct device *omap2_get_l3_device(void); 211 extern struct device *omap2_get_l3_device(void);
212 extern struct device *omap4_get_dsp_device(void); 212 extern struct device *omap4_get_dsp_device(void);
213 213
214 void omap_gic_of_init(void); 214 void omap_gic_of_init(void);
215 215
216 #ifdef CONFIG_CACHE_L2X0 216 #ifdef CONFIG_CACHE_L2X0
217 extern void __iomem *omap4_get_l2cache_base(void); 217 extern void __iomem *omap4_get_l2cache_base(void);
218 #endif 218 #endif
219 219
220 struct device_node; 220 struct device_node;
221 221
222 #ifdef CONFIG_SMP 222 #ifdef CONFIG_SMP
223 extern void __iomem *omap4_get_scu_base(void); 223 extern void __iomem *omap4_get_scu_base(void);
224 #else 224 #else
225 static inline void __iomem *omap4_get_scu_base(void) 225 static inline void __iomem *omap4_get_scu_base(void)
226 { 226 {
227 return NULL; 227 return NULL;
228 } 228 }
229 #endif 229 #endif
230 230
231 extern void gic_dist_disable(void); 231 extern void gic_dist_disable(void);
232 extern void gic_dist_enable(void); 232 extern void gic_dist_enable(void);
233 extern bool gic_dist_disabled(void); 233 extern bool gic_dist_disabled(void);
234 extern void gic_timer_retrigger(void); 234 extern void gic_timer_retrigger(void);
235 extern void omap_smc1(u32 fn, u32 arg); 235 extern void omap_smc1(u32 fn, u32 arg);
236 extern void __iomem *omap4_get_sar_ram_base(void); 236 extern void __iomem *omap4_get_sar_ram_base(void);
237 extern void omap_do_wfi(void); 237 extern void omap_do_wfi(void);
238 238
239 #ifdef CONFIG_SMP 239 #ifdef CONFIG_SMP
240 /* Needed for secondary core boot */ 240 /* Needed for secondary core boot */
241 extern void omap4_secondary_startup(void); 241 extern void omap4_secondary_startup(void);
242 extern void omap4460_secondary_startup(void); 242 extern void omap4460_secondary_startup(void);
243 extern u32 omap_modify_auxcoreboot0(u32 set_mask, u32 clear_mask); 243 extern u32 omap_modify_auxcoreboot0(u32 set_mask, u32 clear_mask);
244 extern void omap_auxcoreboot_addr(u32 cpu_addr); 244 extern void omap_auxcoreboot_addr(u32 cpu_addr);
245 extern u32 omap_read_auxcoreboot0(void); 245 extern u32 omap_read_auxcoreboot0(void);
246 246
247 extern void omap4_cpu_die(unsigned int cpu); 247 extern void omap4_cpu_die(unsigned int cpu);
248 248
249 extern struct smp_operations omap4_smp_ops; 249 extern struct smp_operations omap4_smp_ops;
250 250
251 extern void omap5_secondary_startup(void); 251 extern void omap5_secondary_startup(void);
252 extern void omap5_secondary_hyp_startup(void);
252 #endif 253 #endif
253 254
254 #if defined(CONFIG_SMP) && defined(CONFIG_PM) 255 #if defined(CONFIG_SMP) && defined(CONFIG_PM)
255 extern int omap4_mpuss_init(void); 256 extern int omap4_mpuss_init(void);
256 extern int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state); 257 extern int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state);
257 extern int omap4_finish_suspend(unsigned long cpu_state); 258 extern int omap4_finish_suspend(unsigned long cpu_state);
258 extern void omap4_cpu_resume(void); 259 extern void omap4_cpu_resume(void);
259 extern int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state); 260 extern int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state);
260 #else 261 #else
261 static inline int omap4_enter_lowpower(unsigned int cpu, 262 static inline int omap4_enter_lowpower(unsigned int cpu,
262 unsigned int power_state) 263 unsigned int power_state)
263 { 264 {
264 cpu_do_idle(); 265 cpu_do_idle();
265 return 0; 266 return 0;
266 } 267 }
267 268
268 static inline int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state) 269 static inline int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state)
269 { 270 {
270 cpu_do_idle(); 271 cpu_do_idle();
271 return 0; 272 return 0;
272 } 273 }
273 274
274 static inline int omap4_mpuss_init(void) 275 static inline int omap4_mpuss_init(void)
275 { 276 {
276 return 0; 277 return 0;
277 } 278 }
278 279
279 static inline int omap4_finish_suspend(unsigned long cpu_state) 280 static inline int omap4_finish_suspend(unsigned long cpu_state)
280 { 281 {
281 return 0; 282 return 0;
282 } 283 }
283 284
284 static inline void omap4_cpu_resume(void) 285 static inline void omap4_cpu_resume(void)
285 {} 286 {}
286 287
287 #endif 288 #endif
288 289
289 void pdata_quirks_init(const struct of_device_id *); 290 void pdata_quirks_init(const struct of_device_id *);
290 void omap_auxdata_legacy_init(struct device *dev); 291 void omap_auxdata_legacy_init(struct device *dev);
291 void omap_pcs_legacy_init(int irq, void (*rearm)(void)); 292 void omap_pcs_legacy_init(int irq, void (*rearm)(void));
292 293
293 struct omap_sdrc_params; 294 struct omap_sdrc_params;
294 extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0, 295 extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
295 struct omap_sdrc_params *sdrc_cs1); 296 struct omap_sdrc_params *sdrc_cs1);
296 struct omap2_hsmmc_info; 297 struct omap2_hsmmc_info;
297 extern void omap_reserve(void); 298 extern void omap_reserve(void);
298 299
299 struct omap_hwmod; 300 struct omap_hwmod;
300 extern int omap_dss_reset(struct omap_hwmod *); 301 extern int omap_dss_reset(struct omap_hwmod *);
301 302
302 /* SoC specific clock initializer */ 303 /* SoC specific clock initializer */
303 int omap_clk_init(void); 304 int omap_clk_init(void);
304 305
305 int __init omapdss_init_of(void); 306 int __init omapdss_init_of(void);
306 void __init omapdss_early_init_of(void); 307 void __init omapdss_early_init_of(void);
307 308
308 #endif /* __ASSEMBLER__ */ 309 #endif /* __ASSEMBLER__ */
309 #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */ 310 #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */
310 311
arch/arm/mach-omap2/control.h
1 /* 1 /*
2 * arch/arm/mach-omap2/control.h 2 * arch/arm/mach-omap2/control.h
3 * 3 *
4 * OMAP2/3/4 System Control Module definitions 4 * OMAP2/3/4 System Control Module definitions
5 * 5 *
6 * Copyright (C) 2007-2010 Texas Instruments, Inc. 6 * Copyright (C) 2007-2010 Texas Instruments, Inc.
7 * Copyright (C) 2007-2008, 2010 Nokia Corporation 7 * Copyright (C) 2007-2008, 2010 Nokia Corporation
8 * 8 *
9 * Written by Paul Walmsley 9 * Written by Paul Walmsley
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by 12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation. 13 * the Free Software Foundation.
14 */ 14 */
15 15
16 #ifndef __ARCH_ARM_MACH_OMAP2_CONTROL_H 16 #ifndef __ARCH_ARM_MACH_OMAP2_CONTROL_H
17 #define __ARCH_ARM_MACH_OMAP2_CONTROL_H 17 #define __ARCH_ARM_MACH_OMAP2_CONTROL_H
18 18
19 #include "am33xx.h" 19 #include "am33xx.h"
20 20
21 #ifndef __ASSEMBLY__ 21 #ifndef __ASSEMBLY__
22 #define OMAP242X_CTRL_REGADDR(reg) \ 22 #define OMAP242X_CTRL_REGADDR(reg) \
23 OMAP2_L4_IO_ADDRESS(OMAP242X_CTRL_BASE + (reg)) 23 OMAP2_L4_IO_ADDRESS(OMAP242X_CTRL_BASE + (reg))
24 #define OMAP243X_CTRL_REGADDR(reg) \ 24 #define OMAP243X_CTRL_REGADDR(reg) \
25 OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE + (reg)) 25 OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE + (reg))
26 #define OMAP343X_CTRL_REGADDR(reg) \ 26 #define OMAP343X_CTRL_REGADDR(reg) \
27 OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE + (reg)) 27 OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE + (reg))
28 #define AM33XX_CTRL_REGADDR(reg) \ 28 #define AM33XX_CTRL_REGADDR(reg) \
29 AM33XX_L4_WK_IO_ADDRESS(AM33XX_SCM_BASE + (reg)) 29 AM33XX_L4_WK_IO_ADDRESS(AM33XX_SCM_BASE + (reg))
30 #else 30 #else
31 #define OMAP242X_CTRL_REGADDR(reg) \ 31 #define OMAP242X_CTRL_REGADDR(reg) \
32 OMAP2_L4_IO_ADDRESS(OMAP242X_CTRL_BASE + (reg)) 32 OMAP2_L4_IO_ADDRESS(OMAP242X_CTRL_BASE + (reg))
33 #define OMAP243X_CTRL_REGADDR(reg) \ 33 #define OMAP243X_CTRL_REGADDR(reg) \
34 OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE + (reg)) 34 OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE + (reg))
35 #define OMAP343X_CTRL_REGADDR(reg) \ 35 #define OMAP343X_CTRL_REGADDR(reg) \
36 OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE + (reg)) 36 OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE + (reg))
37 #define AM33XX_CTRL_REGADDR(reg) \ 37 #define AM33XX_CTRL_REGADDR(reg) \
38 AM33XX_L4_WK_IO_ADDRESS(AM33XX_SCM_BASE + (reg)) 38 AM33XX_L4_WK_IO_ADDRESS(AM33XX_SCM_BASE + (reg))
39 #endif /* __ASSEMBLY__ */ 39 #endif /* __ASSEMBLY__ */
40 40
41 /* 41 /*
42 * As elsewhere, the "OMAP2_" prefix indicates that the macro is valid for 42 * As elsewhere, the "OMAP2_" prefix indicates that the macro is valid for
43 * OMAP24XX and OMAP34XX. 43 * OMAP24XX and OMAP34XX.
44 */ 44 */
45 45
46 /* Control submodule offsets */ 46 /* Control submodule offsets */
47 47
48 #define OMAP2_CONTROL_INTERFACE 0x000 48 #define OMAP2_CONTROL_INTERFACE 0x000
49 #define OMAP2_CONTROL_PADCONFS 0x030 49 #define OMAP2_CONTROL_PADCONFS 0x030
50 #define OMAP2_CONTROL_GENERAL 0x270 50 #define OMAP2_CONTROL_GENERAL 0x270
51 #define OMAP343X_CONTROL_MEM_WKUP 0x600 51 #define OMAP343X_CONTROL_MEM_WKUP 0x600
52 #define OMAP343X_CONTROL_PADCONFS_WKUP 0xa00 52 #define OMAP343X_CONTROL_PADCONFS_WKUP 0xa00
53 #define OMAP343X_CONTROL_GENERAL_WKUP 0xa60 53 #define OMAP343X_CONTROL_GENERAL_WKUP 0xa60
54 54
55 /* TI81XX spefic control submodules */ 55 /* TI81XX spefic control submodules */
56 #define TI81XX_CONTROL_DEVCONF 0x600 56 #define TI81XX_CONTROL_DEVCONF 0x600
57 57
58 /* Control register offsets - read/write with omap_ctrl_{read,write}{bwl}() */ 58 /* Control register offsets - read/write with omap_ctrl_{read,write}{bwl}() */
59 59
60 #define OMAP2_CONTROL_SYSCONFIG (OMAP2_CONTROL_INTERFACE + 0x10) 60 #define OMAP2_CONTROL_SYSCONFIG (OMAP2_CONTROL_INTERFACE + 0x10)
61 61
62 /* CONTROL_GENERAL register offsets common to OMAP2 & 3 */ 62 /* CONTROL_GENERAL register offsets common to OMAP2 & 3 */
63 #define OMAP2_CONTROL_DEVCONF0 (OMAP2_CONTROL_GENERAL + 0x0004) 63 #define OMAP2_CONTROL_DEVCONF0 (OMAP2_CONTROL_GENERAL + 0x0004)
64 #define OMAP2_CONTROL_MSUSPENDMUX_0 (OMAP2_CONTROL_GENERAL + 0x0020) 64 #define OMAP2_CONTROL_MSUSPENDMUX_0 (OMAP2_CONTROL_GENERAL + 0x0020)
65 #define OMAP2_CONTROL_MSUSPENDMUX_1 (OMAP2_CONTROL_GENERAL + 0x0024) 65 #define OMAP2_CONTROL_MSUSPENDMUX_1 (OMAP2_CONTROL_GENERAL + 0x0024)
66 #define OMAP2_CONTROL_MSUSPENDMUX_2 (OMAP2_CONTROL_GENERAL + 0x0028) 66 #define OMAP2_CONTROL_MSUSPENDMUX_2 (OMAP2_CONTROL_GENERAL + 0x0028)
67 #define OMAP2_CONTROL_MSUSPENDMUX_3 (OMAP2_CONTROL_GENERAL + 0x002c) 67 #define OMAP2_CONTROL_MSUSPENDMUX_3 (OMAP2_CONTROL_GENERAL + 0x002c)
68 #define OMAP2_CONTROL_MSUSPENDMUX_4 (OMAP2_CONTROL_GENERAL + 0x0030) 68 #define OMAP2_CONTROL_MSUSPENDMUX_4 (OMAP2_CONTROL_GENERAL + 0x0030)
69 #define OMAP2_CONTROL_MSUSPENDMUX_5 (OMAP2_CONTROL_GENERAL + 0x0034) 69 #define OMAP2_CONTROL_MSUSPENDMUX_5 (OMAP2_CONTROL_GENERAL + 0x0034)
70 #define OMAP2_CONTROL_SEC_CTRL (OMAP2_CONTROL_GENERAL + 0x0040) 70 #define OMAP2_CONTROL_SEC_CTRL (OMAP2_CONTROL_GENERAL + 0x0040)
71 #define OMAP2_CONTROL_RPUB_KEY_H_0 (OMAP2_CONTROL_GENERAL + 0x0090) 71 #define OMAP2_CONTROL_RPUB_KEY_H_0 (OMAP2_CONTROL_GENERAL + 0x0090)
72 #define OMAP2_CONTROL_RPUB_KEY_H_1 (OMAP2_CONTROL_GENERAL + 0x0094) 72 #define OMAP2_CONTROL_RPUB_KEY_H_1 (OMAP2_CONTROL_GENERAL + 0x0094)
73 #define OMAP2_CONTROL_RPUB_KEY_H_2 (OMAP2_CONTROL_GENERAL + 0x0098) 73 #define OMAP2_CONTROL_RPUB_KEY_H_2 (OMAP2_CONTROL_GENERAL + 0x0098)
74 #define OMAP2_CONTROL_RPUB_KEY_H_3 (OMAP2_CONTROL_GENERAL + 0x009c) 74 #define OMAP2_CONTROL_RPUB_KEY_H_3 (OMAP2_CONTROL_GENERAL + 0x009c)
75 75
76 /* 242x-only CONTROL_GENERAL register offsets */ 76 /* 242x-only CONTROL_GENERAL register offsets */
77 #define OMAP242X_CONTROL_DEVCONF OMAP2_CONTROL_DEVCONF0 /* match TRM */ 77 #define OMAP242X_CONTROL_DEVCONF OMAP2_CONTROL_DEVCONF0 /* match TRM */
78 #define OMAP242X_CONTROL_OCM_RAM_PERM (OMAP2_CONTROL_GENERAL + 0x0068) 78 #define OMAP242X_CONTROL_OCM_RAM_PERM (OMAP2_CONTROL_GENERAL + 0x0068)
79 79
80 /* 243x-only CONTROL_GENERAL register offsets */ 80 /* 243x-only CONTROL_GENERAL register offsets */
81 /* CONTROL_IVA2_BOOT{ADDR,MOD} are at the same place on 343x - noted below */ 81 /* CONTROL_IVA2_BOOT{ADDR,MOD} are at the same place on 343x - noted below */
82 #define OMAP243X_CONTROL_DEVCONF1 (OMAP2_CONTROL_GENERAL + 0x0078) 82 #define OMAP243X_CONTROL_DEVCONF1 (OMAP2_CONTROL_GENERAL + 0x0078)
83 #define OMAP243X_CONTROL_CSIRXFE (OMAP2_CONTROL_GENERAL + 0x007c) 83 #define OMAP243X_CONTROL_CSIRXFE (OMAP2_CONTROL_GENERAL + 0x007c)
84 #define OMAP243X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190) 84 #define OMAP243X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190)
85 #define OMAP243X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194) 85 #define OMAP243X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194)
86 #define OMAP243X_CONTROL_IVA2_GEMCFG (OMAP2_CONTROL_GENERAL + 0x0198) 86 #define OMAP243X_CONTROL_IVA2_GEMCFG (OMAP2_CONTROL_GENERAL + 0x0198)
87 #define OMAP243X_CONTROL_PBIAS_LITE (OMAP2_CONTROL_GENERAL + 0x0230) 87 #define OMAP243X_CONTROL_PBIAS_LITE (OMAP2_CONTROL_GENERAL + 0x0230)
88 88
89 /* 24xx-only CONTROL_GENERAL register offsets */ 89 /* 24xx-only CONTROL_GENERAL register offsets */
90 #define OMAP24XX_CONTROL_DEBOBS (OMAP2_CONTROL_GENERAL + 0x0000) 90 #define OMAP24XX_CONTROL_DEBOBS (OMAP2_CONTROL_GENERAL + 0x0000)
91 #define OMAP24XX_CONTROL_EMU_SUPPORT (OMAP2_CONTROL_GENERAL + 0x0008) 91 #define OMAP24XX_CONTROL_EMU_SUPPORT (OMAP2_CONTROL_GENERAL + 0x0008)
92 #define OMAP24XX_CONTROL_SEC_TEST (OMAP2_CONTROL_GENERAL + 0x0044) 92 #define OMAP24XX_CONTROL_SEC_TEST (OMAP2_CONTROL_GENERAL + 0x0044)
93 #define OMAP24XX_CONTROL_PSA_CTRL (OMAP2_CONTROL_GENERAL + 0x0048) 93 #define OMAP24XX_CONTROL_PSA_CTRL (OMAP2_CONTROL_GENERAL + 0x0048)
94 #define OMAP24XX_CONTROL_PSA_CMD (OMAP2_CONTROL_GENERAL + 0x004c) 94 #define OMAP24XX_CONTROL_PSA_CMD (OMAP2_CONTROL_GENERAL + 0x004c)
95 #define OMAP24XX_CONTROL_PSA_VALUE (OMAP2_CONTROL_GENERAL + 0x0050) 95 #define OMAP24XX_CONTROL_PSA_VALUE (OMAP2_CONTROL_GENERAL + 0x0050)
96 #define OMAP24XX_CONTROL_SEC_EMU (OMAP2_CONTROL_GENERAL + 0x0060) 96 #define OMAP24XX_CONTROL_SEC_EMU (OMAP2_CONTROL_GENERAL + 0x0060)
97 #define OMAP24XX_CONTROL_SEC_TAP (OMAP2_CONTROL_GENERAL + 0x0064) 97 #define OMAP24XX_CONTROL_SEC_TAP (OMAP2_CONTROL_GENERAL + 0x0064)
98 #define OMAP24XX_CONTROL_OCM_PUB_RAM_ADD (OMAP2_CONTROL_GENERAL + 0x006c) 98 #define OMAP24XX_CONTROL_OCM_PUB_RAM_ADD (OMAP2_CONTROL_GENERAL + 0x006c)
99 #define OMAP24XX_CONTROL_EXT_SEC_RAM_START_ADD (OMAP2_CONTROL_GENERAL + 0x0070) 99 #define OMAP24XX_CONTROL_EXT_SEC_RAM_START_ADD (OMAP2_CONTROL_GENERAL + 0x0070)
100 #define OMAP24XX_CONTROL_EXT_SEC_RAM_STOP_ADD (OMAP2_CONTROL_GENERAL + 0x0074) 100 #define OMAP24XX_CONTROL_EXT_SEC_RAM_STOP_ADD (OMAP2_CONTROL_GENERAL + 0x0074)
101 #define OMAP24XX_CONTROL_SEC_STATUS (OMAP2_CONTROL_GENERAL + 0x0080) 101 #define OMAP24XX_CONTROL_SEC_STATUS (OMAP2_CONTROL_GENERAL + 0x0080)
102 #define OMAP24XX_CONTROL_SEC_ERR_STATUS (OMAP2_CONTROL_GENERAL + 0x0084) 102 #define OMAP24XX_CONTROL_SEC_ERR_STATUS (OMAP2_CONTROL_GENERAL + 0x0084)
103 #define OMAP24XX_CONTROL_STATUS (OMAP2_CONTROL_GENERAL + 0x0088) 103 #define OMAP24XX_CONTROL_STATUS (OMAP2_CONTROL_GENERAL + 0x0088)
104 #define OMAP24XX_CONTROL_GENERAL_PURPOSE_STATUS (OMAP2_CONTROL_GENERAL + 0x008c) 104 #define OMAP24XX_CONTROL_GENERAL_PURPOSE_STATUS (OMAP2_CONTROL_GENERAL + 0x008c)
105 #define OMAP24XX_CONTROL_RAND_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00a0) 105 #define OMAP24XX_CONTROL_RAND_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00a0)
106 #define OMAP24XX_CONTROL_RAND_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00a4) 106 #define OMAP24XX_CONTROL_RAND_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00a4)
107 #define OMAP24XX_CONTROL_RAND_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00a8) 107 #define OMAP24XX_CONTROL_RAND_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00a8)
108 #define OMAP24XX_CONTROL_RAND_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00ac) 108 #define OMAP24XX_CONTROL_RAND_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00ac)
109 #define OMAP24XX_CONTROL_CUST_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00b0) 109 #define OMAP24XX_CONTROL_CUST_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00b0)
110 #define OMAP24XX_CONTROL_CUST_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00b4) 110 #define OMAP24XX_CONTROL_CUST_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00b4)
111 #define OMAP24XX_CONTROL_TEST_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00c0) 111 #define OMAP24XX_CONTROL_TEST_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00c0)
112 #define OMAP24XX_CONTROL_TEST_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00c4) 112 #define OMAP24XX_CONTROL_TEST_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00c4)
113 #define OMAP24XX_CONTROL_TEST_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00c8) 113 #define OMAP24XX_CONTROL_TEST_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00c8)
114 #define OMAP24XX_CONTROL_TEST_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00cc) 114 #define OMAP24XX_CONTROL_TEST_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00cc)
115 #define OMAP24XX_CONTROL_TEST_KEY_4 (OMAP2_CONTROL_GENERAL + 0x00d0) 115 #define OMAP24XX_CONTROL_TEST_KEY_4 (OMAP2_CONTROL_GENERAL + 0x00d0)
116 #define OMAP24XX_CONTROL_TEST_KEY_5 (OMAP2_CONTROL_GENERAL + 0x00d4) 116 #define OMAP24XX_CONTROL_TEST_KEY_5 (OMAP2_CONTROL_GENERAL + 0x00d4)
117 #define OMAP24XX_CONTROL_TEST_KEY_6 (OMAP2_CONTROL_GENERAL + 0x00d8) 117 #define OMAP24XX_CONTROL_TEST_KEY_6 (OMAP2_CONTROL_GENERAL + 0x00d8)
118 #define OMAP24XX_CONTROL_TEST_KEY_7 (OMAP2_CONTROL_GENERAL + 0x00dc) 118 #define OMAP24XX_CONTROL_TEST_KEY_7 (OMAP2_CONTROL_GENERAL + 0x00dc)
119 #define OMAP24XX_CONTROL_TEST_KEY_8 (OMAP2_CONTROL_GENERAL + 0x00e0) 119 #define OMAP24XX_CONTROL_TEST_KEY_8 (OMAP2_CONTROL_GENERAL + 0x00e0)
120 #define OMAP24XX_CONTROL_TEST_KEY_9 (OMAP2_CONTROL_GENERAL + 0x00e4) 120 #define OMAP24XX_CONTROL_TEST_KEY_9 (OMAP2_CONTROL_GENERAL + 0x00e4)
121 121
122 #define OMAP343X_CONTROL_PADCONF_SYSNIRQ (OMAP2_CONTROL_INTERFACE + 0x01b0) 122 #define OMAP343X_CONTROL_PADCONF_SYSNIRQ (OMAP2_CONTROL_INTERFACE + 0x01b0)
123 123
124 /* 34xx-only CONTROL_GENERAL register offsets */ 124 /* 34xx-only CONTROL_GENERAL register offsets */
125 #define OMAP343X_CONTROL_PADCONF_OFF (OMAP2_CONTROL_GENERAL + 0x0000) 125 #define OMAP343X_CONTROL_PADCONF_OFF (OMAP2_CONTROL_GENERAL + 0x0000)
126 #define OMAP343X_CONTROL_MEM_DFTRW0 (OMAP2_CONTROL_GENERAL + 0x0008) 126 #define OMAP343X_CONTROL_MEM_DFTRW0 (OMAP2_CONTROL_GENERAL + 0x0008)
127 #define OMAP343X_CONTROL_MEM_DFTRW1 (OMAP2_CONTROL_GENERAL + 0x000c) 127 #define OMAP343X_CONTROL_MEM_DFTRW1 (OMAP2_CONTROL_GENERAL + 0x000c)
128 #define OMAP343X_CONTROL_DEVCONF1 (OMAP2_CONTROL_GENERAL + 0x0068) 128 #define OMAP343X_CONTROL_DEVCONF1 (OMAP2_CONTROL_GENERAL + 0x0068)
129 #define OMAP343X_CONTROL_CSIRXFE (OMAP2_CONTROL_GENERAL + 0x006c) 129 #define OMAP343X_CONTROL_CSIRXFE (OMAP2_CONTROL_GENERAL + 0x006c)
130 #define OMAP343X_CONTROL_SEC_STATUS (OMAP2_CONTROL_GENERAL + 0x0070) 130 #define OMAP343X_CONTROL_SEC_STATUS (OMAP2_CONTROL_GENERAL + 0x0070)
131 #define OMAP343X_CONTROL_SEC_ERR_STATUS (OMAP2_CONTROL_GENERAL + 0x0074) 131 #define OMAP343X_CONTROL_SEC_ERR_STATUS (OMAP2_CONTROL_GENERAL + 0x0074)
132 #define OMAP343X_CONTROL_SEC_ERR_STATUS_DEBUG (OMAP2_CONTROL_GENERAL + 0x0078) 132 #define OMAP343X_CONTROL_SEC_ERR_STATUS_DEBUG (OMAP2_CONTROL_GENERAL + 0x0078)
133 #define OMAP343X_CONTROL_STATUS (OMAP2_CONTROL_GENERAL + 0x0080) 133 #define OMAP343X_CONTROL_STATUS (OMAP2_CONTROL_GENERAL + 0x0080)
134 #define OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS (OMAP2_CONTROL_GENERAL + 0x0084) 134 #define OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS (OMAP2_CONTROL_GENERAL + 0x0084)
135 #define OMAP343X_CONTROL_RPUB_KEY_H_4 (OMAP2_CONTROL_GENERAL + 0x00a0) 135 #define OMAP343X_CONTROL_RPUB_KEY_H_4 (OMAP2_CONTROL_GENERAL + 0x00a0)
136 #define OMAP343X_CONTROL_RAND_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00a8) 136 #define OMAP343X_CONTROL_RAND_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00a8)
137 #define OMAP343X_CONTROL_RAND_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00ac) 137 #define OMAP343X_CONTROL_RAND_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00ac)
138 #define OMAP343X_CONTROL_RAND_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00b0) 138 #define OMAP343X_CONTROL_RAND_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00b0)
139 #define OMAP343X_CONTROL_RAND_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00b4) 139 #define OMAP343X_CONTROL_RAND_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00b4)
140 #define OMAP343X_CONTROL_TEST_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00c8) 140 #define OMAP343X_CONTROL_TEST_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00c8)
141 #define OMAP343X_CONTROL_TEST_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00cc) 141 #define OMAP343X_CONTROL_TEST_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00cc)
142 #define OMAP343X_CONTROL_TEST_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00d0) 142 #define OMAP343X_CONTROL_TEST_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00d0)
143 #define OMAP343X_CONTROL_TEST_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00d4) 143 #define OMAP343X_CONTROL_TEST_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00d4)
144 #define OMAP343X_CONTROL_TEST_KEY_4 (OMAP2_CONTROL_GENERAL + 0x00d8) 144 #define OMAP343X_CONTROL_TEST_KEY_4 (OMAP2_CONTROL_GENERAL + 0x00d8)
145 #define OMAP343X_CONTROL_TEST_KEY_5 (OMAP2_CONTROL_GENERAL + 0x00dc) 145 #define OMAP343X_CONTROL_TEST_KEY_5 (OMAP2_CONTROL_GENERAL + 0x00dc)
146 #define OMAP343X_CONTROL_TEST_KEY_6 (OMAP2_CONTROL_GENERAL + 0x00e0) 146 #define OMAP343X_CONTROL_TEST_KEY_6 (OMAP2_CONTROL_GENERAL + 0x00e0)
147 #define OMAP343X_CONTROL_TEST_KEY_7 (OMAP2_CONTROL_GENERAL + 0x00e4) 147 #define OMAP343X_CONTROL_TEST_KEY_7 (OMAP2_CONTROL_GENERAL + 0x00e4)
148 #define OMAP343X_CONTROL_TEST_KEY_8 (OMAP2_CONTROL_GENERAL + 0x00e8) 148 #define OMAP343X_CONTROL_TEST_KEY_8 (OMAP2_CONTROL_GENERAL + 0x00e8)
149 #define OMAP343X_CONTROL_TEST_KEY_9 (OMAP2_CONTROL_GENERAL + 0x00ec) 149 #define OMAP343X_CONTROL_TEST_KEY_9 (OMAP2_CONTROL_GENERAL + 0x00ec)
150 #define OMAP343X_CONTROL_TEST_KEY_10 (OMAP2_CONTROL_GENERAL + 0x00f0) 150 #define OMAP343X_CONTROL_TEST_KEY_10 (OMAP2_CONTROL_GENERAL + 0x00f0)
151 #define OMAP343X_CONTROL_TEST_KEY_11 (OMAP2_CONTROL_GENERAL + 0x00f4) 151 #define OMAP343X_CONTROL_TEST_KEY_11 (OMAP2_CONTROL_GENERAL + 0x00f4)
152 #define OMAP343X_CONTROL_TEST_KEY_12 (OMAP2_CONTROL_GENERAL + 0x00f8) 152 #define OMAP343X_CONTROL_TEST_KEY_12 (OMAP2_CONTROL_GENERAL + 0x00f8)
153 #define OMAP343X_CONTROL_TEST_KEY_13 (OMAP2_CONTROL_GENERAL + 0x00fc) 153 #define OMAP343X_CONTROL_TEST_KEY_13 (OMAP2_CONTROL_GENERAL + 0x00fc)
154 #define OMAP343X_CONTROL_FUSE_OPP1_VDD1 (OMAP2_CONTROL_GENERAL + 0x0110) 154 #define OMAP343X_CONTROL_FUSE_OPP1_VDD1 (OMAP2_CONTROL_GENERAL + 0x0110)
155 #define OMAP343X_CONTROL_FUSE_OPP2_VDD1 (OMAP2_CONTROL_GENERAL + 0x0114) 155 #define OMAP343X_CONTROL_FUSE_OPP2_VDD1 (OMAP2_CONTROL_GENERAL + 0x0114)
156 #define OMAP343X_CONTROL_FUSE_OPP3_VDD1 (OMAP2_CONTROL_GENERAL + 0x0118) 156 #define OMAP343X_CONTROL_FUSE_OPP3_VDD1 (OMAP2_CONTROL_GENERAL + 0x0118)
157 #define OMAP343X_CONTROL_FUSE_OPP4_VDD1 (OMAP2_CONTROL_GENERAL + 0x011c) 157 #define OMAP343X_CONTROL_FUSE_OPP4_VDD1 (OMAP2_CONTROL_GENERAL + 0x011c)
158 #define OMAP343X_CONTROL_FUSE_OPP5_VDD1 (OMAP2_CONTROL_GENERAL + 0x0120) 158 #define OMAP343X_CONTROL_FUSE_OPP5_VDD1 (OMAP2_CONTROL_GENERAL + 0x0120)
159 #define OMAP343X_CONTROL_FUSE_OPP1_VDD2 (OMAP2_CONTROL_GENERAL + 0x0124) 159 #define OMAP343X_CONTROL_FUSE_OPP1_VDD2 (OMAP2_CONTROL_GENERAL + 0x0124)
160 #define OMAP343X_CONTROL_FUSE_OPP2_VDD2 (OMAP2_CONTROL_GENERAL + 0x0128) 160 #define OMAP343X_CONTROL_FUSE_OPP2_VDD2 (OMAP2_CONTROL_GENERAL + 0x0128)
161 #define OMAP343X_CONTROL_FUSE_OPP3_VDD2 (OMAP2_CONTROL_GENERAL + 0x012c) 161 #define OMAP343X_CONTROL_FUSE_OPP3_VDD2 (OMAP2_CONTROL_GENERAL + 0x012c)
162 #define OMAP343X_CONTROL_FUSE_SR (OMAP2_CONTROL_GENERAL + 0x0130) 162 #define OMAP343X_CONTROL_FUSE_SR (OMAP2_CONTROL_GENERAL + 0x0130)
163 #define OMAP343X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190) 163 #define OMAP343X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190)
164 #define OMAP343X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194) 164 #define OMAP343X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194)
165 #define OMAP343X_CONTROL_DEBOBS(i) (OMAP2_CONTROL_GENERAL + 0x01B0 \ 165 #define OMAP343X_CONTROL_DEBOBS(i) (OMAP2_CONTROL_GENERAL + 0x01B0 \
166 + ((i) >> 1) * 4 + (!((i) & 1)) * 2) 166 + ((i) >> 1) * 4 + (!((i) & 1)) * 2)
167 #define OMAP343X_CONTROL_PROG_IO0 (OMAP2_CONTROL_GENERAL + 0x01D4) 167 #define OMAP343X_CONTROL_PROG_IO0 (OMAP2_CONTROL_GENERAL + 0x01D4)
168 #define OMAP343X_CONTROL_PROG_IO1 (OMAP2_CONTROL_GENERAL + 0x01D8) 168 #define OMAP343X_CONTROL_PROG_IO1 (OMAP2_CONTROL_GENERAL + 0x01D8)
169 #define OMAP343X_CONTROL_DSS_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01E0) 169 #define OMAP343X_CONTROL_DSS_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01E0)
170 #define OMAP343X_CONTROL_CORE_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01E4) 170 #define OMAP343X_CONTROL_CORE_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01E4)
171 #define OMAP343X_CONTROL_PER_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01E8) 171 #define OMAP343X_CONTROL_PER_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01E8)
172 #define OMAP343X_CONTROL_USBHOST_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01EC) 172 #define OMAP343X_CONTROL_USBHOST_DPLL_SPREADING (OMAP2_CONTROL_GENERAL + 0x01EC)
173 #define OMAP343X_CONTROL_PBIAS_LITE (OMAP2_CONTROL_GENERAL + 0x02B0) 173 #define OMAP343X_CONTROL_PBIAS_LITE (OMAP2_CONTROL_GENERAL + 0x02B0)
174 #define OMAP343X_CONTROL_TEMP_SENSOR (OMAP2_CONTROL_GENERAL + 0x02B4) 174 #define OMAP343X_CONTROL_TEMP_SENSOR (OMAP2_CONTROL_GENERAL + 0x02B4)
175 #define OMAP343X_CONTROL_SRAMLDO4 (OMAP2_CONTROL_GENERAL + 0x02B8) 175 #define OMAP343X_CONTROL_SRAMLDO4 (OMAP2_CONTROL_GENERAL + 0x02B8)
176 #define OMAP343X_CONTROL_SRAMLDO5 (OMAP2_CONTROL_GENERAL + 0x02C0) 176 #define OMAP343X_CONTROL_SRAMLDO5 (OMAP2_CONTROL_GENERAL + 0x02C0)
177 #define OMAP343X_CONTROL_CSI (OMAP2_CONTROL_GENERAL + 0x02C4) 177 #define OMAP343X_CONTROL_CSI (OMAP2_CONTROL_GENERAL + 0x02C4)
178 178
179 /* OMAP3630 only CONTROL_GENERAL register offsets */ 179 /* OMAP3630 only CONTROL_GENERAL register offsets */
180 #define OMAP3630_CONTROL_FUSE_OPP1G_VDD1 (OMAP2_CONTROL_GENERAL + 0x0110) 180 #define OMAP3630_CONTROL_FUSE_OPP1G_VDD1 (OMAP2_CONTROL_GENERAL + 0x0110)
181 #define OMAP3630_CONTROL_FUSE_OPP50_VDD1 (OMAP2_CONTROL_GENERAL + 0x0114) 181 #define OMAP3630_CONTROL_FUSE_OPP50_VDD1 (OMAP2_CONTROL_GENERAL + 0x0114)
182 #define OMAP3630_CONTROL_FUSE_OPP100_VDD1 (OMAP2_CONTROL_GENERAL + 0x0118) 182 #define OMAP3630_CONTROL_FUSE_OPP100_VDD1 (OMAP2_CONTROL_GENERAL + 0x0118)
183 #define OMAP3630_CONTROL_FUSE_OPP120_VDD1 (OMAP2_CONTROL_GENERAL + 0x0120) 183 #define OMAP3630_CONTROL_FUSE_OPP120_VDD1 (OMAP2_CONTROL_GENERAL + 0x0120)
184 #define OMAP3630_CONTROL_FUSE_OPP50_VDD2 (OMAP2_CONTROL_GENERAL + 0x0128) 184 #define OMAP3630_CONTROL_FUSE_OPP50_VDD2 (OMAP2_CONTROL_GENERAL + 0x0128)
185 #define OMAP3630_CONTROL_FUSE_OPP100_VDD2 (OMAP2_CONTROL_GENERAL + 0x012C) 185 #define OMAP3630_CONTROL_FUSE_OPP100_VDD2 (OMAP2_CONTROL_GENERAL + 0x012C)
186 #define OMAP3630_CONTROL_CAMERA_PHY_CTRL (OMAP2_CONTROL_GENERAL + 0x02f0) 186 #define OMAP3630_CONTROL_CAMERA_PHY_CTRL (OMAP2_CONTROL_GENERAL + 0x02f0)
187 187
188 /* OMAP44xx control efuse offsets */ 188 /* OMAP44xx control efuse offsets */
189 #define OMAP44XX_CONTROL_FUSE_IVA_OPP50 0x22C 189 #define OMAP44XX_CONTROL_FUSE_IVA_OPP50 0x22C
190 #define OMAP44XX_CONTROL_FUSE_IVA_OPP100 0x22F 190 #define OMAP44XX_CONTROL_FUSE_IVA_OPP100 0x22F
191 #define OMAP44XX_CONTROL_FUSE_IVA_OPPTURBO 0x232 191 #define OMAP44XX_CONTROL_FUSE_IVA_OPPTURBO 0x232
192 #define OMAP44XX_CONTROL_FUSE_IVA_OPPNITRO 0x235 192 #define OMAP44XX_CONTROL_FUSE_IVA_OPPNITRO 0x235
193 #define OMAP44XX_CONTROL_FUSE_MPU_OPP50 0x240 193 #define OMAP44XX_CONTROL_FUSE_MPU_OPP50 0x240
194 #define OMAP44XX_CONTROL_FUSE_MPU_OPP100 0x243 194 #define OMAP44XX_CONTROL_FUSE_MPU_OPP100 0x243
195 #define OMAP44XX_CONTROL_FUSE_MPU_OPPTURBO 0x246 195 #define OMAP44XX_CONTROL_FUSE_MPU_OPPTURBO 0x246
196 #define OMAP44XX_CONTROL_FUSE_MPU_OPPNITRO 0x249 196 #define OMAP44XX_CONTROL_FUSE_MPU_OPPNITRO 0x249
197 #define OMAP44XX_CONTROL_FUSE_CORE_OPP50 0x254 197 #define OMAP44XX_CONTROL_FUSE_CORE_OPP50 0x254
198 #define OMAP44XX_CONTROL_FUSE_CORE_OPP100 0x257 198 #define OMAP44XX_CONTROL_FUSE_CORE_OPP100 0x257
199 #define OMAP44XX_CONTROL_FUSE_CORE_OPP100OV 0x25A 199 #define OMAP44XX_CONTROL_FUSE_CORE_OPP100OV 0x25A
200 200
201 /* AM35XX only CONTROL_GENERAL register offsets */ 201 /* AM35XX only CONTROL_GENERAL register offsets */
202 #define AM35XX_CONTROL_MSUSPENDMUX_6 (OMAP2_CONTROL_GENERAL + 0x0038) 202 #define AM35XX_CONTROL_MSUSPENDMUX_6 (OMAP2_CONTROL_GENERAL + 0x0038)
203 #define AM35XX_CONTROL_DEVCONF2 (OMAP2_CONTROL_GENERAL + 0x0310) 203 #define AM35XX_CONTROL_DEVCONF2 (OMAP2_CONTROL_GENERAL + 0x0310)
204 #define AM35XX_CONTROL_DEVCONF3 (OMAP2_CONTROL_GENERAL + 0x0314) 204 #define AM35XX_CONTROL_DEVCONF3 (OMAP2_CONTROL_GENERAL + 0x0314)
205 #define AM35XX_CONTROL_CBA_PRIORITY (OMAP2_CONTROL_GENERAL + 0x0320) 205 #define AM35XX_CONTROL_CBA_PRIORITY (OMAP2_CONTROL_GENERAL + 0x0320)
206 #define AM35XX_CONTROL_LVL_INTR_CLEAR (OMAP2_CONTROL_GENERAL + 0x0324) 206 #define AM35XX_CONTROL_LVL_INTR_CLEAR (OMAP2_CONTROL_GENERAL + 0x0324)
207 #define AM35XX_CONTROL_IP_SW_RESET (OMAP2_CONTROL_GENERAL + 0x0328) 207 #define AM35XX_CONTROL_IP_SW_RESET (OMAP2_CONTROL_GENERAL + 0x0328)
208 #define AM35XX_CONTROL_IPSS_CLK_CTRL (OMAP2_CONTROL_GENERAL + 0x032C) 208 #define AM35XX_CONTROL_IPSS_CLK_CTRL (OMAP2_CONTROL_GENERAL + 0x032C)
209 209
210 /* 34xx PADCONF register offsets */ 210 /* 34xx PADCONF register offsets */
211 #define OMAP343X_PADCONF_ETK(i) (OMAP2_CONTROL_PADCONFS + 0x5a8 + \ 211 #define OMAP343X_PADCONF_ETK(i) (OMAP2_CONTROL_PADCONFS + 0x5a8 + \
212 (i)*2) 212 (i)*2)
213 #define OMAP343X_PADCONF_ETK_CLK OMAP343X_PADCONF_ETK(0) 213 #define OMAP343X_PADCONF_ETK_CLK OMAP343X_PADCONF_ETK(0)
214 #define OMAP343X_PADCONF_ETK_CTL OMAP343X_PADCONF_ETK(1) 214 #define OMAP343X_PADCONF_ETK_CTL OMAP343X_PADCONF_ETK(1)
215 #define OMAP343X_PADCONF_ETK_D0 OMAP343X_PADCONF_ETK(2) 215 #define OMAP343X_PADCONF_ETK_D0 OMAP343X_PADCONF_ETK(2)
216 #define OMAP343X_PADCONF_ETK_D1 OMAP343X_PADCONF_ETK(3) 216 #define OMAP343X_PADCONF_ETK_D1 OMAP343X_PADCONF_ETK(3)
217 #define OMAP343X_PADCONF_ETK_D2 OMAP343X_PADCONF_ETK(4) 217 #define OMAP343X_PADCONF_ETK_D2 OMAP343X_PADCONF_ETK(4)
218 #define OMAP343X_PADCONF_ETK_D3 OMAP343X_PADCONF_ETK(5) 218 #define OMAP343X_PADCONF_ETK_D3 OMAP343X_PADCONF_ETK(5)
219 #define OMAP343X_PADCONF_ETK_D4 OMAP343X_PADCONF_ETK(6) 219 #define OMAP343X_PADCONF_ETK_D4 OMAP343X_PADCONF_ETK(6)
220 #define OMAP343X_PADCONF_ETK_D5 OMAP343X_PADCONF_ETK(7) 220 #define OMAP343X_PADCONF_ETK_D5 OMAP343X_PADCONF_ETK(7)
221 #define OMAP343X_PADCONF_ETK_D6 OMAP343X_PADCONF_ETK(8) 221 #define OMAP343X_PADCONF_ETK_D6 OMAP343X_PADCONF_ETK(8)
222 #define OMAP343X_PADCONF_ETK_D7 OMAP343X_PADCONF_ETK(9) 222 #define OMAP343X_PADCONF_ETK_D7 OMAP343X_PADCONF_ETK(9)
223 #define OMAP343X_PADCONF_ETK_D8 OMAP343X_PADCONF_ETK(10) 223 #define OMAP343X_PADCONF_ETK_D8 OMAP343X_PADCONF_ETK(10)
224 #define OMAP343X_PADCONF_ETK_D9 OMAP343X_PADCONF_ETK(11) 224 #define OMAP343X_PADCONF_ETK_D9 OMAP343X_PADCONF_ETK(11)
225 #define OMAP343X_PADCONF_ETK_D10 OMAP343X_PADCONF_ETK(12) 225 #define OMAP343X_PADCONF_ETK_D10 OMAP343X_PADCONF_ETK(12)
226 #define OMAP343X_PADCONF_ETK_D11 OMAP343X_PADCONF_ETK(13) 226 #define OMAP343X_PADCONF_ETK_D11 OMAP343X_PADCONF_ETK(13)
227 #define OMAP343X_PADCONF_ETK_D12 OMAP343X_PADCONF_ETK(14) 227 #define OMAP343X_PADCONF_ETK_D12 OMAP343X_PADCONF_ETK(14)
228 #define OMAP343X_PADCONF_ETK_D13 OMAP343X_PADCONF_ETK(15) 228 #define OMAP343X_PADCONF_ETK_D13 OMAP343X_PADCONF_ETK(15)
229 #define OMAP343X_PADCONF_ETK_D14 OMAP343X_PADCONF_ETK(16) 229 #define OMAP343X_PADCONF_ETK_D14 OMAP343X_PADCONF_ETK(16)
230 #define OMAP343X_PADCONF_ETK_D15 OMAP343X_PADCONF_ETK(17) 230 #define OMAP343X_PADCONF_ETK_D15 OMAP343X_PADCONF_ETK(17)
231 231
232 /* 34xx GENERAL_WKUP register offsets */ 232 /* 34xx GENERAL_WKUP register offsets */
233 #define OMAP343X_CONTROL_WKUP_DEBOBSMUX(i) (OMAP343X_CONTROL_GENERAL_WKUP + \ 233 #define OMAP343X_CONTROL_WKUP_DEBOBSMUX(i) (OMAP343X_CONTROL_GENERAL_WKUP + \
234 0x008 + (i)) 234 0x008 + (i))
235 #define OMAP343X_CONTROL_WKUP_DEBOBS0 (OMAP343X_CONTROL_GENERAL_WKUP + 0x008) 235 #define OMAP343X_CONTROL_WKUP_DEBOBS0 (OMAP343X_CONTROL_GENERAL_WKUP + 0x008)
236 #define OMAP343X_CONTROL_WKUP_DEBOBS1 (OMAP343X_CONTROL_GENERAL_WKUP + 0x00C) 236 #define OMAP343X_CONTROL_WKUP_DEBOBS1 (OMAP343X_CONTROL_GENERAL_WKUP + 0x00C)
237 #define OMAP343X_CONTROL_WKUP_DEBOBS2 (OMAP343X_CONTROL_GENERAL_WKUP + 0x010) 237 #define OMAP343X_CONTROL_WKUP_DEBOBS2 (OMAP343X_CONTROL_GENERAL_WKUP + 0x010)
238 #define OMAP343X_CONTROL_WKUP_DEBOBS3 (OMAP343X_CONTROL_GENERAL_WKUP + 0x014) 238 #define OMAP343X_CONTROL_WKUP_DEBOBS3 (OMAP343X_CONTROL_GENERAL_WKUP + 0x014)
239 #define OMAP343X_CONTROL_WKUP_DEBOBS4 (OMAP343X_CONTROL_GENERAL_WKUP + 0x018) 239 #define OMAP343X_CONTROL_WKUP_DEBOBS4 (OMAP343X_CONTROL_GENERAL_WKUP + 0x018)
240 240
241 /* 36xx-only RTA - Retention till Access control registers and bits */ 241 /* 36xx-only RTA - Retention till Access control registers and bits */
242 #define OMAP36XX_CONTROL_MEM_RTA_CTRL 0x40C 242 #define OMAP36XX_CONTROL_MEM_RTA_CTRL 0x40C
243 #define OMAP36XX_RTA_DISABLE 0x0 243 #define OMAP36XX_RTA_DISABLE 0x0
244 244
245 /* 34xx D2D idle-related pins, handled by PM core */ 245 /* 34xx D2D idle-related pins, handled by PM core */
246 #define OMAP3_PADCONF_SAD2D_MSTANDBY 0x250 246 #define OMAP3_PADCONF_SAD2D_MSTANDBY 0x250
247 #define OMAP3_PADCONF_SAD2D_IDLEACK 0x254 247 #define OMAP3_PADCONF_SAD2D_IDLEACK 0x254
248 248
249 /* TI81XX CONTROL_DEVCONF register offsets */ 249 /* TI81XX CONTROL_DEVCONF register offsets */
250 #define TI81XX_CONTROL_DEVICE_ID (TI81XX_CONTROL_DEVCONF + 0x000) 250 #define TI81XX_CONTROL_DEVICE_ID (TI81XX_CONTROL_DEVCONF + 0x000)
251 251
252 /* OMAP4 CONTROL MODULE */ 252 /* OMAP4 CONTROL MODULE */
253 #define OMAP4_CTRL_MODULE_PAD_WKUP 0x4a31e000 253 #define OMAP4_CTRL_MODULE_PAD_WKUP 0x4a31e000
254 #define OMAP4_CTRL_MODULE_PAD_WKUP_CONTROL_I2C_2 0x0604 254 #define OMAP4_CTRL_MODULE_PAD_WKUP_CONTROL_I2C_2 0x0604
255 #define OMAP4_CTRL_MODULE_CORE_STATUS 0x02c4 255 #define OMAP4_CTRL_MODULE_CORE_STATUS 0x02c4
256 #define OMAP4_CTRL_MODULE_CORE_STD_FUSE_PROD_ID_1 0x0218 256 #define OMAP4_CTRL_MODULE_CORE_STD_FUSE_PROD_ID_1 0x0218
257 #define OMAP4_CTRL_MODULE_CORE_DSP_BOOTADDR 0x0304 257 #define OMAP4_CTRL_MODULE_CORE_DSP_BOOTADDR 0x0304
258 #define OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY 0x0618 258 #define OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY 0x0618
259 #define OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX 0x0608 259 #define OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_CAMERA_RX 0x0608
260 260
261 /* OMAP4 CONTROL_DSIPHY */ 261 /* OMAP4 CONTROL_DSIPHY */
262 #define OMAP4_DSI2_LANEENABLE_SHIFT 29 262 #define OMAP4_DSI2_LANEENABLE_SHIFT 29
263 #define OMAP4_DSI2_LANEENABLE_MASK (0x7 << 29) 263 #define OMAP4_DSI2_LANEENABLE_MASK (0x7 << 29)
264 #define OMAP4_DSI1_LANEENABLE_SHIFT 24 264 #define OMAP4_DSI1_LANEENABLE_SHIFT 24
265 #define OMAP4_DSI1_LANEENABLE_MASK (0x1f << 24) 265 #define OMAP4_DSI1_LANEENABLE_MASK (0x1f << 24)
266 #define OMAP4_DSI1_PIPD_SHIFT 19 266 #define OMAP4_DSI1_PIPD_SHIFT 19
267 #define OMAP4_DSI1_PIPD_MASK (0x1f << 19) 267 #define OMAP4_DSI1_PIPD_MASK (0x1f << 19)
268 #define OMAP4_DSI2_PIPD_SHIFT 14 268 #define OMAP4_DSI2_PIPD_SHIFT 14
269 #define OMAP4_DSI2_PIPD_MASK (0x1f << 14) 269 #define OMAP4_DSI2_PIPD_MASK (0x1f << 14)
270 270
271 /* OMAP4 CONTROL_CAMERA_RX */ 271 /* OMAP4 CONTROL_CAMERA_RX */
272 #define OMAP4_CAMERARX_CSI21_LANEENABLE_SHIFT 24 272 #define OMAP4_CAMERARX_CSI21_LANEENABLE_SHIFT 24
273 #define OMAP4_CAMERARX_CSI21_LANEENABLE_MASK (0x1f << 24) 273 #define OMAP4_CAMERARX_CSI21_LANEENABLE_MASK (0x1f << 24)
274 #define OMAP4_CAMERARX_CSI22_LANEENABLE_SHIFT 29 274 #define OMAP4_CAMERARX_CSI22_LANEENABLE_SHIFT 29
275 #define OMAP4_CAMERARX_CSI22_LANEENABLE_MASK (0x3 << 29) 275 #define OMAP4_CAMERARX_CSI22_LANEENABLE_MASK (0x3 << 29)
276 #define OMAP4_CAMERARX_CSI22_CTRLCLKEN_SHIFT 21 276 #define OMAP4_CAMERARX_CSI22_CTRLCLKEN_SHIFT 21
277 #define OMAP4_CAMERARX_CSI22_CTRLCLKEN_MASK (1 << 21) 277 #define OMAP4_CAMERARX_CSI22_CTRLCLKEN_MASK (1 << 21)
278 #define OMAP4_CAMERARX_CSI22_CAMMODE_SHIFT 19 278 #define OMAP4_CAMERARX_CSI22_CAMMODE_SHIFT 19
279 #define OMAP4_CAMERARX_CSI22_CAMMODE_MASK (0x3 << 19) 279 #define OMAP4_CAMERARX_CSI22_CAMMODE_MASK (0x3 << 19)
280 #define OMAP4_CAMERARX_CSI21_CTRLCLKEN_SHIFT 18 280 #define OMAP4_CAMERARX_CSI21_CTRLCLKEN_SHIFT 18
281 #define OMAP4_CAMERARX_CSI21_CTRLCLKEN_MASK (1 << 18) 281 #define OMAP4_CAMERARX_CSI21_CTRLCLKEN_MASK (1 << 18)
282 #define OMAP4_CAMERARX_CSI21_CAMMODE_SHIFT 16 282 #define OMAP4_CAMERARX_CSI21_CAMMODE_SHIFT 16
283 #define OMAP4_CAMERARX_CSI21_CAMMODE_MASK (0x3 << 16) 283 #define OMAP4_CAMERARX_CSI21_CAMMODE_MASK (0x3 << 16)
284 284
285 /* OMAP54XX CONTROL STATUS register */ 285 /* OMAP54XX CONTROL STATUS register */
286 #define OMAP5XXX_CONTROL_STATUS 0x134 286 #define OMAP5XXX_CONTROL_STATUS 0x134
287 #define OMAP5_DEVICETYPE_MASK (0x7 << 6) 287 #define OMAP5_DEVICETYPE_MASK (0x7 << 6)
288 288
289 /* DRA7XX CONTROL CORE BOOTSTRAP */
290 #define DRA7_CTRL_CORE_BOOTSTRAP 0x6c4
291 #define DRA7_SPEEDSELECT_MASK (0x3 << 8)
292
289 /* 293 /*
290 * REVISIT: This list of registers is not comprehensive - there are more 294 * REVISIT: This list of registers is not comprehensive - there are more
291 * that should be added. 295 * that should be added.
292 */ 296 */
293 297
294 /* 298 /*
295 * Control module register bit defines - these should eventually go into 299 * Control module register bit defines - these should eventually go into
296 * their own regbits file. Some of these will be complicated, depending 300 * their own regbits file. Some of these will be complicated, depending
297 * on the device type (general-purpose, emulator, test, secure, bad, other) 301 * on the device type (general-purpose, emulator, test, secure, bad, other)
298 * and the security mode (secure, non-secure, don't care) 302 * and the security mode (secure, non-secure, don't care)
299 */ 303 */
300 /* CONTROL_DEVCONF0 bits */ 304 /* CONTROL_DEVCONF0 bits */
301 #define OMAP2_MMCSDIO1ADPCLKISEL (1 << 24) /* MMC1 loop back clock */ 305 #define OMAP2_MMCSDIO1ADPCLKISEL (1 << 24) /* MMC1 loop back clock */
302 #define OMAP24XX_USBSTANDBYCTRL (1 << 15) 306 #define OMAP24XX_USBSTANDBYCTRL (1 << 15)
303 #define OMAP2_MCBSP2_CLKS_MASK (1 << 6) 307 #define OMAP2_MCBSP2_CLKS_MASK (1 << 6)
304 #define OMAP2_MCBSP1_FSR_MASK (1 << 4) 308 #define OMAP2_MCBSP1_FSR_MASK (1 << 4)
305 #define OMAP2_MCBSP1_CLKR_MASK (1 << 3) 309 #define OMAP2_MCBSP1_CLKR_MASK (1 << 3)
306 #define OMAP2_MCBSP1_CLKS_MASK (1 << 2) 310 #define OMAP2_MCBSP1_CLKS_MASK (1 << 2)
307 311
308 /* CONTROL_DEVCONF1 bits */ 312 /* CONTROL_DEVCONF1 bits */
309 #define OMAP243X_MMC1_ACTIVE_OVERWRITE (1 << 31) 313 #define OMAP243X_MMC1_ACTIVE_OVERWRITE (1 << 31)
310 #define OMAP2_MMCSDIO2ADPCLKISEL (1 << 6) /* MMC2 loop back clock */ 314 #define OMAP2_MMCSDIO2ADPCLKISEL (1 << 6) /* MMC2 loop back clock */
311 #define OMAP2_MCBSP5_CLKS_MASK (1 << 4) /* > 242x */ 315 #define OMAP2_MCBSP5_CLKS_MASK (1 << 4) /* > 242x */
312 #define OMAP2_MCBSP4_CLKS_MASK (1 << 2) /* > 242x */ 316 #define OMAP2_MCBSP4_CLKS_MASK (1 << 2) /* > 242x */
313 #define OMAP2_MCBSP3_CLKS_MASK (1 << 0) /* > 242x */ 317 #define OMAP2_MCBSP3_CLKS_MASK (1 << 0) /* > 242x */
314 318
315 /* CONTROL_STATUS bits */ 319 /* CONTROL_STATUS bits */
316 #define OMAP2_DEVICETYPE_MASK (0x7 << 8) 320 #define OMAP2_DEVICETYPE_MASK (0x7 << 8)
317 #define OMAP2_SYSBOOT_5_MASK (1 << 5) 321 #define OMAP2_SYSBOOT_5_MASK (1 << 5)
318 #define OMAP2_SYSBOOT_4_MASK (1 << 4) 322 #define OMAP2_SYSBOOT_4_MASK (1 << 4)
319 #define OMAP2_SYSBOOT_3_MASK (1 << 3) 323 #define OMAP2_SYSBOOT_3_MASK (1 << 3)
320 #define OMAP2_SYSBOOT_2_MASK (1 << 2) 324 #define OMAP2_SYSBOOT_2_MASK (1 << 2)
321 #define OMAP2_SYSBOOT_1_MASK (1 << 1) 325 #define OMAP2_SYSBOOT_1_MASK (1 << 1)
322 #define OMAP2_SYSBOOT_0_MASK (1 << 0) 326 #define OMAP2_SYSBOOT_0_MASK (1 << 0)
323 327
324 /* CONTROL_PBIAS_LITE bits */ 328 /* CONTROL_PBIAS_LITE bits */
325 #define OMAP343X_PBIASLITESUPPLY_HIGH1 (1 << 15) 329 #define OMAP343X_PBIASLITESUPPLY_HIGH1 (1 << 15)
326 #define OMAP343X_PBIASLITEVMODEERROR1 (1 << 11) 330 #define OMAP343X_PBIASLITEVMODEERROR1 (1 << 11)
327 #define OMAP343X_PBIASSPEEDCTRL1 (1 << 10) 331 #define OMAP343X_PBIASSPEEDCTRL1 (1 << 10)
328 #define OMAP343X_PBIASLITEPWRDNZ1 (1 << 9) 332 #define OMAP343X_PBIASLITEPWRDNZ1 (1 << 9)
329 #define OMAP343X_PBIASLITEVMODE1 (1 << 8) 333 #define OMAP343X_PBIASLITEVMODE1 (1 << 8)
330 #define OMAP343X_PBIASLITESUPPLY_HIGH0 (1 << 7) 334 #define OMAP343X_PBIASLITESUPPLY_HIGH0 (1 << 7)
331 #define OMAP343X_PBIASLITEVMODEERROR0 (1 << 3) 335 #define OMAP343X_PBIASLITEVMODEERROR0 (1 << 3)
332 #define OMAP2_PBIASSPEEDCTRL0 (1 << 2) 336 #define OMAP2_PBIASSPEEDCTRL0 (1 << 2)
333 #define OMAP2_PBIASLITEPWRDNZ0 (1 << 1) 337 #define OMAP2_PBIASLITEPWRDNZ0 (1 << 1)
334 #define OMAP2_PBIASLITEVMODE0 (1 << 0) 338 #define OMAP2_PBIASLITEVMODE0 (1 << 0)
335 339
336 /* CONTROL_PROG_IO1 bits */ 340 /* CONTROL_PROG_IO1 bits */
337 #define OMAP3630_PRG_SDMMC1_SPEEDCTRL (1 << 20) 341 #define OMAP3630_PRG_SDMMC1_SPEEDCTRL (1 << 20)
338 342
339 /* CONTROL_IVA2_BOOTMOD bits */ 343 /* CONTROL_IVA2_BOOTMOD bits */
340 #define OMAP3_IVA2_BOOTMOD_SHIFT 0 344 #define OMAP3_IVA2_BOOTMOD_SHIFT 0
341 #define OMAP3_IVA2_BOOTMOD_MASK (0xf << 0) 345 #define OMAP3_IVA2_BOOTMOD_MASK (0xf << 0)
342 #define OMAP3_IVA2_BOOTMOD_IDLE (0x1 << 0) 346 #define OMAP3_IVA2_BOOTMOD_IDLE (0x1 << 0)
343 347
344 /* CONTROL_PADCONF_X bits */ 348 /* CONTROL_PADCONF_X bits */
345 #define OMAP3_PADCONF_WAKEUPEVENT0 (1 << 15) 349 #define OMAP3_PADCONF_WAKEUPEVENT0 (1 << 15)
346 #define OMAP3_PADCONF_WAKEUPENABLE0 (1 << 14) 350 #define OMAP3_PADCONF_WAKEUPENABLE0 (1 << 14)
347 351
348 #define OMAP343X_SCRATCHPAD_ROM (OMAP343X_CTRL_BASE + 0x860) 352 #define OMAP343X_SCRATCHPAD_ROM (OMAP343X_CTRL_BASE + 0x860)
349 #define OMAP343X_SCRATCHPAD (OMAP343X_CTRL_BASE + 0x910) 353 #define OMAP343X_SCRATCHPAD (OMAP343X_CTRL_BASE + 0x910)
350 #define OMAP343X_SCRATCHPAD_ROM_OFFSET 0x19C 354 #define OMAP343X_SCRATCHPAD_ROM_OFFSET 0x19C
351 #define OMAP343X_SCRATCHPAD_REGADDR(reg) OMAP2_L4_IO_ADDRESS(\ 355 #define OMAP343X_SCRATCHPAD_REGADDR(reg) OMAP2_L4_IO_ADDRESS(\
352 OMAP343X_SCRATCHPAD + reg) 356 OMAP343X_SCRATCHPAD + reg)
353 357
354 /* AM35XX_CONTROL_IPSS_CLK_CTRL bits */ 358 /* AM35XX_CONTROL_IPSS_CLK_CTRL bits */
355 #define AM35XX_USBOTG_VBUSP_CLK_SHIFT 0 359 #define AM35XX_USBOTG_VBUSP_CLK_SHIFT 0
356 #define AM35XX_CPGMAC_VBUSP_CLK_SHIFT 1 360 #define AM35XX_CPGMAC_VBUSP_CLK_SHIFT 1
357 #define AM35XX_VPFE_VBUSP_CLK_SHIFT 2 361 #define AM35XX_VPFE_VBUSP_CLK_SHIFT 2
358 #define AM35XX_HECC_VBUSP_CLK_SHIFT 3 362 #define AM35XX_HECC_VBUSP_CLK_SHIFT 3
359 #define AM35XX_USBOTG_FCLK_SHIFT 8 363 #define AM35XX_USBOTG_FCLK_SHIFT 8
360 #define AM35XX_CPGMAC_FCLK_SHIFT 9 364 #define AM35XX_CPGMAC_FCLK_SHIFT 9
361 #define AM35XX_VPFE_FCLK_SHIFT 10 365 #define AM35XX_VPFE_FCLK_SHIFT 10
362 366
363 /* AM35XX CONTROL_LVL_INTR_CLEAR bits */ 367 /* AM35XX CONTROL_LVL_INTR_CLEAR bits */
364 #define AM35XX_CPGMAC_C0_MISC_PULSE_CLR BIT(0) 368 #define AM35XX_CPGMAC_C0_MISC_PULSE_CLR BIT(0)
365 #define AM35XX_CPGMAC_C0_RX_PULSE_CLR BIT(1) 369 #define AM35XX_CPGMAC_C0_RX_PULSE_CLR BIT(1)
366 #define AM35XX_CPGMAC_C0_RX_THRESH_CLR BIT(2) 370 #define AM35XX_CPGMAC_C0_RX_THRESH_CLR BIT(2)
367 #define AM35XX_CPGMAC_C0_TX_PULSE_CLR BIT(3) 371 #define AM35XX_CPGMAC_C0_TX_PULSE_CLR BIT(3)
368 #define AM35XX_USBOTGSS_INT_CLR BIT(4) 372 #define AM35XX_USBOTGSS_INT_CLR BIT(4)
369 #define AM35XX_VPFE_CCDC_VD0_INT_CLR BIT(5) 373 #define AM35XX_VPFE_CCDC_VD0_INT_CLR BIT(5)
370 #define AM35XX_VPFE_CCDC_VD1_INT_CLR BIT(6) 374 #define AM35XX_VPFE_CCDC_VD1_INT_CLR BIT(6)
371 #define AM35XX_VPFE_CCDC_VD2_INT_CLR BIT(7) 375 #define AM35XX_VPFE_CCDC_VD2_INT_CLR BIT(7)
372 376
373 /* AM35XX CONTROL_IP_SW_RESET bits */ 377 /* AM35XX CONTROL_IP_SW_RESET bits */
374 #define AM35XX_USBOTGSS_SW_RST BIT(0) 378 #define AM35XX_USBOTGSS_SW_RST BIT(0)
375 #define AM35XX_CPGMACSS_SW_RST BIT(1) 379 #define AM35XX_CPGMACSS_SW_RST BIT(1)
376 #define AM35XX_VPFE_VBUSP_SW_RST BIT(2) 380 #define AM35XX_VPFE_VBUSP_SW_RST BIT(2)
377 #define AM35XX_HECC_SW_RST BIT(3) 381 #define AM35XX_HECC_SW_RST BIT(3)
378 #define AM35XX_VPFE_PCLK_SW_RST BIT(4) 382 #define AM35XX_VPFE_PCLK_SW_RST BIT(4)
379 383
380 /* AM33XX CONTROL_STATUS register */ 384 /* AM33XX CONTROL_STATUS register */
381 #define AM33XX_CONTROL_STATUS 0x040 385 #define AM33XX_CONTROL_STATUS 0x040
382 #define AM33XX_CONTROL_SEC_CLK_CTRL 0x1bc 386 #define AM33XX_CONTROL_SEC_CLK_CTRL 0x1bc
383 387
384 /* AM33XX CONTROL_STATUS bitfields (partial) */ 388 /* AM33XX CONTROL_STATUS bitfields (partial) */
385 #define AM33XX_CONTROL_STATUS_SYSBOOT1_SHIFT 22 389 #define AM33XX_CONTROL_STATUS_SYSBOOT1_SHIFT 22
386 #define AM33XX_CONTROL_STATUS_SYSBOOT1_WIDTH 0x2 390 #define AM33XX_CONTROL_STATUS_SYSBOOT1_WIDTH 0x2
387 #define AM33XX_CONTROL_STATUS_SYSBOOT1_MASK (0x3 << 22) 391 #define AM33XX_CONTROL_STATUS_SYSBOOT1_MASK (0x3 << 22)
388 392
389 /* AM33XX PWMSS Control register */ 393 /* AM33XX PWMSS Control register */
390 #define AM33XX_PWMSS_TBCLK_CLKCTRL 0x664 394 #define AM33XX_PWMSS_TBCLK_CLKCTRL 0x664
391 395
392 /* AM33XX PWMSS Control bitfields */ 396 /* AM33XX PWMSS Control bitfields */
393 #define AM33XX_PWMSS0_TBCLKEN_SHIFT 0 397 #define AM33XX_PWMSS0_TBCLKEN_SHIFT 0
394 #define AM33XX_PWMSS1_TBCLKEN_SHIFT 1 398 #define AM33XX_PWMSS1_TBCLKEN_SHIFT 1
395 #define AM33XX_PWMSS2_TBCLKEN_SHIFT 2 399 #define AM33XX_PWMSS2_TBCLKEN_SHIFT 2
396 400
397 /* DEV Feature register to identify AM33XX features */ 401 /* DEV Feature register to identify AM33XX features */
398 #define AM33XX_DEV_FEATURE 0x604 402 #define AM33XX_DEV_FEATURE 0x604
399 #define AM33XX_SGX_MASK BIT(29) 403 #define AM33XX_SGX_MASK BIT(29)
400 404
401 /* CONTROL OMAP STATUS register to identify OMAP3 features */ 405 /* CONTROL OMAP STATUS register to identify OMAP3 features */
402 #define OMAP3_CONTROL_OMAP_STATUS 0x044c 406 #define OMAP3_CONTROL_OMAP_STATUS 0x044c
403 407
404 #define OMAP3_SGX_SHIFT 13 408 #define OMAP3_SGX_SHIFT 13
405 #define OMAP3_SGX_MASK (3 << OMAP3_SGX_SHIFT) 409 #define OMAP3_SGX_MASK (3 << OMAP3_SGX_SHIFT)
406 #define FEAT_SGX_FULL 0 410 #define FEAT_SGX_FULL 0
407 #define FEAT_SGX_HALF 1 411 #define FEAT_SGX_HALF 1
408 #define FEAT_SGX_NONE 2 412 #define FEAT_SGX_NONE 2
409 413
410 #define OMAP3_IVA_SHIFT 12 414 #define OMAP3_IVA_SHIFT 12
411 #define OMAP3_IVA_MASK (1 << OMAP3_IVA_SHIFT) 415 #define OMAP3_IVA_MASK (1 << OMAP3_IVA_SHIFT)
412 #define FEAT_IVA 0 416 #define FEAT_IVA 0
413 #define FEAT_IVA_NONE 1 417 #define FEAT_IVA_NONE 1
414 418
415 #define OMAP3_L2CACHE_SHIFT 10 419 #define OMAP3_L2CACHE_SHIFT 10
416 #define OMAP3_L2CACHE_MASK (3 << OMAP3_L2CACHE_SHIFT) 420 #define OMAP3_L2CACHE_MASK (3 << OMAP3_L2CACHE_SHIFT)
417 #define FEAT_L2CACHE_NONE 0 421 #define FEAT_L2CACHE_NONE 0
418 #define FEAT_L2CACHE_64KB 1 422 #define FEAT_L2CACHE_64KB 1
419 #define FEAT_L2CACHE_128KB 2 423 #define FEAT_L2CACHE_128KB 2
420 #define FEAT_L2CACHE_256KB 3 424 #define FEAT_L2CACHE_256KB 3
421 425
422 #define OMAP3_ISP_SHIFT 5 426 #define OMAP3_ISP_SHIFT 5
423 #define OMAP3_ISP_MASK (1 << OMAP3_ISP_SHIFT) 427 #define OMAP3_ISP_MASK (1 << OMAP3_ISP_SHIFT)
424 #define FEAT_ISP 0 428 #define FEAT_ISP 0
425 #define FEAT_ISP_NONE 1 429 #define FEAT_ISP_NONE 1
426 430
427 #define OMAP3_NEON_SHIFT 4 431 #define OMAP3_NEON_SHIFT 4
428 #define OMAP3_NEON_MASK (1 << OMAP3_NEON_SHIFT) 432 #define OMAP3_NEON_MASK (1 << OMAP3_NEON_SHIFT)
429 #define FEAT_NEON 0 433 #define FEAT_NEON 0
430 #define FEAT_NEON_NONE 1 434 #define FEAT_NEON_NONE 1
431 435
432 436
433 #ifndef __ASSEMBLY__ 437 #ifndef __ASSEMBLY__
434 #ifdef CONFIG_ARCH_OMAP2PLUS 438 #ifdef CONFIG_ARCH_OMAP2PLUS
435 extern void __iomem *omap_ctrl_base_get(void); 439 extern void __iomem *omap_ctrl_base_get(void);
436 extern u8 omap_ctrl_readb(u16 offset); 440 extern u8 omap_ctrl_readb(u16 offset);
437 extern u16 omap_ctrl_readw(u16 offset); 441 extern u16 omap_ctrl_readw(u16 offset);
438 extern u32 omap_ctrl_readl(u16 offset); 442 extern u32 omap_ctrl_readl(u16 offset);
439 extern u32 omap4_ctrl_pad_readl(u16 offset); 443 extern u32 omap4_ctrl_pad_readl(u16 offset);
440 extern void omap_ctrl_writeb(u8 val, u16 offset); 444 extern void omap_ctrl_writeb(u8 val, u16 offset);
441 extern void omap_ctrl_writew(u16 val, u16 offset); 445 extern void omap_ctrl_writew(u16 val, u16 offset);
442 extern void omap_ctrl_writel(u32 val, u16 offset); 446 extern void omap_ctrl_writel(u32 val, u16 offset);
443 extern void omap4_ctrl_pad_writel(u32 val, u16 offset); 447 extern void omap4_ctrl_pad_writel(u32 val, u16 offset);
444 448
445 extern void omap3_save_scratchpad_contents(void); 449 extern void omap3_save_scratchpad_contents(void);
446 extern void omap3_clear_scratchpad_contents(void); 450 extern void omap3_clear_scratchpad_contents(void);
447 extern void omap3_restore(void); 451 extern void omap3_restore(void);
448 extern void omap3_restore_es3(void); 452 extern void omap3_restore_es3(void);
449 extern void omap3_restore_3630(void); 453 extern void omap3_restore_3630(void);
450 extern u32 omap3_arm_context[128]; 454 extern u32 omap3_arm_context[128];
451 extern void omap3_control_save_context(void); 455 extern void omap3_control_save_context(void);
452 extern void omap3_control_restore_context(void); 456 extern void omap3_control_restore_context(void);
453 extern void omap3_ctrl_write_boot_mode(u8 bootmode); 457 extern void omap3_ctrl_write_boot_mode(u8 bootmode);
454 extern void omap_ctrl_write_dsp_boot_addr(u32 bootaddr); 458 extern void omap_ctrl_write_dsp_boot_addr(u32 bootaddr);
455 extern void omap_ctrl_write_dsp_boot_mode(u8 bootmode); 459 extern void omap_ctrl_write_dsp_boot_mode(u8 bootmode);
456 extern void omap3630_ctrl_disable_rta(void); 460 extern void omap3630_ctrl_disable_rta(void);
457 extern int omap3_ctrl_save_padconf(void); 461 extern int omap3_ctrl_save_padconf(void);
458 void omap3_ctrl_init(void); 462 void omap3_ctrl_init(void);
459 extern void omap2_set_globals_control(void __iomem *ctrl, 463 extern void omap2_set_globals_control(void __iomem *ctrl,
460 void __iomem *ctrl_pad); 464 void __iomem *ctrl_pad);
461 #else 465 #else
462 #define omap_ctrl_base_get() 0 466 #define omap_ctrl_base_get() 0
463 #define omap_ctrl_readb(x) 0 467 #define omap_ctrl_readb(x) 0
464 #define omap_ctrl_readw(x) 0 468 #define omap_ctrl_readw(x) 0
465 #define omap_ctrl_readl(x) 0 469 #define omap_ctrl_readl(x) 0
466 #define omap4_ctrl_pad_readl(x) 0 470 #define omap4_ctrl_pad_readl(x) 0
467 #define omap_ctrl_writeb(x, y) WARN_ON(1) 471 #define omap_ctrl_writeb(x, y) WARN_ON(1)
468 #define omap_ctrl_writew(x, y) WARN_ON(1) 472 #define omap_ctrl_writew(x, y) WARN_ON(1)
469 #define omap_ctrl_writel(x, y) WARN_ON(1) 473 #define omap_ctrl_writel(x, y) WARN_ON(1)
470 #define omap4_ctrl_pad_writel(x, y) WARN_ON(1) 474 #define omap4_ctrl_pad_writel(x, y) WARN_ON(1)
471 #endif 475 #endif
472 #endif /* __ASSEMBLY__ */ 476 #endif /* __ASSEMBLY__ */
473 477
474 #endif /* __ARCH_ARM_MACH_OMAP2_CONTROL_H */ 478 #endif /* __ARCH_ARM_MACH_OMAP2_CONTROL_H */
475 479
476 480
arch/arm/mach-omap2/omap-headsmp.S
1 /* 1 /*
2 * Secondary CPU startup routine source file. 2 * Secondary CPU startup routine source file.
3 * 3 *
4 * Copyright (C) 2009-2014 Texas Instruments, Inc. 4 * Copyright (C) 2009-2014 Texas Instruments, Inc.
5 * 5 *
6 * Author: 6 * Author:
7 * Santosh Shilimkar <santosh.shilimkar@ti.com> 7 * Santosh Shilimkar <santosh.shilimkar@ti.com>
8 * 8 *
9 * Interface functions needed for the SMP. This file is based on arm 9 * Interface functions needed for the SMP. This file is based on arm
10 * realview smp platform. 10 * realview smp platform.
11 * Copyright (c) 2003 ARM Limited. 11 * Copyright (c) 2003 ARM Limited.
12 * 12 *
13 * This program is free software,you can redistribute it and/or modify 13 * This program is free software,you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License version 2 as 14 * it under the terms of the GNU General Public License version 2 as
15 * published by the Free Software Foundation. 15 * published by the Free Software Foundation.
16 */ 16 */
17 17
18 #include <linux/linkage.h> 18 #include <linux/linkage.h>
19 #include <linux/init.h> 19 #include <linux/init.h>
20 20
21 #include "omap44xx.h" 21 #include "omap44xx.h"
22 22
23 /* Physical address needed since MMU not enabled yet on secondary core */ 23 /* Physical address needed since MMU not enabled yet on secondary core */
24 #define AUX_CORE_BOOT0_PA 0x48281800 24 #define AUX_CORE_BOOT0_PA 0x48281800
25 #define API_HYP_ENTRY 0x102
25 26
26 /* 27 /*
27 * OMAP5 specific entry point for secondary CPU to jump from ROM 28 * OMAP5 specific entry point for secondary CPU to jump from ROM
28 * code. This routine also provides a holding flag into which 29 * code. This routine also provides a holding flag into which
29 * secondary core is held until we're ready for it to initialise. 30 * secondary core is held until we're ready for it to initialise.
30 * The primary core will update this flag using a hardware 31 * The primary core will update this flag using a hardware
31 * register AuxCoreBoot0. 32 * register AuxCoreBoot0.
32 */ 33 */
33 ENTRY(omap5_secondary_startup) 34 ENTRY(omap5_secondary_startup)
34 wait: ldr r2, =AUX_CORE_BOOT0_PA @ read from AuxCoreBoot0 35 wait: ldr r2, =AUX_CORE_BOOT0_PA @ read from AuxCoreBoot0
35 ldr r0, [r2] 36 ldr r0, [r2]
36 mov r0, r0, lsr #5 37 mov r0, r0, lsr #5
37 mrc p15, 0, r4, c0, c0, 5 38 mrc p15, 0, r4, c0, c0, 5
38 and r4, r4, #0x0f 39 and r4, r4, #0x0f
39 cmp r0, r4 40 cmp r0, r4
40 bne wait 41 bne wait
41 b secondary_startup 42 b secondary_startup
42 ENDPROC(omap5_secondary_startup) 43 ENDPROC(omap5_secondary_startup)
44 /*
45 * Same as omap5_secondary_startup except we call into the ROM to
46 * enable HYP mode first. This is called instead of
47 * omap5_secondary_startup if the primary CPU was put into HYP mode by
48 * the boot loader.
49 */
50 ENTRY(omap5_secondary_hyp_startup)
51 wait_2: ldr r2, =AUX_CORE_BOOT0_PA @ read from AuxCoreBoot0
52 ldr r0, [r2]
53 mov r0, r0, lsr #5
54 mrc p15, 0, r4, c0, c0, 5
55 and r4, r4, #0x0f
56 cmp r0, r4
57 bne wait_2
58 ldr r12, =API_HYP_ENTRY
59 adr r0, hyp_boot
60 smc #0
61 hyp_boot:
62 b secondary_startup
63 ENDPROC(omap5_secondary_hyp_startup)
43 /* 64 /*
44 * OMAP4 specific entry point for secondary CPU to jump from ROM 65 * OMAP4 specific entry point for secondary CPU to jump from ROM
45 * code. This routine also provides a holding flag into which 66 * code. This routine also provides a holding flag into which
46 * secondary core is held until we're ready for it to initialise. 67 * secondary core is held until we're ready for it to initialise.
47 * The primary core will update this flag using a hardware 68 * The primary core will update this flag using a hardware
48 * register AuxCoreBoot0. 69 * register AuxCoreBoot0.
49 */ 70 */
50 ENTRY(omap4_secondary_startup) 71 ENTRY(omap4_secondary_startup)
51 hold: ldr r12,=0x103 72 hold: ldr r12,=0x103
52 dsb 73 dsb
53 smc #0 @ read from AuxCoreBoot0 74 smc #0 @ read from AuxCoreBoot0
54 mov r0, r0, lsr #9 75 mov r0, r0, lsr #9
55 mrc p15, 0, r4, c0, c0, 5 76 mrc p15, 0, r4, c0, c0, 5
56 and r4, r4, #0x0f 77 and r4, r4, #0x0f
57 cmp r0, r4 78 cmp r0, r4
58 bne hold 79 bne hold
59 80
60 /* 81 /*
61 * we've been released from the wait loop,secondary_stack 82 * we've been released from the wait loop,secondary_stack
62 * should now contain the SVC stack for this core 83 * should now contain the SVC stack for this core
63 */ 84 */
64 b secondary_startup 85 b secondary_startup
65 ENDPROC(omap4_secondary_startup) 86 ENDPROC(omap4_secondary_startup)
66 87
67 ENTRY(omap4460_secondary_startup) 88 ENTRY(omap4460_secondary_startup)
68 hold_2: ldr r12,=0x103 89 hold_2: ldr r12,=0x103
69 dsb 90 dsb
70 smc #0 @ read from AuxCoreBoot0 91 smc #0 @ read from AuxCoreBoot0
71 mov r0, r0, lsr #9 92 mov r0, r0, lsr #9
72 mrc p15, 0, r4, c0, c0, 5 93 mrc p15, 0, r4, c0, c0, 5
73 and r4, r4, #0x0f 94 and r4, r4, #0x0f
74 cmp r0, r4 95 cmp r0, r4
75 bne hold_2 96 bne hold_2
76 97
77 /* 98 /*
78 * GIC distributor control register has changed between 99 * GIC distributor control register has changed between
79 * CortexA9 r1pX and r2pX. The Control Register secure 100 * CortexA9 r1pX and r2pX. The Control Register secure
80 * banked version is now composed of 2 bits: 101 * banked version is now composed of 2 bits:
81 * bit 0 == Secure Enable 102 * bit 0 == Secure Enable
82 * bit 1 == Non-Secure Enable 103 * bit 1 == Non-Secure Enable
83 * The Non-Secure banked register has not changed 104 * The Non-Secure banked register has not changed
84 * Because the ROM Code is based on the r1pX GIC, the CPU1 105 * Because the ROM Code is based on the r1pX GIC, the CPU1
85 * GIC restoration will cause a problem to CPU0 Non-Secure SW. 106 * GIC restoration will cause a problem to CPU0 Non-Secure SW.
86 * The workaround must be: 107 * The workaround must be:
87 * 1) Before doing the CPU1 wakeup, CPU0 must disable 108 * 1) Before doing the CPU1 wakeup, CPU0 must disable
88 * the GIC distributor 109 * the GIC distributor
89 * 2) CPU1 must re-enable the GIC distributor on 110 * 2) CPU1 must re-enable the GIC distributor on
90 * it's wakeup path. 111 * it's wakeup path.
91 */ 112 */
92 ldr r1, =OMAP44XX_GIC_DIST_BASE 113 ldr r1, =OMAP44XX_GIC_DIST_BASE
93 ldr r0, [r1] 114 ldr r0, [r1]
94 orr r0, #1 115 orr r0, #1
95 str r0, [r1] 116 str r0, [r1]
96 117
97 /* 118 /*
98 * we've been released from the wait loop,secondary_stack 119 * we've been released from the wait loop,secondary_stack
99 * should now contain the SVC stack for this core 120 * should now contain the SVC stack for this core
100 */ 121 */
101 b secondary_startup 122 b secondary_startup
102 ENDPROC(omap4460_secondary_startup) 123 ENDPROC(omap4460_secondary_startup)
103 124
arch/arm/mach-omap2/omap-smp.c
1 /* 1 /*
2 * OMAP4 SMP source file. It contains platform specific functions 2 * OMAP4 SMP source file. It contains platform specific functions
3 * needed for the linux smp kernel. 3 * needed for the linux smp kernel.
4 * 4 *
5 * Copyright (C) 2009 Texas Instruments, Inc. 5 * Copyright (C) 2009 Texas Instruments, Inc.
6 * 6 *
7 * Author: 7 * Author:
8 * Santosh Shilimkar <santosh.shilimkar@ti.com> 8 * Santosh Shilimkar <santosh.shilimkar@ti.com>
9 * 9 *
10 * Platform file needed for the OMAP4 SMP. This file is based on arm 10 * Platform file needed for the OMAP4 SMP. This file is based on arm
11 * realview smp platform. 11 * realview smp platform.
12 * * Copyright (c) 2002 ARM Limited. 12 * * Copyright (c) 2002 ARM Limited.
13 * 13 *
14 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as 15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation. 16 * published by the Free Software Foundation.
17 */ 17 */
18 #include <linux/init.h> 18 #include <linux/init.h>
19 #include <linux/device.h> 19 #include <linux/device.h>
20 #include <linux/smp.h> 20 #include <linux/smp.h>
21 #include <linux/io.h> 21 #include <linux/io.h>
22 #include <linux/irqchip/arm-gic.h> 22 #include <linux/irqchip/arm-gic.h>
23 23
24 #include <asm/smp_scu.h> 24 #include <asm/smp_scu.h>
25 #include <asm/virt.h>
25 26
26 #include "omap-secure.h" 27 #include "omap-secure.h"
27 #include "omap-wakeupgen.h" 28 #include "omap-wakeupgen.h"
28 #include <asm/cputype.h> 29 #include <asm/cputype.h>
29 30
30 #include "soc.h" 31 #include "soc.h"
31 #include "iomap.h" 32 #include "iomap.h"
32 #include "common.h" 33 #include "common.h"
33 #include "clockdomain.h" 34 #include "clockdomain.h"
34 #include "pm.h" 35 #include "pm.h"
35 36
36 #define CPU_MASK 0xff0ffff0 37 #define CPU_MASK 0xff0ffff0
37 #define CPU_CORTEX_A9 0x410FC090 38 #define CPU_CORTEX_A9 0x410FC090
38 #define CPU_CORTEX_A15 0x410FC0F0 39 #define CPU_CORTEX_A15 0x410FC0F0
39 40
40 #define OMAP5_CORE_COUNT 0x2 41 #define OMAP5_CORE_COUNT 0x2
41 42
42 /* SCU base address */ 43 /* SCU base address */
43 static void __iomem *scu_base; 44 static void __iomem *scu_base;
44 45
45 static DEFINE_SPINLOCK(boot_lock); 46 static DEFINE_SPINLOCK(boot_lock);
46 47
47 void __iomem *omap4_get_scu_base(void) 48 void __iomem *omap4_get_scu_base(void)
48 { 49 {
49 return scu_base; 50 return scu_base;
50 } 51 }
51 52
52 static void omap4_secondary_init(unsigned int cpu) 53 static void omap4_secondary_init(unsigned int cpu)
53 { 54 {
54 /* 55 /*
55 * Configure ACTRL and enable NS SMP bit access on CPU1 on HS device. 56 * Configure ACTRL and enable NS SMP bit access on CPU1 on HS device.
56 * OMAP44XX EMU/HS devices - CPU0 SMP bit access is enabled in PPA 57 * OMAP44XX EMU/HS devices - CPU0 SMP bit access is enabled in PPA
57 * init and for CPU1, a secure PPA API provided. CPU0 must be ON 58 * init and for CPU1, a secure PPA API provided. CPU0 must be ON
58 * while executing NS_SMP API on CPU1 and PPA version must be 1.4.0+. 59 * while executing NS_SMP API on CPU1 and PPA version must be 1.4.0+.
59 * OMAP443X GP devices- SMP bit isn't accessible. 60 * OMAP443X GP devices- SMP bit isn't accessible.
60 * OMAP446X GP devices - SMP bit access is enabled on both CPUs. 61 * OMAP446X GP devices - SMP bit access is enabled on both CPUs.
61 */ 62 */
62 if (cpu_is_omap443x() && (omap_type() != OMAP2_DEVICE_TYPE_GP)) 63 if (cpu_is_omap443x() && (omap_type() != OMAP2_DEVICE_TYPE_GP))
63 omap_secure_dispatcher(OMAP4_PPA_CPU_ACTRL_SMP_INDEX, 64 omap_secure_dispatcher(OMAP4_PPA_CPU_ACTRL_SMP_INDEX,
64 4, 0, 0, 0, 0, 0); 65 4, 0, 0, 0, 0, 0);
65 66
66 /* 67 /*
67 * Configure the CNTFRQ register for the secondary cpu's which 68 * Configure the CNTFRQ register for the secondary cpu's which
68 * indicates the frequency of the cpu local timers. 69 * indicates the frequency of the cpu local timers.
69 */ 70 */
70 if (soc_is_omap54xx() || soc_is_dra7xx()) 71 if (soc_is_omap54xx() || soc_is_dra7xx())
71 set_cntfreq(); 72 set_cntfreq();
72 73
73 /* 74 /*
74 * Synchronise with the boot thread. 75 * Synchronise with the boot thread.
75 */ 76 */
76 spin_lock(&boot_lock); 77 spin_lock(&boot_lock);
77 spin_unlock(&boot_lock); 78 spin_unlock(&boot_lock);
78 } 79 }
79 80
80 static int omap4_boot_secondary(unsigned int cpu, struct task_struct *idle) 81 static int omap4_boot_secondary(unsigned int cpu, struct task_struct *idle)
81 { 82 {
82 static struct clockdomain *cpu1_clkdm; 83 static struct clockdomain *cpu1_clkdm;
83 static bool booted; 84 static bool booted;
84 static struct powerdomain *cpu1_pwrdm; 85 static struct powerdomain *cpu1_pwrdm;
85 void __iomem *base = omap_get_wakeupgen_base(); 86 void __iomem *base = omap_get_wakeupgen_base();
86 87
87 /* 88 /*
88 * Set synchronisation state between this boot processor 89 * Set synchronisation state between this boot processor
89 * and the secondary one 90 * and the secondary one
90 */ 91 */
91 spin_lock(&boot_lock); 92 spin_lock(&boot_lock);
92 93
93 /* 94 /*
94 * Update the AuxCoreBoot0 with boot state for secondary core. 95 * Update the AuxCoreBoot0 with boot state for secondary core.
95 * omap4_secondary_startup() routine will hold the secondary core till 96 * omap4_secondary_startup() routine will hold the secondary core till
96 * the AuxCoreBoot1 register is updated with cpu state 97 * the AuxCoreBoot1 register is updated with cpu state
97 * A barrier is added to ensure that write buffer is drained 98 * A barrier is added to ensure that write buffer is drained
98 */ 99 */
99 if (omap_secure_apis_support()) 100 if (omap_secure_apis_support())
100 omap_modify_auxcoreboot0(0x200, 0xfffffdff); 101 omap_modify_auxcoreboot0(0x200, 0xfffffdff);
101 else 102 else
102 writel_relaxed(0x20, base + OMAP_AUX_CORE_BOOT_0); 103 writel_relaxed(0x20, base + OMAP_AUX_CORE_BOOT_0);
103 104
104 if (!cpu1_clkdm && !cpu1_pwrdm) { 105 if (!cpu1_clkdm && !cpu1_pwrdm) {
105 cpu1_clkdm = clkdm_lookup("mpu1_clkdm"); 106 cpu1_clkdm = clkdm_lookup("mpu1_clkdm");
106 cpu1_pwrdm = pwrdm_lookup("cpu1_pwrdm"); 107 cpu1_pwrdm = pwrdm_lookup("cpu1_pwrdm");
107 } 108 }
108 109
109 /* 110 /*
110 * The SGI(Software Generated Interrupts) are not wakeup capable 111 * The SGI(Software Generated Interrupts) are not wakeup capable
111 * from low power states. This is known limitation on OMAP4 and 112 * from low power states. This is known limitation on OMAP4 and
112 * needs to be worked around by using software forced clockdomain 113 * needs to be worked around by using software forced clockdomain
113 * wake-up. To wakeup CPU1, CPU0 forces the CPU1 clockdomain to 114 * wake-up. To wakeup CPU1, CPU0 forces the CPU1 clockdomain to
114 * software force wakeup. The clockdomain is then put back to 115 * software force wakeup. The clockdomain is then put back to
115 * hardware supervised mode. 116 * hardware supervised mode.
116 * More details can be found in OMAP4430 TRM - Version J 117 * More details can be found in OMAP4430 TRM - Version J
117 * Section : 118 * Section :
118 * 4.3.4.2 Power States of CPU0 and CPU1 119 * 4.3.4.2 Power States of CPU0 and CPU1
119 */ 120 */
120 if (booted && cpu1_pwrdm && cpu1_clkdm) { 121 if (booted && cpu1_pwrdm && cpu1_clkdm) {
121 /* 122 /*
122 * GIC distributor control register has changed between 123 * GIC distributor control register has changed between
123 * CortexA9 r1pX and r2pX. The Control Register secure 124 * CortexA9 r1pX and r2pX. The Control Register secure
124 * banked version is now composed of 2 bits: 125 * banked version is now composed of 2 bits:
125 * bit 0 == Secure Enable 126 * bit 0 == Secure Enable
126 * bit 1 == Non-Secure Enable 127 * bit 1 == Non-Secure Enable
127 * The Non-Secure banked register has not changed 128 * The Non-Secure banked register has not changed
128 * Because the ROM Code is based on the r1pX GIC, the CPU1 129 * Because the ROM Code is based on the r1pX GIC, the CPU1
129 * GIC restoration will cause a problem to CPU0 Non-Secure SW. 130 * GIC restoration will cause a problem to CPU0 Non-Secure SW.
130 * The workaround must be: 131 * The workaround must be:
131 * 1) Before doing the CPU1 wakeup, CPU0 must disable 132 * 1) Before doing the CPU1 wakeup, CPU0 must disable
132 * the GIC distributor 133 * the GIC distributor
133 * 2) CPU1 must re-enable the GIC distributor on 134 * 2) CPU1 must re-enable the GIC distributor on
134 * it's wakeup path. 135 * it's wakeup path.
135 */ 136 */
136 if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD)) { 137 if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD)) {
137 local_irq_disable(); 138 local_irq_disable();
138 gic_dist_disable(); 139 gic_dist_disable();
139 } 140 }
140 141
141 /* 142 /*
142 * Ensure that CPU power state is set to ON to avoid CPU 143 * Ensure that CPU power state is set to ON to avoid CPU
143 * powerdomain transition on wfi 144 * powerdomain transition on wfi
144 */ 145 */
145 clkdm_wakeup(cpu1_clkdm); 146 clkdm_wakeup(cpu1_clkdm);
146 omap_set_pwrdm_state(cpu1_pwrdm, PWRDM_POWER_ON); 147 omap_set_pwrdm_state(cpu1_pwrdm, PWRDM_POWER_ON);
147 clkdm_allow_idle(cpu1_clkdm); 148 clkdm_allow_idle(cpu1_clkdm);
148 149
149 if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD)) { 150 if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD)) {
150 while (gic_dist_disabled()) { 151 while (gic_dist_disabled()) {
151 udelay(1); 152 udelay(1);
152 cpu_relax(); 153 cpu_relax();
153 } 154 }
154 gic_timer_retrigger(); 155 gic_timer_retrigger();
155 local_irq_enable(); 156 local_irq_enable();
156 } 157 }
157 } else { 158 } else {
158 dsb_sev(); 159 dsb_sev();
159 booted = true; 160 booted = true;
160 } 161 }
161 162
162 arch_send_wakeup_ipi_mask(cpumask_of(cpu)); 163 arch_send_wakeup_ipi_mask(cpumask_of(cpu));
163 164
164 /* 165 /*
165 * Now the secondary core is starting up let it run its 166 * Now the secondary core is starting up let it run its
166 * calibrations, then wait for it to finish 167 * calibrations, then wait for it to finish
167 */ 168 */
168 spin_unlock(&boot_lock); 169 spin_unlock(&boot_lock);
169 170
170 return 0; 171 return 0;
171 } 172 }
172 173
173 /* 174 /*
174 * Initialise the CPU possible map early - this describes the CPUs 175 * Initialise the CPU possible map early - this describes the CPUs
175 * which may be present or become present in the system. 176 * which may be present or become present in the system.
176 */ 177 */
177 static void __init omap4_smp_init_cpus(void) 178 static void __init omap4_smp_init_cpus(void)
178 { 179 {
179 unsigned int i = 0, ncores = 1, cpu_id; 180 unsigned int i = 0, ncores = 1, cpu_id;
180 181
181 /* Use ARM cpuid check here, as SoC detection will not work so early */ 182 /* Use ARM cpuid check here, as SoC detection will not work so early */
182 cpu_id = read_cpuid_id() & CPU_MASK; 183 cpu_id = read_cpuid_id() & CPU_MASK;
183 if (cpu_id == CPU_CORTEX_A9) { 184 if (cpu_id == CPU_CORTEX_A9) {
184 /* 185 /*
185 * Currently we can't call ioremap here because 186 * Currently we can't call ioremap here because
186 * SoC detection won't work until after init_early. 187 * SoC detection won't work until after init_early.
187 */ 188 */
188 scu_base = OMAP2_L4_IO_ADDRESS(scu_a9_get_base()); 189 scu_base = OMAP2_L4_IO_ADDRESS(scu_a9_get_base());
189 BUG_ON(!scu_base); 190 BUG_ON(!scu_base);
190 ncores = scu_get_core_count(scu_base); 191 ncores = scu_get_core_count(scu_base);
191 } else if (cpu_id == CPU_CORTEX_A15) { 192 } else if (cpu_id == CPU_CORTEX_A15) {
192 ncores = OMAP5_CORE_COUNT; 193 ncores = OMAP5_CORE_COUNT;
193 } 194 }
194 195
195 /* sanity check */ 196 /* sanity check */
196 if (ncores > nr_cpu_ids) { 197 if (ncores > nr_cpu_ids) {
197 pr_warn("SMP: %u cores greater than maximum (%u), clipping\n", 198 pr_warn("SMP: %u cores greater than maximum (%u), clipping\n",
198 ncores, nr_cpu_ids); 199 ncores, nr_cpu_ids);
199 ncores = nr_cpu_ids; 200 ncores = nr_cpu_ids;
200 } 201 }
201 202
202 for (i = 0; i < ncores; i++) 203 for (i = 0; i < ncores; i++)
203 set_cpu_possible(i, true); 204 set_cpu_possible(i, true);
204 } 205 }
205 206
206 static void __init omap4_smp_prepare_cpus(unsigned int max_cpus) 207 static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
207 { 208 {
208 void *startup_addr = omap4_secondary_startup; 209 void *startup_addr = omap4_secondary_startup;
209 void __iomem *base = omap_get_wakeupgen_base(); 210 void __iomem *base = omap_get_wakeupgen_base();
210 211
211 /* 212 /*
212 * Initialise the SCU and wake up the secondary core using 213 * Initialise the SCU and wake up the secondary core using
213 * wakeup_secondary(). 214 * wakeup_secondary().
214 */ 215 */
215 if (scu_base) 216 if (scu_base)
216 scu_enable(scu_base); 217 scu_enable(scu_base);
217 218
218 if (cpu_is_omap446x()) 219 if (cpu_is_omap446x())
219 startup_addr = omap4460_secondary_startup; 220 startup_addr = omap4460_secondary_startup;
220 221
221 /* 222 /*
222 * Write the address of secondary startup routine into the 223 * Write the address of secondary startup routine into the
223 * AuxCoreBoot1 where ROM code will jump and start executing 224 * AuxCoreBoot1 where ROM code will jump and start executing
224 * on secondary core once out of WFE 225 * on secondary core once out of WFE
225 * A barrier is added to ensure that write buffer is drained 226 * A barrier is added to ensure that write buffer is drained
226 */ 227 */
227 if (omap_secure_apis_support()) 228 if (omap_secure_apis_support())
228 omap_auxcoreboot_addr(virt_to_phys(startup_addr)); 229 omap_auxcoreboot_addr(virt_to_phys(startup_addr));
229 else 230 else
230 writel_relaxed(virt_to_phys(omap5_secondary_startup), 231 /*
231 base + OMAP_AUX_CORE_BOOT_1); 232 * If the boot CPU is in HYP mode then start secondary
233 * CPU in HYP mode as well.
234 */
235 if ((__boot_cpu_mode & MODE_MASK) == HYP_MODE)
236 writel_relaxed(virt_to_phys(omap5_secondary_hyp_startup),
237 base + OMAP_AUX_CORE_BOOT_1);
238 else
239 writel_relaxed(virt_to_phys(omap5_secondary_startup),
240 base + OMAP_AUX_CORE_BOOT_1);
232 241
233 } 242 }
234 243
235 struct smp_operations omap4_smp_ops __initdata = { 244 struct smp_operations omap4_smp_ops __initdata = {
236 .smp_init_cpus = omap4_smp_init_cpus, 245 .smp_init_cpus = omap4_smp_init_cpus,
237 .smp_prepare_cpus = omap4_smp_prepare_cpus, 246 .smp_prepare_cpus = omap4_smp_prepare_cpus,
238 .smp_secondary_init = omap4_secondary_init, 247 .smp_secondary_init = omap4_secondary_init,
239 .smp_boot_secondary = omap4_boot_secondary, 248 .smp_boot_secondary = omap4_boot_secondary,
240 #ifdef CONFIG_HOTPLUG_CPU 249 #ifdef CONFIG_HOTPLUG_CPU
241 .cpu_die = omap4_cpu_die, 250 .cpu_die = omap4_cpu_die,
242 #endif 251 #endif
243 }; 252 };
244 253
arch/arm/mach-omap2/timer.c
1 /* 1 /*
2 * linux/arch/arm/mach-omap2/timer.c 2 * linux/arch/arm/mach-omap2/timer.c
3 * 3 *
4 * OMAP2 GP timer support. 4 * OMAP2 GP timer support.
5 * 5 *
6 * Copyright (C) 2009 Nokia Corporation 6 * Copyright (C) 2009 Nokia Corporation
7 * 7 *
8 * Update to use new clocksource/clockevent layers 8 * Update to use new clocksource/clockevent layers
9 * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> 9 * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com>
10 * Copyright (C) 2007 MontaVista Software, Inc. 10 * Copyright (C) 2007 MontaVista Software, Inc.
11 * 11 *
12 * Original driver: 12 * Original driver:
13 * Copyright (C) 2005 Nokia Corporation 13 * Copyright (C) 2005 Nokia Corporation
14 * Author: Paul Mundt <paul.mundt@nokia.com> 14 * Author: Paul Mundt <paul.mundt@nokia.com>
15 * Juha Yrjรถlรค <juha.yrjola@nokia.com> 15 * Juha Yrjรถlรค <juha.yrjola@nokia.com>
16 * OMAP Dual-mode timer framework support by Timo Teras 16 * OMAP Dual-mode timer framework support by Timo Teras
17 * 17 *
18 * Some parts based off of TI's 24xx code: 18 * Some parts based off of TI's 24xx code:
19 * 19 *
20 * Copyright (C) 2004-2009 Texas Instruments, Inc. 20 * Copyright (C) 2004-2009 Texas Instruments, Inc.
21 * 21 *
22 * Roughly modelled after the OMAP1 MPU timer code. 22 * Roughly modelled after the OMAP1 MPU timer code.
23 * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com> 23 * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com>
24 * 24 *
25 * This file is subject to the terms and conditions of the GNU General Public 25 * This file is subject to the terms and conditions of the GNU General Public
26 * License. See the file "COPYING" in the main directory of this archive 26 * License. See the file "COPYING" in the main directory of this archive
27 * for more details. 27 * for more details.
28 */ 28 */
29 #include <linux/init.h> 29 #include <linux/init.h>
30 #include <linux/time.h> 30 #include <linux/time.h>
31 #include <linux/interrupt.h> 31 #include <linux/interrupt.h>
32 #include <linux/err.h> 32 #include <linux/err.h>
33 #include <linux/clk.h> 33 #include <linux/clk.h>
34 #include <linux/delay.h> 34 #include <linux/delay.h>
35 #include <linux/irq.h> 35 #include <linux/irq.h>
36 #include <linux/clocksource.h> 36 #include <linux/clocksource.h>
37 #include <linux/clockchips.h> 37 #include <linux/clockchips.h>
38 #include <linux/slab.h> 38 #include <linux/slab.h>
39 #include <linux/of.h> 39 #include <linux/of.h>
40 #include <linux/of_address.h> 40 #include <linux/of_address.h>
41 #include <linux/of_irq.h> 41 #include <linux/of_irq.h>
42 #include <linux/platform_device.h> 42 #include <linux/platform_device.h>
43 #include <linux/platform_data/dmtimer-omap.h> 43 #include <linux/platform_data/dmtimer-omap.h>
44 #include <linux/sched_clock.h> 44 #include <linux/sched_clock.h>
45 45
46 #include <asm/mach/time.h> 46 #include <asm/mach/time.h>
47 #include <asm/smp_twd.h> 47 #include <asm/smp_twd.h>
48 48
49 #include "omap_hwmod.h" 49 #include "omap_hwmod.h"
50 #include "omap_device.h" 50 #include "omap_device.h"
51 #include <plat/counter-32k.h> 51 #include <plat/counter-32k.h>
52 #include <plat/dmtimer.h> 52 #include <plat/dmtimer.h>
53 #include "omap-pm.h" 53 #include "omap-pm.h"
54 54
55 #include "soc.h" 55 #include "soc.h"
56 #include "common.h" 56 #include "common.h"
57 #include "control.h"
57 #include "powerdomain.h" 58 #include "powerdomain.h"
58 #include "omap-secure.h" 59 #include "omap-secure.h"
59 60
60 #define REALTIME_COUNTER_BASE 0x48243200 61 #define REALTIME_COUNTER_BASE 0x48243200
61 #define INCREMENTER_NUMERATOR_OFFSET 0x10 62 #define INCREMENTER_NUMERATOR_OFFSET 0x10
62 #define INCREMENTER_DENUMERATOR_RELOAD_OFFSET 0x14 63 #define INCREMENTER_DENUMERATOR_RELOAD_OFFSET 0x14
63 #define NUMERATOR_DENUMERATOR_MASK 0xfffff000 64 #define NUMERATOR_DENUMERATOR_MASK 0xfffff000
64 65
65 /* Clockevent code */ 66 /* Clockevent code */
66 67
67 static struct omap_dm_timer clkev; 68 static struct omap_dm_timer clkev;
68 static struct clock_event_device clockevent_gpt; 69 static struct clock_event_device clockevent_gpt;
69 70
70 #ifdef CONFIG_SOC_HAS_REALTIME_COUNTER 71 #ifdef CONFIG_SOC_HAS_REALTIME_COUNTER
71 static unsigned long arch_timer_freq; 72 static unsigned long arch_timer_freq;
72 73
73 void set_cntfreq(void) 74 void set_cntfreq(void)
74 { 75 {
75 omap_smc1(OMAP5_DRA7_MON_SET_CNTFRQ_INDEX, arch_timer_freq); 76 omap_smc1(OMAP5_DRA7_MON_SET_CNTFRQ_INDEX, arch_timer_freq);
76 } 77 }
77 #endif 78 #endif
78 79
79 static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id) 80 static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id)
80 { 81 {
81 struct clock_event_device *evt = &clockevent_gpt; 82 struct clock_event_device *evt = &clockevent_gpt;
82 83
83 __omap_dm_timer_write_status(&clkev, OMAP_TIMER_INT_OVERFLOW); 84 __omap_dm_timer_write_status(&clkev, OMAP_TIMER_INT_OVERFLOW);
84 85
85 evt->event_handler(evt); 86 evt->event_handler(evt);
86 return IRQ_HANDLED; 87 return IRQ_HANDLED;
87 } 88 }
88 89
89 static struct irqaction omap2_gp_timer_irq = { 90 static struct irqaction omap2_gp_timer_irq = {
90 .name = "gp_timer", 91 .name = "gp_timer",
91 .flags = IRQF_TIMER | IRQF_IRQPOLL, 92 .flags = IRQF_TIMER | IRQF_IRQPOLL,
92 .handler = omap2_gp_timer_interrupt, 93 .handler = omap2_gp_timer_interrupt,
93 }; 94 };
94 95
95 static int omap2_gp_timer_set_next_event(unsigned long cycles, 96 static int omap2_gp_timer_set_next_event(unsigned long cycles,
96 struct clock_event_device *evt) 97 struct clock_event_device *evt)
97 { 98 {
98 __omap_dm_timer_load_start(&clkev, OMAP_TIMER_CTRL_ST, 99 __omap_dm_timer_load_start(&clkev, OMAP_TIMER_CTRL_ST,
99 0xffffffff - cycles, OMAP_TIMER_POSTED); 100 0xffffffff - cycles, OMAP_TIMER_POSTED);
100 101
101 return 0; 102 return 0;
102 } 103 }
103 104
104 static void omap2_gp_timer_set_mode(enum clock_event_mode mode, 105 static void omap2_gp_timer_set_mode(enum clock_event_mode mode,
105 struct clock_event_device *evt) 106 struct clock_event_device *evt)
106 { 107 {
107 u32 period; 108 u32 period;
108 109
109 __omap_dm_timer_stop(&clkev, OMAP_TIMER_POSTED, clkev.rate); 110 __omap_dm_timer_stop(&clkev, OMAP_TIMER_POSTED, clkev.rate);
110 111
111 switch (mode) { 112 switch (mode) {
112 case CLOCK_EVT_MODE_PERIODIC: 113 case CLOCK_EVT_MODE_PERIODIC:
113 period = clkev.rate / HZ; 114 period = clkev.rate / HZ;
114 period -= 1; 115 period -= 1;
115 /* Looks like we need to first set the load value separately */ 116 /* Looks like we need to first set the load value separately */
116 __omap_dm_timer_write(&clkev, OMAP_TIMER_LOAD_REG, 117 __omap_dm_timer_write(&clkev, OMAP_TIMER_LOAD_REG,
117 0xffffffff - period, OMAP_TIMER_POSTED); 118 0xffffffff - period, OMAP_TIMER_POSTED);
118 __omap_dm_timer_load_start(&clkev, 119 __omap_dm_timer_load_start(&clkev,
119 OMAP_TIMER_CTRL_AR | OMAP_TIMER_CTRL_ST, 120 OMAP_TIMER_CTRL_AR | OMAP_TIMER_CTRL_ST,
120 0xffffffff - period, OMAP_TIMER_POSTED); 121 0xffffffff - period, OMAP_TIMER_POSTED);
121 break; 122 break;
122 case CLOCK_EVT_MODE_ONESHOT: 123 case CLOCK_EVT_MODE_ONESHOT:
123 break; 124 break;
124 case CLOCK_EVT_MODE_UNUSED: 125 case CLOCK_EVT_MODE_UNUSED:
125 case CLOCK_EVT_MODE_SHUTDOWN: 126 case CLOCK_EVT_MODE_SHUTDOWN:
126 case CLOCK_EVT_MODE_RESUME: 127 case CLOCK_EVT_MODE_RESUME:
127 break; 128 break;
128 } 129 }
129 } 130 }
130 131
131 static struct clock_event_device clockevent_gpt = { 132 static struct clock_event_device clockevent_gpt = {
132 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, 133 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
133 .rating = 300, 134 .rating = 300,
134 .set_next_event = omap2_gp_timer_set_next_event, 135 .set_next_event = omap2_gp_timer_set_next_event,
135 .set_mode = omap2_gp_timer_set_mode, 136 .set_mode = omap2_gp_timer_set_mode,
136 }; 137 };
137 138
138 static struct property device_disabled = { 139 static struct property device_disabled = {
139 .name = "status", 140 .name = "status",
140 .length = sizeof("disabled"), 141 .length = sizeof("disabled"),
141 .value = "disabled", 142 .value = "disabled",
142 }; 143 };
143 144
144 static const struct of_device_id omap_timer_match[] __initconst = { 145 static const struct of_device_id omap_timer_match[] __initconst = {
145 { .compatible = "ti,omap2420-timer", }, 146 { .compatible = "ti,omap2420-timer", },
146 { .compatible = "ti,omap3430-timer", }, 147 { .compatible = "ti,omap3430-timer", },
147 { .compatible = "ti,omap4430-timer", }, 148 { .compatible = "ti,omap4430-timer", },
148 { .compatible = "ti,omap5430-timer", }, 149 { .compatible = "ti,omap5430-timer", },
149 { .compatible = "ti,am335x-timer", }, 150 { .compatible = "ti,am335x-timer", },
150 { .compatible = "ti,am335x-timer-1ms", }, 151 { .compatible = "ti,am335x-timer-1ms", },
151 { } 152 { }
152 }; 153 };
153 154
154 /** 155 /**
155 * omap_get_timer_dt - get a timer using device-tree 156 * omap_get_timer_dt - get a timer using device-tree
156 * @match - device-tree match structure for matching a device type 157 * @match - device-tree match structure for matching a device type
157 * @property - optional timer property to match 158 * @property - optional timer property to match
158 * 159 *
159 * Helper function to get a timer during early boot using device-tree for use 160 * Helper function to get a timer during early boot using device-tree for use
160 * as kernel system timer. Optionally, the property argument can be used to 161 * as kernel system timer. Optionally, the property argument can be used to
161 * select a timer with a specific property. Once a timer is found then mark 162 * select a timer with a specific property. Once a timer is found then mark
162 * the timer node in device-tree as disabled, to prevent the kernel from 163 * the timer node in device-tree as disabled, to prevent the kernel from
163 * registering this timer as a platform device and so no one else can use it. 164 * registering this timer as a platform device and so no one else can use it.
164 */ 165 */
165 static struct device_node * __init omap_get_timer_dt(const struct of_device_id *match, 166 static struct device_node * __init omap_get_timer_dt(const struct of_device_id *match,
166 const char *property) 167 const char *property)
167 { 168 {
168 struct device_node *np; 169 struct device_node *np;
169 170
170 for_each_matching_node(np, match) { 171 for_each_matching_node(np, match) {
171 if (!of_device_is_available(np)) 172 if (!of_device_is_available(np))
172 continue; 173 continue;
173 174
174 if (property && !of_get_property(np, property, NULL)) 175 if (property && !of_get_property(np, property, NULL))
175 continue; 176 continue;
176 177
177 if (!property && (of_get_property(np, "ti,timer-alwon", NULL) || 178 if (!property && (of_get_property(np, "ti,timer-alwon", NULL) ||
178 of_get_property(np, "ti,timer-dsp", NULL) || 179 of_get_property(np, "ti,timer-dsp", NULL) ||
179 of_get_property(np, "ti,timer-pwm", NULL) || 180 of_get_property(np, "ti,timer-pwm", NULL) ||
180 of_get_property(np, "ti,timer-secure", NULL))) 181 of_get_property(np, "ti,timer-secure", NULL)))
181 continue; 182 continue;
182 183
183 of_add_property(np, &device_disabled); 184 of_add_property(np, &device_disabled);
184 return np; 185 return np;
185 } 186 }
186 187
187 return NULL; 188 return NULL;
188 } 189 }
189 190
190 /** 191 /**
191 * omap_dmtimer_init - initialisation function when device tree is used 192 * omap_dmtimer_init - initialisation function when device tree is used
192 * 193 *
193 * For secure OMAP3 devices, timers with device type "timer-secure" cannot 194 * For secure OMAP3 devices, timers with device type "timer-secure" cannot
194 * be used by the kernel as they are reserved. Therefore, to prevent the 195 * be used by the kernel as they are reserved. Therefore, to prevent the
195 * kernel registering these devices remove them dynamically from the device 196 * kernel registering these devices remove them dynamically from the device
196 * tree on boot. 197 * tree on boot.
197 */ 198 */
198 static void __init omap_dmtimer_init(void) 199 static void __init omap_dmtimer_init(void)
199 { 200 {
200 struct device_node *np; 201 struct device_node *np;
201 202
202 if (!cpu_is_omap34xx()) 203 if (!cpu_is_omap34xx())
203 return; 204 return;
204 205
205 /* If we are a secure device, remove any secure timer nodes */ 206 /* If we are a secure device, remove any secure timer nodes */
206 if ((omap_type() != OMAP2_DEVICE_TYPE_GP)) { 207 if ((omap_type() != OMAP2_DEVICE_TYPE_GP)) {
207 np = omap_get_timer_dt(omap_timer_match, "ti,timer-secure"); 208 np = omap_get_timer_dt(omap_timer_match, "ti,timer-secure");
208 if (np) 209 if (np)
209 of_node_put(np); 210 of_node_put(np);
210 } 211 }
211 } 212 }
212 213
213 /** 214 /**
214 * omap_dm_timer_get_errata - get errata flags for a timer 215 * omap_dm_timer_get_errata - get errata flags for a timer
215 * 216 *
216 * Get the timer errata flags that are specific to the OMAP device being used. 217 * Get the timer errata flags that are specific to the OMAP device being used.
217 */ 218 */
218 static u32 __init omap_dm_timer_get_errata(void) 219 static u32 __init omap_dm_timer_get_errata(void)
219 { 220 {
220 if (cpu_is_omap24xx()) 221 if (cpu_is_omap24xx())
221 return 0; 222 return 0;
222 223
223 return OMAP_TIMER_ERRATA_I103_I767; 224 return OMAP_TIMER_ERRATA_I103_I767;
224 } 225 }
225 226
226 static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, 227 static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
227 const char *fck_source, 228 const char *fck_source,
228 const char *property, 229 const char *property,
229 const char **timer_name, 230 const char **timer_name,
230 int posted) 231 int posted)
231 { 232 {
232 char name[10]; /* 10 = sizeof("gptXX_Xck0") */ 233 char name[10]; /* 10 = sizeof("gptXX_Xck0") */
233 const char *oh_name = NULL; 234 const char *oh_name = NULL;
234 struct device_node *np; 235 struct device_node *np;
235 struct omap_hwmod *oh; 236 struct omap_hwmod *oh;
236 struct resource irq, mem; 237 struct resource irq, mem;
237 struct clk *src; 238 struct clk *src;
238 int r = 0; 239 int r = 0;
239 240
240 if (of_have_populated_dt()) { 241 if (of_have_populated_dt()) {
241 np = omap_get_timer_dt(omap_timer_match, property); 242 np = omap_get_timer_dt(omap_timer_match, property);
242 if (!np) 243 if (!np)
243 return -ENODEV; 244 return -ENODEV;
244 245
245 of_property_read_string_index(np, "ti,hwmods", 0, &oh_name); 246 of_property_read_string_index(np, "ti,hwmods", 0, &oh_name);
246 if (!oh_name) 247 if (!oh_name)
247 return -ENODEV; 248 return -ENODEV;
248 249
249 timer->irq = irq_of_parse_and_map(np, 0); 250 timer->irq = irq_of_parse_and_map(np, 0);
250 if (!timer->irq) 251 if (!timer->irq)
251 return -ENXIO; 252 return -ENXIO;
252 253
253 timer->io_base = of_iomap(np, 0); 254 timer->io_base = of_iomap(np, 0);
254 255
255 of_node_put(np); 256 of_node_put(np);
256 } else { 257 } else {
257 if (omap_dm_timer_reserve_systimer(timer->id)) 258 if (omap_dm_timer_reserve_systimer(timer->id))
258 return -ENODEV; 259 return -ENODEV;
259 260
260 sprintf(name, "timer%d", timer->id); 261 sprintf(name, "timer%d", timer->id);
261 oh_name = name; 262 oh_name = name;
262 } 263 }
263 264
264 oh = omap_hwmod_lookup(oh_name); 265 oh = omap_hwmod_lookup(oh_name);
265 if (!oh) 266 if (!oh)
266 return -ENODEV; 267 return -ENODEV;
267 268
268 *timer_name = oh->name; 269 *timer_name = oh->name;
269 270
270 if (!of_have_populated_dt()) { 271 if (!of_have_populated_dt()) {
271 r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL, 272 r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL,
272 &irq); 273 &irq);
273 if (r) 274 if (r)
274 return -ENXIO; 275 return -ENXIO;
275 timer->irq = irq.start; 276 timer->irq = irq.start;
276 277
277 r = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM, NULL, 278 r = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM, NULL,
278 &mem); 279 &mem);
279 if (r) 280 if (r)
280 return -ENXIO; 281 return -ENXIO;
281 282
282 /* Static mapping, never released */ 283 /* Static mapping, never released */
283 timer->io_base = ioremap(mem.start, mem.end - mem.start); 284 timer->io_base = ioremap(mem.start, mem.end - mem.start);
284 } 285 }
285 286
286 if (!timer->io_base) 287 if (!timer->io_base)
287 return -ENXIO; 288 return -ENXIO;
288 289
289 /* After the dmtimer is using hwmod these clocks won't be needed */ 290 /* After the dmtimer is using hwmod these clocks won't be needed */
290 timer->fclk = clk_get(NULL, omap_hwmod_get_main_clk(oh)); 291 timer->fclk = clk_get(NULL, omap_hwmod_get_main_clk(oh));
291 if (IS_ERR(timer->fclk)) 292 if (IS_ERR(timer->fclk))
292 return PTR_ERR(timer->fclk); 293 return PTR_ERR(timer->fclk);
293 294
294 src = clk_get(NULL, fck_source); 295 src = clk_get(NULL, fck_source);
295 if (IS_ERR(src)) 296 if (IS_ERR(src))
296 return PTR_ERR(src); 297 return PTR_ERR(src);
297 298
298 if (clk_get_parent(timer->fclk) != src) { 299 if (clk_get_parent(timer->fclk) != src) {
299 r = clk_set_parent(timer->fclk, src); 300 r = clk_set_parent(timer->fclk, src);
300 if (r < 0) { 301 if (r < 0) {
301 pr_warn("%s: %s cannot set source\n", __func__, 302 pr_warn("%s: %s cannot set source\n", __func__,
302 oh->name); 303 oh->name);
303 clk_put(src); 304 clk_put(src);
304 return r; 305 return r;
305 } 306 }
306 } 307 }
307 308
308 clk_put(src); 309 clk_put(src);
309 310
310 omap_hwmod_setup_one(oh_name); 311 omap_hwmod_setup_one(oh_name);
311 omap_hwmod_enable(oh); 312 omap_hwmod_enable(oh);
312 __omap_dm_timer_init_regs(timer); 313 __omap_dm_timer_init_regs(timer);
313 314
314 if (posted) 315 if (posted)
315 __omap_dm_timer_enable_posted(timer); 316 __omap_dm_timer_enable_posted(timer);
316 317
317 /* Check that the intended posted configuration matches the actual */ 318 /* Check that the intended posted configuration matches the actual */
318 if (posted != timer->posted) 319 if (posted != timer->posted)
319 return -EINVAL; 320 return -EINVAL;
320 321
321 timer->rate = clk_get_rate(timer->fclk); 322 timer->rate = clk_get_rate(timer->fclk);
322 timer->reserved = 1; 323 timer->reserved = 1;
323 324
324 return r; 325 return r;
325 } 326 }
326 327
327 static void __init omap2_gp_clockevent_init(int gptimer_id, 328 static void __init omap2_gp_clockevent_init(int gptimer_id,
328 const char *fck_source, 329 const char *fck_source,
329 const char *property) 330 const char *property)
330 { 331 {
331 int res; 332 int res;
332 333
333 clkev.id = gptimer_id; 334 clkev.id = gptimer_id;
334 clkev.errata = omap_dm_timer_get_errata(); 335 clkev.errata = omap_dm_timer_get_errata();
335 336
336 /* 337 /*
337 * For clock-event timers we never read the timer counter and 338 * For clock-event timers we never read the timer counter and
338 * so we are not impacted by errata i103 and i767. Therefore, 339 * so we are not impacted by errata i103 and i767. Therefore,
339 * we can safely ignore this errata for clock-event timers. 340 * we can safely ignore this errata for clock-event timers.
340 */ 341 */
341 __omap_dm_timer_override_errata(&clkev, OMAP_TIMER_ERRATA_I103_I767); 342 __omap_dm_timer_override_errata(&clkev, OMAP_TIMER_ERRATA_I103_I767);
342 343
343 res = omap_dm_timer_init_one(&clkev, fck_source, property, 344 res = omap_dm_timer_init_one(&clkev, fck_source, property,
344 &clockevent_gpt.name, OMAP_TIMER_POSTED); 345 &clockevent_gpt.name, OMAP_TIMER_POSTED);
345 BUG_ON(res); 346 BUG_ON(res);
346 347
347 omap2_gp_timer_irq.dev_id = &clkev; 348 omap2_gp_timer_irq.dev_id = &clkev;
348 setup_irq(clkev.irq, &omap2_gp_timer_irq); 349 setup_irq(clkev.irq, &omap2_gp_timer_irq);
349 350
350 __omap_dm_timer_int_enable(&clkev, OMAP_TIMER_INT_OVERFLOW); 351 __omap_dm_timer_int_enable(&clkev, OMAP_TIMER_INT_OVERFLOW);
351 352
352 clockevent_gpt.cpumask = cpu_possible_mask; 353 clockevent_gpt.cpumask = cpu_possible_mask;
353 clockevent_gpt.irq = omap_dm_timer_get_irq(&clkev); 354 clockevent_gpt.irq = omap_dm_timer_get_irq(&clkev);
354 clockevents_config_and_register(&clockevent_gpt, clkev.rate, 355 clockevents_config_and_register(&clockevent_gpt, clkev.rate,
355 3, /* Timer internal resynch latency */ 356 3, /* Timer internal resynch latency */
356 0xffffffff); 357 0xffffffff);
357 358
358 pr_info("OMAP clockevent source: %s at %lu Hz\n", clockevent_gpt.name, 359 pr_info("OMAP clockevent source: %s at %lu Hz\n", clockevent_gpt.name,
359 clkev.rate); 360 clkev.rate);
360 } 361 }
361 362
362 /* Clocksource code */ 363 /* Clocksource code */
363 static struct omap_dm_timer clksrc; 364 static struct omap_dm_timer clksrc;
364 static bool use_gptimer_clksrc __initdata; 365 static bool use_gptimer_clksrc __initdata;
365 366
366 /* 367 /*
367 * clocksource 368 * clocksource
368 */ 369 */
369 static cycle_t clocksource_read_cycles(struct clocksource *cs) 370 static cycle_t clocksource_read_cycles(struct clocksource *cs)
370 { 371 {
371 return (cycle_t)__omap_dm_timer_read_counter(&clksrc, 372 return (cycle_t)__omap_dm_timer_read_counter(&clksrc,
372 OMAP_TIMER_NONPOSTED); 373 OMAP_TIMER_NONPOSTED);
373 } 374 }
374 375
375 static struct clocksource clocksource_gpt = { 376 static struct clocksource clocksource_gpt = {
376 .rating = 300, 377 .rating = 300,
377 .read = clocksource_read_cycles, 378 .read = clocksource_read_cycles,
378 .mask = CLOCKSOURCE_MASK(32), 379 .mask = CLOCKSOURCE_MASK(32),
379 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 380 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
380 }; 381 };
381 382
382 static u64 notrace dmtimer_read_sched_clock(void) 383 static u64 notrace dmtimer_read_sched_clock(void)
383 { 384 {
384 if (clksrc.reserved) 385 if (clksrc.reserved)
385 return __omap_dm_timer_read_counter(&clksrc, 386 return __omap_dm_timer_read_counter(&clksrc,
386 OMAP_TIMER_NONPOSTED); 387 OMAP_TIMER_NONPOSTED);
387 388
388 return 0; 389 return 0;
389 } 390 }
390 391
391 static const struct of_device_id omap_counter_match[] __initconst = { 392 static const struct of_device_id omap_counter_match[] __initconst = {
392 { .compatible = "ti,omap-counter32k", }, 393 { .compatible = "ti,omap-counter32k", },
393 { } 394 { }
394 }; 395 };
395 396
396 /* Setup free-running counter for clocksource */ 397 /* Setup free-running counter for clocksource */
397 static int __init __maybe_unused omap2_sync32k_clocksource_init(void) 398 static int __init __maybe_unused omap2_sync32k_clocksource_init(void)
398 { 399 {
399 int ret; 400 int ret;
400 struct device_node *np = NULL; 401 struct device_node *np = NULL;
401 struct omap_hwmod *oh; 402 struct omap_hwmod *oh;
402 void __iomem *vbase; 403 void __iomem *vbase;
403 const char *oh_name = "counter_32k"; 404 const char *oh_name = "counter_32k";
404 405
405 /* 406 /*
406 * If device-tree is present, then search the DT blob 407 * If device-tree is present, then search the DT blob
407 * to see if the 32kHz counter is supported. 408 * to see if the 32kHz counter is supported.
408 */ 409 */
409 if (of_have_populated_dt()) { 410 if (of_have_populated_dt()) {
410 np = omap_get_timer_dt(omap_counter_match, NULL); 411 np = omap_get_timer_dt(omap_counter_match, NULL);
411 if (!np) 412 if (!np)
412 return -ENODEV; 413 return -ENODEV;
413 414
414 of_property_read_string_index(np, "ti,hwmods", 0, &oh_name); 415 of_property_read_string_index(np, "ti,hwmods", 0, &oh_name);
415 if (!oh_name) 416 if (!oh_name)
416 return -ENODEV; 417 return -ENODEV;
417 } 418 }
418 419
419 /* 420 /*
420 * First check hwmod data is available for sync32k counter 421 * First check hwmod data is available for sync32k counter
421 */ 422 */
422 oh = omap_hwmod_lookup(oh_name); 423 oh = omap_hwmod_lookup(oh_name);
423 if (!oh || oh->slaves_cnt == 0) 424 if (!oh || oh->slaves_cnt == 0)
424 return -ENODEV; 425 return -ENODEV;
425 426
426 omap_hwmod_setup_one(oh_name); 427 omap_hwmod_setup_one(oh_name);
427 428
428 if (np) { 429 if (np) {
429 vbase = of_iomap(np, 0); 430 vbase = of_iomap(np, 0);
430 of_node_put(np); 431 of_node_put(np);
431 } else { 432 } else {
432 vbase = omap_hwmod_get_mpu_rt_va(oh); 433 vbase = omap_hwmod_get_mpu_rt_va(oh);
433 } 434 }
434 435
435 if (!vbase) { 436 if (!vbase) {
436 pr_warn("%s: failed to get counter_32k resource\n", __func__); 437 pr_warn("%s: failed to get counter_32k resource\n", __func__);
437 return -ENXIO; 438 return -ENXIO;
438 } 439 }
439 440
440 ret = omap_hwmod_enable(oh); 441 ret = omap_hwmod_enable(oh);
441 if (ret) { 442 if (ret) {
442 pr_warn("%s: failed to enable counter_32k module (%d)\n", 443 pr_warn("%s: failed to enable counter_32k module (%d)\n",
443 __func__, ret); 444 __func__, ret);
444 return ret; 445 return ret;
445 } 446 }
446 447
447 ret = omap_init_clocksource_32k(vbase); 448 ret = omap_init_clocksource_32k(vbase);
448 if (ret) { 449 if (ret) {
449 pr_warn("%s: failed to initialize counter_32k as a clocksource (%d)\n", 450 pr_warn("%s: failed to initialize counter_32k as a clocksource (%d)\n",
450 __func__, ret); 451 __func__, ret);
451 omap_hwmod_idle(oh); 452 omap_hwmod_idle(oh);
452 } 453 }
453 454
454 return ret; 455 return ret;
455 } 456 }
456 457
457 static void __init omap2_gptimer_clocksource_init(int gptimer_id, 458 static void __init omap2_gptimer_clocksource_init(int gptimer_id,
458 const char *fck_source, 459 const char *fck_source,
459 const char *property) 460 const char *property)
460 { 461 {
461 int res; 462 int res;
462 463
463 clksrc.id = gptimer_id; 464 clksrc.id = gptimer_id;
464 clksrc.errata = omap_dm_timer_get_errata(); 465 clksrc.errata = omap_dm_timer_get_errata();
465 466
466 res = omap_dm_timer_init_one(&clksrc, fck_source, property, 467 res = omap_dm_timer_init_one(&clksrc, fck_source, property,
467 &clocksource_gpt.name, 468 &clocksource_gpt.name,
468 OMAP_TIMER_NONPOSTED); 469 OMAP_TIMER_NONPOSTED);
469 BUG_ON(res); 470 BUG_ON(res);
470 471
471 __omap_dm_timer_load_start(&clksrc, 472 __omap_dm_timer_load_start(&clksrc,
472 OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, 473 OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0,
473 OMAP_TIMER_NONPOSTED); 474 OMAP_TIMER_NONPOSTED);
474 sched_clock_register(dmtimer_read_sched_clock, 32, clksrc.rate); 475 sched_clock_register(dmtimer_read_sched_clock, 32, clksrc.rate);
475 476
476 if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) 477 if (clocksource_register_hz(&clocksource_gpt, clksrc.rate))
477 pr_err("Could not register clocksource %s\n", 478 pr_err("Could not register clocksource %s\n",
478 clocksource_gpt.name); 479 clocksource_gpt.name);
479 else 480 else
480 pr_info("OMAP clocksource: %s at %lu Hz\n", 481 pr_info("OMAP clocksource: %s at %lu Hz\n",
481 clocksource_gpt.name, clksrc.rate); 482 clocksource_gpt.name, clksrc.rate);
482 } 483 }
483 484
484 #ifdef CONFIG_SOC_HAS_REALTIME_COUNTER 485 #ifdef CONFIG_SOC_HAS_REALTIME_COUNTER
485 /* 486 /*
486 * The realtime counter also called master counter, is a free-running 487 * The realtime counter also called master counter, is a free-running
487 * counter, which is related to real time. It produces the count used 488 * counter, which is related to real time. It produces the count used
488 * by the CPU local timer peripherals in the MPU cluster. The timer counts 489 * by the CPU local timer peripherals in the MPU cluster. The timer counts
489 * at a rate of 6.144 MHz. Because the device operates on different clocks 490 * at a rate of 6.144 MHz. Because the device operates on different clocks
490 * in different power modes, the master counter shifts operation between 491 * in different power modes, the master counter shifts operation between
491 * clocks, adjusting the increment per clock in hardware accordingly to 492 * clocks, adjusting the increment per clock in hardware accordingly to
492 * maintain a constant count rate. 493 * maintain a constant count rate.
493 */ 494 */
494 static void __init realtime_counter_init(void) 495 static void __init realtime_counter_init(void)
495 { 496 {
496 void __iomem *base; 497 void __iomem *base;
497 static struct clk *sys_clk; 498 static struct clk *sys_clk;
498 unsigned long rate; 499 unsigned long rate;
499 unsigned int reg, num, den; 500 unsigned int reg;
501 unsigned long long num, den;
500 502
501 base = ioremap(REALTIME_COUNTER_BASE, SZ_32); 503 base = ioremap(REALTIME_COUNTER_BASE, SZ_32);
502 if (!base) { 504 if (!base) {
503 pr_err("%s: ioremap failed\n", __func__); 505 pr_err("%s: ioremap failed\n", __func__);
504 return; 506 return;
505 } 507 }
506 sys_clk = clk_get(NULL, "sys_clkin"); 508 sys_clk = clk_get(NULL, "sys_clkin");
507 if (IS_ERR(sys_clk)) { 509 if (IS_ERR(sys_clk)) {
508 pr_err("%s: failed to get system clock handle\n", __func__); 510 pr_err("%s: failed to get system clock handle\n", __func__);
509 iounmap(base); 511 iounmap(base);
510 return; 512 return;
511 } 513 }
512 514
513 rate = clk_get_rate(sys_clk); 515 rate = clk_get_rate(sys_clk);
516
517 if (soc_is_dra7xx()) {
518 /*
519 * Errata i856 says the 32.768KHz crystal does not start at
520 * power on, so the CPU falls back to an emulated 32KHz clock
521 * based on sysclk / 610 instead. This causes the master counter
522 * frequency to not be 6.144MHz but at sysclk / 610 * 375 / 2
523 * (OR sysclk * 75 / 244)
524 *
525 * This affects at least the DRA7/AM572x 1.0, 1.1 revisions.
526 * Of course any board built without a populated 32.768KHz
527 * crystal would also need this fix even if the CPU is fixed
528 * later.
529 *
530 * Either case can be detected by using the two speedselect bits
531 * If they are not 0, then the 32.768KHz clock driving the
532 * coarse counter that corrects the fine counter every time it
533 * ticks is actually rate/610 rather than 32.768KHz and we
534 * should compensate to avoid the 570ppm (at 20MHz, much worse
535 * at other rates) too fast system time.
536 */
537 reg = omap_ctrl_readl(DRA7_CTRL_CORE_BOOTSTRAP);
538 if (reg & DRA7_SPEEDSELECT_MASK) {
539 num = 75;
540 den = 244;
541 goto sysclk1_based;
542 }
543 }
544
514 /* Numerator/denumerator values refer TRM Realtime Counter section */ 545 /* Numerator/denumerator values refer TRM Realtime Counter section */
515 switch (rate) { 546 switch (rate) {
516 case 1200000: 547 case 12000000:
517 num = 64; 548 num = 64;
518 den = 125; 549 den = 125;
519 break; 550 break;
520 case 1300000: 551 case 13000000:
521 num = 768; 552 num = 768;
522 den = 1625; 553 den = 1625;
523 break; 554 break;
524 case 19200000: 555 case 19200000:
525 num = 8; 556 num = 8;
526 den = 25; 557 den = 25;
527 break; 558 break;
528 case 20000000: 559 case 20000000:
529 num = 192; 560 num = 192;
530 den = 625; 561 den = 625;
531 break; 562 break;
532 case 2600000: 563 case 26000000:
533 num = 384; 564 num = 384;
534 den = 1625; 565 den = 1625;
535 break; 566 break;
536 case 2700000: 567 case 27000000:
537 num = 256; 568 num = 256;
538 den = 1125; 569 den = 1125;
539 break; 570 break;
540 case 38400000: 571 case 38400000:
541 default: 572 default:
542 /* Program it for 38.4 MHz */ 573 /* Program it for 38.4 MHz */
543 num = 4; 574 num = 4;
544 den = 25; 575 den = 25;
545 break; 576 break;
546 } 577 }
547 578
579 sysclk1_based:
548 /* Program numerator and denumerator registers */ 580 /* Program numerator and denumerator registers */
549 reg = readl_relaxed(base + INCREMENTER_NUMERATOR_OFFSET) & 581 reg = readl_relaxed(base + INCREMENTER_NUMERATOR_OFFSET) &
550 NUMERATOR_DENUMERATOR_MASK; 582 NUMERATOR_DENUMERATOR_MASK;
551 reg |= num; 583 reg |= num;
552 writel_relaxed(reg, base + INCREMENTER_NUMERATOR_OFFSET); 584 writel_relaxed(reg, base + INCREMENTER_NUMERATOR_OFFSET);
553 585
554 reg = readl_relaxed(base + INCREMENTER_DENUMERATOR_RELOAD_OFFSET) & 586 reg = readl_relaxed(base + INCREMENTER_DENUMERATOR_RELOAD_OFFSET) &
555 NUMERATOR_DENUMERATOR_MASK; 587 NUMERATOR_DENUMERATOR_MASK;
556 reg |= den; 588 reg |= den;
557 writel_relaxed(reg, base + INCREMENTER_DENUMERATOR_RELOAD_OFFSET); 589 writel_relaxed(reg, base + INCREMENTER_DENUMERATOR_RELOAD_OFFSET);
558 590
559 arch_timer_freq = (rate / den) * num; 591 arch_timer_freq = DIV_ROUND_UP_ULL(rate * num, den);
560 set_cntfreq(); 592 set_cntfreq();
561 593
562 iounmap(base); 594 iounmap(base);
563 } 595 }
564 #else 596 #else
565 static inline void __init realtime_counter_init(void) 597 static inline void __init realtime_counter_init(void)
566 {} 598 {}
567 #endif 599 #endif
568 600
569 #define OMAP_SYS_GP_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \ 601 #define OMAP_SYS_GP_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \
570 clksrc_nr, clksrc_src, clksrc_prop) \ 602 clksrc_nr, clksrc_src, clksrc_prop) \
571 void __init omap##name##_gptimer_timer_init(void) \ 603 void __init omap##name##_gptimer_timer_init(void) \
572 { \ 604 { \
573 omap_clk_init(); \ 605 omap_clk_init(); \
574 omap_dmtimer_init(); \ 606 omap_dmtimer_init(); \
575 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ 607 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \
576 omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src, \ 608 omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src, \
577 clksrc_prop); \ 609 clksrc_prop); \
578 } 610 }
579 611
580 #define OMAP_SYS_32K_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \ 612 #define OMAP_SYS_32K_TIMER_INIT(name, clkev_nr, clkev_src, clkev_prop, \
581 clksrc_nr, clksrc_src, clksrc_prop) \ 613 clksrc_nr, clksrc_src, clksrc_prop) \
582 void __init omap##name##_sync32k_timer_init(void) \ 614 void __init omap##name##_sync32k_timer_init(void) \
583 { \ 615 { \
584 omap_clk_init(); \ 616 omap_clk_init(); \
585 omap_dmtimer_init(); \ 617 omap_dmtimer_init(); \
586 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \ 618 omap2_gp_clockevent_init((clkev_nr), clkev_src, clkev_prop); \
587 /* Enable the use of clocksource="gp_timer" kernel parameter */ \ 619 /* Enable the use of clocksource="gp_timer" kernel parameter */ \
588 if (use_gptimer_clksrc) \ 620 if (use_gptimer_clksrc) \
589 omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src, \ 621 omap2_gptimer_clocksource_init((clksrc_nr), clksrc_src, \
590 clksrc_prop); \ 622 clksrc_prop); \
591 else \ 623 else \
592 omap2_sync32k_clocksource_init(); \ 624 omap2_sync32k_clocksource_init(); \
593 } 625 }
594 626
595 #ifdef CONFIG_ARCH_OMAP2 627 #ifdef CONFIG_ARCH_OMAP2
596 OMAP_SYS_32K_TIMER_INIT(2, 1, "timer_32k_ck", "ti,timer-alwon", 628 OMAP_SYS_32K_TIMER_INIT(2, 1, "timer_32k_ck", "ti,timer-alwon",
597 2, "timer_sys_ck", NULL); 629 2, "timer_sys_ck", NULL);
598 #endif /* CONFIG_ARCH_OMAP2 */ 630 #endif /* CONFIG_ARCH_OMAP2 */
599 631
600 #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM43XX) 632 #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM43XX)
601 OMAP_SYS_32K_TIMER_INIT(3, 1, "timer_32k_ck", "ti,timer-alwon", 633 OMAP_SYS_32K_TIMER_INIT(3, 1, "timer_32k_ck", "ti,timer-alwon",
602 2, "timer_sys_ck", NULL); 634 2, "timer_sys_ck", NULL);
603 OMAP_SYS_32K_TIMER_INIT(3_secure, 12, "secure_32k_fck", "ti,timer-secure", 635 OMAP_SYS_32K_TIMER_INIT(3_secure, 12, "secure_32k_fck", "ti,timer-secure",
604 2, "timer_sys_ck", NULL); 636 2, "timer_sys_ck", NULL);
605 #endif /* CONFIG_ARCH_OMAP3 */ 637 #endif /* CONFIG_ARCH_OMAP3 */
606 638
607 #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) || \ 639 #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX) || \
608 defined(CONFIG_SOC_AM43XX) 640 defined(CONFIG_SOC_AM43XX)
609 OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL, 641 OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL,
610 1, "timer_sys_ck", "ti,timer-alwon"); 642 1, "timer_sys_ck", "ti,timer-alwon");
611 #endif 643 #endif
612 644
613 #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \ 645 #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \
614 defined(CONFIG_SOC_DRA7XX) 646 defined(CONFIG_SOC_DRA7XX)
615 static OMAP_SYS_32K_TIMER_INIT(4, 1, "timer_32k_ck", "ti,timer-alwon", 647 static OMAP_SYS_32K_TIMER_INIT(4, 1, "timer_32k_ck", "ti,timer-alwon",
616 2, "sys_clkin_ck", NULL); 648 2, "sys_clkin_ck", NULL);
617 #endif 649 #endif
618 650
619 #ifdef CONFIG_ARCH_OMAP4 651 #ifdef CONFIG_ARCH_OMAP4
620 #ifdef CONFIG_HAVE_ARM_TWD 652 #ifdef CONFIG_HAVE_ARM_TWD
621 static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, OMAP44XX_LOCAL_TWD_BASE, 29); 653 static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, OMAP44XX_LOCAL_TWD_BASE, 29);
622 void __init omap4_local_timer_init(void) 654 void __init omap4_local_timer_init(void)
623 { 655 {
624 omap4_sync32k_timer_init(); 656 omap4_sync32k_timer_init();
625 /* Local timers are not supprted on OMAP4430 ES1.0 */ 657 /* Local timers are not supprted on OMAP4430 ES1.0 */
626 if (omap_rev() != OMAP4430_REV_ES1_0) { 658 if (omap_rev() != OMAP4430_REV_ES1_0) {
627 int err; 659 int err;
628 660
629 if (of_have_populated_dt()) { 661 if (of_have_populated_dt()) {
630 clocksource_of_init(); 662 clocksource_of_init();
631 return; 663 return;
632 } 664 }
633 665
634 err = twd_local_timer_register(&twd_local_timer); 666 err = twd_local_timer_register(&twd_local_timer);
635 if (err) 667 if (err)
636 pr_err("twd_local_timer_register failed %d\n", err); 668 pr_err("twd_local_timer_register failed %d\n", err);
637 } 669 }
638 } 670 }
639 #else 671 #else
640 void __init omap4_local_timer_init(void) 672 void __init omap4_local_timer_init(void)
641 { 673 {
642 omap4_sync32k_timer_init(); 674 omap4_sync32k_timer_init();
643 } 675 }
644 #endif /* CONFIG_HAVE_ARM_TWD */ 676 #endif /* CONFIG_HAVE_ARM_TWD */
645 #endif /* CONFIG_ARCH_OMAP4 */ 677 #endif /* CONFIG_ARCH_OMAP4 */
646 678
647 #if defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX) 679 #if defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX)
648 void __init omap5_realtime_timer_init(void) 680 void __init omap5_realtime_timer_init(void)
649 { 681 {
650 omap4_sync32k_timer_init(); 682 omap4_sync32k_timer_init();
651 realtime_counter_init(); 683 realtime_counter_init();
652 684
653 clocksource_of_init(); 685 clocksource_of_init();
654 } 686 }
655 #endif /* CONFIG_SOC_OMAP5 || CONFIG_SOC_DRA7XX */ 687 #endif /* CONFIG_SOC_OMAP5 || CONFIG_SOC_DRA7XX */
656 688
657 /** 689 /**
658 * omap_timer_init - build and register timer device with an 690 * omap_timer_init - build and register timer device with an
659 * associated timer hwmod 691 * associated timer hwmod
660 * @oh: timer hwmod pointer to be used to build timer device 692 * @oh: timer hwmod pointer to be used to build timer device
661 * @user: parameter that can be passed from calling hwmod API 693 * @user: parameter that can be passed from calling hwmod API
662 * 694 *
663 * Called by omap_hwmod_for_each_by_class to register each of the timer 695 * Called by omap_hwmod_for_each_by_class to register each of the timer
664 * devices present in the system. The number of timer devices is known 696 * devices present in the system. The number of timer devices is known
665 * by parsing through the hwmod database for a given class name. At the 697 * by parsing through the hwmod database for a given class name. At the
666 * end of function call memory is allocated for timer device and it is 698 * end of function call memory is allocated for timer device and it is
667 * registered to the framework ready to be proved by the driver. 699 * registered to the framework ready to be proved by the driver.
668 */ 700 */
669 static int __init omap_timer_init(struct omap_hwmod *oh, void *unused) 701 static int __init omap_timer_init(struct omap_hwmod *oh, void *unused)
670 { 702 {
671 int id; 703 int id;
672 int ret = 0; 704 int ret = 0;
673 char *name = "omap_timer"; 705 char *name = "omap_timer";
674 struct dmtimer_platform_data *pdata; 706 struct dmtimer_platform_data *pdata;
675 struct platform_device *pdev; 707 struct platform_device *pdev;
676 struct omap_timer_capability_dev_attr *timer_dev_attr; 708 struct omap_timer_capability_dev_attr *timer_dev_attr;
677 709
678 pr_debug("%s: %s\n", __func__, oh->name); 710 pr_debug("%s: %s\n", __func__, oh->name);
679 711
680 /* on secure device, do not register secure timer */ 712 /* on secure device, do not register secure timer */
681 timer_dev_attr = oh->dev_attr; 713 timer_dev_attr = oh->dev_attr;
682 if (omap_type() != OMAP2_DEVICE_TYPE_GP && timer_dev_attr) 714 if (omap_type() != OMAP2_DEVICE_TYPE_GP && timer_dev_attr)
683 if (timer_dev_attr->timer_capability == OMAP_TIMER_SECURE) 715 if (timer_dev_attr->timer_capability == OMAP_TIMER_SECURE)
684 return ret; 716 return ret;
685 717
686 pdata = kzalloc(sizeof(*pdata), GFP_KERNEL); 718 pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
687 if (!pdata) { 719 if (!pdata) {
688 pr_err("%s: No memory for [%s]\n", __func__, oh->name); 720 pr_err("%s: No memory for [%s]\n", __func__, oh->name);
689 return -ENOMEM; 721 return -ENOMEM;
690 } 722 }
691 723
692 /* 724 /*
693 * Extract the IDs from name field in hwmod database 725 * Extract the IDs from name field in hwmod database
694 * and use the same for constructing ids' for the 726 * and use the same for constructing ids' for the
695 * timer devices. In a way, we are avoiding usage of 727 * timer devices. In a way, we are avoiding usage of
696 * static variable witin the function to do the same. 728 * static variable witin the function to do the same.
697 * CAUTION: We have to be careful and make sure the 729 * CAUTION: We have to be careful and make sure the
698 * name in hwmod database does not change in which case 730 * name in hwmod database does not change in which case
699 * we might either make corresponding change here or 731 * we might either make corresponding change here or
700 * switch back static variable mechanism. 732 * switch back static variable mechanism.
701 */ 733 */
702 sscanf(oh->name, "timer%2d", &id); 734 sscanf(oh->name, "timer%2d", &id);
703 735
704 if (timer_dev_attr) 736 if (timer_dev_attr)
705 pdata->timer_capability = timer_dev_attr->timer_capability; 737 pdata->timer_capability = timer_dev_attr->timer_capability;
706 738
707 pdata->timer_errata = omap_dm_timer_get_errata(); 739 pdata->timer_errata = omap_dm_timer_get_errata();
708 pdata->get_context_loss_count = omap_pm_get_dev_context_loss_count; 740 pdata->get_context_loss_count = omap_pm_get_dev_context_loss_count;
709 741
710 pdev = omap_device_build(name, id, oh, pdata, sizeof(*pdata)); 742 pdev = omap_device_build(name, id, oh, pdata, sizeof(*pdata));
711 743
712 if (IS_ERR(pdev)) { 744 if (IS_ERR(pdev)) {
713 pr_err("%s: Can't build omap_device for %s: %s.\n", 745 pr_err("%s: Can't build omap_device for %s: %s.\n",
714 __func__, name, oh->name); 746 __func__, name, oh->name);
715 ret = -EINVAL; 747 ret = -EINVAL;
716 } 748 }
717 749
718 kfree(pdata); 750 kfree(pdata);
719 751
720 return ret; 752 return ret;
721 } 753 }
722 754
723 /** 755 /**
724 * omap2_dm_timer_init - top level regular device initialization 756 * omap2_dm_timer_init - top level regular device initialization
725 * 757 *
726 * Uses dedicated hwmod api to parse through hwmod database for 758 * Uses dedicated hwmod api to parse through hwmod database for
727 * given class name and then build and register the timer device. 759 * given class name and then build and register the timer device.
728 */ 760 */
729 static int __init omap2_dm_timer_init(void) 761 static int __init omap2_dm_timer_init(void)
730 { 762 {
731 int ret; 763 int ret;
732 764
733 /* If dtb is there, the devices will be created dynamically */ 765 /* If dtb is there, the devices will be created dynamically */
734 if (of_have_populated_dt()) 766 if (of_have_populated_dt())
735 return -ENODEV; 767 return -ENODEV;
736 768
737 ret = omap_hwmod_for_each_by_class("timer", omap_timer_init, NULL); 769 ret = omap_hwmod_for_each_by_class("timer", omap_timer_init, NULL);
738 if (unlikely(ret)) { 770 if (unlikely(ret)) {
739 pr_err("%s: device registration failed.\n", __func__); 771 pr_err("%s: device registration failed.\n", __func__);
740 return -EINVAL; 772 return -EINVAL;
741 } 773 }
742 774
743 return 0; 775 return 0;
744 } 776 }
745 omap_arch_initcall(omap2_dm_timer_init); 777 omap_arch_initcall(omap2_dm_timer_init);
746 778
747 /** 779 /**
748 * omap2_override_clocksource - clocksource override with user configuration 780 * omap2_override_clocksource - clocksource override with user configuration
749 * 781 *
750 * Allows user to override default clocksource, using kernel parameter 782 * Allows user to override default clocksource, using kernel parameter
751 * clocksource="gp_timer" (For all OMAP2PLUS architectures) 783 * clocksource="gp_timer" (For all OMAP2PLUS architectures)
752 * 784 *
753 * Note that, here we are using same standard kernel parameter "clocksource=", 785 * Note that, here we are using same standard kernel parameter "clocksource=",
754 * and not introducing any OMAP specific interface. 786 * and not introducing any OMAP specific interface.
755 */ 787 */
756 static int __init omap2_override_clocksource(char *str) 788 static int __init omap2_override_clocksource(char *str)
757 { 789 {
758 if (!str) 790 if (!str)
759 return 0; 791 return 0;
760 /* 792 /*
761 * For OMAP architecture, we only have two options 793 * For OMAP architecture, we only have two options
762 * - sync_32k (default) 794 * - sync_32k (default)
763 * - gp_timer (sys_clk based) 795 * - gp_timer (sys_clk based)
764 */ 796 */
765 if (!strcmp(str, "gp_timer")) 797 if (!strcmp(str, "gp_timer"))
766 use_gptimer_clksrc = true; 798 use_gptimer_clksrc = true;
767 799
768 return 0; 800 return 0;
769 } 801 }
770 early_param("clocksource", omap2_override_clocksource); 802 early_param("clocksource", omap2_override_clocksource);
771 803