Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: pxa: remove pxa95x support

PXA95x isn't widely used. And it adds the effort on supporting
multiple platform. So remove it.

The assumption is that nobody will miss this support. If you are
reading this text because you actually require pxa95x support on
a new kernel, we can work out a way to revert this patch or add
support to the mmp platform.

Signed-off-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

authored by

Haojian Zhuang and committed by
Arnd Bergmann
49ea7fc0 b5932cc8

+9 -630
+1 -1
arch/arm/Kconfig
··· 1154 1154 config IWMMXT 1155 1155 bool "Enable iWMMXt support" 1156 1156 depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4 1157 - default y if PXA27x || PXA3xx || PXA95x || ARCH_MMP 1157 + default y if PXA27x || PXA3xx || ARCH_MMP 1158 1158 help 1159 1159 Enable support for iWMMXt context switching at run time if 1160 1160 running on a CPU that supports it.
-34
arch/arm/mach-pxa/Kconfig
··· 2 2 3 3 menu "Intel PXA2xx/PXA3xx Implementations" 4 4 5 - config ARCH_PXA_V7 6 - bool "ARMv7 (PXA95x) based systems" 7 - 8 - if ARCH_PXA_V7 9 - comment "Marvell Dev Platforms (sorted by hardware release time)" 10 - config MACH_TAVOREVB3 11 - bool "PXA95x Development Platform (aka TavorEVB III)" 12 - select CPU_PXA955 13 - 14 - config MACH_SAARB 15 - bool "PXA955 Handheld Platform (aka SAARB)" 16 - select CPU_PXA955 17 - endif 18 - 19 - config PXA_V7_MACH_AUTO 20 - def_bool y 21 - depends on ARCH_PXA_V7 22 - depends on !MACH_SAARB 23 - select MACH_TAVOREVB3 24 - 25 - if !ARCH_PXA_V7 26 5 comment "Intel/Marvell Dev Platforms (sorted by hardware release time)" 27 6 28 7 config MACH_PXA3XX_DT ··· 609 630 bool "Zipit Z2 Handheld" 610 631 select HAVE_PWM 611 632 select PXA27x 612 - endif 613 633 endmenu 614 634 615 635 config PXA25x ··· 665 687 select CPU_PXA930 666 688 help 667 689 PXA935 (codename Tavor-P65) 668 - 669 - config PXA95x 670 - bool 671 - select CPU_PJ4 672 - help 673 - Select code specific to PXA95x variants 674 - 675 - config CPU_PXA955 676 - bool 677 - select PXA95x 678 - help 679 - PXA950 (codename MG1) 680 690 681 691 config PXA_SHARP_C7xx 682 692 bool
-3
arch/arm/mach-pxa/Makefile
··· 19 19 obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o clock-pxa2xx.o pxa2xx.o pxa25x.o 20 20 obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o clock-pxa2xx.o pxa2xx.o pxa27x.o 21 21 obj-$(CONFIG_PXA3xx) += mfp-pxa3xx.o clock-pxa3xx.o pxa3xx.o smemc.o pxa3xx-ulpi.o 22 - obj-$(CONFIG_PXA95x) += mfp-pxa3xx.o clock-pxa3xx.o pxa3xx.o pxa95x.o smemc.o 23 22 obj-$(CONFIG_CPU_PXA300) += pxa300.o 24 23 obj-$(CONFIG_CPU_PXA320) += pxa320.o 25 24 obj-$(CONFIG_CPU_PXA930) += pxa930.o ··· 35 36 obj-$(CONFIG_MACH_ZYLONITE320) += zylonite.o zylonite_pxa320.o 36 37 obj-$(CONFIG_MACH_LITTLETON) += littleton.o 37 38 obj-$(CONFIG_MACH_TAVOREVB) += tavorevb.o 38 - obj-$(CONFIG_MACH_TAVOREVB3) += tavorevb3.o 39 39 obj-$(CONFIG_MACH_SAAR) += saar.o 40 - obj-$(CONFIG_MACH_SAARB) += saarb.o 41 40 42 41 # 3rd Party Dev Platforms 43 42 obj-$(CONFIG_ARCH_PXA_IDP) += idp.o
+1 -1
arch/arm/mach-pxa/clock.h
··· 57 57 58 58 extern struct syscore_ops pxa2xx_clock_syscore_ops; 59 59 60 - #if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) 60 + #if defined(CONFIG_PXA3xx) 61 61 #define DEFINE_PXA3_CKEN(_name, _cken, _rate, _delay) \ 62 62 struct clk clk_##_name = { \ 63 63 .ops = &clk_pxa3xx_cken_ops, \
+4 -4
arch/arm/mach-pxa/devices.c
··· 703 703 } 704 704 #endif /* CONFIG_PXA27x || CONFIG_PXA3xx */ 705 705 706 - #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) 706 + #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx) 707 707 static struct resource pxa27x_resource_keypad[] = { 708 708 [0] = { 709 709 .start = 0x41500000, ··· 872 872 .resource = pxa27x_resource_pwm1, 873 873 .num_resources = ARRAY_SIZE(pxa27x_resource_pwm1), 874 874 }; 875 - #endif /* CONFIG_PXA27x || CONFIG_PXA3xx || CONFIG_PXA95x*/ 875 + #endif /* CONFIG_PXA27x || CONFIG_PXA3xx */ 876 876 877 877 #ifdef CONFIG_PXA3xx 878 878 static struct resource pxa3xx_resources_mci2[] = { ··· 981 981 982 982 #endif /* CONFIG_PXA3xx */ 983 983 984 - #if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) 984 + #if defined(CONFIG_PXA3xx) 985 985 static struct resource pxa3xx_resources_i2c_power[] = { 986 986 { 987 987 .start = 0x40f500c0, ··· 1082 1082 .resource = pxa3xx_resource_ssp4, 1083 1083 .num_resources = ARRAY_SIZE(pxa3xx_resource_ssp4), 1084 1084 }; 1085 - #endif /* CONFIG_PXA3xx || CONFIG_PXA95x */ 1085 + #endif /* CONFIG_PXA3xx */ 1086 1086 1087 1087 struct resource pxa_resource_gpio[] = { 1088 1088 {
-28
arch/arm/mach-pxa/include/mach/hardware.h
··· 194 194 #define __cpu_is_pxa935(id) (0) 195 195 #endif 196 196 197 - #ifdef CONFIG_CPU_PXA955 198 - #define __cpu_is_pxa955(id) \ 199 - ({ \ 200 - unsigned int _id = (id) >> 4 & 0xfff; \ 201 - _id == 0x581 || _id == 0xc08 \ 202 - || _id == 0xb76; \ 203 - }) 204 - #else 205 - #define __cpu_is_pxa955(id) (0) 206 - #endif 207 - 208 197 #define cpu_is_pxa210() \ 209 198 ({ \ 210 199 __cpu_is_pxa210(read_cpuid_id()); \ ··· 244 255 __cpu_is_pxa935(read_cpuid_id()); \ 245 256 }) 246 257 247 - #define cpu_is_pxa955() \ 248 - ({ \ 249 - __cpu_is_pxa955(read_cpuid_id()); \ 250 - }) 251 258 252 259 253 260 /* ··· 282 297 #define __cpu_is_pxa93x(id) (0) 283 298 #endif 284 299 285 - #ifdef CONFIG_PXA95x 286 - #define __cpu_is_pxa95x(id) \ 287 - ({ \ 288 - __cpu_is_pxa955(id); \ 289 - }) 290 - #else 291 - #define __cpu_is_pxa95x(id) (0) 292 - #endif 293 - 294 300 #define cpu_is_pxa2xx() \ 295 301 ({ \ 296 302 __cpu_is_pxa2xx(read_cpuid_id()); \ ··· 297 321 __cpu_is_pxa93x(read_cpuid_id()); \ 298 322 }) 299 323 300 - #define cpu_is_pxa95x() \ 301 - ({ \ 302 - __cpu_is_pxa95x(read_cpuid_id()); \ 303 - }) 304 324 305 325 /* 306 326 * return current memory and LCD clock frequency in units of 10kHz
-1
arch/arm/mach-pxa/include/mach/irqs.h
··· 84 84 #define IRQ_PXA935_MMC0 PXA_IRQ(72) /* MMC0 Controller (PXA935) */ 85 85 #define IRQ_PXA935_MMC1 PXA_IRQ(73) /* MMC1 Controller (PXA935) */ 86 86 #define IRQ_PXA935_MMC2 PXA_IRQ(74) /* MMC2 Controller (PXA935) */ 87 - #define IRQ_PXA955_MMC3 PXA_IRQ(75) /* MMC3 Controller (PXA955) */ 88 87 #define IRQ_U2P PXA_IRQ(93) /* USB PHY D+/D- Lines (PXA935) */ 89 88 90 89 #define PXA_GPIO_IRQ_BASE PXA_IRQ(96)
-1
arch/arm/mach-pxa/include/mach/pxa3xx.h
··· 7 7 8 8 extern void __init pxa3xx_map_io(void); 9 9 extern void __init pxa3xx_init_irq(void); 10 - extern void __init pxa95x_init_irq(void); 11 10 12 11 #define pxa3xx_handle_irq ichp_handle_irq 13 12
-7
arch/arm/mach-pxa/include/mach/pxa95x.h
··· 1 - #ifndef __MACH_PXA95X_H 2 - #define __MACH_PXA95X_H 3 - 4 - #include <mach/pxa3xx.h> 5 - #include <mach/mfp-pxa930.h> 6 - 7 - #endif /* __MACH_PXA95X_H */
-295
arch/arm/mach-pxa/pxa95x.c
··· 1 - /* 2 - * linux/arch/arm/mach-pxa/pxa95x.c 3 - * 4 - * code specific to PXA95x aka MGx 5 - * 6 - * Copyright (C) 2009-2010 Marvell International Ltd. 7 - * 8 - * This program is free software; you can redistribute it and/or modify 9 - * it under the terms of the GNU General Public License version 2 as 10 - * published by the Free Software Foundation. 11 - */ 12 - #include <linux/module.h> 13 - #include <linux/kernel.h> 14 - #include <linux/init.h> 15 - #include <linux/pm.h> 16 - #include <linux/platform_device.h> 17 - #include <linux/i2c/pxa-i2c.h> 18 - #include <linux/irq.h> 19 - #include <linux/io.h> 20 - #include <linux/syscore_ops.h> 21 - 22 - #include <mach/hardware.h> 23 - #include <mach/pxa3xx-regs.h> 24 - #include <mach/pxa930.h> 25 - #include <mach/reset.h> 26 - #include <mach/pm.h> 27 - #include <mach/dma.h> 28 - 29 - #include "generic.h" 30 - #include "devices.h" 31 - #include "clock.h" 32 - 33 - static struct mfp_addr_map pxa95x_mfp_addr_map[] __initdata = { 34 - 35 - MFP_ADDR(GPIO0, 0x02e0), 36 - MFP_ADDR(GPIO1, 0x02dc), 37 - MFP_ADDR(GPIO2, 0x02e8), 38 - MFP_ADDR(GPIO3, 0x02d8), 39 - MFP_ADDR(GPIO4, 0x02e4), 40 - MFP_ADDR(GPIO5, 0x02ec), 41 - MFP_ADDR(GPIO6, 0x02f8), 42 - MFP_ADDR(GPIO7, 0x02fc), 43 - MFP_ADDR(GPIO8, 0x0300), 44 - MFP_ADDR(GPIO9, 0x02d4), 45 - MFP_ADDR(GPIO10, 0x02f4), 46 - MFP_ADDR(GPIO11, 0x02f0), 47 - MFP_ADDR(GPIO12, 0x0304), 48 - MFP_ADDR(GPIO13, 0x0310), 49 - MFP_ADDR(GPIO14, 0x0308), 50 - MFP_ADDR(GPIO15, 0x030c), 51 - MFP_ADDR(GPIO16, 0x04e8), 52 - MFP_ADDR(GPIO17, 0x04f4), 53 - MFP_ADDR(GPIO18, 0x04f8), 54 - MFP_ADDR(GPIO19, 0x04fc), 55 - MFP_ADDR(GPIO20, 0x0518), 56 - MFP_ADDR(GPIO21, 0x051c), 57 - MFP_ADDR(GPIO22, 0x04ec), 58 - MFP_ADDR(GPIO23, 0x0500), 59 - MFP_ADDR(GPIO24, 0x04f0), 60 - MFP_ADDR(GPIO25, 0x0504), 61 - MFP_ADDR(GPIO26, 0x0510), 62 - MFP_ADDR(GPIO27, 0x0514), 63 - MFP_ADDR(GPIO28, 0x0520), 64 - MFP_ADDR(GPIO29, 0x0600), 65 - MFP_ADDR(GPIO30, 0x0618), 66 - MFP_ADDR(GPIO31, 0x0610), 67 - MFP_ADDR(GPIO32, 0x060c), 68 - MFP_ADDR(GPIO33, 0x061c), 69 - MFP_ADDR(GPIO34, 0x0620), 70 - MFP_ADDR(GPIO35, 0x0628), 71 - MFP_ADDR(GPIO36, 0x062c), 72 - MFP_ADDR(GPIO37, 0x0630), 73 - MFP_ADDR(GPIO38, 0x0634), 74 - MFP_ADDR(GPIO39, 0x0638), 75 - MFP_ADDR(GPIO40, 0x063c), 76 - MFP_ADDR(GPIO41, 0x0614), 77 - MFP_ADDR(GPIO42, 0x0624), 78 - MFP_ADDR(GPIO43, 0x0608), 79 - MFP_ADDR(GPIO44, 0x0604), 80 - MFP_ADDR(GPIO45, 0x050c), 81 - MFP_ADDR(GPIO46, 0x0508), 82 - MFP_ADDR(GPIO47, 0x02bc), 83 - MFP_ADDR(GPIO48, 0x02b4), 84 - MFP_ADDR(GPIO49, 0x02b8), 85 - MFP_ADDR(GPIO50, 0x02c8), 86 - MFP_ADDR(GPIO51, 0x02c0), 87 - MFP_ADDR(GPIO52, 0x02c4), 88 - MFP_ADDR(GPIO53, 0x02d0), 89 - MFP_ADDR(GPIO54, 0x02cc), 90 - MFP_ADDR(GPIO55, 0x029c), 91 - MFP_ADDR(GPIO56, 0x02a0), 92 - MFP_ADDR(GPIO57, 0x0294), 93 - MFP_ADDR(GPIO58, 0x0298), 94 - MFP_ADDR(GPIO59, 0x02a4), 95 - MFP_ADDR(GPIO60, 0x02a8), 96 - MFP_ADDR(GPIO61, 0x02b0), 97 - MFP_ADDR(GPIO62, 0x02ac), 98 - MFP_ADDR(GPIO63, 0x0640), 99 - MFP_ADDR(GPIO64, 0x065c), 100 - MFP_ADDR(GPIO65, 0x0648), 101 - MFP_ADDR(GPIO66, 0x0644), 102 - MFP_ADDR(GPIO67, 0x0674), 103 - MFP_ADDR(GPIO68, 0x0658), 104 - MFP_ADDR(GPIO69, 0x0654), 105 - MFP_ADDR(GPIO70, 0x0660), 106 - MFP_ADDR(GPIO71, 0x0668), 107 - MFP_ADDR(GPIO72, 0x0664), 108 - MFP_ADDR(GPIO73, 0x0650), 109 - MFP_ADDR(GPIO74, 0x066c), 110 - MFP_ADDR(GPIO75, 0x064c), 111 - MFP_ADDR(GPIO76, 0x0670), 112 - MFP_ADDR(GPIO77, 0x0678), 113 - MFP_ADDR(GPIO78, 0x067c), 114 - MFP_ADDR(GPIO79, 0x0694), 115 - MFP_ADDR(GPIO80, 0x069c), 116 - MFP_ADDR(GPIO81, 0x06a0), 117 - MFP_ADDR(GPIO82, 0x06a4), 118 - MFP_ADDR(GPIO83, 0x0698), 119 - MFP_ADDR(GPIO84, 0x06bc), 120 - MFP_ADDR(GPIO85, 0x06b4), 121 - MFP_ADDR(GPIO86, 0x06b0), 122 - MFP_ADDR(GPIO87, 0x06c0), 123 - MFP_ADDR(GPIO88, 0x06c4), 124 - MFP_ADDR(GPIO89, 0x06ac), 125 - MFP_ADDR(GPIO90, 0x0680), 126 - MFP_ADDR(GPIO91, 0x0684), 127 - MFP_ADDR(GPIO92, 0x0688), 128 - MFP_ADDR(GPIO93, 0x0690), 129 - MFP_ADDR(GPIO94, 0x068c), 130 - MFP_ADDR(GPIO95, 0x06a8), 131 - MFP_ADDR(GPIO96, 0x06b8), 132 - MFP_ADDR(GPIO97, 0x0410), 133 - MFP_ADDR(GPIO98, 0x0418), 134 - MFP_ADDR(GPIO99, 0x041c), 135 - MFP_ADDR(GPIO100, 0x0414), 136 - MFP_ADDR(GPIO101, 0x0408), 137 - MFP_ADDR(GPIO102, 0x0324), 138 - MFP_ADDR(GPIO103, 0x040c), 139 - MFP_ADDR(GPIO104, 0x0400), 140 - MFP_ADDR(GPIO105, 0x0328), 141 - MFP_ADDR(GPIO106, 0x0404), 142 - 143 - MFP_ADDR(GPIO159, 0x0524), 144 - MFP_ADDR(GPIO163, 0x0534), 145 - MFP_ADDR(GPIO167, 0x0544), 146 - MFP_ADDR(GPIO168, 0x0548), 147 - MFP_ADDR(GPIO169, 0x054c), 148 - MFP_ADDR(GPIO170, 0x0550), 149 - MFP_ADDR(GPIO171, 0x0554), 150 - MFP_ADDR(GPIO172, 0x0558), 151 - MFP_ADDR(GPIO173, 0x055c), 152 - 153 - MFP_ADDR(nXCVREN, 0x0204), 154 - MFP_ADDR(DF_CLE_nOE, 0x020c), 155 - MFP_ADDR(DF_nADV1_ALE, 0x0218), 156 - MFP_ADDR(DF_SCLK_E, 0x0214), 157 - MFP_ADDR(DF_SCLK_S, 0x0210), 158 - MFP_ADDR(nBE0, 0x021c), 159 - MFP_ADDR(nBE1, 0x0220), 160 - MFP_ADDR(DF_nADV2_ALE, 0x0224), 161 - MFP_ADDR(DF_INT_RnB, 0x0228), 162 - MFP_ADDR(DF_nCS0, 0x022c), 163 - MFP_ADDR(DF_nCS1, 0x0230), 164 - MFP_ADDR(nLUA, 0x0254), 165 - MFP_ADDR(nLLA, 0x0258), 166 - MFP_ADDR(DF_nWE, 0x0234), 167 - MFP_ADDR(DF_nRE_nOE, 0x0238), 168 - MFP_ADDR(DF_ADDR0, 0x024c), 169 - MFP_ADDR(DF_ADDR1, 0x0250), 170 - MFP_ADDR(DF_ADDR2, 0x025c), 171 - MFP_ADDR(DF_ADDR3, 0x0260), 172 - MFP_ADDR(DF_IO0, 0x023c), 173 - MFP_ADDR(DF_IO1, 0x0240), 174 - MFP_ADDR(DF_IO2, 0x0244), 175 - MFP_ADDR(DF_IO3, 0x0248), 176 - MFP_ADDR(DF_IO4, 0x0264), 177 - MFP_ADDR(DF_IO5, 0x0268), 178 - MFP_ADDR(DF_IO6, 0x026c), 179 - MFP_ADDR(DF_IO7, 0x0270), 180 - MFP_ADDR(DF_IO8, 0x0274), 181 - MFP_ADDR(DF_IO9, 0x0278), 182 - MFP_ADDR(DF_IO10, 0x027c), 183 - MFP_ADDR(DF_IO11, 0x0280), 184 - MFP_ADDR(DF_IO12, 0x0284), 185 - MFP_ADDR(DF_IO13, 0x0288), 186 - MFP_ADDR(DF_IO14, 0x028c), 187 - MFP_ADDR(DF_IO15, 0x0290), 188 - 189 - MFP_ADDR(GSIM_UIO, 0x0314), 190 - MFP_ADDR(GSIM_UCLK, 0x0318), 191 - MFP_ADDR(GSIM_UDET, 0x031c), 192 - MFP_ADDR(GSIM_nURST, 0x0320), 193 - 194 - MFP_ADDR(PMIC_INT, 0x06c8), 195 - 196 - MFP_ADDR(RDY, 0x0200), 197 - 198 - MFP_ADDR_END, 199 - }; 200 - 201 - static DEFINE_CK(pxa95x_lcd, LCD, &clk_pxa3xx_hsio_ops); 202 - static DEFINE_CLK(pxa95x_pout, &clk_pxa3xx_pout_ops, 13000000, 70); 203 - static DEFINE_PXA3_CKEN(pxa95x_ffuart, FFUART, 14857000, 1); 204 - static DEFINE_PXA3_CKEN(pxa95x_btuart, BTUART, 14857000, 1); 205 - static DEFINE_PXA3_CKEN(pxa95x_stuart, STUART, 14857000, 1); 206 - static DEFINE_PXA3_CKEN(pxa95x_i2c, I2C, 32842000, 0); 207 - static DEFINE_PXA3_CKEN(pxa95x_keypad, KEYPAD, 32768, 0); 208 - static DEFINE_PXA3_CKEN(pxa95x_ssp1, SSP1, 13000000, 0); 209 - static DEFINE_PXA3_CKEN(pxa95x_ssp2, SSP2, 13000000, 0); 210 - static DEFINE_PXA3_CKEN(pxa95x_ssp3, SSP3, 13000000, 0); 211 - static DEFINE_PXA3_CKEN(pxa95x_ssp4, SSP4, 13000000, 0); 212 - static DEFINE_PXA3_CKEN(pxa95x_pwm0, PWM0, 13000000, 0); 213 - static DEFINE_PXA3_CKEN(pxa95x_pwm1, PWM1, 13000000, 0); 214 - static DEFINE_PXA3_CKEN(pxa95x_gpio, GPIO, 13000000, 0); 215 - 216 - static struct clk_lookup pxa95x_clkregs[] = { 217 - INIT_CLKREG(&clk_pxa95x_pout, NULL, "CLK_POUT"), 218 - /* Power I2C clock is always on */ 219 - INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL), 220 - INIT_CLKREG(&clk_pxa95x_lcd, "pxa2xx-fb", NULL), 221 - INIT_CLKREG(&clk_pxa95x_ffuart, "pxa2xx-uart.0", NULL), 222 - INIT_CLKREG(&clk_pxa95x_btuart, "pxa2xx-uart.1", NULL), 223 - INIT_CLKREG(&clk_pxa95x_stuart, "pxa2xx-uart.2", NULL), 224 - INIT_CLKREG(&clk_pxa95x_stuart, "pxa2xx-ir", "UARTCLK"), 225 - INIT_CLKREG(&clk_pxa95x_i2c, "pxa2xx-i2c.0", NULL), 226 - INIT_CLKREG(&clk_pxa95x_keypad, "pxa27x-keypad", NULL), 227 - INIT_CLKREG(&clk_pxa95x_ssp1, "pxa27x-ssp.0", NULL), 228 - INIT_CLKREG(&clk_pxa95x_ssp2, "pxa27x-ssp.1", NULL), 229 - INIT_CLKREG(&clk_pxa95x_ssp3, "pxa27x-ssp.2", NULL), 230 - INIT_CLKREG(&clk_pxa95x_ssp4, "pxa27x-ssp.3", NULL), 231 - INIT_CLKREG(&clk_pxa95x_pwm0, "pxa27x-pwm.0", NULL), 232 - INIT_CLKREG(&clk_pxa95x_pwm1, "pxa27x-pwm.1", NULL), 233 - INIT_CLKREG(&clk_pxa95x_gpio, "pxa-gpio", NULL), 234 - INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL), 235 - }; 236 - 237 - void __init pxa95x_init_irq(void) 238 - { 239 - pxa_init_irq(96, NULL); 240 - } 241 - 242 - /* 243 - * device registration specific to PXA93x. 244 - */ 245 - 246 - void __init pxa95x_set_i2c_power_info(struct i2c_pxa_platform_data *info) 247 - { 248 - pxa_register_device(&pxa3xx_device_i2c_power, info); 249 - } 250 - 251 - static struct platform_device *devices[] __initdata = { 252 - &pxa_device_gpio, 253 - &sa1100_device_rtc, 254 - &pxa_device_rtc, 255 - &pxa27x_device_ssp1, 256 - &pxa27x_device_ssp2, 257 - &pxa27x_device_ssp3, 258 - &pxa3xx_device_ssp4, 259 - &pxa27x_device_pwm0, 260 - &pxa27x_device_pwm1, 261 - }; 262 - 263 - static int __init pxa95x_init(void) 264 - { 265 - int ret = 0, i; 266 - 267 - if (cpu_is_pxa95x()) { 268 - mfp_init_base(io_p2v(MFPR_BASE)); 269 - mfp_init_addr(pxa95x_mfp_addr_map); 270 - 271 - reset_status = ARSR; 272 - 273 - /* 274 - * clear RDH bit every time after reset 275 - * 276 - * Note: the last 3 bits DxS are write-1-to-clear so carefully 277 - * preserve them here in case they will be referenced later 278 - */ 279 - ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S); 280 - 281 - clkdev_add_table(pxa95x_clkregs, ARRAY_SIZE(pxa95x_clkregs)); 282 - 283 - if ((ret = pxa_init_dma(IRQ_DMA, 32))) 284 - return ret; 285 - 286 - register_syscore_ops(&pxa_irq_syscore_ops); 287 - register_syscore_ops(&pxa3xx_clock_syscore_ops); 288 - 289 - ret = platform_add_devices(devices, ARRAY_SIZE(devices)); 290 - } 291 - 292 - return ret; 293 - } 294 - 295 - postcore_initcall(pxa95x_init);
-115
arch/arm/mach-pxa/saarb.c
··· 1 - /* 2 - * linux/arch/arm/mach-pxa/saarb.c 3 - * 4 - * Support for the Marvell Handheld Platform (aka SAARB) 5 - * 6 - * Copyright (C) 2007-2010 Marvell International Ltd. 7 - * 8 - * This program is free software; you can redistribute it and/or modify 9 - * it under the terms of the GNU General Public License version 2 as 10 - * publishhed by the Free Software Foundation. 11 - */ 12 - #include <linux/gpio.h> 13 - #include <linux/init.h> 14 - #include <linux/kernel.h> 15 - #include <linux/i2c.h> 16 - #include <linux/i2c/pxa-i2c.h> 17 - #include <linux/mfd/88pm860x.h> 18 - 19 - #include <asm/mach-types.h> 20 - #include <asm/mach/arch.h> 21 - 22 - #include <mach/irqs.h> 23 - #include <mach/hardware.h> 24 - #include <mach/mfp.h> 25 - #include <mach/mfp-pxa930.h> 26 - #include <mach/pxa95x.h> 27 - 28 - #include "generic.h" 29 - 30 - #define SAARB_NR_IRQS (IRQ_BOARD_START + 40) 31 - 32 - static struct pm860x_touch_pdata saarb_touch = { 33 - .gpadc_prebias = 1, 34 - .slot_cycle = 1, 35 - .tsi_prebias = 6, 36 - .pen_prebias = 16, 37 - .pen_prechg = 2, 38 - .res_x = 300, 39 - }; 40 - 41 - static struct pm860x_backlight_pdata saarb_backlight[] = { 42 - { 43 - .id = PM8606_ID_BACKLIGHT, 44 - .iset = PM8606_WLED_CURRENT(24), 45 - .flags = PM8606_BACKLIGHT1, 46 - }, 47 - {}, 48 - }; 49 - 50 - static struct pm860x_led_pdata saarb_led[] = { 51 - { 52 - .id = PM8606_ID_LED, 53 - .iset = PM8606_LED_CURRENT(12), 54 - .flags = PM8606_LED1_RED, 55 - }, { 56 - .id = PM8606_ID_LED, 57 - .iset = PM8606_LED_CURRENT(12), 58 - .flags = PM8606_LED1_GREEN, 59 - }, { 60 - .id = PM8606_ID_LED, 61 - .iset = PM8606_LED_CURRENT(12), 62 - .flags = PM8606_LED1_BLUE, 63 - }, { 64 - .id = PM8606_ID_LED, 65 - .iset = PM8606_LED_CURRENT(12), 66 - .flags = PM8606_LED2_RED, 67 - }, { 68 - .id = PM8606_ID_LED, 69 - .iset = PM8606_LED_CURRENT(12), 70 - .flags = PM8606_LED2_GREEN, 71 - }, { 72 - .id = PM8606_ID_LED, 73 - .iset = PM8606_LED_CURRENT(12), 74 - .flags = PM8606_LED2_BLUE, 75 - }, 76 - }; 77 - 78 - static struct pm860x_platform_data saarb_pm8607_info = { 79 - .touch = &saarb_touch, 80 - .backlight = &saarb_backlight[0], 81 - .led = &saarb_led[0], 82 - .companion_addr = 0x10, 83 - .irq_mode = 0, 84 - .irq_base = IRQ_BOARD_START, 85 - 86 - .i2c_port = GI2C_PORT, 87 - }; 88 - 89 - static struct i2c_board_info saarb_i2c_info[] = { 90 - { 91 - .type = "88PM860x", 92 - .addr = 0x34, 93 - .platform_data = &saarb_pm8607_info, 94 - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO83)), 95 - }, 96 - }; 97 - 98 - static void __init saarb_init(void) 99 - { 100 - pxa_set_ffuart_info(NULL); 101 - pxa_set_i2c_info(NULL); 102 - i2c_register_board_info(0, ARRAY_AND_SIZE(saarb_i2c_info)); 103 - } 104 - 105 - MACHINE_START(SAARB, "PXA955 Handheld Platform (aka SAARB)") 106 - .atag_offset = 0x100, 107 - .map_io = pxa3xx_map_io, 108 - .nr_irqs = SAARB_NR_IRQS, 109 - .init_irq = pxa95x_init_irq, 110 - .handle_irq = pxa3xx_handle_irq, 111 - .timer = &pxa_timer, 112 - .init_machine = saarb_init, 113 - .restart = pxa_restart, 114 - MACHINE_END 115 -
-136
arch/arm/mach-pxa/tavorevb3.c
··· 1 - /* 2 - * linux/arch/arm/mach-pxa/tavorevb3.c 3 - * 4 - * Support for the Marvell EVB3 Development Platform. 5 - * 6 - * Copyright: (C) Copyright 2008-2010 Marvell International Ltd. 7 - * 8 - * This program is free software; you can redistribute it and/or modify 9 - * it under the terms of the GNU General Public License version 2 as 10 - * publishhed by the Free Software Foundation. 11 - */ 12 - 13 - #include <linux/init.h> 14 - #include <linux/kernel.h> 15 - #include <linux/platform_device.h> 16 - #include <linux/interrupt.h> 17 - #include <linux/i2c.h> 18 - #include <linux/i2c/pxa-i2c.h> 19 - #include <linux/gpio.h> 20 - #include <linux/mfd/88pm860x.h> 21 - 22 - #include <asm/mach-types.h> 23 - #include <asm/mach/arch.h> 24 - 25 - #include <mach/pxa930.h> 26 - 27 - #include "devices.h" 28 - #include "generic.h" 29 - 30 - #define TAVOREVB3_NR_IRQS (IRQ_BOARD_START + 24) 31 - 32 - static mfp_cfg_t evb3_mfp_cfg[] __initdata = { 33 - /* UART */ 34 - GPIO53_UART1_TXD, 35 - GPIO54_UART1_RXD, 36 - 37 - /* PMIC */ 38 - PMIC_INT_GPIO83, 39 - }; 40 - 41 - #if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE) 42 - static struct pm860x_touch_pdata evb3_touch = { 43 - .gpadc_prebias = 1, 44 - .slot_cycle = 1, 45 - .tsi_prebias = 6, 46 - .pen_prebias = 16, 47 - .pen_prechg = 2, 48 - .res_x = 300, 49 - }; 50 - 51 - static struct pm860x_backlight_pdata evb3_backlight[] = { 52 - { 53 - .id = PM8606_ID_BACKLIGHT, 54 - .iset = PM8606_WLED_CURRENT(24), 55 - .flags = PM8606_BACKLIGHT1, 56 - }, 57 - {}, 58 - }; 59 - 60 - static struct pm860x_led_pdata evb3_led[] = { 61 - { 62 - .id = PM8606_ID_LED, 63 - .iset = PM8606_LED_CURRENT(12), 64 - .flags = PM8606_LED1_RED, 65 - }, { 66 - .id = PM8606_ID_LED, 67 - .iset = PM8606_LED_CURRENT(12), 68 - .flags = PM8606_LED1_GREEN, 69 - }, { 70 - .id = PM8606_ID_LED, 71 - .iset = PM8606_LED_CURRENT(12), 72 - .flags = PM8606_LED1_BLUE, 73 - }, { 74 - .id = PM8606_ID_LED, 75 - .iset = PM8606_LED_CURRENT(12), 76 - .flags = PM8606_LED2_RED, 77 - }, { 78 - .id = PM8606_ID_LED, 79 - .iset = PM8606_LED_CURRENT(12), 80 - .flags = PM8606_LED2_GREEN, 81 - }, { 82 - .id = PM8606_ID_LED, 83 - .iset = PM8606_LED_CURRENT(12), 84 - .flags = PM8606_LED2_BLUE, 85 - }, 86 - }; 87 - 88 - static struct pm860x_platform_data evb3_pm8607_info = { 89 - .touch = &evb3_touch, 90 - .backlight = &evb3_backlight[0], 91 - .led = &evb3_led[0], 92 - .companion_addr = 0x10, 93 - .irq_mode = 0, 94 - .irq_base = IRQ_BOARD_START, 95 - 96 - .i2c_port = GI2C_PORT, 97 - }; 98 - 99 - static struct i2c_board_info evb3_i2c_info[] = { 100 - { 101 - .type = "88PM860x", 102 - .addr = 0x34, 103 - .platform_data = &evb3_pm8607_info, 104 - .irq = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO83)), 105 - }, 106 - }; 107 - 108 - static void __init evb3_init_i2c(void) 109 - { 110 - pxa_set_i2c_info(NULL); 111 - i2c_register_board_info(0, ARRAY_AND_SIZE(evb3_i2c_info)); 112 - } 113 - #else 114 - static inline void evb3_init_i2c(void) {} 115 - #endif 116 - 117 - static void __init evb3_init(void) 118 - { 119 - /* initialize MFP configurations */ 120 - pxa3xx_mfp_config(ARRAY_AND_SIZE(evb3_mfp_cfg)); 121 - 122 - pxa_set_ffuart_info(NULL); 123 - 124 - evb3_init_i2c(); 125 - } 126 - 127 - MACHINE_START(TAVOREVB3, "PXA950 Evaluation Board (aka TavorEVB3)") 128 - .atag_offset = 0x100, 129 - .map_io = pxa3xx_map_io, 130 - .nr_irqs = TAVOREVB3_NR_IRQS, 131 - .init_irq = pxa3xx_init_irq, 132 - .handle_irq = pxa3xx_handle_irq, 133 - .timer = &pxa_timer, 134 - .init_machine = evb3_init, 135 - .restart = pxa_restart, 136 - MACHINE_END
-1
arch/arm/plat-pxa/Makefile
··· 5 5 obj-y := dma.o 6 6 7 7 obj-$(CONFIG_PXA3xx) += mfp.o 8 - obj-$(CONFIG_PXA95x) += mfp.o 9 8 obj-$(CONFIG_ARCH_MMP) += mfp.o 10 9 11 10 obj-$(CONFIG_PXA_SSP) += ssp.o
+2 -2
arch/arm/plat-pxa/include/plat/mfp.h
··· 423 423 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\ 424 424 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm)) 425 425 426 - #if defined(CONFIG_PXA3xx) || defined(CONFIG_PXA95x) || defined(CONFIG_ARCH_MMP) 426 + #if defined(CONFIG_PXA3xx) || defined(CONFIG_ARCH_MMP) 427 427 /* 428 428 * each MFP pin will have a MFPR register, since the offset of the 429 429 * register varies between processors, the processor specific code ··· 470 470 void mfp_config(unsigned long *mfp_cfgs, int num); 471 471 void mfp_config_run(void); 472 472 void mfp_config_lpm(void); 473 - #endif /* CONFIG_PXA3xx || CONFIG_PXA95x || CONFIG_ARCH_MMP */ 473 + #endif /* CONFIG_PXA3xx || CONFIG_ARCH_MMP */ 474 474 475 475 #endif /* __ASM_PLAT_MFP_H */
+1 -1
drivers/gpio/gpio-pxa.c
··· 448 448 } else if (cpu_is_pxa27x()) { 449 449 count = 120; 450 450 gpio_type = PXA27X_GPIO; 451 - } else if (cpu_is_pxa93x() || cpu_is_pxa95x()) { 451 + } else if (cpu_is_pxa93x()) { 452 452 count = 191; 453 453 gpio_type = PXA93X_GPIO; 454 454 } else if (cpu_is_pxa3xx()) {