diff options
Diffstat (limited to 'arch/sh')
118 files changed, 736 insertions, 786 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 4b89da248d17..ff9177c8f643 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -11,6 +11,7 @@ config SUPERH | |||
11 | select HAVE_DMA_ATTRS | 11 | select HAVE_DMA_ATTRS |
12 | select HAVE_IRQ_WORK | 12 | select HAVE_IRQ_WORK |
13 | select HAVE_PERF_EVENTS | 13 | select HAVE_PERF_EVENTS |
14 | select ARCH_HAVE_NMI_SAFE_CMPXCHG if (GUSA_RB || CPU_SH4A) | ||
14 | select PERF_USE_VMALLOC | 15 | select PERF_USE_VMALLOC |
15 | select HAVE_KERNEL_GZIP | 16 | select HAVE_KERNEL_GZIP |
16 | select HAVE_KERNEL_BZIP2 | 17 | select HAVE_KERNEL_BZIP2 |
@@ -21,10 +22,10 @@ config SUPERH | |||
21 | select HAVE_REGS_AND_STACK_ACCESS_API | 22 | select HAVE_REGS_AND_STACK_ACCESS_API |
22 | select HAVE_GENERIC_HARDIRQS | 23 | select HAVE_GENERIC_HARDIRQS |
23 | select HAVE_SPARSE_IRQ | 24 | select HAVE_SPARSE_IRQ |
25 | select IRQ_FORCED_THREADING | ||
24 | select RTC_LIB | 26 | select RTC_LIB |
25 | select GENERIC_ATOMIC64 | 27 | select GENERIC_ATOMIC64 |
26 | select GENERIC_IRQ_SHOW | 28 | select GENERIC_IRQ_SHOW |
27 | select ARCH_NO_SYSDEV_OPS | ||
28 | help | 29 | help |
29 | The SuperH is a RISC processor targeted for use in embedded systems | 30 | The SuperH is a RISC processor targeted for use in embedded systems |
30 | and consumer electronics; it was also used in the Sega Dreamcast | 31 | and consumer electronics; it was also used in the Sega Dreamcast |
@@ -71,12 +72,6 @@ config GENERIC_CSUM | |||
71 | def_bool y | 72 | def_bool y |
72 | depends on SUPERH64 | 73 | depends on SUPERH64 |
73 | 74 | ||
74 | config GENERIC_FIND_NEXT_BIT | ||
75 | def_bool y | ||
76 | |||
77 | config GENERIC_FIND_BIT_LE | ||
78 | def_bool y | ||
79 | |||
80 | config GENERIC_HWEIGHT | 75 | config GENERIC_HWEIGHT |
81 | def_bool y | 76 | def_bool y |
82 | 77 | ||
@@ -167,7 +162,7 @@ config ARCH_HAS_CPU_IDLE_WAIT | |||
167 | 162 | ||
168 | config NO_IOPORT | 163 | config NO_IOPORT |
169 | def_bool !PCI | 164 | def_bool !PCI |
170 | depends on !SH_CAYMAN && !SH_SH4202_MICRODEV | 165 | depends on !SH_CAYMAN && !SH_SH4202_MICRODEV && !SH_SHMIN |
171 | 166 | ||
172 | config IO_TRAPPED | 167 | config IO_TRAPPED |
173 | bool | 168 | bool |
@@ -354,6 +349,7 @@ config CPU_SUBTYPE_SH7720 | |||
354 | select SYS_SUPPORTS_CMT | 349 | select SYS_SUPPORTS_CMT |
355 | select ARCH_WANT_OPTIONAL_GPIOLIB | 350 | select ARCH_WANT_OPTIONAL_GPIOLIB |
356 | select USB_ARCH_HAS_OHCI | 351 | select USB_ARCH_HAS_OHCI |
352 | select USB_OHCI_SH if USB_OHCI_HCD | ||
357 | help | 353 | help |
358 | Select SH7720 if you have a SH3-DSP SH7720 CPU. | 354 | Select SH7720 if you have a SH3-DSP SH7720 CPU. |
359 | 355 | ||
@@ -363,6 +359,7 @@ config CPU_SUBTYPE_SH7721 | |||
363 | select CPU_HAS_DSP | 359 | select CPU_HAS_DSP |
364 | select SYS_SUPPORTS_CMT | 360 | select SYS_SUPPORTS_CMT |
365 | select USB_ARCH_HAS_OHCI | 361 | select USB_ARCH_HAS_OHCI |
362 | select USB_OHCI_SH if USB_OHCI_HCD | ||
366 | help | 363 | help |
367 | Select SH7721 if you have a SH3-DSP SH7721 CPU. | 364 | Select SH7721 if you have a SH3-DSP SH7721 CPU. |
368 | 365 | ||
@@ -446,6 +443,7 @@ config CPU_SUBTYPE_SH7763 | |||
446 | bool "Support SH7763 processor" | 443 | bool "Support SH7763 processor" |
447 | select CPU_SH4A | 444 | select CPU_SH4A |
448 | select USB_ARCH_HAS_OHCI | 445 | select USB_ARCH_HAS_OHCI |
446 | select USB_OHCI_SH if USB_OHCI_HCD | ||
449 | help | 447 | help |
450 | Select SH7763 if you have a SH4A SH7763(R5S77631) CPU. | 448 | Select SH7763 if you have a SH4A SH7763(R5S77631) CPU. |
451 | 449 | ||
@@ -473,7 +471,9 @@ config CPU_SUBTYPE_SH7786 | |||
473 | select GENERIC_CLOCKEVENTS_BROADCAST if SMP | 471 | select GENERIC_CLOCKEVENTS_BROADCAST if SMP |
474 | select ARCH_WANT_OPTIONAL_GPIOLIB | 472 | select ARCH_WANT_OPTIONAL_GPIOLIB |
475 | select USB_ARCH_HAS_OHCI | 473 | select USB_ARCH_HAS_OHCI |
474 | select USB_OHCI_SH if USB_OHCI_HCD | ||
476 | select USB_ARCH_HAS_EHCI | 475 | select USB_ARCH_HAS_EHCI |
476 | select USB_EHCI_SH if USB_EHCI_HCD | ||
477 | 477 | ||
478 | config CPU_SUBTYPE_SHX3 | 478 | config CPU_SUBTYPE_SHX3 |
479 | bool "Support SH-X3 processor" | 479 | bool "Support SH-X3 processor" |
@@ -898,20 +898,4 @@ source "security/Kconfig" | |||
898 | 898 | ||
899 | source "crypto/Kconfig" | 899 | source "crypto/Kconfig" |
900 | 900 | ||
901 | menuconfig VIRTUALIZATION | ||
902 | bool "Virtualization" | ||
903 | default n | ||
904 | ---help--- | ||
905 | Say Y here to get to see options for using your Linux host to run other | ||
906 | operating systems inside virtual machines (guests). | ||
907 | This option alone does not add any kernel code. | ||
908 | |||
909 | If you say N, all options in this submenu will be skipped and disabled. | ||
910 | |||
911 | if VIRTUALIZATION | ||
912 | |||
913 | source drivers/virtio/Kconfig | ||
914 | |||
915 | endif # VIRTUALIZATION | ||
916 | |||
917 | source "lib/Kconfig" | 901 | source "lib/Kconfig" |
diff --git a/arch/sh/Kconfig.debug b/arch/sh/Kconfig.debug index 1553d56cf4e0..c1d5a820b1aa 100644 --- a/arch/sh/Kconfig.debug +++ b/arch/sh/Kconfig.debug | |||
@@ -28,15 +28,6 @@ config STACK_DEBUG | |||
28 | every function call and will therefore incur a major | 28 | every function call and will therefore incur a major |
29 | performance hit. Most users should say N. | 29 | performance hit. Most users should say N. |
30 | 30 | ||
31 | config DEBUG_STACK_USAGE | ||
32 | bool "Stack utilization instrumentation" | ||
33 | depends on DEBUG_KERNEL | ||
34 | help | ||
35 | Enables the display of the minimum amount of free stack which each | ||
36 | task has ever had available in the sysrq-T and sysrq-P debug output. | ||
37 | |||
38 | This option will slow down process creation somewhat. | ||
39 | |||
40 | config 4KSTACKS | 31 | config 4KSTACKS |
41 | bool "Use 4Kb for kernel stacks instead of 8Kb" | 32 | bool "Use 4Kb for kernel stacks instead of 8Kb" |
42 | depends on DEBUG_KERNEL && (MMU || BROKEN) && !PAGE_SIZE_64KB | 33 | depends on DEBUG_KERNEL && (MMU || BROKEN) && !PAGE_SIZE_64KB |
diff --git a/arch/sh/Makefile b/arch/sh/Makefile index e3d8170ad00b..99385d0b3f3b 100644 --- a/arch/sh/Makefile +++ b/arch/sh/Makefile | |||
@@ -173,6 +173,7 @@ core-$(CONFIG_HD6446X_SERIES) += arch/sh/cchips/hd6446x/ | |||
173 | cpuincdir-$(CONFIG_CPU_SH2A) += cpu-sh2a | 173 | cpuincdir-$(CONFIG_CPU_SH2A) += cpu-sh2a |
174 | cpuincdir-$(CONFIG_CPU_SH2) += cpu-sh2 | 174 | cpuincdir-$(CONFIG_CPU_SH2) += cpu-sh2 |
175 | cpuincdir-$(CONFIG_CPU_SH3) += cpu-sh3 | 175 | cpuincdir-$(CONFIG_CPU_SH3) += cpu-sh3 |
176 | cpuincdir-$(CONFIG_CPU_SH4A) += cpu-sh4a | ||
176 | cpuincdir-$(CONFIG_CPU_SH4) += cpu-sh4 | 177 | cpuincdir-$(CONFIG_CPU_SH4) += cpu-sh4 |
177 | cpuincdir-$(CONFIG_CPU_SH5) += cpu-sh5 | 178 | cpuincdir-$(CONFIG_CPU_SH5) += cpu-sh5 |
178 | cpuincdir-y += cpu-common # Must be last | 179 | cpuincdir-y += cpu-common # Must be last |
diff --git a/arch/sh/boards/board-apsh4a3a.c b/arch/sh/boards/board-apsh4a3a.c index 8e2a27057bc9..2823619c6006 100644 --- a/arch/sh/boards/board-apsh4a3a.c +++ b/arch/sh/boards/board-apsh4a3a.c | |||
@@ -116,7 +116,7 @@ static int apsh4a3a_clk_init(void) | |||
116 | int ret; | 116 | int ret; |
117 | 117 | ||
118 | clk = clk_get(NULL, "extal"); | 118 | clk = clk_get(NULL, "extal"); |
119 | if (!clk || IS_ERR(clk)) | 119 | if (IS_ERR(clk)) |
120 | return PTR_ERR(clk); | 120 | return PTR_ERR(clk); |
121 | ret = clk_set_rate(clk, 33333000); | 121 | ret = clk_set_rate(clk, 33333000); |
122 | clk_put(clk); | 122 | clk_put(clk); |
diff --git a/arch/sh/boards/board-apsh4ad0a.c b/arch/sh/boards/board-apsh4ad0a.c index e2bd218a054e..b4d6292a9247 100644 --- a/arch/sh/boards/board-apsh4ad0a.c +++ b/arch/sh/boards/board-apsh4ad0a.c | |||
@@ -94,7 +94,7 @@ static int apsh4ad0a_clk_init(void) | |||
94 | int ret; | 94 | int ret; |
95 | 95 | ||
96 | clk = clk_get(NULL, "extal"); | 96 | clk = clk_get(NULL, "extal"); |
97 | if (!clk || IS_ERR(clk)) | 97 | if (IS_ERR(clk)) |
98 | return PTR_ERR(clk); | 98 | return PTR_ERR(clk); |
99 | ret = clk_set_rate(clk, 33333000); | 99 | ret = clk_set_rate(clk, 33333000); |
100 | clk_put(clk); | 100 | clk_put(clk); |
diff --git a/arch/sh/boards/board-sh7785lcr.c b/arch/sh/boards/board-sh7785lcr.c index ee65ff05c558..d879848f3cdd 100644 --- a/arch/sh/boards/board-sh7785lcr.c +++ b/arch/sh/boards/board-sh7785lcr.c | |||
@@ -299,7 +299,7 @@ static int sh7785lcr_clk_init(void) | |||
299 | int ret; | 299 | int ret; |
300 | 300 | ||
301 | clk = clk_get(NULL, "extal"); | 301 | clk = clk_get(NULL, "extal"); |
302 | if (!clk || IS_ERR(clk)) | 302 | if (IS_ERR(clk)) |
303 | return PTR_ERR(clk); | 303 | return PTR_ERR(clk); |
304 | ret = clk_set_rate(clk, 33333333); | 304 | ret = clk_set_rate(clk, 33333333); |
305 | clk_put(clk); | 305 | clk_put(clk); |
diff --git a/arch/sh/boards/board-urquell.c b/arch/sh/boards/board-urquell.c index d81c609decc7..24e3316c5c17 100644 --- a/arch/sh/boards/board-urquell.c +++ b/arch/sh/boards/board-urquell.c | |||
@@ -190,7 +190,7 @@ static int urquell_clk_init(void) | |||
190 | return -EINVAL; | 190 | return -EINVAL; |
191 | 191 | ||
192 | clk = clk_get(NULL, "extal"); | 192 | clk = clk_get(NULL, "extal"); |
193 | if (!clk || IS_ERR(clk)) | 193 | if (IS_ERR(clk)) |
194 | return PTR_ERR(clk); | 194 | return PTR_ERR(clk); |
195 | ret = clk_set_rate(clk, 33333333); | 195 | ret = clk_set_rate(clk, 33333333); |
196 | clk_put(clk); | 196 | clk_put(clk); |
diff --git a/arch/sh/boards/mach-ap325rxa/setup.c b/arch/sh/boards/mach-ap325rxa/setup.c index 618bd566cf53..d36265758911 100644 --- a/arch/sh/boards/mach-ap325rxa/setup.c +++ b/arch/sh/boards/mach-ap325rxa/setup.c | |||
@@ -188,7 +188,7 @@ static void ap320_wvga_power_off(void *board_data) | |||
188 | __raw_writew(0, FPGA_LCDREG); | 188 | __raw_writew(0, FPGA_LCDREG); |
189 | } | 189 | } |
190 | 190 | ||
191 | const static struct fb_videomode ap325rxa_lcdc_modes[] = { | 191 | static const struct fb_videomode ap325rxa_lcdc_modes[] = { |
192 | { | 192 | { |
193 | .name = "LB070WV1", | 193 | .name = "LB070WV1", |
194 | .xres = 800, | 194 | .xres = 800, |
@@ -332,8 +332,8 @@ static int camera_set_capture(struct soc_camera_platform_info *info, | |||
332 | return ret; | 332 | return ret; |
333 | } | 333 | } |
334 | 334 | ||
335 | static int ap325rxa_camera_add(struct soc_camera_link *icl, struct device *dev); | 335 | static int ap325rxa_camera_add(struct soc_camera_device *icd); |
336 | static void ap325rxa_camera_del(struct soc_camera_link *icl); | 336 | static void ap325rxa_camera_del(struct soc_camera_device *icd); |
337 | 337 | ||
338 | static struct soc_camera_platform_info camera_info = { | 338 | static struct soc_camera_platform_info camera_info = { |
339 | .format_name = "UYVY", | 339 | .format_name = "UYVY", |
@@ -359,37 +359,30 @@ static struct soc_camera_link camera_link = { | |||
359 | .priv = &camera_info, | 359 | .priv = &camera_info, |
360 | }; | 360 | }; |
361 | 361 | ||
362 | static void dummy_release(struct device *dev) | 362 | static struct platform_device *camera_device; |
363 | |||
364 | static void ap325rxa_camera_release(struct device *dev) | ||
363 | { | 365 | { |
366 | soc_camera_platform_release(&camera_device); | ||
364 | } | 367 | } |
365 | 368 | ||
366 | static struct platform_device camera_device = { | 369 | static int ap325rxa_camera_add(struct soc_camera_device *icd) |
367 | .name = "soc_camera_platform", | ||
368 | .dev = { | ||
369 | .platform_data = &camera_info, | ||
370 | .release = dummy_release, | ||
371 | }, | ||
372 | }; | ||
373 | |||
374 | static int ap325rxa_camera_add(struct soc_camera_link *icl, | ||
375 | struct device *dev) | ||
376 | { | 370 | { |
377 | if (icl != &camera_link || camera_probe() <= 0) | 371 | int ret = soc_camera_platform_add(icd, &camera_device, &camera_link, |
378 | return -ENODEV; | 372 | ap325rxa_camera_release, 0); |
373 | if (ret < 0) | ||
374 | return ret; | ||
379 | 375 | ||
380 | camera_info.dev = dev; | 376 | ret = camera_probe(); |
377 | if (ret < 0) | ||
378 | soc_camera_platform_del(icd, camera_device, &camera_link); | ||
381 | 379 | ||
382 | return platform_device_register(&camera_device); | 380 | return ret; |
383 | } | 381 | } |
384 | 382 | ||
385 | static void ap325rxa_camera_del(struct soc_camera_link *icl) | 383 | static void ap325rxa_camera_del(struct soc_camera_device *icd) |
386 | { | 384 | { |
387 | if (icl != &camera_link) | 385 | soc_camera_platform_del(icd, camera_device, &camera_link); |
388 | return; | ||
389 | |||
390 | platform_device_unregister(&camera_device); | ||
391 | memset(&camera_device.dev.kobj, 0, | ||
392 | sizeof(camera_device.dev.kobj)); | ||
393 | } | 386 | } |
394 | #endif /* CONFIG_I2C */ | 387 | #endif /* CONFIG_I2C */ |
395 | 388 | ||
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index 86a0d565aded..b24d69d509e7 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
22 | #include <linux/usb/r8a66597.h> | 22 | #include <linux/usb/r8a66597.h> |
23 | #include <linux/usb/renesas_usbhs.h> | ||
23 | #include <linux/i2c.h> | 24 | #include <linux/i2c.h> |
24 | #include <linux/i2c/tsc2007.h> | 25 | #include <linux/i2c/tsc2007.h> |
25 | #include <linux/spi/spi.h> | 26 | #include <linux/spi/spi.h> |
@@ -232,8 +233,54 @@ static struct platform_device usb1_common_device = { | |||
232 | .resource = usb1_common_resources, | 233 | .resource = usb1_common_resources, |
233 | }; | 234 | }; |
234 | 235 | ||
236 | /* | ||
237 | * USBHS | ||
238 | */ | ||
239 | static int usbhs_get_id(struct platform_device *pdev) | ||
240 | { | ||
241 | return gpio_get_value(GPIO_PTB3); | ||
242 | } | ||
243 | |||
244 | static struct renesas_usbhs_platform_info usbhs_info = { | ||
245 | .platform_callback = { | ||
246 | .get_id = usbhs_get_id, | ||
247 | }, | ||
248 | .driver_param = { | ||
249 | .buswait_bwait = 4, | ||
250 | .detection_delay = 5, | ||
251 | }, | ||
252 | }; | ||
253 | |||
254 | static struct resource usbhs_resources[] = { | ||
255 | [0] = { | ||
256 | .start = 0xa4d90000, | ||
257 | .end = 0xa4d90124 - 1, | ||
258 | .flags = IORESOURCE_MEM, | ||
259 | }, | ||
260 | [1] = { | ||
261 | .start = 66, | ||
262 | .end = 66, | ||
263 | .flags = IORESOURCE_IRQ, | ||
264 | }, | ||
265 | }; | ||
266 | |||
267 | static struct platform_device usbhs_device = { | ||
268 | .name = "renesas_usbhs", | ||
269 | .id = 1, | ||
270 | .dev = { | ||
271 | .dma_mask = NULL, /* not use dma */ | ||
272 | .coherent_dma_mask = 0xffffffff, | ||
273 | .platform_data = &usbhs_info, | ||
274 | }, | ||
275 | .num_resources = ARRAY_SIZE(usbhs_resources), | ||
276 | .resource = usbhs_resources, | ||
277 | .archdata = { | ||
278 | .hwblk_id = HWBLK_USB1, | ||
279 | }, | ||
280 | }; | ||
281 | |||
235 | /* LCDC */ | 282 | /* LCDC */ |
236 | const static struct fb_videomode ecovec_lcd_modes[] = { | 283 | static const struct fb_videomode ecovec_lcd_modes[] = { |
237 | { | 284 | { |
238 | .name = "Panel", | 285 | .name = "Panel", |
239 | .xres = 800, | 286 | .xres = 800, |
@@ -248,7 +295,7 @@ const static struct fb_videomode ecovec_lcd_modes[] = { | |||
248 | }, | 295 | }, |
249 | }; | 296 | }; |
250 | 297 | ||
251 | const static struct fb_videomode ecovec_dvi_modes[] = { | 298 | static const struct fb_videomode ecovec_dvi_modes[] = { |
252 | { | 299 | { |
253 | .name = "DVI", | 300 | .name = "DVI", |
254 | .xres = 1280, | 301 | .xres = 1280, |
@@ -482,7 +529,7 @@ static struct i2c_board_info ts_i2c_clients = { | |||
482 | .irq = IRQ0, | 529 | .irq = IRQ0, |
483 | }; | 530 | }; |
484 | 531 | ||
485 | #if defined(CONFIG_MMC_TMIO) || defined(CONFIG_MMC_TMIO_MODULE) | 532 | #if defined(CONFIG_MMC_SDHI) || defined(CONFIG_MMC_SDHI_MODULE) |
486 | /* SDHI0 */ | 533 | /* SDHI0 */ |
487 | static void sdhi0_set_pwr(struct platform_device *pdev, int state) | 534 | static void sdhi0_set_pwr(struct platform_device *pdev, int state) |
488 | { | 535 | { |
@@ -522,7 +569,7 @@ static struct platform_device sdhi0_device = { | |||
522 | }, | 569 | }, |
523 | }; | 570 | }; |
524 | 571 | ||
525 | #if !defined(CONFIG_MMC_SH_MMCIF) | 572 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) |
526 | /* SDHI1 */ | 573 | /* SDHI1 */ |
527 | static void sdhi1_set_pwr(struct platform_device *pdev, int state) | 574 | static void sdhi1_set_pwr(struct platform_device *pdev, int state) |
528 | { | 575 | { |
@@ -836,7 +883,7 @@ static struct platform_device vou_device = { | |||
836 | }, | 883 | }, |
837 | }; | 884 | }; |
838 | 885 | ||
839 | #if defined(CONFIG_MMC_SH_MMCIF) | 886 | #if defined(CONFIG_MMC_SH_MMCIF) || defined(CONFIG_MMC_SH_MMCIF_MODULE) |
840 | /* SH_MMCIF */ | 887 | /* SH_MMCIF */ |
841 | static void mmcif_set_pwr(struct platform_device *pdev, int state) | 888 | static void mmcif_set_pwr(struct platform_device *pdev, int state) |
842 | { | 889 | { |
@@ -885,6 +932,9 @@ static struct platform_device sh_mmcif_device = { | |||
885 | }, | 932 | }, |
886 | .num_resources = ARRAY_SIZE(sh_mmcif_resources), | 933 | .num_resources = ARRAY_SIZE(sh_mmcif_resources), |
887 | .resource = sh_mmcif_resources, | 934 | .resource = sh_mmcif_resources, |
935 | .archdata = { | ||
936 | .hwblk_id = HWBLK_MMC, | ||
937 | }, | ||
888 | }; | 938 | }; |
889 | #endif | 939 | #endif |
890 | 940 | ||
@@ -894,13 +944,14 @@ static struct platform_device *ecovec_devices[] __initdata = { | |||
894 | &sh_eth_device, | 944 | &sh_eth_device, |
895 | &usb0_host_device, | 945 | &usb0_host_device, |
896 | &usb1_common_device, | 946 | &usb1_common_device, |
947 | &usbhs_device, | ||
897 | &lcdc_device, | 948 | &lcdc_device, |
898 | &ceu0_device, | 949 | &ceu0_device, |
899 | &ceu1_device, | 950 | &ceu1_device, |
900 | &keysc_device, | 951 | &keysc_device, |
901 | #if defined(CONFIG_MMC_TMIO) || defined(CONFIG_MMC_TMIO_MODULE) | 952 | #if defined(CONFIG_MMC_SDHI) || defined(CONFIG_MMC_SDHI_MODULE) |
902 | &sdhi0_device, | 953 | &sdhi0_device, |
903 | #if !defined(CONFIG_MMC_SH_MMCIF) | 954 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) |
904 | &sdhi1_device, | 955 | &sdhi1_device, |
905 | #endif | 956 | #endif |
906 | #else | 957 | #else |
@@ -912,7 +963,7 @@ static struct platform_device *ecovec_devices[] __initdata = { | |||
912 | &fsi_device, | 963 | &fsi_device, |
913 | &irda_device, | 964 | &irda_device, |
914 | &vou_device, | 965 | &vou_device, |
915 | #if defined(CONFIG_MMC_SH_MMCIF) | 966 | #if defined(CONFIG_MMC_SH_MMCIF) || defined(CONFIG_MMC_SH_MMCIF_MODULE) |
916 | &sh_mmcif_device, | 967 | &sh_mmcif_device, |
917 | #endif | 968 | #endif |
918 | }; | 969 | }; |
@@ -1180,7 +1231,7 @@ static int __init arch_setup(void) | |||
1180 | gpio_direction_input(GPIO_PTR5); | 1231 | gpio_direction_input(GPIO_PTR5); |
1181 | gpio_direction_input(GPIO_PTR6); | 1232 | gpio_direction_input(GPIO_PTR6); |
1182 | 1233 | ||
1183 | #if defined(CONFIG_MMC_TMIO) || defined(CONFIG_MMC_TMIO_MODULE) | 1234 | #if defined(CONFIG_MMC_SDHI) || defined(CONFIG_MMC_SDHI_MODULE) |
1184 | /* enable SDHI0 on CN11 (needs DS2.4 set to ON) */ | 1235 | /* enable SDHI0 on CN11 (needs DS2.4 set to ON) */ |
1185 | gpio_request(GPIO_FN_SDHI0CD, NULL); | 1236 | gpio_request(GPIO_FN_SDHI0CD, NULL); |
1186 | gpio_request(GPIO_FN_SDHI0WP, NULL); | 1237 | gpio_request(GPIO_FN_SDHI0WP, NULL); |
@@ -1193,7 +1244,7 @@ static int __init arch_setup(void) | |||
1193 | gpio_request(GPIO_PTB6, NULL); | 1244 | gpio_request(GPIO_PTB6, NULL); |
1194 | gpio_direction_output(GPIO_PTB6, 0); | 1245 | gpio_direction_output(GPIO_PTB6, 0); |
1195 | 1246 | ||
1196 | #if !defined(CONFIG_MMC_SH_MMCIF) | 1247 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) |
1197 | /* enable SDHI1 on CN12 (needs DS2.6,7 set to ON,OFF) */ | 1248 | /* enable SDHI1 on CN12 (needs DS2.6,7 set to ON,OFF) */ |
1198 | gpio_request(GPIO_FN_SDHI1CD, NULL); | 1249 | gpio_request(GPIO_FN_SDHI1CD, NULL); |
1199 | gpio_request(GPIO_FN_SDHI1WP, NULL); | 1250 | gpio_request(GPIO_FN_SDHI1WP, NULL); |
@@ -1284,7 +1335,7 @@ static int __init arch_setup(void) | |||
1284 | gpio_request(GPIO_PTU5, NULL); | 1335 | gpio_request(GPIO_PTU5, NULL); |
1285 | gpio_direction_output(GPIO_PTU5, 0); | 1336 | gpio_direction_output(GPIO_PTU5, 0); |
1286 | 1337 | ||
1287 | #if defined(CONFIG_MMC_SH_MMCIF) | 1338 | #if defined(CONFIG_MMC_SH_MMCIF) || defined(CONFIG_MMC_SH_MMCIF_MODULE) |
1288 | /* enable MMCIF (needs DS2.6,7 set to OFF,ON) */ | 1339 | /* enable MMCIF (needs DS2.6,7 set to OFF,ON) */ |
1289 | gpio_request(GPIO_FN_MMC_D7, NULL); | 1340 | gpio_request(GPIO_FN_MMC_D7, NULL); |
1290 | gpio_request(GPIO_FN_MMC_D6, NULL); | 1341 | gpio_request(GPIO_FN_MMC_D6, NULL); |
diff --git a/arch/sh/boards/mach-highlander/setup.c b/arch/sh/boards/mach-highlander/setup.c index 87618c91d178..74b8db1b74a9 100644 --- a/arch/sh/boards/mach-highlander/setup.c +++ b/arch/sh/boards/mach-highlander/setup.c | |||
@@ -335,8 +335,6 @@ static struct clk *r7780rp_clocks[] = { | |||
335 | &ivdr_clk, | 335 | &ivdr_clk, |
336 | }; | 336 | }; |
337 | 337 | ||
338 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
339 | |||
340 | static struct clk_lookup lookups[] = { | 338 | static struct clk_lookup lookups[] = { |
341 | /* main clocks */ | 339 | /* main clocks */ |
342 | CLKDEV_CON_ID("ivdr_clk", &ivdr_clk), | 340 | CLKDEV_CON_ID("ivdr_clk", &ivdr_clk), |
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c index 8b4abbbd1477..f65271a8d075 100644 --- a/arch/sh/boards/mach-kfr2r09/setup.c +++ b/arch/sh/boards/mach-kfr2r09/setup.c | |||
@@ -127,7 +127,7 @@ static struct platform_device kfr2r09_sh_keysc_device = { | |||
127 | }, | 127 | }, |
128 | }; | 128 | }; |
129 | 129 | ||
130 | const static struct fb_videomode kfr2r09_lcdc_modes[] = { | 130 | static const struct fb_videomode kfr2r09_lcdc_modes[] = { |
131 | { | 131 | { |
132 | .name = "TX07D34VM0AAA", | 132 | .name = "TX07D34VM0AAA", |
133 | .xres = 240, | 133 | .xres = 240, |
diff --git a/arch/sh/boards/mach-migor/setup.c b/arch/sh/boards/mach-migor/setup.c index 184fde169132..2d4c9c8c6664 100644 --- a/arch/sh/boards/mach-migor/setup.c +++ b/arch/sh/boards/mach-migor/setup.c | |||
@@ -214,7 +214,7 @@ static struct platform_device migor_nand_flash_device = { | |||
214 | } | 214 | } |
215 | }; | 215 | }; |
216 | 216 | ||
217 | const static struct fb_videomode migor_lcd_modes[] = { | 217 | static const struct fb_videomode migor_lcd_modes[] = { |
218 | { | 218 | { |
219 | #if defined(CONFIG_SH_MIGOR_RTA_WVGA) | 219 | #if defined(CONFIG_SH_MIGOR_RTA_WVGA) |
220 | .name = "LB070WV1", | 220 | .name = "LB070WV1", |
diff --git a/arch/sh/boards/mach-sdk7786/setup.c b/arch/sh/boards/mach-sdk7786/setup.c index 1521aa75ee3a..486d1ac3694c 100644 --- a/arch/sh/boards/mach-sdk7786/setup.c +++ b/arch/sh/boards/mach-sdk7786/setup.c | |||
@@ -194,7 +194,7 @@ static int sdk7786_clk_init(void) | |||
194 | return -EINVAL; | 194 | return -EINVAL; |
195 | 195 | ||
196 | clk = clk_get(NULL, "extal"); | 196 | clk = clk_get(NULL, "extal"); |
197 | if (!clk || IS_ERR(clk)) | 197 | if (IS_ERR(clk)) |
198 | return PTR_ERR(clk); | 198 | return PTR_ERR(clk); |
199 | ret = clk_set_rate(clk, 33333333); | 199 | ret = clk_set_rate(clk, 33333333); |
200 | clk_put(clk); | 200 | clk_put(clk); |
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c index 12357671023e..d00756728bd2 100644 --- a/arch/sh/boards/mach-se/7724/setup.c +++ b/arch/sh/boards/mach-se/7724/setup.c | |||
@@ -145,7 +145,7 @@ static struct platform_device nor_flash_device = { | |||
145 | }; | 145 | }; |
146 | 146 | ||
147 | /* LCDC */ | 147 | /* LCDC */ |
148 | const static struct fb_videomode lcdc_720p_modes[] = { | 148 | static const struct fb_videomode lcdc_720p_modes[] = { |
149 | { | 149 | { |
150 | .name = "LB070WV1", | 150 | .name = "LB070WV1", |
151 | .sync = 0, /* hsync and vsync are active low */ | 151 | .sync = 0, /* hsync and vsync are active low */ |
@@ -160,7 +160,7 @@ const static struct fb_videomode lcdc_720p_modes[] = { | |||
160 | }, | 160 | }, |
161 | }; | 161 | }; |
162 | 162 | ||
163 | const static struct fb_videomode lcdc_vga_modes[] = { | 163 | static const struct fb_videomode lcdc_vga_modes[] = { |
164 | { | 164 | { |
165 | .name = "LB070WV1", | 165 | .name = "LB070WV1", |
166 | .sync = 0, /* hsync and vsync are active low */ | 166 | .sync = 0, /* hsync and vsync are active low */ |
diff --git a/arch/sh/boot/compressed/Makefile b/arch/sh/boot/compressed/Makefile index 780e083e4d17..23bc849d9c64 100644 --- a/arch/sh/boot/compressed/Makefile +++ b/arch/sh/boot/compressed/Makefile | |||
@@ -27,8 +27,6 @@ IMAGE_OFFSET := $(shell /bin/bash -c 'printf "0x%08x" \ | |||
27 | $(CONFIG_BOOT_LINK_OFFSET)]') | 27 | $(CONFIG_BOOT_LINK_OFFSET)]') |
28 | endif | 28 | endif |
29 | 29 | ||
30 | LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) | ||
31 | |||
32 | ifeq ($(CONFIG_MCOUNT),y) | 30 | ifeq ($(CONFIG_MCOUNT),y) |
33 | ORIG_CFLAGS := $(KBUILD_CFLAGS) | 31 | ORIG_CFLAGS := $(KBUILD_CFLAGS) |
34 | KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) | 32 | KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS)) |
@@ -37,7 +35,25 @@ endif | |||
37 | LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext $(IMAGE_OFFSET) -e startup \ | 35 | LDFLAGS_vmlinux := --oformat $(ld-bfd) -Ttext $(IMAGE_OFFSET) -e startup \ |
38 | -T $(obj)/../../kernel/vmlinux.lds | 36 | -T $(obj)/../../kernel/vmlinux.lds |
39 | 37 | ||
40 | $(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o $(LIBGCC) FORCE | 38 | # |
39 | # Pull in the necessary libgcc bits from the in-kernel implementation. | ||
40 | # | ||
41 | lib1funcs-$(CONFIG_SUPERH32) := ashiftrt.S ashldi3.c ashrsi3.S ashlsi3.S \ | ||
42 | lshrsi3.S | ||
43 | lib1funcs-obj := \ | ||
44 | $(addsuffix .o, $(basename $(addprefix $(obj)/, $(lib1funcs-y)))) | ||
45 | |||
46 | lib1funcs-dir := $(srctree)/arch/$(SRCARCH)/lib | ||
47 | ifeq ($(BITS),64) | ||
48 | lib1funcs-dir := $(addsuffix $(BITS), $(lib1funcs-dir)) | ||
49 | endif | ||
50 | |||
51 | KBUILD_CFLAGS += -I$(lib1funcs-dir) | ||
52 | |||
53 | $(addprefix $(obj)/,$(lib1funcs-y)): $(obj)/%: $(lib1funcs-dir)/% FORCE | ||
54 | $(call cmd,shipped) | ||
55 | |||
56 | $(obj)/vmlinux: $(OBJECTS) $(obj)/piggy.o $(lib1funcs-obj) FORCE | ||
41 | $(call if_changed,ld) | 57 | $(call if_changed,ld) |
42 | @: | 58 | @: |
43 | 59 | ||
diff --git a/arch/sh/configs/apsh4ad0a_defconfig b/arch/sh/configs/apsh4ad0a_defconfig index e71a531f1e31..e7583484cc07 100644 --- a/arch/sh/configs/apsh4ad0a_defconfig +++ b/arch/sh/configs/apsh4ad0a_defconfig | |||
@@ -7,7 +7,6 @@ CONFIG_IKCONFIG=y | |||
7 | CONFIG_IKCONFIG_PROC=y | 7 | CONFIG_IKCONFIG_PROC=y |
8 | CONFIG_LOG_BUF_SHIFT=14 | 8 | CONFIG_LOG_BUF_SHIFT=14 |
9 | CONFIG_CGROUPS=y | 9 | CONFIG_CGROUPS=y |
10 | CONFIG_CGROUP_NS=y | ||
11 | CONFIG_CGROUP_FREEZER=y | 10 | CONFIG_CGROUP_FREEZER=y |
12 | CONFIG_CGROUP_DEVICE=y | 11 | CONFIG_CGROUP_DEVICE=y |
13 | CONFIG_CGROUP_CPUACCT=y | 12 | CONFIG_CGROUP_CPUACCT=y |
@@ -48,7 +47,6 @@ CONFIG_PREEMPT=y | |||
48 | CONFIG_BINFMT_MISC=y | 47 | CONFIG_BINFMT_MISC=y |
49 | CONFIG_PM=y | 48 | CONFIG_PM=y |
50 | CONFIG_PM_DEBUG=y | 49 | CONFIG_PM_DEBUG=y |
51 | CONFIG_PM_VERBOSE=y | ||
52 | CONFIG_PM_RUNTIME=y | 50 | CONFIG_PM_RUNTIME=y |
53 | CONFIG_CPU_IDLE=y | 51 | CONFIG_CPU_IDLE=y |
54 | CONFIG_NET=y | 52 | CONFIG_NET=y |
diff --git a/arch/sh/configs/ecovec24_defconfig b/arch/sh/configs/ecovec24_defconfig index 8d13e8a5a750..911e30c9abfd 100644 --- a/arch/sh/configs/ecovec24_defconfig +++ b/arch/sh/configs/ecovec24_defconfig | |||
@@ -115,7 +115,7 @@ CONFIG_USB_GADGET=y | |||
115 | CONFIG_USB_FILE_STORAGE=m | 115 | CONFIG_USB_FILE_STORAGE=m |
116 | CONFIG_MMC=y | 116 | CONFIG_MMC=y |
117 | CONFIG_MMC_SPI=y | 117 | CONFIG_MMC_SPI=y |
118 | CONFIG_MMC_TMIO=y | 118 | CONFIG_MMC_SDHI=y |
119 | CONFIG_RTC_CLASS=y | 119 | CONFIG_RTC_CLASS=y |
120 | CONFIG_RTC_DRV_RS5C372=y | 120 | CONFIG_RTC_DRV_RS5C372=y |
121 | CONFIG_UIO=y | 121 | CONFIG_UIO=y |
diff --git a/arch/sh/configs/sdk7786_defconfig b/arch/sh/configs/sdk7786_defconfig index dc4a2eb6a616..8a7dd7b59c5c 100644 --- a/arch/sh/configs/sdk7786_defconfig +++ b/arch/sh/configs/sdk7786_defconfig | |||
@@ -12,7 +12,6 @@ CONFIG_IKCONFIG=y | |||
12 | CONFIG_IKCONFIG_PROC=y | 12 | CONFIG_IKCONFIG_PROC=y |
13 | CONFIG_CGROUPS=y | 13 | CONFIG_CGROUPS=y |
14 | CONFIG_CGROUP_DEBUG=y | 14 | CONFIG_CGROUP_DEBUG=y |
15 | CONFIG_CGROUP_NS=y | ||
16 | CONFIG_CGROUP_FREEZER=y | 15 | CONFIG_CGROUP_FREEZER=y |
17 | CONFIG_CGROUP_DEVICE=y | 16 | CONFIG_CGROUP_DEVICE=y |
18 | CONFIG_CPUSETS=y | 17 | CONFIG_CPUSETS=y |
@@ -83,7 +82,6 @@ CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y | |||
83 | CONFIG_BINFMT_MISC=y | 82 | CONFIG_BINFMT_MISC=y |
84 | CONFIG_PM=y | 83 | CONFIG_PM=y |
85 | CONFIG_PM_DEBUG=y | 84 | CONFIG_PM_DEBUG=y |
86 | CONFIG_PM_VERBOSE=y | ||
87 | CONFIG_PM_RUNTIME=y | 85 | CONFIG_PM_RUNTIME=y |
88 | CONFIG_CPU_IDLE=y | 86 | CONFIG_CPU_IDLE=y |
89 | CONFIG_NET=y | 87 | CONFIG_NET=y |
diff --git a/arch/sh/configs/se7206_defconfig b/arch/sh/configs/se7206_defconfig index a468ff227fc6..72c3fad7383f 100644 --- a/arch/sh/configs/se7206_defconfig +++ b/arch/sh/configs/se7206_defconfig | |||
@@ -8,7 +8,6 @@ CONFIG_RCU_TRACE=y | |||
8 | CONFIG_LOG_BUF_SHIFT=14 | 8 | CONFIG_LOG_BUF_SHIFT=14 |
9 | CONFIG_CGROUPS=y | 9 | CONFIG_CGROUPS=y |
10 | CONFIG_CGROUP_DEBUG=y | 10 | CONFIG_CGROUP_DEBUG=y |
11 | CONFIG_CGROUP_NS=y | ||
12 | CONFIG_CGROUP_DEVICE=y | 11 | CONFIG_CGROUP_DEVICE=y |
13 | CONFIG_CGROUP_CPUACCT=y | 12 | CONFIG_CGROUP_CPUACCT=y |
14 | CONFIG_RESOURCE_COUNTERS=y | 13 | CONFIG_RESOURCE_COUNTERS=y |
diff --git a/arch/sh/configs/sh7757lcr_defconfig b/arch/sh/configs/sh7757lcr_defconfig index fa0ecf87034c..cfde98ddb29d 100644 --- a/arch/sh/configs/sh7757lcr_defconfig +++ b/arch/sh/configs/sh7757lcr_defconfig | |||
@@ -9,7 +9,6 @@ CONFIG_TASK_XACCT=y | |||
9 | CONFIG_TASK_IO_ACCOUNTING=y | 9 | CONFIG_TASK_IO_ACCOUNTING=y |
10 | CONFIG_LOG_BUF_SHIFT=14 | 10 | CONFIG_LOG_BUF_SHIFT=14 |
11 | CONFIG_BLK_DEV_INITRD=y | 11 | CONFIG_BLK_DEV_INITRD=y |
12 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
13 | # CONFIG_SYSCTL_SYSCALL is not set | 12 | # CONFIG_SYSCTL_SYSCALL is not set |
14 | CONFIG_KALLSYMS_ALL=y | 13 | CONFIG_KALLSYMS_ALL=y |
15 | CONFIG_SLAB=y | 14 | CONFIG_SLAB=y |
@@ -39,8 +38,6 @@ CONFIG_IPV6=y | |||
39 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 38 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
40 | # CONFIG_FW_LOADER is not set | 39 | # CONFIG_FW_LOADER is not set |
41 | CONFIG_MTD=y | 40 | CONFIG_MTD=y |
42 | CONFIG_MTD_CONCAT=y | ||
43 | CONFIG_MTD_PARTITIONS=y | ||
44 | CONFIG_MTD_CHAR=y | 41 | CONFIG_MTD_CHAR=y |
45 | CONFIG_MTD_BLOCK=y | 42 | CONFIG_MTD_BLOCK=y |
46 | CONFIG_MTD_M25P80=y | 43 | CONFIG_MTD_M25P80=y |
@@ -56,21 +53,22 @@ CONFIG_SH_ETH=y | |||
56 | # CONFIG_KEYBOARD_ATKBD is not set | 53 | # CONFIG_KEYBOARD_ATKBD is not set |
57 | # CONFIG_MOUSE_PS2 is not set | 54 | # CONFIG_MOUSE_PS2 is not set |
58 | # CONFIG_SERIO is not set | 55 | # CONFIG_SERIO is not set |
56 | # CONFIG_LEGACY_PTYS is not set | ||
59 | CONFIG_SERIAL_SH_SCI=y | 57 | CONFIG_SERIAL_SH_SCI=y |
60 | CONFIG_SERIAL_SH_SCI_NR_UARTS=3 | 58 | CONFIG_SERIAL_SH_SCI_NR_UARTS=3 |
61 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | 59 | CONFIG_SERIAL_SH_SCI_CONSOLE=y |
62 | # CONFIG_LEGACY_PTYS is not set | ||
63 | # CONFIG_HW_RANDOM is not set | 60 | # CONFIG_HW_RANDOM is not set |
64 | CONFIG_SPI=y | 61 | CONFIG_SPI=y |
65 | CONFIG_SPI_SH=y | 62 | CONFIG_SPI_SH=y |
66 | # CONFIG_HWMON is not set | 63 | # CONFIG_HWMON is not set |
67 | CONFIG_MFD_SH_MOBILE_SDHI=y | ||
68 | CONFIG_USB=y | 64 | CONFIG_USB=y |
69 | CONFIG_USB_EHCI_HCD=y | 65 | CONFIG_USB_EHCI_HCD=y |
66 | CONFIG_USB_EHCI_SH=y | ||
70 | CONFIG_USB_OHCI_HCD=y | 67 | CONFIG_USB_OHCI_HCD=y |
68 | CONFIG_USB_OHCI_SH=y | ||
71 | CONFIG_USB_STORAGE=y | 69 | CONFIG_USB_STORAGE=y |
72 | CONFIG_MMC=y | 70 | CONFIG_MMC=y |
73 | CONFIG_MMC_TMIO=y | 71 | CONFIG_MMC_SDHI=y |
74 | CONFIG_MMC_SH_MMCIF=y | 72 | CONFIG_MMC_SH_MMCIF=y |
75 | CONFIG_EXT2_FS=y | 73 | CONFIG_EXT2_FS=y |
76 | CONFIG_EXT3_FS=y | 74 | CONFIG_EXT3_FS=y |
diff --git a/arch/sh/configs/shx3_defconfig b/arch/sh/configs/shx3_defconfig index 3f92d37c6374..6bb413036892 100644 --- a/arch/sh/configs/shx3_defconfig +++ b/arch/sh/configs/shx3_defconfig | |||
@@ -9,7 +9,6 @@ CONFIG_IKCONFIG=y | |||
9 | CONFIG_IKCONFIG_PROC=y | 9 | CONFIG_IKCONFIG_PROC=y |
10 | CONFIG_LOG_BUF_SHIFT=14 | 10 | CONFIG_LOG_BUF_SHIFT=14 |
11 | CONFIG_CGROUPS=y | 11 | CONFIG_CGROUPS=y |
12 | CONFIG_CGROUP_NS=y | ||
13 | CONFIG_CGROUP_FREEZER=y | 12 | CONFIG_CGROUP_FREEZER=y |
14 | CONFIG_CGROUP_DEVICE=y | 13 | CONFIG_CGROUP_DEVICE=y |
15 | CONFIG_CGROUP_CPUACCT=y | 14 | CONFIG_CGROUP_CPUACCT=y |
diff --git a/arch/sh/configs/titan_defconfig b/arch/sh/configs/titan_defconfig index 0f558914e760..e2cbd92d520b 100644 --- a/arch/sh/configs/titan_defconfig +++ b/arch/sh/configs/titan_defconfig | |||
@@ -227,7 +227,7 @@ CONFIG_USB_SERIAL=m | |||
227 | CONFIG_USB_SERIAL_GENERIC=y | 227 | CONFIG_USB_SERIAL_GENERIC=y |
228 | CONFIG_USB_SERIAL_ARK3116=m | 228 | CONFIG_USB_SERIAL_ARK3116=m |
229 | CONFIG_USB_SERIAL_PL2303=m | 229 | CONFIG_USB_SERIAL_PL2303=m |
230 | CONFIG_RTC_CLASS=m | 230 | CONFIG_RTC_CLASS=y |
231 | CONFIG_RTC_DRV_SH=m | 231 | CONFIG_RTC_DRV_SH=m |
232 | CONFIG_EXT2_FS=y | 232 | CONFIG_EXT2_FS=y |
233 | CONFIG_EXT3_FS=y | 233 | CONFIG_EXT3_FS=y |
diff --git a/arch/sh/configs/urquell_defconfig b/arch/sh/configs/urquell_defconfig index 7b3daec6fefe..8bfa4d056d7a 100644 --- a/arch/sh/configs/urquell_defconfig +++ b/arch/sh/configs/urquell_defconfig | |||
@@ -9,7 +9,6 @@ CONFIG_IKCONFIG_PROC=y | |||
9 | CONFIG_LOG_BUF_SHIFT=14 | 9 | CONFIG_LOG_BUF_SHIFT=14 |
10 | CONFIG_CGROUPS=y | 10 | CONFIG_CGROUPS=y |
11 | CONFIG_CGROUP_DEBUG=y | 11 | CONFIG_CGROUP_DEBUG=y |
12 | CONFIG_CGROUP_NS=y | ||
13 | CONFIG_CGROUP_FREEZER=y | 12 | CONFIG_CGROUP_FREEZER=y |
14 | CONFIG_CGROUP_DEVICE=y | 13 | CONFIG_CGROUP_DEVICE=y |
15 | CONFIG_CPUSETS=y | 14 | CONFIG_CPUSETS=y |
diff --git a/arch/sh/drivers/pci/fixups-cayman.c b/arch/sh/drivers/pci/fixups-cayman.c index b68b61d22c6c..edc2fb7a5bb2 100644 --- a/arch/sh/drivers/pci/fixups-cayman.c +++ b/arch/sh/drivers/pci/fixups-cayman.c | |||
@@ -5,7 +5,7 @@ | |||
5 | #include <cpu/irq.h> | 5 | #include <cpu/irq.h> |
6 | #include "pci-sh5.h" | 6 | #include "pci-sh5.h" |
7 | 7 | ||
8 | int __init pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin) | 8 | int __init pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
9 | { | 9 | { |
10 | int result = -1; | 10 | int result = -1; |
11 | 11 | ||
diff --git a/arch/sh/drivers/pci/fixups-dreamcast.c b/arch/sh/drivers/pci/fixups-dreamcast.c index 942ef4f155f5..edeea8960c30 100644 --- a/arch/sh/drivers/pci/fixups-dreamcast.c +++ b/arch/sh/drivers/pci/fixups-dreamcast.c | |||
@@ -64,7 +64,7 @@ static void __init gapspci_fixup_resources(struct pci_dev *dev) | |||
64 | } | 64 | } |
65 | DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, gapspci_fixup_resources); | 65 | DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, gapspci_fixup_resources); |
66 | 66 | ||
67 | int __init pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin) | 67 | int __init pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
68 | { | 68 | { |
69 | /* | 69 | /* |
70 | * The interrupt routing semantics here are quite trivial. | 70 | * The interrupt routing semantics here are quite trivial. |
diff --git a/arch/sh/drivers/pci/fixups-landisk.c b/arch/sh/drivers/pci/fixups-landisk.c index 95c6e2d94a0a..ecb1d1060638 100644 --- a/arch/sh/drivers/pci/fixups-landisk.c +++ b/arch/sh/drivers/pci/fixups-landisk.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #define PCIMCR_MRSET_OFF 0xBFFFFFFF | 19 | #define PCIMCR_MRSET_OFF 0xBFFFFFFF |
20 | #define PCIMCR_RFSH_OFF 0xFFFFFFFB | 20 | #define PCIMCR_RFSH_OFF 0xFFFFFFFB |
21 | 21 | ||
22 | int pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 22 | int pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
23 | { | 23 | { |
24 | /* | 24 | /* |
25 | * slot0: pin1-4 = irq5,6,7,8 | 25 | * slot0: pin1-4 = irq5,6,7,8 |
diff --git a/arch/sh/drivers/pci/fixups-r7780rp.c b/arch/sh/drivers/pci/fixups-r7780rp.c index 08b2d8658a00..f9370dce0b70 100644 --- a/arch/sh/drivers/pci/fixups-r7780rp.c +++ b/arch/sh/drivers/pci/fixups-r7780rp.c | |||
@@ -18,7 +18,7 @@ static char irq_tab[] __initdata = { | |||
18 | 65, 66, 67, 68, | 18 | 65, 66, 67, 68, |
19 | }; | 19 | }; |
20 | 20 | ||
21 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 21 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
22 | { | 22 | { |
23 | return irq_tab[slot]; | 23 | return irq_tab[slot]; |
24 | } | 24 | } |
diff --git a/arch/sh/drivers/pci/fixups-rts7751r2d.c b/arch/sh/drivers/pci/fixups-rts7751r2d.c index e248516118a9..eaddb56c45c6 100644 --- a/arch/sh/drivers/pci/fixups-rts7751r2d.c +++ b/arch/sh/drivers/pci/fixups-rts7751r2d.c | |||
@@ -31,7 +31,7 @@ static char lboxre2_irq_tab[] __initdata = { | |||
31 | IRQ_ETH0, IRQ_ETH1, IRQ_INTA, IRQ_INTD, | 31 | IRQ_ETH0, IRQ_ETH1, IRQ_INTA, IRQ_INTD, |
32 | }; | 32 | }; |
33 | 33 | ||
34 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 34 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
35 | { | 35 | { |
36 | if (mach_is_lboxre2()) | 36 | if (mach_is_lboxre2()) |
37 | return lboxre2_irq_tab[slot]; | 37 | return lboxre2_irq_tab[slot]; |
diff --git a/arch/sh/drivers/pci/fixups-sdk7780.c b/arch/sh/drivers/pci/fixups-sdk7780.c index 0930f988ac29..0b8472501b88 100644 --- a/arch/sh/drivers/pci/fixups-sdk7780.c +++ b/arch/sh/drivers/pci/fixups-sdk7780.c | |||
@@ -27,7 +27,7 @@ static char sdk7780_irq_tab[4][16] __initdata = { | |||
27 | { 68, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, | 27 | { 68, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, |
28 | }; | 28 | }; |
29 | 29 | ||
30 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 30 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
31 | { | 31 | { |
32 | return sdk7780_irq_tab[pin-1][slot]; | 32 | return sdk7780_irq_tab[pin-1][slot]; |
33 | } | 33 | } |
diff --git a/arch/sh/drivers/pci/fixups-se7751.c b/arch/sh/drivers/pci/fixups-se7751.c index a4c7d3a4efca..2ec146c3fa44 100644 --- a/arch/sh/drivers/pci/fixups-se7751.c +++ b/arch/sh/drivers/pci/fixups-se7751.c | |||
@@ -6,7 +6,7 @@ | |||
6 | #include <linux/io.h> | 6 | #include <linux/io.h> |
7 | #include "pci-sh4.h" | 7 | #include "pci-sh4.h" |
8 | 8 | ||
9 | int __init pcibios_map_platform_irq(u8 slot, u8 pin) | 9 | int __init pcibios_map_platform_irq(const struct pci_dev *, u8 slot, u8 pin) |
10 | { | 10 | { |
11 | switch (slot) { | 11 | switch (slot) { |
12 | case 0: return 13; | 12 | case 0: return 13; |
diff --git a/arch/sh/drivers/pci/fixups-sh03.c b/arch/sh/drivers/pci/fixups-sh03.c index 2e8a18b7ee53..1615e5906168 100644 --- a/arch/sh/drivers/pci/fixups-sh03.c +++ b/arch/sh/drivers/pci/fixups-sh03.c | |||
@@ -3,7 +3,7 @@ | |||
3 | #include <linux/types.h> | 3 | #include <linux/types.h> |
4 | #include <linux/pci.h> | 4 | #include <linux/pci.h> |
5 | 5 | ||
6 | int __init pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin) | 6 | int __init pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
7 | { | 7 | { |
8 | int irq; | 8 | int irq; |
9 | 9 | ||
diff --git a/arch/sh/drivers/pci/fixups-snapgear.c b/arch/sh/drivers/pci/fixups-snapgear.c index 5a39ecc1adb8..4a093c648d12 100644 --- a/arch/sh/drivers/pci/fixups-snapgear.c +++ b/arch/sh/drivers/pci/fixups-snapgear.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <linux/pci.h> | 18 | #include <linux/pci.h> |
19 | #include "pci-sh4.h" | 19 | #include "pci-sh4.h" |
20 | 20 | ||
21 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 21 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
22 | { | 22 | { |
23 | int irq = -1; | 23 | int irq = -1; |
24 | 24 | ||
diff --git a/arch/sh/drivers/pci/fixups-titan.c b/arch/sh/drivers/pci/fixups-titan.c index 3a79fa8254a6..bd1addb1b8be 100644 --- a/arch/sh/drivers/pci/fixups-titan.c +++ b/arch/sh/drivers/pci/fixups-titan.c | |||
@@ -27,7 +27,7 @@ static char titan_irq_tab[] __initdata = { | |||
27 | TITAN_IRQ_USB, | 27 | TITAN_IRQ_USB, |
28 | }; | 28 | }; |
29 | 29 | ||
30 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 30 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
31 | { | 31 | { |
32 | int irq = titan_irq_tab[slot]; | 32 | int irq = titan_irq_tab[slot]; |
33 | 33 | ||
diff --git a/arch/sh/drivers/pci/pcie-sh7786.c b/arch/sh/drivers/pci/pcie-sh7786.c index 4418f9070ed1..4df27c4fbf99 100644 --- a/arch/sh/drivers/pci/pcie-sh7786.c +++ b/arch/sh/drivers/pci/pcie-sh7786.c | |||
@@ -466,7 +466,7 @@ static int __init pcie_init(struct sh7786_pcie_port *port) | |||
466 | return 0; | 466 | return 0; |
467 | } | 467 | } |
468 | 468 | ||
469 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 469 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
470 | { | 470 | { |
471 | return 71; | 471 | return 71; |
472 | } | 472 | } |
diff --git a/arch/sh/include/asm/atomic.h b/arch/sh/include/asm/atomic.h index c7983124d99d..63a27dbc952e 100644 --- a/arch/sh/include/asm/atomic.h +++ b/arch/sh/include/asm/atomic.h | |||
@@ -30,7 +30,6 @@ | |||
30 | #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0) | 30 | #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0) |
31 | #define atomic_sub_and_test(i,v) (atomic_sub_return((i), (v)) == 0) | 31 | #define atomic_sub_and_test(i,v) (atomic_sub_return((i), (v)) == 0) |
32 | #define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0) | 32 | #define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0) |
33 | #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) | ||
34 | 33 | ||
35 | #define atomic_inc(v) atomic_add(1, (v)) | 34 | #define atomic_inc(v) atomic_add(1, (v)) |
36 | #define atomic_dec(v) atomic_sub(1, (v)) | 35 | #define atomic_dec(v) atomic_sub(1, (v)) |
@@ -39,15 +38,15 @@ | |||
39 | #define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n))) | 38 | #define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n))) |
40 | 39 | ||
41 | /** | 40 | /** |
42 | * atomic_add_unless - add unless the number is a given value | 41 | * __atomic_add_unless - add unless the number is a given value |
43 | * @v: pointer of type atomic_t | 42 | * @v: pointer of type atomic_t |
44 | * @a: the amount to add to v... | 43 | * @a: the amount to add to v... |
45 | * @u: ...unless v is equal to u. | 44 | * @u: ...unless v is equal to u. |
46 | * | 45 | * |
47 | * Atomically adds @a to @v, so long as it was not @u. | 46 | * Atomically adds @a to @v, so long as it was not @u. |
48 | * Returns non-zero if @v was not @u, and zero otherwise. | 47 | * Returns the old value of @v. |
49 | */ | 48 | */ |
50 | static inline int atomic_add_unless(atomic_t *v, int a, int u) | 49 | static inline int __atomic_add_unless(atomic_t *v, int a, int u) |
51 | { | 50 | { |
52 | int c, old; | 51 | int c, old; |
53 | c = atomic_read(v); | 52 | c = atomic_read(v); |
@@ -60,7 +59,7 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) | |||
60 | c = old; | 59 | c = old; |
61 | } | 60 | } |
62 | 61 | ||
63 | return c != (u); | 62 | return c; |
64 | } | 63 | } |
65 | 64 | ||
66 | #define smp_mb__before_atomic_dec() smp_mb() | 65 | #define smp_mb__before_atomic_dec() smp_mb() |
@@ -68,7 +67,4 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) | |||
68 | #define smp_mb__before_atomic_inc() smp_mb() | 67 | #define smp_mb__before_atomic_inc() smp_mb() |
69 | #define smp_mb__after_atomic_inc() smp_mb() | 68 | #define smp_mb__after_atomic_inc() smp_mb() |
70 | 69 | ||
71 | #include <asm-generic/atomic-long.h> | ||
72 | #include <asm-generic/atomic64.h> | ||
73 | |||
74 | #endif /* __ASM_SH_ATOMIC_H */ | 70 | #endif /* __ASM_SH_ATOMIC_H */ |
diff --git a/arch/sh/include/asm/cmpxchg-grb.h b/arch/sh/include/asm/cmpxchg-grb.h index 4676bf57693a..f848dec9e483 100644 --- a/arch/sh/include/asm/cmpxchg-grb.h +++ b/arch/sh/include/asm/cmpxchg-grb.h | |||
@@ -15,8 +15,9 @@ static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val) | |||
15 | " mov.l %2, @%1 \n\t" /* store new value */ | 15 | " mov.l %2, @%1 \n\t" /* store new value */ |
16 | "1: mov r1, r15 \n\t" /* LOGOUT */ | 16 | "1: mov r1, r15 \n\t" /* LOGOUT */ |
17 | : "=&r" (retval), | 17 | : "=&r" (retval), |
18 | "+r" (m) | 18 | "+r" (m), |
19 | : "r" (val) | 19 | "+r" (val) /* inhibit r15 overloading */ |
20 | : | ||
20 | : "memory", "r0", "r1"); | 21 | : "memory", "r0", "r1"); |
21 | 22 | ||
22 | return retval; | 23 | return retval; |
@@ -36,8 +37,9 @@ static inline unsigned long xchg_u8(volatile u8 *m, unsigned long val) | |||
36 | " mov.b %2, @%1 \n\t" /* store new value */ | 37 | " mov.b %2, @%1 \n\t" /* store new value */ |
37 | "1: mov r1, r15 \n\t" /* LOGOUT */ | 38 | "1: mov r1, r15 \n\t" /* LOGOUT */ |
38 | : "=&r" (retval), | 39 | : "=&r" (retval), |
39 | "+r" (m) | 40 | "+r" (m), |
40 | : "r" (val) | 41 | "+r" (val) /* inhibit r15 overloading */ |
42 | : | ||
41 | : "memory" , "r0", "r1"); | 43 | : "memory" , "r0", "r1"); |
42 | 44 | ||
43 | return retval; | 45 | return retval; |
@@ -54,13 +56,14 @@ static inline unsigned long __cmpxchg_u32(volatile int *m, unsigned long old, | |||
54 | " nop \n\t" | 56 | " nop \n\t" |
55 | " mov r15, r1 \n\t" /* r1 = saved sp */ | 57 | " mov r15, r1 \n\t" /* r1 = saved sp */ |
56 | " mov #-8, r15 \n\t" /* LOGIN */ | 58 | " mov #-8, r15 \n\t" /* LOGIN */ |
57 | " mov.l @%1, %0 \n\t" /* load old value */ | 59 | " mov.l @%3, %0 \n\t" /* load old value */ |
58 | " cmp/eq %0, %2 \n\t" | 60 | " cmp/eq %0, %1 \n\t" |
59 | " bf 1f \n\t" /* if not equal */ | 61 | " bf 1f \n\t" /* if not equal */ |
60 | " mov.l %3, @%1 \n\t" /* store new value */ | 62 | " mov.l %2, @%3 \n\t" /* store new value */ |
61 | "1: mov r1, r15 \n\t" /* LOGOUT */ | 63 | "1: mov r1, r15 \n\t" /* LOGOUT */ |
62 | : "=&r" (retval) | 64 | : "=&r" (retval), |
63 | : "r" (m), "r" (old), "r" (new) | 65 | "+r" (old), "+r" (new) /* old or new can be r15 */ |
66 | : "r" (m) | ||
64 | : "memory" , "r0", "r1", "t"); | 67 | : "memory" , "r0", "r1", "t"); |
65 | 68 | ||
66 | return retval; | 69 | return retval; |
diff --git a/arch/sh/include/asm/delay.h b/arch/sh/include/asm/delay.h index 4b16bf9b56bd..9670e127b7b2 100644 --- a/arch/sh/include/asm/delay.h +++ b/arch/sh/include/asm/delay.h | |||
@@ -1,26 +1 @@ | |||
1 | #ifndef __ASM_SH_DELAY_H | #include <asm-generic/delay.h> | |
2 | #define __ASM_SH_DELAY_H | ||
3 | |||
4 | /* | ||
5 | * Copyright (C) 1993 Linus Torvalds | ||
6 | * | ||
7 | * Delay routines calling functions in arch/sh/lib/delay.c | ||
8 | */ | ||
9 | |||
10 | extern void __bad_udelay(void); | ||
11 | extern void __bad_ndelay(void); | ||
12 | |||
13 | extern void __udelay(unsigned long usecs); | ||
14 | extern void __ndelay(unsigned long nsecs); | ||
15 | extern void __const_udelay(unsigned long xloops); | ||
16 | extern void __delay(unsigned long loops); | ||
17 | |||
18 | #define udelay(n) (__builtin_constant_p(n) ? \ | ||
19 | ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c6ul)) : \ | ||
20 | __udelay(n)) | ||
21 | |||
22 | #define ndelay(n) (__builtin_constant_p(n) ? \ | ||
23 | ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) : \ | ||
24 | __ndelay(n)) | ||
25 | |||
26 | #endif /* __ASM_SH_DELAY_H */ | ||
diff --git a/arch/sh/include/asm/hw_irq.h b/arch/sh/include/asm/hw_irq.h index 603cdde813d1..693d44184058 100644 --- a/arch/sh/include/asm/hw_irq.h +++ b/arch/sh/include/asm/hw_irq.h | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | #include <linux/init.h> | 4 | #include <linux/init.h> |
5 | #include <linux/sh_intc.h> | 5 | #include <linux/sh_intc.h> |
6 | #include <asm/atomic.h> | 6 | #include <linux/atomic.h> |
7 | 7 | ||
8 | extern atomic_t irq_err_count; | 8 | extern atomic_t irq_err_count; |
9 | 9 | ||
diff --git a/arch/sh/include/asm/kgdb.h b/arch/sh/include/asm/kgdb.h index 4235e228d921..f3613952d1ae 100644 --- a/arch/sh/include/asm/kgdb.h +++ b/arch/sh/include/asm/kgdb.h | |||
@@ -34,5 +34,6 @@ static inline void arch_kgdb_breakpoint(void) | |||
34 | 34 | ||
35 | #define CACHE_FLUSH_IS_SAFE 1 | 35 | #define CACHE_FLUSH_IS_SAFE 1 |
36 | #define BREAK_INSTR_SIZE 2 | 36 | #define BREAK_INSTR_SIZE 2 |
37 | #define GDB_ADJUSTS_BREAK_OFFSET | ||
37 | 38 | ||
38 | #endif /* __ASM_SH_KGDB_H */ | 39 | #endif /* __ASM_SH_KGDB_H */ |
diff --git a/arch/sh/include/asm/mmzone.h b/arch/sh/include/asm/mmzone.h index 8887baff5eff..15a8496960e6 100644 --- a/arch/sh/include/asm/mmzone.h +++ b/arch/sh/include/asm/mmzone.h | |||
@@ -9,10 +9,6 @@ | |||
9 | extern struct pglist_data *node_data[]; | 9 | extern struct pglist_data *node_data[]; |
10 | #define NODE_DATA(nid) (node_data[nid]) | 10 | #define NODE_DATA(nid) (node_data[nid]) |
11 | 11 | ||
12 | #define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn) | ||
13 | #define node_end_pfn(nid) (NODE_DATA(nid)->node_start_pfn + \ | ||
14 | NODE_DATA(nid)->node_spanned_pages) | ||
15 | |||
16 | static inline int pfn_to_nid(unsigned long pfn) | 12 | static inline int pfn_to_nid(unsigned long pfn) |
17 | { | 13 | { |
18 | int nid; | 14 | int nid; |
diff --git a/arch/sh/include/asm/pci.h b/arch/sh/include/asm/pci.h index f0efe97f1750..cb21e2399dc1 100644 --- a/arch/sh/include/asm/pci.h +++ b/arch/sh/include/asm/pci.h | |||
@@ -112,7 +112,7 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev, | |||
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | /* Board-specific fixup routines. */ | 114 | /* Board-specific fixup routines. */ |
115 | int pcibios_map_platform_irq(struct pci_dev *dev, u8 slot, u8 pin); | 115 | int pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin); |
116 | 116 | ||
117 | extern void pcibios_resource_to_bus(struct pci_dev *dev, | 117 | extern void pcibios_resource_to_bus(struct pci_dev *dev, |
118 | struct pci_bus_region *region, struct resource *res); | 118 | struct pci_bus_region *region, struct resource *res); |
diff --git a/arch/sh/include/asm/pgtable.h b/arch/sh/include/asm/pgtable.h index db85916b9e95..9210e93a92c3 100644 --- a/arch/sh/include/asm/pgtable.h +++ b/arch/sh/include/asm/pgtable.h | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <asm/pgtable-2level.h> | 18 | #include <asm/pgtable-2level.h> |
19 | #endif | 19 | #endif |
20 | #include <asm/page.h> | 20 | #include <asm/page.h> |
21 | #include <asm/mmu.h> | ||
21 | 22 | ||
22 | #ifndef __ASSEMBLY__ | 23 | #ifndef __ASSEMBLY__ |
23 | #include <asm/addrspace.h> | 24 | #include <asm/addrspace.h> |
diff --git a/arch/sh/include/asm/processor_64.h b/arch/sh/include/asm/processor_64.h index 2a541ddb5a1b..e25c4c7d6b63 100644 --- a/arch/sh/include/asm/processor_64.h +++ b/arch/sh/include/asm/processor_64.h | |||
@@ -150,7 +150,6 @@ struct thread_struct { | |||
150 | #define SR_USER (SR_MMU | SR_FD) | 150 | #define SR_USER (SR_MMU | SR_FD) |
151 | 151 | ||
152 | #define start_thread(_regs, new_pc, new_sp) \ | 152 | #define start_thread(_regs, new_pc, new_sp) \ |
153 | set_fs(USER_DS); \ | ||
154 | _regs->sr = SR_USER; /* User mode. */ \ | 153 | _regs->sr = SR_USER; /* User mode. */ \ |
155 | _regs->pc = new_pc - 4; /* Compensate syscall exit */ \ | 154 | _regs->pc = new_pc - 4; /* Compensate syscall exit */ \ |
156 | _regs->pc |= 1; /* Set SHmedia ! */ \ | 155 | _regs->pc |= 1; /* Set SHmedia ! */ \ |
diff --git a/arch/sh/include/asm/ptrace.h b/arch/sh/include/asm/ptrace.h index de167d3a1a80..b97baf81a87b 100644 --- a/arch/sh/include/asm/ptrace.h +++ b/arch/sh/include/asm/ptrace.h | |||
@@ -40,11 +40,10 @@ | |||
40 | #include <asm/system.h> | 40 | #include <asm/system.h> |
41 | 41 | ||
42 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) | 42 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) |
43 | #define user_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15]) | ||
44 | #define kernel_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15]) | 43 | #define kernel_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15]) |
45 | #define instruction_pointer(regs) ((unsigned long)(regs)->pc) | ||
46 | 44 | ||
47 | extern void show_regs(struct pt_regs *); | 45 | #define GET_FP(regs) ((regs)->regs[14]) |
46 | #define GET_USP(regs) ((regs)->regs[15]) | ||
48 | 47 | ||
49 | #define arch_has_single_step() (1) | 48 | #define arch_has_single_step() (1) |
50 | 49 | ||
@@ -132,13 +131,16 @@ extern void ptrace_triggered(struct perf_event *bp, int nmi, | |||
132 | 131 | ||
133 | static inline unsigned long profile_pc(struct pt_regs *regs) | 132 | static inline unsigned long profile_pc(struct pt_regs *regs) |
134 | { | 133 | { |
135 | unsigned long pc = instruction_pointer(regs); | 134 | unsigned long pc = regs->pc; |
136 | 135 | ||
137 | if (virt_addr_uncached(pc)) | 136 | if (virt_addr_uncached(pc)) |
138 | return CAC_ADDR(pc); | 137 | return CAC_ADDR(pc); |
139 | 138 | ||
140 | return pc; | 139 | return pc; |
141 | } | 140 | } |
141 | #define profile_pc profile_pc | ||
142 | |||
143 | #include <asm-generic/ptrace.h> | ||
142 | #endif /* __KERNEL__ */ | 144 | #endif /* __KERNEL__ */ |
143 | 145 | ||
144 | #endif /* __ASM_SH_PTRACE_H */ | 146 | #endif /* __ASM_SH_PTRACE_H */ |
diff --git a/arch/sh/include/asm/smp.h b/arch/sh/include/asm/smp.h index 9070d943ddde..78b0d0f4b24b 100644 --- a/arch/sh/include/asm/smp.h +++ b/arch/sh/include/asm/smp.h | |||
@@ -8,7 +8,7 @@ | |||
8 | #ifdef CONFIG_SMP | 8 | #ifdef CONFIG_SMP |
9 | 9 | ||
10 | #include <linux/spinlock.h> | 10 | #include <linux/spinlock.h> |
11 | #include <asm/atomic.h> | 11 | #include <linux/atomic.h> |
12 | #include <asm/current.h> | 12 | #include <asm/current.h> |
13 | #include <asm/percpu.h> | 13 | #include <asm/percpu.h> |
14 | 14 | ||
diff --git a/arch/sh/include/asm/stacktrace.h b/arch/sh/include/asm/stacktrace.h index 797018213718..a7e2d4dfd087 100644 --- a/arch/sh/include/asm/stacktrace.h +++ b/arch/sh/include/asm/stacktrace.h | |||
@@ -10,9 +10,6 @@ | |||
10 | /* Generic stack tracer with callbacks */ | 10 | /* Generic stack tracer with callbacks */ |
11 | 11 | ||
12 | struct stacktrace_ops { | 12 | struct stacktrace_ops { |
13 | void (*warning)(void *data, char *msg); | ||
14 | /* msg must contain %s for the symbol */ | ||
15 | void (*warning_symbol)(void *data, char *msg, unsigned long symbol); | ||
16 | void (*address)(void *data, unsigned long address, int reliable); | 13 | void (*address)(void *data, unsigned long address, int reliable); |
17 | /* On negative return stop dumping */ | 14 | /* On negative return stop dumping */ |
18 | int (*stack)(void *data, char *name); | 15 | int (*stack)(void *data, char *name); |
diff --git a/arch/sh/include/asm/suspend.h b/arch/sh/include/asm/suspend.h index 64eb41a063e8..e14567a7e9a1 100644 --- a/arch/sh/include/asm/suspend.h +++ b/arch/sh/include/asm/suspend.h | |||
@@ -3,7 +3,6 @@ | |||
3 | 3 | ||
4 | #ifndef __ASSEMBLY__ | 4 | #ifndef __ASSEMBLY__ |
5 | #include <linux/notifier.h> | 5 | #include <linux/notifier.h> |
6 | static inline int arch_prepare_suspend(void) { return 0; } | ||
7 | 6 | ||
8 | #include <asm/ptrace.h> | 7 | #include <asm/ptrace.h> |
9 | 8 | ||
diff --git a/arch/sh/include/asm/tlb.h b/arch/sh/include/asm/tlb.h index 75abb38dffd5..ec88bfcdf7ce 100644 --- a/arch/sh/include/asm/tlb.h +++ b/arch/sh/include/asm/tlb.h | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/pagemap.h> | 9 | #include <linux/pagemap.h> |
10 | 10 | ||
11 | #ifdef CONFIG_MMU | 11 | #ifdef CONFIG_MMU |
12 | #include <linux/swap.h> | ||
12 | #include <asm/pgalloc.h> | 13 | #include <asm/pgalloc.h> |
13 | #include <asm/tlbflush.h> | 14 | #include <asm/tlbflush.h> |
14 | #include <asm/mmu_context.h> | 15 | #include <asm/mmu_context.h> |
@@ -23,8 +24,6 @@ struct mmu_gather { | |||
23 | unsigned long start, end; | 24 | unsigned long start, end; |
24 | }; | 25 | }; |
25 | 26 | ||
26 | DECLARE_PER_CPU(struct mmu_gather, mmu_gathers); | ||
27 | |||
28 | static inline void init_tlb_gather(struct mmu_gather *tlb) | 27 | static inline void init_tlb_gather(struct mmu_gather *tlb) |
29 | { | 28 | { |
30 | tlb->start = TASK_SIZE; | 29 | tlb->start = TASK_SIZE; |
@@ -36,17 +35,13 @@ static inline void init_tlb_gather(struct mmu_gather *tlb) | |||
36 | } | 35 | } |
37 | } | 36 | } |
38 | 37 | ||
39 | static inline struct mmu_gather * | 38 | static inline void |
40 | tlb_gather_mmu(struct mm_struct *mm, unsigned int full_mm_flush) | 39 | tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned int full_mm_flush) |
41 | { | 40 | { |
42 | struct mmu_gather *tlb = &get_cpu_var(mmu_gathers); | ||
43 | |||
44 | tlb->mm = mm; | 41 | tlb->mm = mm; |
45 | tlb->fullmm = full_mm_flush; | 42 | tlb->fullmm = full_mm_flush; |
46 | 43 | ||
47 | init_tlb_gather(tlb); | 44 | init_tlb_gather(tlb); |
48 | |||
49 | return tlb; | ||
50 | } | 45 | } |
51 | 46 | ||
52 | static inline void | 47 | static inline void |
@@ -57,8 +52,6 @@ tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) | |||
57 | 52 | ||
58 | /* keep the page table cache within bounds */ | 53 | /* keep the page table cache within bounds */ |
59 | check_pgt_cache(); | 54 | check_pgt_cache(); |
60 | |||
61 | put_cpu_var(mmu_gathers); | ||
62 | } | 55 | } |
63 | 56 | ||
64 | static inline void | 57 | static inline void |
@@ -91,7 +84,21 @@ tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma) | |||
91 | } | 84 | } |
92 | } | 85 | } |
93 | 86 | ||
94 | #define tlb_remove_page(tlb,page) free_page_and_swap_cache(page) | 87 | static inline void tlb_flush_mmu(struct mmu_gather *tlb) |
88 | { | ||
89 | } | ||
90 | |||
91 | static inline int __tlb_remove_page(struct mmu_gather *tlb, struct page *page) | ||
92 | { | ||
93 | free_page_and_swap_cache(page); | ||
94 | return 1; /* avoid calling tlb_flush_mmu */ | ||
95 | } | ||
96 | |||
97 | static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page) | ||
98 | { | ||
99 | __tlb_remove_page(tlb, page); | ||
100 | } | ||
101 | |||
95 | #define pte_free_tlb(tlb, ptep, addr) pte_free((tlb)->mm, ptep) | 102 | #define pte_free_tlb(tlb, ptep, addr) pte_free((tlb)->mm, ptep) |
96 | #define pmd_free_tlb(tlb, pmdp, addr) pmd_free((tlb)->mm, pmdp) | 103 | #define pmd_free_tlb(tlb, pmdp, addr) pmd_free((tlb)->mm, pmdp) |
97 | #define pud_free_tlb(tlb, pudp, addr) pud_free((tlb)->mm, pudp) | 104 | #define pud_free_tlb(tlb, pudp, addr) pud_free((tlb)->mm, pudp) |
diff --git a/arch/sh/include/asm/unistd_32.h b/arch/sh/include/asm/unistd_32.h index ca7765e5f967..3432008d2888 100644 --- a/arch/sh/include/asm/unistd_32.h +++ b/arch/sh/include/asm/unistd_32.h | |||
@@ -373,8 +373,10 @@ | |||
373 | #define __NR_open_by_handle_at 360 | 373 | #define __NR_open_by_handle_at 360 |
374 | #define __NR_clock_adjtime 361 | 374 | #define __NR_clock_adjtime 361 |
375 | #define __NR_syncfs 362 | 375 | #define __NR_syncfs 362 |
376 | #define __NR_sendmmsg 363 | ||
377 | #define __NR_setns 364 | ||
376 | 378 | ||
377 | #define NR_syscalls 363 | 379 | #define NR_syscalls 365 |
378 | 380 | ||
379 | #ifdef __KERNEL__ | 381 | #ifdef __KERNEL__ |
380 | 382 | ||
diff --git a/arch/sh/include/asm/unistd_64.h b/arch/sh/include/asm/unistd_64.h index a694009bb816..ec9898665f23 100644 --- a/arch/sh/include/asm/unistd_64.h +++ b/arch/sh/include/asm/unistd_64.h | |||
@@ -394,10 +394,12 @@ | |||
394 | #define __NR_open_by_handle_at 371 | 394 | #define __NR_open_by_handle_at 371 |
395 | #define __NR_clock_adjtime 372 | 395 | #define __NR_clock_adjtime 372 |
396 | #define __NR_syncfs 373 | 396 | #define __NR_syncfs 373 |
397 | #define __NR_sendmmsg 374 | ||
398 | #define __NR_setns 375 | ||
397 | 399 | ||
398 | #ifdef __KERNEL__ | 400 | #ifdef __KERNEL__ |
399 | 401 | ||
400 | #define NR_syscalls 374 | 402 | #define NR_syscalls 376 |
401 | 403 | ||
402 | #define __ARCH_WANT_IPC_PARSE_VERSION | 404 | #define __ARCH_WANT_IPC_PARSE_VERSION |
403 | #define __ARCH_WANT_OLD_READDIR | 405 | #define __ARCH_WANT_OLD_READDIR |
diff --git a/arch/sh/include/cpu-sh3/cpu/serial.h b/arch/sh/include/cpu-sh3/cpu/serial.h new file mode 100644 index 000000000000..7766329bc103 --- /dev/null +++ b/arch/sh/include/cpu-sh3/cpu/serial.h | |||
@@ -0,0 +1,10 @@ | |||
1 | #ifndef __CPU_SH3_SERIAL_H | ||
2 | #define __CPU_SH3_SERIAL_H | ||
3 | |||
4 | #include <linux/serial_sci.h> | ||
5 | |||
6 | extern struct plat_sci_port_ops sh770x_sci_port_ops; | ||
7 | extern struct plat_sci_port_ops sh7710_sci_port_ops; | ||
8 | extern struct plat_sci_port_ops sh7720_sci_port_ops; | ||
9 | |||
10 | #endif /* __CPU_SH3_SERIAL_H */ | ||
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7722.h b/arch/sh/include/cpu-sh4/cpu/sh7722.h index 7a5b8a331b4a..bd0622788d64 100644 --- a/arch/sh/include/cpu-sh4/cpu/sh7722.h +++ b/arch/sh/include/cpu-sh4/cpu/sh7722.h | |||
@@ -236,6 +236,7 @@ enum { | |||
236 | }; | 236 | }; |
237 | 237 | ||
238 | enum { | 238 | enum { |
239 | SHDMA_SLAVE_INVALID, | ||
239 | SHDMA_SLAVE_SCIF0_TX, | 240 | SHDMA_SLAVE_SCIF0_TX, |
240 | SHDMA_SLAVE_SCIF0_RX, | 241 | SHDMA_SLAVE_SCIF0_RX, |
241 | SHDMA_SLAVE_SCIF1_TX, | 242 | SHDMA_SLAVE_SCIF1_TX, |
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7724.h b/arch/sh/include/cpu-sh4/cpu/sh7724.h index 7eb435999426..cbc47e6bcab5 100644 --- a/arch/sh/include/cpu-sh4/cpu/sh7724.h +++ b/arch/sh/include/cpu-sh4/cpu/sh7724.h | |||
@@ -285,6 +285,7 @@ enum { | |||
285 | }; | 285 | }; |
286 | 286 | ||
287 | enum { | 287 | enum { |
288 | SHDMA_SLAVE_INVALID, | ||
288 | SHDMA_SLAVE_SCIF0_TX, | 289 | SHDMA_SLAVE_SCIF0_TX, |
289 | SHDMA_SLAVE_SCIF0_RX, | 290 | SHDMA_SLAVE_SCIF0_RX, |
290 | SHDMA_SLAVE_SCIF1_TX, | 291 | SHDMA_SLAVE_SCIF1_TX, |
@@ -297,6 +298,14 @@ enum { | |||
297 | SHDMA_SLAVE_SCIF4_RX, | 298 | SHDMA_SLAVE_SCIF4_RX, |
298 | SHDMA_SLAVE_SCIF5_TX, | 299 | SHDMA_SLAVE_SCIF5_TX, |
299 | SHDMA_SLAVE_SCIF5_RX, | 300 | SHDMA_SLAVE_SCIF5_RX, |
301 | SHDMA_SLAVE_USB0D0_TX, | ||
302 | SHDMA_SLAVE_USB0D0_RX, | ||
303 | SHDMA_SLAVE_USB0D1_TX, | ||
304 | SHDMA_SLAVE_USB0D1_RX, | ||
305 | SHDMA_SLAVE_USB1D0_TX, | ||
306 | SHDMA_SLAVE_USB1D0_RX, | ||
307 | SHDMA_SLAVE_USB1D1_TX, | ||
308 | SHDMA_SLAVE_USB1D1_RX, | ||
300 | SHDMA_SLAVE_SDHI0_TX, | 309 | SHDMA_SLAVE_SDHI0_TX, |
301 | SHDMA_SLAVE_SDHI0_RX, | 310 | SHDMA_SLAVE_SDHI0_RX, |
302 | SHDMA_SLAVE_SDHI1_TX, | 311 | SHDMA_SLAVE_SDHI1_TX, |
diff --git a/arch/sh/include/cpu-sh4/cpu/sh7757.h b/arch/sh/include/cpu-sh4/cpu/sh7757.h index 05b8196c7753..41f9f8b9db73 100644 --- a/arch/sh/include/cpu-sh4/cpu/sh7757.h +++ b/arch/sh/include/cpu-sh4/cpu/sh7757.h | |||
@@ -252,6 +252,7 @@ enum { | |||
252 | }; | 252 | }; |
253 | 253 | ||
254 | enum { | 254 | enum { |
255 | SHDMA_SLAVE_INVALID, | ||
255 | SHDMA_SLAVE_SDHI_TX, | 256 | SHDMA_SLAVE_SDHI_TX, |
256 | SHDMA_SLAVE_SDHI_RX, | 257 | SHDMA_SLAVE_SDHI_RX, |
257 | SHDMA_SLAVE_MMCIF_TX, | 258 | SHDMA_SLAVE_MMCIF_TX, |
diff --git a/arch/sh/include/cpu-sh4a/cpu/serial.h b/arch/sh/include/cpu-sh4a/cpu/serial.h new file mode 100644 index 000000000000..ff1bc275d210 --- /dev/null +++ b/arch/sh/include/cpu-sh4a/cpu/serial.h | |||
@@ -0,0 +1,7 @@ | |||
1 | #ifndef __CPU_SH4A_SERIAL_H | ||
2 | #define __CPU_SH4A_SERIAL_H | ||
3 | |||
4 | /* arch/sh/kernel/cpu/sh4a/serial-sh7722.c */ | ||
5 | extern struct plat_sci_port_ops sh7722_sci_port_ops; | ||
6 | |||
7 | #endif /* __CPU_SH4A_SERIAL_H */ | ||
diff --git a/arch/sh/kernel/cpu/Makefile b/arch/sh/kernel/cpu/Makefile index d49c2135fd48..ae95935d93cd 100644 --- a/arch/sh/kernel/cpu/Makefile +++ b/arch/sh/kernel/cpu/Makefile | |||
@@ -17,7 +17,5 @@ obj-$(CONFIG_ARCH_SHMOBILE) += shmobile/ | |||
17 | 17 | ||
18 | obj-$(CONFIG_SH_ADC) += adc.o | 18 | obj-$(CONFIG_SH_ADC) += adc.o |
19 | obj-$(CONFIG_SH_CLK_CPG_LEGACY) += clock-cpg.o | 19 | obj-$(CONFIG_SH_CLK_CPG_LEGACY) += clock-cpg.o |
20 | obj-$(CONFIG_SH_FPU) += fpu.o | ||
21 | obj-$(CONFIG_SH_FPU_EMU) += fpu.o | ||
22 | 20 | ||
23 | obj-y += irq/ init.o clock.o hwblk.o proc.o | 21 | obj-y += irq/ init.o clock.o fpu.o hwblk.o proc.o |
diff --git a/arch/sh/kernel/cpu/clock-cpg.c b/arch/sh/kernel/cpu/clock-cpg.c index 8f63a264a842..f59b1f30d44b 100644 --- a/arch/sh/kernel/cpu/clock-cpg.c +++ b/arch/sh/kernel/cpu/clock-cpg.c | |||
@@ -35,8 +35,6 @@ static struct clk *onchip_clocks[] = { | |||
35 | &cpu_clk, | 35 | &cpu_clk, |
36 | }; | 36 | }; |
37 | 37 | ||
38 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
39 | |||
40 | static struct clk_lookup lookups[] = { | 38 | static struct clk_lookup lookups[] = { |
41 | /* main clocks */ | 39 | /* main clocks */ |
42 | CLKDEV_CON_ID("master_clk", &master_clk), | 40 | CLKDEV_CON_ID("master_clk", &master_clk), |
diff --git a/arch/sh/kernel/cpu/sh3/Makefile b/arch/sh/kernel/cpu/sh3/Makefile index ecab274141a8..6f13f33a35ff 100644 --- a/arch/sh/kernel/cpu/sh3/Makefile +++ b/arch/sh/kernel/cpu/sh3/Makefile | |||
@@ -7,15 +7,15 @@ obj-y := ex.o probe.o entry.o setup-sh3.o | |||
7 | obj-$(CONFIG_HIBERNATION) += swsusp.o | 7 | obj-$(CONFIG_HIBERNATION) += swsusp.o |
8 | 8 | ||
9 | # CPU subtype setup | 9 | # CPU subtype setup |
10 | obj-$(CONFIG_CPU_SUBTYPE_SH7705) += setup-sh7705.o | 10 | obj-$(CONFIG_CPU_SUBTYPE_SH7705) += setup-sh7705.o serial-sh770x.o |
11 | obj-$(CONFIG_CPU_SUBTYPE_SH7706) += setup-sh770x.o | 11 | obj-$(CONFIG_CPU_SUBTYPE_SH7706) += setup-sh770x.o serial-sh770x.o |
12 | obj-$(CONFIG_CPU_SUBTYPE_SH7707) += setup-sh770x.o | 12 | obj-$(CONFIG_CPU_SUBTYPE_SH7707) += setup-sh770x.o serial-sh770x.o |
13 | obj-$(CONFIG_CPU_SUBTYPE_SH7708) += setup-sh770x.o | 13 | obj-$(CONFIG_CPU_SUBTYPE_SH7708) += setup-sh770x.o serial-sh770x.o |
14 | obj-$(CONFIG_CPU_SUBTYPE_SH7709) += setup-sh770x.o | 14 | obj-$(CONFIG_CPU_SUBTYPE_SH7709) += setup-sh770x.o serial-sh770x.o |
15 | obj-$(CONFIG_CPU_SUBTYPE_SH7710) += setup-sh7710.o | 15 | obj-$(CONFIG_CPU_SUBTYPE_SH7710) += setup-sh7710.o serial-sh7710.o |
16 | obj-$(CONFIG_CPU_SUBTYPE_SH7712) += setup-sh7710.o | 16 | obj-$(CONFIG_CPU_SUBTYPE_SH7712) += setup-sh7710.o serial-sh7710.o |
17 | obj-$(CONFIG_CPU_SUBTYPE_SH7720) += setup-sh7720.o | 17 | obj-$(CONFIG_CPU_SUBTYPE_SH7720) += setup-sh7720.o serial-sh7720.o |
18 | obj-$(CONFIG_CPU_SUBTYPE_SH7721) += setup-sh7720.o | 18 | obj-$(CONFIG_CPU_SUBTYPE_SH7721) += setup-sh7720.o serial-sh7720.o |
19 | 19 | ||
20 | # Primary on-chip clocks (common) | 20 | # Primary on-chip clocks (common) |
21 | clock-$(CONFIG_CPU_SH3) := clock-sh3.o | 21 | clock-$(CONFIG_CPU_SH3) := clock-sh3.o |
diff --git a/arch/sh/kernel/cpu/sh3/serial-sh770x.c b/arch/sh/kernel/cpu/sh3/serial-sh770x.c new file mode 100644 index 000000000000..4f7242c676b3 --- /dev/null +++ b/arch/sh/kernel/cpu/sh3/serial-sh770x.c | |||
@@ -0,0 +1,33 @@ | |||
1 | #include <linux/serial_sci.h> | ||
2 | #include <linux/serial_core.h> | ||
3 | #include <linux/io.h> | ||
4 | #include <cpu/serial.h> | ||
5 | |||
6 | #define SCPCR 0xA4000116 | ||
7 | #define SCPDR 0xA4000136 | ||
8 | |||
9 | static void sh770x_sci_init_pins(struct uart_port *port, unsigned int cflag) | ||
10 | { | ||
11 | unsigned short data; | ||
12 | |||
13 | /* We need to set SCPCR to enable RTS/CTS */ | ||
14 | data = __raw_readw(SCPCR); | ||
15 | /* Clear out SCP7MD1,0, SCP6MD1,0, SCP4MD1,0*/ | ||
16 | __raw_writew(data & 0x0fcf, SCPCR); | ||
17 | |||
18 | if (!(cflag & CRTSCTS)) { | ||
19 | /* We need to set SCPCR to enable RTS/CTS */ | ||
20 | data = __raw_readw(SCPCR); | ||
21 | /* Clear out SCP7MD1,0, SCP4MD1,0, | ||
22 | Set SCP6MD1,0 = {01} (output) */ | ||
23 | __raw_writew((data & 0x0fcf) | 0x1000, SCPCR); | ||
24 | |||
25 | data = __raw_readb(SCPDR); | ||
26 | /* Set /RTS2 (bit6) = 0 */ | ||
27 | __raw_writeb(data & 0xbf, SCPDR); | ||
28 | } | ||
29 | } | ||
30 | |||
31 | struct plat_sci_port_ops sh770x_sci_port_ops = { | ||
32 | .init_pins = sh770x_sci_init_pins, | ||
33 | }; | ||
diff --git a/arch/sh/kernel/cpu/sh3/serial-sh7710.c b/arch/sh/kernel/cpu/sh3/serial-sh7710.c new file mode 100644 index 000000000000..42190ef6aebf --- /dev/null +++ b/arch/sh/kernel/cpu/sh3/serial-sh7710.c | |||
@@ -0,0 +1,20 @@ | |||
1 | #include <linux/serial_sci.h> | ||
2 | #include <linux/serial_core.h> | ||
3 | #include <linux/io.h> | ||
4 | #include <cpu/serial.h> | ||
5 | |||
6 | #define PACR 0xa4050100 | ||
7 | #define PBCR 0xa4050102 | ||
8 | |||
9 | static void sh7710_sci_init_pins(struct uart_port *port, unsigned int cflag) | ||
10 | { | ||
11 | if (port->mapbase == 0xA4400000) { | ||
12 | __raw_writew(__raw_readw(PACR) & 0xffc0, PACR); | ||
13 | __raw_writew(__raw_readw(PBCR) & 0x0fff, PBCR); | ||
14 | } else if (port->mapbase == 0xA4410000) | ||
15 | __raw_writew(__raw_readw(PBCR) & 0xf003, PBCR); | ||
16 | } | ||
17 | |||
18 | struct plat_sci_port_ops sh7710_sci_port_ops = { | ||
19 | .init_pins = sh7710_sci_init_pins, | ||
20 | }; | ||
diff --git a/arch/sh/kernel/cpu/sh3/serial-sh7720.c b/arch/sh/kernel/cpu/sh3/serial-sh7720.c new file mode 100644 index 000000000000..8832c526cdf9 --- /dev/null +++ b/arch/sh/kernel/cpu/sh3/serial-sh7720.c | |||
@@ -0,0 +1,37 @@ | |||
1 | #include <linux/serial_sci.h> | ||
2 | #include <linux/serial_core.h> | ||
3 | #include <linux/io.h> | ||
4 | #include <cpu/serial.h> | ||
5 | #include <asm/gpio.h> | ||
6 | |||
7 | static void sh7720_sci_init_pins(struct uart_port *port, unsigned int cflag) | ||
8 | { | ||
9 | unsigned short data; | ||
10 | |||
11 | if (cflag & CRTSCTS) { | ||
12 | /* enable RTS/CTS */ | ||
13 | if (port->mapbase == 0xa4430000) { /* SCIF0 */ | ||
14 | /* Clear PTCR bit 9-2; enable all scif pins but sck */ | ||
15 | data = __raw_readw(PORT_PTCR); | ||
16 | __raw_writew((data & 0xfc03), PORT_PTCR); | ||
17 | } else if (port->mapbase == 0xa4438000) { /* SCIF1 */ | ||
18 | /* Clear PVCR bit 9-2 */ | ||
19 | data = __raw_readw(PORT_PVCR); | ||
20 | __raw_writew((data & 0xfc03), PORT_PVCR); | ||
21 | } | ||
22 | } else { | ||
23 | if (port->mapbase == 0xa4430000) { /* SCIF0 */ | ||
24 | /* Clear PTCR bit 5-2; enable only tx and rx */ | ||
25 | data = __raw_readw(PORT_PTCR); | ||
26 | __raw_writew((data & 0xffc3), PORT_PTCR); | ||
27 | } else if (port->mapbase == 0xa4438000) { /* SCIF1 */ | ||
28 | /* Clear PVCR bit 5-2 */ | ||
29 | data = __raw_readw(PORT_PVCR); | ||
30 | __raw_writew((data & 0xffc3), PORT_PVCR); | ||
31 | } | ||
32 | } | ||
33 | } | ||
34 | |||
35 | struct plat_sci_port_ops sh7720_sci_port_ops = { | ||
36 | .init_pins = sh7720_sci_init_pins, | ||
37 | }; | ||
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7705.c b/arch/sh/kernel/cpu/sh3/setup-sh7705.c index cd2e702feb7e..2309618c015d 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7705.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7705.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/serial_sci.h> | 15 | #include <linux/serial_sci.h> |
16 | #include <linux/sh_timer.h> | 16 | #include <linux/sh_timer.h> |
17 | #include <asm/rtc.h> | 17 | #include <asm/rtc.h> |
18 | #include <cpu/serial.h> | ||
18 | 19 | ||
19 | enum { | 20 | enum { |
20 | UNUSED = 0, | 21 | UNUSED = 0, |
@@ -75,6 +76,8 @@ static struct plat_sci_port scif0_platform_data = { | |||
75 | .scbrr_algo_id = SCBRR_ALGO_4, | 76 | .scbrr_algo_id = SCBRR_ALGO_4, |
76 | .type = PORT_SCIF, | 77 | .type = PORT_SCIF, |
77 | .irqs = { 56, 56, 56 }, | 78 | .irqs = { 56, 56, 56 }, |
79 | .ops = &sh770x_sci_port_ops, | ||
80 | .regtype = SCIx_SH7705_SCIF_REGTYPE, | ||
78 | }; | 81 | }; |
79 | 82 | ||
80 | static struct platform_device scif0_device = { | 83 | static struct platform_device scif0_device = { |
@@ -92,6 +95,8 @@ static struct plat_sci_port scif1_platform_data = { | |||
92 | .scbrr_algo_id = SCBRR_ALGO_4, | 95 | .scbrr_algo_id = SCBRR_ALGO_4, |
93 | .type = PORT_SCIF, | 96 | .type = PORT_SCIF, |
94 | .irqs = { 52, 52, 52 }, | 97 | .irqs = { 52, 52, 52 }, |
98 | .ops = &sh770x_sci_port_ops, | ||
99 | .regtype = SCIx_SH7705_SCIF_REGTYPE, | ||
95 | }; | 100 | }; |
96 | 101 | ||
97 | static struct platform_device scif1_device = { | 102 | static struct platform_device scif1_device = { |
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c index 4551ad647c2c..3f3d5fe5892d 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/serial.h> | 19 | #include <linux/serial.h> |
20 | #include <linux/serial_sci.h> | 20 | #include <linux/serial_sci.h> |
21 | #include <linux/sh_timer.h> | 21 | #include <linux/sh_timer.h> |
22 | #include <cpu/serial.h> | ||
22 | 23 | ||
23 | enum { | 24 | enum { |
24 | UNUSED = 0, | 25 | UNUSED = 0, |
@@ -108,11 +109,14 @@ static struct platform_device rtc_device = { | |||
108 | 109 | ||
109 | static struct plat_sci_port scif0_platform_data = { | 110 | static struct plat_sci_port scif0_platform_data = { |
110 | .mapbase = 0xfffffe80, | 111 | .mapbase = 0xfffffe80, |
112 | .port_reg = 0xa4000136, | ||
111 | .flags = UPF_BOOT_AUTOCONF, | 113 | .flags = UPF_BOOT_AUTOCONF, |
112 | .scscr = SCSCR_TE | SCSCR_RE, | 114 | .scscr = SCSCR_TE | SCSCR_RE, |
113 | .scbrr_algo_id = SCBRR_ALGO_2, | 115 | .scbrr_algo_id = SCBRR_ALGO_2, |
114 | .type = PORT_SCI, | 116 | .type = PORT_SCI, |
115 | .irqs = { 23, 23, 23, 0 }, | 117 | .irqs = { 23, 23, 23, 0 }, |
118 | .ops = &sh770x_sci_port_ops, | ||
119 | .regshift = 1, | ||
116 | }; | 120 | }; |
117 | 121 | ||
118 | static struct platform_device scif0_device = { | 122 | static struct platform_device scif0_device = { |
@@ -132,6 +136,8 @@ static struct plat_sci_port scif1_platform_data = { | |||
132 | .scbrr_algo_id = SCBRR_ALGO_2, | 136 | .scbrr_algo_id = SCBRR_ALGO_2, |
133 | .type = PORT_SCIF, | 137 | .type = PORT_SCIF, |
134 | .irqs = { 56, 56, 56, 56 }, | 138 | .irqs = { 56, 56, 56, 56 }, |
139 | .ops = &sh770x_sci_port_ops, | ||
140 | .regtype = SCIx_SH3_SCIF_REGTYPE, | ||
135 | }; | 141 | }; |
136 | 142 | ||
137 | static struct platform_device scif1_device = { | 143 | static struct platform_device scif1_device = { |
@@ -146,11 +152,14 @@ static struct platform_device scif1_device = { | |||
146 | defined(CONFIG_CPU_SUBTYPE_SH7709) | 152 | defined(CONFIG_CPU_SUBTYPE_SH7709) |
147 | static struct plat_sci_port scif2_platform_data = { | 153 | static struct plat_sci_port scif2_platform_data = { |
148 | .mapbase = 0xa4000140, | 154 | .mapbase = 0xa4000140, |
155 | .port_reg = SCIx_NOT_SUPPORTED, | ||
149 | .flags = UPF_BOOT_AUTOCONF, | 156 | .flags = UPF_BOOT_AUTOCONF, |
150 | .scscr = SCSCR_TE | SCSCR_RE, | 157 | .scscr = SCSCR_TE | SCSCR_RE, |
151 | .scbrr_algo_id = SCBRR_ALGO_2, | 158 | .scbrr_algo_id = SCBRR_ALGO_2, |
152 | .type = PORT_IRDA, | 159 | .type = PORT_IRDA, |
153 | .irqs = { 52, 52, 52, 52 }, | 160 | .irqs = { 52, 52, 52, 52 }, |
161 | .ops = &sh770x_sci_port_ops, | ||
162 | .regshift = 1, | ||
154 | }; | 163 | }; |
155 | 164 | ||
156 | static struct platform_device scif2_device = { | 165 | static struct platform_device scif2_device = { |
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7720.c b/arch/sh/kernel/cpu/sh3/setup-sh7720.c index 365b94a6fcb7..94920345c14d 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7720.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7720.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/serial_sci.h> | 20 | #include <linux/serial_sci.h> |
21 | #include <linux/sh_timer.h> | 21 | #include <linux/sh_timer.h> |
22 | #include <asm/rtc.h> | 22 | #include <asm/rtc.h> |
23 | #include <cpu/serial.h> | ||
23 | 24 | ||
24 | static struct resource rtc_resources[] = { | 25 | static struct resource rtc_resources[] = { |
25 | [0] = { | 26 | [0] = { |
@@ -55,6 +56,8 @@ static struct plat_sci_port scif0_platform_data = { | |||
55 | .scbrr_algo_id = SCBRR_ALGO_4, | 56 | .scbrr_algo_id = SCBRR_ALGO_4, |
56 | .type = PORT_SCIF, | 57 | .type = PORT_SCIF, |
57 | .irqs = { 80, 80, 80, 80 }, | 58 | .irqs = { 80, 80, 80, 80 }, |
59 | .ops = &sh7720_sci_port_ops, | ||
60 | .regtype = SCIx_SH7705_SCIF_REGTYPE, | ||
58 | }; | 61 | }; |
59 | 62 | ||
60 | static struct platform_device scif0_device = { | 63 | static struct platform_device scif0_device = { |
@@ -72,6 +75,8 @@ static struct plat_sci_port scif1_platform_data = { | |||
72 | .scbrr_algo_id = SCBRR_ALGO_4, | 75 | .scbrr_algo_id = SCBRR_ALGO_4, |
73 | .type = PORT_SCIF, | 76 | .type = PORT_SCIF, |
74 | .irqs = { 81, 81, 81, 81 }, | 77 | .irqs = { 81, 81, 81, 81 }, |
78 | .ops = &sh7720_sci_port_ops, | ||
79 | .regtype = SCIx_SH7705_SCIF_REGTYPE, | ||
75 | }; | 80 | }; |
76 | 81 | ||
77 | static struct platform_device scif1_device = { | 82 | static struct platform_device scif1_device = { |
diff --git a/arch/sh/kernel/cpu/sh4/clock-sh4-202.c b/arch/sh/kernel/cpu/sh4/clock-sh4-202.c index 3f6f8e98635c..f4e262adb39e 100644 --- a/arch/sh/kernel/cpu/sh4/clock-sh4-202.c +++ b/arch/sh/kernel/cpu/sh4/clock-sh4-202.c | |||
@@ -147,8 +147,6 @@ static struct clk *sh4202_onchip_clocks[] = { | |||
147 | &sh4202_shoc_clk, | 147 | &sh4202_shoc_clk, |
148 | }; | 148 | }; |
149 | 149 | ||
150 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
151 | |||
152 | static struct clk_lookup lookups[] = { | 150 | static struct clk_lookup lookups[] = { |
153 | /* main clocks */ | 151 | /* main clocks */ |
154 | CLKDEV_CON_ID("emi_clk", &sh4202_emi_clk), | 152 | CLKDEV_CON_ID("emi_clk", &sh4202_emi_clk), |
diff --git a/arch/sh/kernel/cpu/sh4/perf_event.c b/arch/sh/kernel/cpu/sh4/perf_event.c index 748955df018d..fa4f724b295a 100644 --- a/arch/sh/kernel/cpu/sh4/perf_event.c +++ b/arch/sh/kernel/cpu/sh4/perf_event.c | |||
@@ -180,6 +180,21 @@ static const int sh7750_cache_events | |||
180 | [ C(RESULT_MISS) ] = -1, | 180 | [ C(RESULT_MISS) ] = -1, |
181 | }, | 181 | }, |
182 | }, | 182 | }, |
183 | |||
184 | [ C(NODE) ] = { | ||
185 | [ C(OP_READ) ] = { | ||
186 | [ C(RESULT_ACCESS) ] = -1, | ||
187 | [ C(RESULT_MISS) ] = -1, | ||
188 | }, | ||
189 | [ C(OP_WRITE) ] = { | ||
190 | [ C(RESULT_ACCESS) ] = -1, | ||
191 | [ C(RESULT_MISS) ] = -1, | ||
192 | }, | ||
193 | [ C(OP_PREFETCH) ] = { | ||
194 | [ C(RESULT_ACCESS) ] = -1, | ||
195 | [ C(RESULT_MISS) ] = -1, | ||
196 | }, | ||
197 | }, | ||
183 | }; | 198 | }; |
184 | 199 | ||
185 | static int sh7750_event_map(int event) | 200 | static int sh7750_event_map(int event) |
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7750.c b/arch/sh/kernel/cpu/sh4/setup-sh7750.c index e53b4b38bd11..98cc0c794c76 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7750.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7750.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * SH7750/SH7751 Setup | 2 | * SH7091/SH7750/SH7750S/SH7750R/SH7751/SH7751R Setup |
3 | * | 3 | * |
4 | * Copyright (C) 2006 Paul Mundt | 4 | * Copyright (C) 2006 Paul Mundt |
5 | * Copyright (C) 2006 Jamie Lenehan | 5 | * Copyright (C) 2006 Jamie Lenehan |
@@ -38,11 +38,13 @@ static struct platform_device rtc_device = { | |||
38 | 38 | ||
39 | static struct plat_sci_port sci_platform_data = { | 39 | static struct plat_sci_port sci_platform_data = { |
40 | .mapbase = 0xffe00000, | 40 | .mapbase = 0xffe00000, |
41 | .port_reg = 0xffe0001C, | ||
41 | .flags = UPF_BOOT_AUTOCONF, | 42 | .flags = UPF_BOOT_AUTOCONF, |
42 | .scscr = SCSCR_TE | SCSCR_RE, | 43 | .scscr = SCSCR_TE | SCSCR_RE, |
43 | .scbrr_algo_id = SCBRR_ALGO_2, | 44 | .scbrr_algo_id = SCBRR_ALGO_2, |
44 | .type = PORT_SCI, | 45 | .type = PORT_SCI, |
45 | .irqs = { 23, 23, 23, 0 }, | 46 | .irqs = { 23, 23, 23, 0 }, |
47 | .regshift = 2, | ||
46 | }; | 48 | }; |
47 | 49 | ||
48 | static struct platform_device sci_device = { | 50 | static struct platform_device sci_device = { |
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7760.c b/arch/sh/kernel/cpu/sh4/setup-sh7760.c index 78bbf232e391..c0b4c774700e 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7760.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7760.c | |||
@@ -133,6 +133,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
133 | .scbrr_algo_id = SCBRR_ALGO_2, | 133 | .scbrr_algo_id = SCBRR_ALGO_2, |
134 | .type = PORT_SCIF, | 134 | .type = PORT_SCIF, |
135 | .irqs = { 52, 53, 55, 54 }, | 135 | .irqs = { 52, 53, 55, 54 }, |
136 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
136 | }; | 137 | }; |
137 | 138 | ||
138 | static struct platform_device scif0_device = { | 139 | static struct platform_device scif0_device = { |
@@ -150,6 +151,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
150 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 151 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
151 | .scbrr_algo_id = SCBRR_ALGO_2, | 152 | .scbrr_algo_id = SCBRR_ALGO_2, |
152 | .irqs = { 72, 73, 75, 74 }, | 153 | .irqs = { 72, 73, 75, 74 }, |
154 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
153 | }; | 155 | }; |
154 | 156 | ||
155 | static struct platform_device scif1_device = { | 157 | static struct platform_device scif1_device = { |
@@ -167,6 +169,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
167 | .scbrr_algo_id = SCBRR_ALGO_2, | 169 | .scbrr_algo_id = SCBRR_ALGO_2, |
168 | .type = PORT_SCIF, | 170 | .type = PORT_SCIF, |
169 | .irqs = { 76, 77, 79, 78 }, | 171 | .irqs = { 76, 77, 79, 78 }, |
172 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
170 | }; | 173 | }; |
171 | 174 | ||
172 | static struct platform_device scif2_device = { | 175 | static struct platform_device scif2_device = { |
@@ -184,6 +187,7 @@ static struct plat_sci_port scif3_platform_data = { | |||
184 | .scbrr_algo_id = SCBRR_ALGO_2, | 187 | .scbrr_algo_id = SCBRR_ALGO_2, |
185 | .type = PORT_SCI, | 188 | .type = PORT_SCI, |
186 | .irqs = { 80, 81, 82, 0 }, | 189 | .irqs = { 80, 81, 82, 0 }, |
190 | .regshift = 2, | ||
187 | }; | 191 | }; |
188 | 192 | ||
189 | static struct platform_device scif3_device = { | 193 | static struct platform_device scif3_device = { |
diff --git a/arch/sh/kernel/cpu/sh4/sq.c b/arch/sh/kernel/cpu/sh4/sq.c index 14726eef1ce0..f0907995b4c9 100644 --- a/arch/sh/kernel/cpu/sh4/sq.c +++ b/arch/sh/kernel/cpu/sh4/sq.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/vmalloc.h> | 20 | #include <linux/vmalloc.h> |
21 | #include <linux/mm.h> | 21 | #include <linux/mm.h> |
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | #include <linux/prefetch.h> | ||
23 | #include <asm/page.h> | 24 | #include <asm/page.h> |
24 | #include <asm/cacheflush.h> | 25 | #include <asm/cacheflush.h> |
25 | #include <cpu/sq.h> | 26 | #include <cpu/sq.h> |
diff --git a/arch/sh/kernel/cpu/sh4a/Makefile b/arch/sh/kernel/cpu/sh4a/Makefile index cc122b1d3035..c57fb287011e 100644 --- a/arch/sh/kernel/cpu/sh4a/Makefile +++ b/arch/sh/kernel/cpu/sh4a/Makefile | |||
@@ -10,7 +10,7 @@ obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o | |||
10 | obj-$(CONFIG_CPU_SUBTYPE_SH7785) += setup-sh7785.o | 10 | obj-$(CONFIG_CPU_SUBTYPE_SH7785) += setup-sh7785.o |
11 | obj-$(CONFIG_CPU_SUBTYPE_SH7786) += setup-sh7786.o intc-shx3.o | 11 | obj-$(CONFIG_CPU_SUBTYPE_SH7786) += setup-sh7786.o intc-shx3.o |
12 | obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o | 12 | obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o |
13 | obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o | 13 | obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o serial-sh7722.o |
14 | obj-$(CONFIG_CPU_SUBTYPE_SH7723) += setup-sh7723.o | 14 | obj-$(CONFIG_CPU_SUBTYPE_SH7723) += setup-sh7723.o |
15 | obj-$(CONFIG_CPU_SUBTYPE_SH7724) += setup-sh7724.o | 15 | obj-$(CONFIG_CPU_SUBTYPE_SH7724) += setup-sh7724.o |
16 | obj-$(CONFIG_CPU_SUBTYPE_SH7366) += setup-sh7366.o | 16 | obj-$(CONFIG_CPU_SUBTYPE_SH7366) += setup-sh7366.o |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7343.c b/arch/sh/kernel/cpu/sh4a/clock-sh7343.c index 93c646072c1b..70e45bdaadc7 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7343.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7343.c | |||
@@ -194,8 +194,6 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
194 | [MSTP200] = MSTP(&div4_clks[DIV4_B], MSTPCR2, 0, 0), | 194 | [MSTP200] = MSTP(&div4_clks[DIV4_B], MSTPCR2, 0, 0), |
195 | }; | 195 | }; |
196 | 196 | ||
197 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
198 | |||
199 | static struct clk_lookup lookups[] = { | 197 | static struct clk_lookup lookups[] = { |
200 | /* main clocks */ | 198 | /* main clocks */ |
201 | CLKDEV_CON_ID("rclk", &r_clk), | 199 | CLKDEV_CON_ID("rclk", &r_clk), |
@@ -233,32 +231,17 @@ static struct clk_lookup lookups[] = { | |||
233 | CLKDEV_CON_ID("rwdt0", &mstp_clks[MSTP013]), | 231 | CLKDEV_CON_ID("rwdt0", &mstp_clks[MSTP013]), |
234 | CLKDEV_CON_ID("mfi0", &mstp_clks[MSTP011]), | 232 | CLKDEV_CON_ID("mfi0", &mstp_clks[MSTP011]), |
235 | CLKDEV_CON_ID("flctl0", &mstp_clks[MSTP010]), | 233 | CLKDEV_CON_ID("flctl0", &mstp_clks[MSTP010]), |
236 | { | 234 | |
237 | /* SCIF0 */ | 235 | CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP007]), |
238 | .dev_id = "sh-sci.0", | 236 | CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP006]), |
239 | .con_id = "sci_fck", | 237 | CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP005]), |
240 | .clk = &mstp_clks[MSTP007], | 238 | CLKDEV_ICK_ID("sci_fck", "sh-sci.3", &mstp_clks[MSTP004]), |
241 | }, { | 239 | |
242 | /* SCIF1 */ | ||
243 | .dev_id = "sh-sci.1", | ||
244 | .con_id = "sci_fck", | ||
245 | .clk = &mstp_clks[MSTP006], | ||
246 | }, { | ||
247 | /* SCIF2 */ | ||
248 | .dev_id = "sh-sci.2", | ||
249 | .con_id = "sci_fck", | ||
250 | .clk = &mstp_clks[MSTP005], | ||
251 | }, { | ||
252 | /* SCIF3 */ | ||
253 | .dev_id = "sh-sci.3", | ||
254 | .con_id = "sci_fck", | ||
255 | .clk = &mstp_clks[MSTP004], | ||
256 | }, | ||
257 | CLKDEV_CON_ID("sio0", &mstp_clks[MSTP003]), | 240 | CLKDEV_CON_ID("sio0", &mstp_clks[MSTP003]), |
258 | CLKDEV_CON_ID("siof0", &mstp_clks[MSTP002]), | 241 | CLKDEV_CON_ID("siof0", &mstp_clks[MSTP002]), |
259 | CLKDEV_CON_ID("siof1", &mstp_clks[MSTP001]), | 242 | CLKDEV_CON_ID("siof1", &mstp_clks[MSTP001]), |
260 | CLKDEV_CON_ID("i2c0", &mstp_clks[MSTP109]), | 243 | CLKDEV_DEV_ID("i2c-sh_mobile.0", &mstp_clks[MSTP109]), |
261 | CLKDEV_CON_ID("i2c1", &mstp_clks[MSTP108]), | 244 | CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP108]), |
262 | CLKDEV_CON_ID("tpu0", &mstp_clks[MSTP225]), | 245 | CLKDEV_CON_ID("tpu0", &mstp_clks[MSTP225]), |
263 | CLKDEV_CON_ID("irda0", &mstp_clks[MSTP224]), | 246 | CLKDEV_CON_ID("irda0", &mstp_clks[MSTP224]), |
264 | CLKDEV_CON_ID("sdhi0", &mstp_clks[MSTP218]), | 247 | CLKDEV_CON_ID("sdhi0", &mstp_clks[MSTP218]), |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7366.c b/arch/sh/kernel/cpu/sh4a/clock-sh7366.c index 049dc0628ccc..3c3165000c52 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7366.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7366.c | |||
@@ -192,8 +192,6 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
192 | [MSTP200] = MSTP(&div4_clks[DIV4_B], MSTPCR2, 0, 0), | 192 | [MSTP200] = MSTP(&div4_clks[DIV4_B], MSTPCR2, 0, 0), |
193 | }; | 193 | }; |
194 | 194 | ||
195 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
196 | |||
197 | static struct clk_lookup lookups[] = { | 195 | static struct clk_lookup lookups[] = { |
198 | /* main clocks */ | 196 | /* main clocks */ |
199 | CLKDEV_CON_ID("rclk", &r_clk), | 197 | CLKDEV_CON_ID("rclk", &r_clk), |
@@ -231,25 +229,14 @@ static struct clk_lookup lookups[] = { | |||
231 | CLKDEV_CON_ID("rwdt0", &mstp_clks[MSTP013]), | 229 | CLKDEV_CON_ID("rwdt0", &mstp_clks[MSTP013]), |
232 | CLKDEV_CON_ID("mfi0", &mstp_clks[MSTP011]), | 230 | CLKDEV_CON_ID("mfi0", &mstp_clks[MSTP011]), |
233 | CLKDEV_CON_ID("flctl0", &mstp_clks[MSTP010]), | 231 | CLKDEV_CON_ID("flctl0", &mstp_clks[MSTP010]), |
234 | { | 232 | |
235 | /* SCIF0 */ | 233 | CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP007]), |
236 | .dev_id = "sh-sci.0", | 234 | CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP006]), |
237 | .con_id = "sci_fck", | 235 | CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP005]), |
238 | .clk = &mstp_clks[MSTP007], | 236 | |
239 | }, { | ||
240 | /* SCIF1 */ | ||
241 | .dev_id = "sh-sci.1", | ||
242 | .con_id = "sci_fck", | ||
243 | .clk = &mstp_clks[MSTP006], | ||
244 | }, { | ||
245 | /* SCIF2 */ | ||
246 | .dev_id = "sh-sci.2", | ||
247 | .con_id = "sci_fck", | ||
248 | .clk = &mstp_clks[MSTP005], | ||
249 | }, | ||
250 | CLKDEV_CON_ID("msiof0", &mstp_clks[MSTP002]), | 237 | CLKDEV_CON_ID("msiof0", &mstp_clks[MSTP002]), |
251 | CLKDEV_CON_ID("sbr0", &mstp_clks[MSTP001]), | 238 | CLKDEV_CON_ID("sbr0", &mstp_clks[MSTP001]), |
252 | CLKDEV_CON_ID("i2c0", &mstp_clks[MSTP109]), | 239 | CLKDEV_DEV_ID("i2c-sh_mobile.0", &mstp_clks[MSTP109]), |
253 | CLKDEV_CON_ID("icb0", &mstp_clks[MSTP227]), | 240 | CLKDEV_CON_ID("icb0", &mstp_clks[MSTP227]), |
254 | CLKDEV_CON_ID("meram0", &mstp_clks[MSTP226]), | 241 | CLKDEV_CON_ID("meram0", &mstp_clks[MSTP226]), |
255 | CLKDEV_CON_ID("dacy1", &mstp_clks[MSTP224]), | 242 | CLKDEV_CON_ID("dacy1", &mstp_clks[MSTP224]), |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c index 9d23a36f0647..c9a48088ad47 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c | |||
@@ -175,8 +175,6 @@ static struct clk mstp_clks[HWBLK_NR] = { | |||
175 | SH_HWBLK_CLK(HWBLK_LCDC, &div4_clks[DIV4_P], 0), | 175 | SH_HWBLK_CLK(HWBLK_LCDC, &div4_clks[DIV4_P], 0), |
176 | }; | 176 | }; |
177 | 177 | ||
178 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
179 | |||
180 | static struct clk_lookup lookups[] = { | 178 | static struct clk_lookup lookups[] = { |
181 | /* main clocks */ | 179 | /* main clocks */ |
182 | CLKDEV_CON_ID("rclk", &r_clk), | 180 | CLKDEV_CON_ID("rclk", &r_clk), |
@@ -201,42 +199,20 @@ static struct clk_lookup lookups[] = { | |||
201 | /* MSTP clocks */ | 199 | /* MSTP clocks */ |
202 | CLKDEV_CON_ID("uram0", &mstp_clks[HWBLK_URAM]), | 200 | CLKDEV_CON_ID("uram0", &mstp_clks[HWBLK_URAM]), |
203 | CLKDEV_CON_ID("xymem0", &mstp_clks[HWBLK_XYMEM]), | 201 | CLKDEV_CON_ID("xymem0", &mstp_clks[HWBLK_XYMEM]), |
204 | { | 202 | |
205 | /* TMU0 */ | 203 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[HWBLK_TMU]), |
206 | .dev_id = "sh_tmu.0", | 204 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[HWBLK_TMU]), |
207 | .con_id = "tmu_fck", | 205 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[HWBLK_TMU]), |
208 | .clk = &mstp_clks[HWBLK_TMU], | 206 | |
209 | }, { | ||
210 | /* TMU1 */ | ||
211 | .dev_id = "sh_tmu.1", | ||
212 | .con_id = "tmu_fck", | ||
213 | .clk = &mstp_clks[HWBLK_TMU], | ||
214 | }, { | ||
215 | /* TMU2 */ | ||
216 | .dev_id = "sh_tmu.2", | ||
217 | .con_id = "tmu_fck", | ||
218 | .clk = &mstp_clks[HWBLK_TMU], | ||
219 | }, | ||
220 | CLKDEV_CON_ID("cmt_fck", &mstp_clks[HWBLK_CMT]), | 207 | CLKDEV_CON_ID("cmt_fck", &mstp_clks[HWBLK_CMT]), |
221 | CLKDEV_CON_ID("rwdt0", &mstp_clks[HWBLK_RWDT]), | 208 | CLKDEV_CON_ID("rwdt0", &mstp_clks[HWBLK_RWDT]), |
222 | CLKDEV_CON_ID("flctl0", &mstp_clks[HWBLK_FLCTL]), | 209 | CLKDEV_CON_ID("flctl0", &mstp_clks[HWBLK_FLCTL]), |
223 | { | 210 | |
224 | /* SCIF0 */ | 211 | CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[HWBLK_SCIF0]), |
225 | .dev_id = "sh-sci.0", | 212 | CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[HWBLK_SCIF1]), |
226 | .con_id = "sci_fck", | 213 | CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[HWBLK_SCIF2]), |
227 | .clk = &mstp_clks[HWBLK_SCIF0], | 214 | |
228 | }, { | 215 | CLKDEV_DEV_ID("i2c-sh_mobile.0", &mstp_clks[HWBLK_IIC]), |
229 | /* SCIF1 */ | ||
230 | .dev_id = "sh-sci.1", | ||
231 | .con_id = "sci_fck", | ||
232 | .clk = &mstp_clks[HWBLK_SCIF1], | ||
233 | }, { | ||
234 | /* SCIF2 */ | ||
235 | .dev_id = "sh-sci.2", | ||
236 | .con_id = "sci_fck", | ||
237 | .clk = &mstp_clks[HWBLK_SCIF2], | ||
238 | }, | ||
239 | CLKDEV_CON_ID("i2c0", &mstp_clks[HWBLK_IIC]), | ||
240 | CLKDEV_CON_ID("rtc0", &mstp_clks[HWBLK_RTC]), | 216 | CLKDEV_CON_ID("rtc0", &mstp_clks[HWBLK_RTC]), |
241 | CLKDEV_CON_ID("sdhi0", &mstp_clks[HWBLK_SDHI]), | 217 | CLKDEV_CON_ID("sdhi0", &mstp_clks[HWBLK_SDHI]), |
242 | CLKDEV_CON_ID("keysc0", &mstp_clks[HWBLK_KEYSC]), | 218 | CLKDEV_CON_ID("keysc0", &mstp_clks[HWBLK_KEYSC]), |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7723.c b/arch/sh/kernel/cpu/sh4a/clock-sh7723.c index 55493cd5bd8f..3cc3827380e3 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7723.c | |||
@@ -200,8 +200,6 @@ static struct clk mstp_clks[] = { | |||
200 | SH_HWBLK_CLK(HWBLK_LCDC, &div4_clks[DIV4_B], 0), | 200 | SH_HWBLK_CLK(HWBLK_LCDC, &div4_clks[DIV4_B], 0), |
201 | }; | 201 | }; |
202 | 202 | ||
203 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
204 | |||
205 | static struct clk_lookup lookups[] = { | 203 | static struct clk_lookup lookups[] = { |
206 | /* main clocks */ | 204 | /* main clocks */ |
207 | CLKDEV_CON_ID("rclk", &r_clk), | 205 | CLKDEV_CON_ID("rclk", &r_clk), |
@@ -305,7 +303,7 @@ static struct clk_lookup lookups[] = { | |||
305 | CLKDEV_CON_ID("msiof0", &mstp_clks[HWBLK_MSIOF0]), | 303 | CLKDEV_CON_ID("msiof0", &mstp_clks[HWBLK_MSIOF0]), |
306 | CLKDEV_CON_ID("msiof1", &mstp_clks[HWBLK_MSIOF1]), | 304 | CLKDEV_CON_ID("msiof1", &mstp_clks[HWBLK_MSIOF1]), |
307 | CLKDEV_CON_ID("meram0", &mstp_clks[HWBLK_MERAM]), | 305 | CLKDEV_CON_ID("meram0", &mstp_clks[HWBLK_MERAM]), |
308 | CLKDEV_CON_ID("i2c0", &mstp_clks[HWBLK_IIC]), | 306 | CLKDEV_DEV_ID("i2c-sh_mobile.0", &mstp_clks[HWBLK_IIC]), |
309 | CLKDEV_CON_ID("rtc0", &mstp_clks[HWBLK_RTC]), | 307 | CLKDEV_CON_ID("rtc0", &mstp_clks[HWBLK_RTC]), |
310 | CLKDEV_CON_ID("atapi0", &mstp_clks[HWBLK_ATAPI]), | 308 | CLKDEV_CON_ID("atapi0", &mstp_clks[HWBLK_ATAPI]), |
311 | CLKDEV_CON_ID("adc0", &mstp_clks[HWBLK_ADC]), | 309 | CLKDEV_CON_ID("adc0", &mstp_clks[HWBLK_ADC]), |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7724.c b/arch/sh/kernel/cpu/sh4a/clock-sh7724.c index d08fa953c88b..8668f557e0ac 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7724.c | |||
@@ -252,8 +252,6 @@ static struct clk mstp_clks[HWBLK_NR] = { | |||
252 | SH_HWBLK_CLK(HWBLK_LCDC, &div4_clks[DIV4_B], 0), | 252 | SH_HWBLK_CLK(HWBLK_LCDC, &div4_clks[DIV4_B], 0), |
253 | }; | 253 | }; |
254 | 254 | ||
255 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
256 | |||
257 | static struct clk_lookup lookups[] = { | 255 | static struct clk_lookup lookups[] = { |
258 | /* main clocks */ | 256 | /* main clocks */ |
259 | CLKDEV_CON_ID("rclk", &r_clk), | 257 | CLKDEV_CON_ID("rclk", &r_clk), |
@@ -289,77 +287,31 @@ static struct clk_lookup lookups[] = { | |||
289 | CLKDEV_CON_ID("sh0", &mstp_clks[HWBLK_SHYWAY]), | 287 | CLKDEV_CON_ID("sh0", &mstp_clks[HWBLK_SHYWAY]), |
290 | CLKDEV_CON_ID("hudi0", &mstp_clks[HWBLK_HUDI]), | 288 | CLKDEV_CON_ID("hudi0", &mstp_clks[HWBLK_HUDI]), |
291 | CLKDEV_CON_ID("ubc0", &mstp_clks[HWBLK_UBC]), | 289 | CLKDEV_CON_ID("ubc0", &mstp_clks[HWBLK_UBC]), |
292 | { | 290 | |
293 | /* TMU0 */ | 291 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[HWBLK_TMU0]), |
294 | .dev_id = "sh_tmu.0", | 292 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[HWBLK_TMU0]), |
295 | .con_id = "tmu_fck", | 293 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[HWBLK_TMU0]), |
296 | .clk = &mstp_clks[HWBLK_TMU0], | 294 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[HWBLK_TMU1]), |
297 | }, { | 295 | |
298 | /* TMU1 */ | ||
299 | .dev_id = "sh_tmu.1", | ||
300 | .con_id = "tmu_fck", | ||
301 | .clk = &mstp_clks[HWBLK_TMU0], | ||
302 | }, { | ||
303 | /* TMU2 */ | ||
304 | .dev_id = "sh_tmu.2", | ||
305 | .con_id = "tmu_fck", | ||
306 | .clk = &mstp_clks[HWBLK_TMU0], | ||
307 | }, { | ||
308 | /* TMU3 */ | ||
309 | .dev_id = "sh_tmu.3", | ||
310 | .con_id = "tmu_fck", | ||
311 | .clk = &mstp_clks[HWBLK_TMU1], | ||
312 | }, | ||
313 | CLKDEV_CON_ID("cmt_fck", &mstp_clks[HWBLK_CMT]), | 296 | CLKDEV_CON_ID("cmt_fck", &mstp_clks[HWBLK_CMT]), |
314 | CLKDEV_CON_ID("rwdt0", &mstp_clks[HWBLK_RWDT]), | 297 | CLKDEV_CON_ID("rwdt0", &mstp_clks[HWBLK_RWDT]), |
315 | CLKDEV_CON_ID("dmac1", &mstp_clks[HWBLK_DMAC1]), | 298 | CLKDEV_CON_ID("dmac1", &mstp_clks[HWBLK_DMAC1]), |
316 | { | 299 | |
317 | /* TMU4 */ | 300 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[HWBLK_TMU1]), |
318 | .dev_id = "sh_tmu.4", | 301 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[HWBLK_TMU1]), |
319 | .con_id = "tmu_fck", | 302 | CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[HWBLK_SCIF0]), |
320 | .clk = &mstp_clks[HWBLK_TMU1], | 303 | CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[HWBLK_SCIF1]), |
321 | }, { | 304 | CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[HWBLK_SCIF2]), |
322 | /* TMU5 */ | 305 | CLKDEV_ICK_ID("sci_fck", "sh-sci.3", &mstp_clks[HWBLK_SCIF3]), |
323 | .dev_id = "sh_tmu.5", | 306 | CLKDEV_ICK_ID("sci_fck", "sh-sci.4", &mstp_clks[HWBLK_SCIF4]), |
324 | .con_id = "tmu_fck", | 307 | CLKDEV_ICK_ID("sci_fck", "sh-sci.5", &mstp_clks[HWBLK_SCIF5]), |
325 | .clk = &mstp_clks[HWBLK_TMU1], | 308 | |
326 | }, { | ||
327 | /* SCIF0 */ | ||
328 | .dev_id = "sh-sci.0", | ||
329 | .con_id = "sci_fck", | ||
330 | .clk = &mstp_clks[HWBLK_SCIF0], | ||
331 | }, { | ||
332 | /* SCIF1 */ | ||
333 | .dev_id = "sh-sci.1", | ||
334 | .con_id = "sci_fck", | ||
335 | .clk = &mstp_clks[HWBLK_SCIF1], | ||
336 | }, { | ||
337 | /* SCIF2 */ | ||
338 | .dev_id = "sh-sci.2", | ||
339 | .con_id = "sci_fck", | ||
340 | .clk = &mstp_clks[HWBLK_SCIF2], | ||
341 | }, { | ||
342 | /* SCIF3 */ | ||
343 | .dev_id = "sh-sci.3", | ||
344 | .con_id = "sci_fck", | ||
345 | .clk = &mstp_clks[HWBLK_SCIF3], | ||
346 | }, { | ||
347 | /* SCIF4 */ | ||
348 | .dev_id = "sh-sci.4", | ||
349 | .con_id = "sci_fck", | ||
350 | .clk = &mstp_clks[HWBLK_SCIF4], | ||
351 | }, { | ||
352 | /* SCIF5 */ | ||
353 | .dev_id = "sh-sci.5", | ||
354 | .con_id = "sci_fck", | ||
355 | .clk = &mstp_clks[HWBLK_SCIF5], | ||
356 | }, | ||
357 | CLKDEV_CON_ID("msiof0", &mstp_clks[HWBLK_MSIOF0]), | 309 | CLKDEV_CON_ID("msiof0", &mstp_clks[HWBLK_MSIOF0]), |
358 | CLKDEV_CON_ID("msiof1", &mstp_clks[HWBLK_MSIOF1]), | 310 | CLKDEV_CON_ID("msiof1", &mstp_clks[HWBLK_MSIOF1]), |
359 | CLKDEV_CON_ID("keysc0", &mstp_clks[HWBLK_KEYSC]), | 311 | CLKDEV_CON_ID("keysc0", &mstp_clks[HWBLK_KEYSC]), |
360 | CLKDEV_CON_ID("rtc0", &mstp_clks[HWBLK_RTC]), | 312 | CLKDEV_CON_ID("rtc0", &mstp_clks[HWBLK_RTC]), |
361 | CLKDEV_CON_ID("i2c0", &mstp_clks[HWBLK_IIC0]), | 313 | CLKDEV_DEV_ID("i2c-sh_mobile.0", &mstp_clks[HWBLK_IIC0]), |
362 | CLKDEV_CON_ID("i2c1", &mstp_clks[HWBLK_IIC1]), | 314 | CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[HWBLK_IIC1]), |
363 | CLKDEV_CON_ID("mmc0", &mstp_clks[HWBLK_MMC]), | 315 | CLKDEV_CON_ID("mmc0", &mstp_clks[HWBLK_MMC]), |
364 | CLKDEV_CON_ID("eth0", &mstp_clks[HWBLK_ETHER]), | 316 | CLKDEV_CON_ID("eth0", &mstp_clks[HWBLK_ETHER]), |
365 | CLKDEV_CON_ID("atapi0", &mstp_clks[HWBLK_ATAPI]), | 317 | CLKDEV_CON_ID("atapi0", &mstp_clks[HWBLK_ATAPI]), |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c index eedddad13835..3b097b09a3ba 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c | |||
@@ -101,8 +101,6 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
101 | [MSTP220] = SH_CLK_MSTP32(&div4_clks[DIV4_P], MSTPCR2, 20, 0), | 101 | [MSTP220] = SH_CLK_MSTP32(&div4_clks[DIV4_P], MSTPCR2, 20, 0), |
102 | }; | 102 | }; |
103 | 103 | ||
104 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
105 | |||
106 | static struct clk_lookup lookups[] = { | 104 | static struct clk_lookup lookups[] = { |
107 | /* main clocks */ | 105 | /* main clocks */ |
108 | CLKDEV_CON_ID("extal", &extal_clk), | 106 | CLKDEV_CON_ID("extal", &extal_clk), |
@@ -116,33 +114,13 @@ static struct clk_lookup lookups[] = { | |||
116 | /* MSTP32 clocks */ | 114 | /* MSTP32 clocks */ |
117 | CLKDEV_CON_ID("sdhi0", &mstp_clks[MSTP004]), | 115 | CLKDEV_CON_ID("sdhi0", &mstp_clks[MSTP004]), |
118 | CLKDEV_CON_ID("riic", &mstp_clks[MSTP000]), | 116 | CLKDEV_CON_ID("riic", &mstp_clks[MSTP000]), |
119 | { | 117 | |
120 | /* TMU0 */ | 118 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP113]), |
121 | .dev_id = "sh_tmu.0", | 119 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP114]), |
122 | .con_id = "tmu_fck", | 120 | CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP112]), |
123 | .clk = &mstp_clks[MSTP113], | 121 | CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP111]), |
124 | }, { | 122 | CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP110]), |
125 | /* TMU1 */ | 123 | |
126 | .dev_id = "sh_tmu.1", | ||
127 | .con_id = "tmu_fck", | ||
128 | .clk = &mstp_clks[MSTP114], | ||
129 | }, | ||
130 | { | ||
131 | /* SCIF4 (But, ID is 2) */ | ||
132 | .dev_id = "sh-sci.2", | ||
133 | .con_id = "sci_fck", | ||
134 | .clk = &mstp_clks[MSTP112], | ||
135 | }, { | ||
136 | /* SCIF3 */ | ||
137 | .dev_id = "sh-sci.1", | ||
138 | .con_id = "sci_fck", | ||
139 | .clk = &mstp_clks[MSTP111], | ||
140 | }, { | ||
141 | /* SCIF2 */ | ||
142 | .dev_id = "sh-sci.0", | ||
143 | .con_id = "sci_fck", | ||
144 | .clk = &mstp_clks[MSTP110], | ||
145 | }, | ||
146 | CLKDEV_CON_ID("usb0", &mstp_clks[MSTP102]), | 124 | CLKDEV_CON_ID("usb0", &mstp_clks[MSTP102]), |
147 | CLKDEV_CON_ID("mmc0", &mstp_clks[MSTP220]), | 125 | CLKDEV_CON_ID("mmc0", &mstp_clks[MSTP220]), |
148 | }; | 126 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7763.c b/arch/sh/kernel/cpu/sh4a/clock-sh7763.c index 599630fc4d3b..2d4c7fd79c02 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7763.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7763.c | |||
@@ -91,8 +91,6 @@ static struct clk *sh7763_onchip_clocks[] = { | |||
91 | &sh7763_shyway_clk, | 91 | &sh7763_shyway_clk, |
92 | }; | 92 | }; |
93 | 93 | ||
94 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
95 | |||
96 | static struct clk_lookup lookups[] = { | 94 | static struct clk_lookup lookups[] = { |
97 | /* main clocks */ | 95 | /* main clocks */ |
98 | CLKDEV_CON_ID("shyway_clk", &sh7763_shyway_clk), | 96 | CLKDEV_CON_ID("shyway_clk", &sh7763_shyway_clk), |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7780.c b/arch/sh/kernel/cpu/sh4a/clock-sh7780.c index 8894926479a6..3b53348fe2fc 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7780.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7780.c | |||
@@ -97,8 +97,6 @@ static struct clk *sh7780_onchip_clocks[] = { | |||
97 | &sh7780_shyway_clk, | 97 | &sh7780_shyway_clk, |
98 | }; | 98 | }; |
99 | 99 | ||
100 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
101 | |||
102 | static struct clk_lookup lookups[] = { | 100 | static struct clk_lookup lookups[] = { |
103 | /* main clocks */ | 101 | /* main clocks */ |
104 | CLKDEV_CON_ID("shyway_clk", &sh7780_shyway_clk), | 102 | CLKDEV_CON_ID("shyway_clk", &sh7780_shyway_clk), |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c index 2d960247f3eb..e5b420cc1265 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c | |||
@@ -116,8 +116,6 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
116 | [MSTP100] = SH_CLK_MSTP32(NULL, MSTPCR1, 0, 0), | 116 | [MSTP100] = SH_CLK_MSTP32(NULL, MSTPCR1, 0, 0), |
117 | }; | 117 | }; |
118 | 118 | ||
119 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
120 | |||
121 | static struct clk_lookup lookups[] = { | 119 | static struct clk_lookup lookups[] = { |
122 | /* main clocks */ | 120 | /* main clocks */ |
123 | CLKDEV_CON_ID("extal", &extal_clk), | 121 | CLKDEV_CON_ID("extal", &extal_clk), |
@@ -134,74 +132,27 @@ static struct clk_lookup lookups[] = { | |||
134 | CLKDEV_CON_ID("cpu_clk", &div4_clks[DIV4_I]), | 132 | CLKDEV_CON_ID("cpu_clk", &div4_clks[DIV4_I]), |
135 | 133 | ||
136 | /* MSTP32 clocks */ | 134 | /* MSTP32 clocks */ |
137 | { | 135 | CLKDEV_ICK_ID("sci_fck", "sh-sci.5", &mstp_clks[MSTP029]), |
138 | /* SCIF5 */ | 136 | CLKDEV_ICK_ID("sci_fck", "sh-sci.4", &mstp_clks[MSTP028]), |
139 | .dev_id = "sh-sci.5", | 137 | CLKDEV_ICK_ID("sci_fck", "sh-sci.3", &mstp_clks[MSTP027]), |
140 | .con_id = "sci_fck", | 138 | CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP026]), |
141 | .clk = &mstp_clks[MSTP029], | 139 | CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP025]), |
142 | }, { | 140 | CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP024]), |
143 | /* SCIF4 */ | 141 | |
144 | .dev_id = "sh-sci.4", | ||
145 | .con_id = "sci_fck", | ||
146 | .clk = &mstp_clks[MSTP028], | ||
147 | }, { | ||
148 | /* SCIF3 */ | ||
149 | .dev_id = "sh-sci.3", | ||
150 | .con_id = "sci_fck", | ||
151 | .clk = &mstp_clks[MSTP027], | ||
152 | }, { | ||
153 | /* SCIF2 */ | ||
154 | .dev_id = "sh-sci.2", | ||
155 | .con_id = "sci_fck", | ||
156 | .clk = &mstp_clks[MSTP026], | ||
157 | }, { | ||
158 | /* SCIF1 */ | ||
159 | .dev_id = "sh-sci.1", | ||
160 | .con_id = "sci_fck", | ||
161 | .clk = &mstp_clks[MSTP025], | ||
162 | }, { | ||
163 | /* SCIF0 */ | ||
164 | .dev_id = "sh-sci.0", | ||
165 | .con_id = "sci_fck", | ||
166 | .clk = &mstp_clks[MSTP024], | ||
167 | }, | ||
168 | CLKDEV_CON_ID("ssi1_fck", &mstp_clks[MSTP021]), | 142 | CLKDEV_CON_ID("ssi1_fck", &mstp_clks[MSTP021]), |
169 | CLKDEV_CON_ID("ssi0_fck", &mstp_clks[MSTP020]), | 143 | CLKDEV_CON_ID("ssi0_fck", &mstp_clks[MSTP020]), |
170 | CLKDEV_CON_ID("hac1_fck", &mstp_clks[MSTP017]), | 144 | CLKDEV_CON_ID("hac1_fck", &mstp_clks[MSTP017]), |
171 | CLKDEV_CON_ID("hac0_fck", &mstp_clks[MSTP016]), | 145 | CLKDEV_CON_ID("hac0_fck", &mstp_clks[MSTP016]), |
172 | CLKDEV_CON_ID("mmcif_fck", &mstp_clks[MSTP013]), | 146 | CLKDEV_CON_ID("mmcif_fck", &mstp_clks[MSTP013]), |
173 | CLKDEV_CON_ID("flctl_fck", &mstp_clks[MSTP012]), | 147 | CLKDEV_CON_ID("flctl_fck", &mstp_clks[MSTP012]), |
174 | { | 148 | |
175 | /* TMU0 */ | 149 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP008]), |
176 | .dev_id = "sh_tmu.0", | 150 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP008]), |
177 | .con_id = "tmu_fck", | 151 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[MSTP008]), |
178 | .clk = &mstp_clks[MSTP008], | 152 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[MSTP009]), |
179 | }, { | 153 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[MSTP009]), |
180 | /* TMU1 */ | 154 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[MSTP009]), |
181 | .dev_id = "sh_tmu.1", | 155 | |
182 | .con_id = "tmu_fck", | ||
183 | .clk = &mstp_clks[MSTP008], | ||
184 | }, { | ||
185 | /* TMU2 */ | ||
186 | .dev_id = "sh_tmu.2", | ||
187 | .con_id = "tmu_fck", | ||
188 | .clk = &mstp_clks[MSTP008], | ||
189 | }, { | ||
190 | /* TMU3 */ | ||
191 | .dev_id = "sh_tmu.3", | ||
192 | .con_id = "tmu_fck", | ||
193 | .clk = &mstp_clks[MSTP009], | ||
194 | }, { | ||
195 | /* TMU4 */ | ||
196 | .dev_id = "sh_tmu.4", | ||
197 | .con_id = "tmu_fck", | ||
198 | .clk = &mstp_clks[MSTP009], | ||
199 | }, { | ||
200 | /* TMU5 */ | ||
201 | .dev_id = "sh_tmu.5", | ||
202 | .con_id = "tmu_fck", | ||
203 | .clk = &mstp_clks[MSTP009], | ||
204 | }, | ||
205 | CLKDEV_CON_ID("siof_fck", &mstp_clks[MSTP003]), | 156 | CLKDEV_CON_ID("siof_fck", &mstp_clks[MSTP003]), |
206 | CLKDEV_CON_ID("hspi_fck", &mstp_clks[MSTP002]), | 157 | CLKDEV_CON_ID("hspi_fck", &mstp_clks[MSTP002]), |
207 | CLKDEV_CON_ID("hudi_fck", &mstp_clks[MSTP119]), | 158 | CLKDEV_CON_ID("hudi_fck", &mstp_clks[MSTP119]), |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7786.c b/arch/sh/kernel/cpu/sh4a/clock-sh7786.c index 42e403be9076..f6c0c3d5599f 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7786.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7786.c | |||
@@ -125,8 +125,6 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
125 | [MSTP102] = SH_CLK_MSTP32(NULL, MSTPCR1, 2, 0), | 125 | [MSTP102] = SH_CLK_MSTP32(NULL, MSTPCR1, 2, 0), |
126 | }; | 126 | }; |
127 | 127 | ||
128 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
129 | |||
130 | static struct clk_lookup lookups[] = { | 128 | static struct clk_lookup lookups[] = { |
131 | /* main clocks */ | 129 | /* main clocks */ |
132 | CLKDEV_CON_ID("extal", &extal_clk), | 130 | CLKDEV_CON_ID("extal", &extal_clk), |
@@ -141,37 +139,13 @@ static struct clk_lookup lookups[] = { | |||
141 | CLKDEV_CON_ID("cpu_clk", &div4_clks[DIV4_I]), | 139 | CLKDEV_CON_ID("cpu_clk", &div4_clks[DIV4_I]), |
142 | 140 | ||
143 | /* MSTP32 clocks */ | 141 | /* MSTP32 clocks */ |
144 | { | 142 | CLKDEV_ICK_ID("sci_fck", "sh-sci.5", &mstp_clks[MSTP029]), |
145 | /* SCIF5 */ | 143 | CLKDEV_ICK_ID("sci_fck", "sh-sci.4", &mstp_clks[MSTP028]), |
146 | .dev_id = "sh-sci.5", | 144 | CLKDEV_ICK_ID("sci_fck", "sh-sci.3", &mstp_clks[MSTP027]), |
147 | .con_id = "sci_fck", | 145 | CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP026]), |
148 | .clk = &mstp_clks[MSTP029], | 146 | CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP025]), |
149 | }, { | 147 | CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP024]), |
150 | /* SCIF4 */ | 148 | |
151 | .dev_id = "sh-sci.4", | ||
152 | .con_id = "sci_fck", | ||
153 | .clk = &mstp_clks[MSTP028], | ||
154 | }, { | ||
155 | /* SCIF3 */ | ||
156 | .dev_id = "sh-sci.3", | ||
157 | .con_id = "sci_fck", | ||
158 | .clk = &mstp_clks[MSTP027], | ||
159 | }, { | ||
160 | /* SCIF2 */ | ||
161 | .dev_id = "sh-sci.2", | ||
162 | .con_id = "sci_fck", | ||
163 | .clk = &mstp_clks[MSTP026], | ||
164 | }, { | ||
165 | /* SCIF1 */ | ||
166 | .dev_id = "sh-sci.1", | ||
167 | .con_id = "sci_fck", | ||
168 | .clk = &mstp_clks[MSTP025], | ||
169 | }, { | ||
170 | /* SCIF0 */ | ||
171 | .dev_id = "sh-sci.0", | ||
172 | .con_id = "sci_fck", | ||
173 | .clk = &mstp_clks[MSTP024], | ||
174 | }, | ||
175 | CLKDEV_CON_ID("ssi3_fck", &mstp_clks[MSTP023]), | 149 | CLKDEV_CON_ID("ssi3_fck", &mstp_clks[MSTP023]), |
176 | CLKDEV_CON_ID("ssi2_fck", &mstp_clks[MSTP022]), | 150 | CLKDEV_CON_ID("ssi2_fck", &mstp_clks[MSTP022]), |
177 | CLKDEV_CON_ID("ssi1_fck", &mstp_clks[MSTP021]), | 151 | CLKDEV_CON_ID("ssi1_fck", &mstp_clks[MSTP021]), |
@@ -180,67 +154,20 @@ static struct clk_lookup lookups[] = { | |||
180 | CLKDEV_CON_ID("hac0_fck", &mstp_clks[MSTP016]), | 154 | CLKDEV_CON_ID("hac0_fck", &mstp_clks[MSTP016]), |
181 | CLKDEV_CON_ID("i2c1_fck", &mstp_clks[MSTP015]), | 155 | CLKDEV_CON_ID("i2c1_fck", &mstp_clks[MSTP015]), |
182 | CLKDEV_CON_ID("i2c0_fck", &mstp_clks[MSTP014]), | 156 | CLKDEV_CON_ID("i2c0_fck", &mstp_clks[MSTP014]), |
183 | { | 157 | |
184 | /* TMU0 */ | 158 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP008]), |
185 | .dev_id = "sh_tmu.0", | 159 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP008]), |
186 | .con_id = "tmu_fck", | 160 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[MSTP008]), |
187 | .clk = &mstp_clks[MSTP008], | 161 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[MSTP009]), |
188 | }, { | 162 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[MSTP009]), |
189 | /* TMU1 */ | 163 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[MSTP009]), |
190 | .dev_id = "sh_tmu.1", | 164 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.6", &mstp_clks[MSTP010]), |
191 | .con_id = "tmu_fck", | 165 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.7", &mstp_clks[MSTP010]), |
192 | .clk = &mstp_clks[MSTP008], | 166 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.8", &mstp_clks[MSTP010]), |
193 | }, { | 167 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.9", &mstp_clks[MSTP011]), |
194 | /* TMU2 */ | 168 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.10", &mstp_clks[MSTP011]), |
195 | .dev_id = "sh_tmu.2", | 169 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.11", &mstp_clks[MSTP011]), |
196 | .con_id = "tmu_fck", | 170 | |
197 | .clk = &mstp_clks[MSTP008], | ||
198 | }, { | ||
199 | /* TMU3 */ | ||
200 | .dev_id = "sh_tmu.3", | ||
201 | .con_id = "tmu_fck", | ||
202 | .clk = &mstp_clks[MSTP009], | ||
203 | }, { | ||
204 | /* TMU4 */ | ||
205 | .dev_id = "sh_tmu.4", | ||
206 | .con_id = "tmu_fck", | ||
207 | .clk = &mstp_clks[MSTP009], | ||
208 | }, { | ||
209 | /* TMU5 */ | ||
210 | .dev_id = "sh_tmu.5", | ||
211 | .con_id = "tmu_fck", | ||
212 | .clk = &mstp_clks[MSTP009], | ||
213 | }, { | ||
214 | /* TMU6 */ | ||
215 | .dev_id = "sh_tmu.6", | ||
216 | .con_id = "tmu_fck", | ||
217 | .clk = &mstp_clks[MSTP010], | ||
218 | }, { | ||
219 | /* TMU7 */ | ||
220 | .dev_id = "sh_tmu.7", | ||
221 | .con_id = "tmu_fck", | ||
222 | .clk = &mstp_clks[MSTP010], | ||
223 | }, { | ||
224 | /* TMU8 */ | ||
225 | .dev_id = "sh_tmu.8", | ||
226 | .con_id = "tmu_fck", | ||
227 | .clk = &mstp_clks[MSTP010], | ||
228 | }, { | ||
229 | /* TMU9 */ | ||
230 | .dev_id = "sh_tmu.9", | ||
231 | .con_id = "tmu_fck", | ||
232 | .clk = &mstp_clks[MSTP011], | ||
233 | }, { | ||
234 | /* TMU10 */ | ||
235 | .dev_id = "sh_tmu.10", | ||
236 | .con_id = "tmu_fck", | ||
237 | .clk = &mstp_clks[MSTP011], | ||
238 | }, { | ||
239 | /* TMU11 */ | ||
240 | .dev_id = "sh_tmu.11", | ||
241 | .con_id = "tmu_fck", | ||
242 | .clk = &mstp_clks[MSTP011], | ||
243 | }, | ||
244 | CLKDEV_CON_ID("sdif1_fck", &mstp_clks[MSTP005]), | 171 | CLKDEV_CON_ID("sdif1_fck", &mstp_clks[MSTP005]), |
245 | CLKDEV_CON_ID("sdif0_fck", &mstp_clks[MSTP004]), | 172 | CLKDEV_CON_ID("sdif0_fck", &mstp_clks[MSTP004]), |
246 | CLKDEV_CON_ID("hspi_fck", &mstp_clks[MSTP002]), | 173 | CLKDEV_CON_ID("hspi_fck", &mstp_clks[MSTP002]), |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-shx3.c b/arch/sh/kernel/cpu/sh4a/clock-shx3.c index 1afdb93b8ccb..bf2d00b8b908 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/clock-shx3.c | |||
@@ -100,8 +100,6 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
100 | [MSTP104] = SH_CLK_MSTP32(NULL, MSTPCR1, 4, 0), | 100 | [MSTP104] = SH_CLK_MSTP32(NULL, MSTPCR1, 4, 0), |
101 | }; | 101 | }; |
102 | 102 | ||
103 | #define CLKDEV_CON_ID(_id, _clk) { .con_id = _id, .clk = _clk } | ||
104 | |||
105 | static struct clk_lookup lookups[] = { | 103 | static struct clk_lookup lookups[] = { |
106 | /* main clocks */ | 104 | /* main clocks */ |
107 | CLKDEV_CON_ID("extal", &extal_clk), | 105 | CLKDEV_CON_ID("extal", &extal_clk), |
@@ -116,62 +114,23 @@ static struct clk_lookup lookups[] = { | |||
116 | CLKDEV_CON_ID("cpu_clk", &div4_clks[DIV4_I]), | 114 | CLKDEV_CON_ID("cpu_clk", &div4_clks[DIV4_I]), |
117 | 115 | ||
118 | /* MSTP32 clocks */ | 116 | /* MSTP32 clocks */ |
119 | { | 117 | CLKDEV_ICK_ID("sci_fck", "sh-sci.3", &mstp_clks[MSTP027]), |
120 | /* SCIF3 */ | 118 | CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP026]), |
121 | .dev_id = "sh-sci.3", | 119 | CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP025]), |
122 | .con_id = "sci_fck", | 120 | CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP024]), |
123 | .clk = &mstp_clks[MSTP027], | 121 | |
124 | }, { | ||
125 | /* SCIF2 */ | ||
126 | .dev_id = "sh-sci.2", | ||
127 | .con_id = "sci_fck", | ||
128 | .clk = &mstp_clks[MSTP026], | ||
129 | }, { | ||
130 | /* SCIF1 */ | ||
131 | .dev_id = "sh-sci.1", | ||
132 | .con_id = "sci_fck", | ||
133 | .clk = &mstp_clks[MSTP025], | ||
134 | }, { | ||
135 | /* SCIF0 */ | ||
136 | .dev_id = "sh-sci.0", | ||
137 | .con_id = "sci_fck", | ||
138 | .clk = &mstp_clks[MSTP024], | ||
139 | }, | ||
140 | CLKDEV_CON_ID("h8ex_fck", &mstp_clks[MSTP003]), | 122 | CLKDEV_CON_ID("h8ex_fck", &mstp_clks[MSTP003]), |
141 | CLKDEV_CON_ID("csm_fck", &mstp_clks[MSTP002]), | 123 | CLKDEV_CON_ID("csm_fck", &mstp_clks[MSTP002]), |
142 | CLKDEV_CON_ID("fe1_fck", &mstp_clks[MSTP001]), | 124 | CLKDEV_CON_ID("fe1_fck", &mstp_clks[MSTP001]), |
143 | CLKDEV_CON_ID("fe0_fck", &mstp_clks[MSTP000]), | 125 | CLKDEV_CON_ID("fe0_fck", &mstp_clks[MSTP000]), |
144 | { | 126 | |
145 | /* TMU0 */ | 127 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP008]), |
146 | .dev_id = "sh_tmu.0", | 128 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP008]), |
147 | .con_id = "tmu_fck", | 129 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.2", &mstp_clks[MSTP008]), |
148 | .clk = &mstp_clks[MSTP008], | 130 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.3", &mstp_clks[MSTP009]), |
149 | }, { | 131 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.4", &mstp_clks[MSTP009]), |
150 | /* TMU1 */ | 132 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.5", &mstp_clks[MSTP009]), |
151 | .dev_id = "sh_tmu.1", | 133 | |
152 | .con_id = "tmu_fck", | ||
153 | .clk = &mstp_clks[MSTP008], | ||
154 | }, { | ||
155 | /* TMU2 */ | ||
156 | .dev_id = "sh_tmu.2", | ||
157 | .con_id = "tmu_fck", | ||
158 | .clk = &mstp_clks[MSTP008], | ||
159 | }, { | ||
160 | /* TMU3 */ | ||
161 | .dev_id = "sh_tmu.3", | ||
162 | .con_id = "tmu_fck", | ||
163 | .clk = &mstp_clks[MSTP009], | ||
164 | }, { | ||
165 | /* TMU4 */ | ||
166 | .dev_id = "sh_tmu.4", | ||
167 | .con_id = "tmu_fck", | ||
168 | .clk = &mstp_clks[MSTP009], | ||
169 | }, { | ||
170 | /* TMU5 */ | ||
171 | .dev_id = "sh_tmu.5", | ||
172 | .con_id = "tmu_fck", | ||
173 | .clk = &mstp_clks[MSTP009], | ||
174 | }, | ||
175 | CLKDEV_CON_ID("hudi_fck", &mstp_clks[MSTP119]), | 134 | CLKDEV_CON_ID("hudi_fck", &mstp_clks[MSTP119]), |
176 | CLKDEV_CON_ID("dmac_11_6_fck", &mstp_clks[MSTP105]), | 135 | CLKDEV_CON_ID("dmac_11_6_fck", &mstp_clks[MSTP105]), |
177 | CLKDEV_CON_ID("dmac_5_0_fck", &mstp_clks[MSTP104]), | 136 | CLKDEV_CON_ID("dmac_5_0_fck", &mstp_clks[MSTP104]), |
diff --git a/arch/sh/kernel/cpu/sh4a/perf_event.c b/arch/sh/kernel/cpu/sh4a/perf_event.c index 17e6bebfede0..84a2c396ceee 100644 --- a/arch/sh/kernel/cpu/sh4a/perf_event.c +++ b/arch/sh/kernel/cpu/sh4a/perf_event.c | |||
@@ -205,6 +205,21 @@ static const int sh4a_cache_events | |||
205 | [ C(RESULT_MISS) ] = -1, | 205 | [ C(RESULT_MISS) ] = -1, |
206 | }, | 206 | }, |
207 | }, | 207 | }, |
208 | |||
209 | [ C(NODE) ] = { | ||
210 | [ C(OP_READ) ] = { | ||
211 | [ C(RESULT_ACCESS) ] = -1, | ||
212 | [ C(RESULT_MISS) ] = -1, | ||
213 | }, | ||
214 | [ C(OP_WRITE) ] = { | ||
215 | [ C(RESULT_ACCESS) ] = -1, | ||
216 | [ C(RESULT_MISS) ] = -1, | ||
217 | }, | ||
218 | [ C(OP_PREFETCH) ] = { | ||
219 | [ C(RESULT_ACCESS) ] = -1, | ||
220 | [ C(RESULT_MISS) ] = -1, | ||
221 | }, | ||
222 | }, | ||
208 | }; | 223 | }; |
209 | 224 | ||
210 | static int sh4a_event_map(int event) | 225 | static int sh4a_event_map(int event) |
diff --git a/arch/sh/kernel/cpu/sh4a/serial-sh7722.c b/arch/sh/kernel/cpu/sh4a/serial-sh7722.c new file mode 100644 index 000000000000..59bc3a72702e --- /dev/null +++ b/arch/sh/kernel/cpu/sh4a/serial-sh7722.c | |||
@@ -0,0 +1,23 @@ | |||
1 | #include <linux/serial_sci.h> | ||
2 | #include <linux/serial_core.h> | ||
3 | #include <linux/io.h> | ||
4 | |||
5 | #define PSCR 0xA405011E | ||
6 | |||
7 | static void sh7722_sci_init_pins(struct uart_port *port, unsigned int cflag) | ||
8 | { | ||
9 | unsigned short data; | ||
10 | |||
11 | if (port->mapbase == 0xffe00000) { | ||
12 | data = __raw_readw(PSCR); | ||
13 | data &= ~0x03cf; | ||
14 | if (!(cflag & CRTSCTS)) | ||
15 | data |= 0x0340; | ||
16 | |||
17 | __raw_writew(data, PSCR); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | struct plat_sci_port_ops sh7722_sci_port_ops = { | ||
22 | .init_pins = sh7722_sci_init_pins, | ||
23 | }; | ||
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c index 82616af64d62..87773869a2f3 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | static struct plat_sci_port scif0_platform_data = { | 21 | static struct plat_sci_port scif0_platform_data = { |
22 | .mapbase = 0xffe00000, | 22 | .mapbase = 0xffe00000, |
23 | .port_reg = 0xa405013e, | ||
23 | .flags = UPF_BOOT_AUTOCONF, | 24 | .flags = UPF_BOOT_AUTOCONF, |
24 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 25 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
25 | .scbrr_algo_id = SCBRR_ALGO_2, | 26 | .scbrr_algo_id = SCBRR_ALGO_2, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c index 5813d8023619..278a0e572158 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | #include <cpu/dma-register.h> | 23 | #include <cpu/dma-register.h> |
24 | #include <cpu/sh7722.h> | 24 | #include <cpu/sh7722.h> |
25 | #include <cpu/serial.h> | ||
25 | 26 | ||
26 | static const struct sh_dmae_slave_config sh7722_dmae_slaves[] = { | 27 | static const struct sh_dmae_slave_config sh7722_dmae_slaves[] = { |
27 | { | 28 | { |
@@ -185,6 +186,8 @@ static struct plat_sci_port scif0_platform_data = { | |||
185 | .scbrr_algo_id = SCBRR_ALGO_2, | 186 | .scbrr_algo_id = SCBRR_ALGO_2, |
186 | .type = PORT_SCIF, | 187 | .type = PORT_SCIF, |
187 | .irqs = { 80, 80, 80, 80 }, | 188 | .irqs = { 80, 80, 80, 80 }, |
189 | .ops = &sh7722_sci_port_ops, | ||
190 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
188 | }; | 191 | }; |
189 | 192 | ||
190 | static struct platform_device scif0_device = { | 193 | static struct platform_device scif0_device = { |
@@ -202,6 +205,8 @@ static struct plat_sci_port scif1_platform_data = { | |||
202 | .scbrr_algo_id = SCBRR_ALGO_2, | 205 | .scbrr_algo_id = SCBRR_ALGO_2, |
203 | .type = PORT_SCIF, | 206 | .type = PORT_SCIF, |
204 | .irqs = { 81, 81, 81, 81 }, | 207 | .irqs = { 81, 81, 81, 81 }, |
208 | .ops = &sh7722_sci_port_ops, | ||
209 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
205 | }; | 210 | }; |
206 | 211 | ||
207 | static struct platform_device scif1_device = { | 212 | static struct platform_device scif1_device = { |
@@ -219,6 +224,8 @@ static struct plat_sci_port scif2_platform_data = { | |||
219 | .scbrr_algo_id = SCBRR_ALGO_2, | 224 | .scbrr_algo_id = SCBRR_ALGO_2, |
220 | .type = PORT_SCIF, | 225 | .type = PORT_SCIF, |
221 | .irqs = { 82, 82, 82, 82 }, | 226 | .irqs = { 82, 82, 82, 82 }, |
227 | .ops = &sh7722_sci_port_ops, | ||
228 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
222 | }; | 229 | }; |
223 | 230 | ||
224 | static struct platform_device scif2_device = { | 231 | static struct platform_device scif2_device = { |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c index 072382280f96..3c2810d8f72e 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c | |||
@@ -23,11 +23,13 @@ | |||
23 | /* Serial */ | 23 | /* Serial */ |
24 | static struct plat_sci_port scif0_platform_data = { | 24 | static struct plat_sci_port scif0_platform_data = { |
25 | .mapbase = 0xffe00000, | 25 | .mapbase = 0xffe00000, |
26 | .port_reg = 0xa4050160, | ||
26 | .flags = UPF_BOOT_AUTOCONF, | 27 | .flags = UPF_BOOT_AUTOCONF, |
27 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 28 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
28 | .scbrr_algo_id = SCBRR_ALGO_2, | 29 | .scbrr_algo_id = SCBRR_ALGO_2, |
29 | .type = PORT_SCIF, | 30 | .type = PORT_SCIF, |
30 | .irqs = { 80, 80, 80, 80 }, | 31 | .irqs = { 80, 80, 80, 80 }, |
32 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
31 | }; | 33 | }; |
32 | 34 | ||
33 | static struct platform_device scif0_device = { | 35 | static struct platform_device scif0_device = { |
@@ -40,11 +42,13 @@ static struct platform_device scif0_device = { | |||
40 | 42 | ||
41 | static struct plat_sci_port scif1_platform_data = { | 43 | static struct plat_sci_port scif1_platform_data = { |
42 | .mapbase = 0xffe10000, | 44 | .mapbase = 0xffe10000, |
45 | .port_reg = SCIx_NOT_SUPPORTED, | ||
43 | .flags = UPF_BOOT_AUTOCONF, | 46 | .flags = UPF_BOOT_AUTOCONF, |
44 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 47 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
45 | .scbrr_algo_id = SCBRR_ALGO_2, | 48 | .scbrr_algo_id = SCBRR_ALGO_2, |
46 | .type = PORT_SCIF, | 49 | .type = PORT_SCIF, |
47 | .irqs = { 81, 81, 81, 81 }, | 50 | .irqs = { 81, 81, 81, 81 }, |
51 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
48 | }; | 52 | }; |
49 | 53 | ||
50 | static struct platform_device scif1_device = { | 54 | static struct platform_device scif1_device = { |
@@ -57,11 +61,13 @@ static struct platform_device scif1_device = { | |||
57 | 61 | ||
58 | static struct plat_sci_port scif2_platform_data = { | 62 | static struct plat_sci_port scif2_platform_data = { |
59 | .mapbase = 0xffe20000, | 63 | .mapbase = 0xffe20000, |
64 | .port_reg = SCIx_NOT_SUPPORTED, | ||
60 | .flags = UPF_BOOT_AUTOCONF, | 65 | .flags = UPF_BOOT_AUTOCONF, |
61 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 66 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
62 | .scbrr_algo_id = SCBRR_ALGO_2, | 67 | .scbrr_algo_id = SCBRR_ALGO_2, |
63 | .type = PORT_SCIF, | 68 | .type = PORT_SCIF, |
64 | .irqs = { 82, 82, 82, 82 }, | 69 | .irqs = { 82, 82, 82, 82 }, |
70 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
65 | }; | 71 | }; |
66 | 72 | ||
67 | static struct platform_device scif2_device = { | 73 | static struct platform_device scif2_device = { |
@@ -75,6 +81,7 @@ static struct platform_device scif2_device = { | |||
75 | static struct plat_sci_port scif3_platform_data = { | 81 | static struct plat_sci_port scif3_platform_data = { |
76 | .mapbase = 0xa4e30000, | 82 | .mapbase = 0xa4e30000, |
77 | .flags = UPF_BOOT_AUTOCONF, | 83 | .flags = UPF_BOOT_AUTOCONF, |
84 | .port_reg = SCIx_NOT_SUPPORTED, | ||
78 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 85 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
79 | .scbrr_algo_id = SCBRR_ALGO_3, | 86 | .scbrr_algo_id = SCBRR_ALGO_3, |
80 | .type = PORT_SCIFA, | 87 | .type = PORT_SCIFA, |
@@ -91,6 +98,7 @@ static struct platform_device scif3_device = { | |||
91 | 98 | ||
92 | static struct plat_sci_port scif4_platform_data = { | 99 | static struct plat_sci_port scif4_platform_data = { |
93 | .mapbase = 0xa4e40000, | 100 | .mapbase = 0xa4e40000, |
101 | .port_reg = SCIx_NOT_SUPPORTED, | ||
94 | .flags = UPF_BOOT_AUTOCONF, | 102 | .flags = UPF_BOOT_AUTOCONF, |
95 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 103 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
96 | .scbrr_algo_id = SCBRR_ALGO_3, | 104 | .scbrr_algo_id = SCBRR_ALGO_3, |
@@ -108,6 +116,7 @@ static struct platform_device scif4_device = { | |||
108 | 116 | ||
109 | static struct plat_sci_port scif5_platform_data = { | 117 | static struct plat_sci_port scif5_platform_data = { |
110 | .mapbase = 0xa4e50000, | 118 | .mapbase = 0xa4e50000, |
119 | .port_reg = SCIx_NOT_SUPPORTED, | ||
111 | .flags = UPF_BOOT_AUTOCONF, | 120 | .flags = UPF_BOOT_AUTOCONF, |
112 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 121 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
113 | .scbrr_algo_id = SCBRR_ALGO_3, | 122 | .scbrr_algo_id = SCBRR_ALGO_3, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c index 0333fe9e3881..a37dd72c3671 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c | |||
@@ -93,6 +93,46 @@ static const struct sh_dmae_slave_config sh7724_dmae_slaves[] = { | |||
93 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 93 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
94 | .mid_rid = 0x36, | 94 | .mid_rid = 0x36, |
95 | }, { | 95 | }, { |
96 | .slave_id = SHDMA_SLAVE_USB0D0_TX, | ||
97 | .addr = 0xA4D80100, | ||
98 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
99 | .mid_rid = 0x73, | ||
100 | }, { | ||
101 | .slave_id = SHDMA_SLAVE_USB0D0_RX, | ||
102 | .addr = 0xA4D80100, | ||
103 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
104 | .mid_rid = 0x73, | ||
105 | }, { | ||
106 | .slave_id = SHDMA_SLAVE_USB0D1_TX, | ||
107 | .addr = 0xA4D80120, | ||
108 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
109 | .mid_rid = 0x77, | ||
110 | }, { | ||
111 | .slave_id = SHDMA_SLAVE_USB0D1_RX, | ||
112 | .addr = 0xA4D80120, | ||
113 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
114 | .mid_rid = 0x77, | ||
115 | }, { | ||
116 | .slave_id = SHDMA_SLAVE_USB1D0_TX, | ||
117 | .addr = 0xA4D90100, | ||
118 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
119 | .mid_rid = 0xab, | ||
120 | }, { | ||
121 | .slave_id = SHDMA_SLAVE_USB1D0_RX, | ||
122 | .addr = 0xA4D90100, | ||
123 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
124 | .mid_rid = 0xab, | ||
125 | }, { | ||
126 | .slave_id = SHDMA_SLAVE_USB1D1_TX, | ||
127 | .addr = 0xA4D90120, | ||
128 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
129 | .mid_rid = 0xaf, | ||
130 | }, { | ||
131 | .slave_id = SHDMA_SLAVE_USB1D1_RX, | ||
132 | .addr = 0xA4D90120, | ||
133 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_32BIT), | ||
134 | .mid_rid = 0xaf, | ||
135 | }, { | ||
96 | .slave_id = SHDMA_SLAVE_SDHI0_TX, | 136 | .slave_id = SHDMA_SLAVE_SDHI0_TX, |
97 | .addr = 0x04ce0030, | 137 | .addr = 0x04ce0030, |
98 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_16BIT), | 138 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_16BIT), |
@@ -256,11 +296,13 @@ static struct platform_device dma1_device = { | |||
256 | /* Serial */ | 296 | /* Serial */ |
257 | static struct plat_sci_port scif0_platform_data = { | 297 | static struct plat_sci_port scif0_platform_data = { |
258 | .mapbase = 0xffe00000, | 298 | .mapbase = 0xffe00000, |
299 | .port_reg = SCIx_NOT_SUPPORTED, | ||
259 | .flags = UPF_BOOT_AUTOCONF, | 300 | .flags = UPF_BOOT_AUTOCONF, |
260 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 301 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
261 | .scbrr_algo_id = SCBRR_ALGO_2, | 302 | .scbrr_algo_id = SCBRR_ALGO_2, |
262 | .type = PORT_SCIF, | 303 | .type = PORT_SCIF, |
263 | .irqs = { 80, 80, 80, 80 }, | 304 | .irqs = { 80, 80, 80, 80 }, |
305 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
264 | }; | 306 | }; |
265 | 307 | ||
266 | static struct platform_device scif0_device = { | 308 | static struct platform_device scif0_device = { |
@@ -273,11 +315,13 @@ static struct platform_device scif0_device = { | |||
273 | 315 | ||
274 | static struct plat_sci_port scif1_platform_data = { | 316 | static struct plat_sci_port scif1_platform_data = { |
275 | .mapbase = 0xffe10000, | 317 | .mapbase = 0xffe10000, |
318 | .port_reg = SCIx_NOT_SUPPORTED, | ||
276 | .flags = UPF_BOOT_AUTOCONF, | 319 | .flags = UPF_BOOT_AUTOCONF, |
277 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 320 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
278 | .scbrr_algo_id = SCBRR_ALGO_2, | 321 | .scbrr_algo_id = SCBRR_ALGO_2, |
279 | .type = PORT_SCIF, | 322 | .type = PORT_SCIF, |
280 | .irqs = { 81, 81, 81, 81 }, | 323 | .irqs = { 81, 81, 81, 81 }, |
324 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
281 | }; | 325 | }; |
282 | 326 | ||
283 | static struct platform_device scif1_device = { | 327 | static struct platform_device scif1_device = { |
@@ -290,11 +334,13 @@ static struct platform_device scif1_device = { | |||
290 | 334 | ||
291 | static struct plat_sci_port scif2_platform_data = { | 335 | static struct plat_sci_port scif2_platform_data = { |
292 | .mapbase = 0xffe20000, | 336 | .mapbase = 0xffe20000, |
337 | .port_reg = SCIx_NOT_SUPPORTED, | ||
293 | .flags = UPF_BOOT_AUTOCONF, | 338 | .flags = UPF_BOOT_AUTOCONF, |
294 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 339 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
295 | .scbrr_algo_id = SCBRR_ALGO_2, | 340 | .scbrr_algo_id = SCBRR_ALGO_2, |
296 | .type = PORT_SCIF, | 341 | .type = PORT_SCIF, |
297 | .irqs = { 82, 82, 82, 82 }, | 342 | .irqs = { 82, 82, 82, 82 }, |
343 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
298 | }; | 344 | }; |
299 | 345 | ||
300 | static struct platform_device scif2_device = { | 346 | static struct platform_device scif2_device = { |
@@ -307,6 +353,7 @@ static struct platform_device scif2_device = { | |||
307 | 353 | ||
308 | static struct plat_sci_port scif3_platform_data = { | 354 | static struct plat_sci_port scif3_platform_data = { |
309 | .mapbase = 0xa4e30000, | 355 | .mapbase = 0xa4e30000, |
356 | .port_reg = SCIx_NOT_SUPPORTED, | ||
310 | .flags = UPF_BOOT_AUTOCONF, | 357 | .flags = UPF_BOOT_AUTOCONF, |
311 | .scscr = SCSCR_RE | SCSCR_TE, | 358 | .scscr = SCSCR_RE | SCSCR_TE, |
312 | .scbrr_algo_id = SCBRR_ALGO_3, | 359 | .scbrr_algo_id = SCBRR_ALGO_3, |
@@ -324,6 +371,7 @@ static struct platform_device scif3_device = { | |||
324 | 371 | ||
325 | static struct plat_sci_port scif4_platform_data = { | 372 | static struct plat_sci_port scif4_platform_data = { |
326 | .mapbase = 0xa4e40000, | 373 | .mapbase = 0xa4e40000, |
374 | .port_reg = SCIx_NOT_SUPPORTED, | ||
327 | .flags = UPF_BOOT_AUTOCONF, | 375 | .flags = UPF_BOOT_AUTOCONF, |
328 | .scscr = SCSCR_RE | SCSCR_TE, | 376 | .scscr = SCSCR_RE | SCSCR_TE, |
329 | .scbrr_algo_id = SCBRR_ALGO_3, | 377 | .scbrr_algo_id = SCBRR_ALGO_3, |
@@ -341,6 +389,7 @@ static struct platform_device scif4_device = { | |||
341 | 389 | ||
342 | static struct plat_sci_port scif5_platform_data = { | 390 | static struct plat_sci_port scif5_platform_data = { |
343 | .mapbase = 0xa4e50000, | 391 | .mapbase = 0xa4e50000, |
392 | .port_reg = SCIx_NOT_SUPPORTED, | ||
344 | .flags = UPF_BOOT_AUTOCONF, | 393 | .flags = UPF_BOOT_AUTOCONF, |
345 | .scscr = SCSCR_RE | SCSCR_TE, | 394 | .scscr = SCSCR_RE | SCSCR_TE, |
346 | .scbrr_algo_id = SCBRR_ALGO_3, | 395 | .scbrr_algo_id = SCBRR_ALGO_3, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c index 423dabf542d3..e915deafac89 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c | |||
@@ -183,7 +183,7 @@ static const struct sh_dmae_slave_config sh7757_dmae1_slaves[] = { | |||
183 | { | 183 | { |
184 | .slave_id = SHDMA_SLAVE_SCIF2_RX, | 184 | .slave_id = SHDMA_SLAVE_SCIF2_RX, |
185 | .addr = 0x1f4b0014, | 185 | .addr = 0x1f4b0014, |
186 | .chcr = SM_INC | 0x800 | 0x40000000 | | 186 | .chcr = DM_INC | 0x800 | 0x40000000 | |
187 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 187 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
188 | .mid_rid = 0x22, | 188 | .mid_rid = 0x22, |
189 | }, | 189 | }, |
@@ -197,7 +197,7 @@ static const struct sh_dmae_slave_config sh7757_dmae1_slaves[] = { | |||
197 | { | 197 | { |
198 | .slave_id = SHDMA_SLAVE_SCIF3_RX, | 198 | .slave_id = SHDMA_SLAVE_SCIF3_RX, |
199 | .addr = 0x1f4c0014, | 199 | .addr = 0x1f4c0014, |
200 | .chcr = SM_INC | 0x800 | 0x40000000 | | 200 | .chcr = DM_INC | 0x800 | 0x40000000 | |
201 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 201 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
202 | .mid_rid = 0x2a, | 202 | .mid_rid = 0x2a, |
203 | }, | 203 | }, |
@@ -211,7 +211,7 @@ static const struct sh_dmae_slave_config sh7757_dmae1_slaves[] = { | |||
211 | { | 211 | { |
212 | .slave_id = SHDMA_SLAVE_SCIF4_RX, | 212 | .slave_id = SHDMA_SLAVE_SCIF4_RX, |
213 | .addr = 0x1f4d0014, | 213 | .addr = 0x1f4d0014, |
214 | .chcr = SM_INC | 0x800 | 0x40000000 | | 214 | .chcr = DM_INC | 0x800 | 0x40000000 | |
215 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 215 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
216 | .mid_rid = 0x42, | 216 | .mid_rid = 0x42, |
217 | }, | 217 | }, |
@@ -228,7 +228,7 @@ static const struct sh_dmae_slave_config sh7757_dmae2_slaves[] = { | |||
228 | { | 228 | { |
229 | .slave_id = SHDMA_SLAVE_RIIC0_RX, | 229 | .slave_id = SHDMA_SLAVE_RIIC0_RX, |
230 | .addr = 0x1e500013, | 230 | .addr = 0x1e500013, |
231 | .chcr = SM_INC | 0x800 | 0x40000000 | | 231 | .chcr = DM_INC | 0x800 | 0x40000000 | |
232 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 232 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
233 | .mid_rid = 0x22, | 233 | .mid_rid = 0x22, |
234 | }, | 234 | }, |
@@ -242,7 +242,7 @@ static const struct sh_dmae_slave_config sh7757_dmae2_slaves[] = { | |||
242 | { | 242 | { |
243 | .slave_id = SHDMA_SLAVE_RIIC1_RX, | 243 | .slave_id = SHDMA_SLAVE_RIIC1_RX, |
244 | .addr = 0x1e510013, | 244 | .addr = 0x1e510013, |
245 | .chcr = SM_INC | 0x800 | 0x40000000 | | 245 | .chcr = DM_INC | 0x800 | 0x40000000 | |
246 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 246 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
247 | .mid_rid = 0x2a, | 247 | .mid_rid = 0x2a, |
248 | }, | 248 | }, |
@@ -256,7 +256,7 @@ static const struct sh_dmae_slave_config sh7757_dmae2_slaves[] = { | |||
256 | { | 256 | { |
257 | .slave_id = SHDMA_SLAVE_RIIC2_RX, | 257 | .slave_id = SHDMA_SLAVE_RIIC2_RX, |
258 | .addr = 0x1e520013, | 258 | .addr = 0x1e520013, |
259 | .chcr = SM_INC | 0x800 | 0x40000000 | | 259 | .chcr = DM_INC | 0x800 | 0x40000000 | |
260 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 260 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
261 | .mid_rid = 0xa2, | 261 | .mid_rid = 0xa2, |
262 | }, | 262 | }, |
@@ -265,12 +265,12 @@ static const struct sh_dmae_slave_config sh7757_dmae2_slaves[] = { | |||
265 | .addr = 0x1e530012, | 265 | .addr = 0x1e530012, |
266 | .chcr = SM_INC | 0x800 | 0x40000000 | | 266 | .chcr = SM_INC | 0x800 | 0x40000000 | |
267 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 267 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
268 | .mid_rid = 0xab, | 268 | .mid_rid = 0xa9, |
269 | }, | 269 | }, |
270 | { | 270 | { |
271 | .slave_id = SHDMA_SLAVE_RIIC3_RX, | 271 | .slave_id = SHDMA_SLAVE_RIIC3_RX, |
272 | .addr = 0x1e530013, | 272 | .addr = 0x1e530013, |
273 | .chcr = SM_INC | 0x800 | 0x40000000 | | 273 | .chcr = DM_INC | 0x800 | 0x40000000 | |
274 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 274 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
275 | .mid_rid = 0xaf, | 275 | .mid_rid = 0xaf, |
276 | }, | 276 | }, |
@@ -279,14 +279,14 @@ static const struct sh_dmae_slave_config sh7757_dmae2_slaves[] = { | |||
279 | .addr = 0x1e540012, | 279 | .addr = 0x1e540012, |
280 | .chcr = SM_INC | 0x800 | 0x40000000 | | 280 | .chcr = SM_INC | 0x800 | 0x40000000 | |
281 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 281 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
282 | .mid_rid = 0xc1, | 282 | .mid_rid = 0xc5, |
283 | }, | 283 | }, |
284 | { | 284 | { |
285 | .slave_id = SHDMA_SLAVE_RIIC4_RX, | 285 | .slave_id = SHDMA_SLAVE_RIIC4_RX, |
286 | .addr = 0x1e540013, | 286 | .addr = 0x1e540013, |
287 | .chcr = SM_INC | 0x800 | 0x40000000 | | 287 | .chcr = DM_INC | 0x800 | 0x40000000 | |
288 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 288 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
289 | .mid_rid = 0xc2, | 289 | .mid_rid = 0xc6, |
290 | }, | 290 | }, |
291 | }; | 291 | }; |
292 | 292 | ||
@@ -301,7 +301,7 @@ static const struct sh_dmae_slave_config sh7757_dmae3_slaves[] = { | |||
301 | { | 301 | { |
302 | .slave_id = SHDMA_SLAVE_RIIC5_RX, | 302 | .slave_id = SHDMA_SLAVE_RIIC5_RX, |
303 | .addr = 0x1e550013, | 303 | .addr = 0x1e550013, |
304 | .chcr = SM_INC | 0x800 | 0x40000000 | | 304 | .chcr = DM_INC | 0x800 | 0x40000000 | |
305 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 305 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
306 | .mid_rid = 0x22, | 306 | .mid_rid = 0x22, |
307 | }, | 307 | }, |
@@ -315,7 +315,7 @@ static const struct sh_dmae_slave_config sh7757_dmae3_slaves[] = { | |||
315 | { | 315 | { |
316 | .slave_id = SHDMA_SLAVE_RIIC6_RX, | 316 | .slave_id = SHDMA_SLAVE_RIIC6_RX, |
317 | .addr = 0x1e560013, | 317 | .addr = 0x1e560013, |
318 | .chcr = SM_INC | 0x800 | 0x40000000 | | 318 | .chcr = DM_INC | 0x800 | 0x40000000 | |
319 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 319 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
320 | .mid_rid = 0x2a, | 320 | .mid_rid = 0x2a, |
321 | }, | 321 | }, |
@@ -329,7 +329,7 @@ static const struct sh_dmae_slave_config sh7757_dmae3_slaves[] = { | |||
329 | { | 329 | { |
330 | .slave_id = SHDMA_SLAVE_RIIC7_RX, | 330 | .slave_id = SHDMA_SLAVE_RIIC7_RX, |
331 | .addr = 0x1e570013, | 331 | .addr = 0x1e570013, |
332 | .chcr = SM_INC | 0x800 | 0x40000000 | | 332 | .chcr = DM_INC | 0x800 | 0x40000000 | |
333 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 333 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
334 | .mid_rid = 0x42, | 334 | .mid_rid = 0x42, |
335 | }, | 335 | }, |
@@ -343,7 +343,7 @@ static const struct sh_dmae_slave_config sh7757_dmae3_slaves[] = { | |||
343 | { | 343 | { |
344 | .slave_id = SHDMA_SLAVE_RIIC8_RX, | 344 | .slave_id = SHDMA_SLAVE_RIIC8_RX, |
345 | .addr = 0x1e580013, | 345 | .addr = 0x1e580013, |
346 | .chcr = SM_INC | 0x800 | 0x40000000 | | 346 | .chcr = DM_INC | 0x800 | 0x40000000 | |
347 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 347 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
348 | .mid_rid = 0x46, | 348 | .mid_rid = 0x46, |
349 | }, | 349 | }, |
@@ -357,7 +357,7 @@ static const struct sh_dmae_slave_config sh7757_dmae3_slaves[] = { | |||
357 | { | 357 | { |
358 | .slave_id = SHDMA_SLAVE_RIIC9_RX, | 358 | .slave_id = SHDMA_SLAVE_RIIC9_RX, |
359 | .addr = 0x1e590013, | 359 | .addr = 0x1e590013, |
360 | .chcr = SM_INC | 0x800 | 0x40000000 | | 360 | .chcr = DM_INC | 0x800 | 0x40000000 | |
361 | TS_INDEX2VAL(XMIT_SZ_8BIT), | 361 | TS_INDEX2VAL(XMIT_SZ_8BIT), |
362 | .mid_rid = 0x52, | 362 | .mid_rid = 0x52, |
363 | }, | 363 | }, |
@@ -659,6 +659,54 @@ static struct platform_device spi0_device = { | |||
659 | .resource = spi0_resources, | 659 | .resource = spi0_resources, |
660 | }; | 660 | }; |
661 | 661 | ||
662 | static struct resource usb_ehci_resources[] = { | ||
663 | [0] = { | ||
664 | .start = 0xfe4f1000, | ||
665 | .end = 0xfe4f10ff, | ||
666 | .flags = IORESOURCE_MEM, | ||
667 | }, | ||
668 | [1] = { | ||
669 | .start = 57, | ||
670 | .end = 57, | ||
671 | .flags = IORESOURCE_IRQ, | ||
672 | }, | ||
673 | }; | ||
674 | |||
675 | static struct platform_device usb_ehci_device = { | ||
676 | .name = "sh_ehci", | ||
677 | .id = -1, | ||
678 | .dev = { | ||
679 | .dma_mask = &usb_ehci_device.dev.coherent_dma_mask, | ||
680 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
681 | }, | ||
682 | .num_resources = ARRAY_SIZE(usb_ehci_resources), | ||
683 | .resource = usb_ehci_resources, | ||
684 | }; | ||
685 | |||
686 | static struct resource usb_ohci_resources[] = { | ||
687 | [0] = { | ||
688 | .start = 0xfe4f1800, | ||
689 | .end = 0xfe4f18ff, | ||
690 | .flags = IORESOURCE_MEM, | ||
691 | }, | ||
692 | [1] = { | ||
693 | .start = 57, | ||
694 | .end = 57, | ||
695 | .flags = IORESOURCE_IRQ, | ||
696 | }, | ||
697 | }; | ||
698 | |||
699 | static struct platform_device usb_ohci_device = { | ||
700 | .name = "sh_ohci", | ||
701 | .id = -1, | ||
702 | .dev = { | ||
703 | .dma_mask = &usb_ohci_device.dev.coherent_dma_mask, | ||
704 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
705 | }, | ||
706 | .num_resources = ARRAY_SIZE(usb_ohci_resources), | ||
707 | .resource = usb_ohci_resources, | ||
708 | }; | ||
709 | |||
662 | static struct platform_device *sh7757_devices[] __initdata = { | 710 | static struct platform_device *sh7757_devices[] __initdata = { |
663 | &scif2_device, | 711 | &scif2_device, |
664 | &scif3_device, | 712 | &scif3_device, |
@@ -670,6 +718,8 @@ static struct platform_device *sh7757_devices[] __initdata = { | |||
670 | &dma2_device, | 718 | &dma2_device, |
671 | &dma3_device, | 719 | &dma3_device, |
672 | &spi0_device, | 720 | &spi0_device, |
721 | &usb_ehci_device, | ||
722 | &usb_ohci_device, | ||
673 | }; | 723 | }; |
674 | 724 | ||
675 | static int __init sh7757_devices_setup(void) | 725 | static int __init sh7757_devices_setup(void) |
@@ -1039,13 +1089,13 @@ static DECLARE_INTC_DESC(intc_desc, "sh7757", vectors, groups, | |||
1039 | 1089 | ||
1040 | /* Support for external interrupt pins in IRQ mode */ | 1090 | /* Support for external interrupt pins in IRQ mode */ |
1041 | static struct intc_vect vectors_irq0123[] __initdata = { | 1091 | static struct intc_vect vectors_irq0123[] __initdata = { |
1042 | INTC_VECT(IRQ0, 0x240), INTC_VECT(IRQ1, 0x280), | 1092 | INTC_VECT(IRQ0, 0x200), INTC_VECT(IRQ1, 0x240), |
1043 | INTC_VECT(IRQ2, 0x2c0), INTC_VECT(IRQ3, 0x300), | 1093 | INTC_VECT(IRQ2, 0x280), INTC_VECT(IRQ3, 0x2c0), |
1044 | }; | 1094 | }; |
1045 | 1095 | ||
1046 | static struct intc_vect vectors_irq4567[] __initdata = { | 1096 | static struct intc_vect vectors_irq4567[] __initdata = { |
1047 | INTC_VECT(IRQ4, 0x340), INTC_VECT(IRQ5, 0x380), | 1097 | INTC_VECT(IRQ4, 0x300), INTC_VECT(IRQ5, 0x340), |
1048 | INTC_VECT(IRQ6, 0x3c0), INTC_VECT(IRQ7, 0x200), | 1098 | INTC_VECT(IRQ6, 0x380), INTC_VECT(IRQ7, 0x3c0), |
1049 | }; | 1099 | }; |
1050 | 1100 | ||
1051 | static struct intc_sense_reg sense_registers[] __initdata = { | 1101 | static struct intc_sense_reg sense_registers[] __initdata = { |
@@ -1079,14 +1129,14 @@ static struct intc_vect vectors_irl0123[] __initdata = { | |||
1079 | }; | 1129 | }; |
1080 | 1130 | ||
1081 | static struct intc_vect vectors_irl4567[] __initdata = { | 1131 | static struct intc_vect vectors_irl4567[] __initdata = { |
1082 | INTC_VECT(IRL4_LLLL, 0xb00), INTC_VECT(IRL4_LLLH, 0xb20), | 1132 | INTC_VECT(IRL4_LLLL, 0x200), INTC_VECT(IRL4_LLLH, 0x220), |
1083 | INTC_VECT(IRL4_LLHL, 0xb40), INTC_VECT(IRL4_LLHH, 0xb60), | 1133 | INTC_VECT(IRL4_LLHL, 0x240), INTC_VECT(IRL4_LLHH, 0x260), |
1084 | INTC_VECT(IRL4_LHLL, 0xb80), INTC_VECT(IRL4_LHLH, 0xba0), | 1134 | INTC_VECT(IRL4_LHLL, 0x280), INTC_VECT(IRL4_LHLH, 0x2a0), |
1085 | INTC_VECT(IRL4_LHHL, 0xbc0), INTC_VECT(IRL4_LHHH, 0xbe0), | 1135 | INTC_VECT(IRL4_LHHL, 0x2c0), INTC_VECT(IRL4_LHHH, 0x2e0), |
1086 | INTC_VECT(IRL4_HLLL, 0xc00), INTC_VECT(IRL4_HLLH, 0xc20), | 1136 | INTC_VECT(IRL4_HLLL, 0x300), INTC_VECT(IRL4_HLLH, 0x320), |
1087 | INTC_VECT(IRL4_HLHL, 0xc40), INTC_VECT(IRL4_HLHH, 0xc60), | 1137 | INTC_VECT(IRL4_HLHL, 0x340), INTC_VECT(IRL4_HLHH, 0x360), |
1088 | INTC_VECT(IRL4_HHLL, 0xc80), INTC_VECT(IRL4_HHLH, 0xca0), | 1138 | INTC_VECT(IRL4_HHLL, 0x380), INTC_VECT(IRL4_HHLH, 0x3a0), |
1089 | INTC_VECT(IRL4_HHHL, 0xcc0), | 1139 | INTC_VECT(IRL4_HHHL, 0x3c0), |
1090 | }; | 1140 | }; |
1091 | 1141 | ||
1092 | static DECLARE_INTC_DESC(intc_desc_irl0123, "sh7757-irl0123", vectors_irl0123, | 1142 | static DECLARE_INTC_DESC(intc_desc_irl0123, "sh7757-irl0123", vectors_irl0123, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c index 593eca6509b5..00113515f233 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c | |||
@@ -23,6 +23,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
23 | .scbrr_algo_id = SCBRR_ALGO_2, | 23 | .scbrr_algo_id = SCBRR_ALGO_2, |
24 | .type = PORT_SCIF, | 24 | .type = PORT_SCIF, |
25 | .irqs = { 40, 40, 40, 40 }, | 25 | .irqs = { 40, 40, 40, 40 }, |
26 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
26 | }; | 27 | }; |
27 | 28 | ||
28 | static struct platform_device scif0_device = { | 29 | static struct platform_device scif0_device = { |
@@ -40,6 +41,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
40 | .scbrr_algo_id = SCBRR_ALGO_2, | 41 | .scbrr_algo_id = SCBRR_ALGO_2, |
41 | .type = PORT_SCIF, | 42 | .type = PORT_SCIF, |
42 | .irqs = { 76, 76, 76, 76 }, | 43 | .irqs = { 76, 76, 76, 76 }, |
44 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
43 | }; | 45 | }; |
44 | 46 | ||
45 | static struct platform_device scif1_device = { | 47 | static struct platform_device scif1_device = { |
@@ -57,6 +59,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
57 | .scbrr_algo_id = SCBRR_ALGO_2, | 59 | .scbrr_algo_id = SCBRR_ALGO_2, |
58 | .type = PORT_SCIF, | 60 | .type = PORT_SCIF, |
59 | .irqs = { 104, 104, 104, 104 }, | 61 | .irqs = { 104, 104, 104, 104 }, |
62 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
60 | }; | 63 | }; |
61 | 64 | ||
62 | static struct platform_device scif2_device = { | 65 | static struct platform_device scif2_device = { |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c index 08add7fa6849..3d4d2075c19a 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/serial_sci.h> | 14 | #include <linux/serial_sci.h> |
15 | #include <linux/sh_dma.h> | 15 | #include <linux/sh_dma.h> |
16 | #include <linux/sh_timer.h> | 16 | #include <linux/sh_timer.h> |
17 | |||
18 | #include <cpu/dma-register.h> | 17 | #include <cpu/dma-register.h> |
19 | 18 | ||
20 | static struct plat_sci_port scif0_platform_data = { | 19 | static struct plat_sci_port scif0_platform_data = { |
@@ -24,6 +23,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
24 | .scbrr_algo_id = SCBRR_ALGO_1, | 23 | .scbrr_algo_id = SCBRR_ALGO_1, |
25 | .type = PORT_SCIF, | 24 | .type = PORT_SCIF, |
26 | .irqs = { 40, 40, 40, 40 }, | 25 | .irqs = { 40, 40, 40, 40 }, |
26 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
27 | }; | 27 | }; |
28 | 28 | ||
29 | static struct platform_device scif0_device = { | 29 | static struct platform_device scif0_device = { |
@@ -41,6 +41,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
41 | .scbrr_algo_id = SCBRR_ALGO_1, | 41 | .scbrr_algo_id = SCBRR_ALGO_1, |
42 | .type = PORT_SCIF, | 42 | .type = PORT_SCIF, |
43 | .irqs = { 76, 76, 76, 76 }, | 43 | .irqs = { 76, 76, 76, 76 }, |
44 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
44 | }; | 45 | }; |
45 | 46 | ||
46 | static struct platform_device scif1_device = { | 47 | static struct platform_device scif1_device = { |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c index 18d8fc136fb2..b29e6340414a 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c | |||
@@ -15,9 +15,7 @@ | |||
15 | #include <linux/mm.h> | 15 | #include <linux/mm.h> |
16 | #include <linux/sh_dma.h> | 16 | #include <linux/sh_dma.h> |
17 | #include <linux/sh_timer.h> | 17 | #include <linux/sh_timer.h> |
18 | |||
19 | #include <asm/mmzone.h> | 18 | #include <asm/mmzone.h> |
20 | |||
21 | #include <cpu/dma-register.h> | 19 | #include <cpu/dma-register.h> |
22 | 20 | ||
23 | static struct plat_sci_port scif0_platform_data = { | 21 | static struct plat_sci_port scif0_platform_data = { |
@@ -27,6 +25,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
27 | .scbrr_algo_id = SCBRR_ALGO_1, | 25 | .scbrr_algo_id = SCBRR_ALGO_1, |
28 | .type = PORT_SCIF, | 26 | .type = PORT_SCIF, |
29 | .irqs = { 40, 40, 40, 40 }, | 27 | .irqs = { 40, 40, 40, 40 }, |
28 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
30 | }; | 29 | }; |
31 | 30 | ||
32 | static struct platform_device scif0_device = { | 31 | static struct platform_device scif0_device = { |
@@ -44,6 +43,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
44 | .scbrr_algo_id = SCBRR_ALGO_1, | 43 | .scbrr_algo_id = SCBRR_ALGO_1, |
45 | .type = PORT_SCIF, | 44 | .type = PORT_SCIF, |
46 | .irqs = { 44, 44, 44, 44 }, | 45 | .irqs = { 44, 44, 44, 44 }, |
46 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
47 | }; | 47 | }; |
48 | 48 | ||
49 | static struct platform_device scif1_device = { | 49 | static struct platform_device scif1_device = { |
@@ -61,6 +61,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
61 | .scbrr_algo_id = SCBRR_ALGO_1, | 61 | .scbrr_algo_id = SCBRR_ALGO_1, |
62 | .type = PORT_SCIF, | 62 | .type = PORT_SCIF, |
63 | .irqs = { 60, 60, 60, 60 }, | 63 | .irqs = { 60, 60, 60, 60 }, |
64 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
64 | }; | 65 | }; |
65 | 66 | ||
66 | static struct platform_device scif2_device = { | 67 | static struct platform_device scif2_device = { |
@@ -78,6 +79,7 @@ static struct plat_sci_port scif3_platform_data = { | |||
78 | .scbrr_algo_id = SCBRR_ALGO_1, | 79 | .scbrr_algo_id = SCBRR_ALGO_1, |
79 | .type = PORT_SCIF, | 80 | .type = PORT_SCIF, |
80 | .irqs = { 61, 61, 61, 61 }, | 81 | .irqs = { 61, 61, 61, 61 }, |
82 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
81 | }; | 83 | }; |
82 | 84 | ||
83 | static struct platform_device scif3_device = { | 85 | static struct platform_device scif3_device = { |
@@ -95,6 +97,7 @@ static struct plat_sci_port scif4_platform_data = { | |||
95 | .scbrr_algo_id = SCBRR_ALGO_1, | 97 | .scbrr_algo_id = SCBRR_ALGO_1, |
96 | .type = PORT_SCIF, | 98 | .type = PORT_SCIF, |
97 | .irqs = { 62, 62, 62, 62 }, | 99 | .irqs = { 62, 62, 62, 62 }, |
100 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
98 | }; | 101 | }; |
99 | 102 | ||
100 | static struct platform_device scif4_device = { | 103 | static struct platform_device scif4_device = { |
@@ -112,6 +115,7 @@ static struct plat_sci_port scif5_platform_data = { | |||
112 | .scbrr_algo_id = SCBRR_ALGO_1, | 115 | .scbrr_algo_id = SCBRR_ALGO_1, |
113 | .type = PORT_SCIF, | 116 | .type = PORT_SCIF, |
114 | .irqs = { 63, 63, 63, 63 }, | 117 | .irqs = { 63, 63, 63, 63 }, |
118 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
115 | }; | 119 | }; |
116 | 120 | ||
117 | static struct platform_device scif5_device = { | 121 | static struct platform_device scif5_device = { |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c index beba32beb6d9..dd5e709f9821 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * SH7786 Setup | 2 | * SH7786 Setup |
3 | * | 3 | * |
4 | * Copyright (C) 2009 - 2010 Renesas Solutions Corp. | 4 | * Copyright (C) 2009 - 2011 Renesas Solutions Corp. |
5 | * Kuninori Morimoto <morimoto.kuninori@renesas.com> | 5 | * Kuninori Morimoto <morimoto.kuninori@renesas.com> |
6 | * Paul Mundt <paul.mundt@renesas.com> | 6 | * Paul Mundt <paul.mundt@renesas.com> |
7 | * | 7 | * |
@@ -33,6 +33,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
33 | .scbrr_algo_id = SCBRR_ALGO_1, | 33 | .scbrr_algo_id = SCBRR_ALGO_1, |
34 | .type = PORT_SCIF, | 34 | .type = PORT_SCIF, |
35 | .irqs = { 40, 41, 43, 42 }, | 35 | .irqs = { 40, 41, 43, 42 }, |
36 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
36 | }; | 37 | }; |
37 | 38 | ||
38 | static struct platform_device scif0_device = { | 39 | static struct platform_device scif0_device = { |
@@ -53,6 +54,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
53 | .scbrr_algo_id = SCBRR_ALGO_1, | 54 | .scbrr_algo_id = SCBRR_ALGO_1, |
54 | .type = PORT_SCIF, | 55 | .type = PORT_SCIF, |
55 | .irqs = { 44, 44, 44, 44 }, | 56 | .irqs = { 44, 44, 44, 44 }, |
57 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
56 | }; | 58 | }; |
57 | 59 | ||
58 | static struct platform_device scif1_device = { | 60 | static struct platform_device scif1_device = { |
@@ -70,6 +72,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
70 | .scbrr_algo_id = SCBRR_ALGO_1, | 72 | .scbrr_algo_id = SCBRR_ALGO_1, |
71 | .type = PORT_SCIF, | 73 | .type = PORT_SCIF, |
72 | .irqs = { 50, 50, 50, 50 }, | 74 | .irqs = { 50, 50, 50, 50 }, |
75 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
73 | }; | 76 | }; |
74 | 77 | ||
75 | static struct platform_device scif2_device = { | 78 | static struct platform_device scif2_device = { |
@@ -87,6 +90,7 @@ static struct plat_sci_port scif3_platform_data = { | |||
87 | .scbrr_algo_id = SCBRR_ALGO_1, | 90 | .scbrr_algo_id = SCBRR_ALGO_1, |
88 | .type = PORT_SCIF, | 91 | .type = PORT_SCIF, |
89 | .irqs = { 51, 51, 51, 51 }, | 92 | .irqs = { 51, 51, 51, 51 }, |
93 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
90 | }; | 94 | }; |
91 | 95 | ||
92 | static struct platform_device scif3_device = { | 96 | static struct platform_device scif3_device = { |
@@ -104,6 +108,7 @@ static struct plat_sci_port scif4_platform_data = { | |||
104 | .scbrr_algo_id = SCBRR_ALGO_1, | 108 | .scbrr_algo_id = SCBRR_ALGO_1, |
105 | .type = PORT_SCIF, | 109 | .type = PORT_SCIF, |
106 | .irqs = { 52, 52, 52, 52 }, | 110 | .irqs = { 52, 52, 52, 52 }, |
111 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
107 | }; | 112 | }; |
108 | 113 | ||
109 | static struct platform_device scif4_device = { | 114 | static struct platform_device scif4_device = { |
@@ -121,6 +126,7 @@ static struct plat_sci_port scif5_platform_data = { | |||
121 | .scbrr_algo_id = SCBRR_ALGO_1, | 126 | .scbrr_algo_id = SCBRR_ALGO_1, |
122 | .type = PORT_SCIF, | 127 | .type = PORT_SCIF, |
123 | .irqs = { 53, 53, 53, 53 }, | 128 | .irqs = { 53, 53, 53, 53 }, |
129 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | ||
124 | }; | 130 | }; |
125 | 131 | ||
126 | static struct platform_device scif5_device = { | 132 | static struct platform_device scif5_device = { |
diff --git a/arch/sh/kernel/cpu/shmobile/pm_runtime.c b/arch/sh/kernel/cpu/shmobile/pm_runtime.c index 6dcb8166a64d..bf280c812d2f 100644 --- a/arch/sh/kernel/cpu/shmobile/pm_runtime.c +++ b/arch/sh/kernel/cpu/shmobile/pm_runtime.c | |||
@@ -139,7 +139,7 @@ void platform_pm_runtime_suspend_idle(void) | |||
139 | queue_work(pm_wq, &hwblk_work); | 139 | queue_work(pm_wq, &hwblk_work); |
140 | } | 140 | } |
141 | 141 | ||
142 | int platform_pm_runtime_suspend(struct device *dev) | 142 | static int default_platform_runtime_suspend(struct device *dev) |
143 | { | 143 | { |
144 | struct platform_device *pdev = to_platform_device(dev); | 144 | struct platform_device *pdev = to_platform_device(dev); |
145 | struct pdev_archdata *ad = &pdev->archdata; | 145 | struct pdev_archdata *ad = &pdev->archdata; |
@@ -147,7 +147,7 @@ int platform_pm_runtime_suspend(struct device *dev) | |||
147 | int hwblk = ad->hwblk_id; | 147 | int hwblk = ad->hwblk_id; |
148 | int ret = 0; | 148 | int ret = 0; |
149 | 149 | ||
150 | dev_dbg(dev, "platform_pm_runtime_suspend() [%d]\n", hwblk); | 150 | dev_dbg(dev, "%s() [%d]\n", __func__, hwblk); |
151 | 151 | ||
152 | /* ignore off-chip platform devices */ | 152 | /* ignore off-chip platform devices */ |
153 | if (!hwblk) | 153 | if (!hwblk) |
@@ -157,7 +157,7 @@ int platform_pm_runtime_suspend(struct device *dev) | |||
157 | might_sleep(); | 157 | might_sleep(); |
158 | 158 | ||
159 | /* catch misconfigured drivers not starting with resume */ | 159 | /* catch misconfigured drivers not starting with resume */ |
160 | if (test_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags)) { | 160 | if (test_bit(PDEV_ARCHDATA_FLAG_INIT, &ad->flags)) { |
161 | ret = -EINVAL; | 161 | ret = -EINVAL; |
162 | goto out; | 162 | goto out; |
163 | } | 163 | } |
@@ -170,8 +170,8 @@ int platform_pm_runtime_suspend(struct device *dev) | |||
170 | 170 | ||
171 | /* put device on idle list */ | 171 | /* put device on idle list */ |
172 | spin_lock_irqsave(&hwblk_lock, flags); | 172 | spin_lock_irqsave(&hwblk_lock, flags); |
173 | list_add_tail(&pdev->archdata.entry, &hwblk_idle_list); | 173 | list_add_tail(&ad->entry, &hwblk_idle_list); |
174 | __set_bit(PDEV_ARCHDATA_FLAG_IDLE, &pdev->archdata.flags); | 174 | __set_bit(PDEV_ARCHDATA_FLAG_IDLE, &ad->flags); |
175 | spin_unlock_irqrestore(&hwblk_lock, flags); | 175 | spin_unlock_irqrestore(&hwblk_lock, flags); |
176 | 176 | ||
177 | /* increase idle count */ | 177 | /* increase idle count */ |
@@ -183,20 +183,20 @@ int platform_pm_runtime_suspend(struct device *dev) | |||
183 | mutex_unlock(&ad->mutex); | 183 | mutex_unlock(&ad->mutex); |
184 | 184 | ||
185 | out: | 185 | out: |
186 | dev_dbg(dev, "platform_pm_runtime_suspend() [%d] returns %d\n", | 186 | dev_dbg(dev, "%s() [%d] returns %d\n", |
187 | hwblk, ret); | 187 | __func__, hwblk, ret); |
188 | 188 | ||
189 | return ret; | 189 | return ret; |
190 | } | 190 | } |
191 | 191 | ||
192 | int platform_pm_runtime_resume(struct device *dev) | 192 | static int default_platform_runtime_resume(struct device *dev) |
193 | { | 193 | { |
194 | struct platform_device *pdev = to_platform_device(dev); | 194 | struct platform_device *pdev = to_platform_device(dev); |
195 | struct pdev_archdata *ad = &pdev->archdata; | 195 | struct pdev_archdata *ad = &pdev->archdata; |
196 | int hwblk = ad->hwblk_id; | 196 | int hwblk = ad->hwblk_id; |
197 | int ret = 0; | 197 | int ret = 0; |
198 | 198 | ||
199 | dev_dbg(dev, "platform_pm_runtime_resume() [%d]\n", hwblk); | 199 | dev_dbg(dev, "%s() [%d]\n", __func__, hwblk); |
200 | 200 | ||
201 | /* ignore off-chip platform devices */ | 201 | /* ignore off-chip platform devices */ |
202 | if (!hwblk) | 202 | if (!hwblk) |
@@ -228,19 +228,19 @@ int platform_pm_runtime_resume(struct device *dev) | |||
228 | */ | 228 | */ |
229 | mutex_unlock(&ad->mutex); | 229 | mutex_unlock(&ad->mutex); |
230 | out: | 230 | out: |
231 | dev_dbg(dev, "platform_pm_runtime_resume() [%d] returns %d\n", | 231 | dev_dbg(dev, "%s() [%d] returns %d\n", |
232 | hwblk, ret); | 232 | __func__, hwblk, ret); |
233 | 233 | ||
234 | return ret; | 234 | return ret; |
235 | } | 235 | } |
236 | 236 | ||
237 | int platform_pm_runtime_idle(struct device *dev) | 237 | static int default_platform_runtime_idle(struct device *dev) |
238 | { | 238 | { |
239 | struct platform_device *pdev = to_platform_device(dev); | 239 | struct platform_device *pdev = to_platform_device(dev); |
240 | int hwblk = pdev->archdata.hwblk_id; | 240 | int hwblk = pdev->archdata.hwblk_id; |
241 | int ret = 0; | 241 | int ret = 0; |
242 | 242 | ||
243 | dev_dbg(dev, "platform_pm_runtime_idle() [%d]\n", hwblk); | 243 | dev_dbg(dev, "%s() [%d]\n", __func__, hwblk); |
244 | 244 | ||
245 | /* ignore off-chip platform devices */ | 245 | /* ignore off-chip platform devices */ |
246 | if (!hwblk) | 246 | if (!hwblk) |
@@ -252,10 +252,19 @@ int platform_pm_runtime_idle(struct device *dev) | |||
252 | /* suspend synchronously to disable clocks immediately */ | 252 | /* suspend synchronously to disable clocks immediately */ |
253 | ret = pm_runtime_suspend(dev); | 253 | ret = pm_runtime_suspend(dev); |
254 | out: | 254 | out: |
255 | dev_dbg(dev, "platform_pm_runtime_idle() [%d] done!\n", hwblk); | 255 | dev_dbg(dev, "%s() [%d] done!\n", __func__, hwblk); |
256 | return ret; | 256 | return ret; |
257 | } | 257 | } |
258 | 258 | ||
259 | static struct dev_pm_domain default_pm_domain = { | ||
260 | .ops = { | ||
261 | .runtime_suspend = default_platform_runtime_suspend, | ||
262 | .runtime_resume = default_platform_runtime_resume, | ||
263 | .runtime_idle = default_platform_runtime_idle, | ||
264 | USE_PLATFORM_PM_SLEEP_OPS | ||
265 | }, | ||
266 | }; | ||
267 | |||
259 | static int platform_bus_notify(struct notifier_block *nb, | 268 | static int platform_bus_notify(struct notifier_block *nb, |
260 | unsigned long action, void *data) | 269 | unsigned long action, void *data) |
261 | { | 270 | { |
@@ -276,6 +285,7 @@ static int platform_bus_notify(struct notifier_block *nb, | |||
276 | hwblk_disable(hwblk_info, hwblk); | 285 | hwblk_disable(hwblk_info, hwblk); |
277 | /* make sure driver re-inits itself once */ | 286 | /* make sure driver re-inits itself once */ |
278 | __set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags); | 287 | __set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags); |
288 | dev->pm_domain = &default_pm_domain; | ||
279 | break; | 289 | break; |
280 | /* TODO: add BUS_NOTIFY_BIND_DRIVER and increase idle count */ | 290 | /* TODO: add BUS_NOTIFY_BIND_DRIVER and increase idle count */ |
281 | case BUS_NOTIFY_BOUND_DRIVER: | 291 | case BUS_NOTIFY_BOUND_DRIVER: |
@@ -289,6 +299,7 @@ static int platform_bus_notify(struct notifier_block *nb, | |||
289 | __set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags); | 299 | __set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags); |
290 | break; | 300 | break; |
291 | case BUS_NOTIFY_DEL_DEVICE: | 301 | case BUS_NOTIFY_DEL_DEVICE: |
302 | dev->pm_domain = NULL; | ||
292 | break; | 303 | break; |
293 | } | 304 | } |
294 | return 0; | 305 | return 0; |
diff --git a/arch/sh/kernel/dumpstack.c b/arch/sh/kernel/dumpstack.c index 6f5ad1513409..694158b9a50f 100644 --- a/arch/sh/kernel/dumpstack.c +++ b/arch/sh/kernel/dumpstack.c | |||
@@ -69,19 +69,6 @@ stack_reader_dump(struct task_struct *task, struct pt_regs *regs, | |||
69 | } | 69 | } |
70 | } | 70 | } |
71 | 71 | ||
72 | static void | ||
73 | print_trace_warning_symbol(void *data, char *msg, unsigned long symbol) | ||
74 | { | ||
75 | printk(data); | ||
76 | print_symbol(msg, symbol); | ||
77 | printk("\n"); | ||
78 | } | ||
79 | |||
80 | static void print_trace_warning(void *data, char *msg) | ||
81 | { | ||
82 | printk("%s%s\n", (char *)data, msg); | ||
83 | } | ||
84 | |||
85 | static int print_trace_stack(void *data, char *name) | 72 | static int print_trace_stack(void *data, char *name) |
86 | { | 73 | { |
87 | printk("%s <%s> ", (char *)data, name); | 74 | printk("%s <%s> ", (char *)data, name); |
@@ -98,8 +85,6 @@ static void print_trace_address(void *data, unsigned long addr, int reliable) | |||
98 | } | 85 | } |
99 | 86 | ||
100 | static const struct stacktrace_ops print_trace_ops = { | 87 | static const struct stacktrace_ops print_trace_ops = { |
101 | .warning = print_trace_warning, | ||
102 | .warning_symbol = print_trace_warning_symbol, | ||
103 | .stack = print_trace_stack, | 88 | .stack = print_trace_stack, |
104 | .address = print_trace_address, | 89 | .address = print_trace_address, |
105 | }; | 90 | }; |
diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c index 425d604e3a28..32114e0941ae 100644 --- a/arch/sh/kernel/idle.c +++ b/arch/sh/kernel/idle.c | |||
@@ -16,12 +16,13 @@ | |||
16 | #include <linux/thread_info.h> | 16 | #include <linux/thread_info.h> |
17 | #include <linux/irqflags.h> | 17 | #include <linux/irqflags.h> |
18 | #include <linux/smp.h> | 18 | #include <linux/smp.h> |
19 | #include <linux/cpuidle.h> | ||
19 | #include <asm/pgalloc.h> | 20 | #include <asm/pgalloc.h> |
20 | #include <asm/system.h> | 21 | #include <asm/system.h> |
21 | #include <asm/atomic.h> | 22 | #include <linux/atomic.h> |
22 | #include <asm/smp.h> | 23 | #include <asm/smp.h> |
23 | 24 | ||
24 | void (*pm_idle)(void) = NULL; | 25 | static void (*pm_idle)(void); |
25 | 26 | ||
26 | static int hlt_counter; | 27 | static int hlt_counter; |
27 | 28 | ||
@@ -100,7 +101,8 @@ void cpu_idle(void) | |||
100 | local_irq_disable(); | 101 | local_irq_disable(); |
101 | /* Don't trace irqs off for idle */ | 102 | /* Don't trace irqs off for idle */ |
102 | stop_critical_timings(); | 103 | stop_critical_timings(); |
103 | pm_idle(); | 104 | if (cpuidle_idle_call()) |
105 | pm_idle(); | ||
104 | /* | 106 | /* |
105 | * Sanity check to ensure that pm_idle() returns | 107 | * Sanity check to ensure that pm_idle() returns |
106 | * with IRQs enabled | 108 | * with IRQs enabled |
diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c index 32c385ef1011..0f62f4672754 100644 --- a/arch/sh/kernel/io_trapped.c +++ b/arch/sh/kernel/io_trapped.c | |||
@@ -58,7 +58,7 @@ int register_trapped_io(struct trapped_io *tiop) | |||
58 | 58 | ||
59 | for (k = 0; k < tiop->num_resources; k++) { | 59 | for (k = 0; k < tiop->num_resources; k++) { |
60 | res = tiop->resource + k; | 60 | res = tiop->resource + k; |
61 | len += roundup((res->end - res->start) + 1, PAGE_SIZE); | 61 | len += roundup(resource_size(res), PAGE_SIZE); |
62 | flags |= res->flags; | 62 | flags |= res->flags; |
63 | } | 63 | } |
64 | 64 | ||
@@ -85,7 +85,7 @@ int register_trapped_io(struct trapped_io *tiop) | |||
85 | (unsigned long)(tiop->virt_base + len), | 85 | (unsigned long)(tiop->virt_base + len), |
86 | res->flags & IORESOURCE_IO ? "io" : "mmio", | 86 | res->flags & IORESOURCE_IO ? "io" : "mmio", |
87 | (unsigned long)res->start); | 87 | (unsigned long)res->start); |
88 | len += roundup((res->end - res->start) + 1, PAGE_SIZE); | 88 | len += roundup(resource_size(res), PAGE_SIZE); |
89 | } | 89 | } |
90 | 90 | ||
91 | tiop->magic = IO_TRAPPED_MAGIC; | 91 | tiop->magic = IO_TRAPPED_MAGIC; |
@@ -128,7 +128,7 @@ void __iomem *match_trapped_io_handler(struct list_head *list, | |||
128 | return tiop->virt_base + voffs; | 128 | return tiop->virt_base + voffs; |
129 | } | 129 | } |
130 | 130 | ||
131 | len = (res->end - res->start) + 1; | 131 | len = resource_size(res); |
132 | voffs += roundup(len, PAGE_SIZE); | 132 | voffs += roundup(len, PAGE_SIZE); |
133 | } | 133 | } |
134 | } | 134 | } |
@@ -173,7 +173,7 @@ static unsigned long lookup_address(struct trapped_io *tiop, | |||
173 | 173 | ||
174 | for (k = 0; k < tiop->num_resources; k++) { | 174 | for (k = 0; k < tiop->num_resources; k++) { |
175 | res = tiop->resource + k; | 175 | res = tiop->resource + k; |
176 | len = roundup((res->end - res->start) + 1, PAGE_SIZE); | 176 | len = roundup(resource_size(res), PAGE_SIZE); |
177 | if (address < (vaddr + len)) | 177 | if (address < (vaddr + len)) |
178 | return res->start + (address - vaddr); | 178 | return res->start + (address - vaddr); |
179 | vaddr += len; | 179 | vaddr += len; |
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c index 91971103b62b..a3ee91971129 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/seq_file.h> | 13 | #include <linux/seq_file.h> |
14 | #include <linux/ftrace.h> | 14 | #include <linux/ftrace.h> |
15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
16 | #include <linux/ratelimit.h> | ||
16 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
17 | #include <asm/machvec.h> | 18 | #include <asm/machvec.h> |
18 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
@@ -268,9 +269,8 @@ void migrate_irqs(void) | |||
268 | unsigned int newcpu = cpumask_any_and(data->affinity, | 269 | unsigned int newcpu = cpumask_any_and(data->affinity, |
269 | cpu_online_mask); | 270 | cpu_online_mask); |
270 | if (newcpu >= nr_cpu_ids) { | 271 | if (newcpu >= nr_cpu_ids) { |
271 | if (printk_ratelimit()) | 272 | pr_info_ratelimited("IRQ%u no longer affine to CPU%u\n", |
272 | printk(KERN_INFO "IRQ%u no longer affine to CPU%u\n", | 273 | irq, cpu); |
273 | irq, cpu); | ||
274 | 274 | ||
275 | cpumask_setall(data->affinity); | 275 | cpumask_setall(data->affinity); |
276 | newcpu = cpumask_any_and(data->affinity, | 276 | newcpu = cpumask_any_and(data->affinity, |
diff --git a/arch/sh/kernel/machine_kexec.c b/arch/sh/kernel/machine_kexec.c index e2a3af31ff99..c5a33f007f88 100644 --- a/arch/sh/kernel/machine_kexec.c +++ b/arch/sh/kernel/machine_kexec.c | |||
@@ -170,7 +170,7 @@ void __init reserve_crashkernel(void) | |||
170 | if (crashk_res.end == crashk_res.start) | 170 | if (crashk_res.end == crashk_res.start) |
171 | goto disable; | 171 | goto disable; |
172 | 172 | ||
173 | crash_size = PAGE_ALIGN(crashk_res.end - crashk_res.start + 1); | 173 | crash_size = PAGE_ALIGN(resource_size(&crashk_res)); |
174 | if (!crashk_res.start) { | 174 | if (!crashk_res.start) { |
175 | unsigned long max = memblock_end_of_DRAM() - memory_limit; | 175 | unsigned long max = memblock_end_of_DRAM() - memory_limit; |
176 | crashk_res.start = __memblock_alloc_base(crash_size, PAGE_SIZE, max); | 176 | crashk_res.start = __memblock_alloc_base(crash_size, PAGE_SIZE, max); |
diff --git a/arch/sh/kernel/module.c b/arch/sh/kernel/module.c index ae0be697a89e..1b525dedd29a 100644 --- a/arch/sh/kernel/module.c +++ b/arch/sh/kernel/module.c | |||
@@ -34,30 +34,6 @@ | |||
34 | #include <asm/unaligned.h> | 34 | #include <asm/unaligned.h> |
35 | #include <asm/dwarf.h> | 35 | #include <asm/dwarf.h> |
36 | 36 | ||
37 | void *module_alloc(unsigned long size) | ||
38 | { | ||
39 | if (size == 0) | ||
40 | return NULL; | ||
41 | |||
42 | return vmalloc_exec(size); | ||
43 | } | ||
44 | |||
45 | |||
46 | /* Free memory returned from module_alloc */ | ||
47 | void module_free(struct module *mod, void *module_region) | ||
48 | { | ||
49 | vfree(module_region); | ||
50 | } | ||
51 | |||
52 | /* We don't need anything special. */ | ||
53 | int module_frob_arch_sections(Elf_Ehdr *hdr, | ||
54 | Elf_Shdr *sechdrs, | ||
55 | char *secstrings, | ||
56 | struct module *mod) | ||
57 | { | ||
58 | return 0; | ||
59 | } | ||
60 | |||
61 | int apply_relocate_add(Elf32_Shdr *sechdrs, | 37 | int apply_relocate_add(Elf32_Shdr *sechdrs, |
62 | const char *strtab, | 38 | const char *strtab, |
63 | unsigned int symindex, | 39 | unsigned int symindex, |
@@ -93,6 +69,8 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, | |||
93 | #endif | 69 | #endif |
94 | 70 | ||
95 | switch (ELF32_R_TYPE(rel[i].r_info)) { | 71 | switch (ELF32_R_TYPE(rel[i].r_info)) { |
72 | case R_SH_NONE: | ||
73 | break; | ||
96 | case R_SH_DIR32: | 74 | case R_SH_DIR32: |
97 | value = get_unaligned(location); | 75 | value = get_unaligned(location); |
98 | value += relocation; | 76 | value += relocation; |
@@ -131,17 +109,6 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, | |||
131 | return 0; | 109 | return 0; |
132 | } | 110 | } |
133 | 111 | ||
134 | int apply_relocate(Elf32_Shdr *sechdrs, | ||
135 | const char *strtab, | ||
136 | unsigned int symindex, | ||
137 | unsigned int relsec, | ||
138 | struct module *me) | ||
139 | { | ||
140 | printk(KERN_ERR "module %s: REL RELOCATION unsupported\n", | ||
141 | me->name); | ||
142 | return -ENOEXEC; | ||
143 | } | ||
144 | |||
145 | int module_finalize(const Elf_Ehdr *hdr, | 112 | int module_finalize(const Elf_Ehdr *hdr, |
146 | const Elf_Shdr *sechdrs, | 113 | const Elf_Shdr *sechdrs, |
147 | struct module *me) | 114 | struct module *me) |
diff --git a/arch/sh/kernel/perf_callchain.c b/arch/sh/kernel/perf_callchain.c index d5ca1ef50fa9..cc80b614b5fa 100644 --- a/arch/sh/kernel/perf_callchain.c +++ b/arch/sh/kernel/perf_callchain.c | |||
@@ -14,16 +14,6 @@ | |||
14 | #include <asm/unwinder.h> | 14 | #include <asm/unwinder.h> |
15 | #include <asm/ptrace.h> | 15 | #include <asm/ptrace.h> |
16 | 16 | ||
17 | |||
18 | static void callchain_warning(void *data, char *msg) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | static void | ||
23 | callchain_warning_symbol(void *data, char *msg, unsigned long symbol) | ||
24 | { | ||
25 | } | ||
26 | |||
27 | static int callchain_stack(void *data, char *name) | 17 | static int callchain_stack(void *data, char *name) |
28 | { | 18 | { |
29 | return 0; | 19 | return 0; |
@@ -38,8 +28,6 @@ static void callchain_address(void *data, unsigned long addr, int reliable) | |||
38 | } | 28 | } |
39 | 29 | ||
40 | static const struct stacktrace_ops callchain_ops = { | 30 | static const struct stacktrace_ops callchain_ops = { |
41 | .warning = callchain_warning, | ||
42 | .warning_symbol = callchain_warning_symbol, | ||
43 | .stack = callchain_stack, | 31 | .stack = callchain_stack, |
44 | .address = callchain_address, | 32 | .address = callchain_address, |
45 | }; | 33 | }; |
diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c index 762a13984bbd..aaf6d59c2012 100644 --- a/arch/sh/kernel/process_32.c +++ b/arch/sh/kernel/process_32.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/fs.h> | 21 | #include <linux/fs.h> |
22 | #include <linux/ftrace.h> | 22 | #include <linux/ftrace.h> |
23 | #include <linux/hw_breakpoint.h> | 23 | #include <linux/hw_breakpoint.h> |
24 | #include <linux/prefetch.h> | ||
24 | #include <asm/uaccess.h> | 25 | #include <asm/uaccess.h> |
25 | #include <asm/mmu_context.h> | 26 | #include <asm/mmu_context.h> |
26 | #include <asm/system.h> | 27 | #include <asm/system.h> |
@@ -101,8 +102,6 @@ EXPORT_SYMBOL(kernel_thread); | |||
101 | void start_thread(struct pt_regs *regs, unsigned long new_pc, | 102 | void start_thread(struct pt_regs *regs, unsigned long new_pc, |
102 | unsigned long new_sp) | 103 | unsigned long new_sp) |
103 | { | 104 | { |
104 | set_fs(USER_DS); | ||
105 | |||
106 | regs->pr = 0; | 105 | regs->pr = 0; |
107 | regs->sr = SR_FD; | 106 | regs->sr = SR_FD; |
108 | regs->pc = new_pc; | 107 | regs->pc = new_pc; |
diff --git a/arch/sh/kernel/ptrace_32.c b/arch/sh/kernel/ptrace_32.c index 3d7b209b2178..92b3c276339a 100644 --- a/arch/sh/kernel/ptrace_32.c +++ b/arch/sh/kernel/ptrace_32.c | |||
@@ -63,7 +63,7 @@ static inline int put_stack_long(struct task_struct *task, int offset, | |||
63 | return 0; | 63 | return 0; |
64 | } | 64 | } |
65 | 65 | ||
66 | void ptrace_triggered(struct perf_event *bp, int nmi, | 66 | void ptrace_triggered(struct perf_event *bp, |
67 | struct perf_sample_data *data, struct pt_regs *regs) | 67 | struct perf_sample_data *data, struct pt_regs *regs) |
68 | { | 68 | { |
69 | struct perf_event_attr attr; | 69 | struct perf_event_attr attr; |
@@ -91,7 +91,8 @@ static int set_single_step(struct task_struct *tsk, unsigned long addr) | |||
91 | attr.bp_len = HW_BREAKPOINT_LEN_2; | 91 | attr.bp_len = HW_BREAKPOINT_LEN_2; |
92 | attr.bp_type = HW_BREAKPOINT_R; | 92 | attr.bp_type = HW_BREAKPOINT_R; |
93 | 93 | ||
94 | bp = register_user_hw_breakpoint(&attr, ptrace_triggered, tsk); | 94 | bp = register_user_hw_breakpoint(&attr, ptrace_triggered, |
95 | NULL, tsk); | ||
95 | if (IS_ERR(bp)) | 96 | if (IS_ERR(bp)) |
96 | return PTR_ERR(bp); | 97 | return PTR_ERR(bp); |
97 | 98 | ||
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 509b36b45115..3147a9a6fb8b 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
@@ -20,7 +20,8 @@ | |||
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/cpu.h> | 21 | #include <linux/cpu.h> |
22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
23 | #include <asm/atomic.h> | 23 | #include <linux/sched.h> |
24 | #include <linux/atomic.h> | ||
24 | #include <asm/processor.h> | 25 | #include <asm/processor.h> |
25 | #include <asm/system.h> | 26 | #include <asm/system.h> |
26 | #include <asm/mmu_context.h> | 27 | #include <asm/mmu_context.h> |
@@ -323,6 +324,7 @@ void smp_message_recv(unsigned int msg) | |||
323 | generic_smp_call_function_interrupt(); | 324 | generic_smp_call_function_interrupt(); |
324 | break; | 325 | break; |
325 | case SMP_MSG_RESCHEDULE: | 326 | case SMP_MSG_RESCHEDULE: |
327 | scheduler_ipi(); | ||
326 | break; | 328 | break; |
327 | case SMP_MSG_FUNCTION_SINGLE: | 329 | case SMP_MSG_FUNCTION_SINGLE: |
328 | generic_smp_call_function_single_interrupt(); | 330 | generic_smp_call_function_single_interrupt(); |
diff --git a/arch/sh/kernel/stacktrace.c b/arch/sh/kernel/stacktrace.c index c2e45c48409c..bf989e063a0c 100644 --- a/arch/sh/kernel/stacktrace.c +++ b/arch/sh/kernel/stacktrace.c | |||
@@ -17,15 +17,6 @@ | |||
17 | #include <asm/ptrace.h> | 17 | #include <asm/ptrace.h> |
18 | #include <asm/stacktrace.h> | 18 | #include <asm/stacktrace.h> |
19 | 19 | ||
20 | static void save_stack_warning(void *data, char *msg) | ||
21 | { | ||
22 | } | ||
23 | |||
24 | static void | ||
25 | save_stack_warning_symbol(void *data, char *msg, unsigned long symbol) | ||
26 | { | ||
27 | } | ||
28 | |||
29 | static int save_stack_stack(void *data, char *name) | 20 | static int save_stack_stack(void *data, char *name) |
30 | { | 21 | { |
31 | return 0; | 22 | return 0; |
@@ -51,8 +42,6 @@ static void save_stack_address(void *data, unsigned long addr, int reliable) | |||
51 | } | 42 | } |
52 | 43 | ||
53 | static const struct stacktrace_ops save_stack_ops = { | 44 | static const struct stacktrace_ops save_stack_ops = { |
54 | .warning = save_stack_warning, | ||
55 | .warning_symbol = save_stack_warning_symbol, | ||
56 | .stack = save_stack_stack, | 45 | .stack = save_stack_stack, |
57 | .address = save_stack_address, | 46 | .address = save_stack_address, |
58 | }; | 47 | }; |
@@ -88,8 +77,6 @@ save_stack_address_nosched(void *data, unsigned long addr, int reliable) | |||
88 | } | 77 | } |
89 | 78 | ||
90 | static const struct stacktrace_ops save_stack_ops_nosched = { | 79 | static const struct stacktrace_ops save_stack_ops_nosched = { |
91 | .warning = save_stack_warning, | ||
92 | .warning_symbol = save_stack_warning_symbol, | ||
93 | .stack = save_stack_stack, | 80 | .stack = save_stack_stack, |
94 | .address = save_stack_address_nosched, | 81 | .address = save_stack_address_nosched, |
95 | }; | 82 | }; |
diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S index 030966a9305c..293e39c59c00 100644 --- a/arch/sh/kernel/syscalls_32.S +++ b/arch/sh/kernel/syscalls_32.S | |||
@@ -185,7 +185,7 @@ ENTRY(sys_call_table) | |||
185 | .long sys_ni_syscall /* vm86 */ | 185 | .long sys_ni_syscall /* vm86 */ |
186 | .long sys_ni_syscall /* old "query_module" */ | 186 | .long sys_ni_syscall /* old "query_module" */ |
187 | .long sys_poll | 187 | .long sys_poll |
188 | .long sys_nfsservctl | 188 | .long sys_ni_syscall /* was nfsservctl */ |
189 | .long sys_setresgid16 /* 170 */ | 189 | .long sys_setresgid16 /* 170 */ |
190 | .long sys_getresgid16 | 190 | .long sys_getresgid16 |
191 | .long sys_prctl | 191 | .long sys_prctl |
@@ -380,3 +380,5 @@ ENTRY(sys_call_table) | |||
380 | .long sys_open_by_handle_at /* 360 */ | 380 | .long sys_open_by_handle_at /* 360 */ |
381 | .long sys_clock_adjtime | 381 | .long sys_clock_adjtime |
382 | .long sys_syncfs | 382 | .long sys_syncfs |
383 | .long sys_sendmmsg | ||
384 | .long sys_setns | ||
diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S index ca0a6142ab63..ceb34b94afa9 100644 --- a/arch/sh/kernel/syscalls_64.S +++ b/arch/sh/kernel/syscalls_64.S | |||
@@ -189,7 +189,7 @@ sys_call_table: | |||
189 | .long sys_ni_syscall /* vm86 */ | 189 | .long sys_ni_syscall /* vm86 */ |
190 | .long sys_ni_syscall /* old "query_module" */ | 190 | .long sys_ni_syscall /* old "query_module" */ |
191 | .long sys_poll | 191 | .long sys_poll |
192 | .long sys_nfsservctl | 192 | .long sys_ni_syscall /* was nfsservctl */ |
193 | .long sys_setresgid16 /* 170 */ | 193 | .long sys_setresgid16 /* 170 */ |
194 | .long sys_getresgid16 | 194 | .long sys_getresgid16 |
195 | .long sys_prctl | 195 | .long sys_prctl |
@@ -400,3 +400,5 @@ sys_call_table: | |||
400 | .long sys_open_by_handle_at | 400 | .long sys_open_by_handle_at |
401 | .long sys_clock_adjtime | 401 | .long sys_clock_adjtime |
402 | .long sys_syncfs | 402 | .long sys_syncfs |
403 | .long sys_sendmmsg | ||
404 | .long sys_setns /* 375 */ | ||
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index 3484c2f65aba..d9006f8ffc14 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c | |||
@@ -87,7 +87,6 @@ void die(const char * str, struct pt_regs * regs, long err) | |||
87 | bust_spinlocks(1); | 87 | bust_spinlocks(1); |
88 | 88 | ||
89 | printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter); | 89 | printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter); |
90 | sysfs_printk_last_file(); | ||
91 | print_modules(); | 90 | print_modules(); |
92 | show_regs(regs); | 91 | show_regs(regs); |
93 | 92 | ||
@@ -394,7 +393,7 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | |||
394 | */ | 393 | */ |
395 | if (!expected) { | 394 | if (!expected) { |
396 | unaligned_fixups_notify(current, instruction, regs); | 395 | unaligned_fixups_notify(current, instruction, regs); |
397 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, 0, | 396 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, |
398 | regs, address); | 397 | regs, address); |
399 | } | 398 | } |
400 | 399 | ||
diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c index 6713ca97e553..cd3a40483299 100644 --- a/arch/sh/kernel/traps_64.c +++ b/arch/sh/kernel/traps_64.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <asm/system.h> | 28 | #include <asm/system.h> |
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <asm/io.h> | 30 | #include <asm/io.h> |
31 | #include <asm/atomic.h> | 31 | #include <linux/atomic.h> |
32 | #include <asm/processor.h> | 32 | #include <asm/processor.h> |
33 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
34 | #include <asm/fpu.h> | 34 | #include <asm/fpu.h> |
@@ -434,7 +434,7 @@ static int misaligned_load(struct pt_regs *regs, | |||
434 | return error; | 434 | return error; |
435 | } | 435 | } |
436 | 436 | ||
437 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, 0, regs, address); | 437 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, regs, address); |
438 | 438 | ||
439 | destreg = (opcode >> 4) & 0x3f; | 439 | destreg = (opcode >> 4) & 0x3f; |
440 | if (user_mode(regs)) { | 440 | if (user_mode(regs)) { |
@@ -512,7 +512,7 @@ static int misaligned_store(struct pt_regs *regs, | |||
512 | return error; | 512 | return error; |
513 | } | 513 | } |
514 | 514 | ||
515 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, 0, regs, address); | 515 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, regs, address); |
516 | 516 | ||
517 | srcreg = (opcode >> 4) & 0x3f; | 517 | srcreg = (opcode >> 4) & 0x3f; |
518 | if (user_mode(regs)) { | 518 | if (user_mode(regs)) { |
@@ -588,7 +588,7 @@ static int misaligned_fpu_load(struct pt_regs *regs, | |||
588 | return error; | 588 | return error; |
589 | } | 589 | } |
590 | 590 | ||
591 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, 0, regs, address); | 591 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, regs, address); |
592 | 592 | ||
593 | destreg = (opcode >> 4) & 0x3f; | 593 | destreg = (opcode >> 4) & 0x3f; |
594 | if (user_mode(regs)) { | 594 | if (user_mode(regs)) { |
@@ -665,7 +665,7 @@ static int misaligned_fpu_store(struct pt_regs *regs, | |||
665 | return error; | 665 | return error; |
666 | } | 666 | } |
667 | 667 | ||
668 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, 0, regs, address); | 668 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, regs, address); |
669 | 669 | ||
670 | srcreg = (opcode >> 4) & 0x3f; | 670 | srcreg = (opcode >> 4) & 0x3f; |
671 | if (user_mode(regs)) { | 671 | if (user_mode(regs)) { |
diff --git a/arch/sh/kernel/unwinder.c b/arch/sh/kernel/unwinder.c index 468889d958f4..521b5432471f 100644 --- a/arch/sh/kernel/unwinder.c +++ b/arch/sh/kernel/unwinder.c | |||
@@ -13,7 +13,7 @@ | |||
13 | #include <linux/spinlock.h> | 13 | #include <linux/spinlock.h> |
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <asm/unwinder.h> | 15 | #include <asm/unwinder.h> |
16 | #include <asm/atomic.h> | 16 | #include <linux/atomic.h> |
17 | 17 | ||
18 | /* | 18 | /* |
19 | * This is the most basic stack unwinder an architecture can | 19 | * This is the most basic stack unwinder an architecture can |
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S index af4d46187a79..731c10ce67b5 100644 --- a/arch/sh/kernel/vmlinux.lds.S +++ b/arch/sh/kernel/vmlinux.lds.S | |||
@@ -66,7 +66,7 @@ SECTIONS | |||
66 | __machvec_end = .; | 66 | __machvec_end = .; |
67 | } | 67 | } |
68 | 68 | ||
69 | PERCPU(L1_CACHE_BYTES, PAGE_SIZE) | 69 | PERCPU_SECTION(L1_CACHE_BYTES) |
70 | 70 | ||
71 | /* | 71 | /* |
72 | * .exit.text is discarded at runtime, not link time, to deal with | 72 | * .exit.text is discarded at runtime, not link time, to deal with |
diff --git a/arch/sh/math-emu/math.c b/arch/sh/math-emu/math.c index f76a5090d5d1..977195210653 100644 --- a/arch/sh/math-emu/math.c +++ b/arch/sh/math-emu/math.c | |||
@@ -620,7 +620,7 @@ int do_fpu_inst(unsigned short inst, struct pt_regs *regs) | |||
620 | struct task_struct *tsk = current; | 620 | struct task_struct *tsk = current; |
621 | struct sh_fpu_soft_struct *fpu = &(tsk->thread.xstate->softfpu); | 621 | struct sh_fpu_soft_struct *fpu = &(tsk->thread.xstate->softfpu); |
622 | 622 | ||
623 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, 0, regs, 0); | 623 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, regs, 0); |
624 | 624 | ||
625 | if (!(task_thread_info(tsk)->status & TS_USEDFPU)) { | 625 | if (!(task_thread_info(tsk)->status & TS_USEDFPU)) { |
626 | /* initialize once. */ | 626 | /* initialize once. */ |
diff --git a/arch/sh/mm/alignment.c b/arch/sh/mm/alignment.c index b2595b8548ee..620fa7ff9eec 100644 --- a/arch/sh/mm/alignment.c +++ b/arch/sh/mm/alignment.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/seq_file.h> | 13 | #include <linux/seq_file.h> |
14 | #include <linux/proc_fs.h> | 14 | #include <linux/proc_fs.h> |
15 | #include <linux/uaccess.h> | 15 | #include <linux/uaccess.h> |
16 | #include <linux/ratelimit.h> | ||
16 | #include <asm/alignment.h> | 17 | #include <asm/alignment.h> |
17 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
18 | 19 | ||
@@ -95,13 +96,13 @@ int set_unalign_ctl(struct task_struct *tsk, unsigned int val) | |||
95 | void unaligned_fixups_notify(struct task_struct *tsk, insn_size_t insn, | 96 | void unaligned_fixups_notify(struct task_struct *tsk, insn_size_t insn, |
96 | struct pt_regs *regs) | 97 | struct pt_regs *regs) |
97 | { | 98 | { |
98 | if (user_mode(regs) && (se_usermode & UM_WARN) && printk_ratelimit()) | 99 | if (user_mode(regs) && (se_usermode & UM_WARN)) |
99 | pr_notice("Fixing up unaligned userspace access " | 100 | pr_notice_ratelimited("Fixing up unaligned userspace access " |
100 | "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n", | 101 | "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n", |
101 | tsk->comm, task_pid_nr(tsk), | 102 | tsk->comm, task_pid_nr(tsk), |
102 | (void *)instruction_pointer(regs), insn); | 103 | (void *)instruction_pointer(regs), insn); |
103 | else if (se_kernmode_warn && printk_ratelimit()) | 104 | else if (se_kernmode_warn) |
104 | pr_notice("Fixing up unaligned kernel access " | 105 | pr_notice_ratelimited("Fixing up unaligned kernel access " |
105 | "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n", | 106 | "in \"%s\" pid=%d pc=0x%p ins=0x%04hx\n", |
106 | tsk->comm, task_pid_nr(tsk), | 107 | tsk->comm, task_pid_nr(tsk), |
107 | (void *)instruction_pointer(regs), insn); | 108 | (void *)instruction_pointer(regs), insn); |
diff --git a/arch/sh/mm/cache-debugfs.c b/arch/sh/mm/cache-debugfs.c index 52411462c409..115725198038 100644 --- a/arch/sh/mm/cache-debugfs.c +++ b/arch/sh/mm/cache-debugfs.c | |||
@@ -26,9 +26,9 @@ static int cache_seq_show(struct seq_file *file, void *iter) | |||
26 | { | 26 | { |
27 | unsigned int cache_type = (unsigned int)file->private; | 27 | unsigned int cache_type = (unsigned int)file->private; |
28 | struct cache_info *cache; | 28 | struct cache_info *cache; |
29 | unsigned int waysize, way, cache_size; | 29 | unsigned int waysize, way; |
30 | unsigned long ccr, base; | 30 | unsigned long ccr; |
31 | static unsigned long addrstart = 0; | 31 | unsigned long addrstart = 0; |
32 | 32 | ||
33 | /* | 33 | /* |
34 | * Go uncached immediately so we don't skew the results any | 34 | * Go uncached immediately so we don't skew the results any |
@@ -45,28 +45,13 @@ static int cache_seq_show(struct seq_file *file, void *iter) | |||
45 | } | 45 | } |
46 | 46 | ||
47 | if (cache_type == CACHE_TYPE_DCACHE) { | 47 | if (cache_type == CACHE_TYPE_DCACHE) { |
48 | base = CACHE_OC_ADDRESS_ARRAY; | 48 | addrstart = CACHE_OC_ADDRESS_ARRAY; |
49 | cache = ¤t_cpu_data.dcache; | 49 | cache = ¤t_cpu_data.dcache; |
50 | } else { | 50 | } else { |
51 | base = CACHE_IC_ADDRESS_ARRAY; | 51 | addrstart = CACHE_IC_ADDRESS_ARRAY; |
52 | cache = ¤t_cpu_data.icache; | 52 | cache = ¤t_cpu_data.icache; |
53 | } | 53 | } |
54 | 54 | ||
55 | /* | ||
56 | * Due to the amount of data written out (depending on the cache size), | ||
57 | * we may be iterated over multiple times. In this case, keep track of | ||
58 | * the entry position in addrstart, and rewind it when we've hit the | ||
59 | * end of the cache. | ||
60 | * | ||
61 | * Likewise, the same code is used for multiple caches, so care must | ||
62 | * be taken for bouncing addrstart back and forth so the appropriate | ||
63 | * cache is hit. | ||
64 | */ | ||
65 | cache_size = cache->ways * cache->sets * cache->linesz; | ||
66 | if (((addrstart & 0xff000000) != base) || | ||
67 | (addrstart & 0x00ffffff) > cache_size) | ||
68 | addrstart = base; | ||
69 | |||
70 | waysize = cache->sets; | 55 | waysize = cache->sets; |
71 | 56 | ||
72 | /* | 57 | /* |
diff --git a/arch/sh/mm/consistent.c b/arch/sh/mm/consistent.c index 40733a952402..f251b5f27652 100644 --- a/arch/sh/mm/consistent.c +++ b/arch/sh/mm/consistent.c | |||
@@ -82,7 +82,7 @@ void dma_cache_sync(struct device *dev, void *vaddr, size_t size, | |||
82 | void *addr; | 82 | void *addr; |
83 | 83 | ||
84 | addr = __in_29bit_mode() ? | 84 | addr = __in_29bit_mode() ? |
85 | (void *)P1SEGADDR((unsigned long)vaddr) : vaddr; | 85 | (void *)CAC_ADDR((unsigned long)vaddr) : vaddr; |
86 | 86 | ||
87 | switch (direction) { | 87 | switch (direction) { |
88 | case DMA_FROM_DEVICE: /* invalidate only */ | 88 | case DMA_FROM_DEVICE: /* invalidate only */ |
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c index d4c34d757f0d..7bebd044f2a1 100644 --- a/arch/sh/mm/fault_32.c +++ b/arch/sh/mm/fault_32.c | |||
@@ -160,7 +160,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, | |||
160 | if ((regs->sr & SR_IMASK) != SR_IMASK) | 160 | if ((regs->sr & SR_IMASK) != SR_IMASK) |
161 | local_irq_enable(); | 161 | local_irq_enable(); |
162 | 162 | ||
163 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address); | 163 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); |
164 | 164 | ||
165 | /* | 165 | /* |
166 | * If we're in an interrupt, have no user context or are running | 166 | * If we're in an interrupt, have no user context or are running |
@@ -210,11 +210,11 @@ good_area: | |||
210 | } | 210 | } |
211 | if (fault & VM_FAULT_MAJOR) { | 211 | if (fault & VM_FAULT_MAJOR) { |
212 | tsk->maj_flt++; | 212 | tsk->maj_flt++; |
213 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0, | 213 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, |
214 | regs, address); | 214 | regs, address); |
215 | } else { | 215 | } else { |
216 | tsk->min_flt++; | 216 | tsk->min_flt++; |
217 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0, | 217 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, |
218 | regs, address); | 218 | regs, address); |
219 | } | 219 | } |
220 | 220 | ||
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index 0d3f912e3334..58a93fb3d965 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/cache.h> | 28 | #include <asm/cache.h> |
29 | #include <asm/sizes.h> | 29 | #include <asm/sizes.h> |
30 | 30 | ||
31 | DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); | ||
32 | pgd_t swapper_pg_dir[PTRS_PER_PGD]; | 31 | pgd_t swapper_pg_dir[PTRS_PER_PGD]; |
33 | 32 | ||
34 | void __init generic_mem_init(void) | 33 | void __init generic_mem_init(void) |
diff --git a/arch/sh/mm/tlbflush_64.c b/arch/sh/mm/tlbflush_64.c index 7f5810f5dfdc..e3430e093d43 100644 --- a/arch/sh/mm/tlbflush_64.c +++ b/arch/sh/mm/tlbflush_64.c | |||
@@ -116,7 +116,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess, | |||
116 | /* Not an IO address, so reenable interrupts */ | 116 | /* Not an IO address, so reenable interrupts */ |
117 | local_irq_enable(); | 117 | local_irq_enable(); |
118 | 118 | ||
119 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address); | 119 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); |
120 | 120 | ||
121 | /* | 121 | /* |
122 | * If we're in an interrupt or have no user | 122 | * If we're in an interrupt or have no user |
@@ -200,11 +200,11 @@ good_area: | |||
200 | 200 | ||
201 | if (fault & VM_FAULT_MAJOR) { | 201 | if (fault & VM_FAULT_MAJOR) { |
202 | tsk->maj_flt++; | 202 | tsk->maj_flt++; |
203 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0, | 203 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, |
204 | regs, address); | 204 | regs, address); |
205 | } else { | 205 | } else { |
206 | tsk->min_flt++; | 206 | tsk->min_flt++; |
207 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0, | 207 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, |
208 | regs, address); | 208 | regs, address); |
209 | } | 209 | } |
210 | 210 | ||
diff --git a/arch/sh/oprofile/backtrace.c b/arch/sh/oprofile/backtrace.c index 37f3a75ea6cb..9c88dcd56e86 100644 --- a/arch/sh/oprofile/backtrace.c +++ b/arch/sh/oprofile/backtrace.c | |||
@@ -23,17 +23,6 @@ | |||
23 | #include <asm/sections.h> | 23 | #include <asm/sections.h> |
24 | #include <asm/stacktrace.h> | 24 | #include <asm/stacktrace.h> |
25 | 25 | ||
26 | static void backtrace_warning_symbol(void *data, char *msg, | ||
27 | unsigned long symbol) | ||
28 | { | ||
29 | /* Ignore warnings */ | ||
30 | } | ||
31 | |||
32 | static void backtrace_warning(void *data, char *msg) | ||
33 | { | ||
34 | /* Ignore warnings */ | ||
35 | } | ||
36 | |||
37 | static int backtrace_stack(void *data, char *name) | 26 | static int backtrace_stack(void *data, char *name) |
38 | { | 27 | { |
39 | /* Yes, we want all stacks */ | 28 | /* Yes, we want all stacks */ |
@@ -49,8 +38,6 @@ static void backtrace_address(void *data, unsigned long addr, int reliable) | |||
49 | } | 38 | } |
50 | 39 | ||
51 | static struct stacktrace_ops backtrace_ops = { | 40 | static struct stacktrace_ops backtrace_ops = { |
52 | .warning = backtrace_warning, | ||
53 | .warning_symbol = backtrace_warning_symbol, | ||
54 | .stack = backtrace_stack, | 41 | .stack = backtrace_stack, |
55 | .address = backtrace_address, | 42 | .address = backtrace_address, |
56 | }; | 43 | }; |