]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 6 Jun 2014 19:26:57 +0000 (12:26 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 6 Jun 2014 19:26:57 +0000 (12:26 -0700)
Pull i2c updates from Wolfram Sang:
 "I2C has the following updates for 3.16:

   - major cleanups to the rcar and sh_mobile drivers
   - removal of nuc900 driver which had a compile error for years
   - usual bunch of driver updates, bugfixes and cleanups"

* 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (44 commits)
  i2c: pca954x: Fix compilation without CONFIG_GPIOLIB
  i2c: mux: pca954x: Use the descriptor-based GPIO API
  i2c: mpc: insert DR read in i2c_fixup()
  i2c: bfin: turn to Resource-managed API in probe function
  i2c: Make of_device_id array const
  i2c: remove unnecessary OOM messages
  i2c: designware-pci: Add Haswell PCI IDs
  i2c: designware: Add runtime PM hooks
  i2c: designware: Disable device on system suspend
  i2c: nuc900: remove driver
  i2c: imx: update i2c clock divider for each transaction
  i2c: imx: fix the i2c bus hang issue when do repeat restart
  i2c: rcar: update copyright and license information
  i2c: rcar: janitorial cleanup after refactoring
  i2c: rcar: reuse status bits as enable bits
  i2c: rcar: remove spinlock
  i2c: rcar: refactor status bit handling
  i2c: rcar: refactor setting up msg
  i2c: rcar: check bus free before first message
  i2c: rcar: refactor irq state machine
  ...

1  2 
arch/arm/boot/dts/sun4i-a10.dtsi
arch/arm/boot/dts/sun5i-a10s.dtsi
arch/arm/boot/dts/sun5i-a13.dtsi
arch/arm/boot/dts/sun7i-a20.dtsi
drivers/i2c/busses/Kconfig
drivers/i2c/busses/Makefile

index c7b794ed337d710b42510e02591d7dd101fc75c4,e45fed7fccd44204464beb5ae4c0276eef5695a8..d96e179490ce8a154a3653b69a585f9ded5cd835
                        #size-cells = <0>;
                };
  
 +              mmc0: mmc@01c0f000 {
 +                      compatible = "allwinner,sun4i-a10-mmc";
 +                      reg = <0x01c0f000 0x1000>;
 +                      clocks = <&ahb_gates 8>, <&mmc0_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <32>;
 +                      status = "disabled";
 +              };
 +
 +              mmc1: mmc@01c10000 {
 +                      compatible = "allwinner,sun4i-a10-mmc";
 +                      reg = <0x01c10000 0x1000>;
 +                      clocks = <&ahb_gates 9>, <&mmc1_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <33>;
 +                      status = "disabled";
 +              };
 +
 +              mmc2: mmc@01c11000 {
 +                      compatible = "allwinner,sun4i-a10-mmc";
 +                      reg = <0x01c11000 0x1000>;
 +                      clocks = <&ahb_gates 10>, <&mmc2_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <34>;
 +                      status = "disabled";
 +              };
 +
 +              mmc3: mmc@01c12000 {
 +                      compatible = "allwinner,sun4i-a10-mmc";
 +                      reg = <0x01c12000 0x1000>;
 +                      clocks = <&ahb_gates 11>, <&mmc3_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <35>;
 +                      status = "disabled";
 +              };
 +
                usbphy: phy@01c13400 {
                        #phy-cells = <1>;
                        compatible = "allwinner,sun4i-a10-usb-phy";
                        #size-cells = <0>;
                        #gpio-cells = <3>;
  
 +                      pwm0_pins_a: pwm0@0 {
 +                              allwinner,pins = "PB2";
 +                              allwinner,function = "pwm";
 +                              allwinner,drive = <0>;
 +                              allwinner,pull = <0>;
 +                      };
 +
 +                      pwm1_pins_a: pwm1@0 {
 +                              allwinner,pins = "PI3";
 +                              allwinner,function = "pwm";
 +                              allwinner,drive = <0>;
 +                              allwinner,pull = <0>;
 +                      };
 +
                        uart0_pins_a: uart0@0 {
                                allwinner,pins = "PB22", "PB23";
                                allwinner,function = "uart0";
                                allwinner,drive = <0>;
                                allwinner,pull = <0>;
                        };
 +
 +                      mmc0_pins_a: mmc0@0 {
 +                              allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
 +                              allwinner,function = "mmc0";
 +                              allwinner,drive = <2>;
 +                              allwinner,pull = <0>;
 +                      };
 +
 +                      mmc0_cd_pin_reference_design: mmc0_cd_pin@0 {
 +                              allwinner,pins = "PH1";
 +                              allwinner,function = "gpio_in";
 +                              allwinner,drive = <0>;
 +                              allwinner,pull = <1>;
 +                      };
                };
  
                timer@01c20c00 {
                        interrupts = <24>;
                };
  
 +              pwm: pwm@01c20e00 {
 +                      compatible = "allwinner,sun4i-a10-pwm";
 +                      reg = <0x01c20e00 0xc>;
 +                      clocks = <&osc24M>;
 +                      #pwm-cells = <3>;
 +                      status = "disabled";
 +              };
 +
                sid: eeprom@01c23800 {
                        compatible = "allwinner,sun4i-a10-sid";
                        reg = <0x01c23800 0x10>;
                };
  
                i2c0: i2c@01c2ac00 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2ac00 0x400>;
                        interrupts = <7>;
                        clocks = <&apb1_gates 0>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                i2c1: i2c@01c2b000 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b000 0x400>;
                        interrupts = <8>;
                        clocks = <&apb1_gates 1>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                i2c2: i2c@01c2b400 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b400 0x400>;
                        interrupts = <9>;
                        clocks = <&apb1_gates 2>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
        };
  };
