Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm: (23 commits)
ARM: Fix RiscPC decompressor build errors
ARM: Fix sorting of platform group config options and includes
ARM: 5991/1: Fix regression in restore_user_regs macro
ARM: 5989/1: ARM: KGDB: add support for SMP platforms
ARM: 5990/1: ARM: use __armv5tej_mmu_cache_flush for V5TEJ instead of __armv4_mmu_cache_flush
ARM: Add final piece to fix XIP decompressor in read-only memory
video: enable sh_mobile_lcdc on SH-Mobile ARM
ARM: mach-shmobile: ap4evb SDHI0 platform data V2
ARM: mach-shmobile: sh7372 SDHI vector merge
ARM: mach-shmobile: sh7377 SDHI vector merge
ARM: mach-shmobile: sh7367 SDHI vector merge
ARM: mach-shmobile: G4EVM KEYSC platform data
mtd: enable sh_flctl on SH-Mobile ARM
ARM: mach-shmobile: G3EVM FLCTL platform data
ARM: mach-shmobile: G3EVM KEYSC platform data
Video: ARM CLCD: Better fix for swapped IENB and CNTL registers
ARM: Add L2 cache handling to smp boot support
ARM: 5960/1: ARM: perf-events: fix v7 event selection mask
ARM: 5959/1: ARM: perf-events: request PMU interrupts with IRQF_NOBALANCING
ARM: 5988/1: pgprot_dmacoherent() for non-mmu builds
...

