diff options
Diffstat (limited to 'arch/arm')
55 files changed, 390 insertions, 100 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 5ebc5d922ea1..3269576dbfa8 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -1271,6 +1271,18 @@ config ARM_ERRATA_754327 | |||
| 1271 | This workaround defines cpu_relax() as smp_mb(), preventing correctly | 1271 | This workaround defines cpu_relax() as smp_mb(), preventing correctly |
| 1272 | written polling loops from denying visibility of updates to memory. | 1272 | written polling loops from denying visibility of updates to memory. |
| 1273 | 1273 | ||
| 1274 | config ARM_ERRATA_364296 | ||
| 1275 | bool "ARM errata: Possible cache data corruption with hit-under-miss enabled" | ||
| 1276 | depends on CPU_V6 && !SMP | ||
| 1277 | help | ||
| 1278 | This options enables the workaround for the 364296 ARM1136 | ||
| 1279 | r0p2 erratum (possible cache data corruption with | ||
| 1280 | hit-under-miss enabled). It sets the undocumented bit 31 in | ||
| 1281 | the auxiliary control register and the FI bit in the control | ||
| 1282 | register, thus disabling hit-under-miss without putting the | ||
| 1283 | processor into full low interrupt latency mode. ARM11MPCore | ||
| 1284 | is not affected. | ||
| 1285 | |||
| 1274 | endmenu | 1286 | endmenu |
| 1275 | 1287 | ||
| 1276 | source "arch/arm/common/Kconfig" | 1288 | source "arch/arm/common/Kconfig" |
diff --git a/arch/arm/boot/compressed/mmcif-sh7372.c b/arch/arm/boot/compressed/mmcif-sh7372.c index b6f61d9a5a1b..672ae95db5c3 100644 --- a/arch/arm/boot/compressed/mmcif-sh7372.c +++ b/arch/arm/boot/compressed/mmcif-sh7372.c | |||
| @@ -82,7 +82,7 @@ asmlinkage void mmc_loader(unsigned char *buf, unsigned long len) | |||
| 82 | 82 | ||
| 83 | 83 | ||
| 84 | /* Disable clock to MMC hardware block */ | 84 | /* Disable clock to MMC hardware block */ |
| 85 | __raw_writel(__raw_readl(SMSTPCR3) & (1 << 12), SMSTPCR3); | 85 | __raw_writel(__raw_readl(SMSTPCR3) | (1 << 12), SMSTPCR3); |
| 86 | 86 | ||
| 87 | mmc_update_progress(MMC_PROGRESS_DONE); | 87 | mmc_update_progress(MMC_PROGRESS_DONE); |
| 88 | } | 88 | } |
diff --git a/arch/arm/boot/compressed/sdhi-sh7372.c b/arch/arm/boot/compressed/sdhi-sh7372.c index d403a8b24d7f..d279294f2381 100644 --- a/arch/arm/boot/compressed/sdhi-sh7372.c +++ b/arch/arm/boot/compressed/sdhi-sh7372.c | |||
| @@ -85,7 +85,7 @@ asmlinkage void mmc_loader(unsigned short *buf, unsigned long len) | |||
| 85 | goto err; | 85 | goto err; |
| 86 | 86 | ||
| 87 | /* Disable clock to SDHI1 hardware block */ | 87 | /* Disable clock to SDHI1 hardware block */ |
| 88 | __raw_writel(__raw_readl(SMSTPCR3) & (1 << 13), SMSTPCR3); | 88 | __raw_writel(__raw_readl(SMSTPCR3) | (1 << 13), SMSTPCR3); |
| 89 | 89 | ||
| 90 | mmc_update_progress(MMC_PROGRESS_DONE); | 90 | mmc_update_progress(MMC_PROGRESS_DONE); |
| 91 | 91 | ||
diff --git a/arch/arm/include/asm/hardware/cache-l2x0.h b/arch/arm/include/asm/hardware/cache-l2x0.h index 16bd48031583..bfa706ffd968 100644 --- a/arch/arm/include/asm/hardware/cache-l2x0.h +++ b/arch/arm/include/asm/hardware/cache-l2x0.h | |||
| @@ -64,7 +64,7 @@ | |||
| 64 | #define L2X0_AUX_CTRL_MASK 0xc0000fff | 64 | #define L2X0_AUX_CTRL_MASK 0xc0000fff |
| 65 | #define L2X0_AUX_CTRL_ASSOCIATIVITY_SHIFT 16 | 65 | #define L2X0_AUX_CTRL_ASSOCIATIVITY_SHIFT 16 |
| 66 | #define L2X0_AUX_CTRL_WAY_SIZE_SHIFT 17 | 66 | #define L2X0_AUX_CTRL_WAY_SIZE_SHIFT 17 |
| 67 | #define L2X0_AUX_CTRL_WAY_SIZE_MASK (0x3 << 17) | 67 | #define L2X0_AUX_CTRL_WAY_SIZE_MASK (0x7 << 17) |
| 68 | #define L2X0_AUX_CTRL_SHARE_OVERRIDE_SHIFT 22 | 68 | #define L2X0_AUX_CTRL_SHARE_OVERRIDE_SHIFT 22 |
| 69 | #define L2X0_AUX_CTRL_NS_LOCKDOWN_SHIFT 26 | 69 | #define L2X0_AUX_CTRL_NS_LOCKDOWN_SHIFT 26 |
| 70 | #define L2X0_AUX_CTRL_NS_INT_CTRL_SHIFT 27 | 70 | #define L2X0_AUX_CTRL_NS_INT_CTRL_SHIFT 27 |
diff --git a/arch/arm/include/asm/pmu.h b/arch/arm/include/asm/pmu.h index 67c70a31a1be..b7e82c4aced6 100644 --- a/arch/arm/include/asm/pmu.h +++ b/arch/arm/include/asm/pmu.h | |||
| @@ -41,7 +41,7 @@ struct arm_pmu_platdata { | |||
| 41 | * encoded error on failure. | 41 | * encoded error on failure. |
| 42 | */ | 42 | */ |
| 43 | extern struct platform_device * | 43 | extern struct platform_device * |
| 44 | reserve_pmu(enum arm_pmu_type device); | 44 | reserve_pmu(enum arm_pmu_type type); |
| 45 | 45 | ||
| 46 | /** | 46 | /** |
| 47 | * release_pmu() - Relinquish control of the performance counters | 47 | * release_pmu() - Relinquish control of the performance counters |
| @@ -62,26 +62,26 @@ release_pmu(enum arm_pmu_type type); | |||
| 62 | * the actual hardware initialisation. | 62 | * the actual hardware initialisation. |
| 63 | */ | 63 | */ |
| 64 | extern int | 64 | extern int |
| 65 | init_pmu(enum arm_pmu_type device); | 65 | init_pmu(enum arm_pmu_type type); |
| 66 | 66 | ||
| 67 | #else /* CONFIG_CPU_HAS_PMU */ | 67 | #else /* CONFIG_CPU_HAS_PMU */ |
| 68 | 68 | ||
| 69 | #include <linux/err.h> | 69 | #include <linux/err.h> |
| 70 | 70 | ||
| 71 | static inline struct platform_device * | 71 | static inline struct platform_device * |
| 72 | reserve_pmu(enum arm_pmu_type device) | 72 | reserve_pmu(enum arm_pmu_type type) |
| 73 | { | 73 | { |
| 74 | return ERR_PTR(-ENODEV); | 74 | return ERR_PTR(-ENODEV); |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | static inline int | 77 | static inline int |
| 78 | release_pmu(struct platform_device *pdev) | 78 | release_pmu(enum arm_pmu_type type) |
| 79 | { | 79 | { |
| 80 | return -ENODEV; | 80 | return -ENODEV; |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | static inline int | 83 | static inline int |
| 84 | init_pmu(enum arm_pmu_type device) | 84 | init_pmu(enum arm_pmu_type type) |
| 85 | { | 85 | { |
| 86 | return -ENODEV; | 86 | return -ENODEV; |
| 87 | } | 87 | } |
diff --git a/arch/arm/kernel/pmu.c b/arch/arm/kernel/pmu.c index 2b70709376c3..c53474fe84df 100644 --- a/arch/arm/kernel/pmu.c +++ b/arch/arm/kernel/pmu.c | |||
| @@ -31,7 +31,7 @@ static int __devinit pmu_register(struct platform_device *pdev, | |||
| 31 | { | 31 | { |
| 32 | if (type < 0 || type >= ARM_NUM_PMU_DEVICES) { | 32 | if (type < 0 || type >= ARM_NUM_PMU_DEVICES) { |
| 33 | pr_warning("received registration request for unknown " | 33 | pr_warning("received registration request for unknown " |
| 34 | "device %d\n", type); | 34 | "PMU device type %d\n", type); |
| 35 | return -EINVAL; | 35 | return -EINVAL; |
| 36 | } | 36 | } |
| 37 | 37 | ||
| @@ -112,17 +112,17 @@ static int __init register_pmu_driver(void) | |||
| 112 | device_initcall(register_pmu_driver); | 112 | device_initcall(register_pmu_driver); |
| 113 | 113 | ||
| 114 | struct platform_device * | 114 | struct platform_device * |
| 115 | reserve_pmu(enum arm_pmu_type device) | 115 | reserve_pmu(enum arm_pmu_type type) |
| 116 | { | 116 | { |
| 117 | struct platform_device *pdev; | 117 | struct platform_device *pdev; |
| 118 | 118 | ||
| 119 | if (test_and_set_bit_lock(device, &pmu_lock)) { | 119 | if (test_and_set_bit_lock(type, &pmu_lock)) { |
| 120 | pdev = ERR_PTR(-EBUSY); | 120 | pdev = ERR_PTR(-EBUSY); |
| 121 | } else if (pmu_devices[device] == NULL) { | 121 | } else if (pmu_devices[type] == NULL) { |
| 122 | clear_bit_unlock(device, &pmu_lock); | 122 | clear_bit_unlock(type, &pmu_lock); |
| 123 | pdev = ERR_PTR(-ENODEV); | 123 | pdev = ERR_PTR(-ENODEV); |
| 124 | } else { | 124 | } else { |
| 125 | pdev = pmu_devices[device]; | 125 | pdev = pmu_devices[type]; |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | return pdev; | 128 | return pdev; |
| @@ -130,11 +130,11 @@ reserve_pmu(enum arm_pmu_type device) | |||
| 130 | EXPORT_SYMBOL_GPL(reserve_pmu); | 130 | EXPORT_SYMBOL_GPL(reserve_pmu); |
| 131 | 131 | ||
| 132 | int | 132 | int |
| 133 | release_pmu(enum arm_pmu_type device) | 133 | release_pmu(enum arm_pmu_type type) |
| 134 | { | 134 | { |
| 135 | if (WARN_ON(!pmu_devices[device])) | 135 | if (WARN_ON(!pmu_devices[type])) |
| 136 | return -EINVAL; | 136 | return -EINVAL; |
| 137 | clear_bit_unlock(device, &pmu_lock); | 137 | clear_bit_unlock(type, &pmu_lock); |
| 138 | return 0; | 138 | return 0; |
| 139 | } | 139 | } |
| 140 | EXPORT_SYMBOL_GPL(release_pmu); | 140 | EXPORT_SYMBOL_GPL(release_pmu); |
| @@ -182,17 +182,17 @@ init_cpu_pmu(void) | |||
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | int | 184 | int |
| 185 | init_pmu(enum arm_pmu_type device) | 185 | init_pmu(enum arm_pmu_type type) |
| 186 | { | 186 | { |
| 187 | int err = 0; | 187 | int err = 0; |
| 188 | 188 | ||
| 189 | switch (device) { | 189 | switch (type) { |
| 190 | case ARM_PMU_DEVICE_CPU: | 190 | case ARM_PMU_DEVICE_CPU: |
| 191 | err = init_cpu_pmu(); | 191 | err = init_cpu_pmu(); |
| 192 | break; | 192 | break; |
| 193 | default: | 193 | default: |
| 194 | pr_warning("attempt to initialise unknown device %d\n", | 194 | pr_warning("attempt to initialise PMU of unknown " |
| 195 | device); | 195 | "type %d\n", type); |
| 196 | err = -EINVAL; | 196 | err = -EINVAL; |
| 197 | } | 197 | } |
| 198 | 198 | ||
diff --git a/arch/arm/kernel/relocate_kernel.S b/arch/arm/kernel/relocate_kernel.S index 9cf4cbf8f95b..d0cdedf4864d 100644 --- a/arch/arm/kernel/relocate_kernel.S +++ b/arch/arm/kernel/relocate_kernel.S | |||
| @@ -57,7 +57,8 @@ relocate_new_kernel: | |||
| 57 | mov r0,#0 | 57 | mov r0,#0 |
| 58 | ldr r1,kexec_mach_type | 58 | ldr r1,kexec_mach_type |
| 59 | ldr r2,kexec_boot_atags | 59 | ldr r2,kexec_boot_atags |
| 60 | mov pc,lr | 60 | ARM( mov pc, lr ) |
| 61 | THUMB( bx lr ) | ||
| 61 | 62 | ||
| 62 | .align | 63 | .align |
| 63 | 64 | ||
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 70bca649e925..e514c76043b4 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
| @@ -280,18 +280,19 @@ static void __init cacheid_init(void) | |||
| 280 | if (arch >= CPU_ARCH_ARMv6) { | 280 | if (arch >= CPU_ARCH_ARMv6) { |
| 281 | if ((cachetype & (7 << 29)) == 4 << 29) { | 281 | if ((cachetype & (7 << 29)) == 4 << 29) { |
| 282 | /* ARMv7 register format */ | 282 | /* ARMv7 register format */ |
| 283 | arch = CPU_ARCH_ARMv7; | ||
| 283 | cacheid = CACHEID_VIPT_NONALIASING; | 284 | cacheid = CACHEID_VIPT_NONALIASING; |
| 284 | if ((cachetype & (3 << 14)) == 1 << 14) | 285 | if ((cachetype & (3 << 14)) == 1 << 14) |
| 285 | cacheid |= CACHEID_ASID_TAGGED; | 286 | cacheid |= CACHEID_ASID_TAGGED; |
| 286 | else if (cpu_has_aliasing_icache(CPU_ARCH_ARMv7)) | ||
| 287 | cacheid |= CACHEID_VIPT_I_ALIASING; | ||
| 288 | } else if (cachetype & (1 << 23)) { | ||
| 289 | cacheid = CACHEID_VIPT_ALIASING; | ||
| 290 | } else { | 287 | } else { |
| 291 | cacheid = CACHEID_VIPT_NONALIASING; | 288 | arch = CPU_ARCH_ARMv6; |
| 292 | if (cpu_has_aliasing_icache(CPU_ARCH_ARMv6)) | 289 | if (cachetype & (1 << 23)) |
| 293 | cacheid |= CACHEID_VIPT_I_ALIASING; | 290 | cacheid = CACHEID_VIPT_ALIASING; |
| 291 | else | ||
| 292 | cacheid = CACHEID_VIPT_NONALIASING; | ||
| 294 | } | 293 | } |
| 294 | if (cpu_has_aliasing_icache(arch)) | ||
| 295 | cacheid |= CACHEID_VIPT_I_ALIASING; | ||
| 295 | } else { | 296 | } else { |
| 296 | cacheid = CACHEID_VIVT; | 297 | cacheid = CACHEID_VIVT; |
| 297 | } | 298 | } |
diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c index 2c277d40cee6..01c186222f3b 100644 --- a/arch/arm/kernel/smp_twd.c +++ b/arch/arm/kernel/smp_twd.c | |||
| @@ -137,8 +137,8 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk) | |||
| 137 | clk->max_delta_ns = clockevent_delta2ns(0xffffffff, clk); | 137 | clk->max_delta_ns = clockevent_delta2ns(0xffffffff, clk); |
| 138 | clk->min_delta_ns = clockevent_delta2ns(0xf, clk); | 138 | clk->min_delta_ns = clockevent_delta2ns(0xf, clk); |
| 139 | 139 | ||
| 140 | clockevents_register_device(clk); | ||
| 141 | |||
| 140 | /* Make sure our local interrupt controller has this enabled */ | 142 | /* Make sure our local interrupt controller has this enabled */ |
| 141 | gic_enable_ppi(clk->irq); | 143 | gic_enable_ppi(clk->irq); |
| 142 | |||
| 143 | clockevents_register_device(clk); | ||
| 144 | } | 144 | } |
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index d522b47e30b5..6c8e3b5f669f 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c | |||
| @@ -157,7 +157,7 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
| 157 | CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk), | 157 | CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk), |
| 158 | CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tc0_clk), | 158 | CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tc0_clk), |
| 159 | CLKDEV_CON_DEV_ID("t1_clk", "atmel_tcb.0", &tc1_clk), | 159 | CLKDEV_CON_DEV_ID("t1_clk", "atmel_tcb.0", &tc1_clk), |
| 160 | CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.0", &tc1_clk), | 160 | CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.0", &tc2_clk), |
| 161 | CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), | 161 | CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), |
| 162 | CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), | 162 | CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), |
| 163 | CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk), | 163 | CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk), |
diff --git a/arch/arm/mach-cns3xxx/include/mach/entry-macro.S b/arch/arm/mach-cns3xxx/include/mach/entry-macro.S index 6bd83ed90afe..d87bfc397d39 100644 --- a/arch/arm/mach-cns3xxx/include/mach/entry-macro.S +++ b/arch/arm/mach-cns3xxx/include/mach/entry-macro.S | |||
| @@ -8,7 +8,6 @@ | |||
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <mach/hardware.h> | ||
| 12 | #include <asm/hardware/entry-macro-gic.S> | 11 | #include <asm/hardware/entry-macro-gic.S> |
| 13 | 12 | ||
| 14 | .macro disable_fiq | 13 | .macro disable_fiq |
diff --git a/arch/arm/mach-cns3xxx/include/mach/system.h b/arch/arm/mach-cns3xxx/include/mach/system.h index 58bb03ae3cf4..4f16c9b79f78 100644 --- a/arch/arm/mach-cns3xxx/include/mach/system.h +++ b/arch/arm/mach-cns3xxx/include/mach/system.h | |||
| @@ -13,7 +13,6 @@ | |||
| 13 | 13 | ||
| 14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
| 15 | #include <asm/proc-fns.h> | 15 | #include <asm/proc-fns.h> |
| 16 | #include <mach/hardware.h> | ||
| 17 | 16 | ||
| 18 | static inline void arch_idle(void) | 17 | static inline void arch_idle(void) |
| 19 | { | 18 | { |
diff --git a/arch/arm/mach-cns3xxx/include/mach/uncompress.h b/arch/arm/mach-cns3xxx/include/mach/uncompress.h index de8ead9b91f7..a91b6058ab4f 100644 --- a/arch/arm/mach-cns3xxx/include/mach/uncompress.h +++ b/arch/arm/mach-cns3xxx/include/mach/uncompress.h | |||
| @@ -8,7 +8,6 @@ | |||
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <asm/mach-types.h> | 10 | #include <asm/mach-types.h> |
| 11 | #include <mach/hardware.h> | ||
| 12 | #include <mach/cns3xxx.h> | 11 | #include <mach/cns3xxx.h> |
| 13 | 12 | ||
| 14 | #define AMBA_UART_DR(base) (*(volatile unsigned char *)((base) + 0x00)) | 13 | #define AMBA_UART_DR(base) (*(volatile unsigned char *)((base) + 0x00)) |
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c index 06fd25d70aec..0f8fca48a5ed 100644 --- a/arch/arm/mach-cns3xxx/pcie.c +++ b/arch/arm/mach-cns3xxx/pcie.c | |||
| @@ -49,7 +49,7 @@ static struct cns3xxx_pcie *sysdata_to_cnspci(void *sysdata) | |||
| 49 | return &cns3xxx_pcie[root->domain]; | 49 | return &cns3xxx_pcie[root->domain]; |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | static struct cns3xxx_pcie *pdev_to_cnspci(struct pci_dev *dev) | 52 | static struct cns3xxx_pcie *pdev_to_cnspci(const struct pci_dev *dev) |
| 53 | { | 53 | { |
| 54 | return sysdata_to_cnspci(dev->sysdata); | 54 | return sysdata_to_cnspci(dev->sysdata); |
| 55 | } | 55 | } |
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index bd5394537c88..008d51407cd7 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c | |||
| @@ -115,6 +115,32 @@ static struct spi_board_info da850evm_spi_info[] = { | |||
| 115 | }, | 115 | }, |
| 116 | }; | 116 | }; |
| 117 | 117 | ||
| 118 | #ifdef CONFIG_MTD | ||
| 119 | static void da850_evm_m25p80_notify_add(struct mtd_info *mtd) | ||
| 120 | { | ||
| 121 | char *mac_addr = davinci_soc_info.emac_pdata->mac_addr; | ||
| 122 | size_t retlen; | ||
| 123 | |||
| 124 | if (!strcmp(mtd->name, "MAC-Address")) { | ||
| 125 | mtd->read(mtd, 0, ETH_ALEN, &retlen, mac_addr); | ||
| 126 | if (retlen == ETH_ALEN) | ||
| 127 | pr_info("Read MAC addr from SPI Flash: %pM\n", | ||
| 128 | mac_addr); | ||
| 129 | } | ||
| 130 | } | ||
| 131 | |||
| 132 | static struct mtd_notifier da850evm_spi_notifier = { | ||
| 133 | .add = da850_evm_m25p80_notify_add, | ||
| 134 | }; | ||
| 135 | |||
| 136 | static void da850_evm_setup_mac_addr(void) | ||
| 137 | { | ||
| 138 | register_mtd_user(&da850evm_spi_notifier); | ||
| 139 | } | ||
| 140 | #else | ||
| 141 | static void da850_evm_setup_mac_addr(void) { } | ||
| 142 | #endif | ||
| 143 | |||
| 118 | static struct mtd_partition da850_evm_norflash_partition[] = { | 144 | static struct mtd_partition da850_evm_norflash_partition[] = { |
| 119 | { | 145 | { |
| 120 | .name = "bootloaders + env", | 146 | .name = "bootloaders + env", |
| @@ -1244,6 +1270,8 @@ static __init void da850_evm_init(void) | |||
| 1244 | if (ret) | 1270 | if (ret) |
| 1245 | pr_warning("da850_evm_init: sata registration failed: %d\n", | 1271 | pr_warning("da850_evm_init: sata registration failed: %d\n", |
| 1246 | ret); | 1272 | ret); |
| 1273 | |||
| 1274 | da850_evm_setup_mac_addr(); | ||
| 1247 | } | 1275 | } |
| 1248 | 1276 | ||
| 1249 | #ifdef CONFIG_SERIAL_8250_CONSOLE | 1277 | #ifdef CONFIG_SERIAL_8250_CONSOLE |
diff --git a/arch/arm/mach-davinci/include/mach/psc.h b/arch/arm/mach-davinci/include/mach/psc.h index 47fd0bc3d3e7..fa59c097223d 100644 --- a/arch/arm/mach-davinci/include/mach/psc.h +++ b/arch/arm/mach-davinci/include/mach/psc.h | |||
| @@ -243,7 +243,7 @@ | |||
| 243 | #define PSC_STATE_DISABLE 2 | 243 | #define PSC_STATE_DISABLE 2 |
| 244 | #define PSC_STATE_ENABLE 3 | 244 | #define PSC_STATE_ENABLE 3 |
| 245 | 245 | ||
| 246 | #define MDSTAT_STATE_MASK 0x1f | 246 | #define MDSTAT_STATE_MASK 0x3f |
| 247 | #define MDCTL_FORCE BIT(31) | 247 | #define MDCTL_FORCE BIT(31) |
| 248 | 248 | ||
| 249 | #ifndef __ASSEMBLER__ | 249 | #ifndef __ASSEMBLER__ |
diff --git a/arch/arm/mach-davinci/sleep.S b/arch/arm/mach-davinci/sleep.S index fb5e72b532b0..5f1e045a3ad1 100644 --- a/arch/arm/mach-davinci/sleep.S +++ b/arch/arm/mach-davinci/sleep.S | |||
| @@ -217,7 +217,11 @@ ddr2clk_stop_done: | |||
| 217 | ENDPROC(davinci_ddr_psc_config) | 217 | ENDPROC(davinci_ddr_psc_config) |
| 218 | 218 | ||
| 219 | CACHE_FLUSH: | 219 | CACHE_FLUSH: |
| 220 | .word arm926_flush_kern_cache_all | 220 | #ifdef CONFIG_CPU_V6 |
| 221 | .word v6_flush_kern_cache_all | ||
| 222 | #else | ||
| 223 | .word arm926_flush_kern_cache_all | ||
| 224 | #endif | ||
| 221 | 225 | ||
| 222 | ENTRY(davinci_cpu_suspend_sz) | 226 | ENTRY(davinci_cpu_suspend_sz) |
| 223 | .word . - davinci_cpu_suspend | 227 | .word . - davinci_cpu_suspend |
diff --git a/arch/arm/mach-ep93xx/include/mach/ts72xx.h b/arch/arm/mach-ep93xx/include/mach/ts72xx.h index 0eabec62cd9d..f1397a13e76b 100644 --- a/arch/arm/mach-ep93xx/include/mach/ts72xx.h +++ b/arch/arm/mach-ep93xx/include/mach/ts72xx.h | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | * TS72xx memory map: | 6 | * TS72xx memory map: |
| 7 | * | 7 | * |
| 8 | * virt phys size | 8 | * virt phys size |
| 9 | * febff000 22000000 4K model number register | 9 | * febff000 22000000 4K model number register (bits 0-2) |
| 10 | * febfe000 22400000 4K options register | 10 | * febfe000 22400000 4K options register |
| 11 | * febfd000 22800000 4K options register #2 | 11 | * febfd000 22800000 4K options register #2 |
| 12 | * febf9000 10800000 4K TS-5620 RTC index register | 12 | * febf9000 10800000 4K TS-5620 RTC index register |
| @@ -20,6 +20,9 @@ | |||
| 20 | #define TS72XX_MODEL_TS7200 0x00 | 20 | #define TS72XX_MODEL_TS7200 0x00 |
| 21 | #define TS72XX_MODEL_TS7250 0x01 | 21 | #define TS72XX_MODEL_TS7250 0x01 |
| 22 | #define TS72XX_MODEL_TS7260 0x02 | 22 | #define TS72XX_MODEL_TS7260 0x02 |
| 23 | #define TS72XX_MODEL_TS7300 0x03 | ||
| 24 | #define TS72XX_MODEL_TS7400 0x04 | ||
| 25 | #define TS72XX_MODEL_MASK 0x07 | ||
| 23 | 26 | ||
| 24 | 27 | ||
| 25 | #define TS72XX_OPTIONS_PHYS_BASE 0x22400000 | 28 | #define TS72XX_OPTIONS_PHYS_BASE 0x22400000 |
| @@ -51,19 +54,34 @@ | |||
| 51 | 54 | ||
| 52 | #ifndef __ASSEMBLY__ | 55 | #ifndef __ASSEMBLY__ |
| 53 | 56 | ||
| 57 | static inline int ts72xx_model(void) | ||
| 58 | { | ||
| 59 | return __raw_readb(TS72XX_MODEL_VIRT_BASE) & TS72XX_MODEL_MASK; | ||
| 60 | } | ||
| 61 | |||
| 54 | static inline int board_is_ts7200(void) | 62 | static inline int board_is_ts7200(void) |
| 55 | { | 63 | { |
| 56 | return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7200; | 64 | return ts72xx_model() == TS72XX_MODEL_TS7200; |
| 57 | } | 65 | } |
| 58 | 66 | ||
| 59 | static inline int board_is_ts7250(void) | 67 | static inline int board_is_ts7250(void) |
| 60 | { | 68 | { |
| 61 | return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7250; | 69 | return ts72xx_model() == TS72XX_MODEL_TS7250; |
| 62 | } | 70 | } |
| 63 | 71 | ||
| 64 | static inline int board_is_ts7260(void) | 72 | static inline int board_is_ts7260(void) |
| 65 | { | 73 | { |
| 66 | return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7260; | 74 | return ts72xx_model() == TS72XX_MODEL_TS7260; |
| 75 | } | ||
| 76 | |||
| 77 | static inline int board_is_ts7300(void) | ||
| 78 | { | ||
| 79 | return ts72xx_model() == TS72XX_MODEL_TS7300; | ||
| 80 | } | ||
| 81 | |||
| 82 | static inline int board_is_ts7400(void) | ||
| 83 | { | ||
| 84 | return ts72xx_model() == TS72XX_MODEL_TS7400; | ||
| 67 | } | 85 | } |
| 68 | 86 | ||
| 69 | static inline int is_max197_installed(void) | 87 | static inline int is_max197_installed(void) |
diff --git a/arch/arm/mach-exynos4/clock.c b/arch/arm/mach-exynos4/clock.c index 851dea018578..1561b036a9bf 100644 --- a/arch/arm/mach-exynos4/clock.c +++ b/arch/arm/mach-exynos4/clock.c | |||
| @@ -520,7 +520,7 @@ static struct clk init_clocks_off[] = { | |||
| 520 | .ctrlbit = (1 << 21), | 520 | .ctrlbit = (1 << 21), |
| 521 | }, { | 521 | }, { |
| 522 | .name = "ac97", | 522 | .name = "ac97", |
| 523 | .id = -1, | 523 | .devname = "samsung-ac97", |
| 524 | .enable = exynos4_clk_ip_peril_ctrl, | 524 | .enable = exynos4_clk_ip_peril_ctrl, |
| 525 | .ctrlbit = (1 << 27), | 525 | .ctrlbit = (1 << 27), |
| 526 | }, { | 526 | }, { |
diff --git a/arch/arm/mach-exynos4/cpu.c b/arch/arm/mach-exynos4/cpu.c index 2d8a40c9e6e5..746d6fc6d397 100644 --- a/arch/arm/mach-exynos4/cpu.c +++ b/arch/arm/mach-exynos4/cpu.c | |||
| @@ -24,12 +24,13 @@ | |||
| 24 | #include <plat/exynos4.h> | 24 | #include <plat/exynos4.h> |
| 25 | #include <plat/adc-core.h> | 25 | #include <plat/adc-core.h> |
| 26 | #include <plat/sdhci.h> | 26 | #include <plat/sdhci.h> |
| 27 | #include <plat/devs.h> | ||
| 28 | #include <plat/fb-core.h> | 27 | #include <plat/fb-core.h> |
| 29 | #include <plat/fimc-core.h> | 28 | #include <plat/fimc-core.h> |
| 30 | #include <plat/iic-core.h> | 29 | #include <plat/iic-core.h> |
| 30 | #include <plat/reset.h> | ||
| 31 | 31 | ||
| 32 | #include <mach/regs-irq.h> | 32 | #include <mach/regs-irq.h> |
| 33 | #include <mach/regs-pmu.h> | ||
| 33 | 34 | ||
| 34 | extern int combiner_init(unsigned int combiner_nr, void __iomem *base, | 35 | extern int combiner_init(unsigned int combiner_nr, void __iomem *base, |
| 35 | unsigned int irq_start); | 36 | unsigned int irq_start); |
| @@ -128,6 +129,11 @@ static void exynos4_idle(void) | |||
| 128 | local_irq_enable(); | 129 | local_irq_enable(); |
| 129 | } | 130 | } |
| 130 | 131 | ||
| 132 | static void exynos4_sw_reset(void) | ||
| 133 | { | ||
| 134 | __raw_writel(0x1, S5P_SWRESET); | ||
| 135 | } | ||
| 136 | |||
| 131 | /* | 137 | /* |
| 132 | * exynos4_map_io | 138 | * exynos4_map_io |
| 133 | * | 139 | * |
| @@ -241,5 +247,8 @@ int __init exynos4_init(void) | |||
| 241 | /* set idle function */ | 247 | /* set idle function */ |
| 242 | pm_idle = exynos4_idle; | 248 | pm_idle = exynos4_idle; |
| 243 | 249 | ||
| 250 | /* set sw_reset function */ | ||
| 251 | s5p_reset_hook = exynos4_sw_reset; | ||
| 252 | |||
| 244 | return sysdev_register(&exynos4_sysdev); | 253 | return sysdev_register(&exynos4_sysdev); |
| 245 | } | 254 | } |
diff --git a/arch/arm/mach-exynos4/include/mach/irqs.h b/arch/arm/mach-exynos4/include/mach/irqs.h index 934d2a493982..f8952f8f3757 100644 --- a/arch/arm/mach-exynos4/include/mach/irqs.h +++ b/arch/arm/mach-exynos4/include/mach/irqs.h | |||
| @@ -80,9 +80,8 @@ | |||
| 80 | #define IRQ_HSMMC3 IRQ_SPI(76) | 80 | #define IRQ_HSMMC3 IRQ_SPI(76) |
| 81 | #define IRQ_DWMCI IRQ_SPI(77) | 81 | #define IRQ_DWMCI IRQ_SPI(77) |
| 82 | 82 | ||
| 83 | #define IRQ_MIPICSI0 IRQ_SPI(78) | 83 | #define IRQ_MIPI_CSIS0 IRQ_SPI(78) |
| 84 | 84 | #define IRQ_MIPI_CSIS1 IRQ_SPI(80) | |
| 85 | #define IRQ_MIPICSI1 IRQ_SPI(80) | ||
| 86 | 85 | ||
| 87 | #define IRQ_ONENAND_AUDI IRQ_SPI(82) | 86 | #define IRQ_ONENAND_AUDI IRQ_SPI(82) |
| 88 | #define IRQ_ROTATOR IRQ_SPI(83) | 87 | #define IRQ_ROTATOR IRQ_SPI(83) |
diff --git a/arch/arm/mach-exynos4/include/mach/regs-pmu.h b/arch/arm/mach-exynos4/include/mach/regs-pmu.h index fa49bbb8e7b0..cdf9b47c303c 100644 --- a/arch/arm/mach-exynos4/include/mach/regs-pmu.h +++ b/arch/arm/mach-exynos4/include/mach/regs-pmu.h | |||
| @@ -29,6 +29,8 @@ | |||
| 29 | #define S5P_USE_STANDBY_WFE1 (1 << 25) | 29 | #define S5P_USE_STANDBY_WFE1 (1 << 25) |
| 30 | #define S5P_USE_MASK ((0x3 << 16) | (0x3 << 24)) | 30 | #define S5P_USE_MASK ((0x3 << 16) | (0x3 << 24)) |
| 31 | 31 | ||
| 32 | #define S5P_SWRESET S5P_PMUREG(0x0400) | ||
| 33 | |||
| 32 | #define S5P_WAKEUP_STAT S5P_PMUREG(0x0600) | 34 | #define S5P_WAKEUP_STAT S5P_PMUREG(0x0600) |
| 33 | #define S5P_EINT_WAKEUP_MASK S5P_PMUREG(0x0604) | 35 | #define S5P_EINT_WAKEUP_MASK S5P_PMUREG(0x0604) |
| 34 | #define S5P_WAKEUP_MASK S5P_PMUREG(0x0608) | 36 | #define S5P_WAKEUP_MASK S5P_PMUREG(0x0608) |
diff --git a/arch/arm/mach-exynos4/irq-eint.c b/arch/arm/mach-exynos4/irq-eint.c index 9d87d2ac7f68..badb8c66fc9b 100644 --- a/arch/arm/mach-exynos4/irq-eint.c +++ b/arch/arm/mach-exynos4/irq-eint.c | |||
| @@ -23,6 +23,8 @@ | |||
| 23 | 23 | ||
| 24 | #include <mach/regs-gpio.h> | 24 | #include <mach/regs-gpio.h> |
| 25 | 25 | ||
| 26 | #include <asm/mach/irq.h> | ||
| 27 | |||
| 26 | static DEFINE_SPINLOCK(eint_lock); | 28 | static DEFINE_SPINLOCK(eint_lock); |
| 27 | 29 | ||
| 28 | static unsigned int eint0_15_data[16]; | 30 | static unsigned int eint0_15_data[16]; |
| @@ -184,8 +186,11 @@ static inline void exynos4_irq_demux_eint(unsigned int start) | |||
| 184 | 186 | ||
| 185 | static void exynos4_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc) | 187 | static void exynos4_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc) |
| 186 | { | 188 | { |
| 189 | struct irq_chip *chip = irq_get_chip(irq); | ||
| 190 | chained_irq_enter(chip, desc); | ||
| 187 | exynos4_irq_demux_eint(IRQ_EINT(16)); | 191 | exynos4_irq_demux_eint(IRQ_EINT(16)); |
| 188 | exynos4_irq_demux_eint(IRQ_EINT(24)); | 192 | exynos4_irq_demux_eint(IRQ_EINT(24)); |
| 193 | chained_irq_exit(chip, desc); | ||
| 189 | } | 194 | } |
| 190 | 195 | ||
| 191 | static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc) | 196 | static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc) |
| @@ -193,6 +198,7 @@ static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc) | |||
| 193 | u32 *irq_data = irq_get_handler_data(irq); | 198 | u32 *irq_data = irq_get_handler_data(irq); |
| 194 | struct irq_chip *chip = irq_get_chip(irq); | 199 | struct irq_chip *chip = irq_get_chip(irq); |
| 195 | 200 | ||
| 201 | chained_irq_enter(chip, desc); | ||
| 196 | chip->irq_mask(&desc->irq_data); | 202 | chip->irq_mask(&desc->irq_data); |
| 197 | 203 | ||
| 198 | if (chip->irq_ack) | 204 | if (chip->irq_ack) |
| @@ -201,6 +207,7 @@ static void exynos4_irq_eint0_15(unsigned int irq, struct irq_desc *desc) | |||
| 201 | generic_handle_irq(*irq_data); | 207 | generic_handle_irq(*irq_data); |
| 202 | 208 | ||
| 203 | chip->irq_unmask(&desc->irq_data); | 209 | chip->irq_unmask(&desc->irq_data); |
| 210 | chained_irq_exit(chip, desc); | ||
| 204 | } | 211 | } |
| 205 | 212 | ||
| 206 | int __init exynos4_init_irq_eint(void) | 213 | int __init exynos4_init_irq_eint(void) |
diff --git a/arch/arm/mach-exynos4/mach-universal_c210.c b/arch/arm/mach-exynos4/mach-universal_c210.c index 0e280d12301e..b3b5d8911004 100644 --- a/arch/arm/mach-exynos4/mach-universal_c210.c +++ b/arch/arm/mach-exynos4/mach-universal_c210.c | |||
| @@ -79,7 +79,7 @@ static struct s3c2410_uartcfg universal_uartcfgs[] __initdata = { | |||
| 79 | }; | 79 | }; |
| 80 | 80 | ||
| 81 | static struct regulator_consumer_supply max8952_consumer = | 81 | static struct regulator_consumer_supply max8952_consumer = |
| 82 | REGULATOR_SUPPLY("vddarm", NULL); | 82 | REGULATOR_SUPPLY("vdd_arm", NULL); |
| 83 | 83 | ||
| 84 | static struct max8952_platform_data universal_max8952_pdata __initdata = { | 84 | static struct max8952_platform_data universal_max8952_pdata __initdata = { |
| 85 | .gpio_vid0 = EXYNOS4_GPX0(3), | 85 | .gpio_vid0 = EXYNOS4_GPX0(3), |
| @@ -105,7 +105,7 @@ static struct max8952_platform_data universal_max8952_pdata __initdata = { | |||
| 105 | }; | 105 | }; |
| 106 | 106 | ||
| 107 | static struct regulator_consumer_supply lp3974_buck1_consumer = | 107 | static struct regulator_consumer_supply lp3974_buck1_consumer = |
| 108 | REGULATOR_SUPPLY("vddint", NULL); | 108 | REGULATOR_SUPPLY("vdd_int", NULL); |
| 109 | 109 | ||
| 110 | static struct regulator_consumer_supply lp3974_buck2_consumer = | 110 | static struct regulator_consumer_supply lp3974_buck2_consumer = |
| 111 | REGULATOR_SUPPLY("vddg3d", NULL); | 111 | REGULATOR_SUPPLY("vddg3d", NULL); |
diff --git a/arch/arm/mach-exynos4/setup-usb-phy.c b/arch/arm/mach-exynos4/setup-usb-phy.c index 0883c1b824b9..39aca045f660 100644 --- a/arch/arm/mach-exynos4/setup-usb-phy.c +++ b/arch/arm/mach-exynos4/setup-usb-phy.c | |||
| @@ -82,7 +82,7 @@ static int exynos4_usb_phy1_init(struct platform_device *pdev) | |||
| 82 | 82 | ||
| 83 | rstcon &= ~(HOST_LINK_PORT_SWRST_MASK | PHY1_SWRST_MASK); | 83 | rstcon &= ~(HOST_LINK_PORT_SWRST_MASK | PHY1_SWRST_MASK); |
| 84 | writel(rstcon, EXYNOS4_RSTCON); | 84 | writel(rstcon, EXYNOS4_RSTCON); |
| 85 | udelay(50); | 85 | udelay(80); |
| 86 | 86 | ||
| 87 | clk_disable(otg_clk); | 87 | clk_disable(otg_clk); |
| 88 | clk_put(otg_clk); | 88 | clk_put(otg_clk); |
diff --git a/arch/arm/mach-footbridge/Kconfig b/arch/arm/mach-footbridge/Kconfig index dc26fff22cf0..c8e7afcf14ec 100644 --- a/arch/arm/mach-footbridge/Kconfig +++ b/arch/arm/mach-footbridge/Kconfig | |||
| @@ -62,6 +62,7 @@ config ARCH_EBSA285_HOST | |||
| 62 | config ARCH_NETWINDER | 62 | config ARCH_NETWINDER |
| 63 | bool "NetWinder" | 63 | bool "NetWinder" |
| 64 | select CLKSRC_I8253 | 64 | select CLKSRC_I8253 |
| 65 | select CLKEVT_I8253 | ||
| 65 | select FOOTBRIDGE_HOST | 66 | select FOOTBRIDGE_HOST |
| 66 | select ISA | 67 | select ISA |
| 67 | select ISA_DMA | 68 | select ISA_DMA |
diff --git a/arch/arm/mach-footbridge/dc21285.c b/arch/arm/mach-footbridge/dc21285.c index 1331fff51ae2..18c32a5541d9 100644 --- a/arch/arm/mach-footbridge/dc21285.c +++ b/arch/arm/mach-footbridge/dc21285.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <linux/irq.h> | 18 | #include <linux/irq.h> |
| 19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
| 20 | #include <linux/spinlock.h> | 20 | #include <linux/spinlock.h> |
| 21 | #include <video/vga.h> | ||
| 21 | 22 | ||
| 22 | #include <asm/irq.h> | 23 | #include <asm/irq.h> |
| 23 | #include <asm/system.h> | 24 | #include <asm/system.h> |
diff --git a/arch/arm/mach-imx/mach-cpuimx27.c b/arch/arm/mach-imx/mach-cpuimx27.c index 87887ac5806b..f851fe903687 100644 --- a/arch/arm/mach-imx/mach-cpuimx27.c +++ b/arch/arm/mach-imx/mach-cpuimx27.c | |||
| @@ -310,7 +310,7 @@ static struct sys_timer eukrea_cpuimx27_timer = { | |||
| 310 | .init = eukrea_cpuimx27_timer_init, | 310 | .init = eukrea_cpuimx27_timer_init, |
| 311 | }; | 311 | }; |
| 312 | 312 | ||
| 313 | MACHINE_START(CPUIMX27, "EUKREA CPUIMX27") | 313 | MACHINE_START(EUKREA_CPUIMX27, "EUKREA CPUIMX27") |
| 314 | .boot_params = MX27_PHYS_OFFSET + 0x100, | 314 | .boot_params = MX27_PHYS_OFFSET + 0x100, |
| 315 | .map_io = mx27_map_io, | 315 | .map_io = mx27_map_io, |
| 316 | .init_early = imx27_init_early, | 316 | .init_early = imx27_init_early, |
diff --git a/arch/arm/mach-imx/mach-cpuimx35.c b/arch/arm/mach-imx/mach-cpuimx35.c index f39a478ba1a6..4bd083ba9af2 100644 --- a/arch/arm/mach-imx/mach-cpuimx35.c +++ b/arch/arm/mach-imx/mach-cpuimx35.c | |||
| @@ -192,7 +192,7 @@ struct sys_timer eukrea_cpuimx35_timer = { | |||
| 192 | .init = eukrea_cpuimx35_timer_init, | 192 | .init = eukrea_cpuimx35_timer_init, |
| 193 | }; | 193 | }; |
| 194 | 194 | ||
| 195 | MACHINE_START(EUKREA_CPUIMX35, "Eukrea CPUIMX35") | 195 | MACHINE_START(EUKREA_CPUIMX35SD, "Eukrea CPUIMX35") |
| 196 | /* Maintainer: Eukrea Electromatique */ | 196 | /* Maintainer: Eukrea Electromatique */ |
| 197 | .boot_params = MX3x_PHYS_OFFSET + 0x100, | 197 | .boot_params = MX3x_PHYS_OFFSET + 0x100, |
| 198 | .map_io = mx35_map_io, | 198 | .map_io = mx35_map_io, |
diff --git a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c index da36da52969d..2442d5da883d 100644 --- a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c +++ b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c | |||
| @@ -161,7 +161,7 @@ static struct sys_timer eukrea_cpuimx25_timer = { | |||
| 161 | .init = eukrea_cpuimx25_timer_init, | 161 | .init = eukrea_cpuimx25_timer_init, |
| 162 | }; | 162 | }; |
| 163 | 163 | ||
| 164 | MACHINE_START(EUKREA_CPUIMX25, "Eukrea CPUIMX25") | 164 | MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25") |
| 165 | /* Maintainer: Eukrea Electromatique */ | 165 | /* Maintainer: Eukrea Electromatique */ |
| 166 | .boot_params = MX25_PHYS_OFFSET + 0x100, | 166 | .boot_params = MX25_PHYS_OFFSET + 0x100, |
| 167 | .map_io = mx25_map_io, | 167 | .map_io = mx25_map_io, |
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index a6eddae82a0b..c105556a0ee1 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c | |||
| @@ -77,7 +77,7 @@ static int __init dns323_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
| 77 | /* | 77 | /* |
| 78 | * Check for devices with hard-wired IRQs. | 78 | * Check for devices with hard-wired IRQs. |
| 79 | */ | 79 | */ |
| 80 | irq = orion5x_pci_map_irq(const dev, slot, pin); | 80 | irq = orion5x_pci_map_irq(dev, slot, pin); |
| 81 | if (irq != -1) | 81 | if (irq != -1) |
| 82 | return irq; | 82 | return irq; |
| 83 | 83 | ||
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c index 28b8760ab9fa..bc4a920e26ee 100644 --- a/arch/arm/mach-orion5x/pci.c +++ b/arch/arm/mach-orion5x/pci.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/pci.h> | 14 | #include <linux/pci.h> |
| 15 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
| 16 | #include <linux/mbus.h> | 16 | #include <linux/mbus.h> |
| 17 | #include <video/vga.h> | ||
| 17 | #include <asm/irq.h> | 18 | #include <asm/irq.h> |
| 18 | #include <asm/mach/pci.h> | 19 | #include <asm/mach/pci.h> |
| 19 | #include <plat/pcie.h> | 20 | #include <plat/pcie.h> |
diff --git a/arch/arm/mach-realview/include/mach/system.h b/arch/arm/mach-realview/include/mach/system.h index a30f2e3ec178..6657ff231161 100644 --- a/arch/arm/mach-realview/include/mach/system.h +++ b/arch/arm/mach-realview/include/mach/system.h | |||
| @@ -44,6 +44,7 @@ static inline void arch_reset(char mode, const char *cmd) | |||
| 44 | */ | 44 | */ |
| 45 | if (realview_reset) | 45 | if (realview_reset) |
| 46 | realview_reset(mode); | 46 | realview_reset(mode); |
| 47 | dsb(); | ||
| 47 | } | 48 | } |
| 48 | 49 | ||
| 49 | #endif | 50 | #endif |
diff --git a/arch/arm/mach-s3c64xx/pm.c b/arch/arm/mach-s3c64xx/pm.c index 8bad64370689..055e2858b0dd 100644 --- a/arch/arm/mach-s3c64xx/pm.c +++ b/arch/arm/mach-s3c64xx/pm.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/suspend.h> | 16 | #include <linux/suspend.h> |
| 17 | #include <linux/serial_core.h> | 17 | #include <linux/serial_core.h> |
| 18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
| 19 | #include <linux/gpio.h> | ||
| 19 | 20 | ||
| 20 | #include <mach/map.h> | 21 | #include <mach/map.h> |
| 21 | #include <mach/irqs.h> | 22 | #include <mach/irqs.h> |
diff --git a/arch/arm/mach-s5p64x0/irq-eint.c b/arch/arm/mach-s5p64x0/irq-eint.c index 69ed4545112b..fe7380f5c3cd 100644 --- a/arch/arm/mach-s5p64x0/irq-eint.c +++ b/arch/arm/mach-s5p64x0/irq-eint.c | |||
| @@ -129,7 +129,7 @@ static int s5p64x0_alloc_gc(void) | |||
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | ct = gc->chip_types; | 131 | ct = gc->chip_types; |
| 132 | ct->chip.irq_ack = irq_gc_ack; | 132 | ct->chip.irq_ack = irq_gc_ack_set_bit; |
| 133 | ct->chip.irq_mask = irq_gc_mask_set_bit; | 133 | ct->chip.irq_mask = irq_gc_mask_set_bit; |
| 134 | ct->chip.irq_unmask = irq_gc_mask_clr_bit; | 134 | ct->chip.irq_unmask = irq_gc_mask_clr_bit; |
| 135 | ct->chip.irq_set_type = s5p64x0_irq_eint_set_type; | 135 | ct->chip.irq_set_type = s5p64x0_irq_eint_set_type; |
diff --git a/arch/arm/mach-s5pv210/pm.c b/arch/arm/mach-s5pv210/pm.c index 309e388a8a83..f149d278377b 100644 --- a/arch/arm/mach-s5pv210/pm.c +++ b/arch/arm/mach-s5pv210/pm.c | |||
| @@ -88,7 +88,7 @@ static struct sleep_save s5pv210_core_save[] = { | |||
| 88 | SAVE_ITEM(S3C2410_TCNTO(0)), | 88 | SAVE_ITEM(S3C2410_TCNTO(0)), |
| 89 | }; | 89 | }; |
| 90 | 90 | ||
| 91 | void s5pv210_cpu_suspend(unsigned long arg) | 91 | static int s5pv210_cpu_suspend(unsigned long arg) |
| 92 | { | 92 | { |
| 93 | unsigned long tmp; | 93 | unsigned long tmp; |
| 94 | 94 | ||
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index ce5c2513c6ce..cdfdd624d21d 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c | |||
| @@ -341,6 +341,7 @@ static struct platform_device mipidsi0_device = { | |||
| 341 | static struct sh_mobile_sdhi_info sdhi0_info = { | 341 | static struct sh_mobile_sdhi_info sdhi0_info = { |
| 342 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 342 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
| 343 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 343 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
| 344 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT, | ||
| 344 | .tmio_caps = MMC_CAP_SD_HIGHSPEED, | 345 | .tmio_caps = MMC_CAP_SD_HIGHSPEED, |
| 345 | .tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29, | 346 | .tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29, |
| 346 | }; | 347 | }; |
| @@ -382,7 +383,7 @@ void ag5evm_sdhi1_set_pwr(struct platform_device *pdev, int state) | |||
| 382 | } | 383 | } |
| 383 | 384 | ||
| 384 | static struct sh_mobile_sdhi_info sh_sdhi1_info = { | 385 | static struct sh_mobile_sdhi_info sh_sdhi1_info = { |
| 385 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE, | 386 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT, |
| 386 | .tmio_caps = MMC_CAP_NONREMOVABLE | MMC_CAP_SDIO_IRQ, | 387 | .tmio_caps = MMC_CAP_NONREMOVABLE | MMC_CAP_SDIO_IRQ, |
| 387 | .tmio_ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, | 388 | .tmio_ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, |
| 388 | .set_pwr = ag5evm_sdhi1_set_pwr, | 389 | .set_pwr = ag5evm_sdhi1_set_pwr, |
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index 0ea71f8d4b89..17c19dc25604 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c | |||
| @@ -641,6 +641,8 @@ static struct usbhs_private usbhs0_private = { | |||
| 641 | }, | 641 | }, |
| 642 | .driver_param = { | 642 | .driver_param = { |
| 643 | .buswait_bwait = 4, | 643 | .buswait_bwait = 4, |
| 644 | .d0_tx_id = SHDMA_SLAVE_USB0_TX, | ||
| 645 | .d1_rx_id = SHDMA_SLAVE_USB0_RX, | ||
| 644 | }, | 646 | }, |
| 645 | }, | 647 | }, |
| 646 | }; | 648 | }; |
| @@ -810,6 +812,8 @@ static struct usbhs_private usbhs1_private = { | |||
| 810 | .buswait_bwait = 4, | 812 | .buswait_bwait = 4, |
| 811 | .pipe_type = usbhs1_pipe_cfg, | 813 | .pipe_type = usbhs1_pipe_cfg, |
| 812 | .pipe_size = ARRAY_SIZE(usbhs1_pipe_cfg), | 814 | .pipe_size = ARRAY_SIZE(usbhs1_pipe_cfg), |
| 815 | .d0_tx_id = SHDMA_SLAVE_USB1_TX, | ||
| 816 | .d1_rx_id = SHDMA_SLAVE_USB1_RX, | ||
| 813 | }, | 817 | }, |
| 814 | }, | 818 | }, |
| 815 | }; | 819 | }; |
diff --git a/arch/arm/mach-shmobile/clock-sh7372.c b/arch/arm/mach-shmobile/clock-sh7372.c index e6e11e4e2d43..66975921e646 100644 --- a/arch/arm/mach-shmobile/clock-sh7372.c +++ b/arch/arm/mach-shmobile/clock-sh7372.c | |||
| @@ -503,16 +503,17 @@ static struct clk *late_main_clks[] = { | |||
| 503 | &sh7372_fsidivb_clk, | 503 | &sh7372_fsidivb_clk, |
| 504 | }; | 504 | }; |
| 505 | 505 | ||
| 506 | enum { MSTP001, | 506 | enum { MSTP001, MSTP000, |
| 507 | MSTP131, MSTP130, | 507 | MSTP131, MSTP130, |
| 508 | MSTP129, MSTP128, MSTP127, MSTP126, MSTP125, | 508 | MSTP129, MSTP128, MSTP127, MSTP126, MSTP125, |
| 509 | MSTP118, MSTP117, MSTP116, MSTP113, | 509 | MSTP118, MSTP117, MSTP116, MSTP113, |
| 510 | MSTP106, MSTP101, MSTP100, | 510 | MSTP106, MSTP101, MSTP100, |
| 511 | MSTP223, | 511 | MSTP223, |
| 512 | MSTP218, MSTP217, MSTP216, | 512 | MSTP218, MSTP217, MSTP216, MSTP214, MSTP208, MSTP207, |
| 513 | MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, | 513 | MSTP206, MSTP205, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, |
| 514 | MSTP329, MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312, | 514 | MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312, |
| 515 | MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP406, MSTP403, | 515 | MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP407, MSTP406, |
| 516 | MSTP405, MSTP404, MSTP403, MSTP400, | ||
| 516 | MSTP_NR }; | 517 | MSTP_NR }; |
| 517 | 518 | ||
| 518 | #define MSTP(_parent, _reg, _bit, _flags) \ | 519 | #define MSTP(_parent, _reg, _bit, _flags) \ |
| @@ -520,6 +521,7 @@ enum { MSTP001, | |||
| 520 | 521 | ||
| 521 | static struct clk mstp_clks[MSTP_NR] = { | 522 | static struct clk mstp_clks[MSTP_NR] = { |
| 522 | [MSTP001] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 1, 0), /* IIC2 */ | 523 | [MSTP001] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 1, 0), /* IIC2 */ |
| 524 | [MSTP000] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR0, 0, 0), /* MSIOF0 */ | ||
| 523 | [MSTP131] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 31, 0), /* VEU3 */ | 525 | [MSTP131] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 31, 0), /* VEU3 */ |
| 524 | [MSTP130] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 30, 0), /* VEU2 */ | 526 | [MSTP130] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 30, 0), /* VEU2 */ |
| 525 | [MSTP129] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 29, 0), /* VEU1 */ | 527 | [MSTP129] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 29, 0), /* VEU1 */ |
| @@ -538,14 +540,16 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
| 538 | [MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */ | 540 | [MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */ |
| 539 | [MSTP217] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */ | 541 | [MSTP217] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */ |
| 540 | [MSTP216] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 16, 0), /* DMAC3 */ | 542 | [MSTP216] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 16, 0), /* DMAC3 */ |
| 543 | [MSTP214] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 14, 0), /* USBDMAC */ | ||
| 544 | [MSTP208] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 8, 0), /* MSIOF1 */ | ||
| 541 | [MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */ | 545 | [MSTP207] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 7, 0), /* SCIFA5 */ |
| 542 | [MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */ | 546 | [MSTP206] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 6, 0), /* SCIFB */ |
| 547 | [MSTP205] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 5, 0), /* MSIOF2 */ | ||
| 543 | [MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */ | 548 | [MSTP204] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 4, 0), /* SCIFA0 */ |
| 544 | [MSTP203] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 3, 0), /* SCIFA1 */ | 549 | [MSTP203] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 3, 0), /* SCIFA1 */ |
| 545 | [MSTP202] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 2, 0), /* SCIFA2 */ | 550 | [MSTP202] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 2, 0), /* SCIFA2 */ |
| 546 | [MSTP201] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 1, 0), /* SCIFA3 */ | 551 | [MSTP201] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 1, 0), /* SCIFA3 */ |
| 547 | [MSTP200] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 0, 0), /* SCIFA4 */ | 552 | [MSTP200] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 0, 0), /* SCIFA4 */ |
| 548 | [MSTP329] = MSTP(&r_clk, SMSTPCR3, 29, 0), /* CMT10 */ | ||
| 549 | [MSTP328] = MSTP(&div6_clks[DIV6_SPU], SMSTPCR3, 28, 0), /* FSI2 */ | 553 | [MSTP328] = MSTP(&div6_clks[DIV6_SPU], SMSTPCR3, 28, 0), /* FSI2 */ |
| 550 | [MSTP323] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 23, 0), /* IIC1 */ | 554 | [MSTP323] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 23, 0), /* IIC1 */ |
| 551 | [MSTP322] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 22, 0), /* USB0 */ | 555 | [MSTP322] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 22, 0), /* USB0 */ |
| @@ -557,8 +561,12 @@ static struct clk mstp_clks[MSTP_NR] = { | |||
| 557 | [MSTP413] = MSTP(&pllc1_div2_clk, SMSTPCR4, 13, 0), /* HDMI */ | 561 | [MSTP413] = MSTP(&pllc1_div2_clk, SMSTPCR4, 13, 0), /* HDMI */ |
| 558 | [MSTP411] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 11, 0), /* IIC3 */ | 562 | [MSTP411] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 11, 0), /* IIC3 */ |
| 559 | [MSTP410] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 10, 0), /* IIC4 */ | 563 | [MSTP410] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 10, 0), /* IIC4 */ |
| 564 | [MSTP407] = MSTP(&div4_clks[DIV4_HP], SMSTPCR4, 7, 0), /* USB-DMAC1 */ | ||
| 560 | [MSTP406] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 6, 0), /* USB1 */ | 565 | [MSTP406] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR4, 6, 0), /* USB1 */ |
| 566 | [MSTP405] = MSTP(&r_clk, SMSTPCR4, 5, 0), /* CMT4 */ | ||
| 567 | [MSTP404] = MSTP(&r_clk, SMSTPCR4, 4, 0), /* CMT3 */ | ||
| 561 | [MSTP403] = MSTP(&r_clk, SMSTPCR4, 3, 0), /* KEYSC */ | 568 | [MSTP403] = MSTP(&r_clk, SMSTPCR4, 3, 0), /* KEYSC */ |
| 569 | [MSTP400] = MSTP(&r_clk, SMSTPCR4, 0, 0), /* CMT2 */ | ||
| 562 | }; | 570 | }; |
| 563 | 571 | ||
| 564 | static struct clk_lookup lookups[] = { | 572 | static struct clk_lookup lookups[] = { |
| @@ -609,6 +617,7 @@ static struct clk_lookup lookups[] = { | |||
| 609 | 617 | ||
| 610 | /* MSTP32 clocks */ | 618 | /* MSTP32 clocks */ |
| 611 | CLKDEV_DEV_ID("i2c-sh_mobile.2", &mstp_clks[MSTP001]), /* IIC2 */ | 619 | CLKDEV_DEV_ID("i2c-sh_mobile.2", &mstp_clks[MSTP001]), /* IIC2 */ |
| 620 | CLKDEV_DEV_ID("spi_sh_msiof.0", &mstp_clks[MSTP000]), /* MSIOF0 */ | ||
| 612 | CLKDEV_DEV_ID("uio_pdrv_genirq.4", &mstp_clks[MSTP131]), /* VEU3 */ | 621 | CLKDEV_DEV_ID("uio_pdrv_genirq.4", &mstp_clks[MSTP131]), /* VEU3 */ |
| 613 | CLKDEV_DEV_ID("uio_pdrv_genirq.3", &mstp_clks[MSTP130]), /* VEU2 */ | 622 | CLKDEV_DEV_ID("uio_pdrv_genirq.3", &mstp_clks[MSTP130]), /* VEU2 */ |
| 614 | CLKDEV_DEV_ID("uio_pdrv_genirq.2", &mstp_clks[MSTP129]), /* VEU1 */ | 623 | CLKDEV_DEV_ID("uio_pdrv_genirq.2", &mstp_clks[MSTP129]), /* VEU1 */ |
| @@ -629,14 +638,16 @@ static struct clk_lookup lookups[] = { | |||
| 629 | CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]), /* DMAC1 */ | 638 | CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]), /* DMAC1 */ |
| 630 | CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[MSTP217]), /* DMAC2 */ | 639 | CLKDEV_DEV_ID("sh-dma-engine.1", &mstp_clks[MSTP217]), /* DMAC2 */ |
| 631 | CLKDEV_DEV_ID("sh-dma-engine.2", &mstp_clks[MSTP216]), /* DMAC3 */ | 640 | CLKDEV_DEV_ID("sh-dma-engine.2", &mstp_clks[MSTP216]), /* DMAC3 */ |
| 641 | CLKDEV_DEV_ID("sh-dma-engine.3", &mstp_clks[MSTP214]), /* USB-DMAC0 */ | ||
| 642 | CLKDEV_DEV_ID("spi_sh_msiof.1", &mstp_clks[MSTP208]), /* MSIOF1 */ | ||
| 632 | CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */ | 643 | CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP207]), /* SCIFA5 */ |
| 633 | CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP206]), /* SCIFB */ | 644 | CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP206]), /* SCIFB */ |
| 645 | CLKDEV_DEV_ID("spi_sh_msiof.2", &mstp_clks[MSTP205]), /* MSIOF2 */ | ||
| 634 | CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */ | 646 | CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */ |
| 635 | CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */ | 647 | CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */ |
| 636 | CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP202]), /* SCIFA2 */ | 648 | CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP202]), /* SCIFA2 */ |
| 637 | CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP201]), /* SCIFA3 */ | 649 | CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP201]), /* SCIFA3 */ |
| 638 | CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP200]), /* SCIFA4 */ | 650 | CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP200]), /* SCIFA4 */ |
| 639 | CLKDEV_DEV_ID("sh_cmt.10", &mstp_clks[MSTP329]), /* CMT10 */ | ||
| 640 | CLKDEV_DEV_ID("sh_fsi2", &mstp_clks[MSTP328]), /* FSI2 */ | 651 | CLKDEV_DEV_ID("sh_fsi2", &mstp_clks[MSTP328]), /* FSI2 */ |
| 641 | CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* IIC1 */ | 652 | CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* IIC1 */ |
| 642 | CLKDEV_DEV_ID("r8a66597_hcd.0", &mstp_clks[MSTP322]), /* USB0 */ | 653 | CLKDEV_DEV_ID("r8a66597_hcd.0", &mstp_clks[MSTP322]), /* USB0 */ |
| @@ -650,10 +661,14 @@ static struct clk_lookup lookups[] = { | |||
| 650 | CLKDEV_DEV_ID("sh-mobile-hdmi", &mstp_clks[MSTP413]), /* HDMI */ | 661 | CLKDEV_DEV_ID("sh-mobile-hdmi", &mstp_clks[MSTP413]), /* HDMI */ |
| 651 | CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* IIC3 */ | 662 | CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* IIC3 */ |
| 652 | CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* IIC4 */ | 663 | CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* IIC4 */ |
| 664 | CLKDEV_DEV_ID("sh-dma-engine.4", &mstp_clks[MSTP407]), /* USB-DMAC1 */ | ||
| 653 | CLKDEV_DEV_ID("r8a66597_hcd.1", &mstp_clks[MSTP406]), /* USB1 */ | 665 | CLKDEV_DEV_ID("r8a66597_hcd.1", &mstp_clks[MSTP406]), /* USB1 */ |
| 654 | CLKDEV_DEV_ID("r8a66597_udc.1", &mstp_clks[MSTP406]), /* USB1 */ | 666 | CLKDEV_DEV_ID("r8a66597_udc.1", &mstp_clks[MSTP406]), /* USB1 */ |
| 655 | CLKDEV_DEV_ID("renesas_usbhs.1", &mstp_clks[MSTP406]), /* USB1 */ | 667 | CLKDEV_DEV_ID("renesas_usbhs.1", &mstp_clks[MSTP406]), /* USB1 */ |
| 668 | CLKDEV_DEV_ID("sh_cmt.4", &mstp_clks[MSTP405]), /* CMT4 */ | ||
| 669 | CLKDEV_DEV_ID("sh_cmt.3", &mstp_clks[MSTP404]), /* CMT3 */ | ||
| 656 | CLKDEV_DEV_ID("sh_keysc.0", &mstp_clks[MSTP403]), /* KEYSC */ | 670 | CLKDEV_DEV_ID("sh_keysc.0", &mstp_clks[MSTP403]), /* KEYSC */ |
| 671 | CLKDEV_DEV_ID("sh_cmt.2", &mstp_clks[MSTP400]), /* CMT2 */ | ||
| 657 | 672 | ||
| 658 | CLKDEV_ICK_ID("hdmi", "sh_mobile_lcdc_fb.1", | 673 | CLKDEV_ICK_ID("hdmi", "sh_mobile_lcdc_fb.1", |
| 659 | &div6_reparent_clks[DIV6_HDMI]), | 674 | &div6_reparent_clks[DIV6_HDMI]), |
diff --git a/arch/arm/mach-shmobile/clock-sh73a0.c b/arch/arm/mach-shmobile/clock-sh73a0.c index 6db2ccabc2bf..61a846bb30f2 100644 --- a/arch/arm/mach-shmobile/clock-sh73a0.c +++ b/arch/arm/mach-shmobile/clock-sh73a0.c | |||
| @@ -365,7 +365,7 @@ void __init sh73a0_clock_init(void) | |||
| 365 | __raw_writel(0x108, SD2CKCR); | 365 | __raw_writel(0x108, SD2CKCR); |
| 366 | 366 | ||
| 367 | /* detect main clock parent */ | 367 | /* detect main clock parent */ |
| 368 | switch ((__raw_readl(CKSCR) >> 24) & 0x03) { | 368 | switch ((__raw_readl(CKSCR) >> 28) & 0x03) { |
| 369 | case 0: | 369 | case 0: |
| 370 | main_clk.parent = &sh73a0_extal1_clk; | 370 | main_clk.parent = &sh73a0_extal1_clk; |
| 371 | break; | 371 | break; |
diff --git a/arch/arm/mach-shmobile/include/mach/sh7372.h b/arch/arm/mach-shmobile/include/mach/sh7372.h index ce595cee86cd..24e63a85e669 100644 --- a/arch/arm/mach-shmobile/include/mach/sh7372.h +++ b/arch/arm/mach-shmobile/include/mach/sh7372.h | |||
| @@ -459,6 +459,10 @@ enum { | |||
| 459 | SHDMA_SLAVE_SDHI2_TX, | 459 | SHDMA_SLAVE_SDHI2_TX, |
| 460 | SHDMA_SLAVE_MMCIF_RX, | 460 | SHDMA_SLAVE_MMCIF_RX, |
| 461 | SHDMA_SLAVE_MMCIF_TX, | 461 | SHDMA_SLAVE_MMCIF_TX, |
| 462 | SHDMA_SLAVE_USB0_TX, | ||
| 463 | SHDMA_SLAVE_USB0_RX, | ||
| 464 | SHDMA_SLAVE_USB1_TX, | ||
| 465 | SHDMA_SLAVE_USB1_RX, | ||
| 462 | }; | 466 | }; |
| 463 | 467 | ||
| 464 | extern struct clk sh7372_extal1_clk; | 468 | extern struct clk sh7372_extal1_clk; |
diff --git a/arch/arm/mach-shmobile/intc-sh7372.c b/arch/arm/mach-shmobile/intc-sh7372.c index 3b28743c77eb..739315e30eb9 100644 --- a/arch/arm/mach-shmobile/intc-sh7372.c +++ b/arch/arm/mach-shmobile/intc-sh7372.c | |||
| @@ -379,7 +379,7 @@ enum { | |||
| 379 | /* BBIF2 */ | 379 | /* BBIF2 */ |
| 380 | VPU, | 380 | VPU, |
| 381 | TSIF1, | 381 | TSIF1, |
| 382 | _3DG_SGX530, | 382 | /* 3DG */ |
| 383 | _2DDMAC, | 383 | _2DDMAC, |
| 384 | IIC2_ALI2, IIC2_TACKI2, IIC2_WAITI2, IIC2_DTEI2, | 384 | IIC2_ALI2, IIC2_TACKI2, IIC2_WAITI2, IIC2_DTEI2, |
| 385 | IPMMU_IPMMUR, IPMMU_IPMMUR2, | 385 | IPMMU_IPMMUR, IPMMU_IPMMUR2, |
| @@ -436,7 +436,7 @@ static struct intc_vect intcs_vectors[] = { | |||
| 436 | /* BBIF2 */ | 436 | /* BBIF2 */ |
| 437 | INTCS_VECT(VPU, 0x980), | 437 | INTCS_VECT(VPU, 0x980), |
| 438 | INTCS_VECT(TSIF1, 0x9a0), | 438 | INTCS_VECT(TSIF1, 0x9a0), |
| 439 | INTCS_VECT(_3DG_SGX530, 0x9e0), | 439 | /* 3DG */ |
| 440 | INTCS_VECT(_2DDMAC, 0xa00), | 440 | INTCS_VECT(_2DDMAC, 0xa00), |
| 441 | INTCS_VECT(IIC2_ALI2, 0xa80), INTCS_VECT(IIC2_TACKI2, 0xaa0), | 441 | INTCS_VECT(IIC2_ALI2, 0xa80), INTCS_VECT(IIC2_TACKI2, 0xaa0), |
| 442 | INTCS_VECT(IIC2_WAITI2, 0xac0), INTCS_VECT(IIC2_DTEI2, 0xae0), | 442 | INTCS_VECT(IIC2_WAITI2, 0xac0), INTCS_VECT(IIC2_DTEI2, 0xae0), |
| @@ -521,7 +521,7 @@ static struct intc_mask_reg intcs_mask_registers[] = { | |||
| 521 | RTDMAC_1_DEI3, RTDMAC_1_DEI2, RTDMAC_1_DEI1, RTDMAC_1_DEI0 } }, | 521 | RTDMAC_1_DEI3, RTDMAC_1_DEI2, RTDMAC_1_DEI1, RTDMAC_1_DEI0 } }, |
| 522 | { 0xffd20198, 0xffd201d8, 8, /* IMR6SA / IMCR6SA */ | 522 | { 0xffd20198, 0xffd201d8, 8, /* IMR6SA / IMCR6SA */ |
| 523 | { 0, 0, MSIOF, 0, | 523 | { 0, 0, MSIOF, 0, |
| 524 | _3DG_SGX530, 0, 0, 0 } }, | 524 | 0, 0, 0, 0 } }, |
| 525 | { 0xffd2019c, 0xffd201dc, 8, /* IMR7SA / IMCR7SA */ | 525 | { 0xffd2019c, 0xffd201dc, 8, /* IMR7SA / IMCR7SA */ |
| 526 | { 0, TMU_TUNI2, TMU_TUNI1, TMU_TUNI0, | 526 | { 0, TMU_TUNI2, TMU_TUNI1, TMU_TUNI0, |
| 527 | 0, 0, 0, 0 } }, | 527 | 0, 0, 0, 0 } }, |
| @@ -561,7 +561,6 @@ static struct intc_prio_reg intcs_prio_registers[] = { | |||
| 561 | TMU_TUNI2, TSIF1 } }, | 561 | TMU_TUNI2, TSIF1 } }, |
| 562 | { 0xffd2001c, 0, 16, 4, /* IPRHS */ { 0, 0, VEU, BEU } }, | 562 | { 0xffd2001c, 0, 16, 4, /* IPRHS */ { 0, 0, VEU, BEU } }, |
| 563 | { 0xffd20020, 0, 16, 4, /* IPRIS */ { 0, MSIOF, TSIF0, IIC0 } }, | 563 | { 0xffd20020, 0, 16, 4, /* IPRIS */ { 0, MSIOF, TSIF0, IIC0 } }, |
| 564 | { 0xffd20024, 0, 16, 4, /* IPRJS */ { 0, _3DG_SGX530, 0, 0 } }, | ||
| 565 | { 0xffd20028, 0, 16, 4, /* IPRKS */ { 0, 0, LMB, 0 } }, | 564 | { 0xffd20028, 0, 16, 4, /* IPRKS */ { 0, 0, LMB, 0 } }, |
| 566 | { 0xffd2002c, 0, 16, 4, /* IPRLS */ { IPMMU, 0, 0, 0 } }, | 565 | { 0xffd2002c, 0, 16, 4, /* IPRLS */ { IPMMU, 0, 0, 0 } }, |
| 567 | { 0xffd20030, 0, 16, 4, /* IPRMS */ { IIC2, 0, 0, 0 } }, | 566 | { 0xffd20030, 0, 16, 4, /* IPRMS */ { IIC2, 0, 0, 0 } }, |
diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c index 79f0413d8725..2d9b1b1a2538 100644 --- a/arch/arm/mach-shmobile/setup-sh7372.c +++ b/arch/arm/mach-shmobile/setup-sh7372.c | |||
| @@ -169,35 +169,35 @@ static struct platform_device scif6_device = { | |||
| 169 | }; | 169 | }; |
| 170 | 170 | ||
| 171 | /* CMT */ | 171 | /* CMT */ |
| 172 | static struct sh_timer_config cmt10_platform_data = { | 172 | static struct sh_timer_config cmt2_platform_data = { |
| 173 | .name = "CMT10", | 173 | .name = "CMT2", |
| 174 | .channel_offset = 0x10, | 174 | .channel_offset = 0x40, |
| 175 | .timer_bit = 0, | 175 | .timer_bit = 5, |
| 176 | .clockevent_rating = 125, | 176 | .clockevent_rating = 125, |
| 177 | .clocksource_rating = 125, | 177 | .clocksource_rating = 125, |
| 178 | }; | 178 | }; |
| 179 | 179 | ||
| 180 | static struct resource cmt10_resources[] = { | 180 | static struct resource cmt2_resources[] = { |
| 181 | [0] = { | 181 | [0] = { |
| 182 | .name = "CMT10", | 182 | .name = "CMT2", |
| 183 | .start = 0xe6138010, | 183 | .start = 0xe6130040, |
| 184 | .end = 0xe613801b, | 184 | .end = 0xe613004b, |
| 185 | .flags = IORESOURCE_MEM, | 185 | .flags = IORESOURCE_MEM, |
| 186 | }, | 186 | }, |
| 187 | [1] = { | 187 | [1] = { |
| 188 | .start = evt2irq(0x0b00), /* CMT1_CMT10 */ | 188 | .start = evt2irq(0x0b80), /* CMT2 */ |
| 189 | .flags = IORESOURCE_IRQ, | 189 | .flags = IORESOURCE_IRQ, |
| 190 | }, | 190 | }, |
| 191 | }; | 191 | }; |
| 192 | 192 | ||
| 193 | static struct platform_device cmt10_device = { | 193 | static struct platform_device cmt2_device = { |
| 194 | .name = "sh_cmt", | 194 | .name = "sh_cmt", |
| 195 | .id = 10, | 195 | .id = 2, |
| 196 | .dev = { | 196 | .dev = { |
| 197 | .platform_data = &cmt10_platform_data, | 197 | .platform_data = &cmt2_platform_data, |
| 198 | }, | 198 | }, |
| 199 | .resource = cmt10_resources, | 199 | .resource = cmt2_resources, |
| 200 | .num_resources = ARRAY_SIZE(cmt10_resources), | 200 | .num_resources = ARRAY_SIZE(cmt2_resources), |
| 201 | }; | 201 | }; |
| 202 | 202 | ||
| 203 | /* TMU */ | 203 | /* TMU */ |
| @@ -602,6 +602,150 @@ static struct platform_device dma2_device = { | |||
| 602 | }, | 602 | }, |
| 603 | }; | 603 | }; |
| 604 | 604 | ||
| 605 | /* | ||
| 606 | * USB-DMAC | ||
| 607 | */ | ||
| 608 | |||
| 609 | unsigned int usbts_shift[] = {3, 4, 5}; | ||
| 610 | |||
| 611 | enum { | ||
| 612 | XMIT_SZ_8BYTE = 0, | ||
| 613 | XMIT_SZ_16BYTE = 1, | ||
| 614 | XMIT_SZ_32BYTE = 2, | ||
| 615 | }; | ||
| 616 | |||
| 617 | #define USBTS_INDEX2VAL(i) (((i) & 3) << 6) | ||
| 618 | |||
| 619 | static const struct sh_dmae_channel sh7372_usb_dmae_channels[] = { | ||
| 620 | { | ||
| 621 | .offset = 0, | ||
| 622 | }, { | ||
| 623 | .offset = 0x20, | ||
| 624 | }, | ||
| 625 | }; | ||
| 626 | |||
| 627 | /* USB DMAC0 */ | ||
| 628 | static const struct sh_dmae_slave_config sh7372_usb_dmae0_slaves[] = { | ||
| 629 | { | ||
| 630 | .slave_id = SHDMA_SLAVE_USB0_TX, | ||
| 631 | .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), | ||
| 632 | }, { | ||
| 633 | .slave_id = SHDMA_SLAVE_USB0_RX, | ||
| 634 | .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), | ||
| 635 | }, | ||
| 636 | }; | ||
| 637 | |||
| 638 | static struct sh_dmae_pdata usb_dma0_platform_data = { | ||
| 639 | .slave = sh7372_usb_dmae0_slaves, | ||
| 640 | .slave_num = ARRAY_SIZE(sh7372_usb_dmae0_slaves), | ||
| 641 | .channel = sh7372_usb_dmae_channels, | ||
| 642 | .channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels), | ||
| 643 | .ts_low_shift = 6, | ||
| 644 | .ts_low_mask = 0xc0, | ||
| 645 | .ts_high_shift = 0, | ||
| 646 | .ts_high_mask = 0, | ||
| 647 | .ts_shift = usbts_shift, | ||
| 648 | .ts_shift_num = ARRAY_SIZE(usbts_shift), | ||
| 649 | .dmaor_init = DMAOR_DME, | ||
| 650 | .chcr_offset = 0x14, | ||
| 651 | .chcr_ie_bit = 1 << 5, | ||
| 652 | .dmaor_is_32bit = 1, | ||
| 653 | .needs_tend_set = 1, | ||
| 654 | .no_dmars = 1, | ||
| 655 | }; | ||
| 656 | |||
| 657 | static struct resource sh7372_usb_dmae0_resources[] = { | ||
| 658 | { | ||
| 659 | /* Channel registers and DMAOR */ | ||
| 660 | .start = 0xe68a0020, | ||
| 661 | .end = 0xe68a0064 - 1, | ||
| 662 | .flags = IORESOURCE_MEM, | ||
| 663 | }, | ||
| 664 | { | ||
| 665 | /* VCR/SWR/DMICR */ | ||
| 666 | .start = 0xe68a0000, | ||
| 667 | .end = 0xe68a0014 - 1, | ||
| 668 | .flags = IORESOURCE_MEM, | ||
| 669 | }, | ||
| 670 | { | ||
| 671 | /* IRQ for channels */ | ||
| 672 | .start = evt2irq(0x0a00), | ||
| 673 | .end = evt2irq(0x0a00), | ||
| 674 | .flags = IORESOURCE_IRQ, | ||
| 675 | }, | ||
| 676 | }; | ||
| 677 | |||
| 678 | static struct platform_device usb_dma0_device = { | ||
| 679 | .name = "sh-dma-engine", | ||
| 680 | .id = 3, | ||
| 681 | .resource = sh7372_usb_dmae0_resources, | ||
| 682 | .num_resources = ARRAY_SIZE(sh7372_usb_dmae0_resources), | ||
| 683 | .dev = { | ||
| 684 | .platform_data = &usb_dma0_platform_data, | ||
| 685 | }, | ||
| 686 | }; | ||
| 687 | |||
| 688 | /* USB DMAC1 */ | ||
| 689 | static const struct sh_dmae_slave_config sh7372_usb_dmae1_slaves[] = { | ||
| 690 | { | ||
| 691 | .slave_id = SHDMA_SLAVE_USB1_TX, | ||
| 692 | .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), | ||
| 693 | }, { | ||
| 694 | .slave_id = SHDMA_SLAVE_USB1_RX, | ||
| 695 | .chcr = USBTS_INDEX2VAL(XMIT_SZ_8BYTE), | ||
| 696 | }, | ||
| 697 | }; | ||
| 698 | |||
| 699 | static struct sh_dmae_pdata usb_dma1_platform_data = { | ||
| 700 | .slave = sh7372_usb_dmae1_slaves, | ||
| 701 | .slave_num = ARRAY_SIZE(sh7372_usb_dmae1_slaves), | ||
| 702 | .channel = sh7372_usb_dmae_channels, | ||
| 703 | .channel_num = ARRAY_SIZE(sh7372_usb_dmae_channels), | ||
| 704 | .ts_low_shift = 6, | ||
| 705 | .ts_low_mask = 0xc0, | ||
| 706 | .ts_high_shift = 0, | ||
| 707 | .ts_high_mask = 0, | ||
| 708 | .ts_shift = usbts_shift, | ||
| 709 | .ts_shift_num = ARRAY_SIZE(usbts_shift), | ||
| 710 | .dmaor_init = DMAOR_DME, | ||
| 711 | .chcr_offset = 0x14, | ||
| 712 | .chcr_ie_bit = 1 << 5, | ||
| 713 | .dmaor_is_32bit = 1, | ||
| 714 | .needs_tend_set = 1, | ||
| 715 | .no_dmars = 1, | ||
| 716 | }; | ||
| 717 | |||
| 718 | static struct resource sh7372_usb_dmae1_resources[] = { | ||
| 719 | { | ||
| 720 | /* Channel registers and DMAOR */ | ||
| 721 | .start = 0xe68c0020, | ||
| 722 | .end = 0xe68c0064 - 1, | ||
| 723 | .flags = IORESOURCE_MEM, | ||
| 724 | }, | ||
| 725 | { | ||
| 726 | /* VCR/SWR/DMICR */ | ||
| 727 | .start = 0xe68c0000, | ||
| 728 | .end = 0xe68c0014 - 1, | ||
| 729 | .flags = IORESOURCE_MEM, | ||
| 730 | }, | ||
| 731 | { | ||
| 732 | /* IRQ for channels */ | ||
| 733 | .start = evt2irq(0x1d00), | ||
| 734 | .end = evt2irq(0x1d00), | ||
| 735 | .flags = IORESOURCE_IRQ, | ||
| 736 | }, | ||
| 737 | }; | ||
| 738 | |||
| 739 | static struct platform_device usb_dma1_device = { | ||
| 740 | .name = "sh-dma-engine", | ||
| 741 | .id = 4, | ||
| 742 | .resource = sh7372_usb_dmae1_resources, | ||
| 743 | .num_resources = ARRAY_SIZE(sh7372_usb_dmae1_resources), | ||
| 744 | .dev = { | ||
| 745 | .platform_data = &usb_dma1_platform_data, | ||
| 746 | }, | ||
| 747 | }; | ||
| 748 | |||
| 605 | /* VPU */ | 749 | /* VPU */ |
| 606 | static struct uio_info vpu_platform_data = { | 750 | static struct uio_info vpu_platform_data = { |
| 607 | .name = "VPU5HG", | 751 | .name = "VPU5HG", |
| @@ -818,7 +962,7 @@ static struct platform_device *sh7372_early_devices[] __initdata = { | |||
| 818 | &scif4_device, | 962 | &scif4_device, |
| 819 | &scif5_device, | 963 | &scif5_device, |
| 820 | &scif6_device, | 964 | &scif6_device, |
| 821 | &cmt10_device, | 965 | &cmt2_device, |
| 822 | &tmu00_device, | 966 | &tmu00_device, |
| 823 | &tmu01_device, | 967 | &tmu01_device, |
| 824 | }; | 968 | }; |
| @@ -829,6 +973,8 @@ static struct platform_device *sh7372_late_devices[] __initdata = { | |||
| 829 | &dma0_device, | 973 | &dma0_device, |
| 830 | &dma1_device, | 974 | &dma1_device, |
| 831 | &dma2_device, | 975 | &dma2_device, |
| 976 | &usb_dma0_device, | ||
| 977 | &usb_dma1_device, | ||
| 832 | &vpu_device, | 978 | &vpu_device, |
| 833 | &veu0_device, | 979 | &veu0_device, |
| 834 | &veu1_device, | 980 | &veu1_device, |
diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c index 9e6b93b1a043..d0d267a8d3f9 100644 --- a/arch/arm/mach-vexpress/v2m.c +++ b/arch/arm/mach-vexpress/v2m.c | |||
| @@ -318,6 +318,10 @@ static struct clk v2m_sp804_clk = { | |||
| 318 | .rate = 1000000, | 318 | .rate = 1000000, |
| 319 | }; | 319 | }; |
| 320 | 320 | ||
| 321 | static struct clk v2m_ref_clk = { | ||
| 322 | .rate = 32768, | ||
| 323 | }; | ||
| 324 | |||
| 321 | static struct clk dummy_apb_pclk; | 325 | static struct clk dummy_apb_pclk; |
| 322 | 326 | ||
| 323 | static struct clk_lookup v2m_lookups[] = { | 327 | static struct clk_lookup v2m_lookups[] = { |
| @@ -348,6 +352,9 @@ static struct clk_lookup v2m_lookups[] = { | |||
| 348 | }, { /* CLCD */ | 352 | }, { /* CLCD */ |
| 349 | .dev_id = "mb:clcd", | 353 | .dev_id = "mb:clcd", |
| 350 | .clk = &osc1_clk, | 354 | .clk = &osc1_clk, |
| 355 | }, { /* SP805 WDT */ | ||
| 356 | .dev_id = "mb:wdt", | ||
| 357 | .clk = &v2m_ref_clk, | ||
| 351 | }, { /* SP804 timers */ | 358 | }, { /* SP804 timers */ |
| 352 | .dev_id = "sp804", | 359 | .dev_id = "sp804", |
| 353 | .con_id = "v2m-timer0", | 360 | .con_id = "v2m-timer0", |
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S index 92bd102e3982..2e6849b41f66 100644 --- a/arch/arm/mm/proc-arm920.S +++ b/arch/arm/mm/proc-arm920.S | |||
| @@ -379,7 +379,7 @@ ENTRY(cpu_arm920_set_pte_ext) | |||
| 379 | 379 | ||
| 380 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ | 380 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ |
| 381 | .globl cpu_arm920_suspend_size | 381 | .globl cpu_arm920_suspend_size |
| 382 | .equ cpu_arm920_suspend_size, 4 * 3 | 382 | .equ cpu_arm920_suspend_size, 4 * 4 |
| 383 | #ifdef CONFIG_PM_SLEEP | 383 | #ifdef CONFIG_PM_SLEEP |
| 384 | ENTRY(cpu_arm920_do_suspend) | 384 | ENTRY(cpu_arm920_do_suspend) |
| 385 | stmfd sp!, {r4 - r7, lr} | 385 | stmfd sp!, {r4 - r7, lr} |
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S index 2bbcf053dffd..cd8f79c3a282 100644 --- a/arch/arm/mm/proc-arm926.S +++ b/arch/arm/mm/proc-arm926.S | |||
| @@ -394,7 +394,7 @@ ENTRY(cpu_arm926_set_pte_ext) | |||
| 394 | 394 | ||
| 395 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ | 395 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ |
| 396 | .globl cpu_arm926_suspend_size | 396 | .globl cpu_arm926_suspend_size |
| 397 | .equ cpu_arm926_suspend_size, 4 * 3 | 397 | .equ cpu_arm926_suspend_size, 4 * 4 |
| 398 | #ifdef CONFIG_PM_SLEEP | 398 | #ifdef CONFIG_PM_SLEEP |
| 399 | ENTRY(cpu_arm926_do_suspend) | 399 | ENTRY(cpu_arm926_do_suspend) |
| 400 | stmfd sp!, {r4 - r7, lr} | 400 | stmfd sp!, {r4 - r7, lr} |
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index 07219c2ae114..69e7f2ef7384 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S | |||
| @@ -182,11 +182,11 @@ ENDPROC(cpu_sa1100_do_suspend) | |||
| 182 | 182 | ||
| 183 | ENTRY(cpu_sa1100_do_resume) | 183 | ENTRY(cpu_sa1100_do_resume) |
| 184 | ldmia r0, {r4 - r7} @ load cp regs | 184 | ldmia r0, {r4 - r7} @ load cp regs |
| 185 | mov r1, #0 | 185 | mov ip, #0 |
| 186 | mcr p15, 0, r1, c8, c7, 0 @ flush I+D TLBs | 186 | mcr p15, 0, ip, c8, c7, 0 @ flush I+D TLBs |
| 187 | mcr p15, 0, r1, c7, c7, 0 @ flush I&D cache | 187 | mcr p15, 0, ip, c7, c7, 0 @ flush I&D cache |
| 188 | mcr p15, 0, r1, c9, c0, 0 @ invalidate RB | 188 | mcr p15, 0, ip, c9, c0, 0 @ invalidate RB |
| 189 | mcr p15, 0, r1, c9, c0, 5 @ allow user space to use RB | 189 | mcr p15, 0, ip, c9, c0, 5 @ allow user space to use RB |
| 190 | 190 | ||
| 191 | mcr p15, 0, r4, c3, c0, 0 @ domain ID | 191 | mcr p15, 0, r4, c3, c0, 0 @ domain ID |
| 192 | mcr p15, 0, r5, c2, c0, 0 @ translation table base addr | 192 | mcr p15, 0, r5, c2, c0, 0 @ translation table base addr |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 219138d2f158..a923aa0fd00d 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
| @@ -223,6 +223,22 @@ __v6_setup: | |||
| 223 | mrc p15, 0, r0, c1, c0, 0 @ read control register | 223 | mrc p15, 0, r0, c1, c0, 0 @ read control register |
| 224 | bic r0, r0, r5 @ clear bits them | 224 | bic r0, r0, r5 @ clear bits them |
| 225 | orr r0, r0, r6 @ set them | 225 | orr r0, r0, r6 @ set them |
| 226 | #ifdef CONFIG_ARM_ERRATA_364296 | ||
| 227 | /* | ||
| 228 | * Workaround for the 364296 ARM1136 r0p2 erratum (possible cache data | ||
| 229 | * corruption with hit-under-miss enabled). The conditional code below | ||
| 230 | * (setting the undocumented bit 31 in the auxiliary control register | ||
| 231 | * and the FI bit in the control register) disables hit-under-miss | ||
| 232 | * without putting the processor into full low interrupt latency mode. | ||
| 233 | */ | ||
| 234 | ldr r6, =0x4107b362 @ id for ARM1136 r0p2 | ||
| 235 | mrc p15, 0, r5, c0, c0, 0 @ get processor id | ||
| 236 | teq r5, r6 @ check for the faulty core | ||
| 237 | mrceq p15, 0, r5, c1, c0, 1 @ load aux control reg | ||
| 238 | orreq r5, r5, #(1 << 31) @ set the undocumented bit 31 | ||
| 239 | mcreq p15, 0, r5, c1, c0, 1 @ write aux control reg | ||
| 240 | orreq r0, r0, #(1 << 21) @ low interrupt latency configuration | ||
| 241 | #endif | ||
| 226 | mov pc, lr @ return to head.S:__ret | 242 | mov pc, lr @ return to head.S:__ret |
| 227 | 243 | ||
| 228 | /* | 244 | /* |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index a30e78542ccf..9049c0764db2 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
| @@ -66,6 +66,7 @@ ENDPROC(cpu_v7_proc_fin) | |||
| 66 | ENTRY(cpu_v7_reset) | 66 | ENTRY(cpu_v7_reset) |
| 67 | mrc p15, 0, r1, c1, c0, 0 @ ctrl register | 67 | mrc p15, 0, r1, c1, c0, 0 @ ctrl register |
| 68 | bic r1, r1, #0x1 @ ...............m | 68 | bic r1, r1, #0x1 @ ...............m |
| 69 | THUMB( bic r1, r1, #1 << 30 ) @ SCTLR.TE (Thumb exceptions) | ||
| 69 | mcr p15, 0, r1, c1, c0, 0 @ disable MMU | 70 | mcr p15, 0, r1, c1, c0, 0 @ disable MMU |
| 70 | isb | 71 | isb |
| 71 | mov pc, r0 | 72 | mov pc, r0 |
| @@ -247,13 +248,16 @@ ENTRY(cpu_v7_do_resume) | |||
| 247 | mcr p15, 0, r7, c2, c0, 0 @ TTB 0 | 248 | mcr p15, 0, r7, c2, c0, 0 @ TTB 0 |
| 248 | mcr p15, 0, r8, c2, c0, 1 @ TTB 1 | 249 | mcr p15, 0, r8, c2, c0, 1 @ TTB 1 |
| 249 | mcr p15, 0, ip, c2, c0, 2 @ TTB control register | 250 | mcr p15, 0, ip, c2, c0, 2 @ TTB control register |
| 250 | mcr p15, 0, r10, c1, c0, 1 @ Auxiliary control register | 251 | mrc p15, 0, r4, c1, c0, 1 @ Read Auxiliary control register |
| 252 | teq r4, r10 @ Is it already set? | ||
| 253 | mcrne p15, 0, r10, c1, c0, 1 @ No, so write it | ||
| 251 | mcr p15, 0, r11, c1, c0, 2 @ Co-processor access control | 254 | mcr p15, 0, r11, c1, c0, 2 @ Co-processor access control |
| 252 | ldr r4, =PRRR @ PRRR | 255 | ldr r4, =PRRR @ PRRR |
| 253 | ldr r5, =NMRR @ NMRR | 256 | ldr r5, =NMRR @ NMRR |
| 254 | mcr p15, 0, r4, c10, c2, 0 @ write PRRR | 257 | mcr p15, 0, r4, c10, c2, 0 @ write PRRR |
| 255 | mcr p15, 0, r5, c10, c2, 1 @ write NMRR | 258 | mcr p15, 0, r5, c10, c2, 1 @ write NMRR |
| 256 | isb | 259 | isb |
| 260 | dsb | ||
| 257 | mov r0, r9 @ control register | 261 | mov r0, r9 @ control register |
| 258 | mov r2, r7, lsr #14 @ get TTB0 base | 262 | mov r2, r7, lsr #14 @ get TTB0 base |
| 259 | mov r2, r2, lsl #14 | 263 | mov r2, r2, lsl #14 |
diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S index 28c72a2006a1..755e1bf22681 100644 --- a/arch/arm/mm/proc-xsc3.S +++ b/arch/arm/mm/proc-xsc3.S | |||
| @@ -406,7 +406,7 @@ ENTRY(cpu_xsc3_set_pte_ext) | |||
| 406 | .align | 406 | .align |
| 407 | 407 | ||
| 408 | .globl cpu_xsc3_suspend_size | 408 | .globl cpu_xsc3_suspend_size |
| 409 | .equ cpu_xsc3_suspend_size, 4 * 8 | 409 | .equ cpu_xsc3_suspend_size, 4 * 7 |
| 410 | #ifdef CONFIG_PM_SLEEP | 410 | #ifdef CONFIG_PM_SLEEP |
| 411 | ENTRY(cpu_xsc3_do_suspend) | 411 | ENTRY(cpu_xsc3_do_suspend) |
| 412 | stmfd sp!, {r4 - r10, lr} | 412 | stmfd sp!, {r4 - r10, lr} |
| @@ -418,12 +418,12 @@ ENTRY(cpu_xsc3_do_suspend) | |||
| 418 | mrc p15, 0, r9, c1, c0, 1 @ auxiliary control reg | 418 | mrc p15, 0, r9, c1, c0, 1 @ auxiliary control reg |
| 419 | mrc p15, 0, r10, c1, c0, 0 @ control reg | 419 | mrc p15, 0, r10, c1, c0, 0 @ control reg |
| 420 | bic r4, r4, #2 @ clear frequency change bit | 420 | bic r4, r4, #2 @ clear frequency change bit |
| 421 | stmia r0, {r1, r4 - r10} @ store v:p offset + cp regs | 421 | stmia r0, {r4 - r10} @ store cp regs |
| 422 | ldmia sp!, {r4 - r10, pc} | 422 | ldmia sp!, {r4 - r10, pc} |
| 423 | ENDPROC(cpu_xsc3_do_suspend) | 423 | ENDPROC(cpu_xsc3_do_suspend) |
| 424 | 424 | ||
| 425 | ENTRY(cpu_xsc3_do_resume) | 425 | ENTRY(cpu_xsc3_do_resume) |
| 426 | ldmia r0, {r1, r4 - r10} @ load v:p offset + cp regs | 426 | ldmia r0, {r4 - r10} @ load cp regs |
| 427 | mov ip, #0 | 427 | mov ip, #0 |
| 428 | mcr p15, 0, ip, c7, c7, 0 @ invalidate I & D caches, BTB | 428 | mcr p15, 0, ip, c7, c7, 0 @ invalidate I & D caches, BTB |
| 429 | mcr p15, 0, ip, c7, c10, 4 @ drain write (&fill) buffer | 429 | mcr p15, 0, ip, c7, c10, 4 @ drain write (&fill) buffer |
diff --git a/arch/arm/plat-s5p/clock.c b/arch/arm/plat-s5p/clock.c index 02af235298e2..5f84a3f13ef9 100644 --- a/arch/arm/plat-s5p/clock.c +++ b/arch/arm/plat-s5p/clock.c | |||
| @@ -192,7 +192,7 @@ unsigned long s5p_spdif_get_rate(struct clk *clk) | |||
| 192 | if (IS_ERR(pclk)) | 192 | if (IS_ERR(pclk)) |
| 193 | return -EINVAL; | 193 | return -EINVAL; |
| 194 | 194 | ||
| 195 | rate = pclk->ops->get_rate(clk); | 195 | rate = pclk->ops->get_rate(pclk); |
| 196 | clk_put(pclk); | 196 | clk_put(pclk); |
| 197 | 197 | ||
| 198 | return rate; | 198 | return rate; |
diff --git a/arch/arm/plat-s5p/irq-gpioint.c b/arch/arm/plat-s5p/irq-gpioint.c index 327ab9f662e8..f71078ef6bb5 100644 --- a/arch/arm/plat-s5p/irq-gpioint.c +++ b/arch/arm/plat-s5p/irq-gpioint.c | |||
| @@ -23,6 +23,8 @@ | |||
| 23 | #include <plat/gpio-core.h> | 23 | #include <plat/gpio-core.h> |
| 24 | #include <plat/gpio-cfg.h> | 24 | #include <plat/gpio-cfg.h> |
| 25 | 25 | ||
| 26 | #include <asm/mach/irq.h> | ||
| 27 | |||
| 26 | #define GPIO_BASE(chip) (((unsigned long)(chip)->base) & 0xFFFFF000u) | 28 | #define GPIO_BASE(chip) (((unsigned long)(chip)->base) & 0xFFFFF000u) |
| 27 | 29 | ||
| 28 | #define CON_OFFSET 0x700 | 30 | #define CON_OFFSET 0x700 |
| @@ -81,6 +83,9 @@ static void s5p_gpioint_handler(unsigned int irq, struct irq_desc *desc) | |||
| 81 | int group, pend_offset, mask_offset; | 83 | int group, pend_offset, mask_offset; |
| 82 | unsigned int pend, mask; | 84 | unsigned int pend, mask; |
| 83 | 85 | ||
| 86 | struct irq_chip *chip = irq_get_chip(irq); | ||
| 87 | chained_irq_enter(chip, desc); | ||
| 88 | |||
| 84 | for (group = 0; group < bank->nr_groups; group++) { | 89 | for (group = 0; group < bank->nr_groups; group++) { |
| 85 | struct s3c_gpio_chip *chip = bank->chips[group]; | 90 | struct s3c_gpio_chip *chip = bank->chips[group]; |
| 86 | if (!chip) | 91 | if (!chip) |
| @@ -102,6 +107,7 @@ static void s5p_gpioint_handler(unsigned int irq, struct irq_desc *desc) | |||
| 102 | pend &= ~BIT(offset); | 107 | pend &= ~BIT(offset); |
| 103 | } | 108 | } |
| 104 | } | 109 | } |
| 110 | chained_irq_exit(chip, desc); | ||
| 105 | } | 111 | } |
| 106 | 112 | ||
| 107 | static __init int s5p_gpioint_add(struct s3c_gpio_chip *chip) | 113 | static __init int s5p_gpioint_add(struct s3c_gpio_chip *chip) |
diff --git a/arch/arm/plat-samsung/include/plat/backlight.h b/arch/arm/plat-samsung/include/plat/backlight.h index 51d8da846a62..ad530c78fe8c 100644 --- a/arch/arm/plat-samsung/include/plat/backlight.h +++ b/arch/arm/plat-samsung/include/plat/backlight.h | |||
| @@ -20,7 +20,7 @@ struct samsung_bl_gpio_info { | |||
| 20 | int func; | 20 | int func; |
| 21 | }; | 21 | }; |
| 22 | 22 | ||
| 23 | extern void samsung_bl_set(struct samsung_bl_gpio_info *gpio_info, | 23 | extern void __init samsung_bl_set(struct samsung_bl_gpio_info *gpio_info, |
| 24 | struct platform_pwm_backlight_data *bl_data); | 24 | struct platform_pwm_backlight_data *bl_data); |
| 25 | 25 | ||
| 26 | #endif /* __ASM_PLAT_BACKLIGHT_H */ | 26 | #endif /* __ASM_PLAT_BACKLIGHT_H */ |
diff --git a/arch/arm/plat-samsung/irq-vic-timer.c b/arch/arm/plat-samsung/irq-vic-timer.c index f714d060370d..51583cd30164 100644 --- a/arch/arm/plat-samsung/irq-vic-timer.c +++ b/arch/arm/plat-samsung/irq-vic-timer.c | |||
| @@ -22,9 +22,14 @@ | |||
| 22 | #include <plat/irq-vic-timer.h> | 22 | #include <plat/irq-vic-timer.h> |
| 23 | #include <plat/regs-timer.h> | 23 | #include <plat/regs-timer.h> |
| 24 | 24 | ||
| 25 | #include <asm/mach/irq.h> | ||
| 26 | |||
| 25 | static void s3c_irq_demux_vic_timer(unsigned int irq, struct irq_desc *desc) | 27 | static void s3c_irq_demux_vic_timer(unsigned int irq, struct irq_desc *desc) |
| 26 | { | 28 | { |
| 29 | struct irq_chip *chip = irq_get_chip(irq); | ||
| 30 | chained_irq_enter(chip, desc); | ||
| 27 | generic_handle_irq((int)desc->irq_data.handler_data); | 31 | generic_handle_irq((int)desc->irq_data.handler_data); |
| 32 | chained_irq_exit(chip, desc); | ||
| 28 | } | 33 | } |
| 29 | 34 | ||
| 30 | /* We assume the IRQ_TIMER0..IRQ_TIMER4 range is continuous. */ | 35 | /* We assume the IRQ_TIMER0..IRQ_TIMER4 range is continuous. */ |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index fff68d0d521b..62cc8f981171 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
| @@ -351,7 +351,7 @@ centro MACH_CENTRO CENTRO 1944 | |||
| 351 | nokia_rx51 MACH_NOKIA_RX51 NOKIA_RX51 1955 | 351 | nokia_rx51 MACH_NOKIA_RX51 NOKIA_RX51 1955 |
| 352 | omap_zoom2 MACH_OMAP_ZOOM2 OMAP_ZOOM2 1967 | 352 | omap_zoom2 MACH_OMAP_ZOOM2 OMAP_ZOOM2 1967 |
| 353 | cpuat9260 MACH_CPUAT9260 CPUAT9260 1973 | 353 | cpuat9260 MACH_CPUAT9260 CPUAT9260 1973 |
| 354 | eukrea_cpuimx27 MACH_CPUIMX27 CPUIMX27 1975 | 354 | eukrea_cpuimx27 MACH_EUKREA_CPUIMX27 EUKREA_CPUIMX27 1975 |
| 355 | acs5k MACH_ACS5K ACS5K 1982 | 355 | acs5k MACH_ACS5K ACS5K 1982 |
| 356 | snapper_9260 MACH_SNAPPER_9260 SNAPPER_9260 1987 | 356 | snapper_9260 MACH_SNAPPER_9260 SNAPPER_9260 1987 |
| 357 | dsm320 MACH_DSM320 DSM320 1988 | 357 | dsm320 MACH_DSM320 DSM320 1988 |
| @@ -476,8 +476,8 @@ cns3420vb MACH_CNS3420VB CNS3420VB 2776 | |||
| 476 | omap4_panda MACH_OMAP4_PANDA OMAP4_PANDA 2791 | 476 | omap4_panda MACH_OMAP4_PANDA OMAP4_PANDA 2791 |
| 477 | ti8168evm MACH_TI8168EVM TI8168EVM 2800 | 477 | ti8168evm MACH_TI8168EVM TI8168EVM 2800 |
| 478 | teton_bga MACH_TETON_BGA TETON_BGA 2816 | 478 | teton_bga MACH_TETON_BGA TETON_BGA 2816 |
| 479 | eukrea_cpuimx25sd MACH_EUKREA_CPUIMX25 EUKREA_CPUIMX25 2820 | 479 | eukrea_cpuimx25sd MACH_EUKREA_CPUIMX25SD EUKREA_CPUIMX25SD 2820 |
| 480 | eukrea_cpuimx35sd MACH_EUKREA_CPUIMX35 EUKREA_CPUIMX35 2821 | 480 | eukrea_cpuimx35sd MACH_EUKREA_CPUIMX35SD EUKREA_CPUIMX35SD 2821 |
| 481 | eukrea_cpuimx51sd MACH_EUKREA_CPUIMX51SD EUKREA_CPUIMX51SD 2822 | 481 | eukrea_cpuimx51sd MACH_EUKREA_CPUIMX51SD EUKREA_CPUIMX51SD 2822 |
| 482 | eukrea_cpuimx51 MACH_EUKREA_CPUIMX51 EUKREA_CPUIMX51 2823 | 482 | eukrea_cpuimx51 MACH_EUKREA_CPUIMX51 EUKREA_CPUIMX51 2823 |
| 483 | smdkc210 MACH_SMDKC210 SMDKC210 2838 | 483 | smdkc210 MACH_SMDKC210 SMDKC210 2838 |
