]> Git Repo - linux.git/commitdiff
Merge tag 'mfd-for-linus-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
authorLinus Torvalds <[email protected]>
Mon, 7 Apr 2014 17:24:18 +0000 (10:24 -0700)
committerLinus Torvalds <[email protected]>
Mon, 7 Apr 2014 17:24:18 +0000 (10:24 -0700)
Pull MFD updates from Lee Jones:
 "Changes to existing drivers:
   - Use of managed resources - omap, twl4030, ti_am335x_tscadc
   - Advanced error handling - omap
   - Rework clk management - omap
   - Device Tree (re-)work - tc3589x, pm8921, da9055, sec
   - IRC management overhaul and !BROKEN - pm8921
   - Convert to regmap - ssbi, pm8921
   - Use simple power-management ops - ucb1x00
   - Include file clean-up - adp5520, cs5535, janz, lpc_ich,
      - lpc_sch, max14577, mcp-sa11x0, pcf50633-adc, rc5t583,
       rdc321x-southbridge, retu, smsc-ece1099, ti-ssp, ti_am335x_tscadc,
tps65912, vexpress-config, wm8350, ywm8350
   - Various bug fixes across the subsystem
      - NULL/invalid pointer dereference prevention
      - Resource leak mitigation,
      - Variable used initialised
      - Staticise various containers
      - Enforce return value checks

  New drivers/supported devices:
   - Add support for s2mps14 and s2mpa01 to sec
   - Add support for da9063 (v5) to da9063
   - Add support for atom-c2000 to gpio-ich
   - Add support for come-{mbt10,cbt6,chl6} to kempld
   - Add support for da9053 to da9052
   - Add support for itco-wdt (v3) and baytrail to lpc_ich
   - Add new drivers for tps65218, rtsx_usb, bcm590xx

  (Re-)moved drivers:
   - twl4030 ==> drivers/iio
   - ti-ssp  ==> /dev/null"

* tag 'mfd-for-linus-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (103 commits)
  mfd: wm5110: Correct default for HEADPHONE_DETECT_1
  mfd: arizona: Correct small errors in the DT binding documentation
  mfd: arizona: Mark DSP clocking register as volatile
  mfd: devicetree: bindings: Add pm8xxx RTC description
  mfd: kempld-core: Fix potential hang-up during boot
  mfd: sec-core: Fix uninitialized 'regmap_rtc' on S2MPA01
  mfd: tps65910: Fix regmap_irq_chip_data leak on mfd_add_devices fail
  mfd: tps65910: Fix possible invalid pointer dereference on regmap_add_irq_chip fail
  mfd: sec-core: Fix I2C dummy device resource leak on probe failure
  mfd: sec-core: Add of_compatible strings for clock MFD cells
  mfd: Remove obsolete ti-ssp driver
  Documentation: mfd: s2mps11: Describe S5M8767 and S2MPS14 clocks
  mfd: bcm590xx: Fix type argument for module device table
  mfd: lpc_ich: Add support for Intel Bay Trail SoC
  mfd: lpc_ich: Add support for NM10 GPIO
  mfd: lpc_ich: Change Avoton to iTCO v3
  watchdog: iTCO_wdt: Add support for v3 silicon
  mfd: lpc_ich: Add support for iTCO v3
  mfd: lpc_ich: Remove lpc_ich_cfg struct use
  mfd: lpc_ich: Only configure watchdog or GPIO when present
  ...

1  2 
Documentation/devicetree/bindings/mfd/s2mps11.txt
arch/arm/boot/dts/omap4.dtsi
arch/arm/boot/dts/omap5.dtsi
arch/arm/mach-omap2/cclock3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
drivers/iio/adc/Kconfig
drivers/iio/adc/Makefile
drivers/mfd/wm5102-tables.c
drivers/watchdog/iTCO_wdt.c
include/linux/mfd/arizona/registers.h

index f69bec294f0200d55806109b0c70c94f7ae7c732,67ea05ca8050811a6f8458b77b0f10307d2bcbd9..802e839b08294f6ef5f54c561b03c1981e395f0c
@@@ -1,5 -1,5 +1,5 @@@
  
 -* Samsung S2MPS11 Voltage and Current Regulator
 +* Samsung S2MPS11 and S2MPS14 Voltage and Current Regulator
  
  The Samsung S2MPS11 is a multi-function device which includes voltage and
  current regulators, RTC, charger controller and other sub-blocks. It is
@@@ -7,7 -7,7 +7,7 @@@ interfaced to the host controller usin
  addressed by the host system using different I2C slave addresses.
  
  Required properties:
 -- compatible: Should be "samsung,s2mps11-pmic".
 +- compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic".
  - reg: Specifies the I2C slave address of the pmic block. It should be 0x66.
  
  Optional properties:
  - interrupts: Interrupt specifiers for interrupt sources.
  
  Optional nodes:
- - clocks: s2mps11 provides three(AP/CP/BT) buffered 32.768 KHz outputs, so to
-   register these as clocks with common clock framework instantiate a sub-node
-   named "clocks". It uses the common clock binding documented in :
+ - clocks: s2mps11 and s5m8767 provide three(AP/CP/BT) buffered 32.768 KHz
+   outputs, so to register these as clocks with common clock framework
+   instantiate a sub-node named "clocks". It uses the common clock binding
+   documented in :
    [Documentation/devicetree/bindings/clock/clock-bindings.txt]
+   The s2mps14 provides two (AP/BT) buffered 32.768 KHz outputs.
    - #clock-cells: should be 1.
  
    - The following is the list of clocks generated by the controller. Each clock
      is assigned an identifier and client nodes use this identifier to specify
      the clock which they consume.
-     Clock               ID
-     ----------------------
-     32KhzAP           0
-     32KhzCP           1
-     32KhzBT           2
+     Clock               ID           Devices
+     ----------------------------------------------------------
+     32KhzAP           0            S2MPS11, S2MPS14, S5M8767
+     32KhzCP           1            S2MPS11, S5M8767
+     32KhzBT           2            S2MPS11, S2MPS14, S5M8767
+   - compatible: Should be one of: "samsung,s2mps11-clk", "samsung,s2mps14-clk",
+               "samsung,s5m8767-clk"
  
  - regulators: The regulators of s2mps11 that have to be instantiated should be
  included in a sub-node named 'regulators'. Regulator nodes included in this
@@@ -59,14 -64,10 +64,14 @@@ supports. Note: The 'n' in LDOn and BUC
  as per the datasheet of s2mps11.
  
        - LDOn
 -                - valid values for n are 1 to 38
 +                - valid values for n are:
 +                      - S2MPS11: 1 to 38
 +                      - S2MPS14: 1 to 25
                  - Example: LDO1, LD02, LDO28
        - BUCKn
 -                - valid values for n are 1 to 10.
 +                - valid values for n are:
 +                      - S2MPS11: 1 to 10
 +                      - S2MPS14: 1 to 5
                  - Example: BUCK1, BUCK2, BUCK9
  
  Example:
@@@ -75,7 -76,8 +80,8 @@@
                compatible = "samsung,s2mps11-pmic";
                reg = <0x66>;
  