+402 -133
+45 -36
arch/arm/Kconfig
··· 218 218 Select if you want MMU-based virtualised addressing space 219 219 support by paged memory management. If unsure, say 'Y'. 220 220 221 + # 222 + # The "ARM system type" choice list is ordered alphabetically by option 223 + # text. Please add new entries in the option alphabetic order. 224 + # 221 225 choice 222 226 prompt "ARM system type" 223 227 default ARCH_VERSATILE ··· 277 273 help 278 274 This enables support for systems based on the Atmel AT91RM9200, 279 275 AT91SAM9 and AT91CAP9 processors. 276 + 277 + config ARCH_BCMRING 278 + bool "Broadcom BCMRING" 279 + depends on MMU 280 + select CPU_V6 281 + select ARM_AMBA 282 + select COMMON_CLKDEV 283 + select GENERIC_TIME 284 + select GENERIC_CLOCKEVENTS 285 + select ARCH_WANT_OPTIONAL_GPIOLIB 286 + help 287 + Support for Broadcom's BCMRing platform. 280 288 281 289 config ARCH_CLPS711X 282 290 bool "Cirrus Logic CLPS711x/EP721x-based" ··· 374 358 select ISA_DMA_API 375 359 help 376 360 This enables support for systems based on the Hynix HMS720x 377 - 378 - config ARCH_NOMADIK 379 - bool "STMicroelectronics Nomadik" 380 - select ARM_AMBA 381 - select ARM_VIC 382 - select CPU_ARM926T 383 - select HAVE_CLK 384 - select COMMON_CLKDEV 385 - select GENERIC_TIME 386 - select GENERIC_CLOCKEVENTS 387 - select GENERIC_GPIO 388 - select ARCH_REQUIRE_GPIOLIB 389 - help 390 - Support for the Nomadik platform by ST-Ericsson 391 361 392 362 config ARCH_IOP13XX 393 363 bool "IOP13xx-based" ··· 749 747 help 750 748 Support for ST-Ericsson U300 series mobile platforms. 751 749 750 + config ARCH_U8500 751 + bool "ST-Ericsson U8500 Series" 752 + select CPU_V7 753 + select ARM_AMBA 754 + select GENERIC_TIME 755 + select GENERIC_CLOCKEVENTS 756 + select COMMON_CLKDEV 757 + help 758 + Support for ST-Ericsson's Ux500 architecture 759 + 760 + config ARCH_NOMADIK 761 + bool "STMicroelectronics Nomadik" 762 + select ARM_AMBA 763 + select ARM_VIC 764 + select CPU_ARM926T 765 + select HAVE_CLK 766 + select COMMON_CLKDEV 767 + select GENERIC_TIME 768 + select GENERIC_CLOCKEVENTS 769 + select GENERIC_GPIO 770 + select ARCH_REQUIRE_GPIOLIB 771 + help 772 + Support for the Nomadik platform by ST-Ericsson 773 + 752 774 config ARCH_DAVINCI 753 775 bool "TI DaVinci" 754 776 select CPU_ARM926T ··· 801 775 help 802 776 Support for TI's OMAP platform (OMAP1 and OMAP2). 803 777 804 - config ARCH_BCMRING 805 - bool "Broadcom BCMRING" 806 - depends on MMU 807 - select CPU_V6 808 - select ARM_AMBA 809 - select COMMON_CLKDEV 810 - select GENERIC_TIME 811 - select GENERIC_CLOCKEVENTS 812 - select ARCH_WANT_OPTIONAL_GPIOLIB 813 - help 814 - Support for Broadcom's BCMRing platform. 815 - 816 - config ARCH_U8500 817 - bool "ST-Ericsson U8500 Series" 818 - select CPU_V7 819 - select ARM_AMBA 820 - select GENERIC_TIME 821 - select GENERIC_CLOCKEVENTS 822 - select COMMON_CLKDEV 823 - help 824 - Support for ST-Ericsson's Ux500 architecture 825 - 826 778 endchoice 827 779 780 + # 781 + # This is sorted alphabetically by mach-* pathname. However, plat-* 782 + # Kconfigs may be included either alphabetically (according to the 783 + # plat- suffix) or along side the corresponding mach-* source. 784 + # 828 785 source "arch/arm/mach-aaec2000/Kconfig" 829 786 830 787 source "arch/arm/mach-at91/Kconfig"
+1
arch/arm/boot/compressed/decompress.c
··· 11 11 extern void error(char *); 12 12 13 13 #define STATIC static 14 + #define STATIC_RW_DATA /* non-static please */ 14 15 15 16 #define ARCH_HAS_DECOMP_WDOG 16 17
+1 -1
arch/arm/boot/compressed/head.S
··· 742 742 .word 0x000f0000 743 743 W(b) __armv4_mmu_cache_on 744 744 W(b) __armv4_mmu_cache_off 745 - W(b) __armv4_mmu_cache_flush 745 + W(b) __armv5tej_mmu_cache_flush 746 746 747 747 .word 0x0007b000 @ ARMv6 748 748 .word 0x000ff000
+1
arch/arm/boot/compressed/misc.c
··· 33 33 #else 34 34 35 35 static void putstr(const char *ptr); 36 + extern void error(char *x); 36 37 37 38 #include <mach/uncompress.h> 38 39
+1
arch/arm/include/asm/elf.h
··· 98 98 extern int arm_elf_read_implies_exec(const struct elf32_hdr *, int); 99 99 #define elf_read_implies_exec(ex,stk) arm_elf_read_implies_exec(&(ex), stk) 100 100 101 + struct task_struct; 101 102 int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs); 102 103 #define ELF_CORE_COPY_TASK_REGS dump_task_regs 103 104
+1
arch/arm/include/asm/pgtable-nommu.h
··· 67 67 */ 68 68 #define pgprot_noncached(prot) __pgprot(0) 69 69 #define pgprot_writecombine(prot) __pgprot(0) 70 + #define pgprot_dmacoherent(prot) __pgprot(0) 70 71 71 72 72 73 /*
+2
arch/arm/kernel/entry-header.S
··· 102 102 .else 103 103 ldmdb sp, {r0 - lr}^ @ get calling r0 - lr 104 104 .endif 105 + mov r0, r0 @ ARMv5T and earlier require a nop 106 + @ after ldm {}^ 105 107 add sp, sp, #S_FRAME_SIZE - S_PC 106 108 movs pc, lr @ return & move spsr_svc into cpsr 107 109 .endm
+13
arch/arm/kernel/kgdb.c
··· 9 9 * Authors: George Davis <davis_g@mvista.com> 10 10 * Deepak Saxena <dsaxena@plexity.net> 11 11 */ 12 + #include <linux/irq.h> 12 13 #include <linux/kgdb.h> 13 14 #include <asm/traps.h> 14 15 ··· 158 157 .instr_val = KGDB_COMPILED_BREAK, 159 158 .fn = kgdb_compiled_brk_fn 160 159 }; 160 + 161 + static void kgdb_call_nmi_hook(void *ignored) 162 + { 163 + kgdb_nmicallback(raw_smp_processor_id(), get_irq_regs()); 164 + } 165 + 166 + void kgdb_roundup_cpus(unsigned long flags) 167 + { 168 + local_irq_enable(); 169 + smp_call_function(kgdb_call_nmi_hook, NULL, 0); 170 + local_irq_disable(); 171 + } 161 172 162 173 /** 163 174 * kgdb_arch_init - Perform any architecture specific initalization.
+3 -2
arch/arm/kernel/perf_event.c
··· 332 332 333 333 for (i = 0; i < pmu_irqs->num_irqs; ++i) { 334 334 err = request_irq(pmu_irqs->irqs[i], armpmu->handle_irq, 335 - IRQF_DISABLED, "armpmu", NULL); 335 + IRQF_DISABLED | IRQF_NOBALANCING, 336 + "armpmu", NULL); 336 337 if (err) { 337 338 pr_warning("unable to request IRQ%d for ARM " 338 339 "perf counters\n", pmu_irqs->irqs[i]); ··· 1625 1624 /* 1626 1625 * EVTSEL: Event selection reg 1627 1626 */ 1628 - #define ARMV7_EVTSEL_MASK 0x7f /* Mask for writable bits */ 1627 + #define ARMV7_EVTSEL_MASK 0xff /* Mask for writable bits */ 1629 1628 1630 1629 /* 1631 1630 * SELECT: Counter selection reg
+3 -1
arch/arm/kernel/smp.c
··· 99 99 *pmd = __pmd((PHYS_OFFSET & PGDIR_MASK) | 100 100 PMD_TYPE_SECT | PMD_SECT_AP_WRITE); 101 101 flush_pmd_entry(pmd); 102 + outer_clean_range(__pa(pmd), __pa(pmd + 1)); 102 103 103 104 /* 104 105 * We need to tell the secondary core where to find ··· 107 106 */ 108 107 secondary_data.stack = task_stack_page(idle) + THREAD_START_SP; 109 108 secondary_data.pgdir = virt_to_phys(pgd); 110 - wmb(); 109 + __cpuc_flush_dcache_area(&secondary_data, sizeof(secondary_data)); 110 + outer_clean_range(__pa(&secondary_data), __pa(&secondary_data + 1)); 111 111 112 112 /* 113 113 * Now bring the CPU into our world.
+6 -4
arch/arm/mach-at91/board-sam9g20ek.c
··· 271 271 272 272 273 273 static struct i2c_board_info __initdata ek_i2c_devices[] = { 274 - { 275 - I2C_BOARD_INFO("24c512", 0x50), 276 - I2C_BOARD_INFO("wm8731", 0x1b), 277 - }, 274 + { 275 + I2C_BOARD_INFO("24c512", 0x50) 276 + }, 277 + { 278 + I2C_BOARD_INFO("wm8731", 0x1b) 279 + }, 278 280 }; 279 281 280 282
-2
arch/arm/mach-rpc/include/mach/uncompress.h
··· 109 109 { 110 110 } 111 111 112 - static void error(char *x); 113 - 114 112 /* 115 113 * Setup for decompression 116 114 */
+32
arch/arm/mach-shmobile/board-ap4evb.c
··· 206 206 }, 207 207 }; 208 208 209 + /* SDHI0 */ 210 + static struct resource sdhi0_resources[] = { 211 + [0] = { 212 + .name = "SDHI0", 213 + .start = 0xe6850000, 214 + .end = 0xe68501ff, 215 + .flags = IORESOURCE_MEM, 216 + }, 217 + [1] = { 218 + .start = 96, 219 + .flags = IORESOURCE_IRQ, 220 + }, 221 + }; 222 + 223 + static struct platform_device sdhi0_device = { 224 + .name = "sh_mobile_sdhi", 225 + .num_resources = ARRAY_SIZE(sdhi0_resources), 226 + .resource = sdhi0_resources, 227 + .id = 0, 228 + }; 229 + 209 230 static struct platform_device *ap4evb_devices[] __initdata = { 210 231 &nor_flash_device, 211 232 &smc911x_device, 212 233 &keysc_device, 234 + &sdhi0_device, 213 235 }; 214 236 215 237 static struct map_desc ap4evb_io_desc[] __initdata = { ··· 307 285 gpio_request(GPIO_FN_KEYIN2_134, NULL); 308 286 gpio_request(GPIO_FN_KEYIN3_133, NULL); 309 287 gpio_request(GPIO_FN_KEYIN4, NULL); 288 + 289 + /* SDHI0 */ 290 + gpio_request(GPIO_FN_SDHICD0, NULL); 291 + gpio_request(GPIO_FN_SDHIWP0, NULL); 292 + gpio_request(GPIO_FN_SDHICMD0, NULL); 293 + gpio_request(GPIO_FN_SDHICLK0, NULL); 294 + gpio_request(GPIO_FN_SDHID0_3, NULL); 295 + gpio_request(GPIO_FN_SDHID0_2, NULL); 296 + gpio_request(GPIO_FN_SDHID0_1, NULL); 297 + gpio_request(GPIO_FN_SDHID0_0, NULL); 310 298 311 299 sh7372_add_standard_devices(); 312 300
+122
arch/arm/mach-shmobile/board-g3evm.c
··· 26 26 #include <linux/mtd/mtd.h> 27 27 #include <linux/mtd/partitions.h> 28 28 #include <linux/mtd/physmap.h> 29 + #include <linux/mtd/sh_flctl.h> 29 30 #include <linux/usb/r8a66597.h> 30 31 #include <linux/io.h> 31 32 #include <linux/gpio.h> 33 + #include <linux/input.h> 34 + #include <linux/input/sh_keysc.h> 32 35 #include <mach/sh7367.h> 33 36 #include <mach/common.h> 34 37 #include <asm/mach-types.h> ··· 130 127 .resource = usb_host_resources, 131 128 }; 132 129 130 + /* KEYSC */ 131 + static struct sh_keysc_info keysc_info = { 132 + .mode = SH_KEYSC_MODE_5, 133 + .scan_timing = 3, 134 + .delay = 100, 135 + .keycodes = { 136 + KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, 137 + KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, 138 + KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, 139 + KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, KEY_HOME, KEY_SLEEP, 140 + KEY_WAKEUP, KEY_COFFEE, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, 141 + KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_STOP, KEY_COMPUTER, 142 + }, 143 + }; 144 + 145 + static struct resource keysc_resources[] = { 146 + [0] = { 147 + .name = "KEYSC", 148 + .start = 0xe61b0000, 149 + .end = 0xe61b000f, 150 + .flags = IORESOURCE_MEM, 151 + }, 152 + [1] = { 153 + .start = 79, 154 + .flags = IORESOURCE_IRQ, 155 + }, 156 + }; 157 + 158 + static struct platform_device keysc_device = { 159 + .name = "sh_keysc", 160 + .num_resources = ARRAY_SIZE(keysc_resources), 161 + .resource = keysc_resources, 162 + .dev = { 163 + .platform_data = &keysc_info, 164 + }, 165 + }; 166 + 167 + static struct mtd_partition nand_partition_info[] = { 168 + { 169 + .name = "system", 170 + .offset = 0, 171 + .size = 64 * 1024 * 1024, 172 + }, 173 + { 174 + .name = "userdata", 175 + .offset = MTDPART_OFS_APPEND, 176 + .size = 128 * 1024 * 1024, 177 + }, 178 + { 179 + .name = "cache", 180 + .offset = MTDPART_OFS_APPEND, 181 + .size = 64 * 1024 * 1024, 182 + }, 183 + }; 184 + 185 + static struct resource nand_flash_resources[] = { 186 + [0] = { 187 + .start = 0xe6a30000, 188 + .end = 0xe6a3009b, 189 + .flags = IORESOURCE_MEM, 190 + } 191 + }; 192 + 193 + static struct sh_flctl_platform_data nand_flash_data = { 194 + .parts = nand_partition_info, 195 + .nr_parts = ARRAY_SIZE(nand_partition_info), 196 + .flcmncr_val = QTSEL_E | FCKSEL_E | TYPESEL_SET | NANWF_E 197 + | SHBUSSEL | SEL_16BIT, 198 + }; 199 + 200 + static struct platform_device nand_flash_device = { 201 + .name = "sh_flctl", 202 + .resource = nand_flash_resources, 203 + .num_resources = ARRAY_SIZE(nand_flash_resources), 204 + .dev = { 205 + .platform_data = &nand_flash_data, 206 + }, 207 + }; 208 + 133 209 static struct platform_device *g3evm_devices[] __initdata = { 134 210 &nor_flash_device, 135 211 &usb_host_device, 212 + &keysc_device, 213 + &nand_flash_device, 136 214 }; 137 215 138 216 static struct map_desc g3evm_io_desc[] __initdata = { ··· 279 195 __raw_writew(0x00e0, 0xe60581c0); /* CPFCH */ 280 196 __raw_writew(0x6010, 0xe60581c6); /* CGPOSR */ 281 197 __raw_writew(0x8a0a, 0xe605810c); /* USBCR2 */ 198 + 199 + /* KEYSC @ CN7 */ 200 + gpio_request(GPIO_FN_PORT42_KEYOUT0, NULL); 201 + gpio_request(GPIO_FN_PORT43_KEYOUT1, NULL); 202 + gpio_request(GPIO_FN_PORT44_KEYOUT2, NULL); 203 + gpio_request(GPIO_FN_PORT45_KEYOUT3, NULL); 204 + gpio_request(GPIO_FN_PORT46_KEYOUT4, NULL); 205 + gpio_request(GPIO_FN_PORT47_KEYOUT5, NULL); 206 + gpio_request(GPIO_FN_PORT48_KEYIN0_PU, NULL); 207 + gpio_request(GPIO_FN_PORT49_KEYIN1_PU, NULL); 208 + gpio_request(GPIO_FN_PORT50_KEYIN2_PU, NULL); 209 + gpio_request(GPIO_FN_PORT55_KEYIN3_PU, NULL); 210 + gpio_request(GPIO_FN_PORT56_KEYIN4_PU, NULL); 211 + gpio_request(GPIO_FN_PORT57_KEYIN5_PU, NULL); 212 + gpio_request(GPIO_FN_PORT58_KEYIN6_PU, NULL); 213 + 214 + /* FLCTL */ 215 + gpio_request(GPIO_FN_FCE0, NULL); 216 + gpio_request(GPIO_FN_D0_ED0_NAF0, NULL); 217 + gpio_request(GPIO_FN_D1_ED1_NAF1, NULL); 218 + gpio_request(GPIO_FN_D2_ED2_NAF2, NULL); 219 + gpio_request(GPIO_FN_D3_ED3_NAF3, NULL); 220 + gpio_request(GPIO_FN_D4_ED4_NAF4, NULL); 221 + gpio_request(GPIO_FN_D5_ED5_NAF5, NULL); 222 + gpio_request(GPIO_FN_D6_ED6_NAF6, NULL); 223 + gpio_request(GPIO_FN_D7_ED7_NAF7, NULL); 224 + gpio_request(GPIO_FN_D8_ED8_NAF8, NULL); 225 + gpio_request(GPIO_FN_D9_ED9_NAF9, NULL); 226 + gpio_request(GPIO_FN_D10_ED10_NAF10, NULL); 227 + gpio_request(GPIO_FN_D11_ED11_NAF11, NULL); 228 + gpio_request(GPIO_FN_D12_ED12_NAF12, NULL); 229 + gpio_request(GPIO_FN_D13_ED13_NAF13, NULL); 230 + gpio_request(GPIO_FN_D14_ED14_NAF14, NULL); 231 + gpio_request(GPIO_FN_D15_ED15_NAF15, NULL); 232 + gpio_request(GPIO_FN_WE0_XWR0_FWE, NULL); 233 + gpio_request(GPIO_FN_FRB, NULL); 234 + /* FOE, FCDE, FSC on dedicated pins */ 235 + __raw_writel(__raw_readl(0xe6158048) & ~(1 << 15), 0xe6158048); 282 236 283 237 sh7367_add_standard_devices(); 284 238
+57
arch/arm/mach-shmobile/board-g4evm.c
··· 28 28 #include <linux/mtd/physmap.h> 29 29 #include <linux/usb/r8a66597.h> 30 30 #include <linux/io.h> 31 + #include <linux/input.h> 32 + #include <linux/input/sh_keysc.h> 31 33 #include <linux/gpio.h> 32 34 #include <mach/sh7377.h> 33 35 #include <mach/common.h> ··· 130 128 .resource = usb_host_resources, 131 129 }; 132 130 131 + /* KEYSC */ 132 + static struct sh_keysc_info keysc_info = { 133 + .mode = SH_KEYSC_MODE_5, 134 + .scan_timing = 3, 135 + .delay = 100, 136 + .keycodes = { 137 + KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, 138 + KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, 139 + KEY_M, KEY_N, KEY_U, KEY_P, KEY_Q, KEY_R, 140 + KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, 141 + KEY_Y, KEY_Z, KEY_HOME, KEY_SLEEP, KEY_WAKEUP, KEY_COFFEE, 142 + KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, 143 + KEY_6, KEY_7, KEY_8, KEY_9, KEY_STOP, KEY_COMPUTER, 144 + }, 145 + }; 146 + 147 + static struct resource keysc_resources[] = { 148 + [0] = { 149 + .name = "KEYSC", 150 + .start = 0xe61b0000, 151 + .end = 0xe61b000f, 152 + .flags = IORESOURCE_MEM, 153 + }, 154 + [1] = { 155 + .start = 79, 156 + .flags = IORESOURCE_IRQ, 157 + }, 158 + }; 159 + 160 + static struct platform_device keysc_device = { 161 + .name = "sh_keysc", 162 + .id = 0, /* keysc0 clock */ 163 + .num_resources = ARRAY_SIZE(keysc_resources), 164 + .resource = keysc_resources, 165 + .dev = { 166 + .platform_data = &keysc_info, 167 + }, 168 + }; 169 + 133 170 static struct platform_device *g4evm_devices[] __initdata = { 134 171 &nor_flash_device, 135 172 &usb_host_device, 173 + &keysc_device, 136 174 }; 137 175 138 176 static struct map_desc g4evm_io_desc[] __initdata = { ··· 237 195 __raw_writew(0x00e0, 0xe60581c0); /* CPFCH */ 238 196 __raw_writew(0x6010, 0xe60581c6); /* CGPOSR */ 239 197 __raw_writew(0x8a0a, 0xe605810c); /* USBCR2 */ 198 + 199 + /* KEYSC @ CN31 */ 200 + gpio_request(GPIO_FN_PORT60_KEYOUT5, NULL); 201 + gpio_request(GPIO_FN_PORT61_KEYOUT4, NULL); 202 + gpio_request(GPIO_FN_PORT62_KEYOUT3, NULL); 203 + gpio_request(GPIO_FN_PORT63_KEYOUT2, NULL); 204 + gpio_request(GPIO_FN_PORT64_KEYOUT1, NULL); 205 + gpio_request(GPIO_FN_PORT65_KEYOUT0, NULL); 206 + gpio_request(GPIO_FN_PORT66_KEYIN0_PU, NULL); 207 + gpio_request(GPIO_FN_PORT67_KEYIN1_PU, NULL); 208 + gpio_request(GPIO_FN_PORT68_KEYIN2_PU, NULL); 209 + gpio_request(GPIO_FN_PORT69_KEYIN3_PU, NULL); 210 + gpio_request(GPIO_FN_PORT70_KEYIN4_PU, NULL); 211 + gpio_request(GPIO_FN_PORT71_KEYIN5_PU, NULL); 212 + gpio_request(GPIO_FN_PORT72_KEYIN6_PU, NULL); 240 213 241 214 sh7377_add_standard_devices(); 242 215
+7
arch/arm/mach-shmobile/clock-sh7367.c
··· 75 75 .name = "usb0", 76 76 }; 77 77 78 + /* a static keysc0 clk for now - enough to get sh_keysc working */ 79 + static struct clk keysc0_clk = { 80 + .name = "keysc0", 81 + }; 82 + 78 83 static struct clk_lookup lookups[] = { 79 84 { 80 85 .clk = &peripheral_clk, ··· 87 82 .clk = &r_clk, 88 83 }, { 89 84 .clk = &usb0_clk, 85 + }, { 86 + .clk = &keysc0_clk, 90 87 } 91 88 }; 92 89
+23 -23
arch/arm/mach-shmobile/intc-sh7367.c
··· 27 27 28 28 enum { 29 29 UNUSED_INTCA = 0, 30 + ENABLED, 31 + DISABLED, 30 32 31 33 /* interrupt sources INTCA */ 32 34 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A, ··· 48 46 MSIOF2, MSIOF1, 49 47 SCIFA4, SCIFA5, SCIFB, 50 48 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I, 51 - SDHI0_SDHI0I0, SDHI0_SDHI0I1, SDHI0_SDHI0I2, SDHI0_SDHI0I3, 52 - SDHI1_SDHI1I0, SDHI1_SDHI1I1, SDHI1_SDHI1I2, SDHI1_SDHI1I3, 49 + SDHI0, 50 + SDHI1, 53 51 MSU_MSU, MSU_MSU2, 54 52 IREM, 55 53 SIU, ··· 61 59 TTI20, 62 60 MISTY, 63 61 DDM, 64 - SDHI2_SDHI2I0, SDHI2_SDHI2I1, SDHI2_SDHI2I2, SDHI2_SDHI2I3, 62 + SDHI2, 65 63 RWDT0, RWDT1, 66 64 DMAC_1_DEI0, DMAC_1_DEI1, DMAC_1_DEI2, DMAC_1_DEI3, 67 65 DMAC_2_DEI4, DMAC_2_DEI5, DMAC_2_DADERR, ··· 72 70 73 71 /* interrupt groups INTCA */ 74 72 DMAC_1, DMAC_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, 75 - ETM11, ARM11, USBHS, FLCTL, IIC1, SDHI0, SDHI1, SDHI2, 73 + ETM11, ARM11, USBHS, FLCTL, IIC1 76 74 }; 77 75 78 76 static struct intc_vect intca_vectors[] = { ··· 107 105 INTC_VECT(SCIFB, 0x0d60), 108 106 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0), 109 107 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0), 110 - INTC_VECT(SDHI0_SDHI0I0, 0x0e00), INTC_VECT(SDHI0_SDHI0I1, 0x0e20), 111 - INTC_VECT(SDHI0_SDHI0I2, 0x0e40), INTC_VECT(SDHI0_SDHI0I3, 0x0e60), 112 - INTC_VECT(SDHI1_SDHI1I0, 0x0e80), INTC_VECT(SDHI1_SDHI1I1, 0x0ea0), 113 - INTC_VECT(SDHI1_SDHI1I2, 0x0ec0), INTC_VECT(SDHI1_SDHI1I3, 0x0ee0), 108 + INTC_VECT(SDHI0, 0x0e00), INTC_VECT(SDHI0, 0x0e20), 109 + INTC_VECT(SDHI0, 0x0e40), INTC_VECT(SDHI0, 0x0e60), 110 + INTC_VECT(SDHI1, 0x0e80), INTC_VECT(SDHI1, 0x0ea0), 111 + INTC_VECT(SDHI1, 0x0ec0), INTC_VECT(SDHI1, 0x0ee0), 114 112 INTC_VECT(MSU_MSU, 0x0f20), INTC_VECT(MSU_MSU2, 0x0f40), 115 113 INTC_VECT(IREM, 0x0f60), 116 114 INTC_VECT(SIU, 0x0fa0), ··· 124 122 INTC_VECT(TTI20, 0x1100), 125 123 INTC_VECT(MISTY, 0x1120), 126 124 INTC_VECT(DDM, 0x1140), 127 - INTC_VECT(SDHI2_SDHI2I0, 0x1200), INTC_VECT(SDHI2_SDHI2I1, 0x1220), 128 - INTC_VECT(SDHI2_SDHI2I2, 0x1240), INTC_VECT(SDHI2_SDHI2I3, 0x1260), 125 + INTC_VECT(SDHI2, 0x1200), INTC_VECT(SDHI2, 0x1220), 126 + INTC_VECT(SDHI2, 0x1240), INTC_VECT(SDHI2, 0x1260), 129 127 INTC_VECT(RWDT0, 0x1280), INTC_VECT(RWDT1, 0x12a0), 130 128 INTC_VECT(DMAC_1_DEI0, 0x2000), INTC_VECT(DMAC_1_DEI1, 0x2020), 131 129 INTC_VECT(DMAC_1_DEI2, 0x2040), INTC_VECT(DMAC_1_DEI3, 0x2060), ··· 160 158 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI, 161 159 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I), 162 160 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1), 163 - INTC_GROUP(SDHI0, SDHI0_SDHI0I0, SDHI0_SDHI0I1, 164 - SDHI0_SDHI0I2, SDHI0_SDHI0I3), 165 - INTC_GROUP(SDHI1, SDHI1_SDHI1I0, SDHI1_SDHI1I1, 166 - SDHI1_SDHI1I2, SDHI1_SDHI1I3), 167 - INTC_GROUP(SDHI2, SDHI2_SDHI2I0, SDHI2_SDHI2I1, 168 - SDHI2_SDHI2I2, SDHI2_SDHI2I3), 169 161 }; 170 162 171 163 static struct intc_mask_reg intca_mask_registers[] = { ··· 189 193 { SCIFB, SCIFA5, SCIFA4, MSIOF1, 190 194 0, 0, MSIOF2, 0 } }, 191 195 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */ 192 - { SDHI0_SDHI0I3, SDHI0_SDHI0I2, SDHI0_SDHI0I1, SDHI0_SDHI0I0, 196 + { DISABLED, DISABLED, ENABLED, ENABLED, 193 197 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, 194 198 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */ 195 - { SDHI1_SDHI1I3, SDHI1_SDHI1I2, SDHI1_SDHI1I1, SDHI1_SDHI1I0, 199 + { DISABLED, DISABLED, ENABLED, ENABLED, 196 200 TTI20, USBDMAC_USHDMI, SPU, SIU } }, 197 201 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */ 198 202 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10, ··· 207 211 { 0, 0, TPU0, TPU1, 208 212 TPU2, TPU3, TPU4, 0 } }, 209 213 { 0xe69400b4, 0xe69400f4, 8, /* IMR13A / IMCR13A */ 210 - { SDHI2_SDHI2I3, SDHI2_SDHI2I2, SDHI2_SDHI2I1, SDHI2_SDHI2I0, 214 + { DISABLED, DISABLED, ENABLED, ENABLED, 211 215 MISTY, CMT3, RWDT1, RWDT0 } }, 212 216 }; 213 217 ··· 254 258 { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } }, 255 259 }; 256 260 257 - static DECLARE_INTC_DESC_ACK(intca_desc, "sh7367-intca", 258 - intca_vectors, intca_groups, 259 - intca_mask_registers, intca_prio_registers, 260 - intca_sense_registers, intca_ack_registers); 261 + static struct intc_desc intca_desc __initdata = { 262 + .name = "sh7367-intca", 263 + .force_enable = ENABLED, 264 + .force_disable = DISABLED, 265 + .hw = INTC_HW_DESC(intca_vectors, intca_groups, 266 + intca_mask_registers, intca_prio_registers, 267 + intca_sense_registers, intca_ack_registers), 268 + }; 261 269 262 270 void __init sh7367_init_irq(void) 263 271 {
+23 -23
arch/arm/mach-shmobile/intc-sh7372.c
··· 27 27 28 28 enum { 29 29 UNUSED_INTCA = 0, 30 + ENABLED, 31 + DISABLED, 30 32 31 33 /* interrupt sources INTCA */ 32 34 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A, ··· 49 47 MSIOF2, MSIOF1, 50 48 SCIFA4, SCIFA5, SCIFB, 51 49 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I, 52 - SDHI0_SDHI0I0, SDHI0_SDHI0I1, SDHI0_SDHI0I2, SDHI0_SDHI0I3, 53 - SDHI1_SDHI1I0, SDHI1_SDHI1I1, SDHI1_SDHI1I2, 50 + SDHI0, 51 + SDHI1, 54 52 IRREM, 55 53 IRDA, 56 54 TPU0, 57 55 TTI20, 58 56 DDM, 59 - SDHI2_SDHI2I0, SDHI2_SDHI2I1, SDHI2_SDHI2I2, SDHI2_SDHI2I3, 57 + SDHI2, 60 58 RWDT0, 61 59 DMAC1_1_DEI0, DMAC1_1_DEI1, DMAC1_1_DEI2, DMAC1_1_DEI3, 62 60 DMAC1_2_DEI4, DMAC1_2_DEI5, DMAC1_2_DADERR, ··· 84 82 85 83 /* interrupt groups INTCA */ 86 84 DMAC1_1, DMAC1_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, SHWYSTAT, 87 - AP_ARM1, AP_ARM2, SPU2, FLCTL, IIC1, SDHI0, SDHI1, SDHI2 85 + AP_ARM1, AP_ARM2, SPU2, FLCTL, IIC1 88 86 }; 89 87 90 88 static struct intc_vect intca_vectors[] __initdata = { ··· 125 123 INTC_VECT(SCIFB, 0x0d60), 126 124 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0), 127 125 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0), 128 - INTC_VECT(SDHI0_SDHI0I0, 0x0e00), INTC_VECT(SDHI0_SDHI0I1, 0x0e20), 129 - INTC_VECT(SDHI0_SDHI0I2, 0x0e40), INTC_VECT(SDHI0_SDHI0I3, 0x0e60), 130 - INTC_VECT(SDHI1_SDHI1I0, 0x0e80), INTC_VECT(SDHI1_SDHI1I1, 0x0ea0), 131 - INTC_VECT(SDHI1_SDHI1I2, 0x0ec0), 126 + INTC_VECT(SDHI0, 0x0e00), INTC_VECT(SDHI0, 0x0e20), 127 + INTC_VECT(SDHI0, 0x0e40), INTC_VECT(SDHI0, 0x0e60), 128 + INTC_VECT(SDHI1, 0x0e80), INTC_VECT(SDHI1, 0x0ea0), 129 + INTC_VECT(SDHI1, 0x0ec0), 132 130 INTC_VECT(IRREM, 0x0f60), 133 131 INTC_VECT(IRDA, 0x0480), 134 132 INTC_VECT(TPU0, 0x04a0), 135 133 INTC_VECT(TTI20, 0x1100), 136 134 INTC_VECT(DDM, 0x1140), 137 - INTC_VECT(SDHI2_SDHI2I0, 0x1200), INTC_VECT(SDHI2_SDHI2I1, 0x1220), 138 - INTC_VECT(SDHI2_SDHI2I2, 0x1240), INTC_VECT(SDHI2_SDHI2I3, 0x1260), 135 + INTC_VECT(SDHI2, 0x1200), INTC_VECT(SDHI2, 0x1220), 136 + INTC_VECT(SDHI2, 0x1240), INTC_VECT(SDHI2, 0x1260), 139 137 INTC_VECT(RWDT0, 0x1280), 140 138 INTC_VECT(DMAC1_1_DEI0, 0x2000), INTC_VECT(DMAC1_1_DEI1, 0x2020), 141 139 INTC_VECT(DMAC1_1_DEI2, 0x2040), INTC_VECT(DMAC1_1_DEI3, 0x2060), ··· 195 193 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI, 196 194 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I), 197 195 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1), 198 - INTC_GROUP(SDHI0, SDHI0_SDHI0I0, SDHI0_SDHI0I1, 199 - SDHI0_SDHI0I2, SDHI0_SDHI0I3), 200 - INTC_GROUP(SDHI1, SDHI1_SDHI1I0, SDHI1_SDHI1I1, 201 - SDHI1_SDHI1I2), 202 - INTC_GROUP(SDHI2, SDHI2_SDHI2I0, SDHI2_SDHI2I1, 203 - SDHI2_SDHI2I2, SDHI2_SDHI2I3), 204 196 INTC_GROUP(SHWYSTAT, SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM), 205 197 }; 206 198 ··· 230 234 { SCIFB, SCIFA5, SCIFA4, MSIOF1, 231 235 0, 0, MSIOF2, 0 } }, 232 236 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */ 233 - { SDHI0_SDHI0I3, SDHI0_SDHI0I2, SDHI0_SDHI0I1, SDHI0_SDHI0I0, 237 + { DISABLED, DISABLED, ENABLED, ENABLED, 234 238 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, 235 239 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */ 236 - { 0, SDHI1_SDHI1I2, SDHI1_SDHI1I1, SDHI1_SDHI1I0, 240 + { 0, DISABLED, ENABLED, ENABLED, 237 241 TTI20, USBHSDMAC0_USHDMI, 0, 0 } }, 238 242 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */ 239 243 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10, ··· 248 252 { 0, 0, TPU0, 0, 249 253 0, 0, 0, 0 } }, 250 254 { 0xe69400b4, 0xe69400f4, 8, /* IMR13A / IMCR13A */ 251 - { SDHI2_SDHI2I3, SDHI2_SDHI2I2, SDHI2_SDHI2I1, SDHI2_SDHI2I0, 255 + { DISABLED, DISABLED, ENABLED, ENABLED, 252 256 0, CMT3, 0, RWDT0 } }, 253 257 { 0xe6950080, 0xe69500c0, 8, /* IMR0A3 / IMCR0A3 */ 254 258 { SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM, 0, ··· 354 358 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } }, 355 359 }; 356 360 357 - static DECLARE_INTC_DESC_ACK(intca_desc, "sh7372-intca", 358 - intca_vectors, intca_groups, 359 - intca_mask_registers, intca_prio_registers, 360 - intca_sense_registers, intca_ack_registers); 361 + static struct intc_desc intca_desc __initdata = { 362 + .name = "sh7372-intca", 363 + .force_enable = ENABLED, 364 + .force_disable = DISABLED, 365 + .hw = INTC_HW_DESC(intca_vectors, intca_groups, 366 + intca_mask_registers, intca_prio_registers, 367 + intca_sense_registers, intca_ack_registers), 368 + }; 361 369 362 370 void __init sh7372_init_irq(void) 363 371 {
+19 -17
arch/arm/mach-shmobile/intc-sh7377.c
··· 27 27 28 28 enum { 29 29 UNUSED_INTCA = 0, 30 + ENABLED, 31 + DISABLED, 30 32 31 33 /* interrupt sources INTCA */ 32 34 IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A, ··· 51 49 MSIOF2, MSIOF1, 52 50 SCIFA4, SCIFA5, SCIFB, 53 51 FLCTL_FLSTEI, FLCTL_FLTENDI, FLCTL_FLTREQ0I, FLCTL_FLTREQ1I, 54 - SDHI0_SDHI0I0, SDHI0_SDHI0I1, SDHI0_SDHI0I2, SDHI0_SDHI0I3, 55 - SDHI1_SDHI1I0, SDHI1_SDHI1I1, SDHI1_SDHI1I2, SDHI1_SDHI1I3, 52 + SDHI0, 53 + SDHI1, 56 54 MSU_MSU, MSU_MSU2, 57 55 IRREM, 58 56 MSUG, ··· 86 84 87 85 /* interrupt groups INTCA */ 88 86 DMAC_1, DMAC_2, DMAC2_1, DMAC2_2, DMAC3_1, DMAC3_2, SHWYSTAT, 89 - AP_ARM1, AP_ARM2, USBHS, SPU2, FLCTL, IIC1, SDHI0, SDHI1, 87 + AP_ARM1, AP_ARM2, USBHS, SPU2, FLCTL, IIC1, 90 88 ICUSB, ICUDMC 91 89 }; 92 90 ··· 130 128 INTC_VECT(SCIFB, 0x0d60), 131 129 INTC_VECT(FLCTL_FLSTEI, 0x0d80), INTC_VECT(FLCTL_FLTENDI, 0x0da0), 132 130 INTC_VECT(FLCTL_FLTREQ0I, 0x0dc0), INTC_VECT(FLCTL_FLTREQ1I, 0x0de0), 133 - INTC_VECT(SDHI0_SDHI0I0, 0x0e00), INTC_VECT(SDHI0_SDHI0I1, 0x0e20), 134 - INTC_VECT(SDHI0_SDHI0I2, 0x0e40), INTC_VECT(SDHI0_SDHI0I3, 0x0e60), 135 - INTC_VECT(SDHI1_SDHI1I0, 0x0e80), INTC_VECT(SDHI1_SDHI1I1, 0x0ea0), 136 - INTC_VECT(SDHI1_SDHI1I2, 0x0ec0), INTC_VECT(SDHI1_SDHI1I3, 0x0ee0), 131 + INTC_VECT(SDHI0, 0x0e00), INTC_VECT(SDHI0, 0x0e20), 132 + INTC_VECT(SDHI0, 0x0e40), INTC_VECT(SDHI0, 0x0e60), 133 + INTC_VECT(SDHI1, 0x0e80), INTC_VECT(SDHI1, 0x0ea0), 134 + INTC_VECT(SDHI1, 0x0ec0), INTC_VECT(SDHI1, 0x0ee0), 137 135 INTC_VECT(MSU_MSU, 0x0f20), INTC_VECT(MSU_MSU2, 0x0f40), 138 136 INTC_VECT(IRREM, 0x0f60), 139 137 INTC_VECT(MSUG, 0x0fa0), ··· 197 195 INTC_GROUP(FLCTL, FLCTL_FLSTEI, FLCTL_FLTENDI, 198 196 FLCTL_FLTREQ0I, FLCTL_FLTREQ1I), 199 197 INTC_GROUP(IIC1, IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1), 200 - INTC_GROUP(SDHI0, SDHI0_SDHI0I0, SDHI0_SDHI0I1, 201 - SDHI0_SDHI0I2, SDHI0_SDHI0I3), 202 - INTC_GROUP(SDHI1, SDHI1_SDHI1I0, SDHI1_SDHI1I1, 203 - SDHI1_SDHI1I2, SDHI1_SDHI1I3), 204 198 INTC_GROUP(SHWYSTAT, SHWYSTAT_RT, SHWYSTAT_HS, SHWYSTAT_COM), 205 199 INTC_GROUP(ICUSB, ICUSB_ICUSB0, ICUSB_ICUSB1), 206 200 INTC_GROUP(ICUDMC, ICUDMC_ICUDMC1, ICUDMC_ICUDMC2), ··· 234 236 { SCIFB, SCIFA5, SCIFA4, MSIOF1, 235 237 0, 0, MSIOF2, 0 } }, 236 238 { 0xe694009c, 0xe69400dc, 8, /* IMR7A / IMCR7A */ 237 - { SDHI0_SDHI0I3, SDHI0_SDHI0I2, SDHI0_SDHI0I1, SDHI0_SDHI0I0, 239 + { DISABLED, DISABLED, ENABLED, ENABLED, 238 240 FLCTL_FLTREQ1I, FLCTL_FLTREQ0I, FLCTL_FLTENDI, FLCTL_FLSTEI } }, 239 241 { 0xe69400a0, 0xe69400e0, 8, /* IMR8A / IMCR8A */ 240 - { SDHI1_SDHI1I3, SDHI1_SDHI1I2, SDHI1_SDHI1I1, SDHI1_SDHI1I0, 242 + { DISABLED, DISABLED, ENABLED, ENABLED, 241 243 TTI20, USBDMAC_USHDMI, 0, MSUG } }, 242 244 { 0xe69400a4, 0xe69400e4, 8, /* IMR9A / IMCR9A */ 243 245 { CMT1_CMT13, CMT1_CMT12, CMT1_CMT11, CMT1_CMT10, ··· 337 339 { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } }, 338 340 }; 339 341 340 - static DECLARE_INTC_DESC_ACK(intca_desc, "sh7377-intca", 341 - intca_vectors, intca_groups, 342 - intca_mask_registers, intca_prio_registers, 343 - intca_sense_registers, intca_ack_registers); 342 + static struct intc_desc intca_desc __initdata = { 343 + .name = "sh7377-intca", 344 + .force_enable = ENABLED, 345 + .force_disable = DISABLED, 346 + .hw = INTC_HW_DESC(intca_vectors, intca_groups, 347 + intca_mask_registers, intca_prio_registers, 348 + intca_sense_registers, intca_ack_registers), 349 + }; 344 350 345 351 void __init sh7377_init_irq(void) 346 352 {
+1 -1
drivers/mtd/nand/Kconfig
··· 457 457 458 458 config MTD_NAND_SH_FLCTL 459 459 tristate "Support for NAND on Renesas SuperH FLCTL" 460 - depends on MTD_NAND && SUPERH 460 + depends on MTD_NAND && (SUPERH || ARCH_SHMOBILE) 461 461 help 462 462 Several Renesas SuperH CPU has FLCTL. This option enables support 463 463 for NAND Flash using FLCTL.
+1 -1
drivers/video/Kconfig
··· 1881 1881 1882 1882 config FB_SH_MOBILE_LCDC 1883 1883 tristate "SuperH Mobile LCDC framebuffer support" 1884 - depends on FB && SUPERH && HAVE_CLK 1884 + depends on FB && (SUPERH || ARCH_SHMOBILE) && HAVE_CLK 1885 1885 select FB_SYS_FILLRECT 1886 1886 select FB_SYS_COPYAREA 1887 1887 select FB_SYS_IMAGEBLIT
+24 -7
drivers/video/amba-clcd.c
··· 65 65 if (fb->board->disable) 66 66 fb->board->disable(fb); 67 67 68 - val = readl(fb->regs + CLCD_CNTL); 68 + val = readl(fb->regs + fb->off_cntl); 69 69 if (val & CNTL_LCDPWR) { 70 70 val &= ~CNTL_LCDPWR; 71 - writel(val, fb->regs + CLCD_CNTL); 71 + writel(val, fb->regs + fb->off_cntl); 72 72 73 73 clcdfb_sleep(20); 74 74 } 75 75 if (val & CNTL_LCDEN) { 76 76 val &= ~CNTL_LCDEN; 77 - writel(val, fb->regs + CLCD_CNTL); 77 + writel(val, fb->regs + fb->off_cntl); 78 78 } 79 79 80 80 /* ··· 94 94 * Bring up by first enabling.. 95 95 */ 96 96 cntl |= CNTL_LCDEN; 97 - writel(cntl, fb->regs + CLCD_CNTL); 97 + writel(cntl, fb->regs + fb->off_cntl); 98 98 99 99 clcdfb_sleep(20); 100 100 ··· 102 102 * and now apply power. 103 103 */ 104 104 cntl |= CNTL_LCDPWR; 105 - writel(cntl, fb->regs + CLCD_CNTL); 105 + writel(cntl, fb->regs + fb->off_cntl); 106 106 107 107 /* 108 108 * finally, enable the interface. ··· 233 233 readl(fb->regs + CLCD_TIM0), readl(fb->regs + CLCD_TIM1), 234 234 readl(fb->regs + CLCD_TIM2), readl(fb->regs + CLCD_TIM3), 235 235 readl(fb->regs + CLCD_UBAS), readl(fb->regs + CLCD_LBAS), 236 - readl(fb->regs + CLCD_IENB), readl(fb->regs + CLCD_CNTL)); 236 + readl(fb->regs + fb->off_ienb), readl(fb->regs + fb->off_cntl)); 237 237 #endif 238 238 239 239 return 0; ··· 345 345 { 346 346 int ret; 347 347 348 + /* 349 + * ARM PL111 always has IENB at 0x1c; it's only PL110 350 + * which is reversed on some platforms. 351 + */ 352 + if (amba_manf(fb->dev) == 0x41 && amba_part(fb->dev) == 0x111) { 353 + fb->off_ienb = CLCD_PL111_IENB; 354 + fb->off_cntl = CLCD_PL111_CNTL; 355 + } else { 356 + #ifdef CONFIG_ARCH_VERSATILE 357 + fb->off_ienb = CLCD_PL111_IENB; 358 + fb->off_cntl = CLCD_PL111_CNTL; 359 + #else 360 + fb->off_ienb = CLCD_PL110_IENB; 361 + fb->off_cntl = CLCD_PL110_CNTL; 362 + #endif 363 + } 364 + 348 365 fb->clk = clk_get(&fb->dev->dev, NULL); 349 366 if (IS_ERR(fb->clk)) { 350 367 ret = PTR_ERR(fb->clk); ··· 433 416 /* 434 417 * Ensure interrupts are disabled. 435 418 */ 436 - writel(0, fb->regs + CLCD_IENB); 419 + writel(0, fb->regs + fb->off_ienb); 437 420 438 421 fb_set_var(&fb->fb, &fb->fb.var); 439 422
+16 -15
include/linux/amba/clcd.h
··· 21 21 #define CLCD_UBAS 0x00000010 22 22 #define CLCD_LBAS 0x00000014 23 23 24 - #if !defined(CONFIG_ARCH_VERSATILE) && !defined(CONFIG_ARCH_REALVIEW) 25 - #define CLCD_IENB 0x00000018 26 - #define CLCD_CNTL 0x0000001c 27 - #else 28 - /* 29 - * Someone rearranged these two registers on the Versatile 30 - * platform... 31 - */ 32 - #define CLCD_IENB 0x0000001c 33 - #define CLCD_CNTL 0x00000018 34 - #endif 24 + #define CLCD_PL110_IENB 0x00000018 25 + #define CLCD_PL110_CNTL 0x0000001c 26 + #define CLCD_PL110_STAT 0x00000020 27 + #define CLCD_PL110_INTR 0x00000024 28 + #define CLCD_PL110_UCUR 0x00000028 29 + #define CLCD_PL110_LCUR 0x0000002C 35 30 36 - #define CLCD_STAT 0x00000020 37 - #define CLCD_INTR 0x00000024 38 - #define CLCD_UCUR 0x00000028 39 - #define CLCD_LCUR 0x0000002C 31 + #define CLCD_PL111_CNTL 0x00000018 32 + #define CLCD_PL111_IENB 0x0000001c 33 + #define CLCD_PL111_RIS 0x00000020 34 + #define CLCD_PL111_MIS 0x00000024 35 + #define CLCD_PL111_ICR 0x00000028 36 + #define CLCD_PL111_UCUR 0x0000002c 37 + #define CLCD_PL111_LCUR 0x00000030 38 + 40 39 #define CLCD_PALL 0x00000200 41 40 #define CLCD_PALETTE 0x00000200 42 41 ··· 146 147 struct clcd_board *board; 147 148 void *board_data; 148 149 void __iomem *regs; 150 + u16 off_ienb; 151 + u16 off_cntl; 149 152 u32 clcd_cntl; 150 153 u32 cmap[16]; 151 154 };