index aa1dd59dc34aa6f36871c3832144dd4b476e538a,e260d7da86d6bcdfb6e8a7f5fa2312966dc898d6..b64f705d90080888024ff1d977e0ca57eafd3915
                        #size-cells = <0>;
                };
  
 +              mmc0: mmc@01c0f000 {
 +                      compatible = "allwinner,sun5i-a13-mmc";
 +                      reg = <0x01c0f000 0x1000>;
 +                      clocks = <&ahb_gates 8>, <&mmc0_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <32>;
 +                      status = "disabled";
 +              };
 +
 +              mmc1: mmc@01c10000 {
 +                      compatible = "allwinner,sun5i-a13-mmc";
 +                      reg = <0x01c10000 0x1000>;
 +                      clocks = <&ahb_gates 9>, <&mmc1_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <33>;
 +                      status = "disabled";
 +              };
 +
 +              mmc2: mmc@01c11000 {
 +                      compatible = "allwinner,sun5i-a13-mmc";
 +                      reg = <0x01c11000 0x1000>;
 +                      clocks = <&ahb_gates 10>, <&mmc2_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <34>;
 +                      status = "disabled";
 +              };
 +
                usbphy: phy@01c13400 {
                        #phy-cells = <1>;
                        compatible = "allwinner,sun5i-a13-usb-phy";
                                allwinner,drive = <0>;
                                allwinner,pull = <0>;
                        };
 +
 +                      mmc0_pins_a: mmc0@0 {
 +                              allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
 +                              allwinner,function = "mmc0";
 +                              allwinner,drive = <2>;
 +                              allwinner,pull = <0>;
 +                      };
 +
 +                      mmc1_pins_a: mmc1@0 {
 +                              allwinner,pins = "PG3","PG4","PG5","PG6","PG7","PG8";
 +                              allwinner,function = "mmc1";
 +                              allwinner,drive = <2>;
 +                              allwinner,pull = <0>;
 +                      };
                };
  
                timer@01c20c00 {
                i2c0: i2c@01c2ac00 {
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun5i-a10s-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2ac00 0x400>;
                        interrupts = <7>;
                        clocks = <&apb1_gates 0>;
                i2c1: i2c@01c2b000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun5i-a10s-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b000 0x400>;
                        interrupts = <8>;
                        clocks = <&apb1_gates 1>;
                i2c2: i2c@01c2b400 {
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun5i-a10s-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b400 0x400>;
                        interrupts = <9>;
                        clocks = <&apb1_gates 2>;
index c9fdb7b3ecd9cc4140c7ca83fe19df5087948430,1bfd625f020eec8eee77f60a26f034caa668adbf..3b2a94c40f6e3f7ee7666c534149715f7d7e8b7d
                        #size-cells = <0>;
                };
  
 +              mmc0: mmc@01c0f000 {
 +                      compatible = "allwinner,sun5i-a13-mmc";
 +                      reg = <0x01c0f000 0x1000>;
 +                      clocks = <&ahb_gates 8>, <&mmc0_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <32>;
 +                      status = "disabled";
 +              };
 +
 +              mmc2: mmc@01c11000 {
 +                      compatible = "allwinner,sun5i-a13-mmc";
 +                      reg = <0x01c11000 0x1000>;
 +                      clocks = <&ahb_gates 10>, <&mmc2_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <34>;
 +                      status = "disabled";
 +              };
 +
                usbphy: phy@01c13400 {
                        #phy-cells = <1>;
                        compatible = "allwinner,sun5i-a13-usb-phy";
                                allwinner,drive = <0>;
                                allwinner,pull = <0>;
                        };
 +
 +                      mmc0_pins_a: mmc0@0 {
 +                              allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
 +                              allwinner,function = "mmc0";
 +                              allwinner,drive = <2>;
 +                              allwinner,pull = <0>;
 +                      };
                };
  
                timer@01c20c00 {
                };
  
                i2c0: i2c@01c2ac00 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun5i-a13-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2ac00 0x400>;
                        interrupts = <7>;
                        clocks = <&apb1_gates 0>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                i2c1: i2c@01c2b000 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun5i-a13-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b000 0x400>;
                        interrupts = <8>;
                        clocks = <&apb1_gates 1>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                i2c2: i2c@01c2b400 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun5i-a13-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b400 0x400>;
                        interrupts = <9>;
                        clocks = <&apb1_gates 2>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                timer@01c60000 {
index 385933bac1140826ea827b0fdbe707d37521e029,7fd44e59c09cac574f5e3ed3475587fe9740a2f6..01e94664232abc2ce1059f032f1bb719d46da48c
                             <1 10 0xf08>;
        };
  
 +      pmu {
 +              compatible = "arm,cortex-a7-pmu", "arm,cortex-a15-pmu";
 +              interrupts = <0 120 4>,
 +                           <0 121 4>;
 +      };
 +
        clocks {
                #address-cells = <1>;
                #size-cells = <1>;
                        #size-cells = <0>;
                };
  
 +              mmc0: mmc@01c0f000 {
 +                      compatible = "allwinner,sun5i-a13-mmc";
 +                      reg = <0x01c0f000 0x1000>;
 +                      clocks = <&ahb_gates 8>, <&mmc0_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <0 32 4>;
 +                      status = "disabled";
 +              };
 +
 +              mmc1: mmc@01c10000 {
 +                      compatible = "allwinner,sun5i-a13-mmc";
 +                      reg = <0x01c10000 0x1000>;
 +                      clocks = <&ahb_gates 9>, <&mmc1_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <0 33 4>;
 +                      status = "disabled";
 +              };
 +
 +              mmc2: mmc@01c11000 {
 +                      compatible = "allwinner,sun5i-a13-mmc";
 +                      reg = <0x01c11000 0x1000>;
 +                      clocks = <&ahb_gates 10>, <&mmc2_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <0 34 4>;
 +                      status = "disabled";
 +              };
 +
 +              mmc3: mmc@01c12000 {
 +                      compatible = "allwinner,sun5i-a13-mmc";
 +                      reg = <0x01c12000 0x1000>;
 +                      clocks = <&ahb_gates 11>, <&mmc3_clk>;
 +                      clock-names = "ahb", "mmc";
 +                      interrupts = <0 35 4>;
 +                      status = "disabled";
 +              };
 +
                usbphy: phy@01c13400 {
                        #phy-cells = <1>;
                        compatible = "allwinner,sun7i-a20-usb-phy";
                        #size-cells = <0>;
                        #gpio-cells = <3>;
  
 +                      pwm0_pins_a: pwm0@0 {
 +                              allwinner,pins = "PB2";
 +                              allwinner,function = "pwm";
 +                              allwinner,drive = <0>;
 +                              allwinner,pull = <0>;
 +                      };
 +
 +                      pwm1_pins_a: pwm1@0 {
 +                              allwinner,pins = "PI3";
 +                              allwinner,function = "pwm";
 +                              allwinner,drive = <0>;
 +                              allwinner,pull = <0>;
 +                      };
 +
                        uart0_pins_a: uart0@0 {
                                allwinner,pins = "PB22", "PB23";
                                allwinner,function = "uart0";
                                allwinner,drive = <0>;
                                allwinner,pull = <0>;
                        };
 +
 +                      mmc0_pins_a: mmc0@0 {
 +                              allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
 +                              allwinner,function = "mmc0";
 +                              allwinner,drive = <2>;
 +                              allwinner,pull = <0>;
 +                      };
 +
 +                      mmc0_cd_pin_reference_design: mmc0_cd_pin@0 {
 +                              allwinner,pins = "PH1";
 +                              allwinner,function = "gpio_in";
 +                              allwinner,drive = <0>;
 +                              allwinner,pull = <1>;
 +                      };
 +
 +                      mmc3_pins_a: mmc3@0 {
 +                              allwinner,pins = "PI4","PI5","PI6","PI7","PI8","PI9";
 +                              allwinner,function = "mmc3";
 +                              allwinner,drive = <2>;
 +                              allwinner,pull = <0>;
 +                      };
                };
  
                timer@01c20c00 {
                        interrupts = <0 24 4>;
                };
  
 +              pwm: pwm@01c20e00 {
 +                      compatible = "allwinner,sun7i-a20-pwm";
 +                      reg = <0x01c20e00 0xc>;
 +                      clocks = <&osc24M>;
 +                      #pwm-cells = <3>;
 +                      status = "disabled";
 +              };
 +
                sid: eeprom@01c23800 {
                        compatible = "allwinner,sun7i-a20-sid";
                        reg = <0x01c23800 0x200>;
                };
  
                i2c0: i2c@01c2ac00 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2ac00 0x400>;
                        interrupts = <0 7 4>;
                        clocks = <&apb1_gates 0>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                i2c1: i2c@01c2b000 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b000 0x400>;
                        interrupts = <0 8 4>;
                        clocks = <&apb1_gates 1>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                i2c2: i2c@01c2b400 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b400 0x400>;
                        interrupts = <0 9 4>;
                        clocks = <&apb1_gates 2>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                i2c3: i2c@01c2b800 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b800 0x400>;
                        interrupts = <0 88 4>;
                        clocks = <&apb1_gates 3>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                i2c4: i2c@01c2c000 {
-                       compatible = "allwinner,sun4i-i2c";
+                       compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2c000 0x400>;
                        interrupts = <0 89 4>;
                        clocks = <&apb1_gates 15>;
                        clock-frequency = <100000>;
                        status = "disabled";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
                };
  
                gmac: ethernet@01c50000 {
index 9a0a6cc7f4ba8d6c9bb24b3189ca733b3a8a7b25,7ccc51e85ba58a2bfa592054ecb0bd74dd7a93d9..620d1004a1e76a49afc9c5ea3a7c3b5be62422d7
@@@ -449,7 -449,7 +449,7 @@@ config I2C_EFM3
  
  config I2C_EG20T
        tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) I2C"
-       depends on PCI
+       depends on PCI && (X86_32 || COMPILE_TEST)
        help
          This driver is for PCH(Platform controller Hub) I2C of EG20T which
          is an IOH(Input/Output Hub) for x86 embedded processor.
@@@ -570,13 -570,6 +570,6 @@@ config I2C_NOMADI
          I2C interface from ST-Ericsson's Nomadik and Ux500 architectures,
          as well as the STA2X11 PCIe I/O HUB.
  
- config I2C_NUC900
-       tristate "NUC900 I2C Driver"
-       depends on ARCH_W90X900
-       help
-         Say Y here to include support for I2C controller in the
-         Winbond/Nuvoton NUC900 based System-on-Chip devices.
  config I2C_OCORES
        tristate "OpenCores I2C Controller"
        help
@@@ -993,15 -986,6 +986,15 @@@ config I2C_SIBYT
        help
          Supports the SiByte SOC on-chip I2C interfaces (2 channels).
  
 +config I2C_CROS_EC_TUNNEL
 +      tristate "ChromeOS EC tunnel I2C bus"
 +      depends on MFD_CROS_EC
 +      help
 +        If you say yes here you get an I2C bus that will tunnel i2c commands
 +        through to the other side of the ChromeOS EC to the i2c bus
 +        connected there. This will work whatever the interface used to
 +        talk to the EC (SPI, I2C or LPC).
 +
  config SCx200_I2C
        tristate "NatSemi SCx200 I2C using GPIO pins (DEPRECATED)"
        depends on SCx200_GPIO
index e110ca932918fea87ec9d5d7da692cf9afdfa267,413d062a08f83b7d964f76f6474d950e4e6c78c4..298692cc600023b31c7f7f752299ac831239e0d3
@@@ -55,7 -55,6 +55,6 @@@ obj-$(CONFIG_I2C_MPC)         += i2c-mpc.
  obj-$(CONFIG_I2C_MV64XXX)     += i2c-mv64xxx.o
  obj-$(CONFIG_I2C_MXS)         += i2c-mxs.o
  obj-$(CONFIG_I2C_NOMADIK)     += i2c-nomadik.o
- obj-$(CONFIG_I2C_NUC900)      += i2c-nuc900.o
  obj-$(CONFIG_I2C_OCORES)      += i2c-ocores.o
  obj-$(CONFIG_I2C_OMAP)                += i2c-omap.o
  obj-$(CONFIG_I2C_PASEMI)      += i2c-pasemi.o
@@@ -95,7 -94,6 +94,7 @@@ obj-$(CONFIG_I2C_VIPERBOARD)  += i2c-vip
  # Other I2C/SMBus bus drivers
  obj-$(CONFIG_I2C_ACORN)               += i2c-acorn.o
  obj-$(CONFIG_I2C_BCM_KONA)    += i2c-bcm-kona.o
 +obj-$(CONFIG_I2C_CROS_EC_TUNNEL)      += i2c-cros-ec-tunnel.o
  obj-$(CONFIG_I2C_ELEKTOR)     += i2c-elektor.o
  obj-$(CONFIG_I2C_PCA_ISA)     += i2c-pca-isa.o
  obj-$(CONFIG_I2C_SIBYTE)      += i2c-sibyte.o