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

Merge tag 'cleanup2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull arm-soc cleanups (part 2) from Olof Johansson:
"More cleanups, continuing an earlier set with omap and samsung
specific cleanups. These could not go into the first set because they
have dependencies on various other series that in turn depend on the
first cleanups."

Fixed up conflicts in arch/arm/plat-omap/counter_32k.c due to commit
bd0493eaaf5c: "move read_{boot,persistent}_clock to the architecture
level" that changed how the persistent clocks were handled. And trivial
conflicts in arch/arm/mach-omap1/common.h due to just independent
changes close to each other.

* tag 'cleanup2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (35 commits)
ARM: SAMSUNG: merge plat-s5p into plat-samsung
ARM: SAMSUNG: move options for common s5p into plat-samsung/Kconfig
ARM: SAMSUNG: move setup code for s5p mfc and mipiphy into plat-samsung
ARM: SAMSUNG: move platform device for s5p uart into plat-samsung
ARM: SAMSUNG: move hr timer for common s5p into plat-samsung
ARM: SAMSUNG: move pm part for common s5p into plat-samsung
ARM: SAMSUNG: move interrupt part for common s5p into plat-samsung
ARM: SAMSUNG: move clock part for common s5p into plat-samsung
ARM: S3C24XX: Use common macro to define resources on dev-uart.c
ARM: S3C24XX: move common clock init into common.c
ARM: S3C24XX: move common power-management code to mach-s3c24xx
ARM: S3C24XX: move plat-s3c24xx/dev-uart.c into common.c
ARM: S3C24XX: move plat-s3c24xx/cpu.c
ARM: OMAP2+: Kconfig: convert SOC_OMAPAM33XX to SOC_AM33XX
ARM: OMAP2+: Kconfig: convert SOC_OMAPTI81XX to SOC_TI81XX
GPMC: add ECC control definitions
ARM: OMAP2+: dmtimer: remove redundant sysconfig context restore
ARM: OMAP: AM35xx: convert 3517 detection/flags to AM35xx
ARM: OMAP: AM35xx: remove redunant cpu_is checks for AM3505
ARM: OMAP1: Pass dma request lines in platform data to MMC driver
...

