diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-17 22:28:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-17 22:28:15 -0400 |
commit | 0df0914d414a504b975f3cc66ace0c16ef55b7f3 (patch) | |
tree | c97ffa357943a8b226cdec1b9632c4cede813205 /arch/arm/mach-omap1 | |
parent | 6899608533410557e6698cb9d4ff6df553916e98 (diff) | |
parent | 05f689400ea5fa3d71af82f910c8b140f87ad1f3 (diff) |
Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
* 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (258 commits)
omap: zoom: host should not pull up wl1271's irq line
arm: plat-omap: iommu: fix request_mem_region() error path
OMAP2+: Common CPU DIE ID reading code reads wrong registers for OMAP4430
omap4: mux: Remove duplicate mux modes
omap: iovmm: don't check 'da' to set IOVMF_DA_FIXED flag
omap: iovmm: disallow mapping NULL address when IOVMF_DA_ANON is set
omap2+: mux: Fix compile when CONFIG_OMAP_MUX is not selected
omap4: board-omap4panda: Initialise the serial pads
omap3: board-3430sdp: Initialise the serial pads
omap4: board-4430sdp: Initialise the serial pads
omap2+: mux: Add macro for configuring static with omap_hwmod_mux_init
omap2+: mux: Remove the use of IDLE flag
omap2+: Add separate list for dynamic pads to mux
perf: add OMAP support for the new power events
OMAP4: Add IVA OPP enteries.
OMAP4: Update Voltage Rail Values for MPU, IVA and CORE
OMAP4: Enable 800 MHz and 1 GHz MPU-OPP
OMAP3+: OPP: Replace voltage values with Macros
OMAP3: wdtimer: Fix CORE idle transition
Watchdog: omap_wdt: add fine grain runtime-pm
...
Fix up various conflicts in
- arch/arm/mach-omap2/board-omap3evm.c
- arch/arm/mach-omap2/clock3xxx_data.c
- arch/arm/mach-omap2/usb-musb.c
- arch/arm/plat-omap/include/plat/usb.h
- drivers/usb/musb/musb_core.h
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/mcbsp.c | 333 | ||||
-rw-r--r-- | arch/arm/mach-omap1/reset.c | 25 |
12 files changed, 369 insertions, 147 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/mcbsp.c b/arch/arm/mach-omap1/mcbsp.c index 820973666f34..d9af9811dedd 100644 --- a/arch/arm/mach-omap1/mcbsp.c +++ b/arch/arm/mach-omap1/mcbsp.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * | 10 | * |
11 | * Multichannel mode not supported. | 11 | * Multichannel mode not supported. |
12 | */ | 12 | */ |
13 | #include <linux/ioport.h> | ||
13 | #include <linux/module.h> | 14 | #include <linux/module.h> |
14 | #include <linux/init.h> | 15 | #include <linux/init.h> |
15 | #include <linux/clk.h> | 16 | #include <linux/clk.h> |
@@ -78,100 +79,294 @@ static struct omap_mcbsp_ops omap1_mcbsp_ops = { | |||
78 | }; | 79 | }; |
79 | 80 | ||
80 | #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) | 81 | #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) |
82 | struct resource omap7xx_mcbsp_res[][6] = { | ||
83 | { | ||
84 | { | ||
85 | .start = OMAP7XX_MCBSP1_BASE, | ||
86 | .end = OMAP7XX_MCBSP1_BASE + SZ_256, | ||
87 | .flags = IORESOURCE_MEM, | ||
88 | }, | ||
89 | { | ||
90 | .name = "rx", | ||
91 | .start = INT_7XX_McBSP1RX, | ||
92 | .flags = IORESOURCE_IRQ, | ||
93 | }, | ||
94 | { | ||
95 | .name = "tx", | ||
96 | .start = INT_7XX_McBSP1TX, | ||
97 | .flags = IORESOURCE_IRQ, | ||
98 | }, | ||
99 | { | ||
100 | .name = "rx", | ||
101 | .start = OMAP_DMA_MCBSP1_RX, | ||
102 | .flags = IORESOURCE_DMA, | ||
103 | }, | ||
104 | { | ||
105 | .name = "tx", | ||
106 | .start = OMAP_DMA_MCBSP1_TX, | ||
107 | .flags = IORESOURCE_DMA, | ||
108 | }, | ||
109 | }, | ||
110 | { | ||
111 | { | ||
112 | .start = OMAP7XX_MCBSP2_BASE, | ||
113 | .end = OMAP7XX_MCBSP2_BASE + SZ_256, | ||
114 | .flags = IORESOURCE_MEM, | ||
115 | }, | ||
116 | { | ||
117 | .name = "rx", | ||
118 | .start = INT_7XX_McBSP2RX, | ||
119 | .flags = IORESOURCE_IRQ, | ||
120 | }, | ||
121 | { | ||
122 | .name = "tx", | ||
123 | .start = INT_7XX_McBSP2TX, | ||
124 | .flags = IORESOURCE_IRQ, | ||
125 | }, | ||
126 | { | ||
127 | .name = "rx", | ||
128 | .start = OMAP_DMA_MCBSP3_RX, | ||
129 | .flags = IORESOURCE_DMA, | ||
130 | }, | ||
131 | { | ||
132 | .name = "tx", | ||
133 | .start = OMAP_DMA_MCBSP3_TX, | ||
134 | .flags = IORESOURCE_DMA, | ||
135 | }, | ||
136 | }, | ||
137 | }; | ||
138 | |||
139 | #define omap7xx_mcbsp_res_0 omap7xx_mcbsp_res[0] | ||
140 | |||
81 | static struct omap_mcbsp_platform_data omap7xx_mcbsp_pdata[] = { | 141 | static struct omap_mcbsp_platform_data omap7xx_mcbsp_pdata[] = { |
82 | { | 142 | { |
83 | .phys_base = OMAP7XX_MCBSP1_BASE, | ||
84 | .dma_rx_sync = OMAP_DMA_MCBSP1_RX, | ||
85 | .dma_tx_sync = OMAP_DMA_MCBSP1_TX, | ||
86 | .rx_irq = INT_7XX_McBSP1RX, | ||
87 | .tx_irq = INT_7XX_McBSP1TX, | ||
88 | .ops = &omap1_mcbsp_ops, | 143 | .ops = &omap1_mcbsp_ops, |
89 | }, | 144 | }, |
90 | { | 145 | { |
91 | .phys_base = OMAP7XX_MCBSP2_BASE, | ||
92 | .dma_rx_sync = OMAP_DMA_MCBSP3_RX, | ||
93 | .dma_tx_sync = OMAP_DMA_MCBSP3_TX, | ||
94 | .rx_irq = INT_7XX_McBSP2RX, | ||
95 | .tx_irq = INT_7XX_McBSP2TX, | ||
96 | .ops = &omap1_mcbsp_ops, | 146 | .ops = &omap1_mcbsp_ops, |
97 | }, | 147 | }, |
98 | }; | 148 | }; |
99 | #define OMAP7XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap7xx_mcbsp_pdata) | 149 | #define OMAP7XX_MCBSP_RES_SZ ARRAY_SIZE(omap7xx_mcbsp_res[1]) |
100 | #define OMAP7XX_MCBSP_REG_NUM (OMAP_MCBSP_REG_XCERH / sizeof(u16) + 1) | 150 | #define OMAP7XX_MCBSP_COUNT ARRAY_SIZE(omap7xx_mcbsp_res) |
101 | #else | 151 | #else |
152 | #define omap7xx_mcbsp_res_0 NULL | ||
102 | #define omap7xx_mcbsp_pdata NULL | 153 | #define omap7xx_mcbsp_pdata NULL |
103 | #define OMAP7XX_MCBSP_PDATA_SZ 0 | 154 | #define OMAP7XX_MCBSP_RES_SZ 0 |
104 | #define OMAP7XX_MCBSP_REG_NUM 0 | 155 | #define OMAP7XX_MCBSP_COUNT 0 |
105 | #endif | 156 | #endif |
106 | 157 | ||
107 | #ifdef CONFIG_ARCH_OMAP15XX | 158 | #ifdef CONFIG_ARCH_OMAP15XX |
159 | struct resource omap15xx_mcbsp_res[][6] = { | ||
160 | { | ||
161 | { | ||
162 | .start = OMAP1510_MCBSP1_BASE, | ||
163 | .end = OMAP1510_MCBSP1_BASE + SZ_256, | ||
164 | .flags = IORESOURCE_MEM, | ||
165 | }, | ||
166 | { | ||
167 | .name = "rx", | ||
168 | .start = INT_McBSP1RX, | ||
169 | .flags = IORESOURCE_IRQ, | ||
170 | }, | ||
171 | { | ||
172 | .name = "tx", | ||
173 | .start = INT_McBSP1TX, | ||
174 | .flags = IORESOURCE_IRQ, | ||
175 | }, | ||
176 | { | ||
177 | .name = "rx", | ||
178 | .start = OMAP_DMA_MCBSP1_RX, | ||
179 | .flags = IORESOURCE_DMA, | ||
180 | }, | ||
181 | { | ||
182 | .name = "tx", | ||
183 | .start = OMAP_DMA_MCBSP1_TX, | ||
184 | .flags = IORESOURCE_DMA, | ||
185 | }, | ||
186 | }, | ||
187 | { | ||
188 | { | ||
189 | .start = OMAP1510_MCBSP2_BASE, | ||
190 | .end = OMAP1510_MCBSP2_BASE + SZ_256, | ||
191 | .flags = IORESOURCE_MEM, | ||
192 | }, | ||
193 | { | ||
194 | .name = "rx", | ||
195 | .start = INT_1510_SPI_RX, | ||
196 | .flags = IORESOURCE_IRQ, | ||
197 | }, | ||
198 | { | ||
199 | .name = "tx", | ||
200 | .start = INT_1510_SPI_TX, | ||
201 | .flags = IORESOURCE_IRQ, | ||
202 | }, | ||
203 | { | ||
204 | .name = "rx", | ||
205 | .start = OMAP_DMA_MCBSP2_RX, | ||
206 | .flags = IORESOURCE_DMA, | ||
207 | }, | ||
208 | { | ||
209 | .name = "tx", | ||
210 | .start = OMAP_DMA_MCBSP2_TX, | ||
211 | .flags = IORESOURCE_DMA, | ||
212 | }, | ||
213 | }, | ||
214 | { | ||
215 | { | ||
216 | .start = OMAP1510_MCBSP3_BASE, | ||
217 | .end = OMAP1510_MCBSP3_BASE + SZ_256, | ||
218 | .flags = IORESOURCE_MEM, | ||
219 | }, | ||
220 | { | ||
221 | .name = "rx", | ||
222 | .start = INT_McBSP3RX, | ||
223 | .flags = IORESOURCE_IRQ, | ||
224 | }, | ||
225 | { | ||
226 | .name = "tx", | ||
227 | .start = INT_McBSP3TX, | ||
228 | .flags = IORESOURCE_IRQ, | ||
229 | }, | ||
230 | { | ||
231 | .name = "rx", | ||
232 | .start = OMAP_DMA_MCBSP3_RX, | ||
233 | .flags = IORESOURCE_DMA, | ||
234 | }, | ||
235 | { | ||
236 | .name = "tx", | ||
237 | .start = OMAP_DMA_MCBSP3_TX, | ||
238 | .flags = IORESOURCE_DMA, | ||
239 | }, | ||
240 | }, | ||
241 | }; | ||
242 | |||
243 | #define omap15xx_mcbsp_res_0 omap15xx_mcbsp_res[0] | ||
244 | |||
108 | static struct omap_mcbsp_platform_data omap15xx_mcbsp_pdata[] = { | 245 | static struct omap_mcbsp_platform_data omap15xx_mcbsp_pdata[] = { |
109 | { | 246 | { |
110 | .phys_base = OMAP1510_MCBSP1_BASE, | ||
111 | .dma_rx_sync = OMAP_DMA_MCBSP1_RX, | ||
112 | .dma_tx_sync = OMAP_DMA_MCBSP1_TX, | ||
113 | .rx_irq = INT_McBSP1RX, | ||
114 | .tx_irq = INT_McBSP1TX, | ||
115 | .ops = &omap1_mcbsp_ops, | 247 | .ops = &omap1_mcbsp_ops, |
116 | }, | 248 | }, |
117 | { | 249 | { |
118 | .phys_base = OMAP1510_MCBSP2_BASE, | ||
119 | .dma_rx_sync = OMAP_DMA_MCBSP2_RX, | ||
120 | .dma_tx_sync = OMAP_DMA_MCBSP2_TX, | ||
121 | .rx_irq = INT_1510_SPI_RX, | ||
122 | .tx_irq = INT_1510_SPI_TX, | ||
123 | .ops = &omap1_mcbsp_ops, | 250 | .ops = &omap1_mcbsp_ops, |
124 | }, | 251 | }, |
125 | { | 252 | { |
126 | .phys_base = OMAP1510_MCBSP3_BASE, | ||
127 | .dma_rx_sync = OMAP_DMA_MCBSP3_RX, | ||
128 | .dma_tx_sync = OMAP_DMA_MCBSP3_TX, | ||
129 | .rx_irq = INT_McBSP3RX, | ||
130 | .tx_irq = INT_McBSP3TX, | ||
131 | .ops = &omap1_mcbsp_ops, | 253 | .ops = &omap1_mcbsp_ops, |
132 | }, | 254 | }, |
133 | }; | 255 | }; |
134 | #define OMAP15XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap15xx_mcbsp_pdata) | 256 | #define OMAP15XX_MCBSP_RES_SZ ARRAY_SIZE(omap15xx_mcbsp_res[1]) |
135 | #define OMAP15XX_MCBSP_REG_NUM (OMAP_MCBSP_REG_XCERH / sizeof(u16) + 1) | 257 | #define OMAP15XX_MCBSP_COUNT ARRAY_SIZE(omap15xx_mcbsp_res) |
136 | #else | 258 | #else |
259 | #define omap15xx_mcbsp_res_0 NULL | ||
137 | #define omap15xx_mcbsp_pdata NULL | 260 | #define omap15xx_mcbsp_pdata NULL |
138 | #define OMAP15XX_MCBSP_PDATA_SZ 0 | 261 | #define OMAP15XX_MCBSP_RES_SZ 0 |
139 | #define OMAP15XX_MCBSP_REG_NUM 0 | 262 | #define OMAP15XX_MCBSP_COUNT 0 |
140 | #endif | 263 | #endif |
141 | 264 | ||
142 | #ifdef CONFIG_ARCH_OMAP16XX | 265 | #ifdef CONFIG_ARCH_OMAP16XX |
266 | struct resource omap16xx_mcbsp_res[][6] = { | ||
267 | { | ||
268 | { | ||
269 | .start = OMAP1610_MCBSP1_BASE, | ||
270 | .end = OMAP1610_MCBSP1_BASE + SZ_256, | ||
271 | .flags = IORESOURCE_MEM, | ||
272 | }, | ||
273 | { | ||
274 | .name = "rx", | ||
275 | .start = INT_McBSP1RX, | ||
276 | .flags = IORESOURCE_IRQ, | ||
277 | }, | ||
278 | { | ||
279 | .name = "tx", | ||
280 | .start = INT_McBSP1TX, | ||
281 | .flags = IORESOURCE_IRQ, | ||
282 | }, | ||
283 | { | ||
284 | .name = "rx", | ||
285 | .start = OMAP_DMA_MCBSP1_RX, | ||
286 | .flags = IORESOURCE_DMA, | ||
287 | }, | ||
288 | { | ||
289 | .name = "tx", | ||
290 | .start = OMAP_DMA_MCBSP1_TX, | ||
291 | .flags = IORESOURCE_DMA, | ||
292 | }, | ||
293 | }, | ||
294 | { | ||
295 | { | ||
296 | .start = OMAP1610_MCBSP2_BASE, | ||
297 | .end = OMAP1610_MCBSP2_BASE + SZ_256, | ||
298 | .flags = IORESOURCE_MEM, | ||
299 | }, | ||
300 | { | ||
301 | .name = "rx", | ||
302 | .start = INT_1610_McBSP2_RX, | ||
303 | .flags = IORESOURCE_IRQ, | ||
304 | }, | ||
305 | { | ||
306 | .name = "tx", | ||
307 | .start = INT_1610_McBSP2_TX, | ||
308 | .flags = IORESOURCE_IRQ, | ||
309 | }, | ||
310 | { | ||
311 | .name = "rx", | ||
312 | .start = OMAP_DMA_MCBSP2_RX, | ||
313 | .flags = IORESOURCE_DMA, | ||
314 | }, | ||
315 | { | ||
316 | .name = "tx", | ||
317 | .start = OMAP_DMA_MCBSP2_TX, | ||
318 | .flags = IORESOURCE_DMA, | ||
319 | }, | ||
320 | }, | ||
321 | { | ||
322 | { | ||
323 | .start = OMAP1610_MCBSP3_BASE, | ||
324 | .end = OMAP1610_MCBSP3_BASE + SZ_256, | ||
325 | .flags = IORESOURCE_MEM, | ||
326 | }, | ||
327 | { | ||
328 | .name = "rx", | ||
329 | .start = INT_McBSP3RX, | ||
330 | .flags = IORESOURCE_IRQ, | ||
331 | }, | ||
332 | { | ||
333 | .name = "tx", | ||
334 | .start = INT_McBSP3TX, | ||
335 | .flags = IORESOURCE_IRQ, | ||
336 | }, | ||
337 | { | ||
338 | .name = "rx", | ||
339 | .start = OMAP_DMA_MCBSP3_RX, | ||
340 | .flags = IORESOURCE_DMA, | ||
341 | }, | ||
342 | { | ||
343 | .name = "tx", | ||
344 | .start = OMAP_DMA_MCBSP3_TX, | ||
345 | .flags = IORESOURCE_DMA, | ||
346 | }, | ||
347 | }, | ||
348 | }; | ||
349 | |||
350 | #define omap16xx_mcbsp_res_0 omap16xx_mcbsp_res[0] | ||
351 | |||
143 | static struct omap_mcbsp_platform_data omap16xx_mcbsp_pdata[] = { | 352 | static struct omap_mcbsp_platform_data omap16xx_mcbsp_pdata[] = { |
144 | { | 353 | { |
145 | .phys_base = OMAP1610_MCBSP1_BASE, | ||
146 | .dma_rx_sync = OMAP_DMA_MCBSP1_RX, | ||
147 | .dma_tx_sync = OMAP_DMA_MCBSP1_TX, | ||
148 | .rx_irq = INT_McBSP1RX, | ||
149 | .tx_irq = INT_McBSP1TX, | ||
150 | .ops = &omap1_mcbsp_ops, | 354 | .ops = &omap1_mcbsp_ops, |
151 | }, | 355 | }, |
152 | { | 356 | { |
153 | .phys_base = OMAP1610_MCBSP2_BASE, | ||
154 | .dma_rx_sync = OMAP_DMA_MCBSP2_RX, | ||
155 | .dma_tx_sync = OMAP_DMA_MCBSP2_TX, | ||
156 | .rx_irq = INT_1610_McBSP2_RX, | ||
157 | .tx_irq = INT_1610_McBSP2_TX, | ||
158 | .ops = &omap1_mcbsp_ops, | 357 | .ops = &omap1_mcbsp_ops, |
159 | }, | 358 | }, |
160 | { | 359 | { |
161 | .phys_base = OMAP1610_MCBSP3_BASE, | ||
162 | .dma_rx_sync = OMAP_DMA_MCBSP3_RX, | ||
163 | .dma_tx_sync = OMAP_DMA_MCBSP3_TX, | ||
164 | .rx_irq = INT_McBSP3RX, | ||
165 | .tx_irq = INT_McBSP3TX, | ||
166 | .ops = &omap1_mcbsp_ops, | 360 | .ops = &omap1_mcbsp_ops, |
167 | }, | 361 | }, |
168 | }; | 362 | }; |
169 | #define OMAP16XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap16xx_mcbsp_pdata) | 363 | #define OMAP16XX_MCBSP_RES_SZ ARRAY_SIZE(omap16xx_mcbsp_res[1]) |
170 | #define OMAP16XX_MCBSP_REG_NUM (OMAP_MCBSP_REG_XCERH / sizeof(u16) + 1) | 364 | #define OMAP16XX_MCBSP_COUNT ARRAY_SIZE(omap16xx_mcbsp_res) |
171 | #else | 365 | #else |
366 | #define omap16xx_mcbsp_res_0 NULL | ||
172 | #define omap16xx_mcbsp_pdata NULL | 367 | #define omap16xx_mcbsp_pdata NULL |
173 | #define OMAP16XX_MCBSP_PDATA_SZ 0 | 368 | #define OMAP16XX_MCBSP_RES_SZ 0 |
174 | #define OMAP16XX_MCBSP_REG_NUM 0 | 369 | #define OMAP16XX_MCBSP_COUNT 0 |
175 | #endif | 370 | #endif |
176 | 371 | ||
177 | static int __init omap1_mcbsp_init(void) | 372 | static int __init omap1_mcbsp_init(void) |
@@ -179,16 +374,12 @@ static int __init omap1_mcbsp_init(void) | |||
179 | if (!cpu_class_is_omap1()) | 374 | if (!cpu_class_is_omap1()) |
180 | return -ENODEV; | 375 | return -ENODEV; |
181 | 376 | ||
182 | if (cpu_is_omap7xx()) { | 377 | if (cpu_is_omap7xx()) |
183 | omap_mcbsp_count = OMAP7XX_MCBSP_PDATA_SZ; | 378 | omap_mcbsp_count = OMAP7XX_MCBSP_COUNT; |
184 | omap_mcbsp_cache_size = OMAP7XX_MCBSP_REG_NUM * sizeof(u16); | 379 | else if (cpu_is_omap15xx()) |
185 | } else if (cpu_is_omap15xx()) { | 380 | omap_mcbsp_count = OMAP15XX_MCBSP_COUNT; |
186 | omap_mcbsp_count = OMAP15XX_MCBSP_PDATA_SZ; | 381 | else if (cpu_is_omap16xx()) |
187 | omap_mcbsp_cache_size = OMAP15XX_MCBSP_REG_NUM * sizeof(u16); | 382 | omap_mcbsp_count = OMAP16XX_MCBSP_COUNT; |
188 | } else if (cpu_is_omap16xx()) { | ||
189 | omap_mcbsp_count = OMAP16XX_MCBSP_PDATA_SZ; | ||
190 | omap_mcbsp_cache_size = OMAP16XX_MCBSP_REG_NUM * sizeof(u16); | ||
191 | } | ||
192 | 383 | ||
193 | mcbsp_ptr = kzalloc(omap_mcbsp_count * sizeof(struct omap_mcbsp *), | 384 | mcbsp_ptr = kzalloc(omap_mcbsp_count * sizeof(struct omap_mcbsp *), |
194 | GFP_KERNEL); | 385 | GFP_KERNEL); |
@@ -196,16 +387,22 @@ static int __init omap1_mcbsp_init(void) | |||
196 | return -ENOMEM; | 387 | return -ENOMEM; |
197 | 388 | ||
198 | if (cpu_is_omap7xx()) | 389 | if (cpu_is_omap7xx()) |
199 | omap_mcbsp_register_board_cfg(omap7xx_mcbsp_pdata, | 390 | omap_mcbsp_register_board_cfg(omap7xx_mcbsp_res_0, |
200 | OMAP7XX_MCBSP_PDATA_SZ); | 391 | OMAP7XX_MCBSP_RES_SZ, |
392 | omap7xx_mcbsp_pdata, | ||
393 | OMAP7XX_MCBSP_COUNT); | ||
201 | 394 | ||
202 | if (cpu_is_omap15xx()) | 395 | if (cpu_is_omap15xx()) |
203 | omap_mcbsp_register_board_cfg(omap15xx_mcbsp_pdata, | 396 | omap_mcbsp_register_board_cfg(omap15xx_mcbsp_res_0, |
204 | OMAP15XX_MCBSP_PDATA_SZ); | 397 | OMAP15XX_MCBSP_RES_SZ, |
398 | omap15xx_mcbsp_pdata, | ||
399 | OMAP15XX_MCBSP_COUNT); | ||
205 | 400 | ||
206 | if (cpu_is_omap16xx()) | 401 | if (cpu_is_omap16xx()) |
207 | omap_mcbsp_register_board_cfg(omap16xx_mcbsp_pdata, | 402 | omap_mcbsp_register_board_cfg(omap16xx_mcbsp_res_0, |
208 | OMAP16XX_MCBSP_PDATA_SZ); | 403 | OMAP16XX_MCBSP_RES_SZ, |
404 | omap16xx_mcbsp_pdata, | ||
405 | OMAP16XX_MCBSP_COUNT); | ||
209 | 406 | ||
210 | return omap_mcbsp_init(); | 407 | return omap_mcbsp_init(); |
211 | } | 408 | } |
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; | ||