diff options
Diffstat (limited to 'arch/arm/mach-omap1')
-rw-r--r-- | arch/arm/mach-omap1/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-ams-delta.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-fsample.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-h2.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-h3.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-htcherald.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-innovator.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-nokia770.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-palmte.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-voiceblue.c | 107 | ||||
-rw-r--r-- | arch/arm/mach-omap1/reset.c | 25 |
11 files changed, 104 insertions, 79 deletions
diff --git a/arch/arm/mach-omap1/Makefile b/arch/arm/mach-omap1/Makefile index ba6009f27677..af98117043d2 100644 --- a/arch/arm/mach-omap1/Makefile +++ b/arch/arm/mach-omap1/Makefile | |||
@@ -4,7 +4,7 @@ | |||
4 | 4 | ||
5 | # Common support | 5 | # Common support |
6 | obj-y := io.o id.o sram.o time.o irq.o mux.o flash.o serial.o devices.o dma.o | 6 | obj-y := io.o id.o sram.o time.o irq.o mux.o flash.o serial.o devices.o dma.o |
7 | obj-y += clock.o clock_data.o opp_data.o | 7 | obj-y += clock.o clock_data.o opp_data.o reset.o |
8 | 8 | ||
9 | obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o | 9 | obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o |
10 | 10 | ||
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 22cc8c8df6cb..de88c9297b68 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -165,7 +165,7 @@ static struct map_desc ams_delta_io_desc[] __initdata = { | |||
165 | } | 165 | } |
166 | }; | 166 | }; |
167 | 167 | ||
168 | static struct omap_lcd_config ams_delta_lcd_config __initdata = { | 168 | static struct omap_lcd_config ams_delta_lcd_config = { |
169 | .ctrl_name = "internal", | 169 | .ctrl_name = "internal", |
170 | }; | 170 | }; |
171 | 171 | ||
@@ -175,7 +175,7 @@ static struct omap_usb_config ams_delta_usb_config __initdata = { | |||
175 | .pins[0] = 2, | 175 | .pins[0] = 2, |
176 | }; | 176 | }; |
177 | 177 | ||
178 | static struct omap_board_config_kernel ams_delta_config[] = { | 178 | static struct omap_board_config_kernel ams_delta_config[] __initdata = { |
179 | { OMAP_TAG_LCD, &ams_delta_lcd_config }, | 179 | { OMAP_TAG_LCD, &ams_delta_lcd_config }, |
180 | }; | 180 | }; |
181 | 181 | ||
@@ -208,14 +208,14 @@ static const struct matrix_keymap_data ams_delta_keymap_data = { | |||
208 | .keymap_size = ARRAY_SIZE(ams_delta_keymap), | 208 | .keymap_size = ARRAY_SIZE(ams_delta_keymap), |
209 | }; | 209 | }; |
210 | 210 | ||
211 | static struct omap_kp_platform_data ams_delta_kp_data = { | 211 | static struct omap_kp_platform_data ams_delta_kp_data __initdata = { |
212 | .rows = 8, | 212 | .rows = 8, |
213 | .cols = 8, | 213 | .cols = 8, |
214 | .keymap_data = &ams_delta_keymap_data, | 214 | .keymap_data = &ams_delta_keymap_data, |
215 | .delay = 9, | 215 | .delay = 9, |
216 | }; | 216 | }; |
217 | 217 | ||
218 | static struct platform_device ams_delta_kp_device = { | 218 | static struct platform_device ams_delta_kp_device __initdata = { |
219 | .name = "omap-keypad", | 219 | .name = "omap-keypad", |
220 | .id = -1, | 220 | .id = -1, |
221 | .dev = { | 221 | .dev = { |
@@ -225,12 +225,12 @@ static struct platform_device ams_delta_kp_device = { | |||
225 | .resource = ams_delta_kp_resources, | 225 | .resource = ams_delta_kp_resources, |
226 | }; | 226 | }; |
227 | 227 | ||
228 | static struct platform_device ams_delta_lcd_device = { | 228 | static struct platform_device ams_delta_lcd_device __initdata = { |
229 | .name = "lcd_ams_delta", | 229 | .name = "lcd_ams_delta", |
230 | .id = -1, | 230 | .id = -1, |
231 | }; | 231 | }; |
232 | 232 | ||
233 | static struct platform_device ams_delta_led_device = { | 233 | static struct platform_device ams_delta_led_device __initdata = { |
234 | .name = "ams-delta-led", | 234 | .name = "ams-delta-led", |
235 | .id = -1 | 235 | .id = -1 |
236 | }; | 236 | }; |
@@ -259,7 +259,7 @@ static int ams_delta_camera_power(struct device *dev, int power) | |||
259 | #define ams_delta_camera_power NULL | 259 | #define ams_delta_camera_power NULL |
260 | #endif | 260 | #endif |
261 | 261 | ||
262 | static struct soc_camera_link __initdata ams_delta_iclink = { | 262 | static struct soc_camera_link ams_delta_iclink = { |
263 | .bus_id = 0, /* OMAP1 SoC camera bus */ | 263 | .bus_id = 0, /* OMAP1 SoC camera bus */ |
264 | .i2c_adapter_id = 1, | 264 | .i2c_adapter_id = 1, |
265 | .board_info = &ams_delta_camera_board_info[0], | 265 | .board_info = &ams_delta_camera_board_info[0], |
@@ -267,7 +267,7 @@ static struct soc_camera_link __initdata ams_delta_iclink = { | |||
267 | .power = ams_delta_camera_power, | 267 | .power = ams_delta_camera_power, |
268 | }; | 268 | }; |
269 | 269 | ||
270 | static struct platform_device ams_delta_camera_device = { | 270 | static struct platform_device ams_delta_camera_device __initdata = { |
271 | .name = "soc-camera-pdrv", | 271 | .name = "soc-camera-pdrv", |
272 | .id = 0, | 272 | .id = 0, |
273 | .dev = { | 273 | .dev = { |
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index 0efb9dbae44c..87f173d93557 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -287,11 +287,11 @@ static struct platform_device *devices[] __initdata = { | |||
287 | &lcd_device, | 287 | &lcd_device, |
288 | }; | 288 | }; |
289 | 289 | ||
290 | static struct omap_lcd_config fsample_lcd_config __initdata = { | 290 | static struct omap_lcd_config fsample_lcd_config = { |
291 | .ctrl_name = "internal", | 291 | .ctrl_name = "internal", |
292 | }; | 292 | }; |
293 | 293 | ||
294 | static struct omap_board_config_kernel fsample_config[] = { | 294 | static struct omap_board_config_kernel fsample_config[] __initdata = { |
295 | { OMAP_TAG_LCD, &fsample_lcd_config }, | 295 | { OMAP_TAG_LCD, &fsample_lcd_config }, |
296 | }; | 296 | }; |
297 | 297 | ||
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 28b84aa9bdba..ba3bd09c4754 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -202,7 +202,7 @@ static int h2_nand_dev_ready(struct mtd_info *mtd) | |||
202 | 202 | ||
203 | static const char *h2_part_probes[] = { "cmdlinepart", NULL }; | 203 | static const char *h2_part_probes[] = { "cmdlinepart", NULL }; |
204 | 204 | ||
205 | struct platform_nand_data h2_nand_platdata = { | 205 | static struct platform_nand_data h2_nand_platdata = { |
206 | .chip = { | 206 | .chip = { |
207 | .nr_chips = 1, | 207 | .nr_chips = 1, |
208 | .chip_offset = 0, | 208 | .chip_offset = 0, |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index dbc8b8d882ba..ac48677672ee 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -204,7 +204,7 @@ static int nand_dev_ready(struct mtd_info *mtd) | |||
204 | 204 | ||
205 | static const char *part_probes[] = { "cmdlinepart", NULL }; | 205 | static const char *part_probes[] = { "cmdlinepart", NULL }; |
206 | 206 | ||
207 | struct platform_nand_data nand_platdata = { | 207 | static struct platform_nand_data nand_platdata = { |
208 | .chip = { | 208 | .chip = { |
209 | .nr_chips = 1, | 209 | .nr_chips = 1, |
210 | .chip_offset = 0, | 210 | .chip_offset = 0, |
diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c index f2c5c585bc83..ba05a51f9408 100644 --- a/arch/arm/mach-omap1/board-htcherald.c +++ b/arch/arm/mach-omap1/board-htcherald.c | |||
@@ -331,7 +331,7 @@ static struct resource htcpld_resources[] = { | |||
331 | }, | 331 | }, |
332 | }; | 332 | }; |
333 | 333 | ||
334 | struct htcpld_chip_platform_data htcpld_chips[] = { | 334 | static struct htcpld_chip_platform_data htcpld_chips[] = { |
335 | [0] = { | 335 | [0] = { |
336 | .addr = 0x03, | 336 | .addr = 0x03, |
337 | .reset = 0x04, | 337 | .reset = 0x04, |
@@ -366,7 +366,7 @@ struct htcpld_chip_platform_data htcpld_chips[] = { | |||
366 | }, | 366 | }, |
367 | }; | 367 | }; |
368 | 368 | ||
369 | struct htcpld_core_platform_data htcpld_pfdata = { | 369 | static struct htcpld_core_platform_data htcpld_pfdata = { |
370 | .int_reset_gpio_hi = HTCPLD_GPIO_INT_RESET_HI, | 370 | .int_reset_gpio_hi = HTCPLD_GPIO_INT_RESET_HI, |
371 | .int_reset_gpio_lo = HTCPLD_GPIO_INT_RESET_LO, | 371 | .int_reset_gpio_lo = HTCPLD_GPIO_INT_RESET_LO, |
372 | .i2c_adapter_id = 1, | 372 | .i2c_adapter_id = 1, |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index a36e6742bf9b..2d9b8cbd7a14 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -365,7 +365,7 @@ static struct omap_mmc_platform_data mmc1_data = { | |||
365 | 365 | ||
366 | static struct omap_mmc_platform_data *mmc_data[OMAP16XX_NR_MMC]; | 366 | static struct omap_mmc_platform_data *mmc_data[OMAP16XX_NR_MMC]; |
367 | 367 | ||
368 | void __init innovator_mmc_init(void) | 368 | static void __init innovator_mmc_init(void) |
369 | { | 369 | { |
370 | mmc_data[0] = &mmc1_data; | 370 | mmc_data[0] = &mmc1_data; |
371 | omap1_init_mmc(mmc_data, OMAP15XX_NR_MMC); | 371 | omap1_init_mmc(mmc_data, OMAP15XX_NR_MMC); |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index d21f09dc78f4..cfd084926146 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -115,7 +115,7 @@ static struct mipid_platform_data nokia770_mipid_platform_data = { | |||
115 | .shutdown = mipid_shutdown, | 115 | .shutdown = mipid_shutdown, |
116 | }; | 116 | }; |
117 | 117 | ||
118 | static void mipid_dev_init(void) | 118 | static void __init mipid_dev_init(void) |
119 | { | 119 | { |
120 | const struct omap_lcd_config *conf; | 120 | const struct omap_lcd_config *conf; |
121 | 121 | ||
@@ -126,7 +126,7 @@ static void mipid_dev_init(void) | |||
126 | } | 126 | } |
127 | } | 127 | } |
128 | 128 | ||
129 | static void ads7846_dev_init(void) | 129 | static void __init ads7846_dev_init(void) |
130 | { | 130 | { |
131 | if (gpio_request(ADS7846_PENDOWN_GPIO, "ADS7846 pendown") < 0) | 131 | if (gpio_request(ADS7846_PENDOWN_GPIO, "ADS7846 pendown") < 0) |
132 | printk(KERN_ERR "can't get ads7846 pen down GPIO\n"); | 132 | printk(KERN_ERR "can't get ads7846 pen down GPIO\n"); |
@@ -170,7 +170,7 @@ static struct hwa742_platform_data nokia770_hwa742_platform_data = { | |||
170 | .te_connected = 1, | 170 | .te_connected = 1, |
171 | }; | 171 | }; |
172 | 172 | ||
173 | static void hwa742_dev_init(void) | 173 | static void __init hwa742_dev_init(void) |
174 | { | 174 | { |
175 | clk_add_alias("hwa_sys_ck", NULL, "bclk", NULL); | 175 | clk_add_alias("hwa_sys_ck", NULL, "bclk", NULL); |
176 | omapfb_set_ctrl_platform_data(&nokia770_hwa742_platform_data); | 176 | omapfb_set_ctrl_platform_data(&nokia770_hwa742_platform_data); |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index fb51ce6123d8..c9d38f47845f 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -230,19 +230,6 @@ static struct spi_board_info palmte_spi_info[] __initdata = { | |||
230 | }, | 230 | }, |
231 | }; | 231 | }; |
232 | 232 | ||
233 | static void palmte_headphones_detect(void *data, int state) | ||
234 | { | ||
235 | if (state) { | ||
236 | /* Headphones connected, disable speaker */ | ||
237 | gpio_set_value(PALMTE_SPEAKER_GPIO, 0); | ||
238 | printk(KERN_INFO "PM: speaker off\n"); | ||
239 | } else { | ||
240 | /* Headphones unplugged, re-enable speaker */ | ||
241 | gpio_set_value(PALMTE_SPEAKER_GPIO, 1); | ||
242 | printk(KERN_INFO "PM: speaker on\n"); | ||
243 | } | ||
244 | } | ||
245 | |||
246 | static void __init palmte_misc_gpio_setup(void) | 233 | static void __init palmte_misc_gpio_setup(void) |
247 | { | 234 | { |
248 | /* Set TSC2102 PINTDAV pin as input (used by TSC2102 driver) */ | 235 | /* Set TSC2102 PINTDAV pin as input (used by TSC2102 driver) */ |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index 815a69ce821d..bdc0ac8dc21f 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -26,10 +26,12 @@ | |||
26 | #include <linux/smc91x.h> | 26 | #include <linux/smc91x.h> |
27 | 27 | ||
28 | #include <mach/hardware.h> | 28 | #include <mach/hardware.h> |
29 | #include <mach/system.h> | ||
29 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
30 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
31 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
32 | 33 | ||
34 | #include <plat/board-voiceblue.h> | ||
33 | #include <plat/common.h> | 35 | #include <plat/common.h> |
34 | #include <mach/gpio.h> | 36 | #include <mach/gpio.h> |
35 | #include <plat/flash.h> | 37 | #include <plat/flash.h> |
@@ -163,52 +165,6 @@ static void __init voiceblue_init_irq(void) | |||
163 | omap_init_irq(); | 165 | omap_init_irq(); |
164 | } | 166 | } |
165 | 167 | ||
166 | static void __init voiceblue_init(void) | ||
167 | { | ||
168 | /* mux pins for uarts */ | ||
169 | omap_cfg_reg(UART1_TX); | ||
170 | omap_cfg_reg(UART1_RTS); | ||
171 | omap_cfg_reg(UART2_TX); | ||
172 | omap_cfg_reg(UART2_RTS); | ||
173 | omap_cfg_reg(UART3_TX); | ||
174 | omap_cfg_reg(UART3_RX); | ||
175 | |||
176 | /* Watchdog */ | ||
177 | gpio_request(0, "Watchdog"); | ||
178 | /* smc91x reset */ | ||
179 | gpio_request(7, "SMC91x reset"); | ||
180 | gpio_direction_output(7, 1); | ||
181 | udelay(2); /* wait at least 100ns */ | ||
182 | gpio_set_value(7, 0); | ||
183 | mdelay(50); /* 50ms until PHY ready */ | ||
184 | /* smc91x interrupt pin */ | ||
185 | gpio_request(8, "SMC91x irq"); | ||
186 | /* 16C554 reset*/ | ||
187 | gpio_request(6, "16C554 reset"); | ||
188 | gpio_direction_output(6, 0); | ||
189 | /* 16C554 interrupt pins */ | ||
190 | gpio_request(12, "16C554 irq"); | ||
191 | gpio_request(13, "16C554 irq"); | ||
192 | gpio_request(14, "16C554 irq"); | ||
193 | gpio_request(15, "16C554 irq"); | ||
194 | set_irq_type(gpio_to_irq(12), IRQ_TYPE_EDGE_RISING); | ||
195 | set_irq_type(gpio_to_irq(13), IRQ_TYPE_EDGE_RISING); | ||
196 | set_irq_type(gpio_to_irq(14), IRQ_TYPE_EDGE_RISING); | ||
197 | set_irq_type(gpio_to_irq(15), IRQ_TYPE_EDGE_RISING); | ||
198 | |||
199 | platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices)); | ||
200 | omap_board_config = voiceblue_config; | ||
201 | omap_board_config_size = ARRAY_SIZE(voiceblue_config); | ||
202 | omap_serial_init(); | ||
203 | omap1_usb_init(&voiceblue_usb_config); | ||
204 | omap_register_i2c_bus(1, 100, NULL, 0); | ||
205 | |||
206 | /* There is a good chance board is going up, so enable power LED | ||
207 | * (it is connected through invertor) */ | ||
208 | omap_writeb(0x00, OMAP_LPG1_LCR); | ||
209 | omap_writeb(0x00, OMAP_LPG1_PMR); /* Disable clock */ | ||
210 | } | ||
211 | |||
212 | static void __init voiceblue_map_io(void) | 168 | static void __init voiceblue_map_io(void) |
213 | { | 169 | { |
214 | omap1_map_common_io(); | 170 | omap1_map_common_io(); |
@@ -275,8 +231,17 @@ void voiceblue_wdt_ping(void) | |||
275 | gpio_set_value(0, wdt_gpio_state); | 231 | gpio_set_value(0, wdt_gpio_state); |
276 | } | 232 | } |
277 | 233 | ||
278 | void voiceblue_reset(void) | 234 | static void voiceblue_reset(char mode, const char *cmd) |
279 | { | 235 | { |
236 | /* | ||
237 | * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28 | ||
238 | * "Global Software Reset Affects Traffic Controller Frequency". | ||
239 | */ | ||
240 | if (cpu_is_omap5912()) { | ||
241 | omap_writew(omap_readw(DPLL_CTL) & ~(1 << 4), DPLL_CTL); | ||
242 | omap_writew(0x8, ARM_RSTCT1); | ||
243 | } | ||
244 | |||
280 | set_bit(MACHINE_REBOOT, &machine_state); | 245 | set_bit(MACHINE_REBOOT, &machine_state); |
281 | voiceblue_wdt_enable(); | 246 | voiceblue_wdt_enable(); |
282 | while (1) ; | 247 | while (1) ; |
@@ -286,6 +251,54 @@ EXPORT_SYMBOL(voiceblue_wdt_enable); | |||
286 | EXPORT_SYMBOL(voiceblue_wdt_disable); | 251 | EXPORT_SYMBOL(voiceblue_wdt_disable); |
287 | EXPORT_SYMBOL(voiceblue_wdt_ping); | 252 | EXPORT_SYMBOL(voiceblue_wdt_ping); |
288 | 253 | ||
254 | static void __init voiceblue_init(void) | ||
255 | { | ||
256 | /* mux pins for uarts */ | ||
257 | omap_cfg_reg(UART1_TX); | ||
258 | omap_cfg_reg(UART1_RTS); | ||
259 | omap_cfg_reg(UART2_TX); | ||
260 | omap_cfg_reg(UART2_RTS); | ||
261 | omap_cfg_reg(UART3_TX); | ||
262 | omap_cfg_reg(UART3_RX); | ||
263 | |||
264 | /* Watchdog */ | ||
265 | gpio_request(0, "Watchdog"); | ||
266 | /* smc91x reset */ | ||
267 | gpio_request(7, "SMC91x reset"); | ||
268 | gpio_direction_output(7, 1); | ||
269 | udelay(2); /* wait at least 100ns */ | ||
270 | gpio_set_value(7, 0); | ||
271 | mdelay(50); /* 50ms until PHY ready */ | ||
272 | /* smc91x interrupt pin */ | ||
273 | gpio_request(8, "SMC91x irq"); | ||
274 | /* 16C554 reset*/ | ||
275 | gpio_request(6, "16C554 reset"); | ||
276 | gpio_direction_output(6, 0); | ||
277 | /* 16C554 interrupt pins */ | ||
278 | gpio_request(12, "16C554 irq"); | ||
279 | gpio_request(13, "16C554 irq"); | ||
280 | gpio_request(14, "16C554 irq"); | ||
281 | gpio_request(15, "16C554 irq"); | ||
282 | set_irq_type(gpio_to_irq(12), IRQ_TYPE_EDGE_RISING); | ||
283 | set_irq_type(gpio_to_irq(13), IRQ_TYPE_EDGE_RISING); | ||
284 | set_irq_type(gpio_to_irq(14), IRQ_TYPE_EDGE_RISING); | ||
285 | set_irq_type(gpio_to_irq(15), IRQ_TYPE_EDGE_RISING); | ||
286 | |||
287 | platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices)); | ||
288 | omap_board_config = voiceblue_config; | ||
289 | omap_board_config_size = ARRAY_SIZE(voiceblue_config); | ||
290 | omap_serial_init(); | ||
291 | omap1_usb_init(&voiceblue_usb_config); | ||
292 | omap_register_i2c_bus(1, 100, NULL, 0); | ||
293 | |||
294 | /* There is a good chance board is going up, so enable power LED | ||
295 | * (it is connected through invertor) */ | ||
296 | omap_writeb(0x00, OMAP_LPG1_LCR); | ||
297 | omap_writeb(0x00, OMAP_LPG1_PMR); /* Disable clock */ | ||
298 | |||
299 | arch_reset = voiceblue_reset; | ||
300 | } | ||
301 | |||
289 | MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910") | 302 | MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910") |
290 | /* Maintainer: Ladislav Michl <michl@2n.cz> */ | 303 | /* Maintainer: Ladislav Michl <michl@2n.cz> */ |
291 | .boot_params = 0x10000100, | 304 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/reset.c b/arch/arm/mach-omap1/reset.c new file mode 100644 index 000000000000..ad951ee69205 --- /dev/null +++ b/arch/arm/mach-omap1/reset.c | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | * OMAP1 reset support | ||
3 | */ | ||
4 | #include <linux/kernel.h> | ||
5 | #include <linux/io.h> | ||
6 | |||
7 | #include <mach/hardware.h> | ||
8 | #include <mach/system.h> | ||
9 | #include <plat/prcm.h> | ||
10 | |||
11 | void omap1_arch_reset(char mode, const char *cmd) | ||
12 | { | ||
13 | /* | ||
14 | * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28 | ||
15 | * "Global Software Reset Affects Traffic Controller Frequency". | ||
16 | */ | ||
17 | if (cpu_is_omap5912()) { | ||
18 | omap_writew(omap_readw(DPLL_CTL) & ~(1 << 4), DPLL_CTL); | ||
19 | omap_writew(0x8, ARM_RSTCT1); | ||
20 | } | ||
21 | |||
22 | omap_writew(1, ARM_RSTCT1); | ||
23 | } | ||
24 | |||
25 | void (*arch_reset)(char, const char *) = omap1_arch_reset; | ||