+717 -849
-1
arch/arm/Kconfig
··· 1051 1051 1052 1052 source "arch/arm/plat-samsung/Kconfig" 1053 1053 source "arch/arm/plat-s3c24xx/Kconfig" 1054 - source "arch/arm/plat-s5p/Kconfig" 1055 1054 1056 1055 source "arch/arm/plat-spear/Kconfig" 1057 1056
+2 -4
arch/arm/Makefile
··· 160 160 machine-$(CONFIG_ARCH_NETX) := netx 161 161 machine-$(CONFIG_ARCH_NOMADIK) := nomadik 162 162 machine-$(CONFIG_ARCH_OMAP1) := omap1 163 - machine-$(CONFIG_ARCH_OMAP2) := omap2 164 - machine-$(CONFIG_ARCH_OMAP3) := omap2 165 - machine-$(CONFIG_ARCH_OMAP4) := omap2 163 + machine-$(CONFIG_ARCH_OMAP2PLUS) := omap2 166 164 machine-$(CONFIG_ARCH_ORION5X) := orion5x 167 165 machine-$(CONFIG_ARCH_PICOXCELL) := picoxcell 168 166 machine-$(CONFIG_ARCH_PNX4008) := pnx4008 ··· 203 205 plat-$(CONFIG_PLAT_ORION) := orion 204 206 plat-$(CONFIG_PLAT_PXA) := pxa 205 207 plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx samsung 206 - plat-$(CONFIG_PLAT_S5P) := s5p samsung 208 + plat-$(CONFIG_PLAT_S5P) := samsung 207 209 plat-$(CONFIG_PLAT_SPEAR) := spear 208 210 plat-$(CONFIG_PLAT_VERSATILE) := versatile 209 211
+8 -1
arch/arm/mach-omap1/common.h
··· 63 63 unsigned int ctrl); 64 64 65 65 extern struct sys_timer omap1_timer; 66 - extern bool omap_32k_timer_init(void); 66 + #ifdef CONFIG_OMAP_32K_TIMER 67 + extern int omap_32k_timer_init(void); 68 + #else 69 + static inline int __init omap_32k_timer_init(void) 70 + { 71 + return -ENODEV; 72 + } 73 + #endif 67 74 68 75 extern u32 omap_irq_flags; 69 76
+111 -12
arch/arm/mach-omap1/devices.c
··· 22 22 #include <plat/tc.h> 23 23 #include <plat/board.h> 24 24 #include <plat/mux.h> 25 + #include <plat/dma.h> 25 26 #include <plat/mmc.h> 26 27 #include <plat/omap7xx.h> 27 28 ··· 31 30 32 31 #include "common.h" 33 32 #include "clock.h" 33 + 34 + #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) 35 + 36 + static struct platform_device omap_pcm = { 37 + .name = "omap-pcm-audio", 38 + .id = -1, 39 + }; 40 + 41 + static void omap_init_audio(void) 42 + { 43 + platform_device_register(&omap_pcm); 44 + } 45 + 46 + #else 47 + static inline void omap_init_audio(void) {} 48 + #endif 34 49 35 50 /*-------------------------------------------------------------------------*/ 36 51 ··· 145 128 } 146 129 } 147 130 131 + #define OMAP_MMC_NR_RES 4 132 + 133 + /* 134 + * Register MMC devices. 135 + */ 136 + static int __init omap_mmc_add(const char *name, int id, unsigned long base, 137 + unsigned long size, unsigned int irq, 138 + unsigned rx_req, unsigned tx_req, 139 + struct omap_mmc_platform_data *data) 140 + { 141 + struct platform_device *pdev; 142 + struct resource res[OMAP_MMC_NR_RES]; 143 + int ret; 144 + 145 + pdev = platform_device_alloc(name, id); 146 + if (!pdev) 147 + return -ENOMEM; 148 + 149 + memset(res, 0, OMAP_MMC_NR_RES * sizeof(struct resource)); 150 + res[0].start = base; 151 + res[0].end = base + size - 1; 152 + res[0].flags = IORESOURCE_MEM; 153 + res[1].start = res[1].end = irq; 154 + res[1].flags = IORESOURCE_IRQ; 155 + res[2].start = rx_req; 156 + res[2].name = "rx"; 157 + res[2].flags = IORESOURCE_DMA; 158 + res[3].start = tx_req; 159 + res[3].name = "tx"; 160 + res[3].flags = IORESOURCE_DMA; 161 + 162 + ret = platform_device_add_resources(pdev, res, ARRAY_SIZE(res)); 163 + if (ret == 0) 164 + ret = platform_device_add_data(pdev, data, sizeof(*data)); 165 + if (ret) 166 + goto fail; 167 + 168 + ret = platform_device_add(pdev); 169 + if (ret) 170 + goto fail; 171 + 172 + /* return device handle to board setup code */ 173 + data->dev = &pdev->dev; 174 + return 0; 175 + 176 + fail: 177 + platform_device_put(pdev); 178 + return ret; 179 + } 180 + 148 181 void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, 149 182 int nr_controllers) 150 183 { ··· 202 135 203 136 for (i = 0; i < nr_controllers; i++) { 204 137 unsigned long base, size; 138 + unsigned rx_req, tx_req; 205 139 unsigned int irq = 0; 206 140 207 141 if (!mmc_data[i]) ··· 214 146 case 0: 215 147 base = OMAP1_MMC1_BASE; 216 148 irq = INT_MMC; 149 + rx_req = OMAP_DMA_MMC_RX; 150 + tx_req = OMAP_DMA_MMC_TX; 217 151 break; 218 152 case 1: 219 153 if (!cpu_is_omap16xx()) 220 154 return; 221 155 base = OMAP1_MMC2_BASE; 222 156 irq = INT_1610_MMC2; 157 + rx_req = OMAP_DMA_MMC2_RX; 158 + tx_req = OMAP_DMA_MMC2_TX; 223 159 break; 224 160 default: 225 161 continue; 226 162 } 227 163 size = OMAP1_MMC_SIZE; 228 164 229 - omap_mmc_add("mmci-omap", i, base, size, irq, mmc_data[i]); 165 + omap_mmc_add("mmci-omap", i, base, size, irq, 166 + rx_req, tx_req, mmc_data[i]); 230 167 }; 231 168 } 232 169 ··· 315 242 316 243 static inline void omap_init_sti(void) {} 317 244 318 - #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) 245 + /* Numbering for the SPI-capable controllers when used for SPI: 246 + * spi = 1 247 + * uwire = 2 248 + * mmc1..2 = 3..4 249 + * mcbsp1..3 = 5..7 250 + */ 319 251 320 - static struct platform_device omap_pcm = { 321 - .name = "omap-pcm-audio", 322 - .id = -1, 252 + #if defined(CONFIG_SPI_OMAP_UWIRE) || defined(CONFIG_SPI_OMAP_UWIRE_MODULE) 253 + 254 + #define OMAP_UWIRE_BASE 0xfffb3000 255 + 256 + static struct resource uwire_resources[] = { 257 + { 258 + .start = OMAP_UWIRE_BASE, 259 + .end = OMAP_UWIRE_BASE + 0x20, 260 + .flags = IORESOURCE_MEM, 261 + }, 323 262 }; 324 263 325 - static void omap_init_audio(void) 326 - { 327 - platform_device_register(&omap_pcm); 328 - } 264 + static struct platform_device omap_uwire_device = { 265 + .name = "omap_uwire", 266 + .id = -1, 267 + .num_resources = ARRAY_SIZE(uwire_resources), 268 + .resource = uwire_resources, 269 + }; 329 270 271 + static void omap_init_uwire(void) 272 + { 273 + /* FIXME define and use a boot tag; not all boards will be hooking 274 + * up devices to the microwire controller, and multi-board configs 275 + * mean that CONFIG_SPI_OMAP_UWIRE may be configured anyway... 276 + */ 277 + 278 + /* board-specific code must configure chipselects (only a few 279 + * are normally used) and SCLK/SDI/SDO (each has two choices). 280 + */ 281 + (void) platform_device_register(&omap_uwire_device); 282 + } 330 283 #else 331 - static inline void omap_init_audio(void) {} 284 + static inline void omap_init_uwire(void) {} 332 285 #endif 333 286 334 - /*-------------------------------------------------------------------------*/ 335 287 336 288 /* 337 289 * This gets called after board-specific INIT_MACHINE, and initializes most ··· 390 292 * in alphabetical order so they're easier to sort through. 391 293 */ 392 294 295 + omap_init_audio(); 393 296 omap_init_mbox(); 394 297 omap_init_rtc(); 395 298 omap_init_spi100k(); 396 299 omap_init_sti(); 397 - omap_init_audio(); 300 + omap_init_uwire(); 398 301 399 302 return 0; 400 303 }
+1 -15
arch/arm/mach-omap1/time.c
··· 232 232 } 233 233 #endif /* CONFIG_OMAP_MPU_TIMER */ 234 234 235 - static inline int omap_32k_timer_usable(void) 236 - { 237 - int res = false; 238 - 239 - if (cpu_is_omap730() || cpu_is_omap15xx()) 240 - return res; 241 - 242 - #ifdef CONFIG_OMAP_32K_TIMER 243 - res = omap_32k_timer_init(); 244 - #endif 245 - 246 - return res; 247 - } 248 - 249 235 /* 250 236 * --------------------------------------------------------------------------- 251 237 * Timer initialization ··· 239 253 */ 240 254 static void __init omap1_timer_init(void) 241 255 { 242 - if (!omap_32k_timer_usable()) 256 + if (omap_32k_timer_init() != 0) 243 257 omap_mpu_timer_init(); 244 258 } 245 259
+24 -4
arch/arm/mach-omap1/timer32k.c
··· 71 71 72 72 /* 16xx specific defines */ 73 73 #define OMAP1_32K_TIMER_BASE 0xfffb9000 74 + #define OMAP1_32KSYNC_TIMER_BASE 0xfffbc400 74 75 #define OMAP1_32K_TIMER_CR 0x08 75 76 #define OMAP1_32K_TIMER_TVR 0x00 76 77 #define OMAP1_32K_TIMER_TCR 0x04 ··· 183 182 * Timer initialization 184 183 * --------------------------------------------------------------------------- 185 184 */ 186 - bool __init omap_32k_timer_init(void) 185 + int __init omap_32k_timer_init(void) 187 186 { 188 - omap_init_clocksource_32k(); 189 - omap_init_32k_timer(); 187 + int ret = -ENODEV; 190 188 191 - return true; 189 + if (cpu_is_omap16xx()) { 190 + void __iomem *base; 191 + struct clk *sync32k_ick; 192 + 193 + base = ioremap(OMAP1_32KSYNC_TIMER_BASE, SZ_1K); 194 + if (!base) { 195 + pr_err("32k_counter: failed to map base addr\n"); 196 + return -ENODEV; 197 + } 198 + 199 + sync32k_ick = clk_get(NULL, "omap_32ksync_ick"); 200 + if (!IS_ERR(sync32k_ick)) 201 + clk_enable(sync32k_ick); 202 + 203 + ret = omap_init_clocksource_32k(base); 204 + } 205 + 206 + if (!ret) 207 + omap_init_32k_timer(); 208 + 209 + return ret; 192 210 }
+4 -4
arch/arm/mach-omap2/Kconfig
··· 78 78 default y 79 79 select ARCH_OMAP_OTG 80 80 81 - config SOC_OMAPTI81XX 81 + config SOC_TI81XX 82 82 bool "TI81XX support" 83 83 depends on ARCH_OMAP3 84 84 default y 85 85 86 - config SOC_OMAPAM33XX 86 + config SOC_AM33XX 87 87 bool "AM33XX support" 88 88 depends on ARCH_OMAP3 89 89 default y ··· 320 320 321 321 config MACH_TI8168EVM 322 322 bool "TI8168 Evaluation Module" 323 - depends on SOC_OMAPTI81XX 323 + depends on SOC_TI81XX 324 324 default y 325 325 326 326 config MACH_TI8148EVM 327 327 bool "TI8148 Evaluation Module" 328 - depends on SOC_OMAPTI81XX 328 + depends on SOC_TI81XX 329 329 default y 330 330 331 331 config MACH_OMAP_4430SDP
+80 -87
arch/arm/mach-omap2/Makefile
··· 24 24 obj-$(CONFIG_TWL4030_CORE) += omap_twl.o 25 25 26 26 # SMP support ONLY available for OMAP4 27 + 27 28 obj-$(CONFIG_SMP) += omap-smp.o omap-headsmp.o 28 29 obj-$(CONFIG_HOTPLUG_CPU) += omap-hotplug.o 29 - obj-$(CONFIG_ARCH_OMAP4) += omap4-common.o omap-wakeupgen.o \ 30 - sleep44xx.o 30 + obj-$(CONFIG_ARCH_OMAP4) += omap4-common.o omap-wakeupgen.o 31 + obj-$(CONFIG_ARCH_OMAP4) += sleep44xx.o 31 32 32 33 plus_sec := $(call as-instr,.arch_extension sec,+sec) 33 34 AFLAGS_omap-headsmp.o :=-Wa,-march=armv7-a$(plus_sec) ··· 65 64 ifeq ($(CONFIG_PM),y) 66 65 obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o 67 66 obj-$(CONFIG_ARCH_OMAP2) += sleep24xx.o 68 - obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o \ 69 - cpuidle34xx.o 70 - obj-$(CONFIG_ARCH_OMAP4) += pm44xx.o omap-mpuss-lowpower.o \ 71 - cpuidle44xx.o 67 + obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o 68 + obj-$(CONFIG_ARCH_OMAP3) += cpuidle34xx.o 69 + obj-$(CONFIG_ARCH_OMAP4) += pm44xx.o omap-mpuss-lowpower.o 70 + obj-$(CONFIG_ARCH_OMAP4) += cpuidle44xx.o 72 71 obj-$(CONFIG_PM_DEBUG) += pm-debug.o 73 72 obj-$(CONFIG_OMAP_SMARTREFLEX) += sr_device.o smartreflex.o 74 73 obj-$(CONFIG_OMAP_SMARTREFLEX_CLASS3) += smartreflex-class3.o ··· 85 84 # PRCM 86 85 obj-y += prm_common.o 87 86 obj-$(CONFIG_ARCH_OMAP2) += prcm.o cm2xxx_3xxx.o prm2xxx_3xxx.o 88 - obj-$(CONFIG_ARCH_OMAP3) += prcm.o cm2xxx_3xxx.o prm2xxx_3xxx.o \ 89 - vc3xxx_data.o vp3xxx_data.o 90 - # XXX The presence of cm2xxx_3xxx.o on the line below is temporary and 91 - # will be removed once the OMAP4 part of the codebase is converted to 92 - # use OMAP4-specific PRCM functions. 93 - obj-$(CONFIG_ARCH_OMAP4) += prcm.o cm2xxx_3xxx.o cminst44xx.o \ 94 - cm44xx.o prcm_mpu44xx.o \ 95 - prminst44xx.o vc44xx_data.o \ 96 - vp44xx_data.o prm44xx.o 87 + obj-$(CONFIG_ARCH_OMAP3) += prcm.o cm2xxx_3xxx.o prm2xxx_3xxx.o 88 + obj-$(CONFIG_ARCH_OMAP3) += vc3xxx_data.o vp3xxx_data.o 89 + obj-$(CONFIG_ARCH_OMAP4) += prcm.o cminst44xx.o cm44xx.o 90 + obj-$(CONFIG_ARCH_OMAP4) += prcm_mpu44xx.o prminst44xx.o 91 + obj-$(CONFIG_ARCH_OMAP4) += vc44xx_data.o vp44xx_data.o prm44xx.o 97 92 98 93 # OMAP voltage domains 99 94 voltagedomain-common := voltage.o vc.o vp.o 100 - obj-$(CONFIG_ARCH_OMAP2) += $(voltagedomain-common) \ 101 - voltagedomains2xxx_data.o 102 - obj-$(CONFIG_ARCH_OMAP3) += $(voltagedomain-common) \ 103 - voltagedomains3xxx_data.o 104 - obj-$(CONFIG_ARCH_OMAP4) += $(voltagedomain-common) \ 105 - voltagedomains44xx_data.o 95 + obj-$(CONFIG_ARCH_OMAP2) += $(voltagedomain-common) 96 + obj-$(CONFIG_ARCH_OMAP2) += voltagedomains2xxx_data.o 97 + obj-$(CONFIG_ARCH_OMAP3) += $(voltagedomain-common) 98 + obj-$(CONFIG_ARCH_OMAP3) += voltagedomains3xxx_data.o 99 + obj-$(CONFIG_ARCH_OMAP4) += $(voltagedomain-common) 100 + obj-$(CONFIG_ARCH_OMAP4) += voltagedomains44xx_data.o 106 101 107 102 # OMAP powerdomain framework 108 103 powerdomain-common += powerdomain.o powerdomain-common.o 109 - obj-$(CONFIG_ARCH_OMAP2) += $(powerdomain-common) \ 110 - powerdomain2xxx_3xxx.o \ 111 - powerdomains2xxx_data.o \ 112 - powerdomains2xxx_3xxx_data.o 113 - obj-$(CONFIG_ARCH_OMAP3) += $(powerdomain-common) \ 114 - powerdomain2xxx_3xxx.o \ 115 - powerdomains3xxx_data.o \ 116 - powerdomains2xxx_3xxx_data.o 117 - obj-$(CONFIG_ARCH_OMAP4) += $(powerdomain-common) \ 118 - powerdomain44xx.o \ 119 - powerdomains44xx_data.o 104 + obj-$(CONFIG_ARCH_OMAP2) += $(powerdomain-common) 105 + obj-$(CONFIG_ARCH_OMAP2) += powerdomains2xxx_data.o 106 + obj-$(CONFIG_ARCH_OMAP2) += powerdomain2xxx_3xxx.o 107 + obj-$(CONFIG_ARCH_OMAP2) += powerdomains2xxx_3xxx_data.o 108 + obj-$(CONFIG_ARCH_OMAP3) += $(powerdomain-common) 109 + obj-$(CONFIG_ARCH_OMAP3) += powerdomain2xxx_3xxx.o 110 + obj-$(CONFIG_ARCH_OMAP3) += powerdomains3xxx_data.o 111 + obj-$(CONFIG_ARCH_OMAP3) += powerdomains2xxx_3xxx_data.o 112 + obj-$(CONFIG_ARCH_OMAP4) += $(powerdomain-common) 113 + obj-$(CONFIG_ARCH_OMAP4) += powerdomain44xx.o 114 + obj-$(CONFIG_ARCH_OMAP4) += powerdomains44xx_data.o 120 115 121 116 # PRCM clockdomain control 122 - clockdomain-common += clockdomain.o \ 123 - clockdomains_common_data.o 124 - obj-$(CONFIG_ARCH_OMAP2) += $(clockdomain-common) \ 125 - clockdomain2xxx_3xxx.o \ 126 - clockdomains2xxx_3xxx_data.o 117 + clockdomain-common += clockdomain.o 118 + clockdomain-common += clockdomains_common_data.o 119 + obj-$(CONFIG_ARCH_OMAP2) += $(clockdomain-common) 120 + obj-$(CONFIG_ARCH_OMAP2) += clockdomain2xxx_3xxx.o 121 + obj-$(CONFIG_ARCH_OMAP2) += clockdomains2xxx_3xxx_data.o 127 122 obj-$(CONFIG_SOC_OMAP2420) += clockdomains2420_data.o 128 123 obj-$(CONFIG_SOC_OMAP2430) += clockdomains2430_data.o 129 - obj-$(CONFIG_ARCH_OMAP3) += $(clockdomain-common) \ 130 - clockdomain2xxx_3xxx.o \ 131 - clockdomains2xxx_3xxx_data.o \ 132 - clockdomains3xxx_data.o 133 - obj-$(CONFIG_ARCH_OMAP4) += $(clockdomain-common) \ 134 - clockdomain44xx.o \ 135 - clockdomains44xx_data.o 124 + obj-$(CONFIG_ARCH_OMAP3) += $(clockdomain-common) 125 + obj-$(CONFIG_ARCH_OMAP3) += clockdomain2xxx_3xxx.o 126 + obj-$(CONFIG_ARCH_OMAP3) += clockdomains2xxx_3xxx_data.o 127 + obj-$(CONFIG_ARCH_OMAP3) += clockdomains3xxx_data.o 128 + obj-$(CONFIG_ARCH_OMAP4) += $(clockdomain-common) 129 + obj-$(CONFIG_ARCH_OMAP4) += clockdomain44xx.o 130 + obj-$(CONFIG_ARCH_OMAP4) += clockdomains44xx_data.o 136 131 137 132 # Clock framework 138 - obj-$(CONFIG_ARCH_OMAP2) += $(clock-common) clock2xxx.o \ 139 - clkt2xxx_sys.o \ 140 - clkt2xxx_dpllcore.o \ 141 - clkt2xxx_virt_prcm_set.o \ 142 - clkt2xxx_apll.o clkt2xxx_osc.o \ 143 - clkt2xxx_dpll.o clkt_iclk.o 133 + obj-$(CONFIG_ARCH_OMAP2) += $(clock-common) clock2xxx.o 134 + obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_sys.o 135 + obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_dpllcore.o 136 + obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_virt_prcm_set.o 137 + obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_apll.o clkt2xxx_osc.o 138 + obj-$(CONFIG_ARCH_OMAP2) += clkt2xxx_dpll.o clkt_iclk.o 144 139 obj-$(CONFIG_SOC_OMAP2420) += clock2420_data.o 145 140 obj-$(CONFIG_SOC_OMAP2430) += clock2430.o clock2430_data.o 146 - obj-$(CONFIG_ARCH_OMAP3) += $(clock-common) clock3xxx.o \ 147 - clock34xx.o clkt34xx_dpll3m2.o \ 148 - clock3517.o clock36xx.o \ 149 - dpll3xxx.o clock3xxx_data.o \ 150 - clkt_iclk.o 151 - obj-$(CONFIG_ARCH_OMAP4) += $(clock-common) clock44xx_data.o \ 152 - dpll3xxx.o dpll44xx.o 141 + obj-$(CONFIG_ARCH_OMAP3) += $(clock-common) clock3xxx.o 142 + obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o clkt34xx_dpll3m2.o 143 + obj-$(CONFIG_ARCH_OMAP3) += clock3517.o clock36xx.o 144 + obj-$(CONFIG_ARCH_OMAP3) += dpll3xxx.o clock3xxx_data.o 145 + obj-$(CONFIG_ARCH_OMAP3) += clkt_iclk.o 146 + obj-$(CONFIG_ARCH_OMAP4) += $(clock-common) clock44xx_data.o 147 + obj-$(CONFIG_ARCH_OMAP4) += dpll3xxx.o dpll44xx.o 153 148 154 149 # OMAP2 clock rate set data (old "OPP" data) 155 150 obj-$(CONFIG_SOC_OMAP2420) += opp2420_data.o 156 151 obj-$(CONFIG_SOC_OMAP2430) += opp2430_data.o 157 152 158 153 # hwmod data 159 - obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_ipblock_data.o \ 160 - omap_hwmod_2xxx_3xxx_ipblock_data.o \ 161 - omap_hwmod_2xxx_interconnect_data.o \ 162 - omap_hwmod_2xxx_3xxx_interconnect_data.o \ 163 - omap_hwmod_2420_data.o 164 - obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_ipblock_data.o \ 165 - omap_hwmod_2xxx_3xxx_ipblock_data.o \ 166 - omap_hwmod_2xxx_interconnect_data.o \ 167 - omap_hwmod_2xxx_3xxx_interconnect_data.o \ 168 - omap_hwmod_2430_data.o 169 - obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_ipblock_data.o \ 170 - omap_hwmod_2xxx_3xxx_interconnect_data.o \ 171 - omap_hwmod_3xxx_data.o 154 + obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_ipblock_data.o 155 + obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_3xxx_ipblock_data.o 156 + obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_interconnect_data.o 157 + obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2xxx_3xxx_interconnect_data.o 158 + obj-$(CONFIG_SOC_OMAP2420) += omap_hwmod_2420_data.o 159 + obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_ipblock_data.o 160 + obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_3xxx_ipblock_data.o 161 + obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_interconnect_data.o 162 + obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_3xxx_interconnect_data.o 163 + obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2430_data.o 164 + obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_ipblock_data.o 165 + obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_interconnect_data.o 166 + obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_3xxx_data.o 172 167 obj-$(CONFIG_ARCH_OMAP4) += omap_hwmod_44xx_data.o 173 168 174 169 # EMU peripherals ··· 205 208 obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o 206 209 obj-$(CONFIG_MACH_OMAP_3430SDP) += board-3430sdp.o 207 210 obj-$(CONFIG_MACH_NOKIA_N8X0) += board-n8x0.o 208 - obj-$(CONFIG_MACH_NOKIA_RM680) += board-rm680.o \ 209 - sdram-nokia.o 210 - obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o \ 211 - sdram-nokia.o \ 212 - board-rx51-peripherals.o \ 213 - board-rx51-video.o 214 - obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom.o \ 215 - board-zoom-peripherals.o \ 216 - board-zoom-display.o \ 217 - board-zoom-debugboard.o 218 - obj-$(CONFIG_MACH_OMAP_ZOOM3) += board-zoom.o \ 219 - board-zoom-peripherals.o \ 220 - board-zoom-display.o \ 221 - board-zoom-debugboard.o 222 - obj-$(CONFIG_MACH_OMAP_3630SDP) += board-3630sdp.o \ 223 - board-zoom-peripherals.o \ 224 - board-zoom-display.o 211 + obj-$(CONFIG_MACH_NOKIA_RM680) += board-rm680.o sdram-nokia.o 212 + obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o sdram-nokia.o 213 + obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-peripherals.o 214 + obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-video.o 215 + obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom.o board-zoom-peripherals.o 216 + obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom-display.o 217 + obj-$(CONFIG_MACH_OMAP_ZOOM2) += board-zoom-debugboard.o 218 + obj-$(CONFIG_MACH_OMAP_ZOOM3) += board-zoom.o board-zoom-peripherals.o 219 + obj-$(CONFIG_MACH_OMAP_ZOOM3) += board-zoom-display.o 220 + obj-$(CONFIG_MACH_OMAP_ZOOM3) += board-zoom-debugboard.o 221 + obj-$(CONFIG_MACH_OMAP_3630SDP) += board-3630sdp.o 222 + obj-$(CONFIG_MACH_OMAP_3630SDP) += board-zoom-peripherals.o 223 + obj-$(CONFIG_MACH_OMAP_3630SDP) += board-zoom-display.o 225 224 obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o 226 225 obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o 227 226 obj-$(CONFIG_MACH_IGEP0020) += board-igep0020.o
+2 -2
arch/arm/mach-omap2/common.h
··· 55 55 } 56 56 #endif 57 57 58 - #ifdef CONFIG_SOC_OMAPTI81XX 58 + #ifdef CONFIG_SOC_TI81XX 59 59 extern void omapti81xx_map_common_io(void); 60 60 #else 61 61 static inline void omapti81xx_map_common_io(void) ··· 63 63 } 64 64 #endif 65 65 66 - #ifdef CONFIG_SOC_OMAPAM33XX 66 + #ifdef CONFIG_SOC_AM33XX 67 67 extern void omapam33xx_map_common_io(void); 68 68 #else 69 69 static inline void omapam33xx_map_common_io(void)
+16 -3
arch/arm/mach-omap2/devices.c
··· 645 645 646 646 void __init omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) 647 647 { 648 - char *name = "mmci-omap"; 648 + struct platform_device *pdev; 649 + struct omap_hwmod *oh; 650 + int id = 0; 651 + char *oh_name = "msdi1"; 652 + char *dev_name = "mmci-omap"; 649 653 650 654 if (!mmc_data[0]) { 651 655 pr_err("%s fails: Incomplete platform data\n", __func__); ··· 657 653 } 658 654 659 655 omap242x_mmc_mux(mmc_data[0]); 660 - omap_mmc_add(name, 0, OMAP2_MMC1_BASE, OMAP2420_MMC_SIZE, 661 - INT_24XX_MMC_IRQ, mmc_data[0]); 656 + 657 + oh = omap_hwmod_lookup(oh_name); 658 + if (!oh) { 659 + pr_err("Could not look up %s\n", oh_name); 660 + return; 661 + } 662 + pdev = omap_device_build(dev_name, id, oh, mmc_data[0], 663 + sizeof(struct omap_mmc_platform_data), NULL, 0, 0); 664 + if (IS_ERR(pdev)) 665 + WARN(1, "Can'd build omap_device for %s:%s.\n", 666 + dev_name, oh->name); 662 667 } 663 668 664 669 #endif
+7 -4
arch/arm/mach-omap2/dma.c
··· 227 227 228 228 dma_stride = OMAP2_DMA_STRIDE; 229 229 dma_common_ch_start = CSDP; 230 - if (cpu_is_omap3630() || cpu_is_omap44xx()) 231 - dma_common_ch_end = CCDN; 232 - else 233 - dma_common_ch_end = CCFN; 234 230 235 231 p = kzalloc(sizeof(struct omap_system_dma_plat_info), GFP_KERNEL); 236 232 if (!p) { ··· 273 277 dev_err(&pdev->dev, "%s: kzalloc fail\n", __func__); 274 278 return -ENOMEM; 275 279 } 280 + 281 + /* Check the capabilities register for descriptor loading feature */ 282 + if (dma_read(CAPS_0, 0) & DMA_HAS_DESCRIPTOR_CAPS) 283 + dma_common_ch_end = CCDN; 284 + else 285 + dma_common_ch_end = CCFN; 286 + 276 287 return 0; 277 288 } 278 289
+25 -2
arch/arm/mach-omap2/dsp.c
··· 28 28 29 29 #include <plat/dsp.h> 30 30 31 - extern phys_addr_t omap_dsp_get_mempool_base(void); 32 - 33 31 static struct platform_device *omap_dsp_pdev; 34 32 35 33 static struct omap_dsp_platform_data omap_dsp_pdata __initdata = { ··· 44 46 .dsp_cm_write = omap2_cm_write_mod_reg, 45 47 .dsp_cm_rmw_bits = omap2_cm_rmw_mod_reg_bits, 46 48 }; 49 + 50 + static phys_addr_t omap_dsp_phys_mempool_base; 51 + 52 + void __init omap_dsp_reserve_sdram_memblock(void) 53 + { 54 + phys_addr_t size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE; 55 + phys_addr_t paddr; 56 + 57 + if (!size) 58 + return; 59 + 60 + paddr = arm_memblock_steal(size, SZ_1M); 61 + if (!paddr) { 62 + pr_err("%s: failed to reserve %llx bytes\n", 63 + __func__, (unsigned long long)size); 64 + return; 65 + } 66 + 67 + omap_dsp_phys_mempool_base = paddr; 68 + } 69 + 70 + static phys_addr_t omap_dsp_get_mempool_base(void) 71 + { 72 + return omap_dsp_phys_mempool_base; 73 + } 47 74 48 75 static int __init omap_dsp_init(void) 49 76 {
+23 -7
arch/arm/mach-omap2/gpmc.c
··· 50 50 #define GPMC_ECC_SIZE_CONFIG 0x1fc 51 51 #define GPMC_ECC1_RESULT 0x200 52 52 53 + /* GPMC ECC control settings */ 54 + #define GPMC_ECC_CTRL_ECCCLEAR 0x100 55 + #define GPMC_ECC_CTRL_ECCDISABLE 0x000 56 + #define GPMC_ECC_CTRL_ECCREG1 0x001 57 + #define GPMC_ECC_CTRL_ECCREG2 0x002 58 + #define GPMC_ECC_CTRL_ECCREG3 0x003 59 + #define GPMC_ECC_CTRL_ECCREG4 0x004 60 + #define GPMC_ECC_CTRL_ECCREG5 0x005 61 + #define GPMC_ECC_CTRL_ECCREG6 0x006 62 + #define GPMC_ECC_CTRL_ECCREG7 0x007 63 + #define GPMC_ECC_CTRL_ECCREG8 0x008 64 + #define GPMC_ECC_CTRL_ECCREG9 0x009 65 + 53 66 #define GPMC_CS0_OFFSET 0x60 54 67 #define GPMC_CS_SIZE 0x30 55 68 ··· 873 860 gpmc_ecc_used = cs; 874 861 875 862 /* clear ecc and enable bits */ 876 - val = ((0x00000001<<8) | 0x00000001); 877 - gpmc_write_reg(GPMC_ECC_CONTROL, val); 863 + gpmc_write_reg(GPMC_ECC_CONTROL, 864 + GPMC_ECC_CTRL_ECCCLEAR | 865 + GPMC_ECC_CTRL_ECCREG1); 878 866 879 867 /* program ecc and result sizes */ 880 868 val = ((((ecc_size >> 1) - 1) << 22) | (0x0000000F)); ··· 883 869 884 870 switch (mode) { 885 871 case GPMC_ECC_READ: 886 - gpmc_write_reg(GPMC_ECC_CONTROL, 0x101); 872 + case GPMC_ECC_WRITE: 873 + gpmc_write_reg(GPMC_ECC_CONTROL, 874 + GPMC_ECC_CTRL_ECCCLEAR | 875 + GPMC_ECC_CTRL_ECCREG1); 887 876 break; 888 877 case GPMC_ECC_READSYN: 889 - gpmc_write_reg(GPMC_ECC_CONTROL, 0x100); 890 - break; 891 - case GPMC_ECC_WRITE: 892 - gpmc_write_reg(GPMC_ECC_CONTROL, 0x101); 878 + gpmc_write_reg(GPMC_ECC_CONTROL, 879 + GPMC_ECC_CTRL_ECCCLEAR | 880 + GPMC_ECC_CTRL_ECCDISABLE); 893 881 break; 894 882 default: 895 883 printk(KERN_INFO "Error: Unrecognized Mode[%d]!\n", mode);
+4 -4
arch/arm/mach-omap2/hsmmc.c
··· 355 355 * 356 356 * temporary HACK: ocr_mask instead of fixed supply 357 357 */ 358 - if (cpu_is_omap3505() || cpu_is_omap3517()) 358 + if (soc_is_am35xx()) 359 359 mmc->slots[0].ocr_mask = MMC_VDD_165_195 | 360 360 MMC_VDD_26_27 | 361 361 MMC_VDD_27_28 | ··· 365 365 else 366 366 mmc->slots[0].ocr_mask = c->ocr_mask; 367 367 368 - if (!cpu_is_omap3517() && !cpu_is_omap3505()) 368 + if (!soc_is_am35xx()) 369 369 mmc->slots[0].features |= HSMMC_HAS_PBIAS; 370 370 371 371 if (cpu_is_omap44xx() && (omap_rev() > OMAP4430_REV_ES1_0)) ··· 388 388 } 389 389 } 390 390 391 - if (cpu_is_omap3517() || cpu_is_omap3505()) 391 + if (soc_is_am35xx()) 392 392 mmc->slots[0].set_power = nop_mmc_set_power; 393 393 394 394 /* OMAP3630 HSMMC1 supports only 4-bit */ ··· 400 400 } 401 401 break; 402 402 case 2: 403 - if (cpu_is_omap3517() || cpu_is_omap3505()) 403 + if (soc_is_am35xx()) 404 404 mmc->slots[0].set_power = am35x_hsmmc2_set_power; 405 405 406 406 if (c->ext_clock)
+3 -4
arch/arm/mach-omap2/id.c
··· 185 185 */ 186 186 if (cpu_is_omap3630()) { 187 187 cpu_name = "OMAP3630"; 188 - } else if (cpu_is_omap3517()) { 189 - /* AM35xx devices */ 188 + } else if (soc_is_am35xx()) { 190 189 cpu_name = (omap3_has_sgx()) ? "AM3517" : "AM3505"; 191 190 } else if (cpu_is_ti816x()) { 192 191 cpu_name = "TI816X"; ··· 351 352 */ 352 353 switch (rev) { 353 354 case 0: 354 - omap_revision = OMAP3517_REV_ES1_0; 355 + omap_revision = AM35XX_REV_ES1_0; 355 356 cpu_rev = "1.0"; 356 357 break; 357 358 case 1: 358 359 /* FALLTHROUGH */ 359 360 default: 360 - omap_revision = OMAP3517_REV_ES1_1; 361 + omap_revision = AM35XX_REV_ES1_1; 361 362 cpu_rev = "1.1"; 362 363 } 363 364 break;
-8
arch/arm/mach-omap2/include/mach/omap-wakeupgen.h
··· 16 16 #define OMAP_WKG_ENB_B_0 0x14 17 17 #define OMAP_WKG_ENB_C_0 0x18 18 18 #define OMAP_WKG_ENB_D_0 0x1c 19 - #define OMAP_WKG_ENB_SECURE_A_0 0x20 20 - #define OMAP_WKG_ENB_SECURE_B_0 0x24 21 - #define OMAP_WKG_ENB_SECURE_C_0 0x28 22 - #define OMAP_WKG_ENB_SECURE_D_0 0x2c 23 19 #define OMAP_WKG_ENB_A_1 0x410 24 20 #define OMAP_WKG_ENB_B_1 0x414 25 21 #define OMAP_WKG_ENB_C_1 0x418 26 22 #define OMAP_WKG_ENB_D_1 0x41c 27 - #define OMAP_WKG_ENB_SECURE_A_1 0x420 28 - #define OMAP_WKG_ENB_SECURE_B_1 0x424 29 - #define OMAP_WKG_ENB_SECURE_C_1 0x428 30 - #define OMAP_WKG_ENB_SECURE_D_1 0x42c 31 23 #define OMAP_AUX_CORE_BOOT_0 0x800 32 24 #define OMAP_AUX_CORE_BOOT_1 0x804 33 25 #define OMAP_PTMSYNCREQ_MASK 0xc00
+4 -34
arch/arm/mach-omap2/io.c
··· 173 173 }; 174 174 #endif 175 175 176 - #ifdef CONFIG_SOC_OMAPTI81XX 176 + #ifdef CONFIG_SOC_TI81XX 177 177 static struct map_desc omapti81xx_io_desc[] __initdata = { 178 178 { 179 179 .virtual = L4_34XX_VIRT, ··· 184 184 }; 185 185 #endif 186 186 187 - #ifdef CONFIG_SOC_OMAPAM33XX 187 + #ifdef CONFIG_SOC_AM33XX 188 188 static struct map_desc omapam33xx_io_desc[] __initdata = { 189 189 { 190 190 .virtual = L4_34XX_VIRT, ··· 216 216 .type = MT_DEVICE, 217 217 }, 218 218 { 219 - .virtual = OMAP44XX_GPMC_VIRT, 220 - .pfn = __phys_to_pfn(OMAP44XX_GPMC_PHYS), 221 - .length = OMAP44XX_GPMC_SIZE, 222 - .type = MT_DEVICE, 223 - }, 224 - { 225 - .virtual = OMAP44XX_EMIF1_VIRT, 226 - .pfn = __phys_to_pfn(OMAP44XX_EMIF1_PHYS), 227 - .length = OMAP44XX_EMIF1_SIZE, 228 - .type = MT_DEVICE, 229 - }, 230 - { 231 - .virtual = OMAP44XX_EMIF2_VIRT, 232 - .pfn = __phys_to_pfn(OMAP44XX_EMIF2_PHYS), 233 - .length = OMAP44XX_EMIF2_SIZE, 234 - .type = MT_DEVICE, 235 - }, 236 - { 237 - .virtual = OMAP44XX_DMM_VIRT, 238 - .pfn = __phys_to_pfn(OMAP44XX_DMM_PHYS), 239 - .length = OMAP44XX_DMM_SIZE, 240 - .type = MT_DEVICE, 241 - }, 242 - { 243 219 .virtual = L4_PER_44XX_VIRT, 244 220 .pfn = __phys_to_pfn(L4_PER_44XX_PHYS), 245 221 .length = L4_PER_44XX_SIZE, 246 - .type = MT_DEVICE, 247 - }, 248 - { 249 - .virtual = L4_EMU_44XX_VIRT, 250 - .pfn = __phys_to_pfn(L4_EMU_44XX_PHYS), 251 - .length = L4_EMU_44XX_SIZE, 252 222 .type = MT_DEVICE, 253 223 }, 254 224 #ifdef CONFIG_OMAP4_ERRATA_I688 ··· 256 286 } 257 287 #endif 258 288 259 - #ifdef CONFIG_SOC_OMAPTI81XX 289 + #ifdef CONFIG_SOC_TI81XX 260 290 void __init omapti81xx_map_common_io(void) 261 291 { 262 292 iotable_init(omapti81xx_io_desc, ARRAY_SIZE(omapti81xx_io_desc)); 263 293 } 264 294 #endif 265 295 266 - #ifdef CONFIG_SOC_OMAPAM33XX 296 + #ifdef CONFIG_SOC_AM33XX 267 297 void __init omapam33xx_map_common_io(void) 268 298 { 269 299 iotable_init(omapam33xx_io_desc, ARRAY_SIZE(omapam33xx_io_desc));
-28
arch/arm/mach-omap2/iomap.h
··· 37 37 #define OMAP4_L3_PER_IO_OFFSET 0xb1100000 38 38 #define OMAP4_L3_PER_IO_ADDRESS(pa) IOMEM((pa) + OMAP4_L3_PER_IO_OFFSET) 39 39 40 - #define OMAP4_GPMC_IO_OFFSET 0xa9000000 41 - #define OMAP4_GPMC_IO_ADDRESS(pa) IOMEM((pa) + OMAP4_GPMC_IO_OFFSET) 42 - 43 40 #define OMAP2_EMU_IO_OFFSET 0xaa800000 /* Emulation */ 44 41 #define OMAP2_EMU_IO_ADDRESS(pa) IOMEM((pa) + OMAP2_EMU_IO_OFFSET) 45 42 ··· 167 170 #define L4_ABE_44XX_VIRT (L4_ABE_44XX_PHYS + OMAP2_L4_IO_OFFSET) 168 171 #define L4_ABE_44XX_SIZE SZ_1M 169 172 170 - #define L4_EMU_44XX_PHYS L4_EMU_44XX_BASE 171 - /* 0x54000000 --> 0xfe800000 */ 172 - #define L4_EMU_44XX_VIRT (L4_EMU_44XX_PHYS + OMAP2_EMU_IO_OFFSET) 173 - #define L4_EMU_44XX_SIZE SZ_8M 174 - 175 - #define OMAP44XX_GPMC_PHYS OMAP44XX_GPMC_BASE 176 - /* 0x50000000 --> 0xf9000000 */ 177 - #define OMAP44XX_GPMC_VIRT (OMAP44XX_GPMC_PHYS + OMAP4_GPMC_IO_OFFSET) 178 - #define OMAP44XX_GPMC_SIZE SZ_1M 179 - 180 - 181 - #define OMAP44XX_EMIF1_PHYS OMAP44XX_EMIF1_BASE 182 - /* 0x4c000000 --> 0xfd100000 */ 183 - #define OMAP44XX_EMIF1_VIRT (OMAP44XX_EMIF1_PHYS + OMAP4_L3_PER_IO_OFFSET) 184 - #define OMAP44XX_EMIF1_SIZE SZ_1M 185 - 186 - #define OMAP44XX_EMIF2_PHYS OMAP44XX_EMIF2_BASE 187 - /* 0x4d000000 --> 0xfd200000 */ 188 - #define OMAP44XX_EMIF2_SIZE SZ_1M 189 - #define OMAP44XX_EMIF2_VIRT (OMAP44XX_EMIF1_VIRT + OMAP44XX_EMIF1_SIZE) 190 - 191 - #define OMAP44XX_DMM_PHYS OMAP44XX_DMM_BASE 192 - /* 0x4e000000 --> 0xfd300000 */ 193 - #define OMAP44XX_DMM_SIZE SZ_1M 194 - #define OMAP44XX_DMM_VIRT (OMAP44XX_EMIF2_VIRT + OMAP44XX_EMIF2_SIZE)
+1 -1
arch/arm/mach-omap2/irq.c
··· 231 231 goto out; 232 232 233 233 irqnr = readl_relaxed(base_addr + 0xd8); 234 - #ifdef CONFIG_SOC_OMAPTI81XX 234 + #ifdef CONFIG_SOC_TI81XX 235 235 if (irqnr) 236 236 goto out; 237 237 irqnr = readl_relaxed(base_addr + 0xf8);
+1 -1
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
··· 3306 3306 rev == OMAP3430_REV_ES2_1 || rev == OMAP3430_REV_ES3_0 || 3307 3307 rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2) { 3308 3308 h = omap34xx_hwmod_ocp_ifs; 3309 - } else if (rev == OMAP3517_REV_ES1_0 || rev == OMAP3517_REV_ES1_1) { 3309 + } else if (rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1) { 3310 3310 h = am35xx_hwmod_ocp_ifs; 3311 3311 } else if (rev == OMAP3630_REV_ES1_0 || rev == OMAP3630_REV_ES1_1 || 3312 3312 rev == OMAP3630_REV_ES1_2) {
+1 -1
arch/arm/mach-omap2/powerdomains3xxx_data.c
··· 311 311 rev == OMAP3430_REV_ES3_0 || rev == OMAP3630_REV_ES1_0) 312 312 pwrdm_register_pwrdms(powerdomains_omap3430es2_es3_0); 313 313 else if (rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2 || 314 - rev == OMAP3517_REV_ES1_0 || rev == OMAP3517_REV_ES1_1 || 314 + rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1 || 315 315 rev == OMAP3630_REV_ES1_1 || rev == OMAP3630_REV_ES1_2) 316 316 pwrdm_register_pwrdms(powerdomains_omap3430es3_1plus); 317 317 else
+93 -25
arch/arm/mach-omap2/timer.c
··· 90 90 } 91 91 92 92 static struct irqaction omap2_gp_timer_irq = { 93 - .name = "gp timer", 93 + .name = "gp_timer", 94 94 .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL, 95 95 .handler = omap2_gp_timer_interrupt, 96 96 }; ··· 132 132 } 133 133 134 134 static struct clock_event_device clockevent_gpt = { 135 - .name = "gp timer", 135 + .name = "gp_timer", 136 136 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, 137 137 .shift = 32, 138 138 .set_next_event = omap2_gp_timer_set_next_event, ··· 236 236 } 237 237 238 238 /* Clocksource code */ 239 - 240 - #ifdef CONFIG_OMAP_32K_TIMER 241 - /* 242 - * When 32k-timer is enabled, don't use GPTimer for clocksource 243 - * instead, just leave default clocksource which uses the 32k 244 - * sync counter. See clocksource setup in plat-omap/counter_32k.c 245 - */ 246 - 247 - static void __init omap2_gp_clocksource_init(int unused, const char *dummy) 248 - { 249 - omap_init_clocksource_32k(); 250 - } 251 - 252 - #else 253 - 254 239 static struct omap_dm_timer clksrc; 240 + static bool use_gptimer_clksrc; 255 241 256 242 /* 257 243 * clocksource ··· 248 262 } 249 263 250 264 static struct clocksource clocksource_gpt = { 251 - .name = "gp timer", 265 + .name = "gp_timer", 252 266 .rating = 300, 253 267 .read = clocksource_read_cycles, 254 268 .mask = CLOCKSOURCE_MASK(32), ··· 264 278 } 265 279 266 280 /* Setup free-running counter for clocksource */ 267 - static void __init omap2_gp_clocksource_init(int gptimer_id, 281 + static int __init omap2_sync32k_clocksource_init(void) 282 + { 283 + int ret; 284 + struct omap_hwmod *oh; 285 + void __iomem *vbase; 286 + const char *oh_name = "counter_32k"; 287 + 288 + /* 289 + * First check hwmod data is available for sync32k counter 290 + */ 291 + oh = omap_hwmod_lookup(oh_name); 292 + if (!oh || oh->slaves_cnt == 0) 293 + return -ENODEV; 294 + 295 + omap_hwmod_setup_one(oh_name); 296 + 297 + vbase = omap_hwmod_get_mpu_rt_va(oh); 298 + if (!vbase) { 299 + pr_warn("%s: failed to get counter_32k resource\n", __func__); 300 + return -ENXIO; 301 + } 302 + 303 + ret = omap_hwmod_enable(oh); 304 + if (ret) { 305 + pr_warn("%s: failed to enable counter_32k module (%d)\n", 306 + __func__, ret); 307 + return ret; 308 + } 309 + 310 + ret = omap_init_clocksource_32k(vbase); 311 + if (ret) { 312 + pr_warn("%s: failed to initialize counter_32k as a clocksource (%d)\n", 313 + __func__, ret); 314 + omap_hwmod_idle(oh); 315 + } 316 + 317 + return ret; 318 + } 319 + 320 + static void __init omap2_gptimer_clocksource_init(int gptimer_id, 268 321 const char *fck_source) 269 322 { 270 323 int res; 271 324 272 325 res = omap_dm_timer_init_one(&clksrc, gptimer_id, fck_source); 273 326 BUG_ON(res); 274 - 275 - pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n", 276 - gptimer_id, clksrc.rate); 277 327 278 328 __omap_dm_timer_load_start(&clksrc, 279 329 OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, 1); ··· 318 296 if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) 319 297 pr_err("Could not register clocksource %s\n", 320 298 clocksource_gpt.name); 299 + else 300 + pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n", 301 + gptimer_id, clksrc.rate); 321 302 } 322 - #endif 303 + 304 + static void __init omap2_clocksource_init(int gptimer_id, 305 + const char *fck_source) 306 + { 307 + /* 308 + * First give preference to kernel parameter configuration 309 + * by user (clocksource="gp_timer"). 310 + * 311 + * In case of missing kernel parameter for clocksource, 312 + * first check for availability for 32k-sync timer, in case 313 + * of failure in finding 32k_counter module or registering 314 + * it as clocksource, execution will fallback to gp-timer. 315 + */ 316 + if (use_gptimer_clksrc == true) 317 + omap2_gptimer_clocksource_init(gptimer_id, fck_source); 318 + else if (omap2_sync32k_clocksource_init()) 319 + /* Fall back to gp-timer code */ 320 + omap2_gptimer_clocksource_init(gptimer_id, fck_source); 321 + } 323 322 324 323 #define OMAP_SYS_TIMER_INIT(name, clkev_nr, clkev_src, \ 325 324 clksrc_nr, clksrc_src) \ 326 325 static void __init omap##name##_timer_init(void) \ 327 326 { \ 328 327 omap2_gp_clockevent_init((clkev_nr), clkev_src); \ 329 - omap2_gp_clocksource_init((clksrc_nr), clksrc_src); \ 328 + omap2_clocksource_init((clksrc_nr), clksrc_src); \ 330 329 } 331 330 332 331 #define OMAP_SYS_TIMER(name) \ ··· 378 335 static void __init omap4_timer_init(void) 379 336 { 380 337 omap2_gp_clockevent_init(1, OMAP4_CLKEV_SOURCE); 381 - omap2_gp_clocksource_init(2, OMAP4_MPU_SOURCE); 338 + omap2_clocksource_init(2, OMAP4_MPU_SOURCE); 382 339 #ifdef CONFIG_LOCAL_TIMERS 383 340 /* Local timers are not supprted on OMAP4430 ES1.0 */ 384 341 if (omap_rev() != OMAP4430_REV_ES1_0) { ··· 546 503 return 0; 547 504 } 548 505 arch_initcall(omap2_dm_timer_init); 506 + 507 + /** 508 + * omap2_override_clocksource - clocksource override with user configuration 509 + * 510 + * Allows user to override default clocksource, using kernel parameter 511 + * clocksource="gp_timer" (For all OMAP2PLUS architectures) 512 + * 513 + * Note that, here we are using same standard kernel parameter "clocksource=", 514 + * and not introducing any OMAP specific interface. 515 + */ 516 + static int __init omap2_override_clocksource(char *str) 517 + { 518 + if (!str) 519 + return 0; 520 + /* 521 + * For OMAP architecture, we only have two options 522 + * - sync_32k (default) 523 + * - gp_timer (sys_clk based) 524 + */ 525 + if (!strcmp(str, "gp_timer")) 526 + use_gptimer_clksrc = true; 527 + 528 + return 0; 529 + } 530 + early_param("clocksource", omap2_override_clocksource);
+1 -1
arch/arm/mach-omap2/usb-musb.c
··· 90 90 musb_plat.mode = board_data->mode; 91 91 musb_plat.extvbus = board_data->extvbus; 92 92 93 - if (cpu_is_omap3517() || cpu_is_omap3505()) { 93 + if (soc_is_am35xx()) { 94 94 oh_name = "am35x_otg_hs"; 95 95 name = "musb-am35x"; 96 96 } else if (cpu_is_ti81xx()) {
+1 -1
arch/arm/mach-omap2/voltagedomains3xxx_data.c
··· 118 118 } 119 119 #endif 120 120 121 - if (cpu_is_omap3517() || cpu_is_omap3505()) 121 + if (soc_is_am35xx()) 122 122 voltdms = voltagedomains_am35xx; 123 123 else 124 124 voltdms = voltagedomains_omap3;
+6
arch/arm/mach-s3c24xx/Makefile
··· 14 14 15 15 # core 16 16 17 + obj-y += common.o 18 + 17 19 obj-$(CONFIG_CPU_S3C2410) += s3c2410.o 18 20 obj-$(CONFIG_S3C2410_DMA) += dma-s3c2410.o 19 21 obj-$(CONFIG_S3C2410_PM) += pm-s3c2410.o sleep-s3c2410.o ··· 34 32 obj-$(CONFIG_S3C2440_DMA) += dma-s3c2440.o 35 33 36 34 obj-$(CONFIG_CPU_S3C2443) += s3c2443.o irq-s3c2443.o clock-s3c2443.o 35 + 36 + # PM 37 + 38 + obj-$(CONFIG_PM) += pm.o irq-pm.o sleep.o 37 39 38 40 # common code 39 41
+37 -50
arch/arm/plat-omap/counter_32k.c
··· 28 28 29 29 #include <plat/clock.h> 30 30 31 + /* OMAP2_32KSYNCNT_CR_OFF: offset of 32ksync counter register */ 32 + #define OMAP2_32KSYNCNT_CR_OFF 0x10 33 + 31 34 /* 32 35 * 32KHz clocksource ... always available, on pretty most chips except 33 36 * OMAP 730 and 1510. Other timers could be used as clocksources, with 34 37 * higher resolution in free-running counter modes (e.g. 12 MHz xtal), 35 38 * but systems won't necessarily want to spend resources that way. 36 39 */ 37 - static void __iomem *timer_32k_base; 38 - 39 - #define OMAP16XX_TIMER_32K_SYNCHRONIZED 0xfffbc410 40 + static void __iomem *sync32k_cnt_reg; 40 41 41 42 static u32 notrace omap_32k_read_sched_clock(void) 42 43 { 43 - return timer_32k_base ? __raw_readl(timer_32k_base) : 0; 44 + return sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0; 44 45 } 45 46 46 47 /** ··· 61 60 struct timespec *tsp = &persistent_ts; 62 61 63 62 last_cycles = cycles; 64 - cycles = timer_32k_base ? __raw_readl(timer_32k_base) : 0; 63 + cycles = sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0; 65 64 delta = cycles - last_cycles; 66 65 67 66 nsecs = clocksource_cyc2ns(delta, persistent_mult, persistent_shift); ··· 70 69 *ts = *tsp; 71 70 } 72 71 73 - int __init omap_init_clocksource_32k(void) 72 + /** 73 + * omap_init_clocksource_32k - setup and register counter 32k as a 74 + * kernel clocksource 75 + * @pbase: base addr of counter_32k module 76 + * @size: size of counter_32k to map 77 + * 78 + * Returns 0 upon success or negative error code upon failure. 79 + * 80 + */ 81 + int __init omap_init_clocksource_32k(void __iomem *vbase) 74 82 { 75 - static char err[] __initdata = KERN_ERR 76 - "%s: can't register clocksource!\n"; 83 + int ret; 77 84 78 - if (cpu_is_omap16xx() || cpu_class_is_omap2()) { 79 - u32 pbase; 80 - unsigned long size = SZ_4K; 81 - void __iomem *base; 82 - struct clk *sync_32k_ick; 85 + /* 86 + * 32k sync Counter register offset is at 0x10 87 + */ 88 + sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF; 83 89 84 - if (cpu_is_omap16xx()) { 85 - pbase = OMAP16XX_TIMER_32K_SYNCHRONIZED; 86 - size = SZ_1K; 87 - } else if (cpu_is_omap2420()) 88 - pbase = OMAP2420_32KSYNCT_BASE + 0x10; 89 - else if (cpu_is_omap2430()) 90 - pbase = OMAP2430_32KSYNCT_BASE + 0x10; 91 - else if (cpu_is_omap34xx()) 92 - pbase = OMAP3430_32KSYNCT_BASE + 0x10; 93 - else if (cpu_is_omap44xx()) 94 - pbase = OMAP4430_32KSYNCT_BASE + 0x10; 95 - else 96 - return -ENODEV; 90 + /* 91 + * 120000 rough estimate from the calculations in 92 + * __clocksource_updatefreq_scale. 93 + */ 94 + clocks_calc_mult_shift(&persistent_mult, &persistent_shift, 95 + 32768, NSEC_PER_SEC, 120000); 97 96 98 - /* For this to work we must have a static mapping in io.c for this area */ 99 - base = ioremap(pbase, size); 100 - if (!base) 101 - return -ENODEV; 102 - 103 - sync_32k_ick = clk_get(NULL, "omap_32ksync_ick"); 104 - if (!IS_ERR(sync_32k_ick)) 105 - clk_enable(sync_32k_ick); 106 - 107 - timer_32k_base = base; 108 - 109 - /* 110 - * 120000 rough estimate from the calculations in 111 - * __clocksource_updatefreq_scale. 112 - */ 113 - clocks_calc_mult_shift(&persistent_mult, &persistent_shift, 114 - 32768, NSEC_PER_SEC, 120000); 115 - 116 - if (clocksource_mmio_init(base, "32k_counter", 32768, 250, 32, 117 - clocksource_mmio_readl_up)) 118 - printk(err, "32k_counter"); 119 - 120 - setup_sched_clock(omap_32k_read_sched_clock, 32, 32768); 121 - register_persistent_clock(NULL, omap_read_persistent_clock); 97 + ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768, 98 + 250, 32, clocksource_mmio_readl_up); 99 + if (ret) { 100 + pr_err("32k_counter: can't register clocksource\n"); 101 + return ret; 122 102 } 103 + 104 + setup_sched_clock(omap_32k_read_sched_clock, 32, 32768); 105 + register_persistent_clock(NULL, omap_read_persistent_clock); 106 + pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n"); 107 + 123 108 return 0; 124 109 }
-122
arch/arm/plat-omap/devices.c
··· 28 28 #include <plat/menelaus.h> 29 29 #include <plat/omap44xx.h> 30 30 31 - #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \ 32 - defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE) 33 - 34 - #define OMAP_MMC_NR_RES 2 35 - 36 - /* 37 - * Register MMC devices. Called from mach-omap1 and mach-omap2 device init. 38 - */ 39 - int __init omap_mmc_add(const char *name, int id, unsigned long base, 40 - unsigned long size, unsigned int irq, 41 - struct omap_mmc_platform_data *data) 42 - { 43 - struct platform_device *pdev; 44 - struct resource res[OMAP_MMC_NR_RES]; 45 - int ret; 46 - 47 - pdev = platform_device_alloc(name, id); 48 - if (!pdev) 49 - return -ENOMEM; 50 - 51 - memset(res, 0, OMAP_MMC_NR_RES * sizeof(struct resource)); 52 - res[0].start = base; 53 - res[0].end = base + size - 1; 54 - res[0].flags = IORESOURCE_MEM; 55 - res[1].start = res[1].end = irq; 56 - res[1].flags = IORESOURCE_IRQ; 57 - 58 - ret = platform_device_add_resources(pdev, res, ARRAY_SIZE(res)); 59 - if (ret == 0) 60 - ret = platform_device_add_data(pdev, data, sizeof(*data)); 61 - if (ret) 62 - goto fail; 63 - 64 - ret = platform_device_add(pdev); 65 - if (ret) 66 - goto fail; 67 - 68 - /* return device handle to board setup code */ 69 - data->dev = &pdev->dev; 70 - return 0; 71 - 72 - fail: 73 - platform_device_put(pdev); 74 - return ret; 75 - } 76 - 77 - #endif 78 - 79 31 /*-------------------------------------------------------------------------*/ 80 32 81 33 #if defined(CONFIG_HW_RANDOM_OMAP) || defined(CONFIG_HW_RANDOM_OMAP_MODULE) ··· 61 109 static inline void omap_init_rng(void) {} 62 110 #endif 63 111 64 - /*-------------------------------------------------------------------------*/ 65 - 66 - /* Numbering for the SPI-capable controllers when used for SPI: 67 - * spi = 1 68 - * uwire = 2 69 - * mmc1..2 = 3..4 70 - * mcbsp1..3 = 5..7 71 - */ 72 - 73 - #if defined(CONFIG_SPI_OMAP_UWIRE) || defined(CONFIG_SPI_OMAP_UWIRE_MODULE) 74 - 75 - #define OMAP_UWIRE_BASE 0xfffb3000 76 - 77 - static struct resource uwire_resources[] = { 78 - { 79 - .start = OMAP_UWIRE_BASE, 80 - .end = OMAP_UWIRE_BASE + 0x20, 81 - .flags = IORESOURCE_MEM, 82 - }, 83 - }; 84 - 85 - static struct platform_device omap_uwire_device = { 86 - .name = "omap_uwire", 87 - .id = -1, 88 - .num_resources = ARRAY_SIZE(uwire_resources), 89 - .resource = uwire_resources, 90 - }; 91 - 92 - static void omap_init_uwire(void) 93 - { 94 - /* FIXME define and use a boot tag; not all boards will be hooking 95 - * up devices to the microwire controller, and multi-board configs 96 - * mean that CONFIG_SPI_OMAP_UWIRE may be configured anyway... 97 - */ 98 - 99 - /* board-specific code must configure chipselects (only a few 100 - * are normally used) and SCLK/SDI/SDO (each has two choices). 101 - */ 102 - (void) platform_device_register(&omap_uwire_device); 103 - } 104 - #else 105 - static inline void omap_init_uwire(void) {} 106 - #endif 107 - 108 - #if defined(CONFIG_TIDSPBRIDGE) || defined(CONFIG_TIDSPBRIDGE_MODULE) 109 - 110 - static phys_addr_t omap_dsp_phys_mempool_base; 111 - 112 - void __init omap_dsp_reserve_sdram_memblock(void) 113 - { 114 - phys_addr_t size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE; 115 - phys_addr_t paddr; 116 - 117 - if (!size) 118 - return; 119 - 120 - paddr = arm_memblock_steal(size, SZ_1M); 121 - if (!paddr) { 122 - pr_err("%s: failed to reserve %llx bytes\n", 123 - __func__, (unsigned long long)size); 124 - return; 125 - } 126 - 127 - omap_dsp_phys_mempool_base = paddr; 128 - } 129 - 130 - phys_addr_t omap_dsp_get_mempool_base(void) 131 - { 132 - return omap_dsp_phys_mempool_base; 133 - } 134 - EXPORT_SYMBOL(omap_dsp_get_mempool_base); 135 - #endif 136 - 137 112 /* 138 113 * This gets called after board-specific INIT_MACHINE, and initializes most 139 114 * on-chip peripherals accessible on this board (except for few like USB): ··· 87 208 * in alphabetical order so they're easier to sort through. 88 209 */ 89 210 omap_init_rng(); 90 - omap_init_uwire(); 91 211 return 0; 92 212 } 93 213 arch_initcall(omap_init_devices);
+2 -2
arch/arm/plat-omap/dma.c
··· 852 852 } 853 853 l = p->dma_read(CCR, lch); 854 854 l &= ~((1 << 6) | (1 << 26)); 855 - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) 855 + if (cpu_class_is_omap2() && !cpu_is_omap242x()) 856 856 l |= ((read_prio & 0x1) << 6) | ((write_prio & 0x1) << 26); 857 857 else 858 858 l |= ((read_prio & 0x1) << 6); ··· 2080 2080 } 2081 2081 } 2082 2082 2083 - if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) 2083 + if (cpu_class_is_omap2() && !cpu_is_omap242x()) 2084 2084 omap_dma_set_global_params(DMA_DEFAULT_ARB_RATE, 2085 2085 DMA_DEFAULT_FIFO_DEPTH, 0); 2086 2086
-2
arch/arm/plat-omap/dmtimer.c
··· 82 82 83 83 static void omap_timer_restore_context(struct omap_dm_timer *timer) 84 84 { 85 - __raw_writel(timer->context.tiocp_cfg, 86 - timer->io_base + OMAP_TIMER_OCP_CFG_OFFSET); 87 85 if (timer->revision == 1) 88 86 __raw_writel(timer->context.tistat, timer->sys_stat); 89 87
+1 -1
arch/arm/plat-omap/include/plat/common.h
··· 30 30 #include <plat/i2c.h> 31 31 #include <plat/omap_hwmod.h> 32 32 33 - extern int __init omap_init_clocksource_32k(void); 33 + extern int __init omap_init_clocksource_32k(void __iomem *vbase); 34 34 35 35 extern void __init omap_check_revision(void); 36 36
+8
arch/arm/plat-omap/include/plat/cpu.h
··· 121 121 IS_OMAP_CLASS(24xx, 0x24) 122 122 IS_OMAP_CLASS(34xx, 0x34) 123 123 IS_OMAP_CLASS(44xx, 0x44) 124 + IS_AM_CLASS(35xx, 0x35) 124 125 IS_AM_CLASS(33xx, 0x33) 125 126 126 127 IS_TI_CLASS(81xx, 0x81) ··· 149 148 #define cpu_is_ti81xx() 0 150 149 #define cpu_is_ti816x() 0 151 150 #define cpu_is_ti814x() 0 151 + #define soc_is_am35xx() 0 152 152 #define cpu_is_am33xx() 0 153 153 #define cpu_is_am335x() 0 154 154 #define cpu_is_omap44xx() 0 ··· 359 357 # undef cpu_is_ti81xx 360 358 # undef cpu_is_ti816x 361 359 # undef cpu_is_ti814x 360 + # undef soc_is_am35xx 362 361 # undef cpu_is_am33xx 363 362 # undef cpu_is_am335x 364 363 # define cpu_is_omap3430() is_omap3430() ··· 381 378 # define cpu_is_ti81xx() is_ti81xx() 382 379 # define cpu_is_ti816x() is_ti816x() 383 380 # define cpu_is_ti814x() is_ti814x() 381 + # define soc_is_am35xx() is_am35xx() 384 382 # define cpu_is_am33xx() is_am33xx() 385 383 # define cpu_is_am335x() is_am335x() 386 384 #endif ··· 436 432 #define TI8148_REV_ES1_0 TI814X_CLASS 437 433 #define TI8148_REV_ES2_0 (TI814X_CLASS | (0x1 << 8)) 438 434 #define TI8148_REV_ES2_1 (TI814X_CLASS | (0x2 << 8)) 435 + 436 + #define AM35XX_CLASS 0x35170034 437 + #define AM35XX_REV_ES1_0 AM35XX_CLASS 438 + #define AM35XX_REV_ES1_1 (AM35XX_CLASS | (0x1 << 8)) 439 439 440 440 #define AM335X_CLASS 0x33500034 441 441 #define AM335X_REV_ES1_0 AM335X_CLASS
+5
arch/arm/plat-omap/include/plat/dma.h
··· 312 312 #define CLEAR_CSR_ON_READ BIT(0xC) 313 313 #define IS_WORD_16 BIT(0xD) 314 314 315 + /* Defines for DMA Capabilities */ 316 + #define DMA_HAS_TRANSPARENT_CAPS (0x1 << 18) 317 + #define DMA_HAS_CONSTANT_FILL_CAPS (0x1 << 19) 318 + #define DMA_HAS_DESCRIPTOR_CAPS (0x3 << 20) 319 + 315 320 enum omap_reg_offsets { 316 321 317 322 GCR, GSCR, GRST1, HW_ID,
-1
arch/arm/plat-omap/include/plat/dmtimer.h
··· 75 75 76 76 struct timer_regs { 77 77 u32 tidr; 78 - u32 tiocp_cfg; 79 78 u32 tistat; 80 79 u32 tisr; 81 80 u32 tier;
-9
arch/arm/plat-omap/include/plat/mmc.h
··· 177 177 void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, 178 178 int nr_controllers); 179 179 void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data); 180 - int omap_mmc_add(const char *name, int id, unsigned long base, 181 - unsigned long size, unsigned int irq, 182 - struct omap_mmc_platform_data *data); 183 180 #else 184 181 static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data, 185 182 int nr_controllers) ··· 184 187 } 185 188 static inline void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) 186 189 { 187 - } 188 - static inline int omap_mmc_add(const char *name, int id, unsigned long base, 189 - unsigned long size, unsigned int irq, 190 - struct omap_mmc_platform_data *data) 191 - { 192 - return 0; 193 190 } 194 191 195 192 #endif
-6
arch/arm/plat-s3c24xx/Makefile
··· 12 12 13 13 # Core files 14 14 15 - obj-y += cpu.o 16 15 obj-y += irq.o 17 - obj-y += dev-uart.o 18 - obj-y += clock.o 19 16 obj-$(CONFIG_S3C24XX_DCLK) += clock-dclk.o 20 17 21 18 obj-$(CONFIG_CPU_FREQ_S3C24XX) += cpu-freq.o ··· 20 23 21 24 # Architecture dependent builds 22 25 23 - obj-$(CONFIG_PM) += pm.o 24 - obj-$(CONFIG_PM) += irq-pm.o 25 - obj-$(CONFIG_PM) += sleep.o 26 26 obj-$(CONFIG_S3C2410_CLOCK) += s3c2410-clock.o 27 27 obj-$(CONFIG_S3C24XX_DMA) += dma.o 28 28 obj-$(CONFIG_S3C2410_IOTIMING) += s3c2410-iotiming.o
-59
arch/arm/plat-s3c24xx/clock.c
··· 1 - /* linux/arch/arm/plat-s3c24xx/clock.c 2 - * 3 - * Copyright (c) 2004-2005 Simtec Electronics 4 - * Ben Dooks <ben@simtec.co.uk> 5 - * 6 - * S3C24XX Core clock control support 7 - * 8 - * Based on, and code from linux/arch/arm/mach-versatile/clock.c 9 - ** 10 - ** Copyright (C) 2004 ARM Limited. 11 - ** Written by Deep Blue Solutions Limited. 12 - * 13 - * 14 - * This program is free software; you can redistribute it and/or modify 15 - * it under the terms of the GNU General Public License as published by 16 - * the Free Software Foundation; either version 2 of the License, or 17 - * (at your option) any later version. 18 - * 19 - * This program is distributed in the hope that it will be useful, 20 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 21 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 - * GNU General Public License for more details. 23 - * 24 - * You should have received a copy of the GNU General Public License 25 - * along with this program; if not, write to the Free Software 26 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 27 - */ 28 - 29 - #include <linux/init.h> 30 - #include <linux/kernel.h> 31 - #include <linux/clk.h> 32 - #include <linux/io.h> 33 - 34 - #include <mach/hardware.h> 35 - #include <asm/irq.h> 36 - 37 - #include <mach/regs-clock.h> 38 - #include <mach/regs-gpio.h> 39 - 40 - #include <plat/cpu-freq.h> 41 - 42 - #include <plat/clock.h> 43 - #include <plat/cpu.h> 44 - #include <plat/pll.h> 45 - 46 - /* initialise all the clocks */ 47 - 48 - void __init_or_cpufreq s3c24xx_setup_clocks(unsigned long fclk, 49 - unsigned long hclk, 50 - unsigned long pclk) 51 - { 52 - clk_upll.rate = s3c24xx_get_pll(__raw_readl(S3C2410_UPLLCON), 53 - clk_xtal.rate); 54 - 55 - clk_mpll.rate = fclk; 56 - clk_h.rate = hclk; 57 - clk_p.rate = pclk; 58 - clk_f.rate = fclk; 59 - }
+68 -1
arch/arm/plat-s3c24xx/cpu.c arch/arm/mach-s3c24xx/common.c
··· 4 4 * http://www.simtec.co.uk/products/SWLINUX/ 5 5 * Ben Dooks <ben@simtec.co.uk> 6 6 * 7 - * S3C24XX CPU Support 7 + * Common code for S3C24XX machines 8 8 * 9 9 * This program is free software; you can redistribute it and/or modify 10 10 * it under the terms of the GNU General Public License as published by ··· 41 41 #include <asm/mach/arch.h> 42 42 #include <asm/mach/map.h> 43 43 44 + #include <mach/regs-clock.h> 44 45 #include <mach/regs-gpio.h> 45 46 #include <plat/regs-serial.h> 46 47 ··· 53 52 #include <plat/s3c2416.h> 54 53 #include <plat/s3c244x.h> 55 54 #include <plat/s3c2443.h> 55 + #include <plat/cpu-freq.h> 56 + #include <plat/pll.h> 56 57 57 58 /* table of supported CPUs */ 58 59 ··· 236 233 s3c24xx_init_cpu(); 237 234 238 235 s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids)); 236 + } 237 + 238 + /* Serial port registrations */ 239 + 240 + static struct resource s3c2410_uart0_resource[] = { 241 + [0] = DEFINE_RES_MEM(S3C2410_PA_UART0, SZ_16K), 242 + [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX0, \ 243 + IRQ_S3CUART_ERR0 - IRQ_S3CUART_RX0 + 1, \ 244 + NULL, IORESOURCE_IRQ) 245 + }; 246 + 247 + static struct resource s3c2410_uart1_resource[] = { 248 + [0] = DEFINE_RES_MEM(S3C2410_PA_UART1, SZ_16K), 249 + [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX1, \ 250 + IRQ_S3CUART_ERR1 - IRQ_S3CUART_RX1 + 1, \ 251 + NULL, IORESOURCE_IRQ) 252 + }; 253 + 254 + static struct resource s3c2410_uart2_resource[] = { 255 + [0] = DEFINE_RES_MEM(S3C2410_PA_UART2, SZ_16K), 256 + [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX2, \ 257 + IRQ_S3CUART_ERR2 - IRQ_S3CUART_RX2 + 1, \ 258 + NULL, IORESOURCE_IRQ) 259 + }; 260 + 261 + static struct resource s3c2410_uart3_resource[] = { 262 + [0] = DEFINE_RES_MEM(S3C2443_PA_UART3, SZ_16K), 263 + [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX3, \ 264 + IRQ_S3CUART_ERR3 - IRQ_S3CUART_RX3 + 1, \ 265 + NULL, IORESOURCE_IRQ) 266 + }; 267 + 268 + struct s3c24xx_uart_resources s3c2410_uart_resources[] __initdata = { 269 + [0] = { 270 + .resources = s3c2410_uart0_resource, 271 + .nr_resources = ARRAY_SIZE(s3c2410_uart0_resource), 272 + }, 273 + [1] = { 274 + .resources = s3c2410_uart1_resource, 275 + .nr_resources = ARRAY_SIZE(s3c2410_uart1_resource), 276 + }, 277 + [2] = { 278 + .resources = s3c2410_uart2_resource, 279 + .nr_resources = ARRAY_SIZE(s3c2410_uart2_resource), 280 + }, 281 + [3] = { 282 + .resources = s3c2410_uart3_resource, 283 + .nr_resources = ARRAY_SIZE(s3c2410_uart3_resource), 284 + }, 285 + }; 286 + 287 + /* initialise all the clocks */ 288 + 289 + void __init_or_cpufreq s3c24xx_setup_clocks(unsigned long fclk, 290 + unsigned long hclk, 291 + unsigned long pclk) 292 + { 293 + clk_upll.rate = s3c24xx_get_pll(__raw_readl(S3C2410_UPLLCON), 294 + clk_xtal.rate); 295 + 296 + clk_mpll.rate = fclk; 297 + clk_h.rate = hclk; 298 + clk_p.rate = pclk; 299 + clk_f.rate = fclk; 239 300 }
-100
arch/arm/plat-s3c24xx/dev-uart.c
··· 1 - /* linux/arch/arm/plat-s3c24xx/dev-uart.c 2 - * 3 - * Copyright (c) 2004 Simtec Electronics 4 - * Ben Dooks <ben@simtec.co.uk> 5 - * 6 - * Base S3C24XX UART resource and platform device definitions 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 - 13 - #include <linux/kernel.h> 14 - #include <linux/types.h> 15 - #include <linux/interrupt.h> 16 - #include <linux/list.h> 17 - #include <linux/serial_core.h> 18 - #include <linux/platform_device.h> 19 - 20 - #include <asm/mach/arch.h> 21 - #include <asm/mach/map.h> 22 - #include <asm/mach/irq.h> 23 - #include <mach/hardware.h> 24 - #include <mach/map.h> 25 - 26 - #include <plat/devs.h> 27 - #include <plat/regs-serial.h> 28 - 29 - /* Serial port registrations */ 30 - 31 - static struct resource s3c2410_uart0_resource[] = { 32 - [0] = { 33 - .start = S3C2410_PA_UART0, 34 - .end = S3C2410_PA_UART0 + 0x3fff, 35 - .flags = IORESOURCE_MEM, 36 - }, 37 - [1] = { 38 - .start = IRQ_S3CUART_RX0, 39 - .end = IRQ_S3CUART_ERR0, 40 - .flags = IORESOURCE_IRQ, 41 - } 42 - }; 43 - 44 - static struct resource s3c2410_uart1_resource[] = { 45 - [0] = { 46 - .start = S3C2410_PA_UART1, 47 - .end = S3C2410_PA_UART1 + 0x3fff, 48 - .flags = IORESOURCE_MEM, 49 - }, 50 - [1] = { 51 - .start = IRQ_S3CUART_RX1, 52 - .end = IRQ_S3CUART_ERR1, 53 - .flags = IORESOURCE_IRQ, 54 - } 55 - }; 56 - 57 - static struct resource s3c2410_uart2_resource[] = { 58 - [0] = { 59 - .start = S3C2410_PA_UART2, 60 - .end = S3C2410_PA_UART2 + 0x3fff, 61 - .flags = IORESOURCE_MEM, 62 - }, 63 - [1] = { 64 - .start = IRQ_S3CUART_RX2, 65 - .end = IRQ_S3CUART_ERR2, 66 - .flags = IORESOURCE_IRQ, 67 - } 68 - }; 69 - 70 - static struct resource s3c2410_uart3_resource[] = { 71 - [0] = { 72 - .start = S3C2443_PA_UART3, 73 - .end = S3C2443_PA_UART3 + 0x3fff, 74 - .flags = IORESOURCE_MEM, 75 - }, 76 - [1] = { 77 - .start = IRQ_S3CUART_RX3, 78 - .end = IRQ_S3CUART_ERR3, 79 - .flags = IORESOURCE_IRQ, 80 - }, 81 - }; 82 - 83 - struct s3c24xx_uart_resources s3c2410_uart_resources[] __initdata = { 84 - [0] = { 85 - .resources = s3c2410_uart0_resource, 86 - .nr_resources = ARRAY_SIZE(s3c2410_uart0_resource), 87 - }, 88 - [1] = { 89 - .resources = s3c2410_uart1_resource, 90 - .nr_resources = ARRAY_SIZE(s3c2410_uart1_resource), 91 - }, 92 - [2] = { 93 - .resources = s3c2410_uart2_resource, 94 - .nr_resources = ARRAY_SIZE(s3c2410_uart2_resource), 95 - }, 96 - [3] = { 97 - .resources = s3c2410_uart3_resource, 98 - .nr_resources = ARRAY_SIZE(s3c2410_uart3_resource), 99 - }, 100 - };
arch/arm/plat-s3c24xx/irq-pm.c arch/arm/mach-s3c24xx/irq-pm.c
arch/arm/plat-s3c24xx/pm.c arch/arm/mach-s3c24xx/pm.c
arch/arm/plat-s3c24xx/sleep.S arch/arm/mach-s3c24xx/sleep.S
-132
arch/arm/plat-s5p/Kconfig
··· 1 - # arch/arm/plat-s5p/Kconfig 2 - # 3 - # Copyright (c) 2009 Samsung Electronics Co., Ltd. 4 - # http://www.samsung.com/ 5 - # 6 - # Licensed under GPLv2 7 - 8 - config PLAT_S5P 9 - bool 10 - depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) 11 - default y 12 - select ARM_VIC if !ARCH_EXYNOS 13 - select ARM_GIC if ARCH_EXYNOS 14 - select GIC_NON_BANKED if ARCH_EXYNOS4 15 - select NO_IOPORT 16 - select ARCH_REQUIRE_GPIOLIB 17 - select S3C_GPIO_TRACK 18 - select S5P_GPIO_DRVSTR 19 - select SAMSUNG_GPIOLIB_4BIT 20 - select PLAT_SAMSUNG 21 - select SAMSUNG_CLKSRC 22 - select SAMSUNG_IRQ_VIC_TIMER 23 - help 24 - Base platform code for Samsung's S5P series SoC. 25 - 26 - config S5P_EXT_INT 27 - bool 28 - help 29 - Use the external interrupts (other than GPIO interrupts.) 30 - Note: Do not choose this for S5P6440 and S5P6450. 31 - 32 - config S5P_GPIO_INT 33 - bool 34 - help 35 - Common code for the GPIO interrupts (other than external interrupts.) 36 - 37 - config S5P_HRT 38 - bool 39 - select SAMSUNG_DEV_PWM 40 - help 41 - Use the High Resolution timer support 42 - 43 - config S5P_DEV_UART 44 - def_bool y 45 - depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210) 46 - 47 - config S5P_PM 48 - bool 49 - help 50 - Common code for power management support on S5P and newer SoCs 51 - Note: Do not select this for S5P6440 and S5P6450. 52 - 53 - config S5P_SLEEP 54 - bool 55 - help 56 - Internal config node to apply common S5P sleep management code. 57 - Can be selected by S5P and newer SoCs with similar sleep procedure. 58 - 59 - config S5P_DEV_FIMC0 60 - bool 61 - help 62 - Compile in platform device definitions for FIMC controller 0 63 - 64 - config S5P_DEV_FIMC1 65 - bool 66 - help 67 - Compile in platform device definitions for FIMC controller 1 68 - 69 - config S5P_DEV_FIMC2 70 - bool 71 - help 72 - Compile in platform device definitions for FIMC controller 2 73 - 74 - config S5P_DEV_FIMC3 75 - bool 76 - help 77 - Compile in platform device definitions for FIMC controller 3 78 - 79 - config S5P_DEV_JPEG 80 - bool 81 - help 82 - Compile in platform device definitions for JPEG codec 83 - 84 - config S5P_DEV_G2D 85 - bool 86 - help 87 - Compile in platform device definitions for G2D device 88 - 89 - config S5P_DEV_FIMD0 90 - bool 91 - help 92 - Compile in platform device definitions for FIMD controller 0 93 - 94 - config S5P_DEV_I2C_HDMIPHY 95 - bool 96 - help 97 - Compile in platform device definitions for I2C HDMIPHY controller 98 - 99 - config S5P_DEV_MFC 100 - bool 101 - help 102 - Compile in platform device definitions for MFC 103 - 104 - config S5P_DEV_ONENAND 105 - bool 106 - help 107 - Compile in platform device definition for OneNAND controller 108 - 109 - config S5P_DEV_CSIS0 110 - bool 111 - help 112 - Compile in platform device definitions for MIPI-CSIS channel 0 113 - 114 - config S5P_DEV_CSIS1 115 - bool 116 - help 117 - Compile in platform device definitions for MIPI-CSIS channel 1 118 - 119 - config S5P_DEV_TV 120 - bool 121 - help 122 - Compile in platform device definition for TV interface 123 - 124 - config S5P_DEV_USB_EHCI 125 - bool 126 - help 127 - Compile in platform device definition for USB EHCI 128 - 129 - config S5P_SETUP_MIPIPHY 130 - bool 131 - help 132 - Compile in common setup code for MIPI-CSIS and MIPI-DSIM devices
-27
arch/arm/plat-s5p/Makefile
··· 1 - # arch/arm/plat-s5p/Makefile 2 - # 3 - # Copyright (c) 2009 Samsung Electronics Co., Ltd. 4 - # http://www.samsung.com/ 5 - # 6 - # Licensed under GPLv2 7 - 8 - obj-y := 9 - obj-m := 10 - obj-n := dummy.o 11 - obj- := 12 - 13 - # Core files 14 - 15 - obj-y += clock.o 16 - obj-y += irq.o 17 - obj-$(CONFIG_S5P_EXT_INT) += irq-eint.o 18 - obj-$(CONFIG_S5P_GPIO_INT) += irq-gpioint.o 19 - obj-$(CONFIG_S5P_PM) += pm.o irq-pm.o 20 - obj-$(CONFIG_S5P_SLEEP) += sleep.o 21 - obj-$(CONFIG_S5P_HRT) += s5p-time.o 22 - 23 - # devices 24 - 25 - obj-$(CONFIG_S5P_DEV_UART) += dev-uart.o 26 - obj-$(CONFIG_S5P_DEV_MFC) += dev-mfc.o 27 - obj-$(CONFIG_S5P_SETUP_MIPIPHY) += setup-mipiphy.o
+1 -2
arch/arm/plat-s5p/clock.c arch/arm/plat-samsung/s5p-clock.c
··· 1 - /* linux/arch/arm/plat-s5p/clock.c 2 - * 1 + /* 3 2 * Copyright 2009 Samsung Electronics Co., Ltd. 4 3 * http://www.samsung.com/ 5 4 *
+1 -3
arch/arm/plat-s5p/dev-mfc.c arch/arm/plat-samsung/s5p-dev-mfc.c
··· 1 - /* linux/arch/arm/plat-s5p/dev-mfc.c 2 - * 1 + /* 3 2 * Copyright (C) 2010-2011 Samsung Electronics Co.Ltd 4 3 * 5 4 * Base S5P MFC resource and device definitions ··· 7 8 * it under the terms of the GNU General Public License version 2 as 8 9 * published by the Free Software Foundation. 9 10 */ 10 - 11 11 12 12 #include <linux/kernel.h> 13 13 #include <linux/interrupt.h>
+15 -63
arch/arm/plat-s5p/dev-uart.c arch/arm/plat-samsung/s5p-dev-uart.c
··· 1 - /* linux/arch/arm/plat-s5p/dev-uart.c 2 - * 3 - * Copyright (c) 2009 Samsung Electronics Co., Ltd. 1 + /* 2 + * Copyright (c) 2009,2012 Samsung Electronics Co., Ltd. 4 3 * http://www.samsung.com/ 5 4 * 6 5 * Base S5P UART resource and device definitions ··· 13 14 #include <linux/types.h> 14 15 #include <linux/interrupt.h> 15 16 #include <linux/list.h> 17 + #include <linux/ioport.h> 16 18 #include <linux/platform_device.h> 17 19 18 20 #include <asm/mach/arch.h> ··· 26 26 /* Serial port registrations */ 27 27 28 28 static struct resource s5p_uart0_resource[] = { 29 - [0] = { 30 - .start = S5P_PA_UART0, 31 - .end = S5P_PA_UART0 + S5P_SZ_UART - 1, 32 - .flags = IORESOURCE_MEM, 33 - }, 34 - [1] = { 35 - .start = IRQ_UART0, 36 - .end = IRQ_UART0, 37 - .flags = IORESOURCE_IRQ, 38 - }, 29 + [0] = DEFINE_RES_MEM(S5P_PA_UART0, S5P_SZ_UART), 30 + [1] = DEFINE_RES_IRQ(IRQ_UART0), 39 31 }; 40 32 41 33 static struct resource s5p_uart1_resource[] = { 42 - [0] = { 43 - .start = S5P_PA_UART1, 44 - .end = S5P_PA_UART1 + S5P_SZ_UART - 1, 45 - .flags = IORESOURCE_MEM, 46 - }, 47 - [1] = { 48 - .start = IRQ_UART1, 49 - .end = IRQ_UART1, 50 - .flags = IORESOURCE_IRQ, 51 - }, 34 + [0] = DEFINE_RES_MEM(S5P_PA_UART1, S5P_SZ_UART), 35 + [1] = DEFINE_RES_IRQ(IRQ_UART1), 52 36 }; 53 37 54 38 static struct resource s5p_uart2_resource[] = { 55 - [0] = { 56 - .start = S5P_PA_UART2, 57 - .end = S5P_PA_UART2 + S5P_SZ_UART - 1, 58 - .flags = IORESOURCE_MEM, 59 - }, 60 - [1] = { 61 - .start = IRQ_UART2, 62 - .end = IRQ_UART2, 63 - .flags = IORESOURCE_IRQ, 64 - }, 39 + [0] = DEFINE_RES_MEM(S5P_PA_UART2, S5P_SZ_UART), 40 + [1] = DEFINE_RES_IRQ(IRQ_UART2), 65 41 }; 66 42 67 43 static struct resource s5p_uart3_resource[] = { 68 44 #if CONFIG_SERIAL_SAMSUNG_UARTS > 3 69 - [0] = { 70 - .start = S5P_PA_UART3, 71 - .end = S5P_PA_UART3 + S5P_SZ_UART - 1, 72 - .flags = IORESOURCE_MEM, 73 - }, 74 - [1] = { 75 - .start = IRQ_UART3, 76 - .end = IRQ_UART3, 77 - .flags = IORESOURCE_IRQ, 78 - }, 45 + [0] = DEFINE_RES_MEM(S5P_PA_UART3, S5P_SZ_UART), 46 + [1] = DEFINE_RES_IRQ(IRQ_UART3), 79 47 #endif 80 48 }; 81 49 82 50 static struct resource s5p_uart4_resource[] = { 83 51 #if CONFIG_SERIAL_SAMSUNG_UARTS > 4 84 - [0] = { 85 - .start = S5P_PA_UART4, 86 - .end = S5P_PA_UART4 + S5P_SZ_UART - 1, 87 - .flags = IORESOURCE_MEM, 88 - }, 89 - [1] = { 90 - .start = IRQ_UART4, 91 - .end = IRQ_UART4, 92 - .flags = IORESOURCE_IRQ, 93 - }, 52 + [0] = DEFINE_RES_MEM(S5P_PA_UART4, S5P_SZ_UART), 53 + [1] = DEFINE_RES_IRQ(IRQ_UART4), 94 54 #endif 95 55 }; 96 56 97 57 static struct resource s5p_uart5_resource[] = { 98 58 #if CONFIG_SERIAL_SAMSUNG_UARTS > 5 99 - [0] = { 100 - .start = S5P_PA_UART5, 101 - .end = S5P_PA_UART5 + S5P_SZ_UART - 1, 102 - .flags = IORESOURCE_MEM, 103 - }, 104 - [1] = { 105 - .start = IRQ_UART5, 106 - .end = IRQ_UART5, 107 - .flags = IORESOURCE_IRQ, 108 - }, 59 + [0] = DEFINE_RES_MEM(S5P_PA_UART5, S5P_SZ_UART), 60 + [1] = DEFINE_RES_IRQ(IRQ_UART5), 109 61 #endif 110 62 }; 111 63
+1 -2
arch/arm/plat-s5p/irq-eint.c arch/arm/plat-samsung/s5p-irq-eint.c
··· 1 - /* linux/arch/arm/plat-s5p/irq-eint.c 2 - * 1 + /* 3 2 * Copyright (c) 2010 Samsung Electronics Co., Ltd. 4 3 * http://www.samsung.com 5 4 *
+1 -2
arch/arm/plat-s5p/irq-gpioint.c arch/arm/plat-samsung/s5p-irq-gpioint.c
··· 1 - /* linux/arch/arm/plat-s5p/irq-gpioint.c 2 - * 1 + /* 3 2 * Copyright (c) 2010 Samsung Electronics Co., Ltd. 4 3 * Author: Kyungmin Park <kyungmin.park@samsung.com> 5 4 * Author: Joonyoung Shim <jy0922.shim@samsung.com>
+1 -2
arch/arm/plat-s5p/irq-pm.c arch/arm/plat-samsung/s5p-irq-pm.c
··· 1 - /* linux/arch/arm/plat-s5p/irq-pm.c 2 - * 1 + /* 3 2 * Copyright (c) 2010 Samsung Electronics Co., Ltd. 4 3 * http://www.samsung.com 5 4 *
+1 -2
arch/arm/plat-s5p/irq.c arch/arm/plat-samsung/s5p-irq.c
··· 1 - /* arch/arm/plat-s5p/irq.c 2 - * 1 + /* 3 2 * Copyright (c) 2009 Samsung Electronics Co., Ltd. 4 3 * http://www.samsung.com/ 5 4 *
+1 -2
arch/arm/plat-s5p/pm.c arch/arm/plat-samsung/s5p-pm.c
··· 1 - /* linux/arch/arm/plat-s5p/pm.c 2 - * 1 + /* 3 2 * Copyright (c) 2010 Samsung Electronics Co., Ltd. 4 3 * http://www.samsung.com 5 4 *
+1 -2
arch/arm/plat-s5p/s5p-time.c arch/arm/plat-samsung/s5p-time.c
··· 1 - /* linux/arch/arm/plat-s5p/s5p-time.c 2 - * 1 + /* 3 2 * Copyright (c) 2011 Samsung Electronics Co., Ltd. 4 3 * http://www.samsung.com/ 5 4 *
arch/arm/plat-s5p/setup-mipiphy.c arch/arm/plat-samsung/setup-mipiphy.c
+1 -2
arch/arm/plat-s5p/sleep.S arch/arm/plat-samsung/s5p-sleep.S
··· 1 - /* linux/arch/arm/plat-s5p/sleep.S 2 - * 1 + /* 3 2 * Copyright (c) 2011 Samsung Electronics Co., Ltd. 4 3 * http://www.samsung.com 5 4 *
+140
arch/arm/plat-samsung/Kconfig
··· 13 13 help 14 14 Base platform code for all Samsung SoC based systems 15 15 16 + config PLAT_S5P 17 + bool 18 + depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) 19 + default y 20 + select ARM_VIC if !ARCH_EXYNOS 21 + select ARM_GIC if ARCH_EXYNOS 22 + select GIC_NON_BANKED if ARCH_EXYNOS4 23 + select NO_IOPORT 24 + select ARCH_REQUIRE_GPIOLIB 25 + select S3C_GPIO_TRACK 26 + select S5P_GPIO_DRVSTR 27 + select SAMSUNG_GPIOLIB_4BIT 28 + select PLAT_SAMSUNG 29 + select SAMSUNG_CLKSRC 30 + select SAMSUNG_IRQ_VIC_TIMER 31 + help 32 + Base platform code for Samsung's S5P series SoC. 33 + 16 34 if PLAT_SAMSUNG 17 35 18 36 # boot configurations ··· 68 50 this configuration should be between zero and two. The port 69 51 must have been initialised by the boot-loader before use. 70 52 53 + # timer options 54 + 55 + config S5P_HRT 56 + bool 57 + select SAMSUNG_DEV_PWM 58 + help 59 + Use the High Resolution timer support 60 + 71 61 # clock options 72 62 73 63 config SAMSUNG_CLKSRC ··· 84 58 Select the clock code for the clksrc implementation 85 59 used by newer systems such as the S3C64XX. 86 60 61 + config S5P_CLOCK 62 + def_bool (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) 63 + help 64 + Support common clock part for ARCH_S5P and ARCH_EXYNOS SoCs 65 + 87 66 # options for IRQ support 88 67 89 68 config SAMSUNG_IRQ_VIC_TIMER 90 69 bool 91 70 help 92 71 Internal configuration to build the VIC timer interrupt code. 72 + 73 + config S5P_IRQ 74 + def_bool (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) 75 + help 76 + Support common interrup part for ARCH_S5P and ARCH_EXYNOS SoCs 77 + 78 + config S5P_EXT_INT 79 + bool 80 + help 81 + Use the external interrupts (other than GPIO interrupts.) 82 + Note: Do not choose this for S5P6440 and S5P6450. 83 + 84 + config S5P_GPIO_INT 85 + bool 86 + help 87 + Common code for the GPIO interrupts (other than external interrupts.) 93 88 94 89 # options for gpio configuration support 95 90 ··· 163 116 help 164 117 Internal configuration option to enable the s3c specific gpio 165 118 chip tracking if the platform requires it. 119 + 120 + # uart options 121 + 122 + config S5P_DEV_UART 123 + def_bool y 124 + depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210) 166 125 167 126 # ADC driver 168 127 ··· 327 274 help 328 275 Compile in platform device definition LCD backlight with PWM Timer 329 276 277 + config S5P_DEV_CSIS0 278 + bool 279 + help 280 + Compile in platform device definitions for MIPI-CSIS channel 0 281 + 282 + config S5P_DEV_CSIS1 283 + bool 284 + help 285 + Compile in platform device definitions for MIPI-CSIS channel 1 286 + 287 + config S5P_DEV_FIMC0 288 + bool 289 + help 290 + Compile in platform device definitions for FIMC controller 0 291 + 292 + config S5P_DEV_FIMC1 293 + bool 294 + help 295 + Compile in platform device definitions for FIMC controller 1 296 + 297 + config S5P_DEV_FIMC2 298 + bool 299 + help 300 + Compile in platform device definitions for FIMC controller 2 301 + 302 + config S5P_DEV_FIMC3 303 + bool 304 + help 305 + Compile in platform device definitions for FIMC controller 3 306 + 307 + config S5P_DEV_FIMD0 308 + bool 309 + help 310 + Compile in platform device definitions for FIMD controller 0 311 + 312 + config S5P_DEV_G2D 313 + bool 314 + help 315 + Compile in platform device definitions for G2D device 316 + 317 + config S5P_DEV_I2C_HDMIPHY 318 + bool 319 + help 320 + Compile in platform device definitions for I2C HDMIPHY controller 321 + 322 + config S5P_DEV_JPEG 323 + bool 324 + help 325 + Compile in platform device definitions for JPEG codec 326 + 327 + config S5P_DEV_MFC 328 + bool 329 + help 330 + Compile in setup memory (init) code for MFC 331 + 332 + config S5P_DEV_ONENAND 333 + bool 334 + help 335 + Compile in platform device definition for OneNAND controller 336 + 337 + config S5P_DEV_TV 338 + bool 339 + help 340 + Compile in platform device definition for TV interface 341 + 342 + config S5P_DEV_USB_EHCI 343 + bool 344 + help 345 + Compile in platform device definition for USB EHCI 346 + 330 347 config S3C24XX_PWM 331 348 bool "PWM device support" 332 349 select HAVE_PWM 333 350 help 334 351 Support for exporting the PWM timer blocks via the pwm device 335 352 system 353 + 354 + config S5P_SETUP_MIPIPHY 355 + bool 356 + help 357 + Compile in common setup code for MIPI-CSIS and MIPI-DSIM devices 336 358 337 359 # DMA 338 360 ··· 478 350 Compile support for wakeup-mask controls found on the S3C6400 479 351 and above. This code allows a set of interrupt to wakeup-mask 480 352 mappings. See <plat/wakeup-mask.h> 353 + 354 + config S5P_PM 355 + bool 356 + help 357 + Common code for power management support on S5P and newer SoCs 358 + Note: Do not select this for S5P6440 and S5P6450. 359 + 360 + config S5P_SLEEP 361 + bool 362 + help 363 + Internal config node to apply common S5P sleep management code. 364 + Can be selected by S5P and newer SoCs with similar sleep procedure. 481 365 482 366 comment "Power Domain" 483 367
+13
arch/arm/plat-samsung/Makefile
··· 13 13 14 14 obj-y += init.o cpu.o 15 15 obj-$(CONFIG_ARCH_USES_GETTIMEOFFSET) += time.o 16 + obj-$(CONFIG_S5P_HRT) += s5p-time.o 17 + 16 18 obj-y += clock.o 17 19 obj-y += pwm-clock.o 18 20 19 21 obj-$(CONFIG_SAMSUNG_CLKSRC) += clock-clksrc.o 22 + obj-$(CONFIG_S5P_CLOCK) += s5p-clock.o 20 23 21 24 obj-$(CONFIG_SAMSUNG_IRQ_VIC_TIMER) += irq-vic-timer.o 25 + obj-$(CONFIG_S5P_IRQ) += s5p-irq.o 26 + obj-$(CONFIG_S5P_EXT_INT) += s5p-irq-eint.o 27 + obj-$(CONFIG_S5P_GPIO_INT) += s5p-irq-gpioint.o 22 28 23 29 # ADC 24 30 ··· 36 30 37 31 obj-y += devs.o 38 32 obj-y += dev-uart.o 33 + obj-$(CONFIG_S5P_DEV_MFC) += s5p-dev-mfc.o 34 + obj-$(CONFIG_S5P_DEV_UART) += s5p-dev-uart.o 39 35 40 36 obj-$(CONFIG_SAMSUNG_DEV_BACKLIGHT) += dev-backlight.o 37 + 38 + obj-$(CONFIG_S5P_SETUP_MIPIPHY) += setup-mipiphy.o 41 39 42 40 # DMA support 43 41 ··· 56 46 obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o 57 47 58 48 obj-$(CONFIG_SAMSUNG_WAKEMASK) += wakeup-mask.o 49 + 50 + obj-$(CONFIG_S5P_PM) += s5p-pm.o s5p-irq-pm.o 51 + obj-$(CONFIG_S5P_SLEEP) += s5p-sleep.o 59 52 60 53 # PD support 61 54
+1 -1
drivers/net/ethernet/ti/Kconfig
··· 51 51 52 52 config TI_CPSW 53 53 tristate "TI CPSW Switch Support" 54 - depends on ARM && (ARCH_DAVINCI || SOC_OMAPAM33XX) 54 + depends on ARM && (ARCH_DAVINCI || SOC_AM33XX) 55 55 select TI_DAVINCI_CPDMA 56 56 select TI_DAVINCI_MDIO 57 57 ---help---