diff options
Diffstat (limited to 'arch/sh')
110 files changed, 578 insertions, 654 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index bbdeb48bbf8e..5629e2099130 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 |
@@ -100,10 +101,6 @@ config GENERIC_LOCKBREAK | |||
100 | def_bool y | 101 | def_bool y |
101 | depends on SMP && PREEMPT | 102 | depends on SMP && PREEMPT |
102 | 103 | ||
103 | config SYS_SUPPORTS_PM | ||
104 | bool | ||
105 | depends on !SMP | ||
106 | |||
107 | config ARCH_SUSPEND_POSSIBLE | 104 | config ARCH_SUSPEND_POSSIBLE |
108 | def_bool n | 105 | def_bool n |
109 | 106 | ||
@@ -648,7 +645,7 @@ config CRASH_DUMP | |||
648 | a specially reserved region and then later executed after | 645 | a specially reserved region and then later executed after |
649 | a crash by kdump/kexec. The crash dump kernel must be compiled | 646 | a crash by kdump/kexec. The crash dump kernel must be compiled |
650 | to a memory address not used by the main kernel using | 647 | to a memory address not used by the main kernel using |
651 | MEMORY_START. | 648 | PHYSICAL_START. |
652 | 649 | ||
653 | For more details see Documentation/kdump/kdump.txt | 650 | For more details see Documentation/kdump/kdump.txt |
654 | 651 | ||
@@ -659,6 +656,17 @@ config KEXEC_JUMP | |||
659 | Jump between original kernel and kexeced kernel and invoke | 656 | Jump between original kernel and kexeced kernel and invoke |
660 | code via KEXEC | 657 | code via KEXEC |
661 | 658 | ||
659 | config PHYSICAL_START | ||
660 | hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP) | ||
661 | default MEMORY_START | ||
662 | ---help--- | ||
663 | This gives the physical address where the kernel is loaded | ||
664 | and is ordinarily the same as MEMORY_START. | ||
665 | |||
666 | Different values are primarily used in the case of kexec on panic | ||
667 | where the fail safe kernel needs to run at a different address | ||
668 | than the panic-ed kernel. | ||
669 | |||
662 | config SECCOMP | 670 | config SECCOMP |
663 | bool "Enable seccomp to safely compute untrusted bytecode" | 671 | bool "Enable seccomp to safely compute untrusted bytecode" |
664 | depends on PROC_FS | 672 | depends on PROC_FS |
@@ -897,20 +905,4 @@ source "security/Kconfig" | |||
897 | 905 | ||
898 | source "crypto/Kconfig" | 906 | source "crypto/Kconfig" |
899 | 907 | ||
900 | menuconfig VIRTUALIZATION | ||
901 | bool "Virtualization" | ||
902 | default n | ||
903 | ---help--- | ||
904 | Say Y here to get to see options for using your Linux host to run other | ||
905 | operating systems inside virtual machines (guests). | ||
906 | This option alone does not add any kernel code. | ||
907 | |||
908 | If you say N, all options in this submenu will be skipped and disabled. | ||
909 | |||
910 | if VIRTUALIZATION | ||
911 | |||
912 | source drivers/virtio/Kconfig | ||
913 | |||
914 | endif # VIRTUALIZATION | ||
915 | |||
916 | source "lib/Kconfig" | 908 | source "lib/Kconfig" |
diff --git a/arch/sh/Makefile b/arch/sh/Makefile index e3d8170ad00b..3fc0f413777c 100644 --- a/arch/sh/Makefile +++ b/arch/sh/Makefile | |||
@@ -80,6 +80,7 @@ defaultimage-$(CONFIG_SH_RSK) := uImage | |||
80 | defaultimage-$(CONFIG_SH_URQUELL) := uImage | 80 | defaultimage-$(CONFIG_SH_URQUELL) := uImage |
81 | defaultimage-$(CONFIG_SH_MIGOR) := uImage | 81 | defaultimage-$(CONFIG_SH_MIGOR) := uImage |
82 | defaultimage-$(CONFIG_SH_AP325RXA) := uImage | 82 | defaultimage-$(CONFIG_SH_AP325RXA) := uImage |
83 | defaultimage-$(CONFIG_SH_SH7757LCR) := uImage | ||
83 | defaultimage-$(CONFIG_SH_7724_SOLUTION_ENGINE) := uImage | 84 | defaultimage-$(CONFIG_SH_7724_SOLUTION_ENGINE) := uImage |
84 | defaultimage-$(CONFIG_SH_7206_SOLUTION_ENGINE) := vmlinux | 85 | defaultimage-$(CONFIG_SH_7206_SOLUTION_ENGINE) := vmlinux |
85 | defaultimage-$(CONFIG_SH_7619_SOLUTION_ENGINE) := vmlinux | 86 | defaultimage-$(CONFIG_SH_7619_SOLUTION_ENGINE) := vmlinux |
@@ -173,6 +174,7 @@ core-$(CONFIG_HD6446X_SERIES) += arch/sh/cchips/hd6446x/ | |||
173 | cpuincdir-$(CONFIG_CPU_SH2A) += cpu-sh2a | 174 | cpuincdir-$(CONFIG_CPU_SH2A) += cpu-sh2a |
174 | cpuincdir-$(CONFIG_CPU_SH2) += cpu-sh2 | 175 | cpuincdir-$(CONFIG_CPU_SH2) += cpu-sh2 |
175 | cpuincdir-$(CONFIG_CPU_SH3) += cpu-sh3 | 176 | cpuincdir-$(CONFIG_CPU_SH3) += cpu-sh3 |
177 | cpuincdir-$(CONFIG_CPU_SH4A) += cpu-sh4a | ||
176 | cpuincdir-$(CONFIG_CPU_SH4) += cpu-sh4 | 178 | cpuincdir-$(CONFIG_CPU_SH4) += cpu-sh4 |
177 | cpuincdir-$(CONFIG_CPU_SH5) += cpu-sh5 | 179 | cpuincdir-$(CONFIG_CPU_SH5) += cpu-sh5 |
178 | cpuincdir-y += cpu-common # Must be last | 180 | 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-espt.c b/arch/sh/boards/board-espt.c index 9da92ac36533..b3ae9d38cbc0 100644 --- a/arch/sh/boards/board-espt.c +++ b/arch/sh/boards/board-espt.c | |||
@@ -13,9 +13,9 @@ | |||
13 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
14 | #include <linux/mtd/physmap.h> | 14 | #include <linux/mtd/physmap.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/sh_eth.h> | ||
16 | #include <asm/machvec.h> | 17 | #include <asm/machvec.h> |
17 | #include <asm/sizes.h> | 18 | #include <asm/sizes.h> |
18 | #include <asm/sh_eth.h> | ||
19 | 19 | ||
20 | /* NOR Flash */ | 20 | /* NOR Flash */ |
21 | static struct mtd_partition espt_nor_flash_partitions[] = { | 21 | static struct mtd_partition espt_nor_flash_partitions[] = { |
diff --git a/arch/sh/boards/board-secureedge5410.c b/arch/sh/boards/board-secureedge5410.c index f968f17891a4..03820c3c93d4 100644 --- a/arch/sh/boards/board-secureedge5410.c +++ b/arch/sh/boards/board-secureedge5410.c | |||
@@ -41,8 +41,7 @@ static int __init eraseconfig_init(void) | |||
41 | printk("SnapGear: EraseConfig init\n"); | 41 | printk("SnapGear: EraseConfig init\n"); |
42 | 42 | ||
43 | /* Setup "EraseConfig" switch on external IRQ 0 */ | 43 | /* Setup "EraseConfig" switch on external IRQ 0 */ |
44 | if (request_irq(irq, eraseconfig_interrupt, IRQF_DISABLED, | 44 | if (request_irq(irq, eraseconfig_interrupt, 0, "Erase Config", NULL)) |
45 | "Erase Config", NULL)) | ||
46 | printk("SnapGear: failed to register IRQ%d for Reset witch\n", | 45 | printk("SnapGear: failed to register IRQ%d for Reset witch\n", |
47 | irq); | 46 | irq); |
48 | else | 47 | else |
diff --git a/arch/sh/boards/board-sh7757lcr.c b/arch/sh/boards/board-sh7757lcr.c index fa2a208ec6cb..ec8c84c14b17 100644 --- a/arch/sh/boards/board-sh7757lcr.c +++ b/arch/sh/boards/board-sh7757lcr.c | |||
@@ -18,8 +18,8 @@ | |||
18 | #include <linux/mmc/host.h> | 18 | #include <linux/mmc/host.h> |
19 | #include <linux/mmc/sh_mmcif.h> | 19 | #include <linux/mmc/sh_mmcif.h> |
20 | #include <linux/mmc/sh_mobile_sdhi.h> | 20 | #include <linux/mmc/sh_mobile_sdhi.h> |
21 | #include <linux/sh_eth.h> | ||
21 | #include <cpu/sh7757.h> | 22 | #include <cpu/sh7757.h> |
22 | #include <asm/sh_eth.h> | ||
23 | #include <asm/heartbeat.h> | 23 | #include <asm/heartbeat.h> |
24 | 24 | ||
25 | static struct resource heartbeat_resource = { | 25 | static struct resource heartbeat_resource = { |
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 969421f64a15..7030f4c8cf11 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", |
@@ -345,9 +345,10 @@ static struct soc_camera_platform_info camera_info = { | |||
345 | .width = 640, | 345 | .width = 640, |
346 | .height = 480, | 346 | .height = 480, |
347 | }, | 347 | }, |
348 | .bus_param = SOCAM_PCLK_SAMPLE_RISING | SOCAM_HSYNC_ACTIVE_HIGH | | 348 | .mbus_param = V4L2_MBUS_PCLK_SAMPLE_RISING | V4L2_MBUS_MASTER | |
349 | SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_MASTER | SOCAM_DATAWIDTH_8 | | 349 | V4L2_MBUS_VSYNC_ACTIVE_HIGH | V4L2_MBUS_HSYNC_ACTIVE_HIGH | |
350 | SOCAM_DATA_ACTIVE_HIGH, | 350 | V4L2_MBUS_DATA_ACTIVE_HIGH, |
351 | .mbus_type = V4L2_MBUS_PARALLEL, | ||
351 | .set_capture = camera_set_capture, | 352 | .set_capture = camera_set_capture, |
352 | }; | 353 | }; |
353 | 354 | ||
@@ -366,24 +367,23 @@ static void ap325rxa_camera_release(struct device *dev) | |||
366 | soc_camera_platform_release(&camera_device); | 367 | soc_camera_platform_release(&camera_device); |
367 | } | 368 | } |
368 | 369 | ||
369 | static int ap325rxa_camera_add(struct soc_camera_link *icl, | 370 | static int ap325rxa_camera_add(struct soc_camera_device *icd) |
370 | struct device *dev) | ||
371 | { | 371 | { |
372 | int ret = soc_camera_platform_add(icl, dev, &camera_device, &camera_link, | 372 | int ret = soc_camera_platform_add(icd, &camera_device, &camera_link, |
373 | ap325rxa_camera_release, 0); | 373 | ap325rxa_camera_release, 0); |
374 | if (ret < 0) | 374 | if (ret < 0) |
375 | return ret; | 375 | return ret; |
376 | 376 | ||
377 | ret = camera_probe(); | 377 | ret = camera_probe(); |
378 | if (ret < 0) | 378 | if (ret < 0) |
379 | soc_camera_platform_del(icl, camera_device, &camera_link); | 379 | soc_camera_platform_del(icd, camera_device, &camera_link); |
380 | 380 | ||
381 | return ret; | 381 | return ret; |
382 | } | 382 | } |
383 | 383 | ||
384 | static void ap325rxa_camera_del(struct soc_camera_link *icl) | 384 | static void ap325rxa_camera_del(struct soc_camera_device *icd) |
385 | { | 385 | { |
386 | soc_camera_platform_del(icl, camera_device, &camera_link); | 386 | soc_camera_platform_del(icd, camera_device, &camera_link); |
387 | } | 387 | } |
388 | #endif /* CONFIG_I2C */ | 388 | #endif /* CONFIG_I2C */ |
389 | 389 | ||
@@ -502,8 +502,7 @@ static struct i2c_board_info ap325rxa_i2c_camera[] = { | |||
502 | }; | 502 | }; |
503 | 503 | ||
504 | static struct ov772x_camera_info ov7725_info = { | 504 | static struct ov772x_camera_info ov7725_info = { |
505 | .flags = OV772X_FLAG_VFLIP | OV772X_FLAG_HFLIP | \ | 505 | .flags = OV772X_FLAG_VFLIP | OV772X_FLAG_HFLIP, |
506 | OV772X_FLAG_8BIT, | ||
507 | .edgectrl = OV772X_AUTO_EDGECTRL(0xf, 0), | 506 | .edgectrl = OV772X_AUTO_EDGECTRL(0xf, 0), |
508 | }; | 507 | }; |
509 | 508 | ||
diff --git a/arch/sh/boards/mach-cayman/irq.c b/arch/sh/boards/mach-cayman/irq.c index 311bcebdbd07..724e8b7271f4 100644 --- a/arch/sh/boards/mach-cayman/irq.c +++ b/arch/sh/boards/mach-cayman/irq.c | |||
@@ -46,13 +46,11 @@ static irqreturn_t cayman_interrupt_pci2(int irq, void *dev_id) | |||
46 | static struct irqaction cayman_action_smsc = { | 46 | static struct irqaction cayman_action_smsc = { |
47 | .name = "Cayman SMSC Mux", | 47 | .name = "Cayman SMSC Mux", |
48 | .handler = cayman_interrupt_smsc, | 48 | .handler = cayman_interrupt_smsc, |
49 | .flags = IRQF_DISABLED, | ||
50 | }; | 49 | }; |
51 | 50 | ||
52 | static struct irqaction cayman_action_pci2 = { | 51 | static struct irqaction cayman_action_pci2 = { |
53 | .name = "Cayman PCI2 Mux", | 52 | .name = "Cayman PCI2 Mux", |
54 | .handler = cayman_interrupt_pci2, | 53 | .handler = cayman_interrupt_pci2, |
55 | .flags = IRQF_DISABLED, | ||
56 | }; | 54 | }; |
57 | 55 | ||
58 | static void enable_cayman_irq(struct irq_data *data) | 56 | static void enable_cayman_irq(struct irq_data *data) |
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index 513cb1a2e6c8..92ddce4b3456 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c | |||
@@ -28,13 +28,13 @@ | |||
28 | #include <linux/spi/mmc_spi.h> | 28 | #include <linux/spi/mmc_spi.h> |
29 | #include <linux/input.h> | 29 | #include <linux/input.h> |
30 | #include <linux/input/sh_keysc.h> | 30 | #include <linux/input/sh_keysc.h> |
31 | #include <linux/sh_eth.h> | ||
31 | #include <video/sh_mobile_lcdc.h> | 32 | #include <video/sh_mobile_lcdc.h> |
32 | #include <sound/sh_fsi.h> | 33 | #include <sound/sh_fsi.h> |
33 | #include <media/sh_mobile_ceu.h> | 34 | #include <media/sh_mobile_ceu.h> |
34 | #include <media/tw9910.h> | 35 | #include <media/tw9910.h> |
35 | #include <media/mt9t112.h> | 36 | #include <media/mt9t112.h> |
36 | #include <asm/heartbeat.h> | 37 | #include <asm/heartbeat.h> |
37 | #include <asm/sh_eth.h> | ||
38 | #include <asm/clock.h> | 38 | #include <asm/clock.h> |
39 | #include <asm/suspend.h> | 39 | #include <asm/suspend.h> |
40 | #include <cpu/sh7724.h> | 40 | #include <cpu/sh7724.h> |
@@ -248,6 +248,10 @@ static struct renesas_usbhs_platform_info usbhs_info = { | |||
248 | .driver_param = { | 248 | .driver_param = { |
249 | .buswait_bwait = 4, | 249 | .buswait_bwait = 4, |
250 | .detection_delay = 5, | 250 | .detection_delay = 5, |
251 | .d0_tx_id = SHDMA_SLAVE_USB1D0_TX, | ||
252 | .d0_rx_id = SHDMA_SLAVE_USB1D0_RX, | ||
253 | .d1_tx_id = SHDMA_SLAVE_USB1D1_TX, | ||
254 | .d1_rx_id = SHDMA_SLAVE_USB1D1_RX, | ||
251 | }, | 255 | }, |
252 | }; | 256 | }; |
253 | 257 | ||
@@ -280,7 +284,7 @@ static struct platform_device usbhs_device = { | |||
280 | }; | 284 | }; |
281 | 285 | ||
282 | /* LCDC */ | 286 | /* LCDC */ |
283 | const static struct fb_videomode ecovec_lcd_modes[] = { | 287 | static const struct fb_videomode ecovec_lcd_modes[] = { |
284 | { | 288 | { |
285 | .name = "Panel", | 289 | .name = "Panel", |
286 | .xres = 800, | 290 | .xres = 800, |
@@ -295,7 +299,7 @@ const static struct fb_videomode ecovec_lcd_modes[] = { | |||
295 | }, | 299 | }, |
296 | }; | 300 | }; |
297 | 301 | ||
298 | const static struct fb_videomode ecovec_dvi_modes[] = { | 302 | static const struct fb_videomode ecovec_dvi_modes[] = { |
299 | { | 303 | { |
300 | .name = "DVI", | 304 | .name = "DVI", |
301 | .xres = 1280, | 305 | .xres = 1280, |
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-hp6xx/hp6xx_apm.c b/arch/sh/boards/mach-hp6xx/hp6xx_apm.c index b49535c0ddd9..865d8d6e823f 100644 --- a/arch/sh/boards/mach-hp6xx/hp6xx_apm.c +++ b/arch/sh/boards/mach-hp6xx/hp6xx_apm.c | |||
@@ -86,7 +86,7 @@ static int __init hp6x0_apm_init(void) | |||
86 | int ret; | 86 | int ret; |
87 | 87 | ||
88 | ret = request_irq(HP680_BTN_IRQ, hp6x0_apm_interrupt, | 88 | ret = request_irq(HP680_BTN_IRQ, hp6x0_apm_interrupt, |
89 | IRQF_DISABLED, MODNAME, NULL); | 89 | 0, MODNAME, NULL); |
90 | if (unlikely(ret < 0)) { | 90 | if (unlikely(ret < 0)) { |
91 | printk(KERN_ERR MODNAME ": IRQ %d request failed\n", | 91 | printk(KERN_ERR MODNAME ": IRQ %d request failed\n", |
92 | HP680_BTN_IRQ); | 92 | HP680_BTN_IRQ); |
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..e4c81195929c 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", |
@@ -448,9 +448,7 @@ static struct i2c_board_info migor_i2c_camera[] = { | |||
448 | }, | 448 | }, |
449 | }; | 449 | }; |
450 | 450 | ||
451 | static struct ov772x_camera_info ov7725_info = { | 451 | static struct ov772x_camera_info ov7725_info; |
452 | .flags = OV772X_FLAG_8BIT, | ||
453 | }; | ||
454 | 452 | ||
455 | static struct soc_camera_link ov7725_link = { | 453 | static struct soc_camera_link ov7725_link = { |
456 | .power = ov7725_power, | 454 | .power = ov7725_power, |
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..b747c0ab9264 100644 --- a/arch/sh/boards/mach-se/7724/setup.c +++ b/arch/sh/boards/mach-se/7724/setup.c | |||
@@ -23,12 +23,12 @@ | |||
23 | #include <linux/input.h> | 23 | #include <linux/input.h> |
24 | #include <linux/input/sh_keysc.h> | 24 | #include <linux/input/sh_keysc.h> |
25 | #include <linux/usb/r8a66597.h> | 25 | #include <linux/usb/r8a66597.h> |
26 | #include <linux/sh_eth.h> | ||
26 | #include <video/sh_mobile_lcdc.h> | 27 | #include <video/sh_mobile_lcdc.h> |
27 | #include <media/sh_mobile_ceu.h> | 28 | #include <media/sh_mobile_ceu.h> |
28 | #include <sound/sh_fsi.h> | 29 | #include <sound/sh_fsi.h> |
29 | #include <asm/io.h> | 30 | #include <asm/io.h> |
30 | #include <asm/heartbeat.h> | 31 | #include <asm/heartbeat.h> |
31 | #include <asm/sh_eth.h> | ||
32 | #include <asm/clock.h> | 32 | #include <asm/clock.h> |
33 | #include <asm/suspend.h> | 33 | #include <asm/suspend.h> |
34 | #include <cpu/sh7724.h> | 34 | #include <cpu/sh7724.h> |
@@ -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/boards/mach-sh7763rdp/setup.c b/arch/sh/boards/mach-sh7763rdp/setup.c index f3d828f133e5..dd036f1661db 100644 --- a/arch/sh/boards/mach-sh7763rdp/setup.c +++ b/arch/sh/boards/mach-sh7763rdp/setup.c | |||
@@ -17,8 +17,8 @@ | |||
17 | #include <linux/mtd/physmap.h> | 17 | #include <linux/mtd/physmap.h> |
18 | #include <linux/fb.h> | 18 | #include <linux/fb.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/sh_eth.h> | ||
20 | #include <mach/sh7763rdp.h> | 21 | #include <mach/sh7763rdp.h> |
21 | #include <asm/sh_eth.h> | ||
22 | #include <asm/sh7760fb.h> | 22 | #include <asm/sh7760fb.h> |
23 | 23 | ||
24 | /* NOR Flash */ | 24 | /* NOR Flash */ |
diff --git a/arch/sh/boot/Makefile b/arch/sh/boot/Makefile index ba515d800245..e4ea31a62c55 100644 --- a/arch/sh/boot/Makefile +++ b/arch/sh/boot/Makefile | |||
@@ -19,6 +19,7 @@ CONFIG_MEMORY_START ?= 0x0c000000 | |||
19 | CONFIG_BOOT_LINK_OFFSET ?= 0x00800000 | 19 | CONFIG_BOOT_LINK_OFFSET ?= 0x00800000 |
20 | CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000 | 20 | CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000 |
21 | CONFIG_ENTRY_OFFSET ?= 0x00001000 | 21 | CONFIG_ENTRY_OFFSET ?= 0x00001000 |
22 | CONFIG_PHYSICAL_START ?= $(CONFIG_MEMORY_START) | ||
22 | 23 | ||
23 | suffix-y := bin | 24 | suffix-y := bin |
24 | suffix-$(CONFIG_KERNEL_GZIP) := gz | 25 | suffix-$(CONFIG_KERNEL_GZIP) := gz |
@@ -48,7 +49,7 @@ $(obj)/romimage/vmlinux: $(obj)/zImage FORCE | |||
48 | $(Q)$(MAKE) $(build)=$(obj)/romimage $@ | 49 | $(Q)$(MAKE) $(build)=$(obj)/romimage $@ |
49 | 50 | ||
50 | KERNEL_MEMORY := $(shell /bin/bash -c 'printf "0x%08x" \ | 51 | KERNEL_MEMORY := $(shell /bin/bash -c 'printf "0x%08x" \ |
51 | $$[$(CONFIG_MEMORY_START) & 0x1fffffff]') | 52 | $$[$(CONFIG_PHYSICAL_START) & 0x1fffffff]') |
52 | 53 | ||
53 | KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%08x" \ | 54 | KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%08x" \ |
54 | $$[$(CONFIG_PAGE_OFFSET) + \ | 55 | $$[$(CONFIG_PAGE_OFFSET) + \ |
@@ -114,4 +115,5 @@ $(obj)/uImage: $(obj)/uImage.$(suffix-y) | |||
114 | @echo ' Image $@ is ready' | 115 | @echo ' Image $@ is ready' |
115 | 116 | ||
116 | export CONFIG_PAGE_OFFSET CONFIG_MEMORY_START CONFIG_BOOT_LINK_OFFSET \ | 117 | export CONFIG_PAGE_OFFSET CONFIG_MEMORY_START CONFIG_BOOT_LINK_OFFSET \ |
117 | CONFIG_ZERO_PAGE_OFFSET CONFIG_ENTRY_OFFSET KERNEL_MEMORY suffix-y | 118 | CONFIG_PHYSICAL_START CONFIG_ZERO_PAGE_OFFSET CONFIG_ENTRY_OFFSET \ |
119 | KERNEL_MEMORY suffix-y | ||
diff --git a/arch/sh/drivers/dma/dma-g2.c b/arch/sh/drivers/dma/dma-g2.c index af7bb589c2c8..be9ca7ca0ce4 100644 --- a/arch/sh/drivers/dma/dma-g2.c +++ b/arch/sh/drivers/dma/dma-g2.c | |||
@@ -170,7 +170,7 @@ static int __init g2_dma_init(void) | |||
170 | { | 170 | { |
171 | int ret; | 171 | int ret; |
172 | 172 | ||
173 | ret = request_irq(HW_EVENT_G2_DMA, g2_dma_interrupt, IRQF_DISABLED, | 173 | ret = request_irq(HW_EVENT_G2_DMA, g2_dma_interrupt, 0, |
174 | "g2 DMA handler", &g2_dma_info); | 174 | "g2 DMA handler", &g2_dma_info); |
175 | if (unlikely(ret)) | 175 | if (unlikely(ret)) |
176 | return -EINVAL; | 176 | return -EINVAL; |
diff --git a/arch/sh/drivers/dma/dma-pvr2.c b/arch/sh/drivers/dma/dma-pvr2.c index 3cee58e7f1e5..706a3434af7a 100644 --- a/arch/sh/drivers/dma/dma-pvr2.c +++ b/arch/sh/drivers/dma/dma-pvr2.c | |||
@@ -70,7 +70,6 @@ static int pvr2_xfer_dma(struct dma_channel *chan) | |||
70 | static struct irqaction pvr2_dma_irq = { | 70 | static struct irqaction pvr2_dma_irq = { |
71 | .name = "pvr2 DMA handler", | 71 | .name = "pvr2 DMA handler", |
72 | .handler = pvr2_dma_interrupt, | 72 | .handler = pvr2_dma_interrupt, |
73 | .flags = IRQF_DISABLED, | ||
74 | }; | 73 | }; |
75 | 74 | ||
76 | static struct dma_ops pvr2_dma_ops = { | 75 | static struct dma_ops pvr2_dma_ops = { |
diff --git a/arch/sh/drivers/dma/dma-sh.c b/arch/sh/drivers/dma/dma-sh.c index 827208781ed5..a60da6dd4d17 100644 --- a/arch/sh/drivers/dma/dma-sh.c +++ b/arch/sh/drivers/dma/dma-sh.c | |||
@@ -95,7 +95,7 @@ static int sh_dmac_request_dma(struct dma_channel *chan) | |||
95 | #if defined(CONFIG_SH_DMA_IRQ_MULTI) | 95 | #if defined(CONFIG_SH_DMA_IRQ_MULTI) |
96 | IRQF_SHARED, | 96 | IRQF_SHARED, |
97 | #else | 97 | #else |
98 | IRQF_DISABLED, | 98 | 0, |
99 | #endif | 99 | #endif |
100 | chan->dev_id, chan); | 100 | chan->dev_id, chan); |
101 | } | 101 | } |
@@ -305,7 +305,7 @@ static int __init sh_dmac_init(void) | |||
305 | #if defined(CONFIG_SH_DMA_IRQ_MULTI) | 305 | #if defined(CONFIG_SH_DMA_IRQ_MULTI) |
306 | IRQF_SHARED, | 306 | IRQF_SHARED, |
307 | #else | 307 | #else |
308 | IRQF_DISABLED, | 308 | 0, |
309 | #endif | 309 | #endif |
310 | dmae_name[n], (void *)dmae_name[n]); | 310 | dmae_name[n], (void *)dmae_name[n]); |
311 | if (unlikely(i < 0)) { | 311 | if (unlikely(i < 0)) { |
diff --git a/arch/sh/drivers/dma/dma-sysfs.c b/arch/sh/drivers/dma/dma-sysfs.c index 1ee631d3725e..83cc704770d7 100644 --- a/arch/sh/drivers/dma/dma-sysfs.c +++ b/arch/sh/drivers/dma/dma-sysfs.c | |||
@@ -11,6 +11,7 @@ | |||
11 | */ | 11 | */ |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/stat.h> | ||
14 | #include <linux/sysdev.h> | 15 | #include <linux/sysdev.h> |
15 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
16 | #include <linux/err.h> | 17 | #include <linux/err.h> |
diff --git a/arch/sh/drivers/dma/dmabrg.c b/arch/sh/drivers/dma/dmabrg.c index 6ab9c4a15439..3d66a32ce610 100644 --- a/arch/sh/drivers/dma/dmabrg.c +++ b/arch/sh/drivers/dma/dmabrg.c | |||
@@ -174,17 +174,17 @@ static int __init dmabrg_init(void) | |||
174 | or = __raw_readl(DMAOR); | 174 | or = __raw_readl(DMAOR); |
175 | __raw_writel(or | DMAOR_BRG | DMAOR_DMEN, DMAOR); | 175 | __raw_writel(or | DMAOR_BRG | DMAOR_DMEN, DMAOR); |
176 | 176 | ||
177 | ret = request_irq(DMABRGI0, dmabrg_irq, IRQF_DISABLED, | 177 | ret = request_irq(DMABRGI0, dmabrg_irq, 0, |
178 | "DMABRG USB address error", NULL); | 178 | "DMABRG USB address error", NULL); |
179 | if (ret) | 179 | if (ret) |
180 | goto out0; | 180 | goto out0; |
181 | 181 | ||
182 | ret = request_irq(DMABRGI1, dmabrg_irq, IRQF_DISABLED, | 182 | ret = request_irq(DMABRGI1, dmabrg_irq, 0, |
183 | "DMABRG Transfer End", NULL); | 183 | "DMABRG Transfer End", NULL); |
184 | if (ret) | 184 | if (ret) |
185 | goto out1; | 185 | goto out1; |
186 | 186 | ||
187 | ret = request_irq(DMABRGI2, dmabrg_irq, IRQF_DISABLED, | 187 | ret = request_irq(DMABRGI2, dmabrg_irq, 0, |
188 | "DMABRG Transfer Half", NULL); | 188 | "DMABRG Transfer Half", NULL); |
189 | if (ret == 0) | 189 | if (ret == 0) |
190 | return ret; | 190 | return ret; |
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 fd3e6b02f289..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(struct pci_dev *, 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/pci-sh5.c b/arch/sh/drivers/pci/pci-sh5.c index 0bf296c78795..16c1e721bf54 100644 --- a/arch/sh/drivers/pci/pci-sh5.c +++ b/arch/sh/drivers/pci/pci-sh5.c | |||
@@ -107,13 +107,13 @@ static int __init sh5pci_init(void) | |||
107 | u32 uval; | 107 | u32 uval; |
108 | 108 | ||
109 | if (request_irq(IRQ_ERR, pcish5_err_irq, | 109 | if (request_irq(IRQ_ERR, pcish5_err_irq, |
110 | IRQF_DISABLED, "PCI Error",NULL) < 0) { | 110 | 0, "PCI Error",NULL) < 0) { |
111 | printk(KERN_ERR "PCISH5: Cannot hook PCI_PERR interrupt\n"); | 111 | printk(KERN_ERR "PCISH5: Cannot hook PCI_PERR interrupt\n"); |
112 | return -EINVAL; | 112 | return -EINVAL; |
113 | } | 113 | } |
114 | 114 | ||
115 | if (request_irq(IRQ_SERR, pcish5_serr_irq, | 115 | if (request_irq(IRQ_SERR, pcish5_serr_irq, |
116 | IRQF_DISABLED, "PCI SERR interrupt", NULL) < 0) { | 116 | 0, "PCI SERR interrupt", NULL) < 0) { |
117 | printk(KERN_ERR "PCISH5: Cannot hook PCI_SERR interrupt\n"); | 117 | printk(KERN_ERR "PCISH5: Cannot hook PCI_SERR interrupt\n"); |
118 | return -EINVAL; | 118 | return -EINVAL; |
119 | } | 119 | } |
diff --git a/arch/sh/drivers/pci/pci-sh7780.c b/arch/sh/drivers/pci/pci-sh7780.c index edb7cca14882..fa7b978cc727 100644 --- a/arch/sh/drivers/pci/pci-sh7780.c +++ b/arch/sh/drivers/pci/pci-sh7780.c | |||
@@ -172,7 +172,7 @@ static int __init sh7780_pci_setup_irqs(struct pci_channel *hose) | |||
172 | PCI_STATUS_SIG_TARGET_ABORT | \ | 172 | PCI_STATUS_SIG_TARGET_ABORT | \ |
173 | PCI_STATUS_PARITY, hose->reg_base + PCI_STATUS); | 173 | PCI_STATUS_PARITY, hose->reg_base + PCI_STATUS); |
174 | 174 | ||
175 | ret = request_irq(hose->serr_irq, sh7780_pci_serr_irq, IRQF_DISABLED, | 175 | ret = request_irq(hose->serr_irq, sh7780_pci_serr_irq, 0, |
176 | "PCI SERR interrupt", hose); | 176 | "PCI SERR interrupt", hose); |
177 | if (unlikely(ret)) { | 177 | if (unlikely(ret)) { |
178 | printk(KERN_ERR "PCI: Failed hooking SERR IRQ\n"); | 178 | printk(KERN_ERR "PCI: Failed hooking SERR IRQ\n"); |
diff --git a/arch/sh/drivers/pci/pci.c b/arch/sh/drivers/pci/pci.c index 194231cb5a70..c2691afe8f79 100644 --- a/arch/sh/drivers/pci/pci.c +++ b/arch/sh/drivers/pci/pci.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
21 | #include <linux/mutex.h> | 21 | #include <linux/mutex.h> |
22 | #include <linux/spinlock.h> | 22 | #include <linux/spinlock.h> |
23 | #include <linux/export.h> | ||
23 | 24 | ||
24 | unsigned long PCIBIOS_MIN_IO = 0x0000; | 25 | unsigned long PCIBIOS_MIN_IO = 0x0000; |
25 | unsigned long PCIBIOS_MIN_MEM = 0; | 26 | unsigned long PCIBIOS_MIN_MEM = 0; |
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/drivers/push-switch.c b/arch/sh/drivers/push-switch.c index afc24556572b..637b79b09657 100644 --- a/arch/sh/drivers/push-switch.c +++ b/arch/sh/drivers/push-switch.c | |||
@@ -63,7 +63,7 @@ static int switch_drv_probe(struct platform_device *pdev) | |||
63 | BUG_ON(!psw_info); | 63 | BUG_ON(!psw_info); |
64 | 64 | ||
65 | ret = request_irq(irq, psw_info->irq_handler, | 65 | ret = request_irq(irq, psw_info->irq_handler, |
66 | IRQF_DISABLED | psw_info->irq_flags, | 66 | psw_info->irq_flags, |
67 | psw_info->name ? psw_info->name : DRV_NAME, pdev); | 67 | psw_info->name ? psw_info->name : DRV_NAME, pdev); |
68 | if (unlikely(ret < 0)) | 68 | if (unlikely(ret < 0)) |
69 | goto err; | 69 | goto err; |
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/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/page.h b/arch/sh/include/asm/page.h index 822d6084195b..15d970328f71 100644 --- a/arch/sh/include/asm/page.h +++ b/arch/sh/include/asm/page.h | |||
@@ -113,6 +113,16 @@ typedef struct page *pgtable_t; | |||
113 | #define __MEMORY_SIZE CONFIG_MEMORY_SIZE | 113 | #define __MEMORY_SIZE CONFIG_MEMORY_SIZE |
114 | 114 | ||
115 | /* | 115 | /* |
116 | * PHYSICAL_OFFSET is the offset in physical memory where the base | ||
117 | * of the kernel is loaded. | ||
118 | */ | ||
119 | #ifdef CONFIG_PHYSICAL_START | ||
120 | #define PHYSICAL_OFFSET (CONFIG_PHYSICAL_START - __MEMORY_START) | ||
121 | #else | ||
122 | #define PHYSICAL_OFFSET 0 | ||
123 | #endif | ||
124 | |||
125 | /* | ||
116 | * PAGE_OFFSET is the virtual address of the start of kernel address | 126 | * PAGE_OFFSET is the virtual address of the start of kernel address |
117 | * space. | 127 | * space. |
118 | */ | 128 | */ |
@@ -141,8 +151,13 @@ typedef struct page *pgtable_t; | |||
141 | #endif /* !__ASSEMBLY__ */ | 151 | #endif /* !__ASSEMBLY__ */ |
142 | 152 | ||
143 | #ifdef CONFIG_UNCACHED_MAPPING | 153 | #ifdef CONFIG_UNCACHED_MAPPING |
154 | #if defined(CONFIG_29BIT) | ||
155 | #define UNCAC_ADDR(addr) P2SEGADDR(addr) | ||
156 | #define CAC_ADDR(addr) P1SEGADDR(addr) | ||
157 | #else | ||
144 | #define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + uncached_start) | 158 | #define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + uncached_start) |
145 | #define CAC_ADDR(addr) ((addr) - uncached_start + PAGE_OFFSET) | 159 | #define CAC_ADDR(addr) ((addr) - uncached_start + PAGE_OFFSET) |
160 | #endif | ||
146 | #else | 161 | #else |
147 | #define UNCAC_ADDR(addr) ((addr)) | 162 | #define UNCAC_ADDR(addr) ((addr)) |
148 | #define CAC_ADDR(addr) ((addr)) | 163 | #define CAC_ADDR(addr) ((addr)) |
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/ptrace.h b/arch/sh/include/asm/ptrace.h index 88bd6be168a9..2d3679b2447f 100644 --- a/arch/sh/include/asm/ptrace.h +++ b/arch/sh/include/asm/ptrace.h | |||
@@ -45,8 +45,6 @@ | |||
45 | #define GET_FP(regs) ((regs)->regs[14]) | 45 | #define GET_FP(regs) ((regs)->regs[14]) |
46 | #define GET_USP(regs) ((regs)->regs[15]) | 46 | #define GET_USP(regs) ((regs)->regs[15]) |
47 | 47 | ||
48 | extern void show_regs(struct pt_regs *); | ||
49 | |||
50 | #define arch_has_single_step() (1) | 48 | #define arch_has_single_step() (1) |
51 | 49 | ||
52 | /* | 50 | /* |
@@ -125,7 +123,7 @@ static inline unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, | |||
125 | struct perf_event; | 123 | struct perf_event; |
126 | struct perf_sample_data; | 124 | struct perf_sample_data; |
127 | 125 | ||
128 | extern void ptrace_triggered(struct perf_event *bp, int nmi, | 126 | extern void ptrace_triggered(struct perf_event *bp, |
129 | struct perf_sample_data *data, struct pt_regs *regs); | 127 | struct perf_sample_data *data, struct pt_regs *regs); |
130 | 128 | ||
131 | #define task_pt_regs(task) \ | 129 | #define task_pt_regs(task) \ |
diff --git a/arch/sh/include/asm/sh_eth.h b/arch/sh/include/asm/sh_eth.h deleted file mode 100644 index 0f325da0f923..000000000000 --- a/arch/sh/include/asm/sh_eth.h +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | #ifndef __ASM_SH_ETH_H__ | ||
2 | #define __ASM_SH_ETH_H__ | ||
3 | |||
4 | #include <linux/phy.h> | ||
5 | |||
6 | enum {EDMAC_LITTLE_ENDIAN, EDMAC_BIG_ENDIAN}; | ||
7 | enum { | ||
8 | SH_ETH_REG_GIGABIT, | ||
9 | SH_ETH_REG_FAST_SH4, | ||
10 | SH_ETH_REG_FAST_SH3_SH2 | ||
11 | }; | ||
12 | |||
13 | struct sh_eth_plat_data { | ||
14 | int phy; | ||
15 | int edmac_endian; | ||
16 | int register_type; | ||
17 | phy_interface_t phy_interface; | ||
18 | void (*set_mdio_gate)(unsigned long addr); | ||
19 | |||
20 | unsigned char mac_addr[6]; | ||
21 | unsigned no_ether_link:1; | ||
22 | unsigned ether_link_active_low:1; | ||
23 | }; | ||
24 | |||
25 | #endif | ||
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/unistd_32.h b/arch/sh/include/asm/unistd_32.h index 3432008d2888..152b8627a184 100644 --- a/arch/sh/include/asm/unistd_32.h +++ b/arch/sh/include/asm/unistd_32.h | |||
@@ -375,8 +375,10 @@ | |||
375 | #define __NR_syncfs 362 | 375 | #define __NR_syncfs 362 |
376 | #define __NR_sendmmsg 363 | 376 | #define __NR_sendmmsg 363 |
377 | #define __NR_setns 364 | 377 | #define __NR_setns 364 |
378 | #define __NR_process_vm_readv 365 | ||
379 | #define __NR_process_vm_writev 366 | ||
378 | 380 | ||
379 | #define NR_syscalls 365 | 381 | #define NR_syscalls 367 |
380 | 382 | ||
381 | #ifdef __KERNEL__ | 383 | #ifdef __KERNEL__ |
382 | 384 | ||
diff --git a/arch/sh/include/asm/unistd_64.h b/arch/sh/include/asm/unistd_64.h index ec9898665f23..c330c23db5a0 100644 --- a/arch/sh/include/asm/unistd_64.h +++ b/arch/sh/include/asm/unistd_64.h | |||
@@ -396,10 +396,12 @@ | |||
396 | #define __NR_syncfs 373 | 396 | #define __NR_syncfs 373 |
397 | #define __NR_sendmmsg 374 | 397 | #define __NR_sendmmsg 374 |
398 | #define __NR_setns 375 | 398 | #define __NR_setns 375 |
399 | #define __NR_process_vm_readv 376 | ||
400 | #define __NR_process_vm_writev 377 | ||
399 | 401 | ||
400 | #ifdef __KERNEL__ | 402 | #ifdef __KERNEL__ |
401 | 403 | ||
402 | #define NR_syscalls 376 | 404 | #define NR_syscalls 378 |
403 | 405 | ||
404 | #define __ARCH_WANT_IPC_PARSE_VERSION | 406 | #define __ARCH_WANT_IPC_PARSE_VERSION |
405 | #define __ARCH_WANT_OLD_READDIR | 407 | #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-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/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/sh2a/setup-sh7203.c b/arch/sh/kernel/cpu/sh2a/setup-sh7203.c index a43124e608c3..0bd744f9a3b7 100644 --- a/arch/sh/kernel/cpu/sh2a/setup-sh7203.c +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7203.c | |||
@@ -176,10 +176,12 @@ static DECLARE_INTC_DESC(intc_desc, "sh7203", vectors, groups, | |||
176 | static struct plat_sci_port scif0_platform_data = { | 176 | static struct plat_sci_port scif0_platform_data = { |
177 | .mapbase = 0xfffe8000, | 177 | .mapbase = 0xfffe8000, |
178 | .flags = UPF_BOOT_AUTOCONF, | 178 | .flags = UPF_BOOT_AUTOCONF, |
179 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 179 | .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
180 | SCSCR_REIE, | ||
180 | .scbrr_algo_id = SCBRR_ALGO_2, | 181 | .scbrr_algo_id = SCBRR_ALGO_2, |
181 | .type = PORT_SCIF, | 182 | .type = PORT_SCIF, |
182 | .irqs = { 192, 192, 192, 192 }, | 183 | .irqs = { 192, 192, 192, 192 }, |
184 | .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, | ||
183 | }; | 185 | }; |
184 | 186 | ||
185 | static struct platform_device scif0_device = { | 187 | static struct platform_device scif0_device = { |
@@ -193,10 +195,12 @@ static struct platform_device scif0_device = { | |||
193 | static struct plat_sci_port scif1_platform_data = { | 195 | static struct plat_sci_port scif1_platform_data = { |
194 | .mapbase = 0xfffe8800, | 196 | .mapbase = 0xfffe8800, |
195 | .flags = UPF_BOOT_AUTOCONF, | 197 | .flags = UPF_BOOT_AUTOCONF, |
196 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 198 | .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
199 | SCSCR_REIE, | ||
197 | .scbrr_algo_id = SCBRR_ALGO_2, | 200 | .scbrr_algo_id = SCBRR_ALGO_2, |
198 | .type = PORT_SCIF, | 201 | .type = PORT_SCIF, |
199 | .irqs = { 196, 196, 196, 196 }, | 202 | .irqs = { 196, 196, 196, 196 }, |
203 | .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, | ||
200 | }; | 204 | }; |
201 | 205 | ||
202 | static struct platform_device scif1_device = { | 206 | static struct platform_device scif1_device = { |
@@ -210,10 +214,12 @@ static struct platform_device scif1_device = { | |||
210 | static struct plat_sci_port scif2_platform_data = { | 214 | static struct plat_sci_port scif2_platform_data = { |
211 | .mapbase = 0xfffe9000, | 215 | .mapbase = 0xfffe9000, |
212 | .flags = UPF_BOOT_AUTOCONF, | 216 | .flags = UPF_BOOT_AUTOCONF, |
213 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 217 | .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
218 | SCSCR_REIE, | ||
214 | .scbrr_algo_id = SCBRR_ALGO_2, | 219 | .scbrr_algo_id = SCBRR_ALGO_2, |
215 | .type = PORT_SCIF, | 220 | .type = PORT_SCIF, |
216 | .irqs = { 200, 200, 200, 200 }, | 221 | .irqs = { 200, 200, 200, 200 }, |
222 | .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, | ||
217 | }; | 223 | }; |
218 | 224 | ||
219 | static struct platform_device scif2_device = { | 225 | static struct platform_device scif2_device = { |
@@ -227,10 +233,12 @@ static struct platform_device scif2_device = { | |||
227 | static struct plat_sci_port scif3_platform_data = { | 233 | static struct plat_sci_port scif3_platform_data = { |
228 | .mapbase = 0xfffe9800, | 234 | .mapbase = 0xfffe9800, |
229 | .flags = UPF_BOOT_AUTOCONF, | 235 | .flags = UPF_BOOT_AUTOCONF, |
230 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 236 | .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
237 | SCSCR_REIE, | ||
231 | .scbrr_algo_id = SCBRR_ALGO_2, | 238 | .scbrr_algo_id = SCBRR_ALGO_2, |
232 | .type = PORT_SCIF, | 239 | .type = PORT_SCIF, |
233 | .irqs = { 204, 204, 204, 204 }, | 240 | .irqs = { 204, 204, 204, 204 }, |
241 | .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, | ||
234 | }; | 242 | }; |
235 | 243 | ||
236 | static struct platform_device scif3_device = { | 244 | static struct platform_device scif3_device = { |
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/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..19222dae8233 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), |
@@ -115,34 +113,22 @@ static struct clk_lookup lookups[] = { | |||
115 | 113 | ||
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("riic0", &mstp_clks[MSTP000]), |
119 | { | 117 | CLKDEV_CON_ID("riic1", &mstp_clks[MSTP000]), |
120 | /* TMU0 */ | 118 | CLKDEV_CON_ID("riic2", &mstp_clks[MSTP000]), |
121 | .dev_id = "sh_tmu.0", | 119 | CLKDEV_CON_ID("riic3", &mstp_clks[MSTP000]), |
122 | .con_id = "tmu_fck", | 120 | CLKDEV_CON_ID("riic4", &mstp_clks[MSTP000]), |
123 | .clk = &mstp_clks[MSTP113], | 121 | CLKDEV_CON_ID("riic5", &mstp_clks[MSTP000]), |
124 | }, { | 122 | CLKDEV_CON_ID("riic6", &mstp_clks[MSTP000]), |
125 | /* TMU1 */ | 123 | CLKDEV_CON_ID("riic7", &mstp_clks[MSTP000]), |
126 | .dev_id = "sh_tmu.1", | 124 | |
127 | .con_id = "tmu_fck", | 125 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.0", &mstp_clks[MSTP113]), |
128 | .clk = &mstp_clks[MSTP114], | 126 | CLKDEV_ICK_ID("tmu_fck", "sh_tmu.1", &mstp_clks[MSTP114]), |
129 | }, | 127 | CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP112]), |
130 | { | 128 | CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP111]), |
131 | /* SCIF4 (But, ID is 2) */ | 129 | CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP110]), |
132 | .dev_id = "sh-sci.2", | 130 | |
133 | .con_id = "sci_fck", | 131 | CLKDEV_CON_ID("usb_fck", &mstp_clks[MSTP103]), |
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]), | 132 | CLKDEV_CON_ID("usb0", &mstp_clks[MSTP102]), |
147 | CLKDEV_CON_ID("mmc0", &mstp_clks[MSTP220]), | 133 | CLKDEV_CON_ID("mmc0", &mstp_clks[MSTP220]), |
148 | }; | 134 | }; |
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 134a397b1918..a37dd72c3671 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c | |||
@@ -296,11 +296,13 @@ static struct platform_device dma1_device = { | |||
296 | /* Serial */ | 296 | /* Serial */ |
297 | static struct plat_sci_port scif0_platform_data = { | 297 | static struct plat_sci_port scif0_platform_data = { |
298 | .mapbase = 0xffe00000, | 298 | .mapbase = 0xffe00000, |
299 | .port_reg = SCIx_NOT_SUPPORTED, | ||
299 | .flags = UPF_BOOT_AUTOCONF, | 300 | .flags = UPF_BOOT_AUTOCONF, |
300 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 301 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
301 | .scbrr_algo_id = SCBRR_ALGO_2, | 302 | .scbrr_algo_id = SCBRR_ALGO_2, |
302 | .type = PORT_SCIF, | 303 | .type = PORT_SCIF, |
303 | .irqs = { 80, 80, 80, 80 }, | 304 | .irqs = { 80, 80, 80, 80 }, |
305 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
304 | }; | 306 | }; |
305 | 307 | ||
306 | static struct platform_device scif0_device = { | 308 | static struct platform_device scif0_device = { |
@@ -313,11 +315,13 @@ static struct platform_device scif0_device = { | |||
313 | 315 | ||
314 | static struct plat_sci_port scif1_platform_data = { | 316 | static struct plat_sci_port scif1_platform_data = { |
315 | .mapbase = 0xffe10000, | 317 | .mapbase = 0xffe10000, |
318 | .port_reg = SCIx_NOT_SUPPORTED, | ||
316 | .flags = UPF_BOOT_AUTOCONF, | 319 | .flags = UPF_BOOT_AUTOCONF, |
317 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 320 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
318 | .scbrr_algo_id = SCBRR_ALGO_2, | 321 | .scbrr_algo_id = SCBRR_ALGO_2, |
319 | .type = PORT_SCIF, | 322 | .type = PORT_SCIF, |
320 | .irqs = { 81, 81, 81, 81 }, | 323 | .irqs = { 81, 81, 81, 81 }, |
324 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
321 | }; | 325 | }; |
322 | 326 | ||
323 | static struct platform_device scif1_device = { | 327 | static struct platform_device scif1_device = { |
@@ -330,11 +334,13 @@ static struct platform_device scif1_device = { | |||
330 | 334 | ||
331 | static struct plat_sci_port scif2_platform_data = { | 335 | static struct plat_sci_port scif2_platform_data = { |
332 | .mapbase = 0xffe20000, | 336 | .mapbase = 0xffe20000, |
337 | .port_reg = SCIx_NOT_SUPPORTED, | ||
333 | .flags = UPF_BOOT_AUTOCONF, | 338 | .flags = UPF_BOOT_AUTOCONF, |
334 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 339 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
335 | .scbrr_algo_id = SCBRR_ALGO_2, | 340 | .scbrr_algo_id = SCBRR_ALGO_2, |
336 | .type = PORT_SCIF, | 341 | .type = PORT_SCIF, |
337 | .irqs = { 82, 82, 82, 82 }, | 342 | .irqs = { 82, 82, 82, 82 }, |
343 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | ||
338 | }; | 344 | }; |
339 | 345 | ||
340 | static struct platform_device scif2_device = { | 346 | static struct platform_device scif2_device = { |
@@ -347,6 +353,7 @@ static struct platform_device scif2_device = { | |||
347 | 353 | ||
348 | static struct plat_sci_port scif3_platform_data = { | 354 | static struct plat_sci_port scif3_platform_data = { |
349 | .mapbase = 0xa4e30000, | 355 | .mapbase = 0xa4e30000, |
356 | .port_reg = SCIx_NOT_SUPPORTED, | ||
350 | .flags = UPF_BOOT_AUTOCONF, | 357 | .flags = UPF_BOOT_AUTOCONF, |
351 | .scscr = SCSCR_RE | SCSCR_TE, | 358 | .scscr = SCSCR_RE | SCSCR_TE, |
352 | .scbrr_algo_id = SCBRR_ALGO_3, | 359 | .scbrr_algo_id = SCBRR_ALGO_3, |
@@ -364,6 +371,7 @@ static struct platform_device scif3_device = { | |||
364 | 371 | ||
365 | static struct plat_sci_port scif4_platform_data = { | 372 | static struct plat_sci_port scif4_platform_data = { |
366 | .mapbase = 0xa4e40000, | 373 | .mapbase = 0xa4e40000, |
374 | .port_reg = SCIx_NOT_SUPPORTED, | ||
367 | .flags = UPF_BOOT_AUTOCONF, | 375 | .flags = UPF_BOOT_AUTOCONF, |
368 | .scscr = SCSCR_RE | SCSCR_TE, | 376 | .scscr = SCSCR_RE | SCSCR_TE, |
369 | .scbrr_algo_id = SCBRR_ALGO_3, | 377 | .scbrr_algo_id = SCBRR_ALGO_3, |
@@ -381,6 +389,7 @@ static struct platform_device scif4_device = { | |||
381 | 389 | ||
382 | static struct plat_sci_port scif5_platform_data = { | 390 | static struct plat_sci_port scif5_platform_data = { |
383 | .mapbase = 0xa4e50000, | 391 | .mapbase = 0xa4e50000, |
392 | .port_reg = SCIx_NOT_SUPPORTED, | ||
384 | .flags = UPF_BOOT_AUTOCONF, | 393 | .flags = UPF_BOOT_AUTOCONF, |
385 | .scscr = SCSCR_RE | SCSCR_TE, | 394 | .scscr = SCSCR_RE | SCSCR_TE, |
386 | .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 e915deafac89..05559295d2ca 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/serial_sci.h> | 15 | #include <linux/serial_sci.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/mm.h> | 17 | #include <linux/mm.h> |
18 | #include <linux/dma-mapping.h> | ||
18 | #include <linux/sh_timer.h> | 19 | #include <linux/sh_timer.h> |
19 | #include <linux/sh_dma.h> | 20 | #include <linux/sh_dma.h> |
20 | 21 | ||
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/sh4a/smp-shx3.c b/arch/sh/kernel/cpu/sh4a/smp-shx3.c index de865cac02ee..03f2b55757cf 100644 --- a/arch/sh/kernel/cpu/sh4a/smp-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/smp-shx3.c | |||
@@ -79,7 +79,7 @@ static void shx3_prepare_cpus(unsigned int max_cpus) | |||
79 | 79 | ||
80 | for (i = 0; i < SMP_MSG_NR; i++) | 80 | for (i = 0; i < SMP_MSG_NR; i++) |
81 | request_irq(104 + i, ipi_interrupt_handler, | 81 | request_irq(104 + i, ipi_interrupt_handler, |
82 | IRQF_DISABLED | IRQF_PERCPU, "IPI", (void *)(long)i); | 82 | IRQF_PERCPU, "IPI", (void *)(long)i); |
83 | 83 | ||
84 | for (i = 0; i < max_cpus; i++) | 84 | for (i = 0; i < max_cpus; i++) |
85 | set_cpu_present(i, true); | 85 | set_cpu_present(i, true); |
diff --git a/arch/sh/kernel/cpu/shmobile/cpuidle.c b/arch/sh/kernel/cpu/shmobile/cpuidle.c index e4469e7233cb..1cc257c9b1e3 100644 --- a/arch/sh/kernel/cpu/shmobile/cpuidle.c +++ b/arch/sh/kernel/cpu/shmobile/cpuidle.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/suspend.h> | 15 | #include <linux/suspend.h> |
16 | #include <linux/cpuidle.h> | 16 | #include <linux/cpuidle.h> |
17 | #include <linux/export.h> | ||
17 | #include <asm/suspend.h> | 18 | #include <asm/suspend.h> |
18 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
19 | #include <asm/hwblk.h> | 20 | #include <asm/hwblk.h> |
@@ -25,11 +26,12 @@ static unsigned long cpuidle_mode[] = { | |||
25 | }; | 26 | }; |
26 | 27 | ||
27 | static int cpuidle_sleep_enter(struct cpuidle_device *dev, | 28 | static int cpuidle_sleep_enter(struct cpuidle_device *dev, |
28 | struct cpuidle_state *state) | 29 | struct cpuidle_driver *drv, |
30 | int index) | ||
29 | { | 31 | { |
30 | unsigned long allowed_mode = arch_hwblk_sleep_mode(); | 32 | unsigned long allowed_mode = arch_hwblk_sleep_mode(); |
31 | ktime_t before, after; | 33 | ktime_t before, after; |
32 | int requested_state = state - &dev->states[0]; | 34 | int requested_state = index; |
33 | int allowed_state; | 35 | int allowed_state; |
34 | int k; | 36 | int k; |
35 | 37 | ||
@@ -46,11 +48,13 @@ static int cpuidle_sleep_enter(struct cpuidle_device *dev, | |||
46 | */ | 48 | */ |
47 | k = min_t(int, allowed_state, requested_state); | 49 | k = min_t(int, allowed_state, requested_state); |
48 | 50 | ||
49 | dev->last_state = &dev->states[k]; | ||
50 | before = ktime_get(); | 51 | before = ktime_get(); |
51 | sh_mobile_call_standby(cpuidle_mode[k]); | 52 | sh_mobile_call_standby(cpuidle_mode[k]); |
52 | after = ktime_get(); | 53 | after = ktime_get(); |
53 | return ktime_to_ns(ktime_sub(after, before)) >> 10; | 54 | |
55 | dev->last_residency = (int)ktime_to_ns(ktime_sub(after, before)) >> 10; | ||
56 | |||
57 | return k; | ||
54 | } | 58 | } |
55 | 59 | ||
56 | static struct cpuidle_device cpuidle_dev; | 60 | static struct cpuidle_device cpuidle_dev; |
@@ -62,19 +66,19 @@ static struct cpuidle_driver cpuidle_driver = { | |||
62 | void sh_mobile_setup_cpuidle(void) | 66 | void sh_mobile_setup_cpuidle(void) |
63 | { | 67 | { |
64 | struct cpuidle_device *dev = &cpuidle_dev; | 68 | struct cpuidle_device *dev = &cpuidle_dev; |
69 | struct cpuidle_driver *drv = &cpuidle_driver; | ||
65 | struct cpuidle_state *state; | 70 | struct cpuidle_state *state; |
66 | int i; | 71 | int i; |
67 | 72 | ||
68 | cpuidle_register_driver(&cpuidle_driver); | ||
69 | 73 | ||
70 | for (i = 0; i < CPUIDLE_STATE_MAX; i++) { | 74 | for (i = 0; i < CPUIDLE_STATE_MAX; i++) { |
71 | dev->states[i].name[0] = '\0'; | 75 | drv->states[i].name[0] = '\0'; |
72 | dev->states[i].desc[0] = '\0'; | 76 | drv->states[i].desc[0] = '\0'; |
73 | } | 77 | } |
74 | 78 | ||
75 | i = CPUIDLE_DRIVER_STATE_START; | 79 | i = CPUIDLE_DRIVER_STATE_START; |
76 | 80 | ||
77 | state = &dev->states[i++]; | 81 | state = &drv->states[i++]; |
78 | snprintf(state->name, CPUIDLE_NAME_LEN, "C1"); | 82 | snprintf(state->name, CPUIDLE_NAME_LEN, "C1"); |
79 | strncpy(state->desc, "SuperH Sleep Mode", CPUIDLE_DESC_LEN); | 83 | strncpy(state->desc, "SuperH Sleep Mode", CPUIDLE_DESC_LEN); |
80 | state->exit_latency = 1; | 84 | state->exit_latency = 1; |
@@ -84,10 +88,10 @@ void sh_mobile_setup_cpuidle(void) | |||
84 | state->flags |= CPUIDLE_FLAG_TIME_VALID; | 88 | state->flags |= CPUIDLE_FLAG_TIME_VALID; |
85 | state->enter = cpuidle_sleep_enter; | 89 | state->enter = cpuidle_sleep_enter; |
86 | 90 | ||
87 | dev->safe_state = state; | 91 | drv->safe_state_index = i-1; |
88 | 92 | ||
89 | if (sh_mobile_sleep_supported & SUSP_SH_SF) { | 93 | if (sh_mobile_sleep_supported & SUSP_SH_SF) { |
90 | state = &dev->states[i++]; | 94 | state = &drv->states[i++]; |
91 | snprintf(state->name, CPUIDLE_NAME_LEN, "C2"); | 95 | snprintf(state->name, CPUIDLE_NAME_LEN, "C2"); |
92 | strncpy(state->desc, "SuperH Sleep Mode [SF]", | 96 | strncpy(state->desc, "SuperH Sleep Mode [SF]", |
93 | CPUIDLE_DESC_LEN); | 97 | CPUIDLE_DESC_LEN); |
@@ -100,7 +104,7 @@ void sh_mobile_setup_cpuidle(void) | |||
100 | } | 104 | } |
101 | 105 | ||
102 | if (sh_mobile_sleep_supported & SUSP_SH_STANDBY) { | 106 | if (sh_mobile_sleep_supported & SUSP_SH_STANDBY) { |
103 | state = &dev->states[i++]; | 107 | state = &drv->states[i++]; |
104 | snprintf(state->name, CPUIDLE_NAME_LEN, "C3"); | 108 | snprintf(state->name, CPUIDLE_NAME_LEN, "C3"); |
105 | strncpy(state->desc, "SuperH Mobile Standby Mode [SF]", | 109 | strncpy(state->desc, "SuperH Mobile Standby Mode [SF]", |
106 | CPUIDLE_DESC_LEN); | 110 | CPUIDLE_DESC_LEN); |
@@ -112,7 +116,10 @@ void sh_mobile_setup_cpuidle(void) | |||
112 | state->enter = cpuidle_sleep_enter; | 116 | state->enter = cpuidle_sleep_enter; |
113 | } | 117 | } |
114 | 118 | ||
119 | drv->state_count = i; | ||
115 | dev->state_count = i; | 120 | dev->state_count = i; |
116 | 121 | ||
122 | cpuidle_register_driver(&cpuidle_driver); | ||
123 | |||
117 | cpuidle_register_device(dev); | 124 | cpuidle_register_device(dev); |
118 | } | 125 | } |
diff --git a/arch/sh/kernel/cpu/shmobile/pm_runtime.c b/arch/sh/kernel/cpu/shmobile/pm_runtime.c index 64c807c39208..bf280c812d2f 100644 --- a/arch/sh/kernel/cpu/shmobile/pm_runtime.c +++ b/arch/sh/kernel/cpu/shmobile/pm_runtime.c | |||
@@ -256,7 +256,7 @@ out: | |||
256 | return ret; | 256 | return ret; |
257 | } | 257 | } |
258 | 258 | ||
259 | static struct dev_power_domain default_power_domain = { | 259 | static struct dev_pm_domain default_pm_domain = { |
260 | .ops = { | 260 | .ops = { |
261 | .runtime_suspend = default_platform_runtime_suspend, | 261 | .runtime_suspend = default_platform_runtime_suspend, |
262 | .runtime_resume = default_platform_runtime_resume, | 262 | .runtime_resume = default_platform_runtime_resume, |
@@ -285,7 +285,7 @@ static int platform_bus_notify(struct notifier_block *nb, | |||
285 | hwblk_disable(hwblk_info, hwblk); | 285 | hwblk_disable(hwblk_info, hwblk); |
286 | /* make sure driver re-inits itself once */ | 286 | /* make sure driver re-inits itself once */ |
287 | __set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags); | 287 | __set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags); |
288 | dev->pwr_domain = &default_power_domain; | 288 | dev->pm_domain = &default_pm_domain; |
289 | break; | 289 | break; |
290 | /* TODO: add BUS_NOTIFY_BIND_DRIVER and increase idle count */ | 290 | /* TODO: add BUS_NOTIFY_BIND_DRIVER and increase idle count */ |
291 | case BUS_NOTIFY_BOUND_DRIVER: | 291 | case BUS_NOTIFY_BOUND_DRIVER: |
@@ -299,7 +299,7 @@ static int platform_bus_notify(struct notifier_block *nb, | |||
299 | __set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags); | 299 | __set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags); |
300 | break; | 300 | break; |
301 | case BUS_NOTIFY_DEL_DEVICE: | 301 | case BUS_NOTIFY_DEL_DEVICE: |
302 | dev->pwr_domain = NULL; | 302 | dev->pm_domain = NULL; |
303 | break; | 303 | break; |
304 | } | 304 | } |
305 | return 0; | 305 | return 0; |
diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c index 425d604e3a28..db4ecd731a00 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 | 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/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 19b1f8826aef..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, |
@@ -133,17 +109,6 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, | |||
133 | return 0; | 109 | return 0; |
134 | } | 110 | } |
135 | 111 | ||
136 | int apply_relocate(Elf32_Shdr *sechdrs, | ||
137 | const char *strtab, | ||
138 | unsigned int symindex, | ||
139 | unsigned int relsec, | ||
140 | struct module *me) | ||
141 | { | ||
142 | printk(KERN_ERR "module %s: REL RELOCATION unsupported\n", | ||
143 | me->name); | ||
144 | return -ENOEXEC; | ||
145 | } | ||
146 | |||
147 | int module_finalize(const Elf_Ehdr *hdr, | 112 | int module_finalize(const Elf_Ehdr *hdr, |
148 | const Elf_Shdr *sechdrs, | 113 | const Elf_Shdr *sechdrs, |
149 | struct module *me) | 114 | struct module *me) |
diff --git a/arch/sh/kernel/perf_event.c b/arch/sh/kernel/perf_event.c index 2ee21a47b5af..10b14e3a7eb8 100644 --- a/arch/sh/kernel/perf_event.c +++ b/arch/sh/kernel/perf_event.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | #include <linux/irq.h> | 26 | #include <linux/irq.h> |
27 | #include <linux/perf_event.h> | 27 | #include <linux/perf_event.h> |
28 | #include <linux/export.h> | ||
28 | #include <asm/processor.h> | 29 | #include <asm/processor.h> |
29 | 30 | ||
30 | struct cpu_hw_events { | 31 | struct cpu_hw_events { |
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/setup.c b/arch/sh/kernel/setup.c index 58bff45d1156..1a0e946679a4 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c | |||
@@ -211,13 +211,16 @@ void __init __add_active_range(unsigned int nid, unsigned long start_pfn, | |||
211 | } | 211 | } |
212 | 212 | ||
213 | /* | 213 | /* |
214 | * We don't know which RAM region contains kernel data, | 214 | * We don't know which RAM region contains kernel data or |
215 | * so we try it repeatedly and let the resource manager | 215 | * the reserved crashkernel region, so try it repeatedly |
216 | * test it. | 216 | * and let the resource manager test it. |
217 | */ | 217 | */ |
218 | request_resource(res, &code_resource); | 218 | request_resource(res, &code_resource); |
219 | request_resource(res, &data_resource); | 219 | request_resource(res, &data_resource); |
220 | request_resource(res, &bss_resource); | 220 | request_resource(res, &bss_resource); |
221 | #ifdef CONFIG_KEXEC | ||
222 | request_resource(res, &crashk_res); | ||
223 | #endif | ||
221 | 224 | ||
222 | /* | 225 | /* |
223 | * Also make sure that there is a PMB mapping that covers this | 226 | * Also make sure that there is a PMB mapping that covers this |
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 6207561ea34a..3147a9a6fb8b 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include <linux/cpu.h> | 21 | #include <linux/cpu.h> |
22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
23 | #include <linux/sched.h> | 23 | #include <linux/sched.h> |
24 | #include <asm/atomic.h> | 24 | #include <linux/atomic.h> |
25 | #include <asm/processor.h> | 25 | #include <asm/processor.h> |
26 | #include <asm/system.h> | 26 | #include <asm/system.h> |
27 | #include <asm/mmu_context.h> | 27 | #include <asm/mmu_context.h> |
diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S index 39b051de4c7c..ee56a9b1a981 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 |
@@ -382,3 +382,5 @@ ENTRY(sys_call_table) | |||
382 | .long sys_syncfs | 382 | .long sys_syncfs |
383 | .long sys_sendmmsg | 383 | .long sys_sendmmsg |
384 | .long sys_setns | 384 | .long sys_setns |
385 | .long sys_process_vm_readv /* 365 */ | ||
386 | .long sys_process_vm_writev | ||
diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S index 089c4d825d08..9af7de26fb71 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 |
@@ -402,3 +402,5 @@ sys_call_table: | |||
402 | .long sys_syncfs | 402 | .long sys_syncfs |
403 | .long sys_sendmmsg | 403 | .long sys_sendmmsg |
404 | .long sys_setns /* 375 */ | 404 | .long sys_setns /* 375 */ |
405 | .long sys_process_vm_readv | ||
406 | .long sys_process_vm_writev | ||
diff --git a/arch/sh/kernel/topology.c b/arch/sh/kernel/topology.c index 38e862852dd0..4649a6ff0cfe 100644 --- a/arch/sh/kernel/topology.c +++ b/arch/sh/kernel/topology.c | |||
@@ -11,8 +11,10 @@ | |||
11 | #include <linux/cpumask.h> | 11 | #include <linux/cpumask.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/percpu.h> | 13 | #include <linux/percpu.h> |
14 | #include <linux/topology.h> | ||
14 | #include <linux/node.h> | 15 | #include <linux/node.h> |
15 | #include <linux/nodemask.h> | 16 | #include <linux/nodemask.h> |
17 | #include <linux/export.h> | ||
16 | 18 | ||
17 | static DEFINE_PER_CPU(struct cpu, cpu_devices); | 19 | static DEFINE_PER_CPU(struct cpu, cpu_devices); |
18 | 20 | ||
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index b51a17104b5f..7bbef95c9d1b 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c | |||
@@ -316,6 +316,35 @@ static int handle_unaligned_ins(insn_size_t instruction, struct pt_regs *regs, | |||
316 | break; | 316 | break; |
317 | } | 317 | } |
318 | break; | 318 | break; |
319 | |||
320 | case 9: /* mov.w @(disp,PC),Rn */ | ||
321 | srcu = (unsigned char __user *)regs->pc; | ||
322 | srcu += 4; | ||
323 | srcu += (instruction & 0x00FF) << 1; | ||
324 | dst = (unsigned char *)rn; | ||
325 | *(unsigned long *)dst = 0; | ||
326 | |||
327 | #if !defined(__LITTLE_ENDIAN__) | ||
328 | dst += 2; | ||
329 | #endif | ||
330 | |||
331 | if (ma->from(dst, srcu, 2)) | ||
332 | goto fetch_fault; | ||
333 | sign_extend(2, dst); | ||
334 | ret = 0; | ||
335 | break; | ||
336 | |||
337 | case 0xd: /* mov.l @(disp,PC),Rn */ | ||
338 | srcu = (unsigned char __user *)(regs->pc & ~0x3); | ||
339 | srcu += 4; | ||
340 | srcu += (instruction & 0x00FF) << 2; | ||
341 | dst = (unsigned char *)rn; | ||
342 | *(unsigned long *)dst = 0; | ||
343 | |||
344 | if (ma->from(dst, srcu, 4)) | ||
345 | goto fetch_fault; | ||
346 | ret = 0; | ||
347 | break; | ||
319 | } | 348 | } |
320 | return ret; | 349 | return ret; |
321 | 350 | ||
@@ -393,7 +422,7 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | |||
393 | */ | 422 | */ |
394 | if (!expected) { | 423 | if (!expected) { |
395 | unaligned_fixups_notify(current, instruction, regs); | 424 | unaligned_fixups_notify(current, instruction, regs); |
396 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, 0, | 425 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, |
397 | regs, address); | 426 | regs, address); |
398 | } | 427 | } |
399 | 428 | ||
@@ -466,6 +495,7 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | |||
466 | case 0x0500: /* mov.w @(disp,Rm),R0 */ | 495 | case 0x0500: /* mov.w @(disp,Rm),R0 */ |
467 | goto simple; | 496 | goto simple; |
468 | case 0x0B00: /* bf lab - no delayslot*/ | 497 | case 0x0B00: /* bf lab - no delayslot*/ |
498 | ret = 0; | ||
469 | break; | 499 | break; |
470 | case 0x0F00: /* bf/s lab */ | 500 | case 0x0F00: /* bf/s lab */ |
471 | ret = handle_delayslot(regs, instruction, ma); | 501 | ret = handle_delayslot(regs, instruction, ma); |
@@ -479,6 +509,7 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | |||
479 | } | 509 | } |
480 | break; | 510 | break; |
481 | case 0x0900: /* bt lab - no delayslot */ | 511 | case 0x0900: /* bt lab - no delayslot */ |
512 | ret = 0; | ||
482 | break; | 513 | break; |
483 | case 0x0D00: /* bt/s lab */ | 514 | case 0x0D00: /* bt/s lab */ |
484 | ret = handle_delayslot(regs, instruction, ma); | 515 | ret = handle_delayslot(regs, instruction, ma); |
@@ -494,6 +525,9 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | |||
494 | } | 525 | } |
495 | break; | 526 | break; |
496 | 527 | ||
528 | case 0x9000: /* mov.w @(disp,Rm),Rn */ | ||
529 | goto simple; | ||
530 | |||
497 | case 0xA000: /* bra label */ | 531 | case 0xA000: /* bra label */ |
498 | ret = handle_delayslot(regs, instruction, ma); | 532 | ret = handle_delayslot(regs, instruction, ma); |
499 | if (ret==0) | 533 | if (ret==0) |
@@ -507,6 +541,9 @@ int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | |||
507 | regs->pc += SH_PC_12BIT_OFFSET(instruction); | 541 | regs->pc += SH_PC_12BIT_OFFSET(instruction); |
508 | } | 542 | } |
509 | break; | 543 | break; |
544 | |||
545 | case 0xD000: /* mov.l @(disp,Rm),Rn */ | ||
546 | goto simple; | ||
510 | } | 547 | } |
511 | return ret; | 548 | return ret; |
512 | 549 | ||
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 731c10ce67b5..c98905f71e28 100644 --- a/arch/sh/kernel/vmlinux.lds.S +++ b/arch/sh/kernel/vmlinux.lds.S | |||
@@ -23,7 +23,7 @@ OUTPUT_ARCH(sh) | |||
23 | ENTRY(_start) | 23 | ENTRY(_start) |
24 | SECTIONS | 24 | SECTIONS |
25 | { | 25 | { |
26 | . = PAGE_OFFSET + MEMORY_OFFSET + CONFIG_ZERO_PAGE_OFFSET; | 26 | . = PAGE_OFFSET + MEMORY_OFFSET + PHYSICAL_OFFSET + CONFIG_ZERO_PAGE_OFFSET; |
27 | 27 | ||
28 | _text = .; /* Text and read-only data */ | 28 | _text = .; /* Text and read-only data */ |
29 | 29 | ||
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/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 58a93fb3d965..939ca0f356f6 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | #include <linux/memblock.h> | 19 | #include <linux/memblock.h> |
20 | #include <linux/dma-mapping.h> | 20 | #include <linux/dma-mapping.h> |
21 | #include <linux/export.h> | ||
21 | #include <asm/mmu_context.h> | 22 | #include <asm/mmu_context.h> |
22 | #include <asm/mmzone.h> | 23 | #include <asm/mmzone.h> |
23 | #include <asm/kexec.h> | 24 | #include <asm/kexec.h> |
@@ -287,6 +288,8 @@ static void __init do_init_bootmem(void) | |||
287 | static void __init early_reserve_mem(void) | 288 | static void __init early_reserve_mem(void) |
288 | { | 289 | { |
289 | unsigned long start_pfn; | 290 | unsigned long start_pfn; |
291 | u32 zero_base = (u32)__MEMORY_START + (u32)PHYSICAL_OFFSET; | ||
292 | u32 start = zero_base + (u32)CONFIG_ZERO_PAGE_OFFSET; | ||
290 | 293 | ||
291 | /* | 294 | /* |
292 | * Partially used pages are not usable - thus | 295 | * Partially used pages are not usable - thus |
@@ -300,15 +303,13 @@ static void __init early_reserve_mem(void) | |||
300 | * this catches the (definitely buggy) case of us accidentally | 303 | * this catches the (definitely buggy) case of us accidentally |
301 | * initializing the bootmem allocator with an invalid RAM area. | 304 | * initializing the bootmem allocator with an invalid RAM area. |
302 | */ | 305 | */ |
303 | memblock_reserve(__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET, | 306 | memblock_reserve(start, (PFN_PHYS(start_pfn) + PAGE_SIZE - 1) - start); |
304 | (PFN_PHYS(start_pfn) + PAGE_SIZE - 1) - | ||
305 | (__MEMORY_START + CONFIG_ZERO_PAGE_OFFSET)); | ||
306 | 307 | ||
307 | /* | 308 | /* |
308 | * Reserve physical pages below CONFIG_ZERO_PAGE_OFFSET. | 309 | * Reserve physical pages below CONFIG_ZERO_PAGE_OFFSET. |
309 | */ | 310 | */ |
310 | if (CONFIG_ZERO_PAGE_OFFSET != 0) | 311 | if (CONFIG_ZERO_PAGE_OFFSET != 0) |
311 | memblock_reserve(__MEMORY_START, CONFIG_ZERO_PAGE_OFFSET); | 312 | memblock_reserve(zero_base, CONFIG_ZERO_PAGE_OFFSET); |
312 | 313 | ||
313 | /* | 314 | /* |
314 | * Handle additional early reservations | 315 | * Handle additional early reservations |
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 | ||