Merge tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 2 Jul 2013 21:33:21 +0000 (14:33 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 2 Jul 2013 21:33:21 +0000 (14:33 -0700)
Pull ARM SoC driver specific changes from Arnd Bergmann:
 "These changes are all driver specific and cross over between arm-soc
  contents and some other subsystem, in these cases cpufreq, crypto,
  dma, pinctrl, mailbox and usb, and the subsystem owners agreed to have
  these changes merged through arm-soc.

  As we proceed to untangle the dependencies between platform code and
  driver code, the amount of changes in this category is fortunately
  shrinking, for 3.11 we have 16 branches here and 101 non-merge
  changesets, the majority of which are for the stedma40 dma engine
  driver used in the ux500 platform.  Cleaning up that code touches
  multiple subsystems, but gets rid of the dependency in the end.

  The mailbox code moved out from mach-omap2 to drivers/mailbox is an
  intermediate step and is still omap specific at the moment.  Patches
  exist to generalize the subsystem and add other drivers with the same
  API, but those did not make it for 3.11."

* tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (101 commits)
  crypto: ux500: use dmaengine_submit API
  crypto: ux500: use dmaengine_prep_slave_sg API
  crypto: ux500: use dmaengine_device_control API
  crypto: ux500/crypt: add missing __iomem qualifiers
  crypto: ux500/hash: add missing static qualifiers
  crypto: ux500/hash: use readl on iomem addresses
  dmaengine: ste_dma40: Declare memcpy config as static
  ARM: ux500: Remove mop500_snowball_ethernet_clock_enable()
  ARM: ux500: Correct the EN_3v3 regulator's on/off GPIO
  ARM: ux500: Provide a AB8500 GPIO Device Tree node
  gpio: rcar: fix gpio_rcar_of_table
  gpio-rcar: Remove #ifdef CONFIG_OF around OF-specific sections
  gpio-rcar: Reference core gpio documentation in the DT bindings
  clk: exynos5250: Add enum entries for divider clock of i2s1 and i2s2
  ARM: dts: Update Samsung I2S documentation
  ARM: dts: add clock provider information for i2s controllers in Exynos5250
  ARM: dts: add Exynos audio subsystem clock controller node
  clk: samsung: register audio subsystem clocks using common clock framework
  ARM: dts: use #include for all device trees for Samsung
  pinctrl: s3c24xx: use correct header for chained_irq functions
  ...

21 files changed:
1  2 
arch/arm/Kconfig
arch/arm/boot/dts/dbx5x0.dtsi
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5440-ssdk5440.dts
arch/arm/boot/dts/exynos5440.dtsi
arch/arm/boot/dts/omap3430-sdp.dts
arch/arm/boot/dts/snowball.dts
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-s3c24xx/Kconfig
arch/arm/mach-ux500/board-mop500-sdi.c
arch/arm/mach-ux500/cpu-db8500.c
arch/arm/mach-ux500/devices-db8500.c
drivers/clk/samsung/clk-exynos5250.c
drivers/crypto/ux500/cryp/cryp_core.c
drivers/crypto/ux500/hash/hash_core.c
drivers/pinctrl/Kconfig
drivers/usb/gadget/Kconfig
drivers/usb/musb/ux500.c
drivers/usb/musb/ux500_dma.c

Simple merge
                                interrupt-controller;
                                #interrupt-cells = <2>;
  
+                               ab8500_gpio: ab8500-gpio {
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                               };
                                ab8500-rtc {
                                        compatible = "stericsson,ab8500-rtc";
 -                                      interrupts = <17 0x4
 -                                                    18 0x4>;
 +                                      interrupts = <17 IRQ_TYPE_LEVEL_HIGH
 +                                                    18 IRQ_TYPE_LEVEL_HIGH>;
                                        interrupt-names = "60S", "ALARM";
                                };
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -20,7 -19,9 +20,8 @@@
  #include <linux/of.h>
  #include <linux/pinctrl/machine.h>
  #include <linux/platform_data/omap4-keypad.h>
 -#include <linux/platform_data/omap_ocp2scp.h>
 +#include <linux/wl12xx.h>
+ #include <linux/platform_data/mailbox-omap.h>
 -#include <linux/usb/omap_control_usb.h>
  
  #include <asm/mach-types.h>
  #include <asm/mach/map.h>
@@@ -28,10 -28,9 +28,10 @@@ config CPU_S3C241
        select CPU_ARM920T
        select CPU_LLSERIAL_S3C2410
        select S3C2410_CLOCK
-       select S3C2410_CPUFREQ if CPU_FREQ_S3C24XX
+       select ARM_S3C2410_CPUFREQ if ARM_S3C24XX_CPUFREQ
        select S3C2410_PM if PM
        select SAMSUNG_HRT
 +      select SAMSUNG_WDT_RESET
        help
          Support for S3C2410 and S3C2410A family from the S3C24XX line
          of Samsung Mobile CPUs.
@@@ -330,16 -284,8 +299,13 @@@ static void __init u8500_init_machine(v
        else if (of_machine_is_compatible("st-ericsson,ccu9540")) {}
                /* TODO: Add pinmaps for ccu9540 board. */
  
-       /* TODO: Export SoC, USB, cpu-freq and DMA40 */
-       parent = u8500_of_init_devices();
 -      /* automatically probe child nodes of db8500 device */
 -      of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent);
 +      /* automatically probe child nodes of dbx5x0 devices */
 +      if (of_machine_is_compatible("st-ericsson,u8540"))
 +              of_platform_populate(NULL, u8500_local_bus_nodes,
 +                                   u8540_auxdata_lookup, parent);
 +      else
 +              of_platform_populate(NULL, u8500_local_bus_nodes,
 +                                   u8500_auxdata_lookup, parent);
  }
  
  static const char * stericsson_dt_platform_compat[] = {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -187,10 -195,39 +195,40 @@@ static const struct musb_platform_ops u
        .set_vbus       = ux500_musb_set_vbus,
  };
  
+ static struct musb_hdrc_platform_data *
+ ux500_of_probe(struct platform_device *pdev, struct device_node *np)
+ {
+       struct musb_hdrc_platform_data *pdata;
+       const char *mode;
+       int strlen;
+       pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
+       if (!pdata)
+               return NULL;
+       mode = of_get_property(np, "dr_mode", &strlen);
+       if (!mode) {
+               dev_err(&pdev->dev, "No 'dr_mode' property found\n");
+               return NULL;
+       }
+       if (strlen > 0) {
+               if (!strcmp(mode, "host"))
+                       pdata->mode = MUSB_HOST;
+               if (!strcmp(mode, "otg"))
+                       pdata->mode = MUSB_OTG;
+               if (!strcmp(mode, "peripheral"))
+                       pdata->mode = MUSB_PERIPHERAL;
+       }
+       return pdata;
+ }
  static int ux500_probe(struct platform_device *pdev)
  {
 +      struct resource musb_resources[2];
        struct musb_hdrc_platform_data  *pdata = pdev->dev.platform_data;
+       struct device_node              *np = pdev->dev.of_node;
        struct platform_device          *musb;
        struct ux500_glue               *glue;
        struct clk                      *clk;
Simple merge