-               s2m_osc: clocks{
+               s2m_osc: clocks {
+                       compatible = "samsung,s2mps11-clk";
                        #clock-cells = 1;
                        clock-output-names = "xx", "yy", "zz";
                };
index fe61976dc1a5f95fb2f3a91da1aff3bb9409ea46,39a05ce52e9cfa819ae873087a0450a828e49883..0769ec57a3f5d224ec3d761375725642f1b805d9
                        device_type = "cpu";
                        next-level-cache = <&L2>;
                        reg = <0x0>;
 +
 +                      clocks = <&dpll_mpu_ck>;
 +                      clock-names = "cpu";
 +
 +                      clock-latency = <300000>; /* From omap-cpufreq driver */
                };
                cpu@1 {
                        compatible = "arm,cortex-a9";
                        gpmc,num-waitpins = <4>;
                        ti,hwmods = "gpmc";
                        ti,no-idle-on-init;
 +                      clocks = <&l3_div_ck>;
 +                      clock-names = "fck";
                };
  
                uart1: serial@4806a000 {
                        compatible = "ti,omap4-hwspinlock";
                        reg = <0x4a0f6000 0x1000>;
                        ti,hwmods = "spinlock";
 +                      #hwlock-cells = <1>;
                };
  
                i2c1: i2c@48070000 {
                        dma-names = "tx", "rx";
                };
  
 +              mmu_dsp: mmu@4a066000 {
 +                      compatible = "ti,omap4-iommu";
 +                      reg = <0x4a066000 0x100>;
 +                      interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 +                      ti,hwmods = "mmu_dsp";
 +              };
 +
 +              mmu_ipu: mmu@55082000 {
 +                      compatible = "ti,omap4-iommu";
 +                      reg = <0x55082000 0x100>;
 +                      interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
 +                      ti,hwmods = "mmu_ipu";
 +                      ti,iommu-bus-err-back;
 +              };
 +
                wdt2: wdt@4a314000 {
                        compatible = "ti,omap4-wdt", "ti,omap3-wdt";
                        reg = <0x4a314000 0x80>;
                        dmas = <&sdma 65>,
                               <&sdma 66>;
                        dma-names = "up_link", "dn_link";
 +                      status = "disabled";
                };
  
                dmic: dmic@4012e000 {
                        ti,hwmods = "dmic";
                        dmas = <&sdma 67>;
                        dma-names = "up_link";
 +                      status = "disabled";
                };
  
                mcbsp1: mcbsp@40122000 {
                        dmas = <&sdma 33>,
                               <&sdma 34>;
                        dma-names = "tx", "rx";
 +                      status = "disabled";
                };
  
                mcbsp2: mcbsp@40124000 {
                        dmas = <&sdma 17>,
                               <&sdma 18>;
                        dma-names = "tx", "rx";
 +                      status = "disabled";
                };
  
                mcbsp3: mcbsp@40126000 {
                        dmas = <&sdma 19>,
                               <&sdma 20>;
                        dma-names = "tx", "rx";
 +                      status = "disabled";
                };
  
                mcbsp4: mcbsp@48096000 {
                        dmas = <&sdma 31>,
                               <&sdma 32>;
                        dma-names = "tx", "rx";
 +                      status = "disabled";
                };
  
                keypad: keypad@4a31c000 {
                        ti,hwmods = "kbd";
                };
  
 +              dmm@4e000000 {
 +                      compatible = "ti,omap4-dmm";
 +                      reg = <0x4e000000 0x800>;
 +                      interrupts = <0 113 0x4>;
 +                      ti,hwmods = "dmm";
 +              };
 +
                emif1: emif@4c000000 {
                        compatible = "ti,emif-4d";
                        reg = <0x4c000000 0x100>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
+                       clocks = <&init_60m_fclk>,
+                                <&xclk60mhsp1_ck>,
+                                <&xclk60mhsp2_ck>;
+                       clock-names = "refclk_60m_int",
+                                     "refclk_60m_ext_p1",
+                                     "refclk_60m_ext_p2";
  
                        usbhsohci: ohci@4a064800 {
 -                              compatible = "ti,ohci-omap3", "usb-ohci";
 +                              compatible = "ti,ohci-omap3";
                                reg = <0x4a064800 0x400>;
                                interrupt-parent = <&gic>;
                                interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
                        };
  
                        usbhsehci: ehci@4a064c00 {
 -                              compatible = "ti,ehci-omap", "usb-ehci";
 +                              compatible = "ti,ehci-omap";
                                reg = <0x4a064c00 0x400>;
                                interrupt-parent = <&gic>;
                                interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
                        dmas = <&sdma 117>, <&sdma 116>;
                        dma-names = "tx", "rx";
                };
 +
 +              abb_mpu: regulator-abb-mpu {
 +                      compatible = "ti,abb-v2";
 +                      regulator-name = "abb_mpu";
 +                      #address-cells = <0>;
 +                      #size-cells = <0>;
 +                      ti,tranxdone-status-mask = <0x80>;
 +                      clocks = <&sys_clkin_ck>;
 +                      ti,settling-time = <50>;
 +                      ti,clock-cycles = <16>;
 +
 +                      status = "disabled";
 +              };
 +
 +              abb_iva: regulator-abb-iva {
 +                      compatible = "ti,abb-v2";
 +                      regulator-name = "abb_iva";
 +                      #address-cells = <0>;
 +                      #size-cells = <0>;
 +                      ti,tranxdone-status-mask = <0x80000000>;
 +                      clocks = <&sys_clkin_ck>;
 +                      ti,settling-time = <50>;
 +                      ti,clock-cycles = <16>;
 +
 +                      status = "disabled";
 +              };
        };
  };
  
