Merge tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 2 Jul 2013 20:43:38 +0000 (13:43 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 2 Jul 2013 20:43:38 +0000 (13:43 -0700)
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
  ...

23 files changed:
1  2 
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/include/asm/cputype.h
arch/arm/include/asm/glue-proc.h
arch/arm/kernel/setup.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/id.c
arch/arm/mach-omap2/omap_hwmod_33xx_data.c
arch/arm/mach-picoxcell/common.c
arch/arm/mach-sunxi/sunxi.c
arch/arm/mach-vexpress/v2m.c
arch/arm/mach-virt/virt.c
arch/arm/mm/nommu.c
arch/arm/plat-samsung/Kconfig
arch/arm/plat-samsung/Makefile
drivers/clk/Makefile
drivers/gpio/Kconfig
drivers/pci/Kconfig
drivers/tty/serial/xilinx_uartps.c
drivers/usb/host/Kconfig
drivers/usb/host/ehci-platform.c
drivers/usb/phy/Kconfig

index 941dbb86a4d68e3fa424cf82f0813a1a4b3a3e12,d70260dd7428dc01777c4e917a9cfd5051de854f..7a13c2cd7a86f31e8fcd53cbf22a0a29a40eb9b2
@@@ -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
  
index 7ea15176d1099e20c99f0f5372306621e237d2d5,daf19a86b8eba0a894761ec38b5d0f1df05d3a64..c01e4a728554a79540041ec872df72af5154fc77
@@@ -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
Simple merge
index 8017e94acc5e0883082212e9714e68cebf40f52b,f2f39bcf7945a29de90f59d6afdd79e67bd06f43..e6168c0c18e923e4764031ef7e18f384f1f704ba
  # 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)
index b4b1d397592b3d6435c0a503541c37d3fffcc016,a1a2fbaaa31c50cb39f751a9a0a167e2552e8981..1c8278de6c46c65e76d72962c76031d5457ea1bf
@@@ -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)
  {
Simple merge
Simple merge
Simple merge
index 3c7675a6a8f4edaa1103881335a208da6de476cb,0c9a183131e2a79733c7eb74fde02de1d6ecda2c..28bbd56346a93ab67fc377eb1ea066a8be8280f7
@@@ -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,
index aa6a7e0e80a45ef21d5ea834963d1391c0cf0bd8,7cde0424d33cf85e073f1ac08d5002de7bbdfa77..b13f51bc35cf99481aeed2851ff42ba0c8e56ef1
@@@ -8,10 -8,13 +8,9 @@@
   * All enquiries to support@picochip.com
   */
  #include <linux/delay.h>
 -#include <linux/irq.h>
 -#include <linux/irqchip.h>
 -#include <linux/irqdomain.h>
  #include <linux/of.h>
  #include <linux/of_address.h>
 -#include <linux/of_irq.h>
  #include <linux/of_platform.h>
- #include <linux/dw_apb_timer.h>
  
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
@@@ -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,
Simple merge
index d6016970e2fe1aad9694c699a08572acb5b17151,b0eccf7e06ecb0331a32973acc5664d8fedaa933..95a469e23e378078af77ffcd9eecc9b29e5ff264
@@@ -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
index bdf05f41ca903141a34e30b1baa61a7e867a9fa4,a67d2dd5bb6062e7eede85ef612ac6c072c9e7ea..b184e57d1854a552346aba0c985d060ce73775b2
@@@ -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
Simple merge
Simple merge
index 03cea140cfd0b3eb7f6b3606187ccdf48378711b,6348ae2e3b467671f6fe2f3a41720b7598123e38..98d07d8fc7a71ffa869fa397cc8f74977264f17c
@@@ -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
Simple merge
Simple merge
Simple merge
index 6c9174530422953a2b1294ab0c1cf55d3e128882,a4a3028103e3441c533517da3cdc9ac62ad6eed9..7e4150aa69c65b34c44e526c5633bf456f1abe2f
@@@ -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;
  }
  
Simple merge
Simple merge
Simple merge