From: Linus Torvalds Date: Tue, 2 Jul 2013 20:43:38 +0000 (-0700) Subject: Merge tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232;p=deliverable%2Flinux.git Merge tag 'soc-for-linus' of git://git./linux/kernel/git/arm/arm-soc Pull ARM SoC specific changes from Arnd Bergmann: "These changes are all to SoC-specific code, a total of 33 branches on 17 platforms were pulled into this. Like last time, Renesas sh-mobile is now the platform with the most changes, followed by OMAP and EXYNOS. Two new platforms, TI Keystone and Rockchips RK3xxx are added in this branch, both containing almost no platform specific code at all, since they are using generic subsystem interfaces for clocks, pinctrl, interrupts etc. The device drivers are getting merged through the respective subsystem maintainer trees. One more SoC (u300) is now multiplatform capable and several others (shmobile, exynos, msm, integrator, kirkwood, clps711x) are moving towards that goal with this series but need more work. Also noteworthy is the work on PCI here, which is traditionally part of the SoC specific code. With the changes done by Thomas Petazzoni, we can now more easily have PCI host controller drivers as loadable modules and keep them separate from the platform code in drivers/pci/host. This has already led to the discovery that three platforms (exynos, spear and imx) are actually using an identical PCIe host controller and will be able to share a driver once support for spear and imx is added." * tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (480 commits) ARM: integrator: let pciv3 use mem/premem from device tree ARM: integrator: set local side PCI addresses right ARM: dts: Add pcie controller node for exynos5440-ssdk5440 ARM: dts: Add pcie controller node for Samsung EXYNOS5440 SoC ARM: EXYNOS: Enable PCIe support for Exynos5440 pci: Add PCIe driver for Samsung Exynos ARM: OMAP5: voltagedomain data: remove temporary OMAP4 voltage data ARM: keystone: Move CPU bringup code to dedicated asm file ARM: multiplatform: always pick one CPU type ARM: imx: select syscon for IMX6SL ARM: keystone: select ARM_ERRATA_798181 only for SMP ARM: imx: Synertronixx scb9328 needs to select SOC_IMX1 ARM: OMAP2+: AM43x: resolve SMP related build error dmaengine: edma: enable build for AM33XX ARM: edma: Add EDMA crossbar event mux support ARM: edma: Add DT and runtime PM support to the private EDMA API dmaengine: edma: Add TI EDMA device tree binding arm: add basic support for Rockchip RK3066a boards arm: add debug uarts for rockchip rk29xx and rk3xxx series arm: Add basic clocks for Rockchip rk3066a SoCs ... --- 3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232 diff --cc arch/arm/Kconfig index 941dbb86a4d6,d70260dd7428..7a13c2cd7a86 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@@ -745,7 -751,7 +752,8 @@@ config ARCH_S5P64X select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C_RTC if RTC_CLASS select NEED_MACH_GPIO_H + select SAMSUNG_WDT_RESET + select SAMSUNG_ATAGS help Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440, SMDK6450. @@@ -762,7 -769,7 +771,8 @@@ config ARCH_S5PC10 select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C_RTC if RTC_CLASS select NEED_MACH_GPIO_H + select SAMSUNG_WDT_RESET + select SAMSUNG_ATAGS help Samsung S5PC100 series based systems diff --cc arch/arm/Makefile index 7ea15176d109,daf19a86b8eb..c01e4a728554 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@@ -168,9 -169,10 +169,10 @@@ machine-$(CONFIG_ARCH_OMAP1) += omap machine-$(CONFIG_ARCH_OMAP2PLUS) += omap2 machine-$(CONFIG_ARCH_ORION5X) += orion5x machine-$(CONFIG_ARCH_PICOXCELL) += picoxcell -machine-$(CONFIG_ARCH_PRIMA2) += prima2 +machine-$(CONFIG_ARCH_SIRF) += prima2 machine-$(CONFIG_ARCH_PXA) += pxa machine-$(CONFIG_ARCH_REALVIEW) += realview + machine-$(CONFIG_ARCH_ROCKCHIP) += rockchip machine-$(CONFIG_ARCH_RPC) += rpc machine-$(CONFIG_ARCH_S3C24XX) += s3c24xx machine-$(CONFIG_ARCH_S3C64XX) += s3c64xx diff --cc arch/arm/include/asm/glue-proc.h index 8017e94acc5e,f2f39bcf7945..e6168c0c18e9 --- a/arch/arm/include/asm/glue-proc.h +++ b/arch/arm/include/asm/glue-proc.h @@@ -230,15 -230,15 +230,24 @@@ # endif #endif +#ifdef CONFIG_CPU_PJ4B +# ifdef CPU_NAME +# undef MULTI_CPU +# define MULTI_CPU +# else +# define CPU_NAME cpu_pj4b +# endif +#endif + + #ifdef CONFIG_CPU_V7M + # ifdef CPU_NAME + # undef MULTI_CPU + # define MULTI_CPU + # else + # define CPU_NAME cpu_v7m + # endif + #endif + #ifndef MULTI_CPU #define cpu_proc_init __glue(CPU_NAME,_proc_init) #define cpu_proc_fin __glue(CPU_NAME,_proc_fin) diff --cc arch/arm/kernel/setup.c index b4b1d397592b,a1a2fbaaa31c..1c8278de6c46 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@@ -442,9 -455,10 +455,10 @@@ void notrace cpu_init(void "I" (offsetof(struct stack, und[0])), PLC (PSR_F_BIT | PSR_I_BIT | SVC_MODE) : "r14"); + #endif } -int __cpu_logical_map[NR_CPUS]; +u32 __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = MPIDR_INVALID }; void __init smp_setup_processor_id(void) { diff --cc arch/arm/mach-omap2/omap_hwmod_33xx_data.c index 3c7675a6a8f4,0c9a183131e2..28bbd56346a9 --- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c @@@ -249,9 -329,14 +249,9 @@@ static struct omap_hwmod_class am33xx_g }; static struct omap_hwmod_rst_info am33xx_gfx_resets[] = { - { .name = "gfx", .rst_shift = 0 }, + { .name = "gfx", .rst_shift = 0, .st_shift = 0}, }; -static struct omap_hwmod_irq_info am33xx_gfx_irqs[] = { - { .name = "gfxint", .irq = 37 + OMAP_INTC_START, }, - { .irq = -1 }, -}; - static struct omap_hwmod am33xx_gfx_hwmod = { .name = "gfx", .class = &am33xx_gfx_hwmod_class, diff --cc arch/arm/mach-picoxcell/common.c index aa6a7e0e80a4,7cde0424d33c..b13f51bc35cf --- a/arch/arm/mach-picoxcell/common.c +++ b/arch/arm/mach-picoxcell/common.c @@@ -8,10 -8,13 +8,9 @@@ * All enquiries to support@picochip.com */ #include -#include -#include -#include #include #include -#include #include - #include #include #include @@@ -80,7 -85,8 +79,6 @@@ static void picoxcell_wdt_restart(char DT_MACHINE_START(PICOXCELL, "Picochip picoXcell") .map_io = picoxcell_map_io, - .init_time = dw_apb_timer_init, - .nr_irqs = NR_IRQS_LEGACY, - .init_irq = irqchip_init, .init_machine = picoxcell_init_machine, .dt_compat = picoxcell_dt_match, .restart = picoxcell_wdt_restart, diff --cc arch/arm/mach-vexpress/v2m.c index d6016970e2fe,b0eccf7e06ec..95a469e23e37 --- a/arch/arm/mach-vexpress/v2m.c +++ b/arch/arm/mach-vexpress/v2m.c @@@ -455,8 -456,10 +455,9 @@@ static const char * const v2m_dt_match[ DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express") .dt_compat = v2m_dt_match, .smp = smp_ops(vexpress_smp_ops), + .smp_init = smp_init_ops(vexpress_smp_init_ops), .map_io = v2m_dt_map_io, .init_early = v2m_dt_init_early, - .init_irq = irqchip_init, .init_time = v2m_dt_timer_init, .init_machine = v2m_dt_init, MACHINE_END diff --cc arch/arm/mach-virt/virt.c index bdf05f41ca90,a67d2dd5bb60..b184e57d1854 --- a/arch/arm/mach-virt/virt.c +++ b/arch/arm/mach-virt/virt.c @@@ -35,10 -36,8 +35,7 @@@ static const char *virt_dt_match[] = NULL }; - extern struct smp_operations virt_smp_ops; - DT_MACHINE_START(VIRT, "Dummy Virtual Machine") - .init_irq = irqchip_init, .init_machine = virt_init, - .smp = smp_ops(virt_smp_ops), .dt_compat = virt_dt_match, MACHINE_END diff --cc arch/arm/plat-samsung/Makefile index 03cea140cfd0,6348ae2e3b46..98d07d8fc7a7 --- a/arch/arm/plat-samsung/Makefile +++ b/arch/arm/plat-samsung/Makefile @@@ -56,7 -56,7 +56,8 @@@ obj-$(CONFIG_SAMSUNG_PM_GPIO) += pm-gpi obj-$(CONFIG_SAMSUNG_PM_CHECK) += pm-check.o obj-$(CONFIG_SAMSUNG_WAKEMASK) += wakeup-mask.o +obj-$(CONFIG_SAMSUNG_WDT_RESET) += watchdog-reset.o - obj-$(CONFIG_S5P_PM) += s5p-pm.o s5p-irq-pm.o + obj-$(CONFIG_S5P_PM) += s5p-pm.o + obj-$(CONFIG_S5P_IRQ_PM) += s5p-irq-pm.o obj-$(CONFIG_S5P_SLEEP) += s5p-sleep.o diff --cc drivers/tty/serial/xilinx_uartps.c index 6c9174530422,a4a3028103e3..7e4150aa69c6 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@@ -972,14 -1004,15 +1004,14 @@@ static int xuartps_probe(struct platfor port->mapbase = res->start; port->irq = res2->start; port->dev = &pdev->dev; - port->uartclk = clk_get_rate(clk); - port->private_data = clk; + port->uartclk = clk_get_rate(xuartps_data->refclk); + port->private_data = xuartps_data; - dev_set_drvdata(&pdev->dev, port); + platform_set_drvdata(pdev, port); rc = uart_add_one_port(&xuartps_uart_driver, port); if (rc) { dev_err(&pdev->dev, "uart_add_one_port() failed; err=%i\n", rc); - return rc; - dev_set_drvdata(&pdev->dev, NULL); + goto err_out_clk_disable; } return 0; } @@@ -993,14 -1039,19 +1038,18 @@@ err_out_free **/ static int xuartps_remove(struct platform_device *pdev) { - struct uart_port *port = dev_get_drvdata(&pdev->dev); + struct uart_port *port = platform_get_drvdata(pdev); - struct clk *clk = port->private_data; + struct xuartps *xuartps_data = port->private_data; int rc; /* Remove the xuartps port from the serial core */ rc = uart_remove_one_port(&xuartps_uart_driver, port); - dev_set_drvdata(&pdev->dev, NULL); port->mapbase = 0; - clk_disable_unprepare(clk); + clk_disable_unprepare(xuartps_data->refclk); + clk_disable_unprepare(xuartps_data->aperclk); + clk_put(xuartps_data->refclk); + clk_put(xuartps_data->aperclk); + kfree(xuartps_data); return rc; }