index 8292ad0fe69f12881c9af5f28c905e2ec790f46f,d4dae488deccc07fcf4c1770af3efa100c29fee3..19155bb8483502dc4505c2d08e55dea8228b007b
                                1000000 1060000
                                1500000 1250000
                        >;
 +
 +                      clocks = <&dpll_mpu_ck>;
 +                      clock-names = "cpu";
 +
 +                      clock-latency = <300000>; /* From omap-cpufreq driver */
 +
                        /* cooling options */
                        cooling-min-level = <0>;
                        cooling-max-level = <2>;
                        gpmc,num-cs = <8>;
                        gpmc,num-waitpins = <4>;
                        ti,hwmods = "gpmc";
 +                      clocks = <&l3_iclk_div>;
 +                      clock-names = "fck";
                };
  
                i2c1: i2c@48070000 {
                        compatible = "ti,omap4-hwspinlock";
                        reg = <0x4a0f6000 0x1000>;
                        ti,hwmods = "spinlock";
 +                      #hwlock-cells = <1>;
                };
  
                mcspi1: spi@48098000 {
                        dma-names = "tx", "rx";
                };
  
 +              mmu_dsp: mmu@4a066000 {
 +                      compatible = "ti,omap4-iommu";
 +                      reg = <0x4a066000 0x100>;
 +                      interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 +                      ti,hwmods = "mmu_dsp";
 +              };
 +
 +              mmu_ipu: mmu@55082000 {
 +                      compatible = "ti,omap4-iommu";
 +                      reg = <0x55082000 0x100>;
 +                      interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
 +                      ti,hwmods = "mmu_ipu";
 +                      ti,iommu-bus-err-back;
 +              };
 +
                keypad: keypad@4ae1c000 {
                        compatible = "ti,omap4-keypad";
                        reg = <0x4ae1c000 0x400>;
                        dmas = <&sdma 65>,
                               <&sdma 66>;
                        dma-names = "up_link", "dn_link";
 +                      status = "disabled";
                };
  
                dmic: dmic@4012e000 {
                        ti,hwmods = "dmic";
                        dmas = <&sdma 67>;
                        dma-names = "up_link";
 +                      status = "disabled";
                };
  
                mcbsp1: mcbsp@40122000 {
                        dmas = <&sdma 33>,
                               <&sdma 34>;
                        dma-names = "tx", "rx";
 +                      status = "disabled";
                };
  
                mcbsp2: mcbsp@40124000 {
                        dmas = <&sdma 17>,
                               <&sdma 18>;
                        dma-names = "tx", "rx";
 +                      status = "disabled";
                };
  
                mcbsp3: mcbsp@40126000 {
                        dmas = <&sdma 19>,
                               <&sdma 20>;
                        dma-names = "tx", "rx";
 +                      status = "disabled";
                };
  
                timer1: timer@4ae18000 {
                        ti,hwmods = "wd_timer2";
                };
  
 +              dmm@4e000000 {
 +                      compatible = "ti,omap5-dmm";
 +                      reg = <0x4e000000 0x800>;
 +                      interrupts = <0 113 0x4>;
 +                      ti,hwmods = "dmm";
 +              };
 +
                emif1: emif@4c000000 {
                        compatible      = "ti,emif-4d5";
                        ti,hwmods       = "emif1";
                                compatible = "snps,dwc3";
                                reg = <0x4a030000 0x10000>;
                                interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
 -                              usb-phy = <&usb2_phy>, <&usb3_phy>;
 +                              phys = <&usb2_phy>, <&usb3_phy>;
 +                              phy-names = "usb2-phy", "usb3-phy";
                                dr_mode = "peripheral";
                                tx-fifo-resize;
                        };
                                compatible = "ti,omap-usb2";
                                reg = <0x4a084000 0x7c>;
                                ctrl-module = <&omap_control_usb2phy>;
 +                              #phy-cells = <0>;
                        };
  
                        usb3_phy: usb3phy@4a084400 {
                                      <0x4a084c00 0x40>;
                                reg-names = "phy_rx", "phy_tx", "pll_ctrl";
                                ctrl-module = <&omap_control_usb3phy>;
 +                              #phy-cells = <0>;
                        };
                };
  
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
+                       clocks = <&l3init_60m_fclk>,
+                                <&xclk60mhsp1_ck>,
+                                <&xclk60mhsp2_ck>;
+                       clock-names = "refclk_60m_int",
+                                     "refclk_60m_ext_p1",
+                                     "refclk_60m_ext_p2";
  
                        usbhsohci: ohci@4a064800 {
 -                              compatible = "ti,ohci-omap3", "usb-ohci";
 +                              compatible = "ti,ohci-omap3";
                                reg = <0x4a064800 0x400>;
                                interrupt-parent = <&gic>;
                                interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
                        };
  
                        usbhsehci: ehci@4a064c00 {
 -                              compatible = "ti,ehci-omap", "usb-ehci";
 +                              compatible = "ti,ehci-omap";
                                reg = <0x4a064c00 0x400>;
                                interrupt-parent = <&gic>;
                                interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
index 11ed9152e665274793ee83f50881efc2d9fbdded,4299a559ebcada8abe69e3cfefdde1a02e9110cf..8f5121b89688396d1b3fb4551dc55fc0c4395c00
@@@ -433,9 -433,7 +433,9 @@@ static const struct clk_ops dpll4_m5x2_
        .enable         = &omap2_dflt_clk_enable,
        .disable        = &omap2_dflt_clk_disable,
        .is_enabled     = &omap2_dflt_clk_is_enabled,
 +      .set_rate       = &omap3_clkoutx2_set_rate,
        .recalc_rate    = &omap3_clkoutx2_recalc,
 +      .round_rate     = &omap3_clkoutx2_round_rate,
  };
  
  static const struct clk_ops dpll4_m5x2_ck_3630_ops = {
@@@ -3497,10 -3495,6 +3497,6 @@@ static struct omap_clk omap3xxx_clks[] 
        CLK(NULL,       "dss_tv_fck",   &dss_tv_fck),
        CLK(NULL,       "dss_96m_fck",  &dss_96m_fck),
        CLK(NULL,       "dss2_alwon_fck",       &dss2_alwon_fck),
-       CLK(NULL,       "utmi_p1_gfclk",        &dummy_ck),
-       CLK(NULL,       "utmi_p2_gfclk",        &dummy_ck),
-       CLK(NULL,       "xclk60mhsp1_ck",       &dummy_ck),
-       CLK(NULL,       "xclk60mhsp2_ck",       &dummy_ck),
        CLK(NULL,       "init_60m_fclk",        &dummy_ck),
        CLK(NULL,       "gpt1_fck",     &gpt1_fck),
        CLK(NULL,       "aes2_ick",     &aes2_ick),
index 9c7e23aa0e7f8bdf5d4d8b2f1a8d1f71ca2997fd,ad87f46eb7f04825b9c4bca3c32d4161a755aebf..a123ff0070bd65138394fa6248f611ef2cc10573
@@@ -1955,10 -1955,6 +1955,6 @@@ static struct omap_hwmod_class omap3xxx
        .sysc = &omap3xxx_usb_host_hs_sysc,
  };
  
- static struct omap_hwmod_opt_clk omap3xxx_usb_host_hs_opt_clks[] = {
-         { .role = "ehci_logic_fck", .clk = "usbhost_120m_fck", },
- };
  static struct omap_hwmod_irq_info omap3xxx_usb_host_hs_irqs[] = {
        { .name = "ohci-irq", .irq = 76 + OMAP_INTC_START, },
        { .name = "ehci-irq", .irq = 77 + OMAP_INTC_START, },
@@@ -1981,8 -1977,6 +1977,6 @@@ static struct omap_hwmod omap3xxx_usb_h
                        .idlest_stdby_bit = OMAP3430ES2_ST_USBHOST_STDBY_SHIFT,
                },
        },
-       .opt_clks       = omap3xxx_usb_host_hs_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(omap3xxx_usb_host_hs_opt_clks),
  
        /*
         * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
@@@ -3029,6 -3023,8 +3023,6 @@@ static struct omap_hwmod omap3xxx_mmu_i
        .flags          = HWMOD_NO_IDLEST,
  };
  
 -#ifdef CONFIG_OMAP_IOMMU_IVA2
 -
  /* mmu iva */
  
  static struct omap_mmu_dev_attr mmu_iva_dev_attr = {
@@@ -3068,22 -3064,20 +3062,22 @@@ static struct omap_hwmod omap3xxx_mmu_i
        .name           = "mmu_iva",
        .class          = &omap3xxx_mmu_hwmod_class,
        .mpu_irqs       = omap3xxx_mmu_iva_irqs,
 +      .clkdm_name     = "iva2_clkdm",
        .rst_lines      = omap3xxx_mmu_iva_resets,
        .rst_lines_cnt  = ARRAY_SIZE(omap3xxx_mmu_iva_resets),
        .main_clk       = "iva2_ck",
        .prcm = {
                .omap2 = {
                        .module_offs = OMAP3430_IVA2_MOD,
 +                      .module_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT,
 +                      .idlest_reg_id = 1,
 +                      .idlest_idle_bit = OMAP3430_ST_IVA2_SHIFT,
                },
        },
        .dev_attr       = &mmu_iva_dev_attr,
        .flags          = HWMOD_NO_IDLEST,
  };
  
 -#endif
 -
  /* l4_per -> gpio4 */
  static struct omap_hwmod_addr_space omap3xxx_gpio4_addrs[] = {
        {
@@@ -3855,7 -3849,9 +3849,7 @@@ static struct omap_hwmod_ocp_if *omap34
        &omap3xxx_l4_core__hdq1w,
        &omap3xxx_sad2d__l3,
        &omap3xxx_l4_core__mmu_isp,
 -#ifdef CONFIG_OMAP_IOMMU_IVA2
        &omap3xxx_l3_main__mmu_iva,
 -#endif
        &omap34xx_l4_core__ssi,
        NULL
  };
@@@ -3879,7 -3875,9 +3873,7 @@@ static struct omap_hwmod_ocp_if *omap36
        &omap3xxx_l4_core__hdq1w,
        &omap3xxx_sad2d__l3,
        &omap3xxx_l4_core__mmu_isp,
 -#ifdef CONFIG_OMAP_IOMMU_IVA2
        &omap3xxx_l3_main__mmu_iva,
 -#endif
        NULL
  };
  
diff --combined drivers/iio/adc/Kconfig
index 4bf4c16de976be31f811ef8d367510c7dc530d8d,427f75c4f69ef03c6c90d8c0c087d1f984c7842b..d86196cfe4b47091add5d756da6d3dbf7fded9eb
@@@ -155,16 -155,6 +155,16 @@@ config MCP342
          This driver can also be built as a module. If so, the module will be
          called mcp3422.
  
 +config MEN_Z188_ADC
 +      tristate "MEN 16z188 ADC IP Core support"
 +      depends on MCB
 +      help
 +        Say yes here to enable support for the MEN 16z188 ADC IP-Core on a MCB
 +        carrier.
 +
 +        This driver can also be built as a module. If so, the module will be
 +        called men_z188_adc.
 +
  config NAU7802
        tristate "Nuvoton NAU7802 ADC driver"
        depends on I2C
@@@ -193,6 -183,16 +193,16 @@@ config TI_AM335X_AD
          Say yes here to build support for Texas Instruments ADC
          driver which is also a MFD client.
  
+ config TWL4030_MADC
+       tristate "TWL4030 MADC (Monitoring A/D Converter)"
+       depends on TWL4030_CORE
+       help
+       This driver provides support for Triton TWL4030-MADC. The
+       driver supports both RT and SW conversion methods.
+       This driver can also be built as a module. If so, the module will be
+       called twl4030-madc.
  config TWL6030_GPADC
        tristate "TWL6030 GPADC (General Purpose A/D Converter) Support"
        depends on TWL4030_CORE
          This driver can also be built as a module. If so, the module will be
          called twl6030-gpadc.
  
 +config VF610_ADC
 +      tristate "Freescale vf610 ADC driver"
 +      depends on OF
 +      help
 +        Say yes here to support for Vybrid board analog-to-digital converter.
 +        Since the IP is used for i.MX6SLX, the driver also support i.MX6SLX.
 +
 +        This driver can also be built as a module. If so, the module will be
 +        called vf610_adc.
 +
  config VIPERBOARD_ADC
        tristate "Viperboard ADC support"
        depends on MFD_VIPERBOARD && USB
          Say yes here to access the ADC part of the Nano River
          Technologies Viperboard.
  
 +config XILINX_XADC
 +      tristate "Xilinx XADC driver"
 +      depends on ARCH_ZYNQ || MICROBLAZE || COMPILE_TEST
 +      depends on HAS_IOMEM
 +      select IIO_BUFFER
 +      select IIO_TRIGGERED_BUFFER
 +      help
 +        Say yes here to have support for the Xilinx XADC. The driver does support
 +        both the ZYNQ interface to the XADC as well as the AXI-XADC interface.
 +
 +        The driver can also be build as a module. If so, the module will be called
 +        xilinx-xadc.
 +
  endmenu
diff --combined drivers/iio/adc/Makefile
index bb252540664ae15a6f74730226415f838e0d0434,9acf2df2c1a8e32f566c921d07514cdff906d13d..ab346d88c68874e2ac06dc6f2911ef1ec6cf0f25
@@@ -17,12 -17,9 +17,13 @@@ obj-$(CONFIG_LP8788_ADC) += lp8788_adc.
  obj-$(CONFIG_MAX1363) += max1363.o
  obj-$(CONFIG_MCP320X) += mcp320x.o
  obj-$(CONFIG_MCP3422) += mcp3422.o
 +obj-$(CONFIG_MEN_Z188_ADC) += men_z188_adc.o
  obj-$(CONFIG_NAU7802) += nau7802.o
  obj-$(CONFIG_TI_ADC081C) += ti-adc081c.o
  obj-$(CONFIG_TI_AM335X_ADC) += ti_am335x_adc.o
+ obj-$(CONFIG_TWL4030_MADC) += twl4030-madc.o
  obj-$(CONFIG_TWL6030_GPADC) += twl6030-gpadc.o
 +obj-$(CONFIG_VF610_ADC) += vf610_adc.o
  obj-$(CONFIG_VIPERBOARD_ADC) += viperboard_adc.o
 +xilinx-xadc-y := xilinx-xadc-core.o xilinx-xadc-events.o
 +obj-$(CONFIG_XILINX_XADC) += xilinx-xadc.o
index bffc584e4a4355f25f565ae6d0aa77244e556238,a856ac720827fa363e728dba488571db973ae1fe..070f8cfbbd7aa7c5f7d043178948fda4cea852b8
@@@ -73,6 -73,7 +73,7 @@@ static const struct reg_default wm5102_
        { 0x171, 0x0000 },
        { 0x35E, 0x000C },
        { 0x2D4, 0x0000 },
+       { 0x4DC, 0x0900 },
        { 0x80, 0x0000 },
  };
  
@@@ -80,7 -81,8 +81,7 @@@
  int wm5102_patch(struct arizona *arizona)
  {
        const struct reg_default *wm5102_patch;
 -      int ret = 0;
 -      int i, patch_size;
 +      int patch_size;
  
        switch (arizona->rev) {
        case 0:
                patch_size = ARRAY_SIZE(wm5102_revb_patch);
        }
  
 -      regcache_cache_bypass(arizona->regmap, true);
 -
 -      for (i = 0; i < patch_size; i++) {
 -              ret = regmap_write(arizona->regmap, wm5102_patch[i].reg,
 -                                 wm5102_patch[i].def);
 -              if (ret != 0) {
 -                      dev_err(arizona->dev, "Failed to write %x = %x: %d\n",
 -                              wm5102_patch[i].reg, wm5102_patch[i].def, ret);
 -                      goto out;
 -              }
 -      }
 -
 -out:
 -      regcache_cache_bypass(arizona->regmap, false);
 -      return ret;
 +      return regmap_multi_reg_write_bypassed(arizona->regmap,
 +                                             wm5102_patch,
 +                                             patch_size);
  }
  
  static const struct regmap_irq wm5102_aod_irqs[ARIZONA_NUM_IRQ] = {
@@@ -1839,6 -1853,23 +1840,23 @@@ static bool wm5102_readable_register(st
        case ARIZONA_DSP1_STATUS_1:
        case ARIZONA_DSP1_STATUS_2:
        case ARIZONA_DSP1_STATUS_3:
+       case ARIZONA_DSP1_WDMA_BUFFER_1:
+       case ARIZONA_DSP1_WDMA_BUFFER_2:
+       case ARIZONA_DSP1_WDMA_BUFFER_3:
+       case ARIZONA_DSP1_WDMA_BUFFER_4:
+       case ARIZONA_DSP1_WDMA_BUFFER_5:
+       case ARIZONA_DSP1_WDMA_BUFFER_6:
+       case ARIZONA_DSP1_WDMA_BUFFER_7:
+       case ARIZONA_DSP1_WDMA_BUFFER_8:
+       case ARIZONA_DSP1_RDMA_BUFFER_1:
+       case ARIZONA_DSP1_RDMA_BUFFER_2:
+       case ARIZONA_DSP1_RDMA_BUFFER_3:
+       case ARIZONA_DSP1_RDMA_BUFFER_4:
+       case ARIZONA_DSP1_RDMA_BUFFER_5:
+       case ARIZONA_DSP1_RDMA_BUFFER_6:
+       case ARIZONA_DSP1_WDMA_CONFIG_1:
+       case ARIZONA_DSP1_WDMA_CONFIG_2:
+       case ARIZONA_DSP1_RDMA_CONFIG_1:
        case ARIZONA_DSP1_SCRATCH_0:
        case ARIZONA_DSP1_SCRATCH_1:
        case ARIZONA_DSP1_SCRATCH_2:
@@@ -1894,9 -1925,27 +1912,27 @@@ static bool wm5102_volatile_register(st
        case ARIZONA_AOD_IRQ1:
        case ARIZONA_AOD_IRQ2:
        case ARIZONA_AOD_IRQ_RAW_STATUS:
+       case ARIZONA_DSP1_CLOCKING_1:
        case ARIZONA_DSP1_STATUS_1:
        case ARIZONA_DSP1_STATUS_2:
        case ARIZONA_DSP1_STATUS_3:
+       case ARIZONA_DSP1_WDMA_BUFFER_1:
+       case ARIZONA_DSP1_WDMA_BUFFER_2:
+       case ARIZONA_DSP1_WDMA_BUFFER_3:
+       case ARIZONA_DSP1_WDMA_BUFFER_4:
+       case ARIZONA_DSP1_WDMA_BUFFER_5:
+       case ARIZONA_DSP1_WDMA_BUFFER_6:
+       case ARIZONA_DSP1_WDMA_BUFFER_7:
+       case ARIZONA_DSP1_WDMA_BUFFER_8:
+       case ARIZONA_DSP1_RDMA_BUFFER_1:
+       case ARIZONA_DSP1_RDMA_BUFFER_2:
+       case ARIZONA_DSP1_RDMA_BUFFER_3:
+       case ARIZONA_DSP1_RDMA_BUFFER_4:
+       case ARIZONA_DSP1_RDMA_BUFFER_5:
+       case ARIZONA_DSP1_RDMA_BUFFER_6:
+       case ARIZONA_DSP1_WDMA_CONFIG_1:
+       case ARIZONA_DSP1_WDMA_CONFIG_2:
+       case ARIZONA_DSP1_RDMA_CONFIG_1:
        case ARIZONA_DSP1_SCRATCH_0:
        case ARIZONA_DSP1_SCRATCH_1:
        case ARIZONA_DSP1_SCRATCH_2:
index 0e6c0333f775775aa776902cff248abddd9e3a5e,6d5928ffe604056a24157a3dc12a6d4df7708622..0ba1b7c997603e43fd24a99fc2e97f689f0515a9
@@@ -48,7 -48,7 +48,7 @@@
  
  /* Module and version information */
  #define DRV_NAME      "iTCO_wdt"
- #define DRV_VERSION   "1.10"
+ #define DRV_VERSION   "1.11"
  
  /* Includes */
  #include <linux/module.h>             /* For module specific items */
@@@ -92,9 -92,12 +92,12 @@@ static struct {             /* this is private dat
        unsigned int iTCO_version;
        struct resource *tco_res;
        struct resource *smi_res;
-       struct resource *gcs_res;
-       /* NO_REBOOT flag is Memory-Mapped GCS register bit 5 (TCO version 2)*/
-       unsigned long __iomem *gcs;
+       /*
+        * NO_REBOOT flag is Memory-Mapped GCS register bit 5 (TCO version 2),
+        * or memory-mapped PMC register bit 4 (TCO version 3).
+        */
+       struct resource *gcs_pmc_res;
+       unsigned long __iomem *gcs_pmc;
        /* the lock for io operations */
        spinlock_t io_lock;
        struct platform_device *dev;
@@@ -125,11 -128,19 +128,19 @@@ MODULE_PARM_DESC(turn_SMI_watchdog_clea
   * Some TCO specific functions
   */
  
- static inline unsigned int seconds_to_ticks(int seconds)
+ /*
+  * The iTCO v1 and v2's internal timer is stored as ticks which decrement
+  * every 0.6 seconds.  v3's internal timer is stored as seconds (some
+  * datasheets incorrectly state 0.6 seconds).
+  */
+ static inline unsigned int seconds_to_ticks(int secs)
  {
-       /* the internal timer is stored as ticks which decrement
-        * every 0.6 seconds */
-       return (seconds * 10) / 6;
+       return iTCO_wdt_private.iTCO_version == 3 ? secs : (secs * 10) / 6;
+ }
+ static inline unsigned int ticks_to_seconds(int ticks)
+ {
+       return iTCO_wdt_private.iTCO_version == 3 ? ticks : (ticks * 6) / 10;
  }
  
  static void iTCO_wdt_set_NO_REBOOT_bit(void)
        u32 val32;
  
        /* Set the NO_REBOOT bit: this disables reboots */
-       if (iTCO_wdt_private.iTCO_version == 2) {
-               val32 = readl(iTCO_wdt_private.gcs);
+       if (iTCO_wdt_private.iTCO_version == 3) {
+               val32 = readl(iTCO_wdt_private.gcs_pmc);
+               val32 |= 0x00000010;
+               writel(val32, iTCO_wdt_private.gcs_pmc);
+       } else if (iTCO_wdt_private.iTCO_version == 2) {
+               val32 = readl(iTCO_wdt_private.gcs_pmc);
                val32 |= 0x00000020;
-               writel(val32, iTCO_wdt_private.gcs);
+               writel(val32, iTCO_wdt_private.gcs_pmc);
        } else if (iTCO_wdt_private.iTCO_version == 1) {
                pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32);
                val32 |= 0x00000002;
@@@ -154,12 -169,20 +169,20 @@@ static int iTCO_wdt_unset_NO_REBOOT_bit
        u32 val32;
  
        /* Unset the NO_REBOOT bit: this enables reboots */
-       if (iTCO_wdt_private.iTCO_version == 2) {
-               val32 = readl(iTCO_wdt_private.gcs);
+       if (iTCO_wdt_private.iTCO_version == 3) {
+               val32 = readl(iTCO_wdt_private.gcs_pmc);
+               val32 &= 0xffffffef;
+               writel(val32, iTCO_wdt_private.gcs_pmc);
+               val32 = readl(iTCO_wdt_private.gcs_pmc);
+               if (val32 & 0x00000010)
+                       ret = -EIO;
+       } else if (iTCO_wdt_private.iTCO_version == 2) {
+               val32 = readl(iTCO_wdt_private.gcs_pmc);
                val32 &= 0xffffffdf;
-               writel(val32, iTCO_wdt_private.gcs);
+               writel(val32, iTCO_wdt_private.gcs_pmc);
  
-               val32 = readl(iTCO_wdt_private.gcs);
+               val32 = readl(iTCO_wdt_private.gcs_pmc);
                if (val32 & 0x00000020)
                        ret = -EIO;
        } else if (iTCO_wdt_private.iTCO_version == 1) {
@@@ -192,7 -215,7 +215,7 @@@ static int iTCO_wdt_start(struct watchd
  
        /* Force the timer to its reload value by writing to the TCO_RLD
           register */
-       if (iTCO_wdt_private.iTCO_version == 2)
+       if (iTCO_wdt_private.iTCO_version >= 2)
                outw(0x01, TCO_RLD);
        else if (iTCO_wdt_private.iTCO_version == 1)
                outb(0x01, TCO_RLD);
@@@ -240,9 -263,9 +263,9 @@@ static int iTCO_wdt_ping(struct watchdo
        iTCO_vendor_pre_keepalive(iTCO_wdt_private.smi_res, wd_dev->timeout);
  
        /* Reload the timer by writing to the TCO Timer Counter register */
-       if (iTCO_wdt_private.iTCO_version == 2)
+       if (iTCO_wdt_private.iTCO_version >= 2) {
                outw(0x01, TCO_RLD);
-       else if (iTCO_wdt_private.iTCO_version == 1) {
+       else if (iTCO_wdt_private.iTCO_version == 1) {
                /* Reset the timeout status bit so that the timer
                 * needs to count down twice again before rebooting */
                outw(0x0008, TCO1_STS); /* write 1 to clear bit */
@@@ -270,14 -293,14 +293,14 @@@ static int iTCO_wdt_set_timeout(struct 
        /* "Values of 0h-3h are ignored and should not be attempted" */
        if (tmrval < 0x04)
                return -EINVAL;
-       if (((iTCO_wdt_private.iTCO_version == 2) && (tmrval > 0x3ff)) ||
+       if (((iTCO_wdt_private.iTCO_version >= 2) && (tmrval > 0x3ff)) ||
            ((iTCO_wdt_private.iTCO_version == 1) && (tmrval > 0x03f)))
                return -EINVAL;
  
        iTCO_vendor_pre_set_heartbeat(tmrval);
  
        /* Write new heartbeat to watchdog */
-       if (iTCO_wdt_private.iTCO_version == 2) {
+       if (iTCO_wdt_private.iTCO_version >= 2) {
                spin_lock(&iTCO_wdt_private.io_lock);
                val16 = inw(TCOv2_TMR);
                val16 &= 0xfc00;
@@@ -312,13 -335,13 +335,13 @@@ static unsigned int iTCO_wdt_get_timele
        unsigned int time_left = 0;
  
        /* read the TCO Timer */
-       if (iTCO_wdt_private.iTCO_version == 2) {
+       if (iTCO_wdt_private.iTCO_version >= 2) {
                spin_lock(&iTCO_wdt_private.io_lock);
                val16 = inw(TCO_RLD);
                val16 &= 0x3ff;
                spin_unlock(&iTCO_wdt_private.io_lock);
  
-               time_left = (val16 * 6) / 10;
+               time_left = ticks_to_seconds(val16);
        } else if (iTCO_wdt_private.iTCO_version == 1) {
                spin_lock(&iTCO_wdt_private.io_lock);
                val8 = inb(TCO_RLD);
                        val8 += (inb(TCOv1_TMR) & 0x3f);
                spin_unlock(&iTCO_wdt_private.io_lock);
  
-               time_left = (val8 * 6) / 10;
+               time_left = ticks_to_seconds(val8);
        }
        return time_left;
  }
@@@ -347,15 -370,15 +370,15 @@@ static const struct watchdog_info iden
  static const struct watchdog_ops iTCO_wdt_ops = {
        .owner =                THIS_MODULE,
        .start =                iTCO_wdt_start,
 -      .stop =                 iTCO_wdt_stop,
 -      .ping =                 iTCO_wdt_ping,
 +      .stop =                 iTCO_wdt_stop,
 +      .ping =                 iTCO_wdt_ping,
        .set_timeout =          iTCO_wdt_set_timeout,
        .get_timeleft =         iTCO_wdt_get_timeleft,
  };
  
  static struct watchdog_device iTCO_wdt_watchdog_dev = {
        .info =         &ident,
 -      .ops =          &iTCO_wdt_ops,
 +      .ops =          &iTCO_wdt_ops,
  };
  
  /*
@@@ -376,16 -399,16 +399,16 @@@ static void iTCO_wdt_cleanup(void
                        resource_size(iTCO_wdt_private.tco_res));
        release_region(iTCO_wdt_private.smi_res->start,
                        resource_size(iTCO_wdt_private.smi_res));
-       if (iTCO_wdt_private.iTCO_version == 2) {
-               iounmap(iTCO_wdt_private.gcs);
-               release_mem_region(iTCO_wdt_private.gcs_res->start,
-                               resource_size(iTCO_wdt_private.gcs_res));
+       if (iTCO_wdt_private.iTCO_version >= 2) {
+               iounmap(iTCO_wdt_private.gcs_pmc);
+               release_mem_region(iTCO_wdt_private.gcs_pmc_res->start,
+                               resource_size(iTCO_wdt_private.gcs_pmc_res));
        }
  
        iTCO_wdt_private.tco_res = NULL;
        iTCO_wdt_private.smi_res = NULL;
-       iTCO_wdt_private.gcs_res = NULL;
-       iTCO_wdt_private.gcs = NULL;
+       iTCO_wdt_private.gcs_pmc_res = NULL;
+       iTCO_wdt_private.gcs_pmc = NULL;
  }
  
  static int iTCO_wdt_probe(struct platform_device *dev)
        iTCO_wdt_private.pdev = to_pci_dev(dev->dev.parent);
  
        /*
-        * Get the Memory-Mapped GCS register, we need it for the
-        * NO_REBOOT flag (TCO v2).
+        * Get the Memory-Mapped GCS or PMC register, we need it for the
+        * NO_REBOOT flag (TCO v2 and v3).
         */
-       if (iTCO_wdt_private.iTCO_version == 2) {
-               iTCO_wdt_private.gcs_res = platform_get_resource(dev,
+       if (iTCO_wdt_private.iTCO_version >= 2) {
+               iTCO_wdt_private.gcs_pmc_res = platform_get_resource(dev,
                                                        IORESOURCE_MEM,
-                                                       ICH_RES_MEM_GCS);
+                                                       ICH_RES_MEM_GCS_PMC);
  
-               if (!iTCO_wdt_private.gcs_res)
+               if (!iTCO_wdt_private.gcs_pmc_res)
                        goto out;
  
-               if (!request_mem_region(iTCO_wdt_private.gcs_res->start,
-                       resource_size(iTCO_wdt_private.gcs_res), dev->name)) {
+               if (!request_mem_region(iTCO_wdt_private.gcs_pmc_res->start,
+                       resource_size(iTCO_wdt_private.gcs_pmc_res), dev->name)) {
                        ret = -EBUSY;
                        goto out;
                }
-               iTCO_wdt_private.gcs = ioremap(iTCO_wdt_private.gcs_res->start,
-                       resource_size(iTCO_wdt_private.gcs_res));
-               if (!iTCO_wdt_private.gcs) {
+               iTCO_wdt_private.gcs_pmc = ioremap(iTCO_wdt_private.gcs_pmc_res->start,
+                       resource_size(iTCO_wdt_private.gcs_pmc_res));
+               if (!iTCO_wdt_private.gcs_pmc) {
                        ret = -EIO;
-                       goto unreg_gcs;
+                       goto unreg_gcs_pmc;
                }
        }
  
        if (iTCO_wdt_unset_NO_REBOOT_bit() && iTCO_vendor_check_noreboot_on()) {
                pr_info("unable to reset NO_REBOOT flag, device disabled by hardware/BIOS\n");
                ret = -ENODEV;  /* Cannot reset NO_REBOOT bit */
-               goto unmap_gcs;
+               goto unmap_gcs_pmc;
        }
  
        /* Set the NO_REBOOT bit to prevent later reboots, just for sure */
                pr_err("I/O address 0x%04llx already in use, device disabled\n",
                       (u64)SMI_EN);
                ret = -EBUSY;
-               goto unmap_gcs;
+               goto unmap_gcs_pmc;
        }
        if (turn_SMI_watchdog_clear_off >= iTCO_wdt_private.iTCO_version) {
                /*
                ich_info->name, ich_info->iTCO_version, (u64)TCOBASE);
  
        /* Clear out the (probably old) status */
-       outw(0x0008, TCO1_STS); /* Clear the Time Out Status bit */
-       outw(0x0002, TCO2_STS); /* Clear SECOND_TO_STS bit */
-       outw(0x0004, TCO2_STS); /* Clear BOOT_STS bit */
+       if (iTCO_wdt_private.iTCO_version == 3) {
+               outl(0x20008, TCO1_STS);
+       } else {
+               outw(0x0008, TCO1_STS); /* Clear the Time Out Status bit */
+               outw(0x0002, TCO2_STS); /* Clear SECOND_TO_STS bit */
+               outw(0x0004, TCO2_STS); /* Clear BOOT_STS bit */
+       }
  
        iTCO_wdt_watchdog_dev.bootstatus = 0;
        iTCO_wdt_watchdog_dev.timeout = WATCHDOG_TIMEOUT;
        watchdog_set_nowayout(&iTCO_wdt_watchdog_dev, nowayout);
 -      iTCO_wdt_watchdog_dev.parent = dev->dev.parent;
 +      iTCO_wdt_watchdog_dev.parent = &dev->dev;
  
        /* Make sure the watchdog is not running */
        iTCO_wdt_stop(&iTCO_wdt_watchdog_dev);
@@@ -515,18 -542,18 +542,18 @@@ unreg_tco
  unreg_smi:
        release_region(iTCO_wdt_private.smi_res->start,
                        resource_size(iTCO_wdt_private.smi_res));
- unmap_gcs:
-       if (iTCO_wdt_private.iTCO_version == 2)
-               iounmap(iTCO_wdt_private.gcs);
- unreg_gcs:
-       if (iTCO_wdt_private.iTCO_version == 2)
-               release_mem_region(iTCO_wdt_private.gcs_res->start,
-                               resource_size(iTCO_wdt_private.gcs_res));
+ unmap_gcs_pmc:
+       if (iTCO_wdt_private.iTCO_version >= 2)
+               iounmap(iTCO_wdt_private.gcs_pmc);
+ unreg_gcs_pmc:
+       if (iTCO_wdt_private.iTCO_version >= 2)
+               release_mem_region(iTCO_wdt_private.gcs_pmc_res->start,
+                               resource_size(iTCO_wdt_private.gcs_pmc_res));
  out:
        iTCO_wdt_private.tco_res = NULL;
        iTCO_wdt_private.smi_res = NULL;
-       iTCO_wdt_private.gcs_res = NULL;
-       iTCO_wdt_private.gcs = NULL;
+       iTCO_wdt_private.gcs_pmc_res = NULL;
+       iTCO_wdt_private.gcs_pmc = NULL;
  
        return ret;
  }
index 3ddaa634b19d45102de7579169a5c50d05abe74b,90d57aec34e7e706c8576e6bf1cf850543184347..7b35c21170d5938e86eda0d4541057bca0ede81b
  #define ARIZONA_DSP1_STATUS_1                    0x1104
  #define ARIZONA_DSP1_STATUS_2                    0x1105
  #define ARIZONA_DSP1_STATUS_3                    0x1106
+ #define ARIZONA_DSP1_STATUS_4                    0x1107
+ #define ARIZONA_DSP1_WDMA_BUFFER_1               0x1110
+ #define ARIZONA_DSP1_WDMA_BUFFER_2               0x1111
+ #define ARIZONA_DSP1_WDMA_BUFFER_3               0x1112
+ #define ARIZONA_DSP1_WDMA_BUFFER_4               0x1113
+ #define ARIZONA_DSP1_WDMA_BUFFER_5               0x1114
+ #define ARIZONA_DSP1_WDMA_BUFFER_6               0x1115
+ #define ARIZONA_DSP1_WDMA_BUFFER_7               0x1116
+ #define ARIZONA_DSP1_WDMA_BUFFER_8               0x1117
+ #define ARIZONA_DSP1_RDMA_BUFFER_1               0x1120
+ #define ARIZONA_DSP1_RDMA_BUFFER_2               0x1121
+ #define ARIZONA_DSP1_RDMA_BUFFER_3               0x1122
+ #define ARIZONA_DSP1_RDMA_BUFFER_4               0x1123
+ #define ARIZONA_DSP1_RDMA_BUFFER_5               0x1124
+ #define ARIZONA_DSP1_RDMA_BUFFER_6               0x1125
+ #define ARIZONA_DSP1_WDMA_CONFIG_1               0x1130
+ #define ARIZONA_DSP1_WDMA_CONFIG_2               0x1131
+ #define ARIZONA_DSP1_WDMA_OFFSET_1               0x1132
+ #define ARIZONA_DSP1_RDMA_CONFIG_1               0x1134
+ #define ARIZONA_DSP1_RDMA_OFFSET_1               0x1135
+ #define ARIZONA_DSP1_EXTERNAL_START_SELECT_1     0x1138
  #define ARIZONA_DSP1_SCRATCH_0                   0x1140
  #define ARIZONA_DSP1_SCRATCH_1                   0x1141
  #define ARIZONA_DSP1_SCRATCH_2                   0x1142
  #define ARIZONA_DSP2_STATUS_1                    0x1204
  #define ARIZONA_DSP2_STATUS_2                    0x1205
  #define ARIZONA_DSP2_STATUS_3                    0x1206
+ #define ARIZONA_DSP2_STATUS_4                    0x1207
+ #define ARIZONA_DSP2_WDMA_BUFFER_1               0x1210
+ #define ARIZONA_DSP2_WDMA_BUFFER_2               0x1211
+ #define ARIZONA_DSP2_WDMA_BUFFER_3               0x1212
+ #define ARIZONA_DSP2_WDMA_BUFFER_4               0x1213
+ #define ARIZONA_DSP2_WDMA_BUFFER_5               0x1214
+ #define ARIZONA_DSP2_WDMA_BUFFER_6               0x1215
+ #define ARIZONA_DSP2_WDMA_BUFFER_7               0x1216
+ #define ARIZONA_DSP2_WDMA_BUFFER_8               0x1217
+ #define ARIZONA_DSP2_RDMA_BUFFER_1               0x1220
+ #define ARIZONA_DSP2_RDMA_BUFFER_2               0x1221
+ #define ARIZONA_DSP2_RDMA_BUFFER_3               0x1222
+ #define ARIZONA_DSP2_RDMA_BUFFER_4               0x1223
+ #define ARIZONA_DSP2_RDMA_BUFFER_5               0x1224
+ #define ARIZONA_DSP2_RDMA_BUFFER_6               0x1225
+ #define ARIZONA_DSP2_WDMA_CONFIG_1               0x1230
+ #define ARIZONA_DSP2_WDMA_CONFIG_2               0x1231
+ #define ARIZONA_DSP2_WDMA_OFFSET_1               0x1232
+ #define ARIZONA_DSP2_RDMA_CONFIG_1               0x1234
+ #define ARIZONA_DSP2_RDMA_OFFSET_1               0x1235
+ #define ARIZONA_DSP2_EXTERNAL_START_SELECT_1     0x1238
  #define ARIZONA_DSP2_SCRATCH_0                   0x1240
  #define ARIZONA_DSP2_SCRATCH_1                   0x1241
  #define ARIZONA_DSP2_SCRATCH_2                   0x1242
  #define ARIZONA_DSP3_STATUS_1                    0x1304
  #define ARIZONA_DSP3_STATUS_2                    0x1305
  #define ARIZONA_DSP3_STATUS_3                    0x1306
+ #define ARIZONA_DSP3_STATUS_4                    0x1307
+ #define ARIZONA_DSP3_WDMA_BUFFER_1               0x1310
+ #define ARIZONA_DSP3_WDMA_BUFFER_2               0x1311
+ #define ARIZONA_DSP3_WDMA_BUFFER_3               0x1312
+ #define ARIZONA_DSP3_WDMA_BUFFER_4               0x1313
+ #define ARIZONA_DSP3_WDMA_BUFFER_5               0x1314
+ #define ARIZONA_DSP3_WDMA_BUFFER_6               0x1315
+ #define ARIZONA_DSP3_WDMA_BUFFER_7               0x1316
+ #define ARIZONA_DSP3_WDMA_BUFFER_8               0x1317
+ #define ARIZONA_DSP3_RDMA_BUFFER_1               0x1320
+ #define ARIZONA_DSP3_RDMA_BUFFER_2               0x1321
+ #define ARIZONA_DSP3_RDMA_BUFFER_3               0x1322
+ #define ARIZONA_DSP3_RDMA_BUFFER_4               0x1323
+ #define ARIZONA_DSP3_RDMA_BUFFER_5               0x1324
+ #define ARIZONA_DSP3_RDMA_BUFFER_6               0x1325
+ #define ARIZONA_DSP3_WDMA_CONFIG_1               0x1330
+ #define ARIZONA_DSP3_WDMA_CONFIG_2               0x1331
+ #define ARIZONA_DSP3_WDMA_OFFSET_1               0x1332
+ #define ARIZONA_DSP3_RDMA_CONFIG_1               0x1334
+ #define ARIZONA_DSP3_RDMA_OFFSET_1               0x1335
+ #define ARIZONA_DSP3_EXTERNAL_START_SELECT_1     0x1338
  #define ARIZONA_DSP3_SCRATCH_0                   0x1340
  #define ARIZONA_DSP3_SCRATCH_1                   0x1341
  #define ARIZONA_DSP3_SCRATCH_2                   0x1342
  #define ARIZONA_DSP4_STATUS_1                    0x1404
  #define ARIZONA_DSP4_STATUS_2                    0x1405
  #define ARIZONA_DSP4_STATUS_3                    0x1406
+ #define ARIZONA_DSP4_STATUS_4                    0x1407
+ #define ARIZONA_DSP4_WDMA_BUFFER_1               0x1410
+ #define ARIZONA_DSP4_WDMA_BUFFER_2               0x1411
+ #define ARIZONA_DSP4_WDMA_BUFFER_3               0x1412
+ #define ARIZONA_DSP4_WDMA_BUFFER_4               0x1413
+ #define ARIZONA_DSP4_WDMA_BUFFER_5               0x1414
+ #define ARIZONA_DSP4_WDMA_BUFFER_6               0x1415
+ #define ARIZONA_DSP4_WDMA_BUFFER_7               0x1416
+ #define ARIZONA_DSP4_WDMA_BUFFER_8               0x1417
+ #define ARIZONA_DSP4_RDMA_BUFFER_1               0x1420
+ #define ARIZONA_DSP4_RDMA_BUFFER_2               0x1421
+ #define ARIZONA_DSP4_RDMA_BUFFER_3               0x1422
+ #define ARIZONA_DSP4_RDMA_BUFFER_4               0x1423
+ #define ARIZONA_DSP4_RDMA_BUFFER_5               0x1424
+ #define ARIZONA_DSP4_RDMA_BUFFER_6               0x1425
+ #define ARIZONA_DSP4_WDMA_CONFIG_1               0x1430
+ #define ARIZONA_DSP4_WDMA_CONFIG_2               0x1431
+ #define ARIZONA_DSP4_WDMA_OFFSET_1               0x1432
+ #define ARIZONA_DSP4_RDMA_CONFIG_1               0x1434
+ #define ARIZONA_DSP4_RDMA_OFFSET_1               0x1435
+ #define ARIZONA_DSP4_EXTERNAL_START_SELECT_1     0x1438
  #define ARIZONA_DSP4_SCRATCH_0                   0x1440
  #define ARIZONA_DSP4_SCRATCH_1                   0x1441
  #define ARIZONA_DSP4_SCRATCH_2                   0x1442
  /*
   * R373 (0x175) - FLL1 Control 5
   */
 -#define ARIZONA_FLL1_FRATIO_MASK                 0x0700  /* FLL1_FRATIO - [10:8] */
 -#define ARIZONA_FLL1_FRATIO_SHIFT                     8  /* FLL1_FRATIO - [10:8] */
 -#define ARIZONA_FLL1_FRATIO_WIDTH                     3  /* FLL1_FRATIO - [10:8] */
 +#define ARIZONA_FLL1_FRATIO_MASK                 0x0F00  /* FLL1_FRATIO - [11:8] */
 +#define ARIZONA_FLL1_FRATIO_SHIFT                     8  /* FLL1_FRATIO - [11:8] */
 +#define ARIZONA_FLL1_FRATIO_WIDTH                     4  /* FLL1_FRATIO - [11:8] */
  #define ARIZONA_FLL1_OUTDIV_MASK                 0x000E  /* FLL1_OUTDIV - [3:1] */
  #define ARIZONA_FLL1_OUTDIV_SHIFT                     1  /* FLL1_OUTDIV - [3:1] */
  #define ARIZONA_FLL1_OUTDIV_WIDTH                     3  /* FLL1_OUTDIV - [3:1] */
This page took 0.146821 seconds and 4 git commands to generate.