diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-30 15:41:17 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-30 15:41:17 -0400 |
| commit | 3e701cdfe601306817604ca7f79f1d1c1088007c (patch) | |
| tree | 1b0a4088a091f035d8be06758a604ca449223fc0 | |
| parent | 7d3d09b01a028e9dd1282149fdcd2a6e0edd73e4 (diff) | |
| parent | 3c1534c7ecffeb4330bba4c55d17f301528195b6 (diff) | |
Merge tag 'mfd-3.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
Pull MFD bits from Samuel Ortiz:
"We have support for a few new drivers:
- Samsung s2mps11
- Wolfson Microelectronics wm5102 and wm5110
- Marvell 88PM800 and 88PM805
- TI twl6041
We also have our regular driver improvements:
- Device tree and IRQ domain support for STE AB8500
- Regmap and devm_* API conversion for TI tps6586x
- Device tree support for Samsung max77686
- devm_* API conversion for STE AB3100
Besides that, quite a lot of fixing and cleanup for mc13xxx, tps65910,
tps65090, da9052 and twl-core."
Fix up mostly trivial conflicts, with the exception of
drivers/usb/host/ehci-omap.c in particular, which had some
re-organization of the reset sequence (commit 1a49e2ac9651: "EHCI:
centralize controller initialization") that clashed with commit
2761a6394516 ("mfd: USB: Fix the omap-usb EHCI ULPI PHY reset fix
issues").
In particular, commit 2761a6394516 moved the usb_add_hcd() to the
*middle* of the reset sequence, which clashes fairly badly with the
reset sequence re-organization (although it could have been done inside
the new omap_ehci_init() function).
I left that part of commit 2761a6394516 just undone.
* tag 'mfd-3.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (110 commits)
mfd: Ensure AB8500 platform data is passed through db8500-prcmu to MFD Core
mfd: Arizone core should select MFD_CORE
mfd: Fix arizona-irq.c build by selecting REGMAP_IRQ
mfd: Add debug trace on entering and leaving arizone runtime suspend
mfd: Correct tps65090 cell names
mfd: Remove gpio support from tps6586x core driver
ARM: tegra: defconfig: Enable tps6586x gpio
gpio: tps6586x: Add gpio support through platform driver
mfd: Cache tps6586x register through regmap
mfd: Use regmap for tps6586x register access.
mfd: Use devm managed resources for tps6586x
input: Add onkey support for 88PM80X PMIC
mfd: Add support for twl6041
mfd: Fix twl6040 revision information
mfd: Matches should be NULL when populate anatop child devices
input: ab8500-ponkey: Create AB8500 domain IRQ mapping
mfd: Add missing out of memory check for pcf50633
Documentation: Describe the AB8500 Device Tree bindings
mfd: Add tps65910 32-kHz-crystal-input init
mfd: Drop modifying mc13xxx driver's id_table in probe
...
107 files changed, 17915 insertions, 5391 deletions
diff --git a/Documentation/devicetree/bindings/mfd/ab8500.txt b/Documentation/devicetree/bindings/mfd/ab8500.txt new file mode 100644 index 000000000000..69e757a657a0 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/ab8500.txt | |||
| @@ -0,0 +1,123 @@ | |||
| 1 | * AB8500 Multi-Functional Device (MFD) | ||
| 2 | |||
| 3 | Required parent device properties: | ||
| 4 | - compatible : contains "stericsson,ab8500"; | ||
| 5 | - interrupts : contains the IRQ line for the AB8500 | ||
| 6 | - interrupt-controller : describes the AB8500 as an Interrupt Controller (has its own domain) | ||
| 7 | - #interrupt-cells : should be 2, for 2-cell format | ||
| 8 | - The first cell is the AB8500 local IRQ number | ||
| 9 | - The second cell is used to specify optional parameters | ||
| 10 | - bits[3:0] trigger type and level flags: | ||
| 11 | 1 = low-to-high edge triggered | ||
| 12 | 2 = high-to-low edge triggered | ||
| 13 | 4 = active high level-sensitive | ||
| 14 | 8 = active low level-sensitive | ||
| 15 | |||
| 16 | Optional parent device properties: | ||
| 17 | - reg : contains the PRCMU mailbox address for the AB8500 i2c port | ||
| 18 | |||
| 19 | The AB8500 consists of a large and varied group of sub-devices: | ||
| 20 | |||
| 21 | Device IRQ Names Supply Names Description | ||
| 22 | ------ --------- ------------ ----------- | ||
| 23 | ab8500-bm : : : Battery Manager | ||
| 24 | ab8500-btemp : : : Battery Temperature | ||
| 25 | ab8500-charger : : : Battery Charger | ||
| 26 | ab8500-fg : : : Fuel Gauge | ||
| 27 | ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter | ||
| 28 | SW_CONV_END : : | ||
| 29 | ab8500-gpio : : : GPIO Controller | ||
| 30 | ab8500-ponkey : ONKEY_DBF : : Power-on Key | ||
| 31 | ONKEY_DBR : : | ||
| 32 | ab8500-pwm : : : Pulse Width Modulator | ||
| 33 | ab8500-regulator : : : Regulators | ||
| 34 | ab8500-rtc : 60S : : Real Time Clock | ||
| 35 | : ALARM : : | ||
| 36 | ab8500-sysctrl : : : System Control | ||
| 37 | ab8500-usb : ID_WAKEUP_R : vddulpivio18 : Universal Serial Bus | ||
| 38 | : ID_WAKEUP_F : v-ape : | ||
| 39 | : VBUS_DET_F : musb_1v8 : | ||
| 40 | : VBUS_DET_R : : | ||
| 41 | : USB_LINK_STATUS : : | ||
| 42 | : USB_ADP_PROBE_PLUG : : | ||
| 43 | : USB_ADP_PROBE_UNPLUG : : | ||
| 44 | |||
| 45 | Required child device properties: | ||
| 46 | - compatible : "stericsson,ab8500-[bm|btemp|charger|fg|gpadc|gpio|ponkey| | ||
| 47 | pwm|regulator|rtc|sysctrl|usb]"; | ||
| 48 | |||
| 49 | Optional child device properties: | ||
| 50 | - interrupts : contains the device IRQ(s) using the 2-cell format (see above) | ||
| 51 | - interrupt-names : contains names of IRQ resource in the order in which they were | ||
| 52 | supplied in the interrupts property | ||
| 53 | - <supply_name>-supply : contains a phandle to the regulator supply node in Device Tree | ||
| 54 | |||
| 55 | ab8500@5 { | ||
| 56 | compatible = "stericsson,ab8500"; | ||
| 57 | reg = <5>; /* mailbox 5 is i2c */ | ||
| 58 | interrupts = <0 40 0x4>; | ||
| 59 | interrupt-controller; | ||
| 60 | #interrupt-cells = <2>; | ||
| 61 | |||
| 62 | ab8500-rtc { | ||
| 63 | compatible = "stericsson,ab8500-rtc"; | ||
| 64 | interrupts = <17 0x4 | ||
| 65 | 18 0x4>; | ||
| 66 | interrupt-names = "60S", "ALARM"; | ||
| 67 | }; | ||
| 68 | |||
| 69 | ab8500-gpadc { | ||
| 70 | compatible = "stericsson,ab8500-gpadc"; | ||
| 71 | interrupts = <32 0x4 | ||
| 72 | 39 0x4>; | ||
| 73 | interrupt-names = "HW_CONV_END", "SW_CONV_END"; | ||
| 74 | vddadc-supply = <&ab8500_ldo_tvout_reg>; | ||
| 75 | }; | ||
| 76 | |||
| 77 | ab8500-usb { | ||
| 78 | compatible = "stericsson,ab8500-usb"; | ||
| 79 | interrupts = < 90 0x4 | ||
| 80 | 96 0x4 | ||
| 81 | 14 0x4 | ||
| 82 | 15 0x4 | ||
| 83 | 79 0x4 | ||
| 84 | 74 0x4 | ||
| 85 | 75 0x4>; | ||
| 86 | interrupt-names = "ID_WAKEUP_R", | ||
| 87 | "ID_WAKEUP_F", | ||
| 88 | "VBUS_DET_F", | ||
| 89 | "VBUS_DET_R", | ||
| 90 | "USB_LINK_STATUS", | ||
| 91 | "USB_ADP_PROBE_PLUG", | ||
| 92 | "USB_ADP_PROBE_UNPLUG"; | ||
| 93 | vddulpivio18-supply = <&ab8500_ldo_initcore_reg>; | ||
| 94 | v-ape-supply = <&db8500_vape_reg>; | ||
| 95 | musb_1v8-supply = <&db8500_vsmps2_reg>; | ||
| 96 | }; | ||
| 97 | |||
| 98 | ab8500-ponkey { | ||
| 99 | compatible = "stericsson,ab8500-ponkey"; | ||
| 100 | interrupts = <6 0x4 | ||
| 101 | 7 0x4>; | ||
| 102 | interrupt-names = "ONKEY_DBF", "ONKEY_DBR"; | ||
| 103 | }; | ||
| 104 | |||
| 105 | ab8500-sysctrl { | ||
| 106 | compatible = "stericsson,ab8500-sysctrl"; | ||
| 107 | }; | ||
| 108 | |||
| 109 | ab8500-pwm { | ||
| 110 | compatible = "stericsson,ab8500-pwm"; | ||
| 111 | }; | ||
| 112 | |||
| 113 | ab8500-regulators { | ||
| 114 | compatible = "stericsson,ab8500-regulator"; | ||
| 115 | |||
| 116 | ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { | ||
| 117 | /* | ||
| 118 | * See: Documentation/devicetree/bindings/regulator/regulator.txt | ||
| 119 | * for more information on regulators | ||
| 120 | */ | ||
| 121 | }; | ||
| 122 | }; | ||
| 123 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/max77686.txt b/Documentation/devicetree/bindings/mfd/max77686.txt new file mode 100644 index 000000000000..c6a3469d3436 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/max77686.txt | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | Maxim MAX77686 multi-function device | ||
| 2 | |||
| 3 | MAX77686 is a Mulitifunction device with PMIC, RTC and Charger on chip. It is | ||
| 4 | interfaced to host controller using i2c interface. PMIC and Charger submodules | ||
| 5 | are addressed using same i2c slave address whereas RTC submodule uses | ||
| 6 | different i2c slave address,presently for which we are statically creating i2c | ||
| 7 | client while probing.This document describes the binding for mfd device and | ||
| 8 | PMIC submodule. | ||
| 9 | |||
| 10 | Required properties: | ||
| 11 | - compatible : Must be "maxim,max77686"; | ||
| 12 | - reg : Specifies the i2c slave address of PMIC block. | ||
| 13 | - interrupts : This i2c device has an IRQ line connected to the main SoC. | ||
| 14 | - interrupt-parent : The parent interrupt controller. | ||
| 15 | |||
| 16 | Optional node: | ||
| 17 | - voltage-regulators : The regulators of max77686 have to be instantiated | ||
| 18 | under subnode named "voltage-regulators" using the following format. | ||
| 19 | |||
| 20 | regulator_name { | ||
| 21 | regulator-compatible = LDOn/BUCKn | ||
| 22 | standard regulator constraints.... | ||
| 23 | }; | ||
| 24 | refer Documentation/devicetree/bindings/regulator/regulator.txt | ||
| 25 | |||
| 26 | The regulator-compatible property of regulator should initialized with string | ||
| 27 | to get matched with their hardware counterparts as follow: | ||
| 28 | |||
| 29 | -LDOn : for LDOs, where n can lie in range 1 to 26. | ||
| 30 | example: LDO1, LDO2, LDO26. | ||
| 31 | -BUCKn : for BUCKs, where n can lie in range 1 to 9. | ||
| 32 | example: BUCK1, BUCK5, BUCK9. | ||
| 33 | |||
| 34 | Example: | ||
| 35 | |||
| 36 | max77686@09 { | ||
| 37 | compatible = "maxim,max77686"; | ||
| 38 | interrupt-parent = <&wakeup_eint>; | ||
| 39 | interrupts = <26 0>; | ||
| 40 | reg = <0x09>; | ||
| 41 | |||
| 42 | voltage-regulators { | ||
| 43 | ldo11_reg { | ||
| 44 | regulator-compatible = "LDO11"; | ||
| 45 | regulator-name = "vdd_ldo11"; | ||
| 46 | regulator-min-microvolt = <1900000>; | ||
| 47 | regulator-max-microvolt = <1900000>; | ||
| 48 | regulator-always-on; | ||
| 49 | }; | ||
| 50 | |||
| 51 | buck1_reg { | ||
| 52 | regulator-compatible = "BUCK1"; | ||
| 53 | regulator-name = "vdd_mif"; | ||
| 54 | regulator-min-microvolt = <950000>; | ||
| 55 | regulator-max-microvolt = <1300000>; | ||
| 56 | regulator-always-on; | ||
| 57 | regulator-boot-on; | ||
| 58 | }; | ||
| 59 | } | ||
diff --git a/Documentation/devicetree/bindings/mfd/tps65910.txt b/Documentation/devicetree/bindings/mfd/tps65910.txt index d2802d4717bc..db03599ae4dc 100644 --- a/Documentation/devicetree/bindings/mfd/tps65910.txt +++ b/Documentation/devicetree/bindings/mfd/tps65910.txt | |||
| @@ -81,7 +81,7 @@ Example: | |||
| 81 | 81 | ||
| 82 | ti,vmbch-threshold = 0; | 82 | ti,vmbch-threshold = 0; |
| 83 | ti,vmbch2-threshold = 0; | 83 | ti,vmbch2-threshold = 0; |
| 84 | 84 | ti,en-ck32k-xtal; | |
| 85 | ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>; | 85 | ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>; |
| 86 | 86 | ||
| 87 | vcc1-supply = <®_parent>; | 87 | vcc1-supply = <®_parent>; |
diff --git a/Documentation/devicetree/bindings/mfd/twl6040.txt b/Documentation/devicetree/bindings/mfd/twl6040.txt index bc67c6f424aa..c855240f3a0e 100644 --- a/Documentation/devicetree/bindings/mfd/twl6040.txt +++ b/Documentation/devicetree/bindings/mfd/twl6040.txt | |||
| @@ -6,7 +6,7 @@ They are connected ot the host processor via i2c for commands, McPDM for audio | |||
| 6 | data and commands. | 6 | data and commands. |
| 7 | 7 | ||
| 8 | Required properties: | 8 | Required properties: |
| 9 | - compatible : Must be "ti,twl6040"; | 9 | - compatible : "ti,twl6040" for twl6040, "ti,twl6041" for twl6041 |
| 10 | - reg: must be 0x4b for i2c address | 10 | - reg: must be 0x4b for i2c address |
| 11 | - interrupts: twl6040 has one interrupt line connecteded to the main SoC | 11 | - interrupts: twl6040 has one interrupt line connecteded to the main SoC |
| 12 | - interrupt-parent: The parent interrupt controller | 12 | - interrupt-parent: The parent interrupt controller |
diff --git a/MAINTAINERS b/MAINTAINERS index b141083b2621..19f705073942 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -5912,6 +5912,16 @@ L: linux-fbdev@vger.kernel.org | |||
| 5912 | S: Maintained | 5912 | S: Maintained |
| 5913 | F: drivers/video/s3c-fb.c | 5913 | F: drivers/video/s3c-fb.c |
| 5914 | 5914 | ||
| 5915 | SAMSUNG MULTIFUNCTION DEVICE DRIVERS | ||
| 5916 | M: Sangbeom Kim <sbkim73@samsung.com> | ||
| 5917 | L: linux-kernel@vger.kernel.org | ||
| 5918 | S: Supported | ||
| 5919 | F: drivers/mfd/sec*.c | ||
| 5920 | F: drivers/regulator/s2m*.c | ||
| 5921 | F: drivers/regulator/s5m*.c | ||
| 5922 | F: drivers/rtc/rtc-sec.c | ||
| 5923 | F: include/linux/mfd/samsung/ | ||
| 5924 | |||
| 5915 | SERIAL DRIVERS | 5925 | SERIAL DRIVERS |
| 5916 | M: Alan Cox <alan@linux.intel.com> | 5926 | M: Alan Cox <alan@linux.intel.com> |
| 5917 | L: linux-serial@vger.kernel.org | 5927 | L: linux-serial@vger.kernel.org |
diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig index 4be9c1e80ee6..db2245353f0f 100644 --- a/arch/arm/configs/tegra_defconfig +++ b/arch/arm/configs/tegra_defconfig | |||
| @@ -106,6 +106,7 @@ CONFIG_I2C_TEGRA=y | |||
| 106 | CONFIG_SPI=y | 106 | CONFIG_SPI=y |
| 107 | CONFIG_SPI_TEGRA=y | 107 | CONFIG_SPI_TEGRA=y |
| 108 | CONFIG_GPIO_TPS65910=y | 108 | CONFIG_GPIO_TPS65910=y |
| 109 | CONFIG_GPIO_TPS6586X=y | ||
| 109 | CONFIG_POWER_SUPPLY=y | 110 | CONFIG_POWER_SUPPLY=y |
| 110 | CONFIG_BATTERY_SBS=y | 111 | CONFIG_BATTERY_SBS=y |
| 111 | CONFIG_SENSORS_LM90=y | 112 | CONFIG_SENSORS_LM90=y |
diff --git a/arch/arm/mach-exynos/mach-nuri.c b/arch/arm/mach-exynos/mach-nuri.c index f98a83a81ce7..ea785fcaf6c3 100644 --- a/arch/arm/mach-exynos/mach-nuri.c +++ b/arch/arm/mach-exynos/mach-nuri.c | |||
| @@ -1066,12 +1066,8 @@ static struct platform_device nuri_max8903_device = { | |||
| 1066 | static void __init nuri_power_init(void) | 1066 | static void __init nuri_power_init(void) |
| 1067 | { | 1067 | { |
| 1068 | int gpio; | 1068 | int gpio; |
| 1069 | int irq_base = IRQ_GPIO_END + 1; | ||
| 1070 | int ta_en = 0; | 1069 | int ta_en = 0; |
| 1071 | 1070 | ||
| 1072 | nuri_max8997_pdata.irq_base = irq_base; | ||
| 1073 | irq_base += MAX8997_IRQ_NR; | ||
| 1074 | |||
| 1075 | gpio = EXYNOS4_GPX0(7); | 1071 | gpio = EXYNOS4_GPX0(7); |
| 1076 | gpio_request(gpio, "AP_PMIC_IRQ"); | 1072 | gpio_request(gpio, "AP_PMIC_IRQ"); |
| 1077 | s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0xf)); | 1073 | s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0xf)); |
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index 5a12dc26f496..5ca80307d6d7 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c | |||
| @@ -426,7 +426,6 @@ static struct max8997_platform_data __initdata origen_max8997_pdata = { | |||
| 426 | .buck1_gpiodvs = false, | 426 | .buck1_gpiodvs = false, |
| 427 | .buck2_gpiodvs = false, | 427 | .buck2_gpiodvs = false, |
| 428 | .buck5_gpiodvs = false, | 428 | .buck5_gpiodvs = false, |
| 429 | .irq_base = IRQ_GPIO_END + 1, | ||
| 430 | 429 | ||
| 431 | .ignore_gpiodvs_side_effect = true, | 430 | .ignore_gpiodvs_side_effect = true, |
| 432 | .buck125_default_idx = 0x0, | 431 | .buck125_default_idx = 0x0, |
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 8f421c0ca45c..8674a890fd1c 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
| @@ -211,24 +211,6 @@ static struct ab8500_platform_data ab8500_platdata = { | |||
| 211 | .codec = &ab8500_codec_pdata, | 211 | .codec = &ab8500_codec_pdata, |
| 212 | }; | 212 | }; |
| 213 | 213 | ||
| 214 | static struct resource ab8500_resources[] = { | ||
| 215 | [0] = { | ||
| 216 | .start = IRQ_DB8500_AB8500, | ||
| 217 | .end = IRQ_DB8500_AB8500, | ||
| 218 | .flags = IORESOURCE_IRQ | ||
| 219 | } | ||
| 220 | }; | ||
| 221 | |||
| 222 | struct platform_device ab8500_device = { | ||
| 223 | .name = "ab8500-core", | ||
| 224 | .id = 0, | ||
| 225 | .dev = { | ||
| 226 | .platform_data = &ab8500_platdata, | ||
| 227 | }, | ||
| 228 | .num_resources = 1, | ||
| 229 | .resource = ab8500_resources, | ||
| 230 | }; | ||
| 231 | |||
| 232 | /* | 214 | /* |
| 233 | * TPS61052 | 215 | * TPS61052 |
| 234 | */ | 216 | */ |
| @@ -443,7 +425,6 @@ static struct hash_platform_data u8500_hash1_platform_data = { | |||
| 443 | /* add any platform devices here - TODO */ | 425 | /* add any platform devices here - TODO */ |
| 444 | static struct platform_device *mop500_platform_devs[] __initdata = { | 426 | static struct platform_device *mop500_platform_devs[] __initdata = { |
| 445 | &mop500_gpio_keys_device, | 427 | &mop500_gpio_keys_device, |
| 446 | &ab8500_device, | ||
| 447 | }; | 428 | }; |
| 448 | 429 | ||
| 449 | #ifdef CONFIG_STE_DMA40 | 430 | #ifdef CONFIG_STE_DMA40 |
| @@ -605,7 +586,6 @@ static struct platform_device *snowball_platform_devs[] __initdata = { | |||
| 605 | &snowball_led_dev, | 586 | &snowball_led_dev, |
| 606 | &snowball_key_dev, | 587 | &snowball_key_dev, |
| 607 | &snowball_sbnet_dev, | 588 | &snowball_sbnet_dev, |
| 608 | &ab8500_device, | ||
| 609 | }; | 589 | }; |
| 610 | 590 | ||
| 611 | static void __init mop500_init_machine(void) | 591 | static void __init mop500_init_machine(void) |
| @@ -617,9 +597,8 @@ static void __init mop500_init_machine(void) | |||
| 617 | mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; | 597 | mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; |
| 618 | 598 | ||
| 619 | mop500_pinmaps_init(); | 599 | mop500_pinmaps_init(); |
| 620 | parent = u8500_init_devices(); | 600 | parent = u8500_init_devices(&ab8500_platdata); |
| 621 | 601 | ||
| 622 | /* FIXME: parent of ab8500 should be prcmu */ | ||
| 623 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) | 602 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) |
| 624 | mop500_platform_devs[i]->dev.parent = parent; | 603 | mop500_platform_devs[i]->dev.parent = parent; |
| 625 | 604 | ||
| @@ -652,7 +631,7 @@ static void __init snowball_init_machine(void) | |||
| 652 | int i; | 631 | int i; |
| 653 | 632 | ||
| 654 | snowball_pinmaps_init(); | 633 | snowball_pinmaps_init(); |
| 655 | parent = u8500_init_devices(); | 634 | parent = u8500_init_devices(&ab8500_platdata); |
| 656 | 635 | ||
| 657 | for (i = 0; i < ARRAY_SIZE(snowball_platform_devs); i++) | 636 | for (i = 0; i < ARRAY_SIZE(snowball_platform_devs); i++) |
| 658 | snowball_platform_devs[i]->dev.parent = parent; | 637 | snowball_platform_devs[i]->dev.parent = parent; |
| @@ -684,7 +663,7 @@ static void __init hrefv60_init_machine(void) | |||
| 684 | mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; | 663 | mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; |
| 685 | 664 | ||
| 686 | hrefv60_pinmaps_init(); | 665 | hrefv60_pinmaps_init(); |
| 687 | parent = u8500_init_devices(); | 666 | parent = u8500_init_devices(&ab8500_platdata); |
| 688 | 667 | ||
| 689 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) | 668 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) |
| 690 | mop500_platform_devs[i]->dev.parent = parent; | 669 | mop500_platform_devs[i]->dev.parent = parent; |
| @@ -785,9 +764,6 @@ static const struct of_device_id u8500_local_bus_nodes[] = { | |||
| 785 | /* only create devices below soc node */ | 764 | /* only create devices below soc node */ |
| 786 | { .compatible = "stericsson,db8500", }, | 765 | { .compatible = "stericsson,db8500", }, |
| 787 | { .compatible = "stericsson,db8500-prcmu", }, | 766 | { .compatible = "stericsson,db8500-prcmu", }, |
| 788 | { .compatible = "stericsson,db8500-prcmu-regulator", }, | ||
| 789 | { .compatible = "stericsson,ab8500", }, | ||
| 790 | { .compatible = "stericsson,ab8500-regulator", }, | ||
| 791 | { .compatible = "simple-bus"}, | 767 | { .compatible = "simple-bus"}, |
| 792 | { }, | 768 | { }, |
| 793 | }; | 769 | }; |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index c8dd94f606dc..db3c52d56ca4 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
| 17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
| 18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
| 19 | #include <linux/mfd/abx500/ab8500.h> | ||
| 19 | 20 | ||
| 20 | #include <asm/mach/map.h> | 21 | #include <asm/mach/map.h> |
| 21 | #include <asm/pmu.h> | 22 | #include <asm/pmu.h> |
| @@ -115,7 +116,7 @@ static irqreturn_t db8500_pmu_handler(int irq, void *dev, irq_handler_t handler) | |||
| 115 | return ret; | 116 | return ret; |
| 116 | } | 117 | } |
| 117 | 118 | ||
| 118 | static struct arm_pmu_platdata db8500_pmu_platdata = { | 119 | struct arm_pmu_platdata db8500_pmu_platdata = { |
| 119 | .handle_irq = db8500_pmu_handler, | 120 | .handle_irq = db8500_pmu_handler, |
| 120 | }; | 121 | }; |
| 121 | 122 | ||
| @@ -206,7 +207,7 @@ static struct device * __init db8500_soc_device_init(void) | |||
| 206 | /* | 207 | /* |
| 207 | * This function is called from the board init | 208 | * This function is called from the board init |
| 208 | */ | 209 | */ |
| 209 | struct device * __init u8500_init_devices(void) | 210 | struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500) |
| 210 | { | 211 | { |
| 211 | struct device *parent; | 212 | struct device *parent; |
| 212 | int i; | 213 | int i; |
| @@ -223,6 +224,8 @@ struct device * __init u8500_init_devices(void) | |||
| 223 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) | 224 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) |
| 224 | platform_devs[i]->dev.parent = parent; | 225 | platform_devs[i]->dev.parent = parent; |
| 225 | 226 | ||
| 227 | db8500_prcmu_device.dev.platform_data = ab8500; | ||
| 228 | |||
| 226 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); | 229 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); |
| 227 | 230 | ||
| 228 | return parent; | 231 | return parent; |
diff --git a/arch/arm/mach-ux500/include/mach/setup.h b/arch/arm/mach-ux500/include/mach/setup.h index 8b7ed82a2866..7914e5eaa9c7 100644 --- a/arch/arm/mach-ux500/include/mach/setup.h +++ b/arch/arm/mach-ux500/include/mach/setup.h | |||
| @@ -13,11 +13,12 @@ | |||
| 13 | 13 | ||
| 14 | #include <asm/mach/time.h> | 14 | #include <asm/mach/time.h> |
| 15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
| 16 | #include <linux/mfd/abx500/ab8500.h> | ||
| 16 | 17 | ||
| 17 | void __init ux500_map_io(void); | 18 | void __init ux500_map_io(void); |
| 18 | extern void __init u8500_map_io(void); | 19 | extern void __init u8500_map_io(void); |
| 19 | 20 | ||
| 20 | extern struct device * __init u8500_init_devices(void); | 21 | extern struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500); |
| 21 | 22 | ||
| 22 | extern void __init ux500_init_irq(void); | 23 | extern void __init ux500_init_irq(void); |
| 23 | extern void __init ux500_init_late(void); | 24 | extern void __init ux500_init_late(void); |
diff --git a/drivers/extcon/Kconfig b/drivers/extcon/Kconfig index 16716356d1fe..e175c8ed4ec4 100644 --- a/drivers/extcon/Kconfig +++ b/drivers/extcon/Kconfig | |||
| @@ -33,7 +33,7 @@ config EXTCON_MAX77693 | |||
| 33 | 33 | ||
| 34 | config EXTCON_MAX8997 | 34 | config EXTCON_MAX8997 |
| 35 | tristate "MAX8997 EXTCON Support" | 35 | tristate "MAX8997 EXTCON Support" |
| 36 | depends on MFD_MAX8997 | 36 | depends on MFD_MAX8997 && IRQ_DOMAIN |
| 37 | help | 37 | help |
| 38 | If you say yes here you get support for the MUIC device of | 38 | If you say yes here you get support for the MUIC device of |
| 39 | Maxim MAX8997 PMIC. The MAX8997 MUIC is a USB port accessory | 39 | Maxim MAX8997 PMIC. The MAX8997 MUIC is a USB port accessory |
diff --git a/drivers/extcon/extcon-max8997.c b/drivers/extcon/extcon-max8997.c index a4ed30bd9a41..ef9090a4271d 100644 --- a/drivers/extcon/extcon-max8997.c +++ b/drivers/extcon/extcon-max8997.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include <linux/mfd/max8997.h> | 26 | #include <linux/mfd/max8997.h> |
| 27 | #include <linux/mfd/max8997-private.h> | 27 | #include <linux/mfd/max8997-private.h> |
| 28 | #include <linux/extcon.h> | 28 | #include <linux/extcon.h> |
| 29 | #include <linux/irqdomain.h> | ||
| 29 | 30 | ||
| 30 | #define DEV_NAME "max8997-muic" | 31 | #define DEV_NAME "max8997-muic" |
| 31 | 32 | ||
| @@ -77,6 +78,7 @@ | |||
| 77 | struct max8997_muic_irq { | 78 | struct max8997_muic_irq { |
| 78 | unsigned int irq; | 79 | unsigned int irq; |
| 79 | const char *name; | 80 | const char *name; |
| 81 | unsigned int virq; | ||
| 80 | }; | 82 | }; |
| 81 | 83 | ||
| 82 | static struct max8997_muic_irq muic_irqs[] = { | 84 | static struct max8997_muic_irq muic_irqs[] = { |
| @@ -343,12 +345,10 @@ static void max8997_muic_irq_work(struct work_struct *work) | |||
| 343 | { | 345 | { |
| 344 | struct max8997_muic_info *info = container_of(work, | 346 | struct max8997_muic_info *info = container_of(work, |
| 345 | struct max8997_muic_info, irq_work); | 347 | struct max8997_muic_info, irq_work); |
| 346 | struct max8997_dev *max8997 = i2c_get_clientdata(info->muic); | ||
| 347 | u8 status[2]; | 348 | u8 status[2]; |
| 348 | u8 adc, chg_type; | 349 | u8 adc, chg_type; |
| 349 | 350 | int irq_type = 0; | |
| 350 | int irq_type = info->irq - max8997->irq_base; | 351 | int i, ret; |
| 351 | int ret; | ||
| 352 | 352 | ||
| 353 | mutex_lock(&info->mutex); | 353 | mutex_lock(&info->mutex); |
| 354 | 354 | ||
| @@ -363,6 +363,10 @@ static void max8997_muic_irq_work(struct work_struct *work) | |||
| 363 | dev_dbg(info->dev, "%s: STATUS1:0x%x, 2:0x%x\n", __func__, | 363 | dev_dbg(info->dev, "%s: STATUS1:0x%x, 2:0x%x\n", __func__, |
| 364 | status[0], status[1]); | 364 | status[0], status[1]); |
| 365 | 365 | ||
| 366 | for (i = 0 ; i < ARRAY_SIZE(muic_irqs) ; i++) | ||
| 367 | if (info->irq == muic_irqs[i].virq) | ||
| 368 | irq_type = muic_irqs[i].irq; | ||
| 369 | |||
| 366 | switch (irq_type) { | 370 | switch (irq_type) { |
| 367 | case MAX8997_MUICIRQ_ADC: | 371 | case MAX8997_MUICIRQ_ADC: |
| 368 | adc = status[0] & STATUS1_ADC_MASK; | 372 | adc = status[0] & STATUS1_ADC_MASK; |
| @@ -448,11 +452,15 @@ static int __devinit max8997_muic_probe(struct platform_device *pdev) | |||
| 448 | 452 | ||
| 449 | for (i = 0; i < ARRAY_SIZE(muic_irqs); i++) { | 453 | for (i = 0; i < ARRAY_SIZE(muic_irqs); i++) { |
| 450 | struct max8997_muic_irq *muic_irq = &muic_irqs[i]; | 454 | struct max8997_muic_irq *muic_irq = &muic_irqs[i]; |
| 455 | int virq = 0; | ||
| 456 | |||
| 457 | virq = irq_create_mapping(max8997->irq_domain, muic_irq->irq); | ||
| 458 | if (!virq) | ||
| 459 | goto err_irq; | ||
| 460 | muic_irq->virq = virq; | ||
| 451 | 461 | ||
| 452 | ret = request_threaded_irq(pdata->irq_base + muic_irq->irq, | 462 | ret = request_threaded_irq(virq, NULL,max8997_muic_irq_handler, |
| 453 | NULL, max8997_muic_irq_handler, | 463 | 0, muic_irq->name, info); |
| 454 | 0, muic_irq->name, | ||
| 455 | info); | ||
| 456 | if (ret) { | 464 | if (ret) { |
| 457 | dev_err(&pdev->dev, | 465 | dev_err(&pdev->dev, |
| 458 | "failed: irq request (IRQ: %d," | 466 | "failed: irq request (IRQ: %d," |
| @@ -496,7 +504,7 @@ err_extcon: | |||
| 496 | kfree(info->edev); | 504 | kfree(info->edev); |
| 497 | err_irq: | 505 | err_irq: |
| 498 | while (--i >= 0) | 506 | while (--i >= 0) |
| 499 | free_irq(pdata->irq_base + muic_irqs[i].irq, info); | 507 | free_irq(muic_irqs[i].virq, info); |
| 500 | kfree(info); | 508 | kfree(info); |
| 501 | err_kfree: | 509 | err_kfree: |
| 502 | return ret; | 510 | return ret; |
| @@ -505,11 +513,10 @@ err_kfree: | |||
| 505 | static int __devexit max8997_muic_remove(struct platform_device *pdev) | 513 | static int __devexit max8997_muic_remove(struct platform_device *pdev) |
| 506 | { | 514 | { |
| 507 | struct max8997_muic_info *info = platform_get_drvdata(pdev); | 515 | struct max8997_muic_info *info = platform_get_drvdata(pdev); |
| 508 | struct max8997_dev *max8997 = i2c_get_clientdata(info->muic); | ||
| 509 | int i; | 516 | int i; |
| 510 | 517 | ||
| 511 | for (i = 0; i < ARRAY_SIZE(muic_irqs); i++) | 518 | for (i = 0; i < ARRAY_SIZE(muic_irqs); i++) |
| 512 | free_irq(max8997->irq_base + muic_irqs[i].irq, info); | 519 | free_irq(muic_irqs[i].virq, info); |
| 513 | cancel_work_sync(&info->irq_work); | 520 | cancel_work_sync(&info->irq_work); |
| 514 | 521 | ||
| 515 | extcon_dev_unregister(info->edev); | 522 | extcon_dev_unregister(info->edev); |
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index 502b5ea43f4f..b16c8a72a2e2 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig | |||
| @@ -597,6 +597,13 @@ config GPIO_AB8500 | |||
| 597 | help | 597 | help |
| 598 | Select this to enable the AB8500 IC GPIO driver | 598 | Select this to enable the AB8500 IC GPIO driver |
| 599 | 599 | ||
| 600 | config GPIO_TPS6586X | ||
| 601 | bool "TPS6586X GPIO" | ||
| 602 | depends on MFD_TPS6586X | ||
| 603 | help | ||
| 604 | Select this option to enable GPIO driver for the TPS6586X | ||
| 605 | chip family. | ||
| 606 | |||
| 600 | config GPIO_TPS65910 | 607 | config GPIO_TPS65910 |
| 601 | bool "TPS65910 GPIO" | 608 | bool "TPS65910 GPIO" |
| 602 | depends on MFD_TPS65910 | 609 | depends on MFD_TPS65910 |
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile index d37048105a87..153caceeb053 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile | |||
| @@ -63,6 +63,7 @@ obj-$(CONFIG_GPIO_TC3589X) += gpio-tc3589x.o | |||
| 63 | obj-$(CONFIG_ARCH_TEGRA) += gpio-tegra.o | 63 | obj-$(CONFIG_ARCH_TEGRA) += gpio-tegra.o |
| 64 | obj-$(CONFIG_GPIO_TIMBERDALE) += gpio-timberdale.o | 64 | obj-$(CONFIG_GPIO_TIMBERDALE) += gpio-timberdale.o |
| 65 | obj-$(CONFIG_ARCH_DAVINCI_TNETV107X) += gpio-tnetv107x.o | 65 | obj-$(CONFIG_ARCH_DAVINCI_TNETV107X) += gpio-tnetv107x.o |
| 66 | obj-$(CONFIG_GPIO_TPS6586X) += gpio-tps6586x.o | ||
| 66 | obj-$(CONFIG_GPIO_TPS65910) += gpio-tps65910.o | 67 | obj-$(CONFIG_GPIO_TPS65910) += gpio-tps65910.o |
| 67 | obj-$(CONFIG_GPIO_TPS65912) += gpio-tps65912.o | 68 | obj-$(CONFIG_GPIO_TPS65912) += gpio-tps65912.o |
| 68 | obj-$(CONFIG_GPIO_TWL4030) += gpio-twl4030.o | 69 | obj-$(CONFIG_GPIO_TWL4030) += gpio-twl4030.o |
diff --git a/drivers/gpio/gpio-tps6586x.c b/drivers/gpio/gpio-tps6586x.c new file mode 100644 index 000000000000..2526b3bb0fae --- /dev/null +++ b/drivers/gpio/gpio-tps6586x.c | |||
| @@ -0,0 +1,158 @@ | |||
| 1 | /* | ||
| 2 | * TI TPS6586x GPIO driver | ||
| 3 | * | ||
| 4 | * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. | ||
| 5 | * Author: Laxman dewangan <ldewangan@nvidia.com> | ||
| 6 | * | ||
| 7 | * Based on tps6586x.c | ||
| 8 | * Copyright (c) 2010 CompuLab Ltd. | ||
| 9 | * Mike Rapoport <mike@compulab.co.il> | ||
| 10 | * | ||
| 11 | * This program is free software; you can redistribute it and/or modify it | ||
| 12 | * under the terms and conditions of the GNU General Public License, | ||
| 13 | * version 2, as published by the Free Software Foundation. | ||
| 14 | * | ||
| 15 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
| 16 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 17 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 18 | * more details. | ||
| 19 | * | ||
| 20 | * You should have received a copy of the GNU General Public License | ||
| 21 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 22 | */ | ||
| 23 | |||
| 24 | #include <linux/errno.h> | ||
| 25 | #include <linux/gpio.h> | ||
| 26 | #include <linux/kernel.h> | ||
| 27 | #include <linux/module.h> | ||
| 28 | #include <linux/mfd/tps6586x.h> | ||
| 29 | #include <linux/of_device.h> | ||
| 30 | #include <linux/platform_device.h> | ||
| 31 | |||
| 32 | /* GPIO control registers */ | ||
| 33 | #define TPS6586X_GPIOSET1 0x5d | ||
| 34 | #define TPS6586X_GPIOSET2 0x5e | ||
| 35 | |||
| 36 | struct tps6586x_gpio { | ||
| 37 | struct gpio_chip gpio_chip; | ||
| 38 | struct device *parent; | ||
| 39 | }; | ||
| 40 | |||
| 41 | static inline struct tps6586x_gpio *to_tps6586x_gpio(struct gpio_chip *chip) | ||
| 42 | { | ||
| 43 | return container_of(chip, struct tps6586x_gpio, gpio_chip); | ||
| 44 | } | ||
| 45 | |||
| 46 | static int tps6586x_gpio_get(struct gpio_chip *gc, unsigned offset) | ||
| 47 | { | ||
| 48 | struct tps6586x_gpio *tps6586x_gpio = to_tps6586x_gpio(gc); | ||
| 49 | uint8_t val; | ||
| 50 | int ret; | ||
| 51 | |||
| 52 | ret = tps6586x_read(tps6586x_gpio->parent, TPS6586X_GPIOSET2, &val); | ||
| 53 | if (ret) | ||
| 54 | return ret; | ||
| 55 | |||
| 56 | return !!(val & (1 << offset)); | ||
| 57 | } | ||
| 58 | |||
| 59 | static void tps6586x_gpio_set(struct gpio_chip *gc, unsigned offset, | ||
| 60 | int value) | ||
| 61 | { | ||
| 62 | struct tps6586x_gpio *tps6586x_gpio = to_tps6586x_gpio(gc); | ||
| 63 | |||
| 64 | tps6586x_update(tps6586x_gpio->parent, TPS6586X_GPIOSET2, | ||
| 65 | value << offset, 1 << offset); | ||
| 66 | } | ||
| 67 | |||
| 68 | static int tps6586x_gpio_output(struct gpio_chip *gc, unsigned offset, | ||
| 69 | int value) | ||
| 70 | { | ||
| 71 | struct tps6586x_gpio *tps6586x_gpio = to_tps6586x_gpio(gc); | ||
| 72 | uint8_t val, mask; | ||
| 73 | |||
| 74 | tps6586x_gpio_set(gc, offset, value); | ||
| 75 | |||
| 76 | val = 0x1 << (offset * 2); | ||
| 77 | mask = 0x3 << (offset * 2); | ||
| 78 | |||
| 79 | return tps6586x_update(tps6586x_gpio->parent, TPS6586X_GPIOSET1, | ||
| 80 | val, mask); | ||
| 81 | } | ||
| 82 | |||
| 83 | static int __devinit tps6586x_gpio_probe(struct platform_device *pdev) | ||
| 84 | { | ||
| 85 | struct tps6586x_platform_data *pdata; | ||
| 86 | struct tps6586x_gpio *tps6586x_gpio; | ||
| 87 | int ret; | ||
| 88 | |||
| 89 | pdata = dev_get_platdata(pdev->dev.parent); | ||
| 90 | tps6586x_gpio = devm_kzalloc(&pdev->dev, | ||
| 91 | sizeof(*tps6586x_gpio), GFP_KERNEL); | ||
| 92 | if (!tps6586x_gpio) { | ||
| 93 | dev_err(&pdev->dev, "Could not allocate tps6586x_gpio\n"); | ||
| 94 | return -ENOMEM; | ||
| 95 | } | ||
| 96 | |||
| 97 | tps6586x_gpio->parent = pdev->dev.parent; | ||
| 98 | |||
| 99 | tps6586x_gpio->gpio_chip.owner = THIS_MODULE; | ||
| 100 | tps6586x_gpio->gpio_chip.label = pdev->name; | ||
| 101 | tps6586x_gpio->gpio_chip.dev = &pdev->dev; | ||
| 102 | tps6586x_gpio->gpio_chip.ngpio = 4; | ||
| 103 | tps6586x_gpio->gpio_chip.can_sleep = 1; | ||
| 104 | |||
| 105 | /* FIXME: add handling of GPIOs as dedicated inputs */ | ||
| 106 | tps6586x_gpio->gpio_chip.direction_output = tps6586x_gpio_output; | ||
| 107 | tps6586x_gpio->gpio_chip.set = tps6586x_gpio_set; | ||
| 108 | tps6586x_gpio->gpio_chip.get = tps6586x_gpio_get; | ||
| 109 | |||
| 110 | #ifdef CONFIG_OF_GPIO | ||
| 111 | tps6586x_gpio->gpio_chip.of_node = pdev->dev.parent->of_node; | ||
| 112 | #endif | ||
| 113 | if (pdata && pdata->gpio_base) | ||
| 114 | tps6586x_gpio->gpio_chip.base = pdata->gpio_base; | ||
| 115 | else | ||
| 116 | tps6586x_gpio->gpio_chip.base = -1; | ||
| 117 | |||
| 118 | ret = gpiochip_add(&tps6586x_gpio->gpio_chip); | ||
| 119 | if (ret < 0) { | ||
| 120 | dev_err(&pdev->dev, "Could not register gpiochip, %d\n", ret); | ||
| 121 | return ret; | ||
| 122 | } | ||
| 123 | |||
| 124 | platform_set_drvdata(pdev, tps6586x_gpio); | ||
| 125 | |||
| 126 | return ret; | ||
| 127 | } | ||
| 128 | |||
| 129 | static int __devexit tps6586x_gpio_remove(struct platform_device *pdev) | ||
| 130 | { | ||
| 131 | struct tps6586x_gpio *tps6586x_gpio = platform_get_drvdata(pdev); | ||
| 132 | |||
| 133 | return gpiochip_remove(&tps6586x_gpio->gpio_chip); | ||
| 134 | } | ||
| 135 | |||
| 136 | static struct platform_driver tps6586x_gpio_driver = { | ||
| 137 | .driver.name = "tps6586x-gpio", | ||
| 138 | .driver.owner = THIS_MODULE, | ||
| 139 | .probe = tps6586x_gpio_probe, | ||
| 140 | .remove = __devexit_p(tps6586x_gpio_remove), | ||
| 141 | }; | ||
| 142 | |||
| 143 | static int __init tps6586x_gpio_init(void) | ||
| 144 | { | ||
| 145 | return platform_driver_register(&tps6586x_gpio_driver); | ||
| 146 | } | ||
| 147 | subsys_initcall(tps6586x_gpio_init); | ||
| 148 | |||
| 149 | static void __exit tps6586x_gpio_exit(void) | ||
| 150 | { | ||
| 151 | platform_driver_unregister(&tps6586x_gpio_driver); | ||
| 152 | } | ||
| 153 | module_exit(tps6586x_gpio_exit); | ||
| 154 | |||
| 155 | MODULE_ALIAS("platform:tps6586x-gpio"); | ||
| 156 | MODULE_DESCRIPTION("GPIO interface for TPS6586X PMIC"); | ||
| 157 | MODULE_AUTHOR("Laxman Dewangan <ldewangan@nvidia.com>"); | ||
| 158 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/input/misc/88pm80x_onkey.c b/drivers/input/misc/88pm80x_onkey.c new file mode 100644 index 000000000000..7f26e7b6c228 --- /dev/null +++ b/drivers/input/misc/88pm80x_onkey.c | |||
| @@ -0,0 +1,168 @@ | |||
| 1 | /* | ||
| 2 | * Marvell 88PM80x ONKEY driver | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Marvell International Ltd. | ||
| 5 | * Haojian Zhuang <haojian.zhuang@marvell.com> | ||
| 6 | * Qiao Zhou <zhouqiao@marvell.com> | ||
| 7 | * | ||
| 8 | * This file is subject to the terms and conditions of the GNU General | ||
| 9 | * Public License. See the file "COPYING" in the main directory of this | ||
| 10 | * archive for more details. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 20 | */ | ||
| 21 | |||
| 22 | #include <linux/kernel.h> | ||
| 23 | #include <linux/module.h> | ||
| 24 | #include <linux/input.h> | ||
| 25 | #include <linux/mfd/88pm80x.h> | ||
| 26 | #include <linux/regmap.h> | ||
| 27 | #include <linux/slab.h> | ||
| 28 | |||
| 29 | #define PM800_LONG_ONKEY_EN (1 << 0) | ||
| 30 | #define PM800_LONG_KEY_DELAY (8) /* 1 .. 16 seconds */ | ||
| 31 | #define PM800_LONKEY_PRESS_TIME ((PM800_LONG_KEY_DELAY-1) << 4) | ||
| 32 | #define PM800_LONKEY_PRESS_TIME_MASK (0xF0) | ||
| 33 | #define PM800_SW_PDOWN (1 << 5) | ||
| 34 | |||
| 35 | struct pm80x_onkey_info { | ||
| 36 | struct input_dev *idev; | ||
| 37 | struct pm80x_chip *pm80x; | ||
| 38 | struct regmap *map; | ||
| 39 | int irq; | ||
| 40 | }; | ||
| 41 | |||
| 42 | /* 88PM80x gives us an interrupt when ONKEY is held */ | ||
| 43 | static irqreturn_t pm80x_onkey_handler(int irq, void *data) | ||
| 44 | { | ||
| 45 | struct pm80x_onkey_info *info = data; | ||
| 46 | int ret = 0; | ||
| 47 | unsigned int val; | ||
| 48 | |||
| 49 | ret = regmap_read(info->map, PM800_STATUS_1, &val); | ||
| 50 | if (ret < 0) { | ||
| 51 | dev_err(info->idev->dev.parent, "failed to read status: %d\n", ret); | ||
| 52 | return IRQ_NONE; | ||
| 53 | } | ||
| 54 | val &= PM800_ONKEY_STS1; | ||
| 55 | |||
| 56 | input_report_key(info->idev, KEY_POWER, val); | ||
| 57 | input_sync(info->idev); | ||
| 58 | |||
| 59 | return IRQ_HANDLED; | ||
| 60 | } | ||
| 61 | |||
| 62 | static SIMPLE_DEV_PM_OPS(pm80x_onkey_pm_ops, pm80x_dev_suspend, | ||
| 63 | pm80x_dev_resume); | ||
| 64 | |||
| 65 | static int __devinit pm80x_onkey_probe(struct platform_device *pdev) | ||
| 66 | { | ||
| 67 | |||
| 68 | struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent); | ||
| 69 | struct pm80x_onkey_info *info; | ||
| 70 | int err; | ||
| 71 | |||
| 72 | info = kzalloc(sizeof(struct pm80x_onkey_info), GFP_KERNEL); | ||
| 73 | if (!info) | ||
| 74 | return -ENOMEM; | ||
| 75 | |||
| 76 | info->pm80x = chip; | ||
| 77 | |||
| 78 | info->irq = platform_get_irq(pdev, 0); | ||
| 79 | if (info->irq < 0) { | ||
| 80 | dev_err(&pdev->dev, "No IRQ resource!\n"); | ||
| 81 | err = -EINVAL; | ||
| 82 | goto out; | ||
| 83 | } | ||
| 84 | |||
| 85 | info->map = info->pm80x->regmap; | ||
| 86 | if (!info->map) { | ||
| 87 | dev_err(&pdev->dev, "no regmap!\n"); | ||
| 88 | err = -EINVAL; | ||
| 89 | goto out; | ||
| 90 | } | ||
| 91 | |||
| 92 | info->idev = input_allocate_device(); | ||
| 93 | if (!info->idev) { | ||
| 94 | dev_err(&pdev->dev, "Failed to allocate input dev\n"); | ||
| 95 | err = -ENOMEM; | ||
| 96 | goto out; | ||
| 97 | } | ||
| 98 | |||
| 99 | info->idev->name = "88pm80x_on"; | ||
| 100 | info->idev->phys = "88pm80x_on/input0"; | ||
| 101 | info->idev->id.bustype = BUS_I2C; | ||
| 102 | info->idev->dev.parent = &pdev->dev; | ||
| 103 | info->idev->evbit[0] = BIT_MASK(EV_KEY); | ||
| 104 | __set_bit(KEY_POWER, info->idev->keybit); | ||
| 105 | |||
| 106 | err = pm80x_request_irq(info->pm80x, info->irq, pm80x_onkey_handler, | ||
| 107 | IRQF_ONESHOT, "onkey", info); | ||
| 108 | if (err < 0) { | ||
| 109 | dev_err(&pdev->dev, "Failed to request IRQ: #%d: %d\n", | ||
| 110 | info->irq, err); | ||
| 111 | goto out_reg; | ||
| 112 | } | ||
| 113 | |||
| 114 | err = input_register_device(info->idev); | ||
| 115 | if (err) { | ||
| 116 | dev_err(&pdev->dev, "Can't register input device: %d\n", err); | ||
| 117 | goto out_irq; | ||
| 118 | } | ||
| 119 | |||
| 120 | platform_set_drvdata(pdev, info); | ||
| 121 | |||
| 122 | /* Enable long onkey detection */ | ||
| 123 | regmap_update_bits(info->map, PM800_RTC_MISC4, PM800_LONG_ONKEY_EN, | ||
| 124 | PM800_LONG_ONKEY_EN); | ||
| 125 | /* Set 8-second interval */ | ||
| 126 | regmap_update_bits(info->map, PM800_RTC_MISC3, | ||
| 127 | PM800_LONKEY_PRESS_TIME_MASK, | ||
| 128 | PM800_LONKEY_PRESS_TIME); | ||
| 129 | |||
| 130 | device_init_wakeup(&pdev->dev, 1); | ||
| 131 | return 0; | ||
| 132 | |||
| 133 | out_irq: | ||
| 134 | pm80x_free_irq(info->pm80x, info->irq, info); | ||
| 135 | out_reg: | ||
| 136 | input_free_device(info->idev); | ||
| 137 | out: | ||
| 138 | kfree(info); | ||
| 139 | return err; | ||
| 140 | } | ||
| 141 | |||
| 142 | static int __devexit pm80x_onkey_remove(struct platform_device *pdev) | ||
| 143 | { | ||
| 144 | struct pm80x_onkey_info *info = platform_get_drvdata(pdev); | ||
| 145 | |||
| 146 | device_init_wakeup(&pdev->dev, 0); | ||
| 147 | pm80x_free_irq(info->pm80x, info->irq, info); | ||
| 148 | input_unregister_device(info->idev); | ||
| 149 | kfree(info); | ||
| 150 | return 0; | ||
| 151 | } | ||
| 152 | |||
| 153 | static struct platform_driver pm80x_onkey_driver = { | ||
| 154 | .driver = { | ||
| 155 | .name = "88pm80x-onkey", | ||
| 156 | .owner = THIS_MODULE, | ||
| 157 | .pm = &pm80x_onkey_pm_ops, | ||
| 158 | }, | ||
| 159 | .probe = pm80x_onkey_probe, | ||
| 160 | .remove = __devexit_p(pm80x_onkey_remove), | ||
| 161 | }; | ||
| 162 | |||
| 163 | module_platform_driver(pm80x_onkey_driver); | ||
| 164 | |||
| 165 | MODULE_LICENSE("GPL"); | ||
| 166 | MODULE_DESCRIPTION("Marvell 88PM80x ONKEY driver"); | ||
| 167 | MODULE_AUTHOR("Qiao Zhou <zhouqiao@marvell.com>"); | ||
| 168 | MODULE_ALIAS("platform:88pm80x-onkey"); | ||
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig index 7faf4a7fcaa9..7c0f1ecfdd7a 100644 --- a/drivers/input/misc/Kconfig +++ b/drivers/input/misc/Kconfig | |||
| @@ -22,6 +22,16 @@ config INPUT_88PM860X_ONKEY | |||
| 22 | To compile this driver as a module, choose M here: the module | 22 | To compile this driver as a module, choose M here: the module |
| 23 | will be called 88pm860x_onkey. | 23 | will be called 88pm860x_onkey. |
| 24 | 24 | ||
| 25 | config INPUT_88PM80X_ONKEY | ||
| 26 | tristate "88PM80x ONKEY support" | ||
| 27 | depends on MFD_88PM800 | ||
| 28 | help | ||
| 29 | Support the ONKEY of Marvell 88PM80x PMICs as an input device | ||
| 30 | reporting power button status. | ||
| 31 | |||
| 32 | To compile this driver as a module, choose M here: the module | ||
| 33 | will be called 88pm80x_onkey. | ||
| 34 | |||
| 25 | config INPUT_AB8500_PONKEY | 35 | config INPUT_AB8500_PONKEY |
| 26 | tristate "AB8500 Pon (PowerOn) Key" | 36 | tristate "AB8500 Pon (PowerOn) Key" |
| 27 | depends on AB8500_CORE | 37 | depends on AB8500_CORE |
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile index f55cdf4916fa..83fe6f5b77d1 100644 --- a/drivers/input/misc/Makefile +++ b/drivers/input/misc/Makefile | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | # Each configuration option enables a list of files. | 5 | # Each configuration option enables a list of files. |
| 6 | 6 | ||
| 7 | obj-$(CONFIG_INPUT_88PM860X_ONKEY) += 88pm860x_onkey.o | 7 | obj-$(CONFIG_INPUT_88PM860X_ONKEY) += 88pm860x_onkey.o |
| 8 | obj-$(CONFIG_INPUT_88PM80X_ONKEY) += 88pm80x_onkey.o | ||
| 8 | obj-$(CONFIG_INPUT_AB8500_PONKEY) += ab8500-ponkey.o | 9 | obj-$(CONFIG_INPUT_AB8500_PONKEY) += ab8500-ponkey.o |
| 9 | obj-$(CONFIG_INPUT_AD714X) += ad714x.o | 10 | obj-$(CONFIG_INPUT_AD714X) += ad714x.o |
| 10 | obj-$(CONFIG_INPUT_AD714X_I2C) += ad714x-i2c.o | 11 | obj-$(CONFIG_INPUT_AD714X_I2C) += ad714x-i2c.o |
diff --git a/drivers/input/misc/ab8500-ponkey.c b/drivers/input/misc/ab8500-ponkey.c index 84ec691c05aa..f06231b7cab1 100644 --- a/drivers/input/misc/ab8500-ponkey.c +++ b/drivers/input/misc/ab8500-ponkey.c | |||
| @@ -74,8 +74,8 @@ static int __devinit ab8500_ponkey_probe(struct platform_device *pdev) | |||
| 74 | 74 | ||
| 75 | ponkey->idev = input; | 75 | ponkey->idev = input; |
| 76 | ponkey->ab8500 = ab8500; | 76 | ponkey->ab8500 = ab8500; |
| 77 | ponkey->irq_dbf = irq_dbf; | 77 | ponkey->irq_dbf = ab8500_irq_get_virq(ab8500, irq_dbf); |
| 78 | ponkey->irq_dbr = irq_dbr; | 78 | ponkey->irq_dbr = ab8500_irq_get_virq(ab8500, irq_dbr); |
| 79 | 79 | ||
| 80 | input->name = "AB8500 POn(PowerOn) Key"; | 80 | input->name = "AB8500 POn(PowerOn) Key"; |
| 81 | input->dev.parent = &pdev->dev; | 81 | input->dev.parent = &pdev->dev; |
diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c new file mode 100644 index 000000000000..b67a3018b136 --- /dev/null +++ b/drivers/mfd/88pm800.c | |||
| @@ -0,0 +1,596 @@ | |||
| 1 | /* | ||
| 2 | * Base driver for Marvell 88PM800 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Marvell International Ltd. | ||
| 5 | * Haojian Zhuang <haojian.zhuang@marvell.com> | ||
| 6 | * Joseph(Yossi) Hanin <yhanin@marvell.com> | ||
| 7 | * Qiao Zhou <zhouqiao@marvell.com> | ||
| 8 | * | ||
| 9 | * This file is subject to the terms and conditions of the GNU General | ||
| 10 | * Public License. See the file "COPYING" in the main directory of this | ||
| 11 | * archive for more details. | ||
| 12 | * | ||
| 13 | * This program is distributed in the hope that it will be useful, | ||
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | * GNU General Public License for more details. | ||
| 17 | * | ||
| 18 | * You should have received a copy of the GNU General Public License | ||
| 19 | * along with this program; if not, write to the Free Software | ||
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <linux/kernel.h> | ||
| 24 | #include <linux/module.h> | ||
| 25 | #include <linux/i2c.h> | ||
| 26 | #include <linux/mfd/core.h> | ||
| 27 | #include <linux/mfd/88pm80x.h> | ||
| 28 | #include <linux/slab.h> | ||
| 29 | |||
| 30 | #define PM800_CHIP_ID (0x00) | ||
| 31 | |||
| 32 | /* Interrupt Registers */ | ||
| 33 | #define PM800_INT_STATUS1 (0x05) | ||
| 34 | #define PM800_ONKEY_INT_STS1 (1 << 0) | ||
| 35 | #define PM800_EXTON_INT_STS1 (1 << 1) | ||
| 36 | #define PM800_CHG_INT_STS1 (1 << 2) | ||
| 37 | #define PM800_BAT_INT_STS1 (1 << 3) | ||
| 38 | #define PM800_RTC_INT_STS1 (1 << 4) | ||
| 39 | #define PM800_CLASSD_OC_INT_STS1 (1 << 5) | ||
| 40 | |||
| 41 | #define PM800_INT_STATUS2 (0x06) | ||
| 42 | #define PM800_VBAT_INT_STS2 (1 << 0) | ||
| 43 | #define PM800_VSYS_INT_STS2 (1 << 1) | ||
| 44 | #define PM800_VCHG_INT_STS2 (1 << 2) | ||
| 45 | #define PM800_TINT_INT_STS2 (1 << 3) | ||
| 46 | #define PM800_GPADC0_INT_STS2 (1 << 4) | ||
| 47 | #define PM800_TBAT_INT_STS2 (1 << 5) | ||
| 48 | #define PM800_GPADC2_INT_STS2 (1 << 6) | ||
| 49 | #define PM800_GPADC3_INT_STS2 (1 << 7) | ||
| 50 | |||
| 51 | #define PM800_INT_STATUS3 (0x07) | ||
| 52 | |||
| 53 | #define PM800_INT_STATUS4 (0x08) | ||
| 54 | #define PM800_GPIO0_INT_STS4 (1 << 0) | ||
| 55 | #define PM800_GPIO1_INT_STS4 (1 << 1) | ||
| 56 | #define PM800_GPIO2_INT_STS4 (1 << 2) | ||
| 57 | #define PM800_GPIO3_INT_STS4 (1 << 3) | ||
| 58 | #define PM800_GPIO4_INT_STS4 (1 << 4) | ||
| 59 | |||
| 60 | #define PM800_INT_ENA_1 (0x09) | ||
| 61 | #define PM800_ONKEY_INT_ENA1 (1 << 0) | ||
| 62 | #define PM800_EXTON_INT_ENA1 (1 << 1) | ||
| 63 | #define PM800_CHG_INT_ENA1 (1 << 2) | ||
| 64 | #define PM800_BAT_INT_ENA1 (1 << 3) | ||
| 65 | #define PM800_RTC_INT_ENA1 (1 << 4) | ||
| 66 | #define PM800_CLASSD_OC_INT_ENA1 (1 << 5) | ||
| 67 | |||
| 68 | #define PM800_INT_ENA_2 (0x0A) | ||
| 69 | #define PM800_VBAT_INT_ENA2 (1 << 0) | ||
| 70 | #define PM800_VSYS_INT_ENA2 (1 << 1) | ||
| 71 | #define PM800_VCHG_INT_ENA2 (1 << 2) | ||
| 72 | #define PM800_TINT_INT_ENA2 (1 << 3) | ||
| 73 | |||
| 74 | #define PM800_INT_ENA_3 (0x0B) | ||
| 75 | #define PM800_GPADC0_INT_ENA3 (1 << 0) | ||
| 76 | #define PM800_GPADC1_INT_ENA3 (1 << 1) | ||
| 77 | #define PM800_GPADC2_INT_ENA3 (1 << 2) | ||
| 78 | #define PM800_GPADC3_INT_ENA3 (1 << 3) | ||
| 79 | #define PM800_GPADC4_INT_ENA3 (1 << 4) | ||
| 80 | |||
| 81 | #define PM800_INT_ENA_4 (0x0C) | ||
| 82 | #define PM800_GPIO0_INT_ENA4 (1 << 0) | ||
| 83 | #define PM800_GPIO1_INT_ENA4 (1 << 1) | ||
| 84 | #define PM800_GPIO2_INT_ENA4 (1 << 2) | ||
| 85 | #define PM800_GPIO3_INT_ENA4 (1 << 3) | ||
| 86 | #define PM800_GPIO4_INT_ENA4 (1 << 4) | ||
| 87 | |||
| 88 | /* number of INT_ENA & INT_STATUS regs */ | ||
| 89 | #define PM800_INT_REG_NUM (4) | ||
| 90 | |||
| 91 | /* Interrupt Number in 88PM800 */ | ||
| 92 | enum { | ||
| 93 | PM800_IRQ_ONKEY, /*EN1b0 *//*0 */ | ||
| 94 | PM800_IRQ_EXTON, /*EN1b1 */ | ||
| 95 | PM800_IRQ_CHG, /*EN1b2 */ | ||
| 96 | PM800_IRQ_BAT, /*EN1b3 */ | ||
| 97 | PM800_IRQ_RTC, /*EN1b4 */ | ||
| 98 | PM800_IRQ_CLASSD, /*EN1b5 *//*5 */ | ||
| 99 | PM800_IRQ_VBAT, /*EN2b0 */ | ||
| 100 | PM800_IRQ_VSYS, /*EN2b1 */ | ||
| 101 | PM800_IRQ_VCHG, /*EN2b2 */ | ||
| 102 | PM800_IRQ_TINT, /*EN2b3 */ | ||
| 103 | PM800_IRQ_GPADC0, /*EN3b0 *//*10 */ | ||
| 104 | PM800_IRQ_GPADC1, /*EN3b1 */ | ||
| 105 | PM800_IRQ_GPADC2, /*EN3b2 */ | ||
| 106 | PM800_IRQ_GPADC3, /*EN3b3 */ | ||
| 107 | PM800_IRQ_GPADC4, /*EN3b4 */ | ||
| 108 | PM800_IRQ_GPIO0, /*EN4b0 *//*15 */ | ||
| 109 | PM800_IRQ_GPIO1, /*EN4b1 */ | ||
| 110 | PM800_IRQ_GPIO2, /*EN4b2 */ | ||
| 111 | PM800_IRQ_GPIO3, /*EN4b3 */ | ||
| 112 | PM800_IRQ_GPIO4, /*EN4b4 *//*19 */ | ||
| 113 | PM800_MAX_IRQ, | ||
| 114 | }; | ||
| 115 | |||
| 116 | enum { | ||
| 117 | /* Procida */ | ||
| 118 | PM800_CHIP_A0 = 0x60, | ||
| 119 | PM800_CHIP_A1 = 0x61, | ||
| 120 | PM800_CHIP_B0 = 0x62, | ||
| 121 | PM800_CHIP_C0 = 0x63, | ||
| 122 | PM800_CHIP_END = PM800_CHIP_C0, | ||
| 123 | |||
| 124 | /* Make sure to update this to the last stepping */ | ||
| 125 | PM8XXX_CHIP_END = PM800_CHIP_END | ||
| 126 | }; | ||
| 127 | |||
| 128 | static const struct i2c_device_id pm80x_id_table[] = { | ||
| 129 | {"88PM800", CHIP_PM800}, | ||
| 130 | {} /* NULL terminated */ | ||
| 131 | }; | ||
| 132 | MODULE_DEVICE_TABLE(i2c, pm80x_id_table); | ||
| 133 | |||
| 134 | static struct resource rtc_resources[] = { | ||
| 135 | { | ||
| 136 | .name = "88pm80x-rtc", | ||
| 137 | .start = PM800_IRQ_RTC, | ||
| 138 | .end = PM800_IRQ_RTC, | ||
| 139 | .flags = IORESOURCE_IRQ, | ||
| 140 | }, | ||
| 141 | }; | ||
| 142 | |||
| 143 | static struct mfd_cell rtc_devs[] = { | ||
| 144 | { | ||
| 145 | .name = "88pm80x-rtc", | ||
| 146 | .num_resources = ARRAY_SIZE(rtc_resources), | ||
| 147 | .resources = &rtc_resources[0], | ||
| 148 | .id = -1, | ||
| 149 | }, | ||
| 150 | }; | ||
| 151 | |||
| 152 | static struct resource onkey_resources[] = { | ||
| 153 | { | ||
| 154 | .name = "88pm80x-onkey", | ||
| 155 | .start = PM800_IRQ_ONKEY, | ||
| 156 | .end = PM800_IRQ_ONKEY, | ||
| 157 | .flags = IORESOURCE_IRQ, | ||
| 158 | }, | ||
| 159 | }; | ||
| 160 | |||
| 161 | static struct mfd_cell onkey_devs[] = { | ||
| 162 | { | ||
| 163 | .name = "88pm80x-onkey", | ||
| 164 | .num_resources = 1, | ||
| 165 | .resources = &onkey_resources[0], | ||
| 166 | .id = -1, | ||
| 167 | }, | ||
| 168 | }; | ||
| 169 | |||
| 170 | static const struct regmap_irq pm800_irqs[] = { | ||
| 171 | /* INT0 */ | ||
| 172 | [PM800_IRQ_ONKEY] = { | ||
| 173 | .mask = PM800_ONKEY_INT_ENA1, | ||
| 174 | }, | ||
| 175 | [PM800_IRQ_EXTON] = { | ||
| 176 | .mask = PM800_EXTON_INT_ENA1, | ||
| 177 | }, | ||
| 178 | [PM800_IRQ_CHG] = { | ||
| 179 | .mask = PM800_CHG_INT_ENA1, | ||
| 180 | }, | ||
| 181 | [PM800_IRQ_BAT] = { | ||
| 182 | .mask = PM800_BAT_INT_ENA1, | ||
| 183 | }, | ||
| 184 | [PM800_IRQ_RTC] = { | ||
| 185 | .mask = PM800_RTC_INT_ENA1, | ||
| 186 | }, | ||
| 187 | [PM800_IRQ_CLASSD] = { | ||
| 188 | .mask = PM800_CLASSD_OC_INT_ENA1, | ||
| 189 | }, | ||
| 190 | /* INT1 */ | ||
| 191 | [PM800_IRQ_VBAT] = { | ||
| 192 | .reg_offset = 1, | ||
| 193 | .mask = PM800_VBAT_INT_ENA2, | ||
| 194 | }, | ||
| 195 | [PM800_IRQ_VSYS] = { | ||
| 196 | .reg_offset = 1, | ||
| 197 | .mask = PM800_VSYS_INT_ENA2, | ||
| 198 | }, | ||
| 199 | [PM800_IRQ_VCHG] = { | ||
| 200 | .reg_offset = 1, | ||
| 201 | .mask = PM800_VCHG_INT_ENA2, | ||
| 202 | }, | ||
| 203 | [PM800_IRQ_TINT] = { | ||
| 204 | .reg_offset = 1, | ||
| 205 | .mask = PM800_TINT_INT_ENA2, | ||
| 206 | }, | ||
| 207 | /* INT2 */ | ||
| 208 | [PM800_IRQ_GPADC0] = { | ||
| 209 | .reg_offset = 2, | ||
| 210 | .mask = PM800_GPADC0_INT_ENA3, | ||
| 211 | }, | ||
| 212 | [PM800_IRQ_GPADC1] = { | ||
| 213 | .reg_offset = 2, | ||
| 214 | .mask = PM800_GPADC1_INT_ENA3, | ||
| 215 | }, | ||
| 216 | [PM800_IRQ_GPADC2] = { | ||
| 217 | .reg_offset = 2, | ||
| 218 | .mask = PM800_GPADC2_INT_ENA3, | ||
| 219 | }, | ||
| 220 | [PM800_IRQ_GPADC3] = { | ||
| 221 | .reg_offset = 2, | ||
| 222 | .mask = PM800_GPADC3_INT_ENA3, | ||
| 223 | }, | ||
| 224 | [PM800_IRQ_GPADC4] = { | ||
| 225 | .reg_offset = 2, | ||
| 226 | .mask = PM800_GPADC4_INT_ENA3, | ||
| 227 | }, | ||
| 228 | /* INT3 */ | ||
| 229 | [PM800_IRQ_GPIO0] = { | ||
| 230 | .reg_offset = 3, | ||
| 231 | .mask = PM800_GPIO0_INT_ENA4, | ||
| 232 | }, | ||
| 233 | [PM800_IRQ_GPIO1] = { | ||
| 234 | .reg_offset = 3, | ||
| 235 | .mask = PM800_GPIO1_INT_ENA4, | ||
| 236 | }, | ||
| 237 | [PM800_IRQ_GPIO2] = { | ||
| 238 | .reg_offset = 3, | ||
| 239 | .mask = PM800_GPIO2_INT_ENA4, | ||
| 240 | }, | ||
| 241 | [PM800_IRQ_GPIO3] = { | ||
| 242 | .reg_offset = 3, | ||
| 243 | .mask = PM800_GPIO3_INT_ENA4, | ||
| 244 | }, | ||
| 245 | [PM800_IRQ_GPIO4] = { | ||
| 246 | .reg_offset = 3, | ||
| 247 | .mask = PM800_GPIO4_INT_ENA4, | ||
| 248 | }, | ||
| 249 | }; | ||
| 250 | |||
| 251 | static int __devinit device_gpadc_init(struct pm80x_chip *chip, | ||
| 252 | struct pm80x_platform_data *pdata) | ||
| 253 | { | ||
| 254 | struct pm80x_subchip *subchip = chip->subchip; | ||
| 255 | struct regmap *map = subchip->regmap_gpadc; | ||
| 256 | int data = 0, mask = 0, ret = 0; | ||
| 257 | |||
| 258 | if (!map) { | ||
| 259 | dev_warn(chip->dev, | ||
| 260 | "Warning: gpadc regmap is not available!\n"); | ||
| 261 | return -EINVAL; | ||
| 262 | } | ||
| 263 | /* | ||
| 264 | * initialize GPADC without activating it turn on GPADC | ||
| 265 | * measurments | ||
| 266 | */ | ||
| 267 | ret = regmap_update_bits(map, | ||
| 268 | PM800_GPADC_MISC_CONFIG2, | ||
| 269 | PM800_GPADC_MISC_GPFSM_EN, | ||
| 270 | PM800_GPADC_MISC_GPFSM_EN); | ||
| 271 | if (ret < 0) | ||
| 272 | goto out; | ||
| 273 | /* | ||
| 274 | * This function configures the ADC as requires for | ||
| 275 | * CP implementation.CP does not "own" the ADC configuration | ||
| 276 | * registers and relies on AP. | ||
| 277 | * Reason: enable automatic ADC measurements needed | ||
| 278 | * for CP to get VBAT and RF temperature readings. | ||
| 279 | */ | ||
| 280 | ret = regmap_update_bits(map, PM800_GPADC_MEAS_EN1, | ||
| 281 | PM800_MEAS_EN1_VBAT, PM800_MEAS_EN1_VBAT); | ||
| 282 | if (ret < 0) | ||
| 283 | goto out; | ||
| 284 | ret = regmap_update_bits(map, PM800_GPADC_MEAS_EN2, | ||
| 285 | (PM800_MEAS_EN2_RFTMP | PM800_MEAS_GP0_EN), | ||
| 286 | (PM800_MEAS_EN2_RFTMP | PM800_MEAS_GP0_EN)); | ||
| 287 | if (ret < 0) | ||
| 288 | goto out; | ||
| 289 | |||
| 290 | /* | ||
| 291 | * the defult of PM800 is GPADC operates at 100Ks/s rate | ||
| 292 | * and Number of GPADC slots with active current bias prior | ||
| 293 | * to GPADC sampling = 1 slot for all GPADCs set for | ||
| 294 | * Temprature mesurmants | ||
| 295 | */ | ||
| 296 | mask = (PM800_GPADC_GP_BIAS_EN0 | PM800_GPADC_GP_BIAS_EN1 | | ||
| 297 | PM800_GPADC_GP_BIAS_EN2 | PM800_GPADC_GP_BIAS_EN3); | ||
| 298 | |||
| 299 | if (pdata && (pdata->batt_det == 0)) | ||
| 300 | data = (PM800_GPADC_GP_BIAS_EN0 | PM800_GPADC_GP_BIAS_EN1 | | ||
| 301 | PM800_GPADC_GP_BIAS_EN2 | PM800_GPADC_GP_BIAS_EN3); | ||
| 302 | else | ||
| 303 | data = (PM800_GPADC_GP_BIAS_EN0 | PM800_GPADC_GP_BIAS_EN2 | | ||
| 304 | PM800_GPADC_GP_BIAS_EN3); | ||
| 305 | |||
| 306 | ret = regmap_update_bits(map, PM800_GP_BIAS_ENA1, mask, data); | ||
| 307 | if (ret < 0) | ||
| 308 | goto out; | ||
| 309 | |||
| 310 | dev_info(chip->dev, "pm800 device_gpadc_init: Done\n"); | ||
| 311 | return 0; | ||
| 312 | |||
| 313 | out: | ||
| 314 | dev_info(chip->dev, "pm800 device_gpadc_init: Failed!\n"); | ||
| 315 | return ret; | ||
| 316 | } | ||
| 317 | |||
| 318 | static int __devinit device_irq_init_800(struct pm80x_chip *chip) | ||
| 319 | { | ||
| 320 | struct regmap *map = chip->regmap; | ||
| 321 | unsigned long flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT; | ||
| 322 | int data, mask, ret = -EINVAL; | ||
| 323 | |||
| 324 | if (!map || !chip->irq) { | ||
| 325 | dev_err(chip->dev, "incorrect parameters\n"); | ||
| 326 | return -EINVAL; | ||
| 327 | } | ||
| 328 | |||
| 329 | /* | ||
| 330 | * irq_mode defines the way of clearing interrupt. it's read-clear by | ||
| 331 | * default. | ||
| 332 | */ | ||
| 333 | mask = | ||
| 334 | PM800_WAKEUP2_INV_INT | PM800_WAKEUP2_INT_CLEAR | | ||
| 335 | PM800_WAKEUP2_INT_MASK; | ||
| 336 | |||
| 337 | data = PM800_WAKEUP2_INT_CLEAR; | ||
| 338 | ret = regmap_update_bits(map, PM800_WAKEUP2, mask, data); | ||
| 339 | |||
| 340 | if (ret < 0) | ||
| 341 | goto out; | ||
| 342 | |||
| 343 | ret = | ||
| 344 | regmap_add_irq_chip(chip->regmap, chip->irq, flags, -1, | ||
| 345 | chip->regmap_irq_chip, &chip->irq_data); | ||
| 346 | |||
| 347 | out: | ||
| 348 | return ret; | ||
| 349 | } | ||
| 350 | |||
| 351 | static void device_irq_exit_800(struct pm80x_chip *chip) | ||
| 352 | { | ||
| 353 | regmap_del_irq_chip(chip->irq, chip->irq_data); | ||
| 354 | } | ||
| 355 | |||
| 356 | static struct regmap_irq_chip pm800_irq_chip = { | ||
| 357 | .name = "88pm800", | ||
| 358 | .irqs = pm800_irqs, | ||
| 359 | .num_irqs = ARRAY_SIZE(pm800_irqs), | ||
| 360 | |||
| 361 | .num_regs = 4, | ||
| 362 | .status_base = PM800_INT_STATUS1, | ||
| 363 | .mask_base = PM800_INT_ENA_1, | ||
| 364 | .ack_base = PM800_INT_STATUS1, | ||
| 365 | }; | ||
| 366 | |||
| 367 | static int pm800_pages_init(struct pm80x_chip *chip) | ||
| 368 | { | ||
| 369 | struct pm80x_subchip *subchip; | ||
| 370 | struct i2c_client *client = chip->client; | ||
| 371 | |||
| 372 | subchip = chip->subchip; | ||
| 373 | /* PM800 block power: i2c addr 0x31 */ | ||
| 374 | if (subchip->power_page_addr) { | ||
| 375 | subchip->power_page = | ||
| 376 | i2c_new_dummy(client->adapter, subchip->power_page_addr); | ||
| 377 | subchip->regmap_power = | ||
| 378 | devm_regmap_init_i2c(subchip->power_page, | ||
| 379 | &pm80x_regmap_config); | ||
| 380 | i2c_set_clientdata(subchip->power_page, chip); | ||
| 381 | } else | ||
| 382 | dev_info(chip->dev, | ||
| 383 | "PM800 block power 0x31: No power_page_addr\n"); | ||
| 384 | |||
| 385 | /* PM800 block GPADC: i2c addr 0x32 */ | ||
| 386 | if (subchip->gpadc_page_addr) { | ||
| 387 | subchip->gpadc_page = i2c_new_dummy(client->adapter, | ||
| 388 | subchip->gpadc_page_addr); | ||
| 389 | subchip->regmap_gpadc = | ||
| 390 | devm_regmap_init_i2c(subchip->gpadc_page, | ||
| 391 | &pm80x_regmap_config); | ||
| 392 | i2c_set_clientdata(subchip->gpadc_page, chip); | ||
| 393 | } else | ||
| 394 | dev_info(chip->dev, | ||
| 395 | "PM800 block GPADC 0x32: No gpadc_page_addr\n"); | ||
| 396 | |||
| 397 | return 0; | ||
| 398 | } | ||
| 399 | |||
| 400 | static void pm800_pages_exit(struct pm80x_chip *chip) | ||
| 401 | { | ||
| 402 | struct pm80x_subchip *subchip; | ||
| 403 | |||
| 404 | regmap_exit(chip->regmap); | ||
| 405 | i2c_unregister_device(chip->client); | ||
| 406 | |||
| 407 | subchip = chip->subchip; | ||
| 408 | if (subchip->power_page) { | ||
| 409 | regmap_exit(subchip->regmap_power); | ||
| 410 | i2c_unregister_device(subchip->power_page); | ||
| 411 | } | ||
| 412 | if (subchip->gpadc_page) { | ||
| 413 | regmap_exit(subchip->regmap_gpadc); | ||
| 414 | i2c_unregister_device(subchip->gpadc_page); | ||
| 415 | } | ||
| 416 | } | ||
| 417 | |||
| 418 | static int __devinit device_800_init(struct pm80x_chip *chip, | ||
| 419 | struct pm80x_platform_data *pdata) | ||
| 420 | { | ||
| 421 | int ret, pmic_id; | ||
| 422 | unsigned int val; | ||
| 423 | |||
| 424 | ret = regmap_read(chip->regmap, PM800_CHIP_ID, &val); | ||
| 425 | if (ret < 0) { | ||
| 426 | dev_err(chip->dev, "Failed to read CHIP ID: %d\n", ret); | ||
| 427 | goto out; | ||
| 428 | } | ||
| 429 | |||
| 430 | pmic_id = val & PM80X_VERSION_MASK; | ||
| 431 | |||
| 432 | if ((pmic_id >= PM800_CHIP_A0) && (pmic_id <= PM800_CHIP_END)) { | ||
| 433 | chip->version = val; | ||
| 434 | dev_info(chip->dev, | ||
| 435 | "88PM80x:Marvell 88PM800 (ID:0x%x) detected\n", val); | ||
| 436 | } else { | ||
| 437 | dev_err(chip->dev, | ||
| 438 | "Failed to detect Marvell 88PM800:ChipID[0x%x]\n", val); | ||
| 439 | ret = -EINVAL; | ||
| 440 | goto out; | ||
| 441 | } | ||
| 442 | |||
| 443 | /* | ||
| 444 | * alarm wake up bit will be clear in device_irq_init(), | ||
| 445 | * read before that | ||
| 446 | */ | ||
| 447 | ret = regmap_read(chip->regmap, PM800_RTC_CONTROL, &val); | ||
| 448 | if (ret < 0) { | ||
| 449 | dev_err(chip->dev, "Failed to read RTC register: %d\n", ret); | ||
| 450 | goto out; | ||
| 451 | } | ||
| 452 | if (val & PM800_ALARM_WAKEUP) { | ||
| 453 | if (pdata && pdata->rtc) | ||
| 454 | pdata->rtc->rtc_wakeup = 1; | ||
| 455 | } | ||
| 456 | |||
| 457 | ret = device_gpadc_init(chip, pdata); | ||
| 458 | if (ret < 0) { | ||
| 459 | dev_err(chip->dev, "[%s]Failed to init gpadc\n", __func__); | ||
| 460 | goto out; | ||
| 461 | } | ||
| 462 | |||
| 463 | chip->regmap_irq_chip = &pm800_irq_chip; | ||
| 464 | |||
| 465 | ret = device_irq_init_800(chip); | ||
| 466 | if (ret < 0) { | ||
| 467 | dev_err(chip->dev, "[%s]Failed to init pm800 irq\n", __func__); | ||
| 468 | goto out; | ||
| 469 | } | ||
| 470 | |||
| 471 | ret = | ||
| 472 | mfd_add_devices(chip->dev, 0, &onkey_devs[0], | ||
| 473 | ARRAY_SIZE(onkey_devs), &onkey_resources[0], 0); | ||
| 474 | if (ret < 0) { | ||
| 475 | dev_err(chip->dev, "Failed to add onkey subdev\n"); | ||
| 476 | goto out_dev; | ||
| 477 | } else | ||
| 478 | dev_info(chip->dev, "[%s]:Added mfd onkey_devs\n", __func__); | ||
| 479 | |||
| 480 | if (pdata && pdata->rtc) { | ||
| 481 | rtc_devs[0].platform_data = pdata->rtc; | ||
| 482 | rtc_devs[0].pdata_size = sizeof(struct pm80x_rtc_pdata); | ||
| 483 | ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0], | ||
| 484 | ARRAY_SIZE(rtc_devs), NULL, 0); | ||
| 485 | if (ret < 0) { | ||
| 486 | dev_err(chip->dev, "Failed to add rtc subdev\n"); | ||
| 487 | goto out_dev; | ||
| 488 | } else | ||
| 489 | dev_info(chip->dev, | ||
| 490 | "[%s]:Added mfd rtc_devs\n", __func__); | ||
| 491 | } | ||
| 492 | |||
| 493 | return 0; | ||
| 494 | out_dev: | ||
| 495 | mfd_remove_devices(chip->dev); | ||
| 496 | device_irq_exit_800(chip); | ||
| 497 | out: | ||
| 498 | return ret; | ||
| 499 | } | ||
| 500 | |||
| 501 | static int __devinit pm800_probe(struct i2c_client *client, | ||
| 502 | const struct i2c_device_id *id) | ||
| 503 | { | ||
| 504 | int ret = 0; | ||
| 505 | struct pm80x_chip *chip; | ||
| 506 | struct pm80x_platform_data *pdata = client->dev.platform_data; | ||
| 507 | struct pm80x_subchip *subchip; | ||
| 508 | |||
| 509 | ret = pm80x_init(client, id); | ||
| 510 | if (ret) { | ||
| 511 | dev_err(&client->dev, "pm800_init fail\n"); | ||
| 512 | goto out_init; | ||
| 513 | } | ||
| 514 | |||
| 515 | chip = i2c_get_clientdata(client); | ||
| 516 | |||
| 517 | /* init subchip for PM800 */ | ||
| 518 | subchip = | ||
| 519 | devm_kzalloc(&client->dev, sizeof(struct pm80x_subchip), | ||
| 520 | GFP_KERNEL); | ||
| 521 | if (!subchip) { | ||
| 522 | ret = -ENOMEM; | ||
| 523 | goto err_subchip_alloc; | ||
| 524 | } | ||
| 525 | |||
| 526 | subchip->power_page_addr = pdata->power_page_addr; | ||
| 527 | subchip->gpadc_page_addr = pdata->gpadc_page_addr; | ||
| 528 | chip->subchip = subchip; | ||
| 529 | |||
| 530 | ret = device_800_init(chip, pdata); | ||
| 531 | if (ret) { | ||
| 532 | dev_err(chip->dev, "%s id 0x%x failed!\n", __func__, chip->id); | ||
| 533 | goto err_800_init; | ||
| 534 | } | ||
| 535 | |||
| 536 | ret = pm800_pages_init(chip); | ||
| 537 | if (ret) { | ||
| 538 | dev_err(&client->dev, "pm800_pages_init failed!\n"); | ||
| 539 | goto err_page_init; | ||
| 540 | } | ||
| 541 | |||
| 542 | if (pdata->plat_config) | ||
| 543 | pdata->plat_config(chip, pdata); | ||
| 544 | |||
| 545 | err_page_init: | ||
| 546 | mfd_remove_devices(chip->dev); | ||
| 547 | device_irq_exit_800(chip); | ||
| 548 | err_800_init: | ||
| 549 | devm_kfree(&client->dev, subchip); | ||
| 550 | err_subchip_alloc: | ||
| 551 | pm80x_deinit(client); | ||
| 552 | out_init: | ||
| 553 | return ret; | ||
| 554 | } | ||
| 555 | |||
| 556 | static int __devexit pm800_remove(struct i2c_client *client) | ||
| 557 | { | ||
| 558 | struct pm80x_chip *chip = i2c_get_clientdata(client); | ||
| 559 | |||
| 560 | mfd_remove_devices(chip->dev); | ||
| 561 | device_irq_exit_800(chip); | ||
| 562 | |||
| 563 | pm800_pages_exit(chip); | ||
| 564 | devm_kfree(&client->dev, chip->subchip); | ||
| 565 | |||
| 566 | pm80x_deinit(client); | ||
| 567 | |||
| 568 | return 0; | ||
| 569 | } | ||
| 570 | |||
| 571 | static struct i2c_driver pm800_driver = { | ||
| 572 | .driver = { | ||
| 573 | .name = "88PM80X", | ||
| 574 | .owner = THIS_MODULE, | ||
| 575 | .pm = &pm80x_pm_ops, | ||
| 576 | }, | ||
| 577 | .probe = pm800_probe, | ||
| 578 | .remove = __devexit_p(pm800_remove), | ||
| 579 | .id_table = pm80x_id_table, | ||
| 580 | }; | ||
| 581 | |||
| 582 | static int __init pm800_i2c_init(void) | ||
| 583 | { | ||
| 584 | return i2c_add_driver(&pm800_driver); | ||
| 585 | } | ||
| 586 | subsys_initcall(pm800_i2c_init); | ||
| 587 | |||
| 588 | static void __exit pm800_i2c_exit(void) | ||
| 589 | { | ||
| 590 | i2c_del_driver(&pm800_driver); | ||
| 591 | } | ||
| 592 | module_exit(pm800_i2c_exit); | ||
| 593 | |||
| 594 | MODULE_DESCRIPTION("PMIC Driver for Marvell 88PM800"); | ||
| 595 | MODULE_AUTHOR("Qiao Zhou <zhouqiao@marvell.com>"); | ||
| 596 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c new file mode 100644 index 000000000000..6146583589f6 --- /dev/null +++ b/drivers/mfd/88pm805.c | |||
| @@ -0,0 +1,301 @@ | |||
| 1 | /* | ||
| 2 | * Base driver for Marvell 88PM805 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Marvell International Ltd. | ||
| 5 | * Haojian Zhuang <haojian.zhuang@marvell.com> | ||
| 6 | * Joseph(Yossi) Hanin <yhanin@marvell.com> | ||
| 7 | * Qiao Zhou <zhouqiao@marvell.com> | ||
| 8 | * | ||
| 9 | * This file is subject to the terms and conditions of the GNU General | ||
| 10 | * Public License. See the file "COPYING" in the main directory of this | ||
| 11 | * archive for more details. | ||
| 12 | * | ||
| 13 | * This program is distributed in the hope that it will be useful, | ||
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | * GNU General Public License for more details. | ||
| 17 | * | ||
| 18 | * You should have received a copy of the GNU General Public License | ||
| 19 | * along with this program; if not, write to the Free Software | ||
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <linux/kernel.h> | ||
| 24 | #include <linux/module.h> | ||
| 25 | #include <linux/i2c.h> | ||
| 26 | #include <linux/irq.h> | ||
| 27 | #include <linux/mfd/core.h> | ||
| 28 | #include <linux/mfd/88pm80x.h> | ||
| 29 | #include <linux/slab.h> | ||
| 30 | #include <linux/delay.h> | ||
| 31 | |||
| 32 | #define PM805_CHIP_ID (0x00) | ||
| 33 | |||
| 34 | static const struct i2c_device_id pm80x_id_table[] = { | ||
| 35 | {"88PM805", CHIP_PM805}, | ||
| 36 | {} /* NULL terminated */ | ||
| 37 | }; | ||
| 38 | MODULE_DEVICE_TABLE(i2c, pm80x_id_table); | ||
| 39 | |||
| 40 | /* Interrupt Number in 88PM805 */ | ||
| 41 | enum { | ||
| 42 | PM805_IRQ_LDO_OFF, /*0 */ | ||
| 43 | PM805_IRQ_SRC_DPLL_LOCK, /*1 */ | ||
| 44 | PM805_IRQ_CLIP_FAULT, | ||
| 45 | PM805_IRQ_MIC_CONFLICT, | ||
| 46 | PM805_IRQ_HP2_SHRT, | ||
| 47 | PM805_IRQ_HP1_SHRT, /*5 */ | ||
| 48 | PM805_IRQ_FINE_PLL_FAULT, | ||
| 49 | PM805_IRQ_RAW_PLL_FAULT, | ||
| 50 | PM805_IRQ_VOLP_BTN_DET, | ||
| 51 | PM805_IRQ_VOLM_BTN_DET, | ||
| 52 | PM805_IRQ_SHRT_BTN_DET, /*10 */ | ||
| 53 | PM805_IRQ_MIC_DET, /*11 */ | ||
| 54 | |||
| 55 | PM805_MAX_IRQ, | ||
| 56 | }; | ||
| 57 | |||
| 58 | static struct resource codec_resources[] = { | ||
| 59 | { | ||
| 60 | /* Headset microphone insertion or removal */ | ||
| 61 | .name = "micin", | ||
| 62 | .start = PM805_IRQ_MIC_DET, | ||
| 63 | .end = PM805_IRQ_MIC_DET, | ||
| 64 | .flags = IORESOURCE_IRQ, | ||
| 65 | }, | ||
| 66 | { | ||
| 67 | /* Audio short HP1 */ | ||
| 68 | .name = "audio-short1", | ||
| 69 | .start = PM805_IRQ_HP1_SHRT, | ||
| 70 | .end = PM805_IRQ_HP1_SHRT, | ||
| 71 | .flags = IORESOURCE_IRQ, | ||
| 72 | }, | ||
| 73 | { | ||
| 74 | /* Audio short HP2 */ | ||
| 75 | .name = "audio-short2", | ||
| 76 | .start = PM805_IRQ_HP2_SHRT, | ||
| 77 | .end = PM805_IRQ_HP2_SHRT, | ||
| 78 | .flags = IORESOURCE_IRQ, | ||
| 79 | }, | ||
| 80 | }; | ||
| 81 | |||
| 82 | static struct mfd_cell codec_devs[] = { | ||
| 83 | { | ||
| 84 | .name = "88pm80x-codec", | ||
| 85 | .num_resources = ARRAY_SIZE(codec_resources), | ||
| 86 | .resources = &codec_resources[0], | ||
| 87 | .id = -1, | ||
| 88 | }, | ||
| 89 | }; | ||
| 90 | |||
| 91 | static struct regmap_irq pm805_irqs[] = { | ||
| 92 | /* INT0 */ | ||
| 93 | [PM805_IRQ_LDO_OFF] = { | ||
| 94 | .mask = PM805_INT1_HP1_SHRT, | ||
| 95 | }, | ||
| 96 | [PM805_IRQ_SRC_DPLL_LOCK] = { | ||
| 97 | .mask = PM805_INT1_HP2_SHRT, | ||
| 98 | }, | ||
| 99 | [PM805_IRQ_CLIP_FAULT] = { | ||
| 100 | .mask = PM805_INT1_MIC_CONFLICT, | ||
| 101 | }, | ||
| 102 | [PM805_IRQ_MIC_CONFLICT] = { | ||
| 103 | .mask = PM805_INT1_CLIP_FAULT, | ||
| 104 | }, | ||
| 105 | [PM805_IRQ_HP2_SHRT] = { | ||
| 106 | .mask = PM805_INT1_LDO_OFF, | ||
| 107 | }, | ||
| 108 | [PM805_IRQ_HP1_SHRT] = { | ||
| 109 | .mask = PM805_INT1_SRC_DPLL_LOCK, | ||
| 110 | }, | ||
| 111 | /* INT1 */ | ||
| 112 | [PM805_IRQ_FINE_PLL_FAULT] = { | ||
| 113 | .reg_offset = 1, | ||
| 114 | .mask = PM805_INT2_MIC_DET, | ||
| 115 | }, | ||
| 116 | [PM805_IRQ_RAW_PLL_FAULT] = { | ||
| 117 | .reg_offset = 1, | ||
| 118 | .mask = PM805_INT2_SHRT_BTN_DET, | ||
| 119 | }, | ||
| 120 | [PM805_IRQ_VOLP_BTN_DET] = { | ||
| 121 | .reg_offset = 1, | ||
| 122 | .mask = PM805_INT2_VOLM_BTN_DET, | ||
| 123 | }, | ||
| 124 | [PM805_IRQ_VOLM_BTN_DET] = { | ||
| 125 | .reg_offset = 1, | ||
| 126 | .mask = PM805_INT2_VOLP_BTN_DET, | ||
| 127 | }, | ||
| 128 | [PM805_IRQ_SHRT_BTN_DET] = { | ||
| 129 | .reg_offset = 1, | ||
| 130 | .mask = PM805_INT2_RAW_PLL_FAULT, | ||
| 131 | }, | ||
| 132 | [PM805_IRQ_MIC_DET] = { | ||
| 133 | .reg_offset = 1, | ||
| 134 | .mask = PM805_INT2_FINE_PLL_FAULT, | ||
| 135 | }, | ||
| 136 | }; | ||
| 137 | |||
| 138 | static int __devinit device_irq_init_805(struct pm80x_chip *chip) | ||
| 139 | { | ||
| 140 | struct regmap *map = chip->regmap; | ||
| 141 | unsigned long flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT; | ||
| 142 | int data, mask, ret = -EINVAL; | ||
| 143 | |||
| 144 | if (!map || !chip->irq) { | ||
| 145 | dev_err(chip->dev, "incorrect parameters\n"); | ||
| 146 | return -EINVAL; | ||
| 147 | } | ||
| 148 | |||
| 149 | /* | ||
| 150 | * irq_mode defines the way of clearing interrupt. it's read-clear by | ||
| 151 | * default. | ||
| 152 | */ | ||
| 153 | mask = | ||
| 154 | PM805_STATUS0_INT_CLEAR | PM805_STATUS0_INV_INT | | ||
| 155 | PM800_STATUS0_INT_MASK; | ||
| 156 | |||
| 157 | data = PM805_STATUS0_INT_CLEAR; | ||
| 158 | ret = regmap_update_bits(map, PM805_INT_STATUS0, mask, data); | ||
| 159 | /* | ||
| 160 | * PM805_INT_STATUS is under 32K clock domain, so need to | ||
| 161 | * add proper delay before the next I2C register access. | ||
| 162 | */ | ||
| 163 | msleep(1); | ||
| 164 | |||
| 165 | if (ret < 0) | ||
| 166 | goto out; | ||
| 167 | |||
| 168 | ret = | ||
| 169 | regmap_add_irq_chip(chip->regmap, chip->irq, flags, -1, | ||
| 170 | chip->regmap_irq_chip, &chip->irq_data); | ||
| 171 | |||
| 172 | out: | ||
| 173 | return ret; | ||
| 174 | } | ||
| 175 | |||
| 176 | static void device_irq_exit_805(struct pm80x_chip *chip) | ||
| 177 | { | ||
| 178 | regmap_del_irq_chip(chip->irq, chip->irq_data); | ||
| 179 | } | ||
| 180 | |||
| 181 | static struct regmap_irq_chip pm805_irq_chip = { | ||
| 182 | .name = "88pm805", | ||
| 183 | .irqs = pm805_irqs, | ||
| 184 | .num_irqs = ARRAY_SIZE(pm805_irqs), | ||
| 185 | |||
| 186 | .num_regs = 2, | ||
| 187 | .status_base = PM805_INT_STATUS1, | ||
| 188 | .mask_base = PM805_INT_MASK1, | ||
| 189 | .ack_base = PM805_INT_STATUS1, | ||
| 190 | }; | ||
| 191 | |||
| 192 | static int __devinit device_805_init(struct pm80x_chip *chip) | ||
| 193 | { | ||
| 194 | int ret = 0; | ||
| 195 | unsigned int val; | ||
| 196 | struct regmap *map = chip->regmap; | ||
| 197 | |||
| 198 | if (!map) { | ||
| 199 | dev_err(chip->dev, "regmap is invalid\n"); | ||
| 200 | return -EINVAL; | ||
| 201 | } | ||
| 202 | |||
| 203 | ret = regmap_read(map, PM805_CHIP_ID, &val); | ||
| 204 | if (ret < 0) { | ||
| 205 | dev_err(chip->dev, "Failed to read CHIP ID: %d\n", ret); | ||
| 206 | goto out_irq_init; | ||
| 207 | } | ||
| 208 | chip->version = val; | ||
| 209 | |||
| 210 | chip->regmap_irq_chip = &pm805_irq_chip; | ||
| 211 | |||
| 212 | ret = device_irq_init_805(chip); | ||
| 213 | if (ret < 0) { | ||
| 214 | dev_err(chip->dev, "Failed to init pm805 irq!\n"); | ||
| 215 | goto out_irq_init; | ||
| 216 | } | ||
| 217 | |||
| 218 | ret = mfd_add_devices(chip->dev, 0, &codec_devs[0], | ||
| 219 | ARRAY_SIZE(codec_devs), &codec_resources[0], 0); | ||
| 220 | if (ret < 0) { | ||
| 221 | dev_err(chip->dev, "Failed to add codec subdev\n"); | ||
| 222 | goto out_codec; | ||
| 223 | } else | ||
| 224 | dev_info(chip->dev, "[%s]:Added mfd codec_devs\n", __func__); | ||
| 225 | |||
| 226 | return 0; | ||
| 227 | |||
| 228 | out_codec: | ||
| 229 | device_irq_exit_805(chip); | ||
| 230 | out_irq_init: | ||
| 231 | return ret; | ||
| 232 | } | ||
| 233 | |||
| 234 | static int __devinit pm805_probe(struct i2c_client *client, | ||
| 235 | const struct i2c_device_id *id) | ||
| 236 | { | ||
| 237 | int ret = 0; | ||
| 238 | struct pm80x_chip *chip; | ||
| 239 | struct pm80x_platform_data *pdata = client->dev.platform_data; | ||
| 240 | |||
| 241 | ret = pm80x_init(client, id); | ||
| 242 | if (ret) { | ||
| 243 | dev_err(&client->dev, "pm805_init fail!\n"); | ||
| 244 | goto out_init; | ||
| 245 | } | ||
| 246 | |||
| 247 | chip = i2c_get_clientdata(client); | ||
| 248 | |||
| 249 | ret = device_805_init(chip); | ||
| 250 | if (ret) { | ||
| 251 | dev_err(chip->dev, "%s id 0x%x failed!\n", __func__, chip->id); | ||
| 252 | goto err_805_init; | ||
| 253 | } | ||
| 254 | |||
| 255 | if (pdata->plat_config) | ||
| 256 | pdata->plat_config(chip, pdata); | ||
| 257 | |||
| 258 | err_805_init: | ||
| 259 | pm80x_deinit(client); | ||
| 260 | out_init: | ||
| 261 | return ret; | ||
| 262 | } | ||
| 263 | |||
| 264 | static int __devexit pm805_remove(struct i2c_client *client) | ||
| 265 | { | ||
| 266 | struct pm80x_chip *chip = i2c_get_clientdata(client); | ||
| 267 | |||
| 268 | mfd_remove_devices(chip->dev); | ||
| 269 | device_irq_exit_805(chip); | ||
| 270 | |||
| 271 | pm80x_deinit(client); | ||
| 272 | |||
| 273 | return 0; | ||
| 274 | } | ||
| 275 | |||
| 276 | static struct i2c_driver pm805_driver = { | ||
| 277 | .driver = { | ||
| 278 | .name = "88PM80X", | ||
| 279 | .owner = THIS_MODULE, | ||
| 280 | .pm = &pm80x_pm_ops, | ||
| 281 | }, | ||
| 282 | .probe = pm805_probe, | ||
| 283 | .remove = __devexit_p(pm805_remove), | ||
| 284 | .id_table = pm80x_id_table, | ||
| 285 | }; | ||
| 286 | |||
| 287 | static int __init pm805_i2c_init(void) | ||
| 288 | { | ||
| 289 | return i2c_add_driver(&pm805_driver); | ||
| 290 | } | ||
| 291 | subsys_initcall(pm805_i2c_init); | ||
| 292 | |||
| 293 | static void __exit pm805_i2c_exit(void) | ||
| 294 | { | ||
| 295 | i2c_del_driver(&pm805_driver); | ||
| 296 | } | ||
| 297 | module_exit(pm805_i2c_exit); | ||
| 298 | |||
| 299 | MODULE_DESCRIPTION("PMIC Driver for Marvell 88PM805"); | ||
| 300 | MODULE_AUTHOR("Qiao Zhou <zhouqiao@marvell.com>"); | ||
| 301 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mfd/88pm80x.c b/drivers/mfd/88pm80x.c new file mode 100644 index 000000000000..cd0bf527d764 --- /dev/null +++ b/drivers/mfd/88pm80x.c | |||
| @@ -0,0 +1,145 @@ | |||
| 1 | /* | ||
| 2 | * I2C driver for Marvell 88PM80x | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Marvell International Ltd. | ||
| 5 | * Haojian Zhuang <haojian.zhuang@marvell.com> | ||
| 6 | * Joseph(Yossi) Hanin <yhanin@marvell.com> | ||
| 7 | * Qiao Zhou <zhouqiao@marvell.com> | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | #include <linux/kernel.h> | ||
| 14 | #include <linux/module.h> | ||
| 15 | #include <linux/i2c.h> | ||
| 16 | #include <linux/mfd/88pm80x.h> | ||
| 17 | #include <linux/slab.h> | ||
| 18 | #include <linux/uaccess.h> | ||
| 19 | #include <linux/err.h> | ||
| 20 | |||
| 21 | /* | ||
| 22 | * workaround: some registers needed by pm805 are defined in pm800, so | ||
| 23 | * need to use this global variable to maintain the relation between | ||
| 24 | * pm800 and pm805. would remove it after HW chip fixes the issue. | ||
| 25 | */ | ||
| 26 | static struct pm80x_chip *g_pm80x_chip; | ||
| 27 | |||
| 28 | const struct regmap_config pm80x_regmap_config = { | ||
| 29 | .reg_bits = 8, | ||
| 30 | .val_bits = 8, | ||
| 31 | }; | ||
| 32 | EXPORT_SYMBOL_GPL(pm80x_regmap_config); | ||
| 33 | |||
| 34 | int __devinit pm80x_init(struct i2c_client *client, | ||
| 35 | const struct i2c_device_id *id) | ||
| 36 | { | ||
| 37 | struct pm80x_chip *chip; | ||
| 38 | struct regmap *map; | ||
| 39 | int ret = 0; | ||
| 40 | |||
| 41 | chip = | ||
| 42 | devm_kzalloc(&client->dev, sizeof(struct pm80x_chip), GFP_KERNEL); | ||
| 43 | if (!chip) | ||
| 44 | return -ENOMEM; | ||
| 45 | |||
| 46 | map = devm_regmap_init_i2c(client, &pm80x_regmap_config); | ||
| 47 | if (IS_ERR(map)) { | ||
| 48 | ret = PTR_ERR(map); | ||
| 49 | dev_err(&client->dev, "Failed to allocate register map: %d\n", | ||
| 50 | ret); | ||
| 51 | goto err_regmap_init; | ||
| 52 | } | ||
| 53 | |||
| 54 | chip->id = id->driver_data; | ||
| 55 | if (chip->id < CHIP_PM800 || chip->id > CHIP_PM805) { | ||
| 56 | ret = -EINVAL; | ||
| 57 | goto err_chip_id; | ||
| 58 | } | ||
| 59 | |||
| 60 | chip->client = client; | ||
| 61 | chip->regmap = map; | ||
| 62 | |||
| 63 | chip->irq = client->irq; | ||
| 64 | |||
| 65 | chip->dev = &client->dev; | ||
| 66 | dev_set_drvdata(chip->dev, chip); | ||
| 67 | i2c_set_clientdata(chip->client, chip); | ||
| 68 | |||
| 69 | device_init_wakeup(&client->dev, 1); | ||
| 70 | |||
| 71 | /* | ||
| 72 | * workaround: set g_pm80x_chip to the first probed chip. if the | ||
| 73 | * second chip is probed, just point to the companion to each | ||
| 74 | * other so that pm805 can access those specific register. would | ||
| 75 | * remove it after HW chip fixes the issue. | ||
| 76 | */ | ||
| 77 | if (!g_pm80x_chip) | ||
| 78 | g_pm80x_chip = chip; | ||
| 79 | else { | ||
| 80 | chip->companion = g_pm80x_chip->client; | ||
| 81 | g_pm80x_chip->companion = chip->client; | ||
| 82 | } | ||
| 83 | |||
| 84 | return 0; | ||
| 85 | |||
| 86 | err_chip_id: | ||
| 87 | regmap_exit(map); | ||
| 88 | err_regmap_init: | ||
| 89 | devm_kfree(&client->dev, chip); | ||
| 90 | return ret; | ||
| 91 | } | ||
| 92 | EXPORT_SYMBOL_GPL(pm80x_init); | ||
| 93 | |||
| 94 | int pm80x_deinit(struct i2c_client *client) | ||
| 95 | { | ||
| 96 | struct pm80x_chip *chip = i2c_get_clientdata(client); | ||
| 97 | |||
| 98 | /* | ||
| 99 | * workaround: clear the dependency between pm800 and pm805. | ||
| 100 | * would remove it after HW chip fixes the issue. | ||
| 101 | */ | ||
| 102 | if (g_pm80x_chip->companion) | ||
| 103 | g_pm80x_chip->companion = NULL; | ||
| 104 | else | ||
| 105 | g_pm80x_chip = NULL; | ||
| 106 | |||
| 107 | regmap_exit(chip->regmap); | ||
| 108 | devm_kfree(&client->dev, chip); | ||
| 109 | |||
| 110 | return 0; | ||
| 111 | } | ||
| 112 | EXPORT_SYMBOL_GPL(pm80x_deinit); | ||
| 113 | |||
| 114 | #ifdef CONFIG_PM_SLEEP | ||
| 115 | static int pm80x_suspend(struct device *dev) | ||
| 116 | { | ||
| 117 | struct i2c_client *client = container_of(dev, struct i2c_client, dev); | ||
| 118 | struct pm80x_chip *chip = i2c_get_clientdata(client); | ||
| 119 | |||
| 120 | if (chip && chip->wu_flag) | ||
| 121 | if (device_may_wakeup(chip->dev)) | ||
| 122 | enable_irq_wake(chip->irq); | ||
| 123 | |||
| 124 | return 0; | ||
| 125 | } | ||
| 126 | |||
| 127 | static int pm80x_resume(struct device *dev) | ||
| 128 | { | ||
| 129 | struct i2c_client *client = container_of(dev, struct i2c_client, dev); | ||
| 130 | struct pm80x_chip *chip = i2c_get_clientdata(client); | ||
| 131 | |||
| 132 | if (chip && chip->wu_flag) | ||
| 133 | if (device_may_wakeup(chip->dev)) | ||
| 134 | disable_irq_wake(chip->irq); | ||
| 135 | |||
| 136 | return 0; | ||
| 137 | } | ||
| 138 | #endif | ||
| 139 | |||
| 140 | SIMPLE_DEV_PM_OPS(pm80x_pm_ops, pm80x_suspend, pm80x_resume); | ||
| 141 | EXPORT_SYMBOL_GPL(pm80x_pm_ops); | ||
| 142 | |||
| 143 | MODULE_DESCRIPTION("I2C Driver for Marvell 88PM80x"); | ||
| 144 | MODULE_AUTHOR("Qiao Zhou <zhouqiao@marvell.com>"); | ||
| 145 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mfd/88pm860x-core.c b/drivers/mfd/88pm860x-core.c index 87bd5ba38d5b..d09918cf1b15 100644 --- a/drivers/mfd/88pm860x-core.c +++ b/drivers/mfd/88pm860x-core.c | |||
| @@ -90,6 +90,10 @@ static struct resource charger_resources[] __devinitdata = { | |||
| 90 | {PM8607_IRQ_VCHG, PM8607_IRQ_VCHG, "vchg voltage", IORESOURCE_IRQ,}, | 90 | {PM8607_IRQ_VCHG, PM8607_IRQ_VCHG, "vchg voltage", IORESOURCE_IRQ,}, |
| 91 | }; | 91 | }; |
| 92 | 92 | ||
| 93 | static struct resource preg_resources[] __devinitdata = { | ||
| 94 | {PM8606_ID_PREG, PM8606_ID_PREG, "preg", IORESOURCE_IO,}, | ||
| 95 | }; | ||
| 96 | |||
| 93 | static struct resource rtc_resources[] __devinitdata = { | 97 | static struct resource rtc_resources[] __devinitdata = { |
| 94 | {PM8607_IRQ_RTC, PM8607_IRQ_RTC, "rtc", IORESOURCE_IRQ,}, | 98 | {PM8607_IRQ_RTC, PM8607_IRQ_RTC, "rtc", IORESOURCE_IRQ,}, |
| 95 | }; | 99 | }; |
| @@ -142,9 +146,19 @@ static struct mfd_cell codec_devs[] = { | |||
| 142 | {"88pm860x-codec", -1,}, | 146 | {"88pm860x-codec", -1,}, |
| 143 | }; | 147 | }; |
| 144 | 148 | ||
| 149 | static struct regulator_consumer_supply preg_supply[] = { | ||
| 150 | REGULATOR_SUPPLY("preg", "charger-manager"), | ||
| 151 | }; | ||
| 152 | |||
| 153 | static struct regulator_init_data preg_init_data = { | ||
| 154 | .num_consumer_supplies = ARRAY_SIZE(preg_supply), | ||
| 155 | .consumer_supplies = &preg_supply[0], | ||
| 156 | }; | ||
| 157 | |||
| 145 | static struct mfd_cell power_devs[] = { | 158 | static struct mfd_cell power_devs[] = { |
| 146 | {"88pm860x-battery", -1,}, | 159 | {"88pm860x-battery", -1,}, |
| 147 | {"88pm860x-charger", -1,}, | 160 | {"88pm860x-charger", -1,}, |
| 161 | {"88pm860x-preg", -1,}, | ||
| 148 | }; | 162 | }; |
| 149 | 163 | ||
| 150 | static struct mfd_cell rtc_devs[] = { | 164 | static struct mfd_cell rtc_devs[] = { |
| @@ -768,6 +782,15 @@ static void __devinit device_power_init(struct pm860x_chip *chip, | |||
| 768 | &charger_resources[0], chip->irq_base); | 782 | &charger_resources[0], chip->irq_base); |
| 769 | if (ret < 0) | 783 | if (ret < 0) |
| 770 | dev_err(chip->dev, "Failed to add charger subdev\n"); | 784 | dev_err(chip->dev, "Failed to add charger subdev\n"); |
| 785 | |||
| 786 | power_devs[2].platform_data = &preg_init_data; | ||
| 787 | power_devs[2].pdata_size = sizeof(struct regulator_init_data); | ||
| 788 | power_devs[2].num_resources = ARRAY_SIZE(preg_resources); | ||
| 789 | power_devs[2].resources = &preg_resources[0], | ||
| 790 | ret = mfd_add_devices(chip->dev, 0, &power_devs[2], 1, | ||
| 791 | &preg_resources[0], chip->irq_base); | ||
| 792 | if (ret < 0) | ||
| 793 | dev_err(chip->dev, "Failed to add preg subdev\n"); | ||
| 771 | } | 794 | } |
| 772 | 795 | ||
| 773 | static void __devinit device_onkey_init(struct pm860x_chip *chip, | 796 | static void __devinit device_onkey_init(struct pm860x_chip *chip, |
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 4fdc04ef37c2..d1facef28a60 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig | |||
| @@ -7,6 +7,7 @@ menu "Multifunction device drivers" | |||
| 7 | 7 | ||
| 8 | config MFD_CORE | 8 | config MFD_CORE |
| 9 | tristate | 9 | tristate |
| 10 | select IRQ_DOMAIN | ||
| 10 | default n | 11 | default n |
| 11 | 12 | ||
| 12 | config MFD_88PM860X | 13 | config MFD_88PM860X |
| @@ -20,6 +21,30 @@ config MFD_88PM860X | |||
| 20 | select individual components like voltage regulators, RTC and | 21 | select individual components like voltage regulators, RTC and |
| 21 | battery-charger under the corresponding menus. | 22 | battery-charger under the corresponding menus. |
| 22 | 23 | ||
| 24 | config MFD_88PM800 | ||
| 25 | tristate "Support Marvell 88PM800" | ||
| 26 | depends on I2C=y && GENERIC_HARDIRQS | ||
| 27 | select REGMAP_I2C | ||
| 28 | select REGMAP_IRQ | ||
| 29 | select MFD_CORE | ||
| 30 | help | ||
| 31 | This supports for Marvell 88PM800 Power Management IC. | ||
| 32 | This includes the I2C driver and the core APIs _only_, you have to | ||
| 33 | select individual components like voltage regulators, RTC and | ||
| 34 | battery-charger under the corresponding menus. | ||
| 35 | |||
| 36 | config MFD_88PM805 | ||
| 37 | tristate "Support Marvell 88PM805" | ||
| 38 | depends on I2C=y && GENERIC_HARDIRQS | ||
| 39 | select REGMAP_I2C | ||
| 40 | select REGMAP_IRQ | ||
| 41 | select MFD_CORE | ||
| 42 | help | ||
| 43 | This supports for Marvell 88PM805 Power Management IC. This includes | ||
| 44 | the I2C driver and the core APIs _only_, you have to select individual | ||
| 45 | components like codec device, headset/Mic device under the | ||
| 46 | corresponding menus. | ||
| 47 | |||
| 23 | config MFD_SM501 | 48 | config MFD_SM501 |
| 24 | tristate "Support for Silicon Motion SM501" | 49 | tristate "Support for Silicon Motion SM501" |
| 25 | ---help--- | 50 | ---help--- |
| @@ -173,8 +198,9 @@ config MFD_TPS65217 | |||
| 173 | 198 | ||
| 174 | config MFD_TPS6586X | 199 | config MFD_TPS6586X |
| 175 | bool "TPS6586x Power Management chips" | 200 | bool "TPS6586x Power Management chips" |
| 176 | depends on I2C=y && GPIOLIB && GENERIC_HARDIRQS | 201 | depends on I2C=y && GENERIC_HARDIRQS |
| 177 | select MFD_CORE | 202 | select MFD_CORE |
| 203 | select REGMAP_I2C | ||
| 178 | depends on REGULATOR | 204 | depends on REGULATOR |
| 179 | help | 205 | help |
| 180 | If you say yes here you get support for the TPS6586X series of | 206 | If you say yes here you get support for the TPS6586X series of |
| @@ -424,6 +450,19 @@ config PMIC_ADP5520 | |||
| 424 | individual components like LCD backlight, LEDs, GPIOs and Kepad | 450 | individual components like LCD backlight, LEDs, GPIOs and Kepad |
| 425 | under the corresponding menus. | 451 | under the corresponding menus. |
| 426 | 452 | ||
| 453 | config MFD_MAX77686 | ||
| 454 | bool "Maxim Semiconductor MAX77686 PMIC Support" | ||
| 455 | depends on I2C=y && GENERIC_HARDIRQS | ||
| 456 | select MFD_CORE | ||
| 457 | select REGMAP_I2C | ||
| 458 | select IRQ_DOMAIN | ||
| 459 | help | ||
| 460 | Say yes here to support for Maxim Semiconductor MAX77686. | ||
| 461 | This is a Power Management IC with RTC on chip. | ||
| 462 | This driver provides common support for accessing the device; | ||
| 463 | additional drivers must be enabled in order to use the functionality | ||
| 464 | of the device. | ||
| 465 | |||
| 427 | config MFD_MAX77693 | 466 | config MFD_MAX77693 |
| 428 | bool "Maxim Semiconductor MAX77693 PMIC Support" | 467 | bool "Maxim Semiconductor MAX77693 PMIC Support" |
| 429 | depends on I2C=y && GENERIC_HARDIRQS | 468 | depends on I2C=y && GENERIC_HARDIRQS |
| @@ -451,6 +490,7 @@ config MFD_MAX8997 | |||
| 451 | bool "Maxim Semiconductor MAX8997/8966 PMIC Support" | 490 | bool "Maxim Semiconductor MAX8997/8966 PMIC Support" |
| 452 | depends on I2C=y && GENERIC_HARDIRQS | 491 | depends on I2C=y && GENERIC_HARDIRQS |
| 453 | select MFD_CORE | 492 | select MFD_CORE |
| 493 | select IRQ_DOMAIN | ||
| 454 | help | 494 | help |
| 455 | Say yes here to support for Maxim Semiconductor MAX8997/8966. | 495 | Say yes here to support for Maxim Semiconductor MAX8997/8966. |
| 456 | This is a Power Management IC with RTC, Flash, Fuel Gauge, Haptic, | 496 | This is a Power Management IC with RTC, Flash, Fuel Gauge, Haptic, |
| @@ -470,17 +510,56 @@ config MFD_MAX8998 | |||
| 470 | additional drivers must be enabled in order to use the functionality | 510 | additional drivers must be enabled in order to use the functionality |
| 471 | of the device. | 511 | of the device. |
| 472 | 512 | ||
| 473 | config MFD_S5M_CORE | 513 | config MFD_SEC_CORE |
| 474 | bool "SAMSUNG S5M Series Support" | 514 | bool "SAMSUNG Electronics PMIC Series Support" |
| 475 | depends on I2C=y && GENERIC_HARDIRQS | 515 | depends on I2C=y && GENERIC_HARDIRQS |
| 476 | select MFD_CORE | 516 | select MFD_CORE |
| 477 | select REGMAP_I2C | 517 | select REGMAP_I2C |
| 518 | select REGMAP_IRQ | ||
| 478 | help | 519 | help |
| 479 | Support for the Samsung Electronics S5M MFD series. | 520 | Support for the Samsung Electronics MFD series. |
| 480 | This driver provides common support for accessing the device, | 521 | This driver provides common support for accessing the device, |
| 481 | additional drivers must be enabled in order to use the functionality | 522 | additional drivers must be enabled in order to use the functionality |
| 482 | of the device | 523 | of the device |
| 483 | 524 | ||
| 525 | config MFD_ARIZONA | ||
| 526 | select REGMAP | ||
| 527 | select REGMAP_IRQ | ||
| 528 | select MFD_CORE | ||
| 529 | bool | ||
| 530 | |||
| 531 | config MFD_ARIZONA_I2C | ||
| 532 | tristate "Support Wolfson Microelectronics Arizona platform with I2C" | ||
| 533 | select MFD_ARIZONA | ||
| 534 | select MFD_CORE | ||
| 535 | select REGMAP_I2C | ||
| 536 | depends on I2C | ||
| 537 | help | ||
| 538 | Support for the Wolfson Microelectronics Arizona platform audio SoC | ||
| 539 | core functionality controlled via I2C. | ||
| 540 | |||
| 541 | config MFD_ARIZONA_SPI | ||
| 542 | tristate "Support Wolfson Microelectronics Arizona platform with SPI" | ||
| 543 | select MFD_ARIZONA | ||
| 544 | select MFD_CORE | ||
| 545 | select REGMAP_SPI | ||
| 546 | depends on SPI_MASTER | ||
| 547 | help | ||
| 548 | Support for the Wolfson Microelectronics Arizona platform audio SoC | ||
| 549 | core functionality controlled via I2C. | ||
| 550 | |||
| 551 | config MFD_WM5102 | ||
| 552 | bool "Support Wolfson Microelectronics WM5102" | ||
| 553 | depends on MFD_ARIZONA | ||
| 554 | help | ||
| 555 | Support for Wolfson Microelectronics WM5102 low power audio SoC | ||
| 556 | |||
| 557 | config MFD_WM5110 | ||
| 558 | bool "Support Wolfson Microelectronics WM5110" | ||
| 559 | depends on MFD_ARIZONA | ||
| 560 | help | ||
| 561 | Support for Wolfson Microelectronics WM5110 low power audio SoC | ||
| 562 | |||
| 484 | config MFD_WM8400 | 563 | config MFD_WM8400 |
| 485 | bool "Support Wolfson Microelectronics WM8400" | 564 | bool "Support Wolfson Microelectronics WM8400" |
| 486 | select MFD_CORE | 565 | select MFD_CORE |
| @@ -698,6 +777,7 @@ config AB8500_CORE | |||
| 698 | bool "ST-Ericsson AB8500 Mixed Signal Power Management chip" | 777 | bool "ST-Ericsson AB8500 Mixed Signal Power Management chip" |
| 699 | depends on GENERIC_HARDIRQS && ABX500_CORE && MFD_DB8500_PRCMU | 778 | depends on GENERIC_HARDIRQS && ABX500_CORE && MFD_DB8500_PRCMU |
| 700 | select MFD_CORE | 779 | select MFD_CORE |
| 780 | select IRQ_DOMAIN | ||
| 701 | help | 781 | help |
| 702 | Select this option to enable access to AB8500 power management | 782 | Select this option to enable access to AB8500 power management |
| 703 | chip. This connects to U8500 either on the SSP/SPI bus (deprecated | 783 | chip. This connects to U8500 either on the SSP/SPI bus (deprecated |
| @@ -705,16 +785,6 @@ config AB8500_CORE | |||
| 705 | the irq_chip parts for handling the Mixed Signal chip events. | 785 | the irq_chip parts for handling the Mixed Signal chip events. |
| 706 | This chip embeds various other multimedia funtionalities as well. | 786 | This chip embeds various other multimedia funtionalities as well. |
| 707 | 787 | ||
| 708 | config AB8500_I2C_CORE | ||
| 709 | bool "AB8500 register access via PRCMU I2C" | ||
| 710 | depends on AB8500_CORE && MFD_DB8500_PRCMU | ||
| 711 | default y | ||
| 712 | help | ||
| 713 | This enables register access to the AB8500 chip via PRCMU I2C. | ||
| 714 | The AB8500 chip can be accessed via SPI or I2C. On DB8500 hardware | ||
| 715 | the I2C bus is connected to the Power Reset | ||
| 716 | and Mangagement Unit, PRCMU. | ||
| 717 | |||
| 718 | config AB8500_DEBUG | 788 | config AB8500_DEBUG |
| 719 | bool "Enable debug info via debugfs" | 789 | bool "Enable debug info via debugfs" |
| 720 | depends on AB8500_CORE && DEBUG_FS | 790 | depends on AB8500_CORE && DEBUG_FS |
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index 75f6ed68a4b9..79dd22d1dc3d 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile | |||
| @@ -4,6 +4,8 @@ | |||
| 4 | 4 | ||
| 5 | 88pm860x-objs := 88pm860x-core.o 88pm860x-i2c.o | 5 | 88pm860x-objs := 88pm860x-core.o 88pm860x-i2c.o |
| 6 | obj-$(CONFIG_MFD_88PM860X) += 88pm860x.o | 6 | obj-$(CONFIG_MFD_88PM860X) += 88pm860x.o |
| 7 | obj-$(CONFIG_MFD_88PM800) += 88pm800.o 88pm80x.o | ||
| 8 | obj-$(CONFIG_MFD_88PM805) += 88pm805.o 88pm80x.o | ||
| 7 | obj-$(CONFIG_MFD_SM501) += sm501.o | 9 | obj-$(CONFIG_MFD_SM501) += sm501.o |
| 8 | obj-$(CONFIG_MFD_ASIC3) += asic3.o tmio_core.o | 10 | obj-$(CONFIG_MFD_ASIC3) += asic3.o tmio_core.o |
| 9 | 11 | ||
| @@ -24,6 +26,16 @@ obj-$(CONFIG_MFD_T7L66XB) += t7l66xb.o tmio_core.o | |||
| 24 | obj-$(CONFIG_MFD_TC6387XB) += tc6387xb.o tmio_core.o | 26 | obj-$(CONFIG_MFD_TC6387XB) += tc6387xb.o tmio_core.o |
| 25 | obj-$(CONFIG_MFD_TC6393XB) += tc6393xb.o tmio_core.o | 27 | obj-$(CONFIG_MFD_TC6393XB) += tc6393xb.o tmio_core.o |
| 26 | 28 | ||
| 29 | obj-$(CONFIG_MFD_ARIZONA) += arizona-core.o | ||
| 30 | obj-$(CONFIG_MFD_ARIZONA) += arizona-irq.o | ||
| 31 | obj-$(CONFIG_MFD_ARIZONA_I2C) += arizona-i2c.o | ||
| 32 | obj-$(CONFIG_MFD_ARIZONA_SPI) += arizona-spi.o | ||
| 33 | ifneq ($(CONFIG_MFD_WM5102),n) | ||
| 34 | obj-$(CONFIG_MFD_ARIZONA) += wm5102-tables.o | ||
| 35 | endif | ||
| 36 | ifneq ($(CONFIG_MFD_WM5110),n) | ||
| 37 | obj-$(CONFIG_MFD_ARIZONA) += wm5110-tables.o | ||
| 38 | endif | ||
| 27 | obj-$(CONFIG_MFD_WM8400) += wm8400-core.o | 39 | obj-$(CONFIG_MFD_WM8400) += wm8400-core.o |
| 28 | wm831x-objs := wm831x-core.o wm831x-irq.o wm831x-otp.o | 40 | wm831x-objs := wm831x-core.o wm831x-irq.o wm831x-otp.o |
| 29 | wm831x-objs += wm831x-auxadc.o | 41 | wm831x-objs += wm831x-auxadc.o |
| @@ -78,6 +90,7 @@ obj-$(CONFIG_PMIC_DA9052) += da9052-core.o | |||
| 78 | obj-$(CONFIG_MFD_DA9052_SPI) += da9052-spi.o | 90 | obj-$(CONFIG_MFD_DA9052_SPI) += da9052-spi.o |
| 79 | obj-$(CONFIG_MFD_DA9052_I2C) += da9052-i2c.o | 91 | obj-$(CONFIG_MFD_DA9052_I2C) += da9052-i2c.o |
| 80 | 92 | ||
| 93 | obj-$(CONFIG_MFD_MAX77686) += max77686.o max77686-irq.o | ||
| 81 | obj-$(CONFIG_MFD_MAX77693) += max77693.o max77693-irq.o | 94 | obj-$(CONFIG_MFD_MAX77693) += max77693.o max77693-irq.o |
| 82 | max8925-objs := max8925-core.o max8925-i2c.o | 95 | max8925-objs := max8925-core.o max8925-i2c.o |
| 83 | obj-$(CONFIG_MFD_MAX8925) += max8925.o | 96 | obj-$(CONFIG_MFD_MAX8925) += max8925.o |
| @@ -116,6 +129,6 @@ obj-$(CONFIG_MFD_AAT2870_CORE) += aat2870-core.o | |||
| 116 | obj-$(CONFIG_MFD_INTEL_MSIC) += intel_msic.o | 129 | obj-$(CONFIG_MFD_INTEL_MSIC) += intel_msic.o |
| 117 | obj-$(CONFIG_MFD_PALMAS) += palmas.o | 130 | obj-$(CONFIG_MFD_PALMAS) += palmas.o |
| 118 | obj-$(CONFIG_MFD_RC5T583) += rc5t583.o rc5t583-irq.o | 131 | obj-$(CONFIG_MFD_RC5T583) += rc5t583.o rc5t583-irq.o |
| 119 | obj-$(CONFIG_MFD_S5M_CORE) += s5m-core.o s5m-irq.o | 132 | obj-$(CONFIG_MFD_SEC_CORE) += sec-core.o sec-irq.o |
| 120 | obj-$(CONFIG_MFD_ANATOP) += anatop-mfd.o | 133 | obj-$(CONFIG_MFD_ANATOP) += anatop-mfd.o |
| 121 | obj-$(CONFIG_MFD_LM3533) += lm3533-core.o lm3533-ctrlbank.o | 134 | obj-$(CONFIG_MFD_LM3533) += lm3533-core.o lm3533-ctrlbank.o |
diff --git a/drivers/mfd/ab3100-core.c b/drivers/mfd/ab3100-core.c index 1efad20fb175..4276aab4f196 100644 --- a/drivers/mfd/ab3100-core.c +++ b/drivers/mfd/ab3100-core.c | |||
| @@ -867,7 +867,7 @@ static int __devinit ab3100_probe(struct i2c_client *client, | |||
| 867 | int err; | 867 | int err; |
| 868 | int i; | 868 | int i; |
| 869 | 869 | ||
| 870 | ab3100 = kzalloc(sizeof(struct ab3100), GFP_KERNEL); | 870 | ab3100 = devm_kzalloc(&client->dev, sizeof(struct ab3100), GFP_KERNEL); |
| 871 | if (!ab3100) { | 871 | if (!ab3100) { |
| 872 | dev_err(&client->dev, "could not allocate AB3100 device\n"); | 872 | dev_err(&client->dev, "could not allocate AB3100 device\n"); |
| 873 | return -ENOMEM; | 873 | return -ENOMEM; |
| @@ -921,7 +921,7 @@ static int __devinit ab3100_probe(struct i2c_client *client, | |||
| 921 | 921 | ||
| 922 | /* Attach a second dummy i2c_client to the test register address */ | 922 | /* Attach a second dummy i2c_client to the test register address */ |
| 923 | ab3100->testreg_client = i2c_new_dummy(client->adapter, | 923 | ab3100->testreg_client = i2c_new_dummy(client->adapter, |
| 924 | client->addr + 1); | 924 | client->addr + 1); |
| 925 | if (!ab3100->testreg_client) { | 925 | if (!ab3100->testreg_client) { |
| 926 | err = -ENOMEM; | 926 | err = -ENOMEM; |
| 927 | goto exit_no_testreg_client; | 927 | goto exit_no_testreg_client; |
| @@ -931,13 +931,13 @@ static int __devinit ab3100_probe(struct i2c_client *client, | |||
| 931 | if (err) | 931 | if (err) |
| 932 | goto exit_no_setup; | 932 | goto exit_no_setup; |
| 933 | 933 | ||
| 934 | err = request_threaded_irq(client->irq, NULL, ab3100_irq_handler, | 934 | err = devm_request_threaded_irq(&client->dev, |
| 935 | IRQF_ONESHOT, "ab3100-core", ab3100); | 935 | client->irq, NULL, ab3100_irq_handler, |
| 936 | /* This real unpredictable IRQ is of course sampled for entropy */ | 936 | IRQF_ONESHOT, "ab3100-core", ab3100); |
| 937 | rand_initialize_irq(client->irq); | ||
| 938 | |||
| 939 | if (err) | 937 | if (err) |
| 940 | goto exit_no_irq; | 938 | goto exit_no_irq; |
| 939 | /* This real unpredictable IRQ is of course sampled for entropy */ | ||
| 940 | rand_initialize_irq(client->irq); | ||
| 941 | 941 | ||
| 942 | err = abx500_register_ops(&client->dev, &ab3100_ops); | 942 | err = abx500_register_ops(&client->dev, &ab3100_ops); |
| 943 | if (err) | 943 | if (err) |
| @@ -962,7 +962,6 @@ static int __devinit ab3100_probe(struct i2c_client *client, | |||
| 962 | i2c_unregister_device(ab3100->testreg_client); | 962 | i2c_unregister_device(ab3100->testreg_client); |
| 963 | exit_no_testreg_client: | 963 | exit_no_testreg_client: |
| 964 | exit_no_detect: | 964 | exit_no_detect: |
| 965 | kfree(ab3100); | ||
| 966 | return err; | 965 | return err; |
| 967 | } | 966 | } |
| 968 | 967 | ||
| @@ -972,16 +971,8 @@ static int __devexit ab3100_remove(struct i2c_client *client) | |||
| 972 | 971 | ||
| 973 | /* Unregister subdevices */ | 972 | /* Unregister subdevices */ |
| 974 | mfd_remove_devices(&client->dev); | 973 | mfd_remove_devices(&client->dev); |
| 975 | |||
| 976 | ab3100_remove_debugfs(); | 974 | ab3100_remove_debugfs(); |
| 977 | i2c_unregister_device(ab3100->testreg_client); | 975 | i2c_unregister_device(ab3100->testreg_client); |
| 978 | |||
| 979 | /* | ||
| 980 | * At this point, all subscribers should have unregistered | ||
| 981 | * their notifiers so deactivate IRQ | ||
| 982 | */ | ||
| 983 | free_irq(client->irq, ab3100); | ||
| 984 | kfree(ab3100); | ||
| 985 | return 0; | 976 | return 0; |
| 986 | } | 977 | } |
| 987 | 978 | ||
diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c index dac0e2998603..626b4ecaf647 100644 --- a/drivers/mfd/ab8500-core.c +++ b/drivers/mfd/ab8500-core.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <linux/slab.h> | 11 | #include <linux/slab.h> |
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
| 14 | #include <linux/irqdomain.h> | ||
| 14 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
| 15 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
| 16 | #include <linux/module.h> | 17 | #include <linux/module.h> |
| @@ -140,7 +141,7 @@ static const char ab8500_version_str[][7] = { | |||
| 140 | [AB8500_VERSION_AB8540] = "AB8540", | 141 | [AB8500_VERSION_AB8540] = "AB8540", |
| 141 | }; | 142 | }; |
| 142 | 143 | ||
| 143 | static int ab8500_i2c_write(struct ab8500 *ab8500, u16 addr, u8 data) | 144 | static int ab8500_prcmu_write(struct ab8500 *ab8500, u16 addr, u8 data) |
| 144 | { | 145 | { |
| 145 | int ret; | 146 | int ret; |
| 146 | 147 | ||
| @@ -150,7 +151,7 @@ static int ab8500_i2c_write(struct ab8500 *ab8500, u16 addr, u8 data) | |||
| 150 | return ret; | 151 | return ret; |
| 151 | } | 152 | } |
| 152 | 153 | ||
| 153 | static int ab8500_i2c_write_masked(struct ab8500 *ab8500, u16 addr, u8 mask, | 154 | static int ab8500_prcmu_write_masked(struct ab8500 *ab8500, u16 addr, u8 mask, |
| 154 | u8 data) | 155 | u8 data) |
| 155 | { | 156 | { |
| 156 | int ret; | 157 | int ret; |
| @@ -162,7 +163,7 @@ static int ab8500_i2c_write_masked(struct ab8500 *ab8500, u16 addr, u8 mask, | |||
| 162 | return ret; | 163 | return ret; |
| 163 | } | 164 | } |
| 164 | 165 | ||
| 165 | static int ab8500_i2c_read(struct ab8500 *ab8500, u16 addr) | 166 | static int ab8500_prcmu_read(struct ab8500 *ab8500, u16 addr) |
| 166 | { | 167 | { |
| 167 | int ret; | 168 | int ret; |
| 168 | u8 data; | 169 | u8 data; |
| @@ -361,7 +362,7 @@ static void ab8500_irq_sync_unlock(struct irq_data *data) | |||
| 361 | static void ab8500_irq_mask(struct irq_data *data) | 362 | static void ab8500_irq_mask(struct irq_data *data) |
| 362 | { | 363 | { |
| 363 | struct ab8500 *ab8500 = irq_data_get_irq_chip_data(data); | 364 | struct ab8500 *ab8500 = irq_data_get_irq_chip_data(data); |
| 364 | int offset = data->irq - ab8500->irq_base; | 365 | int offset = data->hwirq; |
| 365 | int index = offset / 8; | 366 | int index = offset / 8; |
| 366 | int mask = 1 << (offset % 8); | 367 | int mask = 1 << (offset % 8); |
| 367 | 368 | ||
| @@ -371,7 +372,7 @@ static void ab8500_irq_mask(struct irq_data *data) | |||
| 371 | static void ab8500_irq_unmask(struct irq_data *data) | 372 | static void ab8500_irq_unmask(struct irq_data *data) |
| 372 | { | 373 | { |
| 373 | struct ab8500 *ab8500 = irq_data_get_irq_chip_data(data); | 374 | struct ab8500 *ab8500 = irq_data_get_irq_chip_data(data); |
| 374 | int offset = data->irq - ab8500->irq_base; | 375 | int offset = data->hwirq; |
| 375 | int index = offset / 8; | 376 | int index = offset / 8; |
| 376 | int mask = 1 << (offset % 8); | 377 | int mask = 1 << (offset % 8); |
| 377 | 378 | ||
| @@ -510,38 +511,51 @@ static irqreturn_t ab8500_irq(int irq, void *dev) | |||
| 510 | return IRQ_HANDLED; | 511 | return IRQ_HANDLED; |
| 511 | } | 512 | } |
| 512 | 513 | ||
| 513 | static int ab8500_irq_init(struct ab8500 *ab8500) | 514 | /** |
| 515 | * ab8500_irq_get_virq(): Map an interrupt on a chip to a virtual IRQ | ||
| 516 | * | ||
| 517 | * @ab8500: ab8500_irq controller to operate on. | ||
| 518 | * @irq: index of the interrupt requested in the chip IRQs | ||
| 519 | * | ||
| 520 | * Useful for drivers to request their own IRQs. | ||
| 521 | */ | ||
| 522 | int ab8500_irq_get_virq(struct ab8500 *ab8500, int irq) | ||
| 514 | { | 523 | { |
| 515 | int base = ab8500->irq_base; | 524 | if (!ab8500) |
| 516 | int irq; | 525 | return -EINVAL; |
| 517 | int num_irqs; | ||
| 518 | 526 | ||
| 519 | if (is_ab9540(ab8500)) | 527 | return irq_create_mapping(ab8500->domain, irq); |
| 520 | num_irqs = AB9540_NR_IRQS; | 528 | } |
| 521 | else if (is_ab8505(ab8500)) | 529 | EXPORT_SYMBOL_GPL(ab8500_irq_get_virq); |
| 522 | num_irqs = AB8505_NR_IRQS; | 530 | |
| 523 | else | 531 | static int ab8500_irq_map(struct irq_domain *d, unsigned int virq, |
| 524 | num_irqs = AB8500_NR_IRQS; | 532 | irq_hw_number_t hwirq) |
| 533 | { | ||
| 534 | struct ab8500 *ab8500 = d->host_data; | ||
| 525 | 535 | ||
| 526 | for (irq = base; irq < base + num_irqs; irq++) { | 536 | if (!ab8500) |
| 527 | irq_set_chip_data(irq, ab8500); | 537 | return -EINVAL; |
| 528 | irq_set_chip_and_handler(irq, &ab8500_irq_chip, | 538 | |
| 529 | handle_simple_irq); | 539 | irq_set_chip_data(virq, ab8500); |
| 530 | irq_set_nested_thread(irq, 1); | 540 | irq_set_chip_and_handler(virq, &ab8500_irq_chip, |
| 541 | handle_simple_irq); | ||
| 542 | irq_set_nested_thread(virq, 1); | ||
| 531 | #ifdef CONFIG_ARM | 543 | #ifdef CONFIG_ARM |
| 532 | set_irq_flags(irq, IRQF_VALID); | 544 | set_irq_flags(virq, IRQF_VALID); |
| 533 | #else | 545 | #else |
| 534 | irq_set_noprobe(irq); | 546 | irq_set_noprobe(virq); |
| 535 | #endif | 547 | #endif |
| 536 | } | ||
| 537 | 548 | ||
| 538 | return 0; | 549 | return 0; |
| 539 | } | 550 | } |
| 540 | 551 | ||
| 541 | static void ab8500_irq_remove(struct ab8500 *ab8500) | 552 | static struct irq_domain_ops ab8500_irq_ops = { |
| 553 | .map = ab8500_irq_map, | ||
| 554 | .xlate = irq_domain_xlate_twocell, | ||
| 555 | }; | ||
| 556 | |||
| 557 | static int ab8500_irq_init(struct ab8500 *ab8500, struct device_node *np) | ||
| 542 | { | 558 | { |
| 543 | int base = ab8500->irq_base; | ||
| 544 | int irq; | ||
| 545 | int num_irqs; | 559 | int num_irqs; |
| 546 | 560 | ||
| 547 | if (is_ab9540(ab8500)) | 561 | if (is_ab9540(ab8500)) |
| @@ -551,13 +565,22 @@ static void ab8500_irq_remove(struct ab8500 *ab8500) | |||
| 551 | else | 565 | else |
| 552 | num_irqs = AB8500_NR_IRQS; | 566 | num_irqs = AB8500_NR_IRQS; |
| 553 | 567 | ||
| 554 | for (irq = base; irq < base + num_irqs; irq++) { | 568 | if (ab8500->irq_base) { |
| 555 | #ifdef CONFIG_ARM | 569 | ab8500->domain = irq_domain_add_legacy( |
| 556 | set_irq_flags(irq, 0); | 570 | NULL, num_irqs, ab8500->irq_base, |
| 557 | #endif | 571 | 0, &ab8500_irq_ops, ab8500); |
| 558 | irq_set_chip_and_handler(irq, NULL, NULL); | 572 | } |
| 559 | irq_set_chip_data(irq, NULL); | 573 | else { |
| 574 | ab8500->domain = irq_domain_add_linear( | ||
| 575 | np, num_irqs, &ab8500_irq_ops, ab8500); | ||
| 576 | } | ||
| 577 | |||
| 578 | if (!ab8500->domain) { | ||
| 579 | dev_err(ab8500->dev, "Failed to create irqdomain\n"); | ||
| 580 | return -ENOSYS; | ||
| 560 | } | 581 | } |
| 582 | |||
| 583 | return 0; | ||
| 561 | } | 584 | } |
| 562 | 585 | ||
| 563 | int ab8500_suspend(struct ab8500 *ab8500) | 586 | int ab8500_suspend(struct ab8500 *ab8500) |
| @@ -947,54 +970,69 @@ static struct mfd_cell __devinitdata abx500_common_devs[] = { | |||
| 947 | #ifdef CONFIG_DEBUG_FS | 970 | #ifdef CONFIG_DEBUG_FS |
| 948 | { | 971 | { |
| 949 | .name = "ab8500-debug", | 972 | .name = "ab8500-debug", |
| 973 | .of_compatible = "stericsson,ab8500-debug", | ||
| 950 | .num_resources = ARRAY_SIZE(ab8500_debug_resources), | 974 | .num_resources = ARRAY_SIZE(ab8500_debug_resources), |
| 951 | .resources = ab8500_debug_resources, | 975 | .resources = ab8500_debug_resources, |
| 952 | }, | 976 | }, |
| 953 | #endif | 977 | #endif |
| 954 | { | 978 | { |
| 955 | .name = "ab8500-sysctrl", | 979 | .name = "ab8500-sysctrl", |
| 980 | .of_compatible = "stericsson,ab8500-sysctrl", | ||
| 956 | }, | 981 | }, |
| 957 | { | 982 | { |
| 958 | .name = "ab8500-regulator", | 983 | .name = "ab8500-regulator", |
| 984 | .of_compatible = "stericsson,ab8500-regulator", | ||
| 959 | }, | 985 | }, |
| 960 | { | 986 | { |
| 961 | .name = "ab8500-gpadc", | 987 | .name = "ab8500-gpadc", |
| 988 | .of_compatible = "stericsson,ab8500-gpadc", | ||
| 962 | .num_resources = ARRAY_SIZE(ab8500_gpadc_resources), | 989 | .num_resources = ARRAY_SIZE(ab8500_gpadc_resources), |
| 963 | .resources = ab8500_gpadc_resources, | 990 | .resources = ab8500_gpadc_resources, |
| 964 | }, | 991 | }, |
| 965 | { | 992 | { |
| 966 | .name = "ab8500-rtc", | 993 | .name = "ab8500-rtc", |
| 994 | .of_compatible = "stericsson,ab8500-rtc", | ||
| 967 | .num_resources = ARRAY_SIZE(ab8500_rtc_resources), | 995 | .num_resources = ARRAY_SIZE(ab8500_rtc_resources), |
| 968 | .resources = ab8500_rtc_resources, | 996 | .resources = ab8500_rtc_resources, |
| 969 | }, | 997 | }, |
| 970 | { | 998 | { |
| 971 | .name = "ab8500-acc-det", | 999 | .name = "ab8500-acc-det", |
| 1000 | .of_compatible = "stericsson,ab8500-acc-det", | ||
| 972 | .num_resources = ARRAY_SIZE(ab8500_av_acc_detect_resources), | 1001 | .num_resources = ARRAY_SIZE(ab8500_av_acc_detect_resources), |
| 973 | .resources = ab8500_av_acc_detect_resources, | 1002 | .resources = ab8500_av_acc_detect_resources, |
| 974 | }, | 1003 | }, |
| 975 | { | 1004 | { |
| 976 | .name = "ab8500-poweron-key", | 1005 | .name = "ab8500-poweron-key", |
| 1006 | .of_compatible = "stericsson,ab8500-poweron-key", | ||
| 977 | .num_resources = ARRAY_SIZE(ab8500_poweronkey_db_resources), | 1007 | .num_resources = ARRAY_SIZE(ab8500_poweronkey_db_resources), |
| 978 | .resources = ab8500_poweronkey_db_resources, | 1008 | .resources = ab8500_poweronkey_db_resources, |
| 979 | }, | 1009 | }, |
| 980 | { | 1010 | { |
| 981 | .name = "ab8500-pwm", | 1011 | .name = "ab8500-pwm", |
| 1012 | .of_compatible = "stericsson,ab8500-pwm", | ||
| 982 | .id = 1, | 1013 | .id = 1, |
| 983 | }, | 1014 | }, |
| 984 | { | 1015 | { |
| 985 | .name = "ab8500-pwm", | 1016 | .name = "ab8500-pwm", |
| 1017 | .of_compatible = "stericsson,ab8500-pwm", | ||
| 986 | .id = 2, | 1018 | .id = 2, |
| 987 | }, | 1019 | }, |
| 988 | { | 1020 | { |
| 989 | .name = "ab8500-pwm", | 1021 | .name = "ab8500-pwm", |
| 1022 | .of_compatible = "stericsson,ab8500-pwm", | ||
| 990 | .id = 3, | 1023 | .id = 3, |
| 991 | }, | 1024 | }, |
| 992 | { .name = "ab8500-leds", }, | 1025 | { |
| 1026 | .name = "ab8500-leds", | ||
| 1027 | .of_compatible = "stericsson,ab8500-leds", | ||
| 1028 | }, | ||
| 993 | { | 1029 | { |
| 994 | .name = "ab8500-denc", | 1030 | .name = "ab8500-denc", |
| 1031 | .of_compatible = "stericsson,ab8500-denc", | ||
| 995 | }, | 1032 | }, |
| 996 | { | 1033 | { |
| 997 | .name = "ab8500-temp", | 1034 | .name = "ab8500-temp", |
| 1035 | .of_compatible = "stericsson,ab8500-temp", | ||
| 998 | .num_resources = ARRAY_SIZE(ab8500_temp_resources), | 1036 | .num_resources = ARRAY_SIZE(ab8500_temp_resources), |
| 999 | .resources = ab8500_temp_resources, | 1037 | .resources = ab8500_temp_resources, |
| 1000 | }, | 1038 | }, |
| @@ -1026,11 +1064,13 @@ static struct mfd_cell __devinitdata ab8500_bm_devs[] = { | |||
| 1026 | static struct mfd_cell __devinitdata ab8500_devs[] = { | 1064 | static struct mfd_cell __devinitdata ab8500_devs[] = { |
| 1027 | { | 1065 | { |
| 1028 | .name = "ab8500-gpio", | 1066 | .name = "ab8500-gpio", |
| 1067 | .of_compatible = "stericsson,ab8500-gpio", | ||
| 1029 | .num_resources = ARRAY_SIZE(ab8500_gpio_resources), | 1068 | .num_resources = ARRAY_SIZE(ab8500_gpio_resources), |
| 1030 | .resources = ab8500_gpio_resources, | 1069 | .resources = ab8500_gpio_resources, |
| 1031 | }, | 1070 | }, |
| 1032 | { | 1071 | { |
| 1033 | .name = "ab8500-usb", | 1072 | .name = "ab8500-usb", |
| 1073 | .of_compatible = "stericsson,ab8500-usb", | ||
| 1034 | .num_resources = ARRAY_SIZE(ab8500_usb_resources), | 1074 | .num_resources = ARRAY_SIZE(ab8500_usb_resources), |
| 1035 | .resources = ab8500_usb_resources, | 1075 | .resources = ab8500_usb_resources, |
| 1036 | }, | 1076 | }, |
| @@ -1207,16 +1247,17 @@ static struct attribute_group ab9540_attr_group = { | |||
| 1207 | .attrs = ab9540_sysfs_entries, | 1247 | .attrs = ab9540_sysfs_entries, |
| 1208 | }; | 1248 | }; |
| 1209 | 1249 | ||
| 1210 | static const struct of_device_id ab8500_match[] = { | ||
| 1211 | { | ||
| 1212 | .compatible = "stericsson,ab8500", | ||
| 1213 | .data = (void *)AB8500_VERSION_AB8500, | ||
| 1214 | }, | ||
| 1215 | {}, | ||
| 1216 | }; | ||
| 1217 | |||
| 1218 | static int __devinit ab8500_probe(struct platform_device *pdev) | 1250 | static int __devinit ab8500_probe(struct platform_device *pdev) |
| 1219 | { | 1251 | { |
| 1252 | static char *switch_off_status[] = { | ||
| 1253 | "Swoff bit programming", | ||
| 1254 | "Thermal protection activation", | ||
| 1255 | "Vbat lower then BattOk falling threshold", | ||
| 1256 | "Watchdog expired", | ||
| 1257 | "Non presence of 32kHz clock", | ||
| 1258 | "Battery level lower than power on reset threshold", | ||
| 1259 | "Power on key 1 pressed longer than 10 seconds", | ||
| 1260 | "DB8500 thermal shutdown"}; | ||
| 1220 | struct ab8500_platform_data *plat = dev_get_platdata(&pdev->dev); | 1261 | struct ab8500_platform_data *plat = dev_get_platdata(&pdev->dev); |
| 1221 | const struct platform_device_id *platid = platform_get_device_id(pdev); | 1262 | const struct platform_device_id *platid = platform_get_device_id(pdev); |
| 1222 | enum ab8500_version version = AB8500_VERSION_UNDEFINED; | 1263 | enum ab8500_version version = AB8500_VERSION_UNDEFINED; |
| @@ -1233,14 +1274,6 @@ static int __devinit ab8500_probe(struct platform_device *pdev) | |||
| 1233 | 1274 | ||
| 1234 | if (plat) | 1275 | if (plat) |
| 1235 | ab8500->irq_base = plat->irq_base; | 1276 | ab8500->irq_base = plat->irq_base; |
| 1236 | else if (np) | ||
| 1237 | ret = of_property_read_u32(np, "stericsson,irq-base", &ab8500->irq_base); | ||
| 1238 | |||
| 1239 | if (!ab8500->irq_base) { | ||
| 1240 | dev_info(&pdev->dev, "couldn't find irq-base\n"); | ||
| 1241 | ret = -EINVAL; | ||
| 1242 | goto out_free_ab8500; | ||
| 1243 | } | ||
| 1244 | 1277 | ||
| 1245 | ab8500->dev = &pdev->dev; | 1278 | ab8500->dev = &pdev->dev; |
| 1246 | 1279 | ||
| @@ -1252,9 +1285,9 @@ static int __devinit ab8500_probe(struct platform_device *pdev) | |||
| 1252 | 1285 | ||
| 1253 | ab8500->irq = resource->start; | 1286 | ab8500->irq = resource->start; |
| 1254 | 1287 | ||
| 1255 | ab8500->read = ab8500_i2c_read; | 1288 | ab8500->read = ab8500_prcmu_read; |
| 1256 | ab8500->write = ab8500_i2c_write; | 1289 | ab8500->write = ab8500_prcmu_write; |
| 1257 | ab8500->write_masked = ab8500_i2c_write_masked; | 1290 | ab8500->write_masked = ab8500_prcmu_write_masked; |
| 1258 | 1291 | ||
| 1259 | mutex_init(&ab8500->lock); | 1292 | mutex_init(&ab8500->lock); |
| 1260 | mutex_init(&ab8500->irq_lock); | 1293 | mutex_init(&ab8500->irq_lock); |
| @@ -1264,9 +1297,6 @@ static int __devinit ab8500_probe(struct platform_device *pdev) | |||
| 1264 | 1297 | ||
| 1265 | if (platid) | 1298 | if (platid) |
| 1266 | version = platid->driver_data; | 1299 | version = platid->driver_data; |
| 1267 | else if (np) | ||
| 1268 | version = (unsigned int) | ||
| 1269 | of_match_device(ab8500_match, &pdev->dev)->data; | ||
| 1270 | 1300 | ||
| 1271 | if (version != AB8500_VERSION_UNDEFINED) | 1301 | if (version != AB8500_VERSION_UNDEFINED) |
| 1272 | ab8500->version = version; | 1302 | ab8500->version = version; |
| @@ -1323,7 +1353,20 @@ static int __devinit ab8500_probe(struct platform_device *pdev) | |||
| 1323 | AB8500_SWITCH_OFF_STATUS, &value); | 1353 | AB8500_SWITCH_OFF_STATUS, &value); |
| 1324 | if (ret < 0) | 1354 | if (ret < 0) |
| 1325 | return ret; | 1355 | return ret; |
| 1326 | dev_info(ab8500->dev, "switch off status: %#x", value); | 1356 | dev_info(ab8500->dev, "switch off cause(s) (%#x): ", value); |
| 1357 | |||
| 1358 | if (value) { | ||
| 1359 | for (i = 0; i < ARRAY_SIZE(switch_off_status); i++) { | ||
| 1360 | if (value & 1) | ||
| 1361 | printk(KERN_CONT " \"%s\"", | ||
| 1362 | switch_off_status[i]); | ||
| 1363 | value = value >> 1; | ||
| 1364 | |||
| 1365 | } | ||
| 1366 | printk(KERN_CONT "\n"); | ||
| 1367 | } else { | ||
| 1368 | printk(KERN_CONT " None\n"); | ||
| 1369 | } | ||
| 1327 | 1370 | ||
| 1328 | if (plat && plat->init) | 1371 | if (plat && plat->init) |
| 1329 | plat->init(ab8500); | 1372 | plat->init(ab8500); |
| @@ -1352,53 +1395,50 @@ static int __devinit ab8500_probe(struct platform_device *pdev) | |||
| 1352 | for (i = 0; i < ab8500->mask_size; i++) | 1395 | for (i = 0; i < ab8500->mask_size; i++) |
| 1353 | ab8500->mask[i] = ab8500->oldmask[i] = 0xff; | 1396 | ab8500->mask[i] = ab8500->oldmask[i] = 0xff; |
| 1354 | 1397 | ||
| 1355 | if (ab8500->irq_base) { | 1398 | ret = ab8500_irq_init(ab8500, np); |
| 1356 | ret = ab8500_irq_init(ab8500); | 1399 | if (ret) |
| 1357 | if (ret) | 1400 | goto out_freeoldmask; |
| 1358 | goto out_freeoldmask; | ||
| 1359 | 1401 | ||
| 1360 | /* Activate this feature only in ab9540 */ | 1402 | /* Activate this feature only in ab9540 */ |
| 1361 | /* till tests are done on ab8500 1p2 or later*/ | 1403 | /* till tests are done on ab8500 1p2 or later*/ |
| 1362 | if (is_ab9540(ab8500)) | 1404 | if (is_ab9540(ab8500)) { |
| 1363 | ret = request_threaded_irq(ab8500->irq, NULL, | 1405 | ret = request_threaded_irq(ab8500->irq, NULL, |
| 1364 | ab8500_hierarchical_irq, | 1406 | ab8500_hierarchical_irq, |
| 1365 | IRQF_ONESHOT | IRQF_NO_SUSPEND, | 1407 | IRQF_ONESHOT | IRQF_NO_SUSPEND, |
| 1366 | "ab8500", ab8500); | 1408 | "ab8500", ab8500); |
| 1367 | else | 1409 | } |
| 1368 | ret = request_threaded_irq(ab8500->irq, NULL, | 1410 | else { |
| 1411 | ret = request_threaded_irq(ab8500->irq, NULL, | ||
| 1369 | ab8500_irq, | 1412 | ab8500_irq, |
| 1370 | IRQF_ONESHOT | IRQF_NO_SUSPEND, | 1413 | IRQF_ONESHOT | IRQF_NO_SUSPEND, |
| 1371 | "ab8500", ab8500); | 1414 | "ab8500", ab8500); |
| 1372 | if (ret) | 1415 | if (ret) |
| 1373 | goto out_removeirq; | 1416 | goto out_freeoldmask; |
| 1374 | } | 1417 | } |
| 1375 | 1418 | ||
| 1376 | if (!np) { | 1419 | ret = mfd_add_devices(ab8500->dev, 0, abx500_common_devs, |
| 1377 | ret = mfd_add_devices(ab8500->dev, 0, abx500_common_devs, | 1420 | ARRAY_SIZE(abx500_common_devs), NULL, |
| 1378 | ARRAY_SIZE(abx500_common_devs), NULL, | 1421 | ab8500->irq_base); |
| 1379 | ab8500->irq_base); | 1422 | if (ret) |
| 1423 | goto out_freeirq; | ||
| 1380 | 1424 | ||
| 1381 | if (ret) | 1425 | if (is_ab9540(ab8500)) |
| 1382 | goto out_freeirq; | 1426 | ret = mfd_add_devices(ab8500->dev, 0, ab9540_devs, |
| 1383 | 1427 | ARRAY_SIZE(ab9540_devs), NULL, | |
| 1384 | if (is_ab9540(ab8500)) | 1428 | ab8500->irq_base); |
| 1385 | ret = mfd_add_devices(ab8500->dev, 0, ab9540_devs, | 1429 | else |
| 1386 | ARRAY_SIZE(ab9540_devs), NULL, | 1430 | ret = mfd_add_devices(ab8500->dev, 0, ab8500_devs, |
| 1387 | ab8500->irq_base); | 1431 | ARRAY_SIZE(ab8500_devs), NULL, |
| 1388 | else | 1432 | ab8500->irq_base); |
| 1389 | ret = mfd_add_devices(ab8500->dev, 0, ab8500_devs, | 1433 | if (ret) |
| 1390 | ARRAY_SIZE(ab8500_devs), NULL, | 1434 | goto out_freeirq; |
| 1391 | ab8500->irq_base); | ||
| 1392 | if (ret) | ||
| 1393 | goto out_freeirq; | ||
| 1394 | 1435 | ||
| 1395 | if (is_ab9540(ab8500) || is_ab8505(ab8500)) | 1436 | if (is_ab9540(ab8500) || is_ab8505(ab8500)) |
| 1396 | ret = mfd_add_devices(ab8500->dev, 0, ab9540_ab8505_devs, | 1437 | ret = mfd_add_devices(ab8500->dev, 0, ab9540_ab8505_devs, |
| 1397 | ARRAY_SIZE(ab9540_ab8505_devs), NULL, | 1438 | ARRAY_SIZE(ab9540_ab8505_devs), NULL, |
| 1398 | ab8500->irq_base); | 1439 | ab8500->irq_base); |
| 1399 | if (ret) | 1440 | if (ret) |
| 1400 | goto out_freeirq; | 1441 | goto out_freeirq; |
| 1401 | } | ||
| 1402 | 1442 | ||
| 1403 | if (!no_bm) { | 1443 | if (!no_bm) { |
| 1404 | /* Add battery management devices */ | 1444 | /* Add battery management devices */ |
| @@ -1417,15 +1457,11 @@ static int __devinit ab8500_probe(struct platform_device *pdev) | |||
| 1417 | &ab8500_attr_group); | 1457 | &ab8500_attr_group); |
| 1418 | if (ret) | 1458 | if (ret) |
| 1419 | dev_err(ab8500->dev, "error creating sysfs entries\n"); | 1459 | dev_err(ab8500->dev, "error creating sysfs entries\n"); |
| 1420 | else | 1460 | |
| 1421 | return ret; | 1461 | return ret; |
| 1422 | 1462 | ||
| 1423 | out_freeirq: | 1463 | out_freeirq: |
| 1424 | if (ab8500->irq_base) | 1464 | free_irq(ab8500->irq, ab8500); |
| 1425 | free_irq(ab8500->irq, ab8500); | ||
| 1426 | out_removeirq: | ||
| 1427 | if (ab8500->irq_base) | ||
| 1428 | ab8500_irq_remove(ab8500); | ||
| 1429 | out_freeoldmask: | 1465 | out_freeoldmask: |
| 1430 | kfree(ab8500->oldmask); | 1466 | kfree(ab8500->oldmask); |
| 1431 | out_freemask: | 1467 | out_freemask: |
| @@ -1444,11 +1480,10 @@ static int __devexit ab8500_remove(struct platform_device *pdev) | |||
| 1444 | sysfs_remove_group(&ab8500->dev->kobj, &ab9540_attr_group); | 1480 | sysfs_remove_group(&ab8500->dev->kobj, &ab9540_attr_group); |
| 1445 | else | 1481 | else |
| 1446 | sysfs_remove_group(&ab8500->dev->kobj, &ab8500_attr_group); | 1482 | sysfs_remove_group(&ab8500->dev->kobj, &ab8500_attr_group); |
| 1483 | |||
| 1447 | mfd_remove_devices(ab8500->dev); | 1484 | mfd_remove_devices(ab8500->dev); |
| 1448 | if (ab8500->irq_base) { | 1485 | free_irq(ab8500->irq, ab8500); |
| 1449 | free_irq(ab8500->irq, ab8500); | 1486 | |
| 1450 | ab8500_irq_remove(ab8500); | ||
| 1451 | } | ||
| 1452 | kfree(ab8500->oldmask); | 1487 | kfree(ab8500->oldmask); |
| 1453 | kfree(ab8500->mask); | 1488 | kfree(ab8500->mask); |
| 1454 | kfree(ab8500); | 1489 | kfree(ab8500); |
| @@ -1468,7 +1503,6 @@ static struct platform_driver ab8500_core_driver = { | |||
| 1468 | .driver = { | 1503 | .driver = { |
| 1469 | .name = "ab8500-core", | 1504 | .name = "ab8500-core", |
| 1470 | .owner = THIS_MODULE, | 1505 | .owner = THIS_MODULE, |
| 1471 | .of_match_table = ab8500_match, | ||
| 1472 | }, | 1506 | }, |
| 1473 | .probe = ab8500_probe, | 1507 | .probe = ab8500_probe, |
| 1474 | .remove = __devexit_p(ab8500_remove), | 1508 | .remove = __devexit_p(ab8500_remove), |
| @@ -1484,7 +1518,7 @@ static void __exit ab8500_core_exit(void) | |||
| 1484 | { | 1518 | { |
| 1485 | platform_driver_unregister(&ab8500_core_driver); | 1519 | platform_driver_unregister(&ab8500_core_driver); |
| 1486 | } | 1520 | } |
| 1487 | arch_initcall(ab8500_core_init); | 1521 | core_initcall(ab8500_core_init); |
| 1488 | module_exit(ab8500_core_exit); | 1522 | module_exit(ab8500_core_exit); |
| 1489 | 1523 | ||
| 1490 | MODULE_AUTHOR("Mattias Wallin, Srinidhi Kasagar, Rabin Vincent"); | 1524 | MODULE_AUTHOR("Mattias Wallin, Srinidhi Kasagar, Rabin Vincent"); |
diff --git a/drivers/mfd/ab8500-debugfs.c b/drivers/mfd/ab8500-debugfs.c index 50c4c89ab220..c4cb806978ac 100644 --- a/drivers/mfd/ab8500-debugfs.c +++ b/drivers/mfd/ab8500-debugfs.c | |||
| @@ -31,12 +31,12 @@ struct ab8500_reg_range { | |||
| 31 | }; | 31 | }; |
| 32 | 32 | ||
| 33 | /** | 33 | /** |
| 34 | * struct ab8500_i2c_ranges | 34 | * struct ab8500_prcmu_ranges |
| 35 | * @num_ranges: the number of ranges in the list | 35 | * @num_ranges: the number of ranges in the list |
| 36 | * @bankid: bank identifier | 36 | * @bankid: bank identifier |
| 37 | * @range: the list of register ranges | 37 | * @range: the list of register ranges |
| 38 | */ | 38 | */ |
| 39 | struct ab8500_i2c_ranges { | 39 | struct ab8500_prcmu_ranges { |
| 40 | u8 num_ranges; | 40 | u8 num_ranges; |
| 41 | u8 bankid; | 41 | u8 bankid; |
| 42 | const struct ab8500_reg_range *range; | 42 | const struct ab8500_reg_range *range; |
| @@ -47,7 +47,7 @@ struct ab8500_i2c_ranges { | |||
| 47 | 47 | ||
| 48 | #define AB8500_REV_REG 0x80 | 48 | #define AB8500_REV_REG 0x80 |
| 49 | 49 | ||
| 50 | static struct ab8500_i2c_ranges debug_ranges[AB8500_NUM_BANKS] = { | 50 | static struct ab8500_prcmu_ranges debug_ranges[AB8500_NUM_BANKS] = { |
| 51 | [0x0] = { | 51 | [0x0] = { |
| 52 | .num_ranges = 0, | 52 | .num_ranges = 0, |
| 53 | .range = 0, | 53 | .range = 0, |
| @@ -608,16 +608,10 @@ static int __devexit ab8500_debug_remove(struct platform_device *plf) | |||
| 608 | return 0; | 608 | return 0; |
| 609 | } | 609 | } |
| 610 | 610 | ||
| 611 | static const struct of_device_id ab8500_debug_match[] = { | ||
| 612 | { .compatible = "stericsson,ab8500-debug", }, | ||
| 613 | {} | ||
| 614 | }; | ||
| 615 | |||
| 616 | static struct platform_driver ab8500_debug_driver = { | 611 | static struct platform_driver ab8500_debug_driver = { |
| 617 | .driver = { | 612 | .driver = { |
| 618 | .name = "ab8500-debug", | 613 | .name = "ab8500-debug", |
| 619 | .owner = THIS_MODULE, | 614 | .owner = THIS_MODULE, |
| 620 | .of_match_table = ab8500_debug_match, | ||
| 621 | }, | 615 | }, |
| 622 | .probe = ab8500_debug_probe, | 616 | .probe = ab8500_debug_probe, |
| 623 | .remove = __devexit_p(ab8500_debug_remove) | 617 | .remove = __devexit_p(ab8500_debug_remove) |
diff --git a/drivers/mfd/ab8500-gpadc.c b/drivers/mfd/ab8500-gpadc.c index b86fd8e1ec3f..866f95960b4b 100644 --- a/drivers/mfd/ab8500-gpadc.c +++ b/drivers/mfd/ab8500-gpadc.c | |||
| @@ -599,7 +599,8 @@ static int __devinit ab8500_gpadc_probe(struct platform_device *pdev) | |||
| 599 | /* Register interrupt - SwAdcComplete */ | 599 | /* Register interrupt - SwAdcComplete */ |
| 600 | ret = request_threaded_irq(gpadc->irq, NULL, | 600 | ret = request_threaded_irq(gpadc->irq, NULL, |
| 601 | ab8500_bm_gpswadcconvend_handler, | 601 | ab8500_bm_gpswadcconvend_handler, |
| 602 | IRQF_NO_SUSPEND | IRQF_SHARED, "ab8500-gpadc", gpadc); | 602 | IRQF_ONESHOT | IRQF_NO_SUSPEND | IRQF_SHARED, |
| 603 | "ab8500-gpadc", gpadc); | ||
| 603 | if (ret < 0) { | 604 | if (ret < 0) { |
| 604 | dev_err(gpadc->dev, "Failed to register interrupt, irq: %d\n", | 605 | dev_err(gpadc->dev, "Failed to register interrupt, irq: %d\n", |
| 605 | gpadc->irq); | 606 | gpadc->irq); |
| @@ -648,18 +649,12 @@ static int __devexit ab8500_gpadc_remove(struct platform_device *pdev) | |||
| 648 | return 0; | 649 | return 0; |
| 649 | } | 650 | } |
| 650 | 651 | ||
| 651 | static const struct of_device_id ab8500_gpadc_match[] = { | ||
| 652 | { .compatible = "stericsson,ab8500-gpadc", }, | ||
| 653 | {} | ||
| 654 | }; | ||
| 655 | |||
| 656 | static struct platform_driver ab8500_gpadc_driver = { | 652 | static struct platform_driver ab8500_gpadc_driver = { |
| 657 | .probe = ab8500_gpadc_probe, | 653 | .probe = ab8500_gpadc_probe, |
| 658 | .remove = __devexit_p(ab8500_gpadc_remove), | 654 | .remove = __devexit_p(ab8500_gpadc_remove), |
| 659 | .driver = { | 655 | .driver = { |
| 660 | .name = "ab8500-gpadc", | 656 | .name = "ab8500-gpadc", |
| 661 | .owner = THIS_MODULE, | 657 | .owner = THIS_MODULE, |
| 662 | .of_match_table = ab8500_gpadc_match, | ||
| 663 | }, | 658 | }, |
| 664 | }; | 659 | }; |
| 665 | 660 | ||
diff --git a/drivers/mfd/ab8500-sysctrl.c b/drivers/mfd/ab8500-sysctrl.c index 5a3e51ccf258..c28d4eb1eff0 100644 --- a/drivers/mfd/ab8500-sysctrl.c +++ b/drivers/mfd/ab8500-sysctrl.c | |||
| @@ -61,16 +61,10 @@ static int __devexit ab8500_sysctrl_remove(struct platform_device *pdev) | |||
| 61 | return 0; | 61 | return 0; |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | static const struct of_device_id ab8500_sysctrl_match[] = { | ||
| 65 | { .compatible = "stericsson,ab8500-sysctrl", }, | ||
| 66 | {} | ||
| 67 | }; | ||
| 68 | |||
| 69 | static struct platform_driver ab8500_sysctrl_driver = { | 64 | static struct platform_driver ab8500_sysctrl_driver = { |
| 70 | .driver = { | 65 | .driver = { |
| 71 | .name = "ab8500-sysctrl", | 66 | .name = "ab8500-sysctrl", |
| 72 | .owner = THIS_MODULE, | 67 | .owner = THIS_MODULE, |
| 73 | .of_match_table = ab8500_sysctrl_match, | ||
| 74 | }, | 68 | }, |
| 75 | .probe = ab8500_sysctrl_probe, | 69 | .probe = ab8500_sysctrl_probe, |
| 76 | .remove = __devexit_p(ab8500_sysctrl_remove), | 70 | .remove = __devexit_p(ab8500_sysctrl_remove), |
diff --git a/drivers/mfd/adp5520.c b/drivers/mfd/adp5520.c index 8d816cce8322..ea8b9475731d 100644 --- a/drivers/mfd/adp5520.c +++ b/drivers/mfd/adp5520.c | |||
| @@ -320,7 +320,7 @@ static int __devexit adp5520_remove(struct i2c_client *client) | |||
| 320 | return 0; | 320 | return 0; |
| 321 | } | 321 | } |
| 322 | 322 | ||
| 323 | #ifdef CONFIG_PM | 323 | #ifdef CONFIG_PM_SLEEP |
| 324 | static int adp5520_suspend(struct device *dev) | 324 | static int adp5520_suspend(struct device *dev) |
| 325 | { | 325 | { |
| 326 | struct i2c_client *client = to_i2c_client(dev); | 326 | struct i2c_client *client = to_i2c_client(dev); |
diff --git a/drivers/mfd/anatop-mfd.c b/drivers/mfd/anatop-mfd.c index 6da06341f6c9..5576e07576de 100644 --- a/drivers/mfd/anatop-mfd.c +++ b/drivers/mfd/anatop-mfd.c | |||
| @@ -83,7 +83,7 @@ static int __devinit of_anatop_probe(struct platform_device *pdev) | |||
| 83 | drvdata->ioreg = ioreg; | 83 | drvdata->ioreg = ioreg; |
| 84 | spin_lock_init(&drvdata->reglock); | 84 | spin_lock_init(&drvdata->reglock); |
| 85 | platform_set_drvdata(pdev, drvdata); | 85 | platform_set_drvdata(pdev, drvdata); |
| 86 | of_platform_populate(np, of_anatop_match, NULL, dev); | 86 | of_platform_populate(np, NULL, NULL, dev); |
| 87 | 87 | ||
| 88 | return 0; | 88 | return 0; |
| 89 | } | 89 | } |
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c new file mode 100644 index 000000000000..c7983e862549 --- /dev/null +++ b/drivers/mfd/arizona-core.c | |||
| @@ -0,0 +1,566 @@ | |||
| 1 | /* | ||
| 2 | * Arizona core driver | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics plc | ||
| 5 | * | ||
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/delay.h> | ||
| 14 | #include <linux/err.h> | ||
| 15 | #include <linux/gpio.h> | ||
| 16 | #include <linux/interrupt.h> | ||
| 17 | #include <linux/mfd/core.h> | ||
| 18 | #include <linux/module.h> | ||
| 19 | #include <linux/pm_runtime.h> | ||
| 20 | #include <linux/regmap.h> | ||
| 21 | #include <linux/regulator/consumer.h> | ||
| 22 | #include <linux/slab.h> | ||
| 23 | |||
| 24 | #include <linux/mfd/arizona/core.h> | ||
| 25 | #include <linux/mfd/arizona/registers.h> | ||
| 26 | |||
| 27 | #include "arizona.h" | ||
| 28 | |||
| 29 | static const char *wm5102_core_supplies[] = { | ||
| 30 | "AVDD", | ||
| 31 | "DBVDD1", | ||
| 32 | }; | ||
| 33 | |||
| 34 | int arizona_clk32k_enable(struct arizona *arizona) | ||
| 35 | { | ||
| 36 | int ret = 0; | ||
| 37 | |||
| 38 | mutex_lock(&arizona->clk_lock); | ||
| 39 | |||
| 40 | arizona->clk32k_ref++; | ||
| 41 | |||
| 42 | if (arizona->clk32k_ref == 1) | ||
| 43 | ret = regmap_update_bits(arizona->regmap, ARIZONA_CLOCK_32K_1, | ||
| 44 | ARIZONA_CLK_32K_ENA, | ||
| 45 | ARIZONA_CLK_32K_ENA); | ||
| 46 | |||
| 47 | if (ret != 0) | ||
| 48 | arizona->clk32k_ref--; | ||
| 49 | |||
| 50 | mutex_unlock(&arizona->clk_lock); | ||
| 51 | |||
| 52 | return ret; | ||
| 53 | } | ||
| 54 | EXPORT_SYMBOL_GPL(arizona_clk32k_enable); | ||
| 55 | |||
| 56 | int arizona_clk32k_disable(struct arizona *arizona) | ||
| 57 | { | ||
| 58 | int ret = 0; | ||
| 59 | |||
| 60 | mutex_lock(&arizona->clk_lock); | ||
| 61 | |||
| 62 | BUG_ON(arizona->clk32k_ref <= 0); | ||
| 63 | |||
| 64 | arizona->clk32k_ref--; | ||
| 65 | |||
| 66 | if (arizona->clk32k_ref == 0) | ||
| 67 | regmap_update_bits(arizona->regmap, ARIZONA_CLOCK_32K_1, | ||
| 68 | ARIZONA_CLK_32K_ENA, 0); | ||
| 69 | |||
| 70 | mutex_unlock(&arizona->clk_lock); | ||
| 71 | |||
| 72 | return ret; | ||
| 73 | } | ||
| 74 | EXPORT_SYMBOL_GPL(arizona_clk32k_disable); | ||
| 75 | |||
| 76 | static irqreturn_t arizona_clkgen_err(int irq, void *data) | ||
| 77 | { | ||
| 78 | struct arizona *arizona = data; | ||
| 79 | |||
| 80 | dev_err(arizona->dev, "CLKGEN error\n"); | ||
| 81 | |||
| 82 | return IRQ_HANDLED; | ||
| 83 | } | ||
| 84 | |||
| 85 | static irqreturn_t arizona_underclocked(int irq, void *data) | ||
| 86 | { | ||
| 87 | struct arizona *arizona = data; | ||
| 88 | unsigned int val; | ||
| 89 | int ret; | ||
| 90 | |||
| 91 | ret = regmap_read(arizona->regmap, ARIZONA_INTERRUPT_RAW_STATUS_8, | ||
| 92 | &val); | ||
| 93 | if (ret != 0) { | ||
| 94 | dev_err(arizona->dev, "Failed to read underclock status: %d\n", | ||
| 95 | ret); | ||
| 96 | return IRQ_NONE; | ||
| 97 | } | ||
| 98 | |||
| 99 | if (val & ARIZONA_AIF3_UNDERCLOCKED_STS) | ||
| 100 | dev_err(arizona->dev, "AIF3 underclocked\n"); | ||
| 101 | if (val & ARIZONA_AIF3_UNDERCLOCKED_STS) | ||
| 102 | dev_err(arizona->dev, "AIF3 underclocked\n"); | ||
| 103 | if (val & ARIZONA_AIF2_UNDERCLOCKED_STS) | ||
| 104 | dev_err(arizona->dev, "AIF1 underclocked\n"); | ||
| 105 | if (val & ARIZONA_ISRC2_UNDERCLOCKED_STS) | ||
| 106 | dev_err(arizona->dev, "ISRC2 underclocked\n"); | ||
| 107 | if (val & ARIZONA_ISRC1_UNDERCLOCKED_STS) | ||
| 108 | dev_err(arizona->dev, "ISRC1 underclocked\n"); | ||
| 109 | if (val & ARIZONA_FX_UNDERCLOCKED_STS) | ||
| 110 | dev_err(arizona->dev, "FX underclocked\n"); | ||
| 111 | if (val & ARIZONA_ASRC_UNDERCLOCKED_STS) | ||
| 112 | dev_err(arizona->dev, "ASRC underclocked\n"); | ||
| 113 | if (val & ARIZONA_DAC_UNDERCLOCKED_STS) | ||
| 114 | dev_err(arizona->dev, "DAC underclocked\n"); | ||
| 115 | if (val & ARIZONA_ADC_UNDERCLOCKED_STS) | ||
| 116 | dev_err(arizona->dev, "ADC underclocked\n"); | ||
| 117 | if (val & ARIZONA_MIXER_UNDERCLOCKED_STS) | ||
| 118 | dev_err(arizona->dev, "Mixer underclocked\n"); | ||
| 119 | |||
| 120 | return IRQ_HANDLED; | ||
| 121 | } | ||
| 122 | |||
| 123 | static irqreturn_t arizona_overclocked(int irq, void *data) | ||
| 124 | { | ||
| 125 | struct arizona *arizona = data; | ||
| 126 | unsigned int val[2]; | ||
| 127 | int ret; | ||
| 128 | |||
| 129 | ret = regmap_bulk_read(arizona->regmap, ARIZONA_INTERRUPT_RAW_STATUS_6, | ||
| 130 | &val[0], 2); | ||
| 131 | if (ret != 0) { | ||
| 132 | dev_err(arizona->dev, "Failed to read overclock status: %d\n", | ||
| 133 | ret); | ||
| 134 | return IRQ_NONE; | ||
| 135 | } | ||
| 136 | |||
| 137 | if (val[0] & ARIZONA_PWM_OVERCLOCKED_STS) | ||
| 138 | dev_err(arizona->dev, "PWM overclocked\n"); | ||
| 139 | if (val[0] & ARIZONA_FX_CORE_OVERCLOCKED_STS) | ||
| 140 | dev_err(arizona->dev, "FX core overclocked\n"); | ||
| 141 | if (val[0] & ARIZONA_DAC_SYS_OVERCLOCKED_STS) | ||
| 142 | dev_err(arizona->dev, "DAC SYS overclocked\n"); | ||
| 143 | if (val[0] & ARIZONA_DAC_WARP_OVERCLOCKED_STS) | ||
| 144 | dev_err(arizona->dev, "DAC WARP overclocked\n"); | ||
| 145 | if (val[0] & ARIZONA_ADC_OVERCLOCKED_STS) | ||
| 146 | dev_err(arizona->dev, "ADC overclocked\n"); | ||
| 147 | if (val[0] & ARIZONA_MIXER_OVERCLOCKED_STS) | ||
| 148 | dev_err(arizona->dev, "Mixer overclocked\n"); | ||
| 149 | if (val[0] & ARIZONA_AIF3_SYNC_OVERCLOCKED_STS) | ||
| 150 | dev_err(arizona->dev, "AIF3 overclocked\n"); | ||
| 151 | if (val[0] & ARIZONA_AIF2_SYNC_OVERCLOCKED_STS) | ||
| 152 | dev_err(arizona->dev, "AIF2 overclocked\n"); | ||
| 153 | if (val[0] & ARIZONA_AIF1_SYNC_OVERCLOCKED_STS) | ||
| 154 | dev_err(arizona->dev, "AIF1 overclocked\n"); | ||
| 155 | if (val[0] & ARIZONA_PAD_CTRL_OVERCLOCKED_STS) | ||
| 156 | dev_err(arizona->dev, "Pad control overclocked\n"); | ||
| 157 | |||
| 158 | if (val[1] & ARIZONA_SLIMBUS_SUBSYS_OVERCLOCKED_STS) | ||
| 159 | dev_err(arizona->dev, "Slimbus subsystem overclocked\n"); | ||
| 160 | if (val[1] & ARIZONA_SLIMBUS_ASYNC_OVERCLOCKED_STS) | ||
| 161 | dev_err(arizona->dev, "Slimbus async overclocked\n"); | ||
| 162 | if (val[1] & ARIZONA_SLIMBUS_SYNC_OVERCLOCKED_STS) | ||
| 163 | dev_err(arizona->dev, "Slimbus sync overclocked\n"); | ||
| 164 | if (val[1] & ARIZONA_ASRC_ASYNC_SYS_OVERCLOCKED_STS) | ||
| 165 | dev_err(arizona->dev, "ASRC async system overclocked\n"); | ||
| 166 | if (val[1] & ARIZONA_ASRC_ASYNC_WARP_OVERCLOCKED_STS) | ||
| 167 | dev_err(arizona->dev, "ASRC async WARP overclocked\n"); | ||
| 168 | if (val[1] & ARIZONA_ASRC_SYNC_SYS_OVERCLOCKED_STS) | ||
| 169 | dev_err(arizona->dev, "ASRC sync system overclocked\n"); | ||
| 170 | if (val[1] & ARIZONA_ASRC_SYNC_WARP_OVERCLOCKED_STS) | ||
| 171 | dev_err(arizona->dev, "ASRC sync WARP overclocked\n"); | ||
| 172 | if (val[1] & ARIZONA_ADSP2_1_OVERCLOCKED_STS) | ||
| 173 | dev_err(arizona->dev, "DSP1 overclocked\n"); | ||
| 174 | if (val[1] & ARIZONA_ISRC2_OVERCLOCKED_STS) | ||
| 175 | dev_err(arizona->dev, "ISRC2 overclocked\n"); | ||
| 176 | if (val[1] & ARIZONA_ISRC1_OVERCLOCKED_STS) | ||
| 177 | dev_err(arizona->dev, "ISRC1 overclocked\n"); | ||
| 178 | |||
| 179 | return IRQ_HANDLED; | ||
| 180 | } | ||
| 181 | |||
| 182 | static int arizona_wait_for_boot(struct arizona *arizona) | ||
| 183 | { | ||
| 184 | unsigned int reg; | ||
| 185 | int ret, i; | ||
| 186 | |||
| 187 | /* | ||
| 188 | * We can't use an interrupt as we need to runtime resume to do so, | ||
| 189 | * we won't race with the interrupt handler as it'll be blocked on | ||
| 190 | * runtime resume. | ||
| 191 | */ | ||
| 192 | for (i = 0; i < 5; i++) { | ||
| 193 | msleep(1); | ||
| 194 | |||
| 195 | ret = regmap_read(arizona->regmap, | ||
| 196 | ARIZONA_INTERRUPT_RAW_STATUS_5, ®); | ||
| 197 | if (ret != 0) { | ||
| 198 | dev_err(arizona->dev, "Failed to read boot state: %d\n", | ||
| 199 | ret); | ||
| 200 | continue; | ||
| 201 | } | ||
| 202 | |||
| 203 | if (reg & ARIZONA_BOOT_DONE_STS) | ||
| 204 | break; | ||
| 205 | } | ||
| 206 | |||
| 207 | if (reg & ARIZONA_BOOT_DONE_STS) { | ||
| 208 | regmap_write(arizona->regmap, ARIZONA_INTERRUPT_STATUS_5, | ||
| 209 | ARIZONA_BOOT_DONE_STS); | ||
| 210 | } else { | ||
| 211 | dev_err(arizona->dev, "Device boot timed out: %x\n", reg); | ||
| 212 | return -ETIMEDOUT; | ||
| 213 | } | ||
| 214 | |||
| 215 | pm_runtime_mark_last_busy(arizona->dev); | ||
| 216 | |||
| 217 | return 0; | ||
| 218 | } | ||
| 219 | |||
| 220 | #ifdef CONFIG_PM_RUNTIME | ||
| 221 | static int arizona_runtime_resume(struct device *dev) | ||
| 222 | { | ||
| 223 | struct arizona *arizona = dev_get_drvdata(dev); | ||
| 224 | int ret; | ||
| 225 | |||
| 226 | dev_dbg(arizona->dev, "Leaving AoD mode\n"); | ||
| 227 | |||
| 228 | ret = regulator_enable(arizona->dcvdd); | ||
| 229 | if (ret != 0) { | ||
| 230 | dev_err(arizona->dev, "Failed to enable DCVDD: %d\n", ret); | ||
| 231 | return ret; | ||
| 232 | } | ||
| 233 | |||
| 234 | regcache_cache_only(arizona->regmap, false); | ||
| 235 | |||
| 236 | ret = arizona_wait_for_boot(arizona); | ||
| 237 | if (ret != 0) { | ||
| 238 | regulator_disable(arizona->dcvdd); | ||
| 239 | return ret; | ||
| 240 | } | ||
| 241 | |||
| 242 | regcache_sync(arizona->regmap); | ||
| 243 | |||
| 244 | return 0; | ||
| 245 | } | ||
| 246 | |||
| 247 | static int arizona_runtime_suspend(struct device *dev) | ||
| 248 | { | ||
| 249 | struct arizona *arizona = dev_get_drvdata(dev); | ||
| 250 | |||
| 251 | dev_dbg(arizona->dev, "Entering AoD mode\n"); | ||
| 252 | |||
| 253 | regulator_disable(arizona->dcvdd); | ||
| 254 | regcache_cache_only(arizona->regmap, true); | ||
| 255 | regcache_mark_dirty(arizona->regmap); | ||
| 256 | |||
| 257 | return 0; | ||
| 258 | } | ||
| 259 | #endif | ||
| 260 | |||
| 261 | const struct dev_pm_ops arizona_pm_ops = { | ||
| 262 | SET_RUNTIME_PM_OPS(arizona_runtime_suspend, | ||
| 263 | arizona_runtime_resume, | ||
| 264 | NULL) | ||
| 265 | }; | ||
| 266 | EXPORT_SYMBOL_GPL(arizona_pm_ops); | ||
| 267 | |||
| 268 | static struct mfd_cell early_devs[] = { | ||
| 269 | { .name = "arizona-ldo1" }, | ||
| 270 | }; | ||
| 271 | |||
| 272 | static struct mfd_cell wm5102_devs[] = { | ||
| 273 | { .name = "arizona-extcon" }, | ||
| 274 | { .name = "arizona-gpio" }, | ||
| 275 | { .name = "arizona-micsupp" }, | ||
| 276 | { .name = "arizona-pwm" }, | ||
| 277 | { .name = "wm5102-codec" }, | ||
| 278 | }; | ||
| 279 | |||
| 280 | static struct mfd_cell wm5110_devs[] = { | ||
| 281 | { .name = "arizona-extcon" }, | ||
| 282 | { .name = "arizona-gpio" }, | ||
| 283 | { .name = "arizona-micsupp" }, | ||
| 284 | { .name = "arizona-pwm" }, | ||
| 285 | { .name = "wm5110-codec" }, | ||
| 286 | }; | ||
| 287 | |||
| 288 | int __devinit arizona_dev_init(struct arizona *arizona) | ||
| 289 | { | ||
| 290 | struct device *dev = arizona->dev; | ||
| 291 | const char *type_name; | ||
| 292 | unsigned int reg, val; | ||
| 293 | int ret, i; | ||
| 294 | |||
| 295 | dev_set_drvdata(arizona->dev, arizona); | ||
| 296 | mutex_init(&arizona->clk_lock); | ||
| 297 | |||
| 298 | if (dev_get_platdata(arizona->dev)) | ||
| 299 | memcpy(&arizona->pdata, dev_get_platdata(arizona->dev), | ||
| 300 | sizeof(arizona->pdata)); | ||
| 301 | |||
| 302 | regcache_cache_only(arizona->regmap, true); | ||
| 303 | |||
| 304 | switch (arizona->type) { | ||
| 305 | case WM5102: | ||
| 306 | case WM5110: | ||
| 307 | for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++) | ||
| 308 | arizona->core_supplies[i].supply | ||
| 309 | = wm5102_core_supplies[i]; | ||
| 310 | arizona->num_core_supplies = ARRAY_SIZE(wm5102_core_supplies); | ||
| 311 | break; | ||
| 312 | default: | ||
| 313 | dev_err(arizona->dev, "Unknown device type %d\n", | ||
| 314 | arizona->type); | ||
| 315 | return -EINVAL; | ||
| 316 | } | ||
| 317 | |||
| 318 | ret = mfd_add_devices(arizona->dev, -1, early_devs, | ||
| 319 | ARRAY_SIZE(early_devs), NULL, 0); | ||
| 320 | if (ret != 0) { | ||
| 321 | dev_err(dev, "Failed to add early children: %d\n", ret); | ||
| 322 | return ret; | ||
| 323 | } | ||
| 324 | |||
| 325 | ret = devm_regulator_bulk_get(dev, arizona->num_core_supplies, | ||
| 326 | arizona->core_supplies); | ||
| 327 | if (ret != 0) { | ||
| 328 | dev_err(dev, "Failed to request core supplies: %d\n", | ||
| 329 | ret); | ||
| 330 | goto err_early; | ||
| 331 | } | ||
| 332 | |||
| 333 | arizona->dcvdd = devm_regulator_get(arizona->dev, "DCVDD"); | ||
| 334 | if (IS_ERR(arizona->dcvdd)) { | ||
| 335 | ret = PTR_ERR(arizona->dcvdd); | ||
| 336 | dev_err(dev, "Failed to request DCVDD: %d\n", ret); | ||
| 337 | goto err_early; | ||
| 338 | } | ||
| 339 | |||
| 340 | ret = regulator_bulk_enable(arizona->num_core_supplies, | ||
| 341 | arizona->core_supplies); | ||
| 342 | if (ret != 0) { | ||
| 343 | dev_err(dev, "Failed to enable core supplies: %d\n", | ||
| 344 | ret); | ||
| 345 | goto err_early; | ||
| 346 | } | ||
| 347 | |||
| 348 | ret = regulator_enable(arizona->dcvdd); | ||
| 349 | if (ret != 0) { | ||
| 350 | dev_err(dev, "Failed to enable DCVDD: %d\n", ret); | ||
| 351 | goto err_enable; | ||
| 352 | } | ||
| 353 | |||
| 354 | if (arizona->pdata.reset) { | ||
| 355 | /* Start out with /RESET low to put the chip into reset */ | ||
| 356 | ret = gpio_request_one(arizona->pdata.reset, | ||
| 357 | GPIOF_DIR_OUT | GPIOF_INIT_LOW, | ||
| 358 | "arizona /RESET"); | ||
| 359 | if (ret != 0) { | ||
| 360 | dev_err(dev, "Failed to request /RESET: %d\n", ret); | ||
| 361 | goto err_dcvdd; | ||
| 362 | } | ||
| 363 | |||
| 364 | gpio_set_value_cansleep(arizona->pdata.reset, 1); | ||
| 365 | } | ||
| 366 | |||
| 367 | regcache_cache_only(arizona->regmap, false); | ||
| 368 | |||
| 369 | ret = regmap_read(arizona->regmap, ARIZONA_SOFTWARE_RESET, ®); | ||
| 370 | if (ret != 0) { | ||
| 371 | dev_err(dev, "Failed to read ID register: %d\n", ret); | ||
| 372 | goto err_reset; | ||
| 373 | } | ||
| 374 | |||
| 375 | ret = regmap_read(arizona->regmap, ARIZONA_DEVICE_REVISION, | ||
| 376 | &arizona->rev); | ||
| 377 | if (ret != 0) { | ||
| 378 | dev_err(dev, "Failed to read revision register: %d\n", ret); | ||
| 379 | goto err_reset; | ||
| 380 | } | ||
| 381 | arizona->rev &= ARIZONA_DEVICE_REVISION_MASK; | ||
| 382 | |||
| 383 | switch (reg) { | ||
| 384 | #ifdef CONFIG_MFD_WM5102 | ||
| 385 | case 0x5102: | ||
| 386 | type_name = "WM5102"; | ||
| 387 | if (arizona->type != WM5102) { | ||
| 388 | dev_err(arizona->dev, "WM5102 registered as %d\n", | ||
| 389 | arizona->type); | ||
| 390 | arizona->type = WM5102; | ||
| 391 | } | ||
| 392 | ret = wm5102_patch(arizona); | ||
| 393 | break; | ||
| 394 | #endif | ||
| 395 | #ifdef CONFIG_MFD_WM5110 | ||
| 396 | case 0x5110: | ||
| 397 | type_name = "WM5110"; | ||
| 398 | if (arizona->type != WM5110) { | ||
| 399 | dev_err(arizona->dev, "WM5110 registered as %d\n", | ||
| 400 | arizona->type); | ||
| 401 | arizona->type = WM5110; | ||
| 402 | } | ||
| 403 | ret = wm5110_patch(arizona); | ||
| 404 | break; | ||
| 405 | #endif | ||
| 406 | default: | ||
| 407 | dev_err(arizona->dev, "Unknown device ID %x\n", reg); | ||
| 408 | goto err_reset; | ||
| 409 | } | ||
| 410 | |||
| 411 | dev_info(dev, "%s revision %c\n", type_name, arizona->rev + 'A'); | ||
| 412 | |||
| 413 | if (ret != 0) | ||
| 414 | dev_err(arizona->dev, "Failed to apply patch: %d\n", ret); | ||
| 415 | |||
| 416 | /* If we have a /RESET GPIO we'll already be reset */ | ||
| 417 | if (!arizona->pdata.reset) { | ||
| 418 | ret = regmap_write(arizona->regmap, ARIZONA_SOFTWARE_RESET, 0); | ||
| 419 | if (ret != 0) { | ||
| 420 | dev_err(dev, "Failed to reset device: %d\n", ret); | ||
| 421 | goto err_reset; | ||
| 422 | } | ||
| 423 | } | ||
| 424 | |||
| 425 | ret = arizona_wait_for_boot(arizona); | ||
| 426 | if (ret != 0) { | ||
| 427 | dev_err(arizona->dev, "Device failed initial boot: %d\n", ret); | ||
| 428 | goto err_reset; | ||
| 429 | } | ||
| 430 | |||
| 431 | for (i = 0; i < ARRAY_SIZE(arizona->pdata.gpio_defaults); i++) { | ||
| 432 | if (!arizona->pdata.gpio_defaults[i]) | ||
| 433 | continue; | ||
| 434 | |||
| 435 | regmap_write(arizona->regmap, ARIZONA_GPIO1_CTRL + i, | ||
| 436 | arizona->pdata.gpio_defaults[i]); | ||
| 437 | } | ||
| 438 | |||
| 439 | pm_runtime_set_autosuspend_delay(arizona->dev, 100); | ||
| 440 | pm_runtime_use_autosuspend(arizona->dev); | ||
| 441 | pm_runtime_enable(arizona->dev); | ||
| 442 | |||
| 443 | /* Chip default */ | ||
| 444 | if (!arizona->pdata.clk32k_src) | ||
| 445 | arizona->pdata.clk32k_src = ARIZONA_32KZ_MCLK2; | ||
| 446 | |||
| 447 | switch (arizona->pdata.clk32k_src) { | ||
| 448 | case ARIZONA_32KZ_MCLK1: | ||
| 449 | case ARIZONA_32KZ_MCLK2: | ||
| 450 | regmap_update_bits(arizona->regmap, ARIZONA_CLOCK_32K_1, | ||
| 451 | ARIZONA_CLK_32K_SRC_MASK, | ||
| 452 | arizona->pdata.clk32k_src - 1); | ||
| 453 | break; | ||
| 454 | case ARIZONA_32KZ_NONE: | ||
| 455 | regmap_update_bits(arizona->regmap, ARIZONA_CLOCK_32K_1, | ||
| 456 | ARIZONA_CLK_32K_SRC_MASK, 2); | ||
| 457 | break; | ||
| 458 | default: | ||
| 459 | dev_err(arizona->dev, "Invalid 32kHz clock source: %d\n", | ||
| 460 | arizona->pdata.clk32k_src); | ||
| 461 | ret = -EINVAL; | ||
| 462 | goto err_reset; | ||
| 463 | } | ||
| 464 | |||
| 465 | for (i = 0; i < ARIZONA_MAX_INPUT; i++) { | ||
| 466 | /* Default for both is 0 so noop with defaults */ | ||
| 467 | val = arizona->pdata.dmic_ref[i] | ||
| 468 | << ARIZONA_IN1_DMIC_SUP_SHIFT; | ||
| 469 | val |= arizona->pdata.inmode[i] << ARIZONA_IN1_MODE_SHIFT; | ||
| 470 | |||
| 471 | regmap_update_bits(arizona->regmap, | ||
| 472 | ARIZONA_IN1L_CONTROL + (i * 8), | ||
| 473 | ARIZONA_IN1_DMIC_SUP_MASK | | ||
| 474 | ARIZONA_IN1_MODE_MASK, val); | ||
| 475 | } | ||
| 476 | |||
| 477 | for (i = 0; i < ARIZONA_MAX_OUTPUT; i++) { | ||
| 478 | /* Default is 0 so noop with defaults */ | ||
| 479 | if (arizona->pdata.out_mono[i]) | ||
| 480 | val = ARIZONA_OUT1_MONO; | ||
| 481 | else | ||
| 482 | val = 0; | ||
| 483 | |||
| 484 | regmap_update_bits(arizona->regmap, | ||
| 485 | ARIZONA_OUTPUT_PATH_CONFIG_1L + (i * 8), | ||
| 486 | ARIZONA_OUT1_MONO, val); | ||
| 487 | } | ||
| 488 | |||
| 489 | for (i = 0; i < ARIZONA_MAX_PDM_SPK; i++) { | ||
| 490 | if (arizona->pdata.spk_mute[i]) | ||
| 491 | regmap_update_bits(arizona->regmap, | ||
| 492 | ARIZONA_PDM_SPK1_CTRL_1 + (i * 2), | ||
| 493 | ARIZONA_SPK1_MUTE_ENDIAN_MASK | | ||
| 494 | ARIZONA_SPK1_MUTE_SEQ1_MASK, | ||
| 495 | arizona->pdata.spk_mute[i]); | ||
| 496 | |||
| 497 | if (arizona->pdata.spk_fmt[i]) | ||
| 498 | regmap_update_bits(arizona->regmap, | ||
| 499 | ARIZONA_PDM_SPK1_CTRL_2 + (i * 2), | ||
| 500 | ARIZONA_SPK1_FMT_MASK, | ||
| 501 | arizona->pdata.spk_fmt[i]); | ||
| 502 | } | ||
| 503 | |||
| 504 | /* Set up for interrupts */ | ||
| 505 | ret = arizona_irq_init(arizona); | ||
| 506 | if (ret != 0) | ||
| 507 | goto err_reset; | ||
| 508 | |||
| 509 | arizona_request_irq(arizona, ARIZONA_IRQ_CLKGEN_ERR, "CLKGEN error", | ||
| 510 | arizona_clkgen_err, arizona); | ||
| 511 | arizona_request_irq(arizona, ARIZONA_IRQ_OVERCLOCKED, "Overclocked", | ||
| 512 | arizona_overclocked, arizona); | ||
| 513 | arizona_request_irq(arizona, ARIZONA_IRQ_UNDERCLOCKED, "Underclocked", | ||
| 514 | arizona_underclocked, arizona); | ||
| 515 | |||
| 516 | switch (arizona->type) { | ||
| 517 | case WM5102: | ||
| 518 | ret = mfd_add_devices(arizona->dev, -1, wm5102_devs, | ||
| 519 | ARRAY_SIZE(wm5102_devs), NULL, 0); | ||
| 520 | break; | ||
| 521 | case WM5110: | ||
| 522 | ret = mfd_add_devices(arizona->dev, -1, wm5110_devs, | ||
| 523 | ARRAY_SIZE(wm5102_devs), NULL, 0); | ||
| 524 | break; | ||
| 525 | } | ||
| 526 | |||
| 527 | if (ret != 0) { | ||
| 528 | dev_err(arizona->dev, "Failed to add subdevices: %d\n", ret); | ||
| 529 | goto err_irq; | ||
| 530 | } | ||
| 531 | |||
| 532 | #ifdef CONFIG_PM_RUNTIME | ||
| 533 | regulator_disable(arizona->dcvdd); | ||
| 534 | #endif | ||
| 535 | |||
| 536 | return 0; | ||
| 537 | |||
| 538 | err_irq: | ||
| 539 | arizona_irq_exit(arizona); | ||
| 540 | err_reset: | ||
| 541 | if (arizona->pdata.reset) { | ||
| 542 | gpio_set_value_cansleep(arizona->pdata.reset, 1); | ||
| 543 | gpio_free(arizona->pdata.reset); | ||
| 544 | } | ||
| 545 | err_dcvdd: | ||
| 546 | regulator_disable(arizona->dcvdd); | ||
| 547 | err_enable: | ||
| 548 | regulator_bulk_disable(arizona->num_core_supplies, | ||
| 549 | arizona->core_supplies); | ||
| 550 | err_early: | ||
| 551 | mfd_remove_devices(dev); | ||
| 552 | return ret; | ||
| 553 | } | ||
| 554 | EXPORT_SYMBOL_GPL(arizona_dev_init); | ||
| 555 | |||
| 556 | int __devexit arizona_dev_exit(struct arizona *arizona) | ||
| 557 | { | ||
| 558 | mfd_remove_devices(arizona->dev); | ||
| 559 | arizona_free_irq(arizona, ARIZONA_IRQ_UNDERCLOCKED, arizona); | ||
| 560 | arizona_free_irq(arizona, ARIZONA_IRQ_OVERCLOCKED, arizona); | ||
| 561 | arizona_free_irq(arizona, ARIZONA_IRQ_CLKGEN_ERR, arizona); | ||
| 562 | pm_runtime_disable(arizona->dev); | ||
| 563 | arizona_irq_exit(arizona); | ||
| 564 | return 0; | ||
| 565 | } | ||
| 566 | EXPORT_SYMBOL_GPL(arizona_dev_exit); | ||
diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c new file mode 100644 index 000000000000..570c4b438086 --- /dev/null +++ b/drivers/mfd/arizona-i2c.c | |||
| @@ -0,0 +1,97 @@ | |||
| 1 | /* | ||
| 2 | * Arizona-i2c.c -- Arizona I2C bus interface | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics plc | ||
| 5 | * | ||
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/err.h> | ||
| 14 | #include <linux/i2c.h> | ||
| 15 | #include <linux/module.h> | ||
| 16 | #include <linux/pm_runtime.h> | ||
| 17 | #include <linux/regmap.h> | ||
| 18 | #include <linux/regulator/consumer.h> | ||
| 19 | #include <linux/slab.h> | ||
| 20 | |||
| 21 | #include <linux/mfd/arizona/core.h> | ||
| 22 | |||
| 23 | #include "arizona.h" | ||
| 24 | |||
| 25 | static __devinit int arizona_i2c_probe(struct i2c_client *i2c, | ||
| 26 | const struct i2c_device_id *id) | ||
| 27 | { | ||
| 28 | struct arizona *arizona; | ||
| 29 | const struct regmap_config *regmap_config; | ||
| 30 | int ret; | ||
| 31 | |||
| 32 | switch (id->driver_data) { | ||
| 33 | #ifdef CONFIG_MFD_WM5102 | ||
| 34 | case WM5102: | ||
| 35 | regmap_config = &wm5102_i2c_regmap; | ||
| 36 | break; | ||
| 37 | #endif | ||
| 38 | #ifdef CONFIG_MFD_WM5110 | ||
| 39 | case WM5110: | ||
| 40 | regmap_config = &wm5110_i2c_regmap; | ||
| 41 | break; | ||
| 42 | #endif | ||
| 43 | default: | ||
| 44 | dev_err(&i2c->dev, "Unknown device type %ld\n", | ||
| 45 | id->driver_data); | ||
| 46 | return -EINVAL; | ||
| 47 | } | ||
| 48 | |||
| 49 | arizona = devm_kzalloc(&i2c->dev, sizeof(*arizona), GFP_KERNEL); | ||
| 50 | if (arizona == NULL) | ||
| 51 | return -ENOMEM; | ||
| 52 | |||
| 53 | arizona->regmap = devm_regmap_init_i2c(i2c, regmap_config); | ||
| 54 | if (IS_ERR(arizona->regmap)) { | ||
| 55 | ret = PTR_ERR(arizona->regmap); | ||
| 56 | dev_err(&i2c->dev, "Failed to allocate register map: %d\n", | ||
| 57 | ret); | ||
| 58 | return ret; | ||
| 59 | } | ||
| 60 | |||
| 61 | arizona->type = id->driver_data; | ||
| 62 | arizona->dev = &i2c->dev; | ||
| 63 | arizona->irq = i2c->irq; | ||
| 64 | |||
| 65 | return arizona_dev_init(arizona); | ||
| 66 | } | ||
| 67 | |||
| 68 | static int __devexit arizona_i2c_remove(struct i2c_client *i2c) | ||
| 69 | { | ||
| 70 | struct arizona *arizona = dev_get_drvdata(&i2c->dev); | ||
| 71 | arizona_dev_exit(arizona); | ||
| 72 | return 0; | ||
| 73 | } | ||
| 74 | |||
| 75 | static const struct i2c_device_id arizona_i2c_id[] = { | ||
| 76 | { "wm5102", WM5102 }, | ||
| 77 | { "wm5110", WM5110 }, | ||
| 78 | { } | ||
| 79 | }; | ||
| 80 | MODULE_DEVICE_TABLE(i2c, arizona_i2c_id); | ||
| 81 | |||
| 82 | static struct i2c_driver arizona_i2c_driver = { | ||
| 83 | .driver = { | ||
| 84 | .name = "arizona", | ||
| 85 | .owner = THIS_MODULE, | ||
| 86 | .pm = &arizona_pm_ops, | ||
| 87 | }, | ||
| 88 | .probe = arizona_i2c_probe, | ||
| 89 | .remove = __devexit_p(arizona_i2c_remove), | ||
| 90 | .id_table = arizona_i2c_id, | ||
| 91 | }; | ||
| 92 | |||
| 93 | module_i2c_driver(arizona_i2c_driver); | ||
| 94 | |||
| 95 | MODULE_DESCRIPTION("Arizona I2C bus interface"); | ||
| 96 | MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>"); | ||
| 97 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mfd/arizona-irq.c b/drivers/mfd/arizona-irq.c new file mode 100644 index 000000000000..98ac345f468e --- /dev/null +++ b/drivers/mfd/arizona-irq.c | |||
| @@ -0,0 +1,275 @@ | |||
| 1 | /* | ||
| 2 | * Arizona interrupt support | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics plc | ||
| 5 | * | ||
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/delay.h> | ||
| 14 | #include <linux/gpio.h> | ||
| 15 | #include <linux/interrupt.h> | ||
| 16 | #include <linux/irq.h> | ||
| 17 | #include <linux/irqdomain.h> | ||
| 18 | #include <linux/module.h> | ||
| 19 | #include <linux/pm_runtime.h> | ||
| 20 | #include <linux/regmap.h> | ||
| 21 | #include <linux/regulator/consumer.h> | ||
| 22 | #include <linux/slab.h> | ||
| 23 | |||
| 24 | #include <linux/mfd/arizona/core.h> | ||
| 25 | #include <linux/mfd/arizona/registers.h> | ||
| 26 | |||
| 27 | #include "arizona.h" | ||
| 28 | |||
| 29 | static int arizona_map_irq(struct arizona *arizona, int irq) | ||
| 30 | { | ||
| 31 | int ret; | ||
| 32 | |||
| 33 | ret = regmap_irq_get_virq(arizona->aod_irq_chip, irq); | ||
| 34 | if (ret < 0) | ||
| 35 | ret = regmap_irq_get_virq(arizona->irq_chip, irq); | ||
| 36 | |||
| 37 | return ret; | ||
| 38 | } | ||
| 39 | |||
| 40 | int arizona_request_irq(struct arizona *arizona, int irq, char *name, | ||
| 41 | irq_handler_t handler, void *data) | ||
| 42 | { | ||
| 43 | irq = arizona_map_irq(arizona, irq); | ||
| 44 | if (irq < 0) | ||
| 45 | return irq; | ||
| 46 | |||
| 47 | return request_threaded_irq(irq, NULL, handler, IRQF_ONESHOT, | ||
| 48 | name, data); | ||
| 49 | } | ||
| 50 | EXPORT_SYMBOL_GPL(arizona_request_irq); | ||
| 51 | |||
| 52 | void arizona_free_irq(struct arizona *arizona, int irq, void *data) | ||
| 53 | { | ||
| 54 | irq = arizona_map_irq(arizona, irq); | ||
| 55 | if (irq < 0) | ||
| 56 | return; | ||
| 57 | |||
| 58 | free_irq(irq, data); | ||
| 59 | } | ||
| 60 | EXPORT_SYMBOL_GPL(arizona_free_irq); | ||
| 61 | |||
| 62 | int arizona_set_irq_wake(struct arizona *arizona, int irq, int on) | ||
| 63 | { | ||
| 64 | irq = arizona_map_irq(arizona, irq); | ||
| 65 | if (irq < 0) | ||
| 66 | return irq; | ||
| 67 | |||
| 68 | return irq_set_irq_wake(irq, on); | ||
| 69 | } | ||
| 70 | EXPORT_SYMBOL_GPL(arizona_set_irq_wake); | ||
| 71 | |||
| 72 | static irqreturn_t arizona_boot_done(int irq, void *data) | ||
| 73 | { | ||
| 74 | struct arizona *arizona = data; | ||
| 75 | |||
| 76 | dev_dbg(arizona->dev, "Boot done\n"); | ||
| 77 | |||
| 78 | return IRQ_HANDLED; | ||
| 79 | } | ||
| 80 | |||
| 81 | static irqreturn_t arizona_ctrlif_err(int irq, void *data) | ||
| 82 | { | ||
| 83 | struct arizona *arizona = data; | ||
| 84 | |||
| 85 | /* | ||
| 86 | * For pretty much all potential sources a register cache sync | ||
| 87 | * won't help, we've just got a software bug somewhere. | ||
| 88 | */ | ||
| 89 | dev_err(arizona->dev, "Control interface error\n"); | ||
| 90 | |||
| 91 | return IRQ_HANDLED; | ||
| 92 | } | ||
| 93 | |||
| 94 | static irqreturn_t arizona_irq_thread(int irq, void *data) | ||
| 95 | { | ||
| 96 | struct arizona *arizona = data; | ||
| 97 | int i, ret; | ||
| 98 | |||
| 99 | ret = pm_runtime_get_sync(arizona->dev); | ||
| 100 | if (ret < 0) { | ||
| 101 | dev_err(arizona->dev, "Failed to resume device: %d\n", ret); | ||
| 102 | return IRQ_NONE; | ||
| 103 | } | ||
| 104 | |||
| 105 | /* Check both domains */ | ||
| 106 | for (i = 0; i < 2; i++) | ||
| 107 | handle_nested_irq(irq_find_mapping(arizona->virq, i)); | ||
| 108 | |||
| 109 | pm_runtime_mark_last_busy(arizona->dev); | ||
| 110 | pm_runtime_put_autosuspend(arizona->dev); | ||
| 111 | |||
| 112 | return IRQ_HANDLED; | ||
| 113 | } | ||
| 114 | |||
| 115 | static void arizona_irq_enable(struct irq_data *data) | ||
| 116 | { | ||
| 117 | } | ||
| 118 | |||
| 119 | static void arizona_irq_disable(struct irq_data *data) | ||
| 120 | { | ||
| 121 | } | ||
| 122 | |||
| 123 | static struct irq_chip arizona_irq_chip = { | ||
| 124 | .name = "arizona", | ||
| 125 | .irq_disable = arizona_irq_disable, | ||
| 126 | .irq_enable = arizona_irq_enable, | ||
| 127 | }; | ||
| 128 | |||
| 129 | static int arizona_irq_map(struct irq_domain *h, unsigned int virq, | ||
| 130 | irq_hw_number_t hw) | ||
| 131 | { | ||
| 132 | struct regmap_irq_chip_data *data = h->host_data; | ||
| 133 | |||
| 134 | irq_set_chip_data(virq, data); | ||
| 135 | irq_set_chip_and_handler(virq, &arizona_irq_chip, handle_edge_irq); | ||
| 136 | irq_set_nested_thread(virq, 1); | ||
| 137 | |||
| 138 | /* ARM needs us to explicitly flag the IRQ as valid | ||
| 139 | * and will set them noprobe when we do so. */ | ||
| 140 | #ifdef CONFIG_ARM | ||
| 141 | set_irq_flags(virq, IRQF_VALID); | ||
| 142 | #else | ||
| 143 | irq_set_noprobe(virq); | ||
| 144 | #endif | ||
| 145 | |||
| 146 | return 0; | ||
| 147 | } | ||
| 148 | |||
| 149 | static struct irq_domain_ops arizona_domain_ops = { | ||
| 150 | .map = arizona_irq_map, | ||
| 151 | .xlate = irq_domain_xlate_twocell, | ||
| 152 | }; | ||
| 153 | |||
| 154 | int arizona_irq_init(struct arizona *arizona) | ||
| 155 | { | ||
| 156 | int flags = IRQF_ONESHOT; | ||
| 157 | int ret, i; | ||
| 158 | const struct regmap_irq_chip *aod, *irq; | ||
| 159 | |||
| 160 | switch (arizona->type) { | ||
| 161 | #ifdef CONFIG_MFD_WM5102 | ||
| 162 | case WM5102: | ||
| 163 | aod = &wm5102_aod; | ||
| 164 | irq = &wm5102_irq; | ||
| 165 | break; | ||
| 166 | #endif | ||
| 167 | #ifdef CONFIG_MFD_WM5110 | ||
| 168 | case WM5110: | ||
| 169 | aod = &wm5110_aod; | ||
| 170 | irq = &wm5110_irq; | ||
| 171 | break; | ||
| 172 | #endif | ||
| 173 | default: | ||
| 174 | BUG_ON("Unknown Arizona class device" == NULL); | ||
| 175 | return -EINVAL; | ||
| 176 | } | ||
| 177 | |||
| 178 | if (arizona->pdata.irq_active_high) { | ||
| 179 | ret = regmap_update_bits(arizona->regmap, ARIZONA_IRQ_CTRL_1, | ||
| 180 | ARIZONA_IRQ_POL, 0); | ||
| 181 | if (ret != 0) { | ||
| 182 | dev_err(arizona->dev, "Couldn't set IRQ polarity: %d\n", | ||
| 183 | ret); | ||
| 184 | goto err; | ||
| 185 | } | ||
| 186 | |||
| 187 | flags |= IRQF_TRIGGER_HIGH; | ||
| 188 | } else { | ||
| 189 | flags |= IRQF_TRIGGER_LOW; | ||
| 190 | } | ||
| 191 | |||
| 192 | /* Allocate a virtual IRQ domain to distribute to the regmap domains */ | ||
| 193 | arizona->virq = irq_domain_add_linear(NULL, 2, &arizona_domain_ops, | ||
| 194 | arizona); | ||
| 195 | if (!arizona->virq) { | ||
| 196 | ret = -EINVAL; | ||
| 197 | goto err; | ||
| 198 | } | ||
| 199 | |||
| 200 | ret = regmap_add_irq_chip(arizona->regmap, | ||
| 201 | irq_create_mapping(arizona->virq, 0), | ||
| 202 | IRQF_ONESHOT, -1, aod, | ||
| 203 | &arizona->aod_irq_chip); | ||
| 204 | if (ret != 0) { | ||
| 205 | dev_err(arizona->dev, "Failed to add AOD IRQs: %d\n", ret); | ||
| 206 | goto err_domain; | ||
| 207 | } | ||
| 208 | |||
| 209 | ret = regmap_add_irq_chip(arizona->regmap, | ||
| 210 | irq_create_mapping(arizona->virq, 1), | ||
| 211 | IRQF_ONESHOT, -1, irq, | ||
| 212 | &arizona->irq_chip); | ||
| 213 | if (ret != 0) { | ||
| 214 | dev_err(arizona->dev, "Failed to add AOD IRQs: %d\n", ret); | ||
| 215 | goto err_aod; | ||
| 216 | } | ||
| 217 | |||
| 218 | /* Make sure the boot done IRQ is unmasked for resumes */ | ||
| 219 | i = arizona_map_irq(arizona, ARIZONA_IRQ_BOOT_DONE); | ||
| 220 | ret = request_threaded_irq(i, NULL, arizona_boot_done, IRQF_ONESHOT, | ||
| 221 | "Boot done", arizona); | ||
| 222 | if (ret != 0) { | ||
| 223 | dev_err(arizona->dev, "Failed to request boot done %d: %d\n", | ||
| 224 | arizona->irq, ret); | ||
| 225 | goto err_boot_done; | ||
| 226 | } | ||
| 227 | |||
| 228 | /* Handle control interface errors in the core */ | ||
| 229 | i = arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR); | ||
| 230 | ret = request_threaded_irq(i, NULL, arizona_ctrlif_err, IRQF_ONESHOT, | ||
| 231 | "Control interface error", arizona); | ||
| 232 | if (ret != 0) { | ||
| 233 | dev_err(arizona->dev, "Failed to request boot done %d: %d\n", | ||
| 234 | arizona->irq, ret); | ||
| 235 | goto err_ctrlif; | ||
| 236 | } | ||
| 237 | |||
| 238 | ret = request_threaded_irq(arizona->irq, NULL, arizona_irq_thread, | ||
| 239 | flags, "arizona", arizona); | ||
| 240 | |||
| 241 | if (ret != 0) { | ||
| 242 | dev_err(arizona->dev, "Failed to request IRQ %d: %d\n", | ||
| 243 | arizona->irq, ret); | ||
| 244 | goto err_main_irq; | ||
| 245 | } | ||
| 246 | |||
| 247 | return 0; | ||
| 248 | |||
| 249 | err_main_irq: | ||
| 250 | free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR), arizona); | ||
| 251 | err_ctrlif: | ||
| 252 | free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_BOOT_DONE), arizona); | ||
| 253 | err_boot_done: | ||
| 254 | regmap_del_irq_chip(irq_create_mapping(arizona->virq, 1), | ||
| 255 | arizona->irq_chip); | ||
| 256 | err_aod: | ||
| 257 | regmap_del_irq_chip(irq_create_mapping(arizona->virq, 0), | ||
| 258 | arizona->aod_irq_chip); | ||
| 259 | err_domain: | ||
| 260 | err: | ||
| 261 | return ret; | ||
| 262 | } | ||
| 263 | |||
| 264 | int arizona_irq_exit(struct arizona *arizona) | ||
| 265 | { | ||
| 266 | free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_CTRLIF_ERR), arizona); | ||
| 267 | free_irq(arizona_map_irq(arizona, ARIZONA_IRQ_BOOT_DONE), arizona); | ||
| 268 | regmap_del_irq_chip(irq_create_mapping(arizona->virq, 1), | ||
| 269 | arizona->irq_chip); | ||
| 270 | regmap_del_irq_chip(irq_create_mapping(arizona->virq, 0), | ||
| 271 | arizona->aod_irq_chip); | ||
| 272 | free_irq(arizona->irq, arizona); | ||
| 273 | |||
| 274 | return 0; | ||
| 275 | } | ||
diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c new file mode 100644 index 000000000000..df2e5a8bee28 --- /dev/null +++ b/drivers/mfd/arizona-spi.c | |||
| @@ -0,0 +1,97 @@ | |||
| 1 | /* | ||
| 2 | * arizona-spi.c -- Arizona SPI bus interface | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics plc | ||
| 5 | * | ||
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/err.h> | ||
| 14 | #include <linux/module.h> | ||
| 15 | #include <linux/pm_runtime.h> | ||
| 16 | #include <linux/regmap.h> | ||
| 17 | #include <linux/regulator/consumer.h> | ||
| 18 | #include <linux/slab.h> | ||
| 19 | #include <linux/spi/spi.h> | ||
| 20 | |||
| 21 | #include <linux/mfd/arizona/core.h> | ||
| 22 | |||
| 23 | #include "arizona.h" | ||
| 24 | |||
| 25 | static int __devinit arizona_spi_probe(struct spi_device *spi) | ||
| 26 | { | ||
| 27 | const struct spi_device_id *id = spi_get_device_id(spi); | ||
| 28 | struct arizona *arizona; | ||
| 29 | const struct regmap_config *regmap_config; | ||
| 30 | int ret; | ||
| 31 | |||
| 32 | switch (id->driver_data) { | ||
| 33 | #ifdef CONFIG_MFD_WM5102 | ||
| 34 | case WM5102: | ||
| 35 | regmap_config = &wm5102_spi_regmap; | ||
| 36 | break; | ||
| 37 | #endif | ||
| 38 | #ifdef CONFIG_MFD_WM5110 | ||
| 39 | case WM5110: | ||
| 40 | regmap_config = &wm5110_spi_regmap; | ||
| 41 | break; | ||
| 42 | #endif | ||
| 43 | default: | ||
| 44 | dev_err(&spi->dev, "Unknown device type %ld\n", | ||
| 45 | id->driver_data); | ||
| 46 | return -EINVAL; | ||
| 47 | } | ||
| 48 | |||
| 49 | arizona = devm_kzalloc(&spi->dev, sizeof(*arizona), GFP_KERNEL); | ||
| 50 | if (arizona == NULL) | ||
| 51 | return -ENOMEM; | ||
| 52 | |||
| 53 | arizona->regmap = devm_regmap_init_spi(spi, regmap_config); | ||
| 54 | if (IS_ERR(arizona->regmap)) { | ||
| 55 | ret = PTR_ERR(arizona->regmap); | ||
| 56 | dev_err(&spi->dev, "Failed to allocate register map: %d\n", | ||
| 57 | ret); | ||
| 58 | return ret; | ||
| 59 | } | ||
| 60 | |||
| 61 | arizona->type = id->driver_data; | ||
| 62 | arizona->dev = &spi->dev; | ||
| 63 | arizona->irq = spi->irq; | ||
| 64 | |||
| 65 | return arizona_dev_init(arizona); | ||
| 66 | } | ||
| 67 | |||
| 68 | static int __devexit arizona_spi_remove(struct spi_device *spi) | ||
| 69 | { | ||
| 70 | struct arizona *arizona = dev_get_drvdata(&spi->dev); | ||
| 71 | arizona_dev_exit(arizona); | ||
| 72 | return 0; | ||
| 73 | } | ||
| 74 | |||
| 75 | static const struct spi_device_id arizona_spi_ids[] = { | ||
| 76 | { "wm5102", WM5102 }, | ||
| 77 | { "wm5110", WM5110 }, | ||
| 78 | { }, | ||
| 79 | }; | ||
| 80 | MODULE_DEVICE_TABLE(spi, arizona_spi_ids); | ||
| 81 | |||
| 82 | static struct spi_driver arizona_spi_driver = { | ||
| 83 | .driver = { | ||
| 84 | .name = "arizona", | ||
| 85 | .owner = THIS_MODULE, | ||
| 86 | .pm = &arizona_pm_ops, | ||
| 87 | }, | ||
| 88 | .probe = arizona_spi_probe, | ||
| 89 | .remove = __devexit_p(arizona_spi_remove), | ||
| 90 | .id_table = arizona_spi_ids, | ||
| 91 | }; | ||
| 92 | |||
| 93 | module_spi_driver(arizona_spi_driver); | ||
| 94 | |||
| 95 | MODULE_DESCRIPTION("Arizona SPI bus interface"); | ||
| 96 | MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>"); | ||
| 97 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mfd/arizona.h b/drivers/mfd/arizona.h new file mode 100644 index 000000000000..9798ae5da67b --- /dev/null +++ b/drivers/mfd/arizona.h | |||
| @@ -0,0 +1,40 @@ | |||
| 1 | /* | ||
| 2 | * wm5102.h -- WM5102 MFD internals | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics plc | ||
| 5 | * | ||
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef _WM5102_H | ||
| 14 | #define _WM5102_H | ||
| 15 | |||
| 16 | #include <linux/regmap.h> | ||
| 17 | #include <linux/pm.h> | ||
| 18 | |||
| 19 | struct wm_arizona; | ||
| 20 | |||
| 21 | extern const struct regmap_config wm5102_i2c_regmap; | ||
| 22 | extern const struct regmap_config wm5102_spi_regmap; | ||
| 23 | |||
| 24 | extern const struct regmap_config wm5110_i2c_regmap; | ||
| 25 | extern const struct regmap_config wm5110_spi_regmap; | ||
| 26 | |||
| 27 | extern const struct dev_pm_ops arizona_pm_ops; | ||
| 28 | |||
| 29 | extern const struct regmap_irq_chip wm5102_aod; | ||
| 30 | extern const struct regmap_irq_chip wm5102_irq; | ||
| 31 | |||
| 32 | extern const struct regmap_irq_chip wm5110_aod; | ||
| 33 | extern const struct regmap_irq_chip wm5110_irq; | ||
| 34 | |||
| 35 | int arizona_dev_init(struct arizona *arizona); | ||
| 36 | int arizona_dev_exit(struct arizona *arizona); | ||
| 37 | int arizona_irq_init(struct arizona *arizona); | ||
| 38 | int arizona_irq_exit(struct arizona *arizona); | ||
| 39 | |||
| 40 | #endif | ||
diff --git a/drivers/mfd/da9052-core.c b/drivers/mfd/da9052-core.c index 1f1313c90573..2544910e1fd6 100644 --- a/drivers/mfd/da9052-core.c +++ b/drivers/mfd/da9052-core.c | |||
| @@ -772,7 +772,6 @@ EXPORT_SYMBOL_GPL(da9052_regmap_config); | |||
| 772 | int __devinit da9052_device_init(struct da9052 *da9052, u8 chip_id) | 772 | int __devinit da9052_device_init(struct da9052 *da9052, u8 chip_id) |
| 773 | { | 773 | { |
| 774 | struct da9052_pdata *pdata = da9052->dev->platform_data; | 774 | struct da9052_pdata *pdata = da9052->dev->platform_data; |
| 775 | struct irq_desc *desc; | ||
| 776 | int ret; | 775 | int ret; |
| 777 | 776 | ||
| 778 | mutex_init(&da9052->auxadc_lock); | 777 | mutex_init(&da9052->auxadc_lock); |
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c index 50e83dc5dc49..7040a0081130 100644 --- a/drivers/mfd/db8500-prcmu.c +++ b/drivers/mfd/db8500-prcmu.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | #include <linux/uaccess.h> | 28 | #include <linux/uaccess.h> |
| 29 | #include <linux/mfd/core.h> | 29 | #include <linux/mfd/core.h> |
| 30 | #include <linux/mfd/dbx500-prcmu.h> | 30 | #include <linux/mfd/dbx500-prcmu.h> |
| 31 | #include <linux/mfd/abx500/ab8500.h> | ||
| 31 | #include <linux/regulator/db8500-prcmu.h> | 32 | #include <linux/regulator/db8500-prcmu.h> |
| 32 | #include <linux/regulator/machine.h> | 33 | #include <linux/regulator/machine.h> |
| 33 | #include <asm/hardware/gic.h> | 34 | #include <asm/hardware/gic.h> |
| @@ -2269,10 +2270,10 @@ int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size) | |||
| 2269 | /** | 2270 | /** |
| 2270 | * prcmu_ac_wake_req - should be called whenever ARM wants to wakeup Modem | 2271 | * prcmu_ac_wake_req - should be called whenever ARM wants to wakeup Modem |
| 2271 | */ | 2272 | */ |
| 2272 | void prcmu_ac_wake_req(void) | 2273 | int prcmu_ac_wake_req(void) |
| 2273 | { | 2274 | { |
| 2274 | u32 val; | 2275 | u32 val; |
| 2275 | u32 status; | 2276 | int ret = 0; |
| 2276 | 2277 | ||
| 2277 | mutex_lock(&mb0_transfer.ac_wake_lock); | 2278 | mutex_lock(&mb0_transfer.ac_wake_lock); |
| 2278 | 2279 | ||
| @@ -2282,39 +2283,32 @@ void prcmu_ac_wake_req(void) | |||
| 2282 | 2283 | ||
| 2283 | atomic_set(&ac_wake_req_state, 1); | 2284 | atomic_set(&ac_wake_req_state, 1); |
| 2284 | 2285 | ||
| 2285 | retry: | 2286 | /* |
| 2286 | writel((val | PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ), PRCM_HOSTACCESS_REQ); | 2287 | * Force Modem Wake-up before hostaccess_req ping-pong. |
| 2288 | * It prevents Modem to enter in Sleep while acking the hostaccess | ||
| 2289 | * request. The 31us delay has been calculated by HWI. | ||
| 2290 | */ | ||
| 2291 | val |= PRCM_HOSTACCESS_REQ_WAKE_REQ; | ||
| 2292 | writel(val, PRCM_HOSTACCESS_REQ); | ||
| 2293 | |||
| 2294 | udelay(31); | ||
| 2295 | |||
| 2296 | val |= PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ; | ||
| 2297 | writel(val, PRCM_HOSTACCESS_REQ); | ||
| 2287 | 2298 | ||
| 2288 | if (!wait_for_completion_timeout(&mb0_transfer.ac_wake_work, | 2299 | if (!wait_for_completion_timeout(&mb0_transfer.ac_wake_work, |
| 2289 | msecs_to_jiffies(5000))) { | 2300 | msecs_to_jiffies(5000))) { |
| 2301 | #if defined(CONFIG_DBX500_PRCMU_DEBUG) | ||
| 2302 | db8500_prcmu_debug_dump(__func__, true, true); | ||
| 2303 | #endif | ||
| 2290 | pr_crit("prcmu: %s timed out (5 s) waiting for a reply.\n", | 2304 | pr_crit("prcmu: %s timed out (5 s) waiting for a reply.\n", |
| 2291 | __func__); | 2305 | __func__); |
| 2292 | goto unlock_and_return; | 2306 | ret = -EFAULT; |
| 2293 | } | ||
| 2294 | |||
| 2295 | /* | ||
| 2296 | * The modem can generate an AC_WAKE_ACK, and then still go to sleep. | ||
| 2297 | * As a workaround, we wait, and then check that the modem is indeed | ||
| 2298 | * awake (in terms of the value of the PRCM_MOD_AWAKE_STATUS | ||
| 2299 | * register, which may not be the whole truth). | ||
| 2300 | */ | ||
| 2301 | udelay(400); | ||
| 2302 | status = (readl(PRCM_MOD_AWAKE_STATUS) & BITS(0, 2)); | ||
| 2303 | if (status != (PRCM_MOD_AWAKE_STATUS_PRCM_MOD_AAPD_AWAKE | | ||
| 2304 | PRCM_MOD_AWAKE_STATUS_PRCM_MOD_COREPD_AWAKE)) { | ||
| 2305 | pr_err("prcmu: %s received ack, but modem not awake (0x%X).\n", | ||
| 2306 | __func__, status); | ||
| 2307 | udelay(1200); | ||
| 2308 | writel(val, PRCM_HOSTACCESS_REQ); | ||
| 2309 | if (wait_for_completion_timeout(&mb0_transfer.ac_wake_work, | ||
| 2310 | msecs_to_jiffies(5000))) | ||
| 2311 | goto retry; | ||
| 2312 | pr_crit("prcmu: %s timed out (5 s) waiting for AC_SLEEP_ACK.\n", | ||
| 2313 | __func__); | ||
| 2314 | } | 2307 | } |
| 2315 | 2308 | ||
| 2316 | unlock_and_return: | 2309 | unlock_and_return: |
| 2317 | mutex_unlock(&mb0_transfer.ac_wake_lock); | 2310 | mutex_unlock(&mb0_transfer.ac_wake_lock); |
| 2311 | return ret; | ||
| 2318 | } | 2312 | } |
| 2319 | 2313 | ||
| 2320 | /** | 2314 | /** |
| @@ -2945,14 +2939,31 @@ static struct regulator_init_data db8500_regulators[DB8500_NUM_REGULATORS] = { | |||
| 2945 | }, | 2939 | }, |
| 2946 | }; | 2940 | }; |
| 2947 | 2941 | ||
| 2942 | static struct resource ab8500_resources[] = { | ||
| 2943 | [0] = { | ||
| 2944 | .start = IRQ_DB8500_AB8500, | ||
| 2945 | .end = IRQ_DB8500_AB8500, | ||
| 2946 | .flags = IORESOURCE_IRQ | ||
| 2947 | } | ||
| 2948 | }; | ||
| 2949 | |||
| 2948 | static struct mfd_cell db8500_prcmu_devs[] = { | 2950 | static struct mfd_cell db8500_prcmu_devs[] = { |
| 2949 | { | 2951 | { |
| 2950 | .name = "db8500-prcmu-regulators", | 2952 | .name = "db8500-prcmu-regulators", |
| 2953 | .of_compatible = "stericsson,db8500-prcmu-regulator", | ||
| 2951 | .platform_data = &db8500_regulators, | 2954 | .platform_data = &db8500_regulators, |
| 2952 | .pdata_size = sizeof(db8500_regulators), | 2955 | .pdata_size = sizeof(db8500_regulators), |
| 2953 | }, | 2956 | }, |
| 2954 | { | 2957 | { |
| 2955 | .name = "cpufreq-u8500", | 2958 | .name = "cpufreq-u8500", |
| 2959 | .of_compatible = "stericsson,cpufreq-u8500", | ||
| 2960 | }, | ||
| 2961 | { | ||
| 2962 | .name = "ab8500-core", | ||
| 2963 | .of_compatible = "stericsson,ab8500", | ||
| 2964 | .num_resources = ARRAY_SIZE(ab8500_resources), | ||
| 2965 | .resources = ab8500_resources, | ||
| 2966 | .id = AB8500_VERSION_AB8500, | ||
| 2956 | }, | 2967 | }, |
| 2957 | }; | 2968 | }; |
| 2958 | 2969 | ||
| @@ -2962,8 +2973,9 @@ static struct mfd_cell db8500_prcmu_devs[] = { | |||
| 2962 | */ | 2973 | */ |
| 2963 | static int __devinit db8500_prcmu_probe(struct platform_device *pdev) | 2974 | static int __devinit db8500_prcmu_probe(struct platform_device *pdev) |
| 2964 | { | 2975 | { |
| 2976 | struct ab8500_platform_data *ab8500_platdata = pdev->dev.platform_data; | ||
| 2965 | struct device_node *np = pdev->dev.of_node; | 2977 | struct device_node *np = pdev->dev.of_node; |
| 2966 | int irq = 0, err = 0; | 2978 | int irq = 0, err = 0, i; |
| 2967 | 2979 | ||
| 2968 | if (ux500_is_svp()) | 2980 | if (ux500_is_svp()) |
| 2969 | return -ENODEV; | 2981 | return -ENODEV; |
| @@ -2987,16 +2999,21 @@ static int __devinit db8500_prcmu_probe(struct platform_device *pdev) | |||
| 2987 | goto no_irq_return; | 2999 | goto no_irq_return; |
| 2988 | } | 3000 | } |
| 2989 | 3001 | ||
| 3002 | for (i = 0; i < ARRAY_SIZE(db8500_prcmu_devs); i++) { | ||
| 3003 | if (!strcmp(db8500_prcmu_devs[i].name, "ab8500-core")) { | ||
| 3004 | db8500_prcmu_devs[i].platform_data = ab8500_platdata; | ||
| 3005 | db8500_prcmu_devs[i].pdata_size = sizeof(struct ab8500_platform_data); | ||
| 3006 | } | ||
| 3007 | } | ||
| 3008 | |||
| 2990 | if (cpu_is_u8500v20_or_later()) | 3009 | if (cpu_is_u8500v20_or_later()) |
| 2991 | prcmu_config_esram0_deep_sleep(ESRAM0_DEEP_SLEEP_STATE_RET); | 3010 | prcmu_config_esram0_deep_sleep(ESRAM0_DEEP_SLEEP_STATE_RET); |
| 2992 | 3011 | ||
| 2993 | if (!np) { | 3012 | err = mfd_add_devices(&pdev->dev, 0, db8500_prcmu_devs, |
| 2994 | err = mfd_add_devices(&pdev->dev, 0, db8500_prcmu_devs, | 3013 | ARRAY_SIZE(db8500_prcmu_devs), NULL, 0); |
| 2995 | ARRAY_SIZE(db8500_prcmu_devs), NULL, 0); | 3014 | if (err) { |
| 2996 | if (err) { | 3015 | pr_err("prcmu: Failed to add subdevices\n"); |
| 2997 | pr_err("prcmu: Failed to add subdevices\n"); | 3016 | return err; |
| 2998 | return err; | ||
| 2999 | } | ||
| 3000 | } | 3017 | } |
| 3001 | 3018 | ||
| 3002 | pr_info("DB8500 PRCMU initialized\n"); | 3019 | pr_info("DB8500 PRCMU initialized\n"); |
| @@ -3004,11 +3021,16 @@ static int __devinit db8500_prcmu_probe(struct platform_device *pdev) | |||
| 3004 | no_irq_return: | 3021 | no_irq_return: |
| 3005 | return err; | 3022 | return err; |
| 3006 | } | 3023 | } |
| 3024 | static const struct of_device_id db8500_prcmu_match[] = { | ||
| 3025 | { .compatible = "stericsson,db8500-prcmu"}, | ||
| 3026 | { }, | ||
| 3027 | }; | ||
| 3007 | 3028 | ||
| 3008 | static struct platform_driver db8500_prcmu_driver = { | 3029 | static struct platform_driver db8500_prcmu_driver = { |
| 3009 | .driver = { | 3030 | .driver = { |
| 3010 | .name = "db8500-prcmu", | 3031 | .name = "db8500-prcmu", |
| 3011 | .owner = THIS_MODULE, | 3032 | .owner = THIS_MODULE, |
| 3033 | .of_match_table = db8500_prcmu_match, | ||
| 3012 | }, | 3034 | }, |
| 3013 | .probe = db8500_prcmu_probe, | 3035 | .probe = db8500_prcmu_probe, |
| 3014 | }; | 3036 | }; |
| @@ -3018,7 +3040,7 @@ static int __init db8500_prcmu_init(void) | |||
| 3018 | return platform_driver_register(&db8500_prcmu_driver); | 3040 | return platform_driver_register(&db8500_prcmu_driver); |
| 3019 | } | 3041 | } |
| 3020 | 3042 | ||
| 3021 | arch_initcall(db8500_prcmu_init); | 3043 | core_initcall(db8500_prcmu_init); |
| 3022 | 3044 | ||
| 3023 | MODULE_AUTHOR("Mattias Nilsson <mattias.i.nilsson@stericsson.com>"); | 3045 | MODULE_AUTHOR("Mattias Nilsson <mattias.i.nilsson@stericsson.com>"); |
| 3024 | MODULE_DESCRIPTION("DB8500 PRCM Unit driver"); | 3046 | MODULE_DESCRIPTION("DB8500 PRCM Unit driver"); |
diff --git a/drivers/mfd/dbx500-prcmu-regs.h b/drivers/mfd/dbx500-prcmu-regs.h index 3a0bf91d7780..23108a6e3167 100644 --- a/drivers/mfd/dbx500-prcmu-regs.h +++ b/drivers/mfd/dbx500-prcmu-regs.h | |||
| @@ -106,6 +106,7 @@ | |||
| 106 | 106 | ||
| 107 | #define PRCM_HOSTACCESS_REQ (_PRCMU_BASE + 0x334) | 107 | #define PRCM_HOSTACCESS_REQ (_PRCMU_BASE + 0x334) |
| 108 | #define PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ 0x1 | 108 | #define PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ 0x1 |
| 109 | #define PRCM_HOSTACCESS_REQ_WAKE_REQ BIT(16) | ||
| 109 | #define ARM_WAKEUP_MODEM 0x1 | 110 | #define ARM_WAKEUP_MODEM 0x1 |
| 110 | 111 | ||
| 111 | #define PRCM_ARM_IT1_CLR (_PRCMU_BASE + 0x48C) | 112 | #define PRCM_ARM_IT1_CLR (_PRCMU_BASE + 0x48C) |
diff --git a/drivers/mfd/max77686-irq.c b/drivers/mfd/max77686-irq.c new file mode 100644 index 000000000000..cdc3280e2ec7 --- /dev/null +++ b/drivers/mfd/max77686-irq.c | |||
| @@ -0,0 +1,319 @@ | |||
| 1 | /* | ||
| 2 | * max77686-irq.c - Interrupt controller support for MAX77686 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Samsung Electronics Co.Ltd | ||
| 5 | * Chiwoong Byun <woong.byun@samsung.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation; either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 20 | * | ||
| 21 | * This driver is based on max8997-irq.c | ||
| 22 | */ | ||
| 23 | |||
| 24 | #include <linux/err.h> | ||
| 25 | #include <linux/irq.h> | ||
| 26 | #include <linux/interrupt.h> | ||
| 27 | #include <linux/gpio.h> | ||
| 28 | #include <linux/mfd/max77686.h> | ||
| 29 | #include <linux/mfd/max77686-private.h> | ||
| 30 | #include <linux/irqdomain.h> | ||
| 31 | #include <linux/regmap.h> | ||
| 32 | |||
| 33 | enum { | ||
| 34 | MAX77686_DEBUG_IRQ_INFO = 1 << 0, | ||
| 35 | MAX77686_DEBUG_IRQ_MASK = 1 << 1, | ||
| 36 | MAX77686_DEBUG_IRQ_INT = 1 << 2, | ||
| 37 | }; | ||
| 38 | |||
| 39 | static int debug_mask = 0; | ||
| 40 | module_param(debug_mask, int, 0); | ||
| 41 | MODULE_PARM_DESC(debug_mask, "Set debug_mask : 0x0=off 0x1=IRQ_INFO 0x2=IRQ_MASK 0x4=IRQ_INI)"); | ||
| 42 | |||
| 43 | static const u8 max77686_mask_reg[] = { | ||
| 44 | [PMIC_INT1] = MAX77686_REG_INT1MSK, | ||
| 45 | [PMIC_INT2] = MAX77686_REG_INT2MSK, | ||
| 46 | [RTC_INT] = MAX77686_RTC_INTM, | ||
| 47 | }; | ||
| 48 | |||
| 49 | static struct regmap *max77686_get_regmap(struct max77686_dev *max77686, | ||
| 50 | enum max77686_irq_source src) | ||
| 51 | { | ||
| 52 | switch (src) { | ||
| 53 | case PMIC_INT1 ... PMIC_INT2: | ||
| 54 | return max77686->regmap; | ||
| 55 | case RTC_INT: | ||
| 56 | return max77686->rtc_regmap; | ||
| 57 | default: | ||
| 58 | return ERR_PTR(-EINVAL); | ||
| 59 | } | ||
| 60 | } | ||
| 61 | |||
| 62 | struct max77686_irq_data { | ||
| 63 | int mask; | ||
| 64 | enum max77686_irq_source group; | ||
| 65 | }; | ||
| 66 | |||
| 67 | #define DECLARE_IRQ(idx, _group, _mask) \ | ||
| 68 | [(idx)] = { .group = (_group), .mask = (_mask) } | ||
| 69 | static const struct max77686_irq_data max77686_irqs[] = { | ||
| 70 | DECLARE_IRQ(MAX77686_PMICIRQ_PWRONF, PMIC_INT1, 1 << 0), | ||
| 71 | DECLARE_IRQ(MAX77686_PMICIRQ_PWRONR, PMIC_INT1, 1 << 1), | ||
| 72 | DECLARE_IRQ(MAX77686_PMICIRQ_JIGONBF, PMIC_INT1, 1 << 2), | ||
| 73 | DECLARE_IRQ(MAX77686_PMICIRQ_JIGONBR, PMIC_INT1, 1 << 3), | ||
| 74 | DECLARE_IRQ(MAX77686_PMICIRQ_ACOKBF, PMIC_INT1, 1 << 4), | ||
| 75 | DECLARE_IRQ(MAX77686_PMICIRQ_ACOKBR, PMIC_INT1, 1 << 5), | ||
| 76 | DECLARE_IRQ(MAX77686_PMICIRQ_ONKEY1S, PMIC_INT1, 1 << 6), | ||
| 77 | DECLARE_IRQ(MAX77686_PMICIRQ_MRSTB, PMIC_INT1, 1 << 7), | ||
| 78 | DECLARE_IRQ(MAX77686_PMICIRQ_140C, PMIC_INT2, 1 << 0), | ||
| 79 | DECLARE_IRQ(MAX77686_PMICIRQ_120C, PMIC_INT2, 1 << 1), | ||
| 80 | DECLARE_IRQ(MAX77686_RTCIRQ_RTC60S, RTC_INT, 1 << 0), | ||
| 81 | DECLARE_IRQ(MAX77686_RTCIRQ_RTCA1, RTC_INT, 1 << 1), | ||
| 82 | DECLARE_IRQ(MAX77686_RTCIRQ_RTCA2, RTC_INT, 1 << 2), | ||
| 83 | DECLARE_IRQ(MAX77686_RTCIRQ_SMPL, RTC_INT, 1 << 3), | ||
| 84 | DECLARE_IRQ(MAX77686_RTCIRQ_RTC1S, RTC_INT, 1 << 4), | ||
| 85 | DECLARE_IRQ(MAX77686_RTCIRQ_WTSR, RTC_INT, 1 << 5), | ||
| 86 | }; | ||
| 87 | |||
| 88 | static void max77686_irq_lock(struct irq_data *data) | ||
| 89 | { | ||
| 90 | struct max77686_dev *max77686 = irq_get_chip_data(data->irq); | ||
| 91 | |||
| 92 | if (debug_mask & MAX77686_DEBUG_IRQ_MASK) | ||
| 93 | pr_info("%s\n", __func__); | ||
| 94 | |||
| 95 | mutex_lock(&max77686->irqlock); | ||
| 96 | } | ||
| 97 | |||
| 98 | static void max77686_irq_sync_unlock(struct irq_data *data) | ||
| 99 | { | ||
| 100 | struct max77686_dev *max77686 = irq_get_chip_data(data->irq); | ||
| 101 | int i; | ||
| 102 | |||
| 103 | for (i = 0; i < MAX77686_IRQ_GROUP_NR; i++) { | ||
| 104 | u8 mask_reg = max77686_mask_reg[i]; | ||
| 105 | struct regmap *map = max77686_get_regmap(max77686, i); | ||
| 106 | |||
| 107 | if (debug_mask & MAX77686_DEBUG_IRQ_MASK) | ||
| 108 | pr_debug("%s: mask_reg[%d]=0x%x, cur=0x%x\n", | ||
| 109 | __func__, i, mask_reg, max77686->irq_masks_cur[i]); | ||
| 110 | |||
| 111 | if (mask_reg == MAX77686_REG_INVALID || | ||
| 112 | IS_ERR_OR_NULL(map)) | ||
| 113 | continue; | ||
| 114 | |||
| 115 | max77686->irq_masks_cache[i] = max77686->irq_masks_cur[i]; | ||
| 116 | |||
| 117 | regmap_write(map, max77686_mask_reg[i], | ||
| 118 | max77686->irq_masks_cur[i]); | ||
| 119 | } | ||
| 120 | |||
| 121 | mutex_unlock(&max77686->irqlock); | ||
| 122 | } | ||
| 123 | |||
| 124 | static const inline struct max77686_irq_data *to_max77686_irq(int irq) | ||
| 125 | { | ||
| 126 | struct irq_data *data = irq_get_irq_data(irq); | ||
| 127 | return &max77686_irqs[data->hwirq]; | ||
| 128 | } | ||
| 129 | |||
| 130 | static void max77686_irq_mask(struct irq_data *data) | ||
| 131 | { | ||
| 132 | struct max77686_dev *max77686 = irq_get_chip_data(data->irq); | ||
| 133 | const struct max77686_irq_data *irq_data = to_max77686_irq(data->irq); | ||
| 134 | |||
| 135 | max77686->irq_masks_cur[irq_data->group] |= irq_data->mask; | ||
| 136 | |||
| 137 | if (debug_mask & MAX77686_DEBUG_IRQ_MASK) | ||
| 138 | pr_info("%s: group=%d, cur=0x%x\n", | ||
| 139 | __func__, irq_data->group, | ||
| 140 | max77686->irq_masks_cur[irq_data->group]); | ||
| 141 | } | ||
| 142 | |||
| 143 | static void max77686_irq_unmask(struct irq_data *data) | ||
| 144 | { | ||
| 145 | struct max77686_dev *max77686 = irq_get_chip_data(data->irq); | ||
| 146 | const struct max77686_irq_data *irq_data = to_max77686_irq(data->irq); | ||
| 147 | |||
| 148 | max77686->irq_masks_cur[irq_data->group] &= ~irq_data->mask; | ||
| 149 | |||
| 150 | if (debug_mask & MAX77686_DEBUG_IRQ_MASK) | ||
| 151 | pr_info("%s: group=%d, cur=0x%x\n", | ||
| 152 | __func__, irq_data->group, | ||
| 153 | max77686->irq_masks_cur[irq_data->group]); | ||
| 154 | } | ||
| 155 | |||
| 156 | static struct irq_chip max77686_irq_chip = { | ||
| 157 | .name = "max77686", | ||
| 158 | .irq_bus_lock = max77686_irq_lock, | ||
| 159 | .irq_bus_sync_unlock = max77686_irq_sync_unlock, | ||
| 160 | .irq_mask = max77686_irq_mask, | ||
| 161 | .irq_unmask = max77686_irq_unmask, | ||
| 162 | }; | ||
| 163 | |||
| 164 | static irqreturn_t max77686_irq_thread(int irq, void *data) | ||
| 165 | { | ||
| 166 | struct max77686_dev *max77686 = data; | ||
| 167 | unsigned int irq_reg[MAX77686_IRQ_GROUP_NR] = {}; | ||
| 168 | unsigned int irq_src; | ||
| 169 | int ret; | ||
| 170 | int i, cur_irq; | ||
| 171 | |||
| 172 | ret = regmap_read(max77686->regmap, MAX77686_REG_INTSRC, &irq_src); | ||
| 173 | if (ret < 0) { | ||
| 174 | dev_err(max77686->dev, "Failed to read interrupt source: %d\n", | ||
| 175 | ret); | ||
| 176 | return IRQ_NONE; | ||
| 177 | } | ||
| 178 | |||
| 179 | if (debug_mask & MAX77686_DEBUG_IRQ_INT) | ||
| 180 | pr_info("%s: irq_src=0x%x\n", __func__, irq_src); | ||
| 181 | |||
| 182 | if (irq_src == MAX77686_IRQSRC_PMIC) { | ||
| 183 | ret = regmap_bulk_read(max77686->regmap, | ||
| 184 | MAX77686_REG_INT1, irq_reg, 2); | ||
| 185 | if (ret < 0) { | ||
| 186 | dev_err(max77686->dev, "Failed to read interrupt source: %d\n", | ||
| 187 | ret); | ||
| 188 | return IRQ_NONE; | ||
| 189 | } | ||
| 190 | |||
| 191 | if (debug_mask & MAX77686_DEBUG_IRQ_INT) | ||
| 192 | pr_info("%s: int1=0x%x, int2=0x%x\n", __func__, | ||
| 193 | irq_reg[PMIC_INT1], irq_reg[PMIC_INT2]); | ||
| 194 | } | ||
| 195 | |||
| 196 | if (irq_src & MAX77686_IRQSRC_RTC) { | ||
| 197 | ret = regmap_read(max77686->rtc_regmap, | ||
| 198 | MAX77686_RTC_INT, &irq_reg[RTC_INT]); | ||
| 199 | if (ret < 0) { | ||
| 200 | dev_err(max77686->dev, "Failed to read interrupt source: %d\n", | ||
| 201 | ret); | ||
| 202 | return IRQ_NONE; | ||
| 203 | } | ||
| 204 | |||
| 205 | if (debug_mask & MAX77686_DEBUG_IRQ_INT) | ||
| 206 | pr_info("%s: rtc int=0x%x\n", __func__, | ||
| 207 | irq_reg[RTC_INT]); | ||
| 208 | |||
| 209 | } | ||
| 210 | |||
| 211 | for (i = 0; i < MAX77686_IRQ_GROUP_NR; i++) | ||
| 212 | irq_reg[i] &= ~max77686->irq_masks_cur[i]; | ||
| 213 | |||
| 214 | for (i = 0; i < MAX77686_IRQ_NR; i++) { | ||
| 215 | if (irq_reg[max77686_irqs[i].group] & max77686_irqs[i].mask) { | ||
| 216 | cur_irq = irq_find_mapping(max77686->irq_domain, i); | ||
| 217 | if (cur_irq) | ||
| 218 | handle_nested_irq(cur_irq); | ||
| 219 | } | ||
| 220 | } | ||
| 221 | |||
| 222 | return IRQ_HANDLED; | ||
| 223 | } | ||
| 224 | |||
| 225 | static int max77686_irq_domain_map(struct irq_domain *d, unsigned int irq, | ||
| 226 | irq_hw_number_t hw) | ||
| 227 | { | ||
| 228 | struct max77686_dev *max77686 = d->host_data; | ||
| 229 | |||
| 230 | irq_set_chip_data(irq, max77686); | ||
| 231 | irq_set_chip_and_handler(irq, &max77686_irq_chip, handle_edge_irq); | ||
| 232 | irq_set_nested_thread(irq, 1); | ||
| 233 | #ifdef CONFIG_ARM | ||
| 234 | set_irq_flags(irq, IRQF_VALID); | ||
| 235 | #else | ||
| 236 | irq_set_noprobe(irq); | ||
| 237 | #endif | ||
| 238 | return 0; | ||
| 239 | } | ||
| 240 | |||
| 241 | static struct irq_domain_ops max77686_irq_domain_ops = { | ||
| 242 | .map = max77686_irq_domain_map, | ||
| 243 | }; | ||
| 244 | |||
| 245 | int max77686_irq_init(struct max77686_dev *max77686) | ||
| 246 | { | ||
| 247 | struct irq_domain *domain; | ||
| 248 | int i; | ||
| 249 | int ret; | ||
| 250 | int val; | ||
| 251 | struct regmap *map; | ||
| 252 | |||
| 253 | mutex_init(&max77686->irqlock); | ||
| 254 | |||
| 255 | if (max77686->irq_gpio && !max77686->irq) { | ||
| 256 | max77686->irq = gpio_to_irq(max77686->irq_gpio); | ||
| 257 | |||
| 258 | if (debug_mask & MAX77686_DEBUG_IRQ_INT) { | ||
| 259 | ret = gpio_request(max77686->irq_gpio, "pmic_irq"); | ||
| 260 | if (ret < 0) { | ||
| 261 | dev_err(max77686->dev, | ||
| 262 | "Failed to request gpio %d with ret:" | ||
| 263 | "%d\n", max77686->irq_gpio, ret); | ||
| 264 | return IRQ_NONE; | ||
| 265 | } | ||
| 266 | |||
| 267 | gpio_direction_input(max77686->irq_gpio); | ||
| 268 | val = gpio_get_value(max77686->irq_gpio); | ||
| 269 | gpio_free(max77686->irq_gpio); | ||
| 270 | pr_info("%s: gpio_irq=%x\n", __func__, val); | ||
| 271 | } | ||
| 272 | } | ||
| 273 | |||
| 274 | if (!max77686->irq) { | ||
| 275 | dev_err(max77686->dev, "irq is not specified\n"); | ||
| 276 | return -ENODEV; | ||
| 277 | } | ||
| 278 | |||
| 279 | /* Mask individual interrupt sources */ | ||
| 280 | for (i = 0; i < MAX77686_IRQ_GROUP_NR; i++) { | ||
| 281 | max77686->irq_masks_cur[i] = 0xff; | ||
| 282 | max77686->irq_masks_cache[i] = 0xff; | ||
| 283 | map = max77686_get_regmap(max77686, i); | ||
| 284 | |||
| 285 | if (IS_ERR_OR_NULL(map)) | ||
| 286 | continue; | ||
| 287 | if (max77686_mask_reg[i] == MAX77686_REG_INVALID) | ||
| 288 | continue; | ||
| 289 | |||
| 290 | regmap_write(map, max77686_mask_reg[i], 0xff); | ||
| 291 | } | ||
| 292 | domain = irq_domain_add_linear(NULL, MAX77686_IRQ_NR, | ||
| 293 | &max77686_irq_domain_ops, max77686); | ||
| 294 | if (!domain) { | ||
| 295 | dev_err(max77686->dev, "could not create irq domain\n"); | ||
| 296 | return -ENODEV; | ||
| 297 | } | ||
| 298 | max77686->irq_domain = domain; | ||
| 299 | |||
| 300 | ret = request_threaded_irq(max77686->irq, NULL, max77686_irq_thread, | ||
| 301 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | ||
| 302 | "max77686-irq", max77686); | ||
| 303 | |||
| 304 | if (ret) | ||
| 305 | dev_err(max77686->dev, "Failed to request IRQ %d: %d\n", | ||
| 306 | max77686->irq, ret); | ||
| 307 | |||
| 308 | |||
| 309 | if (debug_mask & MAX77686_DEBUG_IRQ_INFO) | ||
| 310 | pr_info("%s-\n", __func__); | ||
| 311 | |||
| 312 | return 0; | ||
| 313 | } | ||
| 314 | |||
| 315 | void max77686_irq_exit(struct max77686_dev *max77686) | ||
| 316 | { | ||
| 317 | if (max77686->irq) | ||
| 318 | free_irq(max77686->irq, max77686); | ||
| 319 | } | ||
diff --git a/drivers/mfd/max77686.c b/drivers/mfd/max77686.c new file mode 100644 index 000000000000..c03e12b51924 --- /dev/null +++ b/drivers/mfd/max77686.c | |||
| @@ -0,0 +1,187 @@ | |||
| 1 | /* | ||
| 2 | * max77686.c - mfd core driver for the Maxim 77686 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Samsung Electronics | ||
| 5 | * Chiwoong Byun <woong.byun@smasung.com> | ||
| 6 | * Jonghwa Lee <jonghwa3.lee@samsung.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License as published by | ||
| 10 | * the Free Software Foundation; either version 2 of the License, or | ||
| 11 | * (at your option) any later version. | ||
| 12 | * | ||
| 13 | * This program is distributed in the hope that it will be useful, | ||
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | * GNU General Public License for more details. | ||
| 17 | * | ||
| 18 | * You should have received a copy of the GNU General Public License | ||
| 19 | * along with this program; if not, write to the Free Software | ||
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 21 | * | ||
| 22 | * This driver is based on max8997.c | ||
| 23 | */ | ||
| 24 | |||
| 25 | #include <linux/export.h> | ||
| 26 | #include <linux/slab.h> | ||
| 27 | #include <linux/i2c.h> | ||
| 28 | #include <linux/pm_runtime.h> | ||
| 29 | #include <linux/module.h> | ||
| 30 | #include <linux/mfd/core.h> | ||
| 31 | #include <linux/mfd/max77686.h> | ||
| 32 | #include <linux/mfd/max77686-private.h> | ||
| 33 | #include <linux/err.h> | ||
| 34 | |||
| 35 | #define I2C_ADDR_RTC (0x0C >> 1) | ||
| 36 | |||
| 37 | static struct mfd_cell max77686_devs[] = { | ||
| 38 | { .name = "max77686-pmic", }, | ||
| 39 | { .name = "max77686-rtc", }, | ||
| 40 | }; | ||
| 41 | |||
| 42 | static struct regmap_config max77686_regmap_config = { | ||
| 43 | .reg_bits = 8, | ||
| 44 | .val_bits = 8, | ||
| 45 | }; | ||
| 46 | |||
| 47 | #ifdef CONFIG_OF | ||
| 48 | static struct of_device_id __devinitdata max77686_pmic_dt_match[] = { | ||
| 49 | {.compatible = "maxim,max77686", .data = 0}, | ||
| 50 | {}, | ||
| 51 | }; | ||
| 52 | |||
| 53 | static struct max77686_platform_data *max77686_i2c_parse_dt_pdata(struct device | ||
| 54 | *dev) | ||
| 55 | { | ||
| 56 | struct max77686_platform_data *pd; | ||
| 57 | |||
| 58 | pd = devm_kzalloc(dev, sizeof(*pd), GFP_KERNEL); | ||
| 59 | if (!pd) { | ||
| 60 | dev_err(dev, "could not allocate memory for pdata\n"); | ||
| 61 | return NULL; | ||
| 62 | } | ||
| 63 | |||
| 64 | dev->platform_data = pd; | ||
| 65 | return pd; | ||
| 66 | } | ||
| 67 | #else | ||
| 68 | static struct max77686_platform_data *max77686_i2c_parse_dt_pdata(struct device | ||
| 69 | *dev) | ||
| 70 | { | ||
| 71 | return 0; | ||
| 72 | } | ||
| 73 | #endif | ||
| 74 | |||
| 75 | static int max77686_i2c_probe(struct i2c_client *i2c, | ||
| 76 | const struct i2c_device_id *id) | ||
| 77 | { | ||
| 78 | struct max77686_dev *max77686 = NULL; | ||
| 79 | struct max77686_platform_data *pdata = i2c->dev.platform_data; | ||
| 80 | unsigned int data; | ||
| 81 | int ret = 0; | ||
| 82 | |||
| 83 | if (i2c->dev.of_node) | ||
| 84 | pdata = max77686_i2c_parse_dt_pdata(&i2c->dev); | ||
| 85 | |||
| 86 | if (!pdata) { | ||
| 87 | ret = -EIO; | ||
| 88 | dev_err(&i2c->dev, "No platform data found.\n"); | ||
| 89 | goto err; | ||
| 90 | } | ||
| 91 | |||
| 92 | max77686 = kzalloc(sizeof(struct max77686_dev), GFP_KERNEL); | ||
| 93 | if (max77686 == NULL) | ||
| 94 | return -ENOMEM; | ||
| 95 | |||
| 96 | max77686->regmap = regmap_init_i2c(i2c, &max77686_regmap_config); | ||
| 97 | if (IS_ERR(max77686->regmap)) { | ||
| 98 | ret = PTR_ERR(max77686->regmap); | ||
| 99 | dev_err(max77686->dev, "Failed to allocate register map: %d\n", | ||
| 100 | ret); | ||
| 101 | kfree(max77686); | ||
| 102 | return ret; | ||
| 103 | } | ||
| 104 | |||
| 105 | i2c_set_clientdata(i2c, max77686); | ||
| 106 | max77686->dev = &i2c->dev; | ||
| 107 | max77686->i2c = i2c; | ||
| 108 | max77686->type = id->driver_data; | ||
| 109 | |||
| 110 | max77686->wakeup = pdata->wakeup; | ||
| 111 | max77686->irq_gpio = pdata->irq_gpio; | ||
| 112 | max77686->irq = i2c->irq; | ||
| 113 | |||
| 114 | if (regmap_read(max77686->regmap, | ||
| 115 | MAX77686_REG_DEVICE_ID, &data) < 0) { | ||
| 116 | dev_err(max77686->dev, | ||
| 117 | "device not found on this channel (this is not an error)\n"); | ||
| 118 | ret = -ENODEV; | ||
| 119 | goto err; | ||
| 120 | } else | ||
| 121 | dev_info(max77686->dev, "device found\n"); | ||
| 122 | |||
| 123 | max77686->rtc = i2c_new_dummy(i2c->adapter, I2C_ADDR_RTC); | ||
| 124 | i2c_set_clientdata(max77686->rtc, max77686); | ||
| 125 | |||
| 126 | max77686_irq_init(max77686); | ||
| 127 | |||
| 128 | ret = mfd_add_devices(max77686->dev, -1, max77686_devs, | ||
| 129 | ARRAY_SIZE(max77686_devs), NULL, 0); | ||
| 130 | |||
| 131 | if (ret < 0) | ||
| 132 | goto err_mfd; | ||
| 133 | |||
| 134 | return ret; | ||
| 135 | |||
| 136 | err_mfd: | ||
| 137 | mfd_remove_devices(max77686->dev); | ||
| 138 | i2c_unregister_device(max77686->rtc); | ||
| 139 | err: | ||
| 140 | kfree(max77686); | ||
| 141 | return ret; | ||
| 142 | } | ||
| 143 | |||
| 144 | static int max77686_i2c_remove(struct i2c_client *i2c) | ||
| 145 | { | ||
| 146 | struct max77686_dev *max77686 = i2c_get_clientdata(i2c); | ||
| 147 | |||
| 148 | mfd_remove_devices(max77686->dev); | ||
| 149 | i2c_unregister_device(max77686->rtc); | ||
| 150 | kfree(max77686); | ||
| 151 | |||
| 152 | return 0; | ||
| 153 | } | ||
| 154 | |||
| 155 | static const struct i2c_device_id max77686_i2c_id[] = { | ||
| 156 | { "max77686", TYPE_MAX77686 }, | ||
| 157 | { } | ||
| 158 | }; | ||
| 159 | MODULE_DEVICE_TABLE(i2c, max77686_i2c_id); | ||
| 160 | |||
| 161 | static struct i2c_driver max77686_i2c_driver = { | ||
| 162 | .driver = { | ||
| 163 | .name = "max77686", | ||
| 164 | .owner = THIS_MODULE, | ||
| 165 | .of_match_table = of_match_ptr(max77686_pmic_dt_match), | ||
| 166 | }, | ||
| 167 | .probe = max77686_i2c_probe, | ||
| 168 | .remove = max77686_i2c_remove, | ||
| 169 | .id_table = max77686_i2c_id, | ||
| 170 | }; | ||
| 171 | |||
| 172 | static int __init max77686_i2c_init(void) | ||
| 173 | { | ||
| 174 | return i2c_add_driver(&max77686_i2c_driver); | ||
| 175 | } | ||
| 176 | /* init early so consumer devices can complete system boot */ | ||
| 177 | subsys_initcall(max77686_i2c_init); | ||
| 178 | |||
| 179 | static void __exit max77686_i2c_exit(void) | ||
| 180 | { | ||
| 181 | i2c_del_driver(&max77686_i2c_driver); | ||
| 182 | } | ||
| 183 | module_exit(max77686_i2c_exit); | ||
| 184 | |||
| 185 | MODULE_DESCRIPTION("MAXIM 77686 multi-function core driver"); | ||
| 186 | MODULE_AUTHOR("Chiwoong Byun <woong.byun@samsung.com>"); | ||
| 187 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mfd/max77693.c b/drivers/mfd/max77693.c index e9e4278722f3..a1811cb50ec7 100644 --- a/drivers/mfd/max77693.c +++ b/drivers/mfd/max77693.c | |||
| @@ -138,8 +138,6 @@ static int max77693_i2c_probe(struct i2c_client *i2c, | |||
| 138 | 138 | ||
| 139 | max77693->wakeup = pdata->wakeup; | 139 | max77693->wakeup = pdata->wakeup; |
| 140 | 140 | ||
| 141 | mutex_init(&max77693->iolock); | ||
| 142 | |||
| 143 | if (max77693_read_reg(max77693->regmap, | 141 | if (max77693_read_reg(max77693->regmap, |
| 144 | MAX77693_PMIC_REG_PMIC_ID2, ®_data) < 0) { | 142 | MAX77693_PMIC_REG_PMIC_ID2, ®_data) < 0) { |
| 145 | dev_err(max77693->dev, "device not found on this channel\n"); | 143 | dev_err(max77693->dev, "device not found on this channel\n"); |
| @@ -156,7 +154,7 @@ static int max77693_i2c_probe(struct i2c_client *i2c, | |||
| 156 | 154 | ||
| 157 | ret = max77693_irq_init(max77693); | 155 | ret = max77693_irq_init(max77693); |
| 158 | if (ret < 0) | 156 | if (ret < 0) |
| 159 | goto err_mfd; | 157 | goto err_irq; |
| 160 | 158 | ||
| 161 | pm_runtime_set_active(max77693->dev); | 159 | pm_runtime_set_active(max77693->dev); |
| 162 | 160 | ||
| @@ -170,11 +168,11 @@ static int max77693_i2c_probe(struct i2c_client *i2c, | |||
| 170 | return ret; | 168 | return ret; |
| 171 | 169 | ||
| 172 | err_mfd: | 170 | err_mfd: |
| 171 | max77693_irq_exit(max77693); | ||
| 172 | err_irq: | ||
| 173 | i2c_unregister_device(max77693->muic); | 173 | i2c_unregister_device(max77693->muic); |
| 174 | i2c_unregister_device(max77693->haptic); | 174 | i2c_unregister_device(max77693->haptic); |
| 175 | err_regmap: | 175 | err_regmap: |
| 176 | kfree(max77693); | ||
| 177 | |||
| 178 | return ret; | 176 | return ret; |
| 179 | } | 177 | } |
| 180 | 178 | ||
| @@ -183,6 +181,7 @@ static int max77693_i2c_remove(struct i2c_client *i2c) | |||
| 183 | struct max77693_dev *max77693 = i2c_get_clientdata(i2c); | 181 | struct max77693_dev *max77693 = i2c_get_clientdata(i2c); |
| 184 | 182 | ||
| 185 | mfd_remove_devices(max77693->dev); | 183 | mfd_remove_devices(max77693->dev); |
| 184 | max77693_irq_exit(max77693); | ||
| 186 | i2c_unregister_device(max77693->muic); | 185 | i2c_unregister_device(max77693->muic); |
| 187 | i2c_unregister_device(max77693->haptic); | 186 | i2c_unregister_device(max77693->haptic); |
| 188 | 187 | ||
| @@ -215,7 +214,7 @@ static int max77693_resume(struct device *dev) | |||
| 215 | return max77693_irq_resume(max77693); | 214 | return max77693_irq_resume(max77693); |
| 216 | } | 215 | } |
| 217 | 216 | ||
| 218 | const struct dev_pm_ops max77693_pm = { | 217 | static const struct dev_pm_ops max77693_pm = { |
| 219 | .suspend = max77693_suspend, | 218 | .suspend = max77693_suspend, |
| 220 | .resume = max77693_resume, | 219 | .resume = max77693_resume, |
| 221 | }; | 220 | }; |
diff --git a/drivers/mfd/max8925-core.c b/drivers/mfd/max8925-core.c index ca881efedf75..825a7f06d9ba 100644 --- a/drivers/mfd/max8925-core.c +++ b/drivers/mfd/max8925-core.c | |||
| @@ -75,9 +75,9 @@ static struct mfd_cell power_devs[] = { | |||
| 75 | static struct resource rtc_resources[] = { | 75 | static struct resource rtc_resources[] = { |
| 76 | { | 76 | { |
| 77 | .name = "max8925-rtc", | 77 | .name = "max8925-rtc", |
| 78 | .start = MAX8925_RTC_IRQ, | 78 | .start = MAX8925_IRQ_RTC_ALARM0, |
| 79 | .end = MAX8925_RTC_IRQ_MASK, | 79 | .end = MAX8925_IRQ_RTC_ALARM0, |
| 80 | .flags = IORESOURCE_IO, | 80 | .flags = IORESOURCE_IRQ, |
| 81 | }, | 81 | }, |
| 82 | }; | 82 | }; |
| 83 | 83 | ||
| @@ -598,7 +598,7 @@ int __devinit max8925_device_init(struct max8925_chip *chip, | |||
| 598 | 598 | ||
| 599 | ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0], | 599 | ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0], |
| 600 | ARRAY_SIZE(rtc_devs), | 600 | ARRAY_SIZE(rtc_devs), |
| 601 | &rtc_resources[0], 0); | 601 | &rtc_resources[0], chip->irq_base); |
| 602 | if (ret < 0) { | 602 | if (ret < 0) { |
| 603 | dev_err(chip->dev, "Failed to add rtc subdev\n"); | 603 | dev_err(chip->dev, "Failed to add rtc subdev\n"); |
| 604 | goto out; | 604 | goto out; |
diff --git a/drivers/mfd/max8997-irq.c b/drivers/mfd/max8997-irq.c index 09274cf7c33b..43fa61413e93 100644 --- a/drivers/mfd/max8997-irq.c +++ b/drivers/mfd/max8997-irq.c | |||
| @@ -142,7 +142,8 @@ static void max8997_irq_sync_unlock(struct irq_data *data) | |||
| 142 | static const inline struct max8997_irq_data * | 142 | static const inline struct max8997_irq_data * |
| 143 | irq_to_max8997_irq(struct max8997_dev *max8997, int irq) | 143 | irq_to_max8997_irq(struct max8997_dev *max8997, int irq) |
| 144 | { | 144 | { |
| 145 | return &max8997_irqs[irq - max8997->irq_base]; | 145 | struct irq_data *data = irq_get_irq_data(irq); |
| 146 | return &max8997_irqs[data->hwirq]; | ||
| 146 | } | 147 | } |
| 147 | 148 | ||
| 148 | static void max8997_irq_mask(struct irq_data *data) | 149 | static void max8997_irq_mask(struct irq_data *data) |
| @@ -182,7 +183,7 @@ static irqreturn_t max8997_irq_thread(int irq, void *data) | |||
| 182 | u8 irq_reg[MAX8997_IRQ_GROUP_NR] = {}; | 183 | u8 irq_reg[MAX8997_IRQ_GROUP_NR] = {}; |
| 183 | u8 irq_src; | 184 | u8 irq_src; |
| 184 | int ret; | 185 | int ret; |
| 185 | int i; | 186 | int i, cur_irq; |
| 186 | 187 | ||
| 187 | ret = max8997_read_reg(max8997->i2c, MAX8997_REG_INTSRC, &irq_src); | 188 | ret = max8997_read_reg(max8997->i2c, MAX8997_REG_INTSRC, &irq_src); |
| 188 | if (ret < 0) { | 189 | if (ret < 0) { |
| @@ -269,8 +270,11 @@ static irqreturn_t max8997_irq_thread(int irq, void *data) | |||
| 269 | 270 | ||
| 270 | /* Report */ | 271 | /* Report */ |
| 271 | for (i = 0; i < MAX8997_IRQ_NR; i++) { | 272 | for (i = 0; i < MAX8997_IRQ_NR; i++) { |
| 272 | if (irq_reg[max8997_irqs[i].group] & max8997_irqs[i].mask) | 273 | if (irq_reg[max8997_irqs[i].group] & max8997_irqs[i].mask) { |
| 273 | handle_nested_irq(max8997->irq_base + i); | 274 | cur_irq = irq_find_mapping(max8997->irq_domain, i); |
| 275 | if (cur_irq) | ||
| 276 | handle_nested_irq(cur_irq); | ||
| 277 | } | ||
| 274 | } | 278 | } |
| 275 | 279 | ||
| 276 | return IRQ_HANDLED; | 280 | return IRQ_HANDLED; |
| @@ -278,26 +282,40 @@ static irqreturn_t max8997_irq_thread(int irq, void *data) | |||
| 278 | 282 | ||
| 279 | int max8997_irq_resume(struct max8997_dev *max8997) | 283 | int max8997_irq_resume(struct max8997_dev *max8997) |
| 280 | { | 284 | { |
| 281 | if (max8997->irq && max8997->irq_base) | 285 | if (max8997->irq && max8997->irq_domain) |
| 282 | max8997_irq_thread(max8997->irq_base, max8997); | 286 | max8997_irq_thread(0, max8997); |
| 287 | return 0; | ||
| 288 | } | ||
| 289 | |||
| 290 | static int max8997_irq_domain_map(struct irq_domain *d, unsigned int irq, | ||
| 291 | irq_hw_number_t hw) | ||
| 292 | { | ||
| 293 | struct max8997_dev *max8997 = d->host_data; | ||
| 294 | |||
| 295 | irq_set_chip_data(irq, max8997); | ||
| 296 | irq_set_chip_and_handler(irq, &max8997_irq_chip, handle_edge_irq); | ||
| 297 | irq_set_nested_thread(irq, 1); | ||
| 298 | #ifdef CONFIG_ARM | ||
| 299 | set_irq_flags(irq, IRQF_VALID); | ||
| 300 | #else | ||
| 301 | irq_set_noprobe(irq); | ||
| 302 | #endif | ||
| 283 | return 0; | 303 | return 0; |
| 284 | } | 304 | } |
| 285 | 305 | ||
| 306 | static struct irq_domain_ops max8997_irq_domain_ops = { | ||
| 307 | .map = max8997_irq_domain_map, | ||
| 308 | }; | ||
| 309 | |||
| 286 | int max8997_irq_init(struct max8997_dev *max8997) | 310 | int max8997_irq_init(struct max8997_dev *max8997) |
| 287 | { | 311 | { |
| 312 | struct irq_domain *domain; | ||
| 288 | int i; | 313 | int i; |
| 289 | int cur_irq; | ||
| 290 | int ret; | 314 | int ret; |
| 291 | u8 val; | 315 | u8 val; |
| 292 | 316 | ||
| 293 | if (!max8997->irq) { | 317 | if (!max8997->irq) { |
| 294 | dev_warn(max8997->dev, "No interrupt specified.\n"); | 318 | dev_warn(max8997->dev, "No interrupt specified.\n"); |
| 295 | max8997->irq_base = 0; | ||
| 296 | return 0; | ||
| 297 | } | ||
| 298 | |||
| 299 | if (!max8997->irq_base) { | ||
| 300 | dev_err(max8997->dev, "No interrupt base specified.\n"); | ||
| 301 | return 0; | 319 | return 0; |
| 302 | } | 320 | } |
| 303 | 321 | ||
| @@ -327,19 +345,13 @@ int max8997_irq_init(struct max8997_dev *max8997) | |||
| 327 | true : false; | 345 | true : false; |
| 328 | } | 346 | } |
| 329 | 347 | ||
| 330 | /* Register with genirq */ | 348 | domain = irq_domain_add_linear(NULL, MAX8997_IRQ_NR, |
| 331 | for (i = 0; i < MAX8997_IRQ_NR; i++) { | 349 | &max8997_irq_domain_ops, max8997); |
| 332 | cur_irq = i + max8997->irq_base; | 350 | if (!domain) { |
| 333 | irq_set_chip_data(cur_irq, max8997); | 351 | dev_err(max8997->dev, "could not create irq domain\n"); |
| 334 | irq_set_chip_and_handler(cur_irq, &max8997_irq_chip, | 352 | return -ENODEV; |
| 335 | handle_edge_irq); | ||
| 336 | irq_set_nested_thread(cur_irq, 1); | ||
| 337 | #ifdef CONFIG_ARM | ||
| 338 | set_irq_flags(cur_irq, IRQF_VALID); | ||
| 339 | #else | ||
| 340 | irq_set_noprobe(cur_irq); | ||
| 341 | #endif | ||
| 342 | } | 353 | } |
| 354 | max8997->irq_domain = domain; | ||
| 343 | 355 | ||
| 344 | ret = request_threaded_irq(max8997->irq, NULL, max8997_irq_thread, | 356 | ret = request_threaded_irq(max8997->irq, NULL, max8997_irq_thread, |
| 345 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | 357 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, |
diff --git a/drivers/mfd/max8997.c b/drivers/mfd/max8997.c index cb83a7ab53e7..10b629c245b6 100644 --- a/drivers/mfd/max8997.c +++ b/drivers/mfd/max8997.c | |||
| @@ -143,7 +143,6 @@ static int max8997_i2c_probe(struct i2c_client *i2c, | |||
| 143 | if (!pdata) | 143 | if (!pdata) |
| 144 | goto err; | 144 | goto err; |
| 145 | 145 | ||
| 146 | max8997->irq_base = pdata->irq_base; | ||
| 147 | max8997->ono = pdata->ono; | 146 | max8997->ono = pdata->ono; |
| 148 | 147 | ||
| 149 | mutex_init(&max8997->iolock); | 148 | mutex_init(&max8997->iolock); |
| @@ -206,7 +205,7 @@ static const struct i2c_device_id max8997_i2c_id[] = { | |||
| 206 | }; | 205 | }; |
| 207 | MODULE_DEVICE_TABLE(i2c, max8998_i2c_id); | 206 | MODULE_DEVICE_TABLE(i2c, max8998_i2c_id); |
| 208 | 207 | ||
| 209 | u8 max8997_dumpaddr_pmic[] = { | 208 | static u8 max8997_dumpaddr_pmic[] = { |
| 210 | MAX8997_REG_INT1MSK, | 209 | MAX8997_REG_INT1MSK, |
| 211 | MAX8997_REG_INT2MSK, | 210 | MAX8997_REG_INT2MSK, |
| 212 | MAX8997_REG_INT3MSK, | 211 | MAX8997_REG_INT3MSK, |
| @@ -331,7 +330,7 @@ u8 max8997_dumpaddr_pmic[] = { | |||
| 331 | MAX8997_REG_DVSOKTIMER5, | 330 | MAX8997_REG_DVSOKTIMER5, |
| 332 | }; | 331 | }; |
| 333 | 332 | ||
| 334 | u8 max8997_dumpaddr_muic[] = { | 333 | static u8 max8997_dumpaddr_muic[] = { |
| 335 | MAX8997_MUIC_REG_INTMASK1, | 334 | MAX8997_MUIC_REG_INTMASK1, |
| 336 | MAX8997_MUIC_REG_INTMASK2, | 335 | MAX8997_MUIC_REG_INTMASK2, |
| 337 | MAX8997_MUIC_REG_INTMASK3, | 336 | MAX8997_MUIC_REG_INTMASK3, |
| @@ -341,7 +340,7 @@ u8 max8997_dumpaddr_muic[] = { | |||
| 341 | MAX8997_MUIC_REG_CONTROL3, | 340 | MAX8997_MUIC_REG_CONTROL3, |
| 342 | }; | 341 | }; |
| 343 | 342 | ||
| 344 | u8 max8997_dumpaddr_haptic[] = { | 343 | static u8 max8997_dumpaddr_haptic[] = { |
| 345 | MAX8997_HAPTIC_REG_CONF1, | 344 | MAX8997_HAPTIC_REG_CONF1, |
| 346 | MAX8997_HAPTIC_REG_CONF2, | 345 | MAX8997_HAPTIC_REG_CONF2, |
| 347 | MAX8997_HAPTIC_REG_DRVCONF, | 346 | MAX8997_HAPTIC_REG_DRVCONF, |
| @@ -423,7 +422,7 @@ static int max8997_resume(struct device *dev) | |||
| 423 | return max8997_irq_resume(max8997); | 422 | return max8997_irq_resume(max8997); |
| 424 | } | 423 | } |
| 425 | 424 | ||
| 426 | const struct dev_pm_ops max8997_pm = { | 425 | static const struct dev_pm_ops max8997_pm = { |
| 427 | .suspend = max8997_suspend, | 426 | .suspend = max8997_suspend, |
| 428 | .resume = max8997_resume, | 427 | .resume = max8997_resume, |
| 429 | .freeze = max8997_freeze, | 428 | .freeze = max8997_freeze, |
diff --git a/drivers/mfd/mc13xxx-core.c b/drivers/mfd/mc13xxx-core.c index f0ea3b8b3e4a..b801dc72f041 100644 --- a/drivers/mfd/mc13xxx-core.c +++ b/drivers/mfd/mc13xxx-core.c | |||
| @@ -723,10 +723,6 @@ void mc13xxx_common_cleanup(struct mc13xxx *mc13xxx) | |||
| 723 | free_irq(mc13xxx->irq, mc13xxx); | 723 | free_irq(mc13xxx->irq, mc13xxx); |
| 724 | 724 | ||
| 725 | mfd_remove_devices(mc13xxx->dev); | 725 | mfd_remove_devices(mc13xxx->dev); |
| 726 | |||
| 727 | regmap_exit(mc13xxx->regmap); | ||
| 728 | |||
| 729 | kfree(mc13xxx); | ||
| 730 | } | 726 | } |
| 731 | EXPORT_SYMBOL_GPL(mc13xxx_common_cleanup); | 727 | EXPORT_SYMBOL_GPL(mc13xxx_common_cleanup); |
| 732 | 728 | ||
diff --git a/drivers/mfd/mc13xxx-i2c.c b/drivers/mfd/mc13xxx-i2c.c index d22501dad6a6..9d18dde3cd2a 100644 --- a/drivers/mfd/mc13xxx-i2c.c +++ b/drivers/mfd/mc13xxx-i2c.c | |||
| @@ -53,17 +53,11 @@ static struct regmap_config mc13xxx_regmap_i2c_config = { | |||
| 53 | static int mc13xxx_i2c_probe(struct i2c_client *client, | 53 | static int mc13xxx_i2c_probe(struct i2c_client *client, |
| 54 | const struct i2c_device_id *id) | 54 | const struct i2c_device_id *id) |
| 55 | { | 55 | { |
| 56 | const struct of_device_id *of_id; | ||
| 57 | struct i2c_driver *idrv = to_i2c_driver(client->dev.driver); | ||
| 58 | struct mc13xxx *mc13xxx; | 56 | struct mc13xxx *mc13xxx; |
| 59 | struct mc13xxx_platform_data *pdata = dev_get_platdata(&client->dev); | 57 | struct mc13xxx_platform_data *pdata = dev_get_platdata(&client->dev); |
| 60 | int ret; | 58 | int ret; |
| 61 | 59 | ||
| 62 | of_id = of_match_device(mc13xxx_dt_ids, &client->dev); | 60 | mc13xxx = devm_kzalloc(&client->dev, sizeof(*mc13xxx), GFP_KERNEL); |
| 63 | if (of_id) | ||
| 64 | idrv->id_table = (const struct i2c_device_id*) of_id->data; | ||
| 65 | |||
| 66 | mc13xxx = kzalloc(sizeof(*mc13xxx), GFP_KERNEL); | ||
| 67 | if (!mc13xxx) | 61 | if (!mc13xxx) |
| 68 | return -ENOMEM; | 62 | return -ENOMEM; |
| 69 | 63 | ||
| @@ -72,13 +66,13 @@ static int mc13xxx_i2c_probe(struct i2c_client *client, | |||
| 72 | mc13xxx->dev = &client->dev; | 66 | mc13xxx->dev = &client->dev; |
| 73 | mutex_init(&mc13xxx->lock); | 67 | mutex_init(&mc13xxx->lock); |
| 74 | 68 | ||
| 75 | mc13xxx->regmap = regmap_init_i2c(client, &mc13xxx_regmap_i2c_config); | 69 | mc13xxx->regmap = devm_regmap_init_i2c(client, |
| 70 | &mc13xxx_regmap_i2c_config); | ||
| 76 | if (IS_ERR(mc13xxx->regmap)) { | 71 | if (IS_ERR(mc13xxx->regmap)) { |
| 77 | ret = PTR_ERR(mc13xxx->regmap); | 72 | ret = PTR_ERR(mc13xxx->regmap); |
| 78 | dev_err(mc13xxx->dev, "Failed to initialize register map: %d\n", | 73 | dev_err(mc13xxx->dev, "Failed to initialize register map: %d\n", |
| 79 | ret); | 74 | ret); |
| 80 | dev_set_drvdata(&client->dev, NULL); | 75 | dev_set_drvdata(&client->dev, NULL); |
| 81 | kfree(mc13xxx); | ||
| 82 | return ret; | 76 | return ret; |
| 83 | } | 77 | } |
| 84 | 78 | ||
diff --git a/drivers/mfd/mc13xxx-spi.c b/drivers/mfd/mc13xxx-spi.c index 03df422feb76..0bdb43a0aff0 100644 --- a/drivers/mfd/mc13xxx-spi.c +++ b/drivers/mfd/mc13xxx-spi.c | |||
| @@ -119,17 +119,11 @@ static struct regmap_bus regmap_mc13xxx_bus = { | |||
| 119 | 119 | ||
| 120 | static int mc13xxx_spi_probe(struct spi_device *spi) | 120 | static int mc13xxx_spi_probe(struct spi_device *spi) |
| 121 | { | 121 | { |
| 122 | const struct of_device_id *of_id; | ||
| 123 | struct spi_driver *sdrv = to_spi_driver(spi->dev.driver); | ||
| 124 | struct mc13xxx *mc13xxx; | 122 | struct mc13xxx *mc13xxx; |
| 125 | struct mc13xxx_platform_data *pdata = dev_get_platdata(&spi->dev); | 123 | struct mc13xxx_platform_data *pdata = dev_get_platdata(&spi->dev); |
| 126 | int ret; | 124 | int ret; |
| 127 | 125 | ||
| 128 | of_id = of_match_device(mc13xxx_dt_ids, &spi->dev); | 126 | mc13xxx = devm_kzalloc(&spi->dev, sizeof(*mc13xxx), GFP_KERNEL); |
| 129 | if (of_id) | ||
| 130 | sdrv->id_table = &mc13xxx_device_id[(enum mc13xxx_id) of_id->data]; | ||
| 131 | |||
| 132 | mc13xxx = kzalloc(sizeof(*mc13xxx), GFP_KERNEL); | ||
| 133 | if (!mc13xxx) | 127 | if (!mc13xxx) |
| 134 | return -ENOMEM; | 128 | return -ENOMEM; |
| 135 | 129 | ||
| @@ -139,15 +133,14 @@ static int mc13xxx_spi_probe(struct spi_device *spi) | |||
| 139 | mc13xxx->dev = &spi->dev; | 133 | mc13xxx->dev = &spi->dev; |
| 140 | mutex_init(&mc13xxx->lock); | 134 | mutex_init(&mc13xxx->lock); |
| 141 | 135 | ||
| 142 | mc13xxx->regmap = regmap_init(&spi->dev, ®map_mc13xxx_bus, &spi->dev, | 136 | mc13xxx->regmap = devm_regmap_init(&spi->dev, ®map_mc13xxx_bus, |
| 143 | &mc13xxx_regmap_spi_config); | 137 | &spi->dev, |
| 144 | 138 | &mc13xxx_regmap_spi_config); | |
| 145 | if (IS_ERR(mc13xxx->regmap)) { | 139 | if (IS_ERR(mc13xxx->regmap)) { |
| 146 | ret = PTR_ERR(mc13xxx->regmap); | 140 | ret = PTR_ERR(mc13xxx->regmap); |
| 147 | dev_err(mc13xxx->dev, "Failed to initialize register map: %d\n", | 141 | dev_err(mc13xxx->dev, "Failed to initialize register map: %d\n", |
| 148 | ret); | 142 | ret); |
| 149 | dev_set_drvdata(&spi->dev, NULL); | 143 | dev_set_drvdata(&spi->dev, NULL); |
| 150 | kfree(mc13xxx); | ||
| 151 | return ret; | 144 | return ret; |
| 152 | } | 145 | } |
| 153 | 146 | ||
diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c index ffc3d48676ae..0c3a01cde2f7 100644 --- a/drivers/mfd/mfd-core.c +++ b/drivers/mfd/mfd-core.c | |||
| @@ -18,6 +18,8 @@ | |||
| 18 | #include <linux/pm_runtime.h> | 18 | #include <linux/pm_runtime.h> |
| 19 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
| 20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
| 21 | #include <linux/irqdomain.h> | ||
| 22 | #include <linux/of.h> | ||
| 21 | 23 | ||
| 22 | int mfd_cell_enable(struct platform_device *pdev) | 24 | int mfd_cell_enable(struct platform_device *pdev) |
| 23 | { | 25 | { |
| @@ -76,6 +78,8 @@ static int mfd_add_device(struct device *parent, int id, | |||
| 76 | { | 78 | { |
| 77 | struct resource *res; | 79 | struct resource *res; |
| 78 | struct platform_device *pdev; | 80 | struct platform_device *pdev; |
| 81 | struct device_node *np = NULL; | ||
| 82 | struct irq_domain *domain = NULL; | ||
| 79 | int ret = -ENOMEM; | 83 | int ret = -ENOMEM; |
| 80 | int r; | 84 | int r; |
| 81 | 85 | ||
| @@ -89,6 +93,16 @@ static int mfd_add_device(struct device *parent, int id, | |||
| 89 | 93 | ||
| 90 | pdev->dev.parent = parent; | 94 | pdev->dev.parent = parent; |
| 91 | 95 | ||
| 96 | if (parent->of_node && cell->of_compatible) { | ||
| 97 | for_each_child_of_node(parent->of_node, np) { | ||
| 98 | if (of_device_is_compatible(np, cell->of_compatible)) { | ||
| 99 | pdev->dev.of_node = np; | ||
| 100 | domain = irq_find_host(parent->of_node); | ||
| 101 | break; | ||
| 102 | } | ||
| 103 | } | ||
| 104 | } | ||
| 105 | |||
| 92 | if (cell->pdata_size) { | 106 | if (cell->pdata_size) { |
| 93 | ret = platform_device_add_data(pdev, | 107 | ret = platform_device_add_data(pdev, |
| 94 | cell->platform_data, cell->pdata_size); | 108 | cell->platform_data, cell->pdata_size); |
| @@ -112,10 +126,18 @@ static int mfd_add_device(struct device *parent, int id, | |||
| 112 | res[r].end = mem_base->start + | 126 | res[r].end = mem_base->start + |
| 113 | cell->resources[r].end; | 127 | cell->resources[r].end; |
| 114 | } else if (cell->resources[r].flags & IORESOURCE_IRQ) { | 128 | } else if (cell->resources[r].flags & IORESOURCE_IRQ) { |
| 115 | res[r].start = irq_base + | 129 | if (domain) { |
| 116 | cell->resources[r].start; | 130 | /* Unable to create mappings for IRQ ranges. */ |
| 117 | res[r].end = irq_base + | 131 | WARN_ON(cell->resources[r].start != |
| 118 | cell->resources[r].end; | 132 | cell->resources[r].end); |
| 133 | res[r].start = res[r].end = irq_create_mapping( | ||
| 134 | domain, cell->resources[r].start); | ||
| 135 | } else { | ||
| 136 | res[r].start = irq_base + | ||
| 137 | cell->resources[r].start; | ||
| 138 | res[r].end = irq_base + | ||
| 139 | cell->resources[r].end; | ||
| 140 | } | ||
| 119 | } else { | 141 | } else { |
| 120 | res[r].parent = cell->resources[r].parent; | 142 | res[r].parent = cell->resources[r].parent; |
| 121 | res[r].start = cell->resources[r].start; | 143 | res[r].start = cell->resources[r].start; |
diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633-core.c index 29c122bf28ea..45ce1fb5a549 100644 --- a/drivers/mfd/pcf50633-core.c +++ b/drivers/mfd/pcf50633-core.c | |||
| @@ -253,8 +253,13 @@ static int __devinit pcf50633_probe(struct i2c_client *client, | |||
| 253 | } | 253 | } |
| 254 | 254 | ||
| 255 | pdev->dev.parent = pcf->dev; | 255 | pdev->dev.parent = pcf->dev; |
| 256 | platform_device_add_data(pdev, &pdata->reg_init_data[i], | 256 | if (platform_device_add_data(pdev, &pdata->reg_init_data[i], |
| 257 | sizeof(pdata->reg_init_data[i])); | 257 | sizeof(pdata->reg_init_data[i])) < 0) { |
| 258 | platform_device_put(pdev); | ||
| 259 | dev_err(pcf->dev, "Out of memory for regulator parameters %d\n", | ||
| 260 | i); | ||
| 261 | continue; | ||
| 262 | } | ||
| 258 | pcf->regulator_pdev[i] = pdev; | 263 | pcf->regulator_pdev[i] = pdev; |
| 259 | 264 | ||
| 260 | platform_device_add(pdev); | 265 | platform_device_add(pdev); |
diff --git a/drivers/mfd/s5m-core.c b/drivers/mfd/s5m-core.c deleted file mode 100644 index dd170307e60e..000000000000 --- a/drivers/mfd/s5m-core.c +++ /dev/null | |||
| @@ -1,206 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * s5m87xx.c | ||
| 3 | * | ||
| 4 | * Copyright (c) 2011 Samsung Electronics Co., Ltd | ||
| 5 | * http://www.samsung.com | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify it | ||
| 8 | * under the terms of the GNU General Public License as published by the | ||
| 9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 10 | * option) any later version. | ||
| 11 | * | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/module.h> | ||
| 15 | #include <linux/moduleparam.h> | ||
| 16 | #include <linux/init.h> | ||
| 17 | #include <linux/err.h> | ||
| 18 | #include <linux/slab.h> | ||
| 19 | #include <linux/i2c.h> | ||
| 20 | #include <linux/interrupt.h> | ||
| 21 | #include <linux/pm_runtime.h> | ||
| 22 | #include <linux/mutex.h> | ||
| 23 | #include <linux/mfd/core.h> | ||
| 24 | #include <linux/mfd/s5m87xx/s5m-core.h> | ||
| 25 | #include <linux/mfd/s5m87xx/s5m-pmic.h> | ||
| 26 | #include <linux/mfd/s5m87xx/s5m-rtc.h> | ||
| 27 | #include <linux/regmap.h> | ||
| 28 | |||
| 29 | static struct mfd_cell s5m8751_devs[] = { | ||
| 30 | { | ||
| 31 | .name = "s5m8751-pmic", | ||
| 32 | }, { | ||
| 33 | .name = "s5m-charger", | ||
| 34 | }, { | ||
| 35 | .name = "s5m8751-codec", | ||
| 36 | }, | ||
| 37 | }; | ||
| 38 | |||
| 39 | static struct mfd_cell s5m8763_devs[] = { | ||
| 40 | { | ||
| 41 | .name = "s5m8763-pmic", | ||
| 42 | }, { | ||
| 43 | .name = "s5m-rtc", | ||
| 44 | }, { | ||
| 45 | .name = "s5m-charger", | ||
| 46 | }, | ||
| 47 | }; | ||
| 48 | |||
| 49 | static struct mfd_cell s5m8767_devs[] = { | ||
| 50 | { | ||
| 51 | .name = "s5m8767-pmic", | ||
| 52 | }, { | ||
| 53 | .name = "s5m-rtc", | ||
| 54 | }, | ||
| 55 | }; | ||
| 56 | |||
| 57 | int s5m_reg_read(struct s5m87xx_dev *s5m87xx, u8 reg, void *dest) | ||
| 58 | { | ||
| 59 | return regmap_read(s5m87xx->regmap, reg, dest); | ||
| 60 | } | ||
| 61 | EXPORT_SYMBOL_GPL(s5m_reg_read); | ||
| 62 | |||
| 63 | int s5m_bulk_read(struct s5m87xx_dev *s5m87xx, u8 reg, int count, u8 *buf) | ||
| 64 | { | ||
| 65 | return regmap_bulk_read(s5m87xx->regmap, reg, buf, count); | ||
| 66 | } | ||
| 67 | EXPORT_SYMBOL_GPL(s5m_bulk_read); | ||
| 68 | |||
| 69 | int s5m_reg_write(struct s5m87xx_dev *s5m87xx, u8 reg, u8 value) | ||
| 70 | { | ||
| 71 | return regmap_write(s5m87xx->regmap, reg, value); | ||
| 72 | } | ||
| 73 | EXPORT_SYMBOL_GPL(s5m_reg_write); | ||
| 74 | |||
| 75 | int s5m_bulk_write(struct s5m87xx_dev *s5m87xx, u8 reg, int count, u8 *buf) | ||
| 76 | { | ||
| 77 | return regmap_raw_write(s5m87xx->regmap, reg, buf, count); | ||
| 78 | } | ||
| 79 | EXPORT_SYMBOL_GPL(s5m_bulk_write); | ||
| 80 | |||
| 81 | int s5m_reg_update(struct s5m87xx_dev *s5m87xx, u8 reg, u8 val, u8 mask) | ||
| 82 | { | ||
| 83 | return regmap_update_bits(s5m87xx->regmap, reg, mask, val); | ||
| 84 | } | ||
| 85 | EXPORT_SYMBOL_GPL(s5m_reg_update); | ||
| 86 | |||
| 87 | static struct regmap_config s5m_regmap_config = { | ||
| 88 | .reg_bits = 8, | ||
| 89 | .val_bits = 8, | ||
| 90 | }; | ||
| 91 | |||
| 92 | static int s5m87xx_i2c_probe(struct i2c_client *i2c, | ||
| 93 | const struct i2c_device_id *id) | ||
| 94 | { | ||
| 95 | struct s5m_platform_data *pdata = i2c->dev.platform_data; | ||
| 96 | struct s5m87xx_dev *s5m87xx; | ||
| 97 | int ret; | ||
| 98 | |||
| 99 | s5m87xx = devm_kzalloc(&i2c->dev, sizeof(struct s5m87xx_dev), | ||
| 100 | GFP_KERNEL); | ||
| 101 | if (s5m87xx == NULL) | ||
| 102 | return -ENOMEM; | ||
| 103 | |||
| 104 | i2c_set_clientdata(i2c, s5m87xx); | ||
| 105 | s5m87xx->dev = &i2c->dev; | ||
| 106 | s5m87xx->i2c = i2c; | ||
| 107 | s5m87xx->irq = i2c->irq; | ||
| 108 | s5m87xx->type = id->driver_data; | ||
| 109 | |||
| 110 | if (pdata) { | ||
| 111 | s5m87xx->device_type = pdata->device_type; | ||
| 112 | s5m87xx->ono = pdata->ono; | ||
| 113 | s5m87xx->irq_base = pdata->irq_base; | ||
| 114 | s5m87xx->wakeup = pdata->wakeup; | ||
| 115 | } | ||
| 116 | |||
| 117 | s5m87xx->regmap = devm_regmap_init_i2c(i2c, &s5m_regmap_config); | ||
| 118 | if (IS_ERR(s5m87xx->regmap)) { | ||
| 119 | ret = PTR_ERR(s5m87xx->regmap); | ||
| 120 | dev_err(&i2c->dev, "Failed to allocate register map: %d\n", | ||
| 121 | ret); | ||
| 122 | return ret; | ||
| 123 | } | ||
| 124 | |||
| 125 | s5m87xx->rtc = i2c_new_dummy(i2c->adapter, RTC_I2C_ADDR); | ||
| 126 | i2c_set_clientdata(s5m87xx->rtc, s5m87xx); | ||
| 127 | |||
| 128 | if (pdata && pdata->cfg_pmic_irq) | ||
| 129 | pdata->cfg_pmic_irq(); | ||
| 130 | |||
| 131 | s5m_irq_init(s5m87xx); | ||
| 132 | |||
| 133 | pm_runtime_set_active(s5m87xx->dev); | ||
| 134 | |||
| 135 | switch (s5m87xx->device_type) { | ||
| 136 | case S5M8751X: | ||
| 137 | ret = mfd_add_devices(s5m87xx->dev, -1, s5m8751_devs, | ||
| 138 | ARRAY_SIZE(s5m8751_devs), NULL, 0); | ||
| 139 | break; | ||
| 140 | case S5M8763X: | ||
| 141 | ret = mfd_add_devices(s5m87xx->dev, -1, s5m8763_devs, | ||
| 142 | ARRAY_SIZE(s5m8763_devs), NULL, 0); | ||
| 143 | break; | ||
| 144 | case S5M8767X: | ||
| 145 | ret = mfd_add_devices(s5m87xx->dev, -1, s5m8767_devs, | ||
| 146 | ARRAY_SIZE(s5m8767_devs), NULL, 0); | ||
| 147 | break; | ||
| 148 | default: | ||
| 149 | /* If this happens the probe function is problem */ | ||
| 150 | BUG(); | ||
| 151 | } | ||
| 152 | |||
| 153 | if (ret < 0) | ||
| 154 | goto err; | ||
| 155 | |||
| 156 | return ret; | ||
| 157 | |||
| 158 | err: | ||
| 159 | mfd_remove_devices(s5m87xx->dev); | ||
| 160 | s5m_irq_exit(s5m87xx); | ||
| 161 | i2c_unregister_device(s5m87xx->rtc); | ||
| 162 | return ret; | ||
| 163 | } | ||
| 164 | |||
| 165 | static int s5m87xx_i2c_remove(struct i2c_client *i2c) | ||
| 166 | { | ||
| 167 | struct s5m87xx_dev *s5m87xx = i2c_get_clientdata(i2c); | ||
| 168 | |||
| 169 | mfd_remove_devices(s5m87xx->dev); | ||
| 170 | s5m_irq_exit(s5m87xx); | ||
| 171 | i2c_unregister_device(s5m87xx->rtc); | ||
| 172 | return 0; | ||
| 173 | } | ||
| 174 | |||
| 175 | static const struct i2c_device_id s5m87xx_i2c_id[] = { | ||
| 176 | { "s5m87xx", 0 }, | ||
| 177 | { } | ||
| 178 | }; | ||
| 179 | MODULE_DEVICE_TABLE(i2c, s5m87xx_i2c_id); | ||
| 180 | |||
| 181 | static struct i2c_driver s5m87xx_i2c_driver = { | ||
| 182 | .driver = { | ||
| 183 | .name = "s5m87xx", | ||
| 184 | .owner = THIS_MODULE, | ||
| 185 | }, | ||
| 186 | .probe = s5m87xx_i2c_probe, | ||
| 187 | .remove = s5m87xx_i2c_remove, | ||
| 188 | .id_table = s5m87xx_i2c_id, | ||
| 189 | }; | ||
| 190 | |||
| 191 | static int __init s5m87xx_i2c_init(void) | ||
| 192 | { | ||
| 193 | return i2c_add_driver(&s5m87xx_i2c_driver); | ||
| 194 | } | ||
| 195 | |||
| 196 | subsys_initcall(s5m87xx_i2c_init); | ||
| 197 | |||
| 198 | static void __exit s5m87xx_i2c_exit(void) | ||
| 199 | { | ||
| 200 | i2c_del_driver(&s5m87xx_i2c_driver); | ||
| 201 | } | ||
| 202 | module_exit(s5m87xx_i2c_exit); | ||
| 203 | |||
| 204 | MODULE_AUTHOR("Sangbeom Kim <sbkim73@samsung.com>"); | ||
| 205 | MODULE_DESCRIPTION("Core support for the S5M MFD"); | ||
| 206 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mfd/s5m-irq.c b/drivers/mfd/s5m-irq.c deleted file mode 100644 index 0236676085cf..000000000000 --- a/drivers/mfd/s5m-irq.c +++ /dev/null | |||
| @@ -1,495 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * s5m-irq.c | ||
| 3 | * | ||
| 4 | * Copyright (c) 2011 Samsung Electronics Co., Ltd | ||
| 5 | * http://www.samsung.com | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify it | ||
| 8 | * under the terms of the GNU General Public License as published by the | ||
| 9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 10 | * option) any later version. | ||
| 11 | * | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/device.h> | ||
| 15 | #include <linux/interrupt.h> | ||
| 16 | #include <linux/irq.h> | ||
| 17 | #include <linux/mfd/s5m87xx/s5m-core.h> | ||
| 18 | |||
| 19 | struct s5m_irq_data { | ||
| 20 | int reg; | ||
| 21 | int mask; | ||
| 22 | }; | ||
| 23 | |||
| 24 | static struct s5m_irq_data s5m8767_irqs[] = { | ||
| 25 | [S5M8767_IRQ_PWRR] = { | ||
| 26 | .reg = 1, | ||
| 27 | .mask = S5M8767_IRQ_PWRR_MASK, | ||
| 28 | }, | ||
| 29 | [S5M8767_IRQ_PWRF] = { | ||
| 30 | .reg = 1, | ||
| 31 | .mask = S5M8767_IRQ_PWRF_MASK, | ||
| 32 | }, | ||
| 33 | [S5M8767_IRQ_PWR1S] = { | ||
| 34 | .reg = 1, | ||
| 35 | .mask = S5M8767_IRQ_PWR1S_MASK, | ||
| 36 | }, | ||
| 37 | [S5M8767_IRQ_JIGR] = { | ||
| 38 | .reg = 1, | ||
| 39 | .mask = S5M8767_IRQ_JIGR_MASK, | ||
| 40 | }, | ||
| 41 | [S5M8767_IRQ_JIGF] = { | ||
| 42 | .reg = 1, | ||
| 43 | .mask = S5M8767_IRQ_JIGF_MASK, | ||
| 44 | }, | ||
| 45 | [S5M8767_IRQ_LOWBAT2] = { | ||
| 46 | .reg = 1, | ||
| 47 | .mask = S5M8767_IRQ_LOWBAT2_MASK, | ||
| 48 | }, | ||
| 49 | [S5M8767_IRQ_LOWBAT1] = { | ||
| 50 | .reg = 1, | ||
| 51 | .mask = S5M8767_IRQ_LOWBAT1_MASK, | ||
| 52 | }, | ||
| 53 | [S5M8767_IRQ_MRB] = { | ||
| 54 | .reg = 2, | ||
| 55 | .mask = S5M8767_IRQ_MRB_MASK, | ||
| 56 | }, | ||
| 57 | [S5M8767_IRQ_DVSOK2] = { | ||
| 58 | .reg = 2, | ||
| 59 | .mask = S5M8767_IRQ_DVSOK2_MASK, | ||
| 60 | }, | ||
| 61 | [S5M8767_IRQ_DVSOK3] = { | ||
| 62 | .reg = 2, | ||
| 63 | .mask = S5M8767_IRQ_DVSOK3_MASK, | ||
| 64 | }, | ||
| 65 | [S5M8767_IRQ_DVSOK4] = { | ||
| 66 | .reg = 2, | ||
| 67 | .mask = S5M8767_IRQ_DVSOK4_MASK, | ||
| 68 | }, | ||
| 69 | [S5M8767_IRQ_RTC60S] = { | ||
| 70 | .reg = 3, | ||
| 71 | .mask = S5M8767_IRQ_RTC60S_MASK, | ||
| 72 | }, | ||
| 73 | [S5M8767_IRQ_RTCA1] = { | ||
| 74 | .reg = 3, | ||
| 75 | .mask = S5M8767_IRQ_RTCA1_MASK, | ||
| 76 | }, | ||
| 77 | [S5M8767_IRQ_RTCA2] = { | ||
| 78 | .reg = 3, | ||
| 79 | .mask = S5M8767_IRQ_RTCA2_MASK, | ||
| 80 | }, | ||
| 81 | [S5M8767_IRQ_SMPL] = { | ||
| 82 | .reg = 3, | ||
| 83 | .mask = S5M8767_IRQ_SMPL_MASK, | ||
| 84 | }, | ||
| 85 | [S5M8767_IRQ_RTC1S] = { | ||
| 86 | .reg = 3, | ||
| 87 | .mask = S5M8767_IRQ_RTC1S_MASK, | ||
| 88 | }, | ||
| 89 | [S5M8767_IRQ_WTSR] = { | ||
| 90 | .reg = 3, | ||
| 91 | .mask = S5M8767_IRQ_WTSR_MASK, | ||
| 92 | }, | ||
| 93 | }; | ||
| 94 | |||
| 95 | static struct s5m_irq_data s5m8763_irqs[] = { | ||
| 96 | [S5M8763_IRQ_DCINF] = { | ||
| 97 | .reg = 1, | ||
| 98 | .mask = S5M8763_IRQ_DCINF_MASK, | ||
| 99 | }, | ||
| 100 | [S5M8763_IRQ_DCINR] = { | ||
| 101 | .reg = 1, | ||
| 102 | .mask = S5M8763_IRQ_DCINR_MASK, | ||
| 103 | }, | ||
| 104 | [S5M8763_IRQ_JIGF] = { | ||
| 105 | .reg = 1, | ||
| 106 | .mask = S5M8763_IRQ_JIGF_MASK, | ||
| 107 | }, | ||
| 108 | [S5M8763_IRQ_JIGR] = { | ||
| 109 | .reg = 1, | ||
| 110 | .mask = S5M8763_IRQ_JIGR_MASK, | ||
| 111 | }, | ||
| 112 | [S5M8763_IRQ_PWRONF] = { | ||
| 113 | .reg = 1, | ||
| 114 | .mask = S5M8763_IRQ_PWRONF_MASK, | ||
| 115 | }, | ||
| 116 | [S5M8763_IRQ_PWRONR] = { | ||
| 117 | .reg = 1, | ||
| 118 | .mask = S5M8763_IRQ_PWRONR_MASK, | ||
| 119 | }, | ||
| 120 | [S5M8763_IRQ_WTSREVNT] = { | ||
| 121 | .reg = 2, | ||
| 122 | .mask = S5M8763_IRQ_WTSREVNT_MASK, | ||
| 123 | }, | ||
| 124 | [S5M8763_IRQ_SMPLEVNT] = { | ||
| 125 | .reg = 2, | ||
| 126 | .mask = S5M8763_IRQ_SMPLEVNT_MASK, | ||
| 127 | }, | ||
| 128 | [S5M8763_IRQ_ALARM1] = { | ||
| 129 | .reg = 2, | ||
| 130 | .mask = S5M8763_IRQ_ALARM1_MASK, | ||
| 131 | }, | ||
| 132 | [S5M8763_IRQ_ALARM0] = { | ||
| 133 | .reg = 2, | ||
| 134 | .mask = S5M8763_IRQ_ALARM0_MASK, | ||
| 135 | }, | ||
| 136 | [S5M8763_IRQ_ONKEY1S] = { | ||
| 137 | .reg = 3, | ||
| 138 | .mask = S5M8763_IRQ_ONKEY1S_MASK, | ||
| 139 | }, | ||
| 140 | [S5M8763_IRQ_TOPOFFR] = { | ||
| 141 | .reg = 3, | ||
| 142 | .mask = S5M8763_IRQ_TOPOFFR_MASK, | ||
| 143 | }, | ||
| 144 | [S5M8763_IRQ_DCINOVPR] = { | ||
| 145 | .reg = 3, | ||
| 146 | .mask = S5M8763_IRQ_DCINOVPR_MASK, | ||
| 147 | }, | ||
| 148 | [S5M8763_IRQ_CHGRSTF] = { | ||
| 149 | .reg = 3, | ||
| 150 | .mask = S5M8763_IRQ_CHGRSTF_MASK, | ||
| 151 | }, | ||
| 152 | [S5M8763_IRQ_DONER] = { | ||
| 153 | .reg = 3, | ||
| 154 | .mask = S5M8763_IRQ_DONER_MASK, | ||
| 155 | }, | ||
| 156 | [S5M8763_IRQ_CHGFAULT] = { | ||
| 157 | .reg = 3, | ||
| 158 | .mask = S5M8763_IRQ_CHGFAULT_MASK, | ||
| 159 | }, | ||
| 160 | [S5M8763_IRQ_LOBAT1] = { | ||
| 161 | .reg = 4, | ||
| 162 | .mask = S5M8763_IRQ_LOBAT1_MASK, | ||
| 163 | }, | ||
| 164 | [S5M8763_IRQ_LOBAT2] = { | ||
| 165 | .reg = 4, | ||
| 166 | .mask = S5M8763_IRQ_LOBAT2_MASK, | ||
| 167 | }, | ||
| 168 | }; | ||
| 169 | |||
| 170 | static inline struct s5m_irq_data * | ||
| 171 | irq_to_s5m8767_irq(struct s5m87xx_dev *s5m87xx, int irq) | ||
| 172 | { | ||
| 173 | return &s5m8767_irqs[irq - s5m87xx->irq_base]; | ||
| 174 | } | ||
| 175 | |||
| 176 | static void s5m8767_irq_lock(struct irq_data *data) | ||
| 177 | { | ||
| 178 | struct s5m87xx_dev *s5m87xx = irq_data_get_irq_chip_data(data); | ||
| 179 | |||
| 180 | mutex_lock(&s5m87xx->irqlock); | ||
| 181 | } | ||
| 182 | |||
| 183 | static void s5m8767_irq_sync_unlock(struct irq_data *data) | ||
| 184 | { | ||
| 185 | struct s5m87xx_dev *s5m87xx = irq_data_get_irq_chip_data(data); | ||
| 186 | int i; | ||
| 187 | |||
| 188 | for (i = 0; i < ARRAY_SIZE(s5m87xx->irq_masks_cur); i++) { | ||
| 189 | if (s5m87xx->irq_masks_cur[i] != s5m87xx->irq_masks_cache[i]) { | ||
| 190 | s5m87xx->irq_masks_cache[i] = s5m87xx->irq_masks_cur[i]; | ||
| 191 | s5m_reg_write(s5m87xx, S5M8767_REG_INT1M + i, | ||
| 192 | s5m87xx->irq_masks_cur[i]); | ||
| 193 | } | ||
| 194 | } | ||
| 195 | |||
| 196 | mutex_unlock(&s5m87xx->irqlock); | ||
| 197 | } | ||
| 198 | |||
| 199 | static void s5m8767_irq_unmask(struct irq_data *data) | ||
| 200 | { | ||
| 201 | struct s5m87xx_dev *s5m87xx = irq_data_get_irq_chip_data(data); | ||
| 202 | struct s5m_irq_data *irq_data = irq_to_s5m8767_irq(s5m87xx, | ||
| 203 | data->irq); | ||
| 204 | |||
| 205 | s5m87xx->irq_masks_cur[irq_data->reg - 1] &= ~irq_data->mask; | ||
| 206 | } | ||
| 207 | |||
| 208 | static void s5m8767_irq_mask(struct irq_data *data) | ||
| 209 | { | ||
| 210 | struct s5m87xx_dev *s5m87xx = irq_data_get_irq_chip_data(data); | ||
| 211 | struct s5m_irq_data *irq_data = irq_to_s5m8767_irq(s5m87xx, | ||
| 212 | data->irq); | ||
| 213 | |||
| 214 | s5m87xx->irq_masks_cur[irq_data->reg - 1] |= irq_data->mask; | ||
| 215 | } | ||
| 216 | |||
| 217 | static struct irq_chip s5m8767_irq_chip = { | ||
| 218 | .name = "s5m8767", | ||
| 219 | .irq_bus_lock = s5m8767_irq_lock, | ||
| 220 | .irq_bus_sync_unlock = s5m8767_irq_sync_unlock, | ||
| 221 | .irq_mask = s5m8767_irq_mask, | ||
| 222 | .irq_unmask = s5m8767_irq_unmask, | ||
| 223 | }; | ||
| 224 | |||
| 225 | static inline struct s5m_irq_data * | ||
| 226 | irq_to_s5m8763_irq(struct s5m87xx_dev *s5m87xx, int irq) | ||
| 227 | { | ||
| 228 | return &s5m8763_irqs[irq - s5m87xx->irq_base]; | ||
| 229 | } | ||
| 230 | |||
| 231 | static void s5m8763_irq_lock(struct irq_data *data) | ||
| 232 | { | ||
| 233 | struct s5m87xx_dev *s5m87xx = irq_data_get_irq_chip_data(data); | ||
| 234 | |||
| 235 | mutex_lock(&s5m87xx->irqlock); | ||
| 236 | } | ||
| 237 | |||
| 238 | static void s5m8763_irq_sync_unlock(struct irq_data *data) | ||
| 239 | { | ||
| 240 | struct s5m87xx_dev *s5m87xx = irq_data_get_irq_chip_data(data); | ||
| 241 | int i; | ||
| 242 | |||
| 243 | for (i = 0; i < ARRAY_SIZE(s5m87xx->irq_masks_cur); i++) { | ||
| 244 | if (s5m87xx->irq_masks_cur[i] != s5m87xx->irq_masks_cache[i]) { | ||
| 245 | s5m87xx->irq_masks_cache[i] = s5m87xx->irq_masks_cur[i]; | ||
| 246 | s5m_reg_write(s5m87xx, S5M8763_REG_IRQM1 + i, | ||
| 247 | s5m87xx->irq_masks_cur[i]); | ||
| 248 | } | ||
| 249 | } | ||
| 250 | |||
| 251 | mutex_unlock(&s5m87xx->irqlock); | ||
| 252 | } | ||
| 253 | |||
| 254 | static void s5m8763_irq_unmask(struct irq_data *data) | ||
| 255 | { | ||
| 256 | struct s5m87xx_dev *s5m87xx = irq_data_get_irq_chip_data(data); | ||
| 257 | struct s5m_irq_data *irq_data = irq_to_s5m8763_irq(s5m87xx, | ||
| 258 | data->irq); | ||
| 259 | |||
| 260 | s5m87xx->irq_masks_cur[irq_data->reg - 1] &= ~irq_data->mask; | ||
| 261 | } | ||
| 262 | |||
| 263 | static void s5m8763_irq_mask(struct irq_data *data) | ||
| 264 | { | ||
| 265 | struct s5m87xx_dev *s5m87xx = irq_data_get_irq_chip_data(data); | ||
| 266 | struct s5m_irq_data *irq_data = irq_to_s5m8763_irq(s5m87xx, | ||
| 267 | data->irq); | ||
| 268 | |||
| 269 | s5m87xx->irq_masks_cur[irq_data->reg - 1] |= irq_data->mask; | ||
| 270 | } | ||
| 271 | |||
| 272 | static struct irq_chip s5m8763_irq_chip = { | ||
| 273 | .name = "s5m8763", | ||
| 274 | .irq_bus_lock = s5m8763_irq_lock, | ||
| 275 | .irq_bus_sync_unlock = s5m8763_irq_sync_unlock, | ||
| 276 | .irq_mask = s5m8763_irq_mask, | ||
| 277 | .irq_unmask = s5m8763_irq_unmask, | ||
| 278 | }; | ||
| 279 | |||
| 280 | |||
| 281 | static irqreturn_t s5m8767_irq_thread(int irq, void *data) | ||
| 282 | { | ||
| 283 | struct s5m87xx_dev *s5m87xx = data; | ||
| 284 | u8 irq_reg[NUM_IRQ_REGS-1]; | ||
| 285 | int ret; | ||
| 286 | int i; | ||
| 287 | |||
| 288 | |||
| 289 | ret = s5m_bulk_read(s5m87xx, S5M8767_REG_INT1, | ||
| 290 | NUM_IRQ_REGS - 1, irq_reg); | ||
| 291 | if (ret < 0) { | ||
| 292 | dev_err(s5m87xx->dev, "Failed to read interrupt register: %d\n", | ||
| 293 | ret); | ||
| 294 | return IRQ_NONE; | ||
| 295 | } | ||
| 296 | |||
| 297 | for (i = 0; i < NUM_IRQ_REGS - 1; i++) | ||
| 298 | irq_reg[i] &= ~s5m87xx->irq_masks_cur[i]; | ||
| 299 | |||
| 300 | for (i = 0; i < S5M8767_IRQ_NR; i++) { | ||
| 301 | if (irq_reg[s5m8767_irqs[i].reg - 1] & s5m8767_irqs[i].mask) | ||
| 302 | handle_nested_irq(s5m87xx->irq_base + i); | ||
| 303 | } | ||
| 304 | |||
| 305 | return IRQ_HANDLED; | ||
| 306 | } | ||
| 307 | |||
| 308 | static irqreturn_t s5m8763_irq_thread(int irq, void *data) | ||
| 309 | { | ||
| 310 | struct s5m87xx_dev *s5m87xx = data; | ||
| 311 | u8 irq_reg[NUM_IRQ_REGS]; | ||
| 312 | int ret; | ||
| 313 | int i; | ||
| 314 | |||
| 315 | ret = s5m_bulk_read(s5m87xx, S5M8763_REG_IRQ1, | ||
| 316 | NUM_IRQ_REGS, irq_reg); | ||
| 317 | if (ret < 0) { | ||
| 318 | dev_err(s5m87xx->dev, "Failed to read interrupt register: %d\n", | ||
| 319 | ret); | ||
| 320 | return IRQ_NONE; | ||
| 321 | } | ||
| 322 | |||
| 323 | for (i = 0; i < NUM_IRQ_REGS; i++) | ||
| 324 | irq_reg[i] &= ~s5m87xx->irq_masks_cur[i]; | ||
| 325 | |||
| 326 | for (i = 0; i < S5M8763_IRQ_NR; i++) { | ||
| 327 | if (irq_reg[s5m8763_irqs[i].reg - 1] & s5m8763_irqs[i].mask) | ||
| 328 | handle_nested_irq(s5m87xx->irq_base + i); | ||
| 329 | } | ||
| 330 | |||
| 331 | return IRQ_HANDLED; | ||
| 332 | } | ||
| 333 | |||
| 334 | int s5m_irq_resume(struct s5m87xx_dev *s5m87xx) | ||
| 335 | { | ||
| 336 | if (s5m87xx->irq && s5m87xx->irq_base){ | ||
| 337 | switch (s5m87xx->device_type) { | ||
| 338 | case S5M8763X: | ||
| 339 | s5m8763_irq_thread(s5m87xx->irq_base, s5m87xx); | ||
| 340 | break; | ||
| 341 | case S5M8767X: | ||
| 342 | s5m8767_irq_thread(s5m87xx->irq_base, s5m87xx); | ||
| 343 | break; | ||
| 344 | default: | ||
| 345 | dev_err(s5m87xx->dev, | ||
| 346 | "Unknown device type %d\n", | ||
| 347 | s5m87xx->device_type); | ||
| 348 | return -EINVAL; | ||
| 349 | |||
| 350 | } | ||
| 351 | } | ||
| 352 | return 0; | ||
| 353 | } | ||
| 354 | |||
| 355 | int s5m_irq_init(struct s5m87xx_dev *s5m87xx) | ||
| 356 | { | ||
| 357 | int i; | ||
| 358 | int cur_irq; | ||
| 359 | int ret = 0; | ||
| 360 | int type = s5m87xx->device_type; | ||
| 361 | |||
| 362 | if (!s5m87xx->irq) { | ||
| 363 | dev_warn(s5m87xx->dev, | ||
| 364 | "No interrupt specified, no interrupts\n"); | ||
| 365 | s5m87xx->irq_base = 0; | ||
| 366 | return 0; | ||
| 367 | } | ||
| 368 | |||
| 369 | if (!s5m87xx->irq_base) { | ||
| 370 | dev_err(s5m87xx->dev, | ||
| 371 | "No interrupt base specified, no interrupts\n"); | ||
| 372 | return 0; | ||
| 373 | } | ||
| 374 | |||
| 375 | mutex_init(&s5m87xx->irqlock); | ||
| 376 | |||
| 377 | switch (type) { | ||
| 378 | case S5M8763X: | ||
| 379 | for (i = 0; i < NUM_IRQ_REGS; i++) { | ||
| 380 | s5m87xx->irq_masks_cur[i] = 0xff; | ||
| 381 | s5m87xx->irq_masks_cache[i] = 0xff; | ||
| 382 | s5m_reg_write(s5m87xx, S5M8763_REG_IRQM1 + i, | ||
| 383 | 0xff); | ||
| 384 | } | ||
| 385 | |||
| 386 | s5m_reg_write(s5m87xx, S5M8763_REG_STATUSM1, 0xff); | ||
| 387 | s5m_reg_write(s5m87xx, S5M8763_REG_STATUSM2, 0xff); | ||
| 388 | |||
| 389 | for (i = 0; i < S5M8763_IRQ_NR; i++) { | ||
| 390 | cur_irq = i + s5m87xx->irq_base; | ||
| 391 | irq_set_chip_data(cur_irq, s5m87xx); | ||
| 392 | irq_set_chip_and_handler(cur_irq, &s5m8763_irq_chip, | ||
| 393 | handle_edge_irq); | ||
| 394 | irq_set_nested_thread(cur_irq, 1); | ||
| 395 | #ifdef CONFIG_ARM | ||
| 396 | set_irq_flags(cur_irq, IRQF_VALID); | ||
| 397 | #else | ||
| 398 | irq_set_noprobe(cur_irq); | ||
| 399 | #endif | ||
| 400 | } | ||
| 401 | |||
| 402 | ret = request_threaded_irq(s5m87xx->irq, NULL, | ||
| 403 | s5m8763_irq_thread, | ||
| 404 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | ||
| 405 | "s5m87xx-irq", s5m87xx); | ||
| 406 | if (ret) { | ||
| 407 | dev_err(s5m87xx->dev, "Failed to request IRQ %d: %d\n", | ||
| 408 | s5m87xx->irq, ret); | ||
| 409 | return ret; | ||
| 410 | } | ||
| 411 | break; | ||
| 412 | case S5M8767X: | ||
| 413 | for (i = 0; i < NUM_IRQ_REGS - 1; i++) { | ||
| 414 | s5m87xx->irq_masks_cur[i] = 0xff; | ||
| 415 | s5m87xx->irq_masks_cache[i] = 0xff; | ||
| 416 | s5m_reg_write(s5m87xx, S5M8767_REG_INT1M + i, | ||
| 417 | 0xff); | ||
| 418 | } | ||
| 419 | for (i = 0; i < S5M8767_IRQ_NR; i++) { | ||
| 420 | cur_irq = i + s5m87xx->irq_base; | ||
| 421 | irq_set_chip_data(cur_irq, s5m87xx); | ||
| 422 | if (ret) { | ||
| 423 | dev_err(s5m87xx->dev, | ||
| 424 | "Failed to irq_set_chip_data %d: %d\n", | ||
| 425 | s5m87xx->irq, ret); | ||
| 426 | return ret; | ||
| 427 | } | ||
| 428 | |||
| 429 | irq_set_chip_and_handler(cur_irq, &s5m8767_irq_chip, | ||
| 430 | handle_edge_irq); | ||
| 431 | irq_set_nested_thread(cur_irq, 1); | ||
| 432 | #ifdef CONFIG_ARM | ||
| 433 | set_irq_flags(cur_irq, IRQF_VALID); | ||
| 434 | #else | ||
| 435 | irq_set_noprobe(cur_irq); | ||
| 436 | #endif | ||
| 437 | } | ||
| 438 | |||
| 439 | ret = request_threaded_irq(s5m87xx->irq, NULL, | ||
| 440 | s5m8767_irq_thread, | ||
| 441 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | ||
| 442 | "s5m87xx-irq", s5m87xx); | ||
| 443 | if (ret) { | ||
| 444 | dev_err(s5m87xx->dev, "Failed to request IRQ %d: %d\n", | ||
| 445 | s5m87xx->irq, ret); | ||
| 446 | return ret; | ||
| 447 | } | ||
| 448 | break; | ||
| 449 | default: | ||
| 450 | dev_err(s5m87xx->dev, | ||
| 451 | "Unknown device type %d\n", s5m87xx->device_type); | ||
| 452 | return -EINVAL; | ||
| 453 | } | ||
| 454 | |||
| 455 | if (!s5m87xx->ono) | ||
| 456 | return 0; | ||
| 457 | |||
| 458 | switch (type) { | ||
| 459 | case S5M8763X: | ||
| 460 | ret = request_threaded_irq(s5m87xx->ono, NULL, | ||
| 461 | s5m8763_irq_thread, | ||
| 462 | IRQF_TRIGGER_FALLING | | ||
| 463 | IRQF_TRIGGER_RISING | | ||
| 464 | IRQF_ONESHOT, "s5m87xx-ono", | ||
| 465 | s5m87xx); | ||
| 466 | break; | ||
| 467 | case S5M8767X: | ||
| 468 | ret = request_threaded_irq(s5m87xx->ono, NULL, | ||
| 469 | s5m8767_irq_thread, | ||
| 470 | IRQF_TRIGGER_FALLING | | ||
| 471 | IRQF_TRIGGER_RISING | | ||
| 472 | IRQF_ONESHOT, "s5m87xx-ono", s5m87xx); | ||
| 473 | break; | ||
| 474 | default: | ||
| 475 | ret = -EINVAL; | ||
| 476 | break; | ||
| 477 | } | ||
| 478 | |||
| 479 | if (ret) { | ||
| 480 | dev_err(s5m87xx->dev, "Failed to request IRQ %d: %d\n", | ||
| 481 | s5m87xx->ono, ret); | ||
| 482 | return ret; | ||
| 483 | } | ||
| 484 | |||
| 485 | return 0; | ||
| 486 | } | ||
| 487 | |||
| 488 | void s5m_irq_exit(struct s5m87xx_dev *s5m87xx) | ||
| 489 | { | ||
| 490 | if (s5m87xx->ono) | ||
| 491 | free_irq(s5m87xx->ono, s5m87xx); | ||
| 492 | |||
| 493 | if (s5m87xx->irq) | ||
| 494 | free_irq(s5m87xx->irq, s5m87xx); | ||
| 495 | } | ||
diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c new file mode 100644 index 000000000000..2988efde11eb --- /dev/null +++ b/drivers/mfd/sec-core.c | |||
| @@ -0,0 +1,216 @@ | |||
| 1 | /* | ||
| 2 | * sec-core.c | ||
| 3 | * | ||
| 4 | * Copyright (c) 2012 Samsung Electronics Co., Ltd | ||
| 5 | * http://www.samsung.com | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify it | ||
| 8 | * under the terms of the GNU General Public License as published by the | ||
| 9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 10 | * option) any later version. | ||
| 11 | * | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/module.h> | ||
| 15 | #include <linux/moduleparam.h> | ||
| 16 | #include <linux/init.h> | ||
| 17 | #include <linux/err.h> | ||
| 18 | #include <linux/slab.h> | ||
| 19 | #include <linux/i2c.h> | ||
| 20 | #include <linux/interrupt.h> | ||
| 21 | #include <linux/pm_runtime.h> | ||
| 22 | #include <linux/mutex.h> | ||
| 23 | #include <linux/mfd/core.h> | ||
| 24 | #include <linux/mfd/samsung/core.h> | ||
| 25 | #include <linux/mfd/samsung/irq.h> | ||
| 26 | #include <linux/mfd/samsung/rtc.h> | ||
| 27 | #include <linux/regmap.h> | ||
| 28 | |||
| 29 | static struct mfd_cell s5m8751_devs[] = { | ||
| 30 | { | ||
| 31 | .name = "s5m8751-pmic", | ||
| 32 | }, { | ||
| 33 | .name = "s5m-charger", | ||
| 34 | }, { | ||
| 35 | .name = "s5m8751-codec", | ||
| 36 | }, | ||
| 37 | }; | ||
| 38 | |||
| 39 | static struct mfd_cell s5m8763_devs[] = { | ||
| 40 | { | ||
| 41 | .name = "s5m8763-pmic", | ||
| 42 | }, { | ||
| 43 | .name = "s5m-rtc", | ||
| 44 | }, { | ||
| 45 | .name = "s5m-charger", | ||
| 46 | }, | ||
| 47 | }; | ||
| 48 | |||
| 49 | static struct mfd_cell s5m8767_devs[] = { | ||
| 50 | { | ||
| 51 | .name = "s5m8767-pmic", | ||
| 52 | }, { | ||
| 53 | .name = "s5m-rtc", | ||
| 54 | }, | ||
| 55 | }; | ||
| 56 | |||
| 57 | static struct mfd_cell s2mps11_devs[] = { | ||
| 58 | { | ||
| 59 | .name = "s2mps11-pmic", | ||
| 60 | }, | ||
| 61 | }; | ||
| 62 | |||
| 63 | int sec_reg_read(struct sec_pmic_dev *sec_pmic, u8 reg, void *dest) | ||
| 64 | { | ||
| 65 | return regmap_read(sec_pmic->regmap, reg, dest); | ||
| 66 | } | ||
| 67 | EXPORT_SYMBOL_GPL(sec_reg_read); | ||
| 68 | |||
| 69 | int sec_bulk_read(struct sec_pmic_dev *sec_pmic, u8 reg, int count, u8 *buf) | ||
| 70 | { | ||
| 71 | return regmap_bulk_read(sec_pmic->regmap, reg, buf, count); | ||
| 72 | } | ||
| 73 | EXPORT_SYMBOL_GPL(sec_bulk_read); | ||
| 74 | |||
| 75 | int sec_reg_write(struct sec_pmic_dev *sec_pmic, u8 reg, u8 value) | ||
| 76 | { | ||
| 77 | return regmap_write(sec_pmic->regmap, reg, value); | ||
| 78 | } | ||
| 79 | EXPORT_SYMBOL_GPL(sec_reg_write); | ||
| 80 | |||
| 81 | int sec_bulk_write(struct sec_pmic_dev *sec_pmic, u8 reg, int count, u8 *buf) | ||
| 82 | { | ||
| 83 | return regmap_raw_write(sec_pmic->regmap, reg, buf, count); | ||
| 84 | } | ||
| 85 | EXPORT_SYMBOL_GPL(sec_bulk_write); | ||
| 86 | |||
| 87 | int sec_reg_update(struct sec_pmic_dev *sec_pmic, u8 reg, u8 val, u8 mask) | ||
| 88 | { | ||
| 89 | return regmap_update_bits(sec_pmic->regmap, reg, mask, val); | ||
| 90 | } | ||
| 91 | EXPORT_SYMBOL_GPL(sec_reg_update); | ||
| 92 | |||
| 93 | static struct regmap_config sec_regmap_config = { | ||
| 94 | .reg_bits = 8, | ||
| 95 | .val_bits = 8, | ||
| 96 | }; | ||
| 97 | |||
| 98 | static int sec_pmic_probe(struct i2c_client *i2c, | ||
| 99 | const struct i2c_device_id *id) | ||
| 100 | { | ||
| 101 | struct sec_platform_data *pdata = i2c->dev.platform_data; | ||
| 102 | struct sec_pmic_dev *sec_pmic; | ||
| 103 | int ret; | ||
| 104 | |||
| 105 | sec_pmic = devm_kzalloc(&i2c->dev, sizeof(struct sec_pmic_dev), | ||
| 106 | GFP_KERNEL); | ||
| 107 | if (sec_pmic == NULL) | ||
| 108 | return -ENOMEM; | ||
| 109 | |||
| 110 | i2c_set_clientdata(i2c, sec_pmic); | ||
| 111 | sec_pmic->dev = &i2c->dev; | ||
| 112 | sec_pmic->i2c = i2c; | ||
| 113 | sec_pmic->irq = i2c->irq; | ||
| 114 | sec_pmic->type = id->driver_data; | ||
| 115 | |||
| 116 | if (pdata) { | ||
| 117 | sec_pmic->device_type = pdata->device_type; | ||
| 118 | sec_pmic->ono = pdata->ono; | ||
| 119 | sec_pmic->irq_base = pdata->irq_base; | ||
| 120 | sec_pmic->wakeup = pdata->wakeup; | ||
| 121 | } | ||
| 122 | |||
| 123 | sec_pmic->regmap = devm_regmap_init_i2c(i2c, &sec_regmap_config); | ||
| 124 | if (IS_ERR(sec_pmic->regmap)) { | ||
| 125 | ret = PTR_ERR(sec_pmic->regmap); | ||
| 126 | dev_err(&i2c->dev, "Failed to allocate register map: %d\n", | ||
| 127 | ret); | ||
| 128 | return ret; | ||
| 129 | } | ||
| 130 | |||
| 131 | sec_pmic->rtc = i2c_new_dummy(i2c->adapter, RTC_I2C_ADDR); | ||
| 132 | i2c_set_clientdata(sec_pmic->rtc, sec_pmic); | ||
| 133 | |||
| 134 | if (pdata && pdata->cfg_pmic_irq) | ||
| 135 | pdata->cfg_pmic_irq(); | ||
| 136 | |||
| 137 | sec_irq_init(sec_pmic); | ||
| 138 | |||
| 139 | pm_runtime_set_active(sec_pmic->dev); | ||
| 140 | |||
| 141 | switch (sec_pmic->device_type) { | ||
| 142 | case S5M8751X: | ||
| 143 | ret = mfd_add_devices(sec_pmic->dev, -1, s5m8751_devs, | ||
| 144 | ARRAY_SIZE(s5m8751_devs), NULL, 0); | ||
| 145 | break; | ||
| 146 | case S5M8763X: | ||
| 147 | ret = mfd_add_devices(sec_pmic->dev, -1, s5m8763_devs, | ||
| 148 | ARRAY_SIZE(s5m8763_devs), NULL, 0); | ||
| 149 | break; | ||
| 150 | case S5M8767X: | ||
| 151 | ret = mfd_add_devices(sec_pmic->dev, -1, s5m8767_devs, | ||
| 152 | ARRAY_SIZE(s5m8767_devs), NULL, 0); | ||
| 153 | break; | ||
| 154 | case S2MPS11X: | ||
| 155 | ret = mfd_add_devices(sec_pmic->dev, -1, s2mps11_devs, | ||
| 156 | ARRAY_SIZE(s2mps11_devs), NULL, 0); | ||
| 157 | break; | ||
| 158 | default: | ||
| 159 | /* If this happens the probe function is problem */ | ||
| 160 | BUG(); | ||
| 161 | } | ||
| 162 | |||
| 163 | if (ret < 0) | ||
| 164 | goto err; | ||
| 165 | |||
| 166 | return ret; | ||
| 167 | |||
| 168 | err: | ||
| 169 | mfd_remove_devices(sec_pmic->dev); | ||
| 170 | sec_irq_exit(sec_pmic); | ||
| 171 | i2c_unregister_device(sec_pmic->rtc); | ||
| 172 | return ret; | ||
| 173 | } | ||
| 174 | |||
| 175 | static int sec_pmic_remove(struct i2c_client *i2c) | ||
| 176 | { | ||
| 177 | struct sec_pmic_dev *sec_pmic = i2c_get_clientdata(i2c); | ||
| 178 | |||
| 179 | mfd_remove_devices(sec_pmic->dev); | ||
| 180 | sec_irq_exit(sec_pmic); | ||
| 181 | i2c_unregister_device(sec_pmic->rtc); | ||
| 182 | return 0; | ||
| 183 | } | ||
| 184 | |||
| 185 | static const struct i2c_device_id sec_pmic_id[] = { | ||
| 186 | { "sec_pmic", 0 }, | ||
| 187 | { } | ||
| 188 | }; | ||
| 189 | MODULE_DEVICE_TABLE(i2c, sec_pmic_id); | ||
| 190 | |||
| 191 | static struct i2c_driver sec_pmic_driver = { | ||
| 192 | .driver = { | ||
| 193 | .name = "sec_pmic", | ||
| 194 | .owner = THIS_MODULE, | ||
| 195 | }, | ||
| 196 | .probe = sec_pmic_probe, | ||
| 197 | .remove = sec_pmic_remove, | ||
| 198 | .id_table = sec_pmic_id, | ||
| 199 | }; | ||
| 200 | |||
| 201 | static int __init sec_pmic_init(void) | ||
| 202 | { | ||
| 203 | return i2c_add_driver(&sec_pmic_driver); | ||
| 204 | } | ||
| 205 | |||
| 206 | subsys_initcall(sec_pmic_init); | ||
| 207 | |||
| 208 | static void __exit sec_pmic_exit(void) | ||
| 209 | { | ||
| 210 | i2c_del_driver(&sec_pmic_driver); | ||
| 211 | } | ||
| 212 | module_exit(sec_pmic_exit); | ||
| 213 | |||
| 214 | MODULE_AUTHOR("Sangbeom Kim <sbkim73@samsung.com>"); | ||
| 215 | MODULE_DESCRIPTION("Core support for the S5M MFD"); | ||
| 216 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mfd/sec-irq.c b/drivers/mfd/sec-irq.c new file mode 100644 index 000000000000..c901fa50fea1 --- /dev/null +++ b/drivers/mfd/sec-irq.c | |||
| @@ -0,0 +1,317 @@ | |||
| 1 | /* | ||
| 2 | * sec-irq.c | ||
| 3 | * | ||
| 4 | * Copyright (c) 2011 Samsung Electronics Co., Ltd | ||
| 5 | * http://www.samsung.com | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify it | ||
| 8 | * under the terms of the GNU General Public License as published by the | ||
| 9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 10 | * option) any later version. | ||
| 11 | * | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <linux/device.h> | ||
| 15 | #include <linux/interrupt.h> | ||
| 16 | #include <linux/irq.h> | ||
| 17 | #include <linux/regmap.h> | ||
| 18 | |||
| 19 | #include <linux/mfd/samsung/core.h> | ||
| 20 | #include <linux/mfd/samsung/irq.h> | ||
| 21 | #include <linux/mfd/samsung/s2mps11.h> | ||
| 22 | #include <linux/mfd/samsung/s5m8763.h> | ||
| 23 | #include <linux/mfd/samsung/s5m8767.h> | ||
| 24 | |||
| 25 | static struct regmap_irq s2mps11_irqs[] = { | ||
| 26 | [S2MPS11_IRQ_PWRONF] = { | ||
| 27 | .reg_offset = 1, | ||
| 28 | .mask = S2MPS11_IRQ_PWRONF_MASK, | ||
| 29 | }, | ||
| 30 | [S2MPS11_IRQ_PWRONR] = { | ||
| 31 | .reg_offset = 1, | ||
| 32 | .mask = S2MPS11_IRQ_PWRONR_MASK, | ||
| 33 | }, | ||
| 34 | [S2MPS11_IRQ_JIGONBF] = { | ||
| 35 | .reg_offset = 1, | ||
| 36 | .mask = S2MPS11_IRQ_JIGONBF_MASK, | ||
| 37 | }, | ||
| 38 | [S2MPS11_IRQ_JIGONBR] = { | ||
| 39 | .reg_offset = 1, | ||
| 40 | .mask = S2MPS11_IRQ_JIGONBR_MASK, | ||
| 41 | }, | ||
| 42 | [S2MPS11_IRQ_ACOKBF] = { | ||
| 43 | .reg_offset = 1, | ||
| 44 | .mask = S2MPS11_IRQ_ACOKBF_MASK, | ||
| 45 | }, | ||
| 46 | [S2MPS11_IRQ_ACOKBR] = { | ||
| 47 | .reg_offset = 1, | ||
| 48 | .mask = S2MPS11_IRQ_ACOKBR_MASK, | ||
| 49 | }, | ||
| 50 | [S2MPS11_IRQ_PWRON1S] = { | ||
| 51 | .reg_offset = 1, | ||
| 52 | .mask = S2MPS11_IRQ_PWRON1S_MASK, | ||
| 53 | }, | ||
| 54 | [S2MPS11_IRQ_MRB] = { | ||
| 55 | .reg_offset = 1, | ||
| 56 | .mask = S2MPS11_IRQ_MRB_MASK, | ||
| 57 | }, | ||
| 58 | [S2MPS11_IRQ_RTC60S] = { | ||
| 59 | .reg_offset = 2, | ||
| 60 | .mask = S2MPS11_IRQ_RTC60S_MASK, | ||
| 61 | }, | ||
| 62 | [S2MPS11_IRQ_RTCA1] = { | ||
| 63 | .reg_offset = 2, | ||
| 64 | .mask = S2MPS11_IRQ_RTCA1_MASK, | ||
| 65 | }, | ||
| 66 | [S2MPS11_IRQ_RTCA2] = { | ||
| 67 | .reg_offset = 2, | ||
| 68 | .mask = S2MPS11_IRQ_RTCA2_MASK, | ||
| 69 | }, | ||
| 70 | [S2MPS11_IRQ_SMPL] = { | ||
| 71 | .reg_offset = 2, | ||
| 72 | .mask = S2MPS11_IRQ_SMPL_MASK, | ||
| 73 | }, | ||
| 74 | [S2MPS11_IRQ_RTC1S] = { | ||
| 75 | .reg_offset = 2, | ||
| 76 | .mask = S2MPS11_IRQ_RTC1S_MASK, | ||
| 77 | }, | ||
| 78 | [S2MPS11_IRQ_WTSR] = { | ||
| 79 | .reg_offset = 2, | ||
| 80 | .mask = S2MPS11_IRQ_WTSR_MASK, | ||
| 81 | }, | ||
| 82 | [S2MPS11_IRQ_INT120C] = { | ||
| 83 | .reg_offset = 3, | ||
| 84 | .mask = S2MPS11_IRQ_INT120C_MASK, | ||
| 85 | }, | ||
| 86 | [S2MPS11_IRQ_INT140C] = { | ||
| 87 | .reg_offset = 3, | ||
| 88 | .mask = S2MPS11_IRQ_INT140C_MASK, | ||
| 89 | }, | ||
| 90 | }; | ||
| 91 | |||
| 92 | |||
| 93 | static struct regmap_irq s5m8767_irqs[] = { | ||
| 94 | [S5M8767_IRQ_PWRR] = { | ||
| 95 | .reg_offset = 1, | ||
| 96 | .mask = S5M8767_IRQ_PWRR_MASK, | ||
| 97 | }, | ||
| 98 | [S5M8767_IRQ_PWRF] = { | ||
| 99 | .reg_offset = 1, | ||
| 100 | .mask = S5M8767_IRQ_PWRF_MASK, | ||
| 101 | }, | ||
| 102 | [S5M8767_IRQ_PWR1S] = { | ||
| 103 | .reg_offset = 1, | ||
| 104 | .mask = S5M8767_IRQ_PWR1S_MASK, | ||
| 105 | }, | ||
| 106 | [S5M8767_IRQ_JIGR] = { | ||
| 107 | .reg_offset = 1, | ||
| 108 | .mask = S5M8767_IRQ_JIGR_MASK, | ||
| 109 | }, | ||
| 110 | [S5M8767_IRQ_JIGF] = { | ||
| 111 | .reg_offset = 1, | ||
| 112 | .mask = S5M8767_IRQ_JIGF_MASK, | ||
| 113 | }, | ||
| 114 | [S5M8767_IRQ_LOWBAT2] = { | ||
| 115 | .reg_offset = 1, | ||
| 116 | .mask = S5M8767_IRQ_LOWBAT2_MASK, | ||
| 117 | }, | ||
| 118 | [S5M8767_IRQ_LOWBAT1] = { | ||
| 119 | .reg_offset = 1, | ||
| 120 | .mask = S5M8767_IRQ_LOWBAT1_MASK, | ||
| 121 | }, | ||
| 122 | [S5M8767_IRQ_MRB] = { | ||
| 123 | .reg_offset = 2, | ||
| 124 | .mask = S5M8767_IRQ_MRB_MASK, | ||
| 125 | }, | ||
| 126 | [S5M8767_IRQ_DVSOK2] = { | ||
| 127 | .reg_offset = 2, | ||
| 128 | .mask = S5M8767_IRQ_DVSOK2_MASK, | ||
| 129 | }, | ||
| 130 | [S5M8767_IRQ_DVSOK3] = { | ||
| 131 | .reg_offset = 2, | ||
| 132 | .mask = S5M8767_IRQ_DVSOK3_MASK, | ||
| 133 | }, | ||
| 134 | [S5M8767_IRQ_DVSOK4] = { | ||
| 135 | .reg_offset = 2, | ||
| 136 | .mask = S5M8767_IRQ_DVSOK4_MASK, | ||
| 137 | }, | ||
| 138 | [S5M8767_IRQ_RTC60S] = { | ||
| 139 | .reg_offset = 3, | ||
| 140 | .mask = S5M8767_IRQ_RTC60S_MASK, | ||
| 141 | }, | ||
| 142 | [S5M8767_IRQ_RTCA1] = { | ||
| 143 | .reg_offset = 3, | ||
| 144 | .mask = S5M8767_IRQ_RTCA1_MASK, | ||
| 145 | }, | ||
| 146 | [S5M8767_IRQ_RTCA2] = { | ||
| 147 | .reg_offset = 3, | ||
| 148 | .mask = S5M8767_IRQ_RTCA2_MASK, | ||
| 149 | }, | ||
| 150 | [S5M8767_IRQ_SMPL] = { | ||
| 151 | .reg_offset = 3, | ||
| 152 | .mask = S5M8767_IRQ_SMPL_MASK, | ||
| 153 | }, | ||
| 154 | [S5M8767_IRQ_RTC1S] = { | ||
| 155 | .reg_offset = 3, | ||
| 156 | .mask = S5M8767_IRQ_RTC1S_MASK, | ||
| 157 | }, | ||
| 158 | [S5M8767_IRQ_WTSR] = { | ||
| 159 | .reg_offset = 3, | ||
| 160 | .mask = S5M8767_IRQ_WTSR_MASK, | ||
| 161 | }, | ||
| 162 | }; | ||
| 163 | |||
| 164 | static struct regmap_irq s5m8763_irqs[] = { | ||
| 165 | [S5M8763_IRQ_DCINF] = { | ||
| 166 | .reg_offset = 1, | ||
| 167 | .mask = S5M8763_IRQ_DCINF_MASK, | ||
| 168 | }, | ||
| 169 | [S5M8763_IRQ_DCINR] = { | ||
| 170 | .reg_offset = 1, | ||
| 171 | .mask = S5M8763_IRQ_DCINR_MASK, | ||
| 172 | }, | ||
| 173 | [S5M8763_IRQ_JIGF] = { | ||
| 174 | .reg_offset = 1, | ||
| 175 | .mask = S5M8763_IRQ_JIGF_MASK, | ||
| 176 | }, | ||
| 177 | [S5M8763_IRQ_JIGR] = { | ||
| 178 | .reg_offset = 1, | ||
| 179 | .mask = S5M8763_IRQ_JIGR_MASK, | ||
| 180 | }, | ||
| 181 | [S5M8763_IRQ_PWRONF] = { | ||
| 182 | .reg_offset = 1, | ||
| 183 | .mask = S5M8763_IRQ_PWRONF_MASK, | ||
| 184 | }, | ||
| 185 | [S5M8763_IRQ_PWRONR] = { | ||
| 186 | .reg_offset = 1, | ||
| 187 | .mask = S5M8763_IRQ_PWRONR_MASK, | ||
| 188 | }, | ||
| 189 | [S5M8763_IRQ_WTSREVNT] = { | ||
| 190 | .reg_offset = 2, | ||
| 191 | .mask = S5M8763_IRQ_WTSREVNT_MASK, | ||
| 192 | }, | ||
| 193 | [S5M8763_IRQ_SMPLEVNT] = { | ||
| 194 | .reg_offset = 2, | ||
| 195 | .mask = S5M8763_IRQ_SMPLEVNT_MASK, | ||
| 196 | }, | ||
| 197 | [S5M8763_IRQ_ALARM1] = { | ||
| 198 | .reg_offset = 2, | ||
| 199 | .mask = S5M8763_IRQ_ALARM1_MASK, | ||
| 200 | }, | ||
| 201 | [S5M8763_IRQ_ALARM0] = { | ||
| 202 | .reg_offset = 2, | ||
| 203 | .mask = S5M8763_IRQ_ALARM0_MASK, | ||
| 204 | }, | ||
| 205 | [S5M8763_IRQ_ONKEY1S] = { | ||
| 206 | .reg_offset = 3, | ||
| 207 | .mask = S5M8763_IRQ_ONKEY1S_MASK, | ||
| 208 | }, | ||
| 209 | [S5M8763_IRQ_TOPOFFR] = { | ||
| 210 | .reg_offset = 3, | ||
| 211 | .mask = S5M8763_IRQ_TOPOFFR_MASK, | ||
| 212 | }, | ||
| 213 | [S5M8763_IRQ_DCINOVPR] = { | ||
| 214 | .reg_offset = 3, | ||
| 215 | .mask = S5M8763_IRQ_DCINOVPR_MASK, | ||
| 216 | }, | ||
| 217 | [S5M8763_IRQ_CHGRSTF] = { | ||
| 218 | .reg_offset = 3, | ||
| 219 | .mask = S5M8763_IRQ_CHGRSTF_MASK, | ||
| 220 | }, | ||
| 221 | [S5M8763_IRQ_DONER] = { | ||
| 222 | .reg_offset = 3, | ||
| 223 | .mask = S5M8763_IRQ_DONER_MASK, | ||
| 224 | }, | ||
| 225 | [S5M8763_IRQ_CHGFAULT] = { | ||
| 226 | .reg_offset = 3, | ||
| 227 | .mask = S5M8763_IRQ_CHGFAULT_MASK, | ||
| 228 | }, | ||
| 229 | [S5M8763_IRQ_LOBAT1] = { | ||
| 230 | .reg_offset = 4, | ||
| 231 | .mask = S5M8763_IRQ_LOBAT1_MASK, | ||
| 232 | }, | ||
| 233 | [S5M8763_IRQ_LOBAT2] = { | ||
| 234 | .reg_offset = 4, | ||
| 235 | .mask = S5M8763_IRQ_LOBAT2_MASK, | ||
| 236 | }, | ||
| 237 | }; | ||
| 238 | |||
| 239 | static struct regmap_irq_chip s2mps11_irq_chip = { | ||
| 240 | .name = "s2mps11", | ||
| 241 | .irqs = s2mps11_irqs, | ||
| 242 | .num_irqs = ARRAY_SIZE(s2mps11_irqs), | ||
| 243 | .num_regs = 3, | ||
| 244 | .status_base = S2MPS11_REG_INT1, | ||
| 245 | .mask_base = S2MPS11_REG_INT1M, | ||
| 246 | .ack_base = S2MPS11_REG_INT1, | ||
| 247 | }; | ||
| 248 | |||
| 249 | static struct regmap_irq_chip s5m8767_irq_chip = { | ||
| 250 | .name = "s5m8767", | ||
| 251 | .irqs = s5m8767_irqs, | ||
| 252 | .num_irqs = ARRAY_SIZE(s5m8767_irqs), | ||
| 253 | .num_regs = 3, | ||
| 254 | .status_base = S5M8767_REG_INT1, | ||
| 255 | .mask_base = S5M8767_REG_INT1M, | ||
| 256 | .ack_base = S5M8767_REG_INT1, | ||
| 257 | }; | ||
| 258 | |||
| 259 | static struct regmap_irq_chip s5m8763_irq_chip = { | ||
| 260 | .name = "s5m8763", | ||
| 261 | .irqs = s5m8763_irqs, | ||
| 262 | .num_irqs = ARRAY_SIZE(s5m8763_irqs), | ||
| 263 | .num_regs = 4, | ||
| 264 | .status_base = S5M8763_REG_IRQ1, | ||
| 265 | .mask_base = S5M8763_REG_IRQM1, | ||
| 266 | .ack_base = S5M8763_REG_IRQ1, | ||
| 267 | }; | ||
| 268 | |||
| 269 | int sec_irq_init(struct sec_pmic_dev *sec_pmic) | ||
| 270 | { | ||
| 271 | int ret = 0; | ||
| 272 | int type = sec_pmic->device_type; | ||
| 273 | |||
| 274 | if (!sec_pmic->irq) { | ||
| 275 | dev_warn(sec_pmic->dev, | ||
| 276 | "No interrupt specified, no interrupts\n"); | ||
| 277 | sec_pmic->irq_base = 0; | ||
| 278 | return 0; | ||
| 279 | } | ||
| 280 | |||
| 281 | switch (type) { | ||
| 282 | case S5M8763X: | ||
| 283 | ret = regmap_add_irq_chip(sec_pmic->regmap, sec_pmic->irq, | ||
| 284 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | ||
| 285 | sec_pmic->irq_base, &s5m8763_irq_chip, | ||
| 286 | &sec_pmic->irq_data); | ||
| 287 | break; | ||
| 288 | case S5M8767X: | ||
| 289 | ret = regmap_add_irq_chip(sec_pmic->regmap, sec_pmic->irq, | ||
| 290 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | ||
| 291 | sec_pmic->irq_base, &s5m8767_irq_chip, | ||
| 292 | &sec_pmic->irq_data); | ||
| 293 | break; | ||
| 294 | case S2MPS11X: | ||
| 295 | ret = regmap_add_irq_chip(sec_pmic->regmap, sec_pmic->irq, | ||
| 296 | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, | ||
| 297 | sec_pmic->irq_base, &s2mps11_irq_chip, | ||
| 298 | &sec_pmic->irq_data); | ||
| 299 | break; | ||
| 300 | default: | ||
| 301 | dev_err(sec_pmic->dev, "Unknown device type %d\n", | ||
| 302 | sec_pmic->device_type); | ||
| 303 | return -EINVAL; | ||
| 304 | } | ||
| 305 | |||
| 306 | if (ret != 0) { | ||
| 307 | dev_err(sec_pmic->dev, "Failed to register IRQ chip: %d\n", ret); | ||
| 308 | return ret; | ||
| 309 | } | ||
| 310 | |||
| 311 | return 0; | ||
| 312 | } | ||
| 313 | |||
| 314 | void sec_irq_exit(struct sec_pmic_dev *sec_pmic) | ||
| 315 | { | ||
| 316 | regmap_del_irq_chip(sec_pmic->irq, sec_pmic->irq_data); | ||
| 317 | } | ||
diff --git a/drivers/mfd/tc3589x.c b/drivers/mfd/tc3589x.c index de979742c6fc..048bf0532a09 100644 --- a/drivers/mfd/tc3589x.c +++ b/drivers/mfd/tc3589x.c | |||
| @@ -357,7 +357,7 @@ static int __devexit tc3589x_remove(struct i2c_client *client) | |||
| 357 | return 0; | 357 | return 0; |
| 358 | } | 358 | } |
| 359 | 359 | ||
| 360 | #ifdef CONFIG_PM | 360 | #ifdef CONFIG_PM_SLEEP |
| 361 | static int tc3589x_suspend(struct device *dev) | 361 | static int tc3589x_suspend(struct device *dev) |
| 362 | { | 362 | { |
| 363 | struct tc3589x *tc3589x = dev_get_drvdata(dev); | 363 | struct tc3589x *tc3589x = dev_get_drvdata(dev); |
| @@ -385,11 +385,10 @@ static int tc3589x_resume(struct device *dev) | |||
| 385 | 385 | ||
| 386 | return ret; | 386 | return ret; |
| 387 | } | 387 | } |
| 388 | |||
| 389 | static const SIMPLE_DEV_PM_OPS(tc3589x_dev_pm_ops, tc3589x_suspend, | ||
| 390 | tc3589x_resume); | ||
| 391 | #endif | 388 | #endif |
| 392 | 389 | ||
| 390 | static SIMPLE_DEV_PM_OPS(tc3589x_dev_pm_ops, tc3589x_suspend, tc3589x_resume); | ||
| 391 | |||
| 393 | static const struct i2c_device_id tc3589x_id[] = { | 392 | static const struct i2c_device_id tc3589x_id[] = { |
| 394 | { "tc3589x", 24 }, | 393 | { "tc3589x", 24 }, |
| 395 | { } | 394 | { } |
| @@ -399,9 +398,7 @@ MODULE_DEVICE_TABLE(i2c, tc3589x_id); | |||
| 399 | static struct i2c_driver tc3589x_driver = { | 398 | static struct i2c_driver tc3589x_driver = { |
| 400 | .driver.name = "tc3589x", | 399 | .driver.name = "tc3589x", |
| 401 | .driver.owner = THIS_MODULE, | 400 | .driver.owner = THIS_MODULE, |
| 402 | #ifdef CONFIG_PM | ||
| 403 | .driver.pm = &tc3589x_dev_pm_ops, | 401 | .driver.pm = &tc3589x_dev_pm_ops, |
| 404 | #endif | ||
| 405 | .probe = tc3589x_probe, | 402 | .probe = tc3589x_probe, |
| 406 | .remove = __devexit_p(tc3589x_remove), | 403 | .remove = __devexit_p(tc3589x_remove), |
| 407 | .id_table = tc3589x_id, | 404 | .id_table = tc3589x_id, |
diff --git a/drivers/mfd/tps65090.c b/drivers/mfd/tps65090.c index 396b9d1b6bd6..80e24f4b47bf 100644 --- a/drivers/mfd/tps65090.c +++ b/drivers/mfd/tps65090.c | |||
| @@ -71,10 +71,10 @@ static const struct tps65090_irq_data tps65090_irqs[] = { | |||
| 71 | 71 | ||
| 72 | static struct mfd_cell tps65090s[] = { | 72 | static struct mfd_cell tps65090s[] = { |
| 73 | { | 73 | { |
| 74 | .name = "tps65910-pmic", | 74 | .name = "tps65090-pmic", |
| 75 | }, | 75 | }, |
| 76 | { | 76 | { |
| 77 | .name = "tps65910-regulator", | 77 | .name = "tps65090-regulator", |
| 78 | }, | 78 | }, |
| 79 | }; | 79 | }; |
| 80 | 80 | ||
diff --git a/drivers/mfd/tps6586x.c b/drivers/mfd/tps6586x.c index c84b5506d5fb..353c34812120 100644 --- a/drivers/mfd/tps6586x.c +++ b/drivers/mfd/tps6586x.c | |||
| @@ -21,17 +21,14 @@ | |||
| 21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
| 22 | #include <linux/mutex.h> | 22 | #include <linux/mutex.h> |
| 23 | #include <linux/slab.h> | 23 | #include <linux/slab.h> |
| 24 | #include <linux/gpio.h> | 24 | #include <linux/err.h> |
| 25 | #include <linux/i2c.h> | 25 | #include <linux/i2c.h> |
| 26 | #include <linux/regmap.h> | ||
| 26 | #include <linux/regulator/of_regulator.h> | 27 | #include <linux/regulator/of_regulator.h> |
| 27 | 28 | ||
| 28 | #include <linux/mfd/core.h> | 29 | #include <linux/mfd/core.h> |
| 29 | #include <linux/mfd/tps6586x.h> | 30 | #include <linux/mfd/tps6586x.h> |
| 30 | 31 | ||
| 31 | /* GPIO control registers */ | ||
| 32 | #define TPS6586X_GPIOSET1 0x5d | ||
| 33 | #define TPS6586X_GPIOSET2 0x5e | ||
| 34 | |||
| 35 | /* interrupt control registers */ | 32 | /* interrupt control registers */ |
| 36 | #define TPS6586X_INT_ACK1 0xb5 | 33 | #define TPS6586X_INT_ACK1 0xb5 |
| 37 | #define TPS6586X_INT_ACK2 0xb6 | 34 | #define TPS6586X_INT_ACK2 0xb6 |
| @@ -48,6 +45,9 @@ | |||
| 48 | /* device id */ | 45 | /* device id */ |
| 49 | #define TPS6586X_VERSIONCRC 0xcd | 46 | #define TPS6586X_VERSIONCRC 0xcd |
| 50 | 47 | ||
| 48 | /* Maximum register */ | ||
| 49 | #define TPS6586X_MAX_REGISTER (TPS6586X_VERSIONCRC + 1) | ||
| 50 | |||
| 51 | struct tps6586x_irq_data { | 51 | struct tps6586x_irq_data { |
| 52 | u8 mask_reg; | 52 | u8 mask_reg; |
| 53 | u8 mask_mask; | 53 | u8 mask_mask; |
| @@ -89,226 +89,96 @@ static const struct tps6586x_irq_data tps6586x_irqs[] = { | |||
| 89 | [TPS6586X_INT_RTC_ALM2] = TPS6586X_IRQ(TPS6586X_INT_MASK4, 1 << 1), | 89 | [TPS6586X_INT_RTC_ALM2] = TPS6586X_IRQ(TPS6586X_INT_MASK4, 1 << 1), |
| 90 | }; | 90 | }; |
| 91 | 91 | ||
| 92 | static struct mfd_cell tps6586x_cell[] = { | ||
| 93 | { | ||
| 94 | .name = "tps6586x-gpio", | ||
| 95 | }, | ||
| 96 | { | ||
| 97 | .name = "tps6586x-rtc", | ||
| 98 | }, | ||
| 99 | { | ||
| 100 | .name = "tps6586x-onkey", | ||
| 101 | }, | ||
| 102 | }; | ||
| 103 | |||
| 92 | struct tps6586x { | 104 | struct tps6586x { |
| 93 | struct mutex lock; | ||
| 94 | struct device *dev; | 105 | struct device *dev; |
| 95 | struct i2c_client *client; | 106 | struct i2c_client *client; |
| 107 | struct regmap *regmap; | ||
| 96 | 108 | ||
| 97 | struct gpio_chip gpio; | ||
| 98 | struct irq_chip irq_chip; | 109 | struct irq_chip irq_chip; |
| 99 | struct mutex irq_lock; | 110 | struct mutex irq_lock; |
| 100 | int irq_base; | 111 | int irq_base; |
| 101 | u32 irq_en; | 112 | u32 irq_en; |
| 102 | u8 mask_cache[5]; | ||
| 103 | u8 mask_reg[5]; | 113 | u8 mask_reg[5]; |
| 104 | }; | 114 | }; |
| 105 | 115 | ||
| 106 | static inline int __tps6586x_read(struct i2c_client *client, | 116 | static inline struct tps6586x *dev_to_tps6586x(struct device *dev) |
| 107 | int reg, uint8_t *val) | ||
| 108 | { | ||
| 109 | int ret; | ||
| 110 | |||
| 111 | ret = i2c_smbus_read_byte_data(client, reg); | ||
| 112 | if (ret < 0) { | ||
| 113 | dev_err(&client->dev, "failed reading at 0x%02x\n", reg); | ||
| 114 | return ret; | ||
| 115 | } | ||
| 116 | |||
| 117 | *val = (uint8_t)ret; | ||
| 118 | |||
| 119 | return 0; | ||
| 120 | } | ||
| 121 | |||
| 122 | static inline int __tps6586x_reads(struct i2c_client *client, int reg, | ||
| 123 | int len, uint8_t *val) | ||
| 124 | { | ||
| 125 | int ret; | ||
| 126 | |||
| 127 | ret = i2c_smbus_read_i2c_block_data(client, reg, len, val); | ||
| 128 | if (ret < 0) { | ||
| 129 | dev_err(&client->dev, "failed reading from 0x%02x\n", reg); | ||
| 130 | return ret; | ||
| 131 | } | ||
| 132 | |||
| 133 | return 0; | ||
| 134 | } | ||
| 135 | |||
| 136 | static inline int __tps6586x_write(struct i2c_client *client, | ||
| 137 | int reg, uint8_t val) | ||
| 138 | { | 117 | { |
| 139 | int ret; | 118 | return i2c_get_clientdata(to_i2c_client(dev)); |
| 140 | |||
| 141 | ret = i2c_smbus_write_byte_data(client, reg, val); | ||
| 142 | if (ret < 0) { | ||
| 143 | dev_err(&client->dev, "failed writing 0x%02x to 0x%02x\n", | ||
| 144 | val, reg); | ||
| 145 | return ret; | ||
| 146 | } | ||
| 147 | |||
| 148 | return 0; | ||
| 149 | } | ||
| 150 | |||
| 151 | static inline int __tps6586x_writes(struct i2c_client *client, int reg, | ||
| 152 | int len, uint8_t *val) | ||
| 153 | { | ||
| 154 | int ret, i; | ||
| 155 | |||
| 156 | for (i = 0; i < len; i++) { | ||
| 157 | ret = __tps6586x_write(client, reg + i, *(val + i)); | ||
| 158 | if (ret < 0) | ||
| 159 | return ret; | ||
| 160 | } | ||
| 161 | |||
| 162 | return 0; | ||
| 163 | } | 119 | } |
| 164 | 120 | ||
| 165 | int tps6586x_write(struct device *dev, int reg, uint8_t val) | 121 | int tps6586x_write(struct device *dev, int reg, uint8_t val) |
| 166 | { | 122 | { |
| 167 | return __tps6586x_write(to_i2c_client(dev), reg, val); | 123 | struct tps6586x *tps6586x = dev_to_tps6586x(dev); |
| 124 | |||
| 125 | return regmap_write(tps6586x->regmap, reg, val); | ||
| 168 | } | 126 | } |
| 169 | EXPORT_SYMBOL_GPL(tps6586x_write); | 127 | EXPORT_SYMBOL_GPL(tps6586x_write); |
| 170 | 128 | ||
| 171 | int tps6586x_writes(struct device *dev, int reg, int len, uint8_t *val) | 129 | int tps6586x_writes(struct device *dev, int reg, int len, uint8_t *val) |
| 172 | { | 130 | { |
| 173 | return __tps6586x_writes(to_i2c_client(dev), reg, len, val); | 131 | struct tps6586x *tps6586x = dev_to_tps6586x(dev); |
| 132 | |||
| 133 | return regmap_bulk_write(tps6586x->regmap, reg, val, len); | ||
| 174 | } | 134 | } |
| 175 | EXPORT_SYMBOL_GPL(tps6586x_writes); | 135 | EXPORT_SYMBOL_GPL(tps6586x_writes); |
| 176 | 136 | ||
| 177 | int tps6586x_read(struct device *dev, int reg, uint8_t *val) | 137 | int tps6586x_read(struct device *dev, int reg, uint8_t *val) |
| 178 | { | 138 | { |
| 179 | return __tps6586x_read(to_i2c_client(dev), reg, val); | 139 | struct tps6586x *tps6586x = dev_to_tps6586x(dev); |
| 140 | unsigned int rval; | ||
| 141 | int ret; | ||
| 142 | |||
| 143 | ret = regmap_read(tps6586x->regmap, reg, &rval); | ||
| 144 | if (!ret) | ||
| 145 | *val = rval; | ||
| 146 | return ret; | ||
| 180 | } | 147 | } |
| 181 | EXPORT_SYMBOL_GPL(tps6586x_read); | 148 | EXPORT_SYMBOL_GPL(tps6586x_read); |
| 182 | 149 | ||
| 183 | int tps6586x_reads(struct device *dev, int reg, int len, uint8_t *val) | 150 | int tps6586x_reads(struct device *dev, int reg, int len, uint8_t *val) |
| 184 | { | 151 | { |
| 185 | return __tps6586x_reads(to_i2c_client(dev), reg, len, val); | 152 | struct tps6586x *tps6586x = dev_to_tps6586x(dev); |
| 153 | |||
| 154 | return regmap_bulk_read(tps6586x->regmap, reg, val, len); | ||
| 186 | } | 155 | } |
| 187 | EXPORT_SYMBOL_GPL(tps6586x_reads); | 156 | EXPORT_SYMBOL_GPL(tps6586x_reads); |
| 188 | 157 | ||
| 189 | int tps6586x_set_bits(struct device *dev, int reg, uint8_t bit_mask) | 158 | int tps6586x_set_bits(struct device *dev, int reg, uint8_t bit_mask) |
| 190 | { | 159 | { |
| 191 | struct tps6586x *tps6586x = dev_get_drvdata(dev); | 160 | struct tps6586x *tps6586x = dev_to_tps6586x(dev); |
| 192 | uint8_t reg_val; | ||
| 193 | int ret = 0; | ||
| 194 | |||
| 195 | mutex_lock(&tps6586x->lock); | ||
| 196 | 161 | ||
| 197 | ret = __tps6586x_read(to_i2c_client(dev), reg, ®_val); | 162 | return regmap_update_bits(tps6586x->regmap, reg, bit_mask, bit_mask); |
| 198 | if (ret) | ||
| 199 | goto out; | ||
| 200 | |||
| 201 | if ((reg_val & bit_mask) != bit_mask) { | ||
| 202 | reg_val |= bit_mask; | ||
| 203 | ret = __tps6586x_write(to_i2c_client(dev), reg, reg_val); | ||
| 204 | } | ||
| 205 | out: | ||
| 206 | mutex_unlock(&tps6586x->lock); | ||
| 207 | return ret; | ||
| 208 | } | 163 | } |
| 209 | EXPORT_SYMBOL_GPL(tps6586x_set_bits); | 164 | EXPORT_SYMBOL_GPL(tps6586x_set_bits); |
| 210 | 165 | ||
| 211 | int tps6586x_clr_bits(struct device *dev, int reg, uint8_t bit_mask) | 166 | int tps6586x_clr_bits(struct device *dev, int reg, uint8_t bit_mask) |
| 212 | { | 167 | { |
| 213 | struct tps6586x *tps6586x = dev_get_drvdata(dev); | 168 | struct tps6586x *tps6586x = dev_to_tps6586x(dev); |
| 214 | uint8_t reg_val; | ||
| 215 | int ret = 0; | ||
| 216 | |||
| 217 | mutex_lock(&tps6586x->lock); | ||
| 218 | 169 | ||
| 219 | ret = __tps6586x_read(to_i2c_client(dev), reg, ®_val); | 170 | return regmap_update_bits(tps6586x->regmap, reg, bit_mask, 0); |
| 220 | if (ret) | ||
| 221 | goto out; | ||
| 222 | |||
| 223 | if (reg_val & bit_mask) { | ||
| 224 | reg_val &= ~bit_mask; | ||
| 225 | ret = __tps6586x_write(to_i2c_client(dev), reg, reg_val); | ||
| 226 | } | ||
| 227 | out: | ||
| 228 | mutex_unlock(&tps6586x->lock); | ||
| 229 | return ret; | ||
| 230 | } | 171 | } |
| 231 | EXPORT_SYMBOL_GPL(tps6586x_clr_bits); | 172 | EXPORT_SYMBOL_GPL(tps6586x_clr_bits); |
| 232 | 173 | ||
| 233 | int tps6586x_update(struct device *dev, int reg, uint8_t val, uint8_t mask) | 174 | int tps6586x_update(struct device *dev, int reg, uint8_t val, uint8_t mask) |
| 234 | { | 175 | { |
| 235 | struct tps6586x *tps6586x = dev_get_drvdata(dev); | 176 | struct tps6586x *tps6586x = dev_to_tps6586x(dev); |
| 236 | uint8_t reg_val; | ||
| 237 | int ret = 0; | ||
| 238 | |||
| 239 | mutex_lock(&tps6586x->lock); | ||
| 240 | 177 | ||
| 241 | ret = __tps6586x_read(tps6586x->client, reg, ®_val); | 178 | return regmap_update_bits(tps6586x->regmap, reg, mask, val); |
| 242 | if (ret) | ||
| 243 | goto out; | ||
| 244 | |||
| 245 | if ((reg_val & mask) != val) { | ||
| 246 | reg_val = (reg_val & ~mask) | val; | ||
| 247 | ret = __tps6586x_write(tps6586x->client, reg, reg_val); | ||
| 248 | } | ||
| 249 | out: | ||
| 250 | mutex_unlock(&tps6586x->lock); | ||
| 251 | return ret; | ||
| 252 | } | 179 | } |
| 253 | EXPORT_SYMBOL_GPL(tps6586x_update); | 180 | EXPORT_SYMBOL_GPL(tps6586x_update); |
| 254 | 181 | ||
| 255 | static int tps6586x_gpio_get(struct gpio_chip *gc, unsigned offset) | ||
| 256 | { | ||
| 257 | struct tps6586x *tps6586x = container_of(gc, struct tps6586x, gpio); | ||
| 258 | uint8_t val; | ||
| 259 | int ret; | ||
| 260 | |||
| 261 | ret = __tps6586x_read(tps6586x->client, TPS6586X_GPIOSET2, &val); | ||
| 262 | if (ret) | ||
| 263 | return ret; | ||
| 264 | |||
| 265 | return !!(val & (1 << offset)); | ||
| 266 | } | ||
| 267 | |||
| 268 | |||
| 269 | static void tps6586x_gpio_set(struct gpio_chip *chip, unsigned offset, | ||
| 270 | int value) | ||
| 271 | { | ||
| 272 | struct tps6586x *tps6586x = container_of(chip, struct tps6586x, gpio); | ||
| 273 | |||
| 274 | tps6586x_update(tps6586x->dev, TPS6586X_GPIOSET2, | ||
| 275 | value << offset, 1 << offset); | ||
| 276 | } | ||
| 277 | |||
| 278 | static int tps6586x_gpio_output(struct gpio_chip *gc, unsigned offset, | ||
| 279 | int value) | ||
| 280 | { | ||
| 281 | struct tps6586x *tps6586x = container_of(gc, struct tps6586x, gpio); | ||
| 282 | uint8_t val, mask; | ||
| 283 | |||
| 284 | tps6586x_gpio_set(gc, offset, value); | ||
| 285 | |||
| 286 | val = 0x1 << (offset * 2); | ||
| 287 | mask = 0x3 << (offset * 2); | ||
| 288 | |||
| 289 | return tps6586x_update(tps6586x->dev, TPS6586X_GPIOSET1, val, mask); | ||
| 290 | } | ||
| 291 | |||
| 292 | static int tps6586x_gpio_init(struct tps6586x *tps6586x, int gpio_base) | ||
| 293 | { | ||
| 294 | if (!gpio_base) | ||
| 295 | return 0; | ||
| 296 | |||
| 297 | tps6586x->gpio.owner = THIS_MODULE; | ||
| 298 | tps6586x->gpio.label = tps6586x->client->name; | ||
| 299 | tps6586x->gpio.dev = tps6586x->dev; | ||
| 300 | tps6586x->gpio.base = gpio_base; | ||
| 301 | tps6586x->gpio.ngpio = 4; | ||
| 302 | tps6586x->gpio.can_sleep = 1; | ||
| 303 | |||
| 304 | /* FIXME: add handling of GPIOs as dedicated inputs */ | ||
| 305 | tps6586x->gpio.direction_output = tps6586x_gpio_output; | ||
| 306 | tps6586x->gpio.set = tps6586x_gpio_set; | ||
| 307 | tps6586x->gpio.get = tps6586x_gpio_get; | ||
| 308 | |||
| 309 | return gpiochip_add(&tps6586x->gpio); | ||
| 310 | } | ||
| 311 | |||
| 312 | static int __remove_subdev(struct device *dev, void *unused) | 182 | static int __remove_subdev(struct device *dev, void *unused) |
| 313 | { | 183 | { |
| 314 | platform_device_unregister(to_platform_device(dev)); | 184 | platform_device_unregister(to_platform_device(dev)); |
| @@ -354,12 +224,11 @@ static void tps6586x_irq_sync_unlock(struct irq_data *data) | |||
| 354 | int i; | 224 | int i; |
| 355 | 225 | ||
| 356 | for (i = 0; i < ARRAY_SIZE(tps6586x->mask_reg); i++) { | 226 | for (i = 0; i < ARRAY_SIZE(tps6586x->mask_reg); i++) { |
| 357 | if (tps6586x->mask_reg[i] != tps6586x->mask_cache[i]) { | 227 | int ret; |
| 358 | if (!WARN_ON(tps6586x_write(tps6586x->dev, | 228 | ret = tps6586x_write(tps6586x->dev, |
| 359 | TPS6586X_INT_MASK1 + i, | 229 | TPS6586X_INT_MASK1 + i, |
| 360 | tps6586x->mask_reg[i]))) | 230 | tps6586x->mask_reg[i]); |
| 361 | tps6586x->mask_cache[i] = tps6586x->mask_reg[i]; | 231 | WARN_ON(ret); |
| 362 | } | ||
| 363 | } | 232 | } |
| 364 | 233 | ||
| 365 | mutex_unlock(&tps6586x->irq_lock); | 234 | mutex_unlock(&tps6586x->irq_lock); |
| @@ -406,7 +275,6 @@ static int __devinit tps6586x_irq_init(struct tps6586x *tps6586x, int irq, | |||
| 406 | 275 | ||
| 407 | mutex_init(&tps6586x->irq_lock); | 276 | mutex_init(&tps6586x->irq_lock); |
| 408 | for (i = 0; i < 5; i++) { | 277 | for (i = 0; i < 5; i++) { |
| 409 | tps6586x->mask_cache[i] = 0xff; | ||
| 410 | tps6586x->mask_reg[i] = 0xff; | 278 | tps6586x->mask_reg[i] = 0xff; |
| 411 | tps6586x_write(tps6586x->dev, TPS6586X_INT_MASK1 + i, 0xff); | 279 | tps6586x_write(tps6586x->dev, TPS6586X_INT_MASK1 + i, 0xff); |
| 412 | } | 280 | } |
| @@ -556,6 +424,23 @@ static struct tps6586x_platform_data *tps6586x_parse_dt(struct i2c_client *clien | |||
| 556 | } | 424 | } |
| 557 | #endif | 425 | #endif |
| 558 | 426 | ||
| 427 | static bool is_volatile_reg(struct device *dev, unsigned int reg) | ||
| 428 | { | ||
| 429 | /* Cache all interrupt mask register */ | ||
| 430 | if ((reg >= TPS6586X_INT_MASK1) && (reg <= TPS6586X_INT_MASK5)) | ||
| 431 | return false; | ||
| 432 | |||
| 433 | return true; | ||
| 434 | } | ||
| 435 | |||
| 436 | static const struct regmap_config tps6586x_regmap_config = { | ||
| 437 | .reg_bits = 8, | ||
| 438 | .val_bits = 8, | ||
| 439 | .max_register = TPS6586X_MAX_REGISTER - 1, | ||
| 440 | .volatile_reg = is_volatile_reg, | ||
| 441 | .cache_type = REGCACHE_RBTREE, | ||
| 442 | }; | ||
| 443 | |||
| 559 | static int __devinit tps6586x_i2c_probe(struct i2c_client *client, | 444 | static int __devinit tps6586x_i2c_probe(struct i2c_client *client, |
| 560 | const struct i2c_device_id *id) | 445 | const struct i2c_device_id *id) |
| 561 | { | 446 | { |
| @@ -579,29 +464,39 @@ static int __devinit tps6586x_i2c_probe(struct i2c_client *client, | |||
| 579 | 464 | ||
| 580 | dev_info(&client->dev, "VERSIONCRC is %02x\n", ret); | 465 | dev_info(&client->dev, "VERSIONCRC is %02x\n", ret); |
| 581 | 466 | ||
| 582 | tps6586x = kzalloc(sizeof(struct tps6586x), GFP_KERNEL); | 467 | tps6586x = devm_kzalloc(&client->dev, sizeof(*tps6586x), GFP_KERNEL); |
| 583 | if (tps6586x == NULL) | 468 | if (tps6586x == NULL) { |
| 469 | dev_err(&client->dev, "memory for tps6586x alloc failed\n"); | ||
| 584 | return -ENOMEM; | 470 | return -ENOMEM; |
| 471 | } | ||
| 585 | 472 | ||
| 586 | tps6586x->client = client; | 473 | tps6586x->client = client; |
| 587 | tps6586x->dev = &client->dev; | 474 | tps6586x->dev = &client->dev; |
| 588 | i2c_set_clientdata(client, tps6586x); | 475 | i2c_set_clientdata(client, tps6586x); |
| 589 | 476 | ||
| 590 | mutex_init(&tps6586x->lock); | 477 | tps6586x->regmap = devm_regmap_init_i2c(client, |
| 478 | &tps6586x_regmap_config); | ||
| 479 | if (IS_ERR(tps6586x->regmap)) { | ||
| 480 | ret = PTR_ERR(tps6586x->regmap); | ||
| 481 | dev_err(&client->dev, "regmap init failed: %d\n", ret); | ||
| 482 | return ret; | ||
| 483 | } | ||
| 484 | |||
| 591 | 485 | ||
| 592 | if (client->irq) { | 486 | if (client->irq) { |
| 593 | ret = tps6586x_irq_init(tps6586x, client->irq, | 487 | ret = tps6586x_irq_init(tps6586x, client->irq, |
| 594 | pdata->irq_base); | 488 | pdata->irq_base); |
| 595 | if (ret) { | 489 | if (ret) { |
| 596 | dev_err(&client->dev, "IRQ init failed: %d\n", ret); | 490 | dev_err(&client->dev, "IRQ init failed: %d\n", ret); |
| 597 | goto err_irq_init; | 491 | return ret; |
| 598 | } | 492 | } |
| 599 | } | 493 | } |
| 600 | 494 | ||
| 601 | ret = tps6586x_gpio_init(tps6586x, pdata->gpio_base); | 495 | ret = mfd_add_devices(tps6586x->dev, -1, |
| 602 | if (ret) { | 496 | tps6586x_cell, ARRAY_SIZE(tps6586x_cell), NULL, 0); |
| 603 | dev_err(&client->dev, "GPIO registration failed: %d\n", ret); | 497 | if (ret < 0) { |
| 604 | goto err_gpio_init; | 498 | dev_err(&client->dev, "mfd_add_devices failed: %d\n", ret); |
| 499 | goto err_mfd_add; | ||
| 605 | } | 500 | } |
| 606 | 501 | ||
| 607 | ret = tps6586x_add_subdevs(tps6586x, pdata); | 502 | ret = tps6586x_add_subdevs(tps6586x, pdata); |
| @@ -613,38 +508,21 @@ static int __devinit tps6586x_i2c_probe(struct i2c_client *client, | |||
| 613 | return 0; | 508 | return 0; |
| 614 | 509 | ||
| 615 | err_add_devs: | 510 | err_add_devs: |
| 616 | if (pdata->gpio_base) { | 511 | mfd_remove_devices(tps6586x->dev); |
| 617 | ret = gpiochip_remove(&tps6586x->gpio); | 512 | err_mfd_add: |
| 618 | if (ret) | ||
| 619 | dev_err(&client->dev, "Can't remove gpio chip: %d\n", | ||
| 620 | ret); | ||
| 621 | } | ||
| 622 | err_gpio_init: | ||
| 623 | if (client->irq) | 513 | if (client->irq) |
| 624 | free_irq(client->irq, tps6586x); | 514 | free_irq(client->irq, tps6586x); |
| 625 | err_irq_init: | ||
| 626 | kfree(tps6586x); | ||
| 627 | return ret; | 515 | return ret; |
| 628 | } | 516 | } |
| 629 | 517 | ||
| 630 | static int __devexit tps6586x_i2c_remove(struct i2c_client *client) | 518 | static int __devexit tps6586x_i2c_remove(struct i2c_client *client) |
| 631 | { | 519 | { |
| 632 | struct tps6586x *tps6586x = i2c_get_clientdata(client); | 520 | struct tps6586x *tps6586x = i2c_get_clientdata(client); |
| 633 | struct tps6586x_platform_data *pdata = client->dev.platform_data; | ||
| 634 | int ret; | ||
| 635 | 521 | ||
| 522 | tps6586x_remove_subdevs(tps6586x); | ||
| 523 | mfd_remove_devices(tps6586x->dev); | ||
| 636 | if (client->irq) | 524 | if (client->irq) |
| 637 | free_irq(client->irq, tps6586x); | 525 | free_irq(client->irq, tps6586x); |
| 638 | |||
| 639 | if (pdata->gpio_base) { | ||
| 640 | ret = gpiochip_remove(&tps6586x->gpio); | ||
| 641 | if (ret) | ||
| 642 | dev_err(&client->dev, "Can't remove gpio chip: %d\n", | ||
| 643 | ret); | ||
| 644 | } | ||
| 645 | |||
| 646 | tps6586x_remove_subdevs(tps6586x); | ||
| 647 | kfree(tps6586x); | ||
| 648 | return 0; | 526 | return 0; |
| 649 | } | 527 | } |
| 650 | 528 | ||
diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c index be9e07b77325..1c563792c777 100644 --- a/drivers/mfd/tps65910.c +++ b/drivers/mfd/tps65910.c | |||
| @@ -68,6 +68,24 @@ static const struct regmap_config tps65910_regmap_config = { | |||
| 68 | .cache_type = REGCACHE_RBTREE, | 68 | .cache_type = REGCACHE_RBTREE, |
| 69 | }; | 69 | }; |
| 70 | 70 | ||
| 71 | static int __devinit tps65910_ck32k_init(struct tps65910 *tps65910, | ||
| 72 | struct tps65910_board *pmic_pdata) | ||
| 73 | { | ||
| 74 | int ret; | ||
| 75 | |||
| 76 | if (!pmic_pdata->en_ck32k_xtal) | ||
| 77 | return 0; | ||
| 78 | |||
| 79 | ret = tps65910_reg_clear_bits(tps65910, TPS65910_DEVCTRL, | ||
| 80 | DEVCTRL_CK32K_CTRL_MASK); | ||
| 81 | if (ret < 0) { | ||
| 82 | dev_err(tps65910->dev, "clear ck32k_ctrl failed: %d\n", ret); | ||
| 83 | return ret; | ||
| 84 | } | ||
| 85 | |||
| 86 | return 0; | ||
| 87 | } | ||
| 88 | |||
| 71 | static int __devinit tps65910_sleepinit(struct tps65910 *tps65910, | 89 | static int __devinit tps65910_sleepinit(struct tps65910 *tps65910, |
| 72 | struct tps65910_board *pmic_pdata) | 90 | struct tps65910_board *pmic_pdata) |
| 73 | { | 91 | { |
| @@ -175,6 +193,9 @@ static struct tps65910_board *tps65910_parse_dt(struct i2c_client *client, | |||
| 175 | else if (*chip_id == TPS65911) | 193 | else if (*chip_id == TPS65911) |
| 176 | dev_warn(&client->dev, "VMBCH2-Threshold not specified"); | 194 | dev_warn(&client->dev, "VMBCH2-Threshold not specified"); |
| 177 | 195 | ||
| 196 | prop = of_property_read_bool(np, "ti,en-ck32k-xtal"); | ||
| 197 | board_info->en_ck32k_xtal = prop; | ||
| 198 | |||
| 178 | board_info->irq = client->irq; | 199 | board_info->irq = client->irq; |
| 179 | board_info->irq_base = -1; | 200 | board_info->irq_base = -1; |
| 180 | 201 | ||
| @@ -243,7 +264,7 @@ static __devinit int tps65910_i2c_probe(struct i2c_client *i2c, | |||
| 243 | init_data->irq_base = pmic_plat_data->irq_base; | 264 | init_data->irq_base = pmic_plat_data->irq_base; |
| 244 | 265 | ||
| 245 | tps65910_irq_init(tps65910, init_data->irq, init_data); | 266 | tps65910_irq_init(tps65910, init_data->irq, init_data); |
| 246 | 267 | tps65910_ck32k_init(tps65910, pmic_plat_data); | |
| 247 | tps65910_sleepinit(tps65910, pmic_plat_data); | 268 | tps65910_sleepinit(tps65910, pmic_plat_data); |
| 248 | 269 | ||
| 249 | return ret; | 270 | return ret; |
diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c index 6fc90befa79e..b012efd29e01 100644 --- a/drivers/mfd/twl-core.c +++ b/drivers/mfd/twl-core.c | |||
| @@ -568,7 +568,6 @@ add_numbered_child(unsigned chip, const char *name, int num, | |||
| 568 | goto err; | 568 | goto err; |
| 569 | } | 569 | } |
| 570 | 570 | ||
| 571 | device_init_wakeup(&pdev->dev, can_wakeup); | ||
| 572 | pdev->dev.parent = &twl->client->dev; | 571 | pdev->dev.parent = &twl->client->dev; |
| 573 | 572 | ||
| 574 | if (pdata) { | 573 | if (pdata) { |
| @@ -593,6 +592,8 @@ add_numbered_child(unsigned chip, const char *name, int num, | |||
| 593 | } | 592 | } |
| 594 | 593 | ||
| 595 | status = platform_device_add(pdev); | 594 | status = platform_device_add(pdev); |
| 595 | if (status == 0) | ||
| 596 | device_init_wakeup(&pdev->dev, can_wakeup); | ||
| 596 | 597 | ||
| 597 | err: | 598 | err: |
| 598 | if (status < 0) { | 599 | if (status < 0) { |
diff --git a/drivers/mfd/twl6040-core.c b/drivers/mfd/twl6040-core.c index 4ded9e7aa246..b0fad0ffca56 100644 --- a/drivers/mfd/twl6040-core.c +++ b/drivers/mfd/twl6040-core.c | |||
| @@ -64,19 +64,15 @@ int twl6040_reg_read(struct twl6040 *twl6040, unsigned int reg) | |||
| 64 | int ret; | 64 | int ret; |
| 65 | unsigned int val; | 65 | unsigned int val; |
| 66 | 66 | ||
| 67 | mutex_lock(&twl6040->io_mutex); | ||
| 68 | /* Vibra control registers from cache */ | 67 | /* Vibra control registers from cache */ |
| 69 | if (unlikely(reg == TWL6040_REG_VIBCTLL || | 68 | if (unlikely(reg == TWL6040_REG_VIBCTLL || |
| 70 | reg == TWL6040_REG_VIBCTLR)) { | 69 | reg == TWL6040_REG_VIBCTLR)) { |
| 71 | val = twl6040->vibra_ctrl_cache[VIBRACTRL_MEMBER(reg)]; | 70 | val = twl6040->vibra_ctrl_cache[VIBRACTRL_MEMBER(reg)]; |
| 72 | } else { | 71 | } else { |
| 73 | ret = regmap_read(twl6040->regmap, reg, &val); | 72 | ret = regmap_read(twl6040->regmap, reg, &val); |
| 74 | if (ret < 0) { | 73 | if (ret < 0) |
| 75 | mutex_unlock(&twl6040->io_mutex); | ||
| 76 | return ret; | 74 | return ret; |
| 77 | } | ||
| 78 | } | 75 | } |
| 79 | mutex_unlock(&twl6040->io_mutex); | ||
| 80 | 76 | ||
| 81 | return val; | 77 | return val; |
| 82 | } | 78 | } |
| @@ -86,12 +82,10 @@ int twl6040_reg_write(struct twl6040 *twl6040, unsigned int reg, u8 val) | |||
| 86 | { | 82 | { |
| 87 | int ret; | 83 | int ret; |
| 88 | 84 | ||
| 89 | mutex_lock(&twl6040->io_mutex); | ||
| 90 | ret = regmap_write(twl6040->regmap, reg, val); | 85 | ret = regmap_write(twl6040->regmap, reg, val); |
| 91 | /* Cache the vibra control registers */ | 86 | /* Cache the vibra control registers */ |
| 92 | if (reg == TWL6040_REG_VIBCTLL || reg == TWL6040_REG_VIBCTLR) | 87 | if (reg == TWL6040_REG_VIBCTLL || reg == TWL6040_REG_VIBCTLR) |
| 93 | twl6040->vibra_ctrl_cache[VIBRACTRL_MEMBER(reg)] = val; | 88 | twl6040->vibra_ctrl_cache[VIBRACTRL_MEMBER(reg)] = val; |
| 94 | mutex_unlock(&twl6040->io_mutex); | ||
| 95 | 89 | ||
| 96 | return ret; | 90 | return ret; |
| 97 | } | 91 | } |
| @@ -99,23 +93,13 @@ EXPORT_SYMBOL(twl6040_reg_write); | |||
| 99 | 93 | ||
| 100 | int twl6040_set_bits(struct twl6040 *twl6040, unsigned int reg, u8 mask) | 94 | int twl6040_set_bits(struct twl6040 *twl6040, unsigned int reg, u8 mask) |
| 101 | { | 95 | { |
| 102 | int ret; | 96 | return regmap_update_bits(twl6040->regmap, reg, mask, mask); |
| 103 | |||
| 104 | mutex_lock(&twl6040->io_mutex); | ||
| 105 | ret = regmap_update_bits(twl6040->regmap, reg, mask, mask); | ||
| 106 | mutex_unlock(&twl6040->io_mutex); | ||
| 107 | return ret; | ||
| 108 | } | 97 | } |
| 109 | EXPORT_SYMBOL(twl6040_set_bits); | 98 | EXPORT_SYMBOL(twl6040_set_bits); |
| 110 | 99 | ||
| 111 | int twl6040_clear_bits(struct twl6040 *twl6040, unsigned int reg, u8 mask) | 100 | int twl6040_clear_bits(struct twl6040 *twl6040, unsigned int reg, u8 mask) |
| 112 | { | 101 | { |
| 113 | int ret; | 102 | return regmap_update_bits(twl6040->regmap, reg, mask, 0); |
| 114 | |||
| 115 | mutex_lock(&twl6040->io_mutex); | ||
| 116 | ret = regmap_update_bits(twl6040->regmap, reg, mask, 0); | ||
| 117 | mutex_unlock(&twl6040->io_mutex); | ||
| 118 | return ret; | ||
| 119 | } | 103 | } |
| 120 | EXPORT_SYMBOL(twl6040_clear_bits); | 104 | EXPORT_SYMBOL(twl6040_clear_bits); |
| 121 | 105 | ||
| @@ -573,7 +557,6 @@ static int __devinit twl6040_probe(struct i2c_client *client, | |||
| 573 | twl6040->irq = client->irq; | 557 | twl6040->irq = client->irq; |
| 574 | 558 | ||
| 575 | mutex_init(&twl6040->mutex); | 559 | mutex_init(&twl6040->mutex); |
| 576 | mutex_init(&twl6040->io_mutex); | ||
| 577 | init_completion(&twl6040->ready); | 560 | init_completion(&twl6040->ready); |
| 578 | 561 | ||
| 579 | twl6040->rev = twl6040_reg_read(twl6040, TWL6040_REG_ASICREV); | 562 | twl6040->rev = twl6040_reg_read(twl6040, TWL6040_REG_ASICREV); |
| @@ -696,6 +679,7 @@ static int __devexit twl6040_remove(struct i2c_client *client) | |||
| 696 | 679 | ||
| 697 | static const struct i2c_device_id twl6040_i2c_id[] = { | 680 | static const struct i2c_device_id twl6040_i2c_id[] = { |
| 698 | { "twl6040", 0, }, | 681 | { "twl6040", 0, }, |
| 682 | { "twl6041", 0, }, | ||
| 699 | { }, | 683 | { }, |
| 700 | }; | 684 | }; |
| 701 | MODULE_DEVICE_TABLE(i2c, twl6040_i2c_id); | 685 | MODULE_DEVICE_TABLE(i2c, twl6040_i2c_id); |
diff --git a/drivers/mfd/wm5102-tables.c b/drivers/mfd/wm5102-tables.c new file mode 100644 index 000000000000..01b9255ed631 --- /dev/null +++ b/drivers/mfd/wm5102-tables.c | |||
| @@ -0,0 +1,2399 @@ | |||
| 1 | /* | ||
| 2 | * wm5102-tables.c -- WM5102 data tables | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics plc | ||
| 5 | * | ||
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/module.h> | ||
| 14 | |||
| 15 | #include <linux/mfd/arizona/core.h> | ||
| 16 | #include <linux/mfd/arizona/registers.h> | ||
| 17 | |||
| 18 | #include "arizona.h" | ||
| 19 | |||
| 20 | #define WM5102_NUM_AOD_ISR 2 | ||
| 21 | #define WM5102_NUM_ISR 5 | ||
| 22 | |||
| 23 | static const struct reg_default wm5102_reva_patch[] = { | ||
| 24 | { 0x80, 0x0003 }, | ||
| 25 | { 0x221, 0x0090 }, | ||
| 26 | { 0x211, 0x0014 }, | ||
| 27 | { 0x212, 0x0000 }, | ||
| 28 | { 0x214, 0x000C }, | ||
| 29 | { 0x171, 0x0002 }, | ||
| 30 | { 0x171, 0x0000 }, | ||
| 31 | { 0x461, 0x8000 }, | ||
| 32 | { 0x463, 0x50F0 }, | ||
| 33 | { 0x465, 0x4820 }, | ||
| 34 | { 0x467, 0x4040 }, | ||
| 35 | { 0x469, 0x3940 }, | ||
| 36 | { 0x46B, 0x3310 }, | ||
| 37 | { 0x46D, 0x2D80 }, | ||
| 38 | { 0x46F, 0x2890 }, | ||
| 39 | { 0x471, 0x1990 }, | ||
| 40 | { 0x473, 0x1450 }, | ||
| 41 | { 0x475, 0x1020 }, | ||
| 42 | { 0x477, 0x0CD0 }, | ||
| 43 | { 0x479, 0x0A30 }, | ||
| 44 | { 0x47B, 0x0810 }, | ||
| 45 | { 0x47D, 0x0510 }, | ||
| 46 | { 0x500, 0x000D }, | ||
| 47 | { 0x507, 0x1820 }, | ||
| 48 | { 0x508, 0x1820 }, | ||
| 49 | { 0x540, 0x000D }, | ||
| 50 | { 0x547, 0x1820 }, | ||
| 51 | { 0x548, 0x1820 }, | ||
| 52 | { 0x580, 0x000D }, | ||
| 53 | { 0x587, 0x1820 }, | ||
| 54 | { 0x588, 0x1820 }, | ||
| 55 | { 0x101, 0x8140 }, | ||
| 56 | { 0x3000, 0x2225 }, | ||
| 57 | { 0x3001, 0x3a03 }, | ||
| 58 | { 0x3002, 0x0225 }, | ||
| 59 | { 0x3003, 0x0801 }, | ||
| 60 | { 0x3004, 0x6249 }, | ||
| 61 | { 0x3005, 0x0c04 }, | ||
| 62 | { 0x3006, 0x0225 }, | ||
| 63 | { 0x3007, 0x5901 }, | ||
| 64 | { 0x3008, 0xe249 }, | ||
| 65 | { 0x3009, 0x030d }, | ||
| 66 | { 0x300a, 0x0249 }, | ||
| 67 | { 0x300b, 0x2c01 }, | ||
| 68 | { 0x300c, 0xe249 }, | ||
| 69 | { 0x300d, 0x4342 }, | ||
| 70 | { 0x300e, 0xe249 }, | ||
| 71 | { 0x300f, 0x73c0 }, | ||
| 72 | { 0x3010, 0x4249 }, | ||
| 73 | { 0x3011, 0x0c00 }, | ||
| 74 | { 0x3012, 0x0225 }, | ||
| 75 | { 0x3013, 0x1f01 }, | ||
| 76 | { 0x3014, 0x0225 }, | ||
| 77 | { 0x3015, 0x1e01 }, | ||
| 78 | { 0x3016, 0x0225 }, | ||
| 79 | { 0x3017, 0xfa00 }, | ||
| 80 | { 0x3018, 0x0000 }, | ||
| 81 | { 0x3019, 0xf000 }, | ||
| 82 | { 0x301a, 0x0000 }, | ||
| 83 | { 0x301b, 0xf000 }, | ||
| 84 | { 0x301c, 0x0000 }, | ||
| 85 | { 0x301d, 0xf000 }, | ||
| 86 | { 0x301e, 0x0000 }, | ||
| 87 | { 0x301f, 0xf000 }, | ||
| 88 | { 0x3020, 0x0000 }, | ||
| 89 | { 0x3021, 0xf000 }, | ||
| 90 | { 0x3022, 0x0000 }, | ||
| 91 | { 0x3023, 0xf000 }, | ||
| 92 | { 0x3024, 0x0000 }, | ||
| 93 | { 0x3025, 0xf000 }, | ||
| 94 | { 0x3026, 0x0000 }, | ||
| 95 | { 0x3027, 0xf000 }, | ||
| 96 | { 0x3028, 0x0000 }, | ||
| 97 | { 0x3029, 0xf000 }, | ||
| 98 | { 0x302a, 0x0000 }, | ||
| 99 | { 0x302b, 0xf000 }, | ||
| 100 | { 0x302c, 0x0000 }, | ||
| 101 | { 0x302d, 0xf000 }, | ||
| 102 | { 0x302e, 0x0000 }, | ||
| 103 | { 0x302f, 0xf000 }, | ||
| 104 | { 0x3030, 0x0225 }, | ||
| 105 | { 0x3031, 0x1a01 }, | ||
| 106 | { 0x3032, 0x0225 }, | ||
| 107 | { 0x3033, 0x1e00 }, | ||
| 108 | { 0x3034, 0x0225 }, | ||
| 109 | { 0x3035, 0x1f00 }, | ||
| 110 | { 0x3036, 0x6225 }, | ||
| 111 | { 0x3037, 0xf800 }, | ||
| 112 | { 0x3038, 0x0000 }, | ||
| 113 | { 0x3039, 0xf000 }, | ||
| 114 | { 0x303a, 0x0000 }, | ||
| 115 | { 0x303b, 0xf000 }, | ||
| 116 | { 0x303c, 0x0000 }, | ||
| 117 | { 0x303d, 0xf000 }, | ||
| 118 | { 0x303e, 0x0000 }, | ||
| 119 | { 0x303f, 0xf000 }, | ||
| 120 | { 0x3040, 0x2226 }, | ||
| 121 | { 0x3041, 0x3a03 }, | ||
| 122 | { 0x3042, 0x0226 }, | ||
| 123 | { 0x3043, 0x0801 }, | ||
| 124 | { 0x3044, 0x6249 }, | ||
| 125 | { 0x3045, 0x0c06 }, | ||
| 126 | { 0x3046, 0x0226 }, | ||
| 127 | { 0x3047, 0x5901 }, | ||
| 128 | { 0x3048, 0xe249 }, | ||
| 129 | { 0x3049, 0x030d }, | ||
| 130 | { 0x304a, 0x0249 }, | ||
| 131 | { 0x304b, 0x2c01 }, | ||
| 132 | { 0x304c, 0xe249 }, | ||
| 133 | { 0x304d, 0x4342 }, | ||
| 134 | { 0x304e, 0xe249 }, | ||
| 135 | { 0x304f, 0x73c0 }, | ||
| 136 | { 0x3050, 0x4249 }, | ||
| 137 | { 0x3051, 0x0c00 }, | ||
| 138 | { 0x3052, 0x0226 }, | ||
| 139 | { 0x3053, 0x1f01 }, | ||
| 140 | { 0x3054, 0x0226 }, | ||
| 141 | { 0x3055, 0x1e01 }, | ||
| 142 | { 0x3056, 0x0226 }, | ||
| 143 | { 0x3057, 0xfa00 }, | ||
| 144 | { 0x3058, 0x0000 }, | ||
| 145 | { 0x3059, 0xf000 }, | ||
| 146 | { 0x305a, 0x0000 }, | ||
| 147 | { 0x305b, 0xf000 }, | ||
| 148 | { 0x305c, 0x0000 }, | ||
| 149 | { 0x305d, 0xf000 }, | ||
| 150 | { 0x305e, 0x0000 }, | ||
| 151 | { 0x305f, 0xf000 }, | ||
| 152 | { 0x3060, 0x0000 }, | ||
| 153 | { 0x3061, 0xf000 }, | ||
| 154 | { 0x3062, 0x0000 }, | ||
| 155 | { 0x3063, 0xf000 }, | ||
| 156 | { 0x3064, 0x0000 }, | ||
| 157 | { 0x3065, 0xf000 }, | ||
| 158 | { 0x3066, 0x0000 }, | ||
| 159 | { 0x3067, 0xf000 }, | ||
| 160 | { 0x3068, 0x0000 }, | ||
| 161 | { 0x3069, 0xf000 }, | ||
| 162 | { 0x306a, 0x0000 }, | ||
| 163 | { 0x306b, 0xf000 }, | ||
| 164 | { 0x306c, 0x0000 }, | ||
| 165 | { 0x306d, 0xf000 }, | ||
| 166 | { 0x306e, 0x0000 }, | ||
| 167 | { 0x306f, 0xf000 }, | ||
| 168 | { 0x3070, 0x0226 }, | ||
| 169 | { 0x3071, 0x1a01 }, | ||
| 170 | { 0x3072, 0x0226 }, | ||
| 171 | { 0x3073, 0x1e00 }, | ||
| 172 | { 0x3074, 0x0226 }, | ||
| 173 | { 0x3075, 0x1f00 }, | ||
| 174 | { 0x3076, 0x6226 }, | ||
| 175 | { 0x3077, 0xf800 }, | ||
| 176 | { 0x3078, 0x0000 }, | ||
| 177 | { 0x3079, 0xf000 }, | ||
| 178 | { 0x307a, 0x0000 }, | ||
| 179 | { 0x307b, 0xf000 }, | ||
| 180 | { 0x307c, 0x0000 }, | ||
| 181 | { 0x307d, 0xf000 }, | ||
| 182 | { 0x307e, 0x0000 }, | ||
| 183 | { 0x307f, 0xf000 }, | ||
| 184 | { 0x3080, 0x2227 }, | ||
| 185 | { 0x3081, 0x3a03 }, | ||
| 186 | { 0x3082, 0x0227 }, | ||
| 187 | { 0x3083, 0x0801 }, | ||
| 188 | { 0x3084, 0x6255 }, | ||
| 189 | { 0x3085, 0x0c04 }, | ||
| 190 | { 0x3086, 0x0227 }, | ||
| 191 | { 0x3087, 0x5901 }, | ||
| 192 | { 0x3088, 0xe255 }, | ||
| 193 | { 0x3089, 0x030d }, | ||
| 194 | { 0x308a, 0x0255 }, | ||
| 195 | { 0x308b, 0x2c01 }, | ||
| 196 | { 0x308c, 0xe255 }, | ||
| 197 | { 0x308d, 0x4342 }, | ||
| 198 | { 0x308e, 0xe255 }, | ||
| 199 | { 0x308f, 0x73c0 }, | ||
| 200 | { 0x3090, 0x4255 }, | ||
| 201 | { 0x3091, 0x0c00 }, | ||
| 202 | { 0x3092, 0x0227 }, | ||
| 203 | { 0x3093, 0x1f01 }, | ||
| 204 | { 0x3094, 0x0227 }, | ||
| 205 | { 0x3095, 0x1e01 }, | ||
| 206 | { 0x3096, 0x0227 }, | ||
| 207 | { 0x3097, 0xfa00 }, | ||
| 208 | { 0x3098, 0x0000 }, | ||
| 209 | { 0x3099, 0xf000 }, | ||
| 210 | { 0x309a, 0x0000 }, | ||
| 211 | { 0x309b, 0xf000 }, | ||
| 212 | { 0x309c, 0x0000 }, | ||
| 213 | { 0x309d, 0xf000 }, | ||
| 214 | { 0x309e, 0x0000 }, | ||
| 215 | { 0x309f, 0xf000 }, | ||
| 216 | { 0x30a0, 0x0000 }, | ||
| 217 | { 0x30a1, 0xf000 }, | ||
| 218 | { 0x30a2, 0x0000 }, | ||
| 219 | { 0x30a3, 0xf000 }, | ||
| 220 | { 0x30a4, 0x0000 }, | ||
| 221 | { 0x30a5, 0xf000 }, | ||
| 222 | { 0x30a6, 0x0000 }, | ||
| 223 | { 0x30a7, 0xf000 }, | ||
| 224 | { 0x30a8, 0x0000 }, | ||
| 225 | { 0x30a9, 0xf000 }, | ||
| 226 | { 0x30aa, 0x0000 }, | ||
| 227 | { 0x30ab, 0xf000 }, | ||
| 228 | { 0x30ac, 0x0000 }, | ||
| 229 | { 0x30ad, 0xf000 }, | ||
| 230 | { 0x30ae, 0x0000 }, | ||
| 231 | { 0x30af, 0xf000 }, | ||
| 232 | { 0x30b0, 0x0227 }, | ||
| 233 | { 0x30b1, 0x1a01 }, | ||
| 234 | { 0x30b2, 0x0227 }, | ||
| 235 | { 0x30b3, 0x1e00 }, | ||
| 236 | { 0x30b4, 0x0227 }, | ||
| 237 | { 0x30b5, 0x1f00 }, | ||
| 238 | { 0x30b6, 0x6227 }, | ||
| 239 | { 0x30b7, 0xf800 }, | ||
| 240 | { 0x30b8, 0x0000 }, | ||
| 241 | { 0x30b9, 0xf000 }, | ||
| 242 | { 0x30ba, 0x0000 }, | ||
| 243 | { 0x30bb, 0xf000 }, | ||
| 244 | { 0x30bc, 0x0000 }, | ||
| 245 | { 0x30bd, 0xf000 }, | ||
| 246 | { 0x30be, 0x0000 }, | ||
| 247 | { 0x30bf, 0xf000 }, | ||
| 248 | { 0x30c0, 0x2228 }, | ||
| 249 | { 0x30c1, 0x3a03 }, | ||
| 250 | { 0x30c2, 0x0228 }, | ||
| 251 | { 0x30c3, 0x0801 }, | ||
| 252 | { 0x30c4, 0x6255 }, | ||
| 253 | { 0x30c5, 0x0c06 }, | ||
| 254 | { 0x30c6, 0x0228 }, | ||
| 255 | { 0x30c7, 0x5901 }, | ||
| 256 | { 0x30c8, 0xe255 }, | ||
| 257 | { 0x30c9, 0x030d }, | ||
| 258 | { 0x30ca, 0x0255 }, | ||
| 259 | { 0x30cb, 0x2c01 }, | ||
| 260 | { 0x30cc, 0xe255 }, | ||
| 261 | { 0x30cd, 0x4342 }, | ||
| 262 | { 0x30ce, 0xe255 }, | ||
| 263 | { 0x30cf, 0x73c0 }, | ||
| 264 | { 0x30d0, 0x4255 }, | ||
| 265 | { 0x30d1, 0x0c00 }, | ||
| 266 | { 0x30d2, 0x0228 }, | ||
| 267 | { 0x30d3, 0x1f01 }, | ||
| 268 | { 0x30d4, 0x0228 }, | ||
| 269 | { 0x30d5, 0x1e01 }, | ||
| 270 | { 0x30d6, 0x0228 }, | ||
| 271 | { 0x30d7, 0xfa00 }, | ||
| 272 | { 0x30d8, 0x0000 }, | ||
| 273 | { 0x30d9, 0xf000 }, | ||
| 274 | { 0x30da, 0x0000 }, | ||
| 275 | { 0x30db, 0xf000 }, | ||
| 276 | { 0x30dc, 0x0000 }, | ||
| 277 | { 0x30dd, 0xf000 }, | ||
| 278 | { 0x30de, 0x0000 }, | ||
| 279 | { 0x30df, 0xf000 }, | ||
| 280 | { 0x30e0, 0x0000 }, | ||
| 281 | { 0x30e1, 0xf000 }, | ||
| 282 | { 0x30e2, 0x0000 }, | ||
| 283 | { 0x30e3, 0xf000 }, | ||
| 284 | { 0x30e4, 0x0000 }, | ||
| 285 | { 0x30e5, 0xf000 }, | ||
| 286 | { 0x30e6, 0x0000 }, | ||
| 287 | { 0x30e7, 0xf000 }, | ||
| 288 | { 0x30e8, 0x0000 }, | ||
| 289 | { 0x30e9, 0xf000 }, | ||
| 290 | { 0x30ea, 0x0000 }, | ||
| 291 | { 0x30eb, 0xf000 }, | ||
| 292 | { 0x30ec, 0x0000 }, | ||
| 293 | { 0x30ed, 0xf000 }, | ||
| 294 | { 0x30ee, 0x0000 }, | ||
| 295 | { 0x30ef, 0xf000 }, | ||
| 296 | { 0x30f0, 0x0228 }, | ||
| 297 | { 0x30f1, 0x1a01 }, | ||
| 298 | { 0x30f2, 0x0228 }, | ||
| 299 | { 0x30f3, 0x1e00 }, | ||
| 300 | { 0x30f4, 0x0228 }, | ||
| 301 | { 0x30f5, 0x1f00 }, | ||
| 302 | { 0x30f6, 0x6228 }, | ||
| 303 | { 0x30f7, 0xf800 }, | ||
| 304 | { 0x30f8, 0x0000 }, | ||
| 305 | { 0x30f9, 0xf000 }, | ||
| 306 | { 0x30fa, 0x0000 }, | ||
| 307 | { 0x30fb, 0xf000 }, | ||
| 308 | { 0x30fc, 0x0000 }, | ||
| 309 | { 0x30fd, 0xf000 }, | ||
| 310 | { 0x30fe, 0x0000 }, | ||
| 311 | { 0x30ff, 0xf000 }, | ||
| 312 | { 0x3100, 0x222b }, | ||
| 313 | { 0x3101, 0x3a03 }, | ||
| 314 | { 0x3102, 0x222b }, | ||
| 315 | { 0x3103, 0x5803 }, | ||
| 316 | { 0x3104, 0xe26f }, | ||
| 317 | { 0x3105, 0x030d }, | ||
| 318 | { 0x3106, 0x626f }, | ||
| 319 | { 0x3107, 0x2c01 }, | ||
| 320 | { 0x3108, 0xe26f }, | ||
| 321 | { 0x3109, 0x4342 }, | ||
| 322 | { 0x310a, 0xe26f }, | ||
| 323 | { 0x310b, 0x73c0 }, | ||
| 324 | { 0x310c, 0x026f }, | ||
| 325 | { 0x310d, 0x0c00 }, | ||
| 326 | { 0x310e, 0x022b }, | ||
| 327 | { 0x310f, 0x1f01 }, | ||
| 328 | { 0x3110, 0x022b }, | ||
| 329 | { 0x3111, 0x1e01 }, | ||
| 330 | { 0x3112, 0x022b }, | ||
| 331 | { 0x3113, 0xfa00 }, | ||
| 332 | { 0x3114, 0x0000 }, | ||
| 333 | { 0x3115, 0xf000 }, | ||
| 334 | { 0x3116, 0x0000 }, | ||
| 335 | { 0x3117, 0xf000 }, | ||
| 336 | { 0x3118, 0x0000 }, | ||
| 337 | { 0x3119, 0xf000 }, | ||
| 338 | { 0x311a, 0x0000 }, | ||
| 339 | { 0x311b, 0xf000 }, | ||
| 340 | { 0x311c, 0x0000 }, | ||
| 341 | { 0x311d, 0xf000 }, | ||
| 342 | { 0x311e, 0x0000 }, | ||
| 343 | { 0x311f, 0xf000 }, | ||
| 344 | { 0x3120, 0x022b }, | ||
| 345 | { 0x3121, 0x0a01 }, | ||
| 346 | { 0x3122, 0x022b }, | ||
| 347 | { 0x3123, 0x1e00 }, | ||
| 348 | { 0x3124, 0x022b }, | ||
| 349 | { 0x3125, 0x1f00 }, | ||
| 350 | { 0x3126, 0x622b }, | ||
| 351 | { 0x3127, 0xf800 }, | ||
| 352 | { 0x3128, 0x0000 }, | ||
| 353 | { 0x3129, 0xf000 }, | ||
| 354 | { 0x312a, 0x0000 }, | ||
| 355 | { 0x312b, 0xf000 }, | ||
| 356 | { 0x312c, 0x0000 }, | ||
| 357 | { 0x312d, 0xf000 }, | ||
| 358 | { 0x312e, 0x0000 }, | ||
| 359 | { 0x312f, 0xf000 }, | ||
| 360 | { 0x3130, 0x0000 }, | ||
| 361 | { 0x3131, 0xf000 }, | ||
| 362 | { 0x3132, 0x0000 }, | ||
| 363 | { 0x3133, 0xf000 }, | ||
| 364 | { 0x3134, 0x0000 }, | ||
| 365 | { 0x3135, 0xf000 }, | ||
| 366 | { 0x3136, 0x0000 }, | ||
| 367 | { 0x3137, 0xf000 }, | ||
| 368 | { 0x3138, 0x0000 }, | ||
| 369 | { 0x3139, 0xf000 }, | ||
| 370 | { 0x313a, 0x0000 }, | ||
| 371 | { 0x313b, 0xf000 }, | ||
| 372 | { 0x313c, 0x0000 }, | ||
| 373 | { 0x313d, 0xf000 }, | ||
| 374 | { 0x313e, 0x0000 }, | ||
| 375 | { 0x313f, 0xf000 }, | ||
| 376 | { 0x3140, 0x0000 }, | ||
| 377 | { 0x3141, 0xf000 }, | ||
| 378 | { 0x3142, 0x0000 }, | ||
| 379 | { 0x3143, 0xf000 }, | ||
| 380 | { 0x3144, 0x0000 }, | ||
| 381 | { 0x3145, 0xf000 }, | ||
| 382 | { 0x3146, 0x0000 }, | ||
| 383 | { 0x3147, 0xf000 }, | ||
| 384 | { 0x3148, 0x0000 }, | ||
| 385 | { 0x3149, 0xf000 }, | ||
| 386 | { 0x314a, 0x0000 }, | ||
| 387 | { 0x314b, 0xf000 }, | ||
| 388 | { 0x314c, 0x0000 }, | ||
| 389 | { 0x314d, 0xf000 }, | ||
| 390 | { 0x314e, 0x0000 }, | ||
| 391 | { 0x314f, 0xf000 }, | ||
| 392 | { 0x3150, 0x0000 }, | ||
| 393 | { 0x3151, 0xf000 }, | ||
| 394 | { 0x3152, 0x0000 }, | ||
| 395 | { 0x3153, 0xf000 }, | ||
| 396 | { 0x3154, 0x0000 }, | ||
| 397 | { 0x3155, 0xf000 }, | ||
| 398 | { 0x3156, 0x0000 }, | ||
| 399 | { 0x3157, 0xf000 }, | ||
| 400 | { 0x3158, 0x0000 }, | ||
| 401 | { 0x3159, 0xf000 }, | ||
| 402 | { 0x315a, 0x0000 }, | ||
| 403 | { 0x315b, 0xf000 }, | ||
| 404 | { 0x315c, 0x0000 }, | ||
| 405 | { 0x315d, 0xf000 }, | ||
| 406 | { 0x315e, 0x0000 }, | ||
| 407 | { 0x315f, 0xf000 }, | ||
| 408 | { 0x3160, 0x0000 }, | ||
| 409 | { 0x3161, 0xf000 }, | ||
| 410 | { 0x3162, 0x0000 }, | ||
| 411 | { 0x3163, 0xf000 }, | ||
| 412 | { 0x3164, 0x0000 }, | ||
| 413 | { 0x3165, 0xf000 }, | ||
| 414 | { 0x3166, 0x0000 }, | ||
| 415 | { 0x3167, 0xf000 }, | ||
| 416 | { 0x3168, 0x0000 }, | ||
| 417 | { 0x3169, 0xf000 }, | ||
| 418 | { 0x316a, 0x0000 }, | ||
| 419 | { 0x316b, 0xf000 }, | ||
| 420 | { 0x316c, 0x0000 }, | ||
| 421 | { 0x316d, 0xf000 }, | ||
| 422 | { 0x316e, 0x0000 }, | ||
| 423 | { 0x316f, 0xf000 }, | ||
| 424 | { 0x3170, 0x0000 }, | ||
| 425 | { 0x3171, 0xf000 }, | ||
| 426 | { 0x3172, 0x0000 }, | ||
| 427 | { 0x3173, 0xf000 }, | ||
| 428 | { 0x3174, 0x0000 }, | ||
| 429 | { 0x3175, 0xf000 }, | ||
| 430 | { 0x3176, 0x0000 }, | ||
| 431 | { 0x3177, 0xf000 }, | ||
| 432 | { 0x3178, 0x0000 }, | ||
| 433 | { 0x3179, 0xf000 }, | ||
| 434 | { 0x317a, 0x0000 }, | ||
| 435 | { 0x317b, 0xf000 }, | ||
| 436 | { 0x317c, 0x0000 }, | ||
| 437 | { 0x317d, 0xf000 }, | ||
| 438 | { 0x317e, 0x0000 }, | ||
| 439 | { 0x317f, 0xf000 }, | ||
| 440 | { 0x3180, 0x2001 }, | ||
| 441 | { 0x3181, 0xf101 }, | ||
| 442 | { 0x3182, 0x0000 }, | ||
| 443 | { 0x3183, 0xf000 }, | ||
| 444 | { 0x3184, 0x0000 }, | ||
| 445 | { 0x3185, 0xf000 }, | ||
| 446 | { 0x3186, 0x0000 }, | ||
| 447 | { 0x3187, 0xf000 }, | ||
| 448 | { 0x3188, 0x0000 }, | ||
| 449 | { 0x3189, 0xf000 }, | ||
| 450 | { 0x318a, 0x0000 }, | ||
| 451 | { 0x318b, 0xf000 }, | ||
| 452 | { 0x318c, 0x0000 }, | ||
| 453 | { 0x318d, 0xf000 }, | ||
| 454 | { 0x318e, 0x0000 }, | ||
| 455 | { 0x318f, 0xf000 }, | ||
| 456 | { 0x3190, 0x0000 }, | ||
| 457 | { 0x3191, 0xf000 }, | ||
| 458 | { 0x3192, 0x0000 }, | ||
| 459 | { 0x3193, 0xf000 }, | ||
| 460 | { 0x3194, 0x0000 }, | ||
| 461 | { 0x3195, 0xf000 }, | ||
| 462 | { 0x3196, 0x0000 }, | ||
| 463 | { 0x3197, 0xf000 }, | ||
| 464 | { 0x3198, 0x0000 }, | ||
| 465 | { 0x3199, 0xf000 }, | ||
| 466 | { 0x319a, 0x0000 }, | ||
| 467 | { 0x319b, 0xf000 }, | ||
| 468 | { 0x319c, 0x0000 }, | ||
| 469 | { 0x319d, 0xf000 }, | ||
| 470 | { 0x319e, 0x0000 }, | ||
| 471 | { 0x319f, 0xf000 }, | ||
| 472 | { 0x31a0, 0x0000 }, | ||
| 473 | { 0x31a1, 0xf000 }, | ||
| 474 | { 0x31a2, 0x0000 }, | ||
| 475 | { 0x31a3, 0xf000 }, | ||
| 476 | { 0x31a4, 0x0000 }, | ||
| 477 | { 0x31a5, 0xf000 }, | ||
| 478 | { 0x31a6, 0x0000 }, | ||
| 479 | { 0x31a7, 0xf000 }, | ||
| 480 | { 0x31a8, 0x0000 }, | ||
| 481 | { 0x31a9, 0xf000 }, | ||
| 482 | { 0x31aa, 0x0000 }, | ||
| 483 | { 0x31ab, 0xf000 }, | ||
| 484 | { 0x31ac, 0x0000 }, | ||
| 485 | { 0x31ad, 0xf000 }, | ||
| 486 | { 0x31ae, 0x0000 }, | ||
| 487 | { 0x31af, 0xf000 }, | ||
| 488 | { 0x31b0, 0x0000 }, | ||
| 489 | { 0x31b1, 0xf000 }, | ||
| 490 | { 0x31b2, 0x0000 }, | ||
| 491 | { 0x31b3, 0xf000 }, | ||
| 492 | { 0x31b4, 0x0000 }, | ||
| 493 | { 0x31b5, 0xf000 }, | ||
| 494 | { 0x31b6, 0x0000 }, | ||
| 495 | { 0x31b7, 0xf000 }, | ||
| 496 | { 0x31b8, 0x0000 }, | ||
| 497 | { 0x31b9, 0xf000 }, | ||
| 498 | { 0x31ba, 0x0000 }, | ||
| 499 | { 0x31bb, 0xf000 }, | ||
| 500 | { 0x31bc, 0x0000 }, | ||
| 501 | { 0x31bd, 0xf000 }, | ||
| 502 | { 0x31be, 0x0000 }, | ||
| 503 | { 0x31bf, 0xf000 }, | ||
| 504 | { 0x31c0, 0x0000 }, | ||
| 505 | { 0x31c1, 0xf000 }, | ||
| 506 | { 0x31c2, 0x0000 }, | ||
| 507 | { 0x31c3, 0xf000 }, | ||
| 508 | { 0x31c4, 0x0000 }, | ||
| 509 | { 0x31c5, 0xf000 }, | ||
| 510 | { 0x31c6, 0x0000 }, | ||
| 511 | { 0x31c7, 0xf000 }, | ||
| 512 | { 0x31c8, 0x0000 }, | ||
| 513 | { 0x31c9, 0xf000 }, | ||
| 514 | { 0x31ca, 0x0000 }, | ||
| 515 | { 0x31cb, 0xf000 }, | ||
| 516 | { 0x31cc, 0x0000 }, | ||
| 517 | { 0x31cd, 0xf000 }, | ||
| 518 | { 0x31ce, 0x0000 }, | ||
| 519 | { 0x31cf, 0xf000 }, | ||
| 520 | { 0x31d0, 0x0000 }, | ||
| 521 | { 0x31d1, 0xf000 }, | ||
| 522 | { 0x31d2, 0x0000 }, | ||
| 523 | { 0x31d3, 0xf000 }, | ||
| 524 | { 0x31d4, 0x0000 }, | ||
| 525 | { 0x31d5, 0xf000 }, | ||
| 526 | { 0x31d6, 0x0000 }, | ||
| 527 | { 0x31d7, 0xf000 }, | ||
| 528 | { 0x31d8, 0x0000 }, | ||
| 529 | { 0x31d9, 0xf000 }, | ||
| 530 | { 0x31da, 0x0000 }, | ||
| 531 | { 0x31db, 0xf000 }, | ||
| 532 | { 0x31dc, 0x0000 }, | ||
| 533 | { 0x31dd, 0xf000 }, | ||
| 534 | { 0x31de, 0x0000 }, | ||
| 535 | { 0x31df, 0xf000 }, | ||
| 536 | { 0x31e0, 0x0000 }, | ||
| 537 | { 0x31e1, 0xf000 }, | ||
| 538 | { 0x31e2, 0x0000 }, | ||
| 539 | { 0x31e3, 0xf000 }, | ||
| 540 | { 0x31e4, 0x0000 }, | ||
| 541 | { 0x31e5, 0xf000 }, | ||
| 542 | { 0x31e6, 0x0000 }, | ||
| 543 | { 0x31e7, 0xf000 }, | ||
| 544 | { 0x31e8, 0x0000 }, | ||
| 545 | { 0x31e9, 0xf000 }, | ||
| 546 | { 0x31ea, 0x0000 }, | ||
| 547 | { 0x31eb, 0xf000 }, | ||
| 548 | { 0x31ec, 0x0000 }, | ||
| 549 | { 0x31ed, 0xf000 }, | ||
| 550 | { 0x31ee, 0x0000 }, | ||
| 551 | { 0x31ef, 0xf000 }, | ||
| 552 | { 0x31f0, 0x0000 }, | ||
| 553 | { 0x31f1, 0xf000 }, | ||
| 554 | { 0x31f2, 0x0000 }, | ||
| 555 | { 0x31f3, 0xf000 }, | ||
| 556 | { 0x31f4, 0x0000 }, | ||
| 557 | { 0x31f5, 0xf000 }, | ||
| 558 | { 0x31f6, 0x0000 }, | ||
| 559 | { 0x31f7, 0xf000 }, | ||
| 560 | { 0x31f8, 0x0000 }, | ||
| 561 | { 0x31f9, 0xf000 }, | ||
| 562 | { 0x31fa, 0x0000 }, | ||
| 563 | { 0x31fb, 0xf000 }, | ||
| 564 | { 0x31fc, 0x0000 }, | ||
| 565 | { 0x31fd, 0xf000 }, | ||
| 566 | { 0x31fe, 0x0000 }, | ||
| 567 | { 0x31ff, 0xf000 }, | ||
| 568 | { 0x024d, 0xff50 }, | ||
| 569 | { 0x0252, 0xff50 }, | ||
| 570 | { 0x0259, 0x0112 }, | ||
| 571 | { 0x025e, 0x0112 }, | ||
| 572 | { 0x101, 0x0304 }, | ||
| 573 | { 0x80, 0x0000 }, | ||
| 574 | }; | ||
| 575 | |||
| 576 | /* We use a function so we can use ARRAY_SIZE() */ | ||
| 577 | int wm5102_patch(struct arizona *arizona) | ||
| 578 | { | ||
| 579 | switch (arizona->rev) { | ||
| 580 | case 0: | ||
| 581 | return regmap_register_patch(arizona->regmap, | ||
| 582 | wm5102_reva_patch, | ||
| 583 | ARRAY_SIZE(wm5102_reva_patch)); | ||
| 584 | default: | ||
| 585 | return 0; | ||
| 586 | } | ||
| 587 | } | ||
| 588 | |||
| 589 | static const struct regmap_irq wm5102_aod_irqs[ARIZONA_NUM_IRQ] = { | ||
| 590 | [ARIZONA_IRQ_GP5_FALL] = { .mask = ARIZONA_GP5_FALL_EINT1 }, | ||
| 591 | [ARIZONA_IRQ_GP5_RISE] = { .mask = ARIZONA_GP5_RISE_EINT1 }, | ||
| 592 | [ARIZONA_IRQ_JD_FALL] = { .mask = ARIZONA_JD1_FALL_EINT1 }, | ||
| 593 | [ARIZONA_IRQ_JD_RISE] = { .mask = ARIZONA_JD1_RISE_EINT1 }, | ||
| 594 | }; | ||
| 595 | |||
| 596 | const struct regmap_irq_chip wm5102_aod = { | ||
| 597 | .name = "wm5102 AOD", | ||
| 598 | .status_base = ARIZONA_AOD_IRQ1, | ||
| 599 | .mask_base = ARIZONA_AOD_IRQ_MASK_IRQ1, | ||
| 600 | .ack_base = ARIZONA_AOD_IRQ1, | ||
| 601 | .wake_base = ARIZONA_WAKE_CONTROL, | ||
| 602 | .num_regs = 1, | ||
| 603 | .irqs = wm5102_aod_irqs, | ||
| 604 | .num_irqs = ARRAY_SIZE(wm5102_aod_irqs), | ||
| 605 | }; | ||
| 606 | |||
| 607 | static const struct regmap_irq wm5102_irqs[ARIZONA_NUM_IRQ] = { | ||
| 608 | [ARIZONA_IRQ_GP4] = { .reg_offset = 0, .mask = ARIZONA_GP4_EINT1 }, | ||
| 609 | [ARIZONA_IRQ_GP3] = { .reg_offset = 0, .mask = ARIZONA_GP3_EINT1 }, | ||
| 610 | [ARIZONA_IRQ_GP2] = { .reg_offset = 0, .mask = ARIZONA_GP2_EINT1 }, | ||
| 611 | [ARIZONA_IRQ_GP1] = { .reg_offset = 0, .mask = ARIZONA_GP1_EINT1 }, | ||
| 612 | |||
| 613 | [ARIZONA_IRQ_DSP1_RAM_RDY] = { | ||
| 614 | .reg_offset = 1, .mask = ARIZONA_DSP1_RAM_RDY_EINT1 | ||
| 615 | }, | ||
| 616 | [ARIZONA_IRQ_DSP_IRQ2] = { | ||
| 617 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ2_EINT1 | ||
| 618 | }, | ||
| 619 | [ARIZONA_IRQ_DSP_IRQ1] = { | ||
| 620 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ1_EINT1 | ||
| 621 | }, | ||
| 622 | |||
| 623 | [ARIZONA_IRQ_SPK_SHUTDOWN_WARN] = { | ||
| 624 | .reg_offset = 2, .mask = ARIZONA_SPK_SHUTDOWN_WARN_EINT1 | ||
| 625 | }, | ||
| 626 | [ARIZONA_IRQ_SPK_SHUTDOWN] = { | ||
| 627 | .reg_offset = 2, .mask = ARIZONA_SPK_SHUTDOWN_EINT1 | ||
| 628 | }, | ||
| 629 | [ARIZONA_IRQ_HPDET] = { | ||
| 630 | .reg_offset = 2, .mask = ARIZONA_HPDET_EINT1 | ||
| 631 | }, | ||
| 632 | [ARIZONA_IRQ_MICDET] = { | ||
| 633 | .reg_offset = 2, .mask = ARIZONA_MICDET_EINT1 | ||
| 634 | }, | ||
| 635 | [ARIZONA_IRQ_WSEQ_DONE] = { | ||
| 636 | .reg_offset = 2, .mask = ARIZONA_WSEQ_DONE_EINT1 | ||
| 637 | }, | ||
| 638 | [ARIZONA_IRQ_DRC2_SIG_DET] = { | ||
| 639 | .reg_offset = 2, .mask = ARIZONA_DRC2_SIG_DET_EINT1 | ||
| 640 | }, | ||
| 641 | [ARIZONA_IRQ_DRC1_SIG_DET] = { | ||
| 642 | .reg_offset = 2, .mask = ARIZONA_DRC1_SIG_DET_EINT1 | ||
| 643 | }, | ||
| 644 | [ARIZONA_IRQ_ASRC2_LOCK] = { | ||
| 645 | .reg_offset = 2, .mask = ARIZONA_ASRC2_LOCK_EINT1 | ||
| 646 | }, | ||
| 647 | [ARIZONA_IRQ_ASRC1_LOCK] = { | ||
| 648 | .reg_offset = 2, .mask = ARIZONA_ASRC1_LOCK_EINT1 | ||
| 649 | }, | ||
| 650 | [ARIZONA_IRQ_UNDERCLOCKED] = { | ||
| 651 | .reg_offset = 2, .mask = ARIZONA_UNDERCLOCKED_EINT1 | ||
| 652 | }, | ||
| 653 | [ARIZONA_IRQ_OVERCLOCKED] = { | ||
| 654 | .reg_offset = 2, .mask = ARIZONA_OVERCLOCKED_EINT1 | ||
| 655 | }, | ||
| 656 | [ARIZONA_IRQ_FLL2_LOCK] = { | ||
| 657 | .reg_offset = 2, .mask = ARIZONA_FLL2_LOCK_EINT1 | ||
| 658 | }, | ||
| 659 | [ARIZONA_IRQ_FLL1_LOCK] = { | ||
| 660 | .reg_offset = 2, .mask = ARIZONA_FLL1_LOCK_EINT1 | ||
| 661 | }, | ||
| 662 | [ARIZONA_IRQ_CLKGEN_ERR] = { | ||
| 663 | .reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_EINT1 | ||
| 664 | }, | ||
| 665 | [ARIZONA_IRQ_CLKGEN_ERR_ASYNC] = { | ||
| 666 | .reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_ASYNC_EINT1 | ||
| 667 | }, | ||
| 668 | |||
| 669 | [ARIZONA_IRQ_ASRC_CFG_ERR] = { | ||
| 670 | .reg_offset = 3, .mask = ARIZONA_ASRC_CFG_ERR_EINT1 | ||
| 671 | }, | ||
| 672 | [ARIZONA_IRQ_AIF3_ERR] = { | ||
| 673 | .reg_offset = 3, .mask = ARIZONA_AIF3_ERR_EINT1 | ||
| 674 | }, | ||
| 675 | [ARIZONA_IRQ_AIF2_ERR] = { | ||
| 676 | .reg_offset = 3, .mask = ARIZONA_AIF2_ERR_EINT1 | ||
| 677 | }, | ||
| 678 | [ARIZONA_IRQ_AIF1_ERR] = { | ||
| 679 | .reg_offset = 3, .mask = ARIZONA_AIF1_ERR_EINT1 | ||
| 680 | }, | ||
| 681 | [ARIZONA_IRQ_CTRLIF_ERR] = { | ||
| 682 | .reg_offset = 3, .mask = ARIZONA_CTRLIF_ERR_EINT1 | ||
| 683 | }, | ||
| 684 | [ARIZONA_IRQ_MIXER_DROPPED_SAMPLES] = { | ||
| 685 | .reg_offset = 3, .mask = ARIZONA_MIXER_DROPPED_SAMPLE_EINT1 | ||
| 686 | }, | ||
| 687 | [ARIZONA_IRQ_ASYNC_CLK_ENA_LOW] = { | ||
| 688 | .reg_offset = 3, .mask = ARIZONA_ASYNC_CLK_ENA_LOW_EINT1 | ||
| 689 | }, | ||
| 690 | [ARIZONA_IRQ_SYSCLK_ENA_LOW] = { | ||
| 691 | .reg_offset = 3, .mask = ARIZONA_SYSCLK_ENA_LOW_EINT1 | ||
| 692 | }, | ||
| 693 | [ARIZONA_IRQ_ISRC1_CFG_ERR] = { | ||
| 694 | .reg_offset = 3, .mask = ARIZONA_ISRC1_CFG_ERR_EINT1 | ||
| 695 | }, | ||
| 696 | [ARIZONA_IRQ_ISRC2_CFG_ERR] = { | ||
| 697 | .reg_offset = 3, .mask = ARIZONA_ISRC2_CFG_ERR_EINT1 | ||
| 698 | }, | ||
| 699 | |||
| 700 | [ARIZONA_IRQ_BOOT_DONE] = { | ||
| 701 | .reg_offset = 4, .mask = ARIZONA_BOOT_DONE_EINT1 | ||
| 702 | }, | ||
| 703 | [ARIZONA_IRQ_DCS_DAC_DONE] = { | ||
| 704 | .reg_offset = 4, .mask = ARIZONA_DCS_DAC_DONE_EINT1 | ||
| 705 | }, | ||
| 706 | [ARIZONA_IRQ_DCS_HP_DONE] = { | ||
| 707 | .reg_offset = 4, .mask = ARIZONA_DCS_HP_DONE_EINT1 | ||
| 708 | }, | ||
| 709 | [ARIZONA_IRQ_FLL2_CLOCK_OK] = { | ||
| 710 | .reg_offset = 4, .mask = ARIZONA_FLL2_CLOCK_OK_EINT1 | ||
| 711 | }, | ||
| 712 | [ARIZONA_IRQ_FLL1_CLOCK_OK] = { | ||
| 713 | .reg_offset = 4, .mask = ARIZONA_FLL1_CLOCK_OK_EINT1 | ||
| 714 | }, | ||
| 715 | }; | ||
| 716 | |||
| 717 | const struct regmap_irq_chip wm5102_irq = { | ||
| 718 | .name = "wm5102 IRQ", | ||
| 719 | .status_base = ARIZONA_INTERRUPT_STATUS_1, | ||
| 720 | .mask_base = ARIZONA_INTERRUPT_STATUS_1_MASK, | ||
| 721 | .ack_base = ARIZONA_INTERRUPT_STATUS_1, | ||
| 722 | .num_regs = 5, | ||
| 723 | .irqs = wm5102_irqs, | ||
| 724 | .num_irqs = ARRAY_SIZE(wm5102_irqs), | ||
| 725 | }; | ||
| 726 | |||
| 727 | static const struct reg_default wm5102_reg_default[] = { | ||
| 728 | { 0x00000008, 0x0019 }, /* R8 - Ctrl IF SPI CFG 1 */ | ||
| 729 | { 0x00000009, 0x0001 }, /* R9 - Ctrl IF I2C1 CFG 1 */ | ||
| 730 | { 0x0000000D, 0x0000 }, /* R13 - Ctrl IF Status 1 */ | ||
| 731 | { 0x00000016, 0x0000 }, /* R22 - Write Sequencer Ctrl 0 */ | ||
| 732 | { 0x00000017, 0x0000 }, /* R23 - Write Sequencer Ctrl 1 */ | ||
| 733 | { 0x00000018, 0x0000 }, /* R24 - Write Sequencer Ctrl 2 */ | ||
| 734 | { 0x0000001A, 0x0000 }, /* R26 - Write Sequencer PROM */ | ||
| 735 | { 0x00000020, 0x0000 }, /* R32 - Tone Generator 1 */ | ||
| 736 | { 0x00000021, 0x1000 }, /* R33 - Tone Generator 2 */ | ||
| 737 | { 0x00000022, 0x0000 }, /* R34 - Tone Generator 3 */ | ||
| 738 | { 0x00000023, 0x1000 }, /* R35 - Tone Generator 4 */ | ||
| 739 | { 0x00000024, 0x0000 }, /* R36 - Tone Generator 5 */ | ||
| 740 | { 0x00000030, 0x0000 }, /* R48 - PWM Drive 1 */ | ||
| 741 | { 0x00000031, 0x0100 }, /* R49 - PWM Drive 2 */ | ||
| 742 | { 0x00000032, 0x0100 }, /* R50 - PWM Drive 3 */ | ||
| 743 | { 0x00000040, 0x0000 }, /* R64 - Wake control */ | ||
| 744 | { 0x00000041, 0x0000 }, /* R65 - Sequence control */ | ||
| 745 | { 0x00000061, 0x01FF }, /* R97 - Sample Rate Sequence Select 1 */ | ||
| 746 | { 0x00000062, 0x01FF }, /* R98 - Sample Rate Sequence Select 2 */ | ||
| 747 | { 0x00000063, 0x01FF }, /* R99 - Sample Rate Sequence Select 3 */ | ||
| 748 | { 0x00000064, 0x01FF }, /* R100 - Sample Rate Sequence Select 4 */ | ||
| 749 | { 0x00000068, 0x01FF }, /* R104 - Always On Triggers Sequence Select 1 */ | ||
| 750 | { 0x00000069, 0x01FF }, /* R105 - Always On Triggers Sequence Select 2 */ | ||
| 751 | { 0x0000006A, 0x01FF }, /* R106 - Always On Triggers Sequence Select 3 */ | ||
| 752 | { 0x0000006B, 0x01FF }, /* R107 - Always On Triggers Sequence Select 4 */ | ||
| 753 | { 0x0000006C, 0x01FF }, /* R108 - Always On Triggers Sequence Select 5 */ | ||
| 754 | { 0x0000006D, 0x01FF }, /* R109 - Always On Triggers Sequence Select 6 */ | ||
| 755 | { 0x00000070, 0x0000 }, /* R112 - Comfort Noise Generator */ | ||
| 756 | { 0x00000090, 0x0000 }, /* R144 - Haptics Control 1 */ | ||
| 757 | { 0x00000091, 0x7FFF }, /* R145 - Haptics Control 2 */ | ||
| 758 | { 0x00000092, 0x0000 }, /* R146 - Haptics phase 1 intensity */ | ||
| 759 | { 0x00000093, 0x0000 }, /* R147 - Haptics phase 1 duration */ | ||
| 760 | { 0x00000094, 0x0000 }, /* R148 - Haptics phase 2 intensity */ | ||
| 761 | { 0x00000095, 0x0000 }, /* R149 - Haptics phase 2 duration */ | ||
| 762 | { 0x00000096, 0x0000 }, /* R150 - Haptics phase 3 intensity */ | ||
| 763 | { 0x00000097, 0x0000 }, /* R151 - Haptics phase 3 duration */ | ||
| 764 | { 0x00000100, 0x0001 }, /* R256 - Clock 32k 1 */ | ||
| 765 | { 0x00000101, 0x0304 }, /* R257 - System Clock 1 */ | ||
| 766 | { 0x00000102, 0x0011 }, /* R258 - Sample rate 1 */ | ||
| 767 | { 0x00000103, 0x0011 }, /* R259 - Sample rate 2 */ | ||
| 768 | { 0x00000104, 0x0011 }, /* R260 - Sample rate 3 */ | ||
| 769 | { 0x00000112, 0x0305 }, /* R274 - Async clock 1 */ | ||
| 770 | { 0x00000113, 0x0011 }, /* R275 - Async sample rate 1 */ | ||
| 771 | { 0x00000149, 0x0000 }, /* R329 - Output system clock */ | ||
| 772 | { 0x0000014A, 0x0000 }, /* R330 - Output async clock */ | ||
| 773 | { 0x00000152, 0x0000 }, /* R338 - Rate Estimator 1 */ | ||
| 774 | { 0x00000153, 0x0000 }, /* R339 - Rate Estimator 2 */ | ||
| 775 | { 0x00000154, 0x0000 }, /* R340 - Rate Estimator 3 */ | ||
| 776 | { 0x00000155, 0x0000 }, /* R341 - Rate Estimator 4 */ | ||
| 777 | { 0x00000156, 0x0000 }, /* R342 - Rate Estimator 5 */ | ||
| 778 | { 0x00000171, 0x0000 }, /* R369 - FLL1 Control 1 */ | ||
| 779 | { 0x00000172, 0x0008 }, /* R370 - FLL1 Control 2 */ | ||
| 780 | { 0x00000173, 0x0018 }, /* R371 - FLL1 Control 3 */ | ||
| 781 | { 0x00000174, 0x007D }, /* R372 - FLL1 Control 4 */ | ||
| 782 | { 0x00000175, 0x0004 }, /* R373 - FLL1 Control 5 */ | ||
| 783 | { 0x00000176, 0x0000 }, /* R374 - FLL1 Control 6 */ | ||
| 784 | { 0x00000177, 0x0181 }, /* R375 - FLL1 Loop Filter Test 1 */ | ||
| 785 | { 0x00000181, 0x0000 }, /* R385 - FLL1 Synchroniser 1 */ | ||
| 786 | { 0x00000182, 0x0000 }, /* R386 - FLL1 Synchroniser 2 */ | ||
| 787 | { 0x00000183, 0x0000 }, /* R387 - FLL1 Synchroniser 3 */ | ||
| 788 | { 0x00000184, 0x0000 }, /* R388 - FLL1 Synchroniser 4 */ | ||
| 789 | { 0x00000185, 0x0000 }, /* R389 - FLL1 Synchroniser 5 */ | ||
| 790 | { 0x00000186, 0x0000 }, /* R390 - FLL1 Synchroniser 6 */ | ||
| 791 | { 0x00000189, 0x0000 }, /* R393 - FLL1 Spread Spectrum */ | ||
| 792 | { 0x0000018A, 0x0004 }, /* R394 - FLL1 GPIO Clock */ | ||
| 793 | { 0x00000191, 0x0000 }, /* R401 - FLL2 Control 1 */ | ||
| 794 | { 0x00000192, 0x0008 }, /* R402 - FLL2 Control 2 */ | ||
| 795 | { 0x00000193, 0x0018 }, /* R403 - FLL2 Control 3 */ | ||
| 796 | { 0x00000194, 0x007D }, /* R404 - FLL2 Control 4 */ | ||
| 797 | { 0x00000195, 0x0004 }, /* R405 - FLL2 Control 5 */ | ||
| 798 | { 0x00000196, 0x0000 }, /* R406 - FLL2 Control 6 */ | ||
| 799 | { 0x00000197, 0x0000 }, /* R407 - FLL2 Loop Filter Test 1 */ | ||
| 800 | { 0x000001A1, 0x0000 }, /* R417 - FLL2 Synchroniser 1 */ | ||
| 801 | { 0x000001A2, 0x0000 }, /* R418 - FLL2 Synchroniser 2 */ | ||
| 802 | { 0x000001A3, 0x0000 }, /* R419 - FLL2 Synchroniser 3 */ | ||
| 803 | { 0x000001A4, 0x0000 }, /* R420 - FLL2 Synchroniser 4 */ | ||
| 804 | { 0x000001A5, 0x0000 }, /* R421 - FLL2 Synchroniser 5 */ | ||
| 805 | { 0x000001A6, 0x0000 }, /* R422 - FLL2 Synchroniser 6 */ | ||
| 806 | { 0x000001A9, 0x0000 }, /* R425 - FLL2 Spread Spectrum */ | ||
| 807 | { 0x000001AA, 0x0004 }, /* R426 - FLL2 GPIO Clock */ | ||
| 808 | { 0x00000200, 0x0006 }, /* R512 - Mic Charge Pump 1 */ | ||
| 809 | { 0x00000210, 0x00D4 }, /* R528 - LDO1 Control 1 */ | ||
| 810 | { 0x00000213, 0x0344 }, /* R531 - LDO2 Control 1 */ | ||
| 811 | { 0x00000218, 0x01A6 }, /* R536 - Mic Bias Ctrl 1 */ | ||
| 812 | { 0x00000219, 0x01A6 }, /* R537 - Mic Bias Ctrl 2 */ | ||
| 813 | { 0x0000021A, 0x01A6 }, /* R538 - Mic Bias Ctrl 3 */ | ||
| 814 | { 0x00000293, 0x0000 }, /* R659 - Accessory Detect Mode 1 */ | ||
| 815 | { 0x0000029B, 0x0020 }, /* R667 - Headphone Detect 1 */ | ||
| 816 | { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ | ||
| 817 | { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ | ||
| 818 | { 0x000002A5, 0x0000 }, /* R677 - Mic Detect 3 */ | ||
| 819 | { 0x000002C3, 0x0000 }, /* R707 - Mic noise mix control 1 */ | ||
| 820 | { 0x000002CB, 0x0000 }, /* R715 - Isolation control */ | ||
| 821 | { 0x000002D3, 0x0000 }, /* R723 - Jack detect analogue */ | ||
| 822 | { 0x00000300, 0x0000 }, /* R768 - Input Enables */ | ||
| 823 | { 0x00000308, 0x0000 }, /* R776 - Input Rate */ | ||
| 824 | { 0x00000309, 0x0022 }, /* R777 - Input Volume Ramp */ | ||
| 825 | { 0x00000310, 0x2080 }, /* R784 - IN1L Control */ | ||
| 826 | { 0x00000311, 0x0180 }, /* R785 - ADC Digital Volume 1L */ | ||
| 827 | { 0x00000312, 0x0000 }, /* R786 - DMIC1L Control */ | ||
| 828 | { 0x00000314, 0x0080 }, /* R788 - IN1R Control */ | ||
| 829 | { 0x00000315, 0x0180 }, /* R789 - ADC Digital Volume 1R */ | ||
| 830 | { 0x00000316, 0x0000 }, /* R790 - DMIC1R Control */ | ||
| 831 | { 0x00000318, 0x2080 }, /* R792 - IN2L Control */ | ||
| 832 | { 0x00000319, 0x0180 }, /* R793 - ADC Digital Volume 2L */ | ||
| 833 | { 0x0000031A, 0x0000 }, /* R794 - DMIC2L Control */ | ||
| 834 | { 0x0000031C, 0x0080 }, /* R796 - IN2R Control */ | ||
| 835 | { 0x0000031D, 0x0180 }, /* R797 - ADC Digital Volume 2R */ | ||
| 836 | { 0x0000031E, 0x0000 }, /* R798 - DMIC2R Control */ | ||
| 837 | { 0x00000320, 0x2080 }, /* R800 - IN3L Control */ | ||
| 838 | { 0x00000321, 0x0180 }, /* R801 - ADC Digital Volume 3L */ | ||
| 839 | { 0x00000322, 0x0000 }, /* R802 - DMIC3L Control */ | ||
| 840 | { 0x00000324, 0x0080 }, /* R804 - IN3R Control */ | ||
| 841 | { 0x00000325, 0x0180 }, /* R805 - ADC Digital Volume 3R */ | ||
| 842 | { 0x00000326, 0x0000 }, /* R806 - DMIC3R Control */ | ||
| 843 | { 0x00000400, 0x0000 }, /* R1024 - Output Enables 1 */ | ||
| 844 | { 0x00000408, 0x0000 }, /* R1032 - Output Rate 1 */ | ||
| 845 | { 0x00000409, 0x0022 }, /* R1033 - Output Volume Ramp */ | ||
| 846 | { 0x00000410, 0x0080 }, /* R1040 - Output Path Config 1L */ | ||
| 847 | { 0x00000411, 0x0180 }, /* R1041 - DAC Digital Volume 1L */ | ||
| 848 | { 0x00000412, 0x0080 }, /* R1042 - DAC Volume Limit 1L */ | ||
| 849 | { 0x00000413, 0x0001 }, /* R1043 - Noise Gate Select 1L */ | ||
| 850 | { 0x00000414, 0x0080 }, /* R1044 - Output Path Config 1R */ | ||
| 851 | { 0x00000415, 0x0180 }, /* R1045 - DAC Digital Volume 1R */ | ||
| 852 | { 0x00000416, 0x0080 }, /* R1046 - DAC Volume Limit 1R */ | ||
| 853 | { 0x00000417, 0x0002 }, /* R1047 - Noise Gate Select 1R */ | ||
| 854 | { 0x00000418, 0x0080 }, /* R1048 - Output Path Config 2L */ | ||
| 855 | { 0x00000419, 0x0180 }, /* R1049 - DAC Digital Volume 2L */ | ||
| 856 | { 0x0000041A, 0x0080 }, /* R1050 - DAC Volume Limit 2L */ | ||
| 857 | { 0x0000041B, 0x0004 }, /* R1051 - Noise Gate Select 2L */ | ||
| 858 | { 0x0000041C, 0x0080 }, /* R1052 - Output Path Config 2R */ | ||
| 859 | { 0x0000041D, 0x0180 }, /* R1053 - DAC Digital Volume 2R */ | ||
| 860 | { 0x0000041E, 0x0080 }, /* R1054 - DAC Volume Limit 2R */ | ||
| 861 | { 0x0000041F, 0x0008 }, /* R1055 - Noise Gate Select 2R */ | ||
| 862 | { 0x00000420, 0x0080 }, /* R1056 - Output Path Config 3L */ | ||
| 863 | { 0x00000421, 0x0180 }, /* R1057 - DAC Digital Volume 3L */ | ||
| 864 | { 0x00000422, 0x0080 }, /* R1058 - DAC Volume Limit 3L */ | ||
| 865 | { 0x00000423, 0x0010 }, /* R1059 - Noise Gate Select 3L */ | ||
| 866 | { 0x00000424, 0x0080 }, /* R1060 - Output Path Config 3R */ | ||
| 867 | { 0x00000425, 0x0180 }, /* R1061 - DAC Digital Volume 3R */ | ||
| 868 | { 0x00000426, 0x0080 }, /* R1062 - DAC Volume Limit 3R */ | ||
| 869 | { 0x00000428, 0x0000 }, /* R1064 - Output Path Config 4L */ | ||
| 870 | { 0x00000429, 0x0180 }, /* R1065 - DAC Digital Volume 4L */ | ||
| 871 | { 0x0000042A, 0x0080 }, /* R1066 - Out Volume 4L */ | ||
| 872 | { 0x0000042B, 0x0040 }, /* R1067 - Noise Gate Select 4L */ | ||
| 873 | { 0x0000042C, 0x0000 }, /* R1068 - Output Path Config 4R */ | ||
| 874 | { 0x0000042D, 0x0180 }, /* R1069 - DAC Digital Volume 4R */ | ||
| 875 | { 0x0000042E, 0x0080 }, /* R1070 - Out Volume 4R */ | ||
| 876 | { 0x0000042F, 0x0080 }, /* R1071 - Noise Gate Select 4R */ | ||
| 877 | { 0x00000430, 0x0000 }, /* R1072 - Output Path Config 5L */ | ||
| 878 | { 0x00000431, 0x0180 }, /* R1073 - DAC Digital Volume 5L */ | ||
| 879 | { 0x00000432, 0x0080 }, /* R1074 - DAC Volume Limit 5L */ | ||
| 880 | { 0x00000433, 0x0100 }, /* R1075 - Noise Gate Select 5L */ | ||
| 881 | { 0x00000434, 0x0000 }, /* R1076 - Output Path Config 5R */ | ||
| 882 | { 0x00000435, 0x0180 }, /* R1077 - DAC Digital Volume 5R */ | ||
| 883 | { 0x00000436, 0x0080 }, /* R1078 - DAC Volume Limit 5R */ | ||
| 884 | { 0x00000437, 0x0200 }, /* R1079 - Noise Gate Select 5R */ | ||
| 885 | { 0x00000450, 0x0000 }, /* R1104 - DAC AEC Control 1 */ | ||
| 886 | { 0x00000458, 0x0001 }, /* R1112 - Noise Gate Control */ | ||
| 887 | { 0x00000490, 0x0069 }, /* R1168 - PDM SPK1 CTRL 1 */ | ||
| 888 | { 0x00000491, 0x0000 }, /* R1169 - PDM SPK1 CTRL 2 */ | ||
| 889 | { 0x000004DC, 0x0000 }, /* R1244 - DAC comp 1 */ | ||
| 890 | { 0x000004DD, 0x0000 }, /* R1245 - DAC comp 2 */ | ||
| 891 | { 0x000004DE, 0x0000 }, /* R1246 - DAC comp 3 */ | ||
| 892 | { 0x000004DF, 0x0000 }, /* R1247 - DAC comp 4 */ | ||
| 893 | { 0x00000500, 0x000C }, /* R1280 - AIF1 BCLK Ctrl */ | ||
| 894 | { 0x00000501, 0x0008 }, /* R1281 - AIF1 Tx Pin Ctrl */ | ||
| 895 | { 0x00000502, 0x0000 }, /* R1282 - AIF1 Rx Pin Ctrl */ | ||
| 896 | { 0x00000503, 0x0000 }, /* R1283 - AIF1 Rate Ctrl */ | ||
| 897 | { 0x00000504, 0x0000 }, /* R1284 - AIF1 Format */ | ||
| 898 | { 0x00000505, 0x0040 }, /* R1285 - AIF1 Tx BCLK Rate */ | ||
| 899 | { 0x00000506, 0x0040 }, /* R1286 - AIF1 Rx BCLK Rate */ | ||
| 900 | { 0x00000507, 0x1818 }, /* R1287 - AIF1 Frame Ctrl 1 */ | ||
| 901 | { 0x00000508, 0x1818 }, /* R1288 - AIF1 Frame Ctrl 2 */ | ||
| 902 | { 0x00000509, 0x0000 }, /* R1289 - AIF1 Frame Ctrl 3 */ | ||
| 903 | { 0x0000050A, 0x0001 }, /* R1290 - AIF1 Frame Ctrl 4 */ | ||
| 904 | { 0x0000050B, 0x0002 }, /* R1291 - AIF1 Frame Ctrl 5 */ | ||
| 905 | { 0x0000050C, 0x0003 }, /* R1292 - AIF1 Frame Ctrl 6 */ | ||
| 906 | { 0x0000050D, 0x0004 }, /* R1293 - AIF1 Frame Ctrl 7 */ | ||
| 907 | { 0x0000050E, 0x0005 }, /* R1294 - AIF1 Frame Ctrl 8 */ | ||
| 908 | { 0x0000050F, 0x0006 }, /* R1295 - AIF1 Frame Ctrl 9 */ | ||
| 909 | { 0x00000510, 0x0007 }, /* R1296 - AIF1 Frame Ctrl 10 */ | ||
| 910 | { 0x00000511, 0x0000 }, /* R1297 - AIF1 Frame Ctrl 11 */ | ||
| 911 | { 0x00000512, 0x0001 }, /* R1298 - AIF1 Frame Ctrl 12 */ | ||
| 912 | { 0x00000513, 0x0002 }, /* R1299 - AIF1 Frame Ctrl 13 */ | ||
| 913 | { 0x00000514, 0x0003 }, /* R1300 - AIF1 Frame Ctrl 14 */ | ||
| 914 | { 0x00000515, 0x0004 }, /* R1301 - AIF1 Frame Ctrl 15 */ | ||
| 915 | { 0x00000516, 0x0005 }, /* R1302 - AIF1 Frame Ctrl 16 */ | ||
| 916 | { 0x00000517, 0x0006 }, /* R1303 - AIF1 Frame Ctrl 17 */ | ||
| 917 | { 0x00000518, 0x0007 }, /* R1304 - AIF1 Frame Ctrl 18 */ | ||
| 918 | { 0x00000519, 0x0000 }, /* R1305 - AIF1 Tx Enables */ | ||
| 919 | { 0x0000051A, 0x0000 }, /* R1306 - AIF1 Rx Enables */ | ||
| 920 | { 0x0000051B, 0x0000 }, /* R1307 - AIF1 Force Write */ | ||
| 921 | { 0x00000540, 0x000C }, /* R1344 - AIF2 BCLK Ctrl */ | ||
| 922 | { 0x00000541, 0x0008 }, /* R1345 - AIF2 Tx Pin Ctrl */ | ||
| 923 | { 0x00000542, 0x0000 }, /* R1346 - AIF2 Rx Pin Ctrl */ | ||
| 924 | { 0x00000543, 0x0000 }, /* R1347 - AIF2 Rate Ctrl */ | ||
| 925 | { 0x00000544, 0x0000 }, /* R1348 - AIF2 Format */ | ||
| 926 | { 0x00000545, 0x0040 }, /* R1349 - AIF2 Tx BCLK Rate */ | ||
| 927 | { 0x00000546, 0x0040 }, /* R1350 - AIF2 Rx BCLK Rate */ | ||
| 928 | { 0x00000547, 0x1818 }, /* R1351 - AIF2 Frame Ctrl 1 */ | ||
| 929 | { 0x00000548, 0x1818 }, /* R1352 - AIF2 Frame Ctrl 2 */ | ||
| 930 | { 0x00000549, 0x0000 }, /* R1353 - AIF2 Frame Ctrl 3 */ | ||
| 931 | { 0x0000054A, 0x0001 }, /* R1354 - AIF2 Frame Ctrl 4 */ | ||
| 932 | { 0x00000551, 0x0000 }, /* R1361 - AIF2 Frame Ctrl 11 */ | ||
| 933 | { 0x00000552, 0x0001 }, /* R1362 - AIF2 Frame Ctrl 12 */ | ||
| 934 | { 0x00000559, 0x0000 }, /* R1369 - AIF2 Tx Enables */ | ||
| 935 | { 0x0000055A, 0x0000 }, /* R1370 - AIF2 Rx Enables */ | ||
| 936 | { 0x0000055B, 0x0000 }, /* R1371 - AIF2 Force Write */ | ||
| 937 | { 0x00000580, 0x000C }, /* R1408 - AIF3 BCLK Ctrl */ | ||
| 938 | { 0x00000581, 0x0008 }, /* R1409 - AIF3 Tx Pin Ctrl */ | ||
| 939 | { 0x00000582, 0x0000 }, /* R1410 - AIF3 Rx Pin Ctrl */ | ||
| 940 | { 0x00000583, 0x0000 }, /* R1411 - AIF3 Rate Ctrl */ | ||
| 941 | { 0x00000584, 0x0000 }, /* R1412 - AIF3 Format */ | ||
| 942 | { 0x00000585, 0x0040 }, /* R1413 - AIF3 Tx BCLK Rate */ | ||
| 943 | { 0x00000586, 0x0040 }, /* R1414 - AIF3 Rx BCLK Rate */ | ||
| 944 | { 0x00000587, 0x1818 }, /* R1415 - AIF3 Frame Ctrl 1 */ | ||
| 945 | { 0x00000588, 0x1818 }, /* R1416 - AIF3 Frame Ctrl 2 */ | ||
| 946 | { 0x00000589, 0x0000 }, /* R1417 - AIF3 Frame Ctrl 3 */ | ||
| 947 | { 0x0000058A, 0x0001 }, /* R1418 - AIF3 Frame Ctrl 4 */ | ||
| 948 | { 0x00000591, 0x0000 }, /* R1425 - AIF3 Frame Ctrl 11 */ | ||
| 949 | { 0x00000592, 0x0001 }, /* R1426 - AIF3 Frame Ctrl 12 */ | ||
| 950 | { 0x00000599, 0x0000 }, /* R1433 - AIF3 Tx Enables */ | ||
| 951 | { 0x0000059A, 0x0000 }, /* R1434 - AIF3 Rx Enables */ | ||
| 952 | { 0x0000059B, 0x0000 }, /* R1435 - AIF3 Force Write */ | ||
| 953 | { 0x000005E3, 0x0004 }, /* R1507 - SLIMbus Framer Ref Gear */ | ||
| 954 | { 0x000005E5, 0x0000 }, /* R1509 - SLIMbus Rates 1 */ | ||
| 955 | { 0x000005E6, 0x0000 }, /* R1510 - SLIMbus Rates 2 */ | ||
| 956 | { 0x000005E7, 0x0000 }, /* R1511 - SLIMbus Rates 3 */ | ||
| 957 | { 0x000005E8, 0x0000 }, /* R1512 - SLIMbus Rates 4 */ | ||
| 958 | { 0x000005E9, 0x0000 }, /* R1513 - SLIMbus Rates 5 */ | ||
| 959 | { 0x000005EA, 0x0000 }, /* R1514 - SLIMbus Rates 6 */ | ||
| 960 | { 0x000005EB, 0x0000 }, /* R1515 - SLIMbus Rates 7 */ | ||
| 961 | { 0x000005EC, 0x0000 }, /* R1516 - SLIMbus Rates 8 */ | ||
| 962 | { 0x000005F5, 0x0000 }, /* R1525 - SLIMbus RX Channel Enable */ | ||
| 963 | { 0x000005F6, 0x0000 }, /* R1526 - SLIMbus TX Channel Enable */ | ||
| 964 | { 0x00000640, 0x0000 }, /* R1600 - PWM1MIX Input 1 Source */ | ||
| 965 | { 0x00000641, 0x0080 }, /* R1601 - PWM1MIX Input 1 Volume */ | ||
| 966 | { 0x00000642, 0x0000 }, /* R1602 - PWM1MIX Input 2 Source */ | ||
| 967 | { 0x00000643, 0x0080 }, /* R1603 - PWM1MIX Input 2 Volume */ | ||
| 968 | { 0x00000644, 0x0000 }, /* R1604 - PWM1MIX Input 3 Source */ | ||
| 969 | { 0x00000645, 0x0080 }, /* R1605 - PWM1MIX Input 3 Volume */ | ||
| 970 | { 0x00000646, 0x0000 }, /* R1606 - PWM1MIX Input 4 Source */ | ||
| 971 | { 0x00000647, 0x0080 }, /* R1607 - PWM1MIX Input 4 Volume */ | ||
| 972 | { 0x00000648, 0x0000 }, /* R1608 - PWM2MIX Input 1 Source */ | ||
| 973 | { 0x00000649, 0x0080 }, /* R1609 - PWM2MIX Input 1 Volume */ | ||
| 974 | { 0x0000064A, 0x0000 }, /* R1610 - PWM2MIX Input 2 Source */ | ||
| 975 | { 0x0000064B, 0x0080 }, /* R1611 - PWM2MIX Input 2 Volume */ | ||
| 976 | { 0x0000064C, 0x0000 }, /* R1612 - PWM2MIX Input 3 Source */ | ||
| 977 | { 0x0000064D, 0x0080 }, /* R1613 - PWM2MIX Input 3 Volume */ | ||
| 978 | { 0x0000064E, 0x0000 }, /* R1614 - PWM2MIX Input 4 Source */ | ||
| 979 | { 0x0000064F, 0x0080 }, /* R1615 - PWM2MIX Input 4 Volume */ | ||
| 980 | { 0x00000660, 0x0000 }, /* R1632 - MICMIX Input 1 Source */ | ||
| 981 | { 0x00000661, 0x0080 }, /* R1633 - MICMIX Input 1 Volume */ | ||
| 982 | { 0x00000662, 0x0000 }, /* R1634 - MICMIX Input 2 Source */ | ||
| 983 | { 0x00000663, 0x0080 }, /* R1635 - MICMIX Input 2 Volume */ | ||
| 984 | { 0x00000664, 0x0000 }, /* R1636 - MICMIX Input 3 Source */ | ||
| 985 | { 0x00000665, 0x0080 }, /* R1637 - MICMIX Input 3 Volume */ | ||
| 986 | { 0x00000666, 0x0000 }, /* R1638 - MICMIX Input 4 Source */ | ||
| 987 | { 0x00000667, 0x0080 }, /* R1639 - MICMIX Input 4 Volume */ | ||
| 988 | { 0x00000668, 0x0000 }, /* R1640 - NOISEMIX Input 1 Source */ | ||
| 989 | { 0x00000669, 0x0080 }, /* R1641 - NOISEMIX Input 1 Volume */ | ||
| 990 | { 0x0000066A, 0x0000 }, /* R1642 - NOISEMIX Input 2 Source */ | ||
| 991 | { 0x0000066B, 0x0080 }, /* R1643 - NOISEMIX Input 2 Volume */ | ||
| 992 | { 0x0000066C, 0x0000 }, /* R1644 - NOISEMIX Input 3 Source */ | ||
| 993 | { 0x0000066D, 0x0080 }, /* R1645 - NOISEMIX Input 3 Volume */ | ||
| 994 | { 0x0000066E, 0x0000 }, /* R1646 - NOISEMIX Input 4 Source */ | ||
| 995 | { 0x0000066F, 0x0080 }, /* R1647 - NOISEMIX Input 4 Volume */ | ||
| 996 | { 0x00000680, 0x0000 }, /* R1664 - OUT1LMIX Input 1 Source */ | ||
| 997 | { 0x00000681, 0x0080 }, /* R1665 - OUT1LMIX Input 1 Volume */ | ||
| 998 | { 0x00000682, 0x0000 }, /* R1666 - OUT1LMIX Input 2 Source */ | ||
| 999 | { 0x00000683, 0x0080 }, /* R1667 - OUT1LMIX Input 2 Volume */ | ||
| 1000 | { 0x00000684, 0x0000 }, /* R1668 - OUT1LMIX Input 3 Source */ | ||
| 1001 | { 0x00000685, 0x0080 }, /* R1669 - OUT1LMIX Input 3 Volume */ | ||
| 1002 | { 0x00000686, 0x0000 }, /* R1670 - OUT1LMIX Input 4 Source */ | ||
| 1003 | { 0x00000687, 0x0080 }, /* R1671 - OUT1LMIX Input 4 Volume */ | ||
| 1004 | { 0x00000688, 0x0000 }, /* R1672 - OUT1RMIX Input 1 Source */ | ||
| 1005 | { 0x00000689, 0x0080 }, /* R1673 - OUT1RMIX Input 1 Volume */ | ||
| 1006 | { 0x0000068A, 0x0000 }, /* R1674 - OUT1RMIX Input 2 Source */ | ||
| 1007 | { 0x0000068B, 0x0080 }, /* R1675 - OUT1RMIX Input 2 Volume */ | ||
| 1008 | { 0x0000068C, 0x0000 }, /* R1676 - OUT1RMIX Input 3 Source */ | ||
| 1009 | { 0x0000068D, 0x0080 }, /* R1677 - OUT1RMIX Input 3 Volume */ | ||
| 1010 | { 0x0000068E, 0x0000 }, /* R1678 - OUT1RMIX Input 4 Source */ | ||
| 1011 | { 0x0000068F, 0x0080 }, /* R1679 - OUT1RMIX Input 4 Volume */ | ||
| 1012 | { 0x00000690, 0x0000 }, /* R1680 - OUT2LMIX Input 1 Source */ | ||
| 1013 | { 0x00000691, 0x0080 }, /* R1681 - OUT2LMIX Input 1 Volume */ | ||
| 1014 | { 0x00000692, 0x0000 }, /* R1682 - OUT2LMIX Input 2 Source */ | ||
| 1015 | { 0x00000693, 0x0080 }, /* R1683 - OUT2LMIX Input 2 Volume */ | ||
| 1016 | { 0x00000694, 0x0000 }, /* R1684 - OUT2LMIX Input 3 Source */ | ||
| 1017 | { 0x00000695, 0x0080 }, /* R1685 - OUT2LMIX Input 3 Volume */ | ||
| 1018 | { 0x00000696, 0x0000 }, /* R1686 - OUT2LMIX Input 4 Source */ | ||
| 1019 | { 0x00000697, 0x0080 }, /* R1687 - OUT2LMIX Input 4 Volume */ | ||
| 1020 | { 0x00000698, 0x0000 }, /* R1688 - OUT2RMIX Input 1 Source */ | ||
| 1021 | { 0x00000699, 0x0080 }, /* R1689 - OUT2RMIX Input 1 Volume */ | ||
| 1022 | { 0x0000069A, 0x0000 }, /* R1690 - OUT2RMIX Input 2 Source */ | ||
| 1023 | { 0x0000069B, 0x0080 }, /* R1691 - OUT2RMIX Input 2 Volume */ | ||
| 1024 | { 0x0000069C, 0x0000 }, /* R1692 - OUT2RMIX Input 3 Source */ | ||
| 1025 | { 0x0000069D, 0x0080 }, /* R1693 - OUT2RMIX Input 3 Volume */ | ||
| 1026 | { 0x0000069E, 0x0000 }, /* R1694 - OUT2RMIX Input 4 Source */ | ||
| 1027 | { 0x0000069F, 0x0080 }, /* R1695 - OUT2RMIX Input 4 Volume */ | ||
| 1028 | { 0x000006A0, 0x0000 }, /* R1696 - OUT3LMIX Input 1 Source */ | ||
| 1029 | { 0x000006A1, 0x0080 }, /* R1697 - OUT3LMIX Input 1 Volume */ | ||
| 1030 | { 0x000006A2, 0x0000 }, /* R1698 - OUT3LMIX Input 2 Source */ | ||
| 1031 | { 0x000006A3, 0x0080 }, /* R1699 - OUT3LMIX Input 2 Volume */ | ||
| 1032 | { 0x000006A4, 0x0000 }, /* R1700 - OUT3LMIX Input 3 Source */ | ||
| 1033 | { 0x000006A5, 0x0080 }, /* R1701 - OUT3LMIX Input 3 Volume */ | ||
| 1034 | { 0x000006A6, 0x0000 }, /* R1702 - OUT3LMIX Input 4 Source */ | ||
| 1035 | { 0x000006A7, 0x0080 }, /* R1703 - OUT3LMIX Input 4 Volume */ | ||
| 1036 | { 0x000006B0, 0x0000 }, /* R1712 - OUT4LMIX Input 1 Source */ | ||
| 1037 | { 0x000006B1, 0x0080 }, /* R1713 - OUT4LMIX Input 1 Volume */ | ||
| 1038 | { 0x000006B2, 0x0000 }, /* R1714 - OUT4LMIX Input 2 Source */ | ||
| 1039 | { 0x000006B3, 0x0080 }, /* R1715 - OUT4LMIX Input 2 Volume */ | ||
| 1040 | { 0x000006B4, 0x0000 }, /* R1716 - OUT4LMIX Input 3 Source */ | ||
| 1041 | { 0x000006B5, 0x0080 }, /* R1717 - OUT4LMIX Input 3 Volume */ | ||
| 1042 | { 0x000006B6, 0x0000 }, /* R1718 - OUT4LMIX Input 4 Source */ | ||
| 1043 | { 0x000006B7, 0x0080 }, /* R1719 - OUT4LMIX Input 4 Volume */ | ||
| 1044 | { 0x000006B8, 0x0000 }, /* R1720 - OUT4RMIX Input 1 Source */ | ||
| 1045 | { 0x000006B9, 0x0080 }, /* R1721 - OUT4RMIX Input 1 Volume */ | ||
| 1046 | { 0x000006BA, 0x0000 }, /* R1722 - OUT4RMIX Input 2 Source */ | ||
| 1047 | { 0x000006BB, 0x0080 }, /* R1723 - OUT4RMIX Input 2 Volume */ | ||
| 1048 | { 0x000006BC, 0x0000 }, /* R1724 - OUT4RMIX Input 3 Source */ | ||
| 1049 | { 0x000006BD, 0x0080 }, /* R1725 - OUT4RMIX Input 3 Volume */ | ||
| 1050 | { 0x000006BE, 0x0000 }, /* R1726 - OUT4RMIX Input 4 Source */ | ||
| 1051 | { 0x000006BF, 0x0080 }, /* R1727 - OUT4RMIX Input 4 Volume */ | ||
| 1052 | { 0x000006C0, 0x0000 }, /* R1728 - OUT5LMIX Input 1 Source */ | ||
| 1053 | { 0x000006C1, 0x0080 }, /* R1729 - OUT5LMIX Input 1 Volume */ | ||
| 1054 | { 0x000006C2, 0x0000 }, /* R1730 - OUT5LMIX Input 2 Source */ | ||
| 1055 | { 0x000006C3, 0x0080 }, /* R1731 - OUT5LMIX Input 2 Volume */ | ||
| 1056 | { 0x000006C4, 0x0000 }, /* R1732 - OUT5LMIX Input 3 Source */ | ||
| 1057 | { 0x000006C5, 0x0080 }, /* R1733 - OUT5LMIX Input 3 Volume */ | ||
| 1058 | { 0x000006C6, 0x0000 }, /* R1734 - OUT5LMIX Input 4 Source */ | ||
| 1059 | { 0x000006C7, 0x0080 }, /* R1735 - OUT5LMIX Input 4 Volume */ | ||
| 1060 | { 0x000006C8, 0x0000 }, /* R1736 - OUT5RMIX Input 1 Source */ | ||
| 1061 | { 0x000006C9, 0x0080 }, /* R1737 - OUT5RMIX Input 1 Volume */ | ||
| 1062 | { 0x000006CA, 0x0000 }, /* R1738 - OUT5RMIX Input 2 Source */ | ||
| 1063 | { 0x000006CB, 0x0080 }, /* R1739 - OUT5RMIX Input 2 Volume */ | ||
| 1064 | { 0x000006CC, 0x0000 }, /* R1740 - OUT5RMIX Input 3 Source */ | ||
| 1065 | { 0x000006CD, 0x0080 }, /* R1741 - OUT5RMIX Input 3 Volume */ | ||
| 1066 | { 0x000006CE, 0x0000 }, /* R1742 - OUT5RMIX Input 4 Source */ | ||
| 1067 | { 0x000006CF, 0x0080 }, /* R1743 - OUT5RMIX Input 4 Volume */ | ||
| 1068 | { 0x00000700, 0x0000 }, /* R1792 - AIF1TX1MIX Input 1 Source */ | ||
| 1069 | { 0x00000701, 0x0080 }, /* R1793 - AIF1TX1MIX Input 1 Volume */ | ||
| 1070 | { 0x00000702, 0x0000 }, /* R1794 - AIF1TX1MIX Input 2 Source */ | ||
| 1071 | { 0x00000703, 0x0080 }, /* R1795 - AIF1TX1MIX Input 2 Volume */ | ||
| 1072 | { 0x00000704, 0x0000 }, /* R1796 - AIF1TX1MIX Input 3 Source */ | ||
| 1073 | { 0x00000705, 0x0080 }, /* R1797 - AIF1TX1MIX Input 3 Volume */ | ||
| 1074 | { 0x00000706, 0x0000 }, /* R1798 - AIF1TX1MIX Input 4 Source */ | ||
| 1075 | { 0x00000707, 0x0080 }, /* R1799 - AIF1TX1MIX Input 4 Volume */ | ||
| 1076 | { 0x00000708, 0x0000 }, /* R1800 - AIF1TX2MIX Input 1 Source */ | ||
| 1077 | { 0x00000709, 0x0080 }, /* R1801 - AIF1TX2MIX Input 1 Volume */ | ||
| 1078 | { 0x0000070A, 0x0000 }, /* R1802 - AIF1TX2MIX Input 2 Source */ | ||
| 1079 | { 0x0000070B, 0x0080 }, /* R1803 - AIF1TX2MIX Input 2 Volume */ | ||
| 1080 | { 0x0000070C, 0x0000 }, /* R1804 - AIF1TX2MIX Input 3 Source */ | ||
| 1081 | { 0x0000070D, 0x0080 }, /* R1805 - AIF1TX2MIX Input 3 Volume */ | ||
| 1082 | { 0x0000070E, 0x0000 }, /* R1806 - AIF1TX2MIX Input 4 Source */ | ||
| 1083 | { 0x0000070F, 0x0080 }, /* R1807 - AIF1TX2MIX Input 4 Volume */ | ||
| 1084 | { 0x00000710, 0x0000 }, /* R1808 - AIF1TX3MIX Input 1 Source */ | ||
| 1085 | { 0x00000711, 0x0080 }, /* R1809 - AIF1TX3MIX Input 1 Volume */ | ||
| 1086 | { 0x00000712, 0x0000 }, /* R1810 - AIF1TX3MIX Input 2 Source */ | ||
| 1087 | { 0x00000713, 0x0080 }, /* R1811 - AIF1TX3MIX Input 2 Volume */ | ||
| 1088 | { 0x00000714, 0x0000 }, /* R1812 - AIF1TX3MIX Input 3 Source */ | ||
| 1089 | { 0x00000715, 0x0080 }, /* R1813 - AIF1TX3MIX Input 3 Volume */ | ||
| 1090 | { 0x00000716, 0x0000 }, /* R1814 - AIF1TX3MIX Input 4 Source */ | ||
| 1091 | { 0x00000717, 0x0080 }, /* R1815 - AIF1TX3MIX Input 4 Volume */ | ||
| 1092 | { 0x00000718, 0x0000 }, /* R1816 - AIF1TX4MIX Input 1 Source */ | ||
| 1093 | { 0x00000719, 0x0080 }, /* R1817 - AIF1TX4MIX Input 1 Volume */ | ||
| 1094 | { 0x0000071A, 0x0000 }, /* R1818 - AIF1TX4MIX Input 2 Source */ | ||
| 1095 | { 0x0000071B, 0x0080 }, /* R1819 - AIF1TX4MIX Input 2 Volume */ | ||
| 1096 | { 0x0000071C, 0x0000 }, /* R1820 - AIF1TX4MIX Input 3 Source */ | ||
| 1097 | { 0x0000071D, 0x0080 }, /* R1821 - AIF1TX4MIX Input 3 Volume */ | ||
| 1098 | { 0x0000071E, 0x0000 }, /* R1822 - AIF1TX4MIX Input 4 Source */ | ||
| 1099 | { 0x0000071F, 0x0080 }, /* R1823 - AIF1TX4MIX Input 4 Volume */ | ||
| 1100 | { 0x00000720, 0x0000 }, /* R1824 - AIF1TX5MIX Input 1 Source */ | ||
| 1101 | { 0x00000721, 0x0080 }, /* R1825 - AIF1TX5MIX Input 1 Volume */ | ||
| 1102 | { 0x00000722, 0x0000 }, /* R1826 - AIF1TX5MIX Input 2 Source */ | ||
| 1103 | { 0x00000723, 0x0080 }, /* R1827 - AIF1TX5MIX Input 2 Volume */ | ||
| 1104 | { 0x00000724, 0x0000 }, /* R1828 - AIF1TX5MIX Input 3 Source */ | ||
| 1105 | { 0x00000725, 0x0080 }, /* R1829 - AIF1TX5MIX Input 3 Volume */ | ||
| 1106 | { 0x00000726, 0x0000 }, /* R1830 - AIF1TX5MIX Input 4 Source */ | ||
| 1107 | { 0x00000727, 0x0080 }, /* R1831 - AIF1TX5MIX Input 4 Volume */ | ||
| 1108 | { 0x00000728, 0x0000 }, /* R1832 - AIF1TX6MIX Input 1 Source */ | ||
| 1109 | { 0x00000729, 0x0080 }, /* R1833 - AIF1TX6MIX Input 1 Volume */ | ||
| 1110 | { 0x0000072A, 0x0000 }, /* R1834 - AIF1TX6MIX Input 2 Source */ | ||
| 1111 | { 0x0000072B, 0x0080 }, /* R1835 - AIF1TX6MIX Input 2 Volume */ | ||
| 1112 | { 0x0000072C, 0x0000 }, /* R1836 - AIF1TX6MIX Input 3 Source */ | ||
| 1113 | { 0x0000072D, 0x0080 }, /* R1837 - AIF1TX6MIX Input 3 Volume */ | ||
| 1114 | { 0x0000072E, 0x0000 }, /* R1838 - AIF1TX6MIX Input 4 Source */ | ||
| 1115 | { 0x0000072F, 0x0080 }, /* R1839 - AIF1TX6MIX Input 4 Volume */ | ||
| 1116 | { 0x00000730, 0x0000 }, /* R1840 - AIF1TX7MIX Input 1 Source */ | ||
| 1117 | { 0x00000731, 0x0080 }, /* R1841 - AIF1TX7MIX Input 1 Volume */ | ||
| 1118 | { 0x00000732, 0x0000 }, /* R1842 - AIF1TX7MIX Input 2 Source */ | ||
| 1119 | { 0x00000733, 0x0080 }, /* R1843 - AIF1TX7MIX Input 2 Volume */ | ||
| 1120 | { 0x00000734, 0x0000 }, /* R1844 - AIF1TX7MIX Input 3 Source */ | ||
| 1121 | { 0x00000735, 0x0080 }, /* R1845 - AIF1TX7MIX Input 3 Volume */ | ||
| 1122 | { 0x00000736, 0x0000 }, /* R1846 - AIF1TX7MIX Input 4 Source */ | ||
| 1123 | { 0x00000737, 0x0080 }, /* R1847 - AIF1TX7MIX Input 4 Volume */ | ||
| 1124 | { 0x00000738, 0x0000 }, /* R1848 - AIF1TX8MIX Input 1 Source */ | ||
| 1125 | { 0x00000739, 0x0080 }, /* R1849 - AIF1TX8MIX Input 1 Volume */ | ||
| 1126 | { 0x0000073A, 0x0000 }, /* R1850 - AIF1TX8MIX Input 2 Source */ | ||
| 1127 | { 0x0000073B, 0x0080 }, /* R1851 - AIF1TX8MIX Input 2 Volume */ | ||
| 1128 | { 0x0000073C, 0x0000 }, /* R1852 - AIF1TX8MIX Input 3 Source */ | ||
| 1129 | { 0x0000073D, 0x0080 }, /* R1853 - AIF1TX8MIX Input 3 Volume */ | ||
| 1130 | { 0x0000073E, 0x0000 }, /* R1854 - AIF1TX8MIX Input 4 Source */ | ||
| 1131 | { 0x0000073F, 0x0080 }, /* R1855 - AIF1TX8MIX Input 4 Volume */ | ||
| 1132 | { 0x00000740, 0x0000 }, /* R1856 - AIF2TX1MIX Input 1 Source */ | ||
| 1133 | { 0x00000741, 0x0080 }, /* R1857 - AIF2TX1MIX Input 1 Volume */ | ||
| 1134 | { 0x00000742, 0x0000 }, /* R1858 - AIF2TX1MIX Input 2 Source */ | ||
| 1135 | { 0x00000743, 0x0080 }, /* R1859 - AIF2TX1MIX Input 2 Volume */ | ||
| 1136 | { 0x00000744, 0x0000 }, /* R1860 - AIF2TX1MIX Input 3 Source */ | ||
| 1137 | { 0x00000745, 0x0080 }, /* R1861 - AIF2TX1MIX Input 3 Volume */ | ||
| 1138 | { 0x00000746, 0x0000 }, /* R1862 - AIF2TX1MIX Input 4 Source */ | ||
| 1139 | { 0x00000747, 0x0080 }, /* R1863 - AIF2TX1MIX Input 4 Volume */ | ||
| 1140 | { 0x00000748, 0x0000 }, /* R1864 - AIF2TX2MIX Input 1 Source */ | ||
| 1141 | { 0x00000749, 0x0080 }, /* R1865 - AIF2TX2MIX Input 1 Volume */ | ||
| 1142 | { 0x0000074A, 0x0000 }, /* R1866 - AIF2TX2MIX Input 2 Source */ | ||
| 1143 | { 0x0000074B, 0x0080 }, /* R1867 - AIF2TX2MIX Input 2 Volume */ | ||
| 1144 | { 0x0000074C, 0x0000 }, /* R1868 - AIF2TX2MIX Input 3 Source */ | ||
| 1145 | { 0x0000074D, 0x0080 }, /* R1869 - AIF2TX2MIX Input 3 Volume */ | ||
| 1146 | { 0x0000074E, 0x0000 }, /* R1870 - AIF2TX2MIX Input 4 Source */ | ||
| 1147 | { 0x0000074F, 0x0080 }, /* R1871 - AIF2TX2MIX Input 4 Volume */ | ||
| 1148 | { 0x00000780, 0x0000 }, /* R1920 - AIF3TX1MIX Input 1 Source */ | ||
| 1149 | { 0x00000781, 0x0080 }, /* R1921 - AIF3TX1MIX Input 1 Volume */ | ||
| 1150 | { 0x00000782, 0x0000 }, /* R1922 - AIF3TX1MIX Input 2 Source */ | ||
| 1151 | { 0x00000783, 0x0080 }, /* R1923 - AIF3TX1MIX Input 2 Volume */ | ||
| 1152 | { 0x00000784, 0x0000 }, /* R1924 - AIF3TX1MIX Input 3 Source */ | ||
| 1153 | { 0x00000785, 0x0080 }, /* R1925 - AIF3TX1MIX Input 3 Volume */ | ||
| 1154 | { 0x00000786, 0x0000 }, /* R1926 - AIF3TX1MIX Input 4 Source */ | ||
| 1155 | { 0x00000787, 0x0080 }, /* R1927 - AIF3TX1MIX Input 4 Volume */ | ||
| 1156 | { 0x00000788, 0x0000 }, /* R1928 - AIF3TX2MIX Input 1 Source */ | ||
| 1157 | { 0x00000789, 0x0080 }, /* R1929 - AIF3TX2MIX Input 1 Volume */ | ||
| 1158 | { 0x0000078A, 0x0000 }, /* R1930 - AIF3TX2MIX Input 2 Source */ | ||
| 1159 | { 0x0000078B, 0x0080 }, /* R1931 - AIF3TX2MIX Input 2 Volume */ | ||
| 1160 | { 0x0000078C, 0x0000 }, /* R1932 - AIF3TX2MIX Input 3 Source */ | ||
| 1161 | { 0x0000078D, 0x0080 }, /* R1933 - AIF3TX2MIX Input 3 Volume */ | ||
| 1162 | { 0x0000078E, 0x0000 }, /* R1934 - AIF3TX2MIX Input 4 Source */ | ||
| 1163 | { 0x0000078F, 0x0080 }, /* R1935 - AIF3TX2MIX Input 4 Volume */ | ||
| 1164 | { 0x000007C0, 0x0000 }, /* R1984 - SLIMTX1MIX Input 1 Source */ | ||
| 1165 | { 0x000007C1, 0x0080 }, /* R1985 - SLIMTX1MIX Input 1 Volume */ | ||
| 1166 | { 0x000007C2, 0x0000 }, /* R1986 - SLIMTX1MIX Input 2 Source */ | ||
| 1167 | { 0x000007C3, 0x0080 }, /* R1987 - SLIMTX1MIX Input 2 Volume */ | ||
| 1168 | { 0x000007C4, 0x0000 }, /* R1988 - SLIMTX1MIX Input 3 Source */ | ||
| 1169 | { 0x000007C5, 0x0080 }, /* R1989 - SLIMTX1MIX Input 3 Volume */ | ||
| 1170 | { 0x000007C6, 0x0000 }, /* R1990 - SLIMTX1MIX Input 4 Source */ | ||
| 1171 | { 0x000007C7, 0x0080 }, /* R1991 - SLIMTX1MIX Input 4 Volume */ | ||
| 1172 | { 0x000007C8, 0x0000 }, /* R1992 - SLIMTX2MIX Input 1 Source */ | ||
| 1173 | { 0x000007C9, 0x0080 }, /* R1993 - SLIMTX2MIX Input 1 Volume */ | ||
| 1174 | { 0x000007CA, 0x0000 }, /* R1994 - SLIMTX2MIX Input 2 Source */ | ||
| 1175 | { 0x000007CB, 0x0080 }, /* R1995 - SLIMTX2MIX Input 2 Volume */ | ||
| 1176 | { 0x000007CC, 0x0000 }, /* R1996 - SLIMTX2MIX Input 3 Source */ | ||
| 1177 | { 0x000007CD, 0x0080 }, /* R1997 - SLIMTX2MIX Input 3 Volume */ | ||
| 1178 | { 0x000007CE, 0x0000 }, /* R1998 - SLIMTX2MIX Input 4 Source */ | ||
| 1179 | { 0x000007CF, 0x0080 }, /* R1999 - SLIMTX2MIX Input 4 Volume */ | ||
| 1180 | { 0x000007D0, 0x0000 }, /* R2000 - SLIMTX3MIX Input 1 Source */ | ||
| 1181 | { 0x000007D1, 0x0080 }, /* R2001 - SLIMTX3MIX Input 1 Volume */ | ||
| 1182 | { 0x000007D2, 0x0000 }, /* R2002 - SLIMTX3MIX Input 2 Source */ | ||
| 1183 | { 0x000007D3, 0x0080 }, /* R2003 - SLIMTX3MIX Input 2 Volume */ | ||
| 1184 | { 0x000007D4, 0x0000 }, /* R2004 - SLIMTX3MIX Input 3 Source */ | ||
| 1185 | { 0x000007D5, 0x0080 }, /* R2005 - SLIMTX3MIX Input 3 Volume */ | ||
| 1186 | { 0x000007D6, 0x0000 }, /* R2006 - SLIMTX3MIX Input 4 Source */ | ||
| 1187 | { 0x000007D7, 0x0080 }, /* R2007 - SLIMTX3MIX Input 4 Volume */ | ||
| 1188 | { 0x000007D8, 0x0000 }, /* R2008 - SLIMTX4MIX Input 1 Source */ | ||
| 1189 | { 0x000007D9, 0x0080 }, /* R2009 - SLIMTX4MIX Input 1 Volume */ | ||
| 1190 | { 0x000007DA, 0x0000 }, /* R2010 - SLIMTX4MIX Input 2 Source */ | ||
| 1191 | { 0x000007DB, 0x0080 }, /* R2011 - SLIMTX4MIX Input 2 Volume */ | ||
| 1192 | { 0x000007DC, 0x0000 }, /* R2012 - SLIMTX4MIX Input 3 Source */ | ||
| 1193 | { 0x000007DD, 0x0080 }, /* R2013 - SLIMTX4MIX Input 3 Volume */ | ||
| 1194 | { 0x000007DE, 0x0000 }, /* R2014 - SLIMTX4MIX Input 4 Source */ | ||
| 1195 | { 0x000007DF, 0x0080 }, /* R2015 - SLIMTX4MIX Input 4 Volume */ | ||
| 1196 | { 0x000007E0, 0x0000 }, /* R2016 - SLIMTX5MIX Input 1 Source */ | ||
| 1197 | { 0x000007E1, 0x0080 }, /* R2017 - SLIMTX5MIX Input 1 Volume */ | ||
| 1198 | { 0x000007E2, 0x0000 }, /* R2018 - SLIMTX5MIX Input 2 Source */ | ||
| 1199 | { 0x000007E3, 0x0080 }, /* R2019 - SLIMTX5MIX Input 2 Volume */ | ||
| 1200 | { 0x000007E4, 0x0000 }, /* R2020 - SLIMTX5MIX Input 3 Source */ | ||
| 1201 | { 0x000007E5, 0x0080 }, /* R2021 - SLIMTX5MIX Input 3 Volume */ | ||
| 1202 | { 0x000007E6, 0x0000 }, /* R2022 - SLIMTX5MIX Input 4 Source */ | ||
| 1203 | { 0x000007E7, 0x0080 }, /* R2023 - SLIMTX5MIX Input 4 Volume */ | ||
| 1204 | { 0x000007E8, 0x0000 }, /* R2024 - SLIMTX6MIX Input 1 Source */ | ||
| 1205 | { 0x000007E9, 0x0080 }, /* R2025 - SLIMTX6MIX Input 1 Volume */ | ||
| 1206 | { 0x000007EA, 0x0000 }, /* R2026 - SLIMTX6MIX Input 2 Source */ | ||
| 1207 | { 0x000007EB, 0x0080 }, /* R2027 - SLIMTX6MIX Input 2 Volume */ | ||
| 1208 | { 0x000007EC, 0x0000 }, /* R2028 - SLIMTX6MIX Input 3 Source */ | ||
| 1209 | { 0x000007ED, 0x0080 }, /* R2029 - SLIMTX6MIX Input 3 Volume */ | ||
| 1210 | { 0x000007EE, 0x0000 }, /* R2030 - SLIMTX6MIX Input 4 Source */ | ||
| 1211 | { 0x000007EF, 0x0080 }, /* R2031 - SLIMTX6MIX Input 4 Volume */ | ||
| 1212 | { 0x000007F0, 0x0000 }, /* R2032 - SLIMTX7MIX Input 1 Source */ | ||
| 1213 | { 0x000007F1, 0x0080 }, /* R2033 - SLIMTX7MIX Input 1 Volume */ | ||
| 1214 | { 0x000007F2, 0x0000 }, /* R2034 - SLIMTX7MIX Input 2 Source */ | ||
| 1215 | { 0x000007F3, 0x0080 }, /* R2035 - SLIMTX7MIX Input 2 Volume */ | ||
| 1216 | { 0x000007F4, 0x0000 }, /* R2036 - SLIMTX7MIX Input 3 Source */ | ||
| 1217 | { 0x000007F5, 0x0080 }, /* R2037 - SLIMTX7MIX Input 3 Volume */ | ||
| 1218 | { 0x000007F6, 0x0000 }, /* R2038 - SLIMTX7MIX Input 4 Source */ | ||
| 1219 | { 0x000007F7, 0x0080 }, /* R2039 - SLIMTX7MIX Input 4 Volume */ | ||
| 1220 | { 0x000007F8, 0x0000 }, /* R2040 - SLIMTX8MIX Input 1 Source */ | ||
| 1221 | { 0x000007F9, 0x0080 }, /* R2041 - SLIMTX8MIX Input 1 Volume */ | ||
| 1222 | { 0x000007FA, 0x0000 }, /* R2042 - SLIMTX8MIX Input 2 Source */ | ||
| 1223 | { 0x000007FB, 0x0080 }, /* R2043 - SLIMTX8MIX Input 2 Volume */ | ||
| 1224 | { 0x000007FC, 0x0000 }, /* R2044 - SLIMTX8MIX Input 3 Source */ | ||
| 1225 | { 0x000007FD, 0x0080 }, /* R2045 - SLIMTX8MIX Input 3 Volume */ | ||
| 1226 | { 0x000007FE, 0x0000 }, /* R2046 - SLIMTX8MIX Input 4 Source */ | ||
| 1227 | { 0x000007FF, 0x0080 }, /* R2047 - SLIMTX8MIX Input 4 Volume */ | ||
| 1228 | { 0x00000880, 0x0000 }, /* R2176 - EQ1MIX Input 1 Source */ | ||
| 1229 | { 0x00000881, 0x0080 }, /* R2177 - EQ1MIX Input 1 Volume */ | ||
| 1230 | { 0x00000882, 0x0000 }, /* R2178 - EQ1MIX Input 2 Source */ | ||
| 1231 | { 0x00000883, 0x0080 }, /* R2179 - EQ1MIX Input 2 Volume */ | ||
| 1232 | { 0x00000884, 0x0000 }, /* R2180 - EQ1MIX Input 3 Source */ | ||
| 1233 | { 0x00000885, 0x0080 }, /* R2181 - EQ1MIX Input 3 Volume */ | ||
| 1234 | { 0x00000886, 0x0000 }, /* R2182 - EQ1MIX Input 4 Source */ | ||
| 1235 | { 0x00000887, 0x0080 }, /* R2183 - EQ1MIX Input 4 Volume */ | ||
| 1236 | { 0x00000888, 0x0000 }, /* R2184 - EQ2MIX Input 1 Source */ | ||
| 1237 | { 0x00000889, 0x0080 }, /* R2185 - EQ2MIX Input 1 Volume */ | ||
| 1238 | { 0x0000088A, 0x0000 }, /* R2186 - EQ2MIX Input 2 Source */ | ||
| 1239 | { 0x0000088B, 0x0080 }, /* R2187 - EQ2MIX Input 2 Volume */ | ||
| 1240 | { 0x0000088C, 0x0000 }, /* R2188 - EQ2MIX Input 3 Source */ | ||
| 1241 | { 0x0000088D, 0x0080 }, /* R2189 - EQ2MIX Input 3 Volume */ | ||
| 1242 | { 0x0000088E, 0x0000 }, /* R2190 - EQ2MIX Input 4 Source */ | ||
| 1243 | { 0x0000088F, 0x0080 }, /* R2191 - EQ2MIX Input 4 Volume */ | ||
| 1244 | { 0x00000890, 0x0000 }, /* R2192 - EQ3MIX Input 1 Source */ | ||
| 1245 | { 0x00000891, 0x0080 }, /* R2193 - EQ3MIX Input 1 Volume */ | ||
| 1246 | { 0x00000892, 0x0000 }, /* R2194 - EQ3MIX Input 2 Source */ | ||
| 1247 | { 0x00000893, 0x0080 }, /* R2195 - EQ3MIX Input 2 Volume */ | ||
| 1248 | { 0x00000894, 0x0000 }, /* R2196 - EQ3MIX Input 3 Source */ | ||
| 1249 | { 0x00000895, 0x0080 }, /* R2197 - EQ3MIX Input 3 Volume */ | ||
| 1250 | { 0x00000896, 0x0000 }, /* R2198 - EQ3MIX Input 4 Source */ | ||
| 1251 | { 0x00000897, 0x0080 }, /* R2199 - EQ3MIX Input 4 Volume */ | ||
| 1252 | { 0x00000898, 0x0000 }, /* R2200 - EQ4MIX Input 1 Source */ | ||
| 1253 | { 0x00000899, 0x0080 }, /* R2201 - EQ4MIX Input 1 Volume */ | ||
| 1254 | { 0x0000089A, 0x0000 }, /* R2202 - EQ4MIX Input 2 Source */ | ||
| 1255 | { 0x0000089B, 0x0080 }, /* R2203 - EQ4MIX Input 2 Volume */ | ||
| 1256 | { 0x0000089C, 0x0000 }, /* R2204 - EQ4MIX Input 3 Source */ | ||
| 1257 | { 0x0000089D, 0x0080 }, /* R2205 - EQ4MIX Input 3 Volume */ | ||
| 1258 | { 0x0000089E, 0x0000 }, /* R2206 - EQ4MIX Input 4 Source */ | ||
| 1259 | { 0x0000089F, 0x0080 }, /* R2207 - EQ4MIX Input 4 Volume */ | ||
| 1260 | { 0x000008C0, 0x0000 }, /* R2240 - DRC1LMIX Input 1 Source */ | ||
| 1261 | { 0x000008C1, 0x0080 }, /* R2241 - DRC1LMIX Input 1 Volume */ | ||
| 1262 | { 0x000008C2, 0x0000 }, /* R2242 - DRC1LMIX Input 2 Source */ | ||
| 1263 | { 0x000008C3, 0x0080 }, /* R2243 - DRC1LMIX Input 2 Volume */ | ||
| 1264 | { 0x000008C4, 0x0000 }, /* R2244 - DRC1LMIX Input 3 Source */ | ||
| 1265 | { 0x000008C5, 0x0080 }, /* R2245 - DRC1LMIX Input 3 Volume */ | ||
| 1266 | { 0x000008C6, 0x0000 }, /* R2246 - DRC1LMIX Input 4 Source */ | ||
| 1267 | { 0x000008C7, 0x0080 }, /* R2247 - DRC1LMIX Input 4 Volume */ | ||
| 1268 | { 0x000008C8, 0x0000 }, /* R2248 - DRC1RMIX Input 1 Source */ | ||
| 1269 | { 0x000008C9, 0x0080 }, /* R2249 - DRC1RMIX Input 1 Volume */ | ||
| 1270 | { 0x000008CA, 0x0000 }, /* R2250 - DRC1RMIX Input 2 Source */ | ||
| 1271 | { 0x000008CB, 0x0080 }, /* R2251 - DRC1RMIX Input 2 Volume */ | ||
| 1272 | { 0x000008CC, 0x0000 }, /* R2252 - DRC1RMIX Input 3 Source */ | ||
| 1273 | { 0x000008CD, 0x0080 }, /* R2253 - DRC1RMIX Input 3 Volume */ | ||
| 1274 | { 0x000008CE, 0x0000 }, /* R2254 - DRC1RMIX Input 4 Source */ | ||
| 1275 | { 0x000008CF, 0x0080 }, /* R2255 - DRC1RMIX Input 4 Volume */ | ||
| 1276 | { 0x000008D0, 0x0000 }, /* R2256 - DRC2LMIX Input 1 Source */ | ||
| 1277 | { 0x000008D1, 0x0080 }, /* R2257 - DRC2LMIX Input 1 Volume */ | ||
| 1278 | { 0x000008D2, 0x0000 }, /* R2258 - DRC2LMIX Input 2 Source */ | ||
| 1279 | { 0x000008D3, 0x0080 }, /* R2259 - DRC2LMIX Input 2 Volume */ | ||
| 1280 | { 0x000008D4, 0x0000 }, /* R2260 - DRC2LMIX Input 3 Source */ | ||
| 1281 | { 0x000008D5, 0x0080 }, /* R2261 - DRC2LMIX Input 3 Volume */ | ||
| 1282 | { 0x000008D6, 0x0000 }, /* R2262 - DRC2LMIX Input 4 Source */ | ||
| 1283 | { 0x000008D7, 0x0080 }, /* R2263 - DRC2LMIX Input 4 Volume */ | ||
| 1284 | { 0x000008D8, 0x0000 }, /* R2264 - DRC2RMIX Input 1 Source */ | ||
| 1285 | { 0x000008D9, 0x0080 }, /* R2265 - DRC2RMIX Input 1 Volume */ | ||
| 1286 | { 0x000008DA, 0x0000 }, /* R2266 - DRC2RMIX Input 2 Source */ | ||
| 1287 | { 0x000008DB, 0x0080 }, /* R2267 - DRC2RMIX Input 2 Volume */ | ||
| 1288 | { 0x000008DC, 0x0000 }, /* R2268 - DRC2RMIX Input 3 Source */ | ||
| 1289 | { 0x000008DD, 0x0080 }, /* R2269 - DRC2RMIX Input 3 Volume */ | ||
| 1290 | { 0x000008DE, 0x0000 }, /* R2270 - DRC2RMIX Input 4 Source */ | ||
| 1291 | { 0x000008DF, 0x0080 }, /* R2271 - DRC2RMIX Input 4 Volume */ | ||
| 1292 | { 0x00000900, 0x0000 }, /* R2304 - HPLP1MIX Input 1 Source */ | ||
| 1293 | { 0x00000901, 0x0080 }, /* R2305 - HPLP1MIX Input 1 Volume */ | ||
| 1294 | { 0x00000902, 0x0000 }, /* R2306 - HPLP1MIX Input 2 Source */ | ||
| 1295 | { 0x00000903, 0x0080 }, /* R2307 - HPLP1MIX Input 2 Volume */ | ||
| 1296 | { 0x00000904, 0x0000 }, /* R2308 - HPLP1MIX Input 3 Source */ | ||
| 1297 | { 0x00000905, 0x0080 }, /* R2309 - HPLP1MIX Input 3 Volume */ | ||
| 1298 | { 0x00000906, 0x0000 }, /* R2310 - HPLP1MIX Input 4 Source */ | ||
| 1299 | { 0x00000907, 0x0080 }, /* R2311 - HPLP1MIX Input 4 Volume */ | ||
| 1300 | { 0x00000908, 0x0000 }, /* R2312 - HPLP2MIX Input 1 Source */ | ||
| 1301 | { 0x00000909, 0x0080 }, /* R2313 - HPLP2MIX Input 1 Volume */ | ||
| 1302 | { 0x0000090A, 0x0000 }, /* R2314 - HPLP2MIX Input 2 Source */ | ||
| 1303 | { 0x0000090B, 0x0080 }, /* R2315 - HPLP2MIX Input 2 Volume */ | ||
| 1304 | { 0x0000090C, 0x0000 }, /* R2316 - HPLP2MIX Input 3 Source */ | ||
| 1305 | { 0x0000090D, 0x0080 }, /* R2317 - HPLP2MIX Input 3 Volume */ | ||
| 1306 | { 0x0000090E, 0x0000 }, /* R2318 - HPLP2MIX Input 4 Source */ | ||
| 1307 | { 0x0000090F, 0x0080 }, /* R2319 - HPLP2MIX Input 4 Volume */ | ||
| 1308 | { 0x00000910, 0x0000 }, /* R2320 - HPLP3MIX Input 1 Source */ | ||
| 1309 | { 0x00000911, 0x0080 }, /* R2321 - HPLP3MIX Input 1 Volume */ | ||
| 1310 | { 0x00000912, 0x0000 }, /* R2322 - HPLP3MIX Input 2 Source */ | ||
| 1311 | { 0x00000913, 0x0080 }, /* R2323 - HPLP3MIX Input 2 Volume */ | ||
| 1312 | { 0x00000914, 0x0000 }, /* R2324 - HPLP3MIX Input 3 Source */ | ||
| 1313 | { 0x00000915, 0x0080 }, /* R2325 - HPLP3MIX Input 3 Volume */ | ||
| 1314 | { 0x00000916, 0x0000 }, /* R2326 - HPLP3MIX Input 4 Source */ | ||
| 1315 | { 0x00000917, 0x0080 }, /* R2327 - HPLP3MIX Input 4 Volume */ | ||
| 1316 | { 0x00000918, 0x0000 }, /* R2328 - HPLP4MIX Input 1 Source */ | ||
| 1317 | { 0x00000919, 0x0080 }, /* R2329 - HPLP4MIX Input 1 Volume */ | ||
| 1318 | { 0x0000091A, 0x0000 }, /* R2330 - HPLP4MIX Input 2 Source */ | ||
| 1319 | { 0x0000091B, 0x0080 }, /* R2331 - HPLP4MIX Input 2 Volume */ | ||
| 1320 | { 0x0000091C, 0x0000 }, /* R2332 - HPLP4MIX Input 3 Source */ | ||
| 1321 | { 0x0000091D, 0x0080 }, /* R2333 - HPLP4MIX Input 3 Volume */ | ||
| 1322 | { 0x0000091E, 0x0000 }, /* R2334 - HPLP4MIX Input 4 Source */ | ||
| 1323 | { 0x0000091F, 0x0080 }, /* R2335 - HPLP4MIX Input 4 Volume */ | ||
| 1324 | { 0x00000940, 0x0000 }, /* R2368 - DSP1LMIX Input 1 Source */ | ||
| 1325 | { 0x00000941, 0x0080 }, /* R2369 - DSP1LMIX Input 1 Volume */ | ||
| 1326 | { 0x00000942, 0x0000 }, /* R2370 - DSP1LMIX Input 2 Source */ | ||
| 1327 | { 0x00000943, 0x0080 }, /* R2371 - DSP1LMIX Input 2 Volume */ | ||
| 1328 | { 0x00000944, 0x0000 }, /* R2372 - DSP1LMIX Input 3 Source */ | ||
| 1329 | { 0x00000945, 0x0080 }, /* R2373 - DSP1LMIX Input 3 Volume */ | ||
| 1330 | { 0x00000946, 0x0000 }, /* R2374 - DSP1LMIX Input 4 Source */ | ||
| 1331 | { 0x00000947, 0x0080 }, /* R2375 - DSP1LMIX Input 4 Volume */ | ||
| 1332 | { 0x00000948, 0x0000 }, /* R2376 - DSP1RMIX Input 1 Source */ | ||
| 1333 | { 0x00000949, 0x0080 }, /* R2377 - DSP1RMIX Input 1 Volume */ | ||
| 1334 | { 0x0000094A, 0x0000 }, /* R2378 - DSP1RMIX Input 2 Source */ | ||
| 1335 | { 0x0000094B, 0x0080 }, /* R2379 - DSP1RMIX Input 2 Volume */ | ||
| 1336 | { 0x0000094C, 0x0000 }, /* R2380 - DSP1RMIX Input 3 Source */ | ||
| 1337 | { 0x0000094D, 0x0080 }, /* R2381 - DSP1RMIX Input 3 Volume */ | ||
| 1338 | { 0x0000094E, 0x0000 }, /* R2382 - DSP1RMIX Input 4 Source */ | ||
| 1339 | { 0x0000094F, 0x0080 }, /* R2383 - DSP1RMIX Input 4 Volume */ | ||
| 1340 | { 0x00000950, 0x0000 }, /* R2384 - DSP1AUX1MIX Input 1 Source */ | ||
| 1341 | { 0x00000958, 0x0000 }, /* R2392 - DSP1AUX2MIX Input 1 Source */ | ||
| 1342 | { 0x00000960, 0x0000 }, /* R2400 - DSP1AUX3MIX Input 1 Source */ | ||
| 1343 | { 0x00000968, 0x0000 }, /* R2408 - DSP1AUX4MIX Input 1 Source */ | ||
| 1344 | { 0x00000970, 0x0000 }, /* R2416 - DSP1AUX5MIX Input 1 Source */ | ||
| 1345 | { 0x00000978, 0x0000 }, /* R2424 - DSP1AUX6MIX Input 1 Source */ | ||
| 1346 | { 0x00000A80, 0x0000 }, /* R2688 - ASRC1LMIX Input 1 Source */ | ||
| 1347 | { 0x00000A88, 0x0000 }, /* R2696 - ASRC1RMIX Input 1 Source */ | ||
| 1348 | { 0x00000A90, 0x0000 }, /* R2704 - ASRC2LMIX Input 1 Source */ | ||
| 1349 | { 0x00000A98, 0x0000 }, /* R2712 - ASRC2RMIX Input 1 Source */ | ||
| 1350 | { 0x00000B00, 0x0000 }, /* R2816 - ISRC1DEC1MIX Input 1 Source */ | ||
| 1351 | { 0x00000B08, 0x0000 }, /* R2824 - ISRC1DEC2MIX Input 1 Source */ | ||
| 1352 | { 0x00000B20, 0x0000 }, /* R2848 - ISRC1INT1MIX Input 1 Source */ | ||
| 1353 | { 0x00000B28, 0x0000 }, /* R2856 - ISRC1INT2MIX Input 1 Source */ | ||
| 1354 | { 0x00000B40, 0x0000 }, /* R2880 - ISRC2DEC1MIX Input 1 Source */ | ||
| 1355 | { 0x00000B48, 0x0000 }, /* R2888 - ISRC2DEC2MIX Input 1 Source */ | ||
| 1356 | { 0x00000B60, 0x0000 }, /* R2912 - ISRC2INT1MIX Input 1 Source */ | ||
| 1357 | { 0x00000B68, 0x0000 }, /* R2920 - ISRC2INT2MIX Input 1 Source */ | ||
| 1358 | { 0x00000C00, 0xA101 }, /* R3072 - GPIO1 CTRL */ | ||
| 1359 | { 0x00000C01, 0xA101 }, /* R3073 - GPIO2 CTRL */ | ||
| 1360 | { 0x00000C02, 0xA101 }, /* R3074 - GPIO3 CTRL */ | ||
| 1361 | { 0x00000C03, 0xA101 }, /* R3075 - GPIO4 CTRL */ | ||
| 1362 | { 0x00000C04, 0xA101 }, /* R3076 - GPIO5 CTRL */ | ||
| 1363 | { 0x00000C0F, 0x0400 }, /* R3087 - IRQ CTRL 1 */ | ||
| 1364 | { 0x00000C10, 0x1000 }, /* R3088 - GPIO Debounce Config */ | ||
| 1365 | { 0x00000C20, 0x8002 }, /* R3104 - Misc Pad Ctrl 1 */ | ||
| 1366 | { 0x00000C21, 0x8001 }, /* R3105 - Misc Pad Ctrl 2 */ | ||
| 1367 | { 0x00000C22, 0x0000 }, /* R3106 - Misc Pad Ctrl 3 */ | ||
| 1368 | { 0x00000C23, 0x0000 }, /* R3107 - Misc Pad Ctrl 4 */ | ||
| 1369 | { 0x00000C24, 0x0000 }, /* R3108 - Misc Pad Ctrl 5 */ | ||
| 1370 | { 0x00000C25, 0x0000 }, /* R3109 - Misc Pad Ctrl 6 */ | ||
| 1371 | { 0x00000D08, 0xFFFF }, /* R3336 - Interrupt Status 1 Mask */ | ||
| 1372 | { 0x00000D09, 0xFFFF }, /* R3337 - Interrupt Status 2 Mask */ | ||
| 1373 | { 0x00000D0A, 0xFFFF }, /* R3338 - Interrupt Status 3 Mask */ | ||
| 1374 | { 0x00000D0B, 0xFFFF }, /* R3339 - Interrupt Status 4 Mask */ | ||
| 1375 | { 0x00000D0C, 0xFEFF }, /* R3340 - Interrupt Status 5 Mask */ | ||
| 1376 | { 0x00000D0F, 0x0000 }, /* R3343 - Interrupt Control */ | ||
| 1377 | { 0x00000D18, 0xFFFF }, /* R3352 - IRQ2 Status 1 Mask */ | ||
| 1378 | { 0x00000D19, 0xFFFF }, /* R3353 - IRQ2 Status 2 Mask */ | ||
| 1379 | { 0x00000D1A, 0xFFFF }, /* R3354 - IRQ2 Status 3 Mask */ | ||
| 1380 | { 0x00000D1B, 0xFFFF }, /* R3355 - IRQ2 Status 4 Mask */ | ||
| 1381 | { 0x00000D1C, 0xFFFF }, /* R3356 - IRQ2 Status 5 Mask */ | ||
| 1382 | { 0x00000D1F, 0x0000 }, /* R3359 - IRQ2 Control */ | ||
| 1383 | { 0x00000D41, 0x0000 }, /* R3393 - ADSP2 IRQ0 */ | ||
| 1384 | { 0x00000D53, 0xFFFF }, /* R3411 - AOD IRQ Mask IRQ1 */ | ||
| 1385 | { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ | ||
| 1386 | { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ | ||
| 1387 | { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ | ||
| 1388 | { 0x00000E01, 0x0000 }, /* R3585 - FX_Ctrl2 */ | ||
| 1389 | { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ | ||
| 1390 | { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ | ||
| 1391 | { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ | ||
| 1392 | { 0x00000E13, 0x03FE }, /* R3603 - EQ1_4 */ | ||
| 1393 | { 0x00000E14, 0x00E0 }, /* R3604 - EQ1_5 */ | ||
| 1394 | { 0x00000E15, 0x1EC4 }, /* R3605 - EQ1_6 */ | ||
| 1395 | { 0x00000E16, 0xF136 }, /* R3606 - EQ1_7 */ | ||
| 1396 | { 0x00000E17, 0x0409 }, /* R3607 - EQ1_8 */ | ||
| 1397 | { 0x00000E18, 0x04CC }, /* R3608 - EQ1_9 */ | ||
| 1398 | { 0x00000E19, 0x1C9B }, /* R3609 - EQ1_10 */ | ||
| 1399 | { 0x00000E1A, 0xF337 }, /* R3610 - EQ1_11 */ | ||
| 1400 | { 0x00000E1B, 0x040B }, /* R3611 - EQ1_12 */ | ||
| 1401 | { 0x00000E1C, 0x0CBB }, /* R3612 - EQ1_13 */ | ||
| 1402 | { 0x00000E1D, 0x16F8 }, /* R3613 - EQ1_14 */ | ||
| 1403 | { 0x00000E1E, 0xF7D9 }, /* R3614 - EQ1_15 */ | ||
| 1404 | { 0x00000E1F, 0x040A }, /* R3615 - EQ1_16 */ | ||
| 1405 | { 0x00000E20, 0x1F14 }, /* R3616 - EQ1_17 */ | ||
| 1406 | { 0x00000E21, 0x058C }, /* R3617 - EQ1_18 */ | ||
| 1407 | { 0x00000E22, 0x0563 }, /* R3618 - EQ1_19 */ | ||
| 1408 | { 0x00000E23, 0x4000 }, /* R3619 - EQ1_20 */ | ||
| 1409 | { 0x00000E24, 0x0B75 }, /* R3620 - EQ1_21 */ | ||
| 1410 | { 0x00000E26, 0x6318 }, /* R3622 - EQ2_1 */ | ||
| 1411 | { 0x00000E27, 0x6300 }, /* R3623 - EQ2_2 */ | ||
| 1412 | { 0x00000E28, 0x0FC8 }, /* R3624 - EQ2_3 */ | ||
| 1413 | { 0x00000E29, 0x03FE }, /* R3625 - EQ2_4 */ | ||
| 1414 | { 0x00000E2A, 0x00E0 }, /* R3626 - EQ2_5 */ | ||
| 1415 | { 0x00000E2B, 0x1EC4 }, /* R3627 - EQ2_6 */ | ||
| 1416 | { 0x00000E2C, 0xF136 }, /* R3628 - EQ2_7 */ | ||
| 1417 | { 0x00000E2D, 0x0409 }, /* R3629 - EQ2_8 */ | ||
| 1418 | { 0x00000E2E, 0x04CC }, /* R3630 - EQ2_9 */ | ||
| 1419 | { 0x00000E2F, 0x1C9B }, /* R3631 - EQ2_10 */ | ||
| 1420 | { 0x00000E30, 0xF337 }, /* R3632 - EQ2_11 */ | ||
| 1421 | { 0x00000E31, 0x040B }, /* R3633 - EQ2_12 */ | ||
| 1422 | { 0x00000E32, 0x0CBB }, /* R3634 - EQ2_13 */ | ||
| 1423 | { 0x00000E33, 0x16F8 }, /* R3635 - EQ2_14 */ | ||
| 1424 | { 0x00000E34, 0xF7D9 }, /* R3636 - EQ2_15 */ | ||
| 1425 | { 0x00000E35, 0x040A }, /* R3637 - EQ2_16 */ | ||
| 1426 | { 0x00000E36, 0x1F14 }, /* R3638 - EQ2_17 */ | ||
| 1427 | { 0x00000E37, 0x058C }, /* R3639 - EQ2_18 */ | ||
| 1428 | { 0x00000E38, 0x0563 }, /* R3640 - EQ2_19 */ | ||
| 1429 | { 0x00000E39, 0x4000 }, /* R3641 - EQ2_20 */ | ||
| 1430 | { 0x00000E3A, 0x0B75 }, /* R3642 - EQ2_21 */ | ||
| 1431 | { 0x00000E3C, 0x6318 }, /* R3644 - EQ3_1 */ | ||
| 1432 | { 0x00000E3D, 0x6300 }, /* R3645 - EQ3_2 */ | ||
| 1433 | { 0x00000E3E, 0x0FC8 }, /* R3646 - EQ3_3 */ | ||
| 1434 | { 0x00000E3F, 0x03FE }, /* R3647 - EQ3_4 */ | ||
| 1435 | { 0x00000E40, 0x00E0 }, /* R3648 - EQ3_5 */ | ||
| 1436 | { 0x00000E41, 0x1EC4 }, /* R3649 - EQ3_6 */ | ||
| 1437 | { 0x00000E42, 0xF136 }, /* R3650 - EQ3_7 */ | ||
| 1438 | { 0x00000E43, 0x0409 }, /* R3651 - EQ3_8 */ | ||
| 1439 | { 0x00000E44, 0x04CC }, /* R3652 - EQ3_9 */ | ||
| 1440 | { 0x00000E45, 0x1C9B }, /* R3653 - EQ3_10 */ | ||
| 1441 | { 0x00000E46, 0xF337 }, /* R3654 - EQ3_11 */ | ||
| 1442 | { 0x00000E47, 0x040B }, /* R3655 - EQ3_12 */ | ||
| 1443 | { 0x00000E48, 0x0CBB }, /* R3656 - EQ3_13 */ | ||
| 1444 | { 0x00000E49, 0x16F8 }, /* R3657 - EQ3_14 */ | ||
| 1445 | { 0x00000E4A, 0xF7D9 }, /* R3658 - EQ3_15 */ | ||
| 1446 | { 0x00000E4B, 0x040A }, /* R3659 - EQ3_16 */ | ||
| 1447 | { 0x00000E4C, 0x1F14 }, /* R3660 - EQ3_17 */ | ||
| 1448 | { 0x00000E4D, 0x058C }, /* R3661 - EQ3_18 */ | ||
| 1449 | { 0x00000E4E, 0x0563 }, /* R3662 - EQ3_19 */ | ||
| 1450 | { 0x00000E4F, 0x4000 }, /* R3663 - EQ3_20 */ | ||
| 1451 | { 0x00000E50, 0x0B75 }, /* R3664 - EQ3_21 */ | ||
| 1452 | { 0x00000E52, 0x6318 }, /* R3666 - EQ4_1 */ | ||
| 1453 | { 0x00000E53, 0x6300 }, /* R3667 - EQ4_2 */ | ||
| 1454 | { 0x00000E54, 0x0FC8 }, /* R3668 - EQ4_3 */ | ||
| 1455 | { 0x00000E55, 0x03FE }, /* R3669 - EQ4_4 */ | ||
| 1456 | { 0x00000E56, 0x00E0 }, /* R3670 - EQ4_5 */ | ||
| 1457 | { 0x00000E57, 0x1EC4 }, /* R3671 - EQ4_6 */ | ||
| 1458 | { 0x00000E58, 0xF136 }, /* R3672 - EQ4_7 */ | ||
| 1459 | { 0x00000E59, 0x0409 }, /* R3673 - EQ4_8 */ | ||
| 1460 | { 0x00000E5A, 0x04CC }, /* R3674 - EQ4_9 */ | ||
| 1461 | { 0x00000E5B, 0x1C9B }, /* R3675 - EQ4_10 */ | ||
| 1462 | { 0x00000E5C, 0xF337 }, /* R3676 - EQ4_11 */ | ||
| 1463 | { 0x00000E5D, 0x040B }, /* R3677 - EQ4_12 */ | ||
| 1464 | { 0x00000E5E, 0x0CBB }, /* R3678 - EQ4_13 */ | ||
| 1465 | { 0x00000E5F, 0x16F8 }, /* R3679 - EQ4_14 */ | ||
| 1466 | { 0x00000E60, 0xF7D9 }, /* R3680 - EQ4_15 */ | ||
| 1467 | { 0x00000E61, 0x040A }, /* R3681 - EQ4_16 */ | ||
| 1468 | { 0x00000E62, 0x1F14 }, /* R3682 - EQ4_17 */ | ||
| 1469 | { 0x00000E63, 0x058C }, /* R3683 - EQ4_18 */ | ||
| 1470 | { 0x00000E64, 0x0563 }, /* R3684 - EQ4_19 */ | ||
| 1471 | { 0x00000E65, 0x4000 }, /* R3685 - EQ4_20 */ | ||
| 1472 | { 0x00000E66, 0x0B75 }, /* R3686 - EQ4_21 */ | ||
| 1473 | { 0x00000E80, 0x0018 }, /* R3712 - DRC1 ctrl1 */ | ||
| 1474 | { 0x00000E81, 0x0933 }, /* R3713 - DRC1 ctrl2 */ | ||
| 1475 | { 0x00000E82, 0x0018 }, /* R3714 - DRC1 ctrl3 */ | ||
| 1476 | { 0x00000E83, 0x0000 }, /* R3715 - DRC1 ctrl4 */ | ||
| 1477 | { 0x00000E84, 0x0000 }, /* R3716 - DRC1 ctrl5 */ | ||
| 1478 | { 0x00000E89, 0x0018 }, /* R3721 - DRC2 ctrl1 */ | ||
| 1479 | { 0x00000E8A, 0x0933 }, /* R3722 - DRC2 ctrl2 */ | ||
| 1480 | { 0x00000E8B, 0x0018 }, /* R3723 - DRC2 ctrl3 */ | ||
| 1481 | { 0x00000E8C, 0x0000 }, /* R3724 - DRC2 ctrl4 */ | ||
| 1482 | { 0x00000E8D, 0x0000 }, /* R3725 - DRC2 ctrl5 */ | ||
| 1483 | { 0x00000EC0, 0x0000 }, /* R3776 - HPLPF1_1 */ | ||
| 1484 | { 0x00000EC1, 0x0000 }, /* R3777 - HPLPF1_2 */ | ||
| 1485 | { 0x00000EC4, 0x0000 }, /* R3780 - HPLPF2_1 */ | ||
| 1486 | { 0x00000EC5, 0x0000 }, /* R3781 - HPLPF2_2 */ | ||
| 1487 | { 0x00000EC8, 0x0000 }, /* R3784 - HPLPF3_1 */ | ||
| 1488 | { 0x00000EC9, 0x0000 }, /* R3785 - HPLPF3_2 */ | ||
| 1489 | { 0x00000ECC, 0x0000 }, /* R3788 - HPLPF4_1 */ | ||
| 1490 | { 0x00000ECD, 0x0000 }, /* R3789 - HPLPF4_2 */ | ||
| 1491 | { 0x00000EE0, 0x0000 }, /* R3808 - ASRC_ENABLE */ | ||
| 1492 | { 0x00000EE2, 0x0000 }, /* R3810 - ASRC_RATE1 */ | ||
| 1493 | { 0x00000EE3, 0x4000 }, /* R3811 - ASRC_RATE2 */ | ||
| 1494 | { 0x00000EF0, 0x0000 }, /* R3824 - ISRC 1 CTRL 1 */ | ||
| 1495 | { 0x00000EF1, 0x0000 }, /* R3825 - ISRC 1 CTRL 2 */ | ||
| 1496 | { 0x00000EF2, 0x0000 }, /* R3826 - ISRC 1 CTRL 3 */ | ||
| 1497 | { 0x00000EF3, 0x0000 }, /* R3827 - ISRC 2 CTRL 1 */ | ||
| 1498 | { 0x00000EF4, 0x0000 }, /* R3828 - ISRC 2 CTRL 2 */ | ||
| 1499 | { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */ | ||
| 1500 | { 0x00000EF6, 0x0000 }, /* R3830 - ISRC 3 CTRL 1 */ | ||
| 1501 | { 0x00000EF7, 0x0000 }, /* R3831 - ISRC 3 CTRL 2 */ | ||
| 1502 | { 0x00000EF8, 0x0000 }, /* R3832 - ISRC 3 CTRL 3 */ | ||
| 1503 | { 0x00001100, 0x0010 }, /* R4352 - DSP1 Control 1 */ | ||
| 1504 | { 0x00001101, 0x0000 }, /* R4353 - DSP1 Clocking 1 */ | ||
| 1505 | }; | ||
| 1506 | |||
| 1507 | static bool wm5102_readable_register(struct device *dev, unsigned int reg) | ||
| 1508 | { | ||
| 1509 | switch (reg) { | ||
| 1510 | case ARIZONA_SOFTWARE_RESET: | ||
| 1511 | case ARIZONA_DEVICE_REVISION: | ||
| 1512 | case ARIZONA_CTRL_IF_SPI_CFG_1: | ||
| 1513 | case ARIZONA_CTRL_IF_I2C1_CFG_1: | ||
| 1514 | case ARIZONA_CTRL_IF_STATUS_1: | ||
| 1515 | case ARIZONA_WRITE_SEQUENCER_CTRL_0: | ||
| 1516 | case ARIZONA_WRITE_SEQUENCER_CTRL_1: | ||
| 1517 | case ARIZONA_WRITE_SEQUENCER_CTRL_2: | ||
| 1518 | case ARIZONA_WRITE_SEQUENCER_PROM: | ||
| 1519 | case ARIZONA_TONE_GENERATOR_1: | ||
| 1520 | case ARIZONA_TONE_GENERATOR_2: | ||
| 1521 | case ARIZONA_TONE_GENERATOR_3: | ||
| 1522 | case ARIZONA_TONE_GENERATOR_4: | ||
| 1523 | case ARIZONA_TONE_GENERATOR_5: | ||
| 1524 | case ARIZONA_PWM_DRIVE_1: | ||
| 1525 | case ARIZONA_PWM_DRIVE_2: | ||
| 1526 | case ARIZONA_PWM_DRIVE_3: | ||
| 1527 | case ARIZONA_WAKE_CONTROL: | ||
| 1528 | case ARIZONA_SEQUENCE_CONTROL: | ||
| 1529 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1: | ||
| 1530 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2: | ||
| 1531 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3: | ||
| 1532 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_4: | ||
| 1533 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_1: | ||
| 1534 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_2: | ||
| 1535 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_3: | ||
| 1536 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4: | ||
| 1537 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_5: | ||
| 1538 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_6: | ||
| 1539 | case ARIZONA_COMFORT_NOISE_GENERATOR: | ||
| 1540 | case ARIZONA_HAPTICS_CONTROL_1: | ||
| 1541 | case ARIZONA_HAPTICS_CONTROL_2: | ||
| 1542 | case ARIZONA_HAPTICS_PHASE_1_INTENSITY: | ||
| 1543 | case ARIZONA_HAPTICS_PHASE_1_DURATION: | ||
| 1544 | case ARIZONA_HAPTICS_PHASE_2_INTENSITY: | ||
| 1545 | case ARIZONA_HAPTICS_PHASE_2_DURATION: | ||
| 1546 | case ARIZONA_HAPTICS_PHASE_3_INTENSITY: | ||
| 1547 | case ARIZONA_HAPTICS_PHASE_3_DURATION: | ||
| 1548 | case ARIZONA_HAPTICS_STATUS: | ||
| 1549 | case ARIZONA_CLOCK_32K_1: | ||
| 1550 | case ARIZONA_SYSTEM_CLOCK_1: | ||
| 1551 | case ARIZONA_SAMPLE_RATE_1: | ||
| 1552 | case ARIZONA_SAMPLE_RATE_2: | ||
| 1553 | case ARIZONA_SAMPLE_RATE_3: | ||
| 1554 | case ARIZONA_SAMPLE_RATE_1_STATUS: | ||
| 1555 | case ARIZONA_SAMPLE_RATE_2_STATUS: | ||
| 1556 | case ARIZONA_SAMPLE_RATE_3_STATUS: | ||
| 1557 | case ARIZONA_ASYNC_CLOCK_1: | ||
| 1558 | case ARIZONA_ASYNC_SAMPLE_RATE_1: | ||
| 1559 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | ||
| 1560 | case ARIZONA_OUTPUT_SYSTEM_CLOCK: | ||
| 1561 | case ARIZONA_OUTPUT_ASYNC_CLOCK: | ||
| 1562 | case ARIZONA_RATE_ESTIMATOR_1: | ||
| 1563 | case ARIZONA_RATE_ESTIMATOR_2: | ||
| 1564 | case ARIZONA_RATE_ESTIMATOR_3: | ||
| 1565 | case ARIZONA_RATE_ESTIMATOR_4: | ||
| 1566 | case ARIZONA_RATE_ESTIMATOR_5: | ||
| 1567 | case ARIZONA_FLL1_CONTROL_1: | ||
| 1568 | case ARIZONA_FLL1_CONTROL_2: | ||
| 1569 | case ARIZONA_FLL1_CONTROL_3: | ||
| 1570 | case ARIZONA_FLL1_CONTROL_4: | ||
| 1571 | case ARIZONA_FLL1_CONTROL_5: | ||
| 1572 | case ARIZONA_FLL1_CONTROL_6: | ||
| 1573 | case ARIZONA_FLL1_LOOP_FILTER_TEST_1: | ||
| 1574 | case ARIZONA_FLL1_SYNCHRONISER_1: | ||
| 1575 | case ARIZONA_FLL1_SYNCHRONISER_2: | ||
| 1576 | case ARIZONA_FLL1_SYNCHRONISER_3: | ||
| 1577 | case ARIZONA_FLL1_SYNCHRONISER_4: | ||
| 1578 | case ARIZONA_FLL1_SYNCHRONISER_5: | ||
| 1579 | case ARIZONA_FLL1_SYNCHRONISER_6: | ||
| 1580 | case ARIZONA_FLL1_SPREAD_SPECTRUM: | ||
| 1581 | case ARIZONA_FLL1_GPIO_CLOCK: | ||
| 1582 | case ARIZONA_FLL2_CONTROL_1: | ||
| 1583 | case ARIZONA_FLL2_CONTROL_2: | ||
| 1584 | case ARIZONA_FLL2_CONTROL_3: | ||
| 1585 | case ARIZONA_FLL2_CONTROL_4: | ||
| 1586 | case ARIZONA_FLL2_CONTROL_5: | ||
| 1587 | case ARIZONA_FLL2_CONTROL_6: | ||
| 1588 | case ARIZONA_FLL2_LOOP_FILTER_TEST_1: | ||
| 1589 | case ARIZONA_FLL2_SYNCHRONISER_1: | ||
| 1590 | case ARIZONA_FLL2_SYNCHRONISER_2: | ||
| 1591 | case ARIZONA_FLL2_SYNCHRONISER_3: | ||
| 1592 | case ARIZONA_FLL2_SYNCHRONISER_4: | ||
| 1593 | case ARIZONA_FLL2_SYNCHRONISER_5: | ||
| 1594 | case ARIZONA_FLL2_SYNCHRONISER_6: | ||
| 1595 | case ARIZONA_FLL2_SPREAD_SPECTRUM: | ||
| 1596 | case ARIZONA_FLL2_GPIO_CLOCK: | ||
| 1597 | case ARIZONA_MIC_CHARGE_PUMP_1: | ||
| 1598 | case ARIZONA_LDO1_CONTROL_1: | ||
| 1599 | case ARIZONA_LDO2_CONTROL_1: | ||
| 1600 | case ARIZONA_MIC_BIAS_CTRL_1: | ||
| 1601 | case ARIZONA_MIC_BIAS_CTRL_2: | ||
| 1602 | case ARIZONA_MIC_BIAS_CTRL_3: | ||
| 1603 | case ARIZONA_ACCESSORY_DETECT_MODE_1: | ||
| 1604 | case ARIZONA_HEADPHONE_DETECT_1: | ||
| 1605 | case ARIZONA_HEADPHONE_DETECT_2: | ||
| 1606 | case ARIZONA_MIC_DETECT_1: | ||
| 1607 | case ARIZONA_MIC_DETECT_2: | ||
| 1608 | case ARIZONA_MIC_DETECT_3: | ||
| 1609 | case ARIZONA_MIC_NOISE_MIX_CONTROL_1: | ||
| 1610 | case ARIZONA_ISOLATION_CONTROL: | ||
| 1611 | case ARIZONA_JACK_DETECT_ANALOGUE: | ||
| 1612 | case ARIZONA_INPUT_ENABLES: | ||
| 1613 | case ARIZONA_INPUT_RATE: | ||
| 1614 | case ARIZONA_INPUT_VOLUME_RAMP: | ||
| 1615 | case ARIZONA_IN1L_CONTROL: | ||
| 1616 | case ARIZONA_ADC_DIGITAL_VOLUME_1L: | ||
| 1617 | case ARIZONA_DMIC1L_CONTROL: | ||
| 1618 | case ARIZONA_IN1R_CONTROL: | ||
| 1619 | case ARIZONA_ADC_DIGITAL_VOLUME_1R: | ||
| 1620 | case ARIZONA_DMIC1R_CONTROL: | ||
| 1621 | case ARIZONA_IN2L_CONTROL: | ||
| 1622 | case ARIZONA_ADC_DIGITAL_VOLUME_2L: | ||
| 1623 | case ARIZONA_DMIC2L_CONTROL: | ||
| 1624 | case ARIZONA_IN2R_CONTROL: | ||
| 1625 | case ARIZONA_ADC_DIGITAL_VOLUME_2R: | ||
| 1626 | case ARIZONA_DMIC2R_CONTROL: | ||
| 1627 | case ARIZONA_IN3L_CONTROL: | ||
| 1628 | case ARIZONA_ADC_DIGITAL_VOLUME_3L: | ||
| 1629 | case ARIZONA_DMIC3L_CONTROL: | ||
| 1630 | case ARIZONA_IN3R_CONTROL: | ||
| 1631 | case ARIZONA_ADC_DIGITAL_VOLUME_3R: | ||
| 1632 | case ARIZONA_DMIC3R_CONTROL: | ||
| 1633 | case ARIZONA_OUTPUT_ENABLES_1: | ||
| 1634 | case ARIZONA_OUTPUT_STATUS_1: | ||
| 1635 | case ARIZONA_OUTPUT_RATE_1: | ||
| 1636 | case ARIZONA_OUTPUT_VOLUME_RAMP: | ||
| 1637 | case ARIZONA_OUTPUT_PATH_CONFIG_1L: | ||
| 1638 | case ARIZONA_DAC_DIGITAL_VOLUME_1L: | ||
| 1639 | case ARIZONA_DAC_VOLUME_LIMIT_1L: | ||
| 1640 | case ARIZONA_NOISE_GATE_SELECT_1L: | ||
| 1641 | case ARIZONA_OUTPUT_PATH_CONFIG_1R: | ||
| 1642 | case ARIZONA_DAC_DIGITAL_VOLUME_1R: | ||
| 1643 | case ARIZONA_DAC_VOLUME_LIMIT_1R: | ||
| 1644 | case ARIZONA_NOISE_GATE_SELECT_1R: | ||
| 1645 | case ARIZONA_OUTPUT_PATH_CONFIG_2L: | ||
| 1646 | case ARIZONA_DAC_DIGITAL_VOLUME_2L: | ||
| 1647 | case ARIZONA_DAC_VOLUME_LIMIT_2L: | ||
| 1648 | case ARIZONA_NOISE_GATE_SELECT_2L: | ||
| 1649 | case ARIZONA_OUTPUT_PATH_CONFIG_2R: | ||
| 1650 | case ARIZONA_DAC_DIGITAL_VOLUME_2R: | ||
| 1651 | case ARIZONA_DAC_VOLUME_LIMIT_2R: | ||
| 1652 | case ARIZONA_NOISE_GATE_SELECT_2R: | ||
| 1653 | case ARIZONA_OUTPUT_PATH_CONFIG_3L: | ||
| 1654 | case ARIZONA_DAC_DIGITAL_VOLUME_3L: | ||
| 1655 | case ARIZONA_DAC_VOLUME_LIMIT_3L: | ||
| 1656 | case ARIZONA_NOISE_GATE_SELECT_3L: | ||
| 1657 | case ARIZONA_OUTPUT_PATH_CONFIG_3R: | ||
| 1658 | case ARIZONA_DAC_DIGITAL_VOLUME_3R: | ||
| 1659 | case ARIZONA_DAC_VOLUME_LIMIT_3R: | ||
| 1660 | case ARIZONA_OUTPUT_PATH_CONFIG_4L: | ||
| 1661 | case ARIZONA_DAC_DIGITAL_VOLUME_4L: | ||
| 1662 | case ARIZONA_OUT_VOLUME_4L: | ||
| 1663 | case ARIZONA_NOISE_GATE_SELECT_4L: | ||
| 1664 | case ARIZONA_OUTPUT_PATH_CONFIG_4R: | ||
| 1665 | case ARIZONA_DAC_DIGITAL_VOLUME_4R: | ||
| 1666 | case ARIZONA_OUT_VOLUME_4R: | ||
| 1667 | case ARIZONA_NOISE_GATE_SELECT_4R: | ||
| 1668 | case ARIZONA_OUTPUT_PATH_CONFIG_5L: | ||
| 1669 | case ARIZONA_DAC_DIGITAL_VOLUME_5L: | ||
| 1670 | case ARIZONA_DAC_VOLUME_LIMIT_5L: | ||
| 1671 | case ARIZONA_NOISE_GATE_SELECT_5L: | ||
| 1672 | case ARIZONA_OUTPUT_PATH_CONFIG_5R: | ||
| 1673 | case ARIZONA_DAC_DIGITAL_VOLUME_5R: | ||
| 1674 | case ARIZONA_DAC_VOLUME_LIMIT_5R: | ||
| 1675 | case ARIZONA_NOISE_GATE_SELECT_5R: | ||
| 1676 | case ARIZONA_DAC_AEC_CONTROL_1: | ||
| 1677 | case ARIZONA_NOISE_GATE_CONTROL: | ||
| 1678 | case ARIZONA_PDM_SPK1_CTRL_1: | ||
| 1679 | case ARIZONA_PDM_SPK1_CTRL_2: | ||
| 1680 | case ARIZONA_DAC_COMP_1: | ||
| 1681 | case ARIZONA_DAC_COMP_2: | ||
| 1682 | case ARIZONA_DAC_COMP_3: | ||
| 1683 | case ARIZONA_DAC_COMP_4: | ||
| 1684 | case ARIZONA_AIF1_BCLK_CTRL: | ||
| 1685 | case ARIZONA_AIF1_TX_PIN_CTRL: | ||
| 1686 | case ARIZONA_AIF1_RX_PIN_CTRL: | ||
| 1687 | case ARIZONA_AIF1_RATE_CTRL: | ||
| 1688 | case ARIZONA_AIF1_FORMAT: | ||
| 1689 | case ARIZONA_AIF1_TX_BCLK_RATE: | ||
| 1690 | case ARIZONA_AIF1_RX_BCLK_RATE: | ||
| 1691 | case ARIZONA_AIF1_FRAME_CTRL_1: | ||
| 1692 | case ARIZONA_AIF1_FRAME_CTRL_2: | ||
| 1693 | case ARIZONA_AIF1_FRAME_CTRL_3: | ||
| 1694 | case ARIZONA_AIF1_FRAME_CTRL_4: | ||
| 1695 | case ARIZONA_AIF1_FRAME_CTRL_5: | ||
| 1696 | case ARIZONA_AIF1_FRAME_CTRL_6: | ||
| 1697 | case ARIZONA_AIF1_FRAME_CTRL_7: | ||
| 1698 | case ARIZONA_AIF1_FRAME_CTRL_8: | ||
| 1699 | case ARIZONA_AIF1_FRAME_CTRL_9: | ||
| 1700 | case ARIZONA_AIF1_FRAME_CTRL_10: | ||
| 1701 | case ARIZONA_AIF1_FRAME_CTRL_11: | ||
| 1702 | case ARIZONA_AIF1_FRAME_CTRL_12: | ||
| 1703 | case ARIZONA_AIF1_FRAME_CTRL_13: | ||
| 1704 | case ARIZONA_AIF1_FRAME_CTRL_14: | ||
| 1705 | case ARIZONA_AIF1_FRAME_CTRL_15: | ||
| 1706 | case ARIZONA_AIF1_FRAME_CTRL_16: | ||
| 1707 | case ARIZONA_AIF1_FRAME_CTRL_17: | ||
| 1708 | case ARIZONA_AIF1_FRAME_CTRL_18: | ||
| 1709 | case ARIZONA_AIF1_TX_ENABLES: | ||
| 1710 | case ARIZONA_AIF1_RX_ENABLES: | ||
| 1711 | case ARIZONA_AIF1_FORCE_WRITE: | ||
| 1712 | case ARIZONA_AIF2_BCLK_CTRL: | ||
| 1713 | case ARIZONA_AIF2_TX_PIN_CTRL: | ||
| 1714 | case ARIZONA_AIF2_RX_PIN_CTRL: | ||
| 1715 | case ARIZONA_AIF2_RATE_CTRL: | ||
| 1716 | case ARIZONA_AIF2_FORMAT: | ||
| 1717 | case ARIZONA_AIF2_TX_BCLK_RATE: | ||
| 1718 | case ARIZONA_AIF2_RX_BCLK_RATE: | ||
| 1719 | case ARIZONA_AIF2_FRAME_CTRL_1: | ||
| 1720 | case ARIZONA_AIF2_FRAME_CTRL_2: | ||
| 1721 | case ARIZONA_AIF2_FRAME_CTRL_3: | ||
| 1722 | case ARIZONA_AIF2_FRAME_CTRL_4: | ||
| 1723 | case ARIZONA_AIF2_FRAME_CTRL_11: | ||
| 1724 | case ARIZONA_AIF2_FRAME_CTRL_12: | ||
| 1725 | case ARIZONA_AIF2_TX_ENABLES: | ||
| 1726 | case ARIZONA_AIF2_RX_ENABLES: | ||
| 1727 | case ARIZONA_AIF2_FORCE_WRITE: | ||
| 1728 | case ARIZONA_AIF3_BCLK_CTRL: | ||
| 1729 | case ARIZONA_AIF3_TX_PIN_CTRL: | ||
| 1730 | case ARIZONA_AIF3_RX_PIN_CTRL: | ||
| 1731 | case ARIZONA_AIF3_RATE_CTRL: | ||
| 1732 | case ARIZONA_AIF3_FORMAT: | ||
| 1733 | case ARIZONA_AIF3_TX_BCLK_RATE: | ||
| 1734 | case ARIZONA_AIF3_RX_BCLK_RATE: | ||
| 1735 | case ARIZONA_AIF3_FRAME_CTRL_1: | ||
| 1736 | case ARIZONA_AIF3_FRAME_CTRL_2: | ||
| 1737 | case ARIZONA_AIF3_FRAME_CTRL_3: | ||
| 1738 | case ARIZONA_AIF3_FRAME_CTRL_4: | ||
| 1739 | case ARIZONA_AIF3_FRAME_CTRL_11: | ||
| 1740 | case ARIZONA_AIF3_FRAME_CTRL_12: | ||
| 1741 | case ARIZONA_AIF3_TX_ENABLES: | ||
| 1742 | case ARIZONA_AIF3_RX_ENABLES: | ||
| 1743 | case ARIZONA_AIF3_FORCE_WRITE: | ||
| 1744 | case ARIZONA_SLIMBUS_FRAMER_REF_GEAR: | ||
| 1745 | case ARIZONA_SLIMBUS_RATES_1: | ||
| 1746 | case ARIZONA_SLIMBUS_RATES_2: | ||
| 1747 | case ARIZONA_SLIMBUS_RATES_3: | ||
| 1748 | case ARIZONA_SLIMBUS_RATES_4: | ||
| 1749 | case ARIZONA_SLIMBUS_RATES_5: | ||
| 1750 | case ARIZONA_SLIMBUS_RATES_6: | ||
| 1751 | case ARIZONA_SLIMBUS_RATES_7: | ||
| 1752 | case ARIZONA_SLIMBUS_RATES_8: | ||
| 1753 | case ARIZONA_SLIMBUS_RX_CHANNEL_ENABLE: | ||
| 1754 | case ARIZONA_SLIMBUS_TX_CHANNEL_ENABLE: | ||
| 1755 | case ARIZONA_SLIMBUS_RX_PORT_STATUS: | ||
| 1756 | case ARIZONA_SLIMBUS_TX_PORT_STATUS: | ||
| 1757 | case ARIZONA_PWM1MIX_INPUT_1_SOURCE: | ||
| 1758 | case ARIZONA_PWM1MIX_INPUT_1_VOLUME: | ||
| 1759 | case ARIZONA_PWM1MIX_INPUT_2_SOURCE: | ||
| 1760 | case ARIZONA_PWM1MIX_INPUT_2_VOLUME: | ||
| 1761 | case ARIZONA_PWM1MIX_INPUT_3_SOURCE: | ||
| 1762 | case ARIZONA_PWM1MIX_INPUT_3_VOLUME: | ||
| 1763 | case ARIZONA_PWM1MIX_INPUT_4_SOURCE: | ||
| 1764 | case ARIZONA_PWM1MIX_INPUT_4_VOLUME: | ||
| 1765 | case ARIZONA_PWM2MIX_INPUT_1_SOURCE: | ||
| 1766 | case ARIZONA_PWM2MIX_INPUT_1_VOLUME: | ||
| 1767 | case ARIZONA_PWM2MIX_INPUT_2_SOURCE: | ||
| 1768 | case ARIZONA_PWM2MIX_INPUT_2_VOLUME: | ||
| 1769 | case ARIZONA_PWM2MIX_INPUT_3_SOURCE: | ||
| 1770 | case ARIZONA_PWM2MIX_INPUT_3_VOLUME: | ||
| 1771 | case ARIZONA_PWM2MIX_INPUT_4_SOURCE: | ||
| 1772 | case ARIZONA_PWM2MIX_INPUT_4_VOLUME: | ||
| 1773 | case ARIZONA_MICMIX_INPUT_1_SOURCE: | ||
| 1774 | case ARIZONA_MICMIX_INPUT_1_VOLUME: | ||
| 1775 | case ARIZONA_MICMIX_INPUT_2_SOURCE: | ||
| 1776 | case ARIZONA_MICMIX_INPUT_2_VOLUME: | ||
| 1777 | case ARIZONA_MICMIX_INPUT_3_SOURCE: | ||
| 1778 | case ARIZONA_MICMIX_INPUT_3_VOLUME: | ||
| 1779 | case ARIZONA_MICMIX_INPUT_4_SOURCE: | ||
| 1780 | case ARIZONA_MICMIX_INPUT_4_VOLUME: | ||
| 1781 | case ARIZONA_NOISEMIX_INPUT_1_SOURCE: | ||
| 1782 | case ARIZONA_NOISEMIX_INPUT_1_VOLUME: | ||
| 1783 | case ARIZONA_NOISEMIX_INPUT_2_SOURCE: | ||
| 1784 | case ARIZONA_NOISEMIX_INPUT_2_VOLUME: | ||
| 1785 | case ARIZONA_NOISEMIX_INPUT_3_SOURCE: | ||
| 1786 | case ARIZONA_NOISEMIX_INPUT_3_VOLUME: | ||
| 1787 | case ARIZONA_NOISEMIX_INPUT_4_SOURCE: | ||
| 1788 | case ARIZONA_NOISEMIX_INPUT_4_VOLUME: | ||
| 1789 | case ARIZONA_OUT1LMIX_INPUT_1_SOURCE: | ||
| 1790 | case ARIZONA_OUT1LMIX_INPUT_1_VOLUME: | ||
| 1791 | case ARIZONA_OUT1LMIX_INPUT_2_SOURCE: | ||
| 1792 | case ARIZONA_OUT1LMIX_INPUT_2_VOLUME: | ||
| 1793 | case ARIZONA_OUT1LMIX_INPUT_3_SOURCE: | ||
| 1794 | case ARIZONA_OUT1LMIX_INPUT_3_VOLUME: | ||
| 1795 | case ARIZONA_OUT1LMIX_INPUT_4_SOURCE: | ||
| 1796 | case ARIZONA_OUT1LMIX_INPUT_4_VOLUME: | ||
| 1797 | case ARIZONA_OUT1RMIX_INPUT_1_SOURCE: | ||
| 1798 | case ARIZONA_OUT1RMIX_INPUT_1_VOLUME: | ||
| 1799 | case ARIZONA_OUT1RMIX_INPUT_2_SOURCE: | ||
| 1800 | case ARIZONA_OUT1RMIX_INPUT_2_VOLUME: | ||
| 1801 | case ARIZONA_OUT1RMIX_INPUT_3_SOURCE: | ||
| 1802 | case ARIZONA_OUT1RMIX_INPUT_3_VOLUME: | ||
| 1803 | case ARIZONA_OUT1RMIX_INPUT_4_SOURCE: | ||
| 1804 | case ARIZONA_OUT1RMIX_INPUT_4_VOLUME: | ||
| 1805 | case ARIZONA_OUT2LMIX_INPUT_1_SOURCE: | ||
| 1806 | case ARIZONA_OUT2LMIX_INPUT_1_VOLUME: | ||
| 1807 | case ARIZONA_OUT2LMIX_INPUT_2_SOURCE: | ||
| 1808 | case ARIZONA_OUT2LMIX_INPUT_2_VOLUME: | ||
| 1809 | case ARIZONA_OUT2LMIX_INPUT_3_SOURCE: | ||
| 1810 | case ARIZONA_OUT2LMIX_INPUT_3_VOLUME: | ||
| 1811 | case ARIZONA_OUT2LMIX_INPUT_4_SOURCE: | ||
| 1812 | case ARIZONA_OUT2LMIX_INPUT_4_VOLUME: | ||
| 1813 | case ARIZONA_OUT2RMIX_INPUT_1_SOURCE: | ||
| 1814 | case ARIZONA_OUT2RMIX_INPUT_1_VOLUME: | ||
| 1815 | case ARIZONA_OUT2RMIX_INPUT_2_SOURCE: | ||
| 1816 | case ARIZONA_OUT2RMIX_INPUT_2_VOLUME: | ||
| 1817 | case ARIZONA_OUT2RMIX_INPUT_3_SOURCE: | ||
| 1818 | case ARIZONA_OUT2RMIX_INPUT_3_VOLUME: | ||
| 1819 | case ARIZONA_OUT2RMIX_INPUT_4_SOURCE: | ||
| 1820 | case ARIZONA_OUT2RMIX_INPUT_4_VOLUME: | ||
| 1821 | case ARIZONA_OUT3LMIX_INPUT_1_SOURCE: | ||
| 1822 | case ARIZONA_OUT3LMIX_INPUT_1_VOLUME: | ||
| 1823 | case ARIZONA_OUT3LMIX_INPUT_2_SOURCE: | ||
| 1824 | case ARIZONA_OUT3LMIX_INPUT_2_VOLUME: | ||
| 1825 | case ARIZONA_OUT3LMIX_INPUT_3_SOURCE: | ||
| 1826 | case ARIZONA_OUT3LMIX_INPUT_3_VOLUME: | ||
| 1827 | case ARIZONA_OUT3LMIX_INPUT_4_SOURCE: | ||
| 1828 | case ARIZONA_OUT3LMIX_INPUT_4_VOLUME: | ||
| 1829 | case ARIZONA_OUT4LMIX_INPUT_1_SOURCE: | ||
| 1830 | case ARIZONA_OUT4LMIX_INPUT_1_VOLUME: | ||
| 1831 | case ARIZONA_OUT4LMIX_INPUT_2_SOURCE: | ||
| 1832 | case ARIZONA_OUT4LMIX_INPUT_2_VOLUME: | ||
| 1833 | case ARIZONA_OUT4LMIX_INPUT_3_SOURCE: | ||
| 1834 | case ARIZONA_OUT4LMIX_INPUT_3_VOLUME: | ||
| 1835 | case ARIZONA_OUT4LMIX_INPUT_4_SOURCE: | ||
| 1836 | case ARIZONA_OUT4LMIX_INPUT_4_VOLUME: | ||
| 1837 | case ARIZONA_OUT4RMIX_INPUT_1_SOURCE: | ||
| 1838 | case ARIZONA_OUT4RMIX_INPUT_1_VOLUME: | ||
| 1839 | case ARIZONA_OUT4RMIX_INPUT_2_SOURCE: | ||
| 1840 | case ARIZONA_OUT4RMIX_INPUT_2_VOLUME: | ||
| 1841 | case ARIZONA_OUT4RMIX_INPUT_3_SOURCE: | ||
| 1842 | case ARIZONA_OUT4RMIX_INPUT_3_VOLUME: | ||
| 1843 | case ARIZONA_OUT4RMIX_INPUT_4_SOURCE: | ||
| 1844 | case ARIZONA_OUT4RMIX_INPUT_4_VOLUME: | ||
| 1845 | case ARIZONA_OUT5LMIX_INPUT_1_SOURCE: | ||
| 1846 | case ARIZONA_OUT5LMIX_INPUT_1_VOLUME: | ||
| 1847 | case ARIZONA_OUT5LMIX_INPUT_2_SOURCE: | ||
| 1848 | case ARIZONA_OUT5LMIX_INPUT_2_VOLUME: | ||
| 1849 | case ARIZONA_OUT5LMIX_INPUT_3_SOURCE: | ||
| 1850 | case ARIZONA_OUT5LMIX_INPUT_3_VOLUME: | ||
| 1851 | case ARIZONA_OUT5LMIX_INPUT_4_SOURCE: | ||
| 1852 | case ARIZONA_OUT5LMIX_INPUT_4_VOLUME: | ||
| 1853 | case ARIZONA_OUT5RMIX_INPUT_1_SOURCE: | ||
| 1854 | case ARIZONA_OUT5RMIX_INPUT_1_VOLUME: | ||
| 1855 | case ARIZONA_OUT5RMIX_INPUT_2_SOURCE: | ||
| 1856 | case ARIZONA_OUT5RMIX_INPUT_2_VOLUME: | ||
| 1857 | case ARIZONA_OUT5RMIX_INPUT_3_SOURCE: | ||
| 1858 | case ARIZONA_OUT5RMIX_INPUT_3_VOLUME: | ||
| 1859 | case ARIZONA_OUT5RMIX_INPUT_4_SOURCE: | ||
| 1860 | case ARIZONA_OUT5RMIX_INPUT_4_VOLUME: | ||
| 1861 | case ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE: | ||
| 1862 | case ARIZONA_AIF1TX1MIX_INPUT_1_VOLUME: | ||
| 1863 | case ARIZONA_AIF1TX1MIX_INPUT_2_SOURCE: | ||
| 1864 | case ARIZONA_AIF1TX1MIX_INPUT_2_VOLUME: | ||
| 1865 | case ARIZONA_AIF1TX1MIX_INPUT_3_SOURCE: | ||
| 1866 | case ARIZONA_AIF1TX1MIX_INPUT_3_VOLUME: | ||
| 1867 | case ARIZONA_AIF1TX1MIX_INPUT_4_SOURCE: | ||
| 1868 | case ARIZONA_AIF1TX1MIX_INPUT_4_VOLUME: | ||
| 1869 | case ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE: | ||
| 1870 | case ARIZONA_AIF1TX2MIX_INPUT_1_VOLUME: | ||
| 1871 | case ARIZONA_AIF1TX2MIX_INPUT_2_SOURCE: | ||
| 1872 | case ARIZONA_AIF1TX2MIX_INPUT_2_VOLUME: | ||
| 1873 | case ARIZONA_AIF1TX2MIX_INPUT_3_SOURCE: | ||
| 1874 | case ARIZONA_AIF1TX2MIX_INPUT_3_VOLUME: | ||
| 1875 | case ARIZONA_AIF1TX2MIX_INPUT_4_SOURCE: | ||
| 1876 | case ARIZONA_AIF1TX2MIX_INPUT_4_VOLUME: | ||
| 1877 | case ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE: | ||
| 1878 | case ARIZONA_AIF1TX3MIX_INPUT_1_VOLUME: | ||
| 1879 | case ARIZONA_AIF1TX3MIX_INPUT_2_SOURCE: | ||
| 1880 | case ARIZONA_AIF1TX3MIX_INPUT_2_VOLUME: | ||
| 1881 | case ARIZONA_AIF1TX3MIX_INPUT_3_SOURCE: | ||
| 1882 | case ARIZONA_AIF1TX3MIX_INPUT_3_VOLUME: | ||
| 1883 | case ARIZONA_AIF1TX3MIX_INPUT_4_SOURCE: | ||
| 1884 | case ARIZONA_AIF1TX3MIX_INPUT_4_VOLUME: | ||
| 1885 | case ARIZONA_AIF1TX4MIX_INPUT_1_SOURCE: | ||
| 1886 | case ARIZONA_AIF1TX4MIX_INPUT_1_VOLUME: | ||
| 1887 | case ARIZONA_AIF1TX4MIX_INPUT_2_SOURCE: | ||
| 1888 | case ARIZONA_AIF1TX4MIX_INPUT_2_VOLUME: | ||
| 1889 | case ARIZONA_AIF1TX4MIX_INPUT_3_SOURCE: | ||
| 1890 | case ARIZONA_AIF1TX4MIX_INPUT_3_VOLUME: | ||
| 1891 | case ARIZONA_AIF1TX4MIX_INPUT_4_SOURCE: | ||
| 1892 | case ARIZONA_AIF1TX4MIX_INPUT_4_VOLUME: | ||
| 1893 | case ARIZONA_AIF1TX5MIX_INPUT_1_SOURCE: | ||
| 1894 | case ARIZONA_AIF1TX5MIX_INPUT_1_VOLUME: | ||
| 1895 | case ARIZONA_AIF1TX5MIX_INPUT_2_SOURCE: | ||
| 1896 | case ARIZONA_AIF1TX5MIX_INPUT_2_VOLUME: | ||
| 1897 | case ARIZONA_AIF1TX5MIX_INPUT_3_SOURCE: | ||
| 1898 | case ARIZONA_AIF1TX5MIX_INPUT_3_VOLUME: | ||
| 1899 | case ARIZONA_AIF1TX5MIX_INPUT_4_SOURCE: | ||
| 1900 | case ARIZONA_AIF1TX5MIX_INPUT_4_VOLUME: | ||
| 1901 | case ARIZONA_AIF1TX6MIX_INPUT_1_SOURCE: | ||
| 1902 | case ARIZONA_AIF1TX6MIX_INPUT_1_VOLUME: | ||
| 1903 | case ARIZONA_AIF1TX6MIX_INPUT_2_SOURCE: | ||
| 1904 | case ARIZONA_AIF1TX6MIX_INPUT_2_VOLUME: | ||
| 1905 | case ARIZONA_AIF1TX6MIX_INPUT_3_SOURCE: | ||
| 1906 | case ARIZONA_AIF1TX6MIX_INPUT_3_VOLUME: | ||
| 1907 | case ARIZONA_AIF1TX6MIX_INPUT_4_SOURCE: | ||
| 1908 | case ARIZONA_AIF1TX6MIX_INPUT_4_VOLUME: | ||
| 1909 | case ARIZONA_AIF1TX7MIX_INPUT_1_SOURCE: | ||
| 1910 | case ARIZONA_AIF1TX7MIX_INPUT_1_VOLUME: | ||
| 1911 | case ARIZONA_AIF1TX7MIX_INPUT_2_SOURCE: | ||
| 1912 | case ARIZONA_AIF1TX7MIX_INPUT_2_VOLUME: | ||
| 1913 | case ARIZONA_AIF1TX7MIX_INPUT_3_SOURCE: | ||
| 1914 | case ARIZONA_AIF1TX7MIX_INPUT_3_VOLUME: | ||
| 1915 | case ARIZONA_AIF1TX7MIX_INPUT_4_SOURCE: | ||
| 1916 | case ARIZONA_AIF1TX7MIX_INPUT_4_VOLUME: | ||
| 1917 | case ARIZONA_AIF1TX8MIX_INPUT_1_SOURCE: | ||
| 1918 | case ARIZONA_AIF1TX8MIX_INPUT_1_VOLUME: | ||
| 1919 | case ARIZONA_AIF1TX8MIX_INPUT_2_SOURCE: | ||
| 1920 | case ARIZONA_AIF1TX8MIX_INPUT_2_VOLUME: | ||
| 1921 | case ARIZONA_AIF1TX8MIX_INPUT_3_SOURCE: | ||
| 1922 | case ARIZONA_AIF1TX8MIX_INPUT_3_VOLUME: | ||
| 1923 | case ARIZONA_AIF1TX8MIX_INPUT_4_SOURCE: | ||
| 1924 | case ARIZONA_AIF1TX8MIX_INPUT_4_VOLUME: | ||
| 1925 | case ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE: | ||
| 1926 | case ARIZONA_AIF2TX1MIX_INPUT_1_VOLUME: | ||
| 1927 | case ARIZONA_AIF2TX1MIX_INPUT_2_SOURCE: | ||
| 1928 | case ARIZONA_AIF2TX1MIX_INPUT_2_VOLUME: | ||
| 1929 | case ARIZONA_AIF2TX1MIX_INPUT_3_SOURCE: | ||
| 1930 | case ARIZONA_AIF2TX1MIX_INPUT_3_VOLUME: | ||
| 1931 | case ARIZONA_AIF2TX1MIX_INPUT_4_SOURCE: | ||
| 1932 | case ARIZONA_AIF2TX1MIX_INPUT_4_VOLUME: | ||
| 1933 | case ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE: | ||
| 1934 | case ARIZONA_AIF2TX2MIX_INPUT_1_VOLUME: | ||
| 1935 | case ARIZONA_AIF2TX2MIX_INPUT_2_SOURCE: | ||
| 1936 | case ARIZONA_AIF2TX2MIX_INPUT_2_VOLUME: | ||
| 1937 | case ARIZONA_AIF2TX2MIX_INPUT_3_SOURCE: | ||
| 1938 | case ARIZONA_AIF2TX2MIX_INPUT_3_VOLUME: | ||
| 1939 | case ARIZONA_AIF2TX2MIX_INPUT_4_SOURCE: | ||
| 1940 | case ARIZONA_AIF2TX2MIX_INPUT_4_VOLUME: | ||
| 1941 | case ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE: | ||
| 1942 | case ARIZONA_AIF3TX1MIX_INPUT_1_VOLUME: | ||
| 1943 | case ARIZONA_AIF3TX1MIX_INPUT_2_SOURCE: | ||
| 1944 | case ARIZONA_AIF3TX1MIX_INPUT_2_VOLUME: | ||
| 1945 | case ARIZONA_AIF3TX1MIX_INPUT_3_SOURCE: | ||
| 1946 | case ARIZONA_AIF3TX1MIX_INPUT_3_VOLUME: | ||
| 1947 | case ARIZONA_AIF3TX1MIX_INPUT_4_SOURCE: | ||
| 1948 | case ARIZONA_AIF3TX1MIX_INPUT_4_VOLUME: | ||
| 1949 | case ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE: | ||
| 1950 | case ARIZONA_AIF3TX2MIX_INPUT_1_VOLUME: | ||
| 1951 | case ARIZONA_AIF3TX2MIX_INPUT_2_SOURCE: | ||
| 1952 | case ARIZONA_AIF3TX2MIX_INPUT_2_VOLUME: | ||
| 1953 | case ARIZONA_AIF3TX2MIX_INPUT_3_SOURCE: | ||
| 1954 | case ARIZONA_AIF3TX2MIX_INPUT_3_VOLUME: | ||
| 1955 | case ARIZONA_AIF3TX2MIX_INPUT_4_SOURCE: | ||
| 1956 | case ARIZONA_AIF3TX2MIX_INPUT_4_VOLUME: | ||
| 1957 | case ARIZONA_SLIMTX1MIX_INPUT_1_SOURCE: | ||
| 1958 | case ARIZONA_SLIMTX1MIX_INPUT_1_VOLUME: | ||
| 1959 | case ARIZONA_SLIMTX1MIX_INPUT_2_SOURCE: | ||
| 1960 | case ARIZONA_SLIMTX1MIX_INPUT_2_VOLUME: | ||
| 1961 | case ARIZONA_SLIMTX1MIX_INPUT_3_SOURCE: | ||
| 1962 | case ARIZONA_SLIMTX1MIX_INPUT_3_VOLUME: | ||
| 1963 | case ARIZONA_SLIMTX1MIX_INPUT_4_SOURCE: | ||
| 1964 | case ARIZONA_SLIMTX1MIX_INPUT_4_VOLUME: | ||
| 1965 | case ARIZONA_SLIMTX2MIX_INPUT_1_SOURCE: | ||
| 1966 | case ARIZONA_SLIMTX2MIX_INPUT_1_VOLUME: | ||
| 1967 | case ARIZONA_SLIMTX2MIX_INPUT_2_SOURCE: | ||
| 1968 | case ARIZONA_SLIMTX2MIX_INPUT_2_VOLUME: | ||
| 1969 | case ARIZONA_SLIMTX2MIX_INPUT_3_SOURCE: | ||
| 1970 | case ARIZONA_SLIMTX2MIX_INPUT_3_VOLUME: | ||
| 1971 | case ARIZONA_SLIMTX2MIX_INPUT_4_SOURCE: | ||
| 1972 | case ARIZONA_SLIMTX2MIX_INPUT_4_VOLUME: | ||
| 1973 | case ARIZONA_SLIMTX3MIX_INPUT_1_SOURCE: | ||
| 1974 | case ARIZONA_SLIMTX3MIX_INPUT_1_VOLUME: | ||
| 1975 | case ARIZONA_SLIMTX3MIX_INPUT_2_SOURCE: | ||
| 1976 | case ARIZONA_SLIMTX3MIX_INPUT_2_VOLUME: | ||
| 1977 | case ARIZONA_SLIMTX3MIX_INPUT_3_SOURCE: | ||
| 1978 | case ARIZONA_SLIMTX3MIX_INPUT_3_VOLUME: | ||
| 1979 | case ARIZONA_SLIMTX3MIX_INPUT_4_SOURCE: | ||
| 1980 | case ARIZONA_SLIMTX3MIX_INPUT_4_VOLUME: | ||
| 1981 | case ARIZONA_SLIMTX4MIX_INPUT_1_SOURCE: | ||
| 1982 | case ARIZONA_SLIMTX4MIX_INPUT_1_VOLUME: | ||
| 1983 | case ARIZONA_SLIMTX4MIX_INPUT_2_SOURCE: | ||
| 1984 | case ARIZONA_SLIMTX4MIX_INPUT_2_VOLUME: | ||
| 1985 | case ARIZONA_SLIMTX4MIX_INPUT_3_SOURCE: | ||
| 1986 | case ARIZONA_SLIMTX4MIX_INPUT_3_VOLUME: | ||
| 1987 | case ARIZONA_SLIMTX4MIX_INPUT_4_SOURCE: | ||
| 1988 | case ARIZONA_SLIMTX4MIX_INPUT_4_VOLUME: | ||
| 1989 | case ARIZONA_SLIMTX5MIX_INPUT_1_SOURCE: | ||
| 1990 | case ARIZONA_SLIMTX5MIX_INPUT_1_VOLUME: | ||
| 1991 | case ARIZONA_SLIMTX5MIX_INPUT_2_SOURCE: | ||
| 1992 | case ARIZONA_SLIMTX5MIX_INPUT_2_VOLUME: | ||
| 1993 | case ARIZONA_SLIMTX5MIX_INPUT_3_SOURCE: | ||
| 1994 | case ARIZONA_SLIMTX5MIX_INPUT_3_VOLUME: | ||
| 1995 | case ARIZONA_SLIMTX5MIX_INPUT_4_SOURCE: | ||
| 1996 | case ARIZONA_SLIMTX5MIX_INPUT_4_VOLUME: | ||
| 1997 | case ARIZONA_SLIMTX6MIX_INPUT_1_SOURCE: | ||
| 1998 | case ARIZONA_SLIMTX6MIX_INPUT_1_VOLUME: | ||
| 1999 | case ARIZONA_SLIMTX6MIX_INPUT_2_SOURCE: | ||
| 2000 | case ARIZONA_SLIMTX6MIX_INPUT_2_VOLUME: | ||
| 2001 | case ARIZONA_SLIMTX6MIX_INPUT_3_SOURCE: | ||
| 2002 | case ARIZONA_SLIMTX6MIX_INPUT_3_VOLUME: | ||
| 2003 | case ARIZONA_SLIMTX6MIX_INPUT_4_SOURCE: | ||
| 2004 | case ARIZONA_SLIMTX6MIX_INPUT_4_VOLUME: | ||
| 2005 | case ARIZONA_SLIMTX7MIX_INPUT_1_SOURCE: | ||
| 2006 | case ARIZONA_SLIMTX7MIX_INPUT_1_VOLUME: | ||
| 2007 | case ARIZONA_SLIMTX7MIX_INPUT_2_SOURCE: | ||
| 2008 | case ARIZONA_SLIMTX7MIX_INPUT_2_VOLUME: | ||
| 2009 | case ARIZONA_SLIMTX7MIX_INPUT_3_SOURCE: | ||
| 2010 | case ARIZONA_SLIMTX7MIX_INPUT_3_VOLUME: | ||
| 2011 | case ARIZONA_SLIMTX7MIX_INPUT_4_SOURCE: | ||
| 2012 | case ARIZONA_SLIMTX7MIX_INPUT_4_VOLUME: | ||
| 2013 | case ARIZONA_SLIMTX8MIX_INPUT_1_SOURCE: | ||
| 2014 | case ARIZONA_SLIMTX8MIX_INPUT_1_VOLUME: | ||
| 2015 | case ARIZONA_SLIMTX8MIX_INPUT_2_SOURCE: | ||
| 2016 | case ARIZONA_SLIMTX8MIX_INPUT_2_VOLUME: | ||
| 2017 | case ARIZONA_SLIMTX8MIX_INPUT_3_SOURCE: | ||
| 2018 | case ARIZONA_SLIMTX8MIX_INPUT_3_VOLUME: | ||
| 2019 | case ARIZONA_SLIMTX8MIX_INPUT_4_SOURCE: | ||
| 2020 | case ARIZONA_SLIMTX8MIX_INPUT_4_VOLUME: | ||
| 2021 | case ARIZONA_EQ1MIX_INPUT_1_SOURCE: | ||
| 2022 | case ARIZONA_EQ1MIX_INPUT_1_VOLUME: | ||
| 2023 | case ARIZONA_EQ1MIX_INPUT_2_SOURCE: | ||
| 2024 | case ARIZONA_EQ1MIX_INPUT_2_VOLUME: | ||
| 2025 | case ARIZONA_EQ1MIX_INPUT_3_SOURCE: | ||
| 2026 | case ARIZONA_EQ1MIX_INPUT_3_VOLUME: | ||
| 2027 | case ARIZONA_EQ1MIX_INPUT_4_SOURCE: | ||
| 2028 | case ARIZONA_EQ1MIX_INPUT_4_VOLUME: | ||
| 2029 | case ARIZONA_EQ2MIX_INPUT_1_SOURCE: | ||
| 2030 | case ARIZONA_EQ2MIX_INPUT_1_VOLUME: | ||
| 2031 | case ARIZONA_EQ2MIX_INPUT_2_SOURCE: | ||
| 2032 | case ARIZONA_EQ2MIX_INPUT_2_VOLUME: | ||
| 2033 | case ARIZONA_EQ2MIX_INPUT_3_SOURCE: | ||
| 2034 | case ARIZONA_EQ2MIX_INPUT_3_VOLUME: | ||
| 2035 | case ARIZONA_EQ2MIX_INPUT_4_SOURCE: | ||
| 2036 | case ARIZONA_EQ2MIX_INPUT_4_VOLUME: | ||
| 2037 | case ARIZONA_EQ3MIX_INPUT_1_SOURCE: | ||
| 2038 | case ARIZONA_EQ3MIX_INPUT_1_VOLUME: | ||
| 2039 | case ARIZONA_EQ3MIX_INPUT_2_SOURCE: | ||
| 2040 | case ARIZONA_EQ3MIX_INPUT_2_VOLUME: | ||
| 2041 | case ARIZONA_EQ3MIX_INPUT_3_SOURCE: | ||
| 2042 | case ARIZONA_EQ3MIX_INPUT_3_VOLUME: | ||
| 2043 | case ARIZONA_EQ3MIX_INPUT_4_SOURCE: | ||
| 2044 | case ARIZONA_EQ3MIX_INPUT_4_VOLUME: | ||
| 2045 | case ARIZONA_EQ4MIX_INPUT_1_SOURCE: | ||
| 2046 | case ARIZONA_EQ4MIX_INPUT_1_VOLUME: | ||
| 2047 | case ARIZONA_EQ4MIX_INPUT_2_SOURCE: | ||
| 2048 | case ARIZONA_EQ4MIX_INPUT_2_VOLUME: | ||
| 2049 | case ARIZONA_EQ4MIX_INPUT_3_SOURCE: | ||
| 2050 | case ARIZONA_EQ4MIX_INPUT_3_VOLUME: | ||
| 2051 | case ARIZONA_EQ4MIX_INPUT_4_SOURCE: | ||
| 2052 | case ARIZONA_EQ4MIX_INPUT_4_VOLUME: | ||
| 2053 | case ARIZONA_DRC1LMIX_INPUT_1_SOURCE: | ||
| 2054 | case ARIZONA_DRC1LMIX_INPUT_1_VOLUME: | ||
| 2055 | case ARIZONA_DRC1LMIX_INPUT_2_SOURCE: | ||
| 2056 | case ARIZONA_DRC1LMIX_INPUT_2_VOLUME: | ||
| 2057 | case ARIZONA_DRC1LMIX_INPUT_3_SOURCE: | ||
| 2058 | case ARIZONA_DRC1LMIX_INPUT_3_VOLUME: | ||
| 2059 | case ARIZONA_DRC1LMIX_INPUT_4_SOURCE: | ||
| 2060 | case ARIZONA_DRC1LMIX_INPUT_4_VOLUME: | ||
| 2061 | case ARIZONA_DRC1RMIX_INPUT_1_SOURCE: | ||
| 2062 | case ARIZONA_DRC1RMIX_INPUT_1_VOLUME: | ||
| 2063 | case ARIZONA_DRC1RMIX_INPUT_2_SOURCE: | ||
| 2064 | case ARIZONA_DRC1RMIX_INPUT_2_VOLUME: | ||
| 2065 | case ARIZONA_DRC1RMIX_INPUT_3_SOURCE: | ||
| 2066 | case ARIZONA_DRC1RMIX_INPUT_3_VOLUME: | ||
| 2067 | case ARIZONA_DRC1RMIX_INPUT_4_SOURCE: | ||
| 2068 | case ARIZONA_DRC1RMIX_INPUT_4_VOLUME: | ||
| 2069 | case ARIZONA_DRC2LMIX_INPUT_1_SOURCE: | ||
| 2070 | case ARIZONA_DRC2LMIX_INPUT_1_VOLUME: | ||
| 2071 | case ARIZONA_DRC2LMIX_INPUT_2_SOURCE: | ||
| 2072 | case ARIZONA_DRC2LMIX_INPUT_2_VOLUME: | ||
| 2073 | case ARIZONA_DRC2LMIX_INPUT_3_SOURCE: | ||
| 2074 | case ARIZONA_DRC2LMIX_INPUT_3_VOLUME: | ||
| 2075 | case ARIZONA_DRC2LMIX_INPUT_4_SOURCE: | ||
| 2076 | case ARIZONA_DRC2LMIX_INPUT_4_VOLUME: | ||
| 2077 | case ARIZONA_DRC2RMIX_INPUT_1_SOURCE: | ||
| 2078 | case ARIZONA_DRC2RMIX_INPUT_1_VOLUME: | ||
| 2079 | case ARIZONA_DRC2RMIX_INPUT_2_SOURCE: | ||
| 2080 | case ARIZONA_DRC2RMIX_INPUT_2_VOLUME: | ||
| 2081 | case ARIZONA_DRC2RMIX_INPUT_3_SOURCE: | ||
| 2082 | case ARIZONA_DRC2RMIX_INPUT_3_VOLUME: | ||
| 2083 | case ARIZONA_DRC2RMIX_INPUT_4_SOURCE: | ||
| 2084 | case ARIZONA_DRC2RMIX_INPUT_4_VOLUME: | ||
| 2085 | case ARIZONA_HPLP1MIX_INPUT_1_SOURCE: | ||
| 2086 | case ARIZONA_HPLP1MIX_INPUT_1_VOLUME: | ||
| 2087 | case ARIZONA_HPLP1MIX_INPUT_2_SOURCE: | ||
| 2088 | case ARIZONA_HPLP1MIX_INPUT_2_VOLUME: | ||
| 2089 | case ARIZONA_HPLP1MIX_INPUT_3_SOURCE: | ||
| 2090 | case ARIZONA_HPLP1MIX_INPUT_3_VOLUME: | ||
| 2091 | case ARIZONA_HPLP1MIX_INPUT_4_SOURCE: | ||
| 2092 | case ARIZONA_HPLP1MIX_INPUT_4_VOLUME: | ||
| 2093 | case ARIZONA_HPLP2MIX_INPUT_1_SOURCE: | ||
| 2094 | case ARIZONA_HPLP2MIX_INPUT_1_VOLUME: | ||
| 2095 | case ARIZONA_HPLP2MIX_INPUT_2_SOURCE: | ||
| 2096 | case ARIZONA_HPLP2MIX_INPUT_2_VOLUME: | ||
| 2097 | case ARIZONA_HPLP2MIX_INPUT_3_SOURCE: | ||
| 2098 | case ARIZONA_HPLP2MIX_INPUT_3_VOLUME: | ||
| 2099 | case ARIZONA_HPLP2MIX_INPUT_4_SOURCE: | ||
| 2100 | case ARIZONA_HPLP2MIX_INPUT_4_VOLUME: | ||
| 2101 | case ARIZONA_HPLP3MIX_INPUT_1_SOURCE: | ||
| 2102 | case ARIZONA_HPLP3MIX_INPUT_1_VOLUME: | ||
| 2103 | case ARIZONA_HPLP3MIX_INPUT_2_SOURCE: | ||
| 2104 | case ARIZONA_HPLP3MIX_INPUT_2_VOLUME: | ||
| 2105 | case ARIZONA_HPLP3MIX_INPUT_3_SOURCE: | ||
| 2106 | case ARIZONA_HPLP3MIX_INPUT_3_VOLUME: | ||
| 2107 | case ARIZONA_HPLP3MIX_INPUT_4_SOURCE: | ||
| 2108 | case ARIZONA_HPLP3MIX_INPUT_4_VOLUME: | ||
| 2109 | case ARIZONA_HPLP4MIX_INPUT_1_SOURCE: | ||
| 2110 | case ARIZONA_HPLP4MIX_INPUT_1_VOLUME: | ||
| 2111 | case ARIZONA_HPLP4MIX_INPUT_2_SOURCE: | ||
| 2112 | case ARIZONA_HPLP4MIX_INPUT_2_VOLUME: | ||
| 2113 | case ARIZONA_HPLP4MIX_INPUT_3_SOURCE: | ||
| 2114 | case ARIZONA_HPLP4MIX_INPUT_3_VOLUME: | ||
| 2115 | case ARIZONA_HPLP4MIX_INPUT_4_SOURCE: | ||
| 2116 | case ARIZONA_HPLP4MIX_INPUT_4_VOLUME: | ||
| 2117 | case ARIZONA_DSP1LMIX_INPUT_1_SOURCE: | ||
| 2118 | case ARIZONA_DSP1LMIX_INPUT_1_VOLUME: | ||
| 2119 | case ARIZONA_DSP1LMIX_INPUT_2_SOURCE: | ||
| 2120 | case ARIZONA_DSP1LMIX_INPUT_2_VOLUME: | ||
| 2121 | case ARIZONA_DSP1LMIX_INPUT_3_SOURCE: | ||
| 2122 | case ARIZONA_DSP1LMIX_INPUT_3_VOLUME: | ||
| 2123 | case ARIZONA_DSP1LMIX_INPUT_4_SOURCE: | ||
| 2124 | case ARIZONA_DSP1LMIX_INPUT_4_VOLUME: | ||
| 2125 | case ARIZONA_DSP1RMIX_INPUT_1_SOURCE: | ||
| 2126 | case ARIZONA_DSP1RMIX_INPUT_1_VOLUME: | ||
| 2127 | case ARIZONA_DSP1RMIX_INPUT_2_SOURCE: | ||
| 2128 | case ARIZONA_DSP1RMIX_INPUT_2_VOLUME: | ||
| 2129 | case ARIZONA_DSP1RMIX_INPUT_3_SOURCE: | ||
| 2130 | case ARIZONA_DSP1RMIX_INPUT_3_VOLUME: | ||
| 2131 | case ARIZONA_DSP1RMIX_INPUT_4_SOURCE: | ||
| 2132 | case ARIZONA_DSP1RMIX_INPUT_4_VOLUME: | ||
| 2133 | case ARIZONA_DSP1AUX1MIX_INPUT_1_SOURCE: | ||
| 2134 | case ARIZONA_DSP1AUX2MIX_INPUT_1_SOURCE: | ||
| 2135 | case ARIZONA_DSP1AUX3MIX_INPUT_1_SOURCE: | ||
| 2136 | case ARIZONA_DSP1AUX4MIX_INPUT_1_SOURCE: | ||
| 2137 | case ARIZONA_DSP1AUX5MIX_INPUT_1_SOURCE: | ||
| 2138 | case ARIZONA_DSP1AUX6MIX_INPUT_1_SOURCE: | ||
| 2139 | case ARIZONA_ASRC1LMIX_INPUT_1_SOURCE: | ||
| 2140 | case ARIZONA_ASRC1RMIX_INPUT_1_SOURCE: | ||
| 2141 | case ARIZONA_ASRC2LMIX_INPUT_1_SOURCE: | ||
| 2142 | case ARIZONA_ASRC2RMIX_INPUT_1_SOURCE: | ||
| 2143 | case ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE: | ||
| 2144 | case ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE: | ||
| 2145 | case ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE: | ||
| 2146 | case ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE: | ||
| 2147 | case ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE: | ||
| 2148 | case ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE: | ||
| 2149 | case ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE: | ||
| 2150 | case ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE: | ||
| 2151 | case ARIZONA_GPIO1_CTRL: | ||
| 2152 | case ARIZONA_GPIO2_CTRL: | ||
| 2153 | case ARIZONA_GPIO3_CTRL: | ||
| 2154 | case ARIZONA_GPIO4_CTRL: | ||
| 2155 | case ARIZONA_GPIO5_CTRL: | ||
| 2156 | case ARIZONA_IRQ_CTRL_1: | ||
| 2157 | case ARIZONA_GPIO_DEBOUNCE_CONFIG: | ||
| 2158 | case ARIZONA_MISC_PAD_CTRL_1: | ||
| 2159 | case ARIZONA_MISC_PAD_CTRL_2: | ||
| 2160 | case ARIZONA_MISC_PAD_CTRL_3: | ||
| 2161 | case ARIZONA_MISC_PAD_CTRL_4: | ||
| 2162 | case ARIZONA_MISC_PAD_CTRL_5: | ||
| 2163 | case ARIZONA_MISC_PAD_CTRL_6: | ||
| 2164 | case ARIZONA_INTERRUPT_STATUS_1: | ||
| 2165 | case ARIZONA_INTERRUPT_STATUS_2: | ||
| 2166 | case ARIZONA_INTERRUPT_STATUS_3: | ||
| 2167 | case ARIZONA_INTERRUPT_STATUS_4: | ||
| 2168 | case ARIZONA_INTERRUPT_STATUS_5: | ||
| 2169 | case ARIZONA_INTERRUPT_STATUS_1_MASK: | ||
| 2170 | case ARIZONA_INTERRUPT_STATUS_2_MASK: | ||
| 2171 | case ARIZONA_INTERRUPT_STATUS_3_MASK: | ||
| 2172 | case ARIZONA_INTERRUPT_STATUS_4_MASK: | ||
| 2173 | case ARIZONA_INTERRUPT_STATUS_5_MASK: | ||
| 2174 | case ARIZONA_INTERRUPT_CONTROL: | ||
| 2175 | case ARIZONA_IRQ2_STATUS_1: | ||
| 2176 | case ARIZONA_IRQ2_STATUS_2: | ||
| 2177 | case ARIZONA_IRQ2_STATUS_3: | ||
| 2178 | case ARIZONA_IRQ2_STATUS_4: | ||
| 2179 | case ARIZONA_IRQ2_STATUS_5: | ||
| 2180 | case ARIZONA_IRQ2_STATUS_1_MASK: | ||
| 2181 | case ARIZONA_IRQ2_STATUS_2_MASK: | ||
| 2182 | case ARIZONA_IRQ2_STATUS_3_MASK: | ||
| 2183 | case ARIZONA_IRQ2_STATUS_4_MASK: | ||
| 2184 | case ARIZONA_IRQ2_STATUS_5_MASK: | ||
| 2185 | case ARIZONA_IRQ2_CONTROL: | ||
| 2186 | case ARIZONA_INTERRUPT_RAW_STATUS_2: | ||
| 2187 | case ARIZONA_INTERRUPT_RAW_STATUS_3: | ||
| 2188 | case ARIZONA_INTERRUPT_RAW_STATUS_4: | ||
| 2189 | case ARIZONA_INTERRUPT_RAW_STATUS_5: | ||
| 2190 | case ARIZONA_INTERRUPT_RAW_STATUS_6: | ||
| 2191 | case ARIZONA_INTERRUPT_RAW_STATUS_7: | ||
| 2192 | case ARIZONA_INTERRUPT_RAW_STATUS_8: | ||
| 2193 | case ARIZONA_IRQ_PIN_STATUS: | ||
| 2194 | case ARIZONA_ADSP2_IRQ0: | ||
| 2195 | case ARIZONA_AOD_WKUP_AND_TRIG: | ||
| 2196 | case ARIZONA_AOD_IRQ1: | ||
| 2197 | case ARIZONA_AOD_IRQ2: | ||
| 2198 | case ARIZONA_AOD_IRQ_MASK_IRQ1: | ||
| 2199 | case ARIZONA_AOD_IRQ_MASK_IRQ2: | ||
| 2200 | case ARIZONA_AOD_IRQ_RAW_STATUS: | ||
| 2201 | case ARIZONA_JACK_DETECT_DEBOUNCE: | ||
| 2202 | case ARIZONA_FX_CTRL1: | ||
| 2203 | case ARIZONA_FX_CTRL2: | ||
| 2204 | case ARIZONA_EQ1_1: | ||
| 2205 | case ARIZONA_EQ1_2: | ||
| 2206 | case ARIZONA_EQ1_3: | ||
| 2207 | case ARIZONA_EQ1_4: | ||
| 2208 | case ARIZONA_EQ1_5: | ||
| 2209 | case ARIZONA_EQ1_6: | ||
| 2210 | case ARIZONA_EQ1_7: | ||
| 2211 | case ARIZONA_EQ1_8: | ||
| 2212 | case ARIZONA_EQ1_9: | ||
| 2213 | case ARIZONA_EQ1_10: | ||
| 2214 | case ARIZONA_EQ1_11: | ||
| 2215 | case ARIZONA_EQ1_12: | ||
| 2216 | case ARIZONA_EQ1_13: | ||
| 2217 | case ARIZONA_EQ1_14: | ||
| 2218 | case ARIZONA_EQ1_15: | ||
| 2219 | case ARIZONA_EQ1_16: | ||
| 2220 | case ARIZONA_EQ1_17: | ||
| 2221 | case ARIZONA_EQ1_18: | ||
| 2222 | case ARIZONA_EQ1_19: | ||
| 2223 | case ARIZONA_EQ1_20: | ||
| 2224 | case ARIZONA_EQ1_21: | ||
| 2225 | case ARIZONA_EQ2_1: | ||
| 2226 | case ARIZONA_EQ2_2: | ||
| 2227 | case ARIZONA_EQ2_3: | ||
| 2228 | case ARIZONA_EQ2_4: | ||
| 2229 | case ARIZONA_EQ2_5: | ||
| 2230 | case ARIZONA_EQ2_6: | ||
| 2231 | case ARIZONA_EQ2_7: | ||
| 2232 | case ARIZONA_EQ2_8: | ||
| 2233 | case ARIZONA_EQ2_9: | ||
| 2234 | case ARIZONA_EQ2_10: | ||
| 2235 | case ARIZONA_EQ2_11: | ||
| 2236 | case ARIZONA_EQ2_12: | ||
| 2237 | case ARIZONA_EQ2_13: | ||
| 2238 | case ARIZONA_EQ2_14: | ||
| 2239 | case ARIZONA_EQ2_15: | ||
| 2240 | case ARIZONA_EQ2_16: | ||
| 2241 | case ARIZONA_EQ2_17: | ||
| 2242 | case ARIZONA_EQ2_18: | ||
| 2243 | case ARIZONA_EQ2_19: | ||
| 2244 | case ARIZONA_EQ2_20: | ||
| 2245 | case ARIZONA_EQ2_21: | ||
| 2246 | case ARIZONA_EQ3_1: | ||
| 2247 | case ARIZONA_EQ3_2: | ||
| 2248 | case ARIZONA_EQ3_3: | ||
| 2249 | case ARIZONA_EQ3_4: | ||
| 2250 | case ARIZONA_EQ3_5: | ||
| 2251 | case ARIZONA_EQ3_6: | ||
| 2252 | case ARIZONA_EQ3_7: | ||
| 2253 | case ARIZONA_EQ3_8: | ||
| 2254 | case ARIZONA_EQ3_9: | ||
| 2255 | case ARIZONA_EQ3_10: | ||
| 2256 | case ARIZONA_EQ3_11: | ||
| 2257 | case ARIZONA_EQ3_12: | ||
| 2258 | case ARIZONA_EQ3_13: | ||
| 2259 | case ARIZONA_EQ3_14: | ||
| 2260 | case ARIZONA_EQ3_15: | ||
| 2261 | case ARIZONA_EQ3_16: | ||
| 2262 | case ARIZONA_EQ3_17: | ||
| 2263 | case ARIZONA_EQ3_18: | ||
| 2264 | case ARIZONA_EQ3_19: | ||
| 2265 | case ARIZONA_EQ3_20: | ||
| 2266 | case ARIZONA_EQ3_21: | ||
| 2267 | case ARIZONA_EQ4_1: | ||
| 2268 | case ARIZONA_EQ4_2: | ||
| 2269 | case ARIZONA_EQ4_3: | ||
| 2270 | case ARIZONA_EQ4_4: | ||
| 2271 | case ARIZONA_EQ4_5: | ||
| 2272 | case ARIZONA_EQ4_6: | ||
| 2273 | case ARIZONA_EQ4_7: | ||
| 2274 | case ARIZONA_EQ4_8: | ||
| 2275 | case ARIZONA_EQ4_9: | ||
| 2276 | case ARIZONA_EQ4_10: | ||
| 2277 | case ARIZONA_EQ4_11: | ||
| 2278 | case ARIZONA_EQ4_12: | ||
| 2279 | case ARIZONA_EQ4_13: | ||
| 2280 | case ARIZONA_EQ4_14: | ||
| 2281 | case ARIZONA_EQ4_15: | ||
| 2282 | case ARIZONA_EQ4_16: | ||
| 2283 | case ARIZONA_EQ4_17: | ||
| 2284 | case ARIZONA_EQ4_18: | ||
| 2285 | case ARIZONA_EQ4_19: | ||
| 2286 | case ARIZONA_EQ4_20: | ||
| 2287 | case ARIZONA_EQ4_21: | ||
| 2288 | case ARIZONA_DRC1_CTRL1: | ||
| 2289 | case ARIZONA_DRC1_CTRL2: | ||
| 2290 | case ARIZONA_DRC1_CTRL3: | ||
| 2291 | case ARIZONA_DRC1_CTRL4: | ||
| 2292 | case ARIZONA_DRC1_CTRL5: | ||
| 2293 | case ARIZONA_DRC2_CTRL1: | ||
| 2294 | case ARIZONA_DRC2_CTRL2: | ||
| 2295 | case ARIZONA_DRC2_CTRL3: | ||
| 2296 | case ARIZONA_DRC2_CTRL4: | ||
| 2297 | case ARIZONA_DRC2_CTRL5: | ||
| 2298 | case ARIZONA_HPLPF1_1: | ||
| 2299 | case ARIZONA_HPLPF1_2: | ||
| 2300 | case ARIZONA_HPLPF2_1: | ||
| 2301 | case ARIZONA_HPLPF2_2: | ||
| 2302 | case ARIZONA_HPLPF3_1: | ||
| 2303 | case ARIZONA_HPLPF3_2: | ||
| 2304 | case ARIZONA_HPLPF4_1: | ||
| 2305 | case ARIZONA_HPLPF4_2: | ||
| 2306 | case ARIZONA_ASRC_ENABLE: | ||
| 2307 | case ARIZONA_ASRC_RATE1: | ||
| 2308 | case ARIZONA_ASRC_RATE2: | ||
| 2309 | case ARIZONA_ISRC_1_CTRL_1: | ||
| 2310 | case ARIZONA_ISRC_1_CTRL_2: | ||
| 2311 | case ARIZONA_ISRC_1_CTRL_3: | ||
| 2312 | case ARIZONA_ISRC_2_CTRL_1: | ||
| 2313 | case ARIZONA_ISRC_2_CTRL_2: | ||
| 2314 | case ARIZONA_ISRC_2_CTRL_3: | ||
| 2315 | case ARIZONA_ISRC_3_CTRL_1: | ||
| 2316 | case ARIZONA_ISRC_3_CTRL_2: | ||
| 2317 | case ARIZONA_ISRC_3_CTRL_3: | ||
| 2318 | case ARIZONA_DSP1_CONTROL_1: | ||
| 2319 | case ARIZONA_DSP1_CLOCKING_1: | ||
| 2320 | case ARIZONA_DSP1_STATUS_1: | ||
| 2321 | case ARIZONA_DSP1_STATUS_2: | ||
| 2322 | return true; | ||
| 2323 | default: | ||
| 2324 | return false; | ||
| 2325 | } | ||
| 2326 | } | ||
| 2327 | |||
| 2328 | static bool wm5102_volatile_register(struct device *dev, unsigned int reg) | ||
| 2329 | { | ||
| 2330 | switch (reg) { | ||
| 2331 | case ARIZONA_SOFTWARE_RESET: | ||
| 2332 | case ARIZONA_DEVICE_REVISION: | ||
| 2333 | case ARIZONA_OUTPUT_STATUS_1: | ||
| 2334 | case ARIZONA_SAMPLE_RATE_1_STATUS: | ||
| 2335 | case ARIZONA_SAMPLE_RATE_2_STATUS: | ||
| 2336 | case ARIZONA_SAMPLE_RATE_3_STATUS: | ||
| 2337 | case ARIZONA_HAPTICS_STATUS: | ||
| 2338 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | ||
| 2339 | case ARIZONA_FX_CTRL2: | ||
| 2340 | case ARIZONA_INTERRUPT_STATUS_1: | ||
| 2341 | case ARIZONA_INTERRUPT_STATUS_2: | ||
| 2342 | case ARIZONA_INTERRUPT_STATUS_3: | ||
| 2343 | case ARIZONA_INTERRUPT_STATUS_4: | ||
| 2344 | case ARIZONA_INTERRUPT_STATUS_5: | ||
| 2345 | case ARIZONA_IRQ2_STATUS_1: | ||
| 2346 | case ARIZONA_IRQ2_STATUS_2: | ||
| 2347 | case ARIZONA_IRQ2_STATUS_3: | ||
| 2348 | case ARIZONA_IRQ2_STATUS_4: | ||
| 2349 | case ARIZONA_IRQ2_STATUS_5: | ||
| 2350 | case ARIZONA_INTERRUPT_RAW_STATUS_2: | ||
| 2351 | case ARIZONA_INTERRUPT_RAW_STATUS_3: | ||
| 2352 | case ARIZONA_INTERRUPT_RAW_STATUS_4: | ||
| 2353 | case ARIZONA_INTERRUPT_RAW_STATUS_5: | ||
| 2354 | case ARIZONA_INTERRUPT_RAW_STATUS_6: | ||
| 2355 | case ARIZONA_INTERRUPT_RAW_STATUS_7: | ||
| 2356 | case ARIZONA_INTERRUPT_RAW_STATUS_8: | ||
| 2357 | case ARIZONA_IRQ_PIN_STATUS: | ||
| 2358 | case ARIZONA_AOD_WKUP_AND_TRIG: | ||
| 2359 | case ARIZONA_AOD_IRQ1: | ||
| 2360 | case ARIZONA_AOD_IRQ2: | ||
| 2361 | case ARIZONA_AOD_IRQ_RAW_STATUS: | ||
| 2362 | case ARIZONA_DSP1_STATUS_1: | ||
| 2363 | case ARIZONA_DSP1_STATUS_2: | ||
| 2364 | case ARIZONA_HEADPHONE_DETECT_2: | ||
| 2365 | case ARIZONA_MIC_DETECT_3: | ||
| 2366 | return true; | ||
| 2367 | default: | ||
| 2368 | return false; | ||
| 2369 | } | ||
| 2370 | } | ||
| 2371 | |||
| 2372 | const struct regmap_config wm5102_spi_regmap = { | ||
| 2373 | .reg_bits = 32, | ||
| 2374 | .pad_bits = 16, | ||
| 2375 | .val_bits = 16, | ||
| 2376 | |||
| 2377 | .max_register = ARIZONA_DSP1_STATUS_2, | ||
| 2378 | .readable_reg = wm5102_readable_register, | ||
| 2379 | .volatile_reg = wm5102_volatile_register, | ||
| 2380 | |||
| 2381 | .cache_type = REGCACHE_RBTREE, | ||
| 2382 | .reg_defaults = wm5102_reg_default, | ||
| 2383 | .num_reg_defaults = ARRAY_SIZE(wm5102_reg_default), | ||
| 2384 | }; | ||
| 2385 | EXPORT_SYMBOL_GPL(wm5102_spi_regmap); | ||
| 2386 | |||
| 2387 | const struct regmap_config wm5102_i2c_regmap = { | ||
| 2388 | .reg_bits = 32, | ||
| 2389 | .val_bits = 16, | ||
| 2390 | |||
| 2391 | .max_register = ARIZONA_DSP1_STATUS_2, | ||
| 2392 | .readable_reg = wm5102_readable_register, | ||
| 2393 | .volatile_reg = wm5102_volatile_register, | ||
| 2394 | |||
| 2395 | .cache_type = REGCACHE_RBTREE, | ||
| 2396 | .reg_defaults = wm5102_reg_default, | ||
| 2397 | .num_reg_defaults = ARRAY_SIZE(wm5102_reg_default), | ||
| 2398 | }; | ||
| 2399 | EXPORT_SYMBOL_GPL(wm5102_i2c_regmap); | ||
diff --git a/drivers/mfd/wm5110-tables.c b/drivers/mfd/wm5110-tables.c new file mode 100644 index 000000000000..bd8782c8896b --- /dev/null +++ b/drivers/mfd/wm5110-tables.c | |||
| @@ -0,0 +1,2281 @@ | |||
| 1 | /* | ||
| 2 | * wm5110-tables.c -- WM5110 data tables | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics plc | ||
| 5 | * | ||
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #include <linux/module.h> | ||
| 14 | |||
| 15 | #include <linux/mfd/arizona/core.h> | ||
| 16 | #include <linux/mfd/arizona/registers.h> | ||
| 17 | |||
| 18 | #include "arizona.h" | ||
| 19 | |||
| 20 | #define WM5110_NUM_AOD_ISR 2 | ||
| 21 | #define WM5110_NUM_ISR 5 | ||
| 22 | |||
| 23 | static const struct reg_default wm5110_reva_patch[] = { | ||
| 24 | { 0x80, 0x3 }, | ||
| 25 | { 0x44, 0x20 }, | ||
| 26 | { 0x45, 0x40 }, | ||
| 27 | { 0x46, 0x60 }, | ||
| 28 | { 0x47, 0x80 }, | ||
| 29 | { 0x48, 0xa0 }, | ||
| 30 | { 0x51, 0x13 }, | ||
| 31 | { 0x52, 0x33 }, | ||
| 32 | { 0x53, 0x53 }, | ||
| 33 | { 0x54, 0x73 }, | ||
| 34 | { 0x55, 0x75 }, | ||
| 35 | { 0x56, 0xb3 }, | ||
| 36 | { 0x2ef, 0x124 }, | ||
| 37 | { 0x2ef, 0x124 }, | ||
| 38 | { 0x2f0, 0x124 }, | ||
| 39 | { 0x2f0, 0x124 }, | ||
| 40 | { 0x2f1, 0x124 }, | ||
| 41 | { 0x2f1, 0x124 }, | ||
| 42 | { 0x2f2, 0x124 }, | ||
| 43 | { 0x2f2, 0x124 }, | ||
| 44 | { 0x2f3, 0x124 }, | ||
| 45 | { 0x2f3, 0x124 }, | ||
| 46 | { 0x2f4, 0x124 }, | ||
| 47 | { 0x2f4, 0x124 }, | ||
| 48 | { 0x2eb, 0x60 }, | ||
| 49 | { 0x2ec, 0x60 }, | ||
| 50 | { 0x2ed, 0x60 }, | ||
| 51 | { 0xc30, 0x3e3e }, | ||
| 52 | { 0xc30, 0x3e3e }, | ||
| 53 | { 0xc31, 0x3e }, | ||
| 54 | { 0xc32, 0x3e3e }, | ||
| 55 | { 0xc32, 0x3e3e }, | ||
| 56 | { 0xc33, 0x3e3e }, | ||
| 57 | { 0xc33, 0x3e3e }, | ||
| 58 | { 0xc34, 0x3e3e }, | ||
| 59 | { 0xc34, 0x3e3e }, | ||
| 60 | { 0xc35, 0x3e3e }, | ||
| 61 | { 0xc35, 0x3e3e }, | ||
| 62 | { 0xc36, 0x3e3e }, | ||
| 63 | { 0xc36, 0x3e3e }, | ||
| 64 | { 0xc37, 0x3e3e }, | ||
| 65 | { 0xc37, 0x3e3e }, | ||
| 66 | { 0xc38, 0x3e3e }, | ||
| 67 | { 0xc38, 0x3e3e }, | ||
| 68 | { 0xc30, 0x3e3e }, | ||
| 69 | { 0xc30, 0x3e3e }, | ||
| 70 | { 0xc39, 0x3e3e }, | ||
| 71 | { 0xc39, 0x3e3e }, | ||
| 72 | { 0xc3a, 0x3e3e }, | ||
| 73 | { 0xc3a, 0x3e3e }, | ||
| 74 | { 0xc3b, 0x3e3e }, | ||
| 75 | { 0xc3b, 0x3e3e }, | ||
| 76 | { 0xc3c, 0x3e }, | ||
| 77 | { 0x201, 0x18a5 }, | ||
| 78 | { 0x201, 0x18a5 }, | ||
| 79 | { 0x201, 0x18a5 }, | ||
| 80 | { 0x202, 0x4100 }, | ||
| 81 | { 0x460, 0xc00 }, | ||
| 82 | { 0x461, 0x8000 }, | ||
| 83 | { 0x462, 0xc01 }, | ||
| 84 | { 0x463, 0x50f0 }, | ||
| 85 | { 0x464, 0xc01 }, | ||
| 86 | { 0x465, 0x4820 }, | ||
| 87 | { 0x466, 0xc01 }, | ||
| 88 | { 0x466, 0xc01 }, | ||
| 89 | { 0x467, 0x4040 }, | ||
| 90 | { 0x468, 0xc01 }, | ||
| 91 | { 0x468, 0xc01 }, | ||
| 92 | { 0x469, 0x3940 }, | ||
| 93 | { 0x46a, 0xc01 }, | ||
| 94 | { 0x46a, 0xc01 }, | ||
| 95 | { 0x46a, 0xc01 }, | ||
| 96 | { 0x46b, 0x3310 }, | ||
| 97 | { 0x46c, 0x801 }, | ||
| 98 | { 0x46c, 0x801 }, | ||
| 99 | { 0x46d, 0x2d80 }, | ||
| 100 | { 0x46e, 0x801 }, | ||
| 101 | { 0x46e, 0x801 }, | ||
| 102 | { 0x46f, 0x2890 }, | ||
| 103 | { 0x470, 0x801 }, | ||
| 104 | { 0x470, 0x801 }, | ||
| 105 | { 0x471, 0x1990 }, | ||
| 106 | { 0x472, 0x801 }, | ||
| 107 | { 0x472, 0x801 }, | ||
| 108 | { 0x473, 0x1450 }, | ||
| 109 | { 0x474, 0x801 }, | ||
| 110 | { 0x474, 0x801 }, | ||
| 111 | { 0x474, 0x801 }, | ||
| 112 | { 0x475, 0x1020 }, | ||
| 113 | { 0x476, 0x801 }, | ||
| 114 | { 0x476, 0x801 }, | ||
| 115 | { 0x476, 0x801 }, | ||
| 116 | { 0x477, 0xcd0 }, | ||
| 117 | { 0x478, 0x806 }, | ||
| 118 | { 0x478, 0x806 }, | ||
| 119 | { 0x479, 0xa30 }, | ||
| 120 | { 0x47a, 0x806 }, | ||
| 121 | { 0x47a, 0x806 }, | ||
| 122 | { 0x47b, 0x810 }, | ||
| 123 | { 0x47c, 0x80e }, | ||
| 124 | { 0x47c, 0x80e }, | ||
| 125 | { 0x47d, 0x510 }, | ||
| 126 | { 0x47e, 0x81f }, | ||
| 127 | { 0x47e, 0x81f }, | ||
| 128 | { 0x2DB, 0x0A00 }, | ||
| 129 | { 0x2DD, 0x0023 }, | ||
| 130 | { 0x2DF, 0x0102 }, | ||
| 131 | { 0x80, 0x0 }, | ||
| 132 | { 0xC20, 0x0002 }, | ||
| 133 | { 0x209, 0x002A }, | ||
| 134 | }; | ||
| 135 | |||
| 136 | /* We use a function so we can use ARRAY_SIZE() */ | ||
| 137 | int wm5110_patch(struct arizona *arizona) | ||
| 138 | { | ||
| 139 | switch (arizona->rev) { | ||
| 140 | case 0: | ||
| 141 | case 1: | ||
| 142 | return regmap_register_patch(arizona->regmap, | ||
| 143 | wm5110_reva_patch, | ||
| 144 | ARRAY_SIZE(wm5110_reva_patch)); | ||
| 145 | default: | ||
| 146 | return 0; | ||
| 147 | } | ||
| 148 | } | ||
| 149 | EXPORT_SYMBOL_GPL(wm5110_patch); | ||
| 150 | |||
| 151 | static const struct regmap_irq wm5110_aod_irqs[ARIZONA_NUM_IRQ] = { | ||
| 152 | [ARIZONA_IRQ_GP5_FALL] = { .mask = ARIZONA_GP5_FALL_EINT1 }, | ||
| 153 | [ARIZONA_IRQ_GP5_RISE] = { .mask = ARIZONA_GP5_RISE_EINT1 }, | ||
| 154 | [ARIZONA_IRQ_JD_FALL] = { .mask = ARIZONA_JD1_FALL_EINT1 }, | ||
| 155 | [ARIZONA_IRQ_JD_RISE] = { .mask = ARIZONA_JD1_RISE_EINT1 }, | ||
| 156 | }; | ||
| 157 | |||
| 158 | const struct regmap_irq_chip wm5110_aod = { | ||
| 159 | .name = "wm5110 AOD", | ||
| 160 | .status_base = ARIZONA_AOD_IRQ1, | ||
| 161 | .mask_base = ARIZONA_AOD_IRQ_MASK_IRQ1, | ||
| 162 | .ack_base = ARIZONA_AOD_IRQ1, | ||
| 163 | .wake_base = ARIZONA_WAKE_CONTROL, | ||
| 164 | .num_regs = 1, | ||
| 165 | .irqs = wm5110_aod_irqs, | ||
| 166 | .num_irqs = ARRAY_SIZE(wm5110_aod_irqs), | ||
| 167 | }; | ||
| 168 | EXPORT_SYMBOL_GPL(wm5110_aod); | ||
| 169 | |||
| 170 | static const struct regmap_irq wm5110_irqs[ARIZONA_NUM_IRQ] = { | ||
| 171 | [ARIZONA_IRQ_GP4] = { .reg_offset = 0, .mask = ARIZONA_GP4_EINT1 }, | ||
| 172 | [ARIZONA_IRQ_GP3] = { .reg_offset = 0, .mask = ARIZONA_GP3_EINT1 }, | ||
| 173 | [ARIZONA_IRQ_GP2] = { .reg_offset = 0, .mask = ARIZONA_GP2_EINT1 }, | ||
| 174 | [ARIZONA_IRQ_GP1] = { .reg_offset = 0, .mask = ARIZONA_GP1_EINT1 }, | ||
| 175 | |||
| 176 | [ARIZONA_IRQ_DSP4_RAM_RDY] = { | ||
| 177 | .reg_offset = 1, .mask = ARIZONA_DSP4_RAM_RDY_EINT1 | ||
| 178 | }, | ||
| 179 | [ARIZONA_IRQ_DSP3_RAM_RDY] = { | ||
| 180 | .reg_offset = 1, .mask = ARIZONA_DSP3_RAM_RDY_EINT1 | ||
| 181 | }, | ||
| 182 | [ARIZONA_IRQ_DSP2_RAM_RDY] = { | ||
| 183 | .reg_offset = 1, .mask = ARIZONA_DSP2_RAM_RDY_EINT1 | ||
| 184 | }, | ||
| 185 | [ARIZONA_IRQ_DSP1_RAM_RDY] = { | ||
| 186 | .reg_offset = 1, .mask = ARIZONA_DSP1_RAM_RDY_EINT1 | ||
| 187 | }, | ||
| 188 | [ARIZONA_IRQ_DSP_IRQ8] = { | ||
| 189 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ8_EINT1 | ||
| 190 | }, | ||
| 191 | [ARIZONA_IRQ_DSP_IRQ7] = { | ||
| 192 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ7_EINT1 | ||
| 193 | }, | ||
| 194 | [ARIZONA_IRQ_DSP_IRQ6] = { | ||
| 195 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ6_EINT1 | ||
| 196 | }, | ||
| 197 | [ARIZONA_IRQ_DSP_IRQ5] = { | ||
| 198 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ5_EINT1 | ||
| 199 | }, | ||
| 200 | [ARIZONA_IRQ_DSP_IRQ4] = { | ||
| 201 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ4_EINT1 | ||
| 202 | }, | ||
| 203 | [ARIZONA_IRQ_DSP_IRQ3] = { | ||
| 204 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ3_EINT1 | ||
| 205 | }, | ||
| 206 | [ARIZONA_IRQ_DSP_IRQ2] = { | ||
| 207 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ2_EINT1 | ||
| 208 | }, | ||
| 209 | [ARIZONA_IRQ_DSP_IRQ1] = { | ||
| 210 | .reg_offset = 1, .mask = ARIZONA_DSP_IRQ1_EINT1 | ||
| 211 | }, | ||
| 212 | |||
| 213 | [ARIZONA_IRQ_SPK_SHUTDOWN_WARN] = { | ||
| 214 | .reg_offset = 2, .mask = ARIZONA_SPK_SHUTDOWN_WARN_EINT1 | ||
| 215 | }, | ||
| 216 | [ARIZONA_IRQ_SPK_SHUTDOWN] = { | ||
| 217 | .reg_offset = 2, .mask = ARIZONA_SPK_SHUTDOWN_EINT1 | ||
| 218 | }, | ||
| 219 | [ARIZONA_IRQ_HPDET] = { | ||
| 220 | .reg_offset = 2, .mask = ARIZONA_HPDET_EINT1 | ||
| 221 | }, | ||
| 222 | [ARIZONA_IRQ_MICDET] = { | ||
| 223 | .reg_offset = 2, .mask = ARIZONA_MICDET_EINT1 | ||
| 224 | }, | ||
| 225 | [ARIZONA_IRQ_WSEQ_DONE] = { | ||
| 226 | .reg_offset = 2, .mask = ARIZONA_WSEQ_DONE_EINT1 | ||
| 227 | }, | ||
| 228 | [ARIZONA_IRQ_DRC2_SIG_DET] = { | ||
| 229 | .reg_offset = 2, .mask = ARIZONA_DRC2_SIG_DET_EINT1 | ||
| 230 | }, | ||
| 231 | [ARIZONA_IRQ_DRC1_SIG_DET] = { | ||
| 232 | .reg_offset = 2, .mask = ARIZONA_DRC1_SIG_DET_EINT1 | ||
| 233 | }, | ||
| 234 | [ARIZONA_IRQ_ASRC2_LOCK] = { | ||
| 235 | .reg_offset = 2, .mask = ARIZONA_ASRC2_LOCK_EINT1 | ||
| 236 | }, | ||
| 237 | [ARIZONA_IRQ_ASRC1_LOCK] = { | ||
| 238 | .reg_offset = 2, .mask = ARIZONA_ASRC1_LOCK_EINT1 | ||
| 239 | }, | ||
| 240 | [ARIZONA_IRQ_UNDERCLOCKED] = { | ||
| 241 | .reg_offset = 2, .mask = ARIZONA_UNDERCLOCKED_EINT1 | ||
| 242 | }, | ||
| 243 | [ARIZONA_IRQ_OVERCLOCKED] = { | ||
| 244 | .reg_offset = 2, .mask = ARIZONA_OVERCLOCKED_EINT1 | ||
| 245 | }, | ||
| 246 | [ARIZONA_IRQ_FLL2_LOCK] = { | ||
| 247 | .reg_offset = 2, .mask = ARIZONA_FLL2_LOCK_EINT1 | ||
| 248 | }, | ||
| 249 | [ARIZONA_IRQ_FLL1_LOCK] = { | ||
| 250 | .reg_offset = 2, .mask = ARIZONA_FLL1_LOCK_EINT1 | ||
| 251 | }, | ||
| 252 | [ARIZONA_IRQ_CLKGEN_ERR] = { | ||
| 253 | .reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_EINT1 | ||
| 254 | }, | ||
| 255 | [ARIZONA_IRQ_CLKGEN_ERR_ASYNC] = { | ||
| 256 | .reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_ASYNC_EINT1 | ||
| 257 | }, | ||
| 258 | |||
| 259 | [ARIZONA_IRQ_ASRC_CFG_ERR] = { | ||
| 260 | .reg_offset = 3, .mask = ARIZONA_ASRC_CFG_ERR_EINT1 | ||
| 261 | }, | ||
| 262 | [ARIZONA_IRQ_AIF3_ERR] = { | ||
| 263 | .reg_offset = 3, .mask = ARIZONA_AIF3_ERR_EINT1 | ||
| 264 | }, | ||
| 265 | [ARIZONA_IRQ_AIF2_ERR] = { | ||
| 266 | .reg_offset = 3, .mask = ARIZONA_AIF2_ERR_EINT1 | ||
| 267 | }, | ||
| 268 | [ARIZONA_IRQ_AIF1_ERR] = { | ||
| 269 | .reg_offset = 3, .mask = ARIZONA_AIF1_ERR_EINT1 | ||
| 270 | }, | ||
| 271 | [ARIZONA_IRQ_CTRLIF_ERR] = { | ||
| 272 | .reg_offset = 3, .mask = ARIZONA_CTRLIF_ERR_EINT1 | ||
| 273 | }, | ||
| 274 | [ARIZONA_IRQ_MIXER_DROPPED_SAMPLES] = { | ||
| 275 | .reg_offset = 3, .mask = ARIZONA_MIXER_DROPPED_SAMPLE_EINT1 | ||
| 276 | }, | ||
| 277 | [ARIZONA_IRQ_ASYNC_CLK_ENA_LOW] = { | ||
| 278 | .reg_offset = 3, .mask = ARIZONA_ASYNC_CLK_ENA_LOW_EINT1 | ||
| 279 | }, | ||
| 280 | [ARIZONA_IRQ_SYSCLK_ENA_LOW] = { | ||
| 281 | .reg_offset = 3, .mask = ARIZONA_SYSCLK_ENA_LOW_EINT1 | ||
| 282 | }, | ||
| 283 | [ARIZONA_IRQ_ISRC1_CFG_ERR] = { | ||
| 284 | .reg_offset = 3, .mask = ARIZONA_ISRC1_CFG_ERR_EINT1 | ||
| 285 | }, | ||
| 286 | [ARIZONA_IRQ_ISRC2_CFG_ERR] = { | ||
| 287 | .reg_offset = 3, .mask = ARIZONA_ISRC2_CFG_ERR_EINT1 | ||
| 288 | }, | ||
| 289 | |||
| 290 | [ARIZONA_IRQ_BOOT_DONE] = { | ||
| 291 | .reg_offset = 4, .mask = ARIZONA_BOOT_DONE_EINT1 | ||
| 292 | }, | ||
| 293 | [ARIZONA_IRQ_DCS_DAC_DONE] = { | ||
| 294 | .reg_offset = 4, .mask = ARIZONA_DCS_DAC_DONE_EINT1 | ||
| 295 | }, | ||
| 296 | [ARIZONA_IRQ_DCS_HP_DONE] = { | ||
| 297 | .reg_offset = 4, .mask = ARIZONA_DCS_HP_DONE_EINT1 | ||
| 298 | }, | ||
| 299 | [ARIZONA_IRQ_FLL2_CLOCK_OK] = { | ||
| 300 | .reg_offset = 4, .mask = ARIZONA_FLL2_CLOCK_OK_EINT1 | ||
| 301 | }, | ||
| 302 | [ARIZONA_IRQ_FLL1_CLOCK_OK] = { | ||
| 303 | .reg_offset = 4, .mask = ARIZONA_FLL1_CLOCK_OK_EINT1 | ||
| 304 | }, | ||
| 305 | }; | ||
| 306 | |||
| 307 | const struct regmap_irq_chip wm5110_irq = { | ||
| 308 | .name = "wm5110 IRQ", | ||
| 309 | .status_base = ARIZONA_INTERRUPT_STATUS_1, | ||
| 310 | .mask_base = ARIZONA_INTERRUPT_STATUS_1_MASK, | ||
| 311 | .ack_base = ARIZONA_INTERRUPT_STATUS_1, | ||
| 312 | .num_regs = 5, | ||
| 313 | .irqs = wm5110_irqs, | ||
| 314 | .num_irqs = ARRAY_SIZE(wm5110_irqs), | ||
| 315 | }; | ||
| 316 | EXPORT_SYMBOL_GPL(wm5110_irq); | ||
| 317 | |||
| 318 | static const struct reg_default wm5110_reg_default[] = { | ||
| 319 | { 0x00000008, 0x0019 }, /* R8 - Ctrl IF SPI CFG 1 */ | ||
| 320 | { 0x00000009, 0x0001 }, /* R9 - Ctrl IF I2C1 CFG 1 */ | ||
| 321 | { 0x0000000A, 0x0001 }, /* R10 - Ctrl IF I2C2 CFG 1 */ | ||
| 322 | { 0x0000000B, 0x0036 }, /* R11 - Ctrl IF I2C1 CFG 2 */ | ||
| 323 | { 0x0000000C, 0x0036 }, /* R12 - Ctrl IF I2C2 CFG 2 */ | ||
| 324 | { 0x00000016, 0x0000 }, /* R22 - Write Sequencer Ctrl 0 */ | ||
| 325 | { 0x00000017, 0x0000 }, /* R23 - Write Sequencer Ctrl 1 */ | ||
| 326 | { 0x00000018, 0x0000 }, /* R24 - Write Sequencer Ctrl 2 */ | ||
| 327 | { 0x00000020, 0x0000 }, /* R32 - Tone Generator 1 */ | ||
| 328 | { 0x00000021, 0x1000 }, /* R33 - Tone Generator 2 */ | ||
| 329 | { 0x00000022, 0x0000 }, /* R34 - Tone Generator 3 */ | ||
| 330 | { 0x00000023, 0x1000 }, /* R35 - Tone Generator 4 */ | ||
| 331 | { 0x00000024, 0x0000 }, /* R36 - Tone Generator 5 */ | ||
| 332 | { 0x00000030, 0x0000 }, /* R48 - PWM Drive 1 */ | ||
| 333 | { 0x00000031, 0x0100 }, /* R49 - PWM Drive 2 */ | ||
| 334 | { 0x00000032, 0x0100 }, /* R50 - PWM Drive 3 */ | ||
| 335 | { 0x00000040, 0x0000 }, /* R64 - Wake control */ | ||
| 336 | { 0x00000041, 0x0000 }, /* R65 - Sequence control */ | ||
| 337 | { 0x00000061, 0x01FF }, /* R97 - Sample Rate Sequence Select 1 */ | ||
| 338 | { 0x00000062, 0x01FF }, /* R98 - Sample Rate Sequence Select 2 */ | ||
| 339 | { 0x00000063, 0x01FF }, /* R99 - Sample Rate Sequence Select 3 */ | ||
| 340 | { 0x00000064, 0x01FF }, /* R100 - Sample Rate Sequence Select 4 */ | ||
| 341 | { 0x00000068, 0x01FF }, /* R104 - Always On Triggers Sequence Select 1 */ | ||
| 342 | { 0x00000069, 0x01FF }, /* R105 - Always On Triggers Sequence Select 2 */ | ||
| 343 | { 0x0000006A, 0x01FF }, /* R106 - Always On Triggers Sequence Select 3 */ | ||
| 344 | { 0x0000006B, 0x01FF }, /* R107 - Always On Triggers Sequence Select 4 */ | ||
| 345 | { 0x00000070, 0x0000 }, /* R112 - Comfort Noise Generator */ | ||
| 346 | { 0x00000090, 0x0000 }, /* R144 - Haptics Control 1 */ | ||
| 347 | { 0x00000091, 0x7FFF }, /* R145 - Haptics Control 2 */ | ||
| 348 | { 0x00000092, 0x0000 }, /* R146 - Haptics phase 1 intensity */ | ||
| 349 | { 0x00000093, 0x0000 }, /* R147 - Haptics phase 1 duration */ | ||
| 350 | { 0x00000094, 0x0000 }, /* R148 - Haptics phase 2 intensity */ | ||
| 351 | { 0x00000095, 0x0000 }, /* R149 - Haptics phase 2 duration */ | ||
| 352 | { 0x00000096, 0x0000 }, /* R150 - Haptics phase 3 intensity */ | ||
| 353 | { 0x00000097, 0x0000 }, /* R151 - Haptics phase 3 duration */ | ||
| 354 | { 0x00000100, 0x0001 }, /* R256 - Clock 32k 1 */ | ||
| 355 | { 0x00000101, 0x0504 }, /* R257 - System Clock 1 */ | ||
| 356 | { 0x00000102, 0x0011 }, /* R258 - Sample rate 1 */ | ||
| 357 | { 0x00000103, 0x0011 }, /* R259 - Sample rate 2 */ | ||
| 358 | { 0x00000104, 0x0011 }, /* R260 - Sample rate 3 */ | ||
| 359 | { 0x00000112, 0x0305 }, /* R274 - Async clock 1 */ | ||
| 360 | { 0x00000113, 0x0011 }, /* R275 - Async sample rate 1 */ | ||
| 361 | { 0x00000149, 0x0000 }, /* R329 - Output system clock */ | ||
| 362 | { 0x0000014A, 0x0000 }, /* R330 - Output async clock */ | ||
| 363 | { 0x00000152, 0x0000 }, /* R338 - Rate Estimator 1 */ | ||
| 364 | { 0x00000153, 0x0000 }, /* R339 - Rate Estimator 2 */ | ||
| 365 | { 0x00000154, 0x0000 }, /* R340 - Rate Estimator 3 */ | ||
| 366 | { 0x00000155, 0x0000 }, /* R341 - Rate Estimator 4 */ | ||
| 367 | { 0x00000156, 0x0000 }, /* R342 - Rate Estimator 5 */ | ||
| 368 | { 0x00000171, 0x0000 }, /* R369 - FLL1 Control 1 */ | ||
| 369 | { 0x00000172, 0x0008 }, /* R370 - FLL1 Control 2 */ | ||
| 370 | { 0x00000173, 0x0018 }, /* R371 - FLL1 Control 3 */ | ||
| 371 | { 0x00000174, 0x007D }, /* R372 - FLL1 Control 4 */ | ||
| 372 | { 0x00000175, 0x0006 }, /* R373 - FLL1 Control 5 */ | ||
| 373 | { 0x00000176, 0x0000 }, /* R374 - FLL1 Control 6 */ | ||
| 374 | { 0x00000177, 0x0281 }, /* R375 - FLL1 Loop Filter Test 1 */ | ||
| 375 | { 0x00000178, 0x0000 }, /* R376 - FLL1 NCO Test 0 */ | ||
| 376 | { 0x00000181, 0x0000 }, /* R385 - FLL1 Synchroniser 1 */ | ||
| 377 | { 0x00000182, 0x0000 }, /* R386 - FLL1 Synchroniser 2 */ | ||
| 378 | { 0x00000183, 0x0000 }, /* R387 - FLL1 Synchroniser 3 */ | ||
| 379 | { 0x00000184, 0x0000 }, /* R388 - FLL1 Synchroniser 4 */ | ||
| 380 | { 0x00000185, 0x0000 }, /* R389 - FLL1 Synchroniser 5 */ | ||
| 381 | { 0x00000186, 0x0000 }, /* R390 - FLL1 Synchroniser 6 */ | ||
| 382 | { 0x00000189, 0x0000 }, /* R393 - FLL1 Spread Spectrum */ | ||
| 383 | { 0x0000018A, 0x0004 }, /* R394 - FLL1 GPIO Clock */ | ||
| 384 | { 0x00000191, 0x0000 }, /* R401 - FLL2 Control 1 */ | ||
| 385 | { 0x00000192, 0x0008 }, /* R402 - FLL2 Control 2 */ | ||
| 386 | { 0x00000193, 0x0018 }, /* R403 - FLL2 Control 3 */ | ||
| 387 | { 0x00000194, 0x007D }, /* R404 - FLL2 Control 4 */ | ||
| 388 | { 0x00000195, 0x000C }, /* R405 - FLL2 Control 5 */ | ||
| 389 | { 0x00000196, 0x0000 }, /* R406 - FLL2 Control 6 */ | ||
| 390 | { 0x00000197, 0x0000 }, /* R407 - FLL2 Loop Filter Test 1 */ | ||
| 391 | { 0x00000198, 0x0000 }, /* R408 - FLL2 NCO Test 0 */ | ||
| 392 | { 0x000001A1, 0x0000 }, /* R417 - FLL2 Synchroniser 1 */ | ||
| 393 | { 0x000001A2, 0x0000 }, /* R418 - FLL2 Synchroniser 2 */ | ||
| 394 | { 0x000001A3, 0x0000 }, /* R419 - FLL2 Synchroniser 3 */ | ||
| 395 | { 0x000001A4, 0x0000 }, /* R420 - FLL2 Synchroniser 4 */ | ||
| 396 | { 0x000001A5, 0x0000 }, /* R421 - FLL2 Synchroniser 5 */ | ||
| 397 | { 0x000001A6, 0x0000 }, /* R422 - FLL2 Synchroniser 6 */ | ||
| 398 | { 0x000001A9, 0x0000 }, /* R425 - FLL2 Spread Spectrum */ | ||
| 399 | { 0x000001AA, 0x0004 }, /* R426 - FLL2 GPIO Clock */ | ||
| 400 | { 0x00000200, 0x0006 }, /* R512 - Mic Charge Pump 1 */ | ||
| 401 | { 0x00000210, 0x0184 }, /* R528 - LDO1 Control 1 */ | ||
| 402 | { 0x00000213, 0x0344 }, /* R531 - LDO2 Control 1 */ | ||
| 403 | { 0x00000218, 0x01A6 }, /* R536 - Mic Bias Ctrl 1 */ | ||
| 404 | { 0x00000219, 0x01A6 }, /* R537 - Mic Bias Ctrl 2 */ | ||
| 405 | { 0x0000021A, 0x01A6 }, /* R538 - Mic Bias Ctrl 3 */ | ||
| 406 | { 0x00000293, 0x0000 }, /* R659 - Accessory Detect Mode 1 */ | ||
| 407 | { 0x0000029B, 0x0020 }, /* R667 - Headphone Detect 1 */ | ||
| 408 | { 0x0000029C, 0x0000 }, /* R668 - Headphone Detect 2 */ | ||
| 409 | { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ | ||
| 410 | { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ | ||
| 411 | { 0x000002C3, 0x0000 }, /* R707 - Mic noise mix control 1 */ | ||
| 412 | { 0x000002D3, 0x0000 }, /* R723 - Jack detect analogue */ | ||
| 413 | { 0x00000300, 0x0000 }, /* R768 - Input Enables */ | ||
| 414 | { 0x00000308, 0x0000 }, /* R776 - Input Rate */ | ||
| 415 | { 0x00000309, 0x0022 }, /* R777 - Input Volume Ramp */ | ||
| 416 | { 0x00000310, 0x2080 }, /* R784 - IN1L Control */ | ||
| 417 | { 0x00000311, 0x0180 }, /* R785 - ADC Digital Volume 1L */ | ||
| 418 | { 0x00000312, 0x0000 }, /* R786 - DMIC1L Control */ | ||
| 419 | { 0x00000314, 0x0080 }, /* R788 - IN1R Control */ | ||
| 420 | { 0x00000315, 0x0180 }, /* R789 - ADC Digital Volume 1R */ | ||
| 421 | { 0x00000316, 0x0000 }, /* R790 - DMIC1R Control */ | ||
| 422 | { 0x00000318, 0x2080 }, /* R792 - IN2L Control */ | ||
| 423 | { 0x00000319, 0x0180 }, /* R793 - ADC Digital Volume 2L */ | ||
| 424 | { 0x0000031A, 0x0000 }, /* R794 - DMIC2L Control */ | ||
| 425 | { 0x0000031C, 0x0080 }, /* R796 - IN2R Control */ | ||
| 426 | { 0x0000031D, 0x0180 }, /* R797 - ADC Digital Volume 2R */ | ||
| 427 | { 0x0000031E, 0x0000 }, /* R798 - DMIC2R Control */ | ||
| 428 | { 0x00000320, 0x2080 }, /* R800 - IN3L Control */ | ||
| 429 | { 0x00000321, 0x0180 }, /* R801 - ADC Digital Volume 3L */ | ||
| 430 | { 0x00000322, 0x0000 }, /* R802 - DMIC3L Control */ | ||
| 431 | { 0x00000324, 0x0080 }, /* R804 - IN3R Control */ | ||
| 432 | { 0x00000325, 0x0180 }, /* R805 - ADC Digital Volume 3R */ | ||
| 433 | { 0x00000326, 0x0000 }, /* R806 - DMIC3R Control */ | ||
| 434 | { 0x00000328, 0x2000 }, /* R808 - IN4L Control */ | ||
| 435 | { 0x00000329, 0x0180 }, /* R809 - ADC Digital Volume 4L */ | ||
| 436 | { 0x0000032A, 0x0000 }, /* R810 - DMIC4L Control */ | ||
| 437 | { 0x0000032D, 0x0180 }, /* R813 - ADC Digital Volume 4R */ | ||
| 438 | { 0x0000032E, 0x0000 }, /* R814 - DMIC4R Control */ | ||
| 439 | { 0x00000400, 0x0000 }, /* R1024 - Output Enables 1 */ | ||
| 440 | { 0x00000408, 0x0000 }, /* R1032 - Output Rate 1 */ | ||
| 441 | { 0x00000409, 0x0022 }, /* R1033 - Output Volume Ramp */ | ||
| 442 | { 0x00000410, 0x0080 }, /* R1040 - Output Path Config 1L */ | ||
| 443 | { 0x00000411, 0x0180 }, /* R1041 - DAC Digital Volume 1L */ | ||
| 444 | { 0x00000412, 0x0080 }, /* R1042 - DAC Volume Limit 1L */ | ||
| 445 | { 0x00000413, 0x0001 }, /* R1043 - Noise Gate Select 1L */ | ||
| 446 | { 0x00000414, 0x0080 }, /* R1044 - Output Path Config 1R */ | ||
| 447 | { 0x00000415, 0x0180 }, /* R1045 - DAC Digital Volume 1R */ | ||
| 448 | { 0x00000416, 0x0080 }, /* R1046 - DAC Volume Limit 1R */ | ||
| 449 | { 0x00000417, 0x0002 }, /* R1047 - Noise Gate Select 1R */ | ||
| 450 | { 0x00000418, 0x0080 }, /* R1048 - Output Path Config 2L */ | ||
| 451 | { 0x00000419, 0x0180 }, /* R1049 - DAC Digital Volume 2L */ | ||
| 452 | { 0x0000041A, 0x0080 }, /* R1050 - DAC Volume Limit 2L */ | ||
| 453 | { 0x0000041B, 0x0004 }, /* R1051 - Noise Gate Select 2L */ | ||
| 454 | { 0x0000041C, 0x0080 }, /* R1052 - Output Path Config 2R */ | ||
| 455 | { 0x0000041D, 0x0180 }, /* R1053 - DAC Digital Volume 2R */ | ||
| 456 | { 0x0000041E, 0x0080 }, /* R1054 - DAC Volume Limit 2R */ | ||
| 457 | { 0x0000041F, 0x0008 }, /* R1055 - Noise Gate Select 2R */ | ||
| 458 | { 0x00000420, 0x0080 }, /* R1056 - Output Path Config 3L */ | ||
| 459 | { 0x00000421, 0x0180 }, /* R1057 - DAC Digital Volume 3L */ | ||
| 460 | { 0x00000422, 0x0080 }, /* R1058 - DAC Volume Limit 3L */ | ||
| 461 | { 0x00000423, 0x0010 }, /* R1059 - Noise Gate Select 3L */ | ||
| 462 | { 0x00000424, 0x0080 }, /* R1060 - Output Path Config 3R */ | ||
| 463 | { 0x00000425, 0x0180 }, /* R1061 - DAC Digital Volume 3R */ | ||
| 464 | { 0x00000426, 0x0080 }, /* R1062 - DAC Volume Limit 3R */ | ||
| 465 | { 0x00000427, 0x0020 }, /* R1063 - Noise Gate Select 3R */ | ||
| 466 | { 0x00000428, 0x0000 }, /* R1064 - Output Path Config 4L */ | ||
| 467 | { 0x00000429, 0x0180 }, /* R1065 - DAC Digital Volume 4L */ | ||
| 468 | { 0x0000042A, 0x0080 }, /* R1066 - Out Volume 4L */ | ||
| 469 | { 0x0000042B, 0x0040 }, /* R1067 - Noise Gate Select 4L */ | ||
| 470 | { 0x0000042C, 0x0000 }, /* R1068 - Output Path Config 4R */ | ||
| 471 | { 0x0000042D, 0x0180 }, /* R1069 - DAC Digital Volume 4R */ | ||
| 472 | { 0x0000042E, 0x0080 }, /* R1070 - Out Volume 4R */ | ||
| 473 | { 0x0000042F, 0x0080 }, /* R1071 - Noise Gate Select 4R */ | ||
| 474 | { 0x00000430, 0x0000 }, /* R1072 - Output Path Config 5L */ | ||
| 475 | { 0x00000431, 0x0180 }, /* R1073 - DAC Digital Volume 5L */ | ||
| 476 | { 0x00000432, 0x0080 }, /* R1074 - DAC Volume Limit 5L */ | ||
| 477 | { 0x00000433, 0x0100 }, /* R1075 - Noise Gate Select 5L */ | ||
| 478 | { 0x00000434, 0x0000 }, /* R1076 - Output Path Config 5R */ | ||
| 479 | { 0x00000435, 0x0180 }, /* R1077 - DAC Digital Volume 5R */ | ||
| 480 | { 0x00000436, 0x0080 }, /* R1078 - DAC Volume Limit 5R */ | ||
| 481 | { 0x00000437, 0x0200 }, /* R1079 - Noise Gate Select 5R */ | ||
| 482 | { 0x00000438, 0x0000 }, /* R1080 - Output Path Config 6L */ | ||
| 483 | { 0x00000439, 0x0180 }, /* R1081 - DAC Digital Volume 6L */ | ||
| 484 | { 0x0000043A, 0x0080 }, /* R1082 - DAC Volume Limit 6L */ | ||
| 485 | { 0x0000043B, 0x0400 }, /* R1083 - Noise Gate Select 6L */ | ||
| 486 | { 0x0000043C, 0x0000 }, /* R1084 - Output Path Config 6R */ | ||
| 487 | { 0x0000043D, 0x0180 }, /* R1085 - DAC Digital Volume 6R */ | ||
| 488 | { 0x0000043E, 0x0080 }, /* R1086 - DAC Volume Limit 6R */ | ||
| 489 | { 0x0000043F, 0x0800 }, /* R1087 - Noise Gate Select 6R */ | ||
| 490 | { 0x00000450, 0x0000 }, /* R1104 - DAC AEC Control 1 */ | ||
| 491 | { 0x00000458, 0x0001 }, /* R1112 - Noise Gate Control */ | ||
| 492 | { 0x00000480, 0x0040 }, /* R1152 - Class W ANC Threshold 1 */ | ||
| 493 | { 0x00000481, 0x0040 }, /* R1153 - Class W ANC Threshold 2 */ | ||
| 494 | { 0x00000490, 0x0069 }, /* R1168 - PDM SPK1 CTRL 1 */ | ||
| 495 | { 0x00000491, 0x0000 }, /* R1169 - PDM SPK1 CTRL 2 */ | ||
| 496 | { 0x00000492, 0x0069 }, /* R1170 - PDM SPK2 CTRL 1 */ | ||
| 497 | { 0x00000493, 0x0000 }, /* R1171 - PDM SPK2 CTRL 2 */ | ||
| 498 | { 0x00000500, 0x000C }, /* R1280 - AIF1 BCLK Ctrl */ | ||
| 499 | { 0x00000501, 0x0008 }, /* R1281 - AIF1 Tx Pin Ctrl */ | ||
| 500 | { 0x00000502, 0x0000 }, /* R1282 - AIF1 Rx Pin Ctrl */ | ||
| 501 | { 0x00000503, 0x0000 }, /* R1283 - AIF1 Rate Ctrl */ | ||
| 502 | { 0x00000504, 0x0000 }, /* R1284 - AIF1 Format */ | ||
| 503 | { 0x00000505, 0x0040 }, /* R1285 - AIF1 Tx BCLK Rate */ | ||
| 504 | { 0x00000506, 0x0040 }, /* R1286 - AIF1 Rx BCLK Rate */ | ||
| 505 | { 0x00000507, 0x1818 }, /* R1287 - AIF1 Frame Ctrl 1 */ | ||
| 506 | { 0x00000508, 0x1818 }, /* R1288 - AIF1 Frame Ctrl 2 */ | ||
| 507 | { 0x00000509, 0x0000 }, /* R1289 - AIF1 Frame Ctrl 3 */ | ||
| 508 | { 0x0000050A, 0x0001 }, /* R1290 - AIF1 Frame Ctrl 4 */ | ||
| 509 | { 0x0000050B, 0x0002 }, /* R1291 - AIF1 Frame Ctrl 5 */ | ||
| 510 | { 0x0000050C, 0x0003 }, /* R1292 - AIF1 Frame Ctrl 6 */ | ||
| 511 | { 0x0000050D, 0x0004 }, /* R1293 - AIF1 Frame Ctrl 7 */ | ||
| 512 | { 0x0000050E, 0x0005 }, /* R1294 - AIF1 Frame Ctrl 8 */ | ||
| 513 | { 0x0000050F, 0x0006 }, /* R1295 - AIF1 Frame Ctrl 9 */ | ||
| 514 | { 0x00000510, 0x0007 }, /* R1296 - AIF1 Frame Ctrl 10 */ | ||
| 515 | { 0x00000511, 0x0000 }, /* R1297 - AIF1 Frame Ctrl 11 */ | ||
| 516 | { 0x00000512, 0x0001 }, /* R1298 - AIF1 Frame Ctrl 12 */ | ||
| 517 | { 0x00000513, 0x0002 }, /* R1299 - AIF1 Frame Ctrl 13 */ | ||
| 518 | { 0x00000514, 0x0003 }, /* R1300 - AIF1 Frame Ctrl 14 */ | ||
| 519 | { 0x00000515, 0x0004 }, /* R1301 - AIF1 Frame Ctrl 15 */ | ||
| 520 | { 0x00000516, 0x0005 }, /* R1302 - AIF1 Frame Ctrl 16 */ | ||
| 521 | { 0x00000517, 0x0006 }, /* R1303 - AIF1 Frame Ctrl 17 */ | ||
| 522 | { 0x00000518, 0x0007 }, /* R1304 - AIF1 Frame Ctrl 18 */ | ||
| 523 | { 0x00000519, 0x0000 }, /* R1305 - AIF1 Tx Enables */ | ||
| 524 | { 0x0000051A, 0x0000 }, /* R1306 - AIF1 Rx Enables */ | ||
| 525 | { 0x00000540, 0x000C }, /* R1344 - AIF2 BCLK Ctrl */ | ||
| 526 | { 0x00000541, 0x0008 }, /* R1345 - AIF2 Tx Pin Ctrl */ | ||
| 527 | { 0x00000542, 0x0000 }, /* R1346 - AIF2 Rx Pin Ctrl */ | ||
| 528 | { 0x00000543, 0x0000 }, /* R1347 - AIF2 Rate Ctrl */ | ||
| 529 | { 0x00000544, 0x0000 }, /* R1348 - AIF2 Format */ | ||
| 530 | { 0x00000545, 0x0040 }, /* R1349 - AIF2 Tx BCLK Rate */ | ||
| 531 | { 0x00000546, 0x0040 }, /* R1350 - AIF2 Rx BCLK Rate */ | ||
| 532 | { 0x00000547, 0x1818 }, /* R1351 - AIF2 Frame Ctrl 1 */ | ||
| 533 | { 0x00000548, 0x1818 }, /* R1352 - AIF2 Frame Ctrl 2 */ | ||
| 534 | { 0x00000549, 0x0000 }, /* R1353 - AIF2 Frame Ctrl 3 */ | ||
| 535 | { 0x0000054A, 0x0001 }, /* R1354 - AIF2 Frame Ctrl 4 */ | ||
| 536 | { 0x00000551, 0x0000 }, /* R1361 - AIF2 Frame Ctrl 11 */ | ||
| 537 | { 0x00000552, 0x0001 }, /* R1362 - AIF2 Frame Ctrl 12 */ | ||
| 538 | { 0x00000559, 0x0000 }, /* R1369 - AIF2 Tx Enables */ | ||
| 539 | { 0x0000055A, 0x0000 }, /* R1370 - AIF2 Rx Enables */ | ||
| 540 | { 0x00000580, 0x000C }, /* R1408 - AIF3 BCLK Ctrl */ | ||
| 541 | { 0x00000581, 0x0008 }, /* R1409 - AIF3 Tx Pin Ctrl */ | ||
| 542 | { 0x00000582, 0x0000 }, /* R1410 - AIF3 Rx Pin Ctrl */ | ||
| 543 | { 0x00000583, 0x0000 }, /* R1411 - AIF3 Rate Ctrl */ | ||
| 544 | { 0x00000584, 0x0000 }, /* R1412 - AIF3 Format */ | ||
| 545 | { 0x00000585, 0x0040 }, /* R1413 - AIF3 Tx BCLK Rate */ | ||
| 546 | { 0x00000586, 0x0040 }, /* R1414 - AIF3 Rx BCLK Rate */ | ||
| 547 | { 0x00000587, 0x1818 }, /* R1415 - AIF3 Frame Ctrl 1 */ | ||
| 548 | { 0x00000588, 0x1818 }, /* R1416 - AIF3 Frame Ctrl 2 */ | ||
| 549 | { 0x00000589, 0x0000 }, /* R1417 - AIF3 Frame Ctrl 3 */ | ||
| 550 | { 0x0000058A, 0x0001 }, /* R1418 - AIF3 Frame Ctrl 4 */ | ||
| 551 | { 0x00000591, 0x0000 }, /* R1425 - AIF3 Frame Ctrl 11 */ | ||
| 552 | { 0x00000592, 0x0001 }, /* R1426 - AIF3 Frame Ctrl 12 */ | ||
| 553 | { 0x00000599, 0x0000 }, /* R1433 - AIF3 Tx Enables */ | ||
| 554 | { 0x0000059A, 0x0000 }, /* R1434 - AIF3 Rx Enables */ | ||
| 555 | { 0x000005E3, 0x0004 }, /* R1507 - SLIMbus Framer Ref Gear */ | ||
| 556 | { 0x000005E5, 0x0000 }, /* R1509 - SLIMbus Rates 1 */ | ||
| 557 | { 0x000005E6, 0x0000 }, /* R1510 - SLIMbus Rates 2 */ | ||
| 558 | { 0x000005E7, 0x0000 }, /* R1511 - SLIMbus Rates 3 */ | ||
| 559 | { 0x000005E8, 0x0000 }, /* R1512 - SLIMbus Rates 4 */ | ||
| 560 | { 0x000005E9, 0x0000 }, /* R1513 - SLIMbus Rates 5 */ | ||
| 561 | { 0x000005EA, 0x0000 }, /* R1514 - SLIMbus Rates 6 */ | ||
| 562 | { 0x000005EB, 0x0000 }, /* R1515 - SLIMbus Rates 7 */ | ||
| 563 | { 0x000005EC, 0x0000 }, /* R1516 - SLIMbus Rates 8 */ | ||
| 564 | { 0x000005F5, 0x0000 }, /* R1525 - SLIMbus RX Channel Enable */ | ||
| 565 | { 0x000005F6, 0x0000 }, /* R1526 - SLIMbus TX Channel Enable */ | ||
| 566 | { 0x00000640, 0x0000 }, /* R1600 - PWM1MIX Input 1 Source */ | ||
| 567 | { 0x00000641, 0x0080 }, /* R1601 - PWM1MIX Input 1 Volume */ | ||
| 568 | { 0x00000642, 0x0000 }, /* R1602 - PWM1MIX Input 2 Source */ | ||
| 569 | { 0x00000643, 0x0080 }, /* R1603 - PWM1MIX Input 2 Volume */ | ||
| 570 | { 0x00000644, 0x0000 }, /* R1604 - PWM1MIX Input 3 Source */ | ||
| 571 | { 0x00000645, 0x0080 }, /* R1605 - PWM1MIX Input 3 Volume */ | ||
| 572 | { 0x00000646, 0x0000 }, /* R1606 - PWM1MIX Input 4 Source */ | ||
| 573 | { 0x00000647, 0x0080 }, /* R1607 - PWM1MIX Input 4 Volume */ | ||
| 574 | { 0x00000648, 0x0000 }, /* R1608 - PWM2MIX Input 1 Source */ | ||
| 575 | { 0x00000649, 0x0080 }, /* R1609 - PWM2MIX Input 1 Volume */ | ||
| 576 | { 0x0000064A, 0x0000 }, /* R1610 - PWM2MIX Input 2 Source */ | ||
| 577 | { 0x0000064B, 0x0080 }, /* R1611 - PWM2MIX Input 2 Volume */ | ||
| 578 | { 0x0000064C, 0x0000 }, /* R1612 - PWM2MIX Input 3 Source */ | ||
| 579 | { 0x0000064D, 0x0080 }, /* R1613 - PWM2MIX Input 3 Volume */ | ||
| 580 | { 0x0000064E, 0x0000 }, /* R1614 - PWM2MIX Input 4 Source */ | ||
| 581 | { 0x0000064F, 0x0080 }, /* R1615 - PWM2MIX Input 4 Volume */ | ||
| 582 | { 0x00000660, 0x0000 }, /* R1632 - MICMIX Input 1 Source */ | ||
| 583 | { 0x00000661, 0x0080 }, /* R1633 - MICMIX Input 1 Volume */ | ||
| 584 | { 0x00000662, 0x0000 }, /* R1634 - MICMIX Input 2 Source */ | ||
| 585 | { 0x00000663, 0x0080 }, /* R1635 - MICMIX Input 2 Volume */ | ||
| 586 | { 0x00000664, 0x0000 }, /* R1636 - MICMIX Input 3 Source */ | ||
| 587 | { 0x00000665, 0x0080 }, /* R1637 - MICMIX Input 3 Volume */ | ||
| 588 | { 0x00000666, 0x0000 }, /* R1638 - MICMIX Input 4 Source */ | ||
| 589 | { 0x00000667, 0x0080 }, /* R1639 - MICMIX Input 4 Volume */ | ||
| 590 | { 0x00000668, 0x0000 }, /* R1640 - NOISEMIX Input 1 Source */ | ||
| 591 | { 0x00000669, 0x0080 }, /* R1641 - NOISEMIX Input 1 Volume */ | ||
| 592 | { 0x0000066A, 0x0000 }, /* R1642 - NOISEMIX Input 2 Source */ | ||
| 593 | { 0x0000066B, 0x0080 }, /* R1643 - NOISEMIX Input 2 Volume */ | ||
| 594 | { 0x0000066C, 0x0000 }, /* R1644 - NOISEMIX Input 3 Source */ | ||
| 595 | { 0x0000066D, 0x0080 }, /* R1645 - NOISEMIX Input 3 Volume */ | ||
| 596 | { 0x0000066E, 0x0000 }, /* R1646 - NOISEMIX Input 4 Source */ | ||
| 597 | { 0x0000066F, 0x0080 }, /* R1647 - NOISEMIX Input 4 Volume */ | ||
| 598 | { 0x00000680, 0x0000 }, /* R1664 - OUT1LMIX Input 1 Source */ | ||
| 599 | { 0x00000681, 0x0080 }, /* R1665 - OUT1LMIX Input 1 Volume */ | ||
| 600 | { 0x00000682, 0x0000 }, /* R1666 - OUT1LMIX Input 2 Source */ | ||
| 601 | { 0x00000683, 0x0080 }, /* R1667 - OUT1LMIX Input 2 Volume */ | ||
| 602 | { 0x00000684, 0x0000 }, /* R1668 - OUT1LMIX Input 3 Source */ | ||
| 603 | { 0x00000685, 0x0080 }, /* R1669 - OUT1LMIX Input 3 Volume */ | ||
| 604 | { 0x00000686, 0x0000 }, /* R1670 - OUT1LMIX Input 4 Source */ | ||
| 605 | { 0x00000687, 0x0080 }, /* R1671 - OUT1LMIX Input 4 Volume */ | ||
| 606 | { 0x00000688, 0x0000 }, /* R1672 - OUT1RMIX Input 1 Source */ | ||
| 607 | { 0x00000689, 0x0080 }, /* R1673 - OUT1RMIX Input 1 Volume */ | ||
| 608 | { 0x0000068A, 0x0000 }, /* R1674 - OUT1RMIX Input 2 Source */ | ||
| 609 | { 0x0000068B, 0x0080 }, /* R1675 - OUT1RMIX Input 2 Volume */ | ||
| 610 | { 0x0000068C, 0x0000 }, /* R1676 - OUT1RMIX Input 3 Source */ | ||
| 611 | { 0x0000068D, 0x0080 }, /* R1677 - OUT1RMIX Input 3 Volume */ | ||
| 612 | { 0x0000068E, 0x0000 }, /* R1678 - OUT1RMIX Input 4 Source */ | ||
| 613 | { 0x0000068F, 0x0080 }, /* R1679 - OUT1RMIX Input 4 Volume */ | ||
| 614 | { 0x00000690, 0x0000 }, /* R1680 - OUT2LMIX Input 1 Source */ | ||
| 615 | { 0x00000691, 0x0080 }, /* R1681 - OUT2LMIX Input 1 Volume */ | ||
| 616 | { 0x00000692, 0x0000 }, /* R1682 - OUT2LMIX Input 2 Source */ | ||
| 617 | { 0x00000693, 0x0080 }, /* R1683 - OUT2LMIX Input 2 Volume */ | ||
| 618 | { 0x00000694, 0x0000 }, /* R1684 - OUT2LMIX Input 3 Source */ | ||
| 619 | { 0x00000695, 0x0080 }, /* R1685 - OUT2LMIX Input 3 Volume */ | ||
| 620 | { 0x00000696, 0x0000 }, /* R1686 - OUT2LMIX Input 4 Source */ | ||
| 621 | { 0x00000697, 0x0080 }, /* R1687 - OUT2LMIX Input 4 Volume */ | ||
| 622 | { 0x00000698, 0x0000 }, /* R1688 - OUT2RMIX Input 1 Source */ | ||
| 623 | { 0x00000699, 0x0080 }, /* R1689 - OUT2RMIX Input 1 Volume */ | ||
| 624 | { 0x0000069A, 0x0000 }, /* R1690 - OUT2RMIX Input 2 Source */ | ||
| 625 | { 0x0000069B, 0x0080 }, /* R1691 - OUT2RMIX Input 2 Volume */ | ||
| 626 | { 0x0000069C, 0x0000 }, /* R1692 - OUT2RMIX Input 3 Source */ | ||
| 627 | { 0x0000069D, 0x0080 }, /* R1693 - OUT2RMIX Input 3 Volume */ | ||
| 628 | { 0x0000069E, 0x0000 }, /* R1694 - OUT2RMIX Input 4 Source */ | ||
| 629 | { 0x0000069F, 0x0080 }, /* R1695 - OUT2RMIX Input 4 Volume */ | ||
| 630 | { 0x000006A0, 0x0000 }, /* R1696 - OUT3LMIX Input 1 Source */ | ||
| 631 | { 0x000006A1, 0x0080 }, /* R1697 - OUT3LMIX Input 1 Volume */ | ||
| 632 | { 0x000006A2, 0x0000 }, /* R1698 - OUT3LMIX Input 2 Source */ | ||
| 633 | { 0x000006A3, 0x0080 }, /* R1699 - OUT3LMIX Input 2 Volume */ | ||
| 634 | { 0x000006A4, 0x0000 }, /* R1700 - OUT3LMIX Input 3 Source */ | ||
| 635 | { 0x000006A5, 0x0080 }, /* R1701 - OUT3LMIX Input 3 Volume */ | ||
| 636 | { 0x000006A6, 0x0000 }, /* R1702 - OUT3LMIX Input 4 Source */ | ||
| 637 | { 0x000006A7, 0x0080 }, /* R1703 - OUT3LMIX Input 4 Volume */ | ||
| 638 | { 0x000006A8, 0x0000 }, /* R1704 - OUT3RMIX Input 1 Source */ | ||
| 639 | { 0x000006A9, 0x0080 }, /* R1705 - OUT3RMIX Input 1 Volume */ | ||
| 640 | { 0x000006AA, 0x0000 }, /* R1706 - OUT3RMIX Input 2 Source */ | ||
| 641 | { 0x000006AB, 0x0080 }, /* R1707 - OUT3RMIX Input 2 Volume */ | ||
| 642 | { 0x000006AC, 0x0000 }, /* R1708 - OUT3RMIX Input 3 Source */ | ||
| 643 | { 0x000006AD, 0x0080 }, /* R1709 - OUT3RMIX Input 3 Volume */ | ||
| 644 | { 0x000006AE, 0x0000 }, /* R1710 - OUT3RMIX Input 4 Source */ | ||
| 645 | { 0x000006AF, 0x0080 }, /* R1711 - OUT3RMIX Input 4 Volume */ | ||
| 646 | { 0x000006B0, 0x0000 }, /* R1712 - OUT4LMIX Input 1 Source */ | ||
| 647 | { 0x000006B1, 0x0080 }, /* R1713 - OUT4LMIX Input 1 Volume */ | ||
| 648 | { 0x000006B2, 0x0000 }, /* R1714 - OUT4LMIX Input 2 Source */ | ||
| 649 | { 0x000006B3, 0x0080 }, /* R1715 - OUT4LMIX Input 2 Volume */ | ||
| 650 | { 0x000006B4, 0x0000 }, /* R1716 - OUT4LMIX Input 3 Source */ | ||
| 651 | { 0x000006B5, 0x0080 }, /* R1717 - OUT4LMIX Input 3 Volume */ | ||
| 652 | { 0x000006B6, 0x0000 }, /* R1718 - OUT4LMIX Input 4 Source */ | ||
| 653 | { 0x000006B7, 0x0080 }, /* R1719 - OUT4LMIX Input 4 Volume */ | ||
| 654 | { 0x000006B8, 0x0000 }, /* R1720 - OUT4RMIX Input 1 Source */ | ||
| 655 | { 0x000006B9, 0x0080 }, /* R1721 - OUT4RMIX Input 1 Volume */ | ||
| 656 | { 0x000006BA, 0x0000 }, /* R1722 - OUT4RMIX Input 2 Source */ | ||
| 657 | { 0x000006BB, 0x0080 }, /* R1723 - OUT4RMIX Input 2 Volume */ | ||
| 658 | { 0x000006BC, 0x0000 }, /* R1724 - OUT4RMIX Input 3 Source */ | ||
| 659 | { 0x000006BD, 0x0080 }, /* R1725 - OUT4RMIX Input 3 Volume */ | ||
| 660 | { 0x000006BE, 0x0000 }, /* R1726 - OUT4RMIX Input 4 Source */ | ||
| 661 | { 0x000006BF, 0x0080 }, /* R1727 - OUT4RMIX Input 4 Volume */ | ||
| 662 | { 0x000006C0, 0x0000 }, /* R1728 - OUT5LMIX Input 1 Source */ | ||
| 663 | { 0x000006C1, 0x0080 }, /* R1729 - OUT5LMIX Input 1 Volume */ | ||
| 664 | { 0x000006C2, 0x0000 }, /* R1730 - OUT5LMIX Input 2 Source */ | ||
| 665 | { 0x000006C3, 0x0080 }, /* R1731 - OUT5LMIX Input 2 Volume */ | ||
| 666 | { 0x000006C4, 0x0000 }, /* R1732 - OUT5LMIX Input 3 Source */ | ||
| 667 | { 0x000006C5, 0x0080 }, /* R1733 - OUT5LMIX Input 3 Volume */ | ||
| 668 | { 0x000006C6, 0x0000 }, /* R1734 - OUT5LMIX Input 4 Source */ | ||
| 669 | { 0x000006C7, 0x0080 }, /* R1735 - OUT5LMIX Input 4 Volume */ | ||
| 670 | { 0x000006C8, 0x0000 }, /* R1736 - OUT5RMIX Input 1 Source */ | ||
| 671 | { 0x000006C9, 0x0080 }, /* R1737 - OUT5RMIX Input 1 Volume */ | ||
| 672 | { 0x000006CA, 0x0000 }, /* R1738 - OUT5RMIX Input 2 Source */ | ||
| 673 | { 0x000006CB, 0x0080 }, /* R1739 - OUT5RMIX Input 2 Volume */ | ||
| 674 | { 0x000006CC, 0x0000 }, /* R1740 - OUT5RMIX Input 3 Source */ | ||
| 675 | { 0x000006CD, 0x0080 }, /* R1741 - OUT5RMIX Input 3 Volume */ | ||
| 676 | { 0x000006CE, 0x0000 }, /* R1742 - OUT5RMIX Input 4 Source */ | ||
| 677 | { 0x000006CF, 0x0080 }, /* R1743 - OUT5RMIX Input 4 Volume */ | ||
| 678 | { 0x000006D0, 0x0000 }, /* R1744 - OUT6LMIX Input 1 Source */ | ||
| 679 | { 0x000006D1, 0x0080 }, /* R1745 - OUT6LMIX Input 1 Volume */ | ||
| 680 | { 0x000006D2, 0x0000 }, /* R1746 - OUT6LMIX Input 2 Source */ | ||
| 681 | { 0x000006D3, 0x0080 }, /* R1747 - OUT6LMIX Input 2 Volume */ | ||
| 682 | { 0x000006D4, 0x0000 }, /* R1748 - OUT6LMIX Input 3 Source */ | ||
| 683 | { 0x000006D5, 0x0080 }, /* R1749 - OUT6LMIX Input 3 Volume */ | ||
| 684 | { 0x000006D6, 0x0000 }, /* R1750 - OUT6LMIX Input 4 Source */ | ||
| 685 | { 0x000006D7, 0x0080 }, /* R1751 - OUT6LMIX Input 4 Volume */ | ||
| 686 | { 0x000006D8, 0x0000 }, /* R1752 - OUT6RMIX Input 1 Source */ | ||
| 687 | { 0x000006D9, 0x0080 }, /* R1753 - OUT6RMIX Input 1 Volume */ | ||
| 688 | { 0x000006DA, 0x0000 }, /* R1754 - OUT6RMIX Input 2 Source */ | ||
| 689 | { 0x000006DB, 0x0080 }, /* R1755 - OUT6RMIX Input 2 Volume */ | ||
| 690 | { 0x000006DC, 0x0000 }, /* R1756 - OUT6RMIX Input 3 Source */ | ||
| 691 | { 0x000006DD, 0x0080 }, /* R1757 - OUT6RMIX Input 3 Volume */ | ||
| 692 | { 0x000006DE, 0x0000 }, /* R1758 - OUT6RMIX Input 4 Source */ | ||
| 693 | { 0x000006DF, 0x0080 }, /* R1759 - OUT6RMIX Input 4 Volume */ | ||
| 694 | { 0x00000700, 0x0000 }, /* R1792 - AIF1TX1MIX Input 1 Source */ | ||
| 695 | { 0x00000701, 0x0080 }, /* R1793 - AIF1TX1MIX Input 1 Volume */ | ||
| 696 | { 0x00000702, 0x0000 }, /* R1794 - AIF1TX1MIX Input 2 Source */ | ||
| 697 | { 0x00000703, 0x0080 }, /* R1795 - AIF1TX1MIX Input 2 Volume */ | ||
| 698 | { 0x00000704, 0x0000 }, /* R1796 - AIF1TX1MIX Input 3 Source */ | ||
| 699 | { 0x00000705, 0x0080 }, /* R1797 - AIF1TX1MIX Input 3 Volume */ | ||
| 700 | { 0x00000706, 0x0000 }, /* R1798 - AIF1TX1MIX Input 4 Source */ | ||
| 701 | { 0x00000707, 0x0080 }, /* R1799 - AIF1TX1MIX Input 4 Volume */ | ||
| 702 | { 0x00000708, 0x0000 }, /* R1800 - AIF1TX2MIX Input 1 Source */ | ||
| 703 | { 0x00000709, 0x0080 }, /* R1801 - AIF1TX2MIX Input 1 Volume */ | ||
| 704 | { 0x0000070A, 0x0000 }, /* R1802 - AIF1TX2MIX Input 2 Source */ | ||
| 705 | { 0x0000070B, 0x0080 }, /* R1803 - AIF1TX2MIX Input 2 Volume */ | ||
| 706 | { 0x0000070C, 0x0000 }, /* R1804 - AIF1TX2MIX Input 3 Source */ | ||
| 707 | { 0x0000070D, 0x0080 }, /* R1805 - AIF1TX2MIX Input 3 Volume */ | ||
| 708 | { 0x0000070E, 0x0000 }, /* R1806 - AIF1TX2MIX Input 4 Source */ | ||
| 709 | { 0x0000070F, 0x0080 }, /* R1807 - AIF1TX2MIX Input 4 Volume */ | ||
| 710 | { 0x00000710, 0x0000 }, /* R1808 - AIF1TX3MIX Input 1 Source */ | ||
| 711 | { 0x00000711, 0x0080 }, /* R1809 - AIF1TX3MIX Input 1 Volume */ | ||
| 712 | { 0x00000712, 0x0000 }, /* R1810 - AIF1TX3MIX Input 2 Source */ | ||
| 713 | { 0x00000713, 0x0080 }, /* R1811 - AIF1TX3MIX Input 2 Volume */ | ||
| 714 | { 0x00000714, 0x0000 }, /* R1812 - AIF1TX3MIX Input 3 Source */ | ||
| 715 | { 0x00000715, 0x0080 }, /* R1813 - AIF1TX3MIX Input 3 Volume */ | ||
| 716 | { 0x00000716, 0x0000 }, /* R1814 - AIF1TX3MIX Input 4 Source */ | ||
| 717 | { 0x00000717, 0x0080 }, /* R1815 - AIF1TX3MIX Input 4 Volume */ | ||
| 718 | { 0x00000718, 0x0000 }, /* R1816 - AIF1TX4MIX Input 1 Source */ | ||
| 719 | { 0x00000719, 0x0080 }, /* R1817 - AIF1TX4MIX Input 1 Volume */ | ||
| 720 | { 0x0000071A, 0x0000 }, /* R1818 - AIF1TX4MIX Input 2 Source */ | ||
| 721 | { 0x0000071B, 0x0080 }, /* R1819 - AIF1TX4MIX Input 2 Volume */ | ||
| 722 | { 0x0000071C, 0x0000 }, /* R1820 - AIF1TX4MIX Input 3 Source */ | ||
| 723 | { 0x0000071D, 0x0080 }, /* R1821 - AIF1TX4MIX Input 3 Volume */ | ||
| 724 | { 0x0000071E, 0x0000 }, /* R1822 - AIF1TX4MIX Input 4 Source */ | ||
| 725 | { 0x0000071F, 0x0080 }, /* R1823 - AIF1TX4MIX Input 4 Volume */ | ||
| 726 | { 0x00000720, 0x0000 }, /* R1824 - AIF1TX5MIX Input 1 Source */ | ||
| 727 | { 0x00000721, 0x0080 }, /* R1825 - AIF1TX5MIX Input 1 Volume */ | ||
| 728 | { 0x00000722, 0x0000 }, /* R1826 - AIF1TX5MIX Input 2 Source */ | ||
| 729 | { 0x00000723, 0x0080 }, /* R1827 - AIF1TX5MIX Input 2 Volume */ | ||
| 730 | { 0x00000724, 0x0000 }, /* R1828 - AIF1TX5MIX Input 3 Source */ | ||
| 731 | { 0x00000725, 0x0080 }, /* R1829 - AIF1TX5MIX Input 3 Volume */ | ||
| 732 | { 0x00000726, 0x0000 }, /* R1830 - AIF1TX5MIX Input 4 Source */ | ||
| 733 | { 0x00000727, 0x0080 }, /* R1831 - AIF1TX5MIX Input 4 Volume */ | ||
| 734 | { 0x00000728, 0x0000 }, /* R1832 - AIF1TX6MIX Input 1 Source */ | ||
| 735 | { 0x00000729, 0x0080 }, /* R1833 - AIF1TX6MIX Input 1 Volume */ | ||
| 736 | { 0x0000072A, 0x0000 }, /* R1834 - AIF1TX6MIX Input 2 Source */ | ||
| 737 | { 0x0000072B, 0x0080 }, /* R1835 - AIF1TX6MIX Input 2 Volume */ | ||
| 738 | { 0x0000072C, 0x0000 }, /* R1836 - AIF1TX6MIX Input 3 Source */ | ||
| 739 | { 0x0000072D, 0x0080 }, /* R1837 - AIF1TX6MIX Input 3 Volume */ | ||
| 740 | { 0x0000072E, 0x0000 }, /* R1838 - AIF1TX6MIX Input 4 Source */ | ||
| 741 | { 0x0000072F, 0x0080 }, /* R1839 - AIF1TX6MIX Input 4 Volume */ | ||
| 742 | { 0x00000730, 0x0000 }, /* R1840 - AIF1TX7MIX Input 1 Source */ | ||
| 743 | { 0x00000731, 0x0080 }, /* R1841 - AIF1TX7MIX Input 1 Volume */ | ||
| 744 | { 0x00000732, 0x0000 }, /* R1842 - AIF1TX7MIX Input 2 Source */ | ||
| 745 | { 0x00000733, 0x0080 }, /* R1843 - AIF1TX7MIX Input 2 Volume */ | ||
| 746 | { 0x00000734, 0x0000 }, /* R1844 - AIF1TX7MIX Input 3 Source */ | ||
| 747 | { 0x00000735, 0x0080 }, /* R1845 - AIF1TX7MIX Input 3 Volume */ | ||
| 748 | { 0x00000736, 0x0000 }, /* R1846 - AIF1TX7MIX Input 4 Source */ | ||
| 749 | { 0x00000737, 0x0080 }, /* R1847 - AIF1TX7MIX Input 4 Volume */ | ||
| 750 | { 0x00000738, 0x0000 }, /* R1848 - AIF1TX8MIX Input 1 Source */ | ||
| 751 | { 0x00000739, 0x0080 }, /* R1849 - AIF1TX8MIX Input 1 Volume */ | ||
| 752 | { 0x0000073A, 0x0000 }, /* R1850 - AIF1TX8MIX Input 2 Source */ | ||
| 753 | { 0x0000073B, 0x0080 }, /* R1851 - AIF1TX8MIX Input 2 Volume */ | ||
| 754 | { 0x0000073C, 0x0000 }, /* R1852 - AIF1TX8MIX Input 3 Source */ | ||
| 755 | { 0x0000073D, 0x0080 }, /* R1853 - AIF1TX8MIX Input 3 Volume */ | ||
| 756 | { 0x0000073E, 0x0000 }, /* R1854 - AIF1TX8MIX Input 4 Source */ | ||
| 757 | { 0x0000073F, 0x0080 }, /* R1855 - AIF1TX8MIX Input 4 Volume */ | ||
| 758 | { 0x00000740, 0x0000 }, /* R1856 - AIF2TX1MIX Input 1 Source */ | ||
| 759 | { 0x00000741, 0x0080 }, /* R1857 - AIF2TX1MIX Input 1 Volume */ | ||
| 760 | { 0x00000742, 0x0000 }, /* R1858 - AIF2TX1MIX Input 2 Source */ | ||
| 761 | { 0x00000743, 0x0080 }, /* R1859 - AIF2TX1MIX Input 2 Volume */ | ||
| 762 | { 0x00000744, 0x0000 }, /* R1860 - AIF2TX1MIX Input 3 Source */ | ||
| 763 | { 0x00000745, 0x0080 }, /* R1861 - AIF2TX1MIX Input 3 Volume */ | ||
| 764 | { 0x00000746, 0x0000 }, /* R1862 - AIF2TX1MIX Input 4 Source */ | ||
| 765 | { 0x00000747, 0x0080 }, /* R1863 - AIF2TX1MIX Input 4 Volume */ | ||
| 766 | { 0x00000748, 0x0000 }, /* R1864 - AIF2TX2MIX Input 1 Source */ | ||
| 767 | { 0x00000749, 0x0080 }, /* R1865 - AIF2TX2MIX Input 1 Volume */ | ||
| 768 | { 0x0000074A, 0x0000 }, /* R1866 - AIF2TX2MIX Input 2 Source */ | ||
| 769 | { 0x0000074B, 0x0080 }, /* R1867 - AIF2TX2MIX Input 2 Volume */ | ||
| 770 | { 0x0000074C, 0x0000 }, /* R1868 - AIF2TX2MIX Input 3 Source */ | ||
| 771 | { 0x0000074D, 0x0080 }, /* R1869 - AIF2TX2MIX Input 3 Volume */ | ||
| 772 | { 0x0000074E, 0x0000 }, /* R1870 - AIF2TX2MIX Input 4 Source */ | ||
| 773 | { 0x0000074F, 0x0080 }, /* R1871 - AIF2TX2MIX Input 4 Volume */ | ||
| 774 | { 0x00000780, 0x0000 }, /* R1920 - AIF3TX1MIX Input 1 Source */ | ||
| 775 | { 0x00000781, 0x0080 }, /* R1921 - AIF3TX1MIX Input 1 Volume */ | ||
| 776 | { 0x00000782, 0x0000 }, /* R1922 - AIF3TX1MIX Input 2 Source */ | ||
| 777 | { 0x00000783, 0x0080 }, /* R1923 - AIF3TX1MIX Input 2 Volume */ | ||
| 778 | { 0x00000784, 0x0000 }, /* R1924 - AIF3TX1MIX Input 3 Source */ | ||
| 779 | { 0x00000785, 0x0080 }, /* R1925 - AIF3TX1MIX Input 3 Volume */ | ||
| 780 | { 0x00000786, 0x0000 }, /* R1926 - AIF3TX1MIX Input 4 Source */ | ||
| 781 | { 0x00000787, 0x0080 }, /* R1927 - AIF3TX1MIX Input 4 Volume */ | ||
| 782 | { 0x00000788, 0x0000 }, /* R1928 - AIF3TX2MIX Input 1 Source */ | ||
| 783 | { 0x00000789, 0x0080 }, /* R1929 - AIF3TX2MIX Input 1 Volume */ | ||
| 784 | { 0x0000078A, 0x0000 }, /* R1930 - AIF3TX2MIX Input 2 Source */ | ||
| 785 | { 0x0000078B, 0x0080 }, /* R1931 - AIF3TX2MIX Input 2 Volume */ | ||
| 786 | { 0x0000078C, 0x0000 }, /* R1932 - AIF3TX2MIX Input 3 Source */ | ||
| 787 | { 0x0000078D, 0x0080 }, /* R1933 - AIF3TX2MIX Input 3 Volume */ | ||
| 788 | { 0x0000078E, 0x0000 }, /* R1934 - AIF3TX2MIX Input 4 Source */ | ||
| 789 | { 0x0000078F, 0x0080 }, /* R1935 - AIF3TX2MIX Input 4 Volume */ | ||
| 790 | { 0x000007C0, 0x0000 }, /* R1984 - SLIMTX1MIX Input 1 Source */ | ||
| 791 | { 0x000007C1, 0x0080 }, /* R1985 - SLIMTX1MIX Input 1 Volume */ | ||
| 792 | { 0x000007C2, 0x0000 }, /* R1986 - SLIMTX1MIX Input 2 Source */ | ||
| 793 | { 0x000007C3, 0x0080 }, /* R1987 - SLIMTX1MIX Input 2 Volume */ | ||
| 794 | { 0x000007C4, 0x0000 }, /* R1988 - SLIMTX1MIX Input 3 Source */ | ||
| 795 | { 0x000007C5, 0x0080 }, /* R1989 - SLIMTX1MIX Input 3 Volume */ | ||
| 796 | { 0x000007C6, 0x0000 }, /* R1990 - SLIMTX1MIX Input 4 Source */ | ||
| 797 | { 0x000007C7, 0x0080 }, /* R1991 - SLIMTX1MIX Input 4 Volume */ | ||
| 798 | { 0x000007C8, 0x0000 }, /* R1992 - SLIMTX2MIX Input 1 Source */ | ||
| 799 | { 0x000007C9, 0x0080 }, /* R1993 - SLIMTX2MIX Input 1 Volume */ | ||
| 800 | { 0x000007CA, 0x0000 }, /* R1994 - SLIMTX2MIX Input 2 Source */ | ||
| 801 | { 0x000007CB, 0x0080 }, /* R1995 - SLIMTX2MIX Input 2 Volume */ | ||
| 802 | { 0x000007CC, 0x0000 }, /* R1996 - SLIMTX2MIX Input 3 Source */ | ||
| 803 | { 0x000007CD, 0x0080 }, /* R1997 - SLIMTX2MIX Input 3 Volume */ | ||
| 804 | { 0x000007CE, 0x0000 }, /* R1998 - SLIMTX2MIX Input 4 Source */ | ||
| 805 | { 0x000007CF, 0x0080 }, /* R1999 - SLIMTX2MIX Input 4 Volume */ | ||
| 806 | { 0x000007D0, 0x0000 }, /* R2000 - SLIMTX3MIX Input 1 Source */ | ||
| 807 | { 0x000007D1, 0x0080 }, /* R2001 - SLIMTX3MIX Input 1 Volume */ | ||
| 808 | { 0x000007D2, 0x0000 }, /* R2002 - SLIMTX3MIX Input 2 Source */ | ||
| 809 | { 0x000007D3, 0x0080 }, /* R2003 - SLIMTX3MIX Input 2 Volume */ | ||
| 810 | { 0x000007D4, 0x0000 }, /* R2004 - SLIMTX3MIX Input 3 Source */ | ||
| 811 | { 0x000007D5, 0x0080 }, /* R2005 - SLIMTX3MIX Input 3 Volume */ | ||
| 812 | { 0x000007D6, 0x0000 }, /* R2006 - SLIMTX3MIX Input 4 Source */ | ||
| 813 | { 0x000007D7, 0x0080 }, /* R2007 - SLIMTX3MIX Input 4 Volume */ | ||
| 814 | { 0x000007D8, 0x0000 }, /* R2008 - SLIMTX4MIX Input 1 Source */ | ||
| 815 | { 0x000007D9, 0x0080 }, /* R2009 - SLIMTX4MIX Input 1 Volume */ | ||
| 816 | { 0x000007DA, 0x0000 }, /* R2010 - SLIMTX4MIX Input 2 Source */ | ||
| 817 | { 0x000007DB, 0x0080 }, /* R2011 - SLIMTX4MIX Input 2 Volume */ | ||
| 818 | { 0x000007DC, 0x0000 }, /* R2012 - SLIMTX4MIX Input 3 Source */ | ||
| 819 | { 0x000007DD, 0x0080 }, /* R2013 - SLIMTX4MIX Input 3 Volume */ | ||
| 820 | { 0x000007DE, 0x0000 }, /* R2014 - SLIMTX4MIX Input 4 Source */ | ||
| 821 | { 0x000007DF, 0x0080 }, /* R2015 - SLIMTX4MIX Input 4 Volume */ | ||
| 822 | { 0x000007E0, 0x0000 }, /* R2016 - SLIMTX5MIX Input 1 Source */ | ||
| 823 | { 0x000007E1, 0x0080 }, /* R2017 - SLIMTX5MIX Input 1 Volume */ | ||
| 824 | { 0x000007E2, 0x0000 }, /* R2018 - SLIMTX5MIX Input 2 Source */ | ||
| 825 | { 0x000007E3, 0x0080 }, /* R2019 - SLIMTX5MIX Input 2 Volume */ | ||
| 826 | { 0x000007E4, 0x0000 }, /* R2020 - SLIMTX5MIX Input 3 Source */ | ||
| 827 | { 0x000007E5, 0x0080 }, /* R2021 - SLIMTX5MIX Input 3 Volume */ | ||
| 828 | { 0x000007E6, 0x0000 }, /* R2022 - SLIMTX5MIX Input 4 Source */ | ||
| 829 | { 0x000007E7, 0x0080 }, /* R2023 - SLIMTX5MIX Input 4 Volume */ | ||
| 830 | { 0x000007E8, 0x0000 }, /* R2024 - SLIMTX6MIX Input 1 Source */ | ||
| 831 | { 0x000007E9, 0x0080 }, /* R2025 - SLIMTX6MIX Input 1 Volume */ | ||
| 832 | { 0x000007EA, 0x0000 }, /* R2026 - SLIMTX6MIX Input 2 Source */ | ||
| 833 | { 0x000007EB, 0x0080 }, /* R2027 - SLIMTX6MIX Input 2 Volume */ | ||
| 834 | { 0x000007EC, 0x0000 }, /* R2028 - SLIMTX6MIX Input 3 Source */ | ||
| 835 | { 0x000007ED, 0x0080 }, /* R2029 - SLIMTX6MIX Input 3 Volume */ | ||
| 836 | { 0x000007EE, 0x0000 }, /* R2030 - SLIMTX6MIX Input 4 Source */ | ||
| 837 | { 0x000007EF, 0x0080 }, /* R2031 - SLIMTX6MIX Input 4 Volume */ | ||
| 838 | { 0x000007F0, 0x0000 }, /* R2032 - SLIMTX7MIX Input 1 Source */ | ||
| 839 | { 0x000007F1, 0x0080 }, /* R2033 - SLIMTX7MIX Input 1 Volume */ | ||
| 840 | { 0x000007F2, 0x0000 }, /* R2034 - SLIMTX7MIX Input 2 Source */ | ||
| 841 | { 0x000007F3, 0x0080 }, /* R2035 - SLIMTX7MIX Input 2 Volume */ | ||
| 842 | { 0x000007F4, 0x0000 }, /* R2036 - SLIMTX7MIX Input 3 Source */ | ||
| 843 | { 0x000007F5, 0x0080 }, /* R2037 - SLIMTX7MIX Input 3 Volume */ | ||
| 844 | { 0x000007F6, 0x0000 }, /* R2038 - SLIMTX7MIX Input 4 Source */ | ||
| 845 | { 0x000007F7, 0x0080 }, /* R2039 - SLIMTX7MIX Input 4 Volume */ | ||
| 846 | { 0x000007F8, 0x0000 }, /* R2040 - SLIMTX8MIX Input 1 Source */ | ||
| 847 | { 0x000007F9, 0x0080 }, /* R2041 - SLIMTX8MIX Input 1 Volume */ | ||
| 848 | { 0x000007FA, 0x0000 }, /* R2042 - SLIMTX8MIX Input 2 Source */ | ||
| 849 | { 0x000007FB, 0x0080 }, /* R2043 - SLIMTX8MIX Input 2 Volume */ | ||
| 850 | { 0x000007FC, 0x0000 }, /* R2044 - SLIMTX8MIX Input 3 Source */ | ||
| 851 | { 0x000007FD, 0x0080 }, /* R2045 - SLIMTX8MIX Input 3 Volume */ | ||
| 852 | { 0x000007FE, 0x0000 }, /* R2046 - SLIMTX8MIX Input 4 Source */ | ||
| 853 | { 0x000007FF, 0x0080 }, /* R2047 - SLIMTX8MIX Input 4 Volume */ | ||
| 854 | { 0x00000880, 0x0000 }, /* R2176 - EQ1MIX Input 1 Source */ | ||
| 855 | { 0x00000881, 0x0080 }, /* R2177 - EQ1MIX Input 1 Volume */ | ||
| 856 | { 0x00000882, 0x0000 }, /* R2178 - EQ1MIX Input 2 Source */ | ||
| 857 | { 0x00000883, 0x0080 }, /* R2179 - EQ1MIX Input 2 Volume */ | ||
| 858 | { 0x00000884, 0x0000 }, /* R2180 - EQ1MIX Input 3 Source */ | ||
| 859 | { 0x00000885, 0x0080 }, /* R2181 - EQ1MIX Input 3 Volume */ | ||
| 860 | { 0x00000886, 0x0000 }, /* R2182 - EQ1MIX Input 4 Source */ | ||
| 861 | { 0x00000887, 0x0080 }, /* R2183 - EQ1MIX Input 4 Volume */ | ||
| 862 | { 0x00000888, 0x0000 }, /* R2184 - EQ2MIX Input 1 Source */ | ||
| 863 | { 0x00000889, 0x0080 }, /* R2185 - EQ2MIX Input 1 Volume */ | ||
| 864 | { 0x0000088A, 0x0000 }, /* R2186 - EQ2MIX Input 2 Source */ | ||
| 865 | { 0x0000088B, 0x0080 }, /* R2187 - EQ2MIX Input 2 Volume */ | ||
| 866 | { 0x0000088C, 0x0000 }, /* R2188 - EQ2MIX Input 3 Source */ | ||
| 867 | { 0x0000088D, 0x0080 }, /* R2189 - EQ2MIX Input 3 Volume */ | ||
| 868 | { 0x0000088E, 0x0000 }, /* R2190 - EQ2MIX Input 4 Source */ | ||
| 869 | { 0x0000088F, 0x0080 }, /* R2191 - EQ2MIX Input 4 Volume */ | ||
| 870 | { 0x00000890, 0x0000 }, /* R2192 - EQ3MIX Input 1 Source */ | ||
| 871 | { 0x00000891, 0x0080 }, /* R2193 - EQ3MIX Input 1 Volume */ | ||
| 872 | { 0x00000892, 0x0000 }, /* R2194 - EQ3MIX Input 2 Source */ | ||
| 873 | { 0x00000893, 0x0080 }, /* R2195 - EQ3MIX Input 2 Volume */ | ||
| 874 | { 0x00000894, 0x0000 }, /* R2196 - EQ3MIX Input 3 Source */ | ||
| 875 | { 0x00000895, 0x0080 }, /* R2197 - EQ3MIX Input 3 Volume */ | ||
| 876 | { 0x00000896, 0x0000 }, /* R2198 - EQ3MIX Input 4 Source */ | ||
| 877 | { 0x00000897, 0x0080 }, /* R2199 - EQ3MIX Input 4 Volume */ | ||
| 878 | { 0x00000898, 0x0000 }, /* R2200 - EQ4MIX Input 1 Source */ | ||
| 879 | { 0x00000899, 0x0080 }, /* R2201 - EQ4MIX Input 1 Volume */ | ||
| 880 | { 0x0000089A, 0x0000 }, /* R2202 - EQ4MIX Input 2 Source */ | ||
| 881 | { 0x0000089B, 0x0080 }, /* R2203 - EQ4MIX Input 2 Volume */ | ||
| 882 | { 0x0000089C, 0x0000 }, /* R2204 - EQ4MIX Input 3 Source */ | ||
| 883 | { 0x0000089D, 0x0080 }, /* R2205 - EQ4MIX Input 3 Volume */ | ||
| 884 | { 0x0000089E, 0x0000 }, /* R2206 - EQ4MIX Input 4 Source */ | ||
| 885 | { 0x0000089F, 0x0080 }, /* R2207 - EQ4MIX Input 4 Volume */ | ||
| 886 | { 0x000008C0, 0x0000 }, /* R2240 - DRC1LMIX Input 1 Source */ | ||
| 887 | { 0x000008C1, 0x0080 }, /* R2241 - DRC1LMIX Input 1 Volume */ | ||
| 888 | { 0x000008C2, 0x0000 }, /* R2242 - DRC1LMIX Input 2 Source */ | ||
| 889 | { 0x000008C3, 0x0080 }, /* R2243 - DRC1LMIX Input 2 Volume */ | ||
| 890 | { 0x000008C4, 0x0000 }, /* R2244 - DRC1LMIX Input 3 Source */ | ||
| 891 | { 0x000008C5, 0x0080 }, /* R2245 - DRC1LMIX Input 3 Volume */ | ||
| 892 | { 0x000008C6, 0x0000 }, /* R2246 - DRC1LMIX Input 4 Source */ | ||
| 893 | { 0x000008C7, 0x0080 }, /* R2247 - DRC1LMIX Input 4 Volume */ | ||
| 894 | { 0x000008C8, 0x0000 }, /* R2248 - DRC1RMIX Input 1 Source */ | ||
| 895 | { 0x000008C9, 0x0080 }, /* R2249 - DRC1RMIX Input 1 Volume */ | ||
| 896 | { 0x000008CA, 0x0000 }, /* R2250 - DRC1RMIX Input 2 Source */ | ||
| 897 | { 0x000008CB, 0x0080 }, /* R2251 - DRC1RMIX Input 2 Volume */ | ||
| 898 | { 0x000008CC, 0x0000 }, /* R2252 - DRC1RMIX Input 3 Source */ | ||
| 899 | { 0x000008CD, 0x0080 }, /* R2253 - DRC1RMIX Input 3 Volume */ | ||
| 900 | { 0x000008CE, 0x0000 }, /* R2254 - DRC1RMIX Input 4 Source */ | ||
| 901 | { 0x000008CF, 0x0080 }, /* R2255 - DRC1RMIX Input 4 Volume */ | ||
| 902 | { 0x000008D0, 0x0000 }, /* R2256 - DRC2LMIX Input 1 Source */ | ||
| 903 | { 0x000008D1, 0x0080 }, /* R2257 - DRC2LMIX Input 1 Volume */ | ||
| 904 | { 0x000008D2, 0x0000 }, /* R2258 - DRC2LMIX Input 2 Source */ | ||
| 905 | { 0x000008D3, 0x0080 }, /* R2259 - DRC2LMIX Input 2 Volume */ | ||
| 906 | { 0x000008D4, 0x0000 }, /* R2260 - DRC2LMIX Input 3 Source */ | ||
| 907 | { 0x000008D5, 0x0080 }, /* R2261 - DRC2LMIX Input 3 Volume */ | ||
| 908 | { 0x000008D6, 0x0000 }, /* R2262 - DRC2LMIX Input 4 Source */ | ||
| 909 | { 0x000008D7, 0x0080 }, /* R2263 - DRC2LMIX Input 4 Volume */ | ||
| 910 | { 0x000008D8, 0x0000 }, /* R2264 - DRC2RMIX Input 1 Source */ | ||
| 911 | { 0x000008D9, 0x0080 }, /* R2265 - DRC2RMIX Input 1 Volume */ | ||
| 912 | { 0x000008DA, 0x0000 }, /* R2266 - DRC2RMIX Input 2 Source */ | ||
| 913 | { 0x000008DB, 0x0080 }, /* R2267 - DRC2RMIX Input 2 Volume */ | ||
| 914 | { 0x000008DC, 0x0000 }, /* R2268 - DRC2RMIX Input 3 Source */ | ||
| 915 | { 0x000008DD, 0x0080 }, /* R2269 - DRC2RMIX Input 3 Volume */ | ||
| 916 | { 0x000008DE, 0x0000 }, /* R2270 - DRC2RMIX Input 4 Source */ | ||
| 917 | { 0x000008DF, 0x0080 }, /* R2271 - DRC2RMIX Input 4 Volume */ | ||
| 918 | { 0x00000900, 0x0000 }, /* R2304 - HPLP1MIX Input 1 Source */ | ||
| 919 | { 0x00000901, 0x0080 }, /* R2305 - HPLP1MIX Input 1 Volume */ | ||
| 920 | { 0x00000902, 0x0000 }, /* R2306 - HPLP1MIX Input 2 Source */ | ||
| 921 | { 0x00000903, 0x0080 }, /* R2307 - HPLP1MIX Input 2 Volume */ | ||
| 922 | { 0x00000904, 0x0000 }, /* R2308 - HPLP1MIX Input 3 Source */ | ||
| 923 | { 0x00000905, 0x0080 }, /* R2309 - HPLP1MIX Input 3 Volume */ | ||
| 924 | { 0x00000906, 0x0000 }, /* R2310 - HPLP1MIX Input 4 Source */ | ||
| 925 | { 0x00000907, 0x0080 }, /* R2311 - HPLP1MIX Input 4 Volume */ | ||
| 926 | { 0x00000908, 0x0000 }, /* R2312 - HPLP2MIX Input 1 Source */ | ||
| 927 | { 0x00000909, 0x0080 }, /* R2313 - HPLP2MIX Input 1 Volume */ | ||
| 928 | { 0x0000090A, 0x0000 }, /* R2314 - HPLP2MIX Input 2 Source */ | ||
| 929 | { 0x0000090B, 0x0080 }, /* R2315 - HPLP2MIX Input 2 Volume */ | ||
| 930 | { 0x0000090C, 0x0000 }, /* R2316 - HPLP2MIX Input 3 Source */ | ||
| 931 | { 0x0000090D, 0x0080 }, /* R2317 - HPLP2MIX Input 3 Volume */ | ||
| 932 | { 0x0000090E, 0x0000 }, /* R2318 - HPLP2MIX Input 4 Source */ | ||
| 933 | { 0x0000090F, 0x0080 }, /* R2319 - HPLP2MIX Input 4 Volume */ | ||
| 934 | { 0x00000910, 0x0000 }, /* R2320 - HPLP3MIX Input 1 Source */ | ||
| 935 | { 0x00000911, 0x0080 }, /* R2321 - HPLP3MIX Input 1 Volume */ | ||
| 936 | { 0x00000912, 0x0000 }, /* R2322 - HPLP3MIX Input 2 Source */ | ||
| 937 | { 0x00000913, 0x0080 }, /* R2323 - HPLP3MIX Input 2 Volume */ | ||
| 938 | { 0x00000914, 0x0000 }, /* R2324 - HPLP3MIX Input 3 Source */ | ||
| 939 | { 0x00000915, 0x0080 }, /* R2325 - HPLP3MIX Input 3 Volume */ | ||
| 940 | { 0x00000916, 0x0000 }, /* R2326 - HPLP3MIX Input 4 Source */ | ||
| 941 | { 0x00000917, 0x0080 }, /* R2327 - HPLP3MIX Input 4 Volume */ | ||
| 942 | { 0x00000918, 0x0000 }, /* R2328 - HPLP4MIX Input 1 Source */ | ||
| 943 | { 0x00000919, 0x0080 }, /* R2329 - HPLP4MIX Input 1 Volume */ | ||
| 944 | { 0x0000091A, 0x0000 }, /* R2330 - HPLP4MIX Input 2 Source */ | ||
| 945 | { 0x0000091B, 0x0080 }, /* R2331 - HPLP4MIX Input 2 Volume */ | ||
| 946 | { 0x0000091C, 0x0000 }, /* R2332 - HPLP4MIX Input 3 Source */ | ||
| 947 | { 0x0000091D, 0x0080 }, /* R2333 - HPLP4MIX Input 3 Volume */ | ||
| 948 | { 0x0000091E, 0x0000 }, /* R2334 - HPLP4MIX Input 4 Source */ | ||
| 949 | { 0x0000091F, 0x0080 }, /* R2335 - HPLP4MIX Input 4 Volume */ | ||
| 950 | { 0x00000940, 0x0000 }, /* R2368 - DSP1LMIX Input 1 Source */ | ||
| 951 | { 0x00000941, 0x0080 }, /* R2369 - DSP1LMIX Input 1 Volume */ | ||
| 952 | { 0x00000942, 0x0000 }, /* R2370 - DSP1LMIX Input 2 Source */ | ||
| 953 | { 0x00000943, 0x0080 }, /* R2371 - DSP1LMIX Input 2 Volume */ | ||
| 954 | { 0x00000944, 0x0000 }, /* R2372 - DSP1LMIX Input 3 Source */ | ||
| 955 | { 0x00000945, 0x0080 }, /* R2373 - DSP1LMIX Input 3 Volume */ | ||
| 956 | { 0x00000946, 0x0000 }, /* R2374 - DSP1LMIX Input 4 Source */ | ||
| 957 | { 0x00000947, 0x0080 }, /* R2375 - DSP1LMIX Input 4 Volume */ | ||
| 958 | { 0x00000948, 0x0000 }, /* R2376 - DSP1RMIX Input 1 Source */ | ||
| 959 | { 0x00000949, 0x0080 }, /* R2377 - DSP1RMIX Input 1 Volume */ | ||
| 960 | { 0x0000094A, 0x0000 }, /* R2378 - DSP1RMIX Input 2 Source */ | ||
| 961 | { 0x0000094B, 0x0080 }, /* R2379 - DSP1RMIX Input 2 Volume */ | ||
| 962 | { 0x0000094C, 0x0000 }, /* R2380 - DSP1RMIX Input 3 Source */ | ||
| 963 | { 0x0000094D, 0x0080 }, /* R2381 - DSP1RMIX Input 3 Volume */ | ||
| 964 | { 0x0000094E, 0x0000 }, /* R2382 - DSP1RMIX Input 4 Source */ | ||
| 965 | { 0x0000094F, 0x0080 }, /* R2383 - DSP1RMIX Input 4 Volume */ | ||
| 966 | { 0x00000950, 0x0000 }, /* R2384 - DSP1AUX1MIX Input 1 Source */ | ||
| 967 | { 0x00000958, 0x0000 }, /* R2392 - DSP1AUX2MIX Input 1 Source */ | ||
| 968 | { 0x00000960, 0x0000 }, /* R2400 - DSP1AUX3MIX Input 1 Source */ | ||
| 969 | { 0x00000968, 0x0000 }, /* R2408 - DSP1AUX4MIX Input 1 Source */ | ||
| 970 | { 0x00000970, 0x0000 }, /* R2416 - DSP1AUX5MIX Input 1 Source */ | ||
| 971 | { 0x00000978, 0x0000 }, /* R2424 - DSP1AUX6MIX Input 1 Source */ | ||
| 972 | { 0x00000980, 0x0000 }, /* R2432 - DSP2LMIX Input 1 Source */ | ||
| 973 | { 0x00000981, 0x0080 }, /* R2433 - DSP2LMIX Input 1 Volume */ | ||
| 974 | { 0x00000982, 0x0000 }, /* R2434 - DSP2LMIX Input 2 Source */ | ||
| 975 | { 0x00000983, 0x0080 }, /* R2435 - DSP2LMIX Input 2 Volume */ | ||
| 976 | { 0x00000984, 0x0000 }, /* R2436 - DSP2LMIX Input 3 Source */ | ||
| 977 | { 0x00000985, 0x0080 }, /* R2437 - DSP2LMIX Input 3 Volume */ | ||
| 978 | { 0x00000986, 0x0000 }, /* R2438 - DSP2LMIX Input 4 Source */ | ||
| 979 | { 0x00000987, 0x0080 }, /* R2439 - DSP2LMIX Input 4 Volume */ | ||
| 980 | { 0x00000988, 0x0000 }, /* R2440 - DSP2RMIX Input 1 Source */ | ||
| 981 | { 0x00000989, 0x0080 }, /* R2441 - DSP2RMIX Input 1 Volume */ | ||
| 982 | { 0x0000098A, 0x0000 }, /* R2442 - DSP2RMIX Input 2 Source */ | ||
| 983 | { 0x0000098B, 0x0080 }, /* R2443 - DSP2RMIX Input 2 Volume */ | ||
| 984 | { 0x0000098C, 0x0000 }, /* R2444 - DSP2RMIX Input 3 Source */ | ||
| 985 | { 0x0000098D, 0x0080 }, /* R2445 - DSP2RMIX Input 3 Volume */ | ||
| 986 | { 0x0000098E, 0x0000 }, /* R2446 - DSP2RMIX Input 4 Source */ | ||
| 987 | { 0x0000098F, 0x0080 }, /* R2447 - DSP2RMIX Input 4 Volume */ | ||
| 988 | { 0x00000990, 0x0000 }, /* R2448 - DSP2AUX1MIX Input 1 Source */ | ||
| 989 | { 0x00000998, 0x0000 }, /* R2456 - DSP2AUX2MIX Input 1 Source */ | ||
| 990 | { 0x000009A0, 0x0000 }, /* R2464 - DSP2AUX3MIX Input 1 Source */ | ||
| 991 | { 0x000009A8, 0x0000 }, /* R2472 - DSP2AUX4MIX Input 1 Source */ | ||
| 992 | { 0x000009B0, 0x0000 }, /* R2480 - DSP2AUX5MIX Input 1 Source */ | ||
| 993 | { 0x000009B8, 0x0000 }, /* R2488 - DSP2AUX6MIX Input 1 Source */ | ||
| 994 | { 0x000009C0, 0x0000 }, /* R2496 - DSP3LMIX Input 1 Source */ | ||
| 995 | { 0x000009C1, 0x0080 }, /* R2497 - DSP3LMIX Input 1 Volume */ | ||
| 996 | { 0x000009C2, 0x0000 }, /* R2498 - DSP3LMIX Input 2 Source */ | ||
| 997 | { 0x000009C3, 0x0080 }, /* R2499 - DSP3LMIX Input 2 Volume */ | ||
| 998 | { 0x000009C4, 0x0000 }, /* R2500 - DSP3LMIX Input 3 Source */ | ||
| 999 | { 0x000009C5, 0x0080 }, /* R2501 - DSP3LMIX Input 3 Volume */ | ||
| 1000 | { 0x000009C6, 0x0000 }, /* R2502 - DSP3LMIX Input 4 Source */ | ||
| 1001 | { 0x000009C7, 0x0080 }, /* R2503 - DSP3LMIX Input 4 Volume */ | ||
| 1002 | { 0x000009C8, 0x0000 }, /* R2504 - DSP3RMIX Input 1 Source */ | ||
| 1003 | { 0x000009C9, 0x0080 }, /* R2505 - DSP3RMIX Input 1 Volume */ | ||
| 1004 | { 0x000009CA, 0x0000 }, /* R2506 - DSP3RMIX Input 2 Source */ | ||
| 1005 | { 0x000009CB, 0x0080 }, /* R2507 - DSP3RMIX Input 2 Volume */ | ||
| 1006 | { 0x000009CC, 0x0000 }, /* R2508 - DSP3RMIX Input 3 Source */ | ||
| 1007 | { 0x000009CD, 0x0080 }, /* R2509 - DSP3RMIX Input 3 Volume */ | ||
| 1008 | { 0x000009CE, 0x0000 }, /* R2510 - DSP3RMIX Input 4 Source */ | ||
| 1009 | { 0x000009CF, 0x0080 }, /* R2511 - DSP3RMIX Input 4 Volume */ | ||
| 1010 | { 0x000009D0, 0x0000 }, /* R2512 - DSP3AUX1MIX Input 1 Source */ | ||
| 1011 | { 0x000009D8, 0x0000 }, /* R2520 - DSP3AUX2MIX Input 1 Source */ | ||
| 1012 | { 0x000009E0, 0x0000 }, /* R2528 - DSP3AUX3MIX Input 1 Source */ | ||
| 1013 | { 0x000009E8, 0x0000 }, /* R2536 - DSP3AUX4MIX Input 1 Source */ | ||
| 1014 | { 0x000009F0, 0x0000 }, /* R2544 - DSP3AUX5MIX Input 1 Source */ | ||
| 1015 | { 0x000009F8, 0x0000 }, /* R2552 - DSP3AUX6MIX Input 1 Source */ | ||
| 1016 | { 0x00000A00, 0x0000 }, /* R2560 - DSP4LMIX Input 1 Source */ | ||
| 1017 | { 0x00000A01, 0x0080 }, /* R2561 - DSP4LMIX Input 1 Volume */ | ||
| 1018 | { 0x00000A02, 0x0000 }, /* R2562 - DSP4LMIX Input 2 Source */ | ||
| 1019 | { 0x00000A03, 0x0080 }, /* R2563 - DSP4LMIX Input 2 Volume */ | ||
| 1020 | { 0x00000A04, 0x0000 }, /* R2564 - DSP4LMIX Input 3 Source */ | ||
| 1021 | { 0x00000A05, 0x0080 }, /* R2565 - DSP4LMIX Input 3 Volume */ | ||
| 1022 | { 0x00000A06, 0x0000 }, /* R2566 - DSP4LMIX Input 4 Source */ | ||
| 1023 | { 0x00000A07, 0x0080 }, /* R2567 - DSP4LMIX Input 4 Volume */ | ||
| 1024 | { 0x00000A08, 0x0000 }, /* R2568 - DSP4RMIX Input 1 Source */ | ||
| 1025 | { 0x00000A09, 0x0080 }, /* R2569 - DSP4RMIX Input 1 Volume */ | ||
| 1026 | { 0x00000A0A, 0x0000 }, /* R2570 - DSP4RMIX Input 2 Source */ | ||
| 1027 | { 0x00000A0B, 0x0080 }, /* R2571 - DSP4RMIX Input 2 Volume */ | ||
| 1028 | { 0x00000A0C, 0x0000 }, /* R2572 - DSP4RMIX Input 3 Source */ | ||
| 1029 | { 0x00000A0D, 0x0080 }, /* R2573 - DSP4RMIX Input 3 Volume */ | ||
| 1030 | { 0x00000A0E, 0x0000 }, /* R2574 - DSP4RMIX Input 4 Source */ | ||
| 1031 | { 0x00000A0F, 0x0080 }, /* R2575 - DSP4RMIX Input 4 Volume */ | ||
| 1032 | { 0x00000A10, 0x0000 }, /* R2576 - DSP4AUX1MIX Input 1 Source */ | ||
| 1033 | { 0x00000A18, 0x0000 }, /* R2584 - DSP4AUX2MIX Input 1 Source */ | ||
| 1034 | { 0x00000A20, 0x0000 }, /* R2592 - DSP4AUX3MIX Input 1 Source */ | ||
| 1035 | { 0x00000A28, 0x0000 }, /* R2600 - DSP4AUX4MIX Input 1 Source */ | ||
| 1036 | { 0x00000A30, 0x0000 }, /* R2608 - DSP4AUX5MIX Input 1 Source */ | ||
| 1037 | { 0x00000A38, 0x0000 }, /* R2616 - DSP4AUX6MIX Input 1 Source */ | ||
| 1038 | { 0x00000A80, 0x0000 }, /* R2688 - ASRC1LMIX Input 1 Source */ | ||
| 1039 | { 0x00000A88, 0x0000 }, /* R2696 - ASRC1RMIX Input 1 Source */ | ||
| 1040 | { 0x00000A90, 0x0000 }, /* R2704 - ASRC2LMIX Input 1 Source */ | ||
| 1041 | { 0x00000A98, 0x0000 }, /* R2712 - ASRC2RMIX Input 1 Source */ | ||
| 1042 | { 0x00000B00, 0x0000 }, /* R2816 - ISRC1DEC1MIX Input 1 Source */ | ||
| 1043 | { 0x00000B08, 0x0000 }, /* R2824 - ISRC1DEC2MIX Input 1 Source */ | ||
| 1044 | { 0x00000B10, 0x0000 }, /* R2832 - ISRC1DEC3MIX Input 1 Source */ | ||
| 1045 | { 0x00000B18, 0x0000 }, /* R2840 - ISRC1DEC4MIX Input 1 Source */ | ||
| 1046 | { 0x00000B20, 0x0000 }, /* R2848 - ISRC1INT1MIX Input 1 Source */ | ||
| 1047 | { 0x00000B28, 0x0000 }, /* R2856 - ISRC1INT2MIX Input 1 Source */ | ||
| 1048 | { 0x00000B30, 0x0000 }, /* R2864 - ISRC1INT3MIX Input 1 Source */ | ||
| 1049 | { 0x00000B38, 0x0000 }, /* R2872 - ISRC1INT4MIX Input 1 Source */ | ||
| 1050 | { 0x00000B40, 0x0000 }, /* R2880 - ISRC2DEC1MIX Input 1 Source */ | ||
| 1051 | { 0x00000B48, 0x0000 }, /* R2888 - ISRC2DEC2MIX Input 1 Source */ | ||
| 1052 | { 0x00000B50, 0x0000 }, /* R2896 - ISRC2DEC3MIX Input 1 Source */ | ||
| 1053 | { 0x00000B58, 0x0000 }, /* R2904 - ISRC2DEC4MIX Input 1 Source */ | ||
| 1054 | { 0x00000B60, 0x0000 }, /* R2912 - ISRC2INT1MIX Input 1 Source */ | ||
| 1055 | { 0x00000B68, 0x0000 }, /* R2920 - ISRC2INT2MIX Input 1 Source */ | ||
| 1056 | { 0x00000B70, 0x0000 }, /* R2928 - ISRC2INT3MIX Input 1 Source */ | ||
| 1057 | { 0x00000B78, 0x0000 }, /* R2936 - ISRC2INT4MIX Input 1 Source */ | ||
| 1058 | { 0x00000B80, 0x0000 }, /* R2944 - ISRC3DEC1MIX Input 1 Source */ | ||
| 1059 | { 0x00000B88, 0x0000 }, /* R2952 - ISRC3DEC2MIX Input 1 Source */ | ||
| 1060 | { 0x00000B90, 0x0000 }, /* R2960 - ISRC3DEC3MIX Input 1 Source */ | ||
| 1061 | { 0x00000B98, 0x0000 }, /* R2968 - ISRC3DEC4MIX Input 1 Source */ | ||
| 1062 | { 0x00000BA0, 0x0000 }, /* R2976 - ISRC3INT1MIX Input 1 Source */ | ||
| 1063 | { 0x00000BA8, 0x0000 }, /* R2984 - ISRC3INT2MIX Input 1 Source */ | ||
| 1064 | { 0x00000BB0, 0x0000 }, /* R2992 - ISRC3INT3MIX Input 1 Source */ | ||
| 1065 | { 0x00000BB8, 0x0000 }, /* R3000 - ISRC3INT4MIX Input 1 Source */ | ||
| 1066 | { 0x00000C00, 0xA101 }, /* R3072 - GPIO1 CTRL */ | ||
| 1067 | { 0x00000C01, 0xA101 }, /* R3073 - GPIO2 CTRL */ | ||
| 1068 | { 0x00000C02, 0xA101 }, /* R3074 - GPIO3 CTRL */ | ||
| 1069 | { 0x00000C03, 0xA101 }, /* R3075 - GPIO4 CTRL */ | ||
| 1070 | { 0x00000C04, 0xA101 }, /* R3076 - GPIO5 CTRL */ | ||
| 1071 | { 0x00000C0F, 0x0400 }, /* R3087 - IRQ CTRL 1 */ | ||
| 1072 | { 0x00000C10, 0x1000 }, /* R3088 - GPIO Debounce Config */ | ||
| 1073 | { 0x00000C20, 0x8002 }, /* R3104 - Misc Pad Ctrl 1 */ | ||
| 1074 | { 0x00000C21, 0x8001 }, /* R3105 - Misc Pad Ctrl 2 */ | ||
| 1075 | { 0x00000C22, 0x0000 }, /* R3106 - Misc Pad Ctrl 3 */ | ||
| 1076 | { 0x00000C23, 0x0000 }, /* R3107 - Misc Pad Ctrl 4 */ | ||
| 1077 | { 0x00000C24, 0x0000 }, /* R3108 - Misc Pad Ctrl 5 */ | ||
| 1078 | { 0x00000C25, 0x0000 }, /* R3109 - Misc Pad Ctrl 6 */ | ||
| 1079 | { 0x00000C30, 0x8282 }, /* R3120 - Misc Pad Ctrl 7 */ | ||
| 1080 | { 0x00000C31, 0x0082 }, /* R3121 - Misc Pad Ctrl 8 */ | ||
| 1081 | { 0x00000C32, 0x8282 }, /* R3122 - Misc Pad Ctrl 9 */ | ||
| 1082 | { 0x00000C33, 0x8282 }, /* R3123 - Misc Pad Ctrl 10 */ | ||
| 1083 | { 0x00000C34, 0x8282 }, /* R3124 - Misc Pad Ctrl 11 */ | ||
| 1084 | { 0x00000C35, 0x8282 }, /* R3125 - Misc Pad Ctrl 12 */ | ||
| 1085 | { 0x00000C36, 0x8282 }, /* R3126 - Misc Pad Ctrl 13 */ | ||
| 1086 | { 0x00000C37, 0x8282 }, /* R3127 - Misc Pad Ctrl 14 */ | ||
| 1087 | { 0x00000C38, 0x8282 }, /* R3128 - Misc Pad Ctrl 15 */ | ||
| 1088 | { 0x00000C39, 0x8282 }, /* R3129 - Misc Pad Ctrl 16 */ | ||
| 1089 | { 0x00000C3A, 0x8282 }, /* R3130 - Misc Pad Ctrl 17 */ | ||
| 1090 | { 0x00000C3B, 0x8282 }, /* R3131 - Misc Pad Ctrl 18 */ | ||
| 1091 | { 0x00000D08, 0xFFFF }, /* R3336 - Interrupt Status 1 Mask */ | ||
| 1092 | { 0x00000D09, 0xFFFF }, /* R3337 - Interrupt Status 2 Mask */ | ||
| 1093 | { 0x00000D0A, 0xFFFF }, /* R3338 - Interrupt Status 3 Mask */ | ||
| 1094 | { 0x00000D0B, 0xFFFF }, /* R3339 - Interrupt Status 4 Mask */ | ||
| 1095 | { 0x00000D0C, 0xFEFF }, /* R3340 - Interrupt Status 5 Mask */ | ||
| 1096 | { 0x00000D0F, 0x0000 }, /* R3343 - Interrupt Control */ | ||
| 1097 | { 0x00000D18, 0xFFFF }, /* R3352 - IRQ2 Status 1 Mask */ | ||
| 1098 | { 0x00000D19, 0xFFFF }, /* R3353 - IRQ2 Status 2 Mask */ | ||
| 1099 | { 0x00000D1A, 0xFFFF }, /* R3354 - IRQ2 Status 3 Mask */ | ||
| 1100 | { 0x00000D1B, 0xFFFF }, /* R3355 - IRQ2 Status 4 Mask */ | ||
| 1101 | { 0x00000D1C, 0xFFFF }, /* R3356 - IRQ2 Status 5 Mask */ | ||
| 1102 | { 0x00000D1F, 0x0000 }, /* R3359 - IRQ2 Control */ | ||
| 1103 | { 0x00000D50, 0x0000 }, /* R3408 - AOD wkup and trig */ | ||
| 1104 | { 0x00000D53, 0xFFFF }, /* R3411 - AOD IRQ Mask IRQ1 */ | ||
| 1105 | { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ | ||
| 1106 | { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ | ||
| 1107 | { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ | ||
| 1108 | { 0x00000E01, 0x0000 }, /* R3585 - FX_Ctrl2 */ | ||
| 1109 | { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ | ||
| 1110 | { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ | ||
| 1111 | { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ | ||
| 1112 | { 0x00000E13, 0x03FE }, /* R3603 - EQ1_4 */ | ||
| 1113 | { 0x00000E14, 0x00E0 }, /* R3604 - EQ1_5 */ | ||
| 1114 | { 0x00000E15, 0x1EC4 }, /* R3605 - EQ1_6 */ | ||
| 1115 | { 0x00000E16, 0xF136 }, /* R3606 - EQ1_7 */ | ||
| 1116 | { 0x00000E17, 0x0409 }, /* R3607 - EQ1_8 */ | ||
| 1117 | { 0x00000E18, 0x04CC }, /* R3608 - EQ1_9 */ | ||
| 1118 | { 0x00000E19, 0x1C9B }, /* R3609 - EQ1_10 */ | ||
| 1119 | { 0x00000E1A, 0xF337 }, /* R3610 - EQ1_11 */ | ||
| 1120 | { 0x00000E1B, 0x040B }, /* R3611 - EQ1_12 */ | ||
| 1121 | { 0x00000E1C, 0x0CBB }, /* R3612 - EQ1_13 */ | ||
| 1122 | { 0x00000E1D, 0x16F8 }, /* R3613 - EQ1_14 */ | ||
| 1123 | { 0x00000E1E, 0xF7D9 }, /* R3614 - EQ1_15 */ | ||
| 1124 | { 0x00000E1F, 0x040A }, /* R3615 - EQ1_16 */ | ||
| 1125 | { 0x00000E20, 0x1F14 }, /* R3616 - EQ1_17 */ | ||
| 1126 | { 0x00000E21, 0x058C }, /* R3617 - EQ1_18 */ | ||
| 1127 | { 0x00000E22, 0x0563 }, /* R3618 - EQ1_19 */ | ||
| 1128 | { 0x00000E23, 0x4000 }, /* R3619 - EQ1_20 */ | ||
| 1129 | { 0x00000E24, 0x0B75 }, /* R3620 - EQ1_21 */ | ||
| 1130 | { 0x00000E26, 0x6318 }, /* R3622 - EQ2_1 */ | ||
| 1131 | { 0x00000E27, 0x6300 }, /* R3623 - EQ2_2 */ | ||
| 1132 | { 0x00000E28, 0x0FC8 }, /* R3624 - EQ2_3 */ | ||
| 1133 | { 0x00000E29, 0x03FE }, /* R3625 - EQ2_4 */ | ||
| 1134 | { 0x00000E2A, 0x00E0 }, /* R3626 - EQ2_5 */ | ||
| 1135 | { 0x00000E2B, 0x1EC4 }, /* R3627 - EQ2_6 */ | ||
| 1136 | { 0x00000E2C, 0xF136 }, /* R3628 - EQ2_7 */ | ||
| 1137 | { 0x00000E2D, 0x0409 }, /* R3629 - EQ2_8 */ | ||
| 1138 | { 0x00000E2E, 0x04CC }, /* R3630 - EQ2_9 */ | ||
| 1139 | { 0x00000E2F, 0x1C9B }, /* R3631 - EQ2_10 */ | ||
| 1140 | { 0x00000E30, 0xF337 }, /* R3632 - EQ2_11 */ | ||
| 1141 | { 0x00000E31, 0x040B }, /* R3633 - EQ2_12 */ | ||
| 1142 | { 0x00000E32, 0x0CBB }, /* R3634 - EQ2_13 */ | ||
| 1143 | { 0x00000E33, 0x16F8 }, /* R3635 - EQ2_14 */ | ||
| 1144 | { 0x00000E34, 0xF7D9 }, /* R3636 - EQ2_15 */ | ||
| 1145 | { 0x00000E35, 0x040A }, /* R3637 - EQ2_16 */ | ||
| 1146 | { 0x00000E36, 0x1F14 }, /* R3638 - EQ2_17 */ | ||
| 1147 | { 0x00000E37, 0x058C }, /* R3639 - EQ2_18 */ | ||
| 1148 | { 0x00000E38, 0x0563 }, /* R3640 - EQ2_19 */ | ||
| 1149 | { 0x00000E39, 0x4000 }, /* R3641 - EQ2_20 */ | ||
| 1150 | { 0x00000E3A, 0x0B75 }, /* R3642 - EQ2_21 */ | ||
| 1151 | { 0x00000E3C, 0x6318 }, /* R3644 - EQ3_1 */ | ||
| 1152 | { 0x00000E3D, 0x6300 }, /* R3645 - EQ3_2 */ | ||
| 1153 | { 0x00000E3E, 0x0FC8 }, /* R3646 - EQ3_3 */ | ||
| 1154 | { 0x00000E3F, 0x03FE }, /* R3647 - EQ3_4 */ | ||
| 1155 | { 0x00000E40, 0x00E0 }, /* R3648 - EQ3_5 */ | ||
| 1156 | { 0x00000E41, 0x1EC4 }, /* R3649 - EQ3_6 */ | ||
| 1157 | { 0x00000E42, 0xF136 }, /* R3650 - EQ3_7 */ | ||
| 1158 | { 0x00000E43, 0x0409 }, /* R3651 - EQ3_8 */ | ||
| 1159 | { 0x00000E44, 0x04CC }, /* R3652 - EQ3_9 */ | ||
| 1160 | { 0x00000E45, 0x1C9B }, /* R3653 - EQ3_10 */ | ||
| 1161 | { 0x00000E46, 0xF337 }, /* R3654 - EQ3_11 */ | ||
| 1162 | { 0x00000E47, 0x040B }, /* R3655 - EQ3_12 */ | ||
| 1163 | { 0x00000E48, 0x0CBB }, /* R3656 - EQ3_13 */ | ||
| 1164 | { 0x00000E49, 0x16F8 }, /* R3657 - EQ3_14 */ | ||
| 1165 | { 0x00000E4A, 0xF7D9 }, /* R3658 - EQ3_15 */ | ||
| 1166 | { 0x00000E4B, 0x040A }, /* R3659 - EQ3_16 */ | ||
| 1167 | { 0x00000E4C, 0x1F14 }, /* R3660 - EQ3_17 */ | ||
| 1168 | { 0x00000E4D, 0x058C }, /* R3661 - EQ3_18 */ | ||
| 1169 | { 0x00000E4E, 0x0563 }, /* R3662 - EQ3_19 */ | ||
| 1170 | { 0x00000E4F, 0x4000 }, /* R3663 - EQ3_20 */ | ||
| 1171 | { 0x00000E50, 0x0B75 }, /* R3664 - EQ3_21 */ | ||
| 1172 | { 0x00000E52, 0x6318 }, /* R3666 - EQ4_1 */ | ||
| 1173 | { 0x00000E53, 0x6300 }, /* R3667 - EQ4_2 */ | ||
| 1174 | { 0x00000E54, 0x0FC8 }, /* R3668 - EQ4_3 */ | ||
| 1175 | { 0x00000E55, 0x03FE }, /* R3669 - EQ4_4 */ | ||
| 1176 | { 0x00000E56, 0x00E0 }, /* R3670 - EQ4_5 */ | ||
| 1177 | { 0x00000E57, 0x1EC4 }, /* R3671 - EQ4_6 */ | ||
| 1178 | { 0x00000E58, 0xF136 }, /* R3672 - EQ4_7 */ | ||
| 1179 | { 0x00000E59, 0x0409 }, /* R3673 - EQ4_8 */ | ||
| 1180 | { 0x00000E5A, 0x04CC }, /* R3674 - EQ4_9 */ | ||
| 1181 | { 0x00000E5B, 0x1C9B }, /* R3675 - EQ4_10 */ | ||
| 1182 | { 0x00000E5C, 0xF337 }, /* R3676 - EQ4_11 */ | ||
| 1183 | { 0x00000E5D, 0x040B }, /* R3677 - EQ4_12 */ | ||
| 1184 | { 0x00000E5E, 0x0CBB }, /* R3678 - EQ4_13 */ | ||
| 1185 | { 0x00000E5F, 0x16F8 }, /* R3679 - EQ4_14 */ | ||
| 1186 | { 0x00000E60, 0xF7D9 }, /* R3680 - EQ4_15 */ | ||
| 1187 | { 0x00000E61, 0x040A }, /* R3681 - EQ4_16 */ | ||
| 1188 | { 0x00000E62, 0x1F14 }, /* R3682 - EQ4_17 */ | ||
| 1189 | { 0x00000E63, 0x058C }, /* R3683 - EQ4_18 */ | ||
| 1190 | { 0x00000E64, 0x0563 }, /* R3684 - EQ4_19 */ | ||
| 1191 | { 0x00000E65, 0x4000 }, /* R3685 - EQ4_20 */ | ||
| 1192 | { 0x00000E66, 0x0B75 }, /* R3686 - EQ4_21 */ | ||
| 1193 | { 0x00000E80, 0x0018 }, /* R3712 - DRC1 ctrl1 */ | ||
| 1194 | { 0x00000E81, 0x0933 }, /* R3713 - DRC1 ctrl2 */ | ||
| 1195 | { 0x00000E82, 0x0018 }, /* R3714 - DRC1 ctrl3 */ | ||
| 1196 | { 0x00000E83, 0x0000 }, /* R3715 - DRC1 ctrl4 */ | ||
| 1197 | { 0x00000E84, 0x0000 }, /* R3716 - DRC1 ctrl5 */ | ||
| 1198 | { 0x00000E89, 0x0018 }, /* R3721 - DRC2 ctrl1 */ | ||
| 1199 | { 0x00000E8A, 0x0933 }, /* R3722 - DRC2 ctrl2 */ | ||
| 1200 | { 0x00000E8B, 0x0018 }, /* R3723 - DRC2 ctrl3 */ | ||
| 1201 | { 0x00000E8C, 0x0000 }, /* R3724 - DRC2 ctrl4 */ | ||
| 1202 | { 0x00000E8D, 0x0000 }, /* R3725 - DRC2 ctrl5 */ | ||
| 1203 | { 0x00000EC0, 0x0000 }, /* R3776 - HPLPF1_1 */ | ||
| 1204 | { 0x00000EC1, 0x0000 }, /* R3777 - HPLPF1_2 */ | ||
| 1205 | { 0x00000EC4, 0x0000 }, /* R3780 - HPLPF2_1 */ | ||
| 1206 | { 0x00000EC5, 0x0000 }, /* R3781 - HPLPF2_2 */ | ||
| 1207 | { 0x00000EC8, 0x0000 }, /* R3784 - HPLPF3_1 */ | ||
| 1208 | { 0x00000EC9, 0x0000 }, /* R3785 - HPLPF3_2 */ | ||
| 1209 | { 0x00000ECC, 0x0000 }, /* R3788 - HPLPF4_1 */ | ||
| 1210 | { 0x00000ECD, 0x0000 }, /* R3789 - HPLPF4_2 */ | ||
| 1211 | { 0x00000EE0, 0x0000 }, /* R3808 - ASRC_ENABLE */ | ||
| 1212 | { 0x00000EE2, 0x0000 }, /* R3810 - ASRC_RATE1 */ | ||
| 1213 | { 0x00000EF0, 0x0000 }, /* R3824 - ISRC 1 CTRL 1 */ | ||
| 1214 | { 0x00000EF1, 0x0000 }, /* R3825 - ISRC 1 CTRL 2 */ | ||
| 1215 | { 0x00000EF2, 0x0000 }, /* R3826 - ISRC 1 CTRL 3 */ | ||
| 1216 | { 0x00000EF3, 0x0000 }, /* R3827 - ISRC 2 CTRL 1 */ | ||
| 1217 | { 0x00000EF4, 0x0000 }, /* R3828 - ISRC 2 CTRL 2 */ | ||
| 1218 | { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */ | ||
| 1219 | { 0x00000EF6, 0x0000 }, /* R3830 - ISRC 3 CTRL 1 */ | ||
| 1220 | { 0x00000EF7, 0x0000 }, /* R3831 - ISRC 3 CTRL 2 */ | ||
| 1221 | { 0x00000EF8, 0x0000 }, /* R3832 - ISRC 3 CTRL 3 */ | ||
| 1222 | { 0x00000F00, 0x0000 }, /* R3840 - Clock Control */ | ||
| 1223 | { 0x00000F01, 0x0000 }, /* R3841 - ANC_SRC */ | ||
| 1224 | { 0x00001100, 0x0010 }, /* R4352 - DSP1 Control 1 */ | ||
| 1225 | { 0x00001101, 0x0000 }, /* R4353 - DSP1 Clocking 1 */ | ||
| 1226 | { 0x00001200, 0x0010 }, /* R4608 - DSP2 Control 1 */ | ||
| 1227 | { 0x00001201, 0x0000 }, /* R4609 - DSP2 Clocking 1 */ | ||
| 1228 | { 0x00001300, 0x0010 }, /* R4864 - DSP3 Control 1 */ | ||
| 1229 | { 0x00001301, 0x0000 }, /* R4865 - DSP3 Clocking 1 */ | ||
| 1230 | { 0x00001400, 0x0010 }, /* R5120 - DSP4 Control 1 */ | ||
| 1231 | { 0x00001401, 0x0000 }, /* R5121 - DSP4 Clocking 1 */ | ||
| 1232 | { 0x00001404, 0x0000 }, /* R5124 - DSP4 Status 1 */ | ||
| 1233 | }; | ||
| 1234 | |||
| 1235 | static bool wm5110_readable_register(struct device *dev, unsigned int reg) | ||
| 1236 | { | ||
| 1237 | switch (reg) { | ||
| 1238 | case ARIZONA_SOFTWARE_RESET: | ||
| 1239 | case ARIZONA_DEVICE_REVISION: | ||
| 1240 | case ARIZONA_CTRL_IF_SPI_CFG_1: | ||
| 1241 | case ARIZONA_CTRL_IF_I2C1_CFG_1: | ||
| 1242 | case ARIZONA_CTRL_IF_I2C2_CFG_1: | ||
| 1243 | case ARIZONA_CTRL_IF_I2C1_CFG_2: | ||
| 1244 | case ARIZONA_CTRL_IF_I2C2_CFG_2: | ||
| 1245 | case ARIZONA_WRITE_SEQUENCER_CTRL_0: | ||
| 1246 | case ARIZONA_WRITE_SEQUENCER_CTRL_1: | ||
| 1247 | case ARIZONA_WRITE_SEQUENCER_CTRL_2: | ||
| 1248 | case ARIZONA_TONE_GENERATOR_1: | ||
| 1249 | case ARIZONA_TONE_GENERATOR_2: | ||
| 1250 | case ARIZONA_TONE_GENERATOR_3: | ||
| 1251 | case ARIZONA_TONE_GENERATOR_4: | ||
| 1252 | case ARIZONA_TONE_GENERATOR_5: | ||
| 1253 | case ARIZONA_PWM_DRIVE_1: | ||
| 1254 | case ARIZONA_PWM_DRIVE_2: | ||
| 1255 | case ARIZONA_PWM_DRIVE_3: | ||
| 1256 | case ARIZONA_WAKE_CONTROL: | ||
| 1257 | case ARIZONA_SEQUENCE_CONTROL: | ||
| 1258 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1: | ||
| 1259 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2: | ||
| 1260 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3: | ||
| 1261 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_4: | ||
| 1262 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_1: | ||
| 1263 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_2: | ||
| 1264 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_3: | ||
| 1265 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4: | ||
| 1266 | case ARIZONA_COMFORT_NOISE_GENERATOR: | ||
| 1267 | case ARIZONA_HAPTICS_CONTROL_1: | ||
| 1268 | case ARIZONA_HAPTICS_CONTROL_2: | ||
| 1269 | case ARIZONA_HAPTICS_PHASE_1_INTENSITY: | ||
| 1270 | case ARIZONA_HAPTICS_PHASE_1_DURATION: | ||
| 1271 | case ARIZONA_HAPTICS_PHASE_2_INTENSITY: | ||
| 1272 | case ARIZONA_HAPTICS_PHASE_2_DURATION: | ||
| 1273 | case ARIZONA_HAPTICS_PHASE_3_INTENSITY: | ||
| 1274 | case ARIZONA_HAPTICS_PHASE_3_DURATION: | ||
| 1275 | case ARIZONA_HAPTICS_STATUS: | ||
| 1276 | case ARIZONA_CLOCK_32K_1: | ||
| 1277 | case ARIZONA_SYSTEM_CLOCK_1: | ||
| 1278 | case ARIZONA_SAMPLE_RATE_1: | ||
| 1279 | case ARIZONA_SAMPLE_RATE_2: | ||
| 1280 | case ARIZONA_SAMPLE_RATE_3: | ||
| 1281 | case ARIZONA_SAMPLE_RATE_1_STATUS: | ||
| 1282 | case ARIZONA_SAMPLE_RATE_2_STATUS: | ||
| 1283 | case ARIZONA_SAMPLE_RATE_3_STATUS: | ||
| 1284 | case ARIZONA_ASYNC_CLOCK_1: | ||
| 1285 | case ARIZONA_ASYNC_SAMPLE_RATE_1: | ||
| 1286 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | ||
| 1287 | case ARIZONA_OUTPUT_SYSTEM_CLOCK: | ||
| 1288 | case ARIZONA_OUTPUT_ASYNC_CLOCK: | ||
| 1289 | case ARIZONA_RATE_ESTIMATOR_1: | ||
| 1290 | case ARIZONA_RATE_ESTIMATOR_2: | ||
| 1291 | case ARIZONA_RATE_ESTIMATOR_3: | ||
| 1292 | case ARIZONA_RATE_ESTIMATOR_4: | ||
| 1293 | case ARIZONA_RATE_ESTIMATOR_5: | ||
| 1294 | case ARIZONA_FLL1_CONTROL_1: | ||
| 1295 | case ARIZONA_FLL1_CONTROL_2: | ||
| 1296 | case ARIZONA_FLL1_CONTROL_3: | ||
| 1297 | case ARIZONA_FLL1_CONTROL_4: | ||
| 1298 | case ARIZONA_FLL1_CONTROL_5: | ||
| 1299 | case ARIZONA_FLL1_CONTROL_6: | ||
| 1300 | case ARIZONA_FLL1_LOOP_FILTER_TEST_1: | ||
| 1301 | case ARIZONA_FLL1_NCO_TEST_0: | ||
| 1302 | case ARIZONA_FLL1_SYNCHRONISER_1: | ||
| 1303 | case ARIZONA_FLL1_SYNCHRONISER_2: | ||
| 1304 | case ARIZONA_FLL1_SYNCHRONISER_3: | ||
| 1305 | case ARIZONA_FLL1_SYNCHRONISER_4: | ||
| 1306 | case ARIZONA_FLL1_SYNCHRONISER_5: | ||
| 1307 | case ARIZONA_FLL1_SYNCHRONISER_6: | ||
| 1308 | case ARIZONA_FLL1_SPREAD_SPECTRUM: | ||
| 1309 | case ARIZONA_FLL1_GPIO_CLOCK: | ||
| 1310 | case ARIZONA_FLL2_CONTROL_1: | ||
| 1311 | case ARIZONA_FLL2_CONTROL_2: | ||
| 1312 | case ARIZONA_FLL2_CONTROL_3: | ||
| 1313 | case ARIZONA_FLL2_CONTROL_4: | ||
| 1314 | case ARIZONA_FLL2_CONTROL_5: | ||
| 1315 | case ARIZONA_FLL2_CONTROL_6: | ||
| 1316 | case ARIZONA_FLL2_LOOP_FILTER_TEST_1: | ||
| 1317 | case ARIZONA_FLL2_NCO_TEST_0: | ||
| 1318 | case ARIZONA_FLL2_SYNCHRONISER_1: | ||
| 1319 | case ARIZONA_FLL2_SYNCHRONISER_2: | ||
| 1320 | case ARIZONA_FLL2_SYNCHRONISER_3: | ||
| 1321 | case ARIZONA_FLL2_SYNCHRONISER_4: | ||
| 1322 | case ARIZONA_FLL2_SYNCHRONISER_5: | ||
| 1323 | case ARIZONA_FLL2_SYNCHRONISER_6: | ||
| 1324 | case ARIZONA_FLL2_SPREAD_SPECTRUM: | ||
| 1325 | case ARIZONA_FLL2_GPIO_CLOCK: | ||
| 1326 | case ARIZONA_MIC_CHARGE_PUMP_1: | ||
| 1327 | case ARIZONA_LDO1_CONTROL_1: | ||
| 1328 | case ARIZONA_LDO2_CONTROL_1: | ||
| 1329 | case ARIZONA_MIC_BIAS_CTRL_1: | ||
| 1330 | case ARIZONA_MIC_BIAS_CTRL_2: | ||
| 1331 | case ARIZONA_MIC_BIAS_CTRL_3: | ||
| 1332 | case ARIZONA_ACCESSORY_DETECT_MODE_1: | ||
| 1333 | case ARIZONA_HEADPHONE_DETECT_1: | ||
| 1334 | case ARIZONA_HEADPHONE_DETECT_2: | ||
| 1335 | case ARIZONA_MIC_DETECT_1: | ||
| 1336 | case ARIZONA_MIC_DETECT_2: | ||
| 1337 | case ARIZONA_MIC_DETECT_3: | ||
| 1338 | case ARIZONA_MIC_NOISE_MIX_CONTROL_1: | ||
| 1339 | case ARIZONA_JACK_DETECT_ANALOGUE: | ||
| 1340 | case ARIZONA_INPUT_ENABLES: | ||
| 1341 | case ARIZONA_INPUT_ENABLES_STATUS: | ||
| 1342 | case ARIZONA_INPUT_RATE: | ||
| 1343 | case ARIZONA_INPUT_VOLUME_RAMP: | ||
| 1344 | case ARIZONA_IN1L_CONTROL: | ||
| 1345 | case ARIZONA_ADC_DIGITAL_VOLUME_1L: | ||
| 1346 | case ARIZONA_DMIC1L_CONTROL: | ||
| 1347 | case ARIZONA_IN1R_CONTROL: | ||
| 1348 | case ARIZONA_ADC_DIGITAL_VOLUME_1R: | ||
| 1349 | case ARIZONA_DMIC1R_CONTROL: | ||
| 1350 | case ARIZONA_IN2L_CONTROL: | ||
| 1351 | case ARIZONA_ADC_DIGITAL_VOLUME_2L: | ||
| 1352 | case ARIZONA_DMIC2L_CONTROL: | ||
| 1353 | case ARIZONA_IN2R_CONTROL: | ||
| 1354 | case ARIZONA_ADC_DIGITAL_VOLUME_2R: | ||
| 1355 | case ARIZONA_DMIC2R_CONTROL: | ||
| 1356 | case ARIZONA_IN3L_CONTROL: | ||
| 1357 | case ARIZONA_ADC_DIGITAL_VOLUME_3L: | ||
| 1358 | case ARIZONA_DMIC3L_CONTROL: | ||
| 1359 | case ARIZONA_IN3R_CONTROL: | ||
| 1360 | case ARIZONA_ADC_DIGITAL_VOLUME_3R: | ||
| 1361 | case ARIZONA_DMIC3R_CONTROL: | ||
| 1362 | case ARIZONA_IN4L_CONTROL: | ||
| 1363 | case ARIZONA_ADC_DIGITAL_VOLUME_4L: | ||
| 1364 | case ARIZONA_DMIC4L_CONTROL: | ||
| 1365 | case ARIZONA_ADC_DIGITAL_VOLUME_4R: | ||
| 1366 | case ARIZONA_DMIC4R_CONTROL: | ||
| 1367 | case ARIZONA_OUTPUT_ENABLES_1: | ||
| 1368 | case ARIZONA_OUTPUT_STATUS_1: | ||
| 1369 | case ARIZONA_RAW_OUTPUT_STATUS_1: | ||
| 1370 | case ARIZONA_OUTPUT_RATE_1: | ||
| 1371 | case ARIZONA_OUTPUT_VOLUME_RAMP: | ||
| 1372 | case ARIZONA_OUTPUT_PATH_CONFIG_1L: | ||
| 1373 | case ARIZONA_DAC_DIGITAL_VOLUME_1L: | ||
| 1374 | case ARIZONA_DAC_VOLUME_LIMIT_1L: | ||
| 1375 | case ARIZONA_NOISE_GATE_SELECT_1L: | ||
| 1376 | case ARIZONA_OUTPUT_PATH_CONFIG_1R: | ||
| 1377 | case ARIZONA_DAC_DIGITAL_VOLUME_1R: | ||
| 1378 | case ARIZONA_DAC_VOLUME_LIMIT_1R: | ||
| 1379 | case ARIZONA_NOISE_GATE_SELECT_1R: | ||
| 1380 | case ARIZONA_OUTPUT_PATH_CONFIG_2L: | ||
| 1381 | case ARIZONA_DAC_DIGITAL_VOLUME_2L: | ||
| 1382 | case ARIZONA_DAC_VOLUME_LIMIT_2L: | ||
| 1383 | case ARIZONA_NOISE_GATE_SELECT_2L: | ||
| 1384 | case ARIZONA_OUTPUT_PATH_CONFIG_2R: | ||
| 1385 | case ARIZONA_DAC_DIGITAL_VOLUME_2R: | ||
| 1386 | case ARIZONA_DAC_VOLUME_LIMIT_2R: | ||
| 1387 | case ARIZONA_NOISE_GATE_SELECT_2R: | ||
| 1388 | case ARIZONA_OUTPUT_PATH_CONFIG_3L: | ||
| 1389 | case ARIZONA_DAC_DIGITAL_VOLUME_3L: | ||
| 1390 | case ARIZONA_DAC_VOLUME_LIMIT_3L: | ||
| 1391 | case ARIZONA_NOISE_GATE_SELECT_3L: | ||
| 1392 | case ARIZONA_OUTPUT_PATH_CONFIG_3R: | ||
| 1393 | case ARIZONA_DAC_DIGITAL_VOLUME_3R: | ||
| 1394 | case ARIZONA_DAC_VOLUME_LIMIT_3R: | ||
| 1395 | case ARIZONA_NOISE_GATE_SELECT_3R: | ||
| 1396 | case ARIZONA_OUTPUT_PATH_CONFIG_4L: | ||
| 1397 | case ARIZONA_DAC_DIGITAL_VOLUME_4L: | ||
| 1398 | case ARIZONA_OUT_VOLUME_4L: | ||
| 1399 | case ARIZONA_NOISE_GATE_SELECT_4L: | ||
| 1400 | case ARIZONA_OUTPUT_PATH_CONFIG_4R: | ||
| 1401 | case ARIZONA_DAC_DIGITAL_VOLUME_4R: | ||
| 1402 | case ARIZONA_OUT_VOLUME_4R: | ||
| 1403 | case ARIZONA_NOISE_GATE_SELECT_4R: | ||
| 1404 | case ARIZONA_OUTPUT_PATH_CONFIG_5L: | ||
| 1405 | case ARIZONA_DAC_DIGITAL_VOLUME_5L: | ||
| 1406 | case ARIZONA_DAC_VOLUME_LIMIT_5L: | ||
| 1407 | case ARIZONA_NOISE_GATE_SELECT_5L: | ||
| 1408 | case ARIZONA_OUTPUT_PATH_CONFIG_5R: | ||
| 1409 | case ARIZONA_DAC_DIGITAL_VOLUME_5R: | ||
| 1410 | case ARIZONA_DAC_VOLUME_LIMIT_5R: | ||
| 1411 | case ARIZONA_NOISE_GATE_SELECT_5R: | ||
| 1412 | case ARIZONA_OUTPUT_PATH_CONFIG_6L: | ||
| 1413 | case ARIZONA_DAC_DIGITAL_VOLUME_6L: | ||
| 1414 | case ARIZONA_DAC_VOLUME_LIMIT_6L: | ||
| 1415 | case ARIZONA_NOISE_GATE_SELECT_6L: | ||
| 1416 | case ARIZONA_OUTPUT_PATH_CONFIG_6R: | ||
| 1417 | case ARIZONA_DAC_DIGITAL_VOLUME_6R: | ||
| 1418 | case ARIZONA_DAC_VOLUME_LIMIT_6R: | ||
| 1419 | case ARIZONA_NOISE_GATE_SELECT_6R: | ||
| 1420 | case ARIZONA_DAC_AEC_CONTROL_1: | ||
| 1421 | case ARIZONA_NOISE_GATE_CONTROL: | ||
| 1422 | case ARIZONA_PDM_SPK1_CTRL_1: | ||
| 1423 | case ARIZONA_PDM_SPK1_CTRL_2: | ||
| 1424 | case ARIZONA_PDM_SPK2_CTRL_1: | ||
| 1425 | case ARIZONA_PDM_SPK2_CTRL_2: | ||
| 1426 | case ARIZONA_AIF1_BCLK_CTRL: | ||
| 1427 | case ARIZONA_AIF1_TX_PIN_CTRL: | ||
| 1428 | case ARIZONA_AIF1_RX_PIN_CTRL: | ||
| 1429 | case ARIZONA_AIF1_RATE_CTRL: | ||
| 1430 | case ARIZONA_AIF1_FORMAT: | ||
| 1431 | case ARIZONA_AIF1_TX_BCLK_RATE: | ||
| 1432 | case ARIZONA_AIF1_RX_BCLK_RATE: | ||
| 1433 | case ARIZONA_AIF1_FRAME_CTRL_1: | ||
| 1434 | case ARIZONA_AIF1_FRAME_CTRL_2: | ||
| 1435 | case ARIZONA_AIF1_FRAME_CTRL_3: | ||
| 1436 | case ARIZONA_AIF1_FRAME_CTRL_4: | ||
| 1437 | case ARIZONA_AIF1_FRAME_CTRL_5: | ||
| 1438 | case ARIZONA_AIF1_FRAME_CTRL_6: | ||
| 1439 | case ARIZONA_AIF1_FRAME_CTRL_7: | ||
| 1440 | case ARIZONA_AIF1_FRAME_CTRL_8: | ||
| 1441 | case ARIZONA_AIF1_FRAME_CTRL_9: | ||
| 1442 | case ARIZONA_AIF1_FRAME_CTRL_10: | ||
| 1443 | case ARIZONA_AIF1_FRAME_CTRL_11: | ||
| 1444 | case ARIZONA_AIF1_FRAME_CTRL_12: | ||
| 1445 | case ARIZONA_AIF1_FRAME_CTRL_13: | ||
| 1446 | case ARIZONA_AIF1_FRAME_CTRL_14: | ||
| 1447 | case ARIZONA_AIF1_FRAME_CTRL_15: | ||
| 1448 | case ARIZONA_AIF1_FRAME_CTRL_16: | ||
| 1449 | case ARIZONA_AIF1_FRAME_CTRL_17: | ||
| 1450 | case ARIZONA_AIF1_FRAME_CTRL_18: | ||
| 1451 | case ARIZONA_AIF1_TX_ENABLES: | ||
| 1452 | case ARIZONA_AIF1_RX_ENABLES: | ||
| 1453 | case ARIZONA_AIF2_BCLK_CTRL: | ||
| 1454 | case ARIZONA_AIF2_TX_PIN_CTRL: | ||
| 1455 | case ARIZONA_AIF2_RX_PIN_CTRL: | ||
| 1456 | case ARIZONA_AIF2_RATE_CTRL: | ||
| 1457 | case ARIZONA_AIF2_FORMAT: | ||
| 1458 | case ARIZONA_AIF2_TX_BCLK_RATE: | ||
| 1459 | case ARIZONA_AIF2_RX_BCLK_RATE: | ||
| 1460 | case ARIZONA_AIF2_FRAME_CTRL_1: | ||
| 1461 | case ARIZONA_AIF2_FRAME_CTRL_2: | ||
| 1462 | case ARIZONA_AIF2_FRAME_CTRL_3: | ||
| 1463 | case ARIZONA_AIF2_FRAME_CTRL_4: | ||
| 1464 | case ARIZONA_AIF2_FRAME_CTRL_11: | ||
| 1465 | case ARIZONA_AIF2_FRAME_CTRL_12: | ||
| 1466 | case ARIZONA_AIF2_TX_ENABLES: | ||
| 1467 | case ARIZONA_AIF2_RX_ENABLES: | ||
| 1468 | case ARIZONA_AIF3_BCLK_CTRL: | ||
| 1469 | case ARIZONA_AIF3_TX_PIN_CTRL: | ||
| 1470 | case ARIZONA_AIF3_RX_PIN_CTRL: | ||
| 1471 | case ARIZONA_AIF3_RATE_CTRL: | ||
| 1472 | case ARIZONA_AIF3_FORMAT: | ||
| 1473 | case ARIZONA_AIF3_TX_BCLK_RATE: | ||
| 1474 | case ARIZONA_AIF3_RX_BCLK_RATE: | ||
| 1475 | case ARIZONA_AIF3_FRAME_CTRL_1: | ||
| 1476 | case ARIZONA_AIF3_FRAME_CTRL_2: | ||
| 1477 | case ARIZONA_AIF3_FRAME_CTRL_3: | ||
| 1478 | case ARIZONA_AIF3_FRAME_CTRL_4: | ||
| 1479 | case ARIZONA_AIF3_FRAME_CTRL_11: | ||
| 1480 | case ARIZONA_AIF3_FRAME_CTRL_12: | ||
| 1481 | case ARIZONA_AIF3_TX_ENABLES: | ||
| 1482 | case ARIZONA_AIF3_RX_ENABLES: | ||
| 1483 | case ARIZONA_SLIMBUS_FRAMER_REF_GEAR: | ||
| 1484 | case ARIZONA_SLIMBUS_RATES_1: | ||
| 1485 | case ARIZONA_SLIMBUS_RATES_2: | ||
| 1486 | case ARIZONA_SLIMBUS_RATES_3: | ||
| 1487 | case ARIZONA_SLIMBUS_RATES_4: | ||
| 1488 | case ARIZONA_SLIMBUS_RATES_5: | ||
| 1489 | case ARIZONA_SLIMBUS_RATES_6: | ||
| 1490 | case ARIZONA_SLIMBUS_RATES_7: | ||
| 1491 | case ARIZONA_SLIMBUS_RATES_8: | ||
| 1492 | case ARIZONA_SLIMBUS_RX_CHANNEL_ENABLE: | ||
| 1493 | case ARIZONA_SLIMBUS_TX_CHANNEL_ENABLE: | ||
| 1494 | case ARIZONA_SLIMBUS_RX_PORT_STATUS: | ||
| 1495 | case ARIZONA_SLIMBUS_TX_PORT_STATUS: | ||
| 1496 | case ARIZONA_PWM1MIX_INPUT_1_SOURCE: | ||
| 1497 | case ARIZONA_PWM1MIX_INPUT_1_VOLUME: | ||
| 1498 | case ARIZONA_PWM1MIX_INPUT_2_SOURCE: | ||
| 1499 | case ARIZONA_PWM1MIX_INPUT_2_VOLUME: | ||
| 1500 | case ARIZONA_PWM1MIX_INPUT_3_SOURCE: | ||
| 1501 | case ARIZONA_PWM1MIX_INPUT_3_VOLUME: | ||
| 1502 | case ARIZONA_PWM1MIX_INPUT_4_SOURCE: | ||
| 1503 | case ARIZONA_PWM1MIX_INPUT_4_VOLUME: | ||
| 1504 | case ARIZONA_PWM2MIX_INPUT_1_SOURCE: | ||
| 1505 | case ARIZONA_PWM2MIX_INPUT_1_VOLUME: | ||
| 1506 | case ARIZONA_PWM2MIX_INPUT_2_SOURCE: | ||
| 1507 | case ARIZONA_PWM2MIX_INPUT_2_VOLUME: | ||
| 1508 | case ARIZONA_PWM2MIX_INPUT_3_SOURCE: | ||
| 1509 | case ARIZONA_PWM2MIX_INPUT_3_VOLUME: | ||
| 1510 | case ARIZONA_PWM2MIX_INPUT_4_SOURCE: | ||
| 1511 | case ARIZONA_PWM2MIX_INPUT_4_VOLUME: | ||
| 1512 | case ARIZONA_MICMIX_INPUT_1_SOURCE: | ||
| 1513 | case ARIZONA_MICMIX_INPUT_1_VOLUME: | ||
| 1514 | case ARIZONA_MICMIX_INPUT_2_SOURCE: | ||
| 1515 | case ARIZONA_MICMIX_INPUT_2_VOLUME: | ||
| 1516 | case ARIZONA_MICMIX_INPUT_3_SOURCE: | ||
| 1517 | case ARIZONA_MICMIX_INPUT_3_VOLUME: | ||
| 1518 | case ARIZONA_MICMIX_INPUT_4_SOURCE: | ||
| 1519 | case ARIZONA_MICMIX_INPUT_4_VOLUME: | ||
| 1520 | case ARIZONA_NOISEMIX_INPUT_1_SOURCE: | ||
| 1521 | case ARIZONA_NOISEMIX_INPUT_1_VOLUME: | ||
| 1522 | case ARIZONA_NOISEMIX_INPUT_2_SOURCE: | ||
| 1523 | case ARIZONA_NOISEMIX_INPUT_2_VOLUME: | ||
| 1524 | case ARIZONA_NOISEMIX_INPUT_3_SOURCE: | ||
| 1525 | case ARIZONA_NOISEMIX_INPUT_3_VOLUME: | ||
| 1526 | case ARIZONA_NOISEMIX_INPUT_4_SOURCE: | ||
| 1527 | case ARIZONA_NOISEMIX_INPUT_4_VOLUME: | ||
| 1528 | case ARIZONA_OUT1LMIX_INPUT_1_SOURCE: | ||
| 1529 | case ARIZONA_OUT1LMIX_INPUT_1_VOLUME: | ||
| 1530 | case ARIZONA_OUT1LMIX_INPUT_2_SOURCE: | ||
| 1531 | case ARIZONA_OUT1LMIX_INPUT_2_VOLUME: | ||
| 1532 | case ARIZONA_OUT1LMIX_INPUT_3_SOURCE: | ||
| 1533 | case ARIZONA_OUT1LMIX_INPUT_3_VOLUME: | ||
| 1534 | case ARIZONA_OUT1LMIX_INPUT_4_SOURCE: | ||
| 1535 | case ARIZONA_OUT1LMIX_INPUT_4_VOLUME: | ||
| 1536 | case ARIZONA_OUT1RMIX_INPUT_1_SOURCE: | ||
| 1537 | case ARIZONA_OUT1RMIX_INPUT_1_VOLUME: | ||
| 1538 | case ARIZONA_OUT1RMIX_INPUT_2_SOURCE: | ||
| 1539 | case ARIZONA_OUT1RMIX_INPUT_2_VOLUME: | ||
| 1540 | case ARIZONA_OUT1RMIX_INPUT_3_SOURCE: | ||
| 1541 | case ARIZONA_OUT1RMIX_INPUT_3_VOLUME: | ||
| 1542 | case ARIZONA_OUT1RMIX_INPUT_4_SOURCE: | ||
| 1543 | case ARIZONA_OUT1RMIX_INPUT_4_VOLUME: | ||
| 1544 | case ARIZONA_OUT2LMIX_INPUT_1_SOURCE: | ||
| 1545 | case ARIZONA_OUT2LMIX_INPUT_1_VOLUME: | ||
| 1546 | case ARIZONA_OUT2LMIX_INPUT_2_SOURCE: | ||
| 1547 | case ARIZONA_OUT2LMIX_INPUT_2_VOLUME: | ||
| 1548 | case ARIZONA_OUT2LMIX_INPUT_3_SOURCE: | ||
| 1549 | case ARIZONA_OUT2LMIX_INPUT_3_VOLUME: | ||
| 1550 | case ARIZONA_OUT2LMIX_INPUT_4_SOURCE: | ||
| 1551 | case ARIZONA_OUT2LMIX_INPUT_4_VOLUME: | ||
| 1552 | case ARIZONA_OUT2RMIX_INPUT_1_SOURCE: | ||
| 1553 | case ARIZONA_OUT2RMIX_INPUT_1_VOLUME: | ||
| 1554 | case ARIZONA_OUT2RMIX_INPUT_2_SOURCE: | ||
| 1555 | case ARIZONA_OUT2RMIX_INPUT_2_VOLUME: | ||
| 1556 | case ARIZONA_OUT2RMIX_INPUT_3_SOURCE: | ||
| 1557 | case ARIZONA_OUT2RMIX_INPUT_3_VOLUME: | ||
| 1558 | case ARIZONA_OUT2RMIX_INPUT_4_SOURCE: | ||
| 1559 | case ARIZONA_OUT2RMIX_INPUT_4_VOLUME: | ||
| 1560 | case ARIZONA_OUT3LMIX_INPUT_1_SOURCE: | ||
| 1561 | case ARIZONA_OUT3LMIX_INPUT_1_VOLUME: | ||
| 1562 | case ARIZONA_OUT3LMIX_INPUT_2_SOURCE: | ||
| 1563 | case ARIZONA_OUT3LMIX_INPUT_2_VOLUME: | ||
| 1564 | case ARIZONA_OUT3LMIX_INPUT_3_SOURCE: | ||
| 1565 | case ARIZONA_OUT3LMIX_INPUT_3_VOLUME: | ||
| 1566 | case ARIZONA_OUT3LMIX_INPUT_4_SOURCE: | ||
| 1567 | case ARIZONA_OUT3LMIX_INPUT_4_VOLUME: | ||
| 1568 | case ARIZONA_OUT3RMIX_INPUT_1_SOURCE: | ||
| 1569 | case ARIZONA_OUT3RMIX_INPUT_1_VOLUME: | ||
| 1570 | case ARIZONA_OUT3RMIX_INPUT_2_SOURCE: | ||
| 1571 | case ARIZONA_OUT3RMIX_INPUT_2_VOLUME: | ||
| 1572 | case ARIZONA_OUT3RMIX_INPUT_3_SOURCE: | ||
| 1573 | case ARIZONA_OUT3RMIX_INPUT_3_VOLUME: | ||
| 1574 | case ARIZONA_OUT3RMIX_INPUT_4_SOURCE: | ||
| 1575 | case ARIZONA_OUT3RMIX_INPUT_4_VOLUME: | ||
| 1576 | case ARIZONA_OUT4LMIX_INPUT_1_SOURCE: | ||
| 1577 | case ARIZONA_OUT4LMIX_INPUT_1_VOLUME: | ||
| 1578 | case ARIZONA_OUT4LMIX_INPUT_2_SOURCE: | ||
| 1579 | case ARIZONA_OUT4LMIX_INPUT_2_VOLUME: | ||
| 1580 | case ARIZONA_OUT4LMIX_INPUT_3_SOURCE: | ||
| 1581 | case ARIZONA_OUT4LMIX_INPUT_3_VOLUME: | ||
| 1582 | case ARIZONA_OUT4LMIX_INPUT_4_SOURCE: | ||
| 1583 | case ARIZONA_OUT4LMIX_INPUT_4_VOLUME: | ||
| 1584 | case ARIZONA_OUT4RMIX_INPUT_1_SOURCE: | ||
| 1585 | case ARIZONA_OUT4RMIX_INPUT_1_VOLUME: | ||
| 1586 | case ARIZONA_OUT4RMIX_INPUT_2_SOURCE: | ||
| 1587 | case ARIZONA_OUT4RMIX_INPUT_2_VOLUME: | ||
| 1588 | case ARIZONA_OUT4RMIX_INPUT_3_SOURCE: | ||
| 1589 | case ARIZONA_OUT4RMIX_INPUT_3_VOLUME: | ||
| 1590 | case ARIZONA_OUT4RMIX_INPUT_4_SOURCE: | ||
| 1591 | case ARIZONA_OUT4RMIX_INPUT_4_VOLUME: | ||
| 1592 | case ARIZONA_OUT5LMIX_INPUT_1_SOURCE: | ||
| 1593 | case ARIZONA_OUT5LMIX_INPUT_1_VOLUME: | ||
| 1594 | case ARIZONA_OUT5LMIX_INPUT_2_SOURCE: | ||
| 1595 | case ARIZONA_OUT5LMIX_INPUT_2_VOLUME: | ||
| 1596 | case ARIZONA_OUT5LMIX_INPUT_3_SOURCE: | ||
| 1597 | case ARIZONA_OUT5LMIX_INPUT_3_VOLUME: | ||
| 1598 | case ARIZONA_OUT5LMIX_INPUT_4_SOURCE: | ||
| 1599 | case ARIZONA_OUT5LMIX_INPUT_4_VOLUME: | ||
| 1600 | case ARIZONA_OUT5RMIX_INPUT_1_SOURCE: | ||
| 1601 | case ARIZONA_OUT5RMIX_INPUT_1_VOLUME: | ||
| 1602 | case ARIZONA_OUT5RMIX_INPUT_2_SOURCE: | ||
| 1603 | case ARIZONA_OUT5RMIX_INPUT_2_VOLUME: | ||
| 1604 | case ARIZONA_OUT5RMIX_INPUT_3_SOURCE: | ||
| 1605 | case ARIZONA_OUT5RMIX_INPUT_3_VOLUME: | ||
| 1606 | case ARIZONA_OUT5RMIX_INPUT_4_SOURCE: | ||
| 1607 | case ARIZONA_OUT5RMIX_INPUT_4_VOLUME: | ||
| 1608 | case ARIZONA_OUT6LMIX_INPUT_1_SOURCE: | ||
| 1609 | case ARIZONA_OUT6LMIX_INPUT_1_VOLUME: | ||
| 1610 | case ARIZONA_OUT6LMIX_INPUT_2_SOURCE: | ||
| 1611 | case ARIZONA_OUT6LMIX_INPUT_2_VOLUME: | ||
| 1612 | case ARIZONA_OUT6LMIX_INPUT_3_SOURCE: | ||
| 1613 | case ARIZONA_OUT6LMIX_INPUT_3_VOLUME: | ||
| 1614 | case ARIZONA_OUT6LMIX_INPUT_4_SOURCE: | ||
| 1615 | case ARIZONA_OUT6LMIX_INPUT_4_VOLUME: | ||
| 1616 | case ARIZONA_OUT6RMIX_INPUT_1_SOURCE: | ||
| 1617 | case ARIZONA_OUT6RMIX_INPUT_1_VOLUME: | ||
| 1618 | case ARIZONA_OUT6RMIX_INPUT_2_SOURCE: | ||
| 1619 | case ARIZONA_OUT6RMIX_INPUT_2_VOLUME: | ||
| 1620 | case ARIZONA_OUT6RMIX_INPUT_3_SOURCE: | ||
| 1621 | case ARIZONA_OUT6RMIX_INPUT_3_VOLUME: | ||
| 1622 | case ARIZONA_OUT6RMIX_INPUT_4_SOURCE: | ||
| 1623 | case ARIZONA_OUT6RMIX_INPUT_4_VOLUME: | ||
| 1624 | case ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE: | ||
| 1625 | case ARIZONA_AIF1TX1MIX_INPUT_1_VOLUME: | ||
| 1626 | case ARIZONA_AIF1TX1MIX_INPUT_2_SOURCE: | ||
| 1627 | case ARIZONA_AIF1TX1MIX_INPUT_2_VOLUME: | ||
| 1628 | case ARIZONA_AIF1TX1MIX_INPUT_3_SOURCE: | ||
| 1629 | case ARIZONA_AIF1TX1MIX_INPUT_3_VOLUME: | ||
| 1630 | case ARIZONA_AIF1TX1MIX_INPUT_4_SOURCE: | ||
| 1631 | case ARIZONA_AIF1TX1MIX_INPUT_4_VOLUME: | ||
| 1632 | case ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE: | ||
| 1633 | case ARIZONA_AIF1TX2MIX_INPUT_1_VOLUME: | ||
| 1634 | case ARIZONA_AIF1TX2MIX_INPUT_2_SOURCE: | ||
| 1635 | case ARIZONA_AIF1TX2MIX_INPUT_2_VOLUME: | ||
| 1636 | case ARIZONA_AIF1TX2MIX_INPUT_3_SOURCE: | ||
| 1637 | case ARIZONA_AIF1TX2MIX_INPUT_3_VOLUME: | ||
| 1638 | case ARIZONA_AIF1TX2MIX_INPUT_4_SOURCE: | ||
| 1639 | case ARIZONA_AIF1TX2MIX_INPUT_4_VOLUME: | ||
| 1640 | case ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE: | ||
| 1641 | case ARIZONA_AIF1TX3MIX_INPUT_1_VOLUME: | ||
| 1642 | case ARIZONA_AIF1TX3MIX_INPUT_2_SOURCE: | ||
| 1643 | case ARIZONA_AIF1TX3MIX_INPUT_2_VOLUME: | ||
| 1644 | case ARIZONA_AIF1TX3MIX_INPUT_3_SOURCE: | ||
| 1645 | case ARIZONA_AIF1TX3MIX_INPUT_3_VOLUME: | ||
| 1646 | case ARIZONA_AIF1TX3MIX_INPUT_4_SOURCE: | ||
| 1647 | case ARIZONA_AIF1TX3MIX_INPUT_4_VOLUME: | ||
| 1648 | case ARIZONA_AIF1TX4MIX_INPUT_1_SOURCE: | ||
| 1649 | case ARIZONA_AIF1TX4MIX_INPUT_1_VOLUME: | ||
| 1650 | case ARIZONA_AIF1TX4MIX_INPUT_2_SOURCE: | ||
| 1651 | case ARIZONA_AIF1TX4MIX_INPUT_2_VOLUME: | ||
| 1652 | case ARIZONA_AIF1TX4MIX_INPUT_3_SOURCE: | ||
| 1653 | case ARIZONA_AIF1TX4MIX_INPUT_3_VOLUME: | ||
| 1654 | case ARIZONA_AIF1TX4MIX_INPUT_4_SOURCE: | ||
| 1655 | case ARIZONA_AIF1TX4MIX_INPUT_4_VOLUME: | ||
| 1656 | case ARIZONA_AIF1TX5MIX_INPUT_1_SOURCE: | ||
| 1657 | case ARIZONA_AIF1TX5MIX_INPUT_1_VOLUME: | ||
| 1658 | case ARIZONA_AIF1TX5MIX_INPUT_2_SOURCE: | ||
| 1659 | case ARIZONA_AIF1TX5MIX_INPUT_2_VOLUME: | ||
| 1660 | case ARIZONA_AIF1TX5MIX_INPUT_3_SOURCE: | ||
| 1661 | case ARIZONA_AIF1TX5MIX_INPUT_3_VOLUME: | ||
| 1662 | case ARIZONA_AIF1TX5MIX_INPUT_4_SOURCE: | ||
| 1663 | case ARIZONA_AIF1TX5MIX_INPUT_4_VOLUME: | ||
| 1664 | case ARIZONA_AIF1TX6MIX_INPUT_1_SOURCE: | ||
| 1665 | case ARIZONA_AIF1TX6MIX_INPUT_1_VOLUME: | ||
| 1666 | case ARIZONA_AIF1TX6MIX_INPUT_2_SOURCE: | ||
| 1667 | case ARIZONA_AIF1TX6MIX_INPUT_2_VOLUME: | ||
| 1668 | case ARIZONA_AIF1TX6MIX_INPUT_3_SOURCE: | ||
| 1669 | case ARIZONA_AIF1TX6MIX_INPUT_3_VOLUME: | ||
| 1670 | case ARIZONA_AIF1TX6MIX_INPUT_4_SOURCE: | ||
| 1671 | case ARIZONA_AIF1TX6MIX_INPUT_4_VOLUME: | ||
| 1672 | case ARIZONA_AIF1TX7MIX_INPUT_1_SOURCE: | ||
| 1673 | case ARIZONA_AIF1TX7MIX_INPUT_1_VOLUME: | ||
| 1674 | case ARIZONA_AIF1TX7MIX_INPUT_2_SOURCE: | ||
| 1675 | case ARIZONA_AIF1TX7MIX_INPUT_2_VOLUME: | ||
| 1676 | case ARIZONA_AIF1TX7MIX_INPUT_3_SOURCE: | ||
| 1677 | case ARIZONA_AIF1TX7MIX_INPUT_3_VOLUME: | ||
| 1678 | case ARIZONA_AIF1TX7MIX_INPUT_4_SOURCE: | ||
| 1679 | case ARIZONA_AIF1TX7MIX_INPUT_4_VOLUME: | ||
| 1680 | case ARIZONA_AIF1TX8MIX_INPUT_1_SOURCE: | ||
| 1681 | case ARIZONA_AIF1TX8MIX_INPUT_1_VOLUME: | ||
| 1682 | case ARIZONA_AIF1TX8MIX_INPUT_2_SOURCE: | ||
| 1683 | case ARIZONA_AIF1TX8MIX_INPUT_2_VOLUME: | ||
| 1684 | case ARIZONA_AIF1TX8MIX_INPUT_3_SOURCE: | ||
| 1685 | case ARIZONA_AIF1TX8MIX_INPUT_3_VOLUME: | ||
| 1686 | case ARIZONA_AIF1TX8MIX_INPUT_4_SOURCE: | ||
| 1687 | case ARIZONA_AIF1TX8MIX_INPUT_4_VOLUME: | ||
| 1688 | case ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE: | ||
| 1689 | case ARIZONA_AIF2TX1MIX_INPUT_1_VOLUME: | ||
| 1690 | case ARIZONA_AIF2TX1MIX_INPUT_2_SOURCE: | ||
| 1691 | case ARIZONA_AIF2TX1MIX_INPUT_2_VOLUME: | ||
| 1692 | case ARIZONA_AIF2TX1MIX_INPUT_3_SOURCE: | ||
| 1693 | case ARIZONA_AIF2TX1MIX_INPUT_3_VOLUME: | ||
| 1694 | case ARIZONA_AIF2TX1MIX_INPUT_4_SOURCE: | ||
| 1695 | case ARIZONA_AIF2TX1MIX_INPUT_4_VOLUME: | ||
| 1696 | case ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE: | ||
| 1697 | case ARIZONA_AIF2TX2MIX_INPUT_1_VOLUME: | ||
| 1698 | case ARIZONA_AIF2TX2MIX_INPUT_2_SOURCE: | ||
| 1699 | case ARIZONA_AIF2TX2MIX_INPUT_2_VOLUME: | ||
| 1700 | case ARIZONA_AIF2TX2MIX_INPUT_3_SOURCE: | ||
| 1701 | case ARIZONA_AIF2TX2MIX_INPUT_3_VOLUME: | ||
| 1702 | case ARIZONA_AIF2TX2MIX_INPUT_4_SOURCE: | ||
| 1703 | case ARIZONA_AIF2TX2MIX_INPUT_4_VOLUME: | ||
| 1704 | case ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE: | ||
| 1705 | case ARIZONA_AIF3TX1MIX_INPUT_1_VOLUME: | ||
| 1706 | case ARIZONA_AIF3TX1MIX_INPUT_2_SOURCE: | ||
| 1707 | case ARIZONA_AIF3TX1MIX_INPUT_2_VOLUME: | ||
| 1708 | case ARIZONA_AIF3TX1MIX_INPUT_3_SOURCE: | ||
| 1709 | case ARIZONA_AIF3TX1MIX_INPUT_3_VOLUME: | ||
| 1710 | case ARIZONA_AIF3TX1MIX_INPUT_4_SOURCE: | ||
| 1711 | case ARIZONA_AIF3TX1MIX_INPUT_4_VOLUME: | ||
| 1712 | case ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE: | ||
| 1713 | case ARIZONA_AIF3TX2MIX_INPUT_1_VOLUME: | ||
| 1714 | case ARIZONA_AIF3TX2MIX_INPUT_2_SOURCE: | ||
| 1715 | case ARIZONA_AIF3TX2MIX_INPUT_2_VOLUME: | ||
| 1716 | case ARIZONA_AIF3TX2MIX_INPUT_3_SOURCE: | ||
| 1717 | case ARIZONA_AIF3TX2MIX_INPUT_3_VOLUME: | ||
| 1718 | case ARIZONA_AIF3TX2MIX_INPUT_4_SOURCE: | ||
| 1719 | case ARIZONA_AIF3TX2MIX_INPUT_4_VOLUME: | ||
| 1720 | case ARIZONA_SLIMTX1MIX_INPUT_1_SOURCE: | ||
| 1721 | case ARIZONA_SLIMTX1MIX_INPUT_1_VOLUME: | ||
| 1722 | case ARIZONA_SLIMTX1MIX_INPUT_2_SOURCE: | ||
| 1723 | case ARIZONA_SLIMTX1MIX_INPUT_2_VOLUME: | ||
| 1724 | case ARIZONA_SLIMTX1MIX_INPUT_3_SOURCE: | ||
| 1725 | case ARIZONA_SLIMTX1MIX_INPUT_3_VOLUME: | ||
| 1726 | case ARIZONA_SLIMTX1MIX_INPUT_4_SOURCE: | ||
| 1727 | case ARIZONA_SLIMTX1MIX_INPUT_4_VOLUME: | ||
| 1728 | case ARIZONA_SLIMTX2MIX_INPUT_1_SOURCE: | ||
| 1729 | case ARIZONA_SLIMTX2MIX_INPUT_1_VOLUME: | ||
| 1730 | case ARIZONA_SLIMTX2MIX_INPUT_2_SOURCE: | ||
| 1731 | case ARIZONA_SLIMTX2MIX_INPUT_2_VOLUME: | ||
| 1732 | case ARIZONA_SLIMTX2MIX_INPUT_3_SOURCE: | ||
| 1733 | case ARIZONA_SLIMTX2MIX_INPUT_3_VOLUME: | ||
| 1734 | case ARIZONA_SLIMTX2MIX_INPUT_4_SOURCE: | ||
| 1735 | case ARIZONA_SLIMTX2MIX_INPUT_4_VOLUME: | ||
| 1736 | case ARIZONA_SLIMTX3MIX_INPUT_1_SOURCE: | ||
| 1737 | case ARIZONA_SLIMTX3MIX_INPUT_1_VOLUME: | ||
| 1738 | case ARIZONA_SLIMTX3MIX_INPUT_2_SOURCE: | ||
| 1739 | case ARIZONA_SLIMTX3MIX_INPUT_2_VOLUME: | ||
| 1740 | case ARIZONA_SLIMTX3MIX_INPUT_3_SOURCE: | ||
| 1741 | case ARIZONA_SLIMTX3MIX_INPUT_3_VOLUME: | ||
| 1742 | case ARIZONA_SLIMTX3MIX_INPUT_4_SOURCE: | ||
| 1743 | case ARIZONA_SLIMTX3MIX_INPUT_4_VOLUME: | ||
| 1744 | case ARIZONA_SLIMTX4MIX_INPUT_1_SOURCE: | ||
| 1745 | case ARIZONA_SLIMTX4MIX_INPUT_1_VOLUME: | ||
| 1746 | case ARIZONA_SLIMTX4MIX_INPUT_2_SOURCE: | ||
| 1747 | case ARIZONA_SLIMTX4MIX_INPUT_2_VOLUME: | ||
| 1748 | case ARIZONA_SLIMTX4MIX_INPUT_3_SOURCE: | ||
| 1749 | case ARIZONA_SLIMTX4MIX_INPUT_3_VOLUME: | ||
| 1750 | case ARIZONA_SLIMTX4MIX_INPUT_4_SOURCE: | ||
| 1751 | case ARIZONA_SLIMTX4MIX_INPUT_4_VOLUME: | ||
| 1752 | case ARIZONA_SLIMTX5MIX_INPUT_1_SOURCE: | ||
| 1753 | case ARIZONA_SLIMTX5MIX_INPUT_1_VOLUME: | ||
| 1754 | case ARIZONA_SLIMTX5MIX_INPUT_2_SOURCE: | ||
| 1755 | case ARIZONA_SLIMTX5MIX_INPUT_2_VOLUME: | ||
| 1756 | case ARIZONA_SLIMTX5MIX_INPUT_3_SOURCE: | ||
| 1757 | case ARIZONA_SLIMTX5MIX_INPUT_3_VOLUME: | ||
| 1758 | case ARIZONA_SLIMTX5MIX_INPUT_4_SOURCE: | ||
| 1759 | case ARIZONA_SLIMTX5MIX_INPUT_4_VOLUME: | ||
| 1760 | case ARIZONA_SLIMTX6MIX_INPUT_1_SOURCE: | ||
| 1761 | case ARIZONA_SLIMTX6MIX_INPUT_1_VOLUME: | ||
| 1762 | case ARIZONA_SLIMTX6MIX_INPUT_2_SOURCE: | ||
| 1763 | case ARIZONA_SLIMTX6MIX_INPUT_2_VOLUME: | ||
| 1764 | case ARIZONA_SLIMTX6MIX_INPUT_3_SOURCE: | ||
| 1765 | case ARIZONA_SLIMTX6MIX_INPUT_3_VOLUME: | ||
| 1766 | case ARIZONA_SLIMTX6MIX_INPUT_4_SOURCE: | ||
| 1767 | case ARIZONA_SLIMTX6MIX_INPUT_4_VOLUME: | ||
| 1768 | case ARIZONA_SLIMTX7MIX_INPUT_1_SOURCE: | ||
| 1769 | case ARIZONA_SLIMTX7MIX_INPUT_1_VOLUME: | ||
| 1770 | case ARIZONA_SLIMTX7MIX_INPUT_2_SOURCE: | ||
| 1771 | case ARIZONA_SLIMTX7MIX_INPUT_2_VOLUME: | ||
| 1772 | case ARIZONA_SLIMTX7MIX_INPUT_3_SOURCE: | ||
| 1773 | case ARIZONA_SLIMTX7MIX_INPUT_3_VOLUME: | ||
| 1774 | case ARIZONA_SLIMTX7MIX_INPUT_4_SOURCE: | ||
| 1775 | case ARIZONA_SLIMTX7MIX_INPUT_4_VOLUME: | ||
| 1776 | case ARIZONA_SLIMTX8MIX_INPUT_1_SOURCE: | ||
| 1777 | case ARIZONA_SLIMTX8MIX_INPUT_1_VOLUME: | ||
| 1778 | case ARIZONA_SLIMTX8MIX_INPUT_2_SOURCE: | ||
| 1779 | case ARIZONA_SLIMTX8MIX_INPUT_2_VOLUME: | ||
| 1780 | case ARIZONA_SLIMTX8MIX_INPUT_3_SOURCE: | ||
| 1781 | case ARIZONA_SLIMTX8MIX_INPUT_3_VOLUME: | ||
| 1782 | case ARIZONA_SLIMTX8MIX_INPUT_4_SOURCE: | ||
| 1783 | case ARIZONA_SLIMTX8MIX_INPUT_4_VOLUME: | ||
| 1784 | case ARIZONA_EQ1MIX_INPUT_1_SOURCE: | ||
| 1785 | case ARIZONA_EQ1MIX_INPUT_1_VOLUME: | ||
| 1786 | case ARIZONA_EQ1MIX_INPUT_2_SOURCE: | ||
| 1787 | case ARIZONA_EQ1MIX_INPUT_2_VOLUME: | ||
| 1788 | case ARIZONA_EQ1MIX_INPUT_3_SOURCE: | ||
| 1789 | case ARIZONA_EQ1MIX_INPUT_3_VOLUME: | ||
| 1790 | case ARIZONA_EQ1MIX_INPUT_4_SOURCE: | ||
| 1791 | case ARIZONA_EQ1MIX_INPUT_4_VOLUME: | ||
| 1792 | case ARIZONA_EQ2MIX_INPUT_1_SOURCE: | ||
| 1793 | case ARIZONA_EQ2MIX_INPUT_1_VOLUME: | ||
| 1794 | case ARIZONA_EQ2MIX_INPUT_2_SOURCE: | ||
| 1795 | case ARIZONA_EQ2MIX_INPUT_2_VOLUME: | ||
| 1796 | case ARIZONA_EQ2MIX_INPUT_3_SOURCE: | ||
| 1797 | case ARIZONA_EQ2MIX_INPUT_3_VOLUME: | ||
| 1798 | case ARIZONA_EQ2MIX_INPUT_4_SOURCE: | ||
| 1799 | case ARIZONA_EQ2MIX_INPUT_4_VOLUME: | ||
| 1800 | case ARIZONA_EQ3MIX_INPUT_1_SOURCE: | ||
| 1801 | case ARIZONA_EQ3MIX_INPUT_1_VOLUME: | ||
| 1802 | case ARIZONA_EQ3MIX_INPUT_2_SOURCE: | ||
| 1803 | case ARIZONA_EQ3MIX_INPUT_2_VOLUME: | ||
| 1804 | case ARIZONA_EQ3MIX_INPUT_3_SOURCE: | ||
| 1805 | case ARIZONA_EQ3MIX_INPUT_3_VOLUME: | ||
| 1806 | case ARIZONA_EQ3MIX_INPUT_4_SOURCE: | ||
| 1807 | case ARIZONA_EQ3MIX_INPUT_4_VOLUME: | ||
| 1808 | case ARIZONA_EQ4MIX_INPUT_1_SOURCE: | ||
| 1809 | case ARIZONA_EQ4MIX_INPUT_1_VOLUME: | ||
| 1810 | case ARIZONA_EQ4MIX_INPUT_2_SOURCE: | ||
| 1811 | case ARIZONA_EQ4MIX_INPUT_2_VOLUME: | ||
| 1812 | case ARIZONA_EQ4MIX_INPUT_3_SOURCE: | ||
| 1813 | case ARIZONA_EQ4MIX_INPUT_3_VOLUME: | ||
| 1814 | case ARIZONA_EQ4MIX_INPUT_4_SOURCE: | ||
| 1815 | case ARIZONA_EQ4MIX_INPUT_4_VOLUME: | ||
| 1816 | case ARIZONA_DRC1LMIX_INPUT_1_SOURCE: | ||
| 1817 | case ARIZONA_DRC1LMIX_INPUT_1_VOLUME: | ||
| 1818 | case ARIZONA_DRC1LMIX_INPUT_2_SOURCE: | ||
| 1819 | case ARIZONA_DRC1LMIX_INPUT_2_VOLUME: | ||
| 1820 | case ARIZONA_DRC1LMIX_INPUT_3_SOURCE: | ||
| 1821 | case ARIZONA_DRC1LMIX_INPUT_3_VOLUME: | ||
| 1822 | case ARIZONA_DRC1LMIX_INPUT_4_SOURCE: | ||
| 1823 | case ARIZONA_DRC1LMIX_INPUT_4_VOLUME: | ||
| 1824 | case ARIZONA_DRC1RMIX_INPUT_1_SOURCE: | ||
| 1825 | case ARIZONA_DRC1RMIX_INPUT_1_VOLUME: | ||
| 1826 | case ARIZONA_DRC1RMIX_INPUT_2_SOURCE: | ||
| 1827 | case ARIZONA_DRC1RMIX_INPUT_2_VOLUME: | ||
| 1828 | case ARIZONA_DRC1RMIX_INPUT_3_SOURCE: | ||
| 1829 | case ARIZONA_DRC1RMIX_INPUT_3_VOLUME: | ||
| 1830 | case ARIZONA_DRC1RMIX_INPUT_4_SOURCE: | ||
| 1831 | case ARIZONA_DRC1RMIX_INPUT_4_VOLUME: | ||
| 1832 | case ARIZONA_DRC2LMIX_INPUT_1_SOURCE: | ||
| 1833 | case ARIZONA_DRC2LMIX_INPUT_1_VOLUME: | ||
| 1834 | case ARIZONA_DRC2LMIX_INPUT_2_SOURCE: | ||
| 1835 | case ARIZONA_DRC2LMIX_INPUT_2_VOLUME: | ||
| 1836 | case ARIZONA_DRC2LMIX_INPUT_3_SOURCE: | ||
| 1837 | case ARIZONA_DRC2LMIX_INPUT_3_VOLUME: | ||
| 1838 | case ARIZONA_DRC2LMIX_INPUT_4_SOURCE: | ||
| 1839 | case ARIZONA_DRC2LMIX_INPUT_4_VOLUME: | ||
| 1840 | case ARIZONA_DRC2RMIX_INPUT_1_SOURCE: | ||
| 1841 | case ARIZONA_DRC2RMIX_INPUT_1_VOLUME: | ||
| 1842 | case ARIZONA_DRC2RMIX_INPUT_2_SOURCE: | ||
| 1843 | case ARIZONA_DRC2RMIX_INPUT_2_VOLUME: | ||
| 1844 | case ARIZONA_DRC2RMIX_INPUT_3_SOURCE: | ||
| 1845 | case ARIZONA_DRC2RMIX_INPUT_3_VOLUME: | ||
| 1846 | case ARIZONA_DRC2RMIX_INPUT_4_SOURCE: | ||
| 1847 | case ARIZONA_DRC2RMIX_INPUT_4_VOLUME: | ||
| 1848 | case ARIZONA_HPLP1MIX_INPUT_1_SOURCE: | ||
| 1849 | case ARIZONA_HPLP1MIX_INPUT_1_VOLUME: | ||
| 1850 | case ARIZONA_HPLP1MIX_INPUT_2_SOURCE: | ||
| 1851 | case ARIZONA_HPLP1MIX_INPUT_2_VOLUME: | ||
| 1852 | case ARIZONA_HPLP1MIX_INPUT_3_SOURCE: | ||
| 1853 | case ARIZONA_HPLP1MIX_INPUT_3_VOLUME: | ||
| 1854 | case ARIZONA_HPLP1MIX_INPUT_4_SOURCE: | ||
| 1855 | case ARIZONA_HPLP1MIX_INPUT_4_VOLUME: | ||
| 1856 | case ARIZONA_HPLP2MIX_INPUT_1_SOURCE: | ||
| 1857 | case ARIZONA_HPLP2MIX_INPUT_1_VOLUME: | ||
| 1858 | case ARIZONA_HPLP2MIX_INPUT_2_SOURCE: | ||
| 1859 | case ARIZONA_HPLP2MIX_INPUT_2_VOLUME: | ||
| 1860 | case ARIZONA_HPLP2MIX_INPUT_3_SOURCE: | ||
| 1861 | case ARIZONA_HPLP2MIX_INPUT_3_VOLUME: | ||
| 1862 | case ARIZONA_HPLP2MIX_INPUT_4_SOURCE: | ||
| 1863 | case ARIZONA_HPLP2MIX_INPUT_4_VOLUME: | ||
| 1864 | case ARIZONA_HPLP3MIX_INPUT_1_SOURCE: | ||
| 1865 | case ARIZONA_HPLP3MIX_INPUT_1_VOLUME: | ||
| 1866 | case ARIZONA_HPLP3MIX_INPUT_2_SOURCE: | ||
| 1867 | case ARIZONA_HPLP3MIX_INPUT_2_VOLUME: | ||
| 1868 | case ARIZONA_HPLP3MIX_INPUT_3_SOURCE: | ||
| 1869 | case ARIZONA_HPLP3MIX_INPUT_3_VOLUME: | ||
| 1870 | case ARIZONA_HPLP3MIX_INPUT_4_SOURCE: | ||
| 1871 | case ARIZONA_HPLP3MIX_INPUT_4_VOLUME: | ||
| 1872 | case ARIZONA_HPLP4MIX_INPUT_1_SOURCE: | ||
| 1873 | case ARIZONA_HPLP4MIX_INPUT_1_VOLUME: | ||
| 1874 | case ARIZONA_HPLP4MIX_INPUT_2_SOURCE: | ||
| 1875 | case ARIZONA_HPLP4MIX_INPUT_2_VOLUME: | ||
| 1876 | case ARIZONA_HPLP4MIX_INPUT_3_SOURCE: | ||
| 1877 | case ARIZONA_HPLP4MIX_INPUT_3_VOLUME: | ||
| 1878 | case ARIZONA_HPLP4MIX_INPUT_4_SOURCE: | ||
| 1879 | case ARIZONA_HPLP4MIX_INPUT_4_VOLUME: | ||
| 1880 | case ARIZONA_DSP1LMIX_INPUT_1_SOURCE: | ||
| 1881 | case ARIZONA_DSP1LMIX_INPUT_1_VOLUME: | ||
| 1882 | case ARIZONA_DSP1LMIX_INPUT_2_SOURCE: | ||
| 1883 | case ARIZONA_DSP1LMIX_INPUT_2_VOLUME: | ||
| 1884 | case ARIZONA_DSP1LMIX_INPUT_3_SOURCE: | ||
| 1885 | case ARIZONA_DSP1LMIX_INPUT_3_VOLUME: | ||
| 1886 | case ARIZONA_DSP1LMIX_INPUT_4_SOURCE: | ||
| 1887 | case ARIZONA_DSP1LMIX_INPUT_4_VOLUME: | ||
| 1888 | case ARIZONA_DSP1RMIX_INPUT_1_SOURCE: | ||
| 1889 | case ARIZONA_DSP1RMIX_INPUT_1_VOLUME: | ||
| 1890 | case ARIZONA_DSP1RMIX_INPUT_2_SOURCE: | ||
| 1891 | case ARIZONA_DSP1RMIX_INPUT_2_VOLUME: | ||
| 1892 | case ARIZONA_DSP1RMIX_INPUT_3_SOURCE: | ||
| 1893 | case ARIZONA_DSP1RMIX_INPUT_3_VOLUME: | ||
| 1894 | case ARIZONA_DSP1RMIX_INPUT_4_SOURCE: | ||
| 1895 | case ARIZONA_DSP1RMIX_INPUT_4_VOLUME: | ||
| 1896 | case ARIZONA_DSP1AUX1MIX_INPUT_1_SOURCE: | ||
| 1897 | case ARIZONA_DSP1AUX2MIX_INPUT_1_SOURCE: | ||
| 1898 | case ARIZONA_DSP1AUX3MIX_INPUT_1_SOURCE: | ||
| 1899 | case ARIZONA_DSP1AUX4MIX_INPUT_1_SOURCE: | ||
| 1900 | case ARIZONA_DSP1AUX5MIX_INPUT_1_SOURCE: | ||
| 1901 | case ARIZONA_DSP1AUX6MIX_INPUT_1_SOURCE: | ||
| 1902 | case ARIZONA_DSP2LMIX_INPUT_1_SOURCE: | ||
| 1903 | case ARIZONA_DSP2LMIX_INPUT_1_VOLUME: | ||
| 1904 | case ARIZONA_DSP2LMIX_INPUT_2_SOURCE: | ||
| 1905 | case ARIZONA_DSP2LMIX_INPUT_2_VOLUME: | ||
| 1906 | case ARIZONA_DSP2LMIX_INPUT_3_SOURCE: | ||
| 1907 | case ARIZONA_DSP2LMIX_INPUT_3_VOLUME: | ||
| 1908 | case ARIZONA_DSP2LMIX_INPUT_4_SOURCE: | ||
| 1909 | case ARIZONA_DSP2LMIX_INPUT_4_VOLUME: | ||
| 1910 | case ARIZONA_DSP2RMIX_INPUT_1_SOURCE: | ||
| 1911 | case ARIZONA_DSP2RMIX_INPUT_1_VOLUME: | ||
| 1912 | case ARIZONA_DSP2RMIX_INPUT_2_SOURCE: | ||
| 1913 | case ARIZONA_DSP2RMIX_INPUT_2_VOLUME: | ||
| 1914 | case ARIZONA_DSP2RMIX_INPUT_3_SOURCE: | ||
| 1915 | case ARIZONA_DSP2RMIX_INPUT_3_VOLUME: | ||
| 1916 | case ARIZONA_DSP2RMIX_INPUT_4_SOURCE: | ||
| 1917 | case ARIZONA_DSP2RMIX_INPUT_4_VOLUME: | ||
| 1918 | case ARIZONA_DSP2AUX1MIX_INPUT_1_SOURCE: | ||
| 1919 | case ARIZONA_DSP2AUX2MIX_INPUT_1_SOURCE: | ||
| 1920 | case ARIZONA_DSP2AUX3MIX_INPUT_1_SOURCE: | ||
| 1921 | case ARIZONA_DSP2AUX4MIX_INPUT_1_SOURCE: | ||
| 1922 | case ARIZONA_DSP2AUX5MIX_INPUT_1_SOURCE: | ||
| 1923 | case ARIZONA_DSP2AUX6MIX_INPUT_1_SOURCE: | ||
| 1924 | case ARIZONA_DSP3LMIX_INPUT_1_SOURCE: | ||
| 1925 | case ARIZONA_DSP3LMIX_INPUT_1_VOLUME: | ||
| 1926 | case ARIZONA_DSP3LMIX_INPUT_2_SOURCE: | ||
| 1927 | case ARIZONA_DSP3LMIX_INPUT_2_VOLUME: | ||
| 1928 | case ARIZONA_DSP3LMIX_INPUT_3_SOURCE: | ||
| 1929 | case ARIZONA_DSP3LMIX_INPUT_3_VOLUME: | ||
| 1930 | case ARIZONA_DSP3LMIX_INPUT_4_SOURCE: | ||
| 1931 | case ARIZONA_DSP3LMIX_INPUT_4_VOLUME: | ||
| 1932 | case ARIZONA_DSP3RMIX_INPUT_1_SOURCE: | ||
| 1933 | case ARIZONA_DSP3RMIX_INPUT_1_VOLUME: | ||
| 1934 | case ARIZONA_DSP3RMIX_INPUT_2_SOURCE: | ||
| 1935 | case ARIZONA_DSP3RMIX_INPUT_2_VOLUME: | ||
| 1936 | case ARIZONA_DSP3RMIX_INPUT_3_SOURCE: | ||
| 1937 | case ARIZONA_DSP3RMIX_INPUT_3_VOLUME: | ||
| 1938 | case ARIZONA_DSP3RMIX_INPUT_4_SOURCE: | ||
| 1939 | case ARIZONA_DSP3RMIX_INPUT_4_VOLUME: | ||
| 1940 | case ARIZONA_DSP3AUX1MIX_INPUT_1_SOURCE: | ||
| 1941 | case ARIZONA_DSP3AUX2MIX_INPUT_1_SOURCE: | ||
| 1942 | case ARIZONA_DSP3AUX3MIX_INPUT_1_SOURCE: | ||
| 1943 | case ARIZONA_DSP3AUX4MIX_INPUT_1_SOURCE: | ||
| 1944 | case ARIZONA_DSP3AUX5MIX_INPUT_1_SOURCE: | ||
| 1945 | case ARIZONA_DSP3AUX6MIX_INPUT_1_SOURCE: | ||
| 1946 | case ARIZONA_DSP4LMIX_INPUT_1_SOURCE: | ||
| 1947 | case ARIZONA_DSP4LMIX_INPUT_1_VOLUME: | ||
| 1948 | case ARIZONA_DSP4LMIX_INPUT_2_SOURCE: | ||
| 1949 | case ARIZONA_DSP4LMIX_INPUT_2_VOLUME: | ||
| 1950 | case ARIZONA_DSP4LMIX_INPUT_3_SOURCE: | ||
| 1951 | case ARIZONA_DSP4LMIX_INPUT_3_VOLUME: | ||
| 1952 | case ARIZONA_DSP4LMIX_INPUT_4_SOURCE: | ||
| 1953 | case ARIZONA_DSP4LMIX_INPUT_4_VOLUME: | ||
| 1954 | case ARIZONA_DSP4RMIX_INPUT_1_SOURCE: | ||
| 1955 | case ARIZONA_DSP4RMIX_INPUT_1_VOLUME: | ||
| 1956 | case ARIZONA_DSP4RMIX_INPUT_2_SOURCE: | ||
| 1957 | case ARIZONA_DSP4RMIX_INPUT_2_VOLUME: | ||
| 1958 | case ARIZONA_DSP4RMIX_INPUT_3_SOURCE: | ||
| 1959 | case ARIZONA_DSP4RMIX_INPUT_3_VOLUME: | ||
| 1960 | case ARIZONA_DSP4RMIX_INPUT_4_SOURCE: | ||
| 1961 | case ARIZONA_DSP4RMIX_INPUT_4_VOLUME: | ||
| 1962 | case ARIZONA_DSP4AUX1MIX_INPUT_1_SOURCE: | ||
| 1963 | case ARIZONA_DSP4AUX2MIX_INPUT_1_SOURCE: | ||
| 1964 | case ARIZONA_DSP4AUX3MIX_INPUT_1_SOURCE: | ||
| 1965 | case ARIZONA_DSP4AUX4MIX_INPUT_1_SOURCE: | ||
| 1966 | case ARIZONA_DSP4AUX5MIX_INPUT_1_SOURCE: | ||
| 1967 | case ARIZONA_DSP4AUX6MIX_INPUT_1_SOURCE: | ||
| 1968 | case ARIZONA_ASRC1LMIX_INPUT_1_SOURCE: | ||
| 1969 | case ARIZONA_ASRC1RMIX_INPUT_1_SOURCE: | ||
| 1970 | case ARIZONA_ASRC2LMIX_INPUT_1_SOURCE: | ||
| 1971 | case ARIZONA_ASRC2RMIX_INPUT_1_SOURCE: | ||
| 1972 | case ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE: | ||
| 1973 | case ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE: | ||
| 1974 | case ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE: | ||
| 1975 | case ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE: | ||
| 1976 | case ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE: | ||
| 1977 | case ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE: | ||
| 1978 | case ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE: | ||
| 1979 | case ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE: | ||
| 1980 | case ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE: | ||
| 1981 | case ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE: | ||
| 1982 | case ARIZONA_ISRC2DEC3MIX_INPUT_1_SOURCE: | ||
| 1983 | case ARIZONA_ISRC2DEC4MIX_INPUT_1_SOURCE: | ||
| 1984 | case ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE: | ||
| 1985 | case ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE: | ||
| 1986 | case ARIZONA_ISRC2INT3MIX_INPUT_1_SOURCE: | ||
| 1987 | case ARIZONA_ISRC2INT4MIX_INPUT_1_SOURCE: | ||
| 1988 | case ARIZONA_ISRC3DEC1MIX_INPUT_1_SOURCE: | ||
| 1989 | case ARIZONA_ISRC3DEC2MIX_INPUT_1_SOURCE: | ||
| 1990 | case ARIZONA_ISRC3DEC3MIX_INPUT_1_SOURCE: | ||
| 1991 | case ARIZONA_ISRC3DEC4MIX_INPUT_1_SOURCE: | ||
| 1992 | case ARIZONA_ISRC3INT1MIX_INPUT_1_SOURCE: | ||
| 1993 | case ARIZONA_ISRC3INT2MIX_INPUT_1_SOURCE: | ||
| 1994 | case ARIZONA_ISRC3INT3MIX_INPUT_1_SOURCE: | ||
| 1995 | case ARIZONA_ISRC3INT4MIX_INPUT_1_SOURCE: | ||
| 1996 | case ARIZONA_GPIO1_CTRL: | ||
| 1997 | case ARIZONA_GPIO2_CTRL: | ||
| 1998 | case ARIZONA_GPIO3_CTRL: | ||
| 1999 | case ARIZONA_GPIO4_CTRL: | ||
| 2000 | case ARIZONA_GPIO5_CTRL: | ||
| 2001 | case ARIZONA_IRQ_CTRL_1: | ||
| 2002 | case ARIZONA_GPIO_DEBOUNCE_CONFIG: | ||
| 2003 | case ARIZONA_MISC_PAD_CTRL_1: | ||
| 2004 | case ARIZONA_MISC_PAD_CTRL_2: | ||
| 2005 | case ARIZONA_MISC_PAD_CTRL_3: | ||
| 2006 | case ARIZONA_MISC_PAD_CTRL_4: | ||
| 2007 | case ARIZONA_MISC_PAD_CTRL_5: | ||
| 2008 | case ARIZONA_MISC_PAD_CTRL_6: | ||
| 2009 | case ARIZONA_MISC_PAD_CTRL_7: | ||
| 2010 | case ARIZONA_MISC_PAD_CTRL_8: | ||
| 2011 | case ARIZONA_MISC_PAD_CTRL_9: | ||
| 2012 | case ARIZONA_MISC_PAD_CTRL_10: | ||
| 2013 | case ARIZONA_MISC_PAD_CTRL_11: | ||
| 2014 | case ARIZONA_MISC_PAD_CTRL_12: | ||
| 2015 | case ARIZONA_MISC_PAD_CTRL_13: | ||
| 2016 | case ARIZONA_MISC_PAD_CTRL_14: | ||
| 2017 | case ARIZONA_MISC_PAD_CTRL_15: | ||
| 2018 | case ARIZONA_MISC_PAD_CTRL_16: | ||
| 2019 | case ARIZONA_MISC_PAD_CTRL_17: | ||
| 2020 | case ARIZONA_MISC_PAD_CTRL_18: | ||
| 2021 | case ARIZONA_INTERRUPT_STATUS_1: | ||
| 2022 | case ARIZONA_INTERRUPT_STATUS_2: | ||
| 2023 | case ARIZONA_INTERRUPT_STATUS_3: | ||
| 2024 | case ARIZONA_INTERRUPT_STATUS_4: | ||
| 2025 | case ARIZONA_INTERRUPT_STATUS_5: | ||
| 2026 | case ARIZONA_INTERRUPT_STATUS_1_MASK: | ||
| 2027 | case ARIZONA_INTERRUPT_STATUS_2_MASK: | ||
| 2028 | case ARIZONA_INTERRUPT_STATUS_3_MASK: | ||
| 2029 | case ARIZONA_INTERRUPT_STATUS_4_MASK: | ||
| 2030 | case ARIZONA_INTERRUPT_STATUS_5_MASK: | ||
| 2031 | case ARIZONA_INTERRUPT_CONTROL: | ||
| 2032 | case ARIZONA_IRQ2_STATUS_1: | ||
| 2033 | case ARIZONA_IRQ2_STATUS_2: | ||
| 2034 | case ARIZONA_IRQ2_STATUS_3: | ||
| 2035 | case ARIZONA_IRQ2_STATUS_4: | ||
| 2036 | case ARIZONA_IRQ2_STATUS_5: | ||
| 2037 | case ARIZONA_IRQ2_STATUS_1_MASK: | ||
| 2038 | case ARIZONA_IRQ2_STATUS_2_MASK: | ||
| 2039 | case ARIZONA_IRQ2_STATUS_3_MASK: | ||
| 2040 | case ARIZONA_IRQ2_STATUS_4_MASK: | ||
| 2041 | case ARIZONA_IRQ2_STATUS_5_MASK: | ||
| 2042 | case ARIZONA_IRQ2_CONTROL: | ||
| 2043 | case ARIZONA_INTERRUPT_RAW_STATUS_2: | ||
| 2044 | case ARIZONA_INTERRUPT_RAW_STATUS_3: | ||
| 2045 | case ARIZONA_INTERRUPT_RAW_STATUS_4: | ||
| 2046 | case ARIZONA_INTERRUPT_RAW_STATUS_5: | ||
| 2047 | case ARIZONA_INTERRUPT_RAW_STATUS_6: | ||
| 2048 | case ARIZONA_INTERRUPT_RAW_STATUS_7: | ||
| 2049 | case ARIZONA_INTERRUPT_RAW_STATUS_8: | ||
| 2050 | case ARIZONA_IRQ_PIN_STATUS: | ||
| 2051 | case ARIZONA_AOD_WKUP_AND_TRIG: | ||
| 2052 | case ARIZONA_AOD_IRQ1: | ||
| 2053 | case ARIZONA_AOD_IRQ2: | ||
| 2054 | case ARIZONA_AOD_IRQ_MASK_IRQ1: | ||
| 2055 | case ARIZONA_AOD_IRQ_MASK_IRQ2: | ||
| 2056 | case ARIZONA_AOD_IRQ_RAW_STATUS: | ||
| 2057 | case ARIZONA_JACK_DETECT_DEBOUNCE: | ||
| 2058 | case ARIZONA_FX_CTRL1: | ||
| 2059 | case ARIZONA_FX_CTRL2: | ||
| 2060 | case ARIZONA_EQ1_1: | ||
| 2061 | case ARIZONA_EQ1_2: | ||
| 2062 | case ARIZONA_EQ1_3: | ||
| 2063 | case ARIZONA_EQ1_4: | ||
| 2064 | case ARIZONA_EQ1_5: | ||
| 2065 | case ARIZONA_EQ1_6: | ||
| 2066 | case ARIZONA_EQ1_7: | ||
| 2067 | case ARIZONA_EQ1_8: | ||
| 2068 | case ARIZONA_EQ1_9: | ||
| 2069 | case ARIZONA_EQ1_10: | ||
| 2070 | case ARIZONA_EQ1_11: | ||
| 2071 | case ARIZONA_EQ1_12: | ||
| 2072 | case ARIZONA_EQ1_13: | ||
| 2073 | case ARIZONA_EQ1_14: | ||
| 2074 | case ARIZONA_EQ1_15: | ||
| 2075 | case ARIZONA_EQ1_16: | ||
| 2076 | case ARIZONA_EQ1_17: | ||
| 2077 | case ARIZONA_EQ1_18: | ||
| 2078 | case ARIZONA_EQ1_19: | ||
| 2079 | case ARIZONA_EQ1_20: | ||
| 2080 | case ARIZONA_EQ1_21: | ||
| 2081 | case ARIZONA_EQ2_1: | ||
| 2082 | case ARIZONA_EQ2_2: | ||
| 2083 | case ARIZONA_EQ2_3: | ||
| 2084 | case ARIZONA_EQ2_4: | ||
| 2085 | case ARIZONA_EQ2_5: | ||
| 2086 | case ARIZONA_EQ2_6: | ||
| 2087 | case ARIZONA_EQ2_7: | ||
| 2088 | case ARIZONA_EQ2_8: | ||
| 2089 | case ARIZONA_EQ2_9: | ||
| 2090 | case ARIZONA_EQ2_10: | ||
| 2091 | case ARIZONA_EQ2_11: | ||
| 2092 | case ARIZONA_EQ2_12: | ||
| 2093 | case ARIZONA_EQ2_13: | ||
| 2094 | case ARIZONA_EQ2_14: | ||
| 2095 | case ARIZONA_EQ2_15: | ||
| 2096 | case ARIZONA_EQ2_16: | ||
| 2097 | case ARIZONA_EQ2_17: | ||
| 2098 | case ARIZONA_EQ2_18: | ||
| 2099 | case ARIZONA_EQ2_19: | ||
| 2100 | case ARIZONA_EQ2_20: | ||
| 2101 | case ARIZONA_EQ2_21: | ||
| 2102 | case ARIZONA_EQ3_1: | ||
| 2103 | case ARIZONA_EQ3_2: | ||
| 2104 | case ARIZONA_EQ3_3: | ||
| 2105 | case ARIZONA_EQ3_4: | ||
| 2106 | case ARIZONA_EQ3_5: | ||
| 2107 | case ARIZONA_EQ3_6: | ||
| 2108 | case ARIZONA_EQ3_7: | ||
| 2109 | case ARIZONA_EQ3_8: | ||
| 2110 | case ARIZONA_EQ3_9: | ||
| 2111 | case ARIZONA_EQ3_10: | ||
| 2112 | case ARIZONA_EQ3_11: | ||
| 2113 | case ARIZONA_EQ3_12: | ||
| 2114 | case ARIZONA_EQ3_13: | ||
| 2115 | case ARIZONA_EQ3_14: | ||
| 2116 | case ARIZONA_EQ3_15: | ||
| 2117 | case ARIZONA_EQ3_16: | ||
| 2118 | case ARIZONA_EQ3_17: | ||
| 2119 | case ARIZONA_EQ3_18: | ||
| 2120 | case ARIZONA_EQ3_19: | ||
| 2121 | case ARIZONA_EQ3_20: | ||
| 2122 | case ARIZONA_EQ3_21: | ||
| 2123 | case ARIZONA_EQ4_1: | ||
| 2124 | case ARIZONA_EQ4_2: | ||
| 2125 | case ARIZONA_EQ4_3: | ||
| 2126 | case ARIZONA_EQ4_4: | ||
| 2127 | case ARIZONA_EQ4_5: | ||
| 2128 | case ARIZONA_EQ4_6: | ||
| 2129 | case ARIZONA_EQ4_7: | ||
| 2130 | case ARIZONA_EQ4_8: | ||
| 2131 | case ARIZONA_EQ4_9: | ||
| 2132 | case ARIZONA_EQ4_10: | ||
| 2133 | case ARIZONA_EQ4_11: | ||
| 2134 | case ARIZONA_EQ4_12: | ||
| 2135 | case ARIZONA_EQ4_13: | ||
| 2136 | case ARIZONA_EQ4_14: | ||
| 2137 | case ARIZONA_EQ4_15: | ||
| 2138 | case ARIZONA_EQ4_16: | ||
| 2139 | case ARIZONA_EQ4_17: | ||
| 2140 | case ARIZONA_EQ4_18: | ||
| 2141 | case ARIZONA_EQ4_19: | ||
| 2142 | case ARIZONA_EQ4_20: | ||
| 2143 | case ARIZONA_EQ4_21: | ||
| 2144 | case ARIZONA_DRC1_CTRL1: | ||
| 2145 | case ARIZONA_DRC1_CTRL2: | ||
| 2146 | case ARIZONA_DRC1_CTRL3: | ||
| 2147 | case ARIZONA_DRC1_CTRL4: | ||
| 2148 | case ARIZONA_DRC1_CTRL5: | ||
| 2149 | case ARIZONA_DRC2_CTRL1: | ||
| 2150 | case ARIZONA_DRC2_CTRL2: | ||
| 2151 | case ARIZONA_DRC2_CTRL3: | ||
| 2152 | case ARIZONA_DRC2_CTRL4: | ||
| 2153 | case ARIZONA_DRC2_CTRL5: | ||
| 2154 | case ARIZONA_HPLPF1_1: | ||
| 2155 | case ARIZONA_HPLPF1_2: | ||
| 2156 | case ARIZONA_HPLPF2_1: | ||
| 2157 | case ARIZONA_HPLPF2_2: | ||
| 2158 | case ARIZONA_HPLPF3_1: | ||
| 2159 | case ARIZONA_HPLPF3_2: | ||
| 2160 | case ARIZONA_HPLPF4_1: | ||
| 2161 | case ARIZONA_HPLPF4_2: | ||
| 2162 | case ARIZONA_ASRC_ENABLE: | ||
| 2163 | case ARIZONA_ASRC_STATUS: | ||
| 2164 | case ARIZONA_ASRC_RATE1: | ||
| 2165 | case ARIZONA_ISRC_1_CTRL_1: | ||
| 2166 | case ARIZONA_ISRC_1_CTRL_2: | ||
| 2167 | case ARIZONA_ISRC_1_CTRL_3: | ||
| 2168 | case ARIZONA_ISRC_2_CTRL_1: | ||
| 2169 | case ARIZONA_ISRC_2_CTRL_2: | ||
| 2170 | case ARIZONA_ISRC_2_CTRL_3: | ||
| 2171 | case ARIZONA_ISRC_3_CTRL_1: | ||
| 2172 | case ARIZONA_ISRC_3_CTRL_2: | ||
| 2173 | case ARIZONA_ISRC_3_CTRL_3: | ||
| 2174 | case ARIZONA_CLOCK_CONTROL: | ||
| 2175 | case ARIZONA_ANC_SRC: | ||
| 2176 | case ARIZONA_DSP_STATUS: | ||
| 2177 | case ARIZONA_DSP1_CONTROL_1: | ||
| 2178 | case ARIZONA_DSP1_CLOCKING_1: | ||
| 2179 | case ARIZONA_DSP1_STATUS_1: | ||
| 2180 | case ARIZONA_DSP1_STATUS_2: | ||
| 2181 | case ARIZONA_DSP2_CONTROL_1: | ||
| 2182 | case ARIZONA_DSP2_CLOCKING_1: | ||
| 2183 | case ARIZONA_DSP2_STATUS_1: | ||
| 2184 | case ARIZONA_DSP2_STATUS_2: | ||
| 2185 | case ARIZONA_DSP3_CONTROL_1: | ||
| 2186 | case ARIZONA_DSP3_CLOCKING_1: | ||
| 2187 | case ARIZONA_DSP3_STATUS_1: | ||
| 2188 | case ARIZONA_DSP3_STATUS_2: | ||
| 2189 | case ARIZONA_DSP4_CONTROL_1: | ||
| 2190 | case ARIZONA_DSP4_CLOCKING_1: | ||
| 2191 | case ARIZONA_DSP4_STATUS_1: | ||
| 2192 | case ARIZONA_DSP4_STATUS_2: | ||
| 2193 | return true; | ||
| 2194 | default: | ||
| 2195 | return false; | ||
| 2196 | } | ||
| 2197 | } | ||
| 2198 | |||
| 2199 | static bool wm5110_volatile_register(struct device *dev, unsigned int reg) | ||
| 2200 | { | ||
| 2201 | switch (reg) { | ||
| 2202 | case ARIZONA_SOFTWARE_RESET: | ||
| 2203 | case ARIZONA_DEVICE_REVISION: | ||
| 2204 | case ARIZONA_HAPTICS_STATUS: | ||
| 2205 | case ARIZONA_SAMPLE_RATE_1_STATUS: | ||
| 2206 | case ARIZONA_SAMPLE_RATE_2_STATUS: | ||
| 2207 | case ARIZONA_SAMPLE_RATE_3_STATUS: | ||
| 2208 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | ||
| 2209 | case ARIZONA_MIC_DETECT_3: | ||
| 2210 | case ARIZONA_HEADPHONE_DETECT_2: | ||
| 2211 | case ARIZONA_INPUT_ENABLES_STATUS: | ||
| 2212 | case ARIZONA_OUTPUT_STATUS_1: | ||
| 2213 | case ARIZONA_RAW_OUTPUT_STATUS_1: | ||
| 2214 | case ARIZONA_SLIMBUS_RX_PORT_STATUS: | ||
| 2215 | case ARIZONA_SLIMBUS_TX_PORT_STATUS: | ||
| 2216 | case ARIZONA_INTERRUPT_STATUS_1: | ||
| 2217 | case ARIZONA_INTERRUPT_STATUS_2: | ||
| 2218 | case ARIZONA_INTERRUPT_STATUS_3: | ||
| 2219 | case ARIZONA_INTERRUPT_STATUS_4: | ||
| 2220 | case ARIZONA_INTERRUPT_STATUS_5: | ||
| 2221 | case ARIZONA_IRQ2_STATUS_1: | ||
| 2222 | case ARIZONA_IRQ2_STATUS_2: | ||
| 2223 | case ARIZONA_IRQ2_STATUS_3: | ||
| 2224 | case ARIZONA_IRQ2_STATUS_4: | ||
| 2225 | case ARIZONA_IRQ2_STATUS_5: | ||
| 2226 | case ARIZONA_INTERRUPT_RAW_STATUS_2: | ||
| 2227 | case ARIZONA_INTERRUPT_RAW_STATUS_3: | ||
| 2228 | case ARIZONA_INTERRUPT_RAW_STATUS_4: | ||
| 2229 | case ARIZONA_INTERRUPT_RAW_STATUS_5: | ||
| 2230 | case ARIZONA_INTERRUPT_RAW_STATUS_6: | ||
| 2231 | case ARIZONA_INTERRUPT_RAW_STATUS_7: | ||
| 2232 | case ARIZONA_INTERRUPT_RAW_STATUS_8: | ||
| 2233 | case ARIZONA_IRQ_PIN_STATUS: | ||
| 2234 | case ARIZONA_AOD_IRQ1: | ||
| 2235 | case ARIZONA_AOD_IRQ2: | ||
| 2236 | case ARIZONA_ASRC_STATUS: | ||
| 2237 | case ARIZONA_DSP_STATUS: | ||
| 2238 | case ARIZONA_DSP1_CONTROL_1: | ||
| 2239 | case ARIZONA_DSP1_CLOCKING_1: | ||
| 2240 | case ARIZONA_DSP1_STATUS_1: | ||
| 2241 | case ARIZONA_DSP1_STATUS_2: | ||
| 2242 | case ARIZONA_DSP2_STATUS_1: | ||
| 2243 | case ARIZONA_DSP2_STATUS_2: | ||
| 2244 | case ARIZONA_DSP3_STATUS_1: | ||
| 2245 | case ARIZONA_DSP3_STATUS_2: | ||
| 2246 | case ARIZONA_DSP4_STATUS_1: | ||
| 2247 | case ARIZONA_DSP4_STATUS_2: | ||
| 2248 | return true; | ||
| 2249 | default: | ||
| 2250 | return false; | ||
| 2251 | } | ||
| 2252 | } | ||
| 2253 | |||
| 2254 | const struct regmap_config wm5110_spi_regmap = { | ||
| 2255 | .reg_bits = 32, | ||
| 2256 | .pad_bits = 16, | ||
| 2257 | .val_bits = 16, | ||
| 2258 | |||
| 2259 | .max_register = ARIZONA_DSP1_STATUS_2, | ||
| 2260 | .readable_reg = wm5110_readable_register, | ||
| 2261 | .volatile_reg = wm5110_volatile_register, | ||
| 2262 | |||
| 2263 | .cache_type = REGCACHE_RBTREE, | ||
| 2264 | .reg_defaults = wm5110_reg_default, | ||
| 2265 | .num_reg_defaults = ARRAY_SIZE(wm5110_reg_default), | ||
| 2266 | }; | ||
| 2267 | EXPORT_SYMBOL_GPL(wm5110_spi_regmap); | ||
| 2268 | |||
| 2269 | const struct regmap_config wm5110_i2c_regmap = { | ||
| 2270 | .reg_bits = 32, | ||
| 2271 | .val_bits = 16, | ||
| 2272 | |||
| 2273 | .max_register = ARIZONA_DSP1_STATUS_2, | ||
| 2274 | .readable_reg = wm5110_readable_register, | ||
| 2275 | .volatile_reg = wm5110_volatile_register, | ||
| 2276 | |||
| 2277 | .cache_type = REGCACHE_RBTREE, | ||
| 2278 | .reg_defaults = wm5110_reg_default, | ||
| 2279 | .num_reg_defaults = ARRAY_SIZE(wm5110_reg_default), | ||
| 2280 | }; | ||
| 2281 | EXPORT_SYMBOL_GPL(wm5110_i2c_regmap); | ||
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index 8a9b11ca076a..7c1ae24605d9 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c | |||
| @@ -32,9 +32,6 @@ | |||
| 32 | #include <linux/mfd/wm8350/supply.h> | 32 | #include <linux/mfd/wm8350/supply.h> |
| 33 | #include <linux/mfd/wm8350/wdt.h> | 33 | #include <linux/mfd/wm8350/wdt.h> |
| 34 | 34 | ||
| 35 | #define WM8350_UNLOCK_KEY 0x0013 | ||
| 36 | #define WM8350_LOCK_KEY 0x0000 | ||
| 37 | |||
| 38 | #define WM8350_CLOCK_CONTROL_1 0x28 | 35 | #define WM8350_CLOCK_CONTROL_1 0x28 |
| 39 | #define WM8350_AIF_TEST 0x74 | 36 | #define WM8350_AIF_TEST 0x74 |
| 40 | 37 | ||
| @@ -63,181 +60,32 @@ | |||
| 63 | /* | 60 | /* |
| 64 | * WM8350 Device IO | 61 | * WM8350 Device IO |
| 65 | */ | 62 | */ |
| 66 | static DEFINE_MUTEX(io_mutex); | ||
| 67 | static DEFINE_MUTEX(reg_lock_mutex); | 63 | static DEFINE_MUTEX(reg_lock_mutex); |
| 68 | 64 | ||
| 69 | /* Perform a physical read from the device. | ||
| 70 | */ | ||
| 71 | static int wm8350_phys_read(struct wm8350 *wm8350, u8 reg, int num_regs, | ||
| 72 | u16 *dest) | ||
| 73 | { | ||
| 74 | int i, ret; | ||
| 75 | int bytes = num_regs * 2; | ||
| 76 | |||
| 77 | dev_dbg(wm8350->dev, "volatile read\n"); | ||
| 78 | ret = regmap_raw_read(wm8350->regmap, reg, dest, bytes); | ||
| 79 | |||
| 80 | for (i = reg; i < reg + num_regs; i++) { | ||
| 81 | /* Cache is CPU endian */ | ||
| 82 | dest[i - reg] = be16_to_cpu(dest[i - reg]); | ||
| 83 | |||
| 84 | /* Mask out non-readable bits */ | ||
| 85 | dest[i - reg] &= wm8350_reg_io_map[i].readable; | ||
| 86 | } | ||
| 87 | |||
| 88 | dump(num_regs, dest); | ||
| 89 | |||
| 90 | return ret; | ||
| 91 | } | ||
| 92 | |||
| 93 | static int wm8350_read(struct wm8350 *wm8350, u8 reg, int num_regs, u16 *dest) | ||
| 94 | { | ||
| 95 | int i; | ||
| 96 | int end = reg + num_regs; | ||
| 97 | int ret = 0; | ||
| 98 | int bytes = num_regs * 2; | ||
| 99 | |||
| 100 | if ((reg + num_regs - 1) > WM8350_MAX_REGISTER) { | ||
| 101 | dev_err(wm8350->dev, "invalid reg %x\n", | ||
| 102 | reg + num_regs - 1); | ||
| 103 | return -EINVAL; | ||
| 104 | } | ||
| 105 | |||
| 106 | dev_dbg(wm8350->dev, | ||
| 107 | "%s R%d(0x%2.2x) %d regs\n", __func__, reg, reg, num_regs); | ||
| 108 | |||
| 109 | #if WM8350_BUS_DEBUG | ||
| 110 | /* we can _safely_ read any register, but warn if read not supported */ | ||
| 111 | for (i = reg; i < end; i++) { | ||
| 112 | if (!wm8350_reg_io_map[i].readable) | ||
| 113 | dev_warn(wm8350->dev, | ||
| 114 | "reg R%d is not readable\n", i); | ||
| 115 | } | ||
| 116 | #endif | ||
| 117 | |||
| 118 | /* if any volatile registers are required, then read back all */ | ||
| 119 | for (i = reg; i < end; i++) | ||
| 120 | if (wm8350_reg_io_map[i].vol) | ||
| 121 | return wm8350_phys_read(wm8350, reg, num_regs, dest); | ||
| 122 | |||
| 123 | /* no volatiles, then cache is good */ | ||
| 124 | dev_dbg(wm8350->dev, "cache read\n"); | ||
| 125 | memcpy(dest, &wm8350->reg_cache[reg], bytes); | ||
| 126 | dump(num_regs, dest); | ||
| 127 | return ret; | ||
| 128 | } | ||
| 129 | |||
| 130 | static inline int is_reg_locked(struct wm8350 *wm8350, u8 reg) | ||
| 131 | { | ||
| 132 | if (reg == WM8350_SECURITY || | ||
| 133 | wm8350->reg_cache[WM8350_SECURITY] == WM8350_UNLOCK_KEY) | ||
| 134 | return 0; | ||
| 135 | |||
| 136 | if ((reg >= WM8350_GPIO_FUNCTION_SELECT_1 && | ||
| 137 | reg <= WM8350_GPIO_FUNCTION_SELECT_4) || | ||
| 138 | (reg >= WM8350_BATTERY_CHARGER_CONTROL_1 && | ||
| 139 | reg <= WM8350_BATTERY_CHARGER_CONTROL_3)) | ||
| 140 | return 1; | ||
| 141 | return 0; | ||
| 142 | } | ||
| 143 | |||
| 144 | static int wm8350_write(struct wm8350 *wm8350, u8 reg, int num_regs, u16 *src) | ||
| 145 | { | ||
| 146 | int i; | ||
| 147 | int end = reg + num_regs; | ||
| 148 | int bytes = num_regs * 2; | ||
| 149 | |||
| 150 | if ((reg + num_regs - 1) > WM8350_MAX_REGISTER) { | ||
| 151 | dev_err(wm8350->dev, "invalid reg %x\n", | ||
| 152 | reg + num_regs - 1); | ||
| 153 | return -EINVAL; | ||
| 154 | } | ||
| 155 | |||
| 156 | /* it's generally not a good idea to write to RO or locked registers */ | ||
| 157 | for (i = reg; i < end; i++) { | ||
| 158 | if (!wm8350_reg_io_map[i].writable) { | ||
| 159 | dev_err(wm8350->dev, | ||
| 160 | "attempted write to read only reg R%d\n", i); | ||
| 161 | return -EINVAL; | ||
| 162 | } | ||
| 163 | |||
| 164 | if (is_reg_locked(wm8350, i)) { | ||
| 165 | dev_err(wm8350->dev, | ||
| 166 | "attempted write to locked reg R%d\n", i); | ||
| 167 | return -EINVAL; | ||
| 168 | } | ||
| 169 | |||
| 170 | src[i - reg] &= wm8350_reg_io_map[i].writable; | ||
| 171 | |||
| 172 | wm8350->reg_cache[i] = | ||
| 173 | (wm8350->reg_cache[i] & ~wm8350_reg_io_map[i].writable) | ||
| 174 | | src[i - reg]; | ||
| 175 | |||
| 176 | src[i - reg] = cpu_to_be16(src[i - reg]); | ||
| 177 | } | ||
| 178 | |||
| 179 | /* Actually write it out */ | ||
| 180 | return regmap_raw_write(wm8350->regmap, reg, src, bytes); | ||
| 181 | } | ||
| 182 | |||
| 183 | /* | 65 | /* |
| 184 | * Safe read, modify, write methods | 66 | * Safe read, modify, write methods |
| 185 | */ | 67 | */ |
| 186 | int wm8350_clear_bits(struct wm8350 *wm8350, u16 reg, u16 mask) | 68 | int wm8350_clear_bits(struct wm8350 *wm8350, u16 reg, u16 mask) |
| 187 | { | 69 | { |
| 188 | u16 data; | 70 | return regmap_update_bits(wm8350->regmap, reg, mask, 0); |
| 189 | int err; | ||
| 190 | |||
| 191 | mutex_lock(&io_mutex); | ||
| 192 | err = wm8350_read(wm8350, reg, 1, &data); | ||
| 193 | if (err) { | ||
| 194 | dev_err(wm8350->dev, "read from reg R%d failed\n", reg); | ||
| 195 | goto out; | ||
| 196 | } | ||
| 197 | |||
| 198 | data &= ~mask; | ||
| 199 | err = wm8350_write(wm8350, reg, 1, &data); | ||
| 200 | if (err) | ||
| 201 | dev_err(wm8350->dev, "write to reg R%d failed\n", reg); | ||
| 202 | out: | ||
| 203 | mutex_unlock(&io_mutex); | ||
| 204 | return err; | ||
| 205 | } | 71 | } |
| 206 | EXPORT_SYMBOL_GPL(wm8350_clear_bits); | 72 | EXPORT_SYMBOL_GPL(wm8350_clear_bits); |
| 207 | 73 | ||
| 208 | int wm8350_set_bits(struct wm8350 *wm8350, u16 reg, u16 mask) | 74 | int wm8350_set_bits(struct wm8350 *wm8350, u16 reg, u16 mask) |
| 209 | { | 75 | { |
| 210 | u16 data; | 76 | return regmap_update_bits(wm8350->regmap, reg, mask, mask); |
| 211 | int err; | ||
| 212 | |||
| 213 | mutex_lock(&io_mutex); | ||
| 214 | err = wm8350_read(wm8350, reg, 1, &data); | ||
| 215 | if (err) { | ||
| 216 | dev_err(wm8350->dev, "read from reg R%d failed\n", reg); | ||
| 217 | goto out; | ||
| 218 | } | ||
| 219 | |||
| 220 | data |= mask; | ||
| 221 | err = wm8350_write(wm8350, reg, 1, &data); | ||
| 222 | if (err) | ||
| 223 | dev_err(wm8350->dev, "write to reg R%d failed\n", reg); | ||
| 224 | out: | ||
| 225 | mutex_unlock(&io_mutex); | ||
| 226 | return err; | ||
| 227 | } | 77 | } |
| 228 | EXPORT_SYMBOL_GPL(wm8350_set_bits); | 78 | EXPORT_SYMBOL_GPL(wm8350_set_bits); |
| 229 | 79 | ||
| 230 | u16 wm8350_reg_read(struct wm8350 *wm8350, int reg) | 80 | u16 wm8350_reg_read(struct wm8350 *wm8350, int reg) |
| 231 | { | 81 | { |
| 232 | u16 data; | 82 | unsigned int data; |
| 233 | int err; | 83 | int err; |
| 234 | 84 | ||
| 235 | mutex_lock(&io_mutex); | 85 | err = regmap_read(wm8350->regmap, reg, &data); |
| 236 | err = wm8350_read(wm8350, reg, 1, &data); | ||
| 237 | if (err) | 86 | if (err) |
| 238 | dev_err(wm8350->dev, "read from reg R%d failed\n", reg); | 87 | dev_err(wm8350->dev, "read from reg R%d failed\n", reg); |
| 239 | 88 | ||
| 240 | mutex_unlock(&io_mutex); | ||
| 241 | return data; | 89 | return data; |
| 242 | } | 90 | } |
| 243 | EXPORT_SYMBOL_GPL(wm8350_reg_read); | 91 | EXPORT_SYMBOL_GPL(wm8350_reg_read); |
| @@ -245,13 +93,11 @@ EXPORT_SYMBOL_GPL(wm8350_reg_read); | |||
| 245 | int wm8350_reg_write(struct wm8350 *wm8350, int reg, u16 val) | 93 | int wm8350_reg_write(struct wm8350 *wm8350, int reg, u16 val) |
| 246 | { | 94 | { |
| 247 | int ret; | 95 | int ret; |
| 248 | u16 data = val; | ||
| 249 | 96 | ||
| 250 | mutex_lock(&io_mutex); | 97 | ret = regmap_write(wm8350->regmap, reg, val); |
| 251 | ret = wm8350_write(wm8350, reg, 1, &data); | 98 | |
| 252 | if (ret) | 99 | if (ret) |
| 253 | dev_err(wm8350->dev, "write to reg R%d failed\n", reg); | 100 | dev_err(wm8350->dev, "write to reg R%d failed\n", reg); |
| 254 | mutex_unlock(&io_mutex); | ||
| 255 | return ret; | 101 | return ret; |
| 256 | } | 102 | } |
| 257 | EXPORT_SYMBOL_GPL(wm8350_reg_write); | 103 | EXPORT_SYMBOL_GPL(wm8350_reg_write); |
| @@ -261,12 +107,11 @@ int wm8350_block_read(struct wm8350 *wm8350, int start_reg, int regs, | |||
| 261 | { | 107 | { |
| 262 | int err = 0; | 108 | int err = 0; |
| 263 | 109 | ||
| 264 | mutex_lock(&io_mutex); | 110 | err = regmap_bulk_read(wm8350->regmap, start_reg, dest, regs); |
| 265 | err = wm8350_read(wm8350, start_reg, regs, dest); | ||
| 266 | if (err) | 111 | if (err) |
| 267 | dev_err(wm8350->dev, "block read starting from R%d failed\n", | 112 | dev_err(wm8350->dev, "block read starting from R%d failed\n", |
| 268 | start_reg); | 113 | start_reg); |
| 269 | mutex_unlock(&io_mutex); | 114 | |
| 270 | return err; | 115 | return err; |
| 271 | } | 116 | } |
| 272 | EXPORT_SYMBOL_GPL(wm8350_block_read); | 117 | EXPORT_SYMBOL_GPL(wm8350_block_read); |
| @@ -276,12 +121,11 @@ int wm8350_block_write(struct wm8350 *wm8350, int start_reg, int regs, | |||
| 276 | { | 121 | { |
| 277 | int ret = 0; | 122 | int ret = 0; |
| 278 | 123 | ||
| 279 | mutex_lock(&io_mutex); | 124 | ret = regmap_bulk_write(wm8350->regmap, start_reg, src, regs); |
| 280 | ret = wm8350_write(wm8350, start_reg, regs, src); | ||
| 281 | if (ret) | 125 | if (ret) |
| 282 | dev_err(wm8350->dev, "block write starting at R%d failed\n", | 126 | dev_err(wm8350->dev, "block write starting at R%d failed\n", |
| 283 | start_reg); | 127 | start_reg); |
| 284 | mutex_unlock(&io_mutex); | 128 | |
| 285 | return ret; | 129 | return ret; |
| 286 | } | 130 | } |
| 287 | EXPORT_SYMBOL_GPL(wm8350_block_write); | 131 | EXPORT_SYMBOL_GPL(wm8350_block_write); |
| @@ -295,15 +139,20 @@ EXPORT_SYMBOL_GPL(wm8350_block_write); | |||
| 295 | */ | 139 | */ |
| 296 | int wm8350_reg_lock(struct wm8350 *wm8350) | 140 | int wm8350_reg_lock(struct wm8350 *wm8350) |
| 297 | { | 141 | { |
| 298 | u16 key = WM8350_LOCK_KEY; | ||
| 299 | int ret; | 142 | int ret; |
| 300 | 143 | ||
| 144 | mutex_lock(®_lock_mutex); | ||
| 145 | |||
| 301 | ldbg(__func__); | 146 | ldbg(__func__); |
| 302 | mutex_lock(&io_mutex); | 147 | |
| 303 | ret = wm8350_write(wm8350, WM8350_SECURITY, 1, &key); | 148 | ret = wm8350_reg_write(wm8350, WM8350_SECURITY, WM8350_LOCK_KEY); |
| 304 | if (ret) | 149 | if (ret) |
| 305 | dev_err(wm8350->dev, "lock failed\n"); | 150 | dev_err(wm8350->dev, "lock failed\n"); |
| 306 | mutex_unlock(&io_mutex); | 151 | |
| 152 | wm8350->unlocked = false; | ||
| 153 | |||
| 154 | mutex_unlock(®_lock_mutex); | ||
| 155 | |||
| 307 | return ret; | 156 | return ret; |
| 308 | } | 157 | } |
| 309 | EXPORT_SYMBOL_GPL(wm8350_reg_lock); | 158 | EXPORT_SYMBOL_GPL(wm8350_reg_lock); |
| @@ -319,15 +168,20 @@ EXPORT_SYMBOL_GPL(wm8350_reg_lock); | |||
| 319 | */ | 168 | */ |
| 320 | int wm8350_reg_unlock(struct wm8350 *wm8350) | 169 | int wm8350_reg_unlock(struct wm8350 *wm8350) |
| 321 | { | 170 | { |
| 322 | u16 key = WM8350_UNLOCK_KEY; | ||
| 323 | int ret; | 171 | int ret; |
| 324 | 172 | ||
| 173 | mutex_lock(®_lock_mutex); | ||
| 174 | |||
| 325 | ldbg(__func__); | 175 | ldbg(__func__); |
| 326 | mutex_lock(&io_mutex); | 176 | |
| 327 | ret = wm8350_write(wm8350, WM8350_SECURITY, 1, &key); | 177 | ret = wm8350_reg_write(wm8350, WM8350_SECURITY, WM8350_UNLOCK_KEY); |
| 328 | if (ret) | 178 | if (ret) |
| 329 | dev_err(wm8350->dev, "unlock failed\n"); | 179 | dev_err(wm8350->dev, "unlock failed\n"); |
| 330 | mutex_unlock(&io_mutex); | 180 | |
| 181 | wm8350->unlocked = true; | ||
| 182 | |||
| 183 | mutex_unlock(®_lock_mutex); | ||
| 184 | |||
| 331 | return ret; | 185 | return ret; |
| 332 | } | 186 | } |
| 333 | EXPORT_SYMBOL_GPL(wm8350_reg_unlock); | 187 | EXPORT_SYMBOL_GPL(wm8350_reg_unlock); |
| @@ -395,146 +249,6 @@ static irqreturn_t wm8350_auxadc_irq(int irq, void *irq_data) | |||
| 395 | } | 249 | } |
| 396 | 250 | ||
| 397 | /* | 251 | /* |
| 398 | * Cache is always host endian. | ||
| 399 | */ | ||
| 400 | static int wm8350_create_cache(struct wm8350 *wm8350, int type, int mode) | ||
| 401 | { | ||
| 402 | int i, ret = 0; | ||
| 403 | u16 value; | ||
| 404 | const u16 *reg_map; | ||
| 405 | |||
| 406 | switch (type) { | ||
| 407 | case 0: | ||
| 408 | switch (mode) { | ||
| 409 | #ifdef CONFIG_MFD_WM8350_CONFIG_MODE_0 | ||
| 410 | case 0: | ||
| 411 | reg_map = wm8350_mode0_defaults; | ||
| 412 | break; | ||
| 413 | #endif | ||
| 414 | #ifdef CONFIG_MFD_WM8350_CONFIG_MODE_1 | ||
| 415 | case 1: | ||
| 416 | reg_map = wm8350_mode1_defaults; | ||
| 417 | break; | ||
| 418 | #endif | ||
| 419 | #ifdef CONFIG_MFD_WM8350_CONFIG_MODE_2 | ||
| 420 | case 2: | ||
| 421 | reg_map = wm8350_mode2_defaults; | ||
| 422 | break; | ||
| 423 | #endif | ||
| 424 | #ifdef CONFIG_MFD_WM8350_CONFIG_MODE_3 | ||
| 425 | case 3: | ||
| 426 | reg_map = wm8350_mode3_defaults; | ||
| 427 | break; | ||
| 428 | #endif | ||
| 429 | default: | ||
| 430 | dev_err(wm8350->dev, | ||
| 431 | "WM8350 configuration mode %d not supported\n", | ||
| 432 | mode); | ||
| 433 | return -EINVAL; | ||
| 434 | } | ||
| 435 | break; | ||
| 436 | |||
| 437 | case 1: | ||
| 438 | switch (mode) { | ||
| 439 | #ifdef CONFIG_MFD_WM8351_CONFIG_MODE_0 | ||
| 440 | case 0: | ||
| 441 | reg_map = wm8351_mode0_defaults; | ||
| 442 | break; | ||
| 443 | #endif | ||
| 444 | #ifdef CONFIG_MFD_WM8351_CONFIG_MODE_1 | ||
| 445 | case 1: | ||
| 446 | reg_map = wm8351_mode1_defaults; | ||
| 447 | break; | ||
| 448 | #endif | ||
| 449 | #ifdef CONFIG_MFD_WM8351_CONFIG_MODE_2 | ||
| 450 | case 2: | ||
| 451 | reg_map = wm8351_mode2_defaults; | ||
| 452 | break; | ||
| 453 | #endif | ||
| 454 | #ifdef CONFIG_MFD_WM8351_CONFIG_MODE_3 | ||
| 455 | case 3: | ||
| 456 | reg_map = wm8351_mode3_defaults; | ||
| 457 | break; | ||
| 458 | #endif | ||
| 459 | default: | ||
| 460 | dev_err(wm8350->dev, | ||
| 461 | "WM8351 configuration mode %d not supported\n", | ||
| 462 | mode); | ||
| 463 | return -EINVAL; | ||
| 464 | } | ||
| 465 | break; | ||
| 466 | |||
| 467 | case 2: | ||
| 468 | switch (mode) { | ||
| 469 | #ifdef CONFIG_MFD_WM8352_CONFIG_MODE_0 | ||
| 470 | case 0: | ||
| 471 | reg_map = wm8352_mode0_defaults; | ||
| 472 | break; | ||
| 473 | #endif | ||
| 474 | #ifdef CONFIG_MFD_WM8352_CONFIG_MODE_1 | ||
| 475 | case 1: | ||
| 476 | reg_map = wm8352_mode1_defaults; | ||
| 477 | break; | ||
| 478 | #endif | ||
| 479 | #ifdef CONFIG_MFD_WM8352_CONFIG_MODE_2 | ||
| 480 | case 2: | ||
| 481 | reg_map = wm8352_mode2_defaults; | ||
| 482 | break; | ||
| 483 | #endif | ||
| 484 | #ifdef CONFIG_MFD_WM8352_CONFIG_MODE_3 | ||
| 485 | case 3: | ||
| 486 | reg_map = wm8352_mode3_defaults; | ||
| 487 | break; | ||
| 488 | #endif | ||
| 489 | default: | ||
| 490 | dev_err(wm8350->dev, | ||
| 491 | "WM8352 configuration mode %d not supported\n", | ||
| 492 | mode); | ||
| 493 | return -EINVAL; | ||
| 494 | } | ||
| 495 | break; | ||
| 496 | |||
| 497 | default: | ||
| 498 | dev_err(wm8350->dev, | ||
| 499 | "WM835x configuration mode %d not supported\n", | ||
| 500 | mode); | ||
| 501 | return -EINVAL; | ||
| 502 | } | ||
| 503 | |||
| 504 | wm8350->reg_cache = | ||
| 505 | kmalloc(sizeof(u16) * (WM8350_MAX_REGISTER + 1), GFP_KERNEL); | ||
| 506 | if (wm8350->reg_cache == NULL) | ||
| 507 | return -ENOMEM; | ||
| 508 | |||
| 509 | /* Read the initial cache state back from the device - this is | ||
| 510 | * a PMIC so the device many not be in a virgin state and we | ||
| 511 | * can't rely on the silicon values. | ||
| 512 | */ | ||
| 513 | ret = regmap_raw_read(wm8350->regmap, 0, wm8350->reg_cache, | ||
| 514 | sizeof(u16) * (WM8350_MAX_REGISTER + 1)); | ||
| 515 | if (ret < 0) { | ||
| 516 | dev_err(wm8350->dev, | ||
| 517 | "failed to read initial cache values\n"); | ||
| 518 | goto out; | ||
| 519 | } | ||
| 520 | |||
| 521 | /* Mask out uncacheable/unreadable bits and the audio. */ | ||
| 522 | for (i = 0; i < WM8350_MAX_REGISTER; i++) { | ||
| 523 | if (wm8350_reg_io_map[i].readable && | ||
| 524 | (i < WM8350_CLOCK_CONTROL_1 || i > WM8350_AIF_TEST)) { | ||
| 525 | value = be16_to_cpu(wm8350->reg_cache[i]); | ||
| 526 | value &= wm8350_reg_io_map[i].readable; | ||
| 527 | wm8350->reg_cache[i] = value; | ||
| 528 | } else | ||
| 529 | wm8350->reg_cache[i] = reg_map[i]; | ||
| 530 | } | ||
| 531 | |||
| 532 | out: | ||
| 533 | kfree(wm8350->reg_cache); | ||
| 534 | return ret; | ||
| 535 | } | ||
| 536 | |||
| 537 | /* | ||
| 538 | * Register a client device. This is non-fatal since there is no need to | 252 | * Register a client device. This is non-fatal since there is no need to |
| 539 | * fail the entire device init due to a single platform device failing. | 253 | * fail the entire device init due to a single platform device failing. |
| 540 | */ | 254 | */ |
| @@ -681,18 +395,12 @@ int wm8350_device_init(struct wm8350 *wm8350, int irq, | |||
| 681 | goto err; | 395 | goto err; |
| 682 | } | 396 | } |
| 683 | 397 | ||
| 684 | ret = wm8350_create_cache(wm8350, mask_rev, mode); | ||
| 685 | if (ret < 0) { | ||
| 686 | dev_err(wm8350->dev, "Failed to create register cache\n"); | ||
| 687 | return ret; | ||
| 688 | } | ||
| 689 | |||
| 690 | mutex_init(&wm8350->auxadc_mutex); | 398 | mutex_init(&wm8350->auxadc_mutex); |
| 691 | init_completion(&wm8350->auxadc_done); | 399 | init_completion(&wm8350->auxadc_done); |
| 692 | 400 | ||
| 693 | ret = wm8350_irq_init(wm8350, irq, pdata); | 401 | ret = wm8350_irq_init(wm8350, irq, pdata); |
| 694 | if (ret < 0) | 402 | if (ret < 0) |
| 695 | goto err_free; | 403 | goto err; |
| 696 | 404 | ||
| 697 | if (wm8350->irq_base) { | 405 | if (wm8350->irq_base) { |
| 698 | ret = request_threaded_irq(wm8350->irq_base + | 406 | ret = request_threaded_irq(wm8350->irq_base + |
| @@ -730,8 +438,6 @@ int wm8350_device_init(struct wm8350 *wm8350, int irq, | |||
| 730 | 438 | ||
| 731 | err_irq: | 439 | err_irq: |
| 732 | wm8350_irq_exit(wm8350); | 440 | wm8350_irq_exit(wm8350); |
| 733 | err_free: | ||
| 734 | kfree(wm8350->reg_cache); | ||
| 735 | err: | 441 | err: |
| 736 | return ret; | 442 | return ret; |
| 737 | } | 443 | } |
| @@ -758,8 +464,6 @@ void wm8350_device_exit(struct wm8350 *wm8350) | |||
| 758 | free_irq(wm8350->irq_base + WM8350_IRQ_AUXADC_DATARDY, wm8350); | 464 | free_irq(wm8350->irq_base + WM8350_IRQ_AUXADC_DATARDY, wm8350); |
| 759 | 465 | ||
| 760 | wm8350_irq_exit(wm8350); | 466 | wm8350_irq_exit(wm8350); |
| 761 | |||
| 762 | kfree(wm8350->reg_cache); | ||
| 763 | } | 467 | } |
| 764 | EXPORT_SYMBOL_GPL(wm8350_device_exit); | 468 | EXPORT_SYMBOL_GPL(wm8350_device_exit); |
| 765 | 469 | ||
diff --git a/drivers/mfd/wm8350-i2c.c b/drivers/mfd/wm8350-i2c.c index a68aceb4e48c..2e57101c8d3d 100644 --- a/drivers/mfd/wm8350-i2c.c +++ b/drivers/mfd/wm8350-i2c.c | |||
| @@ -23,11 +23,6 @@ | |||
| 23 | #include <linux/regmap.h> | 23 | #include <linux/regmap.h> |
| 24 | #include <linux/slab.h> | 24 | #include <linux/slab.h> |
| 25 | 25 | ||
| 26 | static const struct regmap_config wm8350_regmap = { | ||
| 27 | .reg_bits = 8, | ||
| 28 | .val_bits = 16, | ||
| 29 | }; | ||
| 30 | |||
| 31 | static int wm8350_i2c_probe(struct i2c_client *i2c, | 26 | static int wm8350_i2c_probe(struct i2c_client *i2c, |
| 32 | const struct i2c_device_id *id) | 27 | const struct i2c_device_id *id) |
| 33 | { | 28 | { |
diff --git a/drivers/mfd/wm8350-irq.c b/drivers/mfd/wm8350-irq.c index 9fd01bf63c51..624ff90501cd 100644 --- a/drivers/mfd/wm8350-irq.c +++ b/drivers/mfd/wm8350-irq.c | |||
| @@ -432,11 +432,9 @@ static void wm8350_irq_sync_unlock(struct irq_data *data) | |||
| 432 | for (i = 0; i < ARRAY_SIZE(wm8350->irq_masks); i++) { | 432 | for (i = 0; i < ARRAY_SIZE(wm8350->irq_masks); i++) { |
| 433 | /* If there's been a change in the mask write it back | 433 | /* If there's been a change in the mask write it back |
| 434 | * to the hardware. */ | 434 | * to the hardware. */ |
| 435 | if (wm8350->irq_masks[i] != | 435 | WARN_ON(regmap_update_bits(wm8350->regmap, |
| 436 | wm8350->reg_cache[WM8350_INT_STATUS_1_MASK + i]) | 436 | WM8350_INT_STATUS_1_MASK + i, |
| 437 | WARN_ON(wm8350_reg_write(wm8350, | 437 | 0xffff, wm8350->irq_masks[i])); |
| 438 | WM8350_INT_STATUS_1_MASK + i, | ||
| 439 | wm8350->irq_masks[i])); | ||
| 440 | } | 438 | } |
| 441 | 439 | ||
| 442 | mutex_unlock(&wm8350->irq_lock); | 440 | mutex_unlock(&wm8350->irq_lock); |
diff --git a/drivers/mfd/wm8350-regmap.c b/drivers/mfd/wm8350-regmap.c index e965139e5cd5..9efc64750fb6 100644 --- a/drivers/mfd/wm8350-regmap.c +++ b/drivers/mfd/wm8350-regmap.c | |||
| @@ -14,3170 +14,18 @@ | |||
| 14 | 14 | ||
| 15 | #include <linux/mfd/wm8350/core.h> | 15 | #include <linux/mfd/wm8350/core.h> |
| 16 | 16 | ||
| 17 | #ifdef CONFIG_MFD_WM8350_CONFIG_MODE_0 | ||
| 18 | |||
| 19 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 20 | #define WM8350_HAVE_CONFIG_MODE | ||
| 21 | |||
| 22 | const u16 wm8350_mode0_defaults[] = { | ||
| 23 | 0x17FF, /* R0 - Reset/ID */ | ||
| 24 | 0x1000, /* R1 - ID */ | ||
| 25 | 0x0000, /* R2 */ | ||
| 26 | 0x1002, /* R3 - System Control 1 */ | ||
| 27 | 0x0004, /* R4 - System Control 2 */ | ||
| 28 | 0x0000, /* R5 - System Hibernate */ | ||
| 29 | 0x8A00, /* R6 - Interface Control */ | ||
| 30 | 0x0000, /* R7 */ | ||
| 31 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 32 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 33 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 34 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 35 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 36 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 37 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 38 | 0x0000, /* R15 */ | ||
| 39 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 40 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 41 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 42 | 0x1400, /* R19 - RTC Year */ | ||
| 43 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 44 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 45 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 46 | 0x0320, /* R23 - RTC Time Control */ | ||
| 47 | 0x0000, /* R24 - System Interrupts */ | ||
| 48 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 49 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 50 | 0x0000, /* R27 - Power Up Interrupt Status */ | ||
| 51 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 52 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 53 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 54 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 55 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 56 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 57 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 58 | 0x0000, /* R35 - Power Up Interrupt Status Mask */ | ||
| 59 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 60 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 61 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 62 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 63 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 64 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 65 | 0x3B00, /* R42 - FLL Control 1 */ | ||
| 66 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 67 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 68 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 69 | 0x0000, /* R46 */ | ||
| 70 | 0x0000, /* R47 */ | ||
| 71 | 0x0000, /* R48 - DAC Control */ | ||
| 72 | 0x0000, /* R49 */ | ||
| 73 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 74 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 75 | 0x0000, /* R52 */ | ||
| 76 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 77 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 78 | 0x0000, /* R55 */ | ||
| 79 | 0x0000, /* R56 */ | ||
| 80 | 0x0000, /* R57 */ | ||
| 81 | 0x4000, /* R58 - DAC Mute */ | ||
| 82 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 83 | 0x0000, /* R60 - DAC Side */ | ||
| 84 | 0x0000, /* R61 */ | ||
| 85 | 0x0000, /* R62 */ | ||
| 86 | 0x0000, /* R63 */ | ||
| 87 | 0x8000, /* R64 - ADC Control */ | ||
| 88 | 0x0000, /* R65 */ | ||
| 89 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 90 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 91 | 0x0000, /* R68 - ADC Divider */ | ||
| 92 | 0x0000, /* R69 */ | ||
| 93 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 94 | 0x0000, /* R71 */ | ||
| 95 | 0x0303, /* R72 - Input Control */ | ||
| 96 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 97 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 98 | 0x0000, /* R75 */ | ||
| 99 | 0x0000, /* R76 - Output Control */ | ||
| 100 | 0x0000, /* R77 - Jack Detect */ | ||
| 101 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 102 | 0x0000, /* R79 */ | ||
| 103 | 0x0040, /* R80 - Left Input Volume */ | ||
| 104 | 0x0040, /* R81 - Right Input Volume */ | ||
| 105 | 0x0000, /* R82 */ | ||
| 106 | 0x0000, /* R83 */ | ||
| 107 | 0x0000, /* R84 */ | ||
| 108 | 0x0000, /* R85 */ | ||
| 109 | 0x0000, /* R86 */ | ||
| 110 | 0x0000, /* R87 */ | ||
| 111 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 112 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 113 | 0x0000, /* R90 */ | ||
| 114 | 0x0000, /* R91 */ | ||
| 115 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 116 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 117 | 0x0000, /* R94 */ | ||
| 118 | 0x0000, /* R95 */ | ||
| 119 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 120 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 121 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 122 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 123 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 124 | 0x0000, /* R101 */ | ||
| 125 | 0x0000, /* R102 */ | ||
| 126 | 0x0000, /* R103 */ | ||
| 127 | 0x00E4, /* R104 - LOUT1 Volume */ | ||
| 128 | 0x00E4, /* R105 - ROUT1 Volume */ | ||
| 129 | 0x00E4, /* R106 - LOUT2 Volume */ | ||
| 130 | 0x02E4, /* R107 - ROUT2 Volume */ | ||
| 131 | 0x0000, /* R108 */ | ||
| 132 | 0x0000, /* R109 */ | ||
| 133 | 0x0000, /* R110 */ | ||
| 134 | 0x0000, /* R111 - BEEP Volume */ | ||
| 135 | 0x0A00, /* R112 - AI Formating */ | ||
| 136 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 137 | 0x0020, /* R114 - AI ADC Control */ | ||
| 138 | 0x0020, /* R115 - AI DAC Control */ | ||
| 139 | 0x0000, /* R116 - AIF Test */ | ||
| 140 | 0x0000, /* R117 */ | ||
| 141 | 0x0000, /* R118 */ | ||
| 142 | 0x0000, /* R119 */ | ||
| 143 | 0x0000, /* R120 */ | ||
| 144 | 0x0000, /* R121 */ | ||
| 145 | 0x0000, /* R122 */ | ||
| 146 | 0x0000, /* R123 */ | ||
| 147 | 0x0000, /* R124 */ | ||
| 148 | 0x0000, /* R125 */ | ||
| 149 | 0x0000, /* R126 */ | ||
| 150 | 0x0000, /* R127 */ | ||
| 151 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 152 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 153 | 0x03FC, /* R130 - GPIO Pull down Control */ | ||
| 154 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 155 | 0x0000, /* R132 */ | ||
| 156 | 0x0000, /* R133 - GPIO Control */ | ||
| 157 | 0x0FFC, /* R134 - GPIO Configuration (i/o) */ | ||
| 158 | 0x0FFC, /* R135 - GPIO Pin Polarity / Type */ | ||
| 159 | 0x0000, /* R136 */ | ||
| 160 | 0x0000, /* R137 */ | ||
| 161 | 0x0000, /* R138 */ | ||
| 162 | 0x0000, /* R139 */ | ||
| 163 | 0x0013, /* R140 - GPIO Function Select 1 */ | ||
| 164 | 0x0000, /* R141 - GPIO Function Select 2 */ | ||
| 165 | 0x0000, /* R142 - GPIO Function Select 3 */ | ||
| 166 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 167 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 168 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 169 | 0x0000, /* R146 */ | ||
| 170 | 0x0000, /* R147 */ | ||
| 171 | 0x0000, /* R148 */ | ||
| 172 | 0x0000, /* R149 */ | ||
| 173 | 0x0000, /* R150 */ | ||
| 174 | 0x0000, /* R151 */ | ||
| 175 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 176 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 177 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 178 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 179 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 180 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 181 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 182 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 183 | 0x0000, /* R160 */ | ||
| 184 | 0x0000, /* R161 */ | ||
| 185 | 0x0000, /* R162 */ | ||
| 186 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 187 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 188 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 189 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 190 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 191 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 192 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 193 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 194 | 0x0000, /* R171 */ | ||
| 195 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 196 | 0x0000, /* R173 - CSA Flash control */ | ||
| 197 | 0x0000, /* R174 - Current Sink Driver B */ | ||
| 198 | 0x0000, /* R175 - CSB Flash control */ | ||
| 199 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 200 | 0x002D, /* R177 - DCDC Active options */ | ||
| 201 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 202 | 0x0025, /* R179 - Power-check comparator */ | ||
| 203 | 0x000E, /* R180 - DCDC1 Control */ | ||
| 204 | 0x0000, /* R181 - DCDC1 Timeouts */ | ||
| 205 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 206 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 207 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 208 | 0x0000, /* R185 */ | ||
| 209 | 0x0000, /* R186 - DCDC3 Control */ | ||
| 210 | 0x0000, /* R187 - DCDC3 Timeouts */ | ||
| 211 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 212 | 0x0000, /* R189 - DCDC4 Control */ | ||
| 213 | 0x0000, /* R190 - DCDC4 Timeouts */ | ||
| 214 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 215 | 0x0008, /* R192 - DCDC5 Control */ | ||
| 216 | 0x0000, /* R193 - DCDC5 Timeouts */ | ||
| 217 | 0x0000, /* R194 */ | ||
| 218 | 0x0000, /* R195 - DCDC6 Control */ | ||
| 219 | 0x0000, /* R196 - DCDC6 Timeouts */ | ||
| 220 | 0x0006, /* R197 - DCDC6 Low Power */ | ||
| 221 | 0x0000, /* R198 */ | ||
| 222 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 223 | 0x001C, /* R200 - LDO1 Control */ | ||
| 224 | 0x0000, /* R201 - LDO1 Timeouts */ | ||
| 225 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 226 | 0x001B, /* R203 - LDO2 Control */ | ||
| 227 | 0x0000, /* R204 - LDO2 Timeouts */ | ||
| 228 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 229 | 0x001B, /* R206 - LDO3 Control */ | ||
| 230 | 0x0000, /* R207 - LDO3 Timeouts */ | ||
| 231 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 232 | 0x001B, /* R209 - LDO4 Control */ | ||
| 233 | 0x0000, /* R210 - LDO4 Timeouts */ | ||
| 234 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 235 | 0x0000, /* R212 */ | ||
| 236 | 0x0000, /* R213 */ | ||
| 237 | 0x0000, /* R214 */ | ||
| 238 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 239 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 240 | 0x0000, /* R217 - OSC Control */ | ||
| 241 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 242 | 0x0000, /* R219 */ | ||
| 243 | 0x4000, /* R220 - RAM BIST 1 */ | ||
| 244 | 0x0000, /* R221 */ | ||
| 245 | 0x0000, /* R222 */ | ||
| 246 | 0x0000, /* R223 */ | ||
| 247 | 0x0000, /* R224 */ | ||
| 248 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 249 | 0x0000, /* R226 */ | ||
| 250 | 0x0000, /* R227 */ | ||
| 251 | 0x0000, /* R228 */ | ||
| 252 | 0x0000, /* R229 */ | ||
| 253 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 254 | 0x0000, /* R231 */ | ||
| 255 | 0x0000, /* R232 */ | ||
| 256 | 0x0000, /* R233 */ | ||
| 257 | 0x0000, /* R234 */ | ||
| 258 | 0x0000, /* R235 */ | ||
| 259 | 0x0000, /* R236 */ | ||
| 260 | 0x0000, /* R237 */ | ||
| 261 | 0x0000, /* R238 */ | ||
| 262 | 0x0000, /* R239 */ | ||
| 263 | 0x0000, /* R240 */ | ||
| 264 | 0x0000, /* R241 */ | ||
| 265 | 0x0000, /* R242 */ | ||
| 266 | 0x0000, /* R243 */ | ||
| 267 | 0x0000, /* R244 */ | ||
| 268 | 0x0000, /* R245 */ | ||
| 269 | 0x0000, /* R246 */ | ||
| 270 | 0x0000, /* R247 */ | ||
| 271 | 0x0000, /* R248 */ | ||
| 272 | 0x0000, /* R249 */ | ||
| 273 | 0x0000, /* R250 */ | ||
| 274 | 0x0000, /* R251 */ | ||
| 275 | 0x0000, /* R252 */ | ||
| 276 | 0x0000, /* R253 */ | ||
| 277 | 0x0000, /* R254 */ | ||
| 278 | 0x0000, /* R255 */ | ||
| 279 | }; | ||
| 280 | #endif | ||
| 281 | |||
| 282 | #ifdef CONFIG_MFD_WM8350_CONFIG_MODE_1 | ||
| 283 | |||
| 284 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 285 | #define WM8350_HAVE_CONFIG_MODE | ||
| 286 | |||
| 287 | const u16 wm8350_mode1_defaults[] = { | ||
| 288 | 0x17FF, /* R0 - Reset/ID */ | ||
| 289 | 0x1000, /* R1 - ID */ | ||
| 290 | 0x0000, /* R2 */ | ||
| 291 | 0x1002, /* R3 - System Control 1 */ | ||
| 292 | 0x0014, /* R4 - System Control 2 */ | ||
| 293 | 0x0000, /* R5 - System Hibernate */ | ||
| 294 | 0x8A00, /* R6 - Interface Control */ | ||
| 295 | 0x0000, /* R7 */ | ||
| 296 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 297 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 298 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 299 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 300 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 301 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 302 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 303 | 0x0000, /* R15 */ | ||
| 304 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 305 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 306 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 307 | 0x1400, /* R19 - RTC Year */ | ||
| 308 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 309 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 310 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 311 | 0x0320, /* R23 - RTC Time Control */ | ||
| 312 | 0x0000, /* R24 - System Interrupts */ | ||
| 313 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 314 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 315 | 0x0000, /* R27 - Power Up Interrupt Status */ | ||
| 316 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 317 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 318 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 319 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 320 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 321 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 322 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 323 | 0x0000, /* R35 - Power Up Interrupt Status Mask */ | ||
| 324 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 325 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 326 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 327 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 328 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 329 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 330 | 0x3B00, /* R42 - FLL Control 1 */ | ||
| 331 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 332 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 333 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 334 | 0x0000, /* R46 */ | ||
| 335 | 0x0000, /* R47 */ | ||
| 336 | 0x0000, /* R48 - DAC Control */ | ||
| 337 | 0x0000, /* R49 */ | ||
| 338 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 339 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 340 | 0x0000, /* R52 */ | ||
| 341 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 342 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 343 | 0x0000, /* R55 */ | ||
| 344 | 0x0000, /* R56 */ | ||
| 345 | 0x0000, /* R57 */ | ||
| 346 | 0x4000, /* R58 - DAC Mute */ | ||
| 347 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 348 | 0x0000, /* R60 - DAC Side */ | ||
| 349 | 0x0000, /* R61 */ | ||
| 350 | 0x0000, /* R62 */ | ||
| 351 | 0x0000, /* R63 */ | ||
| 352 | 0x8000, /* R64 - ADC Control */ | ||
| 353 | 0x0000, /* R65 */ | ||
| 354 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 355 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 356 | 0x0000, /* R68 - ADC Divider */ | ||
| 357 | 0x0000, /* R69 */ | ||
| 358 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 359 | 0x0000, /* R71 */ | ||
| 360 | 0x0303, /* R72 - Input Control */ | ||
| 361 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 362 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 363 | 0x0000, /* R75 */ | ||
| 364 | 0x0000, /* R76 - Output Control */ | ||
| 365 | 0x0000, /* R77 - Jack Detect */ | ||
| 366 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 367 | 0x0000, /* R79 */ | ||
| 368 | 0x0040, /* R80 - Left Input Volume */ | ||
| 369 | 0x0040, /* R81 - Right Input Volume */ | ||
| 370 | 0x0000, /* R82 */ | ||
| 371 | 0x0000, /* R83 */ | ||
| 372 | 0x0000, /* R84 */ | ||
| 373 | 0x0000, /* R85 */ | ||
| 374 | 0x0000, /* R86 */ | ||
| 375 | 0x0000, /* R87 */ | ||
| 376 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 377 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 378 | 0x0000, /* R90 */ | ||
| 379 | 0x0000, /* R91 */ | ||
| 380 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 381 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 382 | 0x0000, /* R94 */ | ||
| 383 | 0x0000, /* R95 */ | ||
| 384 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 385 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 386 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 387 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 388 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 389 | 0x0000, /* R101 */ | ||
| 390 | 0x0000, /* R102 */ | ||
| 391 | 0x0000, /* R103 */ | ||
| 392 | 0x00E4, /* R104 - LOUT1 Volume */ | ||
| 393 | 0x00E4, /* R105 - ROUT1 Volume */ | ||
| 394 | 0x00E4, /* R106 - LOUT2 Volume */ | ||
| 395 | 0x02E4, /* R107 - ROUT2 Volume */ | ||
| 396 | 0x0000, /* R108 */ | ||
| 397 | 0x0000, /* R109 */ | ||
| 398 | 0x0000, /* R110 */ | ||
| 399 | 0x0000, /* R111 - BEEP Volume */ | ||
| 400 | 0x0A00, /* R112 - AI Formating */ | ||
| 401 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 402 | 0x0020, /* R114 - AI ADC Control */ | ||
| 403 | 0x0020, /* R115 - AI DAC Control */ | ||
| 404 | 0x0000, /* R116 - AIF Test */ | ||
| 405 | 0x0000, /* R117 */ | ||
| 406 | 0x0000, /* R118 */ | ||
| 407 | 0x0000, /* R119 */ | ||
| 408 | 0x0000, /* R120 */ | ||
| 409 | 0x0000, /* R121 */ | ||
| 410 | 0x0000, /* R122 */ | ||
| 411 | 0x0000, /* R123 */ | ||
| 412 | 0x0000, /* R124 */ | ||
| 413 | 0x0000, /* R125 */ | ||
| 414 | 0x0000, /* R126 */ | ||
| 415 | 0x0000, /* R127 */ | ||
| 416 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 417 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 418 | 0x03FC, /* R130 - GPIO Pull down Control */ | ||
| 419 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 420 | 0x0000, /* R132 */ | ||
| 421 | 0x0000, /* R133 - GPIO Control */ | ||
| 422 | 0x00FB, /* R134 - GPIO Configuration (i/o) */ | ||
| 423 | 0x04FE, /* R135 - GPIO Pin Polarity / Type */ | ||
| 424 | 0x0000, /* R136 */ | ||
| 425 | 0x0000, /* R137 */ | ||
| 426 | 0x0000, /* R138 */ | ||
| 427 | 0x0000, /* R139 */ | ||
| 428 | 0x0312, /* R140 - GPIO Function Select 1 */ | ||
| 429 | 0x1003, /* R141 - GPIO Function Select 2 */ | ||
| 430 | 0x1331, /* R142 - GPIO Function Select 3 */ | ||
| 431 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 432 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 433 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 434 | 0x0000, /* R146 */ | ||
| 435 | 0x0000, /* R147 */ | ||
| 436 | 0x0000, /* R148 */ | ||
| 437 | 0x0000, /* R149 */ | ||
| 438 | 0x0000, /* R150 */ | ||
| 439 | 0x0000, /* R151 */ | ||
| 440 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 441 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 442 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 443 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 444 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 445 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 446 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 447 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 448 | 0x0000, /* R160 */ | ||
| 449 | 0x0000, /* R161 */ | ||
| 450 | 0x0000, /* R162 */ | ||
| 451 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 452 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 453 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 454 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 455 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 456 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 457 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 458 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 459 | 0x0000, /* R171 */ | ||
| 460 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 461 | 0x0000, /* R173 - CSA Flash control */ | ||
| 462 | 0x0000, /* R174 - Current Sink Driver B */ | ||
| 463 | 0x0000, /* R175 - CSB Flash control */ | ||
| 464 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 465 | 0x002D, /* R177 - DCDC Active options */ | ||
| 466 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 467 | 0x0025, /* R179 - Power-check comparator */ | ||
| 468 | 0x0062, /* R180 - DCDC1 Control */ | ||
| 469 | 0x0400, /* R181 - DCDC1 Timeouts */ | ||
| 470 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 471 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 472 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 473 | 0x0000, /* R185 */ | ||
| 474 | 0x0026, /* R186 - DCDC3 Control */ | ||
| 475 | 0x0400, /* R187 - DCDC3 Timeouts */ | ||
| 476 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 477 | 0x0062, /* R189 - DCDC4 Control */ | ||
| 478 | 0x0400, /* R190 - DCDC4 Timeouts */ | ||
| 479 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 480 | 0x0008, /* R192 - DCDC5 Control */ | ||
| 481 | 0x0000, /* R193 - DCDC5 Timeouts */ | ||
| 482 | 0x0000, /* R194 */ | ||
| 483 | 0x0026, /* R195 - DCDC6 Control */ | ||
| 484 | 0x0800, /* R196 - DCDC6 Timeouts */ | ||
| 485 | 0x0006, /* R197 - DCDC6 Low Power */ | ||
| 486 | 0x0000, /* R198 */ | ||
| 487 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 488 | 0x0006, /* R200 - LDO1 Control */ | ||
| 489 | 0x0400, /* R201 - LDO1 Timeouts */ | ||
| 490 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 491 | 0x0006, /* R203 - LDO2 Control */ | ||
| 492 | 0x0400, /* R204 - LDO2 Timeouts */ | ||
| 493 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 494 | 0x001B, /* R206 - LDO3 Control */ | ||
| 495 | 0x0000, /* R207 - LDO3 Timeouts */ | ||
| 496 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 497 | 0x001B, /* R209 - LDO4 Control */ | ||
| 498 | 0x0000, /* R210 - LDO4 Timeouts */ | ||
| 499 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 500 | 0x0000, /* R212 */ | ||
| 501 | 0x0000, /* R213 */ | ||
| 502 | 0x0000, /* R214 */ | ||
| 503 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 504 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 505 | 0x0000, /* R217 - OSC Control */ | ||
| 506 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 507 | 0x0000, /* R219 */ | ||
| 508 | 0x4000, /* R220 - RAM BIST 1 */ | ||
| 509 | 0x0000, /* R221 */ | ||
| 510 | 0x0000, /* R222 */ | ||
| 511 | 0x0000, /* R223 */ | ||
| 512 | 0x0000, /* R224 */ | ||
| 513 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 514 | 0x0000, /* R226 */ | ||
| 515 | 0x0000, /* R227 */ | ||
| 516 | 0x0000, /* R228 */ | ||
| 517 | 0x0000, /* R229 */ | ||
| 518 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 519 | 0x0000, /* R231 */ | ||
| 520 | 0x0000, /* R232 */ | ||
| 521 | 0x0000, /* R233 */ | ||
| 522 | 0x0000, /* R234 */ | ||
| 523 | 0x0000, /* R235 */ | ||
| 524 | 0x0000, /* R236 */ | ||
| 525 | 0x0000, /* R237 */ | ||
| 526 | 0x0000, /* R238 */ | ||
| 527 | 0x0000, /* R239 */ | ||
| 528 | 0x0000, /* R240 */ | ||
| 529 | 0x0000, /* R241 */ | ||
| 530 | 0x0000, /* R242 */ | ||
| 531 | 0x0000, /* R243 */ | ||
| 532 | 0x0000, /* R244 */ | ||
| 533 | 0x0000, /* R245 */ | ||
| 534 | 0x0000, /* R246 */ | ||
| 535 | 0x0000, /* R247 */ | ||
| 536 | 0x0000, /* R248 */ | ||
| 537 | 0x0000, /* R249 */ | ||
| 538 | 0x0000, /* R250 */ | ||
| 539 | 0x0000, /* R251 */ | ||
| 540 | 0x0000, /* R252 */ | ||
| 541 | 0x0000, /* R253 */ | ||
| 542 | 0x0000, /* R254 */ | ||
| 543 | 0x0000, /* R255 */ | ||
| 544 | }; | ||
| 545 | #endif | ||
| 546 | |||
| 547 | #ifdef CONFIG_MFD_WM8350_CONFIG_MODE_2 | ||
| 548 | |||
| 549 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 550 | #define WM8350_HAVE_CONFIG_MODE | ||
| 551 | |||
| 552 | const u16 wm8350_mode2_defaults[] = { | ||
| 553 | 0x17FF, /* R0 - Reset/ID */ | ||
| 554 | 0x1000, /* R1 - ID */ | ||
| 555 | 0x0000, /* R2 */ | ||
| 556 | 0x1002, /* R3 - System Control 1 */ | ||
| 557 | 0x0014, /* R4 - System Control 2 */ | ||
| 558 | 0x0000, /* R5 - System Hibernate */ | ||
| 559 | 0x8A00, /* R6 - Interface Control */ | ||
| 560 | 0x0000, /* R7 */ | ||
| 561 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 562 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 563 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 564 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 565 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 566 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 567 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 568 | 0x0000, /* R15 */ | ||
| 569 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 570 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 571 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 572 | 0x1400, /* R19 - RTC Year */ | ||
| 573 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 574 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 575 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 576 | 0x0320, /* R23 - RTC Time Control */ | ||
| 577 | 0x0000, /* R24 - System Interrupts */ | ||
| 578 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 579 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 580 | 0x0000, /* R27 - Power Up Interrupt Status */ | ||
| 581 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 582 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 583 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 584 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 585 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 586 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 587 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 588 | 0x0000, /* R35 - Power Up Interrupt Status Mask */ | ||
| 589 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 590 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 591 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 592 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 593 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 594 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 595 | 0x3B00, /* R42 - FLL Control 1 */ | ||
| 596 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 597 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 598 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 599 | 0x0000, /* R46 */ | ||
| 600 | 0x0000, /* R47 */ | ||
| 601 | 0x0000, /* R48 - DAC Control */ | ||
| 602 | 0x0000, /* R49 */ | ||
| 603 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 604 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 605 | 0x0000, /* R52 */ | ||
| 606 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 607 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 608 | 0x0000, /* R55 */ | ||
| 609 | 0x0000, /* R56 */ | ||
| 610 | 0x0000, /* R57 */ | ||
| 611 | 0x4000, /* R58 - DAC Mute */ | ||
| 612 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 613 | 0x0000, /* R60 - DAC Side */ | ||
| 614 | 0x0000, /* R61 */ | ||
| 615 | 0x0000, /* R62 */ | ||
| 616 | 0x0000, /* R63 */ | ||
| 617 | 0x8000, /* R64 - ADC Control */ | ||
| 618 | 0x0000, /* R65 */ | ||
| 619 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 620 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 621 | 0x0000, /* R68 - ADC Divider */ | ||
| 622 | 0x0000, /* R69 */ | ||
| 623 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 624 | 0x0000, /* R71 */ | ||
| 625 | 0x0303, /* R72 - Input Control */ | ||
| 626 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 627 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 628 | 0x0000, /* R75 */ | ||
| 629 | 0x0000, /* R76 - Output Control */ | ||
| 630 | 0x0000, /* R77 - Jack Detect */ | ||
| 631 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 632 | 0x0000, /* R79 */ | ||
| 633 | 0x0040, /* R80 - Left Input Volume */ | ||
| 634 | 0x0040, /* R81 - Right Input Volume */ | ||
| 635 | 0x0000, /* R82 */ | ||
| 636 | 0x0000, /* R83 */ | ||
| 637 | 0x0000, /* R84 */ | ||
| 638 | 0x0000, /* R85 */ | ||
| 639 | 0x0000, /* R86 */ | ||
| 640 | 0x0000, /* R87 */ | ||
| 641 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 642 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 643 | 0x0000, /* R90 */ | ||
| 644 | 0x0000, /* R91 */ | ||
| 645 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 646 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 647 | 0x0000, /* R94 */ | ||
| 648 | 0x0000, /* R95 */ | ||
| 649 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 650 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 651 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 652 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 653 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 654 | 0x0000, /* R101 */ | ||
| 655 | 0x0000, /* R102 */ | ||
| 656 | 0x0000, /* R103 */ | ||
| 657 | 0x00E4, /* R104 - LOUT1 Volume */ | ||
| 658 | 0x00E4, /* R105 - ROUT1 Volume */ | ||
| 659 | 0x00E4, /* R106 - LOUT2 Volume */ | ||
| 660 | 0x02E4, /* R107 - ROUT2 Volume */ | ||
| 661 | 0x0000, /* R108 */ | ||
| 662 | 0x0000, /* R109 */ | ||
| 663 | 0x0000, /* R110 */ | ||
| 664 | 0x0000, /* R111 - BEEP Volume */ | ||
| 665 | 0x0A00, /* R112 - AI Formating */ | ||
| 666 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 667 | 0x0020, /* R114 - AI ADC Control */ | ||
| 668 | 0x0020, /* R115 - AI DAC Control */ | ||
| 669 | 0x0000, /* R116 - AIF Test */ | ||
| 670 | 0x0000, /* R117 */ | ||
| 671 | 0x0000, /* R118 */ | ||
| 672 | 0x0000, /* R119 */ | ||
| 673 | 0x0000, /* R120 */ | ||
| 674 | 0x0000, /* R121 */ | ||
| 675 | 0x0000, /* R122 */ | ||
| 676 | 0x0000, /* R123 */ | ||
| 677 | 0x0000, /* R124 */ | ||
| 678 | 0x0000, /* R125 */ | ||
| 679 | 0x0000, /* R126 */ | ||
| 680 | 0x0000, /* R127 */ | ||
| 681 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 682 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 683 | 0x03FC, /* R130 - GPIO Pull down Control */ | ||
| 684 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 685 | 0x0000, /* R132 */ | ||
| 686 | 0x0000, /* R133 - GPIO Control */ | ||
| 687 | 0x08FB, /* R134 - GPIO Configuration (i/o) */ | ||
| 688 | 0x0CFE, /* R135 - GPIO Pin Polarity / Type */ | ||
| 689 | 0x0000, /* R136 */ | ||
| 690 | 0x0000, /* R137 */ | ||
| 691 | 0x0000, /* R138 */ | ||
| 692 | 0x0000, /* R139 */ | ||
| 693 | 0x0312, /* R140 - GPIO Function Select 1 */ | ||
| 694 | 0x0003, /* R141 - GPIO Function Select 2 */ | ||
| 695 | 0x2331, /* R142 - GPIO Function Select 3 */ | ||
| 696 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 697 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 698 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 699 | 0x0000, /* R146 */ | ||
| 700 | 0x0000, /* R147 */ | ||
| 701 | 0x0000, /* R148 */ | ||
| 702 | 0x0000, /* R149 */ | ||
| 703 | 0x0000, /* R150 */ | ||
| 704 | 0x0000, /* R151 */ | ||
| 705 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 706 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 707 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 708 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 709 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 710 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 711 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 712 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 713 | 0x0000, /* R160 */ | ||
| 714 | 0x0000, /* R161 */ | ||
| 715 | 0x0000, /* R162 */ | ||
| 716 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 717 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 718 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 719 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 720 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 721 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 722 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 723 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 724 | 0x0000, /* R171 */ | ||
| 725 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 726 | 0x0000, /* R173 - CSA Flash control */ | ||
| 727 | 0x0000, /* R174 - Current Sink Driver B */ | ||
| 728 | 0x0000, /* R175 - CSB Flash control */ | ||
| 729 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 730 | 0x002D, /* R177 - DCDC Active options */ | ||
| 731 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 732 | 0x0025, /* R179 - Power-check comparator */ | ||
| 733 | 0x000E, /* R180 - DCDC1 Control */ | ||
| 734 | 0x0400, /* R181 - DCDC1 Timeouts */ | ||
| 735 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 736 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 737 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 738 | 0x0000, /* R185 */ | ||
| 739 | 0x002E, /* R186 - DCDC3 Control */ | ||
| 740 | 0x0800, /* R187 - DCDC3 Timeouts */ | ||
| 741 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 742 | 0x000E, /* R189 - DCDC4 Control */ | ||
| 743 | 0x0800, /* R190 - DCDC4 Timeouts */ | ||
| 744 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 745 | 0x0008, /* R192 - DCDC5 Control */ | ||
| 746 | 0x0000, /* R193 - DCDC5 Timeouts */ | ||
| 747 | 0x0000, /* R194 */ | ||
| 748 | 0x0026, /* R195 - DCDC6 Control */ | ||
| 749 | 0x0C00, /* R196 - DCDC6 Timeouts */ | ||
| 750 | 0x0006, /* R197 - DCDC6 Low Power */ | ||
| 751 | 0x0000, /* R198 */ | ||
| 752 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 753 | 0x001A, /* R200 - LDO1 Control */ | ||
| 754 | 0x0800, /* R201 - LDO1 Timeouts */ | ||
| 755 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 756 | 0x0010, /* R203 - LDO2 Control */ | ||
| 757 | 0x0800, /* R204 - LDO2 Timeouts */ | ||
| 758 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 759 | 0x000A, /* R206 - LDO3 Control */ | ||
| 760 | 0x0C00, /* R207 - LDO3 Timeouts */ | ||
| 761 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 762 | 0x001A, /* R209 - LDO4 Control */ | ||
| 763 | 0x0800, /* R210 - LDO4 Timeouts */ | ||
| 764 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 765 | 0x0000, /* R212 */ | ||
| 766 | 0x0000, /* R213 */ | ||
| 767 | 0x0000, /* R214 */ | ||
| 768 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 769 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 770 | 0x0000, /* R217 - OSC Control */ | ||
| 771 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 772 | 0x0000, /* R219 */ | ||
| 773 | 0x4000, /* R220 - RAM BIST 1 */ | ||
| 774 | 0x0000, /* R221 */ | ||
| 775 | 0x0000, /* R222 */ | ||
| 776 | 0x0000, /* R223 */ | ||
| 777 | 0x0000, /* R224 */ | ||
| 778 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 779 | 0x0000, /* R226 */ | ||
| 780 | 0x0000, /* R227 */ | ||
| 781 | 0x0000, /* R228 */ | ||
| 782 | 0x0000, /* R229 */ | ||
| 783 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 784 | 0x0000, /* R231 */ | ||
| 785 | 0x0000, /* R232 */ | ||
| 786 | 0x0000, /* R233 */ | ||
| 787 | 0x0000, /* R234 */ | ||
| 788 | 0x0000, /* R235 */ | ||
| 789 | 0x0000, /* R236 */ | ||
| 790 | 0x0000, /* R237 */ | ||
| 791 | 0x0000, /* R238 */ | ||
| 792 | 0x0000, /* R239 */ | ||
| 793 | 0x0000, /* R240 */ | ||
| 794 | 0x0000, /* R241 */ | ||
| 795 | 0x0000, /* R242 */ | ||
| 796 | 0x0000, /* R243 */ | ||
| 797 | 0x0000, /* R244 */ | ||
| 798 | 0x0000, /* R245 */ | ||
| 799 | 0x0000, /* R246 */ | ||
| 800 | 0x0000, /* R247 */ | ||
| 801 | 0x0000, /* R248 */ | ||
| 802 | 0x0000, /* R249 */ | ||
| 803 | 0x0000, /* R250 */ | ||
| 804 | 0x0000, /* R251 */ | ||
| 805 | 0x0000, /* R252 */ | ||
| 806 | 0x0000, /* R253 */ | ||
| 807 | 0x0000, /* R254 */ | ||
| 808 | 0x0000, /* R255 */ | ||
| 809 | }; | ||
| 810 | #endif | ||
| 811 | |||
| 812 | #ifdef CONFIG_MFD_WM8350_CONFIG_MODE_3 | ||
| 813 | |||
| 814 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 815 | #define WM8350_HAVE_CONFIG_MODE | ||
| 816 | |||
| 817 | const u16 wm8350_mode3_defaults[] = { | ||
| 818 | 0x17FF, /* R0 - Reset/ID */ | ||
| 819 | 0x1000, /* R1 - ID */ | ||
| 820 | 0x0000, /* R2 */ | ||
| 821 | 0x1000, /* R3 - System Control 1 */ | ||
| 822 | 0x0004, /* R4 - System Control 2 */ | ||
| 823 | 0x0000, /* R5 - System Hibernate */ | ||
| 824 | 0x8A00, /* R6 - Interface Control */ | ||
| 825 | 0x0000, /* R7 */ | ||
| 826 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 827 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 828 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 829 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 830 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 831 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 832 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 833 | 0x0000, /* R15 */ | ||
| 834 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 835 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 836 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 837 | 0x1400, /* R19 - RTC Year */ | ||
| 838 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 839 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 840 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 841 | 0x0320, /* R23 - RTC Time Control */ | ||
| 842 | 0x0000, /* R24 - System Interrupts */ | ||
| 843 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 844 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 845 | 0x0000, /* R27 - Power Up Interrupt Status */ | ||
| 846 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 847 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 848 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 849 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 850 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 851 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 852 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 853 | 0x0000, /* R35 - Power Up Interrupt Status Mask */ | ||
| 854 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 855 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 856 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 857 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 858 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 859 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 860 | 0x3B00, /* R42 - FLL Control 1 */ | ||
| 861 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 862 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 863 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 864 | 0x0000, /* R46 */ | ||
| 865 | 0x0000, /* R47 */ | ||
| 866 | 0x0000, /* R48 - DAC Control */ | ||
| 867 | 0x0000, /* R49 */ | ||
| 868 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 869 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 870 | 0x0000, /* R52 */ | ||
| 871 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 872 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 873 | 0x0000, /* R55 */ | ||
| 874 | 0x0000, /* R56 */ | ||
| 875 | 0x0000, /* R57 */ | ||
| 876 | 0x4000, /* R58 - DAC Mute */ | ||
| 877 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 878 | 0x0000, /* R60 - DAC Side */ | ||
| 879 | 0x0000, /* R61 */ | ||
| 880 | 0x0000, /* R62 */ | ||
| 881 | 0x0000, /* R63 */ | ||
| 882 | 0x8000, /* R64 - ADC Control */ | ||
| 883 | 0x0000, /* R65 */ | ||
| 884 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 885 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 886 | 0x0000, /* R68 - ADC Divider */ | ||
| 887 | 0x0000, /* R69 */ | ||
| 888 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 889 | 0x0000, /* R71 */ | ||
| 890 | 0x0303, /* R72 - Input Control */ | ||
| 891 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 892 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 893 | 0x0000, /* R75 */ | ||
| 894 | 0x0000, /* R76 - Output Control */ | ||
| 895 | 0x0000, /* R77 - Jack Detect */ | ||
| 896 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 897 | 0x0000, /* R79 */ | ||
| 898 | 0x0040, /* R80 - Left Input Volume */ | ||
| 899 | 0x0040, /* R81 - Right Input Volume */ | ||
| 900 | 0x0000, /* R82 */ | ||
| 901 | 0x0000, /* R83 */ | ||
| 902 | 0x0000, /* R84 */ | ||
| 903 | 0x0000, /* R85 */ | ||
| 904 | 0x0000, /* R86 */ | ||
| 905 | 0x0000, /* R87 */ | ||
| 906 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 907 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 908 | 0x0000, /* R90 */ | ||
| 909 | 0x0000, /* R91 */ | ||
| 910 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 911 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 912 | 0x0000, /* R94 */ | ||
| 913 | 0x0000, /* R95 */ | ||
| 914 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 915 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 916 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 917 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 918 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 919 | 0x0000, /* R101 */ | ||
| 920 | 0x0000, /* R102 */ | ||
| 921 | 0x0000, /* R103 */ | ||
| 922 | 0x00E4, /* R104 - LOUT1 Volume */ | ||
| 923 | 0x00E4, /* R105 - ROUT1 Volume */ | ||
| 924 | 0x00E4, /* R106 - LOUT2 Volume */ | ||
| 925 | 0x02E4, /* R107 - ROUT2 Volume */ | ||
| 926 | 0x0000, /* R108 */ | ||
| 927 | 0x0000, /* R109 */ | ||
| 928 | 0x0000, /* R110 */ | ||
| 929 | 0x0000, /* R111 - BEEP Volume */ | ||
| 930 | 0x0A00, /* R112 - AI Formating */ | ||
| 931 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 932 | 0x0020, /* R114 - AI ADC Control */ | ||
| 933 | 0x0020, /* R115 - AI DAC Control */ | ||
| 934 | 0x0000, /* R116 - AIF Test */ | ||
| 935 | 0x0000, /* R117 */ | ||
| 936 | 0x0000, /* R118 */ | ||
| 937 | 0x0000, /* R119 */ | ||
| 938 | 0x0000, /* R120 */ | ||
| 939 | 0x0000, /* R121 */ | ||
| 940 | 0x0000, /* R122 */ | ||
| 941 | 0x0000, /* R123 */ | ||
| 942 | 0x0000, /* R124 */ | ||
| 943 | 0x0000, /* R125 */ | ||
| 944 | 0x0000, /* R126 */ | ||
| 945 | 0x0000, /* R127 */ | ||
| 946 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 947 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 948 | 0x03FC, /* R130 - GPIO Pull down Control */ | ||
| 949 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 950 | 0x0000, /* R132 */ | ||
| 951 | 0x0000, /* R133 - GPIO Control */ | ||
| 952 | 0x0A7B, /* R134 - GPIO Configuration (i/o) */ | ||
| 953 | 0x06FE, /* R135 - GPIO Pin Polarity / Type */ | ||
| 954 | 0x0000, /* R136 */ | ||
| 955 | 0x0000, /* R137 */ | ||
| 956 | 0x0000, /* R138 */ | ||
| 957 | 0x0000, /* R139 */ | ||
| 958 | 0x1312, /* R140 - GPIO Function Select 1 */ | ||
| 959 | 0x1030, /* R141 - GPIO Function Select 2 */ | ||
| 960 | 0x2231, /* R142 - GPIO Function Select 3 */ | ||
| 961 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 962 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 963 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 964 | 0x0000, /* R146 */ | ||
| 965 | 0x0000, /* R147 */ | ||
| 966 | 0x0000, /* R148 */ | ||
| 967 | 0x0000, /* R149 */ | ||
| 968 | 0x0000, /* R150 */ | ||
| 969 | 0x0000, /* R151 */ | ||
| 970 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 971 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 972 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 973 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 974 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 975 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 976 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 977 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 978 | 0x0000, /* R160 */ | ||
| 979 | 0x0000, /* R161 */ | ||
| 980 | 0x0000, /* R162 */ | ||
| 981 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 982 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 983 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 984 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 985 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 986 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 987 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 988 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 989 | 0x0000, /* R171 */ | ||
| 990 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 991 | 0x0000, /* R173 - CSA Flash control */ | ||
| 992 | 0x0000, /* R174 - Current Sink Driver B */ | ||
| 993 | 0x0000, /* R175 - CSB Flash control */ | ||
| 994 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 995 | 0x002D, /* R177 - DCDC Active options */ | ||
| 996 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 997 | 0x0025, /* R179 - Power-check comparator */ | ||
| 998 | 0x000E, /* R180 - DCDC1 Control */ | ||
| 999 | 0x0400, /* R181 - DCDC1 Timeouts */ | ||
| 1000 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 1001 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 1002 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 1003 | 0x0000, /* R185 */ | ||
| 1004 | 0x000E, /* R186 - DCDC3 Control */ | ||
| 1005 | 0x0400, /* R187 - DCDC3 Timeouts */ | ||
| 1006 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 1007 | 0x0026, /* R189 - DCDC4 Control */ | ||
| 1008 | 0x0400, /* R190 - DCDC4 Timeouts */ | ||
| 1009 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 1010 | 0x0008, /* R192 - DCDC5 Control */ | ||
| 1011 | 0x0000, /* R193 - DCDC5 Timeouts */ | ||
| 1012 | 0x0000, /* R194 */ | ||
| 1013 | 0x0026, /* R195 - DCDC6 Control */ | ||
| 1014 | 0x0400, /* R196 - DCDC6 Timeouts */ | ||
| 1015 | 0x0006, /* R197 - DCDC6 Low Power */ | ||
| 1016 | 0x0000, /* R198 */ | ||
| 1017 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 1018 | 0x001C, /* R200 - LDO1 Control */ | ||
| 1019 | 0x0000, /* R201 - LDO1 Timeouts */ | ||
| 1020 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 1021 | 0x001C, /* R203 - LDO2 Control */ | ||
| 1022 | 0x0400, /* R204 - LDO2 Timeouts */ | ||
| 1023 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 1024 | 0x001C, /* R206 - LDO3 Control */ | ||
| 1025 | 0x0400, /* R207 - LDO3 Timeouts */ | ||
| 1026 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 1027 | 0x001F, /* R209 - LDO4 Control */ | ||
| 1028 | 0x0400, /* R210 - LDO4 Timeouts */ | ||
| 1029 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 1030 | 0x0000, /* R212 */ | ||
| 1031 | 0x0000, /* R213 */ | ||
| 1032 | 0x0000, /* R214 */ | ||
| 1033 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 1034 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 1035 | 0x0000, /* R217 - OSC Control */ | ||
| 1036 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 1037 | 0x0000, /* R219 */ | ||
| 1038 | 0x4000, /* R220 - RAM BIST 1 */ | ||
| 1039 | 0x0000, /* R221 */ | ||
| 1040 | 0x0000, /* R222 */ | ||
| 1041 | 0x0000, /* R223 */ | ||
| 1042 | 0x0000, /* R224 */ | ||
| 1043 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 1044 | 0x0000, /* R226 */ | ||
| 1045 | 0x0000, /* R227 */ | ||
| 1046 | 0x0000, /* R228 */ | ||
| 1047 | 0x0000, /* R229 */ | ||
| 1048 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 1049 | 0x0000, /* R231 */ | ||
| 1050 | 0x0000, /* R232 */ | ||
| 1051 | 0x0000, /* R233 */ | ||
| 1052 | 0x0000, /* R234 */ | ||
| 1053 | 0x0000, /* R235 */ | ||
| 1054 | 0x0000, /* R236 */ | ||
| 1055 | 0x0000, /* R237 */ | ||
| 1056 | 0x0000, /* R238 */ | ||
| 1057 | 0x0000, /* R239 */ | ||
| 1058 | 0x0000, /* R240 */ | ||
| 1059 | 0x0000, /* R241 */ | ||
| 1060 | 0x0000, /* R242 */ | ||
| 1061 | 0x0000, /* R243 */ | ||
| 1062 | 0x0000, /* R244 */ | ||
| 1063 | 0x0000, /* R245 */ | ||
| 1064 | 0x0000, /* R246 */ | ||
| 1065 | 0x0000, /* R247 */ | ||
| 1066 | 0x0000, /* R248 */ | ||
| 1067 | 0x0000, /* R249 */ | ||
| 1068 | 0x0000, /* R250 */ | ||
| 1069 | 0x0000, /* R251 */ | ||
| 1070 | 0x0000, /* R252 */ | ||
| 1071 | 0x0000, /* R253 */ | ||
| 1072 | 0x0000, /* R254 */ | ||
| 1073 | 0x0000, /* R255 */ | ||
| 1074 | }; | ||
| 1075 | #endif | ||
| 1076 | |||
| 1077 | #ifdef CONFIG_MFD_WM8351_CONFIG_MODE_0 | ||
| 1078 | |||
| 1079 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 1080 | #define WM8350_HAVE_CONFIG_MODE | ||
| 1081 | |||
| 1082 | const u16 wm8351_mode0_defaults[] = { | ||
| 1083 | 0x6143, /* R0 - Reset/ID */ | ||
| 1084 | 0x0000, /* R1 - ID */ | ||
| 1085 | 0x0001, /* R2 - Revision */ | ||
| 1086 | 0x1C02, /* R3 - System Control 1 */ | ||
| 1087 | 0x0004, /* R4 - System Control 2 */ | ||
| 1088 | 0x0000, /* R5 - System Hibernate */ | ||
| 1089 | 0x8A00, /* R6 - Interface Control */ | ||
| 1090 | 0x0000, /* R7 */ | ||
| 1091 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 1092 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 1093 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 1094 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 1095 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 1096 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 1097 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 1098 | 0x0000, /* R15 */ | ||
| 1099 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 1100 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 1101 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 1102 | 0x1400, /* R19 - RTC Year */ | ||
| 1103 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 1104 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 1105 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 1106 | 0x0320, /* R23 - RTC Time Control */ | ||
| 1107 | 0x0000, /* R24 - System Interrupts */ | ||
| 1108 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 1109 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 1110 | 0x0000, /* R27 */ | ||
| 1111 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 1112 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 1113 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 1114 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 1115 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 1116 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 1117 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 1118 | 0x0000, /* R35 */ | ||
| 1119 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 1120 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 1121 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 1122 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 1123 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 1124 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 1125 | 0x3A00, /* R42 - FLL Control 1 */ | ||
| 1126 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 1127 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 1128 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 1129 | 0x0000, /* R46 */ | ||
| 1130 | 0x0000, /* R47 */ | ||
| 1131 | 0x0000, /* R48 - DAC Control */ | ||
| 1132 | 0x0000, /* R49 */ | ||
| 1133 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 1134 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 1135 | 0x0000, /* R52 */ | ||
| 1136 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 1137 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 1138 | 0x0000, /* R55 */ | ||
| 1139 | 0x0000, /* R56 */ | ||
| 1140 | 0x0000, /* R57 */ | ||
| 1141 | 0x4000, /* R58 - DAC Mute */ | ||
| 1142 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 1143 | 0x0000, /* R60 - DAC Side */ | ||
| 1144 | 0x0000, /* R61 */ | ||
| 1145 | 0x0000, /* R62 */ | ||
| 1146 | 0x0000, /* R63 */ | ||
| 1147 | 0x8000, /* R64 - ADC Control */ | ||
| 1148 | 0x0000, /* R65 */ | ||
| 1149 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 1150 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 1151 | 0x0000, /* R68 - ADC Divider */ | ||
| 1152 | 0x0000, /* R69 */ | ||
| 1153 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 1154 | 0x0000, /* R71 */ | ||
| 1155 | 0x0303, /* R72 - Input Control */ | ||
| 1156 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 1157 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 1158 | 0x0000, /* R75 */ | ||
| 1159 | 0x0000, /* R76 - Output Control */ | ||
| 1160 | 0x0000, /* R77 - Jack Detect */ | ||
| 1161 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 1162 | 0x0000, /* R79 */ | ||
| 1163 | 0x0040, /* R80 - Left Input Volume */ | ||
| 1164 | 0x0040, /* R81 - Right Input Volume */ | ||
| 1165 | 0x0000, /* R82 */ | ||
| 1166 | 0x0000, /* R83 */ | ||
| 1167 | 0x0000, /* R84 */ | ||
| 1168 | 0x0000, /* R85 */ | ||
| 1169 | 0x0000, /* R86 */ | ||
| 1170 | 0x0000, /* R87 */ | ||
| 1171 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 1172 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 1173 | 0x0000, /* R90 */ | ||
| 1174 | 0x0000, /* R91 */ | ||
| 1175 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 1176 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 1177 | 0x0000, /* R94 */ | ||
| 1178 | 0x0000, /* R95 */ | ||
| 1179 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 1180 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 1181 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 1182 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 1183 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 1184 | 0x0000, /* R101 */ | ||
| 1185 | 0x0000, /* R102 */ | ||
| 1186 | 0x0000, /* R103 */ | ||
| 1187 | 0x00E4, /* R104 - OUT1L Volume */ | ||
| 1188 | 0x00E4, /* R105 - OUT1R Volume */ | ||
| 1189 | 0x00E4, /* R106 - OUT2L Volume */ | ||
| 1190 | 0x02E4, /* R107 - OUT2R Volume */ | ||
| 1191 | 0x0000, /* R108 */ | ||
| 1192 | 0x0000, /* R109 */ | ||
| 1193 | 0x0000, /* R110 */ | ||
| 1194 | 0x0000, /* R111 - BEEP Volume */ | ||
| 1195 | 0x0A00, /* R112 - AI Formating */ | ||
| 1196 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 1197 | 0x0020, /* R114 - AI ADC Control */ | ||
| 1198 | 0x0020, /* R115 - AI DAC Control */ | ||
| 1199 | 0x0000, /* R116 */ | ||
| 1200 | 0x0000, /* R117 */ | ||
| 1201 | 0x0000, /* R118 */ | ||
| 1202 | 0x0000, /* R119 */ | ||
| 1203 | 0x0000, /* R120 */ | ||
| 1204 | 0x0000, /* R121 */ | ||
| 1205 | 0x0000, /* R122 */ | ||
| 1206 | 0x0000, /* R123 */ | ||
| 1207 | 0x0000, /* R124 */ | ||
| 1208 | 0x0000, /* R125 */ | ||
| 1209 | 0x0000, /* R126 */ | ||
| 1210 | 0x0000, /* R127 */ | ||
| 1211 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 1212 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 1213 | 0x0000, /* R130 - GPIO Pull down Control */ | ||
| 1214 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 1215 | 0x0000, /* R132 */ | ||
| 1216 | 0x0000, /* R133 - GPIO Control */ | ||
| 1217 | 0x0FFC, /* R134 - GPIO Configuration (i/o) */ | ||
| 1218 | 0x0FFC, /* R135 - GPIO Pin Polarity / Type */ | ||
| 1219 | 0x0000, /* R136 */ | ||
| 1220 | 0x0000, /* R137 */ | ||
| 1221 | 0x0000, /* R138 */ | ||
| 1222 | 0x0000, /* R139 */ | ||
| 1223 | 0x0013, /* R140 - GPIO Function Select 1 */ | ||
| 1224 | 0x0000, /* R141 - GPIO Function Select 2 */ | ||
| 1225 | 0x0000, /* R142 - GPIO Function Select 3 */ | ||
| 1226 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 1227 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 1228 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 1229 | 0x0000, /* R146 */ | ||
| 1230 | 0x0000, /* R147 */ | ||
| 1231 | 0x0000, /* R148 */ | ||
| 1232 | 0x0000, /* R149 */ | ||
| 1233 | 0x0000, /* R150 */ | ||
| 1234 | 0x0000, /* R151 */ | ||
| 1235 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 1236 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 1237 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 1238 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 1239 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 1240 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 1241 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 1242 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 1243 | 0x0000, /* R160 */ | ||
| 1244 | 0x0000, /* R161 */ | ||
| 1245 | 0x0000, /* R162 */ | ||
| 1246 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 1247 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 1248 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 1249 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 1250 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 1251 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 1252 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 1253 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 1254 | 0x0000, /* R171 */ | ||
| 1255 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 1256 | 0x0000, /* R173 - CSA Flash control */ | ||
| 1257 | 0x0000, /* R174 */ | ||
| 1258 | 0x0000, /* R175 */ | ||
| 1259 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 1260 | 0x032D, /* R177 - DCDC Active options */ | ||
| 1261 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 1262 | 0x0025, /* R179 - Power-check comparator */ | ||
| 1263 | 0x000E, /* R180 - DCDC1 Control */ | ||
| 1264 | 0x0000, /* R181 - DCDC1 Timeouts */ | ||
| 1265 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 1266 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 1267 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 1268 | 0x0000, /* R185 */ | ||
| 1269 | 0x0000, /* R186 - DCDC3 Control */ | ||
| 1270 | 0x0000, /* R187 - DCDC3 Timeouts */ | ||
| 1271 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 1272 | 0x0000, /* R189 - DCDC4 Control */ | ||
| 1273 | 0x0000, /* R190 - DCDC4 Timeouts */ | ||
| 1274 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 1275 | 0x0008, /* R192 */ | ||
| 1276 | 0x0000, /* R193 */ | ||
| 1277 | 0x0000, /* R194 */ | ||
| 1278 | 0x0000, /* R195 */ | ||
| 1279 | 0x0000, /* R196 */ | ||
| 1280 | 0x0006, /* R197 */ | ||
| 1281 | 0x0000, /* R198 */ | ||
| 1282 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 1283 | 0x001C, /* R200 - LDO1 Control */ | ||
| 1284 | 0x0000, /* R201 - LDO1 Timeouts */ | ||
| 1285 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 1286 | 0x001B, /* R203 - LDO2 Control */ | ||
| 1287 | 0x0000, /* R204 - LDO2 Timeouts */ | ||
| 1288 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 1289 | 0x001B, /* R206 - LDO3 Control */ | ||
| 1290 | 0x0000, /* R207 - LDO3 Timeouts */ | ||
| 1291 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 1292 | 0x001B, /* R209 - LDO4 Control */ | ||
| 1293 | 0x0000, /* R210 - LDO4 Timeouts */ | ||
| 1294 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 1295 | 0x0000, /* R212 */ | ||
| 1296 | 0x0000, /* R213 */ | ||
| 1297 | 0x0000, /* R214 */ | ||
| 1298 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 1299 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 1300 | 0x0000, /* R217 - OSC Control */ | ||
| 1301 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 1302 | 0x0000, /* R219 - Security1 */ | ||
| 1303 | 0x4000, /* R220 */ | ||
| 1304 | 0x0000, /* R221 */ | ||
| 1305 | 0x0000, /* R222 */ | ||
| 1306 | 0x0000, /* R223 */ | ||
| 1307 | 0x0000, /* R224 - Signal overrides */ | ||
| 1308 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 1309 | 0x0000, /* R226 - Charger Overides/status */ | ||
| 1310 | 0x0000, /* R227 - misc overrides */ | ||
| 1311 | 0x0000, /* R228 - Supply overrides/status 1 */ | ||
| 1312 | 0x0000, /* R229 - Supply overrides/status 2 */ | ||
| 1313 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 1314 | 0x0000, /* R231 - comparotor overrides */ | ||
| 1315 | 0x0000, /* R232 */ | ||
| 1316 | 0x0000, /* R233 - State Machine status */ | ||
| 1317 | 0x1200, /* R234 - FLL Test 1 */ | ||
| 1318 | 0x0000, /* R235 */ | ||
| 1319 | 0x8000, /* R236 */ | ||
| 1320 | 0x0000, /* R237 */ | ||
| 1321 | 0x0000, /* R238 */ | ||
| 1322 | 0x0000, /* R239 */ | ||
| 1323 | 0x0003, /* R240 */ | ||
| 1324 | 0x0000, /* R241 */ | ||
| 1325 | 0x0000, /* R242 */ | ||
| 1326 | 0x0004, /* R243 */ | ||
| 1327 | 0x0300, /* R244 */ | ||
| 1328 | 0x0000, /* R245 */ | ||
| 1329 | 0x0200, /* R246 */ | ||
| 1330 | 0x0000, /* R247 */ | ||
| 1331 | 0x1000, /* R248 - DCDC1 Test Controls */ | ||
| 1332 | 0x1000, /* R249 */ | ||
| 1333 | 0x1000, /* R250 - DCDC3 Test Controls */ | ||
| 1334 | 0x1000, /* R251 - DCDC4 Test Controls */ | ||
| 1335 | }; | ||
| 1336 | #endif | ||
| 1337 | |||
| 1338 | #ifdef CONFIG_MFD_WM8351_CONFIG_MODE_1 | ||
| 1339 | |||
| 1340 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 1341 | #define WM8350_HAVE_CONFIG_MODE | ||
| 1342 | |||
| 1343 | const u16 wm8351_mode1_defaults[] = { | ||
| 1344 | 0x6143, /* R0 - Reset/ID */ | ||
| 1345 | 0x0000, /* R1 - ID */ | ||
| 1346 | 0x0001, /* R2 - Revision */ | ||
| 1347 | 0x1C02, /* R3 - System Control 1 */ | ||
| 1348 | 0x0204, /* R4 - System Control 2 */ | ||
| 1349 | 0x0000, /* R5 - System Hibernate */ | ||
| 1350 | 0x8A00, /* R6 - Interface Control */ | ||
| 1351 | 0x0000, /* R7 */ | ||
| 1352 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 1353 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 1354 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 1355 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 1356 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 1357 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 1358 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 1359 | 0x0000, /* R15 */ | ||
| 1360 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 1361 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 1362 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 1363 | 0x1400, /* R19 - RTC Year */ | ||
| 1364 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 1365 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 1366 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 1367 | 0x0320, /* R23 - RTC Time Control */ | ||
| 1368 | 0x0000, /* R24 - System Interrupts */ | ||
| 1369 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 1370 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 1371 | 0x0000, /* R27 */ | ||
| 1372 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 1373 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 1374 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 1375 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 1376 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 1377 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 1378 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 1379 | 0x0000, /* R35 */ | ||
| 1380 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 1381 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 1382 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 1383 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 1384 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 1385 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 1386 | 0x3A00, /* R42 - FLL Control 1 */ | ||
| 1387 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 1388 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 1389 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 1390 | 0x0000, /* R46 */ | ||
| 1391 | 0x0000, /* R47 */ | ||
| 1392 | 0x0000, /* R48 - DAC Control */ | ||
| 1393 | 0x0000, /* R49 */ | ||
| 1394 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 1395 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 1396 | 0x0000, /* R52 */ | ||
| 1397 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 1398 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 1399 | 0x0000, /* R55 */ | ||
| 1400 | 0x0000, /* R56 */ | ||
| 1401 | 0x0000, /* R57 */ | ||
| 1402 | 0x4000, /* R58 - DAC Mute */ | ||
| 1403 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 1404 | 0x0000, /* R60 - DAC Side */ | ||
| 1405 | 0x0000, /* R61 */ | ||
| 1406 | 0x0000, /* R62 */ | ||
| 1407 | 0x0000, /* R63 */ | ||
| 1408 | 0x8000, /* R64 - ADC Control */ | ||
| 1409 | 0x0000, /* R65 */ | ||
| 1410 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 1411 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 1412 | 0x0000, /* R68 - ADC Divider */ | ||
| 1413 | 0x0000, /* R69 */ | ||
| 1414 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 1415 | 0x0000, /* R71 */ | ||
| 1416 | 0x0303, /* R72 - Input Control */ | ||
| 1417 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 1418 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 1419 | 0x0000, /* R75 */ | ||
| 1420 | 0x0000, /* R76 - Output Control */ | ||
| 1421 | 0x0000, /* R77 - Jack Detect */ | ||
| 1422 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 1423 | 0x0000, /* R79 */ | ||
| 1424 | 0x0040, /* R80 - Left Input Volume */ | ||
| 1425 | 0x0040, /* R81 - Right Input Volume */ | ||
| 1426 | 0x0000, /* R82 */ | ||
| 1427 | 0x0000, /* R83 */ | ||
| 1428 | 0x0000, /* R84 */ | ||
| 1429 | 0x0000, /* R85 */ | ||
| 1430 | 0x0000, /* R86 */ | ||
| 1431 | 0x0000, /* R87 */ | ||
| 1432 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 1433 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 1434 | 0x0000, /* R90 */ | ||
| 1435 | 0x0000, /* R91 */ | ||
| 1436 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 1437 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 1438 | 0x0000, /* R94 */ | ||
| 1439 | 0x0000, /* R95 */ | ||
| 1440 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 1441 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 1442 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 1443 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 1444 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 1445 | 0x0000, /* R101 */ | ||
| 1446 | 0x0000, /* R102 */ | ||
| 1447 | 0x0000, /* R103 */ | ||
| 1448 | 0x00E4, /* R104 - OUT1L Volume */ | ||
| 1449 | 0x00E4, /* R105 - OUT1R Volume */ | ||
| 1450 | 0x00E4, /* R106 - OUT2L Volume */ | ||
| 1451 | 0x02E4, /* R107 - OUT2R Volume */ | ||
| 1452 | 0x0000, /* R108 */ | ||
| 1453 | 0x0000, /* R109 */ | ||
| 1454 | 0x0000, /* R110 */ | ||
| 1455 | 0x0000, /* R111 - BEEP Volume */ | ||
| 1456 | 0x0A00, /* R112 - AI Formating */ | ||
| 1457 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 1458 | 0x0020, /* R114 - AI ADC Control */ | ||
| 1459 | 0x0020, /* R115 - AI DAC Control */ | ||
| 1460 | 0x0000, /* R116 */ | ||
| 1461 | 0x0000, /* R117 */ | ||
| 1462 | 0x0000, /* R118 */ | ||
| 1463 | 0x0000, /* R119 */ | ||
| 1464 | 0x0000, /* R120 */ | ||
| 1465 | 0x0000, /* R121 */ | ||
| 1466 | 0x0000, /* R122 */ | ||
| 1467 | 0x0000, /* R123 */ | ||
| 1468 | 0x0000, /* R124 */ | ||
| 1469 | 0x0000, /* R125 */ | ||
| 1470 | 0x0000, /* R126 */ | ||
| 1471 | 0x0000, /* R127 */ | ||
| 1472 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 1473 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 1474 | 0x0000, /* R130 - GPIO Pull down Control */ | ||
| 1475 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 1476 | 0x0000, /* R132 */ | ||
| 1477 | 0x0000, /* R133 - GPIO Control */ | ||
| 1478 | 0x0CFB, /* R134 - GPIO Configuration (i/o) */ | ||
| 1479 | 0x0C1F, /* R135 - GPIO Pin Polarity / Type */ | ||
| 1480 | 0x0000, /* R136 */ | ||
| 1481 | 0x0000, /* R137 */ | ||
| 1482 | 0x0000, /* R138 */ | ||
| 1483 | 0x0000, /* R139 */ | ||
| 1484 | 0x0300, /* R140 - GPIO Function Select 1 */ | ||
| 1485 | 0x1110, /* R141 - GPIO Function Select 2 */ | ||
| 1486 | 0x0013, /* R142 - GPIO Function Select 3 */ | ||
| 1487 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 1488 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 1489 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 1490 | 0x0000, /* R146 */ | ||
| 1491 | 0x0000, /* R147 */ | ||
| 1492 | 0x0000, /* R148 */ | ||
| 1493 | 0x0000, /* R149 */ | ||
| 1494 | 0x0000, /* R150 */ | ||
| 1495 | 0x0000, /* R151 */ | ||
| 1496 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 1497 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 1498 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 1499 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 1500 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 1501 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 1502 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 1503 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 1504 | 0x0000, /* R160 */ | ||
| 1505 | 0x0000, /* R161 */ | ||
| 1506 | 0x0000, /* R162 */ | ||
| 1507 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 1508 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 1509 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 1510 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 1511 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 1512 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 1513 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 1514 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 1515 | 0x0000, /* R171 */ | ||
| 1516 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 1517 | 0x0000, /* R173 - CSA Flash control */ | ||
| 1518 | 0x0000, /* R174 */ | ||
| 1519 | 0x0000, /* R175 */ | ||
| 1520 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 1521 | 0x032D, /* R177 - DCDC Active options */ | ||
| 1522 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 1523 | 0x0025, /* R179 - Power-check comparator */ | ||
| 1524 | 0x000E, /* R180 - DCDC1 Control */ | ||
| 1525 | 0x0C00, /* R181 - DCDC1 Timeouts */ | ||
| 1526 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 1527 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 1528 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 1529 | 0x0000, /* R185 */ | ||
| 1530 | 0x0026, /* R186 - DCDC3 Control */ | ||
| 1531 | 0x0400, /* R187 - DCDC3 Timeouts */ | ||
| 1532 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 1533 | 0x0062, /* R189 - DCDC4 Control */ | ||
| 1534 | 0x0800, /* R190 - DCDC4 Timeouts */ | ||
| 1535 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 1536 | 0x0008, /* R192 */ | ||
| 1537 | 0x0000, /* R193 */ | ||
| 1538 | 0x0000, /* R194 */ | ||
| 1539 | 0x000A, /* R195 */ | ||
| 1540 | 0x1000, /* R196 */ | ||
| 1541 | 0x0006, /* R197 */ | ||
| 1542 | 0x0000, /* R198 */ | ||
| 1543 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 1544 | 0x0006, /* R200 - LDO1 Control */ | ||
| 1545 | 0x0000, /* R201 - LDO1 Timeouts */ | ||
| 1546 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 1547 | 0x0010, /* R203 - LDO2 Control */ | ||
| 1548 | 0x0C00, /* R204 - LDO2 Timeouts */ | ||
| 1549 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 1550 | 0x001F, /* R206 - LDO3 Control */ | ||
| 1551 | 0x0800, /* R207 - LDO3 Timeouts */ | ||
| 1552 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 1553 | 0x000A, /* R209 - LDO4 Control */ | ||
| 1554 | 0x0800, /* R210 - LDO4 Timeouts */ | ||
| 1555 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 1556 | 0x0000, /* R212 */ | ||
| 1557 | 0x0000, /* R213 */ | ||
| 1558 | 0x0000, /* R214 */ | ||
| 1559 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 1560 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 1561 | 0x0000, /* R217 - OSC Control */ | ||
| 1562 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 1563 | 0x0000, /* R219 - Security1 */ | ||
| 1564 | 0x4000, /* R220 */ | ||
| 1565 | 0x0000, /* R221 */ | ||
| 1566 | 0x0000, /* R222 */ | ||
| 1567 | 0x0000, /* R223 */ | ||
| 1568 | 0x0000, /* R224 - Signal overrides */ | ||
| 1569 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 1570 | 0x0000, /* R226 - Charger Overides/status */ | ||
| 1571 | 0x0000, /* R227 - misc overrides */ | ||
| 1572 | 0x0000, /* R228 - Supply overrides/status 1 */ | ||
| 1573 | 0x0000, /* R229 - Supply overrides/status 2 */ | ||
| 1574 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 1575 | 0x0000, /* R231 - comparotor overrides */ | ||
| 1576 | 0x0000, /* R232 */ | ||
| 1577 | 0x0000, /* R233 - State Machine status */ | ||
| 1578 | 0x1200, /* R234 - FLL Test 1 */ | ||
| 1579 | 0x0000, /* R235 */ | ||
| 1580 | 0x8000, /* R236 */ | ||
| 1581 | 0x0000, /* R237 */ | ||
| 1582 | 0x0000, /* R238 */ | ||
| 1583 | 0x0000, /* R239 */ | ||
| 1584 | 0x0003, /* R240 */ | ||
| 1585 | 0x0000, /* R241 */ | ||
| 1586 | 0x0000, /* R242 */ | ||
| 1587 | 0x0004, /* R243 */ | ||
| 1588 | 0x0300, /* R244 */ | ||
| 1589 | 0x0000, /* R245 */ | ||
| 1590 | 0x0200, /* R246 */ | ||
| 1591 | 0x1000, /* R247 */ | ||
| 1592 | 0x1000, /* R248 - DCDC1 Test Controls */ | ||
| 1593 | 0x1000, /* R249 */ | ||
| 1594 | 0x1000, /* R250 - DCDC3 Test Controls */ | ||
| 1595 | 0x1000, /* R251 - DCDC4 Test Controls */ | ||
| 1596 | }; | ||
| 1597 | #endif | ||
| 1598 | |||
| 1599 | #ifdef CONFIG_MFD_WM8351_CONFIG_MODE_2 | ||
| 1600 | |||
| 1601 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 1602 | #define WM8350_HAVE_CONFIG_MODE | ||
| 1603 | |||
| 1604 | const u16 wm8351_mode2_defaults[] = { | ||
| 1605 | 0x6143, /* R0 - Reset/ID */ | ||
| 1606 | 0x0000, /* R1 - ID */ | ||
| 1607 | 0x0001, /* R2 - Revision */ | ||
| 1608 | 0x1C02, /* R3 - System Control 1 */ | ||
| 1609 | 0x0214, /* R4 - System Control 2 */ | ||
| 1610 | 0x0000, /* R5 - System Hibernate */ | ||
| 1611 | 0x8A00, /* R6 - Interface Control */ | ||
| 1612 | 0x0000, /* R7 */ | ||
| 1613 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 1614 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 1615 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 1616 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 1617 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 1618 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 1619 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 1620 | 0x0000, /* R15 */ | ||
| 1621 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 1622 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 1623 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 1624 | 0x1400, /* R19 - RTC Year */ | ||
| 1625 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 1626 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 1627 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 1628 | 0x0320, /* R23 - RTC Time Control */ | ||
| 1629 | 0x0000, /* R24 - System Interrupts */ | ||
| 1630 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 1631 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 1632 | 0x0000, /* R27 */ | ||
| 1633 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 1634 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 1635 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 1636 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 1637 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 1638 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 1639 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 1640 | 0x0000, /* R35 */ | ||
| 1641 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 1642 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 1643 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 1644 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 1645 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 1646 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 1647 | 0x3A00, /* R42 - FLL Control 1 */ | ||
| 1648 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 1649 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 1650 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 1651 | 0x0000, /* R46 */ | ||
| 1652 | 0x0000, /* R47 */ | ||
| 1653 | 0x0000, /* R48 - DAC Control */ | ||
| 1654 | 0x0000, /* R49 */ | ||
| 1655 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 1656 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 1657 | 0x0000, /* R52 */ | ||
| 1658 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 1659 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 1660 | 0x0000, /* R55 */ | ||
| 1661 | 0x0000, /* R56 */ | ||
| 1662 | 0x0000, /* R57 */ | ||
| 1663 | 0x4000, /* R58 - DAC Mute */ | ||
| 1664 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 1665 | 0x0000, /* R60 - DAC Side */ | ||
| 1666 | 0x0000, /* R61 */ | ||
| 1667 | 0x0000, /* R62 */ | ||
| 1668 | 0x0000, /* R63 */ | ||
| 1669 | 0x8000, /* R64 - ADC Control */ | ||
| 1670 | 0x0000, /* R65 */ | ||
| 1671 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 1672 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 1673 | 0x0000, /* R68 - ADC Divider */ | ||
| 1674 | 0x0000, /* R69 */ | ||
| 1675 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 1676 | 0x0000, /* R71 */ | ||
| 1677 | 0x0303, /* R72 - Input Control */ | ||
| 1678 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 1679 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 1680 | 0x0000, /* R75 */ | ||
| 1681 | 0x0000, /* R76 - Output Control */ | ||
| 1682 | 0x0000, /* R77 - Jack Detect */ | ||
| 1683 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 1684 | 0x0000, /* R79 */ | ||
| 1685 | 0x0040, /* R80 - Left Input Volume */ | ||
| 1686 | 0x0040, /* R81 - Right Input Volume */ | ||
| 1687 | 0x0000, /* R82 */ | ||
| 1688 | 0x0000, /* R83 */ | ||
| 1689 | 0x0000, /* R84 */ | ||
| 1690 | 0x0000, /* R85 */ | ||
| 1691 | 0x0000, /* R86 */ | ||
| 1692 | 0x0000, /* R87 */ | ||
| 1693 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 1694 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 1695 | 0x0000, /* R90 */ | ||
| 1696 | 0x0000, /* R91 */ | ||
| 1697 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 1698 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 1699 | 0x0000, /* R94 */ | ||
| 1700 | 0x0000, /* R95 */ | ||
| 1701 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 1702 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 1703 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 1704 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 1705 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 1706 | 0x0000, /* R101 */ | ||
| 1707 | 0x0000, /* R102 */ | ||
| 1708 | 0x0000, /* R103 */ | ||
| 1709 | 0x00E4, /* R104 - OUT1L Volume */ | ||
| 1710 | 0x00E4, /* R105 - OUT1R Volume */ | ||
| 1711 | 0x00E4, /* R106 - OUT2L Volume */ | ||
| 1712 | 0x02E4, /* R107 - OUT2R Volume */ | ||
| 1713 | 0x0000, /* R108 */ | ||
| 1714 | 0x0000, /* R109 */ | ||
| 1715 | 0x0000, /* R110 */ | ||
| 1716 | 0x0000, /* R111 - BEEP Volume */ | ||
| 1717 | 0x0A00, /* R112 - AI Formating */ | ||
| 1718 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 1719 | 0x0020, /* R114 - AI ADC Control */ | ||
| 1720 | 0x0020, /* R115 - AI DAC Control */ | ||
| 1721 | 0x0000, /* R116 */ | ||
| 1722 | 0x0000, /* R117 */ | ||
| 1723 | 0x0000, /* R118 */ | ||
| 1724 | 0x0000, /* R119 */ | ||
| 1725 | 0x0000, /* R120 */ | ||
| 1726 | 0x0000, /* R121 */ | ||
| 1727 | 0x0000, /* R122 */ | ||
| 1728 | 0x0000, /* R123 */ | ||
| 1729 | 0x0000, /* R124 */ | ||
| 1730 | 0x0000, /* R125 */ | ||
| 1731 | 0x0000, /* R126 */ | ||
| 1732 | 0x0000, /* R127 */ | ||
| 1733 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 1734 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 1735 | 0x0110, /* R130 - GPIO Pull down Control */ | ||
| 1736 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 1737 | 0x0000, /* R132 */ | ||
| 1738 | 0x0000, /* R133 - GPIO Control */ | ||
| 1739 | 0x09FA, /* R134 - GPIO Configuration (i/o) */ | ||
| 1740 | 0x0DF6, /* R135 - GPIO Pin Polarity / Type */ | ||
| 1741 | 0x0000, /* R136 */ | ||
| 1742 | 0x0000, /* R137 */ | ||
| 1743 | 0x0000, /* R138 */ | ||
| 1744 | 0x0000, /* R139 */ | ||
| 1745 | 0x1310, /* R140 - GPIO Function Select 1 */ | ||
| 1746 | 0x0003, /* R141 - GPIO Function Select 2 */ | ||
| 1747 | 0x2000, /* R142 - GPIO Function Select 3 */ | ||
| 1748 | 0x0000, /* R143 - GPIO Function Select 4 */ | ||
| 1749 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 1750 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 1751 | 0x0000, /* R146 */ | ||
| 1752 | 0x0000, /* R147 */ | ||
| 1753 | 0x0000, /* R148 */ | ||
| 1754 | 0x0000, /* R149 */ | ||
| 1755 | 0x0000, /* R150 */ | ||
| 1756 | 0x0000, /* R151 */ | ||
| 1757 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 1758 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 1759 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 1760 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 1761 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 1762 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 1763 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 1764 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 1765 | 0x0000, /* R160 */ | ||
| 1766 | 0x0000, /* R161 */ | ||
| 1767 | 0x0000, /* R162 */ | ||
| 1768 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 1769 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 1770 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 1771 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 1772 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 1773 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 1774 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 1775 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 1776 | 0x0000, /* R171 */ | ||
| 1777 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 1778 | 0x0000, /* R173 - CSA Flash control */ | ||
| 1779 | 0x0000, /* R174 */ | ||
| 1780 | 0x0000, /* R175 */ | ||
| 1781 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 1782 | 0x032D, /* R177 - DCDC Active options */ | ||
| 1783 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 1784 | 0x0025, /* R179 - Power-check comparator */ | ||
| 1785 | 0x001A, /* R180 - DCDC1 Control */ | ||
| 1786 | 0x0800, /* R181 - DCDC1 Timeouts */ | ||
| 1787 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 1788 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 1789 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 1790 | 0x0000, /* R185 */ | ||
| 1791 | 0x0056, /* R186 - DCDC3 Control */ | ||
| 1792 | 0x0400, /* R187 - DCDC3 Timeouts */ | ||
| 1793 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 1794 | 0x0026, /* R189 - DCDC4 Control */ | ||
| 1795 | 0x0C00, /* R190 - DCDC4 Timeouts */ | ||
| 1796 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 1797 | 0x0008, /* R192 */ | ||
| 1798 | 0x0000, /* R193 */ | ||
| 1799 | 0x0000, /* R194 */ | ||
| 1800 | 0x0026, /* R195 */ | ||
| 1801 | 0x0C00, /* R196 */ | ||
| 1802 | 0x0006, /* R197 */ | ||
| 1803 | 0x0000, /* R198 */ | ||
| 1804 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 1805 | 0x001C, /* R200 - LDO1 Control */ | ||
| 1806 | 0x0400, /* R201 - LDO1 Timeouts */ | ||
| 1807 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 1808 | 0x0010, /* R203 - LDO2 Control */ | ||
| 1809 | 0x0C00, /* R204 - LDO2 Timeouts */ | ||
| 1810 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 1811 | 0x0015, /* R206 - LDO3 Control */ | ||
| 1812 | 0x0000, /* R207 - LDO3 Timeouts */ | ||
| 1813 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 1814 | 0x001A, /* R209 - LDO4 Control */ | ||
| 1815 | 0x0000, /* R210 - LDO4 Timeouts */ | ||
| 1816 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 1817 | 0x0000, /* R212 */ | ||
| 1818 | 0x0000, /* R213 */ | ||
| 1819 | 0x0000, /* R214 */ | ||
| 1820 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 1821 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 1822 | 0x0000, /* R217 - OSC Control */ | ||
| 1823 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 1824 | 0x0000, /* R219 - Security1 */ | ||
| 1825 | 0x4000, /* R220 */ | ||
| 1826 | 0x0000, /* R221 */ | ||
| 1827 | 0x0000, /* R222 */ | ||
| 1828 | 0x0000, /* R223 */ | ||
| 1829 | 0x0000, /* R224 - Signal overrides */ | ||
| 1830 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 1831 | 0x0000, /* R226 - Charger Overides/status */ | ||
| 1832 | 0x0000, /* R227 - misc overrides */ | ||
| 1833 | 0x0000, /* R228 - Supply overrides/status 1 */ | ||
| 1834 | 0x0000, /* R229 - Supply overrides/status 2 */ | ||
| 1835 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 1836 | 0x0000, /* R231 - comparotor overrides */ | ||
| 1837 | 0x0000, /* R232 */ | ||
| 1838 | 0x0000, /* R233 - State Machine status */ | ||
| 1839 | 0x1200, /* R234 - FLL Test 1 */ | ||
| 1840 | 0x0000, /* R235 */ | ||
| 1841 | 0x8000, /* R236 */ | ||
| 1842 | 0x0000, /* R237 */ | ||
| 1843 | 0x0000, /* R238 */ | ||
| 1844 | 0x0000, /* R239 */ | ||
| 1845 | 0x0003, /* R240 */ | ||
| 1846 | 0x0000, /* R241 */ | ||
| 1847 | 0x0000, /* R242 */ | ||
| 1848 | 0x0004, /* R243 */ | ||
| 1849 | 0x0300, /* R244 */ | ||
| 1850 | 0x0000, /* R245 */ | ||
| 1851 | 0x0200, /* R246 */ | ||
| 1852 | 0x0000, /* R247 */ | ||
| 1853 | 0x1000, /* R248 - DCDC1 Test Controls */ | ||
| 1854 | 0x1000, /* R249 */ | ||
| 1855 | 0x1000, /* R250 - DCDC3 Test Controls */ | ||
| 1856 | 0x1000, /* R251 - DCDC4 Test Controls */ | ||
| 1857 | }; | ||
| 1858 | #endif | ||
| 1859 | |||
| 1860 | #ifdef CONFIG_MFD_WM8351_CONFIG_MODE_3 | ||
| 1861 | |||
| 1862 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 1863 | #define WM8350_HAVE_CONFIG_MODE | ||
| 1864 | |||
| 1865 | const u16 wm8351_mode3_defaults[] = { | ||
| 1866 | 0x6143, /* R0 - Reset/ID */ | ||
| 1867 | 0x0000, /* R1 - ID */ | ||
| 1868 | 0x0001, /* R2 - Revision */ | ||
| 1869 | 0x1C02, /* R3 - System Control 1 */ | ||
| 1870 | 0x0204, /* R4 - System Control 2 */ | ||
| 1871 | 0x0000, /* R5 - System Hibernate */ | ||
| 1872 | 0x8A00, /* R6 - Interface Control */ | ||
| 1873 | 0x0000, /* R7 */ | ||
| 1874 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 1875 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 1876 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 1877 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 1878 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 1879 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 1880 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 1881 | 0x0000, /* R15 */ | ||
| 1882 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 1883 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 1884 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 1885 | 0x1400, /* R19 - RTC Year */ | ||
| 1886 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 1887 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 1888 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 1889 | 0x0320, /* R23 - RTC Time Control */ | ||
| 1890 | 0x0000, /* R24 - System Interrupts */ | ||
| 1891 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 1892 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 1893 | 0x0000, /* R27 */ | ||
| 1894 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 1895 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 1896 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 1897 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 1898 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 1899 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 1900 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 1901 | 0x0000, /* R35 */ | ||
| 1902 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 1903 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 1904 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 1905 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 1906 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 1907 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 1908 | 0x3A00, /* R42 - FLL Control 1 */ | ||
| 1909 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 1910 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 1911 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 1912 | 0x0000, /* R46 */ | ||
| 1913 | 0x0000, /* R47 */ | ||
| 1914 | 0x0000, /* R48 - DAC Control */ | ||
| 1915 | 0x0000, /* R49 */ | ||
| 1916 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 1917 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 1918 | 0x0000, /* R52 */ | ||
| 1919 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 1920 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 1921 | 0x0000, /* R55 */ | ||
| 1922 | 0x0000, /* R56 */ | ||
| 1923 | 0x0000, /* R57 */ | ||
| 1924 | 0x4000, /* R58 - DAC Mute */ | ||
| 1925 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 1926 | 0x0000, /* R60 - DAC Side */ | ||
| 1927 | 0x0000, /* R61 */ | ||
| 1928 | 0x0000, /* R62 */ | ||
| 1929 | 0x0000, /* R63 */ | ||
| 1930 | 0x8000, /* R64 - ADC Control */ | ||
| 1931 | 0x0000, /* R65 */ | ||
| 1932 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 1933 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 1934 | 0x0000, /* R68 - ADC Divider */ | ||
| 1935 | 0x0000, /* R69 */ | ||
| 1936 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 1937 | 0x0000, /* R71 */ | ||
| 1938 | 0x0303, /* R72 - Input Control */ | ||
| 1939 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 1940 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 1941 | 0x0000, /* R75 */ | ||
| 1942 | 0x0000, /* R76 - Output Control */ | ||
| 1943 | 0x0000, /* R77 - Jack Detect */ | ||
| 1944 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 1945 | 0x0000, /* R79 */ | ||
| 1946 | 0x0040, /* R80 - Left Input Volume */ | ||
| 1947 | 0x0040, /* R81 - Right Input Volume */ | ||
| 1948 | 0x0000, /* R82 */ | ||
| 1949 | 0x0000, /* R83 */ | ||
| 1950 | 0x0000, /* R84 */ | ||
| 1951 | 0x0000, /* R85 */ | ||
| 1952 | 0x0000, /* R86 */ | ||
| 1953 | 0x0000, /* R87 */ | ||
| 1954 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 1955 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 1956 | 0x0000, /* R90 */ | ||
| 1957 | 0x0000, /* R91 */ | ||
| 1958 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 1959 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 1960 | 0x0000, /* R94 */ | ||
| 1961 | 0x0000, /* R95 */ | ||
| 1962 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 1963 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 1964 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 1965 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 1966 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 1967 | 0x0000, /* R101 */ | ||
| 1968 | 0x0000, /* R102 */ | ||
| 1969 | 0x0000, /* R103 */ | ||
| 1970 | 0x00E4, /* R104 - OUT1L Volume */ | ||
| 1971 | 0x00E4, /* R105 - OUT1R Volume */ | ||
| 1972 | 0x00E4, /* R106 - OUT2L Volume */ | ||
| 1973 | 0x02E4, /* R107 - OUT2R Volume */ | ||
| 1974 | 0x0000, /* R108 */ | ||
| 1975 | 0x0000, /* R109 */ | ||
| 1976 | 0x0000, /* R110 */ | ||
| 1977 | 0x0000, /* R111 - BEEP Volume */ | ||
| 1978 | 0x0A00, /* R112 - AI Formating */ | ||
| 1979 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 1980 | 0x0020, /* R114 - AI ADC Control */ | ||
| 1981 | 0x0020, /* R115 - AI DAC Control */ | ||
| 1982 | 0x0000, /* R116 */ | ||
| 1983 | 0x0000, /* R117 */ | ||
| 1984 | 0x0000, /* R118 */ | ||
| 1985 | 0x0000, /* R119 */ | ||
| 1986 | 0x0000, /* R120 */ | ||
| 1987 | 0x0000, /* R121 */ | ||
| 1988 | 0x0000, /* R122 */ | ||
| 1989 | 0x0000, /* R123 */ | ||
| 1990 | 0x0000, /* R124 */ | ||
| 1991 | 0x0000, /* R125 */ | ||
| 1992 | 0x0000, /* R126 */ | ||
| 1993 | 0x0000, /* R127 */ | ||
| 1994 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 1995 | 0x0010, /* R129 - GPIO Pin pull up Control */ | ||
| 1996 | 0x0000, /* R130 - GPIO Pull down Control */ | ||
| 1997 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 1998 | 0x0000, /* R132 */ | ||
| 1999 | 0x0000, /* R133 - GPIO Control */ | ||
| 2000 | 0x0BFB, /* R134 - GPIO Configuration (i/o) */ | ||
| 2001 | 0x0FFD, /* R135 - GPIO Pin Polarity / Type */ | ||
| 2002 | 0x0000, /* R136 */ | ||
| 2003 | 0x0000, /* R137 */ | ||
| 2004 | 0x0000, /* R138 */ | ||
| 2005 | 0x0000, /* R139 */ | ||
| 2006 | 0x0310, /* R140 - GPIO Function Select 1 */ | ||
| 2007 | 0x0001, /* R141 - GPIO Function Select 2 */ | ||
| 2008 | 0x2300, /* R142 - GPIO Function Select 3 */ | ||
| 2009 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 2010 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 2011 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 2012 | 0x0000, /* R146 */ | ||
| 2013 | 0x0000, /* R147 */ | ||
| 2014 | 0x0000, /* R148 */ | ||
| 2015 | 0x0000, /* R149 */ | ||
| 2016 | 0x0000, /* R150 */ | ||
| 2017 | 0x0000, /* R151 */ | ||
| 2018 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 2019 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 2020 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 2021 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 2022 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 2023 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 2024 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 2025 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 2026 | 0x0000, /* R160 */ | ||
| 2027 | 0x0000, /* R161 */ | ||
| 2028 | 0x0000, /* R162 */ | ||
| 2029 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 2030 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 2031 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 2032 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 2033 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 2034 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 2035 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 2036 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 2037 | 0x0000, /* R171 */ | ||
| 2038 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 2039 | 0x0000, /* R173 - CSA Flash control */ | ||
| 2040 | 0x0000, /* R174 */ | ||
| 2041 | 0x0000, /* R175 */ | ||
| 2042 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 2043 | 0x032D, /* R177 - DCDC Active options */ | ||
| 2044 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 2045 | 0x0025, /* R179 - Power-check comparator */ | ||
| 2046 | 0x000E, /* R180 - DCDC1 Control */ | ||
| 2047 | 0x0400, /* R181 - DCDC1 Timeouts */ | ||
| 2048 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 2049 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 2050 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 2051 | 0x0000, /* R185 */ | ||
| 2052 | 0x0026, /* R186 - DCDC3 Control */ | ||
| 2053 | 0x0800, /* R187 - DCDC3 Timeouts */ | ||
| 2054 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 2055 | 0x0062, /* R189 - DCDC4 Control */ | ||
| 2056 | 0x1400, /* R190 - DCDC4 Timeouts */ | ||
| 2057 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 2058 | 0x0008, /* R192 */ | ||
| 2059 | 0x0000, /* R193 */ | ||
| 2060 | 0x0000, /* R194 */ | ||
| 2061 | 0x0026, /* R195 */ | ||
| 2062 | 0x0400, /* R196 */ | ||
| 2063 | 0x0006, /* R197 */ | ||
| 2064 | 0x0000, /* R198 */ | ||
| 2065 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 2066 | 0x0006, /* R200 - LDO1 Control */ | ||
| 2067 | 0x0C00, /* R201 - LDO1 Timeouts */ | ||
| 2068 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 2069 | 0x0016, /* R203 - LDO2 Control */ | ||
| 2070 | 0x0000, /* R204 - LDO2 Timeouts */ | ||
| 2071 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 2072 | 0x0019, /* R206 - LDO3 Control */ | ||
| 2073 | 0x0000, /* R207 - LDO3 Timeouts */ | ||
| 2074 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 2075 | 0x001A, /* R209 - LDO4 Control */ | ||
| 2076 | 0x1000, /* R210 - LDO4 Timeouts */ | ||
| 2077 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 2078 | 0x0000, /* R212 */ | ||
| 2079 | 0x0000, /* R213 */ | ||
| 2080 | 0x0000, /* R214 */ | ||
| 2081 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 2082 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 2083 | 0x0000, /* R217 - OSC Control */ | ||
| 2084 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 2085 | 0x0000, /* R219 - Security1 */ | ||
| 2086 | 0x4000, /* R220 */ | ||
| 2087 | 0x0000, /* R221 */ | ||
| 2088 | 0x0000, /* R222 */ | ||
| 2089 | 0x0000, /* R223 */ | ||
| 2090 | 0x0000, /* R224 - Signal overrides */ | ||
| 2091 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 2092 | 0x0000, /* R226 - Charger Overides/status */ | ||
| 2093 | 0x0000, /* R227 - misc overrides */ | ||
| 2094 | 0x0000, /* R228 - Supply overrides/status 1 */ | ||
| 2095 | 0x0000, /* R229 - Supply overrides/status 2 */ | ||
| 2096 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 2097 | 0x0000, /* R231 - comparotor overrides */ | ||
| 2098 | 0x0000, /* R232 */ | ||
| 2099 | 0x0000, /* R233 - State Machine status */ | ||
| 2100 | 0x1200, /* R234 - FLL Test 1 */ | ||
| 2101 | 0x0000, /* R235 */ | ||
| 2102 | 0x8000, /* R236 */ | ||
| 2103 | 0x0000, /* R237 */ | ||
| 2104 | 0x0000, /* R238 */ | ||
| 2105 | 0x0000, /* R239 */ | ||
| 2106 | 0x0003, /* R240 */ | ||
| 2107 | 0x0000, /* R241 */ | ||
| 2108 | 0x0000, /* R242 */ | ||
| 2109 | 0x0004, /* R243 */ | ||
| 2110 | 0x0300, /* R244 */ | ||
| 2111 | 0x0000, /* R245 */ | ||
| 2112 | 0x0200, /* R246 */ | ||
| 2113 | 0x0000, /* R247 */ | ||
| 2114 | 0x1000, /* R248 - DCDC1 Test Controls */ | ||
| 2115 | 0x1000, /* R249 */ | ||
| 2116 | 0x1000, /* R250 - DCDC3 Test Controls */ | ||
| 2117 | 0x1000, /* R251 - DCDC4 Test Controls */ | ||
| 2118 | }; | ||
| 2119 | #endif | ||
| 2120 | |||
| 2121 | #ifdef CONFIG_MFD_WM8352_CONFIG_MODE_0 | ||
| 2122 | |||
| 2123 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 2124 | #define WM8350_HAVE_CONFIG_MODE | ||
| 2125 | |||
| 2126 | const u16 wm8352_mode0_defaults[] = { | ||
| 2127 | 0x6143, /* R0 - Reset/ID */ | ||
| 2128 | 0x0000, /* R1 - ID */ | ||
| 2129 | 0x0002, /* R2 - Revision */ | ||
| 2130 | 0x1C02, /* R3 - System Control 1 */ | ||
| 2131 | 0x0004, /* R4 - System Control 2 */ | ||
| 2132 | 0x0000, /* R5 - System Hibernate */ | ||
| 2133 | 0x8A00, /* R6 - Interface Control */ | ||
| 2134 | 0x0000, /* R7 */ | ||
| 2135 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 2136 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 2137 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 2138 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 2139 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 2140 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 2141 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 2142 | 0x0000, /* R15 */ | ||
| 2143 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 2144 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 2145 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 2146 | 0x1400, /* R19 - RTC Year */ | ||
| 2147 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 2148 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 2149 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 2150 | 0x0320, /* R23 - RTC Time Control */ | ||
| 2151 | 0x0000, /* R24 - System Interrupts */ | ||
| 2152 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 2153 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 2154 | 0x0000, /* R27 */ | ||
| 2155 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 2156 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 2157 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 2158 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 2159 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 2160 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 2161 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 2162 | 0x0000, /* R35 */ | ||
| 2163 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 2164 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 2165 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 2166 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 2167 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 2168 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 2169 | 0x3A00, /* R42 - FLL Control 1 */ | ||
| 2170 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 2171 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 2172 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 2173 | 0x0000, /* R46 */ | ||
| 2174 | 0x0000, /* R47 */ | ||
| 2175 | 0x0000, /* R48 - DAC Control */ | ||
| 2176 | 0x0000, /* R49 */ | ||
| 2177 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 2178 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 2179 | 0x0000, /* R52 */ | ||
| 2180 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 2181 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 2182 | 0x0000, /* R55 */ | ||
| 2183 | 0x0000, /* R56 */ | ||
| 2184 | 0x0000, /* R57 */ | ||
| 2185 | 0x4000, /* R58 - DAC Mute */ | ||
| 2186 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 2187 | 0x0000, /* R60 - DAC Side */ | ||
| 2188 | 0x0000, /* R61 */ | ||
| 2189 | 0x0000, /* R62 */ | ||
| 2190 | 0x0000, /* R63 */ | ||
| 2191 | 0x8000, /* R64 - ADC Control */ | ||
| 2192 | 0x0000, /* R65 */ | ||
| 2193 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 2194 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 2195 | 0x0000, /* R68 - ADC Divider */ | ||
| 2196 | 0x0000, /* R69 */ | ||
| 2197 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 2198 | 0x0000, /* R71 */ | ||
| 2199 | 0x0303, /* R72 - Input Control */ | ||
| 2200 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 2201 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 2202 | 0x0000, /* R75 */ | ||
| 2203 | 0x0000, /* R76 - Output Control */ | ||
| 2204 | 0x0000, /* R77 - Jack Detect */ | ||
| 2205 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 2206 | 0x0000, /* R79 */ | ||
| 2207 | 0x0040, /* R80 - Left Input Volume */ | ||
| 2208 | 0x0040, /* R81 - Right Input Volume */ | ||
| 2209 | 0x0000, /* R82 */ | ||
| 2210 | 0x0000, /* R83 */ | ||
| 2211 | 0x0000, /* R84 */ | ||
| 2212 | 0x0000, /* R85 */ | ||
| 2213 | 0x0000, /* R86 */ | ||
| 2214 | 0x0000, /* R87 */ | ||
| 2215 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 2216 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 2217 | 0x0000, /* R90 */ | ||
| 2218 | 0x0000, /* R91 */ | ||
| 2219 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 2220 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 2221 | 0x0000, /* R94 */ | ||
| 2222 | 0x0000, /* R95 */ | ||
| 2223 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 2224 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 2225 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 2226 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 2227 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 2228 | 0x0000, /* R101 */ | ||
| 2229 | 0x0000, /* R102 */ | ||
| 2230 | 0x0000, /* R103 */ | ||
| 2231 | 0x00E4, /* R104 - OUT1L Volume */ | ||
| 2232 | 0x00E4, /* R105 - OUT1R Volume */ | ||
| 2233 | 0x00E4, /* R106 - OUT2L Volume */ | ||
| 2234 | 0x02E4, /* R107 - OUT2R Volume */ | ||
| 2235 | 0x0000, /* R108 */ | ||
| 2236 | 0x0000, /* R109 */ | ||
| 2237 | 0x0000, /* R110 */ | ||
| 2238 | 0x0000, /* R111 - BEEP Volume */ | ||
| 2239 | 0x0A00, /* R112 - AI Formating */ | ||
| 2240 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 2241 | 0x0020, /* R114 - AI ADC Control */ | ||
| 2242 | 0x0020, /* R115 - AI DAC Control */ | ||
| 2243 | 0x0000, /* R116 */ | ||
| 2244 | 0x0000, /* R117 */ | ||
| 2245 | 0x0000, /* R118 */ | ||
| 2246 | 0x0000, /* R119 */ | ||
| 2247 | 0x0000, /* R120 */ | ||
| 2248 | 0x0000, /* R121 */ | ||
| 2249 | 0x0000, /* R122 */ | ||
| 2250 | 0x0000, /* R123 */ | ||
| 2251 | 0x0000, /* R124 */ | ||
| 2252 | 0x0000, /* R125 */ | ||
| 2253 | 0x0000, /* R126 */ | ||
| 2254 | 0x0000, /* R127 */ | ||
| 2255 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 2256 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 2257 | 0x0000, /* R130 - GPIO Pull down Control */ | ||
| 2258 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 2259 | 0x0000, /* R132 */ | ||
| 2260 | 0x0000, /* R133 - GPIO Control */ | ||
| 2261 | 0x0FFC, /* R134 - GPIO Configuration (i/o) */ | ||
| 2262 | 0x0FFC, /* R135 - GPIO Pin Polarity / Type */ | ||
| 2263 | 0x0000, /* R136 */ | ||
| 2264 | 0x0000, /* R137 */ | ||
| 2265 | 0x0000, /* R138 */ | ||
| 2266 | 0x0000, /* R139 */ | ||
| 2267 | 0x0013, /* R140 - GPIO Function Select 1 */ | ||
| 2268 | 0x0000, /* R141 - GPIO Function Select 2 */ | ||
| 2269 | 0x0000, /* R142 - GPIO Function Select 3 */ | ||
| 2270 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 2271 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 2272 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 2273 | 0x0000, /* R146 */ | ||
| 2274 | 0x0000, /* R147 */ | ||
| 2275 | 0x0000, /* R148 */ | ||
| 2276 | 0x0000, /* R149 */ | ||
| 2277 | 0x0000, /* R150 */ | ||
| 2278 | 0x0000, /* R151 */ | ||
| 2279 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 2280 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 2281 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 2282 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 2283 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 2284 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 2285 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 2286 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 2287 | 0x0000, /* R160 */ | ||
| 2288 | 0x0000, /* R161 */ | ||
| 2289 | 0x0000, /* R162 */ | ||
| 2290 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 2291 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 2292 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 2293 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 2294 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 2295 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 2296 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 2297 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 2298 | 0x0000, /* R171 */ | ||
| 2299 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 2300 | 0x0000, /* R173 - CSA Flash control */ | ||
| 2301 | 0x0000, /* R174 - Current Sink Driver B */ | ||
| 2302 | 0x0000, /* R175 - CSB Flash control */ | ||
| 2303 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 2304 | 0x032D, /* R177 - DCDC Active options */ | ||
| 2305 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 2306 | 0x0025, /* R179 - Power-check comparator */ | ||
| 2307 | 0x000E, /* R180 - DCDC1 Control */ | ||
| 2308 | 0x0000, /* R181 - DCDC1 Timeouts */ | ||
| 2309 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 2310 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 2311 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 2312 | 0x0000, /* R185 */ | ||
| 2313 | 0x0000, /* R186 - DCDC3 Control */ | ||
| 2314 | 0x0000, /* R187 - DCDC3 Timeouts */ | ||
| 2315 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 2316 | 0x0000, /* R189 - DCDC4 Control */ | ||
| 2317 | 0x0000, /* R190 - DCDC4 Timeouts */ | ||
| 2318 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 2319 | 0x0008, /* R192 - DCDC5 Control */ | ||
| 2320 | 0x0000, /* R193 - DCDC5 Timeouts */ | ||
| 2321 | 0x0000, /* R194 */ | ||
| 2322 | 0x0000, /* R195 - DCDC6 Control */ | ||
| 2323 | 0x0000, /* R196 - DCDC6 Timeouts */ | ||
| 2324 | 0x0006, /* R197 - DCDC6 Low Power */ | ||
| 2325 | 0x0000, /* R198 */ | ||
| 2326 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 2327 | 0x001C, /* R200 - LDO1 Control */ | ||
| 2328 | 0x0000, /* R201 - LDO1 Timeouts */ | ||
| 2329 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 2330 | 0x001B, /* R203 - LDO2 Control */ | ||
| 2331 | 0x0000, /* R204 - LDO2 Timeouts */ | ||
| 2332 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 2333 | 0x001B, /* R206 - LDO3 Control */ | ||
| 2334 | 0x0000, /* R207 - LDO3 Timeouts */ | ||
| 2335 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 2336 | 0x001B, /* R209 - LDO4 Control */ | ||
| 2337 | 0x0000, /* R210 - LDO4 Timeouts */ | ||
| 2338 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 2339 | 0x0000, /* R212 */ | ||
| 2340 | 0x0000, /* R213 */ | ||
| 2341 | 0x0000, /* R214 */ | ||
| 2342 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 2343 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 2344 | 0x0000, /* R217 - OSC Control */ | ||
| 2345 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 2346 | 0x0000, /* R219 - Security1 */ | ||
| 2347 | 0x4000, /* R220 */ | ||
| 2348 | 0x0000, /* R221 */ | ||
| 2349 | 0x0000, /* R222 */ | ||
| 2350 | 0x0000, /* R223 */ | ||
| 2351 | 0x0000, /* R224 - Signal overrides */ | ||
| 2352 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 2353 | 0x0000, /* R226 - Charger Overides/status */ | ||
| 2354 | 0x0000, /* R227 - misc overrides */ | ||
| 2355 | 0x0000, /* R228 - Supply overrides/status 1 */ | ||
| 2356 | 0x0000, /* R229 - Supply overrides/status 2 */ | ||
| 2357 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 2358 | 0x0000, /* R231 - comparotor overrides */ | ||
| 2359 | 0x0000, /* R232 */ | ||
| 2360 | 0x0000, /* R233 - State Machine status */ | ||
| 2361 | 0x1200, /* R234 */ | ||
| 2362 | 0x0000, /* R235 */ | ||
| 2363 | 0x8000, /* R236 */ | ||
| 2364 | 0x0000, /* R237 */ | ||
| 2365 | 0x0000, /* R238 */ | ||
| 2366 | 0x0000, /* R239 */ | ||
| 2367 | 0x0003, /* R240 */ | ||
| 2368 | 0x0000, /* R241 */ | ||
| 2369 | 0x0000, /* R242 */ | ||
| 2370 | 0x0004, /* R243 */ | ||
| 2371 | 0x0300, /* R244 */ | ||
| 2372 | 0x0000, /* R245 */ | ||
| 2373 | 0x0200, /* R246 */ | ||
| 2374 | 0x0000, /* R247 */ | ||
| 2375 | 0x1000, /* R248 - DCDC1 Test Controls */ | ||
| 2376 | 0x5000, /* R249 */ | ||
| 2377 | 0x1000, /* R250 - DCDC3 Test Controls */ | ||
| 2378 | 0x1000, /* R251 - DCDC4 Test Controls */ | ||
| 2379 | 0x5100, /* R252 */ | ||
| 2380 | 0x1000, /* R253 - DCDC6 Test Controls */ | ||
| 2381 | }; | ||
| 2382 | #endif | ||
| 2383 | |||
| 2384 | #ifdef CONFIG_MFD_WM8352_CONFIG_MODE_1 | ||
| 2385 | |||
| 2386 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 2387 | #define WM8350_HAVE_CONFIG_MODE | ||
| 2388 | |||
| 2389 | const u16 wm8352_mode1_defaults[] = { | ||
| 2390 | 0x6143, /* R0 - Reset/ID */ | ||
| 2391 | 0x0000, /* R1 - ID */ | ||
| 2392 | 0x0002, /* R2 - Revision */ | ||
| 2393 | 0x1C02, /* R3 - System Control 1 */ | ||
| 2394 | 0x0204, /* R4 - System Control 2 */ | ||
| 2395 | 0x0000, /* R5 - System Hibernate */ | ||
| 2396 | 0x8A00, /* R6 - Interface Control */ | ||
| 2397 | 0x0000, /* R7 */ | ||
| 2398 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 2399 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 2400 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 2401 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 2402 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 2403 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 2404 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 2405 | 0x0000, /* R15 */ | ||
| 2406 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 2407 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 2408 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 2409 | 0x1400, /* R19 - RTC Year */ | ||
| 2410 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 2411 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 2412 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 2413 | 0x0320, /* R23 - RTC Time Control */ | ||
| 2414 | 0x0000, /* R24 - System Interrupts */ | ||
| 2415 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 2416 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 2417 | 0x0000, /* R27 */ | ||
| 2418 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 2419 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 2420 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 2421 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 2422 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 2423 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 2424 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 2425 | 0x0000, /* R35 */ | ||
| 2426 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 2427 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 2428 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 2429 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 2430 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 2431 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 2432 | 0x3A00, /* R42 - FLL Control 1 */ | ||
| 2433 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 2434 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 2435 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 2436 | 0x0000, /* R46 */ | ||
| 2437 | 0x0000, /* R47 */ | ||
| 2438 | 0x0000, /* R48 - DAC Control */ | ||
| 2439 | 0x0000, /* R49 */ | ||
| 2440 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 2441 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 2442 | 0x0000, /* R52 */ | ||
| 2443 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 2444 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 2445 | 0x0000, /* R55 */ | ||
| 2446 | 0x0000, /* R56 */ | ||
| 2447 | 0x0000, /* R57 */ | ||
| 2448 | 0x4000, /* R58 - DAC Mute */ | ||
| 2449 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 2450 | 0x0000, /* R60 - DAC Side */ | ||
| 2451 | 0x0000, /* R61 */ | ||
| 2452 | 0x0000, /* R62 */ | ||
| 2453 | 0x0000, /* R63 */ | ||
| 2454 | 0x8000, /* R64 - ADC Control */ | ||
| 2455 | 0x0000, /* R65 */ | ||
| 2456 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 2457 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 2458 | 0x0000, /* R68 - ADC Divider */ | ||
| 2459 | 0x0000, /* R69 */ | ||
| 2460 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 2461 | 0x0000, /* R71 */ | ||
| 2462 | 0x0303, /* R72 - Input Control */ | ||
| 2463 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 2464 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 2465 | 0x0000, /* R75 */ | ||
| 2466 | 0x0000, /* R76 - Output Control */ | ||
| 2467 | 0x0000, /* R77 - Jack Detect */ | ||
| 2468 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 2469 | 0x0000, /* R79 */ | ||
| 2470 | 0x0040, /* R80 - Left Input Volume */ | ||
| 2471 | 0x0040, /* R81 - Right Input Volume */ | ||
| 2472 | 0x0000, /* R82 */ | ||
| 2473 | 0x0000, /* R83 */ | ||
| 2474 | 0x0000, /* R84 */ | ||
| 2475 | 0x0000, /* R85 */ | ||
| 2476 | 0x0000, /* R86 */ | ||
| 2477 | 0x0000, /* R87 */ | ||
| 2478 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 2479 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 2480 | 0x0000, /* R90 */ | ||
| 2481 | 0x0000, /* R91 */ | ||
| 2482 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 2483 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 2484 | 0x0000, /* R94 */ | ||
| 2485 | 0x0000, /* R95 */ | ||
| 2486 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 2487 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 2488 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 2489 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 2490 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 2491 | 0x0000, /* R101 */ | ||
| 2492 | 0x0000, /* R102 */ | ||
| 2493 | 0x0000, /* R103 */ | ||
| 2494 | 0x00E4, /* R104 - OUT1L Volume */ | ||
| 2495 | 0x00E4, /* R105 - OUT1R Volume */ | ||
| 2496 | 0x00E4, /* R106 - OUT2L Volume */ | ||
| 2497 | 0x02E4, /* R107 - OUT2R Volume */ | ||
| 2498 | 0x0000, /* R108 */ | ||
| 2499 | 0x0000, /* R109 */ | ||
| 2500 | 0x0000, /* R110 */ | ||
| 2501 | 0x0000, /* R111 - BEEP Volume */ | ||
| 2502 | 0x0A00, /* R112 - AI Formating */ | ||
| 2503 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 2504 | 0x0020, /* R114 - AI ADC Control */ | ||
| 2505 | 0x0020, /* R115 - AI DAC Control */ | ||
| 2506 | 0x0000, /* R116 */ | ||
| 2507 | 0x0000, /* R117 */ | ||
| 2508 | 0x0000, /* R118 */ | ||
| 2509 | 0x0000, /* R119 */ | ||
| 2510 | 0x0000, /* R120 */ | ||
| 2511 | 0x0000, /* R121 */ | ||
| 2512 | 0x0000, /* R122 */ | ||
| 2513 | 0x0000, /* R123 */ | ||
| 2514 | 0x0000, /* R124 */ | ||
| 2515 | 0x0000, /* R125 */ | ||
| 2516 | 0x0000, /* R126 */ | ||
| 2517 | 0x0000, /* R127 */ | ||
| 2518 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 2519 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 2520 | 0x0000, /* R130 - GPIO Pull down Control */ | ||
| 2521 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 2522 | 0x0000, /* R132 */ | ||
| 2523 | 0x0000, /* R133 - GPIO Control */ | ||
| 2524 | 0x0BFB, /* R134 - GPIO Configuration (i/o) */ | ||
| 2525 | 0x0FFF, /* R135 - GPIO Pin Polarity / Type */ | ||
| 2526 | 0x0000, /* R136 */ | ||
| 2527 | 0x0000, /* R137 */ | ||
| 2528 | 0x0000, /* R138 */ | ||
| 2529 | 0x0000, /* R139 */ | ||
| 2530 | 0x0300, /* R140 - GPIO Function Select 1 */ | ||
| 2531 | 0x0000, /* R141 - GPIO Function Select 2 */ | ||
| 2532 | 0x2300, /* R142 - GPIO Function Select 3 */ | ||
| 2533 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 2534 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 2535 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 2536 | 0x0000, /* R146 */ | ||
| 2537 | 0x0000, /* R147 */ | ||
| 2538 | 0x0000, /* R148 */ | ||
| 2539 | 0x0000, /* R149 */ | ||
| 2540 | 0x0000, /* R150 */ | ||
| 2541 | 0x0000, /* R151 */ | ||
| 2542 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 2543 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 2544 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 2545 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 2546 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 2547 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 2548 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 2549 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 2550 | 0x0000, /* R160 */ | ||
| 2551 | 0x0000, /* R161 */ | ||
| 2552 | 0x0000, /* R162 */ | ||
| 2553 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 2554 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 2555 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 2556 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 2557 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 2558 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 2559 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 2560 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 2561 | 0x0000, /* R171 */ | ||
| 2562 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 2563 | 0x0000, /* R173 - CSA Flash control */ | ||
| 2564 | 0x0000, /* R174 - Current Sink Driver B */ | ||
| 2565 | 0x0000, /* R175 - CSB Flash control */ | ||
| 2566 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 2567 | 0x032D, /* R177 - DCDC Active options */ | ||
| 2568 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 2569 | 0x0025, /* R179 - Power-check comparator */ | ||
| 2570 | 0x0062, /* R180 - DCDC1 Control */ | ||
| 2571 | 0x0400, /* R181 - DCDC1 Timeouts */ | ||
| 2572 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 2573 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 2574 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 2575 | 0x0000, /* R185 */ | ||
| 2576 | 0x0006, /* R186 - DCDC3 Control */ | ||
| 2577 | 0x0800, /* R187 - DCDC3 Timeouts */ | ||
| 2578 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 2579 | 0x0006, /* R189 - DCDC4 Control */ | ||
| 2580 | 0x0C00, /* R190 - DCDC4 Timeouts */ | ||
| 2581 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 2582 | 0x0008, /* R192 - DCDC5 Control */ | ||
| 2583 | 0x0000, /* R193 - DCDC5 Timeouts */ | ||
| 2584 | 0x0000, /* R194 */ | ||
| 2585 | 0x0026, /* R195 - DCDC6 Control */ | ||
| 2586 | 0x1000, /* R196 - DCDC6 Timeouts */ | ||
| 2587 | 0x0006, /* R197 - DCDC6 Low Power */ | ||
| 2588 | 0x0000, /* R198 */ | ||
| 2589 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 2590 | 0x0002, /* R200 - LDO1 Control */ | ||
| 2591 | 0x0000, /* R201 - LDO1 Timeouts */ | ||
| 2592 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 2593 | 0x001A, /* R203 - LDO2 Control */ | ||
| 2594 | 0x0000, /* R204 - LDO2 Timeouts */ | ||
| 2595 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 2596 | 0x001F, /* R206 - LDO3 Control */ | ||
| 2597 | 0x0000, /* R207 - LDO3 Timeouts */ | ||
| 2598 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 2599 | 0x001F, /* R209 - LDO4 Control */ | ||
| 2600 | 0x0000, /* R210 - LDO4 Timeouts */ | ||
| 2601 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 2602 | 0x0000, /* R212 */ | ||
| 2603 | 0x0000, /* R213 */ | ||
| 2604 | 0x0000, /* R214 */ | ||
| 2605 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 2606 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 2607 | 0x0000, /* R217 - OSC Control */ | ||
| 2608 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 2609 | 0x0000, /* R219 - Security1 */ | ||
| 2610 | 0x4000, /* R220 */ | ||
| 2611 | 0x0000, /* R221 */ | ||
| 2612 | 0x0000, /* R222 */ | ||
| 2613 | 0x0000, /* R223 */ | ||
| 2614 | 0x0000, /* R224 - Signal overrides */ | ||
| 2615 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 2616 | 0x0000, /* R226 - Charger Overides/status */ | ||
| 2617 | 0x0000, /* R227 - misc overrides */ | ||
| 2618 | 0x0000, /* R228 - Supply overrides/status 1 */ | ||
| 2619 | 0x0000, /* R229 - Supply overrides/status 2 */ | ||
| 2620 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 2621 | 0x0000, /* R231 - comparotor overrides */ | ||
| 2622 | 0x0000, /* R232 */ | ||
| 2623 | 0x0000, /* R233 - State Machine status */ | ||
| 2624 | 0x1200, /* R234 */ | ||
| 2625 | 0x0000, /* R235 */ | ||
| 2626 | 0x8000, /* R236 */ | ||
| 2627 | 0x0000, /* R237 */ | ||
| 2628 | 0x0000, /* R238 */ | ||
| 2629 | 0x0000, /* R239 */ | ||
| 2630 | 0x0003, /* R240 */ | ||
| 2631 | 0x0000, /* R241 */ | ||
| 2632 | 0x0000, /* R242 */ | ||
| 2633 | 0x0004, /* R243 */ | ||
| 2634 | 0x0300, /* R244 */ | ||
| 2635 | 0x0000, /* R245 */ | ||
| 2636 | 0x0200, /* R246 */ | ||
| 2637 | 0x0000, /* R247 */ | ||
| 2638 | 0x1000, /* R248 - DCDC1 Test Controls */ | ||
| 2639 | 0x5000, /* R249 */ | ||
| 2640 | 0x1000, /* R250 - DCDC3 Test Controls */ | ||
| 2641 | 0x1000, /* R251 - DCDC4 Test Controls */ | ||
| 2642 | 0x5100, /* R252 */ | ||
| 2643 | 0x1000, /* R253 - DCDC6 Test Controls */ | ||
| 2644 | }; | ||
| 2645 | #endif | ||
| 2646 | |||
| 2647 | #ifdef CONFIG_MFD_WM8352_CONFIG_MODE_2 | ||
| 2648 | |||
| 2649 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 2650 | #define WM8350_HAVE_CONFIG_MODE | ||
| 2651 | |||
| 2652 | const u16 wm8352_mode2_defaults[] = { | ||
| 2653 | 0x6143, /* R0 - Reset/ID */ | ||
| 2654 | 0x0000, /* R1 - ID */ | ||
| 2655 | 0x0002, /* R2 - Revision */ | ||
| 2656 | 0x1C02, /* R3 - System Control 1 */ | ||
| 2657 | 0x0204, /* R4 - System Control 2 */ | ||
| 2658 | 0x0000, /* R5 - System Hibernate */ | ||
| 2659 | 0x8A00, /* R6 - Interface Control */ | ||
| 2660 | 0x0000, /* R7 */ | ||
| 2661 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 2662 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 2663 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 2664 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 2665 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 2666 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 2667 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 2668 | 0x0000, /* R15 */ | ||
| 2669 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 2670 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 2671 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 2672 | 0x1400, /* R19 - RTC Year */ | ||
| 2673 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 2674 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 2675 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 2676 | 0x0320, /* R23 - RTC Time Control */ | ||
| 2677 | 0x0000, /* R24 - System Interrupts */ | ||
| 2678 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 2679 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 2680 | 0x0000, /* R27 */ | ||
| 2681 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 2682 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 2683 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 2684 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 2685 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 2686 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 2687 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 2688 | 0x0000, /* R35 */ | ||
| 2689 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 2690 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 2691 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 2692 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 2693 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 2694 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 2695 | 0x3A00, /* R42 - FLL Control 1 */ | ||
| 2696 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 2697 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 2698 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 2699 | 0x0000, /* R46 */ | ||
| 2700 | 0x0000, /* R47 */ | ||
| 2701 | 0x0000, /* R48 - DAC Control */ | ||
| 2702 | 0x0000, /* R49 */ | ||
| 2703 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 2704 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 2705 | 0x0000, /* R52 */ | ||
| 2706 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 2707 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 2708 | 0x0000, /* R55 */ | ||
| 2709 | 0x0000, /* R56 */ | ||
| 2710 | 0x0000, /* R57 */ | ||
| 2711 | 0x4000, /* R58 - DAC Mute */ | ||
| 2712 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 2713 | 0x0000, /* R60 - DAC Side */ | ||
| 2714 | 0x0000, /* R61 */ | ||
| 2715 | 0x0000, /* R62 */ | ||
| 2716 | 0x0000, /* R63 */ | ||
| 2717 | 0x8000, /* R64 - ADC Control */ | ||
| 2718 | 0x0000, /* R65 */ | ||
| 2719 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 2720 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 2721 | 0x0000, /* R68 - ADC Divider */ | ||
| 2722 | 0x0000, /* R69 */ | ||
| 2723 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 2724 | 0x0000, /* R71 */ | ||
| 2725 | 0x0303, /* R72 - Input Control */ | ||
| 2726 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 2727 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 2728 | 0x0000, /* R75 */ | ||
| 2729 | 0x0000, /* R76 - Output Control */ | ||
| 2730 | 0x0000, /* R77 - Jack Detect */ | ||
| 2731 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 2732 | 0x0000, /* R79 */ | ||
| 2733 | 0x0040, /* R80 - Left Input Volume */ | ||
| 2734 | 0x0040, /* R81 - Right Input Volume */ | ||
| 2735 | 0x0000, /* R82 */ | ||
| 2736 | 0x0000, /* R83 */ | ||
| 2737 | 0x0000, /* R84 */ | ||
| 2738 | 0x0000, /* R85 */ | ||
| 2739 | 0x0000, /* R86 */ | ||
| 2740 | 0x0000, /* R87 */ | ||
| 2741 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 2742 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 2743 | 0x0000, /* R90 */ | ||
| 2744 | 0x0000, /* R91 */ | ||
| 2745 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 2746 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 2747 | 0x0000, /* R94 */ | ||
| 2748 | 0x0000, /* R95 */ | ||
| 2749 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 2750 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 2751 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 2752 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 2753 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 2754 | 0x0000, /* R101 */ | ||
| 2755 | 0x0000, /* R102 */ | ||
| 2756 | 0x0000, /* R103 */ | ||
| 2757 | 0x00E4, /* R104 - OUT1L Volume */ | ||
| 2758 | 0x00E4, /* R105 - OUT1R Volume */ | ||
| 2759 | 0x00E4, /* R106 - OUT2L Volume */ | ||
| 2760 | 0x02E4, /* R107 - OUT2R Volume */ | ||
| 2761 | 0x0000, /* R108 */ | ||
| 2762 | 0x0000, /* R109 */ | ||
| 2763 | 0x0000, /* R110 */ | ||
| 2764 | 0x0000, /* R111 - BEEP Volume */ | ||
| 2765 | 0x0A00, /* R112 - AI Formating */ | ||
| 2766 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 2767 | 0x0020, /* R114 - AI ADC Control */ | ||
| 2768 | 0x0020, /* R115 - AI DAC Control */ | ||
| 2769 | 0x0000, /* R116 */ | ||
| 2770 | 0x0000, /* R117 */ | ||
| 2771 | 0x0000, /* R118 */ | ||
| 2772 | 0x0000, /* R119 */ | ||
| 2773 | 0x0000, /* R120 */ | ||
| 2774 | 0x0000, /* R121 */ | ||
| 2775 | 0x0000, /* R122 */ | ||
| 2776 | 0x0000, /* R123 */ | ||
| 2777 | 0x0000, /* R124 */ | ||
| 2778 | 0x0000, /* R125 */ | ||
| 2779 | 0x0000, /* R126 */ | ||
| 2780 | 0x0000, /* R127 */ | ||
| 2781 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 2782 | 0x0000, /* R129 - GPIO Pin pull up Control */ | ||
| 2783 | 0x0110, /* R130 - GPIO Pull down Control */ | ||
| 2784 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 2785 | 0x0000, /* R132 */ | ||
| 2786 | 0x0000, /* R133 - GPIO Control */ | ||
| 2787 | 0x09DA, /* R134 - GPIO Configuration (i/o) */ | ||
| 2788 | 0x0DD6, /* R135 - GPIO Pin Polarity / Type */ | ||
| 2789 | 0x0000, /* R136 */ | ||
| 2790 | 0x0000, /* R137 */ | ||
| 2791 | 0x0000, /* R138 */ | ||
| 2792 | 0x0000, /* R139 */ | ||
| 2793 | 0x1310, /* R140 - GPIO Function Select 1 */ | ||
| 2794 | 0x0033, /* R141 - GPIO Function Select 2 */ | ||
| 2795 | 0x2000, /* R142 - GPIO Function Select 3 */ | ||
| 2796 | 0x0000, /* R143 - GPIO Function Select 4 */ | ||
| 2797 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 2798 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 2799 | 0x0000, /* R146 */ | ||
| 2800 | 0x0000, /* R147 */ | ||
| 2801 | 0x0000, /* R148 */ | ||
| 2802 | 0x0000, /* R149 */ | ||
| 2803 | 0x0000, /* R150 */ | ||
| 2804 | 0x0000, /* R151 */ | ||
| 2805 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 2806 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 2807 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 2808 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 2809 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 2810 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 2811 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 2812 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 2813 | 0x0000, /* R160 */ | ||
| 2814 | 0x0000, /* R161 */ | ||
| 2815 | 0x0000, /* R162 */ | ||
| 2816 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 2817 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 2818 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 2819 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 2820 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 2821 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 2822 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 2823 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 2824 | 0x0000, /* R171 */ | ||
| 2825 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 2826 | 0x0000, /* R173 - CSA Flash control */ | ||
| 2827 | 0x0000, /* R174 - Current Sink Driver B */ | ||
| 2828 | 0x0000, /* R175 - CSB Flash control */ | ||
| 2829 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 2830 | 0x032D, /* R177 - DCDC Active options */ | ||
| 2831 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 2832 | 0x0025, /* R179 - Power-check comparator */ | ||
| 2833 | 0x000E, /* R180 - DCDC1 Control */ | ||
| 2834 | 0x0800, /* R181 - DCDC1 Timeouts */ | ||
| 2835 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 2836 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 2837 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 2838 | 0x0000, /* R185 */ | ||
| 2839 | 0x0056, /* R186 - DCDC3 Control */ | ||
| 2840 | 0x1800, /* R187 - DCDC3 Timeouts */ | ||
| 2841 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 2842 | 0x000E, /* R189 - DCDC4 Control */ | ||
| 2843 | 0x1000, /* R190 - DCDC4 Timeouts */ | ||
| 2844 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 2845 | 0x0008, /* R192 - DCDC5 Control */ | ||
| 2846 | 0x0000, /* R193 - DCDC5 Timeouts */ | ||
| 2847 | 0x0000, /* R194 */ | ||
| 2848 | 0x0026, /* R195 - DCDC6 Control */ | ||
| 2849 | 0x0C00, /* R196 - DCDC6 Timeouts */ | ||
| 2850 | 0x0006, /* R197 - DCDC6 Low Power */ | ||
| 2851 | 0x0000, /* R198 */ | ||
| 2852 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 2853 | 0x001C, /* R200 - LDO1 Control */ | ||
| 2854 | 0x0000, /* R201 - LDO1 Timeouts */ | ||
| 2855 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 2856 | 0x0006, /* R203 - LDO2 Control */ | ||
| 2857 | 0x0400, /* R204 - LDO2 Timeouts */ | ||
| 2858 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 2859 | 0x001C, /* R206 - LDO3 Control */ | ||
| 2860 | 0x1400, /* R207 - LDO3 Timeouts */ | ||
| 2861 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 2862 | 0x001A, /* R209 - LDO4 Control */ | ||
| 2863 | 0x0000, /* R210 - LDO4 Timeouts */ | ||
| 2864 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 2865 | 0x0000, /* R212 */ | ||
| 2866 | 0x0000, /* R213 */ | ||
| 2867 | 0x0000, /* R214 */ | ||
| 2868 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 2869 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 2870 | 0x0000, /* R217 - OSC Control */ | ||
| 2871 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 2872 | 0x0000, /* R219 - Security1 */ | ||
| 2873 | 0x4000, /* R220 */ | ||
| 2874 | 0x0000, /* R221 */ | ||
| 2875 | 0x0000, /* R222 */ | ||
| 2876 | 0x0000, /* R223 */ | ||
| 2877 | 0x0000, /* R224 - Signal overrides */ | ||
| 2878 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 2879 | 0x0000, /* R226 - Charger Overides/status */ | ||
| 2880 | 0x0000, /* R227 - misc overrides */ | ||
| 2881 | 0x0000, /* R228 - Supply overrides/status 1 */ | ||
| 2882 | 0x0000, /* R229 - Supply overrides/status 2 */ | ||
| 2883 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 2884 | 0x0000, /* R231 - comparotor overrides */ | ||
| 2885 | 0x0000, /* R232 */ | ||
| 2886 | 0x0000, /* R233 - State Machine status */ | ||
| 2887 | 0x1200, /* R234 */ | ||
| 2888 | 0x0000, /* R235 */ | ||
| 2889 | 0x8000, /* R236 */ | ||
| 2890 | 0x0000, /* R237 */ | ||
| 2891 | 0x0000, /* R238 */ | ||
| 2892 | 0x0000, /* R239 */ | ||
| 2893 | 0x0003, /* R240 */ | ||
| 2894 | 0x0000, /* R241 */ | ||
| 2895 | 0x0000, /* R242 */ | ||
| 2896 | 0x0004, /* R243 */ | ||
| 2897 | 0x0300, /* R244 */ | ||
| 2898 | 0x0000, /* R245 */ | ||
| 2899 | 0x0200, /* R246 */ | ||
| 2900 | 0x0000, /* R247 */ | ||
| 2901 | 0x1000, /* R248 - DCDC1 Test Controls */ | ||
| 2902 | 0x5000, /* R249 */ | ||
| 2903 | 0x1000, /* R250 - DCDC3 Test Controls */ | ||
| 2904 | 0x1000, /* R251 - DCDC4 Test Controls */ | ||
| 2905 | 0x5100, /* R252 */ | ||
| 2906 | 0x1000, /* R253 - DCDC6 Test Controls */ | ||
| 2907 | }; | ||
| 2908 | #endif | ||
| 2909 | |||
| 2910 | #ifdef CONFIG_MFD_WM8352_CONFIG_MODE_3 | ||
| 2911 | |||
| 2912 | #undef WM8350_HAVE_CONFIG_MODE | ||
| 2913 | #define WM8350_HAVE_CONFIG_MODE | ||
| 2914 | |||
| 2915 | const u16 wm8352_mode3_defaults[] = { | ||
| 2916 | 0x6143, /* R0 - Reset/ID */ | ||
| 2917 | 0x0000, /* R1 - ID */ | ||
| 2918 | 0x0002, /* R2 - Revision */ | ||
| 2919 | 0x1C02, /* R3 - System Control 1 */ | ||
| 2920 | 0x0204, /* R4 - System Control 2 */ | ||
| 2921 | 0x0000, /* R5 - System Hibernate */ | ||
| 2922 | 0x8A00, /* R6 - Interface Control */ | ||
| 2923 | 0x0000, /* R7 */ | ||
| 2924 | 0x8000, /* R8 - Power mgmt (1) */ | ||
| 2925 | 0x0000, /* R9 - Power mgmt (2) */ | ||
| 2926 | 0x0000, /* R10 - Power mgmt (3) */ | ||
| 2927 | 0x2000, /* R11 - Power mgmt (4) */ | ||
| 2928 | 0x0E00, /* R12 - Power mgmt (5) */ | ||
| 2929 | 0x0000, /* R13 - Power mgmt (6) */ | ||
| 2930 | 0x0000, /* R14 - Power mgmt (7) */ | ||
| 2931 | 0x0000, /* R15 */ | ||
| 2932 | 0x0000, /* R16 - RTC Seconds/Minutes */ | ||
| 2933 | 0x0100, /* R17 - RTC Hours/Day */ | ||
| 2934 | 0x0101, /* R18 - RTC Date/Month */ | ||
| 2935 | 0x1400, /* R19 - RTC Year */ | ||
| 2936 | 0x0000, /* R20 - Alarm Seconds/Minutes */ | ||
| 2937 | 0x0000, /* R21 - Alarm Hours/Day */ | ||
| 2938 | 0x0000, /* R22 - Alarm Date/Month */ | ||
| 2939 | 0x0320, /* R23 - RTC Time Control */ | ||
| 2940 | 0x0000, /* R24 - System Interrupts */ | ||
| 2941 | 0x0000, /* R25 - Interrupt Status 1 */ | ||
| 2942 | 0x0000, /* R26 - Interrupt Status 2 */ | ||
| 2943 | 0x0000, /* R27 */ | ||
| 2944 | 0x0000, /* R28 - Under Voltage Interrupt status */ | ||
| 2945 | 0x0000, /* R29 - Over Current Interrupt status */ | ||
| 2946 | 0x0000, /* R30 - GPIO Interrupt Status */ | ||
| 2947 | 0x0000, /* R31 - Comparator Interrupt Status */ | ||
| 2948 | 0x3FFF, /* R32 - System Interrupts Mask */ | ||
| 2949 | 0x0000, /* R33 - Interrupt Status 1 Mask */ | ||
| 2950 | 0x0000, /* R34 - Interrupt Status 2 Mask */ | ||
| 2951 | 0x0000, /* R35 */ | ||
| 2952 | 0x0000, /* R36 - Under Voltage Interrupt status Mask */ | ||
| 2953 | 0x0000, /* R37 - Over Current Interrupt status Mask */ | ||
| 2954 | 0x0000, /* R38 - GPIO Interrupt Status Mask */ | ||
| 2955 | 0x0000, /* R39 - Comparator Interrupt Status Mask */ | ||
| 2956 | 0x0040, /* R40 - Clock Control 1 */ | ||
| 2957 | 0x0000, /* R41 - Clock Control 2 */ | ||
| 2958 | 0x3A00, /* R42 - FLL Control 1 */ | ||
| 2959 | 0x7086, /* R43 - FLL Control 2 */ | ||
| 2960 | 0xC226, /* R44 - FLL Control 3 */ | ||
| 2961 | 0x0000, /* R45 - FLL Control 4 */ | ||
| 2962 | 0x0000, /* R46 */ | ||
| 2963 | 0x0000, /* R47 */ | ||
| 2964 | 0x0000, /* R48 - DAC Control */ | ||
| 2965 | 0x0000, /* R49 */ | ||
| 2966 | 0x00C0, /* R50 - DAC Digital Volume L */ | ||
| 2967 | 0x00C0, /* R51 - DAC Digital Volume R */ | ||
| 2968 | 0x0000, /* R52 */ | ||
| 2969 | 0x0040, /* R53 - DAC LR Rate */ | ||
| 2970 | 0x0000, /* R54 - DAC Clock Control */ | ||
| 2971 | 0x0000, /* R55 */ | ||
| 2972 | 0x0000, /* R56 */ | ||
| 2973 | 0x0000, /* R57 */ | ||
| 2974 | 0x4000, /* R58 - DAC Mute */ | ||
| 2975 | 0x0000, /* R59 - DAC Mute Volume */ | ||
| 2976 | 0x0000, /* R60 - DAC Side */ | ||
| 2977 | 0x0000, /* R61 */ | ||
| 2978 | 0x0000, /* R62 */ | ||
| 2979 | 0x0000, /* R63 */ | ||
| 2980 | 0x8000, /* R64 - ADC Control */ | ||
| 2981 | 0x0000, /* R65 */ | ||
| 2982 | 0x00C0, /* R66 - ADC Digital Volume L */ | ||
| 2983 | 0x00C0, /* R67 - ADC Digital Volume R */ | ||
| 2984 | 0x0000, /* R68 - ADC Divider */ | ||
| 2985 | 0x0000, /* R69 */ | ||
| 2986 | 0x0040, /* R70 - ADC LR Rate */ | ||
| 2987 | 0x0000, /* R71 */ | ||
| 2988 | 0x0303, /* R72 - Input Control */ | ||
| 2989 | 0x0000, /* R73 - IN3 Input Control */ | ||
| 2990 | 0x0000, /* R74 - Mic Bias Control */ | ||
| 2991 | 0x0000, /* R75 */ | ||
| 2992 | 0x0000, /* R76 - Output Control */ | ||
| 2993 | 0x0000, /* R77 - Jack Detect */ | ||
| 2994 | 0x0000, /* R78 - Anti Pop Control */ | ||
| 2995 | 0x0000, /* R79 */ | ||
| 2996 | 0x0040, /* R80 - Left Input Volume */ | ||
| 2997 | 0x0040, /* R81 - Right Input Volume */ | ||
| 2998 | 0x0000, /* R82 */ | ||
| 2999 | 0x0000, /* R83 */ | ||
| 3000 | 0x0000, /* R84 */ | ||
| 3001 | 0x0000, /* R85 */ | ||
| 3002 | 0x0000, /* R86 */ | ||
| 3003 | 0x0000, /* R87 */ | ||
| 3004 | 0x0800, /* R88 - Left Mixer Control */ | ||
| 3005 | 0x1000, /* R89 - Right Mixer Control */ | ||
| 3006 | 0x0000, /* R90 */ | ||
| 3007 | 0x0000, /* R91 */ | ||
| 3008 | 0x0000, /* R92 - OUT3 Mixer Control */ | ||
| 3009 | 0x0000, /* R93 - OUT4 Mixer Control */ | ||
| 3010 | 0x0000, /* R94 */ | ||
| 3011 | 0x0000, /* R95 */ | ||
| 3012 | 0x0000, /* R96 - Output Left Mixer Volume */ | ||
| 3013 | 0x0000, /* R97 - Output Right Mixer Volume */ | ||
| 3014 | 0x0000, /* R98 - Input Mixer Volume L */ | ||
| 3015 | 0x0000, /* R99 - Input Mixer Volume R */ | ||
| 3016 | 0x0000, /* R100 - Input Mixer Volume */ | ||
| 3017 | 0x0000, /* R101 */ | ||
| 3018 | 0x0000, /* R102 */ | ||
| 3019 | 0x0000, /* R103 */ | ||
| 3020 | 0x00E4, /* R104 - OUT1L Volume */ | ||
| 3021 | 0x00E4, /* R105 - OUT1R Volume */ | ||
| 3022 | 0x00E4, /* R106 - OUT2L Volume */ | ||
| 3023 | 0x02E4, /* R107 - OUT2R Volume */ | ||
| 3024 | 0x0000, /* R108 */ | ||
| 3025 | 0x0000, /* R109 */ | ||
| 3026 | 0x0000, /* R110 */ | ||
| 3027 | 0x0000, /* R111 - BEEP Volume */ | ||
| 3028 | 0x0A00, /* R112 - AI Formating */ | ||
| 3029 | 0x0000, /* R113 - ADC DAC COMP */ | ||
| 3030 | 0x0020, /* R114 - AI ADC Control */ | ||
| 3031 | 0x0020, /* R115 - AI DAC Control */ | ||
| 3032 | 0x0000, /* R116 */ | ||
| 3033 | 0x0000, /* R117 */ | ||
| 3034 | 0x0000, /* R118 */ | ||
| 3035 | 0x0000, /* R119 */ | ||
| 3036 | 0x0000, /* R120 */ | ||
| 3037 | 0x0000, /* R121 */ | ||
| 3038 | 0x0000, /* R122 */ | ||
| 3039 | 0x0000, /* R123 */ | ||
| 3040 | 0x0000, /* R124 */ | ||
| 3041 | 0x0000, /* R125 */ | ||
| 3042 | 0x0000, /* R126 */ | ||
| 3043 | 0x0000, /* R127 */ | ||
| 3044 | 0x1FFF, /* R128 - GPIO Debounce */ | ||
| 3045 | 0x0010, /* R129 - GPIO Pin pull up Control */ | ||
| 3046 | 0x0000, /* R130 - GPIO Pull down Control */ | ||
| 3047 | 0x0000, /* R131 - GPIO Interrupt Mode */ | ||
| 3048 | 0x0000, /* R132 */ | ||
| 3049 | 0x0000, /* R133 - GPIO Control */ | ||
| 3050 | 0x0BFB, /* R134 - GPIO Configuration (i/o) */ | ||
| 3051 | 0x0FFD, /* R135 - GPIO Pin Polarity / Type */ | ||
| 3052 | 0x0000, /* R136 */ | ||
| 3053 | 0x0000, /* R137 */ | ||
| 3054 | 0x0000, /* R138 */ | ||
| 3055 | 0x0000, /* R139 */ | ||
| 3056 | 0x0310, /* R140 - GPIO Function Select 1 */ | ||
| 3057 | 0x0001, /* R141 - GPIO Function Select 2 */ | ||
| 3058 | 0x2300, /* R142 - GPIO Function Select 3 */ | ||
| 3059 | 0x0003, /* R143 - GPIO Function Select 4 */ | ||
| 3060 | 0x0000, /* R144 - Digitiser Control (1) */ | ||
| 3061 | 0x0002, /* R145 - Digitiser Control (2) */ | ||
| 3062 | 0x0000, /* R146 */ | ||
| 3063 | 0x0000, /* R147 */ | ||
| 3064 | 0x0000, /* R148 */ | ||
| 3065 | 0x0000, /* R149 */ | ||
| 3066 | 0x0000, /* R150 */ | ||
| 3067 | 0x0000, /* R151 */ | ||
| 3068 | 0x7000, /* R152 - AUX1 Readback */ | ||
| 3069 | 0x7000, /* R153 - AUX2 Readback */ | ||
| 3070 | 0x7000, /* R154 - AUX3 Readback */ | ||
| 3071 | 0x7000, /* R155 - AUX4 Readback */ | ||
| 3072 | 0x0000, /* R156 - USB Voltage Readback */ | ||
| 3073 | 0x0000, /* R157 - LINE Voltage Readback */ | ||
| 3074 | 0x0000, /* R158 - BATT Voltage Readback */ | ||
| 3075 | 0x0000, /* R159 - Chip Temp Readback */ | ||
| 3076 | 0x0000, /* R160 */ | ||
| 3077 | 0x0000, /* R161 */ | ||
| 3078 | 0x0000, /* R162 */ | ||
| 3079 | 0x0000, /* R163 - Generic Comparator Control */ | ||
| 3080 | 0x0000, /* R164 - Generic comparator 1 */ | ||
| 3081 | 0x0000, /* R165 - Generic comparator 2 */ | ||
| 3082 | 0x0000, /* R166 - Generic comparator 3 */ | ||
| 3083 | 0x0000, /* R167 - Generic comparator 4 */ | ||
| 3084 | 0xA00F, /* R168 - Battery Charger Control 1 */ | ||
| 3085 | 0x0B06, /* R169 - Battery Charger Control 2 */ | ||
| 3086 | 0x0000, /* R170 - Battery Charger Control 3 */ | ||
| 3087 | 0x0000, /* R171 */ | ||
| 3088 | 0x0000, /* R172 - Current Sink Driver A */ | ||
| 3089 | 0x0000, /* R173 - CSA Flash control */ | ||
| 3090 | 0x0000, /* R174 - Current Sink Driver B */ | ||
| 3091 | 0x0000, /* R175 - CSB Flash control */ | ||
| 3092 | 0x0000, /* R176 - DCDC/LDO requested */ | ||
| 3093 | 0x032D, /* R177 - DCDC Active options */ | ||
| 3094 | 0x0000, /* R178 - DCDC Sleep options */ | ||
| 3095 | 0x0025, /* R179 - Power-check comparator */ | ||
| 3096 | 0x0006, /* R180 - DCDC1 Control */ | ||
| 3097 | 0x0400, /* R181 - DCDC1 Timeouts */ | ||
| 3098 | 0x1006, /* R182 - DCDC1 Low Power */ | ||
| 3099 | 0x0018, /* R183 - DCDC2 Control */ | ||
| 3100 | 0x0000, /* R184 - DCDC2 Timeouts */ | ||
| 3101 | 0x0000, /* R185 */ | ||
| 3102 | 0x0050, /* R186 - DCDC3 Control */ | ||
| 3103 | 0x0C00, /* R187 - DCDC3 Timeouts */ | ||
| 3104 | 0x0006, /* R188 - DCDC3 Low Power */ | ||
| 3105 | 0x000E, /* R189 - DCDC4 Control */ | ||
| 3106 | 0x0400, /* R190 - DCDC4 Timeouts */ | ||
| 3107 | 0x0006, /* R191 - DCDC4 Low Power */ | ||
| 3108 | 0x0008, /* R192 - DCDC5 Control */ | ||
| 3109 | 0x0000, /* R193 - DCDC5 Timeouts */ | ||
| 3110 | 0x0000, /* R194 */ | ||
| 3111 | 0x0029, /* R195 - DCDC6 Control */ | ||
| 3112 | 0x0800, /* R196 - DCDC6 Timeouts */ | ||
| 3113 | 0x0006, /* R197 - DCDC6 Low Power */ | ||
| 3114 | 0x0000, /* R198 */ | ||
| 3115 | 0x0003, /* R199 - Limit Switch Control */ | ||
| 3116 | 0x001D, /* R200 - LDO1 Control */ | ||
| 3117 | 0x1000, /* R201 - LDO1 Timeouts */ | ||
| 3118 | 0x001C, /* R202 - LDO1 Low Power */ | ||
| 3119 | 0x0017, /* R203 - LDO2 Control */ | ||
| 3120 | 0x1000, /* R204 - LDO2 Timeouts */ | ||
| 3121 | 0x001C, /* R205 - LDO2 Low Power */ | ||
| 3122 | 0x0006, /* R206 - LDO3 Control */ | ||
| 3123 | 0x1000, /* R207 - LDO3 Timeouts */ | ||
| 3124 | 0x001C, /* R208 - LDO3 Low Power */ | ||
| 3125 | 0x0010, /* R209 - LDO4 Control */ | ||
| 3126 | 0x1000, /* R210 - LDO4 Timeouts */ | ||
| 3127 | 0x001C, /* R211 - LDO4 Low Power */ | ||
| 3128 | 0x0000, /* R212 */ | ||
| 3129 | 0x0000, /* R213 */ | ||
| 3130 | 0x0000, /* R214 */ | ||
| 3131 | 0x0000, /* R215 - VCC_FAULT Masks */ | ||
| 3132 | 0x001F, /* R216 - Main Bandgap Control */ | ||
| 3133 | 0x0000, /* R217 - OSC Control */ | ||
| 3134 | 0x9000, /* R218 - RTC Tick Control */ | ||
| 3135 | 0x0000, /* R219 - Security1 */ | ||
| 3136 | 0x4000, /* R220 */ | ||
| 3137 | 0x0000, /* R221 */ | ||
| 3138 | 0x0000, /* R222 */ | ||
| 3139 | 0x0000, /* R223 */ | ||
| 3140 | 0x0000, /* R224 - Signal overrides */ | ||
| 3141 | 0x0000, /* R225 - DCDC/LDO status */ | ||
| 3142 | 0x0000, /* R226 - Charger Overides/status */ | ||
| 3143 | 0x0000, /* R227 - misc overrides */ | ||
| 3144 | 0x0000, /* R228 - Supply overrides/status 1 */ | ||
| 3145 | 0x0000, /* R229 - Supply overrides/status 2 */ | ||
| 3146 | 0xE000, /* R230 - GPIO Pin Status */ | ||
| 3147 | 0x0000, /* R231 - comparotor overrides */ | ||
| 3148 | 0x0000, /* R232 */ | ||
| 3149 | 0x0000, /* R233 - State Machine status */ | ||
| 3150 | 0x1200, /* R234 */ | ||
| 3151 | 0x0000, /* R235 */ | ||
| 3152 | 0x8000, /* R236 */ | ||
| 3153 | 0x0000, /* R237 */ | ||
| 3154 | 0x0000, /* R238 */ | ||
| 3155 | 0x0000, /* R239 */ | ||
| 3156 | 0x0003, /* R240 */ | ||
| 3157 | 0x0000, /* R241 */ | ||
| 3158 | 0x0000, /* R242 */ | ||
| 3159 | 0x0004, /* R243 */ | ||
| 3160 | 0x0300, /* R244 */ | ||
| 3161 | 0x0000, /* R245 */ | ||
| 3162 | 0x0200, /* R246 */ | ||
| 3163 | 0x0000, /* R247 */ | ||
| 3164 | 0x1000, /* R248 - DCDC1 Test Controls */ | ||
| 3165 | 0x5000, /* R249 */ | ||
| 3166 | 0x1000, /* R250 - DCDC3 Test Controls */ | ||
| 3167 | 0x1000, /* R251 - DCDC4 Test Controls */ | ||
| 3168 | 0x5100, /* R252 */ | ||
| 3169 | 0x1000, /* R253 - DCDC6 Test Controls */ | ||
| 3170 | }; | ||
| 3171 | #endif | ||
| 3172 | |||
| 3173 | /* | 17 | /* |
| 3174 | * Access masks. | 18 | * Access masks. |
| 3175 | */ | 19 | */ |
| 3176 | 20 | ||
| 3177 | const struct wm8350_reg_access wm8350_reg_io_map[] = { | 21 | static const struct wm8350_reg_access { |
| 22 | u16 readable; /* Mask of readable bits */ | ||
| 23 | u16 writable; /* Mask of writable bits */ | ||
| 24 | u16 vol; /* Mask of volatile bits */ | ||
| 25 | } wm8350_reg_io_map[] = { | ||
| 3178 | /* read write volatile */ | 26 | /* read write volatile */ |
| 3179 | { 0xFFFF, 0xFFFF, 0xFFFF }, /* R0 - Reset/ID */ | 27 | { 0xFFFF, 0xFFFF, 0x0000 }, /* R0 - Reset/ID */ |
| 3180 | { 0x7CFF, 0x0C00, 0x7FFF }, /* R1 - ID */ | 28 | { 0x7CFF, 0x0C00, 0x0000 }, /* R1 - ID */ |
| 3181 | { 0x007F, 0x0000, 0x0000 }, /* R2 - ROM Mask ID */ | 29 | { 0x007F, 0x0000, 0x0000 }, /* R2 - ROM Mask ID */ |
| 3182 | { 0xBE3B, 0xBE3B, 0x8000 }, /* R3 - System Control 1 */ | 30 | { 0xBE3B, 0xBE3B, 0x8000 }, /* R3 - System Control 1 */ |
| 3183 | { 0xFEF7, 0xFEF7, 0xF800 }, /* R4 - System Control 2 */ | 31 | { 0xFEF7, 0xFEF7, 0xF800 }, /* R4 - System Control 2 */ |
| @@ -3433,3 +281,59 @@ const struct wm8350_reg_access wm8350_reg_io_map[] = { | |||
| 3433 | { 0x0000, 0x0000, 0x0000 }, /* R254 */ | 281 | { 0x0000, 0x0000, 0x0000 }, /* R254 */ |
| 3434 | { 0x0000, 0x0000, 0x0000 }, /* R255 */ | 282 | { 0x0000, 0x0000, 0x0000 }, /* R255 */ |
| 3435 | }; | 283 | }; |
| 284 | |||
| 285 | static bool wm8350_readable(struct device *dev, unsigned int reg) | ||
| 286 | { | ||
| 287 | return wm8350_reg_io_map[reg].readable; | ||
| 288 | } | ||
| 289 | |||
| 290 | static bool wm8350_writeable(struct device *dev, unsigned int reg) | ||
| 291 | { | ||
| 292 | struct wm8350 *wm8350 = dev_get_drvdata(dev); | ||
| 293 | |||
| 294 | if (!wm8350->unlocked) { | ||
| 295 | if ((reg >= WM8350_GPIO_FUNCTION_SELECT_1 && | ||
| 296 | reg <= WM8350_GPIO_FUNCTION_SELECT_4) || | ||
| 297 | (reg >= WM8350_BATTERY_CHARGER_CONTROL_1 && | ||
| 298 | reg <= WM8350_BATTERY_CHARGER_CONTROL_3)) | ||
| 299 | return false; | ||
| 300 | } | ||
| 301 | |||
| 302 | return wm8350_reg_io_map[reg].writable; | ||
| 303 | } | ||
| 304 | |||
| 305 | static bool wm8350_volatile(struct device *dev, unsigned int reg) | ||
| 306 | { | ||
| 307 | return wm8350_reg_io_map[reg].vol; | ||
| 308 | } | ||
| 309 | |||
| 310 | static bool wm8350_precious(struct device *dev, unsigned int reg) | ||
| 311 | { | ||
| 312 | switch (reg) { | ||
| 313 | case WM8350_SYSTEM_INTERRUPTS: | ||
| 314 | case WM8350_INT_STATUS_1: | ||
| 315 | case WM8350_INT_STATUS_2: | ||
| 316 | case WM8350_POWER_UP_INT_STATUS: | ||
| 317 | case WM8350_UNDER_VOLTAGE_INT_STATUS: | ||
| 318 | case WM8350_OVER_CURRENT_INT_STATUS: | ||
| 319 | case WM8350_GPIO_INT_STATUS: | ||
| 320 | case WM8350_COMPARATOR_INT_STATUS: | ||
| 321 | return true; | ||
| 322 | |||
| 323 | default: | ||
| 324 | return false; | ||
| 325 | } | ||
| 326 | } | ||
| 327 | |||
| 328 | const struct regmap_config wm8350_regmap = { | ||
| 329 | .reg_bits = 8, | ||
| 330 | .val_bits = 16, | ||
| 331 | |||
| 332 | .cache_type = REGCACHE_RBTREE, | ||
| 333 | |||
| 334 | .max_register = WM8350_MAX_REGISTER, | ||
| 335 | .readable_reg = wm8350_readable, | ||
| 336 | .writeable_reg = wm8350_writeable, | ||
| 337 | .volatile_reg = wm8350_volatile, | ||
| 338 | .precious_reg = wm8350_precious, | ||
| 339 | }; | ||
diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c index 1e321d349777..eec74aa55fdf 100644 --- a/drivers/mfd/wm8994-core.c +++ b/drivers/mfd/wm8994-core.c | |||
| @@ -283,9 +283,24 @@ static int wm8994_suspend(struct device *dev) | |||
| 283 | wm8994_reg_write(wm8994, WM8994_SOFTWARE_RESET, | 283 | wm8994_reg_write(wm8994, WM8994_SOFTWARE_RESET, |
| 284 | wm8994_reg_read(wm8994, WM8994_SOFTWARE_RESET)); | 284 | wm8994_reg_read(wm8994, WM8994_SOFTWARE_RESET)); |
| 285 | 285 | ||
| 286 | regcache_cache_only(wm8994->regmap, true); | ||
| 287 | regcache_mark_dirty(wm8994->regmap); | 286 | regcache_mark_dirty(wm8994->regmap); |
| 288 | 287 | ||
| 288 | /* Restore GPIO registers to prevent problems with mismatched | ||
| 289 | * pin configurations. | ||
| 290 | */ | ||
| 291 | ret = regcache_sync_region(wm8994->regmap, WM8994_GPIO_1, | ||
| 292 | WM8994_GPIO_11); | ||
| 293 | if (ret != 0) | ||
| 294 | dev_err(dev, "Failed to restore GPIO registers: %d\n", ret); | ||
| 295 | |||
| 296 | /* In case one of the GPIOs is used as a wake input. */ | ||
| 297 | ret = regcache_sync_region(wm8994->regmap, | ||
| 298 | WM8994_INTERRUPT_STATUS_1_MASK, | ||
| 299 | WM8994_INTERRUPT_STATUS_1_MASK); | ||
| 300 | if (ret != 0) | ||
| 301 | dev_err(dev, "Failed to restore interrupt mask: %d\n", ret); | ||
| 302 | |||
| 303 | regcache_cache_only(wm8994->regmap, true); | ||
| 289 | wm8994->suspended = true; | 304 | wm8994->suspended = true; |
| 290 | 305 | ||
| 291 | ret = regulator_bulk_disable(wm8994->num_supplies, | 306 | ret = regulator_bulk_disable(wm8994->num_supplies, |
diff --git a/drivers/mfd/wm8994-irq.c b/drivers/mfd/wm8994-irq.c index f1837f669755..0aac4aff17a5 100644 --- a/drivers/mfd/wm8994-irq.c +++ b/drivers/mfd/wm8994-irq.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/regmap.h> | 21 | #include <linux/regmap.h> |
| 22 | 22 | ||
| 23 | #include <linux/mfd/wm8994/core.h> | 23 | #include <linux/mfd/wm8994/core.h> |
| 24 | #include <linux/mfd/wm8994/pdata.h> | ||
| 24 | #include <linux/mfd/wm8994/registers.h> | 25 | #include <linux/mfd/wm8994/registers.h> |
| 25 | 26 | ||
| 26 | #include <linux/delay.h> | 27 | #include <linux/delay.h> |
| @@ -139,6 +140,8 @@ static struct regmap_irq_chip wm8994_irq_chip = { | |||
| 139 | int wm8994_irq_init(struct wm8994 *wm8994) | 140 | int wm8994_irq_init(struct wm8994 *wm8994) |
| 140 | { | 141 | { |
| 141 | int ret; | 142 | int ret; |
| 143 | unsigned long irqflags; | ||
| 144 | struct wm8994_pdata *pdata = wm8994->dev->platform_data; | ||
| 142 | 145 | ||
| 143 | if (!wm8994->irq) { | 146 | if (!wm8994->irq) { |
| 144 | dev_warn(wm8994->dev, | 147 | dev_warn(wm8994->dev, |
| @@ -147,8 +150,13 @@ int wm8994_irq_init(struct wm8994 *wm8994) | |||
| 147 | return 0; | 150 | return 0; |
| 148 | } | 151 | } |
| 149 | 152 | ||
| 153 | /* select user or default irq flags */ | ||
| 154 | irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT; | ||
| 155 | if (pdata->irq_flags) | ||
| 156 | irqflags = pdata->irq_flags; | ||
| 157 | |||
| 150 | ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq, | 158 | ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq, |
| 151 | IRQF_TRIGGER_HIGH | IRQF_ONESHOT, | 159 | irqflags, |
| 152 | wm8994->irq_base, &wm8994_irq_chip, | 160 | wm8994->irq_base, &wm8994_irq_chip, |
| 153 | &wm8994->irq_data); | 161 | &wm8994->irq_data); |
| 154 | if (ret != 0) { | 162 | if (ret != 0) { |
diff --git a/drivers/misc/ab8500-pwm.c b/drivers/misc/ab8500-pwm.c index 042a8fe4efaa..d7a9aa14e5d5 100644 --- a/drivers/misc/ab8500-pwm.c +++ b/drivers/misc/ab8500-pwm.c | |||
| @@ -142,16 +142,10 @@ static int __devexit ab8500_pwm_remove(struct platform_device *pdev) | |||
| 142 | return 0; | 142 | return 0; |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | static const struct of_device_id ab8500_pwm_match[] = { | ||
| 146 | { .compatible = "stericsson,ab8500-pwm", }, | ||
| 147 | {} | ||
| 148 | }; | ||
| 149 | |||
| 150 | static struct platform_driver ab8500_pwm_driver = { | 145 | static struct platform_driver ab8500_pwm_driver = { |
| 151 | .driver = { | 146 | .driver = { |
| 152 | .name = "ab8500-pwm", | 147 | .name = "ab8500-pwm", |
| 153 | .owner = THIS_MODULE, | 148 | .owner = THIS_MODULE, |
| 154 | .of_match_table = ab8500_pwm_match, | ||
| 155 | }, | 149 | }, |
| 156 | .probe = ab8500_pwm_probe, | 150 | .probe = ab8500_pwm_probe, |
| 157 | .remove = __devexit_p(ab8500_pwm_remove), | 151 | .remove = __devexit_p(ab8500_pwm_remove), |
diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index f34c3be6c9fe..4e932cc695e9 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig | |||
| @@ -272,7 +272,7 @@ config REGULATOR_S2MPS11 | |||
| 272 | 272 | ||
| 273 | config REGULATOR_S5M8767 | 273 | config REGULATOR_S5M8767 |
| 274 | tristate "Samsung S5M8767A voltage regulator" | 274 | tristate "Samsung S5M8767A voltage regulator" |
| 275 | depends on MFD_S5M_CORE | 275 | depends on MFD_SEC_CORE |
| 276 | help | 276 | help |
| 277 | This driver supports a Samsung S5M8767A voltage output regulator | 277 | This driver supports a Samsung S5M8767A voltage output regulator |
| 278 | via I2C bus. S5M8767A have 9 Bucks and 28 LDOs output and | 278 | via I2C bus. S5M8767A have 9 Bucks and 28 LDOs output and |
diff --git a/drivers/regulator/ab8500.c b/drivers/regulator/ab8500.c index 13d424fc1c14..10f2f4d4d190 100644 --- a/drivers/regulator/ab8500.c +++ b/drivers/regulator/ab8500.c | |||
| @@ -848,18 +848,12 @@ static __devexit int ab8500_regulator_remove(struct platform_device *pdev) | |||
| 848 | return 0; | 848 | return 0; |
| 849 | } | 849 | } |
| 850 | 850 | ||
| 851 | static const struct of_device_id ab8500_regulator_match[] = { | ||
| 852 | { .compatible = "stericsson,ab8500-regulator", }, | ||
| 853 | {} | ||
| 854 | }; | ||
| 855 | |||
| 856 | static struct platform_driver ab8500_regulator_driver = { | 851 | static struct platform_driver ab8500_regulator_driver = { |
| 857 | .probe = ab8500_regulator_probe, | 852 | .probe = ab8500_regulator_probe, |
| 858 | .remove = __devexit_p(ab8500_regulator_remove), | 853 | .remove = __devexit_p(ab8500_regulator_remove), |
| 859 | .driver = { | 854 | .driver = { |
| 860 | .name = "ab8500-regulator", | 855 | .name = "ab8500-regulator", |
| 861 | .owner = THIS_MODULE, | 856 | .owner = THIS_MODULE, |
| 862 | .of_match_table = ab8500_regulator_match, | ||
| 863 | }, | 857 | }, |
| 864 | }; | 858 | }; |
| 865 | 859 | ||
diff --git a/drivers/regulator/db8500-prcmu.c b/drivers/regulator/db8500-prcmu.c index 9dbb491b6efa..359f8d18fc3f 100644 --- a/drivers/regulator/db8500-prcmu.c +++ b/drivers/regulator/db8500-prcmu.c | |||
| @@ -547,16 +547,10 @@ static int __exit db8500_regulator_remove(struct platform_device *pdev) | |||
| 547 | return 0; | 547 | return 0; |
| 548 | } | 548 | } |
| 549 | 549 | ||
| 550 | static const struct of_device_id db8500_prcmu_regulator_match[] = { | ||
| 551 | { .compatible = "stericsson,db8500-prcmu-regulator", }, | ||
| 552 | {} | ||
| 553 | }; | ||
| 554 | |||
| 555 | static struct platform_driver db8500_regulator_driver = { | 550 | static struct platform_driver db8500_regulator_driver = { |
| 556 | .driver = { | 551 | .driver = { |
| 557 | .name = "db8500-prcmu-regulators", | 552 | .name = "db8500-prcmu-regulators", |
| 558 | .owner = THIS_MODULE, | 553 | .owner = THIS_MODULE, |
| 559 | .of_match_table = db8500_prcmu_regulator_match, | ||
| 560 | }, | 554 | }, |
| 561 | .probe = db8500_regulator_probe, | 555 | .probe = db8500_regulator_probe, |
| 562 | .remove = __exit_p(db8500_regulator_remove), | 556 | .remove = __exit_p(db8500_regulator_remove), |
diff --git a/drivers/regulator/s5m8767.c b/drivers/regulator/s5m8767.c index 102287fa7ecb..5a0d18a7aa2a 100644 --- a/drivers/regulator/s5m8767.c +++ b/drivers/regulator/s5m8767.c | |||
| @@ -19,15 +19,15 @@ | |||
| 19 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
| 20 | #include <linux/regulator/driver.h> | 20 | #include <linux/regulator/driver.h> |
| 21 | #include <linux/regulator/machine.h> | 21 | #include <linux/regulator/machine.h> |
| 22 | #include <linux/mfd/s5m87xx/s5m-core.h> | 22 | #include <linux/mfd/samsung/core.h> |
| 23 | #include <linux/mfd/s5m87xx/s5m-pmic.h> | 23 | #include <linux/mfd/samsung/s5m8767.h> |
| 24 | 24 | ||
| 25 | struct s5m8767_info { | 25 | struct s5m8767_info { |
| 26 | struct device *dev; | 26 | struct device *dev; |
| 27 | struct s5m87xx_dev *iodev; | 27 | struct sec_pmic_dev *iodev; |
| 28 | int num_regulators; | 28 | int num_regulators; |
| 29 | struct regulator_dev **rdev; | 29 | struct regulator_dev **rdev; |
| 30 | struct s5m_opmode_data *opmode; | 30 | struct sec_opmode_data *opmode; |
| 31 | 31 | ||
| 32 | int ramp_delay; | 32 | int ramp_delay; |
| 33 | bool buck2_ramp; | 33 | bool buck2_ramp; |
| @@ -45,43 +45,43 @@ struct s5m8767_info { | |||
| 45 | int buck_gpioindex; | 45 | int buck_gpioindex; |
| 46 | }; | 46 | }; |
| 47 | 47 | ||
| 48 | struct s5m_voltage_desc { | 48 | struct sec_voltage_desc { |
| 49 | int max; | 49 | int max; |
| 50 | int min; | 50 | int min; |
| 51 | int step; | 51 | int step; |
| 52 | }; | 52 | }; |
| 53 | 53 | ||
| 54 | static const struct s5m_voltage_desc buck_voltage_val1 = { | 54 | static const struct sec_voltage_desc buck_voltage_val1 = { |
| 55 | .max = 2225000, | 55 | .max = 2225000, |
| 56 | .min = 650000, | 56 | .min = 650000, |
| 57 | .step = 6250, | 57 | .step = 6250, |
| 58 | }; | 58 | }; |
| 59 | 59 | ||
| 60 | static const struct s5m_voltage_desc buck_voltage_val2 = { | 60 | static const struct sec_voltage_desc buck_voltage_val2 = { |
| 61 | .max = 1600000, | 61 | .max = 1600000, |
| 62 | .min = 600000, | 62 | .min = 600000, |
| 63 | .step = 6250, | 63 | .step = 6250, |
| 64 | }; | 64 | }; |
| 65 | 65 | ||
| 66 | static const struct s5m_voltage_desc buck_voltage_val3 = { | 66 | static const struct sec_voltage_desc buck_voltage_val3 = { |
| 67 | .max = 3000000, | 67 | .max = 3000000, |
| 68 | .min = 750000, | 68 | .min = 750000, |
| 69 | .step = 12500, | 69 | .step = 12500, |
| 70 | }; | 70 | }; |
| 71 | 71 | ||
| 72 | static const struct s5m_voltage_desc ldo_voltage_val1 = { | 72 | static const struct sec_voltage_desc ldo_voltage_val1 = { |
| 73 | .max = 3950000, | 73 | .max = 3950000, |
| 74 | .min = 800000, | 74 | .min = 800000, |
| 75 | .step = 50000, | 75 | .step = 50000, |
| 76 | }; | 76 | }; |
| 77 | 77 | ||
| 78 | static const struct s5m_voltage_desc ldo_voltage_val2 = { | 78 | static const struct sec_voltage_desc ldo_voltage_val2 = { |
| 79 | .max = 2375000, | 79 | .max = 2375000, |
| 80 | .min = 800000, | 80 | .min = 800000, |
| 81 | .step = 25000, | 81 | .step = 25000, |
| 82 | }; | 82 | }; |
| 83 | 83 | ||
| 84 | static const struct s5m_voltage_desc *reg_voltage_map[] = { | 84 | static const struct sec_voltage_desc *reg_voltage_map[] = { |
| 85 | [S5M8767_LDO1] = &ldo_voltage_val2, | 85 | [S5M8767_LDO1] = &ldo_voltage_val2, |
| 86 | [S5M8767_LDO2] = &ldo_voltage_val2, | 86 | [S5M8767_LDO2] = &ldo_voltage_val2, |
| 87 | [S5M8767_LDO3] = &ldo_voltage_val1, | 87 | [S5M8767_LDO3] = &ldo_voltage_val1, |
| @@ -213,7 +213,7 @@ static int s5m8767_reg_is_enabled(struct regulator_dev *rdev) | |||
| 213 | else if (ret) | 213 | else if (ret) |
| 214 | return ret; | 214 | return ret; |
| 215 | 215 | ||
| 216 | ret = s5m_reg_read(s5m8767->iodev, reg, &val); | 216 | ret = sec_reg_read(s5m8767->iodev, reg, &val); |
| 217 | if (ret) | 217 | if (ret) |
| 218 | return ret; | 218 | return ret; |
| 219 | 219 | ||
| @@ -230,7 +230,7 @@ static int s5m8767_reg_enable(struct regulator_dev *rdev) | |||
| 230 | if (ret) | 230 | if (ret) |
| 231 | return ret; | 231 | return ret; |
| 232 | 232 | ||
| 233 | return s5m_reg_update(s5m8767->iodev, reg, enable_ctrl, mask); | 233 | return sec_reg_update(s5m8767->iodev, reg, enable_ctrl, mask); |
| 234 | } | 234 | } |
| 235 | 235 | ||
| 236 | static int s5m8767_reg_disable(struct regulator_dev *rdev) | 236 | static int s5m8767_reg_disable(struct regulator_dev *rdev) |
| @@ -243,7 +243,7 @@ static int s5m8767_reg_disable(struct regulator_dev *rdev) | |||
| 243 | if (ret) | 243 | if (ret) |
| 244 | return ret; | 244 | return ret; |
| 245 | 245 | ||
| 246 | return s5m_reg_update(s5m8767->iodev, reg, ~mask, mask); | 246 | return sec_reg_update(s5m8767->iodev, reg, ~mask, mask); |
| 247 | } | 247 | } |
| 248 | 248 | ||
| 249 | static int s5m8767_get_voltage_register(struct regulator_dev *rdev, int *_reg) | 249 | static int s5m8767_get_voltage_register(struct regulator_dev *rdev, int *_reg) |
| @@ -305,7 +305,7 @@ static int s5m8767_get_voltage_sel(struct regulator_dev *rdev) | |||
| 305 | 305 | ||
| 306 | mask = (reg_id < S5M8767_BUCK1) ? 0x3f : 0xff; | 306 | mask = (reg_id < S5M8767_BUCK1) ? 0x3f : 0xff; |
| 307 | 307 | ||
| 308 | ret = s5m_reg_read(s5m8767->iodev, reg, &val); | 308 | ret = sec_reg_read(s5m8767->iodev, reg, &val); |
| 309 | if (ret) | 309 | if (ret) |
| 310 | return ret; | 310 | return ret; |
| 311 | 311 | ||
| @@ -315,7 +315,7 @@ static int s5m8767_get_voltage_sel(struct regulator_dev *rdev) | |||
| 315 | } | 315 | } |
| 316 | 316 | ||
| 317 | static int s5m8767_convert_voltage_to_sel( | 317 | static int s5m8767_convert_voltage_to_sel( |
| 318 | const struct s5m_voltage_desc *desc, | 318 | const struct sec_voltage_desc *desc, |
| 319 | int min_vol, int max_vol) | 319 | int min_vol, int max_vol) |
| 320 | { | 320 | { |
| 321 | int selector = 0; | 321 | int selector = 0; |
| @@ -407,7 +407,7 @@ static int s5m8767_set_voltage_sel(struct regulator_dev *rdev, | |||
| 407 | if (ret) | 407 | if (ret) |
| 408 | return ret; | 408 | return ret; |
| 409 | 409 | ||
| 410 | return s5m_reg_update(s5m8767->iodev, reg, selector, mask); | 410 | return sec_reg_update(s5m8767->iodev, reg, selector, mask); |
| 411 | } | 411 | } |
| 412 | } | 412 | } |
| 413 | 413 | ||
| @@ -416,7 +416,7 @@ static int s5m8767_set_voltage_time_sel(struct regulator_dev *rdev, | |||
| 416 | unsigned int new_sel) | 416 | unsigned int new_sel) |
| 417 | { | 417 | { |
| 418 | struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev); | 418 | struct s5m8767_info *s5m8767 = rdev_get_drvdata(rdev); |
| 419 | const struct s5m_voltage_desc *desc; | 419 | const struct sec_voltage_desc *desc; |
| 420 | int reg_id = rdev_get_id(rdev); | 420 | int reg_id = rdev_get_id(rdev); |
| 421 | 421 | ||
| 422 | desc = reg_voltage_map[reg_id]; | 422 | desc = reg_voltage_map[reg_id]; |
| @@ -501,8 +501,8 @@ static struct regulator_desc regulators[] = { | |||
| 501 | 501 | ||
| 502 | static __devinit int s5m8767_pmic_probe(struct platform_device *pdev) | 502 | static __devinit int s5m8767_pmic_probe(struct platform_device *pdev) |
| 503 | { | 503 | { |
| 504 | struct s5m87xx_dev *iodev = dev_get_drvdata(pdev->dev.parent); | 504 | struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent); |
| 505 | struct s5m_platform_data *pdata = dev_get_platdata(iodev->dev); | 505 | struct sec_platform_data *pdata = dev_get_platdata(iodev->dev); |
| 506 | struct regulator_config config = { }; | 506 | struct regulator_config config = { }; |
| 507 | struct regulator_dev **rdev; | 507 | struct regulator_dev **rdev; |
| 508 | struct s5m8767_info *s5m8767; | 508 | struct s5m8767_info *s5m8767; |
| @@ -671,13 +671,13 @@ static __devinit int s5m8767_pmic_probe(struct platform_device *pdev) | |||
| 671 | 671 | ||
| 672 | if (pdata->buck2_gpiodvs || pdata->buck3_gpiodvs || | 672 | if (pdata->buck2_gpiodvs || pdata->buck3_gpiodvs || |
| 673 | pdata->buck4_gpiodvs) { | 673 | pdata->buck4_gpiodvs) { |
| 674 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_BUCK2CTRL, | 674 | sec_reg_update(s5m8767->iodev, S5M8767_REG_BUCK2CTRL, |
| 675 | (pdata->buck2_gpiodvs) ? (1 << 1) : (0 << 1), | 675 | (pdata->buck2_gpiodvs) ? (1 << 1) : (0 << 1), |
| 676 | 1 << 1); | 676 | 1 << 1); |
| 677 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_BUCK3CTRL, | 677 | sec_reg_update(s5m8767->iodev, S5M8767_REG_BUCK3CTRL, |
| 678 | (pdata->buck3_gpiodvs) ? (1 << 1) : (0 << 1), | 678 | (pdata->buck3_gpiodvs) ? (1 << 1) : (0 << 1), |
| 679 | 1 << 1); | 679 | 1 << 1); |
| 680 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_BUCK4CTRL, | 680 | sec_reg_update(s5m8767->iodev, S5M8767_REG_BUCK4CTRL, |
| 681 | (pdata->buck4_gpiodvs) ? (1 << 1) : (0 << 1), | 681 | (pdata->buck4_gpiodvs) ? (1 << 1) : (0 << 1), |
| 682 | 1 << 1); | 682 | 1 << 1); |
| 683 | } | 683 | } |
| @@ -685,61 +685,61 @@ static __devinit int s5m8767_pmic_probe(struct platform_device *pdev) | |||
| 685 | /* Initialize GPIO DVS registers */ | 685 | /* Initialize GPIO DVS registers */ |
| 686 | for (i = 0; i < 8; i++) { | 686 | for (i = 0; i < 8; i++) { |
| 687 | if (s5m8767->buck2_gpiodvs) { | 687 | if (s5m8767->buck2_gpiodvs) { |
| 688 | s5m_reg_write(s5m8767->iodev, S5M8767_REG_BUCK2DVS1 + i, | 688 | sec_reg_write(s5m8767->iodev, S5M8767_REG_BUCK2DVS1 + i, |
| 689 | s5m8767->buck2_vol[i]); | 689 | s5m8767->buck2_vol[i]); |
| 690 | } | 690 | } |
| 691 | 691 | ||
| 692 | if (s5m8767->buck3_gpiodvs) { | 692 | if (s5m8767->buck3_gpiodvs) { |
| 693 | s5m_reg_write(s5m8767->iodev, S5M8767_REG_BUCK3DVS1 + i, | 693 | sec_reg_write(s5m8767->iodev, S5M8767_REG_BUCK3DVS1 + i, |
| 694 | s5m8767->buck3_vol[i]); | 694 | s5m8767->buck3_vol[i]); |
| 695 | } | 695 | } |
| 696 | 696 | ||
| 697 | if (s5m8767->buck4_gpiodvs) { | 697 | if (s5m8767->buck4_gpiodvs) { |
| 698 | s5m_reg_write(s5m8767->iodev, S5M8767_REG_BUCK4DVS1 + i, | 698 | sec_reg_write(s5m8767->iodev, S5M8767_REG_BUCK4DVS1 + i, |
| 699 | s5m8767->buck4_vol[i]); | 699 | s5m8767->buck4_vol[i]); |
| 700 | } | 700 | } |
| 701 | } | 701 | } |
| 702 | 702 | ||
| 703 | if (s5m8767->buck2_ramp) | 703 | if (s5m8767->buck2_ramp) |
| 704 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, 0x08, 0x08); | 704 | sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, 0x08, 0x08); |
| 705 | 705 | ||
| 706 | if (s5m8767->buck3_ramp) | 706 | if (s5m8767->buck3_ramp) |
| 707 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, 0x04, 0x04); | 707 | sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, 0x04, 0x04); |
| 708 | 708 | ||
| 709 | if (s5m8767->buck4_ramp) | 709 | if (s5m8767->buck4_ramp) |
| 710 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, 0x02, 0x02); | 710 | sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, 0x02, 0x02); |
| 711 | 711 | ||
| 712 | if (s5m8767->buck2_ramp || s5m8767->buck3_ramp | 712 | if (s5m8767->buck2_ramp || s5m8767->buck3_ramp |
| 713 | || s5m8767->buck4_ramp) { | 713 | || s5m8767->buck4_ramp) { |
| 714 | switch (s5m8767->ramp_delay) { | 714 | switch (s5m8767->ramp_delay) { |
| 715 | case 5: | 715 | case 5: |
| 716 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, | 716 | sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, |
| 717 | 0x40, 0xf0); | 717 | 0x40, 0xf0); |
| 718 | break; | 718 | break; |
| 719 | case 10: | 719 | case 10: |
| 720 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, | 720 | sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, |
| 721 | 0x90, 0xf0); | 721 | 0x90, 0xf0); |
| 722 | break; | 722 | break; |
| 723 | case 25: | 723 | case 25: |
| 724 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, | 724 | sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, |
| 725 | 0xd0, 0xf0); | 725 | 0xd0, 0xf0); |
| 726 | break; | 726 | break; |
| 727 | case 50: | 727 | case 50: |
| 728 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, | 728 | sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, |
| 729 | 0xe0, 0xf0); | 729 | 0xe0, 0xf0); |
| 730 | break; | 730 | break; |
| 731 | case 100: | 731 | case 100: |
| 732 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, | 732 | sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, |
| 733 | 0xf0, 0xf0); | 733 | 0xf0, 0xf0); |
| 734 | break; | 734 | break; |
| 735 | default: | 735 | default: |
| 736 | s5m_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, | 736 | sec_reg_update(s5m8767->iodev, S5M8767_REG_DVSRAMP, |
| 737 | 0x90, 0xf0); | 737 | 0x90, 0xf0); |
| 738 | } | 738 | } |
| 739 | } | 739 | } |
| 740 | 740 | ||
| 741 | for (i = 0; i < pdata->num_regulators; i++) { | 741 | for (i = 0; i < pdata->num_regulators; i++) { |
| 742 | const struct s5m_voltage_desc *desc; | 742 | const struct sec_voltage_desc *desc; |
| 743 | int id = pdata->regulators[i].id; | 743 | int id = pdata->regulators[i].id; |
| 744 | 744 | ||
| 745 | desc = reg_voltage_map[id]; | 745 | desc = reg_voltage_map[id]; |
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 08cbdb900a18..f049c02413ce 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig | |||
| @@ -135,6 +135,16 @@ config RTC_DRV_88PM860X | |||
| 135 | This driver can also be built as a module. If so, the module | 135 | This driver can also be built as a module. If so, the module |
| 136 | will be called rtc-88pm860x. | 136 | will be called rtc-88pm860x. |
| 137 | 137 | ||
| 138 | config RTC_DRV_88PM80X | ||
| 139 | tristate "Marvell 88PM80x" | ||
| 140 | depends on RTC_CLASS && I2C && MFD_88PM800 | ||
| 141 | help | ||
| 142 | If you say yes here you get support for RTC function in Marvell | ||
| 143 | 88PM80x chips. | ||
| 144 | |||
| 145 | This driver can also be built as a module. If so, the module | ||
| 146 | will be called rtc-88pm80x. | ||
| 147 | |||
| 138 | config RTC_DRV_DS1307 | 148 | config RTC_DRV_DS1307 |
| 139 | tristate "Dallas/Maxim DS1307/37/38/39/40, ST M41T00, EPSON RX-8025" | 149 | tristate "Dallas/Maxim DS1307/37/38/39/40, ST M41T00, EPSON RX-8025" |
| 140 | help | 150 | help |
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile index 2973921c30d8..0d5b2b66f90d 100644 --- a/drivers/rtc/Makefile +++ b/drivers/rtc/Makefile | |||
| @@ -16,6 +16,7 @@ rtc-core-$(CONFIG_RTC_INTF_SYSFS) += rtc-sysfs.o | |||
| 16 | # Keep the list ordered. | 16 | # Keep the list ordered. |
| 17 | 17 | ||
| 18 | obj-$(CONFIG_RTC_DRV_88PM860X) += rtc-88pm860x.o | 18 | obj-$(CONFIG_RTC_DRV_88PM860X) += rtc-88pm860x.o |
| 19 | obj-$(CONFIG_RTC_DRV_88PM80X) += rtc-88pm80x.o | ||
| 19 | obj-$(CONFIG_RTC_DRV_AB3100) += rtc-ab3100.o | 20 | obj-$(CONFIG_RTC_DRV_AB3100) += rtc-ab3100.o |
| 20 | obj-$(CONFIG_RTC_DRV_AB8500) += rtc-ab8500.o | 21 | obj-$(CONFIG_RTC_DRV_AB8500) += rtc-ab8500.o |
| 21 | obj-$(CONFIG_RTC_DRV_AT32AP700X)+= rtc-at32ap700x.o | 22 | obj-$(CONFIG_RTC_DRV_AT32AP700X)+= rtc-at32ap700x.o |
diff --git a/drivers/rtc/rtc-88pm80x.c b/drivers/rtc/rtc-88pm80x.c new file mode 100644 index 000000000000..a2f956d90de0 --- /dev/null +++ b/drivers/rtc/rtc-88pm80x.c | |||
| @@ -0,0 +1,371 @@ | |||
| 1 | /* | ||
| 2 | * Real Time Clock driver for Marvell 88PM80x PMIC | ||
| 3 | * | ||
| 4 | * Copyright (c) 2012 Marvell International Ltd. | ||
| 5 | * Wenzeng Chen<wzch@marvell.com> | ||
| 6 | * Qiao Zhou <zhouqiao@marvell.com> | ||
| 7 | * | ||
| 8 | * This file is subject to the terms and conditions of the GNU General | ||
| 9 | * Public License. See the file "COPYING" in the main directory of this | ||
| 10 | * archive for more details. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 20 | */ | ||
| 21 | |||
| 22 | #include <linux/kernel.h> | ||
| 23 | #include <linux/module.h> | ||
| 24 | #include <linux/slab.h> | ||
| 25 | #include <linux/regmap.h> | ||
| 26 | #include <linux/mfd/core.h> | ||
| 27 | #include <linux/mfd/88pm80x.h> | ||
| 28 | #include <linux/rtc.h> | ||
| 29 | |||
| 30 | #define PM800_RTC_COUNTER1 (0xD1) | ||
| 31 | #define PM800_RTC_COUNTER2 (0xD2) | ||
| 32 | #define PM800_RTC_COUNTER3 (0xD3) | ||
| 33 | #define PM800_RTC_COUNTER4 (0xD4) | ||
| 34 | #define PM800_RTC_EXPIRE1_1 (0xD5) | ||
| 35 | #define PM800_RTC_EXPIRE1_2 (0xD6) | ||
| 36 | #define PM800_RTC_EXPIRE1_3 (0xD7) | ||
| 37 | #define PM800_RTC_EXPIRE1_4 (0xD8) | ||
| 38 | #define PM800_RTC_TRIM1 (0xD9) | ||
| 39 | #define PM800_RTC_TRIM2 (0xDA) | ||
| 40 | #define PM800_RTC_TRIM3 (0xDB) | ||
| 41 | #define PM800_RTC_TRIM4 (0xDC) | ||
| 42 | #define PM800_RTC_EXPIRE2_1 (0xDD) | ||
| 43 | #define PM800_RTC_EXPIRE2_2 (0xDE) | ||
| 44 | #define PM800_RTC_EXPIRE2_3 (0xDF) | ||
| 45 | #define PM800_RTC_EXPIRE2_4 (0xE0) | ||
| 46 | |||
| 47 | #define PM800_POWER_DOWN_LOG1 (0xE5) | ||
| 48 | #define PM800_POWER_DOWN_LOG2 (0xE6) | ||
| 49 | |||
| 50 | struct pm80x_rtc_info { | ||
| 51 | struct pm80x_chip *chip; | ||
| 52 | struct regmap *map; | ||
| 53 | struct rtc_device *rtc_dev; | ||
| 54 | struct device *dev; | ||
| 55 | struct delayed_work calib_work; | ||
| 56 | |||
| 57 | int irq; | ||
| 58 | int vrtc; | ||
| 59 | }; | ||
| 60 | |||
| 61 | static irqreturn_t rtc_update_handler(int irq, void *data) | ||
| 62 | { | ||
| 63 | struct pm80x_rtc_info *info = (struct pm80x_rtc_info *)data; | ||
| 64 | int mask; | ||
| 65 | |||
| 66 | mask = PM800_ALARM | PM800_ALARM_WAKEUP; | ||
| 67 | regmap_update_bits(info->map, PM800_RTC_CONTROL, mask | PM800_ALARM1_EN, | ||
| 68 | mask); | ||
| 69 | rtc_update_irq(info->rtc_dev, 1, RTC_AF); | ||
| 70 | return IRQ_HANDLED; | ||
| 71 | } | ||
| 72 | |||
| 73 | static int pm80x_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled) | ||
| 74 | { | ||
| 75 | struct pm80x_rtc_info *info = dev_get_drvdata(dev); | ||
| 76 | |||
| 77 | if (enabled) | ||
| 78 | regmap_update_bits(info->map, PM800_RTC_CONTROL, | ||
| 79 | PM800_ALARM1_EN, PM800_ALARM1_EN); | ||
| 80 | else | ||
| 81 | regmap_update_bits(info->map, PM800_RTC_CONTROL, | ||
| 82 | PM800_ALARM1_EN, 0); | ||
| 83 | return 0; | ||
| 84 | } | ||
| 85 | |||
| 86 | /* | ||
| 87 | * Calculate the next alarm time given the requested alarm time mask | ||
| 88 | * and the current time. | ||
| 89 | */ | ||
| 90 | static void rtc_next_alarm_time(struct rtc_time *next, struct rtc_time *now, | ||
| 91 | struct rtc_time *alrm) | ||
| 92 | { | ||
| 93 | unsigned long next_time; | ||
| 94 | unsigned long now_time; | ||
| 95 | |||
| 96 | next->tm_year = now->tm_year; | ||
| 97 | next->tm_mon = now->tm_mon; | ||
| 98 | next->tm_mday = now->tm_mday; | ||
| 99 | next->tm_hour = alrm->tm_hour; | ||
| 100 | next->tm_min = alrm->tm_min; | ||
| 101 | next->tm_sec = alrm->tm_sec; | ||
| 102 | |||
| 103 | rtc_tm_to_time(now, &now_time); | ||
| 104 | rtc_tm_to_time(next, &next_time); | ||
| 105 | |||
| 106 | if (next_time < now_time) { | ||
| 107 | /* Advance one day */ | ||
| 108 | next_time += 60 * 60 * 24; | ||
| 109 | rtc_time_to_tm(next_time, next); | ||
| 110 | } | ||
| 111 | } | ||
| 112 | |||
| 113 | static int pm80x_rtc_read_time(struct device *dev, struct rtc_time *tm) | ||
| 114 | { | ||
| 115 | struct pm80x_rtc_info *info = dev_get_drvdata(dev); | ||
| 116 | unsigned char buf[4]; | ||
| 117 | unsigned long ticks, base, data; | ||
| 118 | regmap_raw_read(info->map, PM800_RTC_EXPIRE2_1, buf, 4); | ||
| 119 | base = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; | ||
| 120 | dev_dbg(info->dev, "%x-%x-%x-%x\n", buf[0], buf[1], buf[2], buf[3]); | ||
| 121 | |||
| 122 | /* load 32-bit read-only counter */ | ||
| 123 | regmap_raw_read(info->map, PM800_RTC_COUNTER1, buf, 4); | ||
| 124 | data = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; | ||
| 125 | ticks = base + data; | ||
| 126 | dev_dbg(info->dev, "get base:0x%lx, RO count:0x%lx, ticks:0x%lx\n", | ||
| 127 | base, data, ticks); | ||
| 128 | rtc_time_to_tm(ticks, tm); | ||
| 129 | return 0; | ||
| 130 | } | ||
| 131 | |||
| 132 | static int pm80x_rtc_set_time(struct device *dev, struct rtc_time *tm) | ||
| 133 | { | ||
| 134 | struct pm80x_rtc_info *info = dev_get_drvdata(dev); | ||
| 135 | unsigned char buf[4]; | ||
| 136 | unsigned long ticks, base, data; | ||
| 137 | if ((tm->tm_year < 70) || (tm->tm_year > 138)) { | ||
| 138 | dev_dbg(info->dev, | ||
| 139 | "Set time %d out of range. Please set time between 1970 to 2038.\n", | ||
| 140 | 1900 + tm->tm_year); | ||
| 141 | return -EINVAL; | ||
| 142 | } | ||
| 143 | rtc_tm_to_time(tm, &ticks); | ||
| 144 | |||
| 145 | /* load 32-bit read-only counter */ | ||
| 146 | regmap_raw_read(info->map, PM800_RTC_COUNTER1, buf, 4); | ||
| 147 | data = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; | ||
| 148 | base = ticks - data; | ||
| 149 | dev_dbg(info->dev, "set base:0x%lx, RO count:0x%lx, ticks:0x%lx\n", | ||
| 150 | base, data, ticks); | ||
| 151 | buf[0] = base & 0xFF; | ||
| 152 | buf[1] = (base >> 8) & 0xFF; | ||
| 153 | buf[2] = (base >> 16) & 0xFF; | ||
| 154 | buf[3] = (base >> 24) & 0xFF; | ||
| 155 | regmap_raw_write(info->map, PM800_RTC_EXPIRE2_1, buf, 4); | ||
| 156 | |||
| 157 | return 0; | ||
| 158 | } | ||
| 159 | |||
| 160 | static int pm80x_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) | ||
| 161 | { | ||
| 162 | struct pm80x_rtc_info *info = dev_get_drvdata(dev); | ||
| 163 | unsigned char buf[4]; | ||
| 164 | unsigned long ticks, base, data; | ||
| 165 | int ret; | ||
| 166 | |||
| 167 | regmap_raw_read(info->map, PM800_RTC_EXPIRE2_1, buf, 4); | ||
| 168 | base = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; | ||
| 169 | dev_dbg(info->dev, "%x-%x-%x-%x\n", buf[0], buf[1], buf[2], buf[3]); | ||
| 170 | |||
| 171 | regmap_raw_read(info->map, PM800_RTC_EXPIRE1_1, buf, 4); | ||
| 172 | data = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; | ||
| 173 | ticks = base + data; | ||
| 174 | dev_dbg(info->dev, "get base:0x%lx, RO count:0x%lx, ticks:0x%lx\n", | ||
| 175 | base, data, ticks); | ||
| 176 | |||
| 177 | rtc_time_to_tm(ticks, &alrm->time); | ||
| 178 | regmap_read(info->map, PM800_RTC_CONTROL, &ret); | ||
| 179 | alrm->enabled = (ret & PM800_ALARM1_EN) ? 1 : 0; | ||
| 180 | alrm->pending = (ret & (PM800_ALARM | PM800_ALARM_WAKEUP)) ? 1 : 0; | ||
| 181 | return 0; | ||
| 182 | } | ||
| 183 | |||
| 184 | static int pm80x_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) | ||
| 185 | { | ||
| 186 | struct pm80x_rtc_info *info = dev_get_drvdata(dev); | ||
| 187 | struct rtc_time now_tm, alarm_tm; | ||
| 188 | unsigned long ticks, base, data; | ||
| 189 | unsigned char buf[4]; | ||
| 190 | int mask; | ||
| 191 | |||
| 192 | regmap_update_bits(info->map, PM800_RTC_CONTROL, PM800_ALARM1_EN, 0); | ||
| 193 | |||
| 194 | regmap_raw_read(info->map, PM800_RTC_EXPIRE2_1, buf, 4); | ||
| 195 | base = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; | ||
| 196 | dev_dbg(info->dev, "%x-%x-%x-%x\n", buf[0], buf[1], buf[2], buf[3]); | ||
| 197 | |||
| 198 | /* load 32-bit read-only counter */ | ||
| 199 | regmap_raw_read(info->map, PM800_RTC_COUNTER1, buf, 4); | ||
| 200 | data = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; | ||
| 201 | ticks = base + data; | ||
| 202 | dev_dbg(info->dev, "get base:0x%lx, RO count:0x%lx, ticks:0x%lx\n", | ||
| 203 | base, data, ticks); | ||
| 204 | |||
| 205 | rtc_time_to_tm(ticks, &now_tm); | ||
| 206 | dev_dbg(info->dev, "%s, now time : %lu\n", __func__, ticks); | ||
| 207 | rtc_next_alarm_time(&alarm_tm, &now_tm, &alrm->time); | ||
| 208 | /* get new ticks for alarm in 24 hours */ | ||
| 209 | rtc_tm_to_time(&alarm_tm, &ticks); | ||
| 210 | dev_dbg(info->dev, "%s, alarm time: %lu\n", __func__, ticks); | ||
| 211 | data = ticks - base; | ||
| 212 | |||
| 213 | buf[0] = data & 0xff; | ||
| 214 | buf[1] = (data >> 8) & 0xff; | ||
| 215 | buf[2] = (data >> 16) & 0xff; | ||
| 216 | buf[3] = (data >> 24) & 0xff; | ||
| 217 | regmap_raw_write(info->map, PM800_RTC_EXPIRE1_1, buf, 4); | ||
| 218 | if (alrm->enabled) { | ||
| 219 | mask = PM800_ALARM | PM800_ALARM_WAKEUP | PM800_ALARM1_EN; | ||
| 220 | regmap_update_bits(info->map, PM800_RTC_CONTROL, mask, mask); | ||
| 221 | } else { | ||
| 222 | mask = PM800_ALARM | PM800_ALARM_WAKEUP | PM800_ALARM1_EN; | ||
| 223 | regmap_update_bits(info->map, PM800_RTC_CONTROL, mask, | ||
| 224 | PM800_ALARM | PM800_ALARM_WAKEUP); | ||
| 225 | } | ||
| 226 | return 0; | ||
| 227 | } | ||
| 228 | |||
| 229 | static const struct rtc_class_ops pm80x_rtc_ops = { | ||
| 230 | .read_time = pm80x_rtc_read_time, | ||
| 231 | .set_time = pm80x_rtc_set_time, | ||
| 232 | .read_alarm = pm80x_rtc_read_alarm, | ||
| 233 | .set_alarm = pm80x_rtc_set_alarm, | ||
| 234 | .alarm_irq_enable = pm80x_rtc_alarm_irq_enable, | ||
| 235 | }; | ||
| 236 | |||
| 237 | #ifdef CONFIG_PM | ||
| 238 | static int pm80x_rtc_suspend(struct device *dev) | ||
| 239 | { | ||
| 240 | return pm80x_dev_suspend(dev); | ||
| 241 | } | ||
| 242 | |||
| 243 | static int pm80x_rtc_resume(struct device *dev) | ||
| 244 | { | ||
| 245 | return pm80x_dev_resume(dev); | ||
| 246 | } | ||
| 247 | #endif | ||
| 248 | |||
| 249 | static SIMPLE_DEV_PM_OPS(pm80x_rtc_pm_ops, pm80x_rtc_suspend, pm80x_rtc_resume); | ||
| 250 | |||
| 251 | static int __devinit pm80x_rtc_probe(struct platform_device *pdev) | ||
| 252 | { | ||
| 253 | struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent); | ||
| 254 | struct pm80x_platform_data *pm80x_pdata; | ||
| 255 | struct pm80x_rtc_pdata *pdata = NULL; | ||
| 256 | struct pm80x_rtc_info *info; | ||
| 257 | struct rtc_time tm; | ||
| 258 | unsigned long ticks = 0; | ||
| 259 | int ret; | ||
| 260 | |||
| 261 | pdata = pdev->dev.platform_data; | ||
| 262 | if (pdata == NULL) | ||
| 263 | dev_warn(&pdev->dev, "No platform data!\n"); | ||
| 264 | |||
| 265 | info = | ||
| 266 | devm_kzalloc(&pdev->dev, sizeof(struct pm80x_rtc_info), GFP_KERNEL); | ||
| 267 | if (!info) | ||
| 268 | return -ENOMEM; | ||
| 269 | info->irq = platform_get_irq(pdev, 0); | ||
| 270 | if (info->irq < 0) { | ||
| 271 | dev_err(&pdev->dev, "No IRQ resource!\n"); | ||
| 272 | ret = -EINVAL; | ||
| 273 | goto out; | ||
| 274 | } | ||
| 275 | |||
| 276 | info->chip = chip; | ||
| 277 | info->map = chip->regmap; | ||
| 278 | if (!info->map) { | ||
| 279 | dev_err(&pdev->dev, "no regmap!\n"); | ||
| 280 | ret = -EINVAL; | ||
| 281 | goto out; | ||
| 282 | } | ||
| 283 | |||
| 284 | info->dev = &pdev->dev; | ||
| 285 | dev_set_drvdata(&pdev->dev, info); | ||
| 286 | |||
| 287 | ret = pm80x_request_irq(chip, info->irq, rtc_update_handler, | ||
| 288 | IRQF_ONESHOT, "rtc", info); | ||
| 289 | if (ret < 0) { | ||
| 290 | dev_err(chip->dev, "Failed to request IRQ: #%d: %d\n", | ||
| 291 | info->irq, ret); | ||
| 292 | goto out; | ||
| 293 | } | ||
| 294 | |||
| 295 | ret = pm80x_rtc_read_time(&pdev->dev, &tm); | ||
| 296 | if (ret < 0) { | ||
| 297 | dev_err(&pdev->dev, "Failed to read initial time.\n"); | ||
| 298 | goto out_rtc; | ||
| 299 | } | ||
| 300 | if ((tm.tm_year < 70) || (tm.tm_year > 138)) { | ||
| 301 | tm.tm_year = 70; | ||
| 302 | tm.tm_mon = 0; | ||
| 303 | tm.tm_mday = 1; | ||
| 304 | tm.tm_hour = 0; | ||
| 305 | tm.tm_min = 0; | ||
| 306 | tm.tm_sec = 0; | ||
| 307 | ret = pm80x_rtc_set_time(&pdev->dev, &tm); | ||
| 308 | if (ret < 0) { | ||
| 309 | dev_err(&pdev->dev, "Failed to set initial time.\n"); | ||
| 310 | goto out_rtc; | ||
| 311 | } | ||
| 312 | } | ||
| 313 | rtc_tm_to_time(&tm, &ticks); | ||
| 314 | |||
| 315 | info->rtc_dev = rtc_device_register("88pm80x-rtc", &pdev->dev, | ||
| 316 | &pm80x_rtc_ops, THIS_MODULE); | ||
| 317 | ret = PTR_ERR(info->rtc_dev); | ||
| 318 | if (IS_ERR(info->rtc_dev)) { | ||
| 319 | dev_err(&pdev->dev, "Failed to register RTC device: %d\n", ret); | ||
| 320 | goto out_rtc; | ||
| 321 | } | ||
| 322 | /* | ||
| 323 | * enable internal XO instead of internal 3.25MHz clock since it can | ||
| 324 | * free running in PMIC power-down state. | ||
| 325 | */ | ||
| 326 | regmap_update_bits(info->map, PM800_RTC_CONTROL, PM800_RTC1_USE_XO, | ||
| 327 | PM800_RTC1_USE_XO); | ||
| 328 | |||
| 329 | if (pdev->dev.parent->platform_data) { | ||
| 330 | pm80x_pdata = pdev->dev.parent->platform_data; | ||
| 331 | pdata = pm80x_pdata->rtc; | ||
| 332 | if (pdata) | ||
| 333 | info->rtc_dev->dev.platform_data = &pdata->rtc_wakeup; | ||
| 334 | } | ||
| 335 | |||
| 336 | device_init_wakeup(&pdev->dev, 1); | ||
| 337 | |||
| 338 | return 0; | ||
| 339 | out_rtc: | ||
| 340 | pm80x_free_irq(chip, info->irq, info); | ||
| 341 | out: | ||
| 342 | devm_kfree(&pdev->dev, info); | ||
| 343 | return ret; | ||
| 344 | } | ||
| 345 | |||
| 346 | static int __devexit pm80x_rtc_remove(struct platform_device *pdev) | ||
| 347 | { | ||
| 348 | struct pm80x_rtc_info *info = platform_get_drvdata(pdev); | ||
| 349 | platform_set_drvdata(pdev, NULL); | ||
| 350 | rtc_device_unregister(info->rtc_dev); | ||
| 351 | pm80x_free_irq(info->chip, info->irq, info); | ||
| 352 | devm_kfree(&pdev->dev, info); | ||
| 353 | return 0; | ||
| 354 | } | ||
| 355 | |||
| 356 | static struct platform_driver pm80x_rtc_driver = { | ||
| 357 | .driver = { | ||
| 358 | .name = "88pm80x-rtc", | ||
| 359 | .owner = THIS_MODULE, | ||
| 360 | .pm = &pm80x_rtc_pm_ops, | ||
| 361 | }, | ||
| 362 | .probe = pm80x_rtc_probe, | ||
| 363 | .remove = __devexit_p(pm80x_rtc_remove), | ||
| 364 | }; | ||
| 365 | |||
| 366 | module_platform_driver(pm80x_rtc_driver); | ||
| 367 | |||
| 368 | MODULE_LICENSE("GPL"); | ||
| 369 | MODULE_DESCRIPTION("Marvell 88PM80x RTC driver"); | ||
| 370 | MODULE_AUTHOR("Qiao Zhou <zhouqiao@marvell.com>"); | ||
| 371 | MODULE_ALIAS("platform:88pm80x-rtc"); | ||
diff --git a/drivers/rtc/rtc-max8925.c b/drivers/rtc/rtc-max8925.c index 1459055a83aa..34e4349611db 100644 --- a/drivers/rtc/rtc-max8925.c +++ b/drivers/rtc/rtc-max8925.c | |||
| @@ -69,6 +69,7 @@ struct max8925_rtc_info { | |||
| 69 | struct max8925_chip *chip; | 69 | struct max8925_chip *chip; |
| 70 | struct i2c_client *rtc; | 70 | struct i2c_client *rtc; |
| 71 | struct device *dev; | 71 | struct device *dev; |
| 72 | int irq; | ||
| 72 | }; | 73 | }; |
| 73 | 74 | ||
| 74 | static irqreturn_t rtc_update_handler(int irq, void *data) | 75 | static irqreturn_t rtc_update_handler(int irq, void *data) |
| @@ -250,7 +251,7 @@ static int __devinit max8925_rtc_probe(struct platform_device *pdev) | |||
| 250 | { | 251 | { |
| 251 | struct max8925_chip *chip = dev_get_drvdata(pdev->dev.parent); | 252 | struct max8925_chip *chip = dev_get_drvdata(pdev->dev.parent); |
| 252 | struct max8925_rtc_info *info; | 253 | struct max8925_rtc_info *info; |
| 253 | int irq, ret; | 254 | int ret; |
| 254 | 255 | ||
| 255 | info = kzalloc(sizeof(struct max8925_rtc_info), GFP_KERNEL); | 256 | info = kzalloc(sizeof(struct max8925_rtc_info), GFP_KERNEL); |
| 256 | if (!info) | 257 | if (!info) |
| @@ -258,13 +259,13 @@ static int __devinit max8925_rtc_probe(struct platform_device *pdev) | |||
| 258 | info->chip = chip; | 259 | info->chip = chip; |
| 259 | info->rtc = chip->rtc; | 260 | info->rtc = chip->rtc; |
| 260 | info->dev = &pdev->dev; | 261 | info->dev = &pdev->dev; |
| 261 | irq = chip->irq_base + MAX8925_IRQ_RTC_ALARM0; | 262 | info->irq = platform_get_irq(pdev, 0); |
| 262 | 263 | ||
| 263 | ret = request_threaded_irq(irq, NULL, rtc_update_handler, | 264 | ret = request_threaded_irq(info->irq, NULL, rtc_update_handler, |
| 264 | IRQF_ONESHOT, "rtc-alarm0", info); | 265 | IRQF_ONESHOT, "rtc-alarm0", info); |
| 265 | if (ret < 0) { | 266 | if (ret < 0) { |
| 266 | dev_err(chip->dev, "Failed to request IRQ: #%d: %d\n", | 267 | dev_err(chip->dev, "Failed to request IRQ: #%d: %d\n", |
| 267 | irq, ret); | 268 | info->irq, ret); |
| 268 | goto out_irq; | 269 | goto out_irq; |
| 269 | } | 270 | } |
| 270 | 271 | ||
| @@ -285,7 +286,7 @@ static int __devinit max8925_rtc_probe(struct platform_device *pdev) | |||
| 285 | return 0; | 286 | return 0; |
| 286 | out_rtc: | 287 | out_rtc: |
| 287 | platform_set_drvdata(pdev, NULL); | 288 | platform_set_drvdata(pdev, NULL); |
| 288 | free_irq(chip->irq_base + MAX8925_IRQ_RTC_ALARM0, info); | 289 | free_irq(info->irq, info); |
| 289 | out_irq: | 290 | out_irq: |
| 290 | kfree(info); | 291 | kfree(info); |
| 291 | return ret; | 292 | return ret; |
| @@ -296,7 +297,7 @@ static int __devexit max8925_rtc_remove(struct platform_device *pdev) | |||
| 296 | struct max8925_rtc_info *info = platform_get_drvdata(pdev); | 297 | struct max8925_rtc_info *info = platform_get_drvdata(pdev); |
| 297 | 298 | ||
| 298 | if (info) { | 299 | if (info) { |
| 299 | free_irq(info->chip->irq_base + MAX8925_IRQ_RTC_ALARM0, info); | 300 | free_irq(info->irq, info); |
| 300 | rtc_device_unregister(info->rtc_dev); | 301 | rtc_device_unregister(info->rtc_dev); |
| 301 | kfree(info); | 302 | kfree(info); |
| 302 | } | 303 | } |
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c index ec21f4a4a056..bb55eb4a7d48 100644 --- a/drivers/usb/host/ehci-omap.c +++ b/drivers/usb/host/ehci-omap.c | |||
| @@ -152,14 +152,14 @@ static int omap_ehci_init(struct usb_hcd *hcd) | |||
| 152 | struct ehci_hcd_omap_platform_data *pdata; | 152 | struct ehci_hcd_omap_platform_data *pdata; |
| 153 | 153 | ||
| 154 | pdata = hcd->self.controller->platform_data; | 154 | pdata = hcd->self.controller->platform_data; |
| 155 | |||
| 156 | /* Hold PHYs in reset while initializing EHCI controller */ | ||
| 155 | if (pdata->phy_reset) { | 157 | if (pdata->phy_reset) { |
| 156 | if (gpio_is_valid(pdata->reset_gpio_port[0])) | 158 | if (gpio_is_valid(pdata->reset_gpio_port[0])) |
| 157 | gpio_request_one(pdata->reset_gpio_port[0], | 159 | gpio_set_value_cansleep(pdata->reset_gpio_port[0], 0); |
| 158 | GPIOF_OUT_INIT_LOW, "USB1 PHY reset"); | ||
| 159 | 160 | ||
| 160 | if (gpio_is_valid(pdata->reset_gpio_port[1])) | 161 | if (gpio_is_valid(pdata->reset_gpio_port[1])) |
| 161 | gpio_request_one(pdata->reset_gpio_port[1], | 162 | gpio_set_value_cansleep(pdata->reset_gpio_port[1], 0); |
| 162 | GPIOF_OUT_INIT_LOW, "USB2 PHY reset"); | ||
| 163 | 163 | ||
| 164 | /* Hold the PHY in RESET for enough time till DIR is high */ | 164 | /* Hold the PHY in RESET for enough time till DIR is high */ |
| 165 | udelay(10); | 165 | udelay(10); |
diff --git a/include/linux/mfd/88pm80x.h b/include/linux/mfd/88pm80x.h new file mode 100644 index 000000000000..a0ca0dca1244 --- /dev/null +++ b/include/linux/mfd/88pm80x.h | |||
| @@ -0,0 +1,369 @@ | |||
| 1 | /* | ||
| 2 | * Marvell 88PM80x Interface | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Marvell International Ltd. | ||
| 5 | * Qiao Zhou <zhouqiao@marvell.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #ifndef __LINUX_MFD_88PM80X_H | ||
| 13 | #define __LINUX_MFD_88PM80X_H | ||
| 14 | |||
| 15 | #include <linux/platform_device.h> | ||
| 16 | #include <linux/interrupt.h> | ||
| 17 | #include <linux/regmap.h> | ||
| 18 | #include <linux/atomic.h> | ||
| 19 | |||
| 20 | #define PM80X_VERSION_MASK (0xFF) /* 80X chip ID mask */ | ||
| 21 | enum { | ||
| 22 | CHIP_INVALID = 0, | ||
| 23 | CHIP_PM800, | ||
| 24 | CHIP_PM805, | ||
| 25 | CHIP_MAX, | ||
| 26 | }; | ||
| 27 | |||
| 28 | enum { | ||
| 29 | PM800_ID_BUCK1 = 0, | ||
| 30 | PM800_ID_BUCK2, | ||
| 31 | PM800_ID_BUCK3, | ||
| 32 | PM800_ID_BUCK4, | ||
| 33 | PM800_ID_BUCK5, | ||
| 34 | |||
| 35 | PM800_ID_LDO1, | ||
| 36 | PM800_ID_LDO2, | ||
| 37 | PM800_ID_LDO3, | ||
| 38 | PM800_ID_LDO4, | ||
| 39 | PM800_ID_LDO5, | ||
| 40 | PM800_ID_LDO6, | ||
| 41 | PM800_ID_LDO7, | ||
| 42 | PM800_ID_LDO8, | ||
| 43 | PM800_ID_LDO9, | ||
| 44 | PM800_ID_LDO10, | ||
| 45 | PM800_ID_LDO11, | ||
| 46 | PM800_ID_LDO12, | ||
| 47 | PM800_ID_LDO13, | ||
| 48 | PM800_ID_LDO14, | ||
| 49 | PM800_ID_LDO15, | ||
| 50 | PM800_ID_LDO16, | ||
| 51 | PM800_ID_LDO17, | ||
| 52 | PM800_ID_LDO18, | ||
| 53 | PM800_ID_LDO19, | ||
| 54 | |||
| 55 | PM800_ID_RG_MAX, | ||
| 56 | }; | ||
| 57 | #define PM800_MAX_REGULATOR PM800_ID_RG_MAX /* 5 Bucks, 19 LDOs */ | ||
| 58 | #define PM800_NUM_BUCK (5) /*5 Bucks */ | ||
| 59 | #define PM800_NUM_LDO (19) /*19 Bucks */ | ||
| 60 | |||
| 61 | /* page 0 basic: slave adder 0x60 */ | ||
| 62 | |||
| 63 | #define PM800_STATUS_1 (0x01) | ||
| 64 | #define PM800_ONKEY_STS1 (1 << 0) | ||
| 65 | #define PM800_EXTON_STS1 (1 << 1) | ||
| 66 | #define PM800_CHG_STS1 (1 << 2) | ||
| 67 | #define PM800_BAT_STS1 (1 << 3) | ||
| 68 | #define PM800_VBUS_STS1 (1 << 4) | ||
| 69 | #define PM800_LDO_PGOOD_STS1 (1 << 5) | ||
| 70 | #define PM800_BUCK_PGOOD_STS1 (1 << 6) | ||
| 71 | |||
| 72 | #define PM800_STATUS_2 (0x02) | ||
| 73 | #define PM800_RTC_ALARM_STS2 (1 << 0) | ||
| 74 | |||
| 75 | /* Wakeup Registers */ | ||
| 76 | #define PM800_WAKEUP1 (0x0D) | ||
| 77 | |||
| 78 | #define PM800_WAKEUP2 (0x0E) | ||
| 79 | #define PM800_WAKEUP2_INV_INT (1 << 0) | ||
| 80 | #define PM800_WAKEUP2_INT_CLEAR (1 << 1) | ||
| 81 | #define PM800_WAKEUP2_INT_MASK (1 << 2) | ||
| 82 | |||
| 83 | #define PM800_POWER_UP_LOG (0x10) | ||
| 84 | |||
| 85 | /* Referance and low power registers */ | ||
| 86 | #define PM800_LOW_POWER1 (0x20) | ||
| 87 | #define PM800_LOW_POWER2 (0x21) | ||
| 88 | #define PM800_LOW_POWER_CONFIG3 (0x22) | ||
| 89 | #define PM800_LOW_POWER_CONFIG4 (0x23) | ||
| 90 | |||
| 91 | /* GPIO register */ | ||
| 92 | #define PM800_GPIO_0_1_CNTRL (0x30) | ||
| 93 | #define PM800_GPIO0_VAL (1 << 0) | ||
| 94 | #define PM800_GPIO0_GPIO_MODE(x) (x << 1) | ||
| 95 | #define PM800_GPIO1_VAL (1 << 4) | ||
| 96 | #define PM800_GPIO1_GPIO_MODE(x) (x << 5) | ||
| 97 | |||
| 98 | #define PM800_GPIO_2_3_CNTRL (0x31) | ||
| 99 | #define PM800_GPIO2_VAL (1 << 0) | ||
| 100 | #define PM800_GPIO2_GPIO_MODE(x) (x << 1) | ||
| 101 | #define PM800_GPIO3_VAL (1 << 4) | ||
| 102 | #define PM800_GPIO3_GPIO_MODE(x) (x << 5) | ||
| 103 | #define PM800_GPIO3_MODE_MASK 0x1F | ||
| 104 | #define PM800_GPIO3_HEADSET_MODE PM800_GPIO3_GPIO_MODE(6) | ||
| 105 | |||
| 106 | #define PM800_GPIO_4_CNTRL (0x32) | ||
| 107 | #define PM800_GPIO4_VAL (1 << 0) | ||
| 108 | #define PM800_GPIO4_GPIO_MODE(x) (x << 1) | ||
| 109 | |||
| 110 | #define PM800_HEADSET_CNTRL (0x38) | ||
| 111 | #define PM800_HEADSET_DET_EN (1 << 7) | ||
| 112 | #define PM800_HSDET_SLP (1 << 1) | ||
| 113 | /* PWM register */ | ||
| 114 | #define PM800_PWM1 (0x40) | ||
| 115 | #define PM800_PWM2 (0x41) | ||
| 116 | #define PM800_PWM3 (0x42) | ||
| 117 | #define PM800_PWM4 (0x43) | ||
| 118 | |||
| 119 | /* RTC Registers */ | ||
| 120 | #define PM800_RTC_CONTROL (0xD0) | ||
| 121 | #define PM800_RTC_MISC1 (0xE1) | ||
| 122 | #define PM800_RTC_MISC2 (0xE2) | ||
| 123 | #define PM800_RTC_MISC3 (0xE3) | ||
| 124 | #define PM800_RTC_MISC4 (0xE4) | ||
| 125 | #define PM800_RTC_MISC5 (0xE7) | ||
| 126 | /* bit definitions of RTC Register 1 (0xD0) */ | ||
| 127 | #define PM800_ALARM1_EN (1 << 0) | ||
| 128 | #define PM800_ALARM_WAKEUP (1 << 4) | ||
| 129 | #define PM800_ALARM (1 << 5) | ||
| 130 | #define PM800_RTC1_USE_XO (1 << 7) | ||
| 131 | |||
| 132 | /* Regulator Control Registers: BUCK1,BUCK5,LDO1 have DVC */ | ||
| 133 | |||
| 134 | /* buck registers */ | ||
| 135 | #define PM800_SLEEP_BUCK1 (0x30) | ||
| 136 | |||
| 137 | /* BUCK Sleep Mode Register 1: BUCK[1..4] */ | ||
| 138 | #define PM800_BUCK_SLP1 (0x5A) | ||
| 139 | #define PM800_BUCK1_SLP1_SHIFT 0 | ||
| 140 | #define PM800_BUCK1_SLP1_MASK (0x3 << PM800_BUCK1_SLP1_SHIFT) | ||
| 141 | |||
| 142 | /* page 2 GPADC: slave adder 0x02 */ | ||
| 143 | #define PM800_GPADC_MEAS_EN1 (0x01) | ||
| 144 | #define PM800_MEAS_EN1_VBAT (1 << 2) | ||
| 145 | #define PM800_GPADC_MEAS_EN2 (0x02) | ||
| 146 | #define PM800_MEAS_EN2_RFTMP (1 << 0) | ||
| 147 | #define PM800_MEAS_GP0_EN (1 << 2) | ||
| 148 | #define PM800_MEAS_GP1_EN (1 << 3) | ||
| 149 | #define PM800_MEAS_GP2_EN (1 << 4) | ||
| 150 | #define PM800_MEAS_GP3_EN (1 << 5) | ||
| 151 | #define PM800_MEAS_GP4_EN (1 << 6) | ||
| 152 | |||
| 153 | #define PM800_GPADC_MISC_CONFIG1 (0x05) | ||
| 154 | #define PM800_GPADC_MISC_CONFIG2 (0x06) | ||
| 155 | #define PM800_GPADC_MISC_GPFSM_EN (1 << 0) | ||
| 156 | #define PM800_GPADC_SLOW_MODE(x) (x << 3) | ||
| 157 | |||
| 158 | #define PM800_GPADC_MISC_CONFIG3 (0x09) | ||
| 159 | #define PM800_GPADC_MISC_CONFIG4 (0x0A) | ||
| 160 | |||
| 161 | #define PM800_GPADC_PREBIAS1 (0x0F) | ||
| 162 | #define PM800_GPADC0_GP_PREBIAS_TIME(x) (x << 0) | ||
| 163 | #define PM800_GPADC_PREBIAS2 (0x10) | ||
| 164 | |||
| 165 | #define PM800_GP_BIAS_ENA1 (0x14) | ||
| 166 | #define PM800_GPADC_GP_BIAS_EN0 (1 << 0) | ||
| 167 | #define PM800_GPADC_GP_BIAS_EN1 (1 << 1) | ||
| 168 | #define PM800_GPADC_GP_BIAS_EN2 (1 << 2) | ||
| 169 | #define PM800_GPADC_GP_BIAS_EN3 (1 << 3) | ||
| 170 | |||
| 171 | #define PM800_GP_BIAS_OUT1 (0x15) | ||
| 172 | #define PM800_BIAS_OUT_GP0 (1 << 0) | ||
| 173 | #define PM800_BIAS_OUT_GP1 (1 << 1) | ||
| 174 | #define PM800_BIAS_OUT_GP2 (1 << 2) | ||
| 175 | #define PM800_BIAS_OUT_GP3 (1 << 3) | ||
| 176 | |||
| 177 | #define PM800_GPADC0_LOW_TH 0x20 | ||
| 178 | #define PM800_GPADC1_LOW_TH 0x21 | ||
| 179 | #define PM800_GPADC2_LOW_TH 0x22 | ||
| 180 | #define PM800_GPADC3_LOW_TH 0x23 | ||
| 181 | #define PM800_GPADC4_LOW_TH 0x24 | ||
| 182 | |||
| 183 | #define PM800_GPADC0_UPP_TH 0x30 | ||
| 184 | #define PM800_GPADC1_UPP_TH 0x31 | ||
| 185 | #define PM800_GPADC2_UPP_TH 0x32 | ||
| 186 | #define PM800_GPADC3_UPP_TH 0x33 | ||
| 187 | #define PM800_GPADC4_UPP_TH 0x34 | ||
| 188 | |||
| 189 | #define PM800_VBBAT_MEAS1 0x40 | ||
| 190 | #define PM800_VBBAT_MEAS2 0x41 | ||
| 191 | #define PM800_VBAT_MEAS1 0x42 | ||
| 192 | #define PM800_VBAT_MEAS2 0x43 | ||
| 193 | #define PM800_VSYS_MEAS1 0x44 | ||
| 194 | #define PM800_VSYS_MEAS2 0x45 | ||
| 195 | #define PM800_VCHG_MEAS1 0x46 | ||
| 196 | #define PM800_VCHG_MEAS2 0x47 | ||
| 197 | #define PM800_TINT_MEAS1 0x50 | ||
| 198 | #define PM800_TINT_MEAS2 0x51 | ||
| 199 | #define PM800_PMOD_MEAS1 0x52 | ||
| 200 | #define PM800_PMOD_MEAS2 0x53 | ||
| 201 | |||
| 202 | #define PM800_GPADC0_MEAS1 0x54 | ||
| 203 | #define PM800_GPADC0_MEAS2 0x55 | ||
| 204 | #define PM800_GPADC1_MEAS1 0x56 | ||
| 205 | #define PM800_GPADC1_MEAS2 0x57 | ||
| 206 | #define PM800_GPADC2_MEAS1 0x58 | ||
| 207 | #define PM800_GPADC2_MEAS2 0x59 | ||
| 208 | #define PM800_GPADC3_MEAS1 0x5A | ||
| 209 | #define PM800_GPADC3_MEAS2 0x5B | ||
| 210 | #define PM800_GPADC4_MEAS1 0x5C | ||
| 211 | #define PM800_GPADC4_MEAS2 0x5D | ||
| 212 | |||
| 213 | #define PM800_GPADC4_AVG1 0xA8 | ||
| 214 | #define PM800_GPADC4_AVG2 0xA9 | ||
| 215 | |||
| 216 | /* 88PM805 Registers */ | ||
| 217 | #define PM805_MAIN_POWERUP (0x01) | ||
| 218 | #define PM805_INT_STATUS0 (0x02) /* for ena/dis all interrupts */ | ||
| 219 | |||
| 220 | #define PM805_STATUS0_INT_CLEAR (1 << 0) | ||
| 221 | #define PM805_STATUS0_INV_INT (1 << 1) | ||
| 222 | #define PM800_STATUS0_INT_MASK (1 << 2) | ||
| 223 | |||
| 224 | #define PM805_INT_STATUS1 (0x03) | ||
| 225 | |||
| 226 | #define PM805_INT1_HP1_SHRT (1 << 0) | ||
| 227 | #define PM805_INT1_HP2_SHRT (1 << 1) | ||
| 228 | #define PM805_INT1_MIC_CONFLICT (1 << 2) | ||
| 229 | #define PM805_INT1_CLIP_FAULT (1 << 3) | ||
| 230 | #define PM805_INT1_LDO_OFF (1 << 4) | ||
| 231 | #define PM805_INT1_SRC_DPLL_LOCK (1 << 5) | ||
| 232 | |||
| 233 | #define PM805_INT_STATUS2 (0x04) | ||
| 234 | |||
| 235 | #define PM805_INT2_MIC_DET (1 << 0) | ||
| 236 | #define PM805_INT2_SHRT_BTN_DET (1 << 1) | ||
| 237 | #define PM805_INT2_VOLM_BTN_DET (1 << 2) | ||
| 238 | #define PM805_INT2_VOLP_BTN_DET (1 << 3) | ||
| 239 | #define PM805_INT2_RAW_PLL_FAULT (1 << 4) | ||
| 240 | #define PM805_INT2_FINE_PLL_FAULT (1 << 5) | ||
| 241 | |||
| 242 | #define PM805_INT_MASK1 (0x05) | ||
| 243 | #define PM805_INT_MASK2 (0x06) | ||
| 244 | #define PM805_SHRT_BTN_DET (1 << 1) | ||
| 245 | |||
| 246 | /* number of status and int reg in a row */ | ||
| 247 | #define PM805_INT_REG_NUM (2) | ||
| 248 | |||
| 249 | #define PM805_MIC_DET1 (0x07) | ||
| 250 | #define PM805_MIC_DET_EN_MIC_DET (1 << 0) | ||
| 251 | #define PM805_MIC_DET2 (0x08) | ||
| 252 | #define PM805_MIC_DET_STATUS1 (0x09) | ||
| 253 | |||
| 254 | #define PM805_MIC_DET_STATUS3 (0x0A) | ||
| 255 | #define PM805_AUTO_SEQ_STATUS1 (0x0B) | ||
| 256 | #define PM805_AUTO_SEQ_STATUS2 (0x0C) | ||
| 257 | |||
| 258 | #define PM805_ADC_SETTING1 (0x10) | ||
| 259 | #define PM805_ADC_SETTING2 (0x11) | ||
| 260 | #define PM805_ADC_SETTING3 (0x11) | ||
| 261 | #define PM805_ADC_GAIN1 (0x12) | ||
| 262 | #define PM805_ADC_GAIN2 (0x13) | ||
| 263 | #define PM805_DMIC_SETTING (0x15) | ||
| 264 | #define PM805_DWS_SETTING (0x16) | ||
| 265 | #define PM805_MIC_CONFLICT_STS (0x17) | ||
| 266 | |||
| 267 | #define PM805_PDM_SETTING1 (0x20) | ||
| 268 | #define PM805_PDM_SETTING2 (0x21) | ||
| 269 | #define PM805_PDM_SETTING3 (0x22) | ||
| 270 | #define PM805_PDM_CONTROL1 (0x23) | ||
| 271 | #define PM805_PDM_CONTROL2 (0x24) | ||
| 272 | #define PM805_PDM_CONTROL3 (0x25) | ||
| 273 | |||
| 274 | #define PM805_HEADPHONE_SETTING (0x26) | ||
| 275 | #define PM805_HEADPHONE_GAIN_A2A (0x27) | ||
| 276 | #define PM805_HEADPHONE_SHORT_STATE (0x28) | ||
| 277 | #define PM805_EARPHONE_SETTING (0x29) | ||
| 278 | #define PM805_AUTO_SEQ_SETTING (0x2A) | ||
| 279 | |||
| 280 | struct pm80x_rtc_pdata { | ||
| 281 | int vrtc; | ||
| 282 | int rtc_wakeup; | ||
| 283 | }; | ||
| 284 | |||
| 285 | struct pm80x_subchip { | ||
| 286 | struct i2c_client *power_page; /* chip client for power page */ | ||
| 287 | struct i2c_client *gpadc_page; /* chip client for gpadc page */ | ||
| 288 | struct regmap *regmap_power; | ||
| 289 | struct regmap *regmap_gpadc; | ||
| 290 | unsigned short power_page_addr; /* power page I2C address */ | ||
| 291 | unsigned short gpadc_page_addr; /* gpadc page I2C address */ | ||
| 292 | }; | ||
| 293 | |||
| 294 | struct pm80x_chip { | ||
| 295 | struct pm80x_subchip *subchip; | ||
| 296 | struct device *dev; | ||
| 297 | struct i2c_client *client; | ||
| 298 | struct i2c_client *companion; | ||
| 299 | struct regmap *regmap; | ||
| 300 | struct regmap_irq_chip *regmap_irq_chip; | ||
| 301 | struct regmap_irq_chip_data *irq_data; | ||
| 302 | unsigned char version; | ||
| 303 | int id; | ||
| 304 | int irq; | ||
| 305 | int irq_mode; | ||
| 306 | unsigned long wu_flag; | ||
| 307 | spinlock_t lock; | ||
| 308 | }; | ||
| 309 | |||
| 310 | struct pm80x_platform_data { | ||
| 311 | struct pm80x_rtc_pdata *rtc; | ||
| 312 | unsigned short power_page_addr; /* power page I2C address */ | ||
| 313 | unsigned short gpadc_page_addr; /* gpadc page I2C address */ | ||
| 314 | int irq_mode; /* Clear interrupt by read/write(0/1) */ | ||
| 315 | int batt_det; /* enable/disable */ | ||
| 316 | int (*plat_config)(struct pm80x_chip *chip, | ||
| 317 | struct pm80x_platform_data *pdata); | ||
| 318 | }; | ||
| 319 | |||
| 320 | extern const struct dev_pm_ops pm80x_pm_ops; | ||
| 321 | extern const struct regmap_config pm80x_regmap_config; | ||
| 322 | |||
| 323 | static inline int pm80x_request_irq(struct pm80x_chip *pm80x, int irq, | ||
| 324 | irq_handler_t handler, unsigned long flags, | ||
| 325 | const char *name, void *data) | ||
| 326 | { | ||
| 327 | if (!pm80x->irq_data) | ||
| 328 | return -EINVAL; | ||
| 329 | return request_threaded_irq(regmap_irq_get_virq(pm80x->irq_data, irq), | ||
| 330 | NULL, handler, flags, name, data); | ||
| 331 | } | ||
| 332 | |||
| 333 | static inline void pm80x_free_irq(struct pm80x_chip *pm80x, int irq, void *data) | ||
| 334 | { | ||
| 335 | if (!pm80x->irq_data) | ||
| 336 | return; | ||
| 337 | free_irq(regmap_irq_get_virq(pm80x->irq_data, irq), data); | ||
| 338 | } | ||
| 339 | |||
| 340 | #ifdef CONFIG_PM | ||
| 341 | static inline int pm80x_dev_suspend(struct device *dev) | ||
| 342 | { | ||
| 343 | struct platform_device *pdev = to_platform_device(dev); | ||
| 344 | struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent); | ||
| 345 | int irq = platform_get_irq(pdev, 0); | ||
| 346 | |||
| 347 | if (device_may_wakeup(dev)) | ||
| 348 | set_bit((1 << irq), &chip->wu_flag); | ||
| 349 | |||
| 350 | return 0; | ||
| 351 | } | ||
| 352 | |||
| 353 | static inline int pm80x_dev_resume(struct device *dev) | ||
| 354 | { | ||
| 355 | struct platform_device *pdev = to_platform_device(dev); | ||
| 356 | struct pm80x_chip *chip = dev_get_drvdata(pdev->dev.parent); | ||
| 357 | int irq = platform_get_irq(pdev, 0); | ||
| 358 | |||
| 359 | if (device_may_wakeup(dev)) | ||
| 360 | clear_bit((1 << irq), &chip->wu_flag); | ||
| 361 | |||
| 362 | return 0; | ||
| 363 | } | ||
| 364 | #endif | ||
| 365 | |||
| 366 | extern int pm80x_init(struct i2c_client *client, | ||
| 367 | const struct i2c_device_id *id) __devinit; | ||
| 368 | extern int pm80x_deinit(struct i2c_client *client); | ||
| 369 | #endif /* __LINUX_MFD_88PM80X_H */ | ||
diff --git a/include/linux/mfd/88pm860x.h b/include/linux/mfd/88pm860x.h index 84d071ade1d8..7b24943779fa 100644 --- a/include/linux/mfd/88pm860x.h +++ b/include/linux/mfd/88pm860x.h | |||
| @@ -136,6 +136,7 @@ enum { | |||
| 136 | PM8607_ID_LDO13, | 136 | PM8607_ID_LDO13, |
| 137 | PM8607_ID_LDO14, | 137 | PM8607_ID_LDO14, |
| 138 | PM8607_ID_LDO15, | 138 | PM8607_ID_LDO15, |
| 139 | PM8606_ID_PREG, | ||
| 139 | 140 | ||
| 140 | PM8607_ID_RG_MAX, | 141 | PM8607_ID_RG_MAX, |
| 141 | }; | 142 | }; |
diff --git a/include/linux/mfd/abx500/ab8500.h b/include/linux/mfd/abx500/ab8500.h index bc9b84b60ec6..3764cb6759e3 100644 --- a/include/linux/mfd/abx500/ab8500.h +++ b/include/linux/mfd/abx500/ab8500.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | 9 | ||
| 10 | #include <linux/atomic.h> | 10 | #include <linux/atomic.h> |
| 11 | #include <linux/mutex.h> | 11 | #include <linux/mutex.h> |
| 12 | #include <linux/irqdomain.h> | ||
| 12 | 13 | ||
| 13 | struct device; | 14 | struct device; |
| 14 | 15 | ||
| @@ -227,6 +228,7 @@ enum ab8500_version { | |||
| 227 | * @irq_lock: genirq bus lock | 228 | * @irq_lock: genirq bus lock |
| 228 | * @transfer_ongoing: 0 if no transfer ongoing | 229 | * @transfer_ongoing: 0 if no transfer ongoing |
| 229 | * @irq: irq line | 230 | * @irq: irq line |
| 231 | * @irq_domain: irq domain | ||
| 230 | * @version: chip version id (e.g. ab8500 or ab9540) | 232 | * @version: chip version id (e.g. ab8500 or ab9540) |
| 231 | * @chip_id: chip revision id | 233 | * @chip_id: chip revision id |
| 232 | * @write: register write | 234 | * @write: register write |
| @@ -247,6 +249,7 @@ struct ab8500 { | |||
| 247 | atomic_t transfer_ongoing; | 249 | atomic_t transfer_ongoing; |
| 248 | int irq_base; | 250 | int irq_base; |
| 249 | int irq; | 251 | int irq; |
| 252 | struct irq_domain *domain; | ||
| 250 | enum ab8500_version version; | 253 | enum ab8500_version version; |
| 251 | u8 chip_id; | 254 | u8 chip_id; |
| 252 | 255 | ||
| @@ -338,4 +341,6 @@ static inline int is_ab8500_2p0(struct ab8500 *ab) | |||
| 338 | return (is_ab8500(ab) && (ab->chip_id == AB8500_CUT2P0)); | 341 | return (is_ab8500(ab) && (ab->chip_id == AB8500_CUT2P0)); |
| 339 | } | 342 | } |
| 340 | 343 | ||
| 344 | int ab8500_irq_get_virq(struct ab8500 *ab8500, int irq); | ||
| 345 | |||
| 341 | #endif /* MFD_AB8500_H */ | 346 | #endif /* MFD_AB8500_H */ |
diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h new file mode 100644 index 000000000000..dd231ac0bb1f --- /dev/null +++ b/include/linux/mfd/arizona/core.h | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | /* | ||
| 2 | * Arizona MFD internals | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics plc | ||
| 5 | * | ||
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef _WM_ARIZONA_CORE_H | ||
| 14 | #define _WM_ARIZONA_CORE_H | ||
| 15 | |||
| 16 | #include <linux/interrupt.h> | ||
| 17 | #include <linux/regmap.h> | ||
| 18 | #include <linux/regulator/consumer.h> | ||
| 19 | #include <linux/mfd/arizona/pdata.h> | ||
| 20 | |||
| 21 | #define ARIZONA_MAX_CORE_SUPPLIES 3 | ||
| 22 | |||
| 23 | enum arizona_type { | ||
| 24 | WM5102 = 1, | ||
| 25 | WM5110 = 2, | ||
| 26 | }; | ||
| 27 | |||
| 28 | #define ARIZONA_IRQ_GP1 0 | ||
| 29 | #define ARIZONA_IRQ_GP2 1 | ||
| 30 | #define ARIZONA_IRQ_GP3 2 | ||
| 31 | #define ARIZONA_IRQ_GP4 3 | ||
| 32 | #define ARIZONA_IRQ_GP5_FALL 4 | ||
| 33 | #define ARIZONA_IRQ_GP5_RISE 5 | ||
| 34 | #define ARIZONA_IRQ_JD_FALL 6 | ||
| 35 | #define ARIZONA_IRQ_JD_RISE 7 | ||
| 36 | #define ARIZONA_IRQ_DSP1_RAM_RDY 8 | ||
| 37 | #define ARIZONA_IRQ_DSP2_RAM_RDY 9 | ||
| 38 | #define ARIZONA_IRQ_DSP3_RAM_RDY 10 | ||
| 39 | #define ARIZONA_IRQ_DSP4_RAM_RDY 11 | ||
| 40 | #define ARIZONA_IRQ_DSP_IRQ1 12 | ||
| 41 | #define ARIZONA_IRQ_DSP_IRQ2 13 | ||
| 42 | #define ARIZONA_IRQ_DSP_IRQ3 14 | ||
| 43 | #define ARIZONA_IRQ_DSP_IRQ4 15 | ||
| 44 | #define ARIZONA_IRQ_DSP_IRQ5 16 | ||
| 45 | #define ARIZONA_IRQ_DSP_IRQ6 17 | ||
| 46 | #define ARIZONA_IRQ_DSP_IRQ7 18 | ||
| 47 | #define ARIZONA_IRQ_DSP_IRQ8 19 | ||
| 48 | #define ARIZONA_IRQ_SPK_SHUTDOWN_WARN 20 | ||
| 49 | #define ARIZONA_IRQ_SPK_SHUTDOWN 21 | ||
| 50 | #define ARIZONA_IRQ_MICDET 22 | ||
| 51 | #define ARIZONA_IRQ_HPDET 23 | ||
| 52 | #define ARIZONA_IRQ_WSEQ_DONE 24 | ||
| 53 | #define ARIZONA_IRQ_DRC2_SIG_DET 25 | ||
| 54 | #define ARIZONA_IRQ_DRC1_SIG_DET 26 | ||
| 55 | #define ARIZONA_IRQ_ASRC2_LOCK 27 | ||
| 56 | #define ARIZONA_IRQ_ASRC1_LOCK 28 | ||
| 57 | #define ARIZONA_IRQ_UNDERCLOCKED 29 | ||
| 58 | #define ARIZONA_IRQ_OVERCLOCKED 30 | ||
| 59 | #define ARIZONA_IRQ_FLL2_LOCK 31 | ||
| 60 | #define ARIZONA_IRQ_FLL1_LOCK 32 | ||
| 61 | #define ARIZONA_IRQ_CLKGEN_ERR 33 | ||
| 62 | #define ARIZONA_IRQ_CLKGEN_ERR_ASYNC 34 | ||
| 63 | #define ARIZONA_IRQ_ASRC_CFG_ERR 35 | ||
| 64 | #define ARIZONA_IRQ_AIF3_ERR 36 | ||
| 65 | #define ARIZONA_IRQ_AIF2_ERR 37 | ||
| 66 | #define ARIZONA_IRQ_AIF1_ERR 38 | ||
| 67 | #define ARIZONA_IRQ_CTRLIF_ERR 39 | ||
| 68 | #define ARIZONA_IRQ_MIXER_DROPPED_SAMPLES 40 | ||
| 69 | #define ARIZONA_IRQ_ASYNC_CLK_ENA_LOW 41 | ||
| 70 | #define ARIZONA_IRQ_SYSCLK_ENA_LOW 42 | ||
| 71 | #define ARIZONA_IRQ_ISRC1_CFG_ERR 43 | ||
| 72 | #define ARIZONA_IRQ_ISRC2_CFG_ERR 44 | ||
| 73 | #define ARIZONA_IRQ_BOOT_DONE 45 | ||
| 74 | #define ARIZONA_IRQ_DCS_DAC_DONE 46 | ||
| 75 | #define ARIZONA_IRQ_DCS_HP_DONE 47 | ||
| 76 | #define ARIZONA_IRQ_FLL2_CLOCK_OK 48 | ||
| 77 | #define ARIZONA_IRQ_FLL1_CLOCK_OK 49 | ||
| 78 | |||
| 79 | #define ARIZONA_NUM_IRQ 50 | ||
| 80 | |||
| 81 | struct arizona { | ||
| 82 | struct regmap *regmap; | ||
| 83 | struct device *dev; | ||
| 84 | |||
| 85 | enum arizona_type type; | ||
| 86 | unsigned int rev; | ||
| 87 | |||
| 88 | int num_core_supplies; | ||
| 89 | struct regulator_bulk_data core_supplies[ARIZONA_MAX_CORE_SUPPLIES]; | ||
| 90 | struct regulator *dcvdd; | ||
| 91 | |||
| 92 | struct arizona_pdata pdata; | ||
| 93 | |||
| 94 | int irq; | ||
| 95 | struct irq_domain *virq; | ||
| 96 | struct regmap_irq_chip_data *aod_irq_chip; | ||
| 97 | struct regmap_irq_chip_data *irq_chip; | ||
| 98 | |||
| 99 | struct mutex clk_lock; | ||
| 100 | int clk32k_ref; | ||
| 101 | }; | ||
| 102 | |||
| 103 | int arizona_clk32k_enable(struct arizona *arizona); | ||
| 104 | int arizona_clk32k_disable(struct arizona *arizona); | ||
| 105 | |||
| 106 | int arizona_request_irq(struct arizona *arizona, int irq, char *name, | ||
| 107 | irq_handler_t handler, void *data); | ||
| 108 | void arizona_free_irq(struct arizona *arizona, int irq, void *data); | ||
| 109 | int arizona_set_irq_wake(struct arizona *arizona, int irq, int on); | ||
| 110 | |||
| 111 | int wm5102_patch(struct arizona *arizona); | ||
| 112 | int wm5110_patch(struct arizona *arizona); | ||
| 113 | |||
| 114 | #endif | ||
diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h new file mode 100644 index 000000000000..7ab442905a57 --- /dev/null +++ b/include/linux/mfd/arizona/pdata.h | |||
| @@ -0,0 +1,119 @@ | |||
| 1 | /* | ||
| 2 | * Platform data for Arizona devices | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics. PLC. | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef _ARIZONA_PDATA_H | ||
| 12 | #define _ARIZONA_PDATA_H | ||
| 13 | |||
| 14 | #define ARIZONA_GPN_DIR 0x8000 /* GPN_DIR */ | ||
| 15 | #define ARIZONA_GPN_DIR_MASK 0x8000 /* GPN_DIR */ | ||
| 16 | #define ARIZONA_GPN_DIR_SHIFT 15 /* GPN_DIR */ | ||
| 17 | #define ARIZONA_GPN_DIR_WIDTH 1 /* GPN_DIR */ | ||
| 18 | #define ARIZONA_GPN_PU 0x4000 /* GPN_PU */ | ||
| 19 | #define ARIZONA_GPN_PU_MASK 0x4000 /* GPN_PU */ | ||
| 20 | #define ARIZONA_GPN_PU_SHIFT 14 /* GPN_PU */ | ||
| 21 | #define ARIZONA_GPN_PU_WIDTH 1 /* GPN_PU */ | ||
| 22 | #define ARIZONA_GPN_PD 0x2000 /* GPN_PD */ | ||
| 23 | #define ARIZONA_GPN_PD_MASK 0x2000 /* GPN_PD */ | ||
| 24 | #define ARIZONA_GPN_PD_SHIFT 13 /* GPN_PD */ | ||
| 25 | #define ARIZONA_GPN_PD_WIDTH 1 /* GPN_PD */ | ||
| 26 | #define ARIZONA_GPN_LVL 0x0800 /* GPN_LVL */ | ||
| 27 | #define ARIZONA_GPN_LVL_MASK 0x0800 /* GPN_LVL */ | ||
| 28 | #define ARIZONA_GPN_LVL_SHIFT 11 /* GPN_LVL */ | ||
| 29 | #define ARIZONA_GPN_LVL_WIDTH 1 /* GPN_LVL */ | ||
| 30 | #define ARIZONA_GPN_POL 0x0400 /* GPN_POL */ | ||
| 31 | #define ARIZONA_GPN_POL_MASK 0x0400 /* GPN_POL */ | ||
| 32 | #define ARIZONA_GPN_POL_SHIFT 10 /* GPN_POL */ | ||
| 33 | #define ARIZONA_GPN_POL_WIDTH 1 /* GPN_POL */ | ||
| 34 | #define ARIZONA_GPN_OP_CFG 0x0200 /* GPN_OP_CFG */ | ||
| 35 | #define ARIZONA_GPN_OP_CFG_MASK 0x0200 /* GPN_OP_CFG */ | ||
| 36 | #define ARIZONA_GPN_OP_CFG_SHIFT 9 /* GPN_OP_CFG */ | ||
| 37 | #define ARIZONA_GPN_OP_CFG_WIDTH 1 /* GPN_OP_CFG */ | ||
| 38 | #define ARIZONA_GPN_DB 0x0100 /* GPN_DB */ | ||
| 39 | #define ARIZONA_GPN_DB_MASK 0x0100 /* GPN_DB */ | ||
| 40 | #define ARIZONA_GPN_DB_SHIFT 8 /* GPN_DB */ | ||
| 41 | #define ARIZONA_GPN_DB_WIDTH 1 /* GPN_DB */ | ||
| 42 | #define ARIZONA_GPN_FN_MASK 0x007F /* GPN_FN - [6:0] */ | ||
| 43 | #define ARIZONA_GPN_FN_SHIFT 0 /* GPN_FN - [6:0] */ | ||
| 44 | #define ARIZONA_GPN_FN_WIDTH 7 /* GPN_FN - [6:0] */ | ||
| 45 | |||
| 46 | #define ARIZONA_MAX_GPIO 5 | ||
| 47 | |||
| 48 | #define ARIZONA_32KZ_MCLK1 1 | ||
| 49 | #define ARIZONA_32KZ_MCLK2 2 | ||
| 50 | #define ARIZONA_32KZ_NONE 3 | ||
| 51 | |||
| 52 | #define ARIZONA_MAX_INPUT 4 | ||
| 53 | |||
| 54 | #define ARIZONA_DMIC_MICVDD 0 | ||
| 55 | #define ARIZONA_DMIC_MICBIAS1 1 | ||
| 56 | #define ARIZONA_DMIC_MICBIAS2 2 | ||
| 57 | #define ARIZONA_DMIC_MICBIAS3 3 | ||
| 58 | |||
| 59 | #define ARIZONA_INMODE_DIFF 0 | ||
| 60 | #define ARIZONA_INMODE_SE 1 | ||
| 61 | #define ARIZONA_INMODE_DMIC 2 | ||
| 62 | |||
| 63 | #define ARIZONA_MAX_OUTPUT 6 | ||
| 64 | |||
| 65 | #define ARIZONA_MAX_PDM_SPK 2 | ||
| 66 | |||
| 67 | struct regulator_init_data; | ||
| 68 | |||
| 69 | struct arizona_micd_config { | ||
| 70 | unsigned int src; | ||
| 71 | unsigned int bias; | ||
| 72 | bool gpio; | ||
| 73 | }; | ||
| 74 | |||
| 75 | struct arizona_pdata { | ||
| 76 | int reset; /** GPIO controlling /RESET, if any */ | ||
| 77 | int ldoena; /** GPIO controlling LODENA, if any */ | ||
| 78 | |||
| 79 | /** Regulator configuration for MICVDD */ | ||
| 80 | struct regulator_init_data *micvdd; | ||
| 81 | |||
| 82 | /** Regulator configuration for LDO1 */ | ||
| 83 | struct regulator_init_data *ldo1; | ||
| 84 | |||
| 85 | /** If a direct 32kHz clock is provided on an MCLK specify it here */ | ||
| 86 | int clk32k_src; | ||
| 87 | |||
| 88 | bool irq_active_high; /** IRQ polarity */ | ||
| 89 | |||
| 90 | /* Base GPIO */ | ||
| 91 | int gpio_base; | ||
| 92 | |||
| 93 | /** Pin state for GPIO pins */ | ||
| 94 | int gpio_defaults[ARIZONA_MAX_GPIO]; | ||
| 95 | |||
| 96 | /** GPIO for mic detection polarity */ | ||
| 97 | int micd_pol_gpio; | ||
| 98 | |||
| 99 | /** Headset polarity configurations */ | ||
| 100 | struct arizona_micd_config *micd_configs; | ||
| 101 | int num_micd_configs; | ||
| 102 | |||
| 103 | /** Reference voltage for DMIC inputs */ | ||
| 104 | int dmic_ref[ARIZONA_MAX_INPUT]; | ||
| 105 | |||
| 106 | /** Mode of input structures */ | ||
| 107 | int inmode[ARIZONA_MAX_INPUT]; | ||
| 108 | |||
| 109 | /** Mode for outputs */ | ||
| 110 | bool out_mono[ARIZONA_MAX_OUTPUT]; | ||
| 111 | |||
| 112 | /** PDM speaker mute setting */ | ||
| 113 | unsigned int spk_mute[ARIZONA_MAX_PDM_SPK]; | ||
| 114 | |||
| 115 | /** PDM speaker format */ | ||
| 116 | unsigned int spk_fmt[ARIZONA_MAX_PDM_SPK]; | ||
| 117 | }; | ||
| 118 | |||
| 119 | #endif | ||
diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h new file mode 100644 index 000000000000..7671a287dfee --- /dev/null +++ b/include/linux/mfd/arizona/registers.h | |||
| @@ -0,0 +1,6594 @@ | |||
| 1 | /* | ||
| 2 | * ARIZONA register definitions | ||
| 3 | * | ||
| 4 | * Copyright 2012 Wolfson Microelectronics plc | ||
| 5 | * | ||
| 6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef _ARIZONA_REGISTERS_H | ||
| 14 | #define _ARIZONA_REGISTERS_H | ||
| 15 | |||
| 16 | /* | ||
| 17 | * Register values. | ||
| 18 | */ | ||
| 19 | #define ARIZONA_SOFTWARE_RESET 0x00 | ||
| 20 | #define ARIZONA_DEVICE_REVISION 0x01 | ||
| 21 | #define ARIZONA_CTRL_IF_SPI_CFG_1 0x08 | ||
| 22 | #define ARIZONA_CTRL_IF_I2C1_CFG_1 0x09 | ||
| 23 | #define ARIZONA_CTRL_IF_I2C2_CFG_1 0x0A | ||
| 24 | #define ARIZONA_CTRL_IF_I2C1_CFG_2 0x0B | ||
| 25 | #define ARIZONA_CTRL_IF_I2C2_CFG_2 0x0C | ||
| 26 | #define ARIZONA_CTRL_IF_STATUS_1 0x0D | ||
| 27 | #define ARIZONA_WRITE_SEQUENCER_CTRL_0 0x16 | ||
| 28 | #define ARIZONA_WRITE_SEQUENCER_CTRL_1 0x17 | ||
| 29 | #define ARIZONA_WRITE_SEQUENCER_CTRL_2 0x18 | ||
| 30 | #define ARIZONA_WRITE_SEQUENCER_PROM 0x1A | ||
| 31 | #define ARIZONA_TONE_GENERATOR_1 0x20 | ||
| 32 | #define ARIZONA_TONE_GENERATOR_2 0x21 | ||
| 33 | #define ARIZONA_TONE_GENERATOR_3 0x22 | ||
| 34 | #define ARIZONA_TONE_GENERATOR_4 0x23 | ||
| 35 | #define ARIZONA_TONE_GENERATOR_5 0x24 | ||
| 36 | #define ARIZONA_PWM_DRIVE_1 0x30 | ||
| 37 | #define ARIZONA_PWM_DRIVE_2 0x31 | ||
| 38 | #define ARIZONA_PWM_DRIVE_3 0x32 | ||
| 39 | #define ARIZONA_WAKE_CONTROL 0x40 | ||
| 40 | #define ARIZONA_SEQUENCE_CONTROL 0x41 | ||
| 41 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1 0x61 | ||
| 42 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2 0x62 | ||
| 43 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3 0x63 | ||
| 44 | #define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_4 0x64 | ||
| 45 | #define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_1 0x68 | ||
| 46 | #define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_2 0x69 | ||
| 47 | #define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_3 0x6A | ||
| 48 | #define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4 0x6B | ||
| 49 | #define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_5 0x6C | ||
| 50 | #define ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_6 0x6D | ||
| 51 | #define ARIZONA_COMFORT_NOISE_GENERATOR 0x70 | ||
| 52 | #define ARIZONA_HAPTICS_CONTROL_1 0x90 | ||
| 53 | #define ARIZONA_HAPTICS_CONTROL_2 0x91 | ||
| 54 | #define ARIZONA_HAPTICS_PHASE_1_INTENSITY 0x92 | ||
| 55 | #define ARIZONA_HAPTICS_PHASE_1_DURATION 0x93 | ||
| 56 | #define ARIZONA_HAPTICS_PHASE_2_INTENSITY 0x94 | ||
| 57 | #define ARIZONA_HAPTICS_PHASE_2_DURATION 0x95 | ||
| 58 | #define ARIZONA_HAPTICS_PHASE_3_INTENSITY 0x96 | ||
| 59 | #define ARIZONA_HAPTICS_PHASE_3_DURATION 0x97 | ||
| 60 | #define ARIZONA_HAPTICS_STATUS 0x98 | ||
| 61 | #define ARIZONA_CLOCK_32K_1 0x100 | ||
| 62 | #define ARIZONA_SYSTEM_CLOCK_1 0x101 | ||
| 63 | #define ARIZONA_SAMPLE_RATE_1 0x102 | ||
| 64 | #define ARIZONA_SAMPLE_RATE_2 0x103 | ||
| 65 | #define ARIZONA_SAMPLE_RATE_3 0x104 | ||
| 66 | #define ARIZONA_SAMPLE_RATE_1_STATUS 0x10A | ||
| 67 | #define ARIZONA_SAMPLE_RATE_2_STATUS 0x10B | ||
| 68 | #define ARIZONA_SAMPLE_RATE_3_STATUS 0x10C | ||
| 69 | #define ARIZONA_ASYNC_CLOCK_1 0x112 | ||
| 70 | #define ARIZONA_ASYNC_SAMPLE_RATE_1 0x113 | ||
| 71 | #define ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS 0x11B | ||
| 72 | #define ARIZONA_OUTPUT_SYSTEM_CLOCK 0x149 | ||
| 73 | #define ARIZONA_OUTPUT_ASYNC_CLOCK 0x14A | ||
| 74 | #define ARIZONA_RATE_ESTIMATOR_1 0x152 | ||
| 75 | #define ARIZONA_RATE_ESTIMATOR_2 0x153 | ||
| 76 | #define ARIZONA_RATE_ESTIMATOR_3 0x154 | ||
| 77 | #define ARIZONA_RATE_ESTIMATOR_4 0x155 | ||
| 78 | #define ARIZONA_RATE_ESTIMATOR_5 0x156 | ||
| 79 | #define ARIZONA_FLL1_CONTROL_1 0x171 | ||
| 80 | #define ARIZONA_FLL1_CONTROL_2 0x172 | ||
| 81 | #define ARIZONA_FLL1_CONTROL_3 0x173 | ||
| 82 | #define ARIZONA_FLL1_CONTROL_4 0x174 | ||
| 83 | #define ARIZONA_FLL1_CONTROL_5 0x175 | ||
| 84 | #define ARIZONA_FLL1_CONTROL_6 0x176 | ||
| 85 | #define ARIZONA_FLL1_LOOP_FILTER_TEST_1 0x177 | ||
| 86 | #define ARIZONA_FLL1_NCO_TEST_0 0x178 | ||
| 87 | #define ARIZONA_FLL1_SYNCHRONISER_1 0x181 | ||
| 88 | #define ARIZONA_FLL1_SYNCHRONISER_2 0x182 | ||
| 89 | #define ARIZONA_FLL1_SYNCHRONISER_3 0x183 | ||
| 90 | #define ARIZONA_FLL1_SYNCHRONISER_4 0x184 | ||
| 91 | #define ARIZONA_FLL1_SYNCHRONISER_5 0x185 | ||
| 92 | #define ARIZONA_FLL1_SYNCHRONISER_6 0x186 | ||
| 93 | #define ARIZONA_FLL1_SPREAD_SPECTRUM 0x189 | ||
| 94 | #define ARIZONA_FLL1_GPIO_CLOCK 0x18A | ||
| 95 | #define ARIZONA_FLL2_CONTROL_1 0x191 | ||
| 96 | #define ARIZONA_FLL2_CONTROL_2 0x192 | ||
| 97 | #define ARIZONA_FLL2_CONTROL_3 0x193 | ||
| 98 | #define ARIZONA_FLL2_CONTROL_4 0x194 | ||
| 99 | #define ARIZONA_FLL2_CONTROL_5 0x195 | ||
| 100 | #define ARIZONA_FLL2_CONTROL_6 0x196 | ||
| 101 | #define ARIZONA_FLL2_LOOP_FILTER_TEST_1 0x197 | ||
| 102 | #define ARIZONA_FLL2_NCO_TEST_0 0x198 | ||
| 103 | #define ARIZONA_FLL2_SYNCHRONISER_1 0x1A1 | ||
| 104 | #define ARIZONA_FLL2_SYNCHRONISER_2 0x1A2 | ||
| 105 | #define ARIZONA_FLL2_SYNCHRONISER_3 0x1A3 | ||
| 106 | #define ARIZONA_FLL2_SYNCHRONISER_4 0x1A4 | ||
| 107 | #define ARIZONA_FLL2_SYNCHRONISER_5 0x1A5 | ||
| 108 | #define ARIZONA_FLL2_SYNCHRONISER_6 0x1A6 | ||
| 109 | #define ARIZONA_FLL2_SPREAD_SPECTRUM 0x1A9 | ||
| 110 | #define ARIZONA_FLL2_GPIO_CLOCK 0x1AA | ||
| 111 | #define ARIZONA_MIC_CHARGE_PUMP_1 0x200 | ||
| 112 | #define ARIZONA_LDO1_CONTROL_1 0x210 | ||
| 113 | #define ARIZONA_LDO2_CONTROL_1 0x213 | ||
| 114 | #define ARIZONA_MIC_BIAS_CTRL_1 0x218 | ||
| 115 | #define ARIZONA_MIC_BIAS_CTRL_2 0x219 | ||
| 116 | #define ARIZONA_MIC_BIAS_CTRL_3 0x21A | ||
| 117 | #define ARIZONA_ACCESSORY_DETECT_MODE_1 0x293 | ||
| 118 | #define ARIZONA_HEADPHONE_DETECT_1 0x29B | ||
| 119 | #define ARIZONA_HEADPHONE_DETECT_2 0x29C | ||
| 120 | #define ARIZONA_MIC_DETECT_1 0x2A3 | ||
| 121 | #define ARIZONA_MIC_DETECT_2 0x2A4 | ||
| 122 | #define ARIZONA_MIC_DETECT_3 0x2A5 | ||
| 123 | #define ARIZONA_MIC_NOISE_MIX_CONTROL_1 0x2C3 | ||
| 124 | #define ARIZONA_ISOLATION_CONTROL 0x2CB | ||
| 125 | #define ARIZONA_JACK_DETECT_ANALOGUE 0x2D3 | ||
| 126 | #define ARIZONA_INPUT_ENABLES 0x300 | ||
| 127 | #define ARIZONA_INPUT_ENABLES_STATUS 0x301 | ||
| 128 | #define ARIZONA_INPUT_RATE 0x308 | ||
| 129 | #define ARIZONA_INPUT_VOLUME_RAMP 0x309 | ||
| 130 | #define ARIZONA_IN1L_CONTROL 0x310 | ||
| 131 | #define ARIZONA_ADC_DIGITAL_VOLUME_1L 0x311 | ||
| 132 | #define ARIZONA_DMIC1L_CONTROL 0x312 | ||
| 133 | #define ARIZONA_IN1R_CONTROL 0x314 | ||
| 134 | #define ARIZONA_ADC_DIGITAL_VOLUME_1R 0x315 | ||
| 135 | #define ARIZONA_DMIC1R_CONTROL 0x316 | ||
| 136 | #define ARIZONA_IN2L_CONTROL 0x318 | ||
| 137 | #define ARIZONA_ADC_DIGITAL_VOLUME_2L 0x319 | ||
| 138 | #define ARIZONA_DMIC2L_CONTROL 0x31A | ||
| 139 | #define ARIZONA_IN2R_CONTROL 0x31C | ||
| 140 | #define ARIZONA_ADC_DIGITAL_VOLUME_2R 0x31D | ||
| 141 | #define ARIZONA_DMIC2R_CONTROL 0x31E | ||
| 142 | #define ARIZONA_IN3L_CONTROL 0x320 | ||
| 143 | #define ARIZONA_ADC_DIGITAL_VOLUME_3L 0x321 | ||
| 144 | #define ARIZONA_DMIC3L_CONTROL 0x322 | ||
| 145 | #define ARIZONA_IN3R_CONTROL 0x324 | ||
| 146 | #define ARIZONA_ADC_DIGITAL_VOLUME_3R 0x325 | ||
| 147 | #define ARIZONA_DMIC3R_CONTROL 0x326 | ||
| 148 | #define ARIZONA_IN4L_CONTROL 0x328 | ||
| 149 | #define ARIZONA_ADC_DIGITAL_VOLUME_4L 0x329 | ||
| 150 | #define ARIZONA_DMIC4L_CONTROL 0x32A | ||
| 151 | #define ARIZONA_ADC_DIGITAL_VOLUME_4R 0x32D | ||
| 152 | #define ARIZONA_DMIC4R_CONTROL 0x32E | ||
| 153 | #define ARIZONA_OUTPUT_ENABLES_1 0x400 | ||
| 154 | #define ARIZONA_OUTPUT_STATUS_1 0x401 | ||
| 155 | #define ARIZONA_RAW_OUTPUT_STATUS_1 0x406 | ||
| 156 | #define ARIZONA_OUTPUT_RATE_1 0x408 | ||
| 157 | #define ARIZONA_OUTPUT_VOLUME_RAMP 0x409 | ||
| 158 | #define ARIZONA_OUTPUT_PATH_CONFIG_1L 0x410 | ||
| 159 | #define ARIZONA_DAC_DIGITAL_VOLUME_1L 0x411 | ||
| 160 | #define ARIZONA_DAC_VOLUME_LIMIT_1L 0x412 | ||
| 161 | #define ARIZONA_NOISE_GATE_SELECT_1L 0x413 | ||
| 162 | #define ARIZONA_OUTPUT_PATH_CONFIG_1R 0x414 | ||
| 163 | #define ARIZONA_DAC_DIGITAL_VOLUME_1R 0x415 | ||
| 164 | #define ARIZONA_DAC_VOLUME_LIMIT_1R 0x416 | ||
| 165 | #define ARIZONA_NOISE_GATE_SELECT_1R 0x417 | ||
| 166 | #define ARIZONA_OUTPUT_PATH_CONFIG_2L 0x418 | ||
| 167 | #define ARIZONA_DAC_DIGITAL_VOLUME_2L 0x419 | ||
| 168 | #define ARIZONA_DAC_VOLUME_LIMIT_2L 0x41A | ||
| 169 | #define ARIZONA_NOISE_GATE_SELECT_2L 0x41B | ||
| 170 | #define ARIZONA_OUTPUT_PATH_CONFIG_2R 0x41C | ||
| 171 | #define ARIZONA_DAC_DIGITAL_VOLUME_2R 0x41D | ||
| 172 | #define ARIZONA_DAC_VOLUME_LIMIT_2R 0x41E | ||
| 173 | #define ARIZONA_NOISE_GATE_SELECT_2R 0x41F | ||
| 174 | #define ARIZONA_OUTPUT_PATH_CONFIG_3L 0x420 | ||
| 175 | #define ARIZONA_DAC_DIGITAL_VOLUME_3L 0x421 | ||
| 176 | #define ARIZONA_DAC_VOLUME_LIMIT_3L 0x422 | ||
| 177 | #define ARIZONA_NOISE_GATE_SELECT_3L 0x423 | ||
| 178 | #define ARIZONA_OUTPUT_PATH_CONFIG_3R 0x424 | ||
| 179 | #define ARIZONA_DAC_DIGITAL_VOLUME_3R 0x425 | ||
| 180 | #define ARIZONA_DAC_VOLUME_LIMIT_3R 0x426 | ||
| 181 | #define ARIZONA_NOISE_GATE_SELECT_3R 0x427 | ||
| 182 | #define ARIZONA_OUTPUT_PATH_CONFIG_4L 0x428 | ||
| 183 | #define ARIZONA_DAC_DIGITAL_VOLUME_4L 0x429 | ||
| 184 | #define ARIZONA_OUT_VOLUME_4L 0x42A | ||
| 185 | #define ARIZONA_NOISE_GATE_SELECT_4L 0x42B | ||
| 186 | #define ARIZONA_OUTPUT_PATH_CONFIG_4R 0x42C | ||
| 187 | #define ARIZONA_DAC_DIGITAL_VOLUME_4R 0x42D | ||
| 188 | #define ARIZONA_OUT_VOLUME_4R 0x42E | ||
| 189 | #define ARIZONA_NOISE_GATE_SELECT_4R 0x42F | ||
| 190 | #define ARIZONA_OUTPUT_PATH_CONFIG_5L 0x430 | ||
| 191 | #define ARIZONA_DAC_DIGITAL_VOLUME_5L 0x431 | ||
| 192 | #define ARIZONA_DAC_VOLUME_LIMIT_5L 0x432 | ||
| 193 | #define ARIZONA_NOISE_GATE_SELECT_5L 0x433 | ||
| 194 | #define ARIZONA_OUTPUT_PATH_CONFIG_5R 0x434 | ||
| 195 | #define ARIZONA_DAC_DIGITAL_VOLUME_5R 0x435 | ||
| 196 | #define ARIZONA_DAC_VOLUME_LIMIT_5R 0x436 | ||
| 197 | #define ARIZONA_NOISE_GATE_SELECT_5R 0x437 | ||
| 198 | #define ARIZONA_OUTPUT_PATH_CONFIG_6L 0x438 | ||
| 199 | #define ARIZONA_DAC_DIGITAL_VOLUME_6L 0x439 | ||
| 200 | #define ARIZONA_DAC_VOLUME_LIMIT_6L 0x43A | ||
| 201 | #define ARIZONA_NOISE_GATE_SELECT_6L 0x43B | ||
| 202 | #define ARIZONA_OUTPUT_PATH_CONFIG_6R 0x43C | ||
| 203 | #define ARIZONA_DAC_DIGITAL_VOLUME_6R 0x43D | ||
| 204 | #define ARIZONA_DAC_VOLUME_LIMIT_6R 0x43E | ||
| 205 | #define ARIZONA_NOISE_GATE_SELECT_6R 0x43F | ||
| 206 | #define ARIZONA_DAC_AEC_CONTROL_1 0x450 | ||
| 207 | #define ARIZONA_NOISE_GATE_CONTROL 0x458 | ||
| 208 | #define ARIZONA_PDM_SPK1_CTRL_1 0x490 | ||
| 209 | #define ARIZONA_PDM_SPK1_CTRL_2 0x491 | ||
| 210 | #define ARIZONA_PDM_SPK2_CTRL_1 0x492 | ||
| 211 | #define ARIZONA_PDM_SPK2_CTRL_2 0x493 | ||
| 212 | #define ARIZONA_DAC_COMP_1 0x4DC | ||
| 213 | #define ARIZONA_DAC_COMP_2 0x4DD | ||
| 214 | #define ARIZONA_DAC_COMP_3 0x4DE | ||
| 215 | #define ARIZONA_DAC_COMP_4 0x4DF | ||
| 216 | #define ARIZONA_AIF1_BCLK_CTRL 0x500 | ||
| 217 | #define ARIZONA_AIF1_TX_PIN_CTRL 0x501 | ||
| 218 | #define ARIZONA_AIF1_RX_PIN_CTRL 0x502 | ||
| 219 | #define ARIZONA_AIF1_RATE_CTRL 0x503 | ||
| 220 | #define ARIZONA_AIF1_FORMAT 0x504 | ||
| 221 | #define ARIZONA_AIF1_TX_BCLK_RATE 0x505 | ||
| 222 | #define ARIZONA_AIF1_RX_BCLK_RATE 0x506 | ||
| 223 | #define ARIZONA_AIF1_FRAME_CTRL_1 0x507 | ||
| 224 | #define ARIZONA_AIF1_FRAME_CTRL_2 0x508 | ||
| 225 | #define ARIZONA_AIF1_FRAME_CTRL_3 0x509 | ||
| 226 | #define ARIZONA_AIF1_FRAME_CTRL_4 0x50A | ||
| 227 | #define ARIZONA_AIF1_FRAME_CTRL_5 0x50B | ||
| 228 | #define ARIZONA_AIF1_FRAME_CTRL_6 0x50C | ||
| 229 | #define ARIZONA_AIF1_FRAME_CTRL_7 0x50D | ||
| 230 | #define ARIZONA_AIF1_FRAME_CTRL_8 0x50E | ||
| 231 | #define ARIZONA_AIF1_FRAME_CTRL_9 0x50F | ||
| 232 | #define ARIZONA_AIF1_FRAME_CTRL_10 0x510 | ||
| 233 | #define ARIZONA_AIF1_FRAME_CTRL_11 0x511 | ||
| 234 | #define ARIZONA_AIF1_FRAME_CTRL_12 0x512 | ||
| 235 | #define ARIZONA_AIF1_FRAME_CTRL_13 0x513 | ||
| 236 | #define ARIZONA_AIF1_FRAME_CTRL_14 0x514 | ||
| 237 | #define ARIZONA_AIF1_FRAME_CTRL_15 0x515 | ||
| 238 | #define ARIZONA_AIF1_FRAME_CTRL_16 0x516 | ||
| 239 | #define ARIZONA_AIF1_FRAME_CTRL_17 0x517 | ||
| 240 | #define ARIZONA_AIF1_FRAME_CTRL_18 0x518 | ||
| 241 | #define ARIZONA_AIF1_TX_ENABLES 0x519 | ||
| 242 | #define ARIZONA_AIF1_RX_ENABLES 0x51A | ||
| 243 | #define ARIZONA_AIF1_FORCE_WRITE 0x51B | ||
| 244 | #define ARIZONA_AIF2_BCLK_CTRL 0x540 | ||
| 245 | #define ARIZONA_AIF2_TX_PIN_CTRL 0x541 | ||
| 246 | #define ARIZONA_AIF2_RX_PIN_CTRL 0x542 | ||
| 247 | #define ARIZONA_AIF2_RATE_CTRL 0x543 | ||
| 248 | #define ARIZONA_AIF2_FORMAT 0x544 | ||
| 249 | #define ARIZONA_AIF2_TX_BCLK_RATE 0x545 | ||
| 250 | #define ARIZONA_AIF2_RX_BCLK_RATE 0x546 | ||
| 251 | #define ARIZONA_AIF2_FRAME_CTRL_1 0x547 | ||
| 252 | #define ARIZONA_AIF2_FRAME_CTRL_2 0x548 | ||
| 253 | #define ARIZONA_AIF2_FRAME_CTRL_3 0x549 | ||
| 254 | #define ARIZONA_AIF2_FRAME_CTRL_4 0x54A | ||
| 255 | #define ARIZONA_AIF2_FRAME_CTRL_11 0x551 | ||
| 256 | #define ARIZONA_AIF2_FRAME_CTRL_12 0x552 | ||
| 257 | #define ARIZONA_AIF2_TX_ENABLES 0x559 | ||
| 258 | #define ARIZONA_AIF2_RX_ENABLES 0x55A | ||
| 259 | #define ARIZONA_AIF2_FORCE_WRITE 0x55B | ||
| 260 | #define ARIZONA_AIF3_BCLK_CTRL 0x580 | ||
| 261 | #define ARIZONA_AIF3_TX_PIN_CTRL 0x581 | ||
| 262 | #define ARIZONA_AIF3_RX_PIN_CTRL 0x582 | ||
| 263 | #define ARIZONA_AIF3_RATE_CTRL 0x583 | ||
| 264 | #define ARIZONA_AIF3_FORMAT 0x584 | ||
| 265 | #define ARIZONA_AIF3_TX_BCLK_RATE 0x585 | ||
| 266 | #define ARIZONA_AIF3_RX_BCLK_RATE 0x586 | ||
| 267 | #define ARIZONA_AIF3_FRAME_CTRL_1 0x587 | ||
| 268 | #define ARIZONA_AIF3_FRAME_CTRL_2 0x588 | ||
| 269 | #define ARIZONA_AIF3_FRAME_CTRL_3 0x589 | ||
| 270 | #define ARIZONA_AIF3_FRAME_CTRL_4 0x58A | ||
| 271 | #define ARIZONA_AIF3_FRAME_CTRL_11 0x591 | ||
| 272 | #define ARIZONA_AIF3_FRAME_CTRL_12 0x592 | ||
| 273 | #define ARIZONA_AIF3_TX_ENABLES 0x599 | ||
| 274 | #define ARIZONA_AIF3_RX_ENABLES 0x59A | ||
| 275 | #define ARIZONA_AIF3_FORCE_WRITE 0x59B | ||
| 276 | #define ARIZONA_SLIMBUS_FRAMER_REF_GEAR 0x5E3 | ||
| 277 | #define ARIZONA_SLIMBUS_RATES_1 0x5E5 | ||
| 278 | #define ARIZONA_SLIMBUS_RATES_2 0x5E6 | ||
| 279 | #define ARIZONA_SLIMBUS_RATES_3 0x5E7 | ||
| 280 | #define ARIZONA_SLIMBUS_RATES_4 0x5E8 | ||
| 281 | #define ARIZONA_SLIMBUS_RATES_5 0x5E9 | ||
| 282 | #define ARIZONA_SLIMBUS_RATES_6 0x5EA | ||
| 283 | #define ARIZONA_SLIMBUS_RATES_7 0x5EB | ||
| 284 | #define ARIZONA_SLIMBUS_RATES_8 0x5EC | ||
| 285 | #define ARIZONA_SLIMBUS_RX_CHANNEL_ENABLE 0x5F5 | ||
| 286 | #define ARIZONA_SLIMBUS_TX_CHANNEL_ENABLE 0x5F6 | ||
| 287 | #define ARIZONA_SLIMBUS_RX_PORT_STATUS 0x5F7 | ||
| 288 | #define ARIZONA_SLIMBUS_TX_PORT_STATUS 0x5F8 | ||
| 289 | #define ARIZONA_PWM1MIX_INPUT_1_SOURCE 0x640 | ||
| 290 | #define ARIZONA_PWM1MIX_INPUT_1_VOLUME 0x641 | ||
| 291 | #define ARIZONA_PWM1MIX_INPUT_2_SOURCE 0x642 | ||
| 292 | #define ARIZONA_PWM1MIX_INPUT_2_VOLUME 0x643 | ||
| 293 | #define ARIZONA_PWM1MIX_INPUT_3_SOURCE 0x644 | ||
| 294 | #define ARIZONA_PWM1MIX_INPUT_3_VOLUME 0x645 | ||
| 295 | #define ARIZONA_PWM1MIX_INPUT_4_SOURCE 0x646 | ||
| 296 | #define ARIZONA_PWM1MIX_INPUT_4_VOLUME 0x647 | ||
| 297 | #define ARIZONA_PWM2MIX_INPUT_1_SOURCE 0x648 | ||
| 298 | #define ARIZONA_PWM2MIX_INPUT_1_VOLUME 0x649 | ||
| 299 | #define ARIZONA_PWM2MIX_INPUT_2_SOURCE 0x64A | ||
| 300 | #define ARIZONA_PWM2MIX_INPUT_2_VOLUME 0x64B | ||
| 301 | #define ARIZONA_PWM2MIX_INPUT_3_SOURCE 0x64C | ||
| 302 | #define ARIZONA_PWM2MIX_INPUT_3_VOLUME 0x64D | ||
| 303 | #define ARIZONA_PWM2MIX_INPUT_4_SOURCE 0x64E | ||
| 304 | #define ARIZONA_PWM2MIX_INPUT_4_VOLUME 0x64F | ||
| 305 | #define ARIZONA_MICMIX_INPUT_1_SOURCE 0x660 | ||
| 306 | #define ARIZONA_MICMIX_INPUT_1_VOLUME 0x661 | ||
| 307 | #define ARIZONA_MICMIX_INPUT_2_SOURCE 0x662 | ||
| 308 | #define ARIZONA_MICMIX_INPUT_2_VOLUME 0x663 | ||
| 309 | #define ARIZONA_MICMIX_INPUT_3_SOURCE 0x664 | ||
| 310 | #define ARIZONA_MICMIX_INPUT_3_VOLUME 0x665 | ||
| 311 | #define ARIZONA_MICMIX_INPUT_4_SOURCE 0x666 | ||
| 312 | #define ARIZONA_MICMIX_INPUT_4_VOLUME 0x667 | ||
| 313 | #define ARIZONA_NOISEMIX_INPUT_1_SOURCE 0x668 | ||
| 314 | #define ARIZONA_NOISEMIX_INPUT_1_VOLUME 0x669 | ||
| 315 | #define ARIZONA_NOISEMIX_INPUT_2_SOURCE 0x66A | ||
| 316 | #define ARIZONA_NOISEMIX_INPUT_2_VOLUME 0x66B | ||
| 317 | #define ARIZONA_NOISEMIX_INPUT_3_SOURCE 0x66C | ||
| 318 | #define ARIZONA_NOISEMIX_INPUT_3_VOLUME 0x66D | ||
| 319 | #define ARIZONA_NOISEMIX_INPUT_4_SOURCE 0x66E | ||
| 320 | #define ARIZONA_NOISEMIX_INPUT_4_VOLUME 0x66F | ||
| 321 | #define ARIZONA_OUT1LMIX_INPUT_1_SOURCE 0x680 | ||
| 322 | #define ARIZONA_OUT1LMIX_INPUT_1_VOLUME 0x681 | ||
| 323 | #define ARIZONA_OUT1LMIX_INPUT_2_SOURCE 0x682 | ||
| 324 | #define ARIZONA_OUT1LMIX_INPUT_2_VOLUME 0x683 | ||
| 325 | #define ARIZONA_OUT1LMIX_INPUT_3_SOURCE 0x684 | ||
| 326 | #define ARIZONA_OUT1LMIX_INPUT_3_VOLUME 0x685 | ||
| 327 | #define ARIZONA_OUT1LMIX_INPUT_4_SOURCE 0x686 | ||
| 328 | #define ARIZONA_OUT1LMIX_INPUT_4_VOLUME 0x687 | ||
| 329 | #define ARIZONA_OUT1RMIX_INPUT_1_SOURCE 0x688 | ||
| 330 | #define ARIZONA_OUT1RMIX_INPUT_1_VOLUME 0x689 | ||
| 331 | #define ARIZONA_OUT1RMIX_INPUT_2_SOURCE 0x68A | ||
| 332 | #define ARIZONA_OUT1RMIX_INPUT_2_VOLUME 0x68B | ||
| 333 | #define ARIZONA_OUT1RMIX_INPUT_3_SOURCE 0x68C | ||
| 334 | #define ARIZONA_OUT1RMIX_INPUT_3_VOLUME 0x68D | ||
| 335 | #define ARIZONA_OUT1RMIX_INPUT_4_SOURCE 0x68E | ||
| 336 | #define ARIZONA_OUT1RMIX_INPUT_4_VOLUME 0x68F | ||
| 337 | #define ARIZONA_OUT2LMIX_INPUT_1_SOURCE 0x690 | ||
| 338 | #define ARIZONA_OUT2LMIX_INPUT_1_VOLUME 0x691 | ||
| 339 | #define ARIZONA_OUT2LMIX_INPUT_2_SOURCE 0x692 | ||
| 340 | #define ARIZONA_OUT2LMIX_INPUT_2_VOLUME 0x693 | ||
| 341 | #define ARIZONA_OUT2LMIX_INPUT_3_SOURCE 0x694 | ||
| 342 | #define ARIZONA_OUT2LMIX_INPUT_3_VOLUME 0x695 | ||
| 343 | #define ARIZONA_OUT2LMIX_INPUT_4_SOURCE 0x696 | ||
| 344 | #define ARIZONA_OUT2LMIX_INPUT_4_VOLUME 0x697 | ||
| 345 | #define ARIZONA_OUT2RMIX_INPUT_1_SOURCE 0x698 | ||
| 346 | #define ARIZONA_OUT2RMIX_INPUT_1_VOLUME 0x699 | ||
| 347 | #define ARIZONA_OUT2RMIX_INPUT_2_SOURCE 0x69A | ||
| 348 | #define ARIZONA_OUT2RMIX_INPUT_2_VOLUME 0x69B | ||
| 349 | #define ARIZONA_OUT2RMIX_INPUT_3_SOURCE 0x69C | ||
| 350 | #define ARIZONA_OUT2RMIX_INPUT_3_VOLUME 0x69D | ||
| 351 | #define ARIZONA_OUT2RMIX_INPUT_4_SOURCE 0x69E | ||
| 352 | #define ARIZONA_OUT2RMIX_INPUT_4_VOLUME 0x69F | ||
| 353 | #define ARIZONA_OUT3LMIX_INPUT_1_SOURCE 0x6A0 | ||
| 354 | #define ARIZONA_OUT3LMIX_INPUT_1_VOLUME 0x6A1 | ||
| 355 | #define ARIZONA_OUT3LMIX_INPUT_2_SOURCE 0x6A2 | ||
| 356 | #define ARIZONA_OUT3LMIX_INPUT_2_VOLUME 0x6A3 | ||
| 357 | #define ARIZONA_OUT3LMIX_INPUT_3_SOURCE 0x6A4 | ||
| 358 | #define ARIZONA_OUT3LMIX_INPUT_3_VOLUME 0x6A5 | ||
| 359 | #define ARIZONA_OUT3LMIX_INPUT_4_SOURCE 0x6A6 | ||
| 360 | #define ARIZONA_OUT3LMIX_INPUT_4_VOLUME 0x6A7 | ||
| 361 | #define ARIZONA_OUT3RMIX_INPUT_1_SOURCE 0x6A8 | ||
| 362 | #define ARIZONA_OUT3RMIX_INPUT_1_VOLUME 0x6A9 | ||
| 363 | #define ARIZONA_OUT3RMIX_INPUT_2_SOURCE 0x6AA | ||
| 364 | #define ARIZONA_OUT3RMIX_INPUT_2_VOLUME 0x6AB | ||
| 365 | #define ARIZONA_OUT3RMIX_INPUT_3_SOURCE 0x6AC | ||
| 366 | #define ARIZONA_OUT3RMIX_INPUT_3_VOLUME 0x6AD | ||
| 367 | #define ARIZONA_OUT3RMIX_INPUT_4_SOURCE 0x6AE | ||
| 368 | #define ARIZONA_OUT3RMIX_INPUT_4_VOLUME 0x6AF | ||
| 369 | #define ARIZONA_OUT4LMIX_INPUT_1_SOURCE 0x6B0 | ||
| 370 | #define ARIZONA_OUT4LMIX_INPUT_1_VOLUME 0x6B1 | ||
| 371 | #define ARIZONA_OUT4LMIX_INPUT_2_SOURCE 0x6B2 | ||
| 372 | #define ARIZONA_OUT4LMIX_INPUT_2_VOLUME 0x6B3 | ||
| 373 | #define ARIZONA_OUT4LMIX_INPUT_3_SOURCE 0x6B4 | ||
| 374 | #define ARIZONA_OUT4LMIX_INPUT_3_VOLUME 0x6B5 | ||
| 375 | #define ARIZONA_OUT4LMIX_INPUT_4_SOURCE 0x6B6 | ||
| 376 | #define ARIZONA_OUT4LMIX_INPUT_4_VOLUME 0x6B7 | ||
| 377 | #define ARIZONA_OUT4RMIX_INPUT_1_SOURCE 0x6B8 | ||
| 378 | #define ARIZONA_OUT4RMIX_INPUT_1_VOLUME 0x6B9 | ||
| 379 | #define ARIZONA_OUT4RMIX_INPUT_2_SOURCE 0x6BA | ||
| 380 | #define ARIZONA_OUT4RMIX_INPUT_2_VOLUME 0x6BB | ||
| 381 | #define ARIZONA_OUT4RMIX_INPUT_3_SOURCE 0x6BC | ||
| 382 | #define ARIZONA_OUT4RMIX_INPUT_3_VOLUME 0x6BD | ||
| 383 | #define ARIZONA_OUT4RMIX_INPUT_4_SOURCE 0x6BE | ||
| 384 | #define ARIZONA_OUT4RMIX_INPUT_4_VOLUME 0x6BF | ||
| 385 | #define ARIZONA_OUT5LMIX_INPUT_1_SOURCE 0x6C0 | ||
| 386 | #define ARIZONA_OUT5LMIX_INPUT_1_VOLUME 0x6C1 | ||
| 387 | #define ARIZONA_OUT5LMIX_INPUT_2_SOURCE 0x6C2 | ||
| 388 | #define ARIZONA_OUT5LMIX_INPUT_2_VOLUME 0x6C3 | ||
| 389 | #define ARIZONA_OUT5LMIX_INPUT_3_SOURCE 0x6C4 | ||
| 390 | #define ARIZONA_OUT5LMIX_INPUT_3_VOLUME 0x6C5 | ||
| 391 | #define ARIZONA_OUT5LMIX_INPUT_4_SOURCE 0x6C6 | ||
| 392 | #define ARIZONA_OUT5LMIX_INPUT_4_VOLUME 0x6C7 | ||
| 393 | #define ARIZONA_OUT5RMIX_INPUT_1_SOURCE 0x6C8 | ||
| 394 | #define ARIZONA_OUT5RMIX_INPUT_1_VOLUME 0x6C9 | ||
| 395 | #define ARIZONA_OUT5RMIX_INPUT_2_SOURCE 0x6CA | ||
| 396 | #define ARIZONA_OUT5RMIX_INPUT_2_VOLUME 0x6CB | ||
| 397 | #define ARIZONA_OUT5RMIX_INPUT_3_SOURCE 0x6CC | ||
| 398 | #define ARIZONA_OUT5RMIX_INPUT_3_VOLUME 0x6CD | ||
| 399 | #define ARIZONA_OUT5RMIX_INPUT_4_SOURCE 0x6CE | ||
| 400 | #define ARIZONA_OUT5RMIX_INPUT_4_VOLUME 0x6CF | ||
| 401 | #define ARIZONA_OUT6LMIX_INPUT_1_SOURCE 0x6D0 | ||
| 402 | #define ARIZONA_OUT6LMIX_INPUT_1_VOLUME 0x6D1 | ||
| 403 | #define ARIZONA_OUT6LMIX_INPUT_2_SOURCE 0x6D2 | ||
| 404 | #define ARIZONA_OUT6LMIX_INPUT_2_VOLUME 0x6D3 | ||
| 405 | #define ARIZONA_OUT6LMIX_INPUT_3_SOURCE 0x6D4 | ||
| 406 | #define ARIZONA_OUT6LMIX_INPUT_3_VOLUME 0x6D5 | ||
| 407 | #define ARIZONA_OUT6LMIX_INPUT_4_SOURCE 0x6D6 | ||
| 408 | #define ARIZONA_OUT6LMIX_INPUT_4_VOLUME 0x6D7 | ||
| 409 | #define ARIZONA_OUT6RMIX_INPUT_1_SOURCE 0x6D8 | ||
| 410 | #define ARIZONA_OUT6RMIX_INPUT_1_VOLUME 0x6D9 | ||
| 411 | #define ARIZONA_OUT6RMIX_INPUT_2_SOURCE 0x6DA | ||
| 412 | #define ARIZONA_OUT6RMIX_INPUT_2_VOLUME 0x6DB | ||
| 413 | #define ARIZONA_OUT6RMIX_INPUT_3_SOURCE 0x6DC | ||
| 414 | #define ARIZONA_OUT6RMIX_INPUT_3_VOLUME 0x6DD | ||
| 415 | #define ARIZONA_OUT6RMIX_INPUT_4_SOURCE 0x6DE | ||
| 416 | #define ARIZONA_OUT6RMIX_INPUT_4_VOLUME 0x6DF | ||
| 417 | #define ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE 0x700 | ||
| 418 | #define ARIZONA_AIF1TX1MIX_INPUT_1_VOLUME 0x701 | ||
| 419 | #define ARIZONA_AIF1TX1MIX_INPUT_2_SOURCE 0x702 | ||
| 420 | #define ARIZONA_AIF1TX1MIX_INPUT_2_VOLUME 0x703 | ||
| 421 | #define ARIZONA_AIF1TX1MIX_INPUT_3_SOURCE 0x704 | ||
| 422 | #define ARIZONA_AIF1TX1MIX_INPUT_3_VOLUME 0x705 | ||
| 423 | #define ARIZONA_AIF1TX1MIX_INPUT_4_SOURCE 0x706 | ||
| 424 | #define ARIZONA_AIF1TX1MIX_INPUT_4_VOLUME 0x707 | ||
| 425 | #define ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE 0x708 | ||
| 426 | #define ARIZONA_AIF1TX2MIX_INPUT_1_VOLUME 0x709 | ||
| 427 | #define ARIZONA_AIF1TX2MIX_INPUT_2_SOURCE 0x70A | ||
| 428 | #define ARIZONA_AIF1TX2MIX_INPUT_2_VOLUME 0x70B | ||
| 429 | #define ARIZONA_AIF1TX2MIX_INPUT_3_SOURCE 0x70C | ||
| 430 | #define ARIZONA_AIF1TX2MIX_INPUT_3_VOLUME 0x70D | ||
| 431 | #define ARIZONA_AIF1TX2MIX_INPUT_4_SOURCE 0x70E | ||
| 432 | #define ARIZONA_AIF1TX2MIX_INPUT_4_VOLUME 0x70F | ||
| 433 | #define ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE 0x710 | ||
| 434 | #define ARIZONA_AIF1TX3MIX_INPUT_1_VOLUME 0x711 | ||
| 435 | #define ARIZONA_AIF1TX3MIX_INPUT_2_SOURCE 0x712 | ||
| 436 | #define ARIZONA_AIF1TX3MIX_INPUT_2_VOLUME 0x713 | ||
| 437 | #define ARIZONA_AIF1TX3MIX_INPUT_3_SOURCE 0x714 | ||
| 438 | #define ARIZONA_AIF1TX3MIX_INPUT_3_VOLUME 0x715 | ||
| 439 | #define ARIZONA_AIF1TX3MIX_INPUT_4_SOURCE 0x716 | ||
| 440 | #define ARIZONA_AIF1TX3MIX_INPUT_4_VOLUME 0x717 | ||
| 441 | #define ARIZONA_AIF1TX4MIX_INPUT_1_SOURCE 0x718 | ||
| 442 | #define ARIZONA_AIF1TX4MIX_INPUT_1_VOLUME 0x719 | ||
| 443 | #define ARIZONA_AIF1TX4MIX_INPUT_2_SOURCE 0x71A | ||
| 444 | #define ARIZONA_AIF1TX4MIX_INPUT_2_VOLUME 0x71B | ||
| 445 | #define ARIZONA_AIF1TX4MIX_INPUT_3_SOURCE 0x71C | ||
| 446 | #define ARIZONA_AIF1TX4MIX_INPUT_3_VOLUME 0x71D | ||
| 447 | #define ARIZONA_AIF1TX4MIX_INPUT_4_SOURCE 0x71E | ||
| 448 | #define ARIZONA_AIF1TX4MIX_INPUT_4_VOLUME 0x71F | ||
| 449 | #define ARIZONA_AIF1TX5MIX_INPUT_1_SOURCE 0x720 | ||
| 450 | #define ARIZONA_AIF1TX5MIX_INPUT_1_VOLUME 0x721 | ||
| 451 | #define ARIZONA_AIF1TX5MIX_INPUT_2_SOURCE 0x722 | ||
| 452 | #define ARIZONA_AIF1TX5MIX_INPUT_2_VOLUME 0x723 | ||
| 453 | #define ARIZONA_AIF1TX5MIX_INPUT_3_SOURCE 0x724 | ||
| 454 | #define ARIZONA_AIF1TX5MIX_INPUT_3_VOLUME 0x725 | ||
| 455 | #define ARIZONA_AIF1TX5MIX_INPUT_4_SOURCE 0x726 | ||
| 456 | #define ARIZONA_AIF1TX5MIX_INPUT_4_VOLUME 0x727 | ||
| 457 | #define ARIZONA_AIF1TX6MIX_INPUT_1_SOURCE 0x728 | ||
| 458 | #define ARIZONA_AIF1TX6MIX_INPUT_1_VOLUME 0x729 | ||
| 459 | #define ARIZONA_AIF1TX6MIX_INPUT_2_SOURCE 0x72A | ||
| 460 | #define ARIZONA_AIF1TX6MIX_INPUT_2_VOLUME 0x72B | ||
| 461 | #define ARIZONA_AIF1TX6MIX_INPUT_3_SOURCE 0x72C | ||
| 462 | #define ARIZONA_AIF1TX6MIX_INPUT_3_VOLUME 0x72D | ||
| 463 | #define ARIZONA_AIF1TX6MIX_INPUT_4_SOURCE 0x72E | ||
| 464 | #define ARIZONA_AIF1TX6MIX_INPUT_4_VOLUME 0x72F | ||
| 465 | #define ARIZONA_AIF1TX7MIX_INPUT_1_SOURCE 0x730 | ||
| 466 | #define ARIZONA_AIF1TX7MIX_INPUT_1_VOLUME 0x731 | ||
| 467 | #define ARIZONA_AIF1TX7MIX_INPUT_2_SOURCE 0x732 | ||
| 468 | #define ARIZONA_AIF1TX7MIX_INPUT_2_VOLUME 0x733 | ||
| 469 | #define ARIZONA_AIF1TX7MIX_INPUT_3_SOURCE 0x734 | ||
| 470 | #define ARIZONA_AIF1TX7MIX_INPUT_3_VOLUME 0x735 | ||
| 471 | #define ARIZONA_AIF1TX7MIX_INPUT_4_SOURCE 0x736 | ||
| 472 | #define ARIZONA_AIF1TX7MIX_INPUT_4_VOLUME 0x737 | ||
| 473 | #define ARIZONA_AIF1TX8MIX_INPUT_1_SOURCE 0x738 | ||
| 474 | #define ARIZONA_AIF1TX8MIX_INPUT_1_VOLUME 0x739 | ||
| 475 | #define ARIZONA_AIF1TX8MIX_INPUT_2_SOURCE 0x73A | ||
| 476 | #define ARIZONA_AIF1TX8MIX_INPUT_2_VOLUME 0x73B | ||
| 477 | #define ARIZONA_AIF1TX8MIX_INPUT_3_SOURCE 0x73C | ||
| 478 | #define ARIZONA_AIF1TX8MIX_INPUT_3_VOLUME 0x73D | ||
| 479 | #define ARIZONA_AIF1TX8MIX_INPUT_4_SOURCE 0x73E | ||
| 480 | #define ARIZONA_AIF1TX8MIX_INPUT_4_VOLUME 0x73F | ||
| 481 | #define ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE 0x740 | ||
| 482 | #define ARIZONA_AIF2TX1MIX_INPUT_1_VOLUME 0x741 | ||
| 483 | #define ARIZONA_AIF2TX1MIX_INPUT_2_SOURCE 0x742 | ||
| 484 | #define ARIZONA_AIF2TX1MIX_INPUT_2_VOLUME 0x743 | ||
| 485 | #define ARIZONA_AIF2TX1MIX_INPUT_3_SOURCE 0x744 | ||
| 486 | #define ARIZONA_AIF2TX1MIX_INPUT_3_VOLUME 0x745 | ||
| 487 | #define ARIZONA_AIF2TX1MIX_INPUT_4_SOURCE 0x746 | ||
| 488 | #define ARIZONA_AIF2TX1MIX_INPUT_4_VOLUME 0x747 | ||
| 489 | #define ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE 0x748 | ||
| 490 | #define ARIZONA_AIF2TX2MIX_INPUT_1_VOLUME 0x749 | ||
| 491 | #define ARIZONA_AIF2TX2MIX_INPUT_2_SOURCE 0x74A | ||
| 492 | #define ARIZONA_AIF2TX2MIX_INPUT_2_VOLUME 0x74B | ||
| 493 | #define ARIZONA_AIF2TX2MIX_INPUT_3_SOURCE 0x74C | ||
| 494 | #define ARIZONA_AIF2TX2MIX_INPUT_3_VOLUME 0x74D | ||
| 495 | #define ARIZONA_AIF2TX2MIX_INPUT_4_SOURCE 0x74E | ||
| 496 | #define ARIZONA_AIF2TX2MIX_INPUT_4_VOLUME 0x74F | ||
| 497 | #define ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE 0x780 | ||
| 498 | #define ARIZONA_AIF3TX1MIX_INPUT_1_VOLUME 0x781 | ||
| 499 | #define ARIZONA_AIF3TX1MIX_INPUT_2_SOURCE 0x782 | ||
| 500 | #define ARIZONA_AIF3TX1MIX_INPUT_2_VOLUME 0x783 | ||
| 501 | #define ARIZONA_AIF3TX1MIX_INPUT_3_SOURCE 0x784 | ||
| 502 | #define ARIZONA_AIF3TX1MIX_INPUT_3_VOLUME 0x785 | ||
| 503 | #define ARIZONA_AIF3TX1MIX_INPUT_4_SOURCE 0x786 | ||
| 504 | #define ARIZONA_AIF3TX1MIX_INPUT_4_VOLUME 0x787 | ||
| 505 | #define ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE 0x788 | ||
| 506 | #define ARIZONA_AIF3TX2MIX_INPUT_1_VOLUME 0x789 | ||
| 507 | #define ARIZONA_AIF3TX2MIX_INPUT_2_SOURCE 0x78A | ||
| 508 | #define ARIZONA_AIF3TX2MIX_INPUT_2_VOLUME 0x78B | ||
| 509 | #define ARIZONA_AIF3TX2MIX_INPUT_3_SOURCE 0x78C | ||
| 510 | #define ARIZONA_AIF3TX2MIX_INPUT_3_VOLUME 0x78D | ||
| 511 | #define ARIZONA_AIF3TX2MIX_INPUT_4_SOURCE 0x78E | ||
| 512 | #define ARIZONA_AIF3TX2MIX_INPUT_4_VOLUME 0x78F | ||
| 513 | #define ARIZONA_SLIMTX1MIX_INPUT_1_SOURCE 0x7C0 | ||
| 514 | #define ARIZONA_SLIMTX1MIX_INPUT_1_VOLUME 0x7C1 | ||
| 515 | #define ARIZONA_SLIMTX1MIX_INPUT_2_SOURCE 0x7C2 | ||
| 516 | #define ARIZONA_SLIMTX1MIX_INPUT_2_VOLUME 0x7C3 | ||
| 517 | #define ARIZONA_SLIMTX1MIX_INPUT_3_SOURCE 0x7C4 | ||
| 518 | #define ARIZONA_SLIMTX1MIX_INPUT_3_VOLUME 0x7C5 | ||
| 519 | #define ARIZONA_SLIMTX1MIX_INPUT_4_SOURCE 0x7C6 | ||
| 520 | #define ARIZONA_SLIMTX1MIX_INPUT_4_VOLUME 0x7C7 | ||
| 521 | #define ARIZONA_SLIMTX2MIX_INPUT_1_SOURCE 0x7C8 | ||
| 522 | #define ARIZONA_SLIMTX2MIX_INPUT_1_VOLUME 0x7C9 | ||
| 523 | #define ARIZONA_SLIMTX2MIX_INPUT_2_SOURCE 0x7CA | ||
| 524 | #define ARIZONA_SLIMTX2MIX_INPUT_2_VOLUME 0x7CB | ||
| 525 | #define ARIZONA_SLIMTX2MIX_INPUT_3_SOURCE 0x7CC | ||
| 526 | #define ARIZONA_SLIMTX2MIX_INPUT_3_VOLUME 0x7CD | ||
| 527 | #define ARIZONA_SLIMTX2MIX_INPUT_4_SOURCE 0x7CE | ||
| 528 | #define ARIZONA_SLIMTX2MIX_INPUT_4_VOLUME 0x7CF | ||
| 529 | #define ARIZONA_SLIMTX3MIX_INPUT_1_SOURCE 0x7D0 | ||
| 530 | #define ARIZONA_SLIMTX3MIX_INPUT_1_VOLUME 0x7D1 | ||
| 531 | #define ARIZONA_SLIMTX3MIX_INPUT_2_SOURCE 0x7D2 | ||
| 532 | #define ARIZONA_SLIMTX3MIX_INPUT_2_VOLUME 0x7D3 | ||
| 533 | #define ARIZONA_SLIMTX3MIX_INPUT_3_SOURCE 0x7D4 | ||
| 534 | #define ARIZONA_SLIMTX3MIX_INPUT_3_VOLUME 0x7D5 | ||
| 535 | #define ARIZONA_SLIMTX3MIX_INPUT_4_SOURCE 0x7D6 | ||
| 536 | #define ARIZONA_SLIMTX3MIX_INPUT_4_VOLUME 0x7D7 | ||
| 537 | #define ARIZONA_SLIMTX4MIX_INPUT_1_SOURCE 0x7D8 | ||
| 538 | #define ARIZONA_SLIMTX4MIX_INPUT_1_VOLUME 0x7D9 | ||
| 539 | #define ARIZONA_SLIMTX4MIX_INPUT_2_SOURCE 0x7DA | ||
| 540 | #define ARIZONA_SLIMTX4MIX_INPUT_2_VOLUME 0x7DB | ||
| 541 | #define ARIZONA_SLIMTX4MIX_INPUT_3_SOURCE 0x7DC | ||
| 542 | #define ARIZONA_SLIMTX4MIX_INPUT_3_VOLUME 0x7DD | ||
| 543 | #define ARIZONA_SLIMTX4MIX_INPUT_4_SOURCE 0x7DE | ||
| 544 | #define ARIZONA_SLIMTX4MIX_INPUT_4_VOLUME 0x7DF | ||
| 545 | #define ARIZONA_SLIMTX5MIX_INPUT_1_SOURCE 0x7E0 | ||
| 546 | #define ARIZONA_SLIMTX5MIX_INPUT_1_VOLUME 0x7E1 | ||
| 547 | #define ARIZONA_SLIMTX5MIX_INPUT_2_SOURCE 0x7E2 | ||
| 548 | #define ARIZONA_SLIMTX5MIX_INPUT_2_VOLUME 0x7E3 | ||
| 549 | #define ARIZONA_SLIMTX5MIX_INPUT_3_SOURCE 0x7E4 | ||
| 550 | #define ARIZONA_SLIMTX5MIX_INPUT_3_VOLUME 0x7E5 | ||
| 551 | #define ARIZONA_SLIMTX5MIX_INPUT_4_SOURCE 0x7E6 | ||
| 552 | #define ARIZONA_SLIMTX5MIX_INPUT_4_VOLUME 0x7E7 | ||
| 553 | #define ARIZONA_SLIMTX6MIX_INPUT_1_SOURCE 0x7E8 | ||
| 554 | #define ARIZONA_SLIMTX6MIX_INPUT_1_VOLUME 0x7E9 | ||
| 555 | #define ARIZONA_SLIMTX6MIX_INPUT_2_SOURCE 0x7EA | ||
| 556 | #define ARIZONA_SLIMTX6MIX_INPUT_2_VOLUME 0x7EB | ||
| 557 | #define ARIZONA_SLIMTX6MIX_INPUT_3_SOURCE 0x7EC | ||
| 558 | #define ARIZONA_SLIMTX6MIX_INPUT_3_VOLUME 0x7ED | ||
| 559 | #define ARIZONA_SLIMTX6MIX_INPUT_4_SOURCE 0x7EE | ||
| 560 | #define ARIZONA_SLIMTX6MIX_INPUT_4_VOLUME 0x7EF | ||
| 561 | #define ARIZONA_SLIMTX7MIX_INPUT_1_SOURCE 0x7F0 | ||
| 562 | #define ARIZONA_SLIMTX7MIX_INPUT_1_VOLUME 0x7F1 | ||
| 563 | #define ARIZONA_SLIMTX7MIX_INPUT_2_SOURCE 0x7F2 | ||
| 564 | #define ARIZONA_SLIMTX7MIX_INPUT_2_VOLUME 0x7F3 | ||
| 565 | #define ARIZONA_SLIMTX7MIX_INPUT_3_SOURCE 0x7F4 | ||
| 566 | #define ARIZONA_SLIMTX7MIX_INPUT_3_VOLUME 0x7F5 | ||
| 567 | #define ARIZONA_SLIMTX7MIX_INPUT_4_SOURCE 0x7F6 | ||
| 568 | #define ARIZONA_SLIMTX7MIX_INPUT_4_VOLUME 0x7F7 | ||
| 569 | #define ARIZONA_SLIMTX8MIX_INPUT_1_SOURCE 0x7F8 | ||
| 570 | #define ARIZONA_SLIMTX8MIX_INPUT_1_VOLUME 0x7F9 | ||
| 571 | #define ARIZONA_SLIMTX8MIX_INPUT_2_SOURCE 0x7FA | ||
| 572 | #define ARIZONA_SLIMTX8MIX_INPUT_2_VOLUME 0x7FB | ||
| 573 | #define ARIZONA_SLIMTX8MIX_INPUT_3_SOURCE 0x7FC | ||
| 574 | #define ARIZONA_SLIMTX8MIX_INPUT_3_VOLUME 0x7FD | ||
| 575 | #define ARIZONA_SLIMTX8MIX_INPUT_4_SOURCE 0x7FE | ||
| 576 | #define ARIZONA_SLIMTX8MIX_INPUT_4_VOLUME 0x7FF | ||
| 577 | #define ARIZONA_EQ1MIX_INPUT_1_SOURCE 0x880 | ||
| 578 | #define ARIZONA_EQ1MIX_INPUT_1_VOLUME 0x881 | ||
| 579 | #define ARIZONA_EQ1MIX_INPUT_2_SOURCE 0x882 | ||
| 580 | #define ARIZONA_EQ1MIX_INPUT_2_VOLUME 0x883 | ||
| 581 | #define ARIZONA_EQ1MIX_INPUT_3_SOURCE 0x884 | ||
| 582 | #define ARIZONA_EQ1MIX_INPUT_3_VOLUME 0x885 | ||
| 583 | #define ARIZONA_EQ1MIX_INPUT_4_SOURCE 0x886 | ||
| 584 | #define ARIZONA_EQ1MIX_INPUT_4_VOLUME 0x887 | ||
| 585 | #define ARIZONA_EQ2MIX_INPUT_1_SOURCE 0x888 | ||
| 586 | #define ARIZONA_EQ2MIX_INPUT_1_VOLUME 0x889 | ||
| 587 | #define ARIZONA_EQ2MIX_INPUT_2_SOURCE 0x88A | ||
| 588 | #define ARIZONA_EQ2MIX_INPUT_2_VOLUME 0x88B | ||
| 589 | #define ARIZONA_EQ2MIX_INPUT_3_SOURCE 0x88C | ||
| 590 | #define ARIZONA_EQ2MIX_INPUT_3_VOLUME 0x88D | ||
| 591 | #define ARIZONA_EQ2MIX_INPUT_4_SOURCE 0x88E | ||
| 592 | #define ARIZONA_EQ2MIX_INPUT_4_VOLUME 0x88F | ||
| 593 | #define ARIZONA_EQ3MIX_INPUT_1_SOURCE 0x890 | ||
| 594 | #define ARIZONA_EQ3MIX_INPUT_1_VOLUME 0x891 | ||
| 595 | #define ARIZONA_EQ3MIX_INPUT_2_SOURCE 0x892 | ||
| 596 | #define ARIZONA_EQ3MIX_INPUT_2_VOLUME 0x893 | ||
| 597 | #define ARIZONA_EQ3MIX_INPUT_3_SOURCE 0x894 | ||
| 598 | #define ARIZONA_EQ3MIX_INPUT_3_VOLUME 0x895 | ||
| 599 | #define ARIZONA_EQ3MIX_INPUT_4_SOURCE 0x896 | ||
| 600 | #define ARIZONA_EQ3MIX_INPUT_4_VOLUME 0x897 | ||
| 601 | #define ARIZONA_EQ4MIX_INPUT_1_SOURCE 0x898 | ||
| 602 | #define ARIZONA_EQ4MIX_INPUT_1_VOLUME 0x899 | ||
| 603 | #define ARIZONA_EQ4MIX_INPUT_2_SOURCE 0x89A | ||
| 604 | #define ARIZONA_EQ4MIX_INPUT_2_VOLUME 0x89B | ||
| 605 | #define ARIZONA_EQ4MIX_INPUT_3_SOURCE 0x89C | ||
| 606 | #define ARIZONA_EQ4MIX_INPUT_3_VOLUME 0x89D | ||
| 607 | #define ARIZONA_EQ4MIX_INPUT_4_SOURCE 0x89E | ||
| 608 | #define ARIZONA_EQ4MIX_INPUT_4_VOLUME 0x89F | ||
| 609 | #define ARIZONA_DRC1LMIX_INPUT_1_SOURCE 0x8C0 | ||
| 610 | #define ARIZONA_DRC1LMIX_INPUT_1_VOLUME 0x8C1 | ||
| 611 | #define ARIZONA_DRC1LMIX_INPUT_2_SOURCE 0x8C2 | ||
| 612 | #define ARIZONA_DRC1LMIX_INPUT_2_VOLUME 0x8C3 | ||
| 613 | #define ARIZONA_DRC1LMIX_INPUT_3_SOURCE 0x8C4 | ||
| 614 | #define ARIZONA_DRC1LMIX_INPUT_3_VOLUME 0x8C5 | ||
| 615 | #define ARIZONA_DRC1LMIX_INPUT_4_SOURCE 0x8C6 | ||
| 616 | #define ARIZONA_DRC1LMIX_INPUT_4_VOLUME 0x8C7 | ||
| 617 | #define ARIZONA_DRC1RMIX_INPUT_1_SOURCE 0x8C8 | ||
| 618 | #define ARIZONA_DRC1RMIX_INPUT_1_VOLUME 0x8C9 | ||
| 619 | #define ARIZONA_DRC1RMIX_INPUT_2_SOURCE 0x8CA | ||
| 620 | #define ARIZONA_DRC1RMIX_INPUT_2_VOLUME 0x8CB | ||
| 621 | #define ARIZONA_DRC1RMIX_INPUT_3_SOURCE 0x8CC | ||
| 622 | #define ARIZONA_DRC1RMIX_INPUT_3_VOLUME 0x8CD | ||
| 623 | #define ARIZONA_DRC1RMIX_INPUT_4_SOURCE 0x8CE | ||
| 624 | #define ARIZONA_DRC1RMIX_INPUT_4_VOLUME 0x8CF | ||
| 625 | #define ARIZONA_DRC2LMIX_INPUT_1_SOURCE 0x8D0 | ||
| 626 | #define ARIZONA_DRC2LMIX_INPUT_1_VOLUME 0x8D1 | ||
| 627 | #define ARIZONA_DRC2LMIX_INPUT_2_SOURCE 0x8D2 | ||
| 628 | #define ARIZONA_DRC2LMIX_INPUT_2_VOLUME 0x8D3 | ||
| 629 | #define ARIZONA_DRC2LMIX_INPUT_3_SOURCE 0x8D4 | ||
| 630 | #define ARIZONA_DRC2LMIX_INPUT_3_VOLUME 0x8D5 | ||
| 631 | #define ARIZONA_DRC2LMIX_INPUT_4_SOURCE 0x8D6 | ||
| 632 | #define ARIZONA_DRC2LMIX_INPUT_4_VOLUME 0x8D7 | ||
| 633 | #define ARIZONA_DRC2RMIX_INPUT_1_SOURCE 0x8D8 | ||
| 634 | #define ARIZONA_DRC2RMIX_INPUT_1_VOLUME 0x8D9 | ||
| 635 | #define ARIZONA_DRC2RMIX_INPUT_2_SOURCE 0x8DA | ||
| 636 | #define ARIZONA_DRC2RMIX_INPUT_2_VOLUME 0x8DB | ||
| 637 | #define ARIZONA_DRC2RMIX_INPUT_3_SOURCE 0x8DC | ||
| 638 | #define ARIZONA_DRC2RMIX_INPUT_3_VOLUME 0x8DD | ||
| 639 | #define ARIZONA_DRC2RMIX_INPUT_4_SOURCE 0x8DE | ||
| 640 | #define ARIZONA_DRC2RMIX_INPUT_4_VOLUME 0x8DF | ||
| 641 | #define ARIZONA_HPLP1MIX_INPUT_1_SOURCE 0x900 | ||
| 642 | #define ARIZONA_HPLP1MIX_INPUT_1_VOLUME 0x901 | ||
| 643 | #define ARIZONA_HPLP1MIX_INPUT_2_SOURCE 0x902 | ||
| 644 | #define ARIZONA_HPLP1MIX_INPUT_2_VOLUME 0x903 | ||
| 645 | #define ARIZONA_HPLP1MIX_INPUT_3_SOURCE 0x904 | ||
| 646 | #define ARIZONA_HPLP1MIX_INPUT_3_VOLUME 0x905 | ||
| 647 | #define ARIZONA_HPLP1MIX_INPUT_4_SOURCE 0x906 | ||
| 648 | #define ARIZONA_HPLP1MIX_INPUT_4_VOLUME 0x907 | ||
| 649 | #define ARIZONA_HPLP2MIX_INPUT_1_SOURCE 0x908 | ||
| 650 | #define ARIZONA_HPLP2MIX_INPUT_1_VOLUME 0x909 | ||
| 651 | #define ARIZONA_HPLP2MIX_INPUT_2_SOURCE 0x90A | ||
| 652 | #define ARIZONA_HPLP2MIX_INPUT_2_VOLUME 0x90B | ||
| 653 | #define ARIZONA_HPLP2MIX_INPUT_3_SOURCE 0x90C | ||
| 654 | #define ARIZONA_HPLP2MIX_INPUT_3_VOLUME 0x90D | ||
| 655 | #define ARIZONA_HPLP2MIX_INPUT_4_SOURCE 0x90E | ||
| 656 | #define ARIZONA_HPLP2MIX_INPUT_4_VOLUME 0x90F | ||
| 657 | #define ARIZONA_HPLP3MIX_INPUT_1_SOURCE 0x910 | ||
| 658 | #define ARIZONA_HPLP3MIX_INPUT_1_VOLUME 0x911 | ||
| 659 | #define ARIZONA_HPLP3MIX_INPUT_2_SOURCE 0x912 | ||
| 660 | #define ARIZONA_HPLP3MIX_INPUT_2_VOLUME 0x913 | ||
| 661 | #define ARIZONA_HPLP3MIX_INPUT_3_SOURCE 0x914 | ||
| 662 | #define ARIZONA_HPLP3MIX_INPUT_3_VOLUME 0x915 | ||
| 663 | #define ARIZONA_HPLP3MIX_INPUT_4_SOURCE 0x916 | ||
| 664 | #define ARIZONA_HPLP3MIX_INPUT_4_VOLUME 0x917 | ||
| 665 | #define ARIZONA_HPLP4MIX_INPUT_1_SOURCE 0x918 | ||
| 666 | #define ARIZONA_HPLP4MIX_INPUT_1_VOLUME 0x919 | ||
| 667 | #define ARIZONA_HPLP4MIX_INPUT_2_SOURCE 0x91A | ||
| 668 | #define ARIZONA_HPLP4MIX_INPUT_2_VOLUME 0x91B | ||
| 669 | #define ARIZONA_HPLP4MIX_INPUT_3_SOURCE 0x91C | ||
| 670 | #define ARIZONA_HPLP4MIX_INPUT_3_VOLUME 0x91D | ||
| 671 | #define ARIZONA_HPLP4MIX_INPUT_4_SOURCE 0x91E | ||
| 672 | #define ARIZONA_HPLP4MIX_INPUT_4_VOLUME 0x91F | ||
| 673 | #define ARIZONA_DSP1LMIX_INPUT_1_SOURCE 0x940 | ||
| 674 | #define ARIZONA_DSP1LMIX_INPUT_1_VOLUME 0x941 | ||
| 675 | #define ARIZONA_DSP1LMIX_INPUT_2_SOURCE 0x942 | ||
| 676 | #define ARIZONA_DSP1LMIX_INPUT_2_VOLUME 0x943 | ||
| 677 | #define ARIZONA_DSP1LMIX_INPUT_3_SOURCE 0x944 | ||
| 678 | #define ARIZONA_DSP1LMIX_INPUT_3_VOLUME 0x945 | ||
| 679 | #define ARIZONA_DSP1LMIX_INPUT_4_SOURCE 0x946 | ||
| 680 | #define ARIZONA_DSP1LMIX_INPUT_4_VOLUME 0x947 | ||
| 681 | #define ARIZONA_DSP1RMIX_INPUT_1_SOURCE 0x948 | ||
| 682 | #define ARIZONA_DSP1RMIX_INPUT_1_VOLUME 0x949 | ||
| 683 | #define ARIZONA_DSP1RMIX_INPUT_2_SOURCE 0x94A | ||
| 684 | #define ARIZONA_DSP1RMIX_INPUT_2_VOLUME 0x94B | ||
| 685 | #define ARIZONA_DSP1RMIX_INPUT_3_SOURCE 0x94C | ||
| 686 | #define ARIZONA_DSP1RMIX_INPUT_3_VOLUME 0x94D | ||
| 687 | #define ARIZONA_DSP1RMIX_INPUT_4_SOURCE 0x94E | ||
| 688 | #define ARIZONA_DSP1RMIX_INPUT_4_VOLUME 0x94F | ||
| 689 | #define ARIZONA_DSP1AUX1MIX_INPUT_1_SOURCE 0x950 | ||
| 690 | #define ARIZONA_DSP1AUX2MIX_INPUT_1_SOURCE 0x958 | ||
| 691 | #define ARIZONA_DSP1AUX3MIX_INPUT_1_SOURCE 0x960 | ||
| 692 | #define ARIZONA_DSP1AUX4MIX_INPUT_1_SOURCE 0x968 | ||
| 693 | #define ARIZONA_DSP1AUX5MIX_INPUT_1_SOURCE 0x970 | ||
| 694 | #define ARIZONA_DSP1AUX6MIX_INPUT_1_SOURCE 0x978 | ||
| 695 | #define ARIZONA_DSP2LMIX_INPUT_1_SOURCE 0x980 | ||
| 696 | #define ARIZONA_DSP2LMIX_INPUT_1_VOLUME 0x981 | ||
| 697 | #define ARIZONA_DSP2LMIX_INPUT_2_SOURCE 0x982 | ||
| 698 | #define ARIZONA_DSP2LMIX_INPUT_2_VOLUME 0x983 | ||
| 699 | #define ARIZONA_DSP2LMIX_INPUT_3_SOURCE 0x984 | ||
| 700 | #define ARIZONA_DSP2LMIX_INPUT_3_VOLUME 0x985 | ||
| 701 | #define ARIZONA_DSP2LMIX_INPUT_4_SOURCE 0x986 | ||
| 702 | #define ARIZONA_DSP2LMIX_INPUT_4_VOLUME 0x987 | ||
| 703 | #define ARIZONA_DSP2RMIX_INPUT_1_SOURCE 0x988 | ||
| 704 | #define ARIZONA_DSP2RMIX_INPUT_1_VOLUME 0x989 | ||
| 705 | #define ARIZONA_DSP2RMIX_INPUT_2_SOURCE 0x98A | ||
| 706 | #define ARIZONA_DSP2RMIX_INPUT_2_VOLUME 0x98B | ||
| 707 | #define ARIZONA_DSP2RMIX_INPUT_3_SOURCE 0x98C | ||
| 708 | #define ARIZONA_DSP2RMIX_INPUT_3_VOLUME 0x98D | ||
| 709 | #define ARIZONA_DSP2RMIX_INPUT_4_SOURCE 0x98E | ||
| 710 | #define ARIZONA_DSP2RMIX_INPUT_4_VOLUME 0x98F | ||
| 711 | #define ARIZONA_DSP2AUX1MIX_INPUT_1_SOURCE 0x990 | ||
| 712 | #define ARIZONA_DSP2AUX2MIX_INPUT_1_SOURCE 0x998 | ||
| 713 | #define ARIZONA_DSP2AUX3MIX_INPUT_1_SOURCE 0x9A0 | ||
| 714 | #define ARIZONA_DSP2AUX4MIX_INPUT_1_SOURCE 0x9A8 | ||
| 715 | #define ARIZONA_DSP2AUX5MIX_INPUT_1_SOURCE 0x9B0 | ||
| 716 | #define ARIZONA_DSP2AUX6MIX_INPUT_1_SOURCE 0x9B8 | ||
| 717 | #define ARIZONA_DSP3LMIX_INPUT_1_SOURCE 0x9C0 | ||
| 718 | #define ARIZONA_DSP3LMIX_INPUT_1_VOLUME 0x9C1 | ||
| 719 | #define ARIZONA_DSP3LMIX_INPUT_2_SOURCE 0x9C2 | ||
| 720 | #define ARIZONA_DSP3LMIX_INPUT_2_VOLUME 0x9C3 | ||
| 721 | #define ARIZONA_DSP3LMIX_INPUT_3_SOURCE 0x9C4 | ||
| 722 | #define ARIZONA_DSP3LMIX_INPUT_3_VOLUME 0x9C5 | ||
| 723 | #define ARIZONA_DSP3LMIX_INPUT_4_SOURCE 0x9C6 | ||
| 724 | #define ARIZONA_DSP3LMIX_INPUT_4_VOLUME 0x9C7 | ||
| 725 | #define ARIZONA_DSP3RMIX_INPUT_1_SOURCE 0x9C8 | ||
| 726 | #define ARIZONA_DSP3RMIX_INPUT_1_VOLUME 0x9C9 | ||
| 727 | #define ARIZONA_DSP3RMIX_INPUT_2_SOURCE 0x9CA | ||
| 728 | #define ARIZONA_DSP3RMIX_INPUT_2_VOLUME 0x9CB | ||
| 729 | #define ARIZONA_DSP3RMIX_INPUT_3_SOURCE 0x9CC | ||
| 730 | #define ARIZONA_DSP3RMIX_INPUT_3_VOLUME 0x9CD | ||
| 731 | #define ARIZONA_DSP3RMIX_INPUT_4_SOURCE 0x9CE | ||
| 732 | #define ARIZONA_DSP3RMIX_INPUT_4_VOLUME 0x9CF | ||
| 733 | #define ARIZONA_DSP3AUX1MIX_INPUT_1_SOURCE 0x9D0 | ||
| 734 | #define ARIZONA_DSP3AUX2MIX_INPUT_1_SOURCE 0x9D8 | ||
| 735 | #define ARIZONA_DSP3AUX3MIX_INPUT_1_SOURCE 0x9E0 | ||
| 736 | #define ARIZONA_DSP3AUX4MIX_INPUT_1_SOURCE 0x9E8 | ||
| 737 | #define ARIZONA_DSP3AUX5MIX_INPUT_1_SOURCE 0x9F0 | ||
| 738 | #define ARIZONA_DSP3AUX6MIX_INPUT_1_SOURCE 0x9F8 | ||
| 739 | #define ARIZONA_DSP4LMIX_INPUT_1_SOURCE 0xA00 | ||
| 740 | #define ARIZONA_DSP4LMIX_INPUT_1_VOLUME 0xA01 | ||
| 741 | #define ARIZONA_DSP4LMIX_INPUT_2_SOURCE 0xA02 | ||
| 742 | #define ARIZONA_DSP4LMIX_INPUT_2_VOLUME 0xA03 | ||
| 743 | #define ARIZONA_DSP4LMIX_INPUT_3_SOURCE 0xA04 | ||
| 744 | #define ARIZONA_DSP4LMIX_INPUT_3_VOLUME 0xA05 | ||
| 745 | #define ARIZONA_DSP4LMIX_INPUT_4_SOURCE 0xA06 | ||
| 746 | #define ARIZONA_DSP4LMIX_INPUT_4_VOLUME 0xA07 | ||
| 747 | #define ARIZONA_DSP4RMIX_INPUT_1_SOURCE 0xA08 | ||
| 748 | #define ARIZONA_DSP4RMIX_INPUT_1_VOLUME 0xA09 | ||
| 749 | #define ARIZONA_DSP4RMIX_INPUT_2_SOURCE 0xA0A | ||
| 750 | #define ARIZONA_DSP4RMIX_INPUT_2_VOLUME 0xA0B | ||
| 751 | #define ARIZONA_DSP4RMIX_INPUT_3_SOURCE 0xA0C | ||
| 752 | #define ARIZONA_DSP4RMIX_INPUT_3_VOLUME 0xA0D | ||
| 753 | #define ARIZONA_DSP4RMIX_INPUT_4_SOURCE 0xA0E | ||
| 754 | #define ARIZONA_DSP4RMIX_INPUT_4_VOLUME 0xA0F | ||
| 755 | #define ARIZONA_DSP4AUX1MIX_INPUT_1_SOURCE 0xA10 | ||
| 756 | #define ARIZONA_DSP4AUX2MIX_INPUT_1_SOURCE 0xA18 | ||
| 757 | #define ARIZONA_DSP4AUX3MIX_INPUT_1_SOURCE 0xA20 | ||
| 758 | #define ARIZONA_DSP4AUX4MIX_INPUT_1_SOURCE 0xA28 | ||
| 759 | #define ARIZONA_DSP4AUX5MIX_INPUT_1_SOURCE 0xA30 | ||
| 760 | #define ARIZONA_DSP4AUX6MIX_INPUT_1_SOURCE 0xA38 | ||
| 761 | #define ARIZONA_ASRC1LMIX_INPUT_1_SOURCE 0xA80 | ||
| 762 | #define ARIZONA_ASRC1RMIX_INPUT_1_SOURCE 0xA88 | ||
| 763 | #define ARIZONA_ASRC2LMIX_INPUT_1_SOURCE 0xA90 | ||
| 764 | #define ARIZONA_ASRC2RMIX_INPUT_1_SOURCE 0xA98 | ||
| 765 | #define ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE 0xB00 | ||
| 766 | #define ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE 0xB08 | ||
| 767 | #define ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE 0xB10 | ||
| 768 | #define ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE 0xB18 | ||
| 769 | #define ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE 0xB20 | ||
| 770 | #define ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE 0xB28 | ||
| 771 | #define ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE 0xB30 | ||
| 772 | #define ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE 0xB38 | ||
| 773 | #define ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE 0xB40 | ||
| 774 | #define ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE 0xB48 | ||
| 775 | #define ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE 0xB60 | ||
| 776 | #define ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE 0xB68 | ||
| 777 | #define ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE 0xB30 | ||
| 778 | #define ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE 0xB38 | ||
| 779 | #define ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE 0xB40 | ||
| 780 | #define ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE 0xB48 | ||
| 781 | #define ARIZONA_ISRC2DEC3MIX_INPUT_1_SOURCE 0xB50 | ||
| 782 | #define ARIZONA_ISRC2DEC4MIX_INPUT_1_SOURCE 0xB58 | ||
| 783 | #define ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE 0xB60 | ||
| 784 | #define ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE 0xB68 | ||
| 785 | #define ARIZONA_ISRC2INT3MIX_INPUT_1_SOURCE 0xB70 | ||
| 786 | #define ARIZONA_ISRC2INT4MIX_INPUT_1_SOURCE 0xB78 | ||
| 787 | #define ARIZONA_ISRC3DEC1MIX_INPUT_1_SOURCE 0xB80 | ||
| 788 | #define ARIZONA_ISRC3DEC2MIX_INPUT_1_SOURCE 0xB88 | ||
| 789 | #define ARIZONA_ISRC3DEC3MIX_INPUT_1_SOURCE 0xB90 | ||
| 790 | #define ARIZONA_ISRC3DEC4MIX_INPUT_1_SOURCE 0xB98 | ||
| 791 | #define ARIZONA_ISRC3INT1MIX_INPUT_1_SOURCE 0xBA0 | ||
| 792 | #define ARIZONA_ISRC3INT2MIX_INPUT_1_SOURCE 0xBA8 | ||
| 793 | #define ARIZONA_ISRC3INT3MIX_INPUT_1_SOURCE 0xBB0 | ||
| 794 | #define ARIZONA_ISRC3INT4MIX_INPUT_1_SOURCE 0xBB8 | ||
| 795 | #define ARIZONA_GPIO1_CTRL 0xC00 | ||
| 796 | #define ARIZONA_GPIO2_CTRL 0xC01 | ||
| 797 | #define ARIZONA_GPIO3_CTRL 0xC02 | ||
| 798 | #define ARIZONA_GPIO4_CTRL 0xC03 | ||
| 799 | #define ARIZONA_GPIO5_CTRL 0xC04 | ||
| 800 | #define ARIZONA_IRQ_CTRL_1 0xC0F | ||
| 801 | #define ARIZONA_GPIO_DEBOUNCE_CONFIG 0xC10 | ||
| 802 | #define ARIZONA_MISC_PAD_CTRL_1 0xC20 | ||
| 803 | #define ARIZONA_MISC_PAD_CTRL_2 0xC21 | ||
| 804 | #define ARIZONA_MISC_PAD_CTRL_3 0xC22 | ||
| 805 | #define ARIZONA_MISC_PAD_CTRL_4 0xC23 | ||
| 806 | #define ARIZONA_MISC_PAD_CTRL_5 0xC24 | ||
| 807 | #define ARIZONA_MISC_PAD_CTRL_6 0xC25 | ||
| 808 | #define ARIZONA_MISC_PAD_CTRL_7 0xC30 | ||
| 809 | #define ARIZONA_MISC_PAD_CTRL_8 0xC31 | ||
| 810 | #define ARIZONA_MISC_PAD_CTRL_9 0xC32 | ||
| 811 | #define ARIZONA_MISC_PAD_CTRL_10 0xC33 | ||
| 812 | #define ARIZONA_MISC_PAD_CTRL_11 0xC34 | ||
| 813 | #define ARIZONA_MISC_PAD_CTRL_12 0xC35 | ||
| 814 | #define ARIZONA_MISC_PAD_CTRL_13 0xC36 | ||
| 815 | #define ARIZONA_MISC_PAD_CTRL_14 0xC37 | ||
| 816 | #define ARIZONA_MISC_PAD_CTRL_15 0xC38 | ||
| 817 | #define ARIZONA_MISC_PAD_CTRL_16 0xC39 | ||
| 818 | #define ARIZONA_MISC_PAD_CTRL_17 0xC3A | ||
| 819 | #define ARIZONA_MISC_PAD_CTRL_18 0xC3B | ||
| 820 | #define ARIZONA_INTERRUPT_STATUS_1 0xD00 | ||
| 821 | #define ARIZONA_INTERRUPT_STATUS_2 0xD01 | ||
| 822 | #define ARIZONA_INTERRUPT_STATUS_3 0xD02 | ||
| 823 | #define ARIZONA_INTERRUPT_STATUS_4 0xD03 | ||
| 824 | #define ARIZONA_INTERRUPT_STATUS_5 0xD04 | ||
| 825 | #define ARIZONA_INTERRUPT_STATUS_1_MASK 0xD08 | ||
| 826 | #define ARIZONA_INTERRUPT_STATUS_2_MASK 0xD09 | ||
| 827 | #define ARIZONA_INTERRUPT_STATUS_3_MASK 0xD0A | ||
| 828 | #define ARIZONA_INTERRUPT_STATUS_4_MASK 0xD0B | ||
| 829 | #define ARIZONA_INTERRUPT_STATUS_5_MASK 0xD0C | ||
| 830 | #define ARIZONA_INTERRUPT_CONTROL 0xD0F | ||
| 831 | #define ARIZONA_IRQ2_STATUS_1 0xD10 | ||
| 832 | #define ARIZONA_IRQ2_STATUS_2 0xD11 | ||
| 833 | #define ARIZONA_IRQ2_STATUS_3 0xD12 | ||
| 834 | #define ARIZONA_IRQ2_STATUS_4 0xD13 | ||
| 835 | #define ARIZONA_IRQ2_STATUS_5 0xD14 | ||
| 836 | #define ARIZONA_IRQ2_STATUS_1_MASK 0xD18 | ||
| 837 | #define ARIZONA_IRQ2_STATUS_2_MASK 0xD19 | ||
| 838 | #define ARIZONA_IRQ2_STATUS_3_MASK 0xD1A | ||
| 839 | #define ARIZONA_IRQ2_STATUS_4_MASK 0xD1B | ||
| 840 | #define ARIZONA_IRQ2_STATUS_5_MASK 0xD1C | ||
| 841 | #define ARIZONA_IRQ2_CONTROL 0xD1F | ||
| 842 | #define ARIZONA_INTERRUPT_RAW_STATUS_2 0xD20 | ||
| 843 | #define ARIZONA_INTERRUPT_RAW_STATUS_3 0xD21 | ||
| 844 | #define ARIZONA_INTERRUPT_RAW_STATUS_4 0xD22 | ||
| 845 | #define ARIZONA_INTERRUPT_RAW_STATUS_5 0xD23 | ||
| 846 | #define ARIZONA_INTERRUPT_RAW_STATUS_6 0xD24 | ||
| 847 | #define ARIZONA_INTERRUPT_RAW_STATUS_7 0xD25 | ||
| 848 | #define ARIZONA_INTERRUPT_RAW_STATUS_8 0xD26 | ||
| 849 | #define ARIZONA_IRQ_PIN_STATUS 0xD40 | ||
| 850 | #define ARIZONA_ADSP2_IRQ0 0xD41 | ||
| 851 | #define ARIZONA_AOD_WKUP_AND_TRIG 0xD50 | ||
| 852 | #define ARIZONA_AOD_IRQ1 0xD51 | ||
| 853 | #define ARIZONA_AOD_IRQ2 0xD52 | ||
| 854 | #define ARIZONA_AOD_IRQ_MASK_IRQ1 0xD53 | ||
| 855 | #define ARIZONA_AOD_IRQ_MASK_IRQ2 0xD54 | ||
| 856 | #define ARIZONA_AOD_IRQ_RAW_STATUS 0xD55 | ||
| 857 | #define ARIZONA_JACK_DETECT_DEBOUNCE 0xD56 | ||
| 858 | #define ARIZONA_FX_CTRL1 0xE00 | ||
| 859 | #define ARIZONA_FX_CTRL2 0xE01 | ||
| 860 | #define ARIZONA_EQ1_1 0xE10 | ||
| 861 | #define ARIZONA_EQ1_2 0xE11 | ||
| 862 | #define ARIZONA_EQ1_3 0xE12 | ||
| 863 | #define ARIZONA_EQ1_4 0xE13 | ||
| 864 | #define ARIZONA_EQ1_5 0xE14 | ||
| 865 | #define ARIZONA_EQ1_6 0xE15 | ||
| 866 | #define ARIZONA_EQ1_7 0xE16 | ||
| 867 | #define ARIZONA_EQ1_8 0xE17 | ||
| 868 | #define ARIZONA_EQ1_9 0xE18 | ||
| 869 | #define ARIZONA_EQ1_10 0xE19 | ||
| 870 | #define ARIZONA_EQ1_11 0xE1A | ||
| 871 | #define ARIZONA_EQ1_12 0xE1B | ||
| 872 | #define ARIZONA_EQ1_13 0xE1C | ||
| 873 | #define ARIZONA_EQ1_14 0xE1D | ||
| 874 | #define ARIZONA_EQ1_15 0xE1E | ||
| 875 | #define ARIZONA_EQ1_16 0xE1F | ||
| 876 | #define ARIZONA_EQ1_17 0xE20 | ||
| 877 | #define ARIZONA_EQ1_18 0xE21 | ||
| 878 | #define ARIZONA_EQ1_19 0xE22 | ||
| 879 | #define ARIZONA_EQ1_20 0xE23 | ||
| 880 | #define ARIZONA_EQ1_21 0xE24 | ||
| 881 | #define ARIZONA_EQ2_1 0xE26 | ||
| 882 | #define ARIZONA_EQ2_2 0xE27 | ||
| 883 | #define ARIZONA_EQ2_3 0xE28 | ||
| 884 | #define ARIZONA_EQ2_4 0xE29 | ||
| 885 | #define ARIZONA_EQ2_5 0xE2A | ||
| 886 | #define ARIZONA_EQ2_6 0xE2B | ||
| 887 | #define ARIZONA_EQ2_7 0xE2C | ||
| 888 | #define ARIZONA_EQ2_8 0xE2D | ||
| 889 | #define ARIZONA_EQ2_9 0xE2E | ||
| 890 | #define ARIZONA_EQ2_10 0xE2F | ||
| 891 | #define ARIZONA_EQ2_11 0xE30 | ||
| 892 | #define ARIZONA_EQ2_12 0xE31 | ||
| 893 | #define ARIZONA_EQ2_13 0xE32 | ||
| 894 | #define ARIZONA_EQ2_14 0xE33 | ||
| 895 | #define ARIZONA_EQ2_15 0xE34 | ||
| 896 | #define ARIZONA_EQ2_16 0xE35 | ||
| 897 | #define ARIZONA_EQ2_17 0xE36 | ||
| 898 | #define ARIZONA_EQ2_18 0xE37 | ||
| 899 | #define ARIZONA_EQ2_19 0xE38 | ||
| 900 | #define ARIZONA_EQ2_20 0xE39 | ||
| 901 | #define ARIZONA_EQ2_21 0xE3A | ||
| 902 | #define ARIZONA_EQ3_1 0xE3C | ||
| 903 | #define ARIZONA_EQ3_2 0xE3D | ||
| 904 | #define ARIZONA_EQ3_3 0xE3E | ||
| 905 | #define ARIZONA_EQ3_4 0xE3F | ||
| 906 | #define ARIZONA_EQ3_5 0xE40 | ||
| 907 | #define ARIZONA_EQ3_6 0xE41 | ||
| 908 | #define ARIZONA_EQ3_7 0xE42 | ||
| 909 | #define ARIZONA_EQ3_8 0xE43 | ||
| 910 | #define ARIZONA_EQ3_9 0xE44 | ||
| 911 | #define ARIZONA_EQ3_10 0xE45 | ||
| 912 | #define ARIZONA_EQ3_11 0xE46 | ||
| 913 | #define ARIZONA_EQ3_12 0xE47 | ||
| 914 | #define ARIZONA_EQ3_13 0xE48 | ||
| 915 | #define ARIZONA_EQ3_14 0xE49 | ||
| 916 | #define ARIZONA_EQ3_15 0xE4A | ||
| 917 | #define ARIZONA_EQ3_16 0xE4B | ||
| 918 | #define ARIZONA_EQ3_17 0xE4C | ||
| 919 | #define ARIZONA_EQ3_18 0xE4D | ||
| 920 | #define ARIZONA_EQ3_19 0xE4E | ||
| 921 | #define ARIZONA_EQ3_20 0xE4F | ||
| 922 | #define ARIZONA_EQ3_21 0xE50 | ||
| 923 | #define ARIZONA_EQ4_1 0xE52 | ||
| 924 | #define ARIZONA_EQ4_2 0xE53 | ||
| 925 | #define ARIZONA_EQ4_3 0xE54 | ||
| 926 | #define ARIZONA_EQ4_4 0xE55 | ||
| 927 | #define ARIZONA_EQ4_5 0xE56 | ||
| 928 | #define ARIZONA_EQ4_6 0xE57 | ||
| 929 | #define ARIZONA_EQ4_7 0xE58 | ||
| 930 | #define ARIZONA_EQ4_8 0xE59 | ||
| 931 | #define ARIZONA_EQ4_9 0xE5A | ||
| 932 | #define ARIZONA_EQ4_10 0xE5B | ||
| 933 | #define ARIZONA_EQ4_11 0xE5C | ||
| 934 | #define ARIZONA_EQ4_12 0xE5D | ||
| 935 | #define ARIZONA_EQ4_13 0xE5E | ||
| 936 | #define ARIZONA_EQ4_14 0xE5F | ||
| 937 | #define ARIZONA_EQ4_15 0xE60 | ||
| 938 | #define ARIZONA_EQ4_16 0xE61 | ||
| 939 | #define ARIZONA_EQ4_17 0xE62 | ||
| 940 | #define ARIZONA_EQ4_18 0xE63 | ||
| 941 | #define ARIZONA_EQ4_19 0xE64 | ||
| 942 | #define ARIZONA_EQ4_20 0xE65 | ||
| 943 | #define ARIZONA_EQ4_21 0xE66 | ||
| 944 | #define ARIZONA_DRC1_CTRL1 0xE80 | ||
| 945 | #define ARIZONA_DRC1_CTRL2 0xE81 | ||
| 946 | #define ARIZONA_DRC1_CTRL3 0xE82 | ||
| 947 | #define ARIZONA_DRC1_CTRL4 0xE83 | ||
| 948 | #define ARIZONA_DRC1_CTRL5 0xE84 | ||
| 949 | #define ARIZONA_DRC2_CTRL1 0xE89 | ||
| 950 | #define ARIZONA_DRC2_CTRL2 0xE8A | ||
| 951 | #define ARIZONA_DRC2_CTRL3 0xE8B | ||
| 952 | #define ARIZONA_DRC2_CTRL4 0xE8C | ||
| 953 | #define ARIZONA_DRC2_CTRL5 0xE8D | ||
| 954 | #define ARIZONA_HPLPF1_1 0xEC0 | ||
| 955 | #define ARIZONA_HPLPF1_2 0xEC1 | ||
| 956 | #define ARIZONA_HPLPF2_1 0xEC4 | ||
| 957 | #define ARIZONA_HPLPF2_2 0xEC5 | ||
| 958 | #define ARIZONA_HPLPF3_1 0xEC8 | ||
| 959 | #define ARIZONA_HPLPF3_2 0xEC9 | ||
| 960 | #define ARIZONA_HPLPF4_1 0xECC | ||
| 961 | #define ARIZONA_HPLPF4_2 0xECD | ||
| 962 | #define ARIZONA_ASRC_ENABLE 0xEE0 | ||
| 963 | #define ARIZONA_ASRC_STATUS 0xEE1 | ||
| 964 | #define ARIZONA_ASRC_RATE1 0xEE2 | ||
| 965 | #define ARIZONA_ASRC_RATE2 0xEE3 | ||
| 966 | #define ARIZONA_ISRC_1_CTRL_1 0xEF0 | ||
| 967 | #define ARIZONA_ISRC_1_CTRL_2 0xEF1 | ||
| 968 | #define ARIZONA_ISRC_1_CTRL_3 0xEF2 | ||
| 969 | #define ARIZONA_ISRC_2_CTRL_1 0xEF3 | ||
| 970 | #define ARIZONA_ISRC_2_CTRL_2 0xEF4 | ||
| 971 | #define ARIZONA_ISRC_2_CTRL_3 0xEF5 | ||
| 972 | #define ARIZONA_ISRC_3_CTRL_1 0xEF6 | ||
| 973 | #define ARIZONA_ISRC_3_CTRL_2 0xEF7 | ||
| 974 | #define ARIZONA_ISRC_3_CTRL_3 0xEF8 | ||
| 975 | #define ARIZONA_CLOCK_CONTROL 0xF00 | ||
| 976 | #define ARIZONA_ANC_SRC 0xF01 | ||
| 977 | #define ARIZONA_DSP_STATUS 0xF02 | ||
| 978 | #define ARIZONA_DSP1_CONTROL_1 0x1100 | ||
| 979 | #define ARIZONA_DSP1_CLOCKING_1 0x1101 | ||
| 980 | #define ARIZONA_DSP1_STATUS_1 0x1104 | ||
| 981 | #define ARIZONA_DSP1_STATUS_2 0x1105 | ||
| 982 | #define ARIZONA_DSP2_CONTROL_1 0x1200 | ||
| 983 | #define ARIZONA_DSP2_CLOCKING_1 0x1201 | ||
| 984 | #define ARIZONA_DSP2_STATUS_1 0x1204 | ||
| 985 | #define ARIZONA_DSP2_STATUS_2 0x1205 | ||
| 986 | #define ARIZONA_DSP3_CONTROL_1 0x1300 | ||
| 987 | #define ARIZONA_DSP3_CLOCKING_1 0x1301 | ||
| 988 | #define ARIZONA_DSP3_STATUS_1 0x1304 | ||
| 989 | #define ARIZONA_DSP3_STATUS_2 0x1305 | ||
| 990 | #define ARIZONA_DSP4_CONTROL_1 0x1400 | ||
| 991 | #define ARIZONA_DSP4_CLOCKING_1 0x1401 | ||
| 992 | #define ARIZONA_DSP4_STATUS_1 0x1404 | ||
| 993 | #define ARIZONA_DSP4_STATUS_2 0x1405 | ||
| 994 | |||
| 995 | /* | ||
| 996 | * Field Definitions. | ||
| 997 | */ | ||
| 998 | |||
| 999 | /* | ||
| 1000 | * R0 (0x00) - software reset | ||
| 1001 | */ | ||
| 1002 | #define ARIZONA_SW_RST_DEV_ID1_MASK 0xFFFF /* SW_RST_DEV_ID1 - [15:0] */ | ||
| 1003 | #define ARIZONA_SW_RST_DEV_ID1_SHIFT 0 /* SW_RST_DEV_ID1 - [15:0] */ | ||
| 1004 | #define ARIZONA_SW_RST_DEV_ID1_WIDTH 16 /* SW_RST_DEV_ID1 - [15:0] */ | ||
| 1005 | |||
| 1006 | /* | ||
| 1007 | * R1 (0x01) - Device Revision | ||
| 1008 | */ | ||
| 1009 | #define ARIZONA_DEVICE_REVISION_MASK 0x00FF /* DEVICE_REVISION - [7:0] */ | ||
| 1010 | #define ARIZONA_DEVICE_REVISION_SHIFT 0 /* DEVICE_REVISION - [7:0] */ | ||
| 1011 | #define ARIZONA_DEVICE_REVISION_WIDTH 8 /* DEVICE_REVISION - [7:0] */ | ||
| 1012 | |||
| 1013 | /* | ||
| 1014 | * R8 (0x08) - Ctrl IF SPI CFG 1 | ||
| 1015 | */ | ||
| 1016 | #define ARIZONA_SPI_CFG 0x0010 /* SPI_CFG */ | ||
| 1017 | #define ARIZONA_SPI_CFG_MASK 0x0010 /* SPI_CFG */ | ||
| 1018 | #define ARIZONA_SPI_CFG_SHIFT 4 /* SPI_CFG */ | ||
| 1019 | #define ARIZONA_SPI_CFG_WIDTH 1 /* SPI_CFG */ | ||
| 1020 | #define ARIZONA_SPI_4WIRE 0x0008 /* SPI_4WIRE */ | ||
| 1021 | #define ARIZONA_SPI_4WIRE_MASK 0x0008 /* SPI_4WIRE */ | ||
| 1022 | #define ARIZONA_SPI_4WIRE_SHIFT 3 /* SPI_4WIRE */ | ||
| 1023 | #define ARIZONA_SPI_4WIRE_WIDTH 1 /* SPI_4WIRE */ | ||
| 1024 | #define ARIZONA_SPI_AUTO_INC_MASK 0x0003 /* SPI_AUTO_INC - [1:0] */ | ||
| 1025 | #define ARIZONA_SPI_AUTO_INC_SHIFT 0 /* SPI_AUTO_INC - [1:0] */ | ||
| 1026 | #define ARIZONA_SPI_AUTO_INC_WIDTH 2 /* SPI_AUTO_INC - [1:0] */ | ||
| 1027 | |||
| 1028 | /* | ||
| 1029 | * R9 (0x09) - Ctrl IF I2C1 CFG 1 | ||
| 1030 | */ | ||
| 1031 | #define ARIZONA_I2C1_AUTO_INC_MASK 0x0003 /* I2C1_AUTO_INC - [1:0] */ | ||
| 1032 | #define ARIZONA_I2C1_AUTO_INC_SHIFT 0 /* I2C1_AUTO_INC - [1:0] */ | ||
| 1033 | #define ARIZONA_I2C1_AUTO_INC_WIDTH 2 /* I2C1_AUTO_INC - [1:0] */ | ||
| 1034 | |||
| 1035 | /* | ||
| 1036 | * R13 (0x0D) - Ctrl IF Status 1 | ||
| 1037 | */ | ||
| 1038 | #define ARIZONA_I2C1_BUSY 0x0020 /* I2C1_BUSY */ | ||
| 1039 | #define ARIZONA_I2C1_BUSY_MASK 0x0020 /* I2C1_BUSY */ | ||
| 1040 | #define ARIZONA_I2C1_BUSY_SHIFT 5 /* I2C1_BUSY */ | ||
| 1041 | #define ARIZONA_I2C1_BUSY_WIDTH 1 /* I2C1_BUSY */ | ||
| 1042 | #define ARIZONA_SPI_BUSY 0x0010 /* SPI_BUSY */ | ||
| 1043 | #define ARIZONA_SPI_BUSY_MASK 0x0010 /* SPI_BUSY */ | ||
| 1044 | #define ARIZONA_SPI_BUSY_SHIFT 4 /* SPI_BUSY */ | ||
| 1045 | #define ARIZONA_SPI_BUSY_WIDTH 1 /* SPI_BUSY */ | ||
| 1046 | |||
| 1047 | /* | ||
| 1048 | * R22 (0x16) - Write Sequencer Ctrl 0 | ||
| 1049 | */ | ||
| 1050 | #define ARIZONA_WSEQ_ABORT 0x0800 /* WSEQ_ABORT */ | ||
| 1051 | #define ARIZONA_WSEQ_ABORT_MASK 0x0800 /* WSEQ_ABORT */ | ||
| 1052 | #define ARIZONA_WSEQ_ABORT_SHIFT 11 /* WSEQ_ABORT */ | ||
| 1053 | #define ARIZONA_WSEQ_ABORT_WIDTH 1 /* WSEQ_ABORT */ | ||
| 1054 | #define ARIZONA_WSEQ_START 0x0400 /* WSEQ_START */ | ||
| 1055 | #define ARIZONA_WSEQ_START_MASK 0x0400 /* WSEQ_START */ | ||
| 1056 | #define ARIZONA_WSEQ_START_SHIFT 10 /* WSEQ_START */ | ||
| 1057 | #define ARIZONA_WSEQ_START_WIDTH 1 /* WSEQ_START */ | ||
| 1058 | #define ARIZONA_WSEQ_ENA 0x0200 /* WSEQ_ENA */ | ||
| 1059 | #define ARIZONA_WSEQ_ENA_MASK 0x0200 /* WSEQ_ENA */ | ||
| 1060 | #define ARIZONA_WSEQ_ENA_SHIFT 9 /* WSEQ_ENA */ | ||
| 1061 | #define ARIZONA_WSEQ_ENA_WIDTH 1 /* WSEQ_ENA */ | ||
| 1062 | #define ARIZONA_WSEQ_START_INDEX_MASK 0x01FF /* WSEQ_START_INDEX - [8:0] */ | ||
| 1063 | #define ARIZONA_WSEQ_START_INDEX_SHIFT 0 /* WSEQ_START_INDEX - [8:0] */ | ||
| 1064 | #define ARIZONA_WSEQ_START_INDEX_WIDTH 9 /* WSEQ_START_INDEX - [8:0] */ | ||
| 1065 | |||
| 1066 | /* | ||
| 1067 | * R23 (0x17) - Write Sequencer Ctrl 1 | ||
| 1068 | */ | ||
| 1069 | #define ARIZONA_WSEQ_BUSY 0x0200 /* WSEQ_BUSY */ | ||
| 1070 | #define ARIZONA_WSEQ_BUSY_MASK 0x0200 /* WSEQ_BUSY */ | ||
| 1071 | #define ARIZONA_WSEQ_BUSY_SHIFT 9 /* WSEQ_BUSY */ | ||
| 1072 | #define ARIZONA_WSEQ_BUSY_WIDTH 1 /* WSEQ_BUSY */ | ||
| 1073 | #define ARIZONA_WSEQ_CURRENT_INDEX_MASK 0x01FF /* WSEQ_CURRENT_INDEX - [8:0] */ | ||
| 1074 | #define ARIZONA_WSEQ_CURRENT_INDEX_SHIFT 0 /* WSEQ_CURRENT_INDEX - [8:0] */ | ||
| 1075 | #define ARIZONA_WSEQ_CURRENT_INDEX_WIDTH 9 /* WSEQ_CURRENT_INDEX - [8:0] */ | ||
| 1076 | |||
| 1077 | /* | ||
| 1078 | * R24 (0x18) - Write Sequencer Ctrl 2 | ||
| 1079 | */ | ||
| 1080 | #define ARIZONA_LOAD_DEFAULTS 0x0002 /* LOAD_DEFAULTS */ | ||
| 1081 | #define ARIZONA_LOAD_DEFAULTS_MASK 0x0002 /* LOAD_DEFAULTS */ | ||
| 1082 | #define ARIZONA_LOAD_DEFAULTS_SHIFT 1 /* LOAD_DEFAULTS */ | ||
| 1083 | #define ARIZONA_LOAD_DEFAULTS_WIDTH 1 /* LOAD_DEFAULTS */ | ||
| 1084 | #define ARIZONA_WSEQ_LOAD_MEM 0x0001 /* WSEQ_LOAD_MEM */ | ||
| 1085 | #define ARIZONA_WSEQ_LOAD_MEM_MASK 0x0001 /* WSEQ_LOAD_MEM */ | ||
| 1086 | #define ARIZONA_WSEQ_LOAD_MEM_SHIFT 0 /* WSEQ_LOAD_MEM */ | ||
| 1087 | #define ARIZONA_WSEQ_LOAD_MEM_WIDTH 1 /* WSEQ_LOAD_MEM */ | ||
| 1088 | |||
| 1089 | /* | ||
| 1090 | * R26 (0x1A) - Write Sequencer PROM | ||
| 1091 | */ | ||
| 1092 | #define ARIZONA_WSEQ_OTP_WRITE 0x0001 /* WSEQ_OTP_WRITE */ | ||
| 1093 | #define ARIZONA_WSEQ_OTP_WRITE_MASK 0x0001 /* WSEQ_OTP_WRITE */ | ||
| 1094 | #define ARIZONA_WSEQ_OTP_WRITE_SHIFT 0 /* WSEQ_OTP_WRITE */ | ||
| 1095 | #define ARIZONA_WSEQ_OTP_WRITE_WIDTH 1 /* WSEQ_OTP_WRITE */ | ||
| 1096 | |||
| 1097 | /* | ||
| 1098 | * R32 (0x20) - Tone Generator 1 | ||
| 1099 | */ | ||
| 1100 | #define ARIZONA_TONE_RATE_MASK 0x7800 /* TONE_RATE - [14:11] */ | ||
| 1101 | #define ARIZONA_TONE_RATE_SHIFT 11 /* TONE_RATE - [14:11] */ | ||
| 1102 | #define ARIZONA_TONE_RATE_WIDTH 4 /* TONE_RATE - [14:11] */ | ||
| 1103 | #define ARIZONA_TONE_OFFSET_MASK 0x0300 /* TONE_OFFSET - [9:8] */ | ||
| 1104 | #define ARIZONA_TONE_OFFSET_SHIFT 8 /* TONE_OFFSET - [9:8] */ | ||
| 1105 | #define ARIZONA_TONE_OFFSET_WIDTH 2 /* TONE_OFFSET - [9:8] */ | ||
| 1106 | #define ARIZONA_TONE2_OVD 0x0020 /* TONE2_OVD */ | ||
| 1107 | #define ARIZONA_TONE2_OVD_MASK 0x0020 /* TONE2_OVD */ | ||
| 1108 | #define ARIZONA_TONE2_OVD_SHIFT 5 /* TONE2_OVD */ | ||
| 1109 | #define ARIZONA_TONE2_OVD_WIDTH 1 /* TONE2_OVD */ | ||
| 1110 | #define ARIZONA_TONE1_OVD 0x0010 /* TONE1_OVD */ | ||
| 1111 | #define ARIZONA_TONE1_OVD_MASK 0x0010 /* TONE1_OVD */ | ||
| 1112 | #define ARIZONA_TONE1_OVD_SHIFT 4 /* TONE1_OVD */ | ||
| 1113 | #define ARIZONA_TONE1_OVD_WIDTH 1 /* TONE1_OVD */ | ||
| 1114 | #define ARIZONA_TONE2_ENA 0x0002 /* TONE2_ENA */ | ||
| 1115 | #define ARIZONA_TONE2_ENA_MASK 0x0002 /* TONE2_ENA */ | ||
| 1116 | #define ARIZONA_TONE2_ENA_SHIFT 1 /* TONE2_ENA */ | ||
| 1117 | #define ARIZONA_TONE2_ENA_WIDTH 1 /* TONE2_ENA */ | ||
| 1118 | #define ARIZONA_TONE1_ENA 0x0001 /* TONE1_ENA */ | ||
| 1119 | #define ARIZONA_TONE1_ENA_MASK 0x0001 /* TONE1_ENA */ | ||
| 1120 | #define ARIZONA_TONE1_ENA_SHIFT 0 /* TONE1_ENA */ | ||
| 1121 | #define ARIZONA_TONE1_ENA_WIDTH 1 /* TONE1_ENA */ | ||
| 1122 | |||
| 1123 | /* | ||
| 1124 | * R33 (0x21) - Tone Generator 2 | ||
| 1125 | */ | ||
| 1126 | #define ARIZONA_TONE1_LVL_0_MASK 0xFFFF /* TONE1_LVL - [15:0] */ | ||
| 1127 | #define ARIZONA_TONE1_LVL_0_SHIFT 0 /* TONE1_LVL - [15:0] */ | ||
| 1128 | #define ARIZONA_TONE1_LVL_0_WIDTH 16 /* TONE1_LVL - [15:0] */ | ||
| 1129 | |||
| 1130 | /* | ||
| 1131 | * R34 (0x22) - Tone Generator 3 | ||
| 1132 | */ | ||
| 1133 | #define ARIZONA_TONE1_LVL_MASK 0x00FF /* TONE1_LVL - [7:0] */ | ||
| 1134 | #define ARIZONA_TONE1_LVL_SHIFT 0 /* TONE1_LVL - [7:0] */ | ||
| 1135 | #define ARIZONA_TONE1_LVL_WIDTH 8 /* TONE1_LVL - [7:0] */ | ||
| 1136 | |||
| 1137 | /* | ||
| 1138 | * R35 (0x23) - Tone Generator 4 | ||
| 1139 | */ | ||
| 1140 | #define ARIZONA_TONE2_LVL_0_MASK 0xFFFF /* TONE2_LVL - [15:0] */ | ||
| 1141 | #define ARIZONA_TONE2_LVL_0_SHIFT 0 /* TONE2_LVL - [15:0] */ | ||
| 1142 | #define ARIZONA_TONE2_LVL_0_WIDTH 16 /* TONE2_LVL - [15:0] */ | ||
| 1143 | |||
| 1144 | /* | ||
| 1145 | * R36 (0x24) - Tone Generator 5 | ||
| 1146 | */ | ||
| 1147 | #define ARIZONA_TONE2_LVL_MASK 0x00FF /* TONE2_LVL - [7:0] */ | ||
| 1148 | #define ARIZONA_TONE2_LVL_SHIFT 0 /* TONE2_LVL - [7:0] */ | ||
| 1149 | #define ARIZONA_TONE2_LVL_WIDTH 8 /* TONE2_LVL - [7:0] */ | ||
| 1150 | |||
| 1151 | /* | ||
| 1152 | * R48 (0x30) - PWM Drive 1 | ||
| 1153 | */ | ||
| 1154 | #define ARIZONA_PWM_RATE_MASK 0x7800 /* PWM_RATE - [14:11] */ | ||
| 1155 | #define ARIZONA_PWM_RATE_SHIFT 11 /* PWM_RATE - [14:11] */ | ||
| 1156 | #define ARIZONA_PWM_RATE_WIDTH 4 /* PWM_RATE - [14:11] */ | ||
| 1157 | #define ARIZONA_PWM_CLK_SEL_MASK 0x0700 /* PWM_CLK_SEL - [10:8] */ | ||
| 1158 | #define ARIZONA_PWM_CLK_SEL_SHIFT 8 /* PWM_CLK_SEL - [10:8] */ | ||
| 1159 | #define ARIZONA_PWM_CLK_SEL_WIDTH 3 /* PWM_CLK_SEL - [10:8] */ | ||
| 1160 | #define ARIZONA_PWM2_OVD 0x0020 /* PWM2_OVD */ | ||
| 1161 | #define ARIZONA_PWM2_OVD_MASK 0x0020 /* PWM2_OVD */ | ||
| 1162 | #define ARIZONA_PWM2_OVD_SHIFT 5 /* PWM2_OVD */ | ||
| 1163 | #define ARIZONA_PWM2_OVD_WIDTH 1 /* PWM2_OVD */ | ||
| 1164 | #define ARIZONA_PWM1_OVD 0x0010 /* PWM1_OVD */ | ||
| 1165 | #define ARIZONA_PWM1_OVD_MASK 0x0010 /* PWM1_OVD */ | ||
| 1166 | #define ARIZONA_PWM1_OVD_SHIFT 4 /* PWM1_OVD */ | ||
| 1167 | #define ARIZONA_PWM1_OVD_WIDTH 1 /* PWM1_OVD */ | ||
| 1168 | #define ARIZONA_PWM2_ENA 0x0002 /* PWM2_ENA */ | ||
| 1169 | #define ARIZONA_PWM2_ENA_MASK 0x0002 /* PWM2_ENA */ | ||
| 1170 | #define ARIZONA_PWM2_ENA_SHIFT 1 /* PWM2_ENA */ | ||
| 1171 | #define ARIZONA_PWM2_ENA_WIDTH 1 /* PWM2_ENA */ | ||
| 1172 | #define ARIZONA_PWM1_ENA 0x0001 /* PWM1_ENA */ | ||
| 1173 | #define ARIZONA_PWM1_ENA_MASK 0x0001 /* PWM1_ENA */ | ||
| 1174 | #define ARIZONA_PWM1_ENA_SHIFT 0 /* PWM1_ENA */ | ||
| 1175 | #define ARIZONA_PWM1_ENA_WIDTH 1 /* PWM1_ENA */ | ||
| 1176 | |||
| 1177 | /* | ||
| 1178 | * R49 (0x31) - PWM Drive 2 | ||
| 1179 | */ | ||
| 1180 | #define ARIZONA_PWM1_LVL_MASK 0x03FF /* PWM1_LVL - [9:0] */ | ||
| 1181 | #define ARIZONA_PWM1_LVL_SHIFT 0 /* PWM1_LVL - [9:0] */ | ||
| 1182 | #define ARIZONA_PWM1_LVL_WIDTH 10 /* PWM1_LVL - [9:0] */ | ||
| 1183 | |||
| 1184 | /* | ||
| 1185 | * R50 (0x32) - PWM Drive 3 | ||
| 1186 | */ | ||
| 1187 | #define ARIZONA_PWM2_LVL_MASK 0x03FF /* PWM2_LVL - [9:0] */ | ||
| 1188 | #define ARIZONA_PWM2_LVL_SHIFT 0 /* PWM2_LVL - [9:0] */ | ||
| 1189 | #define ARIZONA_PWM2_LVL_WIDTH 10 /* PWM2_LVL - [9:0] */ | ||
| 1190 | |||
| 1191 | /* | ||
| 1192 | * R64 (0x40) - Wake control | ||
| 1193 | */ | ||
| 1194 | #define ARIZONA_WKUP_GP5_FALL 0x0020 /* WKUP_GP5_FALL */ | ||
| 1195 | #define ARIZONA_WKUP_GP5_FALL_MASK 0x0020 /* WKUP_GP5_FALL */ | ||
| 1196 | #define ARIZONA_WKUP_GP5_FALL_SHIFT 5 /* WKUP_GP5_FALL */ | ||
| 1197 | #define ARIZONA_WKUP_GP5_FALL_WIDTH 1 /* WKUP_GP5_FALL */ | ||
| 1198 | #define ARIZONA_WKUP_GP5_RISE 0x0010 /* WKUP_GP5_RISE */ | ||
| 1199 | #define ARIZONA_WKUP_GP5_RISE_MASK 0x0010 /* WKUP_GP5_RISE */ | ||
| 1200 | #define ARIZONA_WKUP_GP5_RISE_SHIFT 4 /* WKUP_GP5_RISE */ | ||
| 1201 | #define ARIZONA_WKUP_GP5_RISE_WIDTH 1 /* WKUP_GP5_RISE */ | ||
| 1202 | #define ARIZONA_WKUP_JD1_FALL 0x0008 /* WKUP_JD1_FALL */ | ||
| 1203 | #define ARIZONA_WKUP_JD1_FALL_MASK 0x0008 /* WKUP_JD1_FALL */ | ||
| 1204 | #define ARIZONA_WKUP_JD1_FALL_SHIFT 3 /* WKUP_JD1_FALL */ | ||
| 1205 | #define ARIZONA_WKUP_JD1_FALL_WIDTH 1 /* WKUP_JD1_FALL */ | ||
| 1206 | #define ARIZONA_WKUP_JD1_RISE 0x0004 /* WKUP_JD1_RISE */ | ||
| 1207 | #define ARIZONA_WKUP_JD1_RISE_MASK 0x0004 /* WKUP_JD1_RISE */ | ||
| 1208 | #define ARIZONA_WKUP_JD1_RISE_SHIFT 2 /* WKUP_JD1_RISE */ | ||
| 1209 | #define ARIZONA_WKUP_JD1_RISE_WIDTH 1 /* WKUP_JD1_RISE */ | ||
| 1210 | #define ARIZONA_WKUP_JD2_FALL 0x0002 /* WKUP_JD2_FALL */ | ||
| 1211 | #define ARIZONA_WKUP_JD2_FALL_MASK 0x0002 /* WKUP_JD2_FALL */ | ||
| 1212 | #define ARIZONA_WKUP_JD2_FALL_SHIFT 1 /* WKUP_JD2_FALL */ | ||
| 1213 | #define ARIZONA_WKUP_JD2_FALL_WIDTH 1 /* WKUP_JD2_FALL */ | ||
| 1214 | #define ARIZONA_WKUP_JD2_RISE 0x0001 /* WKUP_JD2_RISE */ | ||
| 1215 | #define ARIZONA_WKUP_JD2_RISE_MASK 0x0001 /* WKUP_JD2_RISE */ | ||
| 1216 | #define ARIZONA_WKUP_JD2_RISE_SHIFT 0 /* WKUP_JD2_RISE */ | ||
| 1217 | #define ARIZONA_WKUP_JD2_RISE_WIDTH 1 /* WKUP_JD2_RISE */ | ||
| 1218 | |||
| 1219 | /* | ||
| 1220 | * R65 (0x41) - Sequence control | ||
| 1221 | */ | ||
| 1222 | #define ARIZONA_WSEQ_ENA_GP5_FALL 0x0020 /* WSEQ_ENA_GP5_FALL */ | ||
| 1223 | #define ARIZONA_WSEQ_ENA_GP5_FALL_MASK 0x0020 /* WSEQ_ENA_GP5_FALL */ | ||
| 1224 | #define ARIZONA_WSEQ_ENA_GP5_FALL_SHIFT 5 /* WSEQ_ENA_GP5_FALL */ | ||
| 1225 | #define ARIZONA_WSEQ_ENA_GP5_FALL_WIDTH 1 /* WSEQ_ENA_GP5_FALL */ | ||
| 1226 | #define ARIZONA_WSEQ_ENA_GP5_RISE 0x0010 /* WSEQ_ENA_GP5_RISE */ | ||
| 1227 | #define ARIZONA_WSEQ_ENA_GP5_RISE_MASK 0x0010 /* WSEQ_ENA_GP5_RISE */ | ||
| 1228 | #define ARIZONA_WSEQ_ENA_GP5_RISE_SHIFT 4 /* WSEQ_ENA_GP5_RISE */ | ||
| 1229 | #define ARIZONA_WSEQ_ENA_GP5_RISE_WIDTH 1 /* WSEQ_ENA_GP5_RISE */ | ||
| 1230 | #define ARIZONA_WSEQ_ENA_JD1_FALL 0x0008 /* WSEQ_ENA_JD1_FALL */ | ||
| 1231 | #define ARIZONA_WSEQ_ENA_JD1_FALL_MASK 0x0008 /* WSEQ_ENA_JD1_FALL */ | ||
| 1232 | #define ARIZONA_WSEQ_ENA_JD1_FALL_SHIFT 3 /* WSEQ_ENA_JD1_FALL */ | ||
| 1233 | #define ARIZONA_WSEQ_ENA_JD1_FALL_WIDTH 1 /* WSEQ_ENA_JD1_FALL */ | ||
| 1234 | #define ARIZONA_WSEQ_ENA_JD1_RISE 0x0004 /* WSEQ_ENA_JD1_RISE */ | ||
| 1235 | #define ARIZONA_WSEQ_ENA_JD1_RISE_MASK 0x0004 /* WSEQ_ENA_JD1_RISE */ | ||
| 1236 | #define ARIZONA_WSEQ_ENA_JD1_RISE_SHIFT 2 /* WSEQ_ENA_JD1_RISE */ | ||
| 1237 | #define ARIZONA_WSEQ_ENA_JD1_RISE_WIDTH 1 /* WSEQ_ENA_JD1_RISE */ | ||
| 1238 | #define ARIZONA_WSEQ_ENA_JD2_FALL 0x0002 /* WSEQ_ENA_JD2_FALL */ | ||
| 1239 | #define ARIZONA_WSEQ_ENA_JD2_FALL_MASK 0x0002 /* WSEQ_ENA_JD2_FALL */ | ||
| 1240 | #define ARIZONA_WSEQ_ENA_JD2_FALL_SHIFT 1 /* WSEQ_ENA_JD2_FALL */ | ||
| 1241 | #define ARIZONA_WSEQ_ENA_JD2_FALL_WIDTH 1 /* WSEQ_ENA_JD2_FALL */ | ||
| 1242 | #define ARIZONA_WSEQ_ENA_JD2_RISE 0x0001 /* WSEQ_ENA_JD2_RISE */ | ||
| 1243 | #define ARIZONA_WSEQ_ENA_JD2_RISE_MASK 0x0001 /* WSEQ_ENA_JD2_RISE */ | ||
| 1244 | #define ARIZONA_WSEQ_ENA_JD2_RISE_SHIFT 0 /* WSEQ_ENA_JD2_RISE */ | ||
| 1245 | #define ARIZONA_WSEQ_ENA_JD2_RISE_WIDTH 1 /* WSEQ_ENA_JD2_RISE */ | ||
| 1246 | |||
| 1247 | /* | ||
| 1248 | * R97 (0x61) - Sample Rate Sequence Select 1 | ||
| 1249 | */ | ||
| 1250 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */ | ||
| 1251 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_SHIFT 0 /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */ | ||
| 1252 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_WIDTH 9 /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */ | ||
| 1253 | |||
| 1254 | /* | ||
| 1255 | * R98 (0x62) - Sample Rate Sequence Select 2 | ||
| 1256 | */ | ||
| 1257 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR - [8:0] */ | ||
| 1258 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR_SHIFT 0 /* WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR - [8:0] */ | ||
| 1259 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR_WIDTH 9 /* WSEQ_SAMPLE_RATE_DETECT_B_SEQ_ADDR - [8:0] */ | ||
| 1260 | |||
| 1261 | /* | ||
| 1262 | * R99 (0x63) - Sample Rate Sequence Select 3 | ||
| 1263 | */ | ||
| 1264 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR - [8:0] */ | ||
| 1265 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR_SHIFT 0 /* WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR - [8:0] */ | ||
| 1266 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR_WIDTH 9 /* WSEQ_SAMPLE_RATE_DETECT_C_SEQ_ADDR - [8:0] */ | ||
| 1267 | |||
| 1268 | /* | ||
| 1269 | * R100 (0x64) - Sample Rate Sequence Select 4 | ||
| 1270 | */ | ||
| 1271 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR - [8:0] */ | ||
| 1272 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR_SHIFT 0 /* WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR - [8:0] */ | ||
| 1273 | #define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR_WIDTH 9 /* WSEQ_SAMPLE_RATE_DETECT_D_SEQ_ADDR - [8:0] */ | ||
| 1274 | |||
| 1275 | /* | ||
| 1276 | * R104 (0x68) - Always On Triggers Sequence Select 1 | ||
| 1277 | */ | ||
| 1278 | #define ARIZONA_WSEQ_GP5_RISE_SEQ_ADDR_MASK 0x01FF /* WSEQ_GP5_RISE_SEQ_ADDR - [8:0] */ | ||
| 1279 | #define ARIZONA_WSEQ_GP5_RISE_SEQ_ADDR_SHIFT 0 /* WSEQ_GP5_RISE_SEQ_ADDR - [8:0] */ | ||
| 1280 | #define ARIZONA_WSEQ_GP5_RISE_SEQ_ADDR_WIDTH 9 /* WSEQ_GP5_RISE_SEQ_ADDR - [8:0] */ | ||
| 1281 | |||
| 1282 | /* | ||
| 1283 | * R105 (0x69) - Always On Triggers Sequence Select 2 | ||
| 1284 | */ | ||
| 1285 | #define ARIZONA_WSEQ_GP5_FALL_SEQ_ADDR_MASK 0x01FF /* WSEQ_GP5_FALL_SEQ_ADDR - [8:0] */ | ||
| 1286 | #define ARIZONA_WSEQ_GP5_FALL_SEQ_ADDR_SHIFT 0 /* WSEQ_GP5_FALL_SEQ_ADDR - [8:0] */ | ||
| 1287 | #define ARIZONA_WSEQ_GP5_FALL_SEQ_ADDR_WIDTH 9 /* WSEQ_GP5_FALL_SEQ_ADDR - [8:0] */ | ||
| 1288 | |||
| 1289 | /* | ||
| 1290 | * R106 (0x6A) - Always On Triggers Sequence Select 3 | ||
| 1291 | */ | ||
| 1292 | #define ARIZONA_WSEQ_JD1_RISE_SEQ_ADDR_MASK 0x01FF /* WSEQ_JD1_RISE_SEQ_ADDR - [8:0] */ | ||
| 1293 | #define ARIZONA_WSEQ_JD1_RISE_SEQ_ADDR_SHIFT 0 /* WSEQ_JD1_RISE_SEQ_ADDR - [8:0] */ | ||
| 1294 | #define ARIZONA_WSEQ_JD1_RISE_SEQ_ADDR_WIDTH 9 /* WSEQ_JD1_RISE_SEQ_ADDR - [8:0] */ | ||
| 1295 | |||
| 1296 | /* | ||
| 1297 | * R107 (0x6B) - Always On Triggers Sequence Select 4 | ||
| 1298 | */ | ||
| 1299 | #define ARIZONA_WSEQ_JD1_FALL_SEQ_ADDR_MASK 0x01FF /* WSEQ_JD1_FALL_SEQ_ADDR - [8:0] */ | ||
| 1300 | #define ARIZONA_WSEQ_JD1_FALL_SEQ_ADDR_SHIFT 0 /* WSEQ_JD1_FALL_SEQ_ADDR - [8:0] */ | ||
| 1301 | #define ARIZONA_WSEQ_JD1_FALL_SEQ_ADDR_WIDTH 9 /* WSEQ_JD1_FALL_SEQ_ADDR - [8:0] */ | ||
| 1302 | |||
| 1303 | /* | ||
| 1304 | * R108 (0x6C) - Always On Triggers Sequence Select 5 | ||
| 1305 | */ | ||
| 1306 | #define ARIZONA_WSEQ_JD2_RISE_SEQ_ADDR_MASK 0x01FF /* WSEQ_JD2_RISE_SEQ_ADDR - [8:0] */ | ||
| 1307 | #define ARIZONA_WSEQ_JD2_RISE_SEQ_ADDR_SHIFT 0 /* WSEQ_JD2_RISE_SEQ_ADDR - [8:0] */ | ||
| 1308 | #define ARIZONA_WSEQ_JD2_RISE_SEQ_ADDR_WIDTH 9 /* WSEQ_JD2_RISE_SEQ_ADDR - [8:0] */ | ||
| 1309 | |||
| 1310 | /* | ||
| 1311 | * R109 (0x6D) - Always On Triggers Sequence Select 6 | ||
| 1312 | */ | ||
| 1313 | #define ARIZONA_WSEQ_JD2_FALL_SEQ_ADDR_MASK 0x01FF /* WSEQ_JD2_FALL_SEQ_ADDR - [8:0] */ | ||
| 1314 | #define ARIZONA_WSEQ_JD2_FALL_SEQ_ADDR_SHIFT 0 /* WSEQ_JD2_FALL_SEQ_ADDR - [8:0] */ | ||
| 1315 | #define ARIZONA_WSEQ_JD2_FALL_SEQ_ADDR_WIDTH 9 /* WSEQ_JD2_FALL_SEQ_ADDR - [8:0] */ | ||
| 1316 | |||
| 1317 | /* | ||
| 1318 | * R112 (0x70) - Comfort Noise Generator | ||
| 1319 | */ | ||
| 1320 | #define ARIZONA_NOISE_GEN_RATE_MASK 0x7800 /* NOISE_GEN_RATE - [14:11] */ | ||
| 1321 | #define ARIZONA_NOISE_GEN_RATE_SHIFT 11 /* NOISE_GEN_RATE - [14:11] */ | ||
| 1322 | #define ARIZONA_NOISE_GEN_RATE_WIDTH 4 /* NOISE_GEN_RATE - [14:11] */ | ||
| 1323 | #define ARIZONA_NOISE_GEN_ENA 0x0020 /* NOISE_GEN_ENA */ | ||
| 1324 | #define ARIZONA_NOISE_GEN_ENA_MASK 0x0020 /* NOISE_GEN_ENA */ | ||
| 1325 | #define ARIZONA_NOISE_GEN_ENA_SHIFT 5 /* NOISE_GEN_ENA */ | ||
| 1326 | #define ARIZONA_NOISE_GEN_ENA_WIDTH 1 /* NOISE_GEN_ENA */ | ||
| 1327 | #define ARIZONA_NOISE_GEN_GAIN_MASK 0x001F /* NOISE_GEN_GAIN - [4:0] */ | ||
| 1328 | #define ARIZONA_NOISE_GEN_GAIN_SHIFT 0 /* NOISE_GEN_GAIN - [4:0] */ | ||
| 1329 | #define ARIZONA_NOISE_GEN_GAIN_WIDTH 5 /* NOISE_GEN_GAIN - [4:0] */ | ||
| 1330 | |||
| 1331 | /* | ||
| 1332 | * R144 (0x90) - Haptics Control 1 | ||
| 1333 | */ | ||
| 1334 | #define ARIZONA_HAP_RATE_MASK 0x7800 /* HAP_RATE - [14:11] */ | ||
| 1335 | #define ARIZONA_HAP_RATE_SHIFT 11 /* HAP_RATE - [14:11] */ | ||
| 1336 | #define ARIZONA_HAP_RATE_WIDTH 4 /* HAP_RATE - [14:11] */ | ||
| 1337 | #define ARIZONA_ONESHOT_TRIG 0x0010 /* ONESHOT_TRIG */ | ||
| 1338 | #define ARIZONA_ONESHOT_TRIG_MASK 0x0010 /* ONESHOT_TRIG */ | ||
| 1339 | #define ARIZONA_ONESHOT_TRIG_SHIFT 4 /* ONESHOT_TRIG */ | ||
| 1340 | #define ARIZONA_ONESHOT_TRIG_WIDTH 1 /* ONESHOT_TRIG */ | ||
| 1341 | #define ARIZONA_HAP_CTRL_MASK 0x000C /* HAP_CTRL - [3:2] */ | ||
| 1342 | #define ARIZONA_HAP_CTRL_SHIFT 2 /* HAP_CTRL - [3:2] */ | ||
| 1343 | #define ARIZONA_HAP_CTRL_WIDTH 2 /* HAP_CTRL - [3:2] */ | ||
| 1344 | #define ARIZONA_HAP_ACT 0x0002 /* HAP_ACT */ | ||
| 1345 | #define ARIZONA_HAP_ACT_MASK 0x0002 /* HAP_ACT */ | ||
| 1346 | #define ARIZONA_HAP_ACT_SHIFT 1 /* HAP_ACT */ | ||
| 1347 | #define ARIZONA_HAP_ACT_WIDTH 1 /* HAP_ACT */ | ||
| 1348 | |||
| 1349 | /* | ||
| 1350 | * R145 (0x91) - Haptics Control 2 | ||
| 1351 | */ | ||
| 1352 | #define ARIZONA_LRA_FREQ_MASK 0x7FFF /* LRA_FREQ - [14:0] */ | ||
| 1353 | #define ARIZONA_LRA_FREQ_SHIFT 0 /* LRA_FREQ - [14:0] */ | ||
| 1354 | #define ARIZONA_LRA_FREQ_WIDTH 15 /* LRA_FREQ - [14:0] */ | ||
| 1355 | |||
| 1356 | /* | ||
| 1357 | * R146 (0x92) - Haptics phase 1 intensity | ||
| 1358 | */ | ||
| 1359 | #define ARIZONA_PHASE1_INTENSITY_MASK 0x00FF /* PHASE1_INTENSITY - [7:0] */ | ||
| 1360 | #define ARIZONA_PHASE1_INTENSITY_SHIFT 0 /* PHASE1_INTENSITY - [7:0] */ | ||
| 1361 | #define ARIZONA_PHASE1_INTENSITY_WIDTH 8 /* PHASE1_INTENSITY - [7:0] */ | ||
| 1362 | |||
| 1363 | /* | ||
| 1364 | * R147 (0x93) - Haptics phase 1 duration | ||
| 1365 | */ | ||
| 1366 | #define ARIZONA_PHASE1_DURATION_MASK 0x01FF /* PHASE1_DURATION - [8:0] */ | ||
| 1367 | #define ARIZONA_PHASE1_DURATION_SHIFT 0 /* PHASE1_DURATION - [8:0] */ | ||
| 1368 | #define ARIZONA_PHASE1_DURATION_WIDTH 9 /* PHASE1_DURATION - [8:0] */ | ||
| 1369 | |||
| 1370 | /* | ||
| 1371 | * R148 (0x94) - Haptics phase 2 intensity | ||
| 1372 | */ | ||
| 1373 | #define ARIZONA_PHASE2_INTENSITY_MASK 0x00FF /* PHASE2_INTENSITY - [7:0] */ | ||
| 1374 | #define ARIZONA_PHASE2_INTENSITY_SHIFT 0 /* PHASE2_INTENSITY - [7:0] */ | ||
| 1375 | #define ARIZONA_PHASE2_INTENSITY_WIDTH 8 /* PHASE2_INTENSITY - [7:0] */ | ||
| 1376 | |||
| 1377 | /* | ||
| 1378 | * R149 (0x95) - Haptics phase 2 duration | ||
| 1379 | */ | ||
| 1380 | #define ARIZONA_PHASE2_DURATION_MASK 0x07FF /* PHASE2_DURATION - [10:0] */ | ||
| 1381 | #define ARIZONA_PHASE2_DURATION_SHIFT 0 /* PHASE2_DURATION - [10:0] */ | ||
| 1382 | #define ARIZONA_PHASE2_DURATION_WIDTH 11 /* PHASE2_DURATION - [10:0] */ | ||
| 1383 | |||
| 1384 | /* | ||
| 1385 | * R150 (0x96) - Haptics phase 3 intensity | ||
| 1386 | */ | ||
| 1387 | #define ARIZONA_PHASE3_INTENSITY_MASK 0x00FF /* PHASE3_INTENSITY - [7:0] */ | ||
| 1388 | #define ARIZONA_PHASE3_INTENSITY_SHIFT 0 /* PHASE3_INTENSITY - [7:0] */ | ||
| 1389 | #define ARIZONA_PHASE3_INTENSITY_WIDTH 8 /* PHASE3_INTENSITY - [7:0] */ | ||
| 1390 | |||
| 1391 | /* | ||
| 1392 | * R151 (0x97) - Haptics phase 3 duration | ||
| 1393 | */ | ||
| 1394 | #define ARIZONA_PHASE3_DURATION_MASK 0x01FF /* PHASE3_DURATION - [8:0] */ | ||
| 1395 | #define ARIZONA_PHASE3_DURATION_SHIFT 0 /* PHASE3_DURATION - [8:0] */ | ||
| 1396 | #define ARIZONA_PHASE3_DURATION_WIDTH 9 /* PHASE3_DURATION - [8:0] */ | ||
| 1397 | |||
| 1398 | /* | ||
| 1399 | * R152 (0x98) - Haptics Status | ||
| 1400 | */ | ||
| 1401 | #define ARIZONA_ONESHOT_STS 0x0001 /* ONESHOT_STS */ | ||
| 1402 | #define ARIZONA_ONESHOT_STS_MASK 0x0001 /* ONESHOT_STS */ | ||
| 1403 | #define ARIZONA_ONESHOT_STS_SHIFT 0 /* ONESHOT_STS */ | ||
| 1404 | #define ARIZONA_ONESHOT_STS_WIDTH 1 /* ONESHOT_STS */ | ||
| 1405 | |||
| 1406 | /* | ||
| 1407 | * R256 (0x100) - Clock 32k 1 | ||
| 1408 | */ | ||
| 1409 | #define ARIZONA_CLK_32K_ENA 0x0040 /* CLK_32K_ENA */ | ||
| 1410 | #define ARIZONA_CLK_32K_ENA_MASK 0x0040 /* CLK_32K_ENA */ | ||
| 1411 | #define ARIZONA_CLK_32K_ENA_SHIFT 6 /* CLK_32K_ENA */ | ||
| 1412 | #define ARIZONA_CLK_32K_ENA_WIDTH 1 /* CLK_32K_ENA */ | ||
| 1413 | #define ARIZONA_CLK_32K_SRC_MASK 0x0003 /* CLK_32K_SRC - [1:0] */ | ||
| 1414 | #define ARIZONA_CLK_32K_SRC_SHIFT 0 /* CLK_32K_SRC - [1:0] */ | ||
| 1415 | #define ARIZONA_CLK_32K_SRC_WIDTH 2 /* CLK_32K_SRC - [1:0] */ | ||
| 1416 | |||
| 1417 | /* | ||
| 1418 | * R257 (0x101) - System Clock 1 | ||
| 1419 | */ | ||
| 1420 | #define ARIZONA_SYSCLK_FRAC 0x8000 /* SYSCLK_FRAC */ | ||
| 1421 | #define ARIZONA_SYSCLK_FRAC_MASK 0x8000 /* SYSCLK_FRAC */ | ||
| 1422 | #define ARIZONA_SYSCLK_FRAC_SHIFT 15 /* SYSCLK_FRAC */ | ||
| 1423 | #define ARIZONA_SYSCLK_FRAC_WIDTH 1 /* SYSCLK_FRAC */ | ||
| 1424 | #define ARIZONA_SYSCLK_FREQ_MASK 0x0700 /* SYSCLK_FREQ - [10:8] */ | ||
| 1425 | #define ARIZONA_SYSCLK_FREQ_SHIFT 8 /* SYSCLK_FREQ - [10:8] */ | ||
| 1426 | #define ARIZONA_SYSCLK_FREQ_WIDTH 3 /* SYSCLK_FREQ - [10:8] */ | ||
| 1427 | #define ARIZONA_SYSCLK_ENA 0x0040 /* SYSCLK_ENA */ | ||
| 1428 | #define ARIZONA_SYSCLK_ENA_MASK 0x0040 /* SYSCLK_ENA */ | ||
| 1429 | #define ARIZONA_SYSCLK_ENA_SHIFT 6 /* SYSCLK_ENA */ | ||
| 1430 | #define ARIZONA_SYSCLK_ENA_WIDTH 1 /* SYSCLK_ENA */ | ||
| 1431 | #define ARIZONA_SYSCLK_SRC_MASK 0x000F /* SYSCLK_SRC - [3:0] */ | ||
| 1432 | #define ARIZONA_SYSCLK_SRC_SHIFT 0 /* SYSCLK_SRC - [3:0] */ | ||
| 1433 | #define ARIZONA_SYSCLK_SRC_WIDTH 4 /* SYSCLK_SRC - [3:0] */ | ||
| 1434 | |||
| 1435 | /* | ||
| 1436 | * R258 (0x102) - Sample rate 1 | ||
| 1437 | */ | ||
| 1438 | #define ARIZONA_SAMPLE_RATE_1_MASK 0x001F /* SAMPLE_RATE_1 - [4:0] */ | ||
| 1439 | #define ARIZONA_SAMPLE_RATE_1_SHIFT 0 /* SAMPLE_RATE_1 - [4:0] */ | ||
| 1440 | #define ARIZONA_SAMPLE_RATE_1_WIDTH 5 /* SAMPLE_RATE_1 - [4:0] */ | ||
| 1441 | |||
| 1442 | /* | ||
| 1443 | * R259 (0x103) - Sample rate 2 | ||
| 1444 | */ | ||
| 1445 | #define ARIZONA_SAMPLE_RATE_2_MASK 0x001F /* SAMPLE_RATE_2 - [4:0] */ | ||
| 1446 | #define ARIZONA_SAMPLE_RATE_2_SHIFT 0 /* SAMPLE_RATE_2 - [4:0] */ | ||
| 1447 | #define ARIZONA_SAMPLE_RATE_2_WIDTH 5 /* SAMPLE_RATE_2 - [4:0] */ | ||
| 1448 | |||
| 1449 | /* | ||
| 1450 | * R260 (0x104) - Sample rate 3 | ||
| 1451 | */ | ||
| 1452 | #define ARIZONA_SAMPLE_RATE_3_MASK 0x001F /* SAMPLE_RATE_3 - [4:0] */ | ||
| 1453 | #define ARIZONA_SAMPLE_RATE_3_SHIFT 0 /* SAMPLE_RATE_3 - [4:0] */ | ||
| 1454 | #define ARIZONA_SAMPLE_RATE_3_WIDTH 5 /* SAMPLE_RATE_3 - [4:0] */ | ||
| 1455 | |||
| 1456 | /* | ||
| 1457 | * R266 (0x10A) - Sample rate 1 status | ||
| 1458 | */ | ||
| 1459 | #define ARIZONA_SAMPLE_RATE_1_STS_MASK 0x001F /* SAMPLE_RATE_1_STS - [4:0] */ | ||
| 1460 | #define ARIZONA_SAMPLE_RATE_1_STS_SHIFT 0 /* SAMPLE_RATE_1_STS - [4:0] */ | ||
| 1461 | #define ARIZONA_SAMPLE_RATE_1_STS_WIDTH 5 /* SAMPLE_RATE_1_STS - [4:0] */ | ||
| 1462 | |||
| 1463 | /* | ||
| 1464 | * R267 (0x10B) - Sample rate 2 status | ||
| 1465 | */ | ||
| 1466 | #define ARIZONA_SAMPLE_RATE_2_STS_MASK 0x001F /* SAMPLE_RATE_2_STS - [4:0] */ | ||
| 1467 | #define ARIZONA_SAMPLE_RATE_2_STS_SHIFT 0 /* SAMPLE_RATE_2_STS - [4:0] */ | ||
| 1468 | #define ARIZONA_SAMPLE_RATE_2_STS_WIDTH 5 /* SAMPLE_RATE_2_STS - [4:0] */ | ||
| 1469 | |||
| 1470 | /* | ||
| 1471 | * R268 (0x10C) - Sample rate 3 status | ||
| 1472 | */ | ||
| 1473 | #define ARIZONA_SAMPLE_RATE_3_STS_MASK 0x001F /* SAMPLE_RATE_3_STS - [4:0] */ | ||
| 1474 | #define ARIZONA_SAMPLE_RATE_3_STS_SHIFT 0 /* SAMPLE_RATE_3_STS - [4:0] */ | ||
| 1475 | #define ARIZONA_SAMPLE_RATE_3_STS_WIDTH 5 /* SAMPLE_RATE_3_STS - [4:0] */ | ||
| 1476 | |||
| 1477 | /* | ||
| 1478 | * R274 (0x112) - Async clock 1 | ||
| 1479 | */ | ||
| 1480 | #define ARIZONA_ASYNC_CLK_FREQ_MASK 0x0700 /* ASYNC_CLK_FREQ - [10:8] */ | ||
| 1481 | #define ARIZONA_ASYNC_CLK_FREQ_SHIFT 8 /* ASYNC_CLK_FREQ - [10:8] */ | ||
| 1482 | #define ARIZONA_ASYNC_CLK_FREQ_WIDTH 3 /* ASYNC_CLK_FREQ - [10:8] */ | ||
| 1483 | #define ARIZONA_ASYNC_CLK_ENA 0x0040 /* ASYNC_CLK_ENA */ | ||
| 1484 | #define ARIZONA_ASYNC_CLK_ENA_MASK 0x0040 /* ASYNC_CLK_ENA */ | ||
| 1485 | #define ARIZONA_ASYNC_CLK_ENA_SHIFT 6 /* ASYNC_CLK_ENA */ | ||
| 1486 | #define ARIZONA_ASYNC_CLK_ENA_WIDTH 1 /* ASYNC_CLK_ENA */ | ||
| 1487 | #define ARIZONA_ASYNC_CLK_SRC_MASK 0x000F /* ASYNC_CLK_SRC - [3:0] */ | ||
| 1488 | #define ARIZONA_ASYNC_CLK_SRC_SHIFT 0 /* ASYNC_CLK_SRC - [3:0] */ | ||
| 1489 | #define ARIZONA_ASYNC_CLK_SRC_WIDTH 4 /* ASYNC_CLK_SRC - [3:0] */ | ||
| 1490 | |||
| 1491 | /* | ||
| 1492 | * R275 (0x113) - Async sample rate 1 | ||
| 1493 | */ | ||
| 1494 | #define ARIZONA_ASYNC_SAMPLE_RATE_MASK 0x001F /* ASYNC_SAMPLE_RATE - [4:0] */ | ||
| 1495 | #define ARIZONA_ASYNC_SAMPLE_RATE_SHIFT 0 /* ASYNC_SAMPLE_RATE - [4:0] */ | ||
| 1496 | #define ARIZONA_ASYNC_SAMPLE_RATE_WIDTH 5 /* ASYNC_SAMPLE_RATE - [4:0] */ | ||
| 1497 | |||
| 1498 | /* | ||
| 1499 | * R283 (0x11B) - Async sample rate 1 status | ||
| 1500 | */ | ||
| 1501 | #define ARIZONA_ASYNC_SAMPLE_RATE_STS_MASK 0x001F /* ASYNC_SAMPLE_RATE_STS - [4:0] */ | ||
| 1502 | #define ARIZONA_ASYNC_SAMPLE_RATE_STS_SHIFT 0 /* ASYNC_SAMPLE_RATE_STS - [4:0] */ | ||
| 1503 | #define ARIZONA_ASYNC_SAMPLE_RATE_STS_WIDTH 5 /* ASYNC_SAMPLE_RATE_STS - [4:0] */ | ||
| 1504 | |||
| 1505 | /* | ||
| 1506 | * R329 (0x149) - Output system clock | ||
| 1507 | */ | ||
| 1508 | #define ARIZONA_OPCLK_ENA 0x8000 /* OPCLK_ENA */ | ||
| 1509 | #define ARIZONA_OPCLK_ENA_MASK 0x8000 /* OPCLK_ENA */ | ||
| 1510 | #define ARIZONA_OPCLK_ENA_SHIFT 15 /* OPCLK_ENA */ | ||
| 1511 | #define ARIZONA_OPCLK_ENA_WIDTH 1 /* OPCLK_ENA */ | ||
| 1512 | #define ARIZONA_OPCLK_DIV_MASK 0x00F8 /* OPCLK_DIV - [7:3] */ | ||
| 1513 | #define ARIZONA_OPCLK_DIV_SHIFT 3 /* OPCLK_DIV - [7:3] */ | ||
| 1514 | #define ARIZONA_OPCLK_DIV_WIDTH 5 /* OPCLK_DIV - [7:3] */ | ||
| 1515 | #define ARIZONA_OPCLK_SEL_MASK 0x0007 /* OPCLK_SEL - [2:0] */ | ||
| 1516 | #define ARIZONA_OPCLK_SEL_SHIFT 0 /* OPCLK_SEL - [2:0] */ | ||
| 1517 | #define ARIZONA_OPCLK_SEL_WIDTH 3 /* OPCLK_SEL - [2:0] */ | ||
| 1518 | |||
| 1519 | /* | ||
| 1520 | * R330 (0x14A) - Output async clock | ||
| 1521 | */ | ||
| 1522 | #define ARIZONA_OPCLK_ASYNC_ENA 0x8000 /* OPCLK_ASYNC_ENA */ | ||
| 1523 | #define ARIZONA_OPCLK_ASYNC_ENA_MASK 0x8000 /* OPCLK_ASYNC_ENA */ | ||
| 1524 | #define ARIZONA_OPCLK_ASYNC_ENA_SHIFT 15 /* OPCLK_ASYNC_ENA */ | ||
| 1525 | #define ARIZONA_OPCLK_ASYNC_ENA_WIDTH 1 /* OPCLK_ASYNC_ENA */ | ||
| 1526 | #define ARIZONA_OPCLK_ASYNC_DIV_MASK 0x00F8 /* OPCLK_ASYNC_DIV - [7:3] */ | ||
| 1527 | #define ARIZONA_OPCLK_ASYNC_DIV_SHIFT 3 /* OPCLK_ASYNC_DIV - [7:3] */ | ||
| 1528 | #define ARIZONA_OPCLK_ASYNC_DIV_WIDTH 5 /* OPCLK_ASYNC_DIV - [7:3] */ | ||
| 1529 | #define ARIZONA_OPCLK_ASYNC_SEL_MASK 0x0007 /* OPCLK_ASYNC_SEL - [2:0] */ | ||
| 1530 | #define ARIZONA_OPCLK_ASYNC_SEL_SHIFT 0 /* OPCLK_ASYNC_SEL - [2:0] */ | ||
| 1531 | #define ARIZONA_OPCLK_ASYNC_SEL_WIDTH 3 /* OPCLK_ASYNC_SEL - [2:0] */ | ||
| 1532 | |||
| 1533 | /* | ||
| 1534 | * R338 (0x152) - Rate Estimator 1 | ||
| 1535 | */ | ||
| 1536 | #define ARIZONA_TRIG_ON_STARTUP 0x0010 /* TRIG_ON_STARTUP */ | ||
| 1537 | #define ARIZONA_TRIG_ON_STARTUP_MASK 0x0010 /* TRIG_ON_STARTUP */ | ||
| 1538 | #define ARIZONA_TRIG_ON_STARTUP_SHIFT 4 /* TRIG_ON_STARTUP */ | ||
| 1539 | #define ARIZONA_TRIG_ON_STARTUP_WIDTH 1 /* TRIG_ON_STARTUP */ | ||
| 1540 | #define ARIZONA_LRCLK_SRC_MASK 0x000E /* LRCLK_SRC - [3:1] */ | ||
| 1541 | #define ARIZONA_LRCLK_SRC_SHIFT 1 /* LRCLK_SRC - [3:1] */ | ||
| 1542 | #define ARIZONA_LRCLK_SRC_WIDTH 3 /* LRCLK_SRC - [3:1] */ | ||
| 1543 | #define ARIZONA_RATE_EST_ENA 0x0001 /* RATE_EST_ENA */ | ||
| 1544 | #define ARIZONA_RATE_EST_ENA_MASK 0x0001 /* RATE_EST_ENA */ | ||
| 1545 | #define ARIZONA_RATE_EST_ENA_SHIFT 0 /* RATE_EST_ENA */ | ||
| 1546 | #define ARIZONA_RATE_EST_ENA_WIDTH 1 /* RATE_EST_ENA */ | ||
| 1547 | |||
| 1548 | /* | ||
| 1549 | * R339 (0x153) - Rate Estimator 2 | ||
| 1550 | */ | ||
| 1551 | #define ARIZONA_SAMPLE_RATE_DETECT_A_MASK 0x001F /* SAMPLE_RATE_DETECT_A - [4:0] */ | ||
| 1552 | #define ARIZONA_SAMPLE_RATE_DETECT_A_SHIFT 0 /* SAMPLE_RATE_DETECT_A - [4:0] */ | ||
| 1553 | #define ARIZONA_SAMPLE_RATE_DETECT_A_WIDTH 5 /* SAMPLE_RATE_DETECT_A - [4:0] */ | ||
| 1554 | |||
| 1555 | /* | ||
| 1556 | * R340 (0x154) - Rate Estimator 3 | ||
| 1557 | */ | ||
| 1558 | #define ARIZONA_SAMPLE_RATE_DETECT_B_MASK 0x001F /* SAMPLE_RATE_DETECT_B - [4:0] */ | ||
| 1559 | #define ARIZONA_SAMPLE_RATE_DETECT_B_SHIFT 0 /* SAMPLE_RATE_DETECT_B - [4:0] */ | ||
| 1560 | #define ARIZONA_SAMPLE_RATE_DETECT_B_WIDTH 5 /* SAMPLE_RATE_DETECT_B - [4:0] */ | ||
| 1561 | |||
| 1562 | /* | ||
| 1563 | * R341 (0x155) - Rate Estimator 4 | ||
| 1564 | */ | ||
| 1565 | #define ARIZONA_SAMPLE_RATE_DETECT_C_MASK 0x001F /* SAMPLE_RATE_DETECT_C - [4:0] */ | ||
| 1566 | #define ARIZONA_SAMPLE_RATE_DETECT_C_SHIFT 0 /* SAMPLE_RATE_DETECT_C - [4:0] */ | ||
| 1567 | #define ARIZONA_SAMPLE_RATE_DETECT_C_WIDTH 5 /* SAMPLE_RATE_DETECT_C - [4:0] */ | ||
| 1568 | |||
| 1569 | /* | ||
| 1570 | * R342 (0x156) - Rate Estimator 5 | ||
| 1571 | */ | ||
| 1572 | #define ARIZONA_SAMPLE_RATE_DETECT_D_MASK 0x001F /* SAMPLE_RATE_DETECT_D - [4:0] */ | ||
| 1573 | #define ARIZONA_SAMPLE_RATE_DETECT_D_SHIFT 0 /* SAMPLE_RATE_DETECT_D - [4:0] */ | ||
| 1574 | #define ARIZONA_SAMPLE_RATE_DETECT_D_WIDTH 5 /* SAMPLE_RATE_DETECT_D - [4:0] */ | ||
| 1575 | |||
| 1576 | /* | ||
| 1577 | * R369 (0x171) - FLL1 Control 1 | ||
| 1578 | */ | ||
| 1579 | #define ARIZONA_FLL1_FREERUN 0x0002 /* FLL1_FREERUN */ | ||
| 1580 | #define ARIZONA_FLL1_FREERUN_MASK 0x0002 /* FLL1_FREERUN */ | ||
| 1581 | #define ARIZONA_FLL1_FREERUN_SHIFT 1 /* FLL1_FREERUN */ | ||
| 1582 | #define ARIZONA_FLL1_FREERUN_WIDTH 1 /* FLL1_FREERUN */ | ||
| 1583 | #define ARIZONA_FLL1_ENA 0x0001 /* FLL1_ENA */ | ||
| 1584 | #define ARIZONA_FLL1_ENA_MASK 0x0001 /* FLL1_ENA */ | ||
| 1585 | #define ARIZONA_FLL1_ENA_SHIFT 0 /* FLL1_ENA */ | ||
| 1586 | #define ARIZONA_FLL1_ENA_WIDTH 1 /* FLL1_ENA */ | ||
| 1587 | |||
| 1588 | /* | ||
| 1589 | * R370 (0x172) - FLL1 Control 2 | ||
| 1590 | */ | ||
| 1591 | #define ARIZONA_FLL1_CTRL_UPD 0x8000 /* FLL1_CTRL_UPD */ | ||
| 1592 | #define ARIZONA_FLL1_CTRL_UPD_MASK 0x8000 /* FLL1_CTRL_UPD */ | ||
| 1593 | #define ARIZONA_FLL1_CTRL_UPD_SHIFT 15 /* FLL1_CTRL_UPD */ | ||
| 1594 | #define ARIZONA_FLL1_CTRL_UPD_WIDTH 1 /* FLL1_CTRL_UPD */ | ||
| 1595 | #define ARIZONA_FLL1_N_MASK 0x03FF /* FLL1_N - [9:0] */ | ||
| 1596 | #define ARIZONA_FLL1_N_SHIFT 0 /* FLL1_N - [9:0] */ | ||
| 1597 | #define ARIZONA_FLL1_N_WIDTH 10 /* FLL1_N - [9:0] */ | ||
| 1598 | |||
| 1599 | /* | ||
| 1600 | * R371 (0x173) - FLL1 Control 3 | ||
| 1601 | */ | ||
| 1602 | #define ARIZONA_FLL1_THETA_MASK 0xFFFF /* FLL1_THETA - [15:0] */ | ||
| 1603 | #define ARIZONA_FLL1_THETA_SHIFT 0 /* FLL1_THETA - [15:0] */ | ||
| 1604 | #define ARIZONA_FLL1_THETA_WIDTH 16 /* FLL1_THETA - [15:0] */ | ||
| 1605 | |||
| 1606 | /* | ||
| 1607 | * R372 (0x174) - FLL1 Control 4 | ||
| 1608 | */ | ||
| 1609 | #define ARIZONA_FLL1_LAMBDA_MASK 0xFFFF /* FLL1_LAMBDA - [15:0] */ | ||
| 1610 | #define ARIZONA_FLL1_LAMBDA_SHIFT 0 /* FLL1_LAMBDA - [15:0] */ | ||
| 1611 | #define ARIZONA_FLL1_LAMBDA_WIDTH 16 /* FLL1_LAMBDA - [15:0] */ | ||
| 1612 | |||
| 1613 | /* | ||
| 1614 | * R373 (0x175) - FLL1 Control 5 | ||
| 1615 | */ | ||
| 1616 | #define ARIZONA_FLL1_FRATIO_MASK 0x0700 /* FLL1_FRATIO - [10:8] */ | ||
| 1617 | #define ARIZONA_FLL1_FRATIO_SHIFT 8 /* FLL1_FRATIO - [10:8] */ | ||
| 1618 | #define ARIZONA_FLL1_FRATIO_WIDTH 3 /* FLL1_FRATIO - [10:8] */ | ||
| 1619 | #define ARIZONA_FLL1_OUTDIV_MASK 0x000E /* FLL1_OUTDIV - [3:1] */ | ||
| 1620 | #define ARIZONA_FLL1_OUTDIV_SHIFT 1 /* FLL1_OUTDIV - [3:1] */ | ||
| 1621 | #define ARIZONA_FLL1_OUTDIV_WIDTH 3 /* FLL1_OUTDIV - [3:1] */ | ||
| 1622 | |||
| 1623 | /* | ||
| 1624 | * R374 (0x176) - FLL1 Control 6 | ||
| 1625 | */ | ||
| 1626 | #define ARIZONA_FLL1_CLK_REF_DIV_MASK 0x00C0 /* FLL1_CLK_REF_DIV - [7:6] */ | ||
| 1627 | #define ARIZONA_FLL1_CLK_REF_DIV_SHIFT 6 /* FLL1_CLK_REF_DIV - [7:6] */ | ||
| 1628 | #define ARIZONA_FLL1_CLK_REF_DIV_WIDTH 2 /* FLL1_CLK_REF_DIV - [7:6] */ | ||
| 1629 | #define ARIZONA_FLL1_CLK_REF_SRC_MASK 0x000F /* FLL1_CLK_REF_SRC - [3:0] */ | ||
| 1630 | #define ARIZONA_FLL1_CLK_REF_SRC_SHIFT 0 /* FLL1_CLK_REF_SRC - [3:0] */ | ||
| 1631 | #define ARIZONA_FLL1_CLK_REF_SRC_WIDTH 4 /* FLL1_CLK_REF_SRC - [3:0] */ | ||
| 1632 | |||
| 1633 | /* | ||
| 1634 | * R375 (0x177) - FLL1 Loop Filter Test 1 | ||
| 1635 | */ | ||
| 1636 | #define ARIZONA_FLL1_FRC_INTEG_UPD 0x8000 /* FLL1_FRC_INTEG_UPD */ | ||
| 1637 | #define ARIZONA_FLL1_FRC_INTEG_UPD_MASK 0x8000 /* FLL1_FRC_INTEG_UPD */ | ||
| 1638 | #define ARIZONA_FLL1_FRC_INTEG_UPD_SHIFT 15 /* FLL1_FRC_INTEG_UPD */ | ||
| 1639 | #define ARIZONA_FLL1_FRC_INTEG_UPD_WIDTH 1 /* FLL1_FRC_INTEG_UPD */ | ||
| 1640 | #define ARIZONA_FLL1_FRC_INTEG_VAL_MASK 0x0FFF /* FLL1_FRC_INTEG_VAL - [11:0] */ | ||
| 1641 | #define ARIZONA_FLL1_FRC_INTEG_VAL_SHIFT 0 /* FLL1_FRC_INTEG_VAL - [11:0] */ | ||
| 1642 | #define ARIZONA_FLL1_FRC_INTEG_VAL_WIDTH 12 /* FLL1_FRC_INTEG_VAL - [11:0] */ | ||
| 1643 | |||
| 1644 | /* | ||
| 1645 | * R385 (0x181) - FLL1 Synchroniser 1 | ||
| 1646 | */ | ||
| 1647 | #define ARIZONA_FLL1_SYNC_ENA 0x0001 /* FLL1_SYNC_ENA */ | ||
| 1648 | #define ARIZONA_FLL1_SYNC_ENA_MASK 0x0001 /* FLL1_SYNC_ENA */ | ||
| 1649 | #define ARIZONA_FLL1_SYNC_ENA_SHIFT 0 /* FLL1_SYNC_ENA */ | ||
| 1650 | #define ARIZONA_FLL1_SYNC_ENA_WIDTH 1 /* FLL1_SYNC_ENA */ | ||
| 1651 | |||
| 1652 | /* | ||
| 1653 | * R386 (0x182) - FLL1 Synchroniser 2 | ||
| 1654 | */ | ||
| 1655 | #define ARIZONA_FLL1_SYNC_N_MASK 0x03FF /* FLL1_SYNC_N - [9:0] */ | ||
| 1656 | #define ARIZONA_FLL1_SYNC_N_SHIFT 0 /* FLL1_SYNC_N - [9:0] */ | ||
| 1657 | #define ARIZONA_FLL1_SYNC_N_WIDTH 10 /* FLL1_SYNC_N - [9:0] */ | ||
| 1658 | |||
| 1659 | /* | ||
| 1660 | * R387 (0x183) - FLL1 Synchroniser 3 | ||
| 1661 | */ | ||
| 1662 | #define ARIZONA_FLL1_SYNC_THETA_MASK 0xFFFF /* FLL1_SYNC_THETA - [15:0] */ | ||
| 1663 | #define ARIZONA_FLL1_SYNC_THETA_SHIFT 0 /* FLL1_SYNC_THETA - [15:0] */ | ||
| 1664 | #define ARIZONA_FLL1_SYNC_THETA_WIDTH 16 /* FLL1_SYNC_THETA - [15:0] */ | ||
| 1665 | |||
| 1666 | /* | ||
| 1667 | * R388 (0x184) - FLL1 Synchroniser 4 | ||
| 1668 | */ | ||
| 1669 | #define ARIZONA_FLL1_SYNC_LAMBDA_MASK 0xFFFF /* FLL1_SYNC_LAMBDA - [15:0] */ | ||
| 1670 | #define ARIZONA_FLL1_SYNC_LAMBDA_SHIFT 0 /* FLL1_SYNC_LAMBDA - [15:0] */ | ||
| 1671 | #define ARIZONA_FLL1_SYNC_LAMBDA_WIDTH 16 /* FLL1_SYNC_LAMBDA - [15:0] */ | ||
| 1672 | |||
| 1673 | /* | ||
| 1674 | * R389 (0x185) - FLL1 Synchroniser 5 | ||
| 1675 | */ | ||
| 1676 | #define ARIZONA_FLL1_SYNC_FRATIO_MASK 0x0700 /* FLL1_SYNC_FRATIO - [10:8] */ | ||
| 1677 | #define ARIZONA_FLL1_SYNC_FRATIO_SHIFT 8 /* FLL1_SYNC_FRATIO - [10:8] */ | ||
| 1678 | #define ARIZONA_FLL1_SYNC_FRATIO_WIDTH 3 /* FLL1_SYNC_FRATIO - [10:8] */ | ||
| 1679 | |||
| 1680 | /* | ||
| 1681 | * R390 (0x186) - FLL1 Synchroniser 6 | ||
| 1682 | */ | ||
| 1683 | #define ARIZONA_FLL1_CLK_SYNC_DIV_MASK 0x00C0 /* FLL1_CLK_SYNC_DIV - [7:6] */ | ||
| 1684 | #define ARIZONA_FLL1_CLK_SYNC_DIV_SHIFT 6 /* FLL1_CLK_SYNC_DIV - [7:6] */ | ||
| 1685 | #define ARIZONA_FLL1_CLK_SYNC_DIV_WIDTH 2 /* FLL1_CLK_SYNC_DIV - [7:6] */ | ||
| 1686 | #define ARIZONA_FLL1_CLK_SYNC_SRC_MASK 0x000F /* FLL1_CLK_SYNC_SRC - [3:0] */ | ||
| 1687 | #define ARIZONA_FLL1_CLK_SYNC_SRC_SHIFT 0 /* FLL1_CLK_SYNC_SRC - [3:0] */ | ||
| 1688 | #define ARIZONA_FLL1_CLK_SYNC_SRC_WIDTH 4 /* FLL1_CLK_SYNC_SRC - [3:0] */ | ||
| 1689 | |||
| 1690 | /* | ||
| 1691 | * R393 (0x189) - FLL1 Spread Spectrum | ||
| 1692 | */ | ||
| 1693 | #define ARIZONA_FLL1_SS_AMPL_MASK 0x0030 /* FLL1_SS_AMPL - [5:4] */ | ||
| 1694 | #define ARIZONA_FLL1_SS_AMPL_SHIFT 4 /* FLL1_SS_AMPL - [5:4] */ | ||
| 1695 | #define ARIZONA_FLL1_SS_AMPL_WIDTH 2 /* FLL1_SS_AMPL - [5:4] */ | ||
| 1696 | #define ARIZONA_FLL1_SS_FREQ_MASK 0x000C /* FLL1_SS_FREQ - [3:2] */ | ||
| 1697 | #define ARIZONA_FLL1_SS_FREQ_SHIFT 2 /* FLL1_SS_FREQ - [3:2] */ | ||
| 1698 | #define ARIZONA_FLL1_SS_FREQ_WIDTH 2 /* FLL1_SS_FREQ - [3:2] */ | ||
| 1699 | #define ARIZONA_FLL1_SS_SEL_MASK 0x0003 /* FLL1_SS_SEL - [1:0] */ | ||
| 1700 | #define ARIZONA_FLL1_SS_SEL_SHIFT 0 /* FLL1_SS_SEL - [1:0] */ | ||
| 1701 | #define ARIZONA_FLL1_SS_SEL_WIDTH 2 /* FLL1_SS_SEL - [1:0] */ | ||
| 1702 | |||
| 1703 | /* | ||
| 1704 | * R394 (0x18A) - FLL1 GPIO Clock | ||
| 1705 | */ | ||
| 1706 | #define ARIZONA_FLL1_GPDIV_MASK 0x00FE /* FLL1_GPDIV - [7:1] */ | ||
| 1707 | #define ARIZONA_FLL1_GPDIV_SHIFT 1 /* FLL1_GPDIV - [7:1] */ | ||
| 1708 | #define ARIZONA_FLL1_GPDIV_WIDTH 7 /* FLL1_GPDIV - [7:1] */ | ||
| 1709 | #define ARIZONA_FLL1_GPDIV_ENA 0x0001 /* FLL1_GPDIV_ENA */ | ||
| 1710 | #define ARIZONA_FLL1_GPDIV_ENA_MASK 0x0001 /* FLL1_GPDIV_ENA */ | ||
| 1711 | #define ARIZONA_FLL1_GPDIV_ENA_SHIFT 0 /* FLL1_GPDIV_ENA */ | ||
| 1712 | #define ARIZONA_FLL1_GPDIV_ENA_WIDTH 1 /* FLL1_GPDIV_ENA */ | ||
| 1713 | |||
| 1714 | /* | ||
| 1715 | * R401 (0x191) - FLL2 Control 1 | ||
| 1716 | */ | ||
| 1717 | #define ARIZONA_FLL2_FREERUN 0x0002 /* FLL2_FREERUN */ | ||
| 1718 | #define ARIZONA_FLL2_FREERUN_MASK 0x0002 /* FLL2_FREERUN */ | ||
| 1719 | #define ARIZONA_FLL2_FREERUN_SHIFT 1 /* FLL2_FREERUN */ | ||
| 1720 | #define ARIZONA_FLL2_FREERUN_WIDTH 1 /* FLL2_FREERUN */ | ||
| 1721 | #define ARIZONA_FLL2_ENA 0x0001 /* FLL2_ENA */ | ||
| 1722 | #define ARIZONA_FLL2_ENA_MASK 0x0001 /* FLL2_ENA */ | ||
| 1723 | #define ARIZONA_FLL2_ENA_SHIFT 0 /* FLL2_ENA */ | ||
| 1724 | #define ARIZONA_FLL2_ENA_WIDTH 1 /* FLL2_ENA */ | ||
| 1725 | |||
| 1726 | /* | ||
| 1727 | * R402 (0x192) - FLL2 Control 2 | ||
| 1728 | */ | ||
| 1729 | #define ARIZONA_FLL2_CTRL_UPD 0x8000 /* FLL2_CTRL_UPD */ | ||
| 1730 | #define ARIZONA_FLL2_CTRL_UPD_MASK 0x8000 /* FLL2_CTRL_UPD */ | ||
| 1731 | #define ARIZONA_FLL2_CTRL_UPD_SHIFT 15 /* FLL2_CTRL_UPD */ | ||
| 1732 | #define ARIZONA_FLL2_CTRL_UPD_WIDTH 1 /* FLL2_CTRL_UPD */ | ||
| 1733 | #define ARIZONA_FLL2_N_MASK 0x03FF /* FLL2_N - [9:0] */ | ||
| 1734 | #define ARIZONA_FLL2_N_SHIFT 0 /* FLL2_N - [9:0] */ | ||
| 1735 | #define ARIZONA_FLL2_N_WIDTH 10 /* FLL2_N - [9:0] */ | ||
| 1736 | |||
| 1737 | /* | ||
| 1738 | * R403 (0x193) - FLL2 Control 3 | ||
| 1739 | */ | ||
| 1740 | #define ARIZONA_FLL2_THETA_MASK 0xFFFF /* FLL2_THETA - [15:0] */ | ||
| 1741 | #define ARIZONA_FLL2_THETA_SHIFT 0 /* FLL2_THETA - [15:0] */ | ||
| 1742 | #define ARIZONA_FLL2_THETA_WIDTH 16 /* FLL2_THETA - [15:0] */ | ||
| 1743 | |||
| 1744 | /* | ||
| 1745 | * R404 (0x194) - FLL2 Control 4 | ||
| 1746 | */ | ||
| 1747 | #define ARIZONA_FLL2_LAMBDA_MASK 0xFFFF /* FLL2_LAMBDA - [15:0] */ | ||
| 1748 | #define ARIZONA_FLL2_LAMBDA_SHIFT 0 /* FLL2_LAMBDA - [15:0] */ | ||
| 1749 | #define ARIZONA_FLL2_LAMBDA_WIDTH 16 /* FLL2_LAMBDA - [15:0] */ | ||
| 1750 | |||
| 1751 | /* | ||
| 1752 | * R405 (0x195) - FLL2 Control 5 | ||
| 1753 | */ | ||
| 1754 | #define ARIZONA_FLL2_FRATIO_MASK 0x0700 /* FLL2_FRATIO - [10:8] */ | ||
| 1755 | #define ARIZONA_FLL2_FRATIO_SHIFT 8 /* FLL2_FRATIO - [10:8] */ | ||
| 1756 | #define ARIZONA_FLL2_FRATIO_WIDTH 3 /* FLL2_FRATIO - [10:8] */ | ||
| 1757 | #define ARIZONA_FLL2_OUTDIV_MASK 0x000E /* FLL2_OUTDIV - [3:1] */ | ||
| 1758 | #define ARIZONA_FLL2_OUTDIV_SHIFT 1 /* FLL2_OUTDIV - [3:1] */ | ||
| 1759 | #define ARIZONA_FLL2_OUTDIV_WIDTH 3 /* FLL2_OUTDIV - [3:1] */ | ||
| 1760 | |||
| 1761 | /* | ||
| 1762 | * R406 (0x196) - FLL2 Control 6 | ||
| 1763 | */ | ||
| 1764 | #define ARIZONA_FLL2_CLK_REF_DIV_MASK 0x00C0 /* FLL2_CLK_REF_DIV - [7:6] */ | ||
| 1765 | #define ARIZONA_FLL2_CLK_REF_DIV_SHIFT 6 /* FLL2_CLK_REF_DIV - [7:6] */ | ||
| 1766 | #define ARIZONA_FLL2_CLK_REF_DIV_WIDTH 2 /* FLL2_CLK_REF_DIV - [7:6] */ | ||
| 1767 | #define ARIZONA_FLL2_CLK_REF_SRC_MASK 0x000F /* FLL2_CLK_REF_SRC - [3:0] */ | ||
| 1768 | #define ARIZONA_FLL2_CLK_REF_SRC_SHIFT 0 /* FLL2_CLK_REF_SRC - [3:0] */ | ||
| 1769 | #define ARIZONA_FLL2_CLK_REF_SRC_WIDTH 4 /* FLL2_CLK_REF_SRC - [3:0] */ | ||
| 1770 | |||
| 1771 | /* | ||
| 1772 | * R407 (0x197) - FLL2 Loop Filter Test 1 | ||
| 1773 | */ | ||
| 1774 | #define ARIZONA_FLL2_FRC_INTEG_UPD 0x8000 /* FLL2_FRC_INTEG_UPD */ | ||
| 1775 | #define ARIZONA_FLL2_FRC_INTEG_UPD_MASK 0x8000 /* FLL2_FRC_INTEG_UPD */ | ||
| 1776 | #define ARIZONA_FLL2_FRC_INTEG_UPD_SHIFT 15 /* FLL2_FRC_INTEG_UPD */ | ||
| 1777 | #define ARIZONA_FLL2_FRC_INTEG_UPD_WIDTH 1 /* FLL2_FRC_INTEG_UPD */ | ||
| 1778 | #define ARIZONA_FLL2_FRC_INTEG_VAL_MASK 0x0FFF /* FLL2_FRC_INTEG_VAL - [11:0] */ | ||
| 1779 | #define ARIZONA_FLL2_FRC_INTEG_VAL_SHIFT 0 /* FLL2_FRC_INTEG_VAL - [11:0] */ | ||
| 1780 | #define ARIZONA_FLL2_FRC_INTEG_VAL_WIDTH 12 /* FLL2_FRC_INTEG_VAL - [11:0] */ | ||
| 1781 | |||
| 1782 | /* | ||
| 1783 | * R417 (0x1A1) - FLL2 Synchroniser 1 | ||
| 1784 | */ | ||
| 1785 | #define ARIZONA_FLL2_SYNC_ENA 0x0001 /* FLL2_SYNC_ENA */ | ||
| 1786 | #define ARIZONA_FLL2_SYNC_ENA_MASK 0x0001 /* FLL2_SYNC_ENA */ | ||
| 1787 | #define ARIZONA_FLL2_SYNC_ENA_SHIFT 0 /* FLL2_SYNC_ENA */ | ||
| 1788 | #define ARIZONA_FLL2_SYNC_ENA_WIDTH 1 /* FLL2_SYNC_ENA */ | ||
| 1789 | |||
| 1790 | /* | ||
| 1791 | * R418 (0x1A2) - FLL2 Synchroniser 2 | ||
| 1792 | */ | ||
| 1793 | #define ARIZONA_FLL2_SYNC_N_MASK 0x03FF /* FLL2_SYNC_N - [9:0] */ | ||
| 1794 | #define ARIZONA_FLL2_SYNC_N_SHIFT 0 /* FLL2_SYNC_N - [9:0] */ | ||
| 1795 | #define ARIZONA_FLL2_SYNC_N_WIDTH 10 /* FLL2_SYNC_N - [9:0] */ | ||
| 1796 | |||
| 1797 | /* | ||
| 1798 | * R419 (0x1A3) - FLL2 Synchroniser 3 | ||
| 1799 | */ | ||
| 1800 | #define ARIZONA_FLL2_SYNC_THETA_MASK 0xFFFF /* FLL2_SYNC_THETA - [15:0] */ | ||
| 1801 | #define ARIZONA_FLL2_SYNC_THETA_SHIFT 0 /* FLL2_SYNC_THETA - [15:0] */ | ||
| 1802 | #define ARIZONA_FLL2_SYNC_THETA_WIDTH 16 /* FLL2_SYNC_THETA - [15:0] */ | ||
| 1803 | |||
| 1804 | /* | ||
| 1805 | * R420 (0x1A4) - FLL2 Synchroniser 4 | ||
| 1806 | */ | ||
| 1807 | #define ARIZONA_FLL2_SYNC_LAMBDA_MASK 0xFFFF /* FLL2_SYNC_LAMBDA - [15:0] */ | ||
| 1808 | #define ARIZONA_FLL2_SYNC_LAMBDA_SHIFT 0 /* FLL2_SYNC_LAMBDA - [15:0] */ | ||
| 1809 | #define ARIZONA_FLL2_SYNC_LAMBDA_WIDTH 16 /* FLL2_SYNC_LAMBDA - [15:0] */ | ||
| 1810 | |||
| 1811 | /* | ||
| 1812 | * R421 (0x1A5) - FLL2 Synchroniser 5 | ||
| 1813 | */ | ||
| 1814 | #define ARIZONA_FLL2_SYNC_FRATIO_MASK 0x0700 /* FLL2_SYNC_FRATIO - [10:8] */ | ||
| 1815 | #define ARIZONA_FLL2_SYNC_FRATIO_SHIFT 8 /* FLL2_SYNC_FRATIO - [10:8] */ | ||
| 1816 | #define ARIZONA_FLL2_SYNC_FRATIO_WIDTH 3 /* FLL2_SYNC_FRATIO - [10:8] */ | ||
| 1817 | |||
| 1818 | /* | ||
| 1819 | * R422 (0x1A6) - FLL2 Synchroniser 6 | ||
| 1820 | */ | ||
| 1821 | #define ARIZONA_FLL2_CLK_SYNC_DIV_MASK 0x00C0 /* FLL2_CLK_SYNC_DIV - [7:6] */ | ||
| 1822 | #define ARIZONA_FLL2_CLK_SYNC_DIV_SHIFT 6 /* FLL2_CLK_SYNC_DIV - [7:6] */ | ||
| 1823 | #define ARIZONA_FLL2_CLK_SYNC_DIV_WIDTH 2 /* FLL2_CLK_SYNC_DIV - [7:6] */ | ||
| 1824 | #define ARIZONA_FLL2_CLK_SYNC_SRC_MASK 0x000F /* FLL2_CLK_SYNC_SRC - [3:0] */ | ||
| 1825 | #define ARIZONA_FLL2_CLK_SYNC_SRC_SHIFT 0 /* FLL2_CLK_SYNC_SRC - [3:0] */ | ||
| 1826 | #define ARIZONA_FLL2_CLK_SYNC_SRC_WIDTH 4 /* FLL2_CLK_SYNC_SRC - [3:0] */ | ||
| 1827 | |||
| 1828 | /* | ||
| 1829 | * R425 (0x1A9) - FLL2 Spread Spectrum | ||
| 1830 | */ | ||
| 1831 | #define ARIZONA_FLL2_SS_AMPL_MASK 0x0030 /* FLL2_SS_AMPL - [5:4] */ | ||
| 1832 | #define ARIZONA_FLL2_SS_AMPL_SHIFT 4 /* FLL2_SS_AMPL - [5:4] */ | ||
| 1833 | #define ARIZONA_FLL2_SS_AMPL_WIDTH 2 /* FLL2_SS_AMPL - [5:4] */ | ||
| 1834 | #define ARIZONA_FLL2_SS_FREQ_MASK 0x000C /* FLL2_SS_FREQ - [3:2] */ | ||
| 1835 | #define ARIZONA_FLL2_SS_FREQ_SHIFT 2 /* FLL2_SS_FREQ - [3:2] */ | ||
| 1836 | #define ARIZONA_FLL2_SS_FREQ_WIDTH 2 /* FLL2_SS_FREQ - [3:2] */ | ||
| 1837 | #define ARIZONA_FLL2_SS_SEL_MASK 0x0003 /* FLL2_SS_SEL - [1:0] */ | ||
| 1838 | #define ARIZONA_FLL2_SS_SEL_SHIFT 0 /* FLL2_SS_SEL - [1:0] */ | ||
| 1839 | #define ARIZONA_FLL2_SS_SEL_WIDTH 2 /* FLL2_SS_SEL - [1:0] */ | ||
| 1840 | |||
| 1841 | /* | ||
| 1842 | * R426 (0x1AA) - FLL2 GPIO Clock | ||
| 1843 | */ | ||
| 1844 | #define ARIZONA_FLL2_GPDIV_MASK 0x00FE /* FLL2_GPDIV - [7:1] */ | ||
| 1845 | #define ARIZONA_FLL2_GPDIV_SHIFT 1 /* FLL2_GPDIV - [7:1] */ | ||
| 1846 | #define ARIZONA_FLL2_GPDIV_WIDTH 7 /* FLL2_GPDIV - [7:1] */ | ||
| 1847 | #define ARIZONA_FLL2_GPDIV_ENA 0x0001 /* FLL2_GPDIV_ENA */ | ||
| 1848 | #define ARIZONA_FLL2_GPDIV_ENA_MASK 0x0001 /* FLL2_GPDIV_ENA */ | ||
| 1849 | #define ARIZONA_FLL2_GPDIV_ENA_SHIFT 0 /* FLL2_GPDIV_ENA */ | ||
| 1850 | #define ARIZONA_FLL2_GPDIV_ENA_WIDTH 1 /* FLL2_GPDIV_ENA */ | ||
| 1851 | |||
| 1852 | /* | ||
| 1853 | * R512 (0x200) - Mic Charge Pump 1 | ||
| 1854 | */ | ||
| 1855 | #define ARIZONA_CPMIC_DISCH 0x0004 /* CPMIC_DISCH */ | ||
| 1856 | #define ARIZONA_CPMIC_DISCH_MASK 0x0004 /* CPMIC_DISCH */ | ||
| 1857 | #define ARIZONA_CPMIC_DISCH_SHIFT 2 /* CPMIC_DISCH */ | ||
| 1858 | #define ARIZONA_CPMIC_DISCH_WIDTH 1 /* CPMIC_DISCH */ | ||
| 1859 | #define ARIZONA_CPMIC_BYPASS 0x0002 /* CPMIC_BYPASS */ | ||
| 1860 | #define ARIZONA_CPMIC_BYPASS_MASK 0x0002 /* CPMIC_BYPASS */ | ||
| 1861 | #define ARIZONA_CPMIC_BYPASS_SHIFT 1 /* CPMIC_BYPASS */ | ||
| 1862 | #define ARIZONA_CPMIC_BYPASS_WIDTH 1 /* CPMIC_BYPASS */ | ||
| 1863 | #define ARIZONA_CPMIC_ENA 0x0001 /* CPMIC_ENA */ | ||
| 1864 | #define ARIZONA_CPMIC_ENA_MASK 0x0001 /* CPMIC_ENA */ | ||
| 1865 | #define ARIZONA_CPMIC_ENA_SHIFT 0 /* CPMIC_ENA */ | ||
| 1866 | #define ARIZONA_CPMIC_ENA_WIDTH 1 /* CPMIC_ENA */ | ||
| 1867 | |||
| 1868 | /* | ||
| 1869 | * R528 (0x210) - LDO1 Control 1 | ||
| 1870 | */ | ||
| 1871 | #define ARIZONA_LDO1_VSEL_MASK 0x07E0 /* LDO1_VSEL - [10:5] */ | ||
| 1872 | #define ARIZONA_LDO1_VSEL_SHIFT 5 /* LDO1_VSEL - [10:5] */ | ||
| 1873 | #define ARIZONA_LDO1_VSEL_WIDTH 6 /* LDO1_VSEL - [10:5] */ | ||
| 1874 | #define ARIZONA_LDO1_FAST 0x0010 /* LDO1_FAST */ | ||
| 1875 | #define ARIZONA_LDO1_FAST_MASK 0x0010 /* LDO1_FAST */ | ||
| 1876 | #define ARIZONA_LDO1_FAST_SHIFT 4 /* LDO1_FAST */ | ||
| 1877 | #define ARIZONA_LDO1_FAST_WIDTH 1 /* LDO1_FAST */ | ||
| 1878 | #define ARIZONA_LDO1_DISCH 0x0004 /* LDO1_DISCH */ | ||
| 1879 | #define ARIZONA_LDO1_DISCH_MASK 0x0004 /* LDO1_DISCH */ | ||
| 1880 | #define ARIZONA_LDO1_DISCH_SHIFT 2 /* LDO1_DISCH */ | ||
| 1881 | #define ARIZONA_LDO1_DISCH_WIDTH 1 /* LDO1_DISCH */ | ||
| 1882 | #define ARIZONA_LDO1_BYPASS 0x0002 /* LDO1_BYPASS */ | ||
| 1883 | #define ARIZONA_LDO1_BYPASS_MASK 0x0002 /* LDO1_BYPASS */ | ||
| 1884 | #define ARIZONA_LDO1_BYPASS_SHIFT 1 /* LDO1_BYPASS */ | ||
| 1885 | #define ARIZONA_LDO1_BYPASS_WIDTH 1 /* LDO1_BYPASS */ | ||
| 1886 | #define ARIZONA_LDO1_ENA 0x0001 /* LDO1_ENA */ | ||
| 1887 | #define ARIZONA_LDO1_ENA_MASK 0x0001 /* LDO1_ENA */ | ||
| 1888 | #define ARIZONA_LDO1_ENA_SHIFT 0 /* LDO1_ENA */ | ||
| 1889 | #define ARIZONA_LDO1_ENA_WIDTH 1 /* LDO1_ENA */ | ||
| 1890 | |||
| 1891 | /* | ||
| 1892 | * R531 (0x213) - LDO2 Control 1 | ||
| 1893 | */ | ||
| 1894 | #define ARIZONA_LDO2_VSEL_MASK 0x07E0 /* LDO2_VSEL - [10:5] */ | ||
| 1895 | #define ARIZONA_LDO2_VSEL_SHIFT 5 /* LDO2_VSEL - [10:5] */ | ||
| 1896 | #define ARIZONA_LDO2_VSEL_WIDTH 6 /* LDO2_VSEL - [10:5] */ | ||
| 1897 | #define ARIZONA_LDO2_FAST 0x0010 /* LDO2_FAST */ | ||
| 1898 | #define ARIZONA_LDO2_FAST_MASK 0x0010 /* LDO2_FAST */ | ||
| 1899 | #define ARIZONA_LDO2_FAST_SHIFT 4 /* LDO2_FAST */ | ||
| 1900 | #define ARIZONA_LDO2_FAST_WIDTH 1 /* LDO2_FAST */ | ||
| 1901 | #define ARIZONA_LDO2_DISCH 0x0004 /* LDO2_DISCH */ | ||
| 1902 | #define ARIZONA_LDO2_DISCH_MASK 0x0004 /* LDO2_DISCH */ | ||
| 1903 | #define ARIZONA_LDO2_DISCH_SHIFT 2 /* LDO2_DISCH */ | ||
| 1904 | #define ARIZONA_LDO2_DISCH_WIDTH 1 /* LDO2_DISCH */ | ||
| 1905 | #define ARIZONA_LDO2_BYPASS 0x0002 /* LDO2_BYPASS */ | ||
| 1906 | #define ARIZONA_LDO2_BYPASS_MASK 0x0002 /* LDO2_BYPASS */ | ||
| 1907 | #define ARIZONA_LDO2_BYPASS_SHIFT 1 /* LDO2_BYPASS */ | ||
| 1908 | #define ARIZONA_LDO2_BYPASS_WIDTH 1 /* LDO2_BYPASS */ | ||
| 1909 | #define ARIZONA_LDO2_ENA 0x0001 /* LDO2_ENA */ | ||
| 1910 | #define ARIZONA_LDO2_ENA_MASK 0x0001 /* LDO2_ENA */ | ||
| 1911 | #define ARIZONA_LDO2_ENA_SHIFT 0 /* LDO2_ENA */ | ||
| 1912 | #define ARIZONA_LDO2_ENA_WIDTH 1 /* LDO2_ENA */ | ||
| 1913 | |||
| 1914 | /* | ||
| 1915 | * R536 (0x218) - Mic Bias Ctrl 1 | ||
| 1916 | */ | ||
| 1917 | #define ARIZONA_MICB1_EXT_CAP 0x8000 /* MICB1_EXT_CAP */ | ||
| 1918 | #define ARIZONA_MICB1_EXT_CAP_MASK 0x8000 /* MICB1_EXT_CAP */ | ||
| 1919 | #define ARIZONA_MICB1_EXT_CAP_SHIFT 15 /* MICB1_EXT_CAP */ | ||
| 1920 | #define ARIZONA_MICB1_EXT_CAP_WIDTH 1 /* MICB1_EXT_CAP */ | ||
| 1921 | #define ARIZONA_MICB1_LVL_MASK 0x01E0 /* MICB1_LVL - [8:5] */ | ||
| 1922 | #define ARIZONA_MICB1_LVL_SHIFT 5 /* MICB1_LVL - [8:5] */ | ||
| 1923 | #define ARIZONA_MICB1_LVL_WIDTH 4 /* MICB1_LVL - [8:5] */ | ||
| 1924 | #define ARIZONA_MICB1_FAST 0x0010 /* MICB1_FAST */ | ||
| 1925 | #define ARIZONA_MICB1_FAST_MASK 0x0010 /* MICB1_FAST */ | ||
| 1926 | #define ARIZONA_MICB1_FAST_SHIFT 4 /* MICB1_FAST */ | ||
| 1927 | #define ARIZONA_MICB1_FAST_WIDTH 1 /* MICB1_FAST */ | ||
| 1928 | #define ARIZONA_MICB1_RATE 0x0008 /* MICB1_RATE */ | ||
| 1929 | #define ARIZONA_MICB1_RATE_MASK 0x0008 /* MICB1_RATE */ | ||
| 1930 | #define ARIZONA_MICB1_RATE_SHIFT 3 /* MICB1_RATE */ | ||
| 1931 | #define ARIZONA_MICB1_RATE_WIDTH 1 /* MICB1_RATE */ | ||
| 1932 | #define ARIZONA_MICB1_DISCH 0x0004 /* MICB1_DISCH */ | ||
| 1933 | #define ARIZONA_MICB1_DISCH_MASK 0x0004 /* MICB1_DISCH */ | ||
| 1934 | #define ARIZONA_MICB1_DISCH_SHIFT 2 /* MICB1_DISCH */ | ||
| 1935 | #define ARIZONA_MICB1_DISCH_WIDTH 1 /* MICB1_DISCH */ | ||
| 1936 | #define ARIZONA_MICB1_BYPASS 0x0002 /* MICB1_BYPASS */ | ||
| 1937 | #define ARIZONA_MICB1_BYPASS_MASK 0x0002 /* MICB1_BYPASS */ | ||
| 1938 | #define ARIZONA_MICB1_BYPASS_SHIFT 1 /* MICB1_BYPASS */ | ||
| 1939 | #define ARIZONA_MICB1_BYPASS_WIDTH 1 /* MICB1_BYPASS */ | ||
| 1940 | #define ARIZONA_MICB1_ENA 0x0001 /* MICB1_ENA */ | ||
| 1941 | #define ARIZONA_MICB1_ENA_MASK 0x0001 /* MICB1_ENA */ | ||
| 1942 | #define ARIZONA_MICB1_ENA_SHIFT 0 /* MICB1_ENA */ | ||
| 1943 | #define ARIZONA_MICB1_ENA_WIDTH 1 /* MICB1_ENA */ | ||
| 1944 | |||
| 1945 | /* | ||
| 1946 | * R537 (0x219) - Mic Bias Ctrl 2 | ||
| 1947 | */ | ||
| 1948 | #define ARIZONA_MICB2_EXT_CAP 0x8000 /* MICB2_EXT_CAP */ | ||
| 1949 | #define ARIZONA_MICB2_EXT_CAP_MASK 0x8000 /* MICB2_EXT_CAP */ | ||
| 1950 | #define ARIZONA_MICB2_EXT_CAP_SHIFT 15 /* MICB2_EXT_CAP */ | ||
| 1951 | #define ARIZONA_MICB2_EXT_CAP_WIDTH 1 /* MICB2_EXT_CAP */ | ||
| 1952 | #define ARIZONA_MICB2_LVL_MASK 0x01E0 /* MICB2_LVL - [8:5] */ | ||
| 1953 | #define ARIZONA_MICB2_LVL_SHIFT 5 /* MICB2_LVL - [8:5] */ | ||
| 1954 | #define ARIZONA_MICB2_LVL_WIDTH 4 /* MICB2_LVL - [8:5] */ | ||
| 1955 | #define ARIZONA_MICB2_FAST 0x0010 /* MICB2_FAST */ | ||
| 1956 | #define ARIZONA_MICB2_FAST_MASK 0x0010 /* MICB2_FAST */ | ||
| 1957 | #define ARIZONA_MICB2_FAST_SHIFT 4 /* MICB2_FAST */ | ||
| 1958 | #define ARIZONA_MICB2_FAST_WIDTH 1 /* MICB2_FAST */ | ||
| 1959 | #define ARIZONA_MICB2_RATE 0x0008 /* MICB2_RATE */ | ||
| 1960 | #define ARIZONA_MICB2_RATE_MASK 0x0008 /* MICB2_RATE */ | ||
| 1961 | #define ARIZONA_MICB2_RATE_SHIFT 3 /* MICB2_RATE */ | ||
| 1962 | #define ARIZONA_MICB2_RATE_WIDTH 1 /* MICB2_RATE */ | ||
| 1963 | #define ARIZONA_MICB2_DISCH 0x0004 /* MICB2_DISCH */ | ||
| 1964 | #define ARIZONA_MICB2_DISCH_MASK 0x0004 /* MICB2_DISCH */ | ||
| 1965 | #define ARIZONA_MICB2_DISCH_SHIFT 2 /* MICB2_DISCH */ | ||
| 1966 | #define ARIZONA_MICB2_DISCH_WIDTH 1 /* MICB2_DISCH */ | ||
| 1967 | #define ARIZONA_MICB2_BYPASS 0x0002 /* MICB2_BYPASS */ | ||
| 1968 | #define ARIZONA_MICB2_BYPASS_MASK 0x0002 /* MICB2_BYPASS */ | ||
| 1969 | #define ARIZONA_MICB2_BYPASS_SHIFT 1 /* MICB2_BYPASS */ | ||
| 1970 | #define ARIZONA_MICB2_BYPASS_WIDTH 1 /* MICB2_BYPASS */ | ||
| 1971 | #define ARIZONA_MICB2_ENA 0x0001 /* MICB2_ENA */ | ||
| 1972 | #define ARIZONA_MICB2_ENA_MASK 0x0001 /* MICB2_ENA */ | ||
| 1973 | #define ARIZONA_MICB2_ENA_SHIFT 0 /* MICB2_ENA */ | ||
| 1974 | #define ARIZONA_MICB2_ENA_WIDTH 1 /* MICB2_ENA */ | ||
| 1975 | |||
| 1976 | /* | ||
| 1977 | * R538 (0x21A) - Mic Bias Ctrl 3 | ||
| 1978 | */ | ||
| 1979 | #define ARIZONA_MICB3_EXT_CAP 0x8000 /* MICB3_EXT_CAP */ | ||
| 1980 | #define ARIZONA_MICB3_EXT_CAP_MASK 0x8000 /* MICB3_EXT_CAP */ | ||
| 1981 | #define ARIZONA_MICB3_EXT_CAP_SHIFT 15 /* MICB3_EXT_CAP */ | ||
| 1982 | #define ARIZONA_MICB3_EXT_CAP_WIDTH 1 /* MICB3_EXT_CAP */ | ||
| 1983 | #define ARIZONA_MICB3_LVL_MASK 0x01E0 /* MICB3_LVL - [8:5] */ | ||
| 1984 | #define ARIZONA_MICB3_LVL_SHIFT 5 /* MICB3_LVL - [8:5] */ | ||
| 1985 | #define ARIZONA_MICB3_LVL_WIDTH 4 /* MICB3_LVL - [8:5] */ | ||
| 1986 | #define ARIZONA_MICB3_FAST 0x0010 /* MICB3_FAST */ | ||
| 1987 | #define ARIZONA_MICB3_FAST_MASK 0x0010 /* MICB3_FAST */ | ||
| 1988 | #define ARIZONA_MICB3_FAST_SHIFT 4 /* MICB3_FAST */ | ||
| 1989 | #define ARIZONA_MICB3_FAST_WIDTH 1 /* MICB3_FAST */ | ||
| 1990 | #define ARIZONA_MICB3_RATE 0x0008 /* MICB3_RATE */ | ||
| 1991 | #define ARIZONA_MICB3_RATE_MASK 0x0008 /* MICB3_RATE */ | ||
| 1992 | #define ARIZONA_MICB3_RATE_SHIFT 3 /* MICB3_RATE */ | ||
| 1993 | #define ARIZONA_MICB3_RATE_WIDTH 1 /* MICB3_RATE */ | ||
| 1994 | #define ARIZONA_MICB3_DISCH 0x0004 /* MICB3_DISCH */ | ||
| 1995 | #define ARIZONA_MICB3_DISCH_MASK 0x0004 /* MICB3_DISCH */ | ||
| 1996 | #define ARIZONA_MICB3_DISCH_SHIFT 2 /* MICB3_DISCH */ | ||
| 1997 | #define ARIZONA_MICB3_DISCH_WIDTH 1 /* MICB3_DISCH */ | ||
| 1998 | #define ARIZONA_MICB3_BYPASS 0x0002 /* MICB3_BYPASS */ | ||
| 1999 | #define ARIZONA_MICB3_BYPASS_MASK 0x0002 /* MICB3_BYPASS */ | ||
| 2000 | #define ARIZONA_MICB3_BYPASS_SHIFT 1 /* MICB3_BYPASS */ | ||
| 2001 | #define ARIZONA_MICB3_BYPASS_WIDTH 1 /* MICB3_BYPASS */ | ||
| 2002 | #define ARIZONA_MICB3_ENA 0x0001 /* MICB3_ENA */ | ||
| 2003 | #define ARIZONA_MICB3_ENA_MASK 0x0001 /* MICB3_ENA */ | ||
| 2004 | #define ARIZONA_MICB3_ENA_SHIFT 0 /* MICB3_ENA */ | ||
| 2005 | #define ARIZONA_MICB3_ENA_WIDTH 1 /* MICB3_ENA */ | ||
| 2006 | |||
| 2007 | /* | ||
| 2008 | * R659 (0x293) - Accessory Detect Mode 1 | ||
| 2009 | */ | ||
| 2010 | #define ARIZONA_ACCDET_SRC 0x2000 /* ACCDET_SRC */ | ||
| 2011 | #define ARIZONA_ACCDET_SRC_MASK 0x2000 /* ACCDET_SRC */ | ||
| 2012 | #define ARIZONA_ACCDET_SRC_SHIFT 13 /* ACCDET_SRC */ | ||
| 2013 | #define ARIZONA_ACCDET_SRC_WIDTH 1 /* ACCDET_SRC */ | ||
| 2014 | #define ARIZONA_ACCDET_MODE_MASK 0x0003 /* ACCDET_MODE - [1:0] */ | ||
| 2015 | #define ARIZONA_ACCDET_MODE_SHIFT 0 /* ACCDET_MODE - [1:0] */ | ||
| 2016 | #define ARIZONA_ACCDET_MODE_WIDTH 2 /* ACCDET_MODE - [1:0] */ | ||
| 2017 | |||
| 2018 | /* | ||
| 2019 | * R667 (0x29B) - Headphone Detect 1 | ||
| 2020 | */ | ||
| 2021 | #define ARIZONA_HP_STEP_SIZE 0x0100 /* HP_STEP_SIZE */ | ||
| 2022 | #define ARIZONA_HP_STEP_SIZE_MASK 0x0100 /* HP_STEP_SIZE */ | ||
| 2023 | #define ARIZONA_HP_STEP_SIZE_SHIFT 8 /* HP_STEP_SIZE */ | ||
| 2024 | #define ARIZONA_HP_STEP_SIZE_WIDTH 1 /* HP_STEP_SIZE */ | ||
| 2025 | #define ARIZONA_HP_HOLDTIME_MASK 0x00E0 /* HP_HOLDTIME - [7:5] */ | ||
| 2026 | #define ARIZONA_HP_HOLDTIME_SHIFT 5 /* HP_HOLDTIME - [7:5] */ | ||
| 2027 | #define ARIZONA_HP_HOLDTIME_WIDTH 3 /* HP_HOLDTIME - [7:5] */ | ||
| 2028 | #define ARIZONA_HP_CLK_DIV_MASK 0x0018 /* HP_CLK_DIV - [4:3] */ | ||
| 2029 | #define ARIZONA_HP_CLK_DIV_SHIFT 3 /* HP_CLK_DIV - [4:3] */ | ||
| 2030 | #define ARIZONA_HP_CLK_DIV_WIDTH 2 /* HP_CLK_DIV - [4:3] */ | ||
| 2031 | #define ARIZONA_HP_IDAC_STEER 0x0004 /* HP_IDAC_STEER */ | ||
| 2032 | #define ARIZONA_HP_IDAC_STEER_MASK 0x0004 /* HP_IDAC_STEER */ | ||
| 2033 | #define ARIZONA_HP_IDAC_STEER_SHIFT 2 /* HP_IDAC_STEER */ | ||
| 2034 | #define ARIZONA_HP_IDAC_STEER_WIDTH 1 /* HP_IDAC_STEER */ | ||
| 2035 | #define ARIZONA_HP_RATE 0x0002 /* HP_RATE */ | ||
| 2036 | #define ARIZONA_HP_RATE_MASK 0x0002 /* HP_RATE */ | ||
| 2037 | #define ARIZONA_HP_RATE_SHIFT 1 /* HP_RATE */ | ||
| 2038 | #define ARIZONA_HP_RATE_WIDTH 1 /* HP_RATE */ | ||
| 2039 | #define ARIZONA_HP_POLL 0x0001 /* HP_POLL */ | ||
| 2040 | #define ARIZONA_HP_POLL_MASK 0x0001 /* HP_POLL */ | ||
| 2041 | #define ARIZONA_HP_POLL_SHIFT 0 /* HP_POLL */ | ||
| 2042 | #define ARIZONA_HP_POLL_WIDTH 1 /* HP_POLL */ | ||
| 2043 | |||
| 2044 | /* | ||
| 2045 | * R668 (0x29C) - Headphone Detect 2 | ||
| 2046 | */ | ||
| 2047 | #define ARIZONA_HP_DONE 0x0080 /* HP_DONE */ | ||
| 2048 | #define ARIZONA_HP_DONE_MASK 0x0080 /* HP_DONE */ | ||
| 2049 | #define ARIZONA_HP_DONE_SHIFT 7 /* HP_DONE */ | ||
| 2050 | #define ARIZONA_HP_DONE_WIDTH 1 /* HP_DONE */ | ||
| 2051 | #define ARIZONA_HP_LVL_MASK 0x007F /* HP_LVL - [6:0] */ | ||
| 2052 | #define ARIZONA_HP_LVL_SHIFT 0 /* HP_LVL - [6:0] */ | ||
| 2053 | #define ARIZONA_HP_LVL_WIDTH 7 /* HP_LVL - [6:0] */ | ||
| 2054 | |||
| 2055 | /* | ||
| 2056 | * R675 (0x2A3) - Mic Detect 1 | ||
| 2057 | */ | ||
| 2058 | #define ARIZONA_MICD_BIAS_STARTTIME_MASK 0xF000 /* MICD_BIAS_STARTTIME - [15:12] */ | ||
| 2059 | #define ARIZONA_MICD_BIAS_STARTTIME_SHIFT 12 /* MICD_BIAS_STARTTIME - [15:12] */ | ||
| 2060 | #define ARIZONA_MICD_BIAS_STARTTIME_WIDTH 4 /* MICD_BIAS_STARTTIME - [15:12] */ | ||
| 2061 | #define ARIZONA_MICD_RATE_MASK 0x0F00 /* MICD_RATE - [11:8] */ | ||
| 2062 | #define ARIZONA_MICD_RATE_SHIFT 8 /* MICD_RATE - [11:8] */ | ||
| 2063 | #define ARIZONA_MICD_RATE_WIDTH 4 /* MICD_RATE - [11:8] */ | ||
| 2064 | #define ARIZONA_MICD_BIAS_SRC_MASK 0x0030 /* MICD_BIAS_SRC - [5:4] */ | ||
| 2065 | #define ARIZONA_MICD_BIAS_SRC_SHIFT 4 /* MICD_BIAS_SRC - [5:4] */ | ||
| 2066 | #define ARIZONA_MICD_BIAS_SRC_WIDTH 2 /* MICD_BIAS_SRC - [5:4] */ | ||
| 2067 | #define ARIZONA_MICD_DBTIME 0x0002 /* MICD_DBTIME */ | ||
| 2068 | #define ARIZONA_MICD_DBTIME_MASK 0x0002 /* MICD_DBTIME */ | ||
| 2069 | #define ARIZONA_MICD_DBTIME_SHIFT 1 /* MICD_DBTIME */ | ||
| 2070 | #define ARIZONA_MICD_DBTIME_WIDTH 1 /* MICD_DBTIME */ | ||
| 2071 | #define ARIZONA_MICD_ENA 0x0001 /* MICD_ENA */ | ||
| 2072 | #define ARIZONA_MICD_ENA_MASK 0x0001 /* MICD_ENA */ | ||
| 2073 | #define ARIZONA_MICD_ENA_SHIFT 0 /* MICD_ENA */ | ||
| 2074 | #define ARIZONA_MICD_ENA_WIDTH 1 /* MICD_ENA */ | ||
| 2075 | |||
| 2076 | /* | ||
| 2077 | * R676 (0x2A4) - Mic Detect 2 | ||
| 2078 | */ | ||
| 2079 | #define ARIZONA_MICD_LVL_SEL_MASK 0x00FF /* MICD_LVL_SEL - [7:0] */ | ||
| 2080 | #define ARIZONA_MICD_LVL_SEL_SHIFT 0 /* MICD_LVL_SEL - [7:0] */ | ||
| 2081 | #define ARIZONA_MICD_LVL_SEL_WIDTH 8 /* MICD_LVL_SEL - [7:0] */ | ||
| 2082 | |||
| 2083 | /* | ||
| 2084 | * R677 (0x2A5) - Mic Detect 3 | ||
| 2085 | */ | ||
| 2086 | #define ARIZONA_MICD_LVL_MASK 0x07FC /* MICD_LVL - [10:2] */ | ||
| 2087 | #define ARIZONA_MICD_LVL_SHIFT 2 /* MICD_LVL - [10:2] */ | ||
| 2088 | #define ARIZONA_MICD_LVL_WIDTH 9 /* MICD_LVL - [10:2] */ | ||
| 2089 | #define ARIZONA_MICD_VALID 0x0002 /* MICD_VALID */ | ||
| 2090 | #define ARIZONA_MICD_VALID_MASK 0x0002 /* MICD_VALID */ | ||
| 2091 | #define ARIZONA_MICD_VALID_SHIFT 1 /* MICD_VALID */ | ||
| 2092 | #define ARIZONA_MICD_VALID_WIDTH 1 /* MICD_VALID */ | ||
| 2093 | #define ARIZONA_MICD_STS 0x0001 /* MICD_STS */ | ||
| 2094 | #define ARIZONA_MICD_STS_MASK 0x0001 /* MICD_STS */ | ||
| 2095 | #define ARIZONA_MICD_STS_SHIFT 0 /* MICD_STS */ | ||
| 2096 | #define ARIZONA_MICD_STS_WIDTH 1 /* MICD_STS */ | ||
| 2097 | |||
| 2098 | /* | ||
| 2099 | * R707 (0x2C3) - Mic noise mix control 1 | ||
| 2100 | */ | ||
| 2101 | #define ARIZONA_MICMUTE_RATE_MASK 0x7800 /* MICMUTE_RATE - [14:11] */ | ||
| 2102 | #define ARIZONA_MICMUTE_RATE_SHIFT 11 /* MICMUTE_RATE - [14:11] */ | ||
| 2103 | #define ARIZONA_MICMUTE_RATE_WIDTH 4 /* MICMUTE_RATE - [14:11] */ | ||
| 2104 | #define ARIZONA_MICMUTE_MIX_ENA 0x0040 /* MICMUTE_MIX_ENA */ | ||
| 2105 | #define ARIZONA_MICMUTE_MIX_ENA_MASK 0x0040 /* MICMUTE_MIX_ENA */ | ||
| 2106 | #define ARIZONA_MICMUTE_MIX_ENA_SHIFT 6 /* MICMUTE_MIX_ENA */ | ||
| 2107 | #define ARIZONA_MICMUTE_MIX_ENA_WIDTH 1 /* MICMUTE_MIX_ENA */ | ||
| 2108 | |||
| 2109 | /* | ||
| 2110 | * R715 (0x2CB) - Isolation control | ||
| 2111 | */ | ||
| 2112 | #define ARIZONA_ISOLATE_DCVDD1 0x0001 /* ISOLATE_DCVDD1 */ | ||
| 2113 | #define ARIZONA_ISOLATE_DCVDD1_MASK 0x0001 /* ISOLATE_DCVDD1 */ | ||
| 2114 | #define ARIZONA_ISOLATE_DCVDD1_SHIFT 0 /* ISOLATE_DCVDD1 */ | ||
| 2115 | #define ARIZONA_ISOLATE_DCVDD1_WIDTH 1 /* ISOLATE_DCVDD1 */ | ||
| 2116 | |||
| 2117 | /* | ||
| 2118 | * R723 (0x2D3) - Jack detect analogue | ||
| 2119 | */ | ||
| 2120 | #define ARIZONA_JD2_ENA 0x0002 /* JD2_ENA */ | ||
| 2121 | #define ARIZONA_JD2_ENA_MASK 0x0002 /* JD2_ENA */ | ||
| 2122 | #define ARIZONA_JD2_ENA_SHIFT 1 /* JD2_ENA */ | ||
| 2123 | #define ARIZONA_JD2_ENA_WIDTH 1 /* JD2_ENA */ | ||
| 2124 | #define ARIZONA_JD1_ENA 0x0001 /* JD1_ENA */ | ||
| 2125 | #define ARIZONA_JD1_ENA_MASK 0x0001 /* JD1_ENA */ | ||
| 2126 | #define ARIZONA_JD1_ENA_SHIFT 0 /* JD1_ENA */ | ||
| 2127 | #define ARIZONA_JD1_ENA_WIDTH 1 /* JD1_ENA */ | ||
| 2128 | |||
| 2129 | /* | ||
| 2130 | * R768 (0x300) - Input Enables | ||
| 2131 | */ | ||
| 2132 | #define ARIZONA_IN4L_ENA 0x0080 /* IN4L_ENA */ | ||
| 2133 | #define ARIZONA_IN4L_ENA_MASK 0x0080 /* IN4L_ENA */ | ||
| 2134 | #define ARIZONA_IN4L_ENA_SHIFT 7 /* IN4L_ENA */ | ||
| 2135 | #define ARIZONA_IN4L_ENA_WIDTH 1 /* IN4L_ENA */ | ||
| 2136 | #define ARIZONA_IN4R_ENA 0x0040 /* IN4R_ENA */ | ||
| 2137 | #define ARIZONA_IN4R_ENA_MASK 0x0040 /* IN4R_ENA */ | ||
| 2138 | #define ARIZONA_IN4R_ENA_SHIFT 6 /* IN4R_ENA */ | ||
| 2139 | #define ARIZONA_IN4R_ENA_WIDTH 1 /* IN4R_ENA */ | ||
| 2140 | #define ARIZONA_IN3L_ENA 0x0020 /* IN3L_ENA */ | ||
| 2141 | #define ARIZONA_IN3L_ENA_MASK 0x0020 /* IN3L_ENA */ | ||
| 2142 | #define ARIZONA_IN3L_ENA_SHIFT 5 /* IN3L_ENA */ | ||
| 2143 | #define ARIZONA_IN3L_ENA_WIDTH 1 /* IN3L_ENA */ | ||
| 2144 | #define ARIZONA_IN3R_ENA 0x0010 /* IN3R_ENA */ | ||
| 2145 | #define ARIZONA_IN3R_ENA_MASK 0x0010 /* IN3R_ENA */ | ||
| 2146 | #define ARIZONA_IN3R_ENA_SHIFT 4 /* IN3R_ENA */ | ||
| 2147 | #define ARIZONA_IN3R_ENA_WIDTH 1 /* IN3R_ENA */ | ||
| 2148 | #define ARIZONA_IN2L_ENA 0x0008 /* IN2L_ENA */ | ||
| 2149 | #define ARIZONA_IN2L_ENA_MASK 0x0008 /* IN2L_ENA */ | ||
| 2150 | #define ARIZONA_IN2L_ENA_SHIFT 3 /* IN2L_ENA */ | ||
| 2151 | #define ARIZONA_IN2L_ENA_WIDTH 1 /* IN2L_ENA */ | ||
| 2152 | #define ARIZONA_IN2R_ENA 0x0004 /* IN2R_ENA */ | ||
| 2153 | #define ARIZONA_IN2R_ENA_MASK 0x0004 /* IN2R_ENA */ | ||
| 2154 | #define ARIZONA_IN2R_ENA_SHIFT 2 /* IN2R_ENA */ | ||
| 2155 | #define ARIZONA_IN2R_ENA_WIDTH 1 /* IN2R_ENA */ | ||
| 2156 | #define ARIZONA_IN1L_ENA 0x0002 /* IN1L_ENA */ | ||
| 2157 | #define ARIZONA_IN1L_ENA_MASK 0x0002 /* IN1L_ENA */ | ||
| 2158 | #define ARIZONA_IN1L_ENA_SHIFT 1 /* IN1L_ENA */ | ||
| 2159 | #define ARIZONA_IN1L_ENA_WIDTH 1 /* IN1L_ENA */ | ||
| 2160 | #define ARIZONA_IN1R_ENA 0x0001 /* IN1R_ENA */ | ||
| 2161 | #define ARIZONA_IN1R_ENA_MASK 0x0001 /* IN1R_ENA */ | ||
| 2162 | #define ARIZONA_IN1R_ENA_SHIFT 0 /* IN1R_ENA */ | ||
| 2163 | #define ARIZONA_IN1R_ENA_WIDTH 1 /* IN1R_ENA */ | ||
| 2164 | |||
| 2165 | /* | ||
| 2166 | * R776 (0x308) - Input Rate | ||
| 2167 | */ | ||
| 2168 | #define ARIZONA_IN_RATE_MASK 0x7800 /* IN_RATE - [14:11] */ | ||
| 2169 | #define ARIZONA_IN_RATE_SHIFT 11 /* IN_RATE - [14:11] */ | ||
| 2170 | #define ARIZONA_IN_RATE_WIDTH 4 /* IN_RATE - [14:11] */ | ||
| 2171 | |||
| 2172 | /* | ||
| 2173 | * R777 (0x309) - Input Volume Ramp | ||
| 2174 | */ | ||
| 2175 | #define ARIZONA_IN_VD_RAMP_MASK 0x0070 /* IN_VD_RAMP - [6:4] */ | ||
| 2176 | #define ARIZONA_IN_VD_RAMP_SHIFT 4 /* IN_VD_RAMP - [6:4] */ | ||
| 2177 | #define ARIZONA_IN_VD_RAMP_WIDTH 3 /* IN_VD_RAMP - [6:4] */ | ||
| 2178 | #define ARIZONA_IN_VI_RAMP_MASK 0x0007 /* IN_VI_RAMP - [2:0] */ | ||
| 2179 | #define ARIZONA_IN_VI_RAMP_SHIFT 0 /* IN_VI_RAMP - [2:0] */ | ||
| 2180 | #define ARIZONA_IN_VI_RAMP_WIDTH 3 /* IN_VI_RAMP - [2:0] */ | ||
| 2181 | |||
| 2182 | /* | ||
| 2183 | * R784 (0x310) - IN1L Control | ||
| 2184 | */ | ||
| 2185 | #define ARIZONA_IN1_OSR_MASK 0x6000 /* IN1_OSR - [14:13] */ | ||
| 2186 | #define ARIZONA_IN1_OSR_SHIFT 13 /* IN1_OSR - [14:13] */ | ||
| 2187 | #define ARIZONA_IN1_OSR_WIDTH 2 /* IN1_OSR - [14:13] */ | ||
| 2188 | #define ARIZONA_IN1_DMIC_SUP_MASK 0x1800 /* IN1_DMIC_SUP - [12:11] */ | ||
| 2189 | #define ARIZONA_IN1_DMIC_SUP_SHIFT 11 /* IN1_DMIC_SUP - [12:11] */ | ||
| 2190 | #define ARIZONA_IN1_DMIC_SUP_WIDTH 2 /* IN1_DMIC_SUP - [12:11] */ | ||
| 2191 | #define ARIZONA_IN1_MODE_MASK 0x0600 /* IN1_MODE - [10:9] */ | ||
| 2192 | #define ARIZONA_IN1_MODE_SHIFT 9 /* IN1_MODE - [10:9] */ | ||
| 2193 | #define ARIZONA_IN1_MODE_WIDTH 2 /* IN1_MODE - [10:9] */ | ||
| 2194 | #define ARIZONA_IN1L_PGA_VOL_MASK 0x00FE /* IN1L_PGA_VOL - [7:1] */ | ||
| 2195 | #define ARIZONA_IN1L_PGA_VOL_SHIFT 1 /* IN1L_PGA_VOL - [7:1] */ | ||
| 2196 | #define ARIZONA_IN1L_PGA_VOL_WIDTH 7 /* IN1L_PGA_VOL - [7:1] */ | ||
| 2197 | |||
| 2198 | /* | ||
| 2199 | * R785 (0x311) - ADC Digital Volume 1L | ||
| 2200 | */ | ||
| 2201 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | ||
| 2202 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | ||
| 2203 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | ||
| 2204 | #define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */ | ||
| 2205 | #define ARIZONA_IN1L_MUTE 0x0100 /* IN1L_MUTE */ | ||
| 2206 | #define ARIZONA_IN1L_MUTE_MASK 0x0100 /* IN1L_MUTE */ | ||
| 2207 | #define ARIZONA_IN1L_MUTE_SHIFT 8 /* IN1L_MUTE */ | ||
| 2208 | #define ARIZONA_IN1L_MUTE_WIDTH 1 /* IN1L_MUTE */ | ||
| 2209 | #define ARIZONA_IN1L_DIG_VOL_MASK 0x00FF /* IN1L_DIG_VOL - [7:0] */ | ||
| 2210 | #define ARIZONA_IN1L_DIG_VOL_SHIFT 0 /* IN1L_DIG_VOL - [7:0] */ | ||
| 2211 | #define ARIZONA_IN1L_DIG_VOL_WIDTH 8 /* IN1L_DIG_VOL - [7:0] */ | ||
| 2212 | |||
| 2213 | /* | ||
| 2214 | * R786 (0x312) - DMIC1L Control | ||
| 2215 | */ | ||
| 2216 | #define ARIZONA_IN1_DMICL_DLY_MASK 0x003F /* IN1_DMICL_DLY - [5:0] */ | ||
| 2217 | #define ARIZONA_IN1_DMICL_DLY_SHIFT 0 /* IN1_DMICL_DLY - [5:0] */ | ||
| 2218 | #define ARIZONA_IN1_DMICL_DLY_WIDTH 6 /* IN1_DMICL_DLY - [5:0] */ | ||
| 2219 | |||
| 2220 | /* | ||
| 2221 | * R788 (0x314) - IN1R Control | ||
| 2222 | */ | ||
| 2223 | #define ARIZONA_IN1R_PGA_VOL_MASK 0x00FE /* IN1R_PGA_VOL - [7:1] */ | ||
| 2224 | #define ARIZONA_IN1R_PGA_VOL_SHIFT 1 /* IN1R_PGA_VOL - [7:1] */ | ||
| 2225 | #define ARIZONA_IN1R_PGA_VOL_WIDTH 7 /* IN1R_PGA_VOL - [7:1] */ | ||
| 2226 | |||
| 2227 | /* | ||
| 2228 | * R789 (0x315) - ADC Digital Volume 1R | ||
| 2229 | */ | ||
| 2230 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | ||
| 2231 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | ||
| 2232 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | ||
| 2233 | #define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */ | ||
| 2234 | #define ARIZONA_IN1R_MUTE 0x0100 /* IN1R_MUTE */ | ||
| 2235 | #define ARIZONA_IN1R_MUTE_MASK 0x0100 /* IN1R_MUTE */ | ||
| 2236 | #define ARIZONA_IN1R_MUTE_SHIFT 8 /* IN1R_MUTE */ | ||
| 2237 | #define ARIZONA_IN1R_MUTE_WIDTH 1 /* IN1R_MUTE */ | ||
| 2238 | #define ARIZONA_IN1R_DIG_VOL_MASK 0x00FF /* IN1R_DIG_VOL - [7:0] */ | ||
| 2239 | #define ARIZONA_IN1R_DIG_VOL_SHIFT 0 /* IN1R_DIG_VOL - [7:0] */ | ||
| 2240 | #define ARIZONA_IN1R_DIG_VOL_WIDTH 8 /* IN1R_DIG_VOL - [7:0] */ | ||
| 2241 | |||
| 2242 | /* | ||
| 2243 | * R790 (0x316) - DMIC1R Control | ||
| 2244 | */ | ||
| 2245 | #define ARIZONA_IN1_DMICR_DLY_MASK 0x003F /* IN1_DMICR_DLY - [5:0] */ | ||
| 2246 | #define ARIZONA_IN1_DMICR_DLY_SHIFT 0 /* IN1_DMICR_DLY - [5:0] */ | ||
| 2247 | #define ARIZONA_IN1_DMICR_DLY_WIDTH 6 /* IN1_DMICR_DLY - [5:0] */ | ||
| 2248 | |||
| 2249 | /* | ||
| 2250 | * R792 (0x318) - IN2L Control | ||
| 2251 | */ | ||
| 2252 | #define ARIZONA_IN2_OSR_MASK 0x6000 /* IN2_OSR - [14:13] */ | ||
| 2253 | #define ARIZONA_IN2_OSR_SHIFT 13 /* IN2_OSR - [14:13] */ | ||
| 2254 | #define ARIZONA_IN2_OSR_WIDTH 2 /* IN2_OSR - [14:13] */ | ||
| 2255 | #define ARIZONA_IN2_DMIC_SUP_MASK 0x1800 /* IN2_DMIC_SUP - [12:11] */ | ||
| 2256 | #define ARIZONA_IN2_DMIC_SUP_SHIFT 11 /* IN2_DMIC_SUP - [12:11] */ | ||
| 2257 | #define ARIZONA_IN2_DMIC_SUP_WIDTH 2 /* IN2_DMIC_SUP - [12:11] */ | ||
| 2258 | #define ARIZONA_IN2_MODE_MASK 0x0600 /* IN2_MODE - [10:9] */ | ||
| 2259 | #define ARIZONA_IN2_MODE_SHIFT 9 /* IN2_MODE - [10:9] */ | ||
| 2260 | #define ARIZONA_IN2_MODE_WIDTH 2 /* IN2_MODE - [10:9] */ | ||
| 2261 | #define ARIZONA_IN2L_PGA_VOL_MASK 0x00FE /* IN2L_PGA_VOL - [7:1] */ | ||
| 2262 | #define ARIZONA_IN2L_PGA_VOL_SHIFT 1 /* IN2L_PGA_VOL - [7:1] */ | ||
| 2263 | #define ARIZONA_IN2L_PGA_VOL_WIDTH 7 /* IN2L_PGA_VOL - [7:1] */ | ||
| 2264 | |||
| 2265 | /* | ||
| 2266 | * R793 (0x319) - ADC Digital Volume 2L | ||
| 2267 | */ | ||
| 2268 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | ||
| 2269 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | ||
| 2270 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | ||
| 2271 | #define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */ | ||
| 2272 | #define ARIZONA_IN2L_MUTE 0x0100 /* IN2L_MUTE */ | ||
| 2273 | #define ARIZONA_IN2L_MUTE_MASK 0x0100 /* IN2L_MUTE */ | ||
| 2274 | #define ARIZONA_IN2L_MUTE_SHIFT 8 /* IN2L_MUTE */ | ||
| 2275 | #define ARIZONA_IN2L_MUTE_WIDTH 1 /* IN2L_MUTE */ | ||
| 2276 | #define ARIZONA_IN2L_DIG_VOL_MASK 0x00FF /* IN2L_DIG_VOL - [7:0] */ | ||
| 2277 | #define ARIZONA_IN2L_DIG_VOL_SHIFT 0 /* IN2L_DIG_VOL - [7:0] */ | ||
| 2278 | #define ARIZONA_IN2L_DIG_VOL_WIDTH 8 /* IN2L_DIG_VOL - [7:0] */ | ||
| 2279 | |||
| 2280 | /* | ||
| 2281 | * R794 (0x31A) - DMIC2L Control | ||
| 2282 | */ | ||
| 2283 | #define ARIZONA_IN2_DMICL_DLY_MASK 0x003F /* IN2_DMICL_DLY - [5:0] */ | ||
| 2284 | #define ARIZONA_IN2_DMICL_DLY_SHIFT 0 /* IN2_DMICL_DLY - [5:0] */ | ||
| 2285 | #define ARIZONA_IN2_DMICL_DLY_WIDTH 6 /* IN2_DMICL_DLY - [5:0] */ | ||
| 2286 | |||
| 2287 | /* | ||
| 2288 | * R796 (0x31C) - IN2R Control | ||
| 2289 | */ | ||
| 2290 | #define ARIZONA_IN2R_PGA_VOL_MASK 0x00FE /* IN2R_PGA_VOL - [7:1] */ | ||
| 2291 | #define ARIZONA_IN2R_PGA_VOL_SHIFT 1 /* IN2R_PGA_VOL - [7:1] */ | ||
| 2292 | #define ARIZONA_IN2R_PGA_VOL_WIDTH 7 /* IN2R_PGA_VOL - [7:1] */ | ||
| 2293 | |||
| 2294 | /* | ||
| 2295 | * R797 (0x31D) - ADC Digital Volume 2R | ||
| 2296 | */ | ||
| 2297 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | ||
| 2298 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | ||
| 2299 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | ||
| 2300 | #define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */ | ||
| 2301 | #define ARIZONA_IN2R_MUTE 0x0100 /* IN2R_MUTE */ | ||
| 2302 | #define ARIZONA_IN2R_MUTE_MASK 0x0100 /* IN2R_MUTE */ | ||
| 2303 | #define ARIZONA_IN2R_MUTE_SHIFT 8 /* IN2R_MUTE */ | ||
| 2304 | #define ARIZONA_IN2R_MUTE_WIDTH 1 /* IN2R_MUTE */ | ||
| 2305 | #define ARIZONA_IN2R_DIG_VOL_MASK 0x00FF /* IN2R_DIG_VOL - [7:0] */ | ||
| 2306 | #define ARIZONA_IN2R_DIG_VOL_SHIFT 0 /* IN2R_DIG_VOL - [7:0] */ | ||
| 2307 | #define ARIZONA_IN2R_DIG_VOL_WIDTH 8 /* IN2R_DIG_VOL - [7:0] */ | ||
| 2308 | |||
| 2309 | /* | ||
| 2310 | * R798 (0x31E) - DMIC2R Control | ||
| 2311 | */ | ||
| 2312 | #define ARIZONA_IN2_DMICR_DLY_MASK 0x003F /* IN2_DMICR_DLY - [5:0] */ | ||
| 2313 | #define ARIZONA_IN2_DMICR_DLY_SHIFT 0 /* IN2_DMICR_DLY - [5:0] */ | ||
| 2314 | #define ARIZONA_IN2_DMICR_DLY_WIDTH 6 /* IN2_DMICR_DLY - [5:0] */ | ||
| 2315 | |||
| 2316 | /* | ||
| 2317 | * R800 (0x320) - IN3L Control | ||
| 2318 | */ | ||
| 2319 | #define ARIZONA_IN3_OSR_MASK 0x6000 /* IN3_OSR - [14:13] */ | ||
| 2320 | #define ARIZONA_IN3_OSR_SHIFT 13 /* IN3_OSR - [14:13] */ | ||
| 2321 | #define ARIZONA_IN3_OSR_WIDTH 2 /* IN3_OSR - [14:13] */ | ||
| 2322 | #define ARIZONA_IN3_DMIC_SUP_MASK 0x1800 /* IN3_DMIC_SUP - [12:11] */ | ||
| 2323 | #define ARIZONA_IN3_DMIC_SUP_SHIFT 11 /* IN3_DMIC_SUP - [12:11] */ | ||
| 2324 | #define ARIZONA_IN3_DMIC_SUP_WIDTH 2 /* IN3_DMIC_SUP - [12:11] */ | ||
| 2325 | #define ARIZONA_IN3_MODE_MASK 0x0600 /* IN3_MODE - [10:9] */ | ||
| 2326 | #define ARIZONA_IN3_MODE_SHIFT 9 /* IN3_MODE - [10:9] */ | ||
| 2327 | #define ARIZONA_IN3_MODE_WIDTH 2 /* IN3_MODE - [10:9] */ | ||
| 2328 | #define ARIZONA_IN3L_PGA_VOL_MASK 0x00FE /* IN3L_PGA_VOL - [7:1] */ | ||
| 2329 | #define ARIZONA_IN3L_PGA_VOL_SHIFT 1 /* IN3L_PGA_VOL - [7:1] */ | ||
| 2330 | #define ARIZONA_IN3L_PGA_VOL_WIDTH 7 /* IN3L_PGA_VOL - [7:1] */ | ||
| 2331 | |||
| 2332 | /* | ||
| 2333 | * R801 (0x321) - ADC Digital Volume 3L | ||
| 2334 | */ | ||
| 2335 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | ||
| 2336 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | ||
| 2337 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | ||
| 2338 | #define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */ | ||
| 2339 | #define ARIZONA_IN3L_MUTE 0x0100 /* IN3L_MUTE */ | ||
| 2340 | #define ARIZONA_IN3L_MUTE_MASK 0x0100 /* IN3L_MUTE */ | ||
| 2341 | #define ARIZONA_IN3L_MUTE_SHIFT 8 /* IN3L_MUTE */ | ||
| 2342 | #define ARIZONA_IN3L_MUTE_WIDTH 1 /* IN3L_MUTE */ | ||
| 2343 | #define ARIZONA_IN3L_DIG_VOL_MASK 0x00FF /* IN3L_DIG_VOL - [7:0] */ | ||
| 2344 | #define ARIZONA_IN3L_DIG_VOL_SHIFT 0 /* IN3L_DIG_VOL - [7:0] */ | ||
| 2345 | #define ARIZONA_IN3L_DIG_VOL_WIDTH 8 /* IN3L_DIG_VOL - [7:0] */ | ||
| 2346 | |||
| 2347 | /* | ||
| 2348 | * R802 (0x322) - DMIC3L Control | ||
| 2349 | */ | ||
| 2350 | #define ARIZONA_IN3_DMICL_DLY_MASK 0x003F /* IN3_DMICL_DLY - [5:0] */ | ||
| 2351 | #define ARIZONA_IN3_DMICL_DLY_SHIFT 0 /* IN3_DMICL_DLY - [5:0] */ | ||
| 2352 | #define ARIZONA_IN3_DMICL_DLY_WIDTH 6 /* IN3_DMICL_DLY - [5:0] */ | ||
| 2353 | |||
| 2354 | /* | ||
| 2355 | * R804 (0x324) - IN3R Control | ||
| 2356 | */ | ||
| 2357 | #define ARIZONA_IN3R_PGA_VOL_MASK 0x00FE /* IN3R_PGA_VOL - [7:1] */ | ||
| 2358 | #define ARIZONA_IN3R_PGA_VOL_SHIFT 1 /* IN3R_PGA_VOL - [7:1] */ | ||
| 2359 | #define ARIZONA_IN3R_PGA_VOL_WIDTH 7 /* IN3R_PGA_VOL - [7:1] */ | ||
| 2360 | |||
| 2361 | /* | ||
| 2362 | * R805 (0x325) - ADC Digital Volume 3R | ||
| 2363 | */ | ||
| 2364 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | ||
| 2365 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | ||
| 2366 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | ||
| 2367 | #define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */ | ||
| 2368 | #define ARIZONA_IN3R_MUTE 0x0100 /* IN3R_MUTE */ | ||
| 2369 | #define ARIZONA_IN3R_MUTE_MASK 0x0100 /* IN3R_MUTE */ | ||
| 2370 | #define ARIZONA_IN3R_MUTE_SHIFT 8 /* IN3R_MUTE */ | ||
| 2371 | #define ARIZONA_IN3R_MUTE_WIDTH 1 /* IN3R_MUTE */ | ||
| 2372 | #define ARIZONA_IN3R_DIG_VOL_MASK 0x00FF /* IN3R_DIG_VOL - [7:0] */ | ||
| 2373 | #define ARIZONA_IN3R_DIG_VOL_SHIFT 0 /* IN3R_DIG_VOL - [7:0] */ | ||
| 2374 | #define ARIZONA_IN3R_DIG_VOL_WIDTH 8 /* IN3R_DIG_VOL - [7:0] */ | ||
| 2375 | |||
| 2376 | /* | ||
| 2377 | * R806 (0x326) - DMIC3R Control | ||
| 2378 | */ | ||
| 2379 | #define ARIZONA_IN3_DMICR_DLY_MASK 0x003F /* IN3_DMICR_DLY - [5:0] */ | ||
| 2380 | #define ARIZONA_IN3_DMICR_DLY_SHIFT 0 /* IN3_DMICR_DLY - [5:0] */ | ||
| 2381 | #define ARIZONA_IN3_DMICR_DLY_WIDTH 6 /* IN3_DMICR_DLY - [5:0] */ | ||
| 2382 | |||
| 2383 | /* | ||
| 2384 | * R808 (0x328) - IN4 Control | ||
| 2385 | */ | ||
| 2386 | #define ARIZONA_IN4_OSR_MASK 0x6000 /* IN4_OSR - [14:13] */ | ||
| 2387 | #define ARIZONA_IN4_OSR_SHIFT 13 /* IN4_OSR - [14:13] */ | ||
| 2388 | #define ARIZONA_IN4_OSR_WIDTH 2 /* IN4_OSR - [14:13] */ | ||
| 2389 | #define ARIZONA_IN4_DMIC_SUP_MASK 0x1800 /* IN4_DMIC_SUP - [12:11] */ | ||
| 2390 | #define ARIZONA_IN4_DMIC_SUP_SHIFT 11 /* IN4_DMIC_SUP - [12:11] */ | ||
| 2391 | #define ARIZONA_IN4_DMIC_SUP_WIDTH 2 /* IN4_DMIC_SUP - [12:11] */ | ||
| 2392 | |||
| 2393 | /* | ||
| 2394 | * R809 (0x329) - ADC Digital Volume 4L | ||
| 2395 | */ | ||
| 2396 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | ||
| 2397 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | ||
| 2398 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | ||
| 2399 | #define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */ | ||
| 2400 | #define ARIZONA_IN4L_MUTE 0x0100 /* IN4L_MUTE */ | ||
| 2401 | #define ARIZONA_IN4L_MUTE_MASK 0x0100 /* IN4L_MUTE */ | ||
| 2402 | #define ARIZONA_IN4L_MUTE_SHIFT 8 /* IN4L_MUTE */ | ||
| 2403 | #define ARIZONA_IN4L_MUTE_WIDTH 1 /* IN4L_MUTE */ | ||
| 2404 | #define ARIZONA_IN4L_DIG_VOL_MASK 0x00FF /* IN4L_DIG_VOL - [7:0] */ | ||
| 2405 | #define ARIZONA_IN4L_DIG_VOL_SHIFT 0 /* IN4L_DIG_VOL - [7:0] */ | ||
| 2406 | #define ARIZONA_IN4L_DIG_VOL_WIDTH 8 /* IN4L_DIG_VOL - [7:0] */ | ||
| 2407 | |||
| 2408 | /* | ||
| 2409 | * R810 (0x32A) - DMIC4L Control | ||
| 2410 | */ | ||
| 2411 | #define ARIZONA_IN4L_DMIC_DLY_MASK 0x003F /* IN4L_DMIC_DLY - [5:0] */ | ||
| 2412 | #define ARIZONA_IN4L_DMIC_DLY_SHIFT 0 /* IN4L_DMIC_DLY - [5:0] */ | ||
| 2413 | #define ARIZONA_IN4L_DMIC_DLY_WIDTH 6 /* IN4L_DMIC_DLY - [5:0] */ | ||
| 2414 | |||
| 2415 | /* | ||
| 2416 | * R813 (0x32D) - ADC Digital Volume 4R | ||
| 2417 | */ | ||
| 2418 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | ||
| 2419 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | ||
| 2420 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | ||
| 2421 | #define ARIZONA_IN_VU_WIDTH 1 /* IN_VU */ | ||
| 2422 | #define ARIZONA_IN4R_MUTE 0x0100 /* IN4R_MUTE */ | ||
| 2423 | #define ARIZONA_IN4R_MUTE_MASK 0x0100 /* IN4R_MUTE */ | ||
| 2424 | #define ARIZONA_IN4R_MUTE_SHIFT 8 /* IN4R_MUTE */ | ||
| 2425 | #define ARIZONA_IN4R_MUTE_WIDTH 1 /* IN4R_MUTE */ | ||
| 2426 | #define ARIZONA_IN4R_DIG_VOL_MASK 0x00FF /* IN4R_DIG_VOL - [7:0] */ | ||
| 2427 | #define ARIZONA_IN4R_DIG_VOL_SHIFT 0 /* IN4R_DIG_VOL - [7:0] */ | ||
| 2428 | #define ARIZONA_IN4R_DIG_VOL_WIDTH 8 /* IN4R_DIG_VOL - [7:0] */ | ||
| 2429 | |||
| 2430 | /* | ||
| 2431 | * R814 (0x32E) - DMIC4R Control | ||
| 2432 | */ | ||
| 2433 | #define ARIZONA_IN4R_DMIC_DLY_MASK 0x003F /* IN4R_DMIC_DLY - [5:0] */ | ||
| 2434 | #define ARIZONA_IN4R_DMIC_DLY_SHIFT 0 /* IN4R_DMIC_DLY - [5:0] */ | ||
| 2435 | #define ARIZONA_IN4R_DMIC_DLY_WIDTH 6 /* IN4R_DMIC_DLY - [5:0] */ | ||
| 2436 | |||
| 2437 | /* | ||
| 2438 | * R1024 (0x400) - Output Enables 1 | ||
| 2439 | */ | ||
| 2440 | #define ARIZONA_OUT6L_ENA 0x0800 /* OUT6L_ENA */ | ||
| 2441 | #define ARIZONA_OUT6L_ENA_MASK 0x0800 /* OUT6L_ENA */ | ||
| 2442 | #define ARIZONA_OUT6L_ENA_SHIFT 11 /* OUT6L_ENA */ | ||
| 2443 | #define ARIZONA_OUT6L_ENA_WIDTH 1 /* OUT6L_ENA */ | ||
| 2444 | #define ARIZONA_OUT6R_ENA 0x0400 /* OUT6R_ENA */ | ||
| 2445 | #define ARIZONA_OUT6R_ENA_MASK 0x0400 /* OUT6R_ENA */ | ||
| 2446 | #define ARIZONA_OUT6R_ENA_SHIFT 10 /* OUT6R_ENA */ | ||
| 2447 | #define ARIZONA_OUT6R_ENA_WIDTH 1 /* OUT6R_ENA */ | ||
| 2448 | #define ARIZONA_OUT5L_ENA 0x0200 /* OUT5L_ENA */ | ||
| 2449 | #define ARIZONA_OUT5L_ENA_MASK 0x0200 /* OUT5L_ENA */ | ||
| 2450 | #define ARIZONA_OUT5L_ENA_SHIFT 9 /* OUT5L_ENA */ | ||
| 2451 | #define ARIZONA_OUT5L_ENA_WIDTH 1 /* OUT5L_ENA */ | ||
| 2452 | #define ARIZONA_OUT5R_ENA 0x0100 /* OUT5R_ENA */ | ||
| 2453 | #define ARIZONA_OUT5R_ENA_MASK 0x0100 /* OUT5R_ENA */ | ||
| 2454 | #define ARIZONA_OUT5R_ENA_SHIFT 8 /* OUT5R_ENA */ | ||
| 2455 | #define ARIZONA_OUT5R_ENA_WIDTH 1 /* OUT5R_ENA */ | ||
| 2456 | #define ARIZONA_OUT4L_ENA 0x0080 /* OUT4L_ENA */ | ||
| 2457 | #define ARIZONA_OUT4L_ENA_MASK 0x0080 /* OUT4L_ENA */ | ||
| 2458 | #define ARIZONA_OUT4L_ENA_SHIFT 7 /* OUT4L_ENA */ | ||
| 2459 | #define ARIZONA_OUT4L_ENA_WIDTH 1 /* OUT4L_ENA */ | ||
| 2460 | #define ARIZONA_OUT4R_ENA 0x0040 /* OUT4R_ENA */ | ||
| 2461 | #define ARIZONA_OUT4R_ENA_MASK 0x0040 /* OUT4R_ENA */ | ||
| 2462 | #define ARIZONA_OUT4R_ENA_SHIFT 6 /* OUT4R_ENA */ | ||
| 2463 | #define ARIZONA_OUT4R_ENA_WIDTH 1 /* OUT4R_ENA */ | ||
| 2464 | #define ARIZONA_OUT3L_ENA 0x0020 /* OUT3L_ENA */ | ||
| 2465 | #define ARIZONA_OUT3L_ENA_MASK 0x0020 /* OUT3L_ENA */ | ||
| 2466 | #define ARIZONA_OUT3L_ENA_SHIFT 5 /* OUT3L_ENA */ | ||
| 2467 | #define ARIZONA_OUT3L_ENA_WIDTH 1 /* OUT3L_ENA */ | ||
| 2468 | #define ARIZONA_OUT3R_ENA 0x0010 /* OUT3R_ENA */ | ||
| 2469 | #define ARIZONA_OUT3R_ENA_MASK 0x0010 /* OUT3R_ENA */ | ||
| 2470 | #define ARIZONA_OUT3R_ENA_SHIFT 4 /* OUT3R_ENA */ | ||
| 2471 | #define ARIZONA_OUT3R_ENA_WIDTH 1 /* OUT3R_ENA */ | ||
| 2472 | #define ARIZONA_OUT2L_ENA 0x0008 /* OUT2L_ENA */ | ||
| 2473 | #define ARIZONA_OUT2L_ENA_MASK 0x0008 /* OUT2L_ENA */ | ||
| 2474 | #define ARIZONA_OUT2L_ENA_SHIFT 3 /* OUT2L_ENA */ | ||
| 2475 | #define ARIZONA_OUT2L_ENA_WIDTH 1 /* OUT2L_ENA */ | ||
| 2476 | #define ARIZONA_OUT2R_ENA 0x0004 /* OUT2R_ENA */ | ||
| 2477 | #define ARIZONA_OUT2R_ENA_MASK 0x0004 /* OUT2R_ENA */ | ||
| 2478 | #define ARIZONA_OUT2R_ENA_SHIFT 2 /* OUT2R_ENA */ | ||
| 2479 | #define ARIZONA_OUT2R_ENA_WIDTH 1 /* OUT2R_ENA */ | ||
| 2480 | #define ARIZONA_OUT1L_ENA 0x0002 /* OUT1L_ENA */ | ||
| 2481 | #define ARIZONA_OUT1L_ENA_MASK 0x0002 /* OUT1L_ENA */ | ||
| 2482 | #define ARIZONA_OUT1L_ENA_SHIFT 1 /* OUT1L_ENA */ | ||
| 2483 | #define ARIZONA_OUT1L_ENA_WIDTH 1 /* OUT1L_ENA */ | ||
| 2484 | #define ARIZONA_OUT1R_ENA 0x0001 /* OUT1R_ENA */ | ||
| 2485 | #define ARIZONA_OUT1R_ENA_MASK 0x0001 /* OUT1R_ENA */ | ||
| 2486 | #define ARIZONA_OUT1R_ENA_SHIFT 0 /* OUT1R_ENA */ | ||
| 2487 | #define ARIZONA_OUT1R_ENA_WIDTH 1 /* OUT1R_ENA */ | ||
| 2488 | |||
| 2489 | /* | ||
| 2490 | * R1025 (0x401) - Output Status 1 | ||
| 2491 | */ | ||
| 2492 | #define ARIZONA_OUT6L_ENA_STS 0x0800 /* OUT6L_ENA_STS */ | ||
| 2493 | #define ARIZONA_OUT6L_ENA_STS_MASK 0x0800 /* OUT6L_ENA_STS */ | ||
| 2494 | #define ARIZONA_OUT6L_ENA_STS_SHIFT 11 /* OUT6L_ENA_STS */ | ||
| 2495 | #define ARIZONA_OUT6L_ENA_STS_WIDTH 1 /* OUT6L_ENA_STS */ | ||
| 2496 | #define ARIZONA_OUT6R_ENA_STS 0x0400 /* OUT6R_ENA_STS */ | ||
| 2497 | #define ARIZONA_OUT6R_ENA_STS_MASK 0x0400 /* OUT6R_ENA_STS */ | ||
| 2498 | #define ARIZONA_OUT6R_ENA_STS_SHIFT 10 /* OUT6R_ENA_STS */ | ||
| 2499 | #define ARIZONA_OUT6R_ENA_STS_WIDTH 1 /* OUT6R_ENA_STS */ | ||
| 2500 | #define ARIZONA_OUT5L_ENA_STS 0x0200 /* OUT5L_ENA_STS */ | ||
| 2501 | #define ARIZONA_OUT5L_ENA_STS_MASK 0x0200 /* OUT5L_ENA_STS */ | ||
| 2502 | #define ARIZONA_OUT5L_ENA_STS_SHIFT 9 /* OUT5L_ENA_STS */ | ||
| 2503 | #define ARIZONA_OUT5L_ENA_STS_WIDTH 1 /* OUT5L_ENA_STS */ | ||
| 2504 | #define ARIZONA_OUT5R_ENA_STS 0x0100 /* OUT5R_ENA_STS */ | ||
| 2505 | #define ARIZONA_OUT5R_ENA_STS_MASK 0x0100 /* OUT5R_ENA_STS */ | ||
| 2506 | #define ARIZONA_OUT5R_ENA_STS_SHIFT 8 /* OUT5R_ENA_STS */ | ||
| 2507 | #define ARIZONA_OUT5R_ENA_STS_WIDTH 1 /* OUT5R_ENA_STS */ | ||
| 2508 | #define ARIZONA_OUT4L_ENA_STS 0x0080 /* OUT4L_ENA_STS */ | ||
| 2509 | #define ARIZONA_OUT4L_ENA_STS_MASK 0x0080 /* OUT4L_ENA_STS */ | ||
| 2510 | #define ARIZONA_OUT4L_ENA_STS_SHIFT 7 /* OUT4L_ENA_STS */ | ||
| 2511 | #define ARIZONA_OUT4L_ENA_STS_WIDTH 1 /* OUT4L_ENA_STS */ | ||
| 2512 | #define ARIZONA_OUT4R_ENA_STS 0x0040 /* OUT4R_ENA_STS */ | ||
| 2513 | #define ARIZONA_OUT4R_ENA_STS_MASK 0x0040 /* OUT4R_ENA_STS */ | ||
| 2514 | #define ARIZONA_OUT4R_ENA_STS_SHIFT 6 /* OUT4R_ENA_STS */ | ||
| 2515 | #define ARIZONA_OUT4R_ENA_STS_WIDTH 1 /* OUT4R_ENA_STS */ | ||
| 2516 | |||
| 2517 | /* | ||
| 2518 | * R1032 (0x408) - Output Rate 1 | ||
| 2519 | */ | ||
| 2520 | #define ARIZONA_OUT_RATE_MASK 0x7800 /* OUT_RATE - [14:11] */ | ||
| 2521 | #define ARIZONA_OUT_RATE_SHIFT 11 /* OUT_RATE - [14:11] */ | ||
| 2522 | #define ARIZONA_OUT_RATE_WIDTH 4 /* OUT_RATE - [14:11] */ | ||
| 2523 | |||
| 2524 | /* | ||
| 2525 | * R1033 (0x409) - Output Volume Ramp | ||
| 2526 | */ | ||
| 2527 | #define ARIZONA_OUT_VD_RAMP_MASK 0x0070 /* OUT_VD_RAMP - [6:4] */ | ||
| 2528 | #define ARIZONA_OUT_VD_RAMP_SHIFT 4 /* OUT_VD_RAMP - [6:4] */ | ||
| 2529 | #define ARIZONA_OUT_VD_RAMP_WIDTH 3 /* OUT_VD_RAMP - [6:4] */ | ||
| 2530 | #define ARIZONA_OUT_VI_RAMP_MASK 0x0007 /* OUT_VI_RAMP - [2:0] */ | ||
| 2531 | #define ARIZONA_OUT_VI_RAMP_SHIFT 0 /* OUT_VI_RAMP - [2:0] */ | ||
| 2532 | #define ARIZONA_OUT_VI_RAMP_WIDTH 3 /* OUT_VI_RAMP - [2:0] */ | ||
| 2533 | |||
| 2534 | /* | ||
| 2535 | * R1040 (0x410) - Output Path Config 1L | ||
| 2536 | */ | ||
| 2537 | #define ARIZONA_OUT1_LP_MODE 0x8000 /* OUT1_LP_MODE */ | ||
| 2538 | #define ARIZONA_OUT1_LP_MODE_MASK 0x8000 /* OUT1_LP_MODE */ | ||
| 2539 | #define ARIZONA_OUT1_LP_MODE_SHIFT 15 /* OUT1_LP_MODE */ | ||
| 2540 | #define ARIZONA_OUT1_LP_MODE_WIDTH 1 /* OUT1_LP_MODE */ | ||
| 2541 | #define ARIZONA_OUT1_OSR 0x2000 /* OUT1_OSR */ | ||
| 2542 | #define ARIZONA_OUT1_OSR_MASK 0x2000 /* OUT1_OSR */ | ||
| 2543 | #define ARIZONA_OUT1_OSR_SHIFT 13 /* OUT1_OSR */ | ||
| 2544 | #define ARIZONA_OUT1_OSR_WIDTH 1 /* OUT1_OSR */ | ||
| 2545 | #define ARIZONA_OUT1_MONO 0x1000 /* OUT1_MONO */ | ||
| 2546 | #define ARIZONA_OUT1_MONO_MASK 0x1000 /* OUT1_MONO */ | ||
| 2547 | #define ARIZONA_OUT1_MONO_SHIFT 12 /* OUT1_MONO */ | ||
| 2548 | #define ARIZONA_OUT1_MONO_WIDTH 1 /* OUT1_MONO */ | ||
| 2549 | #define ARIZONA_OUT1L_ANC_SRC_MASK 0x0C00 /* OUT1L_ANC_SRC - [11:10] */ | ||
| 2550 | #define ARIZONA_OUT1L_ANC_SRC_SHIFT 10 /* OUT1L_ANC_SRC - [11:10] */ | ||
| 2551 | #define ARIZONA_OUT1L_ANC_SRC_WIDTH 2 /* OUT1L_ANC_SRC - [11:10] */ | ||
| 2552 | #define ARIZONA_OUT1L_PGA_VOL_MASK 0x00FE /* OUT1L_PGA_VOL - [7:1] */ | ||
| 2553 | #define ARIZONA_OUT1L_PGA_VOL_SHIFT 1 /* OUT1L_PGA_VOL - [7:1] */ | ||
| 2554 | #define ARIZONA_OUT1L_PGA_VOL_WIDTH 7 /* OUT1L_PGA_VOL - [7:1] */ | ||
| 2555 | |||
| 2556 | /* | ||
| 2557 | * R1041 (0x411) - DAC Digital Volume 1L | ||
| 2558 | */ | ||
| 2559 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2560 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2561 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2562 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2563 | #define ARIZONA_OUT1L_MUTE 0x0100 /* OUT1L_MUTE */ | ||
| 2564 | #define ARIZONA_OUT1L_MUTE_MASK 0x0100 /* OUT1L_MUTE */ | ||
| 2565 | #define ARIZONA_OUT1L_MUTE_SHIFT 8 /* OUT1L_MUTE */ | ||
| 2566 | #define ARIZONA_OUT1L_MUTE_WIDTH 1 /* OUT1L_MUTE */ | ||
| 2567 | #define ARIZONA_OUT1L_VOL_MASK 0x00FF /* OUT1L_VOL - [7:0] */ | ||
| 2568 | #define ARIZONA_OUT1L_VOL_SHIFT 0 /* OUT1L_VOL - [7:0] */ | ||
| 2569 | #define ARIZONA_OUT1L_VOL_WIDTH 8 /* OUT1L_VOL - [7:0] */ | ||
| 2570 | |||
| 2571 | /* | ||
| 2572 | * R1042 (0x412) - DAC Volume Limit 1L | ||
| 2573 | */ | ||
| 2574 | #define ARIZONA_OUT1L_VOL_LIM_MASK 0x00FF /* OUT1L_VOL_LIM - [7:0] */ | ||
| 2575 | #define ARIZONA_OUT1L_VOL_LIM_SHIFT 0 /* OUT1L_VOL_LIM - [7:0] */ | ||
| 2576 | #define ARIZONA_OUT1L_VOL_LIM_WIDTH 8 /* OUT1L_VOL_LIM - [7:0] */ | ||
| 2577 | |||
| 2578 | /* | ||
| 2579 | * R1043 (0x413) - Noise Gate Select 1L | ||
| 2580 | */ | ||
| 2581 | #define ARIZONA_OUT1L_NGATE_SRC_MASK 0x0FFF /* OUT1L_NGATE_SRC - [11:0] */ | ||
| 2582 | #define ARIZONA_OUT1L_NGATE_SRC_SHIFT 0 /* OUT1L_NGATE_SRC - [11:0] */ | ||
| 2583 | #define ARIZONA_OUT1L_NGATE_SRC_WIDTH 12 /* OUT1L_NGATE_SRC - [11:0] */ | ||
| 2584 | |||
| 2585 | /* | ||
| 2586 | * R1044 (0x414) - Output Path Config 1R | ||
| 2587 | */ | ||
| 2588 | #define ARIZONA_OUT1R_ANC_SRC_MASK 0x0C00 /* OUT1R_ANC_SRC - [11:10] */ | ||
| 2589 | #define ARIZONA_OUT1R_ANC_SRC_SHIFT 10 /* OUT1R_ANC_SRC - [11:10] */ | ||
| 2590 | #define ARIZONA_OUT1R_ANC_SRC_WIDTH 2 /* OUT1R_ANC_SRC - [11:10] */ | ||
| 2591 | #define ARIZONA_OUT1R_PGA_VOL_MASK 0x00FE /* OUT1R_PGA_VOL - [7:1] */ | ||
| 2592 | #define ARIZONA_OUT1R_PGA_VOL_SHIFT 1 /* OUT1R_PGA_VOL - [7:1] */ | ||
| 2593 | #define ARIZONA_OUT1R_PGA_VOL_WIDTH 7 /* OUT1R_PGA_VOL - [7:1] */ | ||
| 2594 | |||
| 2595 | /* | ||
| 2596 | * R1045 (0x415) - DAC Digital Volume 1R | ||
| 2597 | */ | ||
| 2598 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2599 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2600 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2601 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2602 | #define ARIZONA_OUT1R_MUTE 0x0100 /* OUT1R_MUTE */ | ||
| 2603 | #define ARIZONA_OUT1R_MUTE_MASK 0x0100 /* OUT1R_MUTE */ | ||
| 2604 | #define ARIZONA_OUT1R_MUTE_SHIFT 8 /* OUT1R_MUTE */ | ||
| 2605 | #define ARIZONA_OUT1R_MUTE_WIDTH 1 /* OUT1R_MUTE */ | ||
| 2606 | #define ARIZONA_OUT1R_VOL_MASK 0x00FF /* OUT1R_VOL - [7:0] */ | ||
| 2607 | #define ARIZONA_OUT1R_VOL_SHIFT 0 /* OUT1R_VOL - [7:0] */ | ||
| 2608 | #define ARIZONA_OUT1R_VOL_WIDTH 8 /* OUT1R_VOL - [7:0] */ | ||
| 2609 | |||
| 2610 | /* | ||
| 2611 | * R1046 (0x416) - DAC Volume Limit 1R | ||
| 2612 | */ | ||
| 2613 | #define ARIZONA_OUT1R_VOL_LIM_MASK 0x00FF /* OUT1R_VOL_LIM - [7:0] */ | ||
| 2614 | #define ARIZONA_OUT1R_VOL_LIM_SHIFT 0 /* OUT1R_VOL_LIM - [7:0] */ | ||
| 2615 | #define ARIZONA_OUT1R_VOL_LIM_WIDTH 8 /* OUT1R_VOL_LIM - [7:0] */ | ||
| 2616 | |||
| 2617 | /* | ||
| 2618 | * R1047 (0x417) - Noise Gate Select 1R | ||
| 2619 | */ | ||
| 2620 | #define ARIZONA_OUT1R_NGATE_SRC_MASK 0x0FFF /* OUT1R_NGATE_SRC - [11:0] */ | ||
| 2621 | #define ARIZONA_OUT1R_NGATE_SRC_SHIFT 0 /* OUT1R_NGATE_SRC - [11:0] */ | ||
| 2622 | #define ARIZONA_OUT1R_NGATE_SRC_WIDTH 12 /* OUT1R_NGATE_SRC - [11:0] */ | ||
| 2623 | |||
| 2624 | /* | ||
| 2625 | * R1048 (0x418) - Output Path Config 2L | ||
| 2626 | */ | ||
| 2627 | #define ARIZONA_OUT2_LP_MODE 0x8000 /* OUT2_LP_MODE */ | ||
| 2628 | #define ARIZONA_OUT2_LP_MODE_MASK 0x8000 /* OUT2_LP_MODE */ | ||
| 2629 | #define ARIZONA_OUT2_LP_MODE_SHIFT 15 /* OUT2_LP_MODE */ | ||
| 2630 | #define ARIZONA_OUT2_LP_MODE_WIDTH 1 /* OUT2_LP_MODE */ | ||
| 2631 | #define ARIZONA_OUT2_OSR 0x2000 /* OUT2_OSR */ | ||
| 2632 | #define ARIZONA_OUT2_OSR_MASK 0x2000 /* OUT2_OSR */ | ||
| 2633 | #define ARIZONA_OUT2_OSR_SHIFT 13 /* OUT2_OSR */ | ||
| 2634 | #define ARIZONA_OUT2_OSR_WIDTH 1 /* OUT2_OSR */ | ||
| 2635 | #define ARIZONA_OUT2_MONO 0x1000 /* OUT2_MONO */ | ||
| 2636 | #define ARIZONA_OUT2_MONO_MASK 0x1000 /* OUT2_MONO */ | ||
| 2637 | #define ARIZONA_OUT2_MONO_SHIFT 12 /* OUT2_MONO */ | ||
| 2638 | #define ARIZONA_OUT2_MONO_WIDTH 1 /* OUT2_MONO */ | ||
| 2639 | #define ARIZONA_OUT2L_ANC_SRC_MASK 0x0C00 /* OUT2L_ANC_SRC - [11:10] */ | ||
| 2640 | #define ARIZONA_OUT2L_ANC_SRC_SHIFT 10 /* OUT2L_ANC_SRC - [11:10] */ | ||
| 2641 | #define ARIZONA_OUT2L_ANC_SRC_WIDTH 2 /* OUT2L_ANC_SRC - [11:10] */ | ||
| 2642 | #define ARIZONA_OUT2L_PGA_VOL_MASK 0x00FE /* OUT2L_PGA_VOL - [7:1] */ | ||
| 2643 | #define ARIZONA_OUT2L_PGA_VOL_SHIFT 1 /* OUT2L_PGA_VOL - [7:1] */ | ||
| 2644 | #define ARIZONA_OUT2L_PGA_VOL_WIDTH 7 /* OUT2L_PGA_VOL - [7:1] */ | ||
| 2645 | |||
| 2646 | /* | ||
| 2647 | * R1049 (0x419) - DAC Digital Volume 2L | ||
| 2648 | */ | ||
| 2649 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2650 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2651 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2652 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2653 | #define ARIZONA_OUT2L_MUTE 0x0100 /* OUT2L_MUTE */ | ||
| 2654 | #define ARIZONA_OUT2L_MUTE_MASK 0x0100 /* OUT2L_MUTE */ | ||
| 2655 | #define ARIZONA_OUT2L_MUTE_SHIFT 8 /* OUT2L_MUTE */ | ||
| 2656 | #define ARIZONA_OUT2L_MUTE_WIDTH 1 /* OUT2L_MUTE */ | ||
| 2657 | #define ARIZONA_OUT2L_VOL_MASK 0x00FF /* OUT2L_VOL - [7:0] */ | ||
| 2658 | #define ARIZONA_OUT2L_VOL_SHIFT 0 /* OUT2L_VOL - [7:0] */ | ||
| 2659 | #define ARIZONA_OUT2L_VOL_WIDTH 8 /* OUT2L_VOL - [7:0] */ | ||
| 2660 | |||
| 2661 | /* | ||
| 2662 | * R1050 (0x41A) - DAC Volume Limit 2L | ||
| 2663 | */ | ||
| 2664 | #define ARIZONA_OUT2L_VOL_LIM_MASK 0x00FF /* OUT2L_VOL_LIM - [7:0] */ | ||
| 2665 | #define ARIZONA_OUT2L_VOL_LIM_SHIFT 0 /* OUT2L_VOL_LIM - [7:0] */ | ||
| 2666 | #define ARIZONA_OUT2L_VOL_LIM_WIDTH 8 /* OUT2L_VOL_LIM - [7:0] */ | ||
| 2667 | |||
| 2668 | /* | ||
| 2669 | * R1051 (0x41B) - Noise Gate Select 2L | ||
| 2670 | */ | ||
| 2671 | #define ARIZONA_OUT2L_NGATE_SRC_MASK 0x0FFF /* OUT2L_NGATE_SRC - [11:0] */ | ||
| 2672 | #define ARIZONA_OUT2L_NGATE_SRC_SHIFT 0 /* OUT2L_NGATE_SRC - [11:0] */ | ||
| 2673 | #define ARIZONA_OUT2L_NGATE_SRC_WIDTH 12 /* OUT2L_NGATE_SRC - [11:0] */ | ||
| 2674 | |||
| 2675 | /* | ||
| 2676 | * R1052 (0x41C) - Output Path Config 2R | ||
| 2677 | */ | ||
| 2678 | #define ARIZONA_OUT2R_ANC_SRC_MASK 0x0C00 /* OUT2R_ANC_SRC - [11:10] */ | ||
| 2679 | #define ARIZONA_OUT2R_ANC_SRC_SHIFT 10 /* OUT2R_ANC_SRC - [11:10] */ | ||
| 2680 | #define ARIZONA_OUT2R_ANC_SRC_WIDTH 2 /* OUT2R_ANC_SRC - [11:10] */ | ||
| 2681 | #define ARIZONA_OUT2R_PGA_VOL_MASK 0x00FE /* OUT2R_PGA_VOL - [7:1] */ | ||
| 2682 | #define ARIZONA_OUT2R_PGA_VOL_SHIFT 1 /* OUT2R_PGA_VOL - [7:1] */ | ||
| 2683 | #define ARIZONA_OUT2R_PGA_VOL_WIDTH 7 /* OUT2R_PGA_VOL - [7:1] */ | ||
| 2684 | |||
| 2685 | /* | ||
| 2686 | * R1053 (0x41D) - DAC Digital Volume 2R | ||
| 2687 | */ | ||
| 2688 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2689 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2690 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2691 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2692 | #define ARIZONA_OUT2R_MUTE 0x0100 /* OUT2R_MUTE */ | ||
| 2693 | #define ARIZONA_OUT2R_MUTE_MASK 0x0100 /* OUT2R_MUTE */ | ||
| 2694 | #define ARIZONA_OUT2R_MUTE_SHIFT 8 /* OUT2R_MUTE */ | ||
| 2695 | #define ARIZONA_OUT2R_MUTE_WIDTH 1 /* OUT2R_MUTE */ | ||
| 2696 | #define ARIZONA_OUT2R_VOL_MASK 0x00FF /* OUT2R_VOL - [7:0] */ | ||
| 2697 | #define ARIZONA_OUT2R_VOL_SHIFT 0 /* OUT2R_VOL - [7:0] */ | ||
| 2698 | #define ARIZONA_OUT2R_VOL_WIDTH 8 /* OUT2R_VOL - [7:0] */ | ||
| 2699 | |||
| 2700 | /* | ||
| 2701 | * R1054 (0x41E) - DAC Volume Limit 2R | ||
| 2702 | */ | ||
| 2703 | #define ARIZONA_OUT2R_VOL_LIM_MASK 0x00FF /* OUT2R_VOL_LIM - [7:0] */ | ||
| 2704 | #define ARIZONA_OUT2R_VOL_LIM_SHIFT 0 /* OUT2R_VOL_LIM - [7:0] */ | ||
| 2705 | #define ARIZONA_OUT2R_VOL_LIM_WIDTH 8 /* OUT2R_VOL_LIM - [7:0] */ | ||
| 2706 | |||
| 2707 | /* | ||
| 2708 | * R1055 (0x41F) - Noise Gate Select 2R | ||
| 2709 | */ | ||
| 2710 | #define ARIZONA_OUT2R_NGATE_SRC_MASK 0x0FFF /* OUT2R_NGATE_SRC - [11:0] */ | ||
| 2711 | #define ARIZONA_OUT2R_NGATE_SRC_SHIFT 0 /* OUT2R_NGATE_SRC - [11:0] */ | ||
| 2712 | #define ARIZONA_OUT2R_NGATE_SRC_WIDTH 12 /* OUT2R_NGATE_SRC - [11:0] */ | ||
| 2713 | |||
| 2714 | /* | ||
| 2715 | * R1056 (0x420) - Output Path Config 3L | ||
| 2716 | */ | ||
| 2717 | #define ARIZONA_OUT3_LP_MODE 0x8000 /* OUT3_LP_MODE */ | ||
| 2718 | #define ARIZONA_OUT3_LP_MODE_MASK 0x8000 /* OUT3_LP_MODE */ | ||
| 2719 | #define ARIZONA_OUT3_LP_MODE_SHIFT 15 /* OUT3_LP_MODE */ | ||
| 2720 | #define ARIZONA_OUT3_LP_MODE_WIDTH 1 /* OUT3_LP_MODE */ | ||
| 2721 | #define ARIZONA_OUT3_OSR 0x2000 /* OUT3_OSR */ | ||
| 2722 | #define ARIZONA_OUT3_OSR_MASK 0x2000 /* OUT3_OSR */ | ||
| 2723 | #define ARIZONA_OUT3_OSR_SHIFT 13 /* OUT3_OSR */ | ||
| 2724 | #define ARIZONA_OUT3_OSR_WIDTH 1 /* OUT3_OSR */ | ||
| 2725 | #define ARIZONA_OUT3_MONO 0x1000 /* OUT3_MONO */ | ||
| 2726 | #define ARIZONA_OUT3_MONO_MASK 0x1000 /* OUT3_MONO */ | ||
| 2727 | #define ARIZONA_OUT3_MONO_SHIFT 12 /* OUT3_MONO */ | ||
| 2728 | #define ARIZONA_OUT3_MONO_WIDTH 1 /* OUT3_MONO */ | ||
| 2729 | #define ARIZONA_OUT3L_ANC_SRC_MASK 0x0C00 /* OUT3L_ANC_SRC - [11:10] */ | ||
| 2730 | #define ARIZONA_OUT3L_ANC_SRC_SHIFT 10 /* OUT3L_ANC_SRC - [11:10] */ | ||
| 2731 | #define ARIZONA_OUT3L_ANC_SRC_WIDTH 2 /* OUT3L_ANC_SRC - [11:10] */ | ||
| 2732 | #define ARIZONA_OUT3L_PGA_VOL_MASK 0x00FE /* OUT3L_PGA_VOL - [7:1] */ | ||
| 2733 | #define ARIZONA_OUT3L_PGA_VOL_SHIFT 1 /* OUT3L_PGA_VOL - [7:1] */ | ||
| 2734 | #define ARIZONA_OUT3L_PGA_VOL_WIDTH 7 /* OUT3L_PGA_VOL - [7:1] */ | ||
| 2735 | |||
| 2736 | /* | ||
| 2737 | * R1057 (0x421) - DAC Digital Volume 3L | ||
| 2738 | */ | ||
| 2739 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2740 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2741 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2742 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2743 | #define ARIZONA_OUT3L_MUTE 0x0100 /* OUT3L_MUTE */ | ||
| 2744 | #define ARIZONA_OUT3L_MUTE_MASK 0x0100 /* OUT3L_MUTE */ | ||
| 2745 | #define ARIZONA_OUT3L_MUTE_SHIFT 8 /* OUT3L_MUTE */ | ||
| 2746 | #define ARIZONA_OUT3L_MUTE_WIDTH 1 /* OUT3L_MUTE */ | ||
| 2747 | #define ARIZONA_OUT3L_VOL_MASK 0x00FF /* OUT3L_VOL - [7:0] */ | ||
| 2748 | #define ARIZONA_OUT3L_VOL_SHIFT 0 /* OUT3L_VOL - [7:0] */ | ||
| 2749 | #define ARIZONA_OUT3L_VOL_WIDTH 8 /* OUT3L_VOL - [7:0] */ | ||
| 2750 | |||
| 2751 | /* | ||
| 2752 | * R1058 (0x422) - DAC Volume Limit 3L | ||
| 2753 | */ | ||
| 2754 | #define ARIZONA_OUT3L_VOL_LIM_MASK 0x00FF /* OUT3L_VOL_LIM - [7:0] */ | ||
| 2755 | #define ARIZONA_OUT3L_VOL_LIM_SHIFT 0 /* OUT3L_VOL_LIM - [7:0] */ | ||
| 2756 | #define ARIZONA_OUT3L_VOL_LIM_WIDTH 8 /* OUT3L_VOL_LIM - [7:0] */ | ||
| 2757 | |||
| 2758 | /* | ||
| 2759 | * R1059 (0x423) - Noise Gate Select 3L | ||
| 2760 | */ | ||
| 2761 | #define ARIZONA_OUT3_NGATE_SRC_MASK 0x0FFF /* OUT3_NGATE_SRC - [11:0] */ | ||
| 2762 | #define ARIZONA_OUT3_NGATE_SRC_SHIFT 0 /* OUT3_NGATE_SRC - [11:0] */ | ||
| 2763 | #define ARIZONA_OUT3_NGATE_SRC_WIDTH 12 /* OUT3_NGATE_SRC - [11:0] */ | ||
| 2764 | |||
| 2765 | /* | ||
| 2766 | * R1060 (0x424) - Output Path Config 3R | ||
| 2767 | */ | ||
| 2768 | #define ARIZONA_OUT3R_PGA_VOL_MASK 0x00FE /* OUT3R_PGA_VOL - [7:1] */ | ||
| 2769 | #define ARIZONA_OUT3R_PGA_VOL_SHIFT 1 /* OUT3R_PGA_VOL - [7:1] */ | ||
| 2770 | #define ARIZONA_OUT3R_PGA_VOL_WIDTH 7 /* OUT3R_PGA_VOL - [7:1] */ | ||
| 2771 | |||
| 2772 | /* | ||
| 2773 | * R1061 (0x425) - DAC Digital Volume 3R | ||
| 2774 | */ | ||
| 2775 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2776 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2777 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2778 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2779 | #define ARIZONA_OUT3R_MUTE 0x0100 /* OUT3R_MUTE */ | ||
| 2780 | #define ARIZONA_OUT3R_MUTE_MASK 0x0100 /* OUT3R_MUTE */ | ||
| 2781 | #define ARIZONA_OUT3R_MUTE_SHIFT 8 /* OUT3R_MUTE */ | ||
| 2782 | #define ARIZONA_OUT3R_MUTE_WIDTH 1 /* OUT3R_MUTE */ | ||
| 2783 | #define ARIZONA_OUT3R_VOL_MASK 0x00FF /* OUT3R_VOL - [7:0] */ | ||
| 2784 | #define ARIZONA_OUT3R_VOL_SHIFT 0 /* OUT3R_VOL - [7:0] */ | ||
| 2785 | #define ARIZONA_OUT3R_VOL_WIDTH 8 /* OUT3R_VOL - [7:0] */ | ||
| 2786 | |||
| 2787 | /* | ||
| 2788 | * R1062 (0x426) - DAC Volume Limit 3R | ||
| 2789 | */ | ||
| 2790 | #define ARIZONA_OUT3R_ANC_SRC_MASK 0x0C00 /* OUT3R_ANC_SRC - [11:10] */ | ||
| 2791 | #define ARIZONA_OUT3R_ANC_SRC_SHIFT 10 /* OUT3R_ANC_SRC - [11:10] */ | ||
| 2792 | #define ARIZONA_OUT3R_ANC_SRC_WIDTH 2 /* OUT3R_ANC_SRC - [11:10] */ | ||
| 2793 | #define ARIZONA_OUT3R_VOL_LIM_MASK 0x00FF /* OUT3R_VOL_LIM - [7:0] */ | ||
| 2794 | #define ARIZONA_OUT3R_VOL_LIM_SHIFT 0 /* OUT3R_VOL_LIM - [7:0] */ | ||
| 2795 | #define ARIZONA_OUT3R_VOL_LIM_WIDTH 8 /* OUT3R_VOL_LIM - [7:0] */ | ||
| 2796 | |||
| 2797 | /* | ||
| 2798 | * R1064 (0x428) - Output Path Config 4L | ||
| 2799 | */ | ||
| 2800 | #define ARIZONA_OUT4_OSR 0x2000 /* OUT4_OSR */ | ||
| 2801 | #define ARIZONA_OUT4_OSR_MASK 0x2000 /* OUT4_OSR */ | ||
| 2802 | #define ARIZONA_OUT4_OSR_SHIFT 13 /* OUT4_OSR */ | ||
| 2803 | #define ARIZONA_OUT4_OSR_WIDTH 1 /* OUT4_OSR */ | ||
| 2804 | #define ARIZONA_OUT4L_ANC_SRC_MASK 0x0C00 /* OUT4L_ANC_SRC - [11:10] */ | ||
| 2805 | #define ARIZONA_OUT4L_ANC_SRC_SHIFT 10 /* OUT4L_ANC_SRC - [11:10] */ | ||
| 2806 | #define ARIZONA_OUT4L_ANC_SRC_WIDTH 2 /* OUT4L_ANC_SRC - [11:10] */ | ||
| 2807 | |||
| 2808 | /* | ||
| 2809 | * R1065 (0x429) - DAC Digital Volume 4L | ||
| 2810 | */ | ||
| 2811 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2812 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2813 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2814 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2815 | #define ARIZONA_OUT4L_MUTE 0x0100 /* OUT4L_MUTE */ | ||
| 2816 | #define ARIZONA_OUT4L_MUTE_MASK 0x0100 /* OUT4L_MUTE */ | ||
| 2817 | #define ARIZONA_OUT4L_MUTE_SHIFT 8 /* OUT4L_MUTE */ | ||
| 2818 | #define ARIZONA_OUT4L_MUTE_WIDTH 1 /* OUT4L_MUTE */ | ||
| 2819 | #define ARIZONA_OUT4L_VOL_MASK 0x00FF /* OUT4L_VOL - [7:0] */ | ||
| 2820 | #define ARIZONA_OUT4L_VOL_SHIFT 0 /* OUT4L_VOL - [7:0] */ | ||
| 2821 | #define ARIZONA_OUT4L_VOL_WIDTH 8 /* OUT4L_VOL - [7:0] */ | ||
| 2822 | |||
| 2823 | /* | ||
| 2824 | * R1066 (0x42A) - Out Volume 4L | ||
| 2825 | */ | ||
| 2826 | #define ARIZONA_OUT4L_VOL_LIM_MASK 0x00FF /* OUT4L_VOL_LIM - [7:0] */ | ||
| 2827 | #define ARIZONA_OUT4L_VOL_LIM_SHIFT 0 /* OUT4L_VOL_LIM - [7:0] */ | ||
| 2828 | #define ARIZONA_OUT4L_VOL_LIM_WIDTH 8 /* OUT4L_VOL_LIM - [7:0] */ | ||
| 2829 | |||
| 2830 | /* | ||
| 2831 | * R1067 (0x42B) - Noise Gate Select 4L | ||
| 2832 | */ | ||
| 2833 | #define ARIZONA_OUT4L_NGATE_SRC_MASK 0x0FFF /* OUT4L_NGATE_SRC - [11:0] */ | ||
| 2834 | #define ARIZONA_OUT4L_NGATE_SRC_SHIFT 0 /* OUT4L_NGATE_SRC - [11:0] */ | ||
| 2835 | #define ARIZONA_OUT4L_NGATE_SRC_WIDTH 12 /* OUT4L_NGATE_SRC - [11:0] */ | ||
| 2836 | |||
| 2837 | /* | ||
| 2838 | * R1068 (0x42C) - Output Path Config 4R | ||
| 2839 | */ | ||
| 2840 | #define ARIZONA_OUT4R_ANC_SRC_MASK 0x0C00 /* OUT4R_ANC_SRC - [11:10] */ | ||
| 2841 | #define ARIZONA_OUT4R_ANC_SRC_SHIFT 10 /* OUT4R_ANC_SRC - [11:10] */ | ||
| 2842 | #define ARIZONA_OUT4R_ANC_SRC_WIDTH 2 /* OUT4R_ANC_SRC - [11:10] */ | ||
| 2843 | |||
| 2844 | /* | ||
| 2845 | * R1069 (0x42D) - DAC Digital Volume 4R | ||
| 2846 | */ | ||
| 2847 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2848 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2849 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2850 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2851 | #define ARIZONA_OUT4R_MUTE 0x0100 /* OUT4R_MUTE */ | ||
| 2852 | #define ARIZONA_OUT4R_MUTE_MASK 0x0100 /* OUT4R_MUTE */ | ||
| 2853 | #define ARIZONA_OUT4R_MUTE_SHIFT 8 /* OUT4R_MUTE */ | ||
| 2854 | #define ARIZONA_OUT4R_MUTE_WIDTH 1 /* OUT4R_MUTE */ | ||
| 2855 | #define ARIZONA_OUT4R_VOL_MASK 0x00FF /* OUT4R_VOL - [7:0] */ | ||
| 2856 | #define ARIZONA_OUT4R_VOL_SHIFT 0 /* OUT4R_VOL - [7:0] */ | ||
| 2857 | #define ARIZONA_OUT4R_VOL_WIDTH 8 /* OUT4R_VOL - [7:0] */ | ||
| 2858 | |||
| 2859 | /* | ||
| 2860 | * R1070 (0x42E) - Out Volume 4R | ||
| 2861 | */ | ||
| 2862 | #define ARIZONA_OUT4R_VOL_LIM_MASK 0x00FF /* OUT4R_VOL_LIM - [7:0] */ | ||
| 2863 | #define ARIZONA_OUT4R_VOL_LIM_SHIFT 0 /* OUT4R_VOL_LIM - [7:0] */ | ||
| 2864 | #define ARIZONA_OUT4R_VOL_LIM_WIDTH 8 /* OUT4R_VOL_LIM - [7:0] */ | ||
| 2865 | |||
| 2866 | /* | ||
| 2867 | * R1071 (0x42F) - Noise Gate Select 4R | ||
| 2868 | */ | ||
| 2869 | #define ARIZONA_OUT4R_NGATE_SRC_MASK 0x0FFF /* OUT4R_NGATE_SRC - [11:0] */ | ||
| 2870 | #define ARIZONA_OUT4R_NGATE_SRC_SHIFT 0 /* OUT4R_NGATE_SRC - [11:0] */ | ||
| 2871 | #define ARIZONA_OUT4R_NGATE_SRC_WIDTH 12 /* OUT4R_NGATE_SRC - [11:0] */ | ||
| 2872 | |||
| 2873 | /* | ||
| 2874 | * R1072 (0x430) - Output Path Config 5L | ||
| 2875 | */ | ||
| 2876 | #define ARIZONA_OUT5_OSR 0x2000 /* OUT5_OSR */ | ||
| 2877 | #define ARIZONA_OUT5_OSR_MASK 0x2000 /* OUT5_OSR */ | ||
| 2878 | #define ARIZONA_OUT5_OSR_SHIFT 13 /* OUT5_OSR */ | ||
| 2879 | #define ARIZONA_OUT5_OSR_WIDTH 1 /* OUT5_OSR */ | ||
| 2880 | #define ARIZONA_OUT5L_ANC_SRC_MASK 0x0C00 /* OUT5L_ANC_SRC - [11:10] */ | ||
| 2881 | #define ARIZONA_OUT5L_ANC_SRC_SHIFT 10 /* OUT5L_ANC_SRC - [11:10] */ | ||
| 2882 | #define ARIZONA_OUT5L_ANC_SRC_WIDTH 2 /* OUT5L_ANC_SRC - [11:10] */ | ||
| 2883 | |||
| 2884 | /* | ||
| 2885 | * R1073 (0x431) - DAC Digital Volume 5L | ||
| 2886 | */ | ||
| 2887 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2888 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2889 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2890 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2891 | #define ARIZONA_OUT5L_MUTE 0x0100 /* OUT5L_MUTE */ | ||
| 2892 | #define ARIZONA_OUT5L_MUTE_MASK 0x0100 /* OUT5L_MUTE */ | ||
| 2893 | #define ARIZONA_OUT5L_MUTE_SHIFT 8 /* OUT5L_MUTE */ | ||
| 2894 | #define ARIZONA_OUT5L_MUTE_WIDTH 1 /* OUT5L_MUTE */ | ||
| 2895 | #define ARIZONA_OUT5L_VOL_MASK 0x00FF /* OUT5L_VOL - [7:0] */ | ||
| 2896 | #define ARIZONA_OUT5L_VOL_SHIFT 0 /* OUT5L_VOL - [7:0] */ | ||
| 2897 | #define ARIZONA_OUT5L_VOL_WIDTH 8 /* OUT5L_VOL - [7:0] */ | ||
| 2898 | |||
| 2899 | /* | ||
| 2900 | * R1074 (0x432) - DAC Volume Limit 5L | ||
| 2901 | */ | ||
| 2902 | #define ARIZONA_OUT5L_VOL_LIM_MASK 0x00FF /* OUT5L_VOL_LIM - [7:0] */ | ||
| 2903 | #define ARIZONA_OUT5L_VOL_LIM_SHIFT 0 /* OUT5L_VOL_LIM - [7:0] */ | ||
| 2904 | #define ARIZONA_OUT5L_VOL_LIM_WIDTH 8 /* OUT5L_VOL_LIM - [7:0] */ | ||
| 2905 | |||
| 2906 | /* | ||
| 2907 | * R1075 (0x433) - Noise Gate Select 5L | ||
| 2908 | */ | ||
| 2909 | #define ARIZONA_OUT5L_NGATE_SRC_MASK 0x0FFF /* OUT5L_NGATE_SRC - [11:0] */ | ||
| 2910 | #define ARIZONA_OUT5L_NGATE_SRC_SHIFT 0 /* OUT5L_NGATE_SRC - [11:0] */ | ||
| 2911 | #define ARIZONA_OUT5L_NGATE_SRC_WIDTH 12 /* OUT5L_NGATE_SRC - [11:0] */ | ||
| 2912 | |||
| 2913 | /* | ||
| 2914 | * R1076 (0x434) - Output Path Config 5R | ||
| 2915 | */ | ||
| 2916 | #define ARIZONA_OUT5R_ANC_SRC_MASK 0x0C00 /* OUT5R_ANC_SRC - [11:10] */ | ||
| 2917 | #define ARIZONA_OUT5R_ANC_SRC_SHIFT 10 /* OUT5R_ANC_SRC - [11:10] */ | ||
| 2918 | #define ARIZONA_OUT5R_ANC_SRC_WIDTH 2 /* OUT5R_ANC_SRC - [11:10] */ | ||
| 2919 | |||
| 2920 | /* | ||
| 2921 | * R1077 (0x435) - DAC Digital Volume 5R | ||
| 2922 | */ | ||
| 2923 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2924 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2925 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2926 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2927 | #define ARIZONA_OUT5R_MUTE 0x0100 /* OUT5R_MUTE */ | ||
| 2928 | #define ARIZONA_OUT5R_MUTE_MASK 0x0100 /* OUT5R_MUTE */ | ||
| 2929 | #define ARIZONA_OUT5R_MUTE_SHIFT 8 /* OUT5R_MUTE */ | ||
| 2930 | #define ARIZONA_OUT5R_MUTE_WIDTH 1 /* OUT5R_MUTE */ | ||
| 2931 | #define ARIZONA_OUT5R_VOL_MASK 0x00FF /* OUT5R_VOL - [7:0] */ | ||
| 2932 | #define ARIZONA_OUT5R_VOL_SHIFT 0 /* OUT5R_VOL - [7:0] */ | ||
| 2933 | #define ARIZONA_OUT5R_VOL_WIDTH 8 /* OUT5R_VOL - [7:0] */ | ||
| 2934 | |||
| 2935 | /* | ||
| 2936 | * R1078 (0x436) - DAC Volume Limit 5R | ||
| 2937 | */ | ||
| 2938 | #define ARIZONA_OUT5R_VOL_LIM_MASK 0x00FF /* OUT5R_VOL_LIM - [7:0] */ | ||
| 2939 | #define ARIZONA_OUT5R_VOL_LIM_SHIFT 0 /* OUT5R_VOL_LIM - [7:0] */ | ||
| 2940 | #define ARIZONA_OUT5R_VOL_LIM_WIDTH 8 /* OUT5R_VOL_LIM - [7:0] */ | ||
| 2941 | |||
| 2942 | /* | ||
| 2943 | * R1079 (0x437) - Noise Gate Select 5R | ||
| 2944 | */ | ||
| 2945 | #define ARIZONA_OUT5R_NGATE_SRC_MASK 0x0FFF /* OUT5R_NGATE_SRC - [11:0] */ | ||
| 2946 | #define ARIZONA_OUT5R_NGATE_SRC_SHIFT 0 /* OUT5R_NGATE_SRC - [11:0] */ | ||
| 2947 | #define ARIZONA_OUT5R_NGATE_SRC_WIDTH 12 /* OUT5R_NGATE_SRC - [11:0] */ | ||
| 2948 | |||
| 2949 | /* | ||
| 2950 | * R1080 (0x438) - Output Path Config 6L | ||
| 2951 | */ | ||
| 2952 | #define ARIZONA_OUT6_OSR 0x2000 /* OUT6_OSR */ | ||
| 2953 | #define ARIZONA_OUT6_OSR_MASK 0x2000 /* OUT6_OSR */ | ||
| 2954 | #define ARIZONA_OUT6_OSR_SHIFT 13 /* OUT6_OSR */ | ||
| 2955 | #define ARIZONA_OUT6_OSR_WIDTH 1 /* OUT6_OSR */ | ||
| 2956 | #define ARIZONA_OUT6L_ANC_SRC_MASK 0x0C00 /* OUT6L_ANC_SRC - [11:10] */ | ||
| 2957 | #define ARIZONA_OUT6L_ANC_SRC_SHIFT 10 /* OUT6L_ANC_SRC - [11:10] */ | ||
| 2958 | #define ARIZONA_OUT6L_ANC_SRC_WIDTH 2 /* OUT6L_ANC_SRC - [11:10] */ | ||
| 2959 | |||
| 2960 | /* | ||
| 2961 | * R1081 (0x439) - DAC Digital Volume 6L | ||
| 2962 | */ | ||
| 2963 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 2964 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 2965 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 2966 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 2967 | #define ARIZONA_OUT6L_MUTE 0x0100 /* OUT6L_MUTE */ | ||
| 2968 | #define ARIZONA_OUT6L_MUTE_MASK 0x0100 /* OUT6L_MUTE */ | ||
| 2969 | #define ARIZONA_OUT6L_MUTE_SHIFT 8 /* OUT6L_MUTE */ | ||
| 2970 | #define ARIZONA_OUT6L_MUTE_WIDTH 1 /* OUT6L_MUTE */ | ||
| 2971 | #define ARIZONA_OUT6L_VOL_MASK 0x00FF /* OUT6L_VOL - [7:0] */ | ||
| 2972 | #define ARIZONA_OUT6L_VOL_SHIFT 0 /* OUT6L_VOL - [7:0] */ | ||
| 2973 | #define ARIZONA_OUT6L_VOL_WIDTH 8 /* OUT6L_VOL - [7:0] */ | ||
| 2974 | |||
| 2975 | /* | ||
| 2976 | * R1082 (0x43A) - DAC Volume Limit 6L | ||
| 2977 | */ | ||
| 2978 | #define ARIZONA_OUT6L_VOL_LIM_MASK 0x00FF /* OUT6L_VOL_LIM - [7:0] */ | ||
| 2979 | #define ARIZONA_OUT6L_VOL_LIM_SHIFT 0 /* OUT6L_VOL_LIM - [7:0] */ | ||
| 2980 | #define ARIZONA_OUT6L_VOL_LIM_WIDTH 8 /* OUT6L_VOL_LIM - [7:0] */ | ||
| 2981 | |||
| 2982 | /* | ||
| 2983 | * R1083 (0x43B) - Noise Gate Select 6L | ||
| 2984 | */ | ||
| 2985 | #define ARIZONA_OUT6L_NGATE_SRC_MASK 0x0FFF /* OUT6L_NGATE_SRC - [11:0] */ | ||
| 2986 | #define ARIZONA_OUT6L_NGATE_SRC_SHIFT 0 /* OUT6L_NGATE_SRC - [11:0] */ | ||
| 2987 | #define ARIZONA_OUT6L_NGATE_SRC_WIDTH 12 /* OUT6L_NGATE_SRC - [11:0] */ | ||
| 2988 | |||
| 2989 | /* | ||
| 2990 | * R1084 (0x43C) - Output Path Config 6R | ||
| 2991 | */ | ||
| 2992 | #define ARIZONA_OUT6R_ANC_SRC_MASK 0x0C00 /* OUT6R_ANC_SRC - [11:10] */ | ||
| 2993 | #define ARIZONA_OUT6R_ANC_SRC_SHIFT 10 /* OUT6R_ANC_SRC - [11:10] */ | ||
| 2994 | #define ARIZONA_OUT6R_ANC_SRC_WIDTH 2 /* OUT6R_ANC_SRC - [11:10] */ | ||
| 2995 | |||
| 2996 | /* | ||
| 2997 | * R1085 (0x43D) - DAC Digital Volume 6R | ||
| 2998 | */ | ||
| 2999 | #define ARIZONA_OUT_VU 0x0200 /* OUT_VU */ | ||
| 3000 | #define ARIZONA_OUT_VU_MASK 0x0200 /* OUT_VU */ | ||
| 3001 | #define ARIZONA_OUT_VU_SHIFT 9 /* OUT_VU */ | ||
| 3002 | #define ARIZONA_OUT_VU_WIDTH 1 /* OUT_VU */ | ||
| 3003 | #define ARIZONA_OUT6R_MUTE 0x0100 /* OUT6R_MUTE */ | ||
| 3004 | #define ARIZONA_OUT6R_MUTE_MASK 0x0100 /* OUT6R_MUTE */ | ||
| 3005 | #define ARIZONA_OUT6R_MUTE_SHIFT 8 /* OUT6R_MUTE */ | ||
| 3006 | #define ARIZONA_OUT6R_MUTE_WIDTH 1 /* OUT6R_MUTE */ | ||
| 3007 | #define ARIZONA_OUT6R_VOL_MASK 0x00FF /* OUT6R_VOL - [7:0] */ | ||
| 3008 | #define ARIZONA_OUT6R_VOL_SHIFT 0 /* OUT6R_VOL - [7:0] */ | ||
| 3009 | #define ARIZONA_OUT6R_VOL_WIDTH 8 /* OUT6R_VOL - [7:0] */ | ||
| 3010 | |||
| 3011 | /* | ||
| 3012 | * R1086 (0x43E) - DAC Volume Limit 6R | ||
| 3013 | */ | ||
| 3014 | #define ARIZONA_OUT6R_VOL_LIM_MASK 0x00FF /* OUT6R_VOL_LIM - [7:0] */ | ||
| 3015 | #define ARIZONA_OUT6R_VOL_LIM_SHIFT 0 /* OUT6R_VOL_LIM - [7:0] */ | ||
| 3016 | #define ARIZONA_OUT6R_VOL_LIM_WIDTH 8 /* OUT6R_VOL_LIM - [7:0] */ | ||
| 3017 | |||
| 3018 | /* | ||
| 3019 | * R1087 (0x43F) - Noise Gate Select 6R | ||
| 3020 | */ | ||
| 3021 | #define ARIZONA_OUT6R_NGATE_SRC_MASK 0x0FFF /* OUT6R_NGATE_SRC - [11:0] */ | ||
| 3022 | #define ARIZONA_OUT6R_NGATE_SRC_SHIFT 0 /* OUT6R_NGATE_SRC - [11:0] */ | ||
| 3023 | #define ARIZONA_OUT6R_NGATE_SRC_WIDTH 12 /* OUT6R_NGATE_SRC - [11:0] */ | ||
| 3024 | |||
| 3025 | /* | ||
| 3026 | * R1104 (0x450) - DAC AEC Control 1 | ||
| 3027 | */ | ||
| 3028 | #define ARIZONA_AEC_LOOPBACK_SRC_MASK 0x003C /* AEC_LOOPBACK_SRC - [5:2] */ | ||
| 3029 | #define ARIZONA_AEC_LOOPBACK_SRC_SHIFT 2 /* AEC_LOOPBACK_SRC - [5:2] */ | ||
| 3030 | #define ARIZONA_AEC_LOOPBACK_SRC_WIDTH 4 /* AEC_LOOPBACK_SRC - [5:2] */ | ||
| 3031 | #define ARIZONA_AEC_ENA_STS 0x0002 /* AEC_ENA_STS */ | ||
| 3032 | #define ARIZONA_AEC_ENA_STS_MASK 0x0002 /* AEC_ENA_STS */ | ||
| 3033 | #define ARIZONA_AEC_ENA_STS_SHIFT 1 /* AEC_ENA_STS */ | ||
| 3034 | #define ARIZONA_AEC_ENA_STS_WIDTH 1 /* AEC_ENA_STS */ | ||
| 3035 | #define ARIZONA_AEC_LOOPBACK_ENA 0x0001 /* AEC_LOOPBACK_ENA */ | ||
| 3036 | #define ARIZONA_AEC_LOOPBACK_ENA_MASK 0x0001 /* AEC_LOOPBACK_ENA */ | ||
| 3037 | #define ARIZONA_AEC_LOOPBACK_ENA_SHIFT 0 /* AEC_LOOPBACK_ENA */ | ||
| 3038 | #define ARIZONA_AEC_LOOPBACK_ENA_WIDTH 1 /* AEC_LOOPBACK_ENA */ | ||
| 3039 | |||
| 3040 | /* | ||
| 3041 | * R1112 (0x458) - Noise Gate Control | ||
| 3042 | */ | ||
| 3043 | #define ARIZONA_NGATE_HOLD_MASK 0x0030 /* NGATE_HOLD - [5:4] */ | ||
| 3044 | #define ARIZONA_NGATE_HOLD_SHIFT 4 /* NGATE_HOLD - [5:4] */ | ||
| 3045 | #define ARIZONA_NGATE_HOLD_WIDTH 2 /* NGATE_HOLD - [5:4] */ | ||
| 3046 | #define ARIZONA_NGATE_THR_MASK 0x000E /* NGATE_THR - [3:1] */ | ||
| 3047 | #define ARIZONA_NGATE_THR_SHIFT 1 /* NGATE_THR - [3:1] */ | ||
| 3048 | #define ARIZONA_NGATE_THR_WIDTH 3 /* NGATE_THR - [3:1] */ | ||
| 3049 | #define ARIZONA_NGATE_ENA 0x0001 /* NGATE_ENA */ | ||
| 3050 | #define ARIZONA_NGATE_ENA_MASK 0x0001 /* NGATE_ENA */ | ||
| 3051 | #define ARIZONA_NGATE_ENA_SHIFT 0 /* NGATE_ENA */ | ||
| 3052 | #define ARIZONA_NGATE_ENA_WIDTH 1 /* NGATE_ENA */ | ||
| 3053 | |||
| 3054 | /* | ||
| 3055 | * R1168 (0x490) - PDM SPK1 CTRL 1 | ||
| 3056 | */ | ||
| 3057 | #define ARIZONA_SPK1R_MUTE 0x2000 /* SPK1R_MUTE */ | ||
| 3058 | #define ARIZONA_SPK1R_MUTE_MASK 0x2000 /* SPK1R_MUTE */ | ||
| 3059 | #define ARIZONA_SPK1R_MUTE_SHIFT 13 /* SPK1R_MUTE */ | ||
| 3060 | #define ARIZONA_SPK1R_MUTE_WIDTH 1 /* SPK1R_MUTE */ | ||
| 3061 | #define ARIZONA_SPK1L_MUTE 0x1000 /* SPK1L_MUTE */ | ||
| 3062 | #define ARIZONA_SPK1L_MUTE_MASK 0x1000 /* SPK1L_MUTE */ | ||
| 3063 | #define ARIZONA_SPK1L_MUTE_SHIFT 12 /* SPK1L_MUTE */ | ||
| 3064 | #define ARIZONA_SPK1L_MUTE_WIDTH 1 /* SPK1L_MUTE */ | ||
| 3065 | #define ARIZONA_SPK1_MUTE_ENDIAN 0x0100 /* SPK1_MUTE_ENDIAN */ | ||
| 3066 | #define ARIZONA_SPK1_MUTE_ENDIAN_MASK 0x0100 /* SPK1_MUTE_ENDIAN */ | ||
| 3067 | #define ARIZONA_SPK1_MUTE_ENDIAN_SHIFT 8 /* SPK1_MUTE_ENDIAN */ | ||
| 3068 | #define ARIZONA_SPK1_MUTE_ENDIAN_WIDTH 1 /* SPK1_MUTE_ENDIAN */ | ||
| 3069 | #define ARIZONA_SPK1_MUTE_SEQ1_MASK 0x00FF /* SPK1_MUTE_SEQ1 - [7:0] */ | ||
| 3070 | #define ARIZONA_SPK1_MUTE_SEQ1_SHIFT 0 /* SPK1_MUTE_SEQ1 - [7:0] */ | ||
| 3071 | #define ARIZONA_SPK1_MUTE_SEQ1_WIDTH 8 /* SPK1_MUTE_SEQ1 - [7:0] */ | ||
| 3072 | |||
| 3073 | /* | ||
| 3074 | * R1169 (0x491) - PDM SPK1 CTRL 2 | ||
| 3075 | */ | ||
| 3076 | #define ARIZONA_SPK1_FMT 0x0001 /* SPK1_FMT */ | ||
| 3077 | #define ARIZONA_SPK1_FMT_MASK 0x0001 /* SPK1_FMT */ | ||
| 3078 | #define ARIZONA_SPK1_FMT_SHIFT 0 /* SPK1_FMT */ | ||
| 3079 | #define ARIZONA_SPK1_FMT_WIDTH 1 /* SPK1_FMT */ | ||
| 3080 | |||
| 3081 | /* | ||
| 3082 | * R1170 (0x492) - PDM SPK2 CTRL 1 | ||
| 3083 | */ | ||
| 3084 | #define ARIZONA_SPK2R_MUTE 0x2000 /* SPK2R_MUTE */ | ||
| 3085 | #define ARIZONA_SPK2R_MUTE_MASK 0x2000 /* SPK2R_MUTE */ | ||
| 3086 | #define ARIZONA_SPK2R_MUTE_SHIFT 13 /* SPK2R_MUTE */ | ||
| 3087 | #define ARIZONA_SPK2R_MUTE_WIDTH 1 /* SPK2R_MUTE */ | ||
| 3088 | #define ARIZONA_SPK2L_MUTE 0x1000 /* SPK2L_MUTE */ | ||
| 3089 | #define ARIZONA_SPK2L_MUTE_MASK 0x1000 /* SPK2L_MUTE */ | ||
| 3090 | #define ARIZONA_SPK2L_MUTE_SHIFT 12 /* SPK2L_MUTE */ | ||
| 3091 | #define ARIZONA_SPK2L_MUTE_WIDTH 1 /* SPK2L_MUTE */ | ||
| 3092 | #define ARIZONA_SPK2_MUTE_ENDIAN 0x0100 /* SPK2_MUTE_ENDIAN */ | ||
| 3093 | #define ARIZONA_SPK2_MUTE_ENDIAN_MASK 0x0100 /* SPK2_MUTE_ENDIAN */ | ||
| 3094 | #define ARIZONA_SPK2_MUTE_ENDIAN_SHIFT 8 /* SPK2_MUTE_ENDIAN */ | ||
| 3095 | #define ARIZONA_SPK2_MUTE_ENDIAN_WIDTH 1 /* SPK2_MUTE_ENDIAN */ | ||
| 3096 | #define ARIZONA_SPK2_MUTE_SEQ_MASK 0x00FF /* SPK2_MUTE_SEQ - [7:0] */ | ||
| 3097 | #define ARIZONA_SPK2_MUTE_SEQ_SHIFT 0 /* SPK2_MUTE_SEQ - [7:0] */ | ||
| 3098 | #define ARIZONA_SPK2_MUTE_SEQ_WIDTH 8 /* SPK2_MUTE_SEQ - [7:0] */ | ||
| 3099 | |||
| 3100 | /* | ||
| 3101 | * R1171 (0x493) - PDM SPK2 CTRL 2 | ||
| 3102 | */ | ||
| 3103 | #define ARIZONA_SPK2_FMT 0x0001 /* SPK2_FMT */ | ||
| 3104 | #define ARIZONA_SPK2_FMT_MASK 0x0001 /* SPK2_FMT */ | ||
| 3105 | #define ARIZONA_SPK2_FMT_SHIFT 0 /* SPK2_FMT */ | ||
| 3106 | #define ARIZONA_SPK2_FMT_WIDTH 1 /* SPK2_FMT */ | ||
| 3107 | |||
| 3108 | /* | ||
| 3109 | * R1244 (0x4DC) - DAC comp 1 | ||
| 3110 | */ | ||
| 3111 | #define ARIZONA_OUT_COMP_COEFF_MASK 0xFFFF /* OUT_COMP_COEFF - [15:0] */ | ||
| 3112 | #define ARIZONA_OUT_COMP_COEFF_SHIFT 0 /* OUT_COMP_COEFF - [15:0] */ | ||
| 3113 | #define ARIZONA_OUT_COMP_COEFF_WIDTH 16 /* OUT_COMP_COEFF - [15:0] */ | ||
| 3114 | |||
| 3115 | /* | ||
| 3116 | * R1245 (0x4DD) - DAC comp 2 | ||
| 3117 | */ | ||
| 3118 | #define ARIZONA_OUT_COMP_COEFF_1 0x0002 /* OUT_COMP_COEFF */ | ||
| 3119 | #define ARIZONA_OUT_COMP_COEFF_1_MASK 0x0002 /* OUT_COMP_COEFF */ | ||
| 3120 | #define ARIZONA_OUT_COMP_COEFF_1_SHIFT 1 /* OUT_COMP_COEFF */ | ||
| 3121 | #define ARIZONA_OUT_COMP_COEFF_1_WIDTH 1 /* OUT_COMP_COEFF */ | ||
| 3122 | #define ARIZONA_OUT_COMP_COEFF_SEL 0x0001 /* OUT_COMP_COEFF_SEL */ | ||
| 3123 | #define ARIZONA_OUT_COMP_COEFF_SEL_MASK 0x0001 /* OUT_COMP_COEFF_SEL */ | ||
| 3124 | #define ARIZONA_OUT_COMP_COEFF_SEL_SHIFT 0 /* OUT_COMP_COEFF_SEL */ | ||
| 3125 | #define ARIZONA_OUT_COMP_COEFF_SEL_WIDTH 1 /* OUT_COMP_COEFF_SEL */ | ||
| 3126 | |||
| 3127 | /* | ||
| 3128 | * R1246 (0x4DE) - DAC comp 3 | ||
| 3129 | */ | ||
| 3130 | #define ARIZONA_AEC_COMP_COEFF_MASK 0xFFFF /* AEC_COMP_COEFF - [15:0] */ | ||
| 3131 | #define ARIZONA_AEC_COMP_COEFF_SHIFT 0 /* AEC_COMP_COEFF - [15:0] */ | ||
| 3132 | #define ARIZONA_AEC_COMP_COEFF_WIDTH 16 /* AEC_COMP_COEFF - [15:0] */ | ||
| 3133 | |||
| 3134 | /* | ||
| 3135 | * R1247 (0x4DF) - DAC comp 4 | ||
| 3136 | */ | ||
| 3137 | #define ARIZONA_AEC_COMP_COEFF_1 0x0002 /* AEC_COMP_COEFF */ | ||
| 3138 | #define ARIZONA_AEC_COMP_COEFF_1_MASK 0x0002 /* AEC_COMP_COEFF */ | ||
| 3139 | #define ARIZONA_AEC_COMP_COEFF_1_SHIFT 1 /* AEC_COMP_COEFF */ | ||
| 3140 | #define ARIZONA_AEC_COMP_COEFF_1_WIDTH 1 /* AEC_COMP_COEFF */ | ||
| 3141 | #define ARIZONA_AEC_COMP_COEFF_SEL 0x0001 /* AEC_COMP_COEFF_SEL */ | ||
| 3142 | #define ARIZONA_AEC_COMP_COEFF_SEL_MASK 0x0001 /* AEC_COMP_COEFF_SEL */ | ||
| 3143 | #define ARIZONA_AEC_COMP_COEFF_SEL_SHIFT 0 /* AEC_COMP_COEFF_SEL */ | ||
| 3144 | #define ARIZONA_AEC_COMP_COEFF_SEL_WIDTH 1 /* AEC_COMP_COEFF_SEL */ | ||
| 3145 | |||
| 3146 | /* | ||
| 3147 | * R1280 (0x500) - AIF1 BCLK Ctrl | ||
| 3148 | */ | ||
| 3149 | #define ARIZONA_AIF1_BCLK_INV 0x0080 /* AIF1_BCLK_INV */ | ||
| 3150 | #define ARIZONA_AIF1_BCLK_INV_MASK 0x0080 /* AIF1_BCLK_INV */ | ||
| 3151 | #define ARIZONA_AIF1_BCLK_INV_SHIFT 7 /* AIF1_BCLK_INV */ | ||
| 3152 | #define ARIZONA_AIF1_BCLK_INV_WIDTH 1 /* AIF1_BCLK_INV */ | ||
| 3153 | #define ARIZONA_AIF1_BCLK_FRC 0x0040 /* AIF1_BCLK_FRC */ | ||
| 3154 | #define ARIZONA_AIF1_BCLK_FRC_MASK 0x0040 /* AIF1_BCLK_FRC */ | ||
| 3155 | #define ARIZONA_AIF1_BCLK_FRC_SHIFT 6 /* AIF1_BCLK_FRC */ | ||
| 3156 | #define ARIZONA_AIF1_BCLK_FRC_WIDTH 1 /* AIF1_BCLK_FRC */ | ||
| 3157 | #define ARIZONA_AIF1_BCLK_MSTR 0x0020 /* AIF1_BCLK_MSTR */ | ||
| 3158 | #define ARIZONA_AIF1_BCLK_MSTR_MASK 0x0020 /* AIF1_BCLK_MSTR */ | ||
| 3159 | #define ARIZONA_AIF1_BCLK_MSTR_SHIFT 5 /* AIF1_BCLK_MSTR */ | ||
| 3160 | #define ARIZONA_AIF1_BCLK_MSTR_WIDTH 1 /* AIF1_BCLK_MSTR */ | ||
| 3161 | #define ARIZONA_AIF1_BCLK_FREQ_MASK 0x001F /* AIF1_BCLK_FREQ - [4:0] */ | ||
| 3162 | #define ARIZONA_AIF1_BCLK_FREQ_SHIFT 0 /* AIF1_BCLK_FREQ - [4:0] */ | ||
| 3163 | #define ARIZONA_AIF1_BCLK_FREQ_WIDTH 5 /* AIF1_BCLK_FREQ - [4:0] */ | ||
| 3164 | |||
| 3165 | /* | ||
| 3166 | * R1281 (0x501) - AIF1 Tx Pin Ctrl | ||
| 3167 | */ | ||
| 3168 | #define ARIZONA_AIF1TX_DAT_TRI 0x0020 /* AIF1TX_DAT_TRI */ | ||
| 3169 | #define ARIZONA_AIF1TX_DAT_TRI_MASK 0x0020 /* AIF1TX_DAT_TRI */ | ||
| 3170 | #define ARIZONA_AIF1TX_DAT_TRI_SHIFT 5 /* AIF1TX_DAT_TRI */ | ||
| 3171 | #define ARIZONA_AIF1TX_DAT_TRI_WIDTH 1 /* AIF1TX_DAT_TRI */ | ||
| 3172 | #define ARIZONA_AIF1TX_LRCLK_SRC 0x0008 /* AIF1TX_LRCLK_SRC */ | ||
| 3173 | #define ARIZONA_AIF1TX_LRCLK_SRC_MASK 0x0008 /* AIF1TX_LRCLK_SRC */ | ||
| 3174 | #define ARIZONA_AIF1TX_LRCLK_SRC_SHIFT 3 /* AIF1TX_LRCLK_SRC */ | ||
| 3175 | #define ARIZONA_AIF1TX_LRCLK_SRC_WIDTH 1 /* AIF1TX_LRCLK_SRC */ | ||
| 3176 | #define ARIZONA_AIF1TX_LRCLK_INV 0x0004 /* AIF1TX_LRCLK_INV */ | ||
| 3177 | #define ARIZONA_AIF1TX_LRCLK_INV_MASK 0x0004 /* AIF1TX_LRCLK_INV */ | ||
| 3178 | #define ARIZONA_AIF1TX_LRCLK_INV_SHIFT 2 /* AIF1TX_LRCLK_INV */ | ||
| 3179 | #define ARIZONA_AIF1TX_LRCLK_INV_WIDTH 1 /* AIF1TX_LRCLK_INV */ | ||
| 3180 | #define ARIZONA_AIF1TX_LRCLK_FRC 0x0002 /* AIF1TX_LRCLK_FRC */ | ||
| 3181 | #define ARIZONA_AIF1TX_LRCLK_FRC_MASK 0x0002 /* AIF1TX_LRCLK_FRC */ | ||
| 3182 | #define ARIZONA_AIF1TX_LRCLK_FRC_SHIFT 1 /* AIF1TX_LRCLK_FRC */ | ||
| 3183 | #define ARIZONA_AIF1TX_LRCLK_FRC_WIDTH 1 /* AIF1TX_LRCLK_FRC */ | ||
| 3184 | #define ARIZONA_AIF1TX_LRCLK_MSTR 0x0001 /* AIF1TX_LRCLK_MSTR */ | ||
| 3185 | #define ARIZONA_AIF1TX_LRCLK_MSTR_MASK 0x0001 /* AIF1TX_LRCLK_MSTR */ | ||
| 3186 | #define ARIZONA_AIF1TX_LRCLK_MSTR_SHIFT 0 /* AIF1TX_LRCLK_MSTR */ | ||
| 3187 | #define ARIZONA_AIF1TX_LRCLK_MSTR_WIDTH 1 /* AIF1TX_LRCLK_MSTR */ | ||
| 3188 | |||
| 3189 | /* | ||
| 3190 | * R1282 (0x502) - AIF1 Rx Pin Ctrl | ||
| 3191 | */ | ||
| 3192 | #define ARIZONA_AIF1RX_LRCLK_INV 0x0004 /* AIF1RX_LRCLK_INV */ | ||
| 3193 | #define ARIZONA_AIF1RX_LRCLK_INV_MASK 0x0004 /* AIF1RX_LRCLK_INV */ | ||
| 3194 | #define ARIZONA_AIF1RX_LRCLK_INV_SHIFT 2 /* AIF1RX_LRCLK_INV */ | ||
| 3195 | #define ARIZONA_AIF1RX_LRCLK_INV_WIDTH 1 /* AIF1RX_LRCLK_INV */ | ||
| 3196 | #define ARIZONA_AIF1RX_LRCLK_FRC 0x0002 /* AIF1RX_LRCLK_FRC */ | ||
| 3197 | #define ARIZONA_AIF1RX_LRCLK_FRC_MASK 0x0002 /* AIF1RX_LRCLK_FRC */ | ||
| 3198 | #define ARIZONA_AIF1RX_LRCLK_FRC_SHIFT 1 /* AIF1RX_LRCLK_FRC */ | ||
| 3199 | #define ARIZONA_AIF1RX_LRCLK_FRC_WIDTH 1 /* AIF1RX_LRCLK_FRC */ | ||
| 3200 | #define ARIZONA_AIF1RX_LRCLK_MSTR 0x0001 /* AIF1RX_LRCLK_MSTR */ | ||
| 3201 | #define ARIZONA_AIF1RX_LRCLK_MSTR_MASK 0x0001 /* AIF1RX_LRCLK_MSTR */ | ||
| 3202 | #define ARIZONA_AIF1RX_LRCLK_MSTR_SHIFT 0 /* AIF1RX_LRCLK_MSTR */ | ||
| 3203 | #define ARIZONA_AIF1RX_LRCLK_MSTR_WIDTH 1 /* AIF1RX_LRCLK_MSTR */ | ||
| 3204 | |||
| 3205 | /* | ||
| 3206 | * R1283 (0x503) - AIF1 Rate Ctrl | ||
| 3207 | */ | ||
| 3208 | #define ARIZONA_AIF1_RATE_MASK 0x7800 /* AIF1_RATE - [14:11] */ | ||
| 3209 | #define ARIZONA_AIF1_RATE_SHIFT 11 /* AIF1_RATE - [14:11] */ | ||
| 3210 | #define ARIZONA_AIF1_RATE_WIDTH 4 /* AIF1_RATE - [14:11] */ | ||
| 3211 | #define ARIZONA_AIF1_TRI 0x0040 /* AIF1_TRI */ | ||
| 3212 | #define ARIZONA_AIF1_TRI_MASK 0x0040 /* AIF1_TRI */ | ||
| 3213 | #define ARIZONA_AIF1_TRI_SHIFT 6 /* AIF1_TRI */ | ||
| 3214 | #define ARIZONA_AIF1_TRI_WIDTH 1 /* AIF1_TRI */ | ||
| 3215 | |||
| 3216 | /* | ||
| 3217 | * R1284 (0x504) - AIF1 Format | ||
| 3218 | */ | ||
| 3219 | #define ARIZONA_AIF1_FMT_MASK 0x0007 /* AIF1_FMT - [2:0] */ | ||
| 3220 | #define ARIZONA_AIF1_FMT_SHIFT 0 /* AIF1_FMT - [2:0] */ | ||
| 3221 | #define ARIZONA_AIF1_FMT_WIDTH 3 /* AIF1_FMT - [2:0] */ | ||
| 3222 | |||
| 3223 | /* | ||
| 3224 | * R1285 (0x505) - AIF1 Tx BCLK Rate | ||
| 3225 | */ | ||
| 3226 | #define ARIZONA_AIF1TX_BCPF_MASK 0x1FFF /* AIF1TX_BCPF - [12:0] */ | ||
| 3227 | #define ARIZONA_AIF1TX_BCPF_SHIFT 0 /* AIF1TX_BCPF - [12:0] */ | ||
| 3228 | #define ARIZONA_AIF1TX_BCPF_WIDTH 13 /* AIF1TX_BCPF - [12:0] */ | ||
| 3229 | |||
| 3230 | /* | ||
| 3231 | * R1286 (0x506) - AIF1 Rx BCLK Rate | ||
| 3232 | */ | ||
| 3233 | #define ARIZONA_AIF1RX_BCPF_MASK 0x1FFF /* AIF1RX_BCPF - [12:0] */ | ||
| 3234 | #define ARIZONA_AIF1RX_BCPF_SHIFT 0 /* AIF1RX_BCPF - [12:0] */ | ||
| 3235 | #define ARIZONA_AIF1RX_BCPF_WIDTH 13 /* AIF1RX_BCPF - [12:0] */ | ||
| 3236 | |||
| 3237 | /* | ||
| 3238 | * R1287 (0x507) - AIF1 Frame Ctrl 1 | ||
| 3239 | */ | ||
| 3240 | #define ARIZONA_AIF1TX_WL_MASK 0x3F00 /* AIF1TX_WL - [13:8] */ | ||
| 3241 | #define ARIZONA_AIF1TX_WL_SHIFT 8 /* AIF1TX_WL - [13:8] */ | ||
| 3242 | #define ARIZONA_AIF1TX_WL_WIDTH 6 /* AIF1TX_WL - [13:8] */ | ||
| 3243 | #define ARIZONA_AIF1TX_SLOT_LEN_MASK 0x00FF /* AIF1TX_SLOT_LEN - [7:0] */ | ||
| 3244 | #define ARIZONA_AIF1TX_SLOT_LEN_SHIFT 0 /* AIF1TX_SLOT_LEN - [7:0] */ | ||
| 3245 | #define ARIZONA_AIF1TX_SLOT_LEN_WIDTH 8 /* AIF1TX_SLOT_LEN - [7:0] */ | ||
| 3246 | |||
| 3247 | /* | ||
| 3248 | * R1288 (0x508) - AIF1 Frame Ctrl 2 | ||
| 3249 | */ | ||
| 3250 | #define ARIZONA_AIF1RX_WL_MASK 0x3F00 /* AIF1RX_WL - [13:8] */ | ||
| 3251 | #define ARIZONA_AIF1RX_WL_SHIFT 8 /* AIF1RX_WL - [13:8] */ | ||
| 3252 | #define ARIZONA_AIF1RX_WL_WIDTH 6 /* AIF1RX_WL - [13:8] */ | ||
| 3253 | #define ARIZONA_AIF1RX_SLOT_LEN_MASK 0x00FF /* AIF1RX_SLOT_LEN - [7:0] */ | ||
| 3254 | #define ARIZONA_AIF1RX_SLOT_LEN_SHIFT 0 /* AIF1RX_SLOT_LEN - [7:0] */ | ||
| 3255 | #define ARIZONA_AIF1RX_SLOT_LEN_WIDTH 8 /* AIF1RX_SLOT_LEN - [7:0] */ | ||
| 3256 | |||
| 3257 | /* | ||
| 3258 | * R1289 (0x509) - AIF1 Frame Ctrl 3 | ||
| 3259 | */ | ||
| 3260 | #define ARIZONA_AIF1TX1_SLOT_MASK 0x003F /* AIF1TX1_SLOT - [5:0] */ | ||
| 3261 | #define ARIZONA_AIF1TX1_SLOT_SHIFT 0 /* AIF1TX1_SLOT - [5:0] */ | ||
| 3262 | #define ARIZONA_AIF1TX1_SLOT_WIDTH 6 /* AIF1TX1_SLOT - [5:0] */ | ||
| 3263 | |||
| 3264 | /* | ||
| 3265 | * R1290 (0x50A) - AIF1 Frame Ctrl 4 | ||
| 3266 | */ | ||
| 3267 | #define ARIZONA_AIF1TX2_SLOT_MASK 0x003F /* AIF1TX2_SLOT - [5:0] */ | ||
| 3268 | #define ARIZONA_AIF1TX2_SLOT_SHIFT 0 /* AIF1TX2_SLOT - [5:0] */ | ||
| 3269 | #define ARIZONA_AIF1TX2_SLOT_WIDTH 6 /* AIF1TX2_SLOT - [5:0] */ | ||
| 3270 | |||
| 3271 | /* | ||
| 3272 | * R1291 (0x50B) - AIF1 Frame Ctrl 5 | ||
| 3273 | */ | ||
| 3274 | #define ARIZONA_AIF1TX3_SLOT_MASK 0x003F /* AIF1TX3_SLOT - [5:0] */ | ||
| 3275 | #define ARIZONA_AIF1TX3_SLOT_SHIFT 0 /* AIF1TX3_SLOT - [5:0] */ | ||
| 3276 | #define ARIZONA_AIF1TX3_SLOT_WIDTH 6 /* AIF1TX3_SLOT - [5:0] */ | ||
| 3277 | |||
| 3278 | /* | ||
| 3279 | * R1292 (0x50C) - AIF1 Frame Ctrl 6 | ||
| 3280 | */ | ||
| 3281 | #define ARIZONA_AIF1TX4_SLOT_MASK 0x003F /* AIF1TX4_SLOT - [5:0] */ | ||
| 3282 | #define ARIZONA_AIF1TX4_SLOT_SHIFT 0 /* AIF1TX4_SLOT - [5:0] */ | ||
| 3283 | #define ARIZONA_AIF1TX4_SLOT_WIDTH 6 /* AIF1TX4_SLOT - [5:0] */ | ||
| 3284 | |||
| 3285 | /* | ||
| 3286 | * R1293 (0x50D) - AIF1 Frame Ctrl 7 | ||
| 3287 | */ | ||
| 3288 | #define ARIZONA_AIF1TX5_SLOT_MASK 0x003F /* AIF1TX5_SLOT - [5:0] */ | ||
| 3289 | #define ARIZONA_AIF1TX5_SLOT_SHIFT 0 /* AIF1TX5_SLOT - [5:0] */ | ||
| 3290 | #define ARIZONA_AIF1TX5_SLOT_WIDTH 6 /* AIF1TX5_SLOT - [5:0] */ | ||
| 3291 | |||
| 3292 | /* | ||
| 3293 | * R1294 (0x50E) - AIF1 Frame Ctrl 8 | ||
| 3294 | */ | ||
| 3295 | #define ARIZONA_AIF1TX6_SLOT_MASK 0x003F /* AIF1TX6_SLOT - [5:0] */ | ||
| 3296 | #define ARIZONA_AIF1TX6_SLOT_SHIFT 0 /* AIF1TX6_SLOT - [5:0] */ | ||
| 3297 | #define ARIZONA_AIF1TX6_SLOT_WIDTH 6 /* AIF1TX6_SLOT - [5:0] */ | ||
| 3298 | |||
| 3299 | /* | ||
| 3300 | * R1295 (0x50F) - AIF1 Frame Ctrl 9 | ||
| 3301 | */ | ||
| 3302 | #define ARIZONA_AIF1TX7_SLOT_MASK 0x003F /* AIF1TX7_SLOT - [5:0] */ | ||
| 3303 | #define ARIZONA_AIF1TX7_SLOT_SHIFT 0 /* AIF1TX7_SLOT - [5:0] */ | ||
| 3304 | #define ARIZONA_AIF1TX7_SLOT_WIDTH 6 /* AIF1TX7_SLOT - [5:0] */ | ||
| 3305 | |||
| 3306 | /* | ||
| 3307 | * R1296 (0x510) - AIF1 Frame Ctrl 10 | ||
| 3308 | */ | ||
| 3309 | #define ARIZONA_AIF1TX8_SLOT_MASK 0x003F /* AIF1TX8_SLOT - [5:0] */ | ||
| 3310 | #define ARIZONA_AIF1TX8_SLOT_SHIFT 0 /* AIF1TX8_SLOT - [5:0] */ | ||
| 3311 | #define ARIZONA_AIF1TX8_SLOT_WIDTH 6 /* AIF1TX8_SLOT - [5:0] */ | ||
| 3312 | |||
| 3313 | /* | ||
| 3314 | * R1297 (0x511) - AIF1 Frame Ctrl 11 | ||
| 3315 | */ | ||
| 3316 | #define ARIZONA_AIF1RX1_SLOT_MASK 0x003F /* AIF1RX1_SLOT - [5:0] */ | ||
| 3317 | #define ARIZONA_AIF1RX1_SLOT_SHIFT 0 /* AIF1RX1_SLOT - [5:0] */ | ||
| 3318 | #define ARIZONA_AIF1RX1_SLOT_WIDTH 6 /* AIF1RX1_SLOT - [5:0] */ | ||
| 3319 | |||
| 3320 | /* | ||
| 3321 | * R1298 (0x512) - AIF1 Frame Ctrl 12 | ||
| 3322 | */ | ||
| 3323 | #define ARIZONA_AIF1RX2_SLOT_MASK 0x003F /* AIF1RX2_SLOT - [5:0] */ | ||
| 3324 | #define ARIZONA_AIF1RX2_SLOT_SHIFT 0 /* AIF1RX2_SLOT - [5:0] */ | ||
| 3325 | #define ARIZONA_AIF1RX2_SLOT_WIDTH 6 /* AIF1RX2_SLOT - [5:0] */ | ||
| 3326 | |||
| 3327 | /* | ||
| 3328 | * R1299 (0x513) - AIF1 Frame Ctrl 13 | ||
| 3329 | */ | ||
| 3330 | #define ARIZONA_AIF1RX3_SLOT_MASK 0x003F /* AIF1RX3_SLOT - [5:0] */ | ||
| 3331 | #define ARIZONA_AIF1RX3_SLOT_SHIFT 0 /* AIF1RX3_SLOT - [5:0] */ | ||
| 3332 | #define ARIZONA_AIF1RX3_SLOT_WIDTH 6 /* AIF1RX3_SLOT - [5:0] */ | ||
| 3333 | |||
| 3334 | /* | ||
| 3335 | * R1300 (0x514) - AIF1 Frame Ctrl 14 | ||
| 3336 | */ | ||
| 3337 | #define ARIZONA_AIF1RX4_SLOT_MASK 0x003F /* AIF1RX4_SLOT - [5:0] */ | ||
| 3338 | #define ARIZONA_AIF1RX4_SLOT_SHIFT 0 /* AIF1RX4_SLOT - [5:0] */ | ||
| 3339 | #define ARIZONA_AIF1RX4_SLOT_WIDTH 6 /* AIF1RX4_SLOT - [5:0] */ | ||
| 3340 | |||
| 3341 | /* | ||
| 3342 | * R1301 (0x515) - AIF1 Frame Ctrl 15 | ||
| 3343 | */ | ||
| 3344 | #define ARIZONA_AIF1RX5_SLOT_MASK 0x003F /* AIF1RX5_SLOT - [5:0] */ | ||
| 3345 | #define ARIZONA_AIF1RX5_SLOT_SHIFT 0 /* AIF1RX5_SLOT - [5:0] */ | ||
| 3346 | #define ARIZONA_AIF1RX5_SLOT_WIDTH 6 /* AIF1RX5_SLOT - [5:0] */ | ||
| 3347 | |||
| 3348 | /* | ||
| 3349 | * R1302 (0x516) - AIF1 Frame Ctrl 16 | ||
| 3350 | */ | ||
| 3351 | #define ARIZONA_AIF1RX6_SLOT_MASK 0x003F /* AIF1RX6_SLOT - [5:0] */ | ||
| 3352 | #define ARIZONA_AIF1RX6_SLOT_SHIFT 0 /* AIF1RX6_SLOT - [5:0] */ | ||
| 3353 | #define ARIZONA_AIF1RX6_SLOT_WIDTH 6 /* AIF1RX6_SLOT - [5:0] */ | ||
| 3354 | |||
| 3355 | /* | ||
| 3356 | * R1303 (0x517) - AIF1 Frame Ctrl 17 | ||
| 3357 | */ | ||
| 3358 | #define ARIZONA_AIF1RX7_SLOT_MASK 0x003F /* AIF1RX7_SLOT - [5:0] */ | ||
| 3359 | #define ARIZONA_AIF1RX7_SLOT_SHIFT 0 /* AIF1RX7_SLOT - [5:0] */ | ||
| 3360 | #define ARIZONA_AIF1RX7_SLOT_WIDTH 6 /* AIF1RX7_SLOT - [5:0] */ | ||
| 3361 | |||
| 3362 | /* | ||
| 3363 | * R1304 (0x518) - AIF1 Frame Ctrl 18 | ||
| 3364 | */ | ||
| 3365 | #define ARIZONA_AIF1RX8_SLOT_MASK 0x003F /* AIF1RX8_SLOT - [5:0] */ | ||
| 3366 | #define ARIZONA_AIF1RX8_SLOT_SHIFT 0 /* AIF1RX8_SLOT - [5:0] */ | ||
| 3367 | #define ARIZONA_AIF1RX8_SLOT_WIDTH 6 /* AIF1RX8_SLOT - [5:0] */ | ||
| 3368 | |||
| 3369 | /* | ||
| 3370 | * R1305 (0x519) - AIF1 Tx Enables | ||
| 3371 | */ | ||
| 3372 | #define ARIZONA_AIF1TX8_ENA 0x0080 /* AIF1TX8_ENA */ | ||
| 3373 | #define ARIZONA_AIF1TX8_ENA_MASK 0x0080 /* AIF1TX8_ENA */ | ||
| 3374 | #define ARIZONA_AIF1TX8_ENA_SHIFT 7 /* AIF1TX8_ENA */ | ||
| 3375 | #define ARIZONA_AIF1TX8_ENA_WIDTH 1 /* AIF1TX8_ENA */ | ||
| 3376 | #define ARIZONA_AIF1TX7_ENA 0x0040 /* AIF1TX7_ENA */ | ||
| 3377 | #define ARIZONA_AIF1TX7_ENA_MASK 0x0040 /* AIF1TX7_ENA */ | ||
| 3378 | #define ARIZONA_AIF1TX7_ENA_SHIFT 6 /* AIF1TX7_ENA */ | ||
| 3379 | #define ARIZONA_AIF1TX7_ENA_WIDTH 1 /* AIF1TX7_ENA */ | ||
| 3380 | #define ARIZONA_AIF1TX6_ENA 0x0020 /* AIF1TX6_ENA */ | ||
| 3381 | #define ARIZONA_AIF1TX6_ENA_MASK 0x0020 /* AIF1TX6_ENA */ | ||
| 3382 | #define ARIZONA_AIF1TX6_ENA_SHIFT 5 /* AIF1TX6_ENA */ | ||
| 3383 | #define ARIZONA_AIF1TX6_ENA_WIDTH 1 /* AIF1TX6_ENA */ | ||
| 3384 | #define ARIZONA_AIF1TX5_ENA 0x0010 /* AIF1TX5_ENA */ | ||
| 3385 | #define ARIZONA_AIF1TX5_ENA_MASK 0x0010 /* AIF1TX5_ENA */ | ||
| 3386 | #define ARIZONA_AIF1TX5_ENA_SHIFT 4 /* AIF1TX5_ENA */ | ||
| 3387 | #define ARIZONA_AIF1TX5_ENA_WIDTH 1 /* AIF1TX5_ENA */ | ||
| 3388 | #define ARIZONA_AIF1TX4_ENA 0x0008 /* AIF1TX4_ENA */ | ||
| 3389 | #define ARIZONA_AIF1TX4_ENA_MASK 0x0008 /* AIF1TX4_ENA */ | ||
| 3390 | #define ARIZONA_AIF1TX4_ENA_SHIFT 3 /* AIF1TX4_ENA */ | ||
| 3391 | #define ARIZONA_AIF1TX4_ENA_WIDTH 1 /* AIF1TX4_ENA */ | ||
| 3392 | #define ARIZONA_AIF1TX3_ENA 0x0004 /* AIF1TX3_ENA */ | ||
| 3393 | #define ARIZONA_AIF1TX3_ENA_MASK 0x0004 /* AIF1TX3_ENA */ | ||
| 3394 | #define ARIZONA_AIF1TX3_ENA_SHIFT 2 /* AIF1TX3_ENA */ | ||
| 3395 | #define ARIZONA_AIF1TX3_ENA_WIDTH 1 /* AIF1TX3_ENA */ | ||
| 3396 | #define ARIZONA_AIF1TX2_ENA 0x0002 /* AIF1TX2_ENA */ | ||
| 3397 | #define ARIZONA_AIF1TX2_ENA_MASK 0x0002 /* AIF1TX2_ENA */ | ||
| 3398 | #define ARIZONA_AIF1TX2_ENA_SHIFT 1 /* AIF1TX2_ENA */ | ||
| 3399 | #define ARIZONA_AIF1TX2_ENA_WIDTH 1 /* AIF1TX2_ENA */ | ||
| 3400 | #define ARIZONA_AIF1TX1_ENA 0x0001 /* AIF1TX1_ENA */ | ||
| 3401 | #define ARIZONA_AIF1TX1_ENA_MASK 0x0001 /* AIF1TX1_ENA */ | ||
| 3402 | #define ARIZONA_AIF1TX1_ENA_SHIFT 0 /* AIF1TX1_ENA */ | ||
| 3403 | #define ARIZONA_AIF1TX1_ENA_WIDTH 1 /* AIF1TX1_ENA */ | ||
| 3404 | |||
| 3405 | /* | ||
| 3406 | * R1306 (0x51A) - AIF1 Rx Enables | ||
| 3407 | */ | ||
| 3408 | #define ARIZONA_AIF1RX8_ENA 0x0080 /* AIF1RX8_ENA */ | ||
| 3409 | #define ARIZONA_AIF1RX8_ENA_MASK 0x0080 /* AIF1RX8_ENA */ | ||
| 3410 | #define ARIZONA_AIF1RX8_ENA_SHIFT 7 /* AIF1RX8_ENA */ | ||
| 3411 | #define ARIZONA_AIF1RX8_ENA_WIDTH 1 /* AIF1RX8_ENA */ | ||
| 3412 | #define ARIZONA_AIF1RX7_ENA 0x0040 /* AIF1RX7_ENA */ | ||
| 3413 | #define ARIZONA_AIF1RX7_ENA_MASK 0x0040 /* AIF1RX7_ENA */ | ||
| 3414 | #define ARIZONA_AIF1RX7_ENA_SHIFT 6 /* AIF1RX7_ENA */ | ||
| 3415 | #define ARIZONA_AIF1RX7_ENA_WIDTH 1 /* AIF1RX7_ENA */ | ||
| 3416 | #define ARIZONA_AIF1RX6_ENA 0x0020 /* AIF1RX6_ENA */ | ||
| 3417 | #define ARIZONA_AIF1RX6_ENA_MASK 0x0020 /* AIF1RX6_ENA */ | ||
| 3418 | #define ARIZONA_AIF1RX6_ENA_SHIFT 5 /* AIF1RX6_ENA */ | ||
| 3419 | #define ARIZONA_AIF1RX6_ENA_WIDTH 1 /* AIF1RX6_ENA */ | ||
| 3420 | #define ARIZONA_AIF1RX5_ENA 0x0010 /* AIF1RX5_ENA */ | ||
| 3421 | #define ARIZONA_AIF1RX5_ENA_MASK 0x0010 /* AIF1RX5_ENA */ | ||
| 3422 | #define ARIZONA_AIF1RX5_ENA_SHIFT 4 /* AIF1RX5_ENA */ | ||
| 3423 | #define ARIZONA_AIF1RX5_ENA_WIDTH 1 /* AIF1RX5_ENA */ | ||
| 3424 | #define ARIZONA_AIF1RX4_ENA 0x0008 /* AIF1RX4_ENA */ | ||
| 3425 | #define ARIZONA_AIF1RX4_ENA_MASK 0x0008 /* AIF1RX4_ENA */ | ||
| 3426 | #define ARIZONA_AIF1RX4_ENA_SHIFT 3 /* AIF1RX4_ENA */ | ||
| 3427 | #define ARIZONA_AIF1RX4_ENA_WIDTH 1 /* AIF1RX4_ENA */ | ||
| 3428 | #define ARIZONA_AIF1RX3_ENA 0x0004 /* AIF1RX3_ENA */ | ||
| 3429 | #define ARIZONA_AIF1RX3_ENA_MASK 0x0004 /* AIF1RX3_ENA */ | ||
| 3430 | #define ARIZONA_AIF1RX3_ENA_SHIFT 2 /* AIF1RX3_ENA */ | ||
| 3431 | #define ARIZONA_AIF1RX3_ENA_WIDTH 1 /* AIF1RX3_ENA */ | ||
| 3432 | #define ARIZONA_AIF1RX2_ENA 0x0002 /* AIF1RX2_ENA */ | ||
| 3433 | #define ARIZONA_AIF1RX2_ENA_MASK 0x0002 /* AIF1RX2_ENA */ | ||
| 3434 | #define ARIZONA_AIF1RX2_ENA_SHIFT 1 /* AIF1RX2_ENA */ | ||
| 3435 | #define ARIZONA_AIF1RX2_ENA_WIDTH 1 /* AIF1RX2_ENA */ | ||
| 3436 | #define ARIZONA_AIF1RX1_ENA 0x0001 /* AIF1RX1_ENA */ | ||
| 3437 | #define ARIZONA_AIF1RX1_ENA_MASK 0x0001 /* AIF1RX1_ENA */ | ||
| 3438 | #define ARIZONA_AIF1RX1_ENA_SHIFT 0 /* AIF1RX1_ENA */ | ||
| 3439 | #define ARIZONA_AIF1RX1_ENA_WIDTH 1 /* AIF1RX1_ENA */ | ||
| 3440 | |||
| 3441 | /* | ||
| 3442 | * R1307 (0x51B) - AIF1 Force Write | ||
| 3443 | */ | ||
| 3444 | #define ARIZONA_AIF1_FRC_WR 0x0001 /* AIF1_FRC_WR */ | ||
| 3445 | #define ARIZONA_AIF1_FRC_WR_MASK 0x0001 /* AIF1_FRC_WR */ | ||
| 3446 | #define ARIZONA_AIF1_FRC_WR_SHIFT 0 /* AIF1_FRC_WR */ | ||
| 3447 | #define ARIZONA_AIF1_FRC_WR_WIDTH 1 /* AIF1_FRC_WR */ | ||
| 3448 | |||
| 3449 | /* | ||
| 3450 | * R1344 (0x540) - AIF2 BCLK Ctrl | ||
| 3451 | */ | ||
| 3452 | #define ARIZONA_AIF2_BCLK_INV 0x0080 /* AIF2_BCLK_INV */ | ||
| 3453 | #define ARIZONA_AIF2_BCLK_INV_MASK 0x0080 /* AIF2_BCLK_INV */ | ||
| 3454 | #define ARIZONA_AIF2_BCLK_INV_SHIFT 7 /* AIF2_BCLK_INV */ | ||
| 3455 | #define ARIZONA_AIF2_BCLK_INV_WIDTH 1 /* AIF2_BCLK_INV */ | ||
| 3456 | #define ARIZONA_AIF2_BCLK_FRC 0x0040 /* AIF2_BCLK_FRC */ | ||
| 3457 | #define ARIZONA_AIF2_BCLK_FRC_MASK 0x0040 /* AIF2_BCLK_FRC */ | ||
| 3458 | #define ARIZONA_AIF2_BCLK_FRC_SHIFT 6 /* AIF2_BCLK_FRC */ | ||
| 3459 | #define ARIZONA_AIF2_BCLK_FRC_WIDTH 1 /* AIF2_BCLK_FRC */ | ||
| 3460 | #define ARIZONA_AIF2_BCLK_MSTR 0x0020 /* AIF2_BCLK_MSTR */ | ||
| 3461 | #define ARIZONA_AIF2_BCLK_MSTR_MASK 0x0020 /* AIF2_BCLK_MSTR */ | ||
| 3462 | #define ARIZONA_AIF2_BCLK_MSTR_SHIFT 5 /* AIF2_BCLK_MSTR */ | ||
| 3463 | #define ARIZONA_AIF2_BCLK_MSTR_WIDTH 1 /* AIF2_BCLK_MSTR */ | ||
| 3464 | #define ARIZONA_AIF2_BCLK_FREQ_MASK 0x001F /* AIF2_BCLK_FREQ - [4:0] */ | ||
| 3465 | #define ARIZONA_AIF2_BCLK_FREQ_SHIFT 0 /* AIF2_BCLK_FREQ - [4:0] */ | ||
| 3466 | #define ARIZONA_AIF2_BCLK_FREQ_WIDTH 5 /* AIF2_BCLK_FREQ - [4:0] */ | ||
| 3467 | |||
| 3468 | /* | ||
| 3469 | * R1345 (0x541) - AIF2 Tx Pin Ctrl | ||
| 3470 | */ | ||
| 3471 | #define ARIZONA_AIF2TX_DAT_TRI 0x0020 /* AIF2TX_DAT_TRI */ | ||
| 3472 | #define ARIZONA_AIF2TX_DAT_TRI_MASK 0x0020 /* AIF2TX_DAT_TRI */ | ||
| 3473 | #define ARIZONA_AIF2TX_DAT_TRI_SHIFT 5 /* AIF2TX_DAT_TRI */ | ||
| 3474 | #define ARIZONA_AIF2TX_DAT_TRI_WIDTH 1 /* AIF2TX_DAT_TRI */ | ||
| 3475 | #define ARIZONA_AIF2TX_LRCLK_SRC 0x0008 /* AIF2TX_LRCLK_SRC */ | ||
| 3476 | #define ARIZONA_AIF2TX_LRCLK_SRC_MASK 0x0008 /* AIF2TX_LRCLK_SRC */ | ||
| 3477 | #define ARIZONA_AIF2TX_LRCLK_SRC_SHIFT 3 /* AIF2TX_LRCLK_SRC */ | ||
| 3478 | #define ARIZONA_AIF2TX_LRCLK_SRC_WIDTH 1 /* AIF2TX_LRCLK_SRC */ | ||
| 3479 | #define ARIZONA_AIF2TX_LRCLK_INV 0x0004 /* AIF2TX_LRCLK_INV */ | ||
| 3480 | #define ARIZONA_AIF2TX_LRCLK_INV_MASK 0x0004 /* AIF2TX_LRCLK_INV */ | ||
| 3481 | #define ARIZONA_AIF2TX_LRCLK_INV_SHIFT 2 /* AIF2TX_LRCLK_INV */ | ||
| 3482 | #define ARIZONA_AIF2TX_LRCLK_INV_WIDTH 1 /* AIF2TX_LRCLK_INV */ | ||
| 3483 | #define ARIZONA_AIF2TX_LRCLK_FRC 0x0002 /* AIF2TX_LRCLK_FRC */ | ||
| 3484 | #define ARIZONA_AIF2TX_LRCLK_FRC_MASK 0x0002 /* AIF2TX_LRCLK_FRC */ | ||
| 3485 | #define ARIZONA_AIF2TX_LRCLK_FRC_SHIFT 1 /* AIF2TX_LRCLK_FRC */ | ||
| 3486 | #define ARIZONA_AIF2TX_LRCLK_FRC_WIDTH 1 /* AIF2TX_LRCLK_FRC */ | ||
| 3487 | #define ARIZONA_AIF2TX_LRCLK_MSTR 0x0001 /* AIF2TX_LRCLK_MSTR */ | ||
| 3488 | #define ARIZONA_AIF2TX_LRCLK_MSTR_MASK 0x0001 /* AIF2TX_LRCLK_MSTR */ | ||
| 3489 | #define ARIZONA_AIF2TX_LRCLK_MSTR_SHIFT 0 /* AIF2TX_LRCLK_MSTR */ | ||
| 3490 | #define ARIZONA_AIF2TX_LRCLK_MSTR_WIDTH 1 /* AIF2TX_LRCLK_MSTR */ | ||
| 3491 | |||
| 3492 | /* | ||
| 3493 | * R1346 (0x542) - AIF2 Rx Pin Ctrl | ||
| 3494 | */ | ||
| 3495 | #define ARIZONA_AIF2RX_LRCLK_INV 0x0004 /* AIF2RX_LRCLK_INV */ | ||
| 3496 | #define ARIZONA_AIF2RX_LRCLK_INV_MASK 0x0004 /* AIF2RX_LRCLK_INV */ | ||
| 3497 | #define ARIZONA_AIF2RX_LRCLK_INV_SHIFT 2 /* AIF2RX_LRCLK_INV */ | ||
| 3498 | #define ARIZONA_AIF2RX_LRCLK_INV_WIDTH 1 /* AIF2RX_LRCLK_INV */ | ||
| 3499 | #define ARIZONA_AIF2RX_LRCLK_FRC 0x0002 /* AIF2RX_LRCLK_FRC */ | ||
| 3500 | #define ARIZONA_AIF2RX_LRCLK_FRC_MASK 0x0002 /* AIF2RX_LRCLK_FRC */ | ||
| 3501 | #define ARIZONA_AIF2RX_LRCLK_FRC_SHIFT 1 /* AIF2RX_LRCLK_FRC */ | ||
| 3502 | #define ARIZONA_AIF2RX_LRCLK_FRC_WIDTH 1 /* AIF2RX_LRCLK_FRC */ | ||
| 3503 | #define ARIZONA_AIF2RX_LRCLK_MSTR 0x0001 /* AIF2RX_LRCLK_MSTR */ | ||
| 3504 | #define ARIZONA_AIF2RX_LRCLK_MSTR_MASK 0x0001 /* AIF2RX_LRCLK_MSTR */ | ||
| 3505 | #define ARIZONA_AIF2RX_LRCLK_MSTR_SHIFT 0 /* AIF2RX_LRCLK_MSTR */ | ||
| 3506 | #define ARIZONA_AIF2RX_LRCLK_MSTR_WIDTH 1 /* AIF2RX_LRCLK_MSTR */ | ||
| 3507 | |||
| 3508 | /* | ||
| 3509 | * R1347 (0x543) - AIF2 Rate Ctrl | ||
| 3510 | */ | ||
| 3511 | #define ARIZONA_AIF2_RATE_MASK 0x7800 /* AIF2_RATE - [14:11] */ | ||
| 3512 | #define ARIZONA_AIF2_RATE_SHIFT 11 /* AIF2_RATE - [14:11] */ | ||
| 3513 | #define ARIZONA_AIF2_RATE_WIDTH 4 /* AIF2_RATE - [14:11] */ | ||
| 3514 | #define ARIZONA_AIF2_TRI 0x0040 /* AIF2_TRI */ | ||
| 3515 | #define ARIZONA_AIF2_TRI_MASK 0x0040 /* AIF2_TRI */ | ||
| 3516 | #define ARIZONA_AIF2_TRI_SHIFT 6 /* AIF2_TRI */ | ||
| 3517 | #define ARIZONA_AIF2_TRI_WIDTH 1 /* AIF2_TRI */ | ||
| 3518 | |||
| 3519 | /* | ||
| 3520 | * R1348 (0x544) - AIF2 Format | ||
| 3521 | */ | ||
| 3522 | #define ARIZONA_AIF2_FMT_MASK 0x0007 /* AIF2_FMT - [2:0] */ | ||
| 3523 | #define ARIZONA_AIF2_FMT_SHIFT 0 /* AIF2_FMT - [2:0] */ | ||
| 3524 | #define ARIZONA_AIF2_FMT_WIDTH 3 /* AIF2_FMT - [2:0] */ | ||
| 3525 | |||
| 3526 | /* | ||
| 3527 | * R1349 (0x545) - AIF2 Tx BCLK Rate | ||
| 3528 | */ | ||
| 3529 | #define ARIZONA_AIF2TX_BCPF_MASK 0x1FFF /* AIF2TX_BCPF - [12:0] */ | ||
| 3530 | #define ARIZONA_AIF2TX_BCPF_SHIFT 0 /* AIF2TX_BCPF - [12:0] */ | ||
| 3531 | #define ARIZONA_AIF2TX_BCPF_WIDTH 13 /* AIF2TX_BCPF - [12:0] */ | ||
| 3532 | |||
| 3533 | /* | ||
| 3534 | * R1350 (0x546) - AIF2 Rx BCLK Rate | ||
| 3535 | */ | ||
| 3536 | #define ARIZONA_AIF2RX_BCPF_MASK 0x1FFF /* AIF2RX_BCPF - [12:0] */ | ||
| 3537 | #define ARIZONA_AIF2RX_BCPF_SHIFT 0 /* AIF2RX_BCPF - [12:0] */ | ||
| 3538 | #define ARIZONA_AIF2RX_BCPF_WIDTH 13 /* AIF2RX_BCPF - [12:0] */ | ||
| 3539 | |||
| 3540 | /* | ||
| 3541 | * R1351 (0x547) - AIF2 Frame Ctrl 1 | ||
| 3542 | */ | ||
| 3543 | #define ARIZONA_AIF2TX_WL_MASK 0x3F00 /* AIF2TX_WL - [13:8] */ | ||
| 3544 | #define ARIZONA_AIF2TX_WL_SHIFT 8 /* AIF2TX_WL - [13:8] */ | ||
| 3545 | #define ARIZONA_AIF2TX_WL_WIDTH 6 /* AIF2TX_WL - [13:8] */ | ||
| 3546 | #define ARIZONA_AIF2TX_SLOT_LEN_MASK 0x00FF /* AIF2TX_SLOT_LEN - [7:0] */ | ||
| 3547 | #define ARIZONA_AIF2TX_SLOT_LEN_SHIFT 0 /* AIF2TX_SLOT_LEN - [7:0] */ | ||
| 3548 | #define ARIZONA_AIF2TX_SLOT_LEN_WIDTH 8 /* AIF2TX_SLOT_LEN - [7:0] */ | ||
| 3549 | |||
| 3550 | /* | ||
| 3551 | * R1352 (0x548) - AIF2 Frame Ctrl 2 | ||
| 3552 | */ | ||
| 3553 | #define ARIZONA_AIF2RX_WL_MASK 0x3F00 /* AIF2RX_WL - [13:8] */ | ||
| 3554 | #define ARIZONA_AIF2RX_WL_SHIFT 8 /* AIF2RX_WL - [13:8] */ | ||
| 3555 | #define ARIZONA_AIF2RX_WL_WIDTH 6 /* AIF2RX_WL - [13:8] */ | ||
| 3556 | #define ARIZONA_AIF2RX_SLOT_LEN_MASK 0x00FF /* AIF2RX_SLOT_LEN - [7:0] */ | ||
| 3557 | #define ARIZONA_AIF2RX_SLOT_LEN_SHIFT 0 /* AIF2RX_SLOT_LEN - [7:0] */ | ||
| 3558 | #define ARIZONA_AIF2RX_SLOT_LEN_WIDTH 8 /* AIF2RX_SLOT_LEN - [7:0] */ | ||
| 3559 | |||
| 3560 | /* | ||
| 3561 | * R1353 (0x549) - AIF2 Frame Ctrl 3 | ||
| 3562 | */ | ||
| 3563 | #define ARIZONA_AIF2TX1_SLOT_MASK 0x003F /* AIF2TX1_SLOT - [5:0] */ | ||
| 3564 | #define ARIZONA_AIF2TX1_SLOT_SHIFT 0 /* AIF2TX1_SLOT - [5:0] */ | ||
| 3565 | #define ARIZONA_AIF2TX1_SLOT_WIDTH 6 /* AIF2TX1_SLOT - [5:0] */ | ||
| 3566 | |||
| 3567 | /* | ||
| 3568 | * R1354 (0x54A) - AIF2 Frame Ctrl 4 | ||
| 3569 | */ | ||
| 3570 | #define ARIZONA_AIF2TX2_SLOT_MASK 0x003F /* AIF2TX2_SLOT - [5:0] */ | ||
| 3571 | #define ARIZONA_AIF2TX2_SLOT_SHIFT 0 /* AIF2TX2_SLOT - [5:0] */ | ||
| 3572 | #define ARIZONA_AIF2TX2_SLOT_WIDTH 6 /* AIF2TX2_SLOT - [5:0] */ | ||
| 3573 | |||
| 3574 | /* | ||
| 3575 | * R1361 (0x551) - AIF2 Frame Ctrl 11 | ||
| 3576 | */ | ||
| 3577 | #define ARIZONA_AIF2RX1_SLOT_MASK 0x003F /* AIF2RX1_SLOT - [5:0] */ | ||
| 3578 | #define ARIZONA_AIF2RX1_SLOT_SHIFT 0 /* AIF2RX1_SLOT - [5:0] */ | ||
| 3579 | #define ARIZONA_AIF2RX1_SLOT_WIDTH 6 /* AIF2RX1_SLOT - [5:0] */ | ||
| 3580 | |||
| 3581 | /* | ||
| 3582 | * R1362 (0x552) - AIF2 Frame Ctrl 12 | ||
| 3583 | */ | ||
| 3584 | #define ARIZONA_AIF2RX2_SLOT_MASK 0x003F /* AIF2RX2_SLOT - [5:0] */ | ||
| 3585 | #define ARIZONA_AIF2RX2_SLOT_SHIFT 0 /* AIF2RX2_SLOT - [5:0] */ | ||
| 3586 | #define ARIZONA_AIF2RX2_SLOT_WIDTH 6 /* AIF2RX2_SLOT - [5:0] */ | ||
| 3587 | |||
| 3588 | /* | ||
| 3589 | * R1369 (0x559) - AIF2 Tx Enables | ||
| 3590 | */ | ||
| 3591 | #define ARIZONA_AIF2TX2_ENA 0x0002 /* AIF2TX2_ENA */ | ||
| 3592 | #define ARIZONA_AIF2TX2_ENA_MASK 0x0002 /* AIF2TX2_ENA */ | ||
| 3593 | #define ARIZONA_AIF2TX2_ENA_SHIFT 1 /* AIF2TX2_ENA */ | ||
| 3594 | #define ARIZONA_AIF2TX2_ENA_WIDTH 1 /* AIF2TX2_ENA */ | ||
| 3595 | #define ARIZONA_AIF2TX1_ENA 0x0001 /* AIF2TX1_ENA */ | ||
| 3596 | #define ARIZONA_AIF2TX1_ENA_MASK 0x0001 /* AIF2TX1_ENA */ | ||
| 3597 | #define ARIZONA_AIF2TX1_ENA_SHIFT 0 /* AIF2TX1_ENA */ | ||
| 3598 | #define ARIZONA_AIF2TX1_ENA_WIDTH 1 /* AIF2TX1_ENA */ | ||
| 3599 | |||
| 3600 | /* | ||
| 3601 | * R1370 (0x55A) - AIF2 Rx Enables | ||
| 3602 | */ | ||
| 3603 | #define ARIZONA_AIF2RX2_ENA 0x0002 /* AIF2RX2_ENA */ | ||
| 3604 | #define ARIZONA_AIF2RX2_ENA_MASK 0x0002 /* AIF2RX2_ENA */ | ||
| 3605 | #define ARIZONA_AIF2RX2_ENA_SHIFT 1 /* AIF2RX2_ENA */ | ||
| 3606 | #define ARIZONA_AIF2RX2_ENA_WIDTH 1 /* AIF2RX2_ENA */ | ||
| 3607 | #define ARIZONA_AIF2RX1_ENA 0x0001 /* AIF2RX1_ENA */ | ||
| 3608 | #define ARIZONA_AIF2RX1_ENA_MASK 0x0001 /* AIF2RX1_ENA */ | ||
| 3609 | #define ARIZONA_AIF2RX1_ENA_SHIFT 0 /* AIF2RX1_ENA */ | ||
| 3610 | #define ARIZONA_AIF2RX1_ENA_WIDTH 1 /* AIF2RX1_ENA */ | ||
| 3611 | |||
| 3612 | /* | ||
| 3613 | * R1371 (0x55B) - AIF2 Force Write | ||
| 3614 | */ | ||
| 3615 | #define ARIZONA_AIF2_FRC_WR 0x0001 /* AIF2_FRC_WR */ | ||
| 3616 | #define ARIZONA_AIF2_FRC_WR_MASK 0x0001 /* AIF2_FRC_WR */ | ||
| 3617 | #define ARIZONA_AIF2_FRC_WR_SHIFT 0 /* AIF2_FRC_WR */ | ||
| 3618 | #define ARIZONA_AIF2_FRC_WR_WIDTH 1 /* AIF2_FRC_WR */ | ||
| 3619 | |||
| 3620 | /* | ||
| 3621 | * R1408 (0x580) - AIF3 BCLK Ctrl | ||
| 3622 | */ | ||
| 3623 | #define ARIZONA_AIF3_BCLK_INV 0x0080 /* AIF3_BCLK_INV */ | ||
| 3624 | #define ARIZONA_AIF3_BCLK_INV_MASK 0x0080 /* AIF3_BCLK_INV */ | ||
| 3625 | #define ARIZONA_AIF3_BCLK_INV_SHIFT 7 /* AIF3_BCLK_INV */ | ||
| 3626 | #define ARIZONA_AIF3_BCLK_INV_WIDTH 1 /* AIF3_BCLK_INV */ | ||
| 3627 | #define ARIZONA_AIF3_BCLK_FRC 0x0040 /* AIF3_BCLK_FRC */ | ||
| 3628 | #define ARIZONA_AIF3_BCLK_FRC_MASK 0x0040 /* AIF3_BCLK_FRC */ | ||
| 3629 | #define ARIZONA_AIF3_BCLK_FRC_SHIFT 6 /* AIF3_BCLK_FRC */ | ||
| 3630 | #define ARIZONA_AIF3_BCLK_FRC_WIDTH 1 /* AIF3_BCLK_FRC */ | ||
| 3631 | #define ARIZONA_AIF3_BCLK_MSTR 0x0020 /* AIF3_BCLK_MSTR */ | ||
| 3632 | #define ARIZONA_AIF3_BCLK_MSTR_MASK 0x0020 /* AIF3_BCLK_MSTR */ | ||
| 3633 | #define ARIZONA_AIF3_BCLK_MSTR_SHIFT 5 /* AIF3_BCLK_MSTR */ | ||
| 3634 | #define ARIZONA_AIF3_BCLK_MSTR_WIDTH 1 /* AIF3_BCLK_MSTR */ | ||
| 3635 | #define ARIZONA_AIF3_BCLK_FREQ_MASK 0x001F /* AIF3_BCLK_FREQ - [4:0] */ | ||
| 3636 | #define ARIZONA_AIF3_BCLK_FREQ_SHIFT 0 /* AIF3_BCLK_FREQ - [4:0] */ | ||
| 3637 | #define ARIZONA_AIF3_BCLK_FREQ_WIDTH 5 /* AIF3_BCLK_FREQ - [4:0] */ | ||
| 3638 | |||
| 3639 | /* | ||
| 3640 | * R1409 (0x581) - AIF3 Tx Pin Ctrl | ||
| 3641 | */ | ||
| 3642 | #define ARIZONA_AIF3TX_DAT_TRI 0x0020 /* AIF3TX_DAT_TRI */ | ||
| 3643 | #define ARIZONA_AIF3TX_DAT_TRI_MASK 0x0020 /* AIF3TX_DAT_TRI */ | ||
| 3644 | #define ARIZONA_AIF3TX_DAT_TRI_SHIFT 5 /* AIF3TX_DAT_TRI */ | ||
| 3645 | #define ARIZONA_AIF3TX_DAT_TRI_WIDTH 1 /* AIF3TX_DAT_TRI */ | ||
| 3646 | #define ARIZONA_AIF3TX_LRCLK_SRC 0x0008 /* AIF3TX_LRCLK_SRC */ | ||
| 3647 | #define ARIZONA_AIF3TX_LRCLK_SRC_MASK 0x0008 /* AIF3TX_LRCLK_SRC */ | ||
| 3648 | #define ARIZONA_AIF3TX_LRCLK_SRC_SHIFT 3 /* AIF3TX_LRCLK_SRC */ | ||
| 3649 | #define ARIZONA_AIF3TX_LRCLK_SRC_WIDTH 1 /* AIF3TX_LRCLK_SRC */ | ||
| 3650 | #define ARIZONA_AIF3TX_LRCLK_INV 0x0004 /* AIF3TX_LRCLK_INV */ | ||
| 3651 | #define ARIZONA_AIF3TX_LRCLK_INV_MASK 0x0004 /* AIF3TX_LRCLK_INV */ | ||
| 3652 | #define ARIZONA_AIF3TX_LRCLK_INV_SHIFT 2 /* AIF3TX_LRCLK_INV */ | ||
| 3653 | #define ARIZONA_AIF3TX_LRCLK_INV_WIDTH 1 /* AIF3TX_LRCLK_INV */ | ||
| 3654 | #define ARIZONA_AIF3TX_LRCLK_FRC 0x0002 /* AIF3TX_LRCLK_FRC */ | ||
| 3655 | #define ARIZONA_AIF3TX_LRCLK_FRC_MASK 0x0002 /* AIF3TX_LRCLK_FRC */ | ||
| 3656 | #define ARIZONA_AIF3TX_LRCLK_FRC_SHIFT 1 /* AIF3TX_LRCLK_FRC */ | ||
| 3657 | #define ARIZONA_AIF3TX_LRCLK_FRC_WIDTH 1 /* AIF3TX_LRCLK_FRC */ | ||
| 3658 | #define ARIZONA_AIF3TX_LRCLK_MSTR 0x0001 /* AIF3TX_LRCLK_MSTR */ | ||
| 3659 | #define ARIZONA_AIF3TX_LRCLK_MSTR_MASK 0x0001 /* AIF3TX_LRCLK_MSTR */ | ||
| 3660 | #define ARIZONA_AIF3TX_LRCLK_MSTR_SHIFT 0 /* AIF3TX_LRCLK_MSTR */ | ||
| 3661 | #define ARIZONA_AIF3TX_LRCLK_MSTR_WIDTH 1 /* AIF3TX_LRCLK_MSTR */ | ||
| 3662 | |||
| 3663 | /* | ||
| 3664 | * R1410 (0x582) - AIF3 Rx Pin Ctrl | ||
| 3665 | */ | ||
| 3666 | #define ARIZONA_AIF3RX_LRCLK_INV 0x0004 /* AIF3RX_LRCLK_INV */ | ||
| 3667 | #define ARIZONA_AIF3RX_LRCLK_INV_MASK 0x0004 /* AIF3RX_LRCLK_INV */ | ||
| 3668 | #define ARIZONA_AIF3RX_LRCLK_INV_SHIFT 2 /* AIF3RX_LRCLK_INV */ | ||
| 3669 | #define ARIZONA_AIF3RX_LRCLK_INV_WIDTH 1 /* AIF3RX_LRCLK_INV */ | ||
| 3670 | #define ARIZONA_AIF3RX_LRCLK_FRC 0x0002 /* AIF3RX_LRCLK_FRC */ | ||
| 3671 | #define ARIZONA_AIF3RX_LRCLK_FRC_MASK 0x0002 /* AIF3RX_LRCLK_FRC */ | ||
| 3672 | #define ARIZONA_AIF3RX_LRCLK_FRC_SHIFT 1 /* AIF3RX_LRCLK_FRC */ | ||
| 3673 | #define ARIZONA_AIF3RX_LRCLK_FRC_WIDTH 1 /* AIF3RX_LRCLK_FRC */ | ||
| 3674 | #define ARIZONA_AIF3RX_LRCLK_MSTR 0x0001 /* AIF3RX_LRCLK_MSTR */ | ||
| 3675 | #define ARIZONA_AIF3RX_LRCLK_MSTR_MASK 0x0001 /* AIF3RX_LRCLK_MSTR */ | ||
| 3676 | #define ARIZONA_AIF3RX_LRCLK_MSTR_SHIFT 0 /* AIF3RX_LRCLK_MSTR */ | ||
| 3677 | #define ARIZONA_AIF3RX_LRCLK_MSTR_WIDTH 1 /* AIF3RX_LRCLK_MSTR */ | ||
| 3678 | |||
| 3679 | /* | ||
| 3680 | * R1411 (0x583) - AIF3 Rate Ctrl | ||
| 3681 | */ | ||
| 3682 | #define ARIZONA_AIF3_RATE_MASK 0x7800 /* AIF3_RATE - [14:11] */ | ||
| 3683 | #define ARIZONA_AIF3_RATE_SHIFT 11 /* AIF3_RATE - [14:11] */ | ||
| 3684 | #define ARIZONA_AIF3_RATE_WIDTH 4 /* AIF3_RATE - [14:11] */ | ||
| 3685 | #define ARIZONA_AIF3_TRI 0x0040 /* AIF3_TRI */ | ||
| 3686 | #define ARIZONA_AIF3_TRI_MASK 0x0040 /* AIF3_TRI */ | ||
| 3687 | #define ARIZONA_AIF3_TRI_SHIFT 6 /* AIF3_TRI */ | ||
| 3688 | #define ARIZONA_AIF3_TRI_WIDTH 1 /* AIF3_TRI */ | ||
| 3689 | |||
| 3690 | /* | ||
| 3691 | * R1412 (0x584) - AIF3 Format | ||
| 3692 | */ | ||
| 3693 | #define ARIZONA_AIF3_FMT_MASK 0x0007 /* AIF3_FMT - [2:0] */ | ||
| 3694 | #define ARIZONA_AIF3_FMT_SHIFT 0 /* AIF3_FMT - [2:0] */ | ||
| 3695 | #define ARIZONA_AIF3_FMT_WIDTH 3 /* AIF3_FMT - [2:0] */ | ||
| 3696 | |||
| 3697 | /* | ||
| 3698 | * R1413 (0x585) - AIF3 Tx BCLK Rate | ||
| 3699 | */ | ||
| 3700 | #define ARIZONA_AIF3TX_BCPF_MASK 0x1FFF /* AIF3TX_BCPF - [12:0] */ | ||
| 3701 | #define ARIZONA_AIF3TX_BCPF_SHIFT 0 /* AIF3TX_BCPF - [12:0] */ | ||
| 3702 | #define ARIZONA_AIF3TX_BCPF_WIDTH 13 /* AIF3TX_BCPF - [12:0] */ | ||
| 3703 | |||
| 3704 | /* | ||
| 3705 | * R1414 (0x586) - AIF3 Rx BCLK Rate | ||
| 3706 | */ | ||
| 3707 | #define ARIZONA_AIF3RX_BCPF_MASK 0x1FFF /* AIF3RX_BCPF - [12:0] */ | ||
| 3708 | #define ARIZONA_AIF3RX_BCPF_SHIFT 0 /* AIF3RX_BCPF - [12:0] */ | ||
| 3709 | #define ARIZONA_AIF3RX_BCPF_WIDTH 13 /* AIF3RX_BCPF - [12:0] */ | ||
| 3710 | |||
| 3711 | /* | ||
| 3712 | * R1415 (0x587) - AIF3 Frame Ctrl 1 | ||
| 3713 | */ | ||
| 3714 | #define ARIZONA_AIF3TX_WL_MASK 0x3F00 /* AIF3TX_WL - [13:8] */ | ||
| 3715 | #define ARIZONA_AIF3TX_WL_SHIFT 8 /* AIF3TX_WL - [13:8] */ | ||
| 3716 | #define ARIZONA_AIF3TX_WL_WIDTH 6 /* AIF3TX_WL - [13:8] */ | ||
| 3717 | #define ARIZONA_AIF3TX_SLOT_LEN_MASK 0x00FF /* AIF3TX_SLOT_LEN - [7:0] */ | ||
| 3718 | #define ARIZONA_AIF3TX_SLOT_LEN_SHIFT 0 /* AIF3TX_SLOT_LEN - [7:0] */ | ||
| 3719 | #define ARIZONA_AIF3TX_SLOT_LEN_WIDTH 8 /* AIF3TX_SLOT_LEN - [7:0] */ | ||
| 3720 | |||
| 3721 | /* | ||
| 3722 | * R1416 (0x588) - AIF3 Frame Ctrl 2 | ||
| 3723 | */ | ||
| 3724 | #define ARIZONA_AIF3RX_WL_MASK 0x3F00 /* AIF3RX_WL - [13:8] */ | ||
| 3725 | #define ARIZONA_AIF3RX_WL_SHIFT 8 /* AIF3RX_WL - [13:8] */ | ||
| 3726 | #define ARIZONA_AIF3RX_WL_WIDTH 6 /* AIF3RX_WL - [13:8] */ | ||
| 3727 | #define ARIZONA_AIF3RX_SLOT_LEN_MASK 0x00FF /* AIF3RX_SLOT_LEN - [7:0] */ | ||
| 3728 | #define ARIZONA_AIF3RX_SLOT_LEN_SHIFT 0 /* AIF3RX_SLOT_LEN - [7:0] */ | ||
| 3729 | #define ARIZONA_AIF3RX_SLOT_LEN_WIDTH 8 /* AIF3RX_SLOT_LEN - [7:0] */ | ||
| 3730 | |||
| 3731 | /* | ||
| 3732 | * R1417 (0x589) - AIF3 Frame Ctrl 3 | ||
| 3733 | */ | ||
| 3734 | #define ARIZONA_AIF3TX1_SLOT_MASK 0x003F /* AIF3TX1_SLOT - [5:0] */ | ||
| 3735 | #define ARIZONA_AIF3TX1_SLOT_SHIFT 0 /* AIF3TX1_SLOT - [5:0] */ | ||
| 3736 | #define ARIZONA_AIF3TX1_SLOT_WIDTH 6 /* AIF3TX1_SLOT - [5:0] */ | ||
| 3737 | |||
| 3738 | /* | ||
| 3739 | * R1418 (0x58A) - AIF3 Frame Ctrl 4 | ||
| 3740 | */ | ||
| 3741 | #define ARIZONA_AIF3TX2_SLOT_MASK 0x003F /* AIF3TX2_SLOT - [5:0] */ | ||
| 3742 | #define ARIZONA_AIF3TX2_SLOT_SHIFT 0 /* AIF3TX2_SLOT - [5:0] */ | ||
| 3743 | #define ARIZONA_AIF3TX2_SLOT_WIDTH 6 /* AIF3TX2_SLOT - [5:0] */ | ||
| 3744 | |||
| 3745 | /* | ||
| 3746 | * R1425 (0x591) - AIF3 Frame Ctrl 11 | ||
| 3747 | */ | ||
| 3748 | #define ARIZONA_AIF3RX1_SLOT_MASK 0x003F /* AIF3RX1_SLOT - [5:0] */ | ||
| 3749 | #define ARIZONA_AIF3RX1_SLOT_SHIFT 0 /* AIF3RX1_SLOT - [5:0] */ | ||
| 3750 | #define ARIZONA_AIF3RX1_SLOT_WIDTH 6 /* AIF3RX1_SLOT - [5:0] */ | ||
| 3751 | |||
| 3752 | /* | ||
| 3753 | * R1426 (0x592) - AIF3 Frame Ctrl 12 | ||
| 3754 | */ | ||
| 3755 | #define ARIZONA_AIF3RX2_SLOT_MASK 0x003F /* AIF3RX2_SLOT - [5:0] */ | ||
| 3756 | #define ARIZONA_AIF3RX2_SLOT_SHIFT 0 /* AIF3RX2_SLOT - [5:0] */ | ||
| 3757 | #define ARIZONA_AIF3RX2_SLOT_WIDTH 6 /* AIF3RX2_SLOT - [5:0] */ | ||
| 3758 | |||
| 3759 | /* | ||
| 3760 | * R1433 (0x599) - AIF3 Tx Enables | ||
| 3761 | */ | ||
| 3762 | #define ARIZONA_AIF3TX2_ENA 0x0002 /* AIF3TX2_ENA */ | ||
| 3763 | #define ARIZONA_AIF3TX2_ENA_MASK 0x0002 /* AIF3TX2_ENA */ | ||
| 3764 | #define ARIZONA_AIF3TX2_ENA_SHIFT 1 /* AIF3TX2_ENA */ | ||
| 3765 | #define ARIZONA_AIF3TX2_ENA_WIDTH 1 /* AIF3TX2_ENA */ | ||
| 3766 | #define ARIZONA_AIF3TX1_ENA 0x0001 /* AIF3TX1_ENA */ | ||
| 3767 | #define ARIZONA_AIF3TX1_ENA_MASK 0x0001 /* AIF3TX1_ENA */ | ||
| 3768 | #define ARIZONA_AIF3TX1_ENA_SHIFT 0 /* AIF3TX1_ENA */ | ||
| 3769 | #define ARIZONA_AIF3TX1_ENA_WIDTH 1 /* AIF3TX1_ENA */ | ||
| 3770 | |||
| 3771 | /* | ||
| 3772 | * R1434 (0x59A) - AIF3 Rx Enables | ||
| 3773 | */ | ||
| 3774 | #define ARIZONA_AIF3RX2_ENA 0x0002 /* AIF3RX2_ENA */ | ||
| 3775 | #define ARIZONA_AIF3RX2_ENA_MASK 0x0002 /* AIF3RX2_ENA */ | ||
| 3776 | #define ARIZONA_AIF3RX2_ENA_SHIFT 1 /* AIF3RX2_ENA */ | ||
| 3777 | #define ARIZONA_AIF3RX2_ENA_WIDTH 1 /* AIF3RX2_ENA */ | ||
| 3778 | #define ARIZONA_AIF3RX1_ENA 0x0001 /* AIF3RX1_ENA */ | ||
| 3779 | #define ARIZONA_AIF3RX1_ENA_MASK 0x0001 /* AIF3RX1_ENA */ | ||
| 3780 | #define ARIZONA_AIF3RX1_ENA_SHIFT 0 /* AIF3RX1_ENA */ | ||
| 3781 | #define ARIZONA_AIF3RX1_ENA_WIDTH 1 /* AIF3RX1_ENA */ | ||
| 3782 | |||
| 3783 | /* | ||
| 3784 | * R1435 (0x59B) - AIF3 Force Write | ||
| 3785 | */ | ||
| 3786 | #define ARIZONA_AIF3_FRC_WR 0x0001 /* AIF3_FRC_WR */ | ||
| 3787 | #define ARIZONA_AIF3_FRC_WR_MASK 0x0001 /* AIF3_FRC_WR */ | ||
| 3788 | #define ARIZONA_AIF3_FRC_WR_SHIFT 0 /* AIF3_FRC_WR */ | ||
| 3789 | #define ARIZONA_AIF3_FRC_WR_WIDTH 1 /* AIF3_FRC_WR */ | ||
| 3790 | |||
| 3791 | /* | ||
| 3792 | * R1507 (0x5E3) - SLIMbus Framer Ref Gear | ||
| 3793 | */ | ||
| 3794 | #define ARIZONA_SLIMCLK_SRC 0x0010 /* SLIMCLK_SRC */ | ||
| 3795 | #define ARIZONA_SLIMCLK_SRC_MASK 0x0010 /* SLIMCLK_SRC */ | ||
| 3796 | #define ARIZONA_SLIMCLK_SRC_SHIFT 4 /* SLIMCLK_SRC */ | ||
| 3797 | #define ARIZONA_SLIMCLK_SRC_WIDTH 1 /* SLIMCLK_SRC */ | ||
| 3798 | #define ARIZONA_FRAMER_REF_GEAR_MASK 0x000F /* FRAMER_REF_GEAR - [3:0] */ | ||
| 3799 | #define ARIZONA_FRAMER_REF_GEAR_SHIFT 0 /* FRAMER_REF_GEAR - [3:0] */ | ||
| 3800 | #define ARIZONA_FRAMER_REF_GEAR_WIDTH 4 /* FRAMER_REF_GEAR - [3:0] */ | ||
| 3801 | |||
| 3802 | /* | ||
| 3803 | * R1509 (0x5E5) - SLIMbus Rates 1 | ||
| 3804 | */ | ||
| 3805 | #define ARIZONA_SLIMRX2_RATE_MASK 0x7800 /* SLIMRX2_RATE - [14:11] */ | ||
| 3806 | #define ARIZONA_SLIMRX2_RATE_SHIFT 11 /* SLIMRX2_RATE - [14:11] */ | ||
| 3807 | #define ARIZONA_SLIMRX2_RATE_WIDTH 4 /* SLIMRX2_RATE - [14:11] */ | ||
| 3808 | #define ARIZONA_SLIMRX1_RATE_MASK 0x0078 /* SLIMRX1_RATE - [6:3] */ | ||
| 3809 | #define ARIZONA_SLIMRX1_RATE_SHIFT 3 /* SLIMRX1_RATE - [6:3] */ | ||
| 3810 | #define ARIZONA_SLIMRX1_RATE_WIDTH 4 /* SLIMRX1_RATE - [6:3] */ | ||
| 3811 | |||
| 3812 | /* | ||
| 3813 | * R1510 (0x5E6) - SLIMbus Rates 2 | ||
| 3814 | */ | ||
| 3815 | #define ARIZONA_SLIMRX4_RATE_MASK 0x7800 /* SLIMRX4_RATE - [14:11] */ | ||
| 3816 | #define ARIZONA_SLIMRX4_RATE_SHIFT 11 /* SLIMRX4_RATE - [14:11] */ | ||
| 3817 | #define ARIZONA_SLIMRX4_RATE_WIDTH 4 /* SLIMRX4_RATE - [14:11] */ | ||
| 3818 | #define ARIZONA_SLIMRX3_RATE_MASK 0x0078 /* SLIMRX3_RATE - [6:3] */ | ||
| 3819 | #define ARIZONA_SLIMRX3_RATE_SHIFT 3 /* SLIMRX3_RATE - [6:3] */ | ||
| 3820 | #define ARIZONA_SLIMRX3_RATE_WIDTH 4 /* SLIMRX3_RATE - [6:3] */ | ||
| 3821 | |||
| 3822 | /* | ||
| 3823 | * R1511 (0x5E7) - SLIMbus Rates 3 | ||
| 3824 | */ | ||
| 3825 | #define ARIZONA_SLIMRX6_RATE_MASK 0x7800 /* SLIMRX6_RATE - [14:11] */ | ||
| 3826 | #define ARIZONA_SLIMRX6_RATE_SHIFT 11 /* SLIMRX6_RATE - [14:11] */ | ||
| 3827 | #define ARIZONA_SLIMRX6_RATE_WIDTH 4 /* SLIMRX6_RATE - [14:11] */ | ||
| 3828 | #define ARIZONA_SLIMRX5_RATE_MASK 0x0078 /* SLIMRX5_RATE - [6:3] */ | ||
| 3829 | #define ARIZONA_SLIMRX5_RATE_SHIFT 3 /* SLIMRX5_RATE - [6:3] */ | ||
| 3830 | #define ARIZONA_SLIMRX5_RATE_WIDTH 4 /* SLIMRX5_RATE - [6:3] */ | ||
| 3831 | |||
| 3832 | /* | ||
| 3833 | * R1512 (0x5E8) - SLIMbus Rates 4 | ||
| 3834 | */ | ||
| 3835 | #define ARIZONA_SLIMRX8_RATE_MASK 0x7800 /* SLIMRX8_RATE - [14:11] */ | ||
| 3836 | #define ARIZONA_SLIMRX8_RATE_SHIFT 11 /* SLIMRX8_RATE - [14:11] */ | ||
| 3837 | #define ARIZONA_SLIMRX8_RATE_WIDTH 4 /* SLIMRX8_RATE - [14:11] */ | ||
| 3838 | #define ARIZONA_SLIMRX7_RATE_MASK 0x0078 /* SLIMRX7_RATE - [6:3] */ | ||
| 3839 | #define ARIZONA_SLIMRX7_RATE_SHIFT 3 /* SLIMRX7_RATE - [6:3] */ | ||
| 3840 | #define ARIZONA_SLIMRX7_RATE_WIDTH 4 /* SLIMRX7_RATE - [6:3] */ | ||
| 3841 | |||
| 3842 | /* | ||
| 3843 | * R1513 (0x5E9) - SLIMbus Rates 5 | ||
| 3844 | */ | ||
| 3845 | #define ARIZONA_SLIMTX2_RATE_MASK 0x7800 /* SLIMTX2_RATE - [14:11] */ | ||
| 3846 | #define ARIZONA_SLIMTX2_RATE_SHIFT 11 /* SLIMTX2_RATE - [14:11] */ | ||
| 3847 | #define ARIZONA_SLIMTX2_RATE_WIDTH 4 /* SLIMTX2_RATE - [14:11] */ | ||
| 3848 | #define ARIZONA_SLIMTX1_RATE_MASK 0x0078 /* SLIMTX1_RATE - [6:3] */ | ||
| 3849 | #define ARIZONA_SLIMTX1_RATE_SHIFT 3 /* SLIMTX1_RATE - [6:3] */ | ||
| 3850 | #define ARIZONA_SLIMTX1_RATE_WIDTH 4 /* SLIMTX1_RATE - [6:3] */ | ||
| 3851 | |||
| 3852 | /* | ||
| 3853 | * R1514 (0x5EA) - SLIMbus Rates 6 | ||
| 3854 | */ | ||
| 3855 | #define ARIZONA_SLIMTX4_RATE_MASK 0x7800 /* SLIMTX4_RATE - [14:11] */ | ||
| 3856 | #define ARIZONA_SLIMTX4_RATE_SHIFT 11 /* SLIMTX4_RATE - [14:11] */ | ||
| 3857 | #define ARIZONA_SLIMTX4_RATE_WIDTH 4 /* SLIMTX4_RATE - [14:11] */ | ||
| 3858 | #define ARIZONA_SLIMTX3_RATE_MASK 0x0078 /* SLIMTX3_RATE - [6:3] */ | ||
| 3859 | #define ARIZONA_SLIMTX3_RATE_SHIFT 3 /* SLIMTX3_RATE - [6:3] */ | ||
| 3860 | #define ARIZONA_SLIMTX3_RATE_WIDTH 4 /* SLIMTX3_RATE - [6:3] */ | ||
| 3861 | |||
| 3862 | /* | ||
| 3863 | * R1515 (0x5EB) - SLIMbus Rates 7 | ||
| 3864 | */ | ||
| 3865 | #define ARIZONA_SLIMTX6_RATE_MASK 0x7800 /* SLIMTX6_RATE - [14:11] */ | ||
| 3866 | #define ARIZONA_SLIMTX6_RATE_SHIFT 11 /* SLIMTX6_RATE - [14:11] */ | ||
| 3867 | #define ARIZONA_SLIMTX6_RATE_WIDTH 4 /* SLIMTX6_RATE - [14:11] */ | ||
| 3868 | #define ARIZONA_SLIMTX5_RATE_MASK 0x0078 /* SLIMTX5_RATE - [6:3] */ | ||
| 3869 | #define ARIZONA_SLIMTX5_RATE_SHIFT 3 /* SLIMTX5_RATE - [6:3] */ | ||
| 3870 | #define ARIZONA_SLIMTX5_RATE_WIDTH 4 /* SLIMTX5_RATE - [6:3] */ | ||
| 3871 | |||
| 3872 | /* | ||
| 3873 | * R1516 (0x5EC) - SLIMbus Rates 8 | ||
| 3874 | */ | ||
| 3875 | #define ARIZONA_SLIMTX8_RATE_MASK 0x7800 /* SLIMTX8_RATE - [14:11] */ | ||
| 3876 | #define ARIZONA_SLIMTX8_RATE_SHIFT 11 /* SLIMTX8_RATE - [14:11] */ | ||
| 3877 | #define ARIZONA_SLIMTX8_RATE_WIDTH 4 /* SLIMTX8_RATE - [14:11] */ | ||
| 3878 | #define ARIZONA_SLIMTX7_RATE_MASK 0x0078 /* SLIMTX7_RATE - [6:3] */ | ||
| 3879 | #define ARIZONA_SLIMTX7_RATE_SHIFT 3 /* SLIMTX7_RATE - [6:3] */ | ||
| 3880 | #define ARIZONA_SLIMTX7_RATE_WIDTH 4 /* SLIMTX7_RATE - [6:3] */ | ||
| 3881 | |||
| 3882 | /* | ||
| 3883 | * R1525 (0x5F5) - SLIMbus RX Channel Enable | ||
| 3884 | */ | ||
| 3885 | #define ARIZONA_SLIMRX8_ENA 0x0080 /* SLIMRX8_ENA */ | ||
| 3886 | #define ARIZONA_SLIMRX8_ENA_MASK 0x0080 /* SLIMRX8_ENA */ | ||
| 3887 | #define ARIZONA_SLIMRX8_ENA_SHIFT 7 /* SLIMRX8_ENA */ | ||
| 3888 | #define ARIZONA_SLIMRX8_ENA_WIDTH 1 /* SLIMRX8_ENA */ | ||
| 3889 | #define ARIZONA_SLIMRX7_ENA 0x0040 /* SLIMRX7_ENA */ | ||
| 3890 | #define ARIZONA_SLIMRX7_ENA_MASK 0x0040 /* SLIMRX7_ENA */ | ||
| 3891 | #define ARIZONA_SLIMRX7_ENA_SHIFT 6 /* SLIMRX7_ENA */ | ||
| 3892 | #define ARIZONA_SLIMRX7_ENA_WIDTH 1 /* SLIMRX7_ENA */ | ||
| 3893 | #define ARIZONA_SLIMRX6_ENA 0x0020 /* SLIMRX6_ENA */ | ||
| 3894 | #define ARIZONA_SLIMRX6_ENA_MASK 0x0020 /* SLIMRX6_ENA */ | ||
| 3895 | #define ARIZONA_SLIMRX6_ENA_SHIFT 5 /* SLIMRX6_ENA */ | ||
| 3896 | #define ARIZONA_SLIMRX6_ENA_WIDTH 1 /* SLIMRX6_ENA */ | ||
| 3897 | #define ARIZONA_SLIMRX5_ENA 0x0010 /* SLIMRX5_ENA */ | ||
| 3898 | #define ARIZONA_SLIMRX5_ENA_MASK 0x0010 /* SLIMRX5_ENA */ | ||
| 3899 | #define ARIZONA_SLIMRX5_ENA_SHIFT 4 /* SLIMRX5_ENA */ | ||
| 3900 | #define ARIZONA_SLIMRX5_ENA_WIDTH 1 /* SLIMRX5_ENA */ | ||
| 3901 | #define ARIZONA_SLIMRX4_ENA 0x0008 /* SLIMRX4_ENA */ | ||
| 3902 | #define ARIZONA_SLIMRX4_ENA_MASK 0x0008 /* SLIMRX4_ENA */ | ||
| 3903 | #define ARIZONA_SLIMRX4_ENA_SHIFT 3 /* SLIMRX4_ENA */ | ||
| 3904 | #define ARIZONA_SLIMRX4_ENA_WIDTH 1 /* SLIMRX4_ENA */ | ||
| 3905 | #define ARIZONA_SLIMRX3_ENA 0x0004 /* SLIMRX3_ENA */ | ||
| 3906 | #define ARIZONA_SLIMRX3_ENA_MASK 0x0004 /* SLIMRX3_ENA */ | ||
| 3907 | #define ARIZONA_SLIMRX3_ENA_SHIFT 2 /* SLIMRX3_ENA */ | ||
| 3908 | #define ARIZONA_SLIMRX3_ENA_WIDTH 1 /* SLIMRX3_ENA */ | ||
| 3909 | #define ARIZONA_SLIMRX2_ENA 0x0002 /* SLIMRX2_ENA */ | ||
| 3910 | #define ARIZONA_SLIMRX2_ENA_MASK 0x0002 /* SLIMRX2_ENA */ | ||
| 3911 | #define ARIZONA_SLIMRX2_ENA_SHIFT 1 /* SLIMRX2_ENA */ | ||
| 3912 | #define ARIZONA_SLIMRX2_ENA_WIDTH 1 /* SLIMRX2_ENA */ | ||
| 3913 | #define ARIZONA_SLIMRX1_ENA 0x0001 /* SLIMRX1_ENA */ | ||
| 3914 | #define ARIZONA_SLIMRX1_ENA_MASK 0x0001 /* SLIMRX1_ENA */ | ||
| 3915 | #define ARIZONA_SLIMRX1_ENA_SHIFT 0 /* SLIMRX1_ENA */ | ||
| 3916 | #define ARIZONA_SLIMRX1_ENA_WIDTH 1 /* SLIMRX1_ENA */ | ||
| 3917 | |||
| 3918 | /* | ||
| 3919 | * R1526 (0x5F6) - SLIMbus TX Channel Enable | ||
| 3920 | */ | ||
| 3921 | #define ARIZONA_SLIMTX8_ENA 0x0080 /* SLIMTX8_ENA */ | ||
| 3922 | #define ARIZONA_SLIMTX8_ENA_MASK 0x0080 /* SLIMTX8_ENA */ | ||
| 3923 | #define ARIZONA_SLIMTX8_ENA_SHIFT 7 /* SLIMTX8_ENA */ | ||
| 3924 | #define ARIZONA_SLIMTX8_ENA_WIDTH 1 /* SLIMTX8_ENA */ | ||
| 3925 | #define ARIZONA_SLIMTX7_ENA 0x0040 /* SLIMTX7_ENA */ | ||
| 3926 | #define ARIZONA_SLIMTX7_ENA_MASK 0x0040 /* SLIMTX7_ENA */ | ||
| 3927 | #define ARIZONA_SLIMTX7_ENA_SHIFT 6 /* SLIMTX7_ENA */ | ||
| 3928 | #define ARIZONA_SLIMTX7_ENA_WIDTH 1 /* SLIMTX7_ENA */ | ||
| 3929 | #define ARIZONA_SLIMTX6_ENA 0x0020 /* SLIMTX6_ENA */ | ||
| 3930 | #define ARIZONA_SLIMTX6_ENA_MASK 0x0020 /* SLIMTX6_ENA */ | ||
| 3931 | #define ARIZONA_SLIMTX6_ENA_SHIFT 5 /* SLIMTX6_ENA */ | ||
| 3932 | #define ARIZONA_SLIMTX6_ENA_WIDTH 1 /* SLIMTX6_ENA */ | ||
| 3933 | #define ARIZONA_SLIMTX5_ENA 0x0010 /* SLIMTX5_ENA */ | ||
| 3934 | #define ARIZONA_SLIMTX5_ENA_MASK 0x0010 /* SLIMTX5_ENA */ | ||
| 3935 | #define ARIZONA_SLIMTX5_ENA_SHIFT 4 /* SLIMTX5_ENA */ | ||
| 3936 | #define ARIZONA_SLIMTX5_ENA_WIDTH 1 /* SLIMTX5_ENA */ | ||
| 3937 | #define ARIZONA_SLIMTX4_ENA 0x0008 /* SLIMTX4_ENA */ | ||
| 3938 | #define ARIZONA_SLIMTX4_ENA_MASK 0x0008 /* SLIMTX4_ENA */ | ||
| 3939 | #define ARIZONA_SLIMTX4_ENA_SHIFT 3 /* SLIMTX4_ENA */ | ||
| 3940 | #define ARIZONA_SLIMTX4_ENA_WIDTH 1 /* SLIMTX4_ENA */ | ||
| 3941 | #define ARIZONA_SLIMTX3_ENA 0x0004 /* SLIMTX3_ENA */ | ||
| 3942 | #define ARIZONA_SLIMTX3_ENA_MASK 0x0004 /* SLIMTX3_ENA */ | ||
| 3943 | #define ARIZONA_SLIMTX3_ENA_SHIFT 2 /* SLIMTX3_ENA */ | ||
| 3944 | #define ARIZONA_SLIMTX3_ENA_WIDTH 1 /* SLIMTX3_ENA */ | ||
| 3945 | #define ARIZONA_SLIMTX2_ENA 0x0002 /* SLIMTX2_ENA */ | ||
| 3946 | #define ARIZONA_SLIMTX2_ENA_MASK 0x0002 /* SLIMTX2_ENA */ | ||
| 3947 | #define ARIZONA_SLIMTX2_ENA_SHIFT 1 /* SLIMTX2_ENA */ | ||
| 3948 | #define ARIZONA_SLIMTX2_ENA_WIDTH 1 /* SLIMTX2_ENA */ | ||
| 3949 | #define ARIZONA_SLIMTX1_ENA 0x0001 /* SLIMTX1_ENA */ | ||
| 3950 | #define ARIZONA_SLIMTX1_ENA_MASK 0x0001 /* SLIMTX1_ENA */ | ||
| 3951 | #define ARIZONA_SLIMTX1_ENA_SHIFT 0 /* SLIMTX1_ENA */ | ||
| 3952 | #define ARIZONA_SLIMTX1_ENA_WIDTH 1 /* SLIMTX1_ENA */ | ||
| 3953 | |||
| 3954 | /* | ||
| 3955 | * R1527 (0x5F7) - SLIMbus RX Port Status | ||
| 3956 | */ | ||
| 3957 | #define ARIZONA_SLIMRX8_PORT_STS 0x0080 /* SLIMRX8_PORT_STS */ | ||
| 3958 | #define ARIZONA_SLIMRX8_PORT_STS_MASK 0x0080 /* SLIMRX8_PORT_STS */ | ||
| 3959 | #define ARIZONA_SLIMRX8_PORT_STS_SHIFT 7 /* SLIMRX8_PORT_STS */ | ||
| 3960 | #define ARIZONA_SLIMRX8_PORT_STS_WIDTH 1 /* SLIMRX8_PORT_STS */ | ||
| 3961 | #define ARIZONA_SLIMRX7_PORT_STS 0x0040 /* SLIMRX7_PORT_STS */ | ||
| 3962 | #define ARIZONA_SLIMRX7_PORT_STS_MASK 0x0040 /* SLIMRX7_PORT_STS */ | ||
| 3963 | #define ARIZONA_SLIMRX7_PORT_STS_SHIFT 6 /* SLIMRX7_PORT_STS */ | ||
| 3964 | #define ARIZONA_SLIMRX7_PORT_STS_WIDTH 1 /* SLIMRX7_PORT_STS */ | ||
| 3965 | #define ARIZONA_SLIMRX6_PORT_STS 0x0020 /* SLIMRX6_PORT_STS */ | ||
| 3966 | #define ARIZONA_SLIMRX6_PORT_STS_MASK 0x0020 /* SLIMRX6_PORT_STS */ | ||
| 3967 | #define ARIZONA_SLIMRX6_PORT_STS_SHIFT 5 /* SLIMRX6_PORT_STS */ | ||
| 3968 | #define ARIZONA_SLIMRX6_PORT_STS_WIDTH 1 /* SLIMRX6_PORT_STS */ | ||
| 3969 | #define ARIZONA_SLIMRX5_PORT_STS 0x0010 /* SLIMRX5_PORT_STS */ | ||
| 3970 | #define ARIZONA_SLIMRX5_PORT_STS_MASK 0x0010 /* SLIMRX5_PORT_STS */ | ||
| 3971 | #define ARIZONA_SLIMRX5_PORT_STS_SHIFT 4 /* SLIMRX5_PORT_STS */ | ||
| 3972 | #define ARIZONA_SLIMRX5_PORT_STS_WIDTH 1 /* SLIMRX5_PORT_STS */ | ||
| 3973 | #define ARIZONA_SLIMRX4_PORT_STS 0x0008 /* SLIMRX4_PORT_STS */ | ||
| 3974 | #define ARIZONA_SLIMRX4_PORT_STS_MASK 0x0008 /* SLIMRX4_PORT_STS */ | ||
| 3975 | #define ARIZONA_SLIMRX4_PORT_STS_SHIFT 3 /* SLIMRX4_PORT_STS */ | ||
| 3976 | #define ARIZONA_SLIMRX4_PORT_STS_WIDTH 1 /* SLIMRX4_PORT_STS */ | ||
| 3977 | #define ARIZONA_SLIMRX3_PORT_STS 0x0004 /* SLIMRX3_PORT_STS */ | ||
| 3978 | #define ARIZONA_SLIMRX3_PORT_STS_MASK 0x0004 /* SLIMRX3_PORT_STS */ | ||
| 3979 | #define ARIZONA_SLIMRX3_PORT_STS_SHIFT 2 /* SLIMRX3_PORT_STS */ | ||
| 3980 | #define ARIZONA_SLIMRX3_PORT_STS_WIDTH 1 /* SLIMRX3_PORT_STS */ | ||
| 3981 | #define ARIZONA_SLIMRX2_PORT_STS 0x0002 /* SLIMRX2_PORT_STS */ | ||
| 3982 | #define ARIZONA_SLIMRX2_PORT_STS_MASK 0x0002 /* SLIMRX2_PORT_STS */ | ||
| 3983 | #define ARIZONA_SLIMRX2_PORT_STS_SHIFT 1 /* SLIMRX2_PORT_STS */ | ||
| 3984 | #define ARIZONA_SLIMRX2_PORT_STS_WIDTH 1 /* SLIMRX2_PORT_STS */ | ||
| 3985 | #define ARIZONA_SLIMRX1_PORT_STS 0x0001 /* SLIMRX1_PORT_STS */ | ||
| 3986 | #define ARIZONA_SLIMRX1_PORT_STS_MASK 0x0001 /* SLIMRX1_PORT_STS */ | ||
| 3987 | #define ARIZONA_SLIMRX1_PORT_STS_SHIFT 0 /* SLIMRX1_PORT_STS */ | ||
| 3988 | #define ARIZONA_SLIMRX1_PORT_STS_WIDTH 1 /* SLIMRX1_PORT_STS */ | ||
| 3989 | |||
| 3990 | /* | ||
| 3991 | * R1528 (0x5F8) - SLIMbus TX Port Status | ||
| 3992 | */ | ||
| 3993 | #define ARIZONA_SLIMTX8_PORT_STS 0x0080 /* SLIMTX8_PORT_STS */ | ||
| 3994 | #define ARIZONA_SLIMTX8_PORT_STS_MASK 0x0080 /* SLIMTX8_PORT_STS */ | ||
| 3995 | #define ARIZONA_SLIMTX8_PORT_STS_SHIFT 7 /* SLIMTX8_PORT_STS */ | ||
| 3996 | #define ARIZONA_SLIMTX8_PORT_STS_WIDTH 1 /* SLIMTX8_PORT_STS */ | ||
| 3997 | #define ARIZONA_SLIMTX7_PORT_STS 0x0040 /* SLIMTX7_PORT_STS */ | ||
| 3998 | #define ARIZONA_SLIMTX7_PORT_STS_MASK 0x0040 /* SLIMTX7_PORT_STS */ | ||
| 3999 | #define ARIZONA_SLIMTX7_PORT_STS_SHIFT 6 /* SLIMTX7_PORT_STS */ | ||
| 4000 | #define ARIZONA_SLIMTX7_PORT_STS_WIDTH 1 /* SLIMTX7_PORT_STS */ | ||
| 4001 | #define ARIZONA_SLIMTX6_PORT_STS 0x0020 /* SLIMTX6_PORT_STS */ | ||
| 4002 | #define ARIZONA_SLIMTX6_PORT_STS_MASK 0x0020 /* SLIMTX6_PORT_STS */ | ||
| 4003 | #define ARIZONA_SLIMTX6_PORT_STS_SHIFT 5 /* SLIMTX6_PORT_STS */ | ||
| 4004 | #define ARIZONA_SLIMTX6_PORT_STS_WIDTH 1 /* SLIMTX6_PORT_STS */ | ||
| 4005 | #define ARIZONA_SLIMTX5_PORT_STS 0x0010 /* SLIMTX5_PORT_STS */ | ||
| 4006 | #define ARIZONA_SLIMTX5_PORT_STS_MASK 0x0010 /* SLIMTX5_PORT_STS */ | ||
| 4007 | #define ARIZONA_SLIMTX5_PORT_STS_SHIFT 4 /* SLIMTX5_PORT_STS */ | ||
| 4008 | #define ARIZONA_SLIMTX5_PORT_STS_WIDTH 1 /* SLIMTX5_PORT_STS */ | ||
| 4009 | #define ARIZONA_SLIMTX4_PORT_STS 0x0008 /* SLIMTX4_PORT_STS */ | ||
| 4010 | #define ARIZONA_SLIMTX4_PORT_STS_MASK 0x0008 /* SLIMTX4_PORT_STS */ | ||
| 4011 | #define ARIZONA_SLIMTX4_PORT_STS_SHIFT 3 /* SLIMTX4_PORT_STS */ | ||
| 4012 | #define ARIZONA_SLIMTX4_PORT_STS_WIDTH 1 /* SLIMTX4_PORT_STS */ | ||
| 4013 | #define ARIZONA_SLIMTX3_PORT_STS 0x0004 /* SLIMTX3_PORT_STS */ | ||
| 4014 | #define ARIZONA_SLIMTX3_PORT_STS_MASK 0x0004 /* SLIMTX3_PORT_STS */ | ||
| 4015 | #define ARIZONA_SLIMTX3_PORT_STS_SHIFT 2 /* SLIMTX3_PORT_STS */ | ||
| 4016 | #define ARIZONA_SLIMTX3_PORT_STS_WIDTH 1 /* SLIMTX3_PORT_STS */ | ||
| 4017 | #define ARIZONA_SLIMTX2_PORT_STS 0x0002 /* SLIMTX2_PORT_STS */ | ||
| 4018 | #define ARIZONA_SLIMTX2_PORT_STS_MASK 0x0002 /* SLIMTX2_PORT_STS */ | ||
| 4019 | #define ARIZONA_SLIMTX2_PORT_STS_SHIFT 1 /* SLIMTX2_PORT_STS */ | ||
| 4020 | #define ARIZONA_SLIMTX2_PORT_STS_WIDTH 1 /* SLIMTX2_PORT_STS */ | ||
| 4021 | #define ARIZONA_SLIMTX1_PORT_STS 0x0001 /* SLIMTX1_PORT_STS */ | ||
| 4022 | #define ARIZONA_SLIMTX1_PORT_STS_MASK 0x0001 /* SLIMTX1_PORT_STS */ | ||
| 4023 | #define ARIZONA_SLIMTX1_PORT_STS_SHIFT 0 /* SLIMTX1_PORT_STS */ | ||
| 4024 | #define ARIZONA_SLIMTX1_PORT_STS_WIDTH 1 /* SLIMTX1_PORT_STS */ | ||
| 4025 | |||
| 4026 | /* | ||
| 4027 | * R3087 (0xC0F) - IRQ CTRL 1 | ||
| 4028 | */ | ||
| 4029 | #define ARIZONA_IRQ_POL 0x0400 /* IRQ_POL */ | ||
| 4030 | #define ARIZONA_IRQ_POL_MASK 0x0400 /* IRQ_POL */ | ||
| 4031 | #define ARIZONA_IRQ_POL_SHIFT 10 /* IRQ_POL */ | ||
| 4032 | #define ARIZONA_IRQ_POL_WIDTH 1 /* IRQ_POL */ | ||
| 4033 | #define ARIZONA_IRQ_OP_CFG 0x0200 /* IRQ_OP_CFG */ | ||
| 4034 | #define ARIZONA_IRQ_OP_CFG_MASK 0x0200 /* IRQ_OP_CFG */ | ||
| 4035 | #define ARIZONA_IRQ_OP_CFG_SHIFT 9 /* IRQ_OP_CFG */ | ||
| 4036 | #define ARIZONA_IRQ_OP_CFG_WIDTH 1 /* IRQ_OP_CFG */ | ||
| 4037 | |||
| 4038 | /* | ||
| 4039 | * R3088 (0xC10) - GPIO Debounce Config | ||
| 4040 | */ | ||
| 4041 | #define ARIZONA_GP_DBTIME_MASK 0xF000 /* GP_DBTIME - [15:12] */ | ||
| 4042 | #define ARIZONA_GP_DBTIME_SHIFT 12 /* GP_DBTIME - [15:12] */ | ||
| 4043 | #define ARIZONA_GP_DBTIME_WIDTH 4 /* GP_DBTIME - [15:12] */ | ||
| 4044 | |||
| 4045 | /* | ||
| 4046 | * R3104 (0xC20) - Misc Pad Ctrl 1 | ||
| 4047 | */ | ||
| 4048 | #define ARIZONA_LDO1ENA_PD 0x8000 /* LDO1ENA_PD */ | ||
| 4049 | #define ARIZONA_LDO1ENA_PD_MASK 0x8000 /* LDO1ENA_PD */ | ||
| 4050 | #define ARIZONA_LDO1ENA_PD_SHIFT 15 /* LDO1ENA_PD */ | ||
| 4051 | #define ARIZONA_LDO1ENA_PD_WIDTH 1 /* LDO1ENA_PD */ | ||
| 4052 | #define ARIZONA_MCLK2_PD 0x2000 /* MCLK2_PD */ | ||
| 4053 | #define ARIZONA_MCLK2_PD_MASK 0x2000 /* MCLK2_PD */ | ||
| 4054 | #define ARIZONA_MCLK2_PD_SHIFT 13 /* MCLK2_PD */ | ||
| 4055 | #define ARIZONA_MCLK2_PD_WIDTH 1 /* MCLK2_PD */ | ||
| 4056 | #define ARIZONA_RSTB_PU 0x0002 /* RSTB_PU */ | ||
| 4057 | #define ARIZONA_RSTB_PU_MASK 0x0002 /* RSTB_PU */ | ||
| 4058 | #define ARIZONA_RSTB_PU_SHIFT 1 /* RSTB_PU */ | ||
| 4059 | #define ARIZONA_RSTB_PU_WIDTH 1 /* RSTB_PU */ | ||
| 4060 | |||
| 4061 | /* | ||
| 4062 | * R3105 (0xC21) - Misc Pad Ctrl 2 | ||
| 4063 | */ | ||
| 4064 | #define ARIZONA_MCLK1_PD 0x1000 /* MCLK1_PD */ | ||
| 4065 | #define ARIZONA_MCLK1_PD_MASK 0x1000 /* MCLK1_PD */ | ||
| 4066 | #define ARIZONA_MCLK1_PD_SHIFT 12 /* MCLK1_PD */ | ||
| 4067 | #define ARIZONA_MCLK1_PD_WIDTH 1 /* MCLK1_PD */ | ||
| 4068 | #define ARIZONA_MICD_PD 0x0100 /* MICD_PD */ | ||
| 4069 | #define ARIZONA_MICD_PD_MASK 0x0100 /* MICD_PD */ | ||
| 4070 | #define ARIZONA_MICD_PD_SHIFT 8 /* MICD_PD */ | ||
| 4071 | #define ARIZONA_MICD_PD_WIDTH 1 /* MICD_PD */ | ||
| 4072 | #define ARIZONA_ADDR_PD 0x0001 /* ADDR_PD */ | ||
| 4073 | #define ARIZONA_ADDR_PD_MASK 0x0001 /* ADDR_PD */ | ||
| 4074 | #define ARIZONA_ADDR_PD_SHIFT 0 /* ADDR_PD */ | ||
| 4075 | #define ARIZONA_ADDR_PD_WIDTH 1 /* ADDR_PD */ | ||
| 4076 | |||
| 4077 | /* | ||
| 4078 | * R3106 (0xC22) - Misc Pad Ctrl 3 | ||
| 4079 | */ | ||
| 4080 | #define ARIZONA_DMICDAT4_PD 0x0008 /* DMICDAT4_PD */ | ||
| 4081 | #define ARIZONA_DMICDAT4_PD_MASK 0x0008 /* DMICDAT4_PD */ | ||
| 4082 | #define ARIZONA_DMICDAT4_PD_SHIFT 3 /* DMICDAT4_PD */ | ||
| 4083 | #define ARIZONA_DMICDAT4_PD_WIDTH 1 /* DMICDAT4_PD */ | ||
| 4084 | #define ARIZONA_DMICDAT3_PD 0x0004 /* DMICDAT3_PD */ | ||
| 4085 | #define ARIZONA_DMICDAT3_PD_MASK 0x0004 /* DMICDAT3_PD */ | ||
| 4086 | #define ARIZONA_DMICDAT3_PD_SHIFT 2 /* DMICDAT3_PD */ | ||
| 4087 | #define ARIZONA_DMICDAT3_PD_WIDTH 1 /* DMICDAT3_PD */ | ||
| 4088 | #define ARIZONA_DMICDAT2_PD 0x0002 /* DMICDAT2_PD */ | ||
| 4089 | #define ARIZONA_DMICDAT2_PD_MASK 0x0002 /* DMICDAT2_PD */ | ||
| 4090 | #define ARIZONA_DMICDAT2_PD_SHIFT 1 /* DMICDAT2_PD */ | ||
| 4091 | #define ARIZONA_DMICDAT2_PD_WIDTH 1 /* DMICDAT2_PD */ | ||
| 4092 | #define ARIZONA_DMICDAT1_PD 0x0001 /* DMICDAT1_PD */ | ||
| 4093 | #define ARIZONA_DMICDAT1_PD_MASK 0x0001 /* DMICDAT1_PD */ | ||
| 4094 | #define ARIZONA_DMICDAT1_PD_SHIFT 0 /* DMICDAT1_PD */ | ||
| 4095 | #define ARIZONA_DMICDAT1_PD_WIDTH 1 /* DMICDAT1_PD */ | ||
| 4096 | |||
| 4097 | /* | ||
| 4098 | * R3107 (0xC23) - Misc Pad Ctrl 4 | ||
| 4099 | */ | ||
| 4100 | #define ARIZONA_AIF1RXLRCLK_PU 0x0020 /* AIF1RXLRCLK_PU */ | ||
| 4101 | #define ARIZONA_AIF1RXLRCLK_PU_MASK 0x0020 /* AIF1RXLRCLK_PU */ | ||
| 4102 | #define ARIZONA_AIF1RXLRCLK_PU_SHIFT 5 /* AIF1RXLRCLK_PU */ | ||
| 4103 | #define ARIZONA_AIF1RXLRCLK_PU_WIDTH 1 /* AIF1RXLRCLK_PU */ | ||
| 4104 | #define ARIZONA_AIF1RXLRCLK_PD 0x0010 /* AIF1RXLRCLK_PD */ | ||
| 4105 | #define ARIZONA_AIF1RXLRCLK_PD_MASK 0x0010 /* AIF1RXLRCLK_PD */ | ||
| 4106 | #define ARIZONA_AIF1RXLRCLK_PD_SHIFT 4 /* AIF1RXLRCLK_PD */ | ||
| 4107 | #define ARIZONA_AIF1RXLRCLK_PD_WIDTH 1 /* AIF1RXLRCLK_PD */ | ||
| 4108 | #define ARIZONA_AIF1BCLK_PU 0x0008 /* AIF1BCLK_PU */ | ||
| 4109 | #define ARIZONA_AIF1BCLK_PU_MASK 0x0008 /* AIF1BCLK_PU */ | ||
| 4110 | #define ARIZONA_AIF1BCLK_PU_SHIFT 3 /* AIF1BCLK_PU */ | ||
| 4111 | #define ARIZONA_AIF1BCLK_PU_WIDTH 1 /* AIF1BCLK_PU */ | ||
| 4112 | #define ARIZONA_AIF1BCLK_PD 0x0004 /* AIF1BCLK_PD */ | ||
| 4113 | #define ARIZONA_AIF1BCLK_PD_MASK 0x0004 /* AIF1BCLK_PD */ | ||
| 4114 | #define ARIZONA_AIF1BCLK_PD_SHIFT 2 /* AIF1BCLK_PD */ | ||
| 4115 | #define ARIZONA_AIF1BCLK_PD_WIDTH 1 /* AIF1BCLK_PD */ | ||
| 4116 | #define ARIZONA_AIF1RXDAT_PU 0x0002 /* AIF1RXDAT_PU */ | ||
| 4117 | #define ARIZONA_AIF1RXDAT_PU_MASK 0x0002 /* AIF1RXDAT_PU */ | ||
| 4118 | #define ARIZONA_AIF1RXDAT_PU_SHIFT 1 /* AIF1RXDAT_PU */ | ||
| 4119 | #define ARIZONA_AIF1RXDAT_PU_WIDTH 1 /* AIF1RXDAT_PU */ | ||
| 4120 | #define ARIZONA_AIF1RXDAT_PD 0x0001 /* AIF1RXDAT_PD */ | ||
| 4121 | #define ARIZONA_AIF1RXDAT_PD_MASK 0x0001 /* AIF1RXDAT_PD */ | ||
| 4122 | #define ARIZONA_AIF1RXDAT_PD_SHIFT 0 /* AIF1RXDAT_PD */ | ||
| 4123 | #define ARIZONA_AIF1RXDAT_PD_WIDTH 1 /* AIF1RXDAT_PD */ | ||
| 4124 | |||
| 4125 | /* | ||
| 4126 | * R3108 (0xC24) - Misc Pad Ctrl 5 | ||
| 4127 | */ | ||
| 4128 | #define ARIZONA_AIF2RXLRCLK_PU 0x0020 /* AIF2RXLRCLK_PU */ | ||
| 4129 | #define ARIZONA_AIF2RXLRCLK_PU_MASK 0x0020 /* AIF2RXLRCLK_PU */ | ||
| 4130 | #define ARIZONA_AIF2RXLRCLK_PU_SHIFT 5 /* AIF2RXLRCLK_PU */ | ||
| 4131 | #define ARIZONA_AIF2RXLRCLK_PU_WIDTH 1 /* AIF2RXLRCLK_PU */ | ||
| 4132 | #define ARIZONA_AIF2RXLRCLK_PD 0x0010 /* AIF2RXLRCLK_PD */ | ||
| 4133 | #define ARIZONA_AIF2RXLRCLK_PD_MASK 0x0010 /* AIF2RXLRCLK_PD */ | ||
| 4134 | #define ARIZONA_AIF2RXLRCLK_PD_SHIFT 4 /* AIF2RXLRCLK_PD */ | ||
| 4135 | #define ARIZONA_AIF2RXLRCLK_PD_WIDTH 1 /* AIF2RXLRCLK_PD */ | ||
| 4136 | #define ARIZONA_AIF2BCLK_PU 0x0008 /* AIF2BCLK_PU */ | ||
| 4137 | #define ARIZONA_AIF2BCLK_PU_MASK 0x0008 /* AIF2BCLK_PU */ | ||
| 4138 | #define ARIZONA_AIF2BCLK_PU_SHIFT 3 /* AIF2BCLK_PU */ | ||
| 4139 | #define ARIZONA_AIF2BCLK_PU_WIDTH 1 /* AIF2BCLK_PU */ | ||
| 4140 | #define ARIZONA_AIF2BCLK_PD 0x0004 /* AIF2BCLK_PD */ | ||
| 4141 | #define ARIZONA_AIF2BCLK_PD_MASK 0x0004 /* AIF2BCLK_PD */ | ||
| 4142 | #define ARIZONA_AIF2BCLK_PD_SHIFT 2 /* AIF2BCLK_PD */ | ||
| 4143 | #define ARIZONA_AIF2BCLK_PD_WIDTH 1 /* AIF2BCLK_PD */ | ||
| 4144 | #define ARIZONA_AIF2RXDAT_PU 0x0002 /* AIF2RXDAT_PU */ | ||
| 4145 | #define ARIZONA_AIF2RXDAT_PU_MASK 0x0002 /* AIF2RXDAT_PU */ | ||
| 4146 | #define ARIZONA_AIF2RXDAT_PU_SHIFT 1 /* AIF2RXDAT_PU */ | ||
| 4147 | #define ARIZONA_AIF2RXDAT_PU_WIDTH 1 /* AIF2RXDAT_PU */ | ||
| 4148 | #define ARIZONA_AIF2RXDAT_PD 0x0001 /* AIF2RXDAT_PD */ | ||
| 4149 | #define ARIZONA_AIF2RXDAT_PD_MASK 0x0001 /* AIF2RXDAT_PD */ | ||
| 4150 | #define ARIZONA_AIF2RXDAT_PD_SHIFT 0 /* AIF2RXDAT_PD */ | ||
| 4151 | #define ARIZONA_AIF2RXDAT_PD_WIDTH 1 /* AIF2RXDAT_PD */ | ||
| 4152 | |||
| 4153 | /* | ||
| 4154 | * R3109 (0xC25) - Misc Pad Ctrl 6 | ||
| 4155 | */ | ||
| 4156 | #define ARIZONA_AIF3RXLRCLK_PU 0x0020 /* AIF3RXLRCLK_PU */ | ||
| 4157 | #define ARIZONA_AIF3RXLRCLK_PU_MASK 0x0020 /* AIF3RXLRCLK_PU */ | ||
| 4158 | #define ARIZONA_AIF3RXLRCLK_PU_SHIFT 5 /* AIF3RXLRCLK_PU */ | ||
| 4159 | #define ARIZONA_AIF3RXLRCLK_PU_WIDTH 1 /* AIF3RXLRCLK_PU */ | ||
| 4160 | #define ARIZONA_AIF3RXLRCLK_PD 0x0010 /* AIF3RXLRCLK_PD */ | ||
| 4161 | #define ARIZONA_AIF3RXLRCLK_PD_MASK 0x0010 /* AIF3RXLRCLK_PD */ | ||
| 4162 | #define ARIZONA_AIF3RXLRCLK_PD_SHIFT 4 /* AIF3RXLRCLK_PD */ | ||
| 4163 | #define ARIZONA_AIF3RXLRCLK_PD_WIDTH 1 /* AIF3RXLRCLK_PD */ | ||
| 4164 | #define ARIZONA_AIF3BCLK_PU 0x0008 /* AIF3BCLK_PU */ | ||
| 4165 | #define ARIZONA_AIF3BCLK_PU_MASK 0x0008 /* AIF3BCLK_PU */ | ||
| 4166 | #define ARIZONA_AIF3BCLK_PU_SHIFT 3 /* AIF3BCLK_PU */ | ||
| 4167 | #define ARIZONA_AIF3BCLK_PU_WIDTH 1 /* AIF3BCLK_PU */ | ||
| 4168 | #define ARIZONA_AIF3BCLK_PD 0x0004 /* AIF3BCLK_PD */ | ||
| 4169 | #define ARIZONA_AIF3BCLK_PD_MASK 0x0004 /* AIF3BCLK_PD */ | ||
| 4170 | #define ARIZONA_AIF3BCLK_PD_SHIFT 2 /* AIF3BCLK_PD */ | ||
| 4171 | #define ARIZONA_AIF3BCLK_PD_WIDTH 1 /* AIF3BCLK_PD */ | ||
| 4172 | #define ARIZONA_AIF3RXDAT_PU 0x0002 /* AIF3RXDAT_PU */ | ||
| 4173 | #define ARIZONA_AIF3RXDAT_PU_MASK 0x0002 /* AIF3RXDAT_PU */ | ||
| 4174 | #define ARIZONA_AIF3RXDAT_PU_SHIFT 1 /* AIF3RXDAT_PU */ | ||
| 4175 | #define ARIZONA_AIF3RXDAT_PU_WIDTH 1 /* AIF3RXDAT_PU */ | ||
| 4176 | #define ARIZONA_AIF3RXDAT_PD 0x0001 /* AIF3RXDAT_PD */ | ||
| 4177 | #define ARIZONA_AIF3RXDAT_PD_MASK 0x0001 /* AIF3RXDAT_PD */ | ||
| 4178 | #define ARIZONA_AIF3RXDAT_PD_SHIFT 0 /* AIF3RXDAT_PD */ | ||
| 4179 | #define ARIZONA_AIF3RXDAT_PD_WIDTH 1 /* AIF3RXDAT_PD */ | ||
| 4180 | |||
| 4181 | /* | ||
| 4182 | * R3328 (0xD00) - Interrupt Status 1 | ||
| 4183 | */ | ||
| 4184 | #define ARIZONA_GP4_EINT1 0x0008 /* GP4_EINT1 */ | ||
| 4185 | #define ARIZONA_GP4_EINT1_MASK 0x0008 /* GP4_EINT1 */ | ||
| 4186 | #define ARIZONA_GP4_EINT1_SHIFT 3 /* GP4_EINT1 */ | ||
| 4187 | #define ARIZONA_GP4_EINT1_WIDTH 1 /* GP4_EINT1 */ | ||
| 4188 | #define ARIZONA_GP3_EINT1 0x0004 /* GP3_EINT1 */ | ||
| 4189 | #define ARIZONA_GP3_EINT1_MASK 0x0004 /* GP3_EINT1 */ | ||
| 4190 | #define ARIZONA_GP3_EINT1_SHIFT 2 /* GP3_EINT1 */ | ||
| 4191 | #define ARIZONA_GP3_EINT1_WIDTH 1 /* GP3_EINT1 */ | ||
| 4192 | #define ARIZONA_GP2_EINT1 0x0002 /* GP2_EINT1 */ | ||
| 4193 | #define ARIZONA_GP2_EINT1_MASK 0x0002 /* GP2_EINT1 */ | ||
| 4194 | #define ARIZONA_GP2_EINT1_SHIFT 1 /* GP2_EINT1 */ | ||
| 4195 | #define ARIZONA_GP2_EINT1_WIDTH 1 /* GP2_EINT1 */ | ||
| 4196 | #define ARIZONA_GP1_EINT1 0x0001 /* GP1_EINT1 */ | ||
| 4197 | #define ARIZONA_GP1_EINT1_MASK 0x0001 /* GP1_EINT1 */ | ||
| 4198 | #define ARIZONA_GP1_EINT1_SHIFT 0 /* GP1_EINT1 */ | ||
| 4199 | #define ARIZONA_GP1_EINT1_WIDTH 1 /* GP1_EINT1 */ | ||
| 4200 | |||
| 4201 | /* | ||
| 4202 | * R3329 (0xD01) - Interrupt Status 2 | ||
| 4203 | */ | ||
| 4204 | #define ARIZONA_DSP4_RAM_RDY_EINT1 0x0800 /* DSP4_RAM_RDY_EINT1 */ | ||
| 4205 | #define ARIZONA_DSP4_RAM_RDY_EINT1_MASK 0x0800 /* DSP4_RAM_RDY_EINT1 */ | ||
| 4206 | #define ARIZONA_DSP4_RAM_RDY_EINT1_SHIFT 11 /* DSP4_RAM_RDY_EINT1 */ | ||
| 4207 | #define ARIZONA_DSP4_RAM_RDY_EINT1_WIDTH 1 /* DSP4_RAM_RDY_EINT1 */ | ||
| 4208 | #define ARIZONA_DSP3_RAM_RDY_EINT1 0x0400 /* DSP3_RAM_RDY_EINT1 */ | ||
| 4209 | #define ARIZONA_DSP3_RAM_RDY_EINT1_MASK 0x0400 /* DSP3_RAM_RDY_EINT1 */ | ||
| 4210 | #define ARIZONA_DSP3_RAM_RDY_EINT1_SHIFT 10 /* DSP3_RAM_RDY_EINT1 */ | ||
| 4211 | #define ARIZONA_DSP3_RAM_RDY_EINT1_WIDTH 1 /* DSP3_RAM_RDY_EINT1 */ | ||
| 4212 | #define ARIZONA_DSP2_RAM_RDY_EINT1 0x0200 /* DSP2_RAM_RDY_EINT1 */ | ||
| 4213 | #define ARIZONA_DSP2_RAM_RDY_EINT1_MASK 0x0200 /* DSP2_RAM_RDY_EINT1 */ | ||
| 4214 | #define ARIZONA_DSP2_RAM_RDY_EINT1_SHIFT 9 /* DSP2_RAM_RDY_EINT1 */ | ||
| 4215 | #define ARIZONA_DSP2_RAM_RDY_EINT1_WIDTH 1 /* DSP2_RAM_RDY_EINT1 */ | ||
| 4216 | #define ARIZONA_DSP1_RAM_RDY_EINT1 0x0100 /* DSP1_RAM_RDY_EINT1 */ | ||
| 4217 | #define ARIZONA_DSP1_RAM_RDY_EINT1_MASK 0x0100 /* DSP1_RAM_RDY_EINT1 */ | ||
| 4218 | #define ARIZONA_DSP1_RAM_RDY_EINT1_SHIFT 8 /* DSP1_RAM_RDY_EINT1 */ | ||
| 4219 | #define ARIZONA_DSP1_RAM_RDY_EINT1_WIDTH 1 /* DSP1_RAM_RDY_EINT1 */ | ||
| 4220 | #define ARIZONA_DSP_IRQ8_EINT1 0x0080 /* DSP_IRQ8_EINT1 */ | ||
| 4221 | #define ARIZONA_DSP_IRQ8_EINT1_MASK 0x0080 /* DSP_IRQ8_EINT1 */ | ||
| 4222 | #define ARIZONA_DSP_IRQ8_EINT1_SHIFT 7 /* DSP_IRQ8_EINT1 */ | ||
| 4223 | #define ARIZONA_DSP_IRQ8_EINT1_WIDTH 1 /* DSP_IRQ8_EINT1 */ | ||
| 4224 | #define ARIZONA_DSP_IRQ7_EINT1 0x0040 /* DSP_IRQ7_EINT1 */ | ||
| 4225 | #define ARIZONA_DSP_IRQ7_EINT1_MASK 0x0040 /* DSP_IRQ7_EINT1 */ | ||
| 4226 | #define ARIZONA_DSP_IRQ7_EINT1_SHIFT 6 /* DSP_IRQ7_EINT1 */ | ||
| 4227 | #define ARIZONA_DSP_IRQ7_EINT1_WIDTH 1 /* DSP_IRQ7_EINT1 */ | ||
| 4228 | #define ARIZONA_DSP_IRQ6_EINT1 0x0020 /* DSP_IRQ6_EINT1 */ | ||
| 4229 | #define ARIZONA_DSP_IRQ6_EINT1_MASK 0x0020 /* DSP_IRQ6_EINT1 */ | ||
| 4230 | #define ARIZONA_DSP_IRQ6_EINT1_SHIFT 5 /* DSP_IRQ6_EINT1 */ | ||
| 4231 | #define ARIZONA_DSP_IRQ6_EINT1_WIDTH 1 /* DSP_IRQ6_EINT1 */ | ||
| 4232 | #define ARIZONA_DSP_IRQ5_EINT1 0x0010 /* DSP_IRQ5_EINT1 */ | ||
| 4233 | #define ARIZONA_DSP_IRQ5_EINT1_MASK 0x0010 /* DSP_IRQ5_EINT1 */ | ||
| 4234 | #define ARIZONA_DSP_IRQ5_EINT1_SHIFT 4 /* DSP_IRQ5_EINT1 */ | ||
| 4235 | #define ARIZONA_DSP_IRQ5_EINT1_WIDTH 1 /* DSP_IRQ5_EINT1 */ | ||
| 4236 | #define ARIZONA_DSP_IRQ4_EINT1 0x0008 /* DSP_IRQ4_EINT1 */ | ||
| 4237 | #define ARIZONA_DSP_IRQ4_EINT1_MASK 0x0008 /* DSP_IRQ4_EINT1 */ | ||
| 4238 | #define ARIZONA_DSP_IRQ4_EINT1_SHIFT 3 /* DSP_IRQ4_EINT1 */ | ||
| 4239 | #define ARIZONA_DSP_IRQ4_EINT1_WIDTH 1 /* DSP_IRQ4_EINT1 */ | ||
| 4240 | #define ARIZONA_DSP_IRQ3_EINT1 0x0004 /* DSP_IRQ3_EINT1 */ | ||
| 4241 | #define ARIZONA_DSP_IRQ3_EINT1_MASK 0x0004 /* DSP_IRQ3_EINT1 */ | ||
| 4242 | #define ARIZONA_DSP_IRQ3_EINT1_SHIFT 2 /* DSP_IRQ3_EINT1 */ | ||
| 4243 | #define ARIZONA_DSP_IRQ3_EINT1_WIDTH 1 /* DSP_IRQ3_EINT1 */ | ||
| 4244 | #define ARIZONA_DSP_IRQ2_EINT1 0x0002 /* DSP_IRQ2_EINT1 */ | ||
| 4245 | #define ARIZONA_DSP_IRQ2_EINT1_MASK 0x0002 /* DSP_IRQ2_EINT1 */ | ||
| 4246 | #define ARIZONA_DSP_IRQ2_EINT1_SHIFT 1 /* DSP_IRQ2_EINT1 */ | ||
| 4247 | #define ARIZONA_DSP_IRQ2_EINT1_WIDTH 1 /* DSP_IRQ2_EINT1 */ | ||
| 4248 | #define ARIZONA_DSP_IRQ1_EINT1 0x0001 /* DSP_IRQ1_EINT1 */ | ||
| 4249 | #define ARIZONA_DSP_IRQ1_EINT1_MASK 0x0001 /* DSP_IRQ1_EINT1 */ | ||
| 4250 | #define ARIZONA_DSP_IRQ1_EINT1_SHIFT 0 /* DSP_IRQ1_EINT1 */ | ||
| 4251 | #define ARIZONA_DSP_IRQ1_EINT1_WIDTH 1 /* DSP_IRQ1_EINT1 */ | ||
| 4252 | |||
| 4253 | /* | ||
| 4254 | * R3330 (0xD02) - Interrupt Status 3 | ||
| 4255 | */ | ||
| 4256 | #define ARIZONA_SPK_SHUTDOWN_WARN_EINT1 0x8000 /* SPK_SHUTDOWN_WARN_EINT1 */ | ||
| 4257 | #define ARIZONA_SPK_SHUTDOWN_WARN_EINT1_MASK 0x8000 /* SPK_SHUTDOWN_WARN_EINT1 */ | ||
| 4258 | #define ARIZONA_SPK_SHUTDOWN_WARN_EINT1_SHIFT 15 /* SPK_SHUTDOWN_WARN_EINT1 */ | ||
| 4259 | #define ARIZONA_SPK_SHUTDOWN_WARN_EINT1_WIDTH 1 /* SPK_SHUTDOWN_WARN_EINT1 */ | ||
| 4260 | #define ARIZONA_SPK_SHUTDOWN_EINT1 0x4000 /* SPK_SHUTDOWN_EINT1 */ | ||
| 4261 | #define ARIZONA_SPK_SHUTDOWN_EINT1_MASK 0x4000 /* SPK_SHUTDOWN_EINT1 */ | ||
| 4262 | #define ARIZONA_SPK_SHUTDOWN_EINT1_SHIFT 14 /* SPK_SHUTDOWN_EINT1 */ | ||
| 4263 | #define ARIZONA_SPK_SHUTDOWN_EINT1_WIDTH 1 /* SPK_SHUTDOWN_EINT1 */ | ||
| 4264 | #define ARIZONA_HPDET_EINT1 0x2000 /* HPDET_EINT1 */ | ||
| 4265 | #define ARIZONA_HPDET_EINT1_MASK 0x2000 /* HPDET_EINT1 */ | ||
| 4266 | #define ARIZONA_HPDET_EINT1_SHIFT 13 /* HPDET_EINT1 */ | ||
| 4267 | #define ARIZONA_HPDET_EINT1_WIDTH 1 /* HPDET_EINT1 */ | ||
| 4268 | #define ARIZONA_MICDET_EINT1 0x1000 /* MICDET_EINT1 */ | ||
| 4269 | #define ARIZONA_MICDET_EINT1_MASK 0x1000 /* MICDET_EINT1 */ | ||
| 4270 | #define ARIZONA_MICDET_EINT1_SHIFT 12 /* MICDET_EINT1 */ | ||
| 4271 | #define ARIZONA_MICDET_EINT1_WIDTH 1 /* MICDET_EINT1 */ | ||
| 4272 | #define ARIZONA_WSEQ_DONE_EINT1 0x0800 /* WSEQ_DONE_EINT1 */ | ||
| 4273 | #define ARIZONA_WSEQ_DONE_EINT1_MASK 0x0800 /* WSEQ_DONE_EINT1 */ | ||
| 4274 | #define ARIZONA_WSEQ_DONE_EINT1_SHIFT 11 /* WSEQ_DONE_EINT1 */ | ||
| 4275 | #define ARIZONA_WSEQ_DONE_EINT1_WIDTH 1 /* WSEQ_DONE_EINT1 */ | ||
| 4276 | #define ARIZONA_DRC2_SIG_DET_EINT1 0x0400 /* DRC2_SIG_DET_EINT1 */ | ||
| 4277 | #define ARIZONA_DRC2_SIG_DET_EINT1_MASK 0x0400 /* DRC2_SIG_DET_EINT1 */ | ||
| 4278 | #define ARIZONA_DRC2_SIG_DET_EINT1_SHIFT 10 /* DRC2_SIG_DET_EINT1 */ | ||
| 4279 | #define ARIZONA_DRC2_SIG_DET_EINT1_WIDTH 1 /* DRC2_SIG_DET_EINT1 */ | ||
| 4280 | #define ARIZONA_DRC1_SIG_DET_EINT1 0x0200 /* DRC1_SIG_DET_EINT1 */ | ||
| 4281 | #define ARIZONA_DRC1_SIG_DET_EINT1_MASK 0x0200 /* DRC1_SIG_DET_EINT1 */ | ||
| 4282 | #define ARIZONA_DRC1_SIG_DET_EINT1_SHIFT 9 /* DRC1_SIG_DET_EINT1 */ | ||
| 4283 | #define ARIZONA_DRC1_SIG_DET_EINT1_WIDTH 1 /* DRC1_SIG_DET_EINT1 */ | ||
| 4284 | #define ARIZONA_ASRC2_LOCK_EINT1 0x0100 /* ASRC2_LOCK_EINT1 */ | ||
| 4285 | #define ARIZONA_ASRC2_LOCK_EINT1_MASK 0x0100 /* ASRC2_LOCK_EINT1 */ | ||
| 4286 | #define ARIZONA_ASRC2_LOCK_EINT1_SHIFT 8 /* ASRC2_LOCK_EINT1 */ | ||
| 4287 | #define ARIZONA_ASRC2_LOCK_EINT1_WIDTH 1 /* ASRC2_LOCK_EINT1 */ | ||
| 4288 | #define ARIZONA_ASRC1_LOCK_EINT1 0x0080 /* ASRC1_LOCK_EINT1 */ | ||
| 4289 | #define ARIZONA_ASRC1_LOCK_EINT1_MASK 0x0080 /* ASRC1_LOCK_EINT1 */ | ||
| 4290 | #define ARIZONA_ASRC1_LOCK_EINT1_SHIFT 7 /* ASRC1_LOCK_EINT1 */ | ||
| 4291 | #define ARIZONA_ASRC1_LOCK_EINT1_WIDTH 1 /* ASRC1_LOCK_EINT1 */ | ||
| 4292 | #define ARIZONA_UNDERCLOCKED_EINT1 0x0040 /* UNDERCLOCKED_EINT1 */ | ||
| 4293 | #define ARIZONA_UNDERCLOCKED_EINT1_MASK 0x0040 /* UNDERCLOCKED_EINT1 */ | ||
| 4294 | #define ARIZONA_UNDERCLOCKED_EINT1_SHIFT 6 /* UNDERCLOCKED_EINT1 */ | ||
| 4295 | #define ARIZONA_UNDERCLOCKED_EINT1_WIDTH 1 /* UNDERCLOCKED_EINT1 */ | ||
| 4296 | #define ARIZONA_OVERCLOCKED_EINT1 0x0020 /* OVERCLOCKED_EINT1 */ | ||
| 4297 | #define ARIZONA_OVERCLOCKED_EINT1_MASK 0x0020 /* OVERCLOCKED_EINT1 */ | ||
| 4298 | #define ARIZONA_OVERCLOCKED_EINT1_SHIFT 5 /* OVERCLOCKED_EINT1 */ | ||
| 4299 | #define ARIZONA_OVERCLOCKED_EINT1_WIDTH 1 /* OVERCLOCKED_EINT1 */ | ||
| 4300 | #define ARIZONA_FLL2_LOCK_EINT1 0x0008 /* FLL2_LOCK_EINT1 */ | ||
| 4301 | #define ARIZONA_FLL2_LOCK_EINT1_MASK 0x0008 /* FLL2_LOCK_EINT1 */ | ||
| 4302 | #define ARIZONA_FLL2_LOCK_EINT1_SHIFT 3 /* FLL2_LOCK_EINT1 */ | ||
| 4303 | #define ARIZONA_FLL2_LOCK_EINT1_WIDTH 1 /* FLL2_LOCK_EINT1 */ | ||
| 4304 | #define ARIZONA_FLL1_LOCK_EINT1 0x0004 /* FLL1_LOCK_EINT1 */ | ||
| 4305 | #define ARIZONA_FLL1_LOCK_EINT1_MASK 0x0004 /* FLL1_LOCK_EINT1 */ | ||
| 4306 | #define ARIZONA_FLL1_LOCK_EINT1_SHIFT 2 /* FLL1_LOCK_EINT1 */ | ||
| 4307 | #define ARIZONA_FLL1_LOCK_EINT1_WIDTH 1 /* FLL1_LOCK_EINT1 */ | ||
| 4308 | #define ARIZONA_CLKGEN_ERR_EINT1 0x0002 /* CLKGEN_ERR_EINT1 */ | ||
| 4309 | #define ARIZONA_CLKGEN_ERR_EINT1_MASK 0x0002 /* CLKGEN_ERR_EINT1 */ | ||
| 4310 | #define ARIZONA_CLKGEN_ERR_EINT1_SHIFT 1 /* CLKGEN_ERR_EINT1 */ | ||
| 4311 | #define ARIZONA_CLKGEN_ERR_EINT1_WIDTH 1 /* CLKGEN_ERR_EINT1 */ | ||
| 4312 | #define ARIZONA_CLKGEN_ERR_ASYNC_EINT1 0x0001 /* CLKGEN_ERR_ASYNC_EINT1 */ | ||
| 4313 | #define ARIZONA_CLKGEN_ERR_ASYNC_EINT1_MASK 0x0001 /* CLKGEN_ERR_ASYNC_EINT1 */ | ||
| 4314 | #define ARIZONA_CLKGEN_ERR_ASYNC_EINT1_SHIFT 0 /* CLKGEN_ERR_ASYNC_EINT1 */ | ||
| 4315 | #define ARIZONA_CLKGEN_ERR_ASYNC_EINT1_WIDTH 1 /* CLKGEN_ERR_ASYNC_EINT1 */ | ||
| 4316 | |||
| 4317 | /* | ||
| 4318 | * R3331 (0xD03) - Interrupt Status 4 | ||
| 4319 | */ | ||
| 4320 | #define ARIZONA_ASRC_CFG_ERR_EINT1 0x8000 /* ASRC_CFG_ERR_EINT1 */ | ||
| 4321 | #define ARIZONA_ASRC_CFG_ERR_EINT1_MASK 0x8000 /* ASRC_CFG_ERR_EINT1 */ | ||
| 4322 | #define ARIZONA_ASRC_CFG_ERR_EINT1_SHIFT 15 /* ASRC_CFG_ERR_EINT1 */ | ||
| 4323 | #define ARIZONA_ASRC_CFG_ERR_EINT1_WIDTH 1 /* ASRC_CFG_ERR_EINT1 */ | ||
| 4324 | #define ARIZONA_AIF3_ERR_EINT1 0x4000 /* AIF3_ERR_EINT1 */ | ||
| 4325 | #define ARIZONA_AIF3_ERR_EINT1_MASK 0x4000 /* AIF3_ERR_EINT1 */ | ||
| 4326 | #define ARIZONA_AIF3_ERR_EINT1_SHIFT 14 /* AIF3_ERR_EINT1 */ | ||
| 4327 | #define ARIZONA_AIF3_ERR_EINT1_WIDTH 1 /* AIF3_ERR_EINT1 */ | ||
| 4328 | #define ARIZONA_AIF2_ERR_EINT1 0x2000 /* AIF2_ERR_EINT1 */ | ||
| 4329 | #define ARIZONA_AIF2_ERR_EINT1_MASK 0x2000 /* AIF2_ERR_EINT1 */ | ||
| 4330 | #define ARIZONA_AIF2_ERR_EINT1_SHIFT 13 /* AIF2_ERR_EINT1 */ | ||
| 4331 | #define ARIZONA_AIF2_ERR_EINT1_WIDTH 1 /* AIF2_ERR_EINT1 */ | ||
| 4332 | #define ARIZONA_AIF1_ERR_EINT1 0x1000 /* AIF1_ERR_EINT1 */ | ||
| 4333 | #define ARIZONA_AIF1_ERR_EINT1_MASK 0x1000 /* AIF1_ERR_EINT1 */ | ||
| 4334 | #define ARIZONA_AIF1_ERR_EINT1_SHIFT 12 /* AIF1_ERR_EINT1 */ | ||
| 4335 | #define ARIZONA_AIF1_ERR_EINT1_WIDTH 1 /* AIF1_ERR_EINT1 */ | ||
| 4336 | #define ARIZONA_CTRLIF_ERR_EINT1 0x0800 /* CTRLIF_ERR_EINT1 */ | ||
| 4337 | #define ARIZONA_CTRLIF_ERR_EINT1_MASK 0x0800 /* CTRLIF_ERR_EINT1 */ | ||
| 4338 | #define ARIZONA_CTRLIF_ERR_EINT1_SHIFT 11 /* CTRLIF_ERR_EINT1 */ | ||
| 4339 | #define ARIZONA_CTRLIF_ERR_EINT1_WIDTH 1 /* CTRLIF_ERR_EINT1 */ | ||
| 4340 | #define ARIZONA_MIXER_DROPPED_SAMPLE_EINT1 0x0400 /* MIXER_DROPPED_SAMPLE_EINT1 */ | ||
| 4341 | #define ARIZONA_MIXER_DROPPED_SAMPLE_EINT1_MASK 0x0400 /* MIXER_DROPPED_SAMPLE_EINT1 */ | ||
| 4342 | #define ARIZONA_MIXER_DROPPED_SAMPLE_EINT1_SHIFT 10 /* MIXER_DROPPED_SAMPLE_EINT1 */ | ||
| 4343 | #define ARIZONA_MIXER_DROPPED_SAMPLE_EINT1_WIDTH 1 /* MIXER_DROPPED_SAMPLE_EINT1 */ | ||
| 4344 | #define ARIZONA_ASYNC_CLK_ENA_LOW_EINT1 0x0200 /* ASYNC_CLK_ENA_LOW_EINT1 */ | ||
| 4345 | #define ARIZONA_ASYNC_CLK_ENA_LOW_EINT1_MASK 0x0200 /* ASYNC_CLK_ENA_LOW_EINT1 */ | ||
| 4346 | #define ARIZONA_ASYNC_CLK_ENA_LOW_EINT1_SHIFT 9 /* ASYNC_CLK_ENA_LOW_EINT1 */ | ||
| 4347 | #define ARIZONA_ASYNC_CLK_ENA_LOW_EINT1_WIDTH 1 /* ASYNC_CLK_ENA_LOW_EINT1 */ | ||
| 4348 | #define ARIZONA_SYSCLK_ENA_LOW_EINT1 0x0100 /* SYSCLK_ENA_LOW_EINT1 */ | ||
| 4349 | #define ARIZONA_SYSCLK_ENA_LOW_EINT1_MASK 0x0100 /* SYSCLK_ENA_LOW_EINT1 */ | ||
| 4350 | #define ARIZONA_SYSCLK_ENA_LOW_EINT1_SHIFT 8 /* SYSCLK_ENA_LOW_EINT1 */ | ||
| 4351 | #define ARIZONA_SYSCLK_ENA_LOW_EINT1_WIDTH 1 /* SYSCLK_ENA_LOW_EINT1 */ | ||
| 4352 | #define ARIZONA_ISRC1_CFG_ERR_EINT1 0x0080 /* ISRC1_CFG_ERR_EINT1 */ | ||
| 4353 | #define ARIZONA_ISRC1_CFG_ERR_EINT1_MASK 0x0080 /* ISRC1_CFG_ERR_EINT1 */ | ||
| 4354 | #define ARIZONA_ISRC1_CFG_ERR_EINT1_SHIFT 7 /* ISRC1_CFG_ERR_EINT1 */ | ||
| 4355 | #define ARIZONA_ISRC1_CFG_ERR_EINT1_WIDTH 1 /* ISRC1_CFG_ERR_EINT1 */ | ||
| 4356 | #define ARIZONA_ISRC2_CFG_ERR_EINT1 0x0040 /* ISRC2_CFG_ERR_EINT1 */ | ||
| 4357 | #define ARIZONA_ISRC2_CFG_ERR_EINT1_MASK 0x0040 /* ISRC2_CFG_ERR_EINT1 */ | ||
| 4358 | #define ARIZONA_ISRC2_CFG_ERR_EINT1_SHIFT 6 /* ISRC2_CFG_ERR_EINT1 */ | ||
| 4359 | #define ARIZONA_ISRC2_CFG_ERR_EINT1_WIDTH 1 /* ISRC2_CFG_ERR_EINT1 */ | ||
| 4360 | |||
| 4361 | /* | ||
| 4362 | * R3332 (0xD04) - Interrupt Status 5 | ||
| 4363 | */ | ||
| 4364 | #define ARIZONA_BOOT_DONE_EINT1 0x0100 /* BOOT_DONE_EINT1 */ | ||
| 4365 | #define ARIZONA_BOOT_DONE_EINT1_MASK 0x0100 /* BOOT_DONE_EINT1 */ | ||
| 4366 | #define ARIZONA_BOOT_DONE_EINT1_SHIFT 8 /* BOOT_DONE_EINT1 */ | ||
| 4367 | #define ARIZONA_BOOT_DONE_EINT1_WIDTH 1 /* BOOT_DONE_EINT1 */ | ||
| 4368 | #define ARIZONA_DCS_DAC_DONE_EINT1 0x0080 /* DCS_DAC_DONE_EINT1 */ | ||
| 4369 | #define ARIZONA_DCS_DAC_DONE_EINT1_MASK 0x0080 /* DCS_DAC_DONE_EINT1 */ | ||
| 4370 | #define ARIZONA_DCS_DAC_DONE_EINT1_SHIFT 7 /* DCS_DAC_DONE_EINT1 */ | ||
| 4371 | #define ARIZONA_DCS_DAC_DONE_EINT1_WIDTH 1 /* DCS_DAC_DONE_EINT1 */ | ||
| 4372 | #define ARIZONA_DCS_HP_DONE_EINT1 0x0040 /* DCS_HP_DONE_EINT1 */ | ||
| 4373 | #define ARIZONA_DCS_HP_DONE_EINT1_MASK 0x0040 /* DCS_HP_DONE_EINT1 */ | ||
| 4374 | #define ARIZONA_DCS_HP_DONE_EINT1_SHIFT 6 /* DCS_HP_DONE_EINT1 */ | ||
| 4375 | #define ARIZONA_DCS_HP_DONE_EINT1_WIDTH 1 /* DCS_HP_DONE_EINT1 */ | ||
| 4376 | #define ARIZONA_FLL2_CLOCK_OK_EINT1 0x0002 /* FLL2_CLOCK_OK_EINT1 */ | ||
| 4377 | #define ARIZONA_FLL2_CLOCK_OK_EINT1_MASK 0x0002 /* FLL2_CLOCK_OK_EINT1 */ | ||
| 4378 | #define ARIZONA_FLL2_CLOCK_OK_EINT1_SHIFT 1 /* FLL2_CLOCK_OK_EINT1 */ | ||
| 4379 | #define ARIZONA_FLL2_CLOCK_OK_EINT1_WIDTH 1 /* FLL2_CLOCK_OK_EINT1 */ | ||
| 4380 | #define ARIZONA_FLL1_CLOCK_OK_EINT1 0x0001 /* FLL1_CLOCK_OK_EINT1 */ | ||
| 4381 | #define ARIZONA_FLL1_CLOCK_OK_EINT1_MASK 0x0001 /* FLL1_CLOCK_OK_EINT1 */ | ||
| 4382 | #define ARIZONA_FLL1_CLOCK_OK_EINT1_SHIFT 0 /* FLL1_CLOCK_OK_EINT1 */ | ||
| 4383 | #define ARIZONA_FLL1_CLOCK_OK_EINT1_WIDTH 1 /* FLL1_CLOCK_OK_EINT1 */ | ||
| 4384 | |||
| 4385 | /* | ||
| 4386 | * R3336 (0xD08) - Interrupt Status 1 Mask | ||
| 4387 | */ | ||
| 4388 | #define ARIZONA_IM_GP4_EINT1 0x0008 /* IM_GP4_EINT1 */ | ||
| 4389 | #define ARIZONA_IM_GP4_EINT1_MASK 0x0008 /* IM_GP4_EINT1 */ | ||
| 4390 | #define ARIZONA_IM_GP4_EINT1_SHIFT 3 /* IM_GP4_EINT1 */ | ||
| 4391 | #define ARIZONA_IM_GP4_EINT1_WIDTH 1 /* IM_GP4_EINT1 */ | ||
| 4392 | #define ARIZONA_IM_GP3_EINT1 0x0004 /* IM_GP3_EINT1 */ | ||
| 4393 | #define ARIZONA_IM_GP3_EINT1_MASK 0x0004 /* IM_GP3_EINT1 */ | ||
| 4394 | #define ARIZONA_IM_GP3_EINT1_SHIFT 2 /* IM_GP3_EINT1 */ | ||
| 4395 | #define ARIZONA_IM_GP3_EINT1_WIDTH 1 /* IM_GP3_EINT1 */ | ||
| 4396 | #define ARIZONA_IM_GP2_EINT1 0x0002 /* IM_GP2_EINT1 */ | ||
| 4397 | #define ARIZONA_IM_GP2_EINT1_MASK 0x0002 /* IM_GP2_EINT1 */ | ||
| 4398 | #define ARIZONA_IM_GP2_EINT1_SHIFT 1 /* IM_GP2_EINT1 */ | ||
| 4399 | #define ARIZONA_IM_GP2_EINT1_WIDTH 1 /* IM_GP2_EINT1 */ | ||
| 4400 | #define ARIZONA_IM_GP1_EINT1 0x0001 /* IM_GP1_EINT1 */ | ||
| 4401 | #define ARIZONA_IM_GP1_EINT1_MASK 0x0001 /* IM_GP1_EINT1 */ | ||
| 4402 | #define ARIZONA_IM_GP1_EINT1_SHIFT 0 /* IM_GP1_EINT1 */ | ||
| 4403 | #define ARIZONA_IM_GP1_EINT1_WIDTH 1 /* IM_GP1_EINT1 */ | ||
| 4404 | |||
| 4405 | /* | ||
| 4406 | * R3337 (0xD09) - Interrupt Status 2 Mask | ||
| 4407 | */ | ||
| 4408 | #define ARIZONA_IM_DSP1_RAM_RDY_EINT1 0x0100 /* IM_DSP1_RAM_RDY_EINT1 */ | ||
| 4409 | #define ARIZONA_IM_DSP1_RAM_RDY_EINT1_MASK 0x0100 /* IM_DSP1_RAM_RDY_EINT1 */ | ||
| 4410 | #define ARIZONA_IM_DSP1_RAM_RDY_EINT1_SHIFT 8 /* IM_DSP1_RAM_RDY_EINT1 */ | ||
| 4411 | #define ARIZONA_IM_DSP1_RAM_RDY_EINT1_WIDTH 1 /* IM_DSP1_RAM_RDY_EINT1 */ | ||
| 4412 | #define ARIZONA_IM_DSP_IRQ2_EINT1 0x0002 /* IM_DSP_IRQ2_EINT1 */ | ||
| 4413 | #define ARIZONA_IM_DSP_IRQ2_EINT1_MASK 0x0002 /* IM_DSP_IRQ2_EINT1 */ | ||
| 4414 | #define ARIZONA_IM_DSP_IRQ2_EINT1_SHIFT 1 /* IM_DSP_IRQ2_EINT1 */ | ||
| 4415 | #define ARIZONA_IM_DSP_IRQ2_EINT1_WIDTH 1 /* IM_DSP_IRQ2_EINT1 */ | ||
| 4416 | #define ARIZONA_IM_DSP_IRQ1_EINT1 0x0001 /* IM_DSP_IRQ1_EINT1 */ | ||
| 4417 | #define ARIZONA_IM_DSP_IRQ1_EINT1_MASK 0x0001 /* IM_DSP_IRQ1_EINT1 */ | ||
| 4418 | #define ARIZONA_IM_DSP_IRQ1_EINT1_SHIFT 0 /* IM_DSP_IRQ1_EINT1 */ | ||
| 4419 | #define ARIZONA_IM_DSP_IRQ1_EINT1_WIDTH 1 /* IM_DSP_IRQ1_EINT1 */ | ||
| 4420 | |||
| 4421 | /* | ||
| 4422 | * R3338 (0xD0A) - Interrupt Status 3 Mask | ||
| 4423 | */ | ||
| 4424 | #define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT1 */ | ||
| 4425 | #define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1_MASK 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT1 */ | ||
| 4426 | #define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1_SHIFT 15 /* IM_SPK_SHUTDOWN_WARN_EINT1 */ | ||
| 4427 | #define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1_WIDTH 1 /* IM_SPK_SHUTDOWN_WARN_EINT1 */ | ||
| 4428 | #define ARIZONA_IM_SPK_SHUTDOWN_EINT1 0x4000 /* IM_SPK_SHUTDOWN_EINT1 */ | ||
| 4429 | #define ARIZONA_IM_SPK_SHUTDOWN_EINT1_MASK 0x4000 /* IM_SPK_SHUTDOWN_EINT1 */ | ||
| 4430 | #define ARIZONA_IM_SPK_SHUTDOWN_EINT1_SHIFT 14 /* IM_SPK_SHUTDOWN_EINT1 */ | ||
| 4431 | #define ARIZONA_IM_SPK_SHUTDOWN_EINT1_WIDTH 1 /* IM_SPK_SHUTDOWN_EINT1 */ | ||
| 4432 | #define ARIZONA_IM_HPDET_EINT1 0x2000 /* IM_HPDET_EINT1 */ | ||
| 4433 | #define ARIZONA_IM_HPDET_EINT1_MASK 0x2000 /* IM_HPDET_EINT1 */ | ||
| 4434 | #define ARIZONA_IM_HPDET_EINT1_SHIFT 13 /* IM_HPDET_EINT1 */ | ||
| 4435 | #define ARIZONA_IM_HPDET_EINT1_WIDTH 1 /* IM_HPDET_EINT1 */ | ||
| 4436 | #define ARIZONA_IM_MICDET_EINT1 0x1000 /* IM_MICDET_EINT1 */ | ||
| 4437 | #define ARIZONA_IM_MICDET_EINT1_MASK 0x1000 /* IM_MICDET_EINT1 */ | ||
| 4438 | #define ARIZONA_IM_MICDET_EINT1_SHIFT 12 /* IM_MICDET_EINT1 */ | ||
| 4439 | #define ARIZONA_IM_MICDET_EINT1_WIDTH 1 /* IM_MICDET_EINT1 */ | ||
| 4440 | #define ARIZONA_IM_WSEQ_DONE_EINT1 0x0800 /* IM_WSEQ_DONE_EINT1 */ | ||
| 4441 | #define ARIZONA_IM_WSEQ_DONE_EINT1_MASK 0x0800 /* IM_WSEQ_DONE_EINT1 */ | ||
| 4442 | #define ARIZONA_IM_WSEQ_DONE_EINT1_SHIFT 11 /* IM_WSEQ_DONE_EINT1 */ | ||
| 4443 | #define ARIZONA_IM_WSEQ_DONE_EINT1_WIDTH 1 /* IM_WSEQ_DONE_EINT1 */ | ||
| 4444 | #define ARIZONA_IM_DRC2_SIG_DET_EINT1 0x0400 /* IM_DRC2_SIG_DET_EINT1 */ | ||
| 4445 | #define ARIZONA_IM_DRC2_SIG_DET_EINT1_MASK 0x0400 /* IM_DRC2_SIG_DET_EINT1 */ | ||
| 4446 | #define ARIZONA_IM_DRC2_SIG_DET_EINT1_SHIFT 10 /* IM_DRC2_SIG_DET_EINT1 */ | ||
| 4447 | #define ARIZONA_IM_DRC2_SIG_DET_EINT1_WIDTH 1 /* IM_DRC2_SIG_DET_EINT1 */ | ||
| 4448 | #define ARIZONA_IM_DRC1_SIG_DET_EINT1 0x0200 /* IM_DRC1_SIG_DET_EINT1 */ | ||
| 4449 | #define ARIZONA_IM_DRC1_SIG_DET_EINT1_MASK 0x0200 /* IM_DRC1_SIG_DET_EINT1 */ | ||
| 4450 | #define ARIZONA_IM_DRC1_SIG_DET_EINT1_SHIFT 9 /* IM_DRC1_SIG_DET_EINT1 */ | ||
| 4451 | #define ARIZONA_IM_DRC1_SIG_DET_EINT1_WIDTH 1 /* IM_DRC1_SIG_DET_EINT1 */ | ||
| 4452 | #define ARIZONA_IM_ASRC2_LOCK_EINT1 0x0100 /* IM_ASRC2_LOCK_EINT1 */ | ||
| 4453 | #define ARIZONA_IM_ASRC2_LOCK_EINT1_MASK 0x0100 /* IM_ASRC2_LOCK_EINT1 */ | ||
| 4454 | #define ARIZONA_IM_ASRC2_LOCK_EINT1_SHIFT 8 /* IM_ASRC2_LOCK_EINT1 */ | ||
| 4455 | #define ARIZONA_IM_ASRC2_LOCK_EINT1_WIDTH 1 /* IM_ASRC2_LOCK_EINT1 */ | ||
| 4456 | #define ARIZONA_IM_ASRC1_LOCK_EINT1 0x0080 /* IM_ASRC1_LOCK_EINT1 */ | ||
| 4457 | #define ARIZONA_IM_ASRC1_LOCK_EINT1_MASK 0x0080 /* IM_ASRC1_LOCK_EINT1 */ | ||
| 4458 | #define ARIZONA_IM_ASRC1_LOCK_EINT1_SHIFT 7 /* IM_ASRC1_LOCK_EINT1 */ | ||
| 4459 | #define ARIZONA_IM_ASRC1_LOCK_EINT1_WIDTH 1 /* IM_ASRC1_LOCK_EINT1 */ | ||
| 4460 | #define ARIZONA_IM_UNDERCLOCKED_EINT1 0x0040 /* IM_UNDERCLOCKED_EINT1 */ | ||
| 4461 | #define ARIZONA_IM_UNDERCLOCKED_EINT1_MASK 0x0040 /* IM_UNDERCLOCKED_EINT1 */ | ||
| 4462 | #define ARIZONA_IM_UNDERCLOCKED_EINT1_SHIFT 6 /* IM_UNDERCLOCKED_EINT1 */ | ||
| 4463 | #define ARIZONA_IM_UNDERCLOCKED_EINT1_WIDTH 1 /* IM_UNDERCLOCKED_EINT1 */ | ||
| 4464 | #define ARIZONA_IM_OVERCLOCKED_EINT1 0x0020 /* IM_OVERCLOCKED_EINT1 */ | ||
| 4465 | #define ARIZONA_IM_OVERCLOCKED_EINT1_MASK 0x0020 /* IM_OVERCLOCKED_EINT1 */ | ||
| 4466 | #define ARIZONA_IM_OVERCLOCKED_EINT1_SHIFT 5 /* IM_OVERCLOCKED_EINT1 */ | ||
| 4467 | #define ARIZONA_IM_OVERCLOCKED_EINT1_WIDTH 1 /* IM_OVERCLOCKED_EINT1 */ | ||
| 4468 | #define ARIZONA_IM_FLL2_LOCK_EINT1 0x0008 /* IM_FLL2_LOCK_EINT1 */ | ||
| 4469 | #define ARIZONA_IM_FLL2_LOCK_EINT1_MASK 0x0008 /* IM_FLL2_LOCK_EINT1 */ | ||
| 4470 | #define ARIZONA_IM_FLL2_LOCK_EINT1_SHIFT 3 /* IM_FLL2_LOCK_EINT1 */ | ||
| 4471 | #define ARIZONA_IM_FLL2_LOCK_EINT1_WIDTH 1 /* IM_FLL2_LOCK_EINT1 */ | ||
| 4472 | #define ARIZONA_IM_FLL1_LOCK_EINT1 0x0004 /* IM_FLL1_LOCK_EINT1 */ | ||
| 4473 | #define ARIZONA_IM_FLL1_LOCK_EINT1_MASK 0x0004 /* IM_FLL1_LOCK_EINT1 */ | ||
| 4474 | #define ARIZONA_IM_FLL1_LOCK_EINT1_SHIFT 2 /* IM_FLL1_LOCK_EINT1 */ | ||
| 4475 | #define ARIZONA_IM_FLL1_LOCK_EINT1_WIDTH 1 /* IM_FLL1_LOCK_EINT1 */ | ||
| 4476 | #define ARIZONA_IM_CLKGEN_ERR_EINT1 0x0002 /* IM_CLKGEN_ERR_EINT1 */ | ||
| 4477 | #define ARIZONA_IM_CLKGEN_ERR_EINT1_MASK 0x0002 /* IM_CLKGEN_ERR_EINT1 */ | ||
| 4478 | #define ARIZONA_IM_CLKGEN_ERR_EINT1_SHIFT 1 /* IM_CLKGEN_ERR_EINT1 */ | ||
| 4479 | #define ARIZONA_IM_CLKGEN_ERR_EINT1_WIDTH 1 /* IM_CLKGEN_ERR_EINT1 */ | ||
| 4480 | #define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT1 0x0001 /* IM_CLKGEN_ERR_ASYNC_EINT1 */ | ||
| 4481 | #define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT1_MASK 0x0001 /* IM_CLKGEN_ERR_ASYNC_EINT1 */ | ||
| 4482 | #define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT1_SHIFT 0 /* IM_CLKGEN_ERR_ASYNC_EINT1 */ | ||
| 4483 | #define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT1_WIDTH 1 /* IM_CLKGEN_ERR_ASYNC_EINT1 */ | ||
| 4484 | |||
| 4485 | /* | ||
| 4486 | * R3339 (0xD0B) - Interrupt Status 4 Mask | ||
| 4487 | */ | ||
| 4488 | #define ARIZONA_IM_ASRC_CFG_ERR_EINT1 0x8000 /* IM_ASRC_CFG_ERR_EINT1 */ | ||
| 4489 | #define ARIZONA_IM_ASRC_CFG_ERR_EINT1_MASK 0x8000 /* IM_ASRC_CFG_ERR_EINT1 */ | ||
| 4490 | #define ARIZONA_IM_ASRC_CFG_ERR_EINT1_SHIFT 15 /* IM_ASRC_CFG_ERR_EINT1 */ | ||
| 4491 | #define ARIZONA_IM_ASRC_CFG_ERR_EINT1_WIDTH 1 /* IM_ASRC_CFG_ERR_EINT1 */ | ||
| 4492 | #define ARIZONA_IM_AIF3_ERR_EINT1 0x4000 /* IM_AIF3_ERR_EINT1 */ | ||
| 4493 | #define ARIZONA_IM_AIF3_ERR_EINT1_MASK 0x4000 /* IM_AIF3_ERR_EINT1 */ | ||
| 4494 | #define ARIZONA_IM_AIF3_ERR_EINT1_SHIFT 14 /* IM_AIF3_ERR_EINT1 */ | ||
| 4495 | #define ARIZONA_IM_AIF3_ERR_EINT1_WIDTH 1 /* IM_AIF3_ERR_EINT1 */ | ||
| 4496 | #define ARIZONA_IM_AIF2_ERR_EINT1 0x2000 /* IM_AIF2_ERR_EINT1 */ | ||
| 4497 | #define ARIZONA_IM_AIF2_ERR_EINT1_MASK 0x2000 /* IM_AIF2_ERR_EINT1 */ | ||
| 4498 | #define ARIZONA_IM_AIF2_ERR_EINT1_SHIFT 13 /* IM_AIF2_ERR_EINT1 */ | ||
| 4499 | #define ARIZONA_IM_AIF2_ERR_EINT1_WIDTH 1 /* IM_AIF2_ERR_EINT1 */ | ||
| 4500 | #define ARIZONA_IM_AIF1_ERR_EINT1 0x1000 /* IM_AIF1_ERR_EINT1 */ | ||
| 4501 | #define ARIZONA_IM_AIF1_ERR_EINT1_MASK 0x1000 /* IM_AIF1_ERR_EINT1 */ | ||
| 4502 | #define ARIZONA_IM_AIF1_ERR_EINT1_SHIFT 12 /* IM_AIF1_ERR_EINT1 */ | ||
| 4503 | #define ARIZONA_IM_AIF1_ERR_EINT1_WIDTH 1 /* IM_AIF1_ERR_EINT1 */ | ||
| 4504 | #define ARIZONA_IM_CTRLIF_ERR_EINT1 0x0800 /* IM_CTRLIF_ERR_EINT1 */ | ||
| 4505 | #define ARIZONA_IM_CTRLIF_ERR_EINT1_MASK 0x0800 /* IM_CTRLIF_ERR_EINT1 */ | ||
| 4506 | #define ARIZONA_IM_CTRLIF_ERR_EINT1_SHIFT 11 /* IM_CTRLIF_ERR_EINT1 */ | ||
| 4507 | #define ARIZONA_IM_CTRLIF_ERR_EINT1_WIDTH 1 /* IM_CTRLIF_ERR_EINT1 */ | ||
| 4508 | #define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT1 0x0400 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */ | ||
| 4509 | #define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT1_MASK 0x0400 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */ | ||
| 4510 | #define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT1_SHIFT 10 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */ | ||
| 4511 | #define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT1_WIDTH 1 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */ | ||
| 4512 | #define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT1 0x0200 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */ | ||
| 4513 | #define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT1_MASK 0x0200 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */ | ||
| 4514 | #define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT1_SHIFT 9 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */ | ||
| 4515 | #define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT1_WIDTH 1 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */ | ||
| 4516 | #define ARIZONA_IM_SYSCLK_ENA_LOW_EINT1 0x0100 /* IM_SYSCLK_ENA_LOW_EINT1 */ | ||
| 4517 | #define ARIZONA_IM_SYSCLK_ENA_LOW_EINT1_MASK 0x0100 /* IM_SYSCLK_ENA_LOW_EINT1 */ | ||
| 4518 | #define ARIZONA_IM_SYSCLK_ENA_LOW_EINT1_SHIFT 8 /* IM_SYSCLK_ENA_LOW_EINT1 */ | ||
| 4519 | #define ARIZONA_IM_SYSCLK_ENA_LOW_EINT1_WIDTH 1 /* IM_SYSCLK_ENA_LOW_EINT1 */ | ||
| 4520 | #define ARIZONA_IM_ISRC1_CFG_ERR_EINT1 0x0080 /* IM_ISRC1_CFG_ERR_EINT1 */ | ||
| 4521 | #define ARIZONA_IM_ISRC1_CFG_ERR_EINT1_MASK 0x0080 /* IM_ISRC1_CFG_ERR_EINT1 */ | ||
| 4522 | #define ARIZONA_IM_ISRC1_CFG_ERR_EINT1_SHIFT 7 /* IM_ISRC1_CFG_ERR_EINT1 */ | ||
| 4523 | #define ARIZONA_IM_ISRC1_CFG_ERR_EINT1_WIDTH 1 /* IM_ISRC1_CFG_ERR_EINT1 */ | ||
| 4524 | #define ARIZONA_IM_ISRC2_CFG_ERR_EINT1 0x0040 /* IM_ISRC2_CFG_ERR_EINT1 */ | ||
| 4525 | #define ARIZONA_IM_ISRC2_CFG_ERR_EINT1_MASK 0x0040 /* IM_ISRC2_CFG_ERR_EINT1 */ | ||
| 4526 | #define ARIZONA_IM_ISRC2_CFG_ERR_EINT1_SHIFT 6 /* IM_ISRC2_CFG_ERR_EINT1 */ | ||
| 4527 | #define ARIZONA_IM_ISRC2_CFG_ERR_EINT1_WIDTH 1 /* IM_ISRC2_CFG_ERR_EINT1 */ | ||
| 4528 | |||
| 4529 | /* | ||
| 4530 | * R3340 (0xD0C) - Interrupt Status 5 Mask | ||
| 4531 | */ | ||
| 4532 | #define ARIZONA_IM_BOOT_DONE_EINT1 0x0100 /* IM_BOOT_DONE_EINT1 */ | ||
| 4533 | #define ARIZONA_IM_BOOT_DONE_EINT1_MASK 0x0100 /* IM_BOOT_DONE_EINT1 */ | ||
| 4534 | #define ARIZONA_IM_BOOT_DONE_EINT1_SHIFT 8 /* IM_BOOT_DONE_EINT1 */ | ||
| 4535 | #define ARIZONA_IM_BOOT_DONE_EINT1_WIDTH 1 /* IM_BOOT_DONE_EINT1 */ | ||
| 4536 | #define ARIZONA_IM_DCS_DAC_DONE_EINT1 0x0080 /* IM_DCS_DAC_DONE_EINT1 */ | ||
| 4537 | #define ARIZONA_IM_DCS_DAC_DONE_EINT1_MASK 0x0080 /* IM_DCS_DAC_DONE_EINT1 */ | ||
| 4538 | #define ARIZONA_IM_DCS_DAC_DONE_EINT1_SHIFT 7 /* IM_DCS_DAC_DONE_EINT1 */ | ||
| 4539 | #define ARIZONA_IM_DCS_DAC_DONE_EINT1_WIDTH 1 /* IM_DCS_DAC_DONE_EINT1 */ | ||
| 4540 | #define ARIZONA_IM_DCS_HP_DONE_EINT1 0x0040 /* IM_DCS_HP_DONE_EINT1 */ | ||
| 4541 | #define ARIZONA_IM_DCS_HP_DONE_EINT1_MASK 0x0040 /* IM_DCS_HP_DONE_EINT1 */ | ||
| 4542 | #define ARIZONA_IM_DCS_HP_DONE_EINT1_SHIFT 6 /* IM_DCS_HP_DONE_EINT1 */ | ||
| 4543 | #define ARIZONA_IM_DCS_HP_DONE_EINT1_WIDTH 1 /* IM_DCS_HP_DONE_EINT1 */ | ||
| 4544 | #define ARIZONA_IM_FLL2_CLOCK_OK_EINT1 0x0002 /* IM_FLL2_CLOCK_OK_EINT1 */ | ||
| 4545 | #define ARIZONA_IM_FLL2_CLOCK_OK_EINT1_MASK 0x0002 /* IM_FLL2_CLOCK_OK_EINT1 */ | ||
| 4546 | #define ARIZONA_IM_FLL2_CLOCK_OK_EINT1_SHIFT 1 /* IM_FLL2_CLOCK_OK_EINT1 */ | ||
| 4547 | #define ARIZONA_IM_FLL2_CLOCK_OK_EINT1_WIDTH 1 /* IM_FLL2_CLOCK_OK_EINT1 */ | ||
| 4548 | #define ARIZONA_IM_FLL1_CLOCK_OK_EINT1 0x0001 /* IM_FLL1_CLOCK_OK_EINT1 */ | ||
| 4549 | #define ARIZONA_IM_FLL1_CLOCK_OK_EINT1_MASK 0x0001 /* IM_FLL1_CLOCK_OK_EINT1 */ | ||
| 4550 | #define ARIZONA_IM_FLL1_CLOCK_OK_EINT1_SHIFT 0 /* IM_FLL1_CLOCK_OK_EINT1 */ | ||
| 4551 | #define ARIZONA_IM_FLL1_CLOCK_OK_EINT1_WIDTH 1 /* IM_FLL1_CLOCK_OK_EINT1 */ | ||
| 4552 | |||
| 4553 | /* | ||
| 4554 | * R3343 (0xD0F) - Interrupt Control | ||
| 4555 | */ | ||
| 4556 | #define ARIZONA_IM_IRQ1 0x0001 /* IM_IRQ1 */ | ||
| 4557 | #define ARIZONA_IM_IRQ1_MASK 0x0001 /* IM_IRQ1 */ | ||
| 4558 | #define ARIZONA_IM_IRQ1_SHIFT 0 /* IM_IRQ1 */ | ||
| 4559 | #define ARIZONA_IM_IRQ1_WIDTH 1 /* IM_IRQ1 */ | ||
| 4560 | |||
| 4561 | /* | ||
| 4562 | * R3344 (0xD10) - IRQ2 Status 1 | ||
| 4563 | */ | ||
| 4564 | #define ARIZONA_GP4_EINT2 0x0008 /* GP4_EINT2 */ | ||
| 4565 | #define ARIZONA_GP4_EINT2_MASK 0x0008 /* GP4_EINT2 */ | ||
| 4566 | #define ARIZONA_GP4_EINT2_SHIFT 3 /* GP4_EINT2 */ | ||
| 4567 | #define ARIZONA_GP4_EINT2_WIDTH 1 /* GP4_EINT2 */ | ||
| 4568 | #define ARIZONA_GP3_EINT2 0x0004 /* GP3_EINT2 */ | ||
| 4569 | #define ARIZONA_GP3_EINT2_MASK 0x0004 /* GP3_EINT2 */ | ||
| 4570 | #define ARIZONA_GP3_EINT2_SHIFT 2 /* GP3_EINT2 */ | ||
| 4571 | #define ARIZONA_GP3_EINT2_WIDTH 1 /* GP3_EINT2 */ | ||
| 4572 | #define ARIZONA_GP2_EINT2 0x0002 /* GP2_EINT2 */ | ||
| 4573 | #define ARIZONA_GP2_EINT2_MASK 0x0002 /* GP2_EINT2 */ | ||
| 4574 | #define ARIZONA_GP2_EINT2_SHIFT 1 /* GP2_EINT2 */ | ||
| 4575 | #define ARIZONA_GP2_EINT2_WIDTH 1 /* GP2_EINT2 */ | ||
| 4576 | #define ARIZONA_GP1_EINT2 0x0001 /* GP1_EINT2 */ | ||
| 4577 | #define ARIZONA_GP1_EINT2_MASK 0x0001 /* GP1_EINT2 */ | ||
| 4578 | #define ARIZONA_GP1_EINT2_SHIFT 0 /* GP1_EINT2 */ | ||
| 4579 | #define ARIZONA_GP1_EINT2_WIDTH 1 /* GP1_EINT2 */ | ||
| 4580 | |||
| 4581 | /* | ||
| 4582 | * R3345 (0xD11) - IRQ2 Status 2 | ||
| 4583 | */ | ||
| 4584 | #define ARIZONA_DSP1_RAM_RDY_EINT2 0x0100 /* DSP1_RAM_RDY_EINT2 */ | ||
| 4585 | #define ARIZONA_DSP1_RAM_RDY_EINT2_MASK 0x0100 /* DSP1_RAM_RDY_EINT2 */ | ||
| 4586 | #define ARIZONA_DSP1_RAM_RDY_EINT2_SHIFT 8 /* DSP1_RAM_RDY_EINT2 */ | ||
| 4587 | #define ARIZONA_DSP1_RAM_RDY_EINT2_WIDTH 1 /* DSP1_RAM_RDY_EINT2 */ | ||
| 4588 | #define ARIZONA_DSP_IRQ2_EINT2 0x0002 /* DSP_IRQ2_EINT2 */ | ||
| 4589 | #define ARIZONA_DSP_IRQ2_EINT2_MASK 0x0002 /* DSP_IRQ2_EINT2 */ | ||
| 4590 | #define ARIZONA_DSP_IRQ2_EINT2_SHIFT 1 /* DSP_IRQ2_EINT2 */ | ||
| 4591 | #define ARIZONA_DSP_IRQ2_EINT2_WIDTH 1 /* DSP_IRQ2_EINT2 */ | ||
| 4592 | #define ARIZONA_DSP_IRQ1_EINT2 0x0001 /* DSP_IRQ1_EINT2 */ | ||
| 4593 | #define ARIZONA_DSP_IRQ1_EINT2_MASK 0x0001 /* DSP_IRQ1_EINT2 */ | ||
| 4594 | #define ARIZONA_DSP_IRQ1_EINT2_SHIFT 0 /* DSP_IRQ1_EINT2 */ | ||
| 4595 | #define ARIZONA_DSP_IRQ1_EINT2_WIDTH 1 /* DSP_IRQ1_EINT2 */ | ||
| 4596 | |||
| 4597 | /* | ||
| 4598 | * R3346 (0xD12) - IRQ2 Status 3 | ||
| 4599 | */ | ||
| 4600 | #define ARIZONA_SPK_SHUTDOWN_WARN_EINT2 0x8000 /* SPK_SHUTDOWN_WARN_EINT2 */ | ||
| 4601 | #define ARIZONA_SPK_SHUTDOWN_WARN_EINT2_MASK 0x8000 /* SPK_SHUTDOWN_WARN_EINT2 */ | ||
| 4602 | #define ARIZONA_SPK_SHUTDOWN_WARN_EINT2_SHIFT 15 /* SPK_SHUTDOWN_WARN_EINT2 */ | ||
| 4603 | #define ARIZONA_SPK_SHUTDOWN_WARN_EINT2_WIDTH 1 /* SPK_SHUTDOWN_WARN_EINT2 */ | ||
| 4604 | #define ARIZONA_SPK_SHUTDOWN_EINT2 0x4000 /* SPK_SHUTDOWN_EINT2 */ | ||
| 4605 | #define ARIZONA_SPK_SHUTDOWN_EINT2_MASK 0x4000 /* SPK_SHUTDOWN_EINT2 */ | ||
| 4606 | #define ARIZONA_SPK_SHUTDOWN_EINT2_SHIFT 14 /* SPK_SHUTDOWN_EINT2 */ | ||
| 4607 | #define ARIZONA_SPK_SHUTDOWN_EINT2_WIDTH 1 /* SPK_SHUTDOWN_EINT2 */ | ||
| 4608 | #define ARIZONA_HPDET_EINT2 0x2000 /* HPDET_EINT2 */ | ||
| 4609 | #define ARIZONA_HPDET_EINT2_MASK 0x2000 /* HPDET_EINT2 */ | ||
| 4610 | #define ARIZONA_HPDET_EINT2_SHIFT 13 /* HPDET_EINT2 */ | ||
| 4611 | #define ARIZONA_HPDET_EINT2_WIDTH 1 /* HPDET_EINT2 */ | ||
| 4612 | #define ARIZONA_MICDET_EINT2 0x1000 /* MICDET_EINT2 */ | ||
| 4613 | #define ARIZONA_MICDET_EINT2_MASK 0x1000 /* MICDET_EINT2 */ | ||
| 4614 | #define ARIZONA_MICDET_EINT2_SHIFT 12 /* MICDET_EINT2 */ | ||
| 4615 | #define ARIZONA_MICDET_EINT2_WIDTH 1 /* MICDET_EINT2 */ | ||
| 4616 | #define ARIZONA_WSEQ_DONE_EINT2 0x0800 /* WSEQ_DONE_EINT2 */ | ||
| 4617 | #define ARIZONA_WSEQ_DONE_EINT2_MASK 0x0800 /* WSEQ_DONE_EINT2 */ | ||
| 4618 | #define ARIZONA_WSEQ_DONE_EINT2_SHIFT 11 /* WSEQ_DONE_EINT2 */ | ||
| 4619 | #define ARIZONA_WSEQ_DONE_EINT2_WIDTH 1 /* WSEQ_DONE_EINT2 */ | ||
| 4620 | #define ARIZONA_DRC2_SIG_DET_EINT2 0x0400 /* DRC2_SIG_DET_EINT2 */ | ||
| 4621 | #define ARIZONA_DRC2_SIG_DET_EINT2_MASK 0x0400 /* DRC2_SIG_DET_EINT2 */ | ||
| 4622 | #define ARIZONA_DRC2_SIG_DET_EINT2_SHIFT 10 /* DRC2_SIG_DET_EINT2 */ | ||
| 4623 | #define ARIZONA_DRC2_SIG_DET_EINT2_WIDTH 1 /* DRC2_SIG_DET_EINT2 */ | ||
| 4624 | #define ARIZONA_DRC1_SIG_DET_EINT2 0x0200 /* DRC1_SIG_DET_EINT2 */ | ||
| 4625 | #define ARIZONA_DRC1_SIG_DET_EINT2_MASK 0x0200 /* DRC1_SIG_DET_EINT2 */ | ||
| 4626 | #define ARIZONA_DRC1_SIG_DET_EINT2_SHIFT 9 /* DRC1_SIG_DET_EINT2 */ | ||
| 4627 | #define ARIZONA_DRC1_SIG_DET_EINT2_WIDTH 1 /* DRC1_SIG_DET_EINT2 */ | ||
| 4628 | #define ARIZONA_ASRC2_LOCK_EINT2 0x0100 /* ASRC2_LOCK_EINT2 */ | ||
| 4629 | #define ARIZONA_ASRC2_LOCK_EINT2_MASK 0x0100 /* ASRC2_LOCK_EINT2 */ | ||
| 4630 | #define ARIZONA_ASRC2_LOCK_EINT2_SHIFT 8 /* ASRC2_LOCK_EINT2 */ | ||
| 4631 | #define ARIZONA_ASRC2_LOCK_EINT2_WIDTH 1 /* ASRC2_LOCK_EINT2 */ | ||
| 4632 | #define ARIZONA_ASRC1_LOCK_EINT2 0x0080 /* ASRC1_LOCK_EINT2 */ | ||
| 4633 | #define ARIZONA_ASRC1_LOCK_EINT2_MASK 0x0080 /* ASRC1_LOCK_EINT2 */ | ||
| 4634 | #define ARIZONA_ASRC1_LOCK_EINT2_SHIFT 7 /* ASRC1_LOCK_EINT2 */ | ||
| 4635 | #define ARIZONA_ASRC1_LOCK_EINT2_WIDTH 1 /* ASRC1_LOCK_EINT2 */ | ||
| 4636 | #define ARIZONA_UNDERCLOCKED_EINT2 0x0040 /* UNDERCLOCKED_EINT2 */ | ||
| 4637 | #define ARIZONA_UNDERCLOCKED_EINT2_MASK 0x0040 /* UNDERCLOCKED_EINT2 */ | ||
| 4638 | #define ARIZONA_UNDERCLOCKED_EINT2_SHIFT 6 /* UNDERCLOCKED_EINT2 */ | ||
| 4639 | #define ARIZONA_UNDERCLOCKED_EINT2_WIDTH 1 /* UNDERCLOCKED_EINT2 */ | ||
| 4640 | #define ARIZONA_OVERCLOCKED_EINT2 0x0020 /* OVERCLOCKED_EINT2 */ | ||
| 4641 | #define ARIZONA_OVERCLOCKED_EINT2_MASK 0x0020 /* OVERCLOCKED_EINT2 */ | ||
| 4642 | #define ARIZONA_OVERCLOCKED_EINT2_SHIFT 5 /* OVERCLOCKED_EINT2 */ | ||
| 4643 | #define ARIZONA_OVERCLOCKED_EINT2_WIDTH 1 /* OVERCLOCKED_EINT2 */ | ||
| 4644 | #define ARIZONA_FLL2_LOCK_EINT2 0x0008 /* FLL2_LOCK_EINT2 */ | ||
| 4645 | #define ARIZONA_FLL2_LOCK_EINT2_MASK 0x0008 /* FLL2_LOCK_EINT2 */ | ||
| 4646 | #define ARIZONA_FLL2_LOCK_EINT2_SHIFT 3 /* FLL2_LOCK_EINT2 */ | ||
| 4647 | #define ARIZONA_FLL2_LOCK_EINT2_WIDTH 1 /* FLL2_LOCK_EINT2 */ | ||
| 4648 | #define ARIZONA_FLL1_LOCK_EINT2 0x0004 /* FLL1_LOCK_EINT2 */ | ||
| 4649 | #define ARIZONA_FLL1_LOCK_EINT2_MASK 0x0004 /* FLL1_LOCK_EINT2 */ | ||
| 4650 | #define ARIZONA_FLL1_LOCK_EINT2_SHIFT 2 /* FLL1_LOCK_EINT2 */ | ||
| 4651 | #define ARIZONA_FLL1_LOCK_EINT2_WIDTH 1 /* FLL1_LOCK_EINT2 */ | ||
| 4652 | #define ARIZONA_CLKGEN_ERR_EINT2 0x0002 /* CLKGEN_ERR_EINT2 */ | ||
| 4653 | #define ARIZONA_CLKGEN_ERR_EINT2_MASK 0x0002 /* CLKGEN_ERR_EINT2 */ | ||
| 4654 | #define ARIZONA_CLKGEN_ERR_EINT2_SHIFT 1 /* CLKGEN_ERR_EINT2 */ | ||
| 4655 | #define ARIZONA_CLKGEN_ERR_EINT2_WIDTH 1 /* CLKGEN_ERR_EINT2 */ | ||
| 4656 | #define ARIZONA_CLKGEN_ERR_ASYNC_EINT2 0x0001 /* CLKGEN_ERR_ASYNC_EINT2 */ | ||
| 4657 | #define ARIZONA_CLKGEN_ERR_ASYNC_EINT2_MASK 0x0001 /* CLKGEN_ERR_ASYNC_EINT2 */ | ||
| 4658 | #define ARIZONA_CLKGEN_ERR_ASYNC_EINT2_SHIFT 0 /* CLKGEN_ERR_ASYNC_EINT2 */ | ||
| 4659 | #define ARIZONA_CLKGEN_ERR_ASYNC_EINT2_WIDTH 1 /* CLKGEN_ERR_ASYNC_EINT2 */ | ||
| 4660 | |||
| 4661 | /* | ||
| 4662 | * R3347 (0xD13) - IRQ2 Status 4 | ||
| 4663 | */ | ||
| 4664 | #define ARIZONA_ASRC_CFG_ERR_EINT2 0x8000 /* ASRC_CFG_ERR_EINT2 */ | ||
| 4665 | #define ARIZONA_ASRC_CFG_ERR_EINT2_MASK 0x8000 /* ASRC_CFG_ERR_EINT2 */ | ||
| 4666 | #define ARIZONA_ASRC_CFG_ERR_EINT2_SHIFT 15 /* ASRC_CFG_ERR_EINT2 */ | ||
| 4667 | #define ARIZONA_ASRC_CFG_ERR_EINT2_WIDTH 1 /* ASRC_CFG_ERR_EINT2 */ | ||
| 4668 | #define ARIZONA_AIF3_ERR_EINT2 0x4000 /* AIF3_ERR_EINT2 */ | ||
| 4669 | #define ARIZONA_AIF3_ERR_EINT2_MASK 0x4000 /* AIF3_ERR_EINT2 */ | ||
| 4670 | #define ARIZONA_AIF3_ERR_EINT2_SHIFT 14 /* AIF3_ERR_EINT2 */ | ||
| 4671 | #define ARIZONA_AIF3_ERR_EINT2_WIDTH 1 /* AIF3_ERR_EINT2 */ | ||
| 4672 | #define ARIZONA_AIF2_ERR_EINT2 0x2000 /* AIF2_ERR_EINT2 */ | ||
| 4673 | #define ARIZONA_AIF2_ERR_EINT2_MASK 0x2000 /* AIF2_ERR_EINT2 */ | ||
| 4674 | #define ARIZONA_AIF2_ERR_EINT2_SHIFT 13 /* AIF2_ERR_EINT2 */ | ||
| 4675 | #define ARIZONA_AIF2_ERR_EINT2_WIDTH 1 /* AIF2_ERR_EINT2 */ | ||
| 4676 | #define ARIZONA_AIF1_ERR_EINT2 0x1000 /* AIF1_ERR_EINT2 */ | ||
| 4677 | #define ARIZONA_AIF1_ERR_EINT2_MASK 0x1000 /* AIF1_ERR_EINT2 */ | ||
| 4678 | #define ARIZONA_AIF1_ERR_EINT2_SHIFT 12 /* AIF1_ERR_EINT2 */ | ||
| 4679 | #define ARIZONA_AIF1_ERR_EINT2_WIDTH 1 /* AIF1_ERR_EINT2 */ | ||
| 4680 | #define ARIZONA_CTRLIF_ERR_EINT2 0x0800 /* CTRLIF_ERR_EINT2 */ | ||
| 4681 | #define ARIZONA_CTRLIF_ERR_EINT2_MASK 0x0800 /* CTRLIF_ERR_EINT2 */ | ||
| 4682 | #define ARIZONA_CTRLIF_ERR_EINT2_SHIFT 11 /* CTRLIF_ERR_EINT2 */ | ||
| 4683 | #define ARIZONA_CTRLIF_ERR_EINT2_WIDTH 1 /* CTRLIF_ERR_EINT2 */ | ||
| 4684 | #define ARIZONA_MIXER_DROPPED_SAMPLE_EINT2 0x0400 /* MIXER_DROPPED_SAMPLE_EINT2 */ | ||
| 4685 | #define ARIZONA_MIXER_DROPPED_SAMPLE_EINT2_MASK 0x0400 /* MIXER_DROPPED_SAMPLE_EINT2 */ | ||
| 4686 | #define ARIZONA_MIXER_DROPPED_SAMPLE_EINT2_SHIFT 10 /* MIXER_DROPPED_SAMPLE_EINT2 */ | ||
| 4687 | #define ARIZONA_MIXER_DROPPED_SAMPLE_EINT2_WIDTH 1 /* MIXER_DROPPED_SAMPLE_EINT2 */ | ||
| 4688 | #define ARIZONA_ASYNC_CLK_ENA_LOW_EINT2 0x0200 /* ASYNC_CLK_ENA_LOW_EINT2 */ | ||
| 4689 | #define ARIZONA_ASYNC_CLK_ENA_LOW_EINT2_MASK 0x0200 /* ASYNC_CLK_ENA_LOW_EINT2 */ | ||
| 4690 | #define ARIZONA_ASYNC_CLK_ENA_LOW_EINT2_SHIFT 9 /* ASYNC_CLK_ENA_LOW_EINT2 */ | ||
| 4691 | #define ARIZONA_ASYNC_CLK_ENA_LOW_EINT2_WIDTH 1 /* ASYNC_CLK_ENA_LOW_EINT2 */ | ||
| 4692 | #define ARIZONA_SYSCLK_ENA_LOW_EINT2 0x0100 /* SYSCLK_ENA_LOW_EINT2 */ | ||
| 4693 | #define ARIZONA_SYSCLK_ENA_LOW_EINT2_MASK 0x0100 /* SYSCLK_ENA_LOW_EINT2 */ | ||
| 4694 | #define ARIZONA_SYSCLK_ENA_LOW_EINT2_SHIFT 8 /* SYSCLK_ENA_LOW_EINT2 */ | ||
| 4695 | #define ARIZONA_SYSCLK_ENA_LOW_EINT2_WIDTH 1 /* SYSCLK_ENA_LOW_EINT2 */ | ||
| 4696 | #define ARIZONA_ISRC1_CFG_ERR_EINT2 0x0080 /* ISRC1_CFG_ERR_EINT2 */ | ||
| 4697 | #define ARIZONA_ISRC1_CFG_ERR_EINT2_MASK 0x0080 /* ISRC1_CFG_ERR_EINT2 */ | ||
| 4698 | #define ARIZONA_ISRC1_CFG_ERR_EINT2_SHIFT 7 /* ISRC1_CFG_ERR_EINT2 */ | ||
| 4699 | #define ARIZONA_ISRC1_CFG_ERR_EINT2_WIDTH 1 /* ISRC1_CFG_ERR_EINT2 */ | ||
| 4700 | #define ARIZONA_ISRC2_CFG_ERR_EINT2 0x0040 /* ISRC2_CFG_ERR_EINT2 */ | ||
| 4701 | #define ARIZONA_ISRC2_CFG_ERR_EINT2_MASK 0x0040 /* ISRC2_CFG_ERR_EINT2 */ | ||
| 4702 | #define ARIZONA_ISRC2_CFG_ERR_EINT2_SHIFT 6 /* ISRC2_CFG_ERR_EINT2 */ | ||
| 4703 | #define ARIZONA_ISRC2_CFG_ERR_EINT2_WIDTH 1 /* ISRC2_CFG_ERR_EINT2 */ | ||
| 4704 | |||
| 4705 | /* | ||
| 4706 | * R3348 (0xD14) - IRQ2 Status 5 | ||
| 4707 | */ | ||
| 4708 | #define ARIZONA_BOOT_DONE_EINT2 0x0100 /* BOOT_DONE_EINT2 */ | ||
| 4709 | #define ARIZONA_BOOT_DONE_EINT2_MASK 0x0100 /* BOOT_DONE_EINT2 */ | ||
| 4710 | #define ARIZONA_BOOT_DONE_EINT2_SHIFT 8 /* BOOT_DONE_EINT2 */ | ||
| 4711 | #define ARIZONA_BOOT_DONE_EINT2_WIDTH 1 /* BOOT_DONE_EINT2 */ | ||
| 4712 | #define ARIZONA_DCS_DAC_DONE_EINT2 0x0080 /* DCS_DAC_DONE_EINT2 */ | ||
| 4713 | #define ARIZONA_DCS_DAC_DONE_EINT2_MASK 0x0080 /* DCS_DAC_DONE_EINT2 */ | ||
| 4714 | #define ARIZONA_DCS_DAC_DONE_EINT2_SHIFT 7 /* DCS_DAC_DONE_EINT2 */ | ||
| 4715 | #define ARIZONA_DCS_DAC_DONE_EINT2_WIDTH 1 /* DCS_DAC_DONE_EINT2 */ | ||
| 4716 | #define ARIZONA_DCS_HP_DONE_EINT2 0x0040 /* DCS_HP_DONE_EINT2 */ | ||
| 4717 | #define ARIZONA_DCS_HP_DONE_EINT2_MASK 0x0040 /* DCS_HP_DONE_EINT2 */ | ||
| 4718 | #define ARIZONA_DCS_HP_DONE_EINT2_SHIFT 6 /* DCS_HP_DONE_EINT2 */ | ||
| 4719 | #define ARIZONA_DCS_HP_DONE_EINT2_WIDTH 1 /* DCS_HP_DONE_EINT2 */ | ||
| 4720 | #define ARIZONA_FLL2_CLOCK_OK_EINT2 0x0002 /* FLL2_CLOCK_OK_EINT2 */ | ||
| 4721 | #define ARIZONA_FLL2_CLOCK_OK_EINT2_MASK 0x0002 /* FLL2_CLOCK_OK_EINT2 */ | ||
| 4722 | #define ARIZONA_FLL2_CLOCK_OK_EINT2_SHIFT 1 /* FLL2_CLOCK_OK_EINT2 */ | ||
| 4723 | #define ARIZONA_FLL2_CLOCK_OK_EINT2_WIDTH 1 /* FLL2_CLOCK_OK_EINT2 */ | ||
| 4724 | #define ARIZONA_FLL1_CLOCK_OK_EINT2 0x0001 /* FLL1_CLOCK_OK_EINT2 */ | ||
| 4725 | #define ARIZONA_FLL1_CLOCK_OK_EINT2_MASK 0x0001 /* FLL1_CLOCK_OK_EINT2 */ | ||
| 4726 | #define ARIZONA_FLL1_CLOCK_OK_EINT2_SHIFT 0 /* FLL1_CLOCK_OK_EINT2 */ | ||
| 4727 | #define ARIZONA_FLL1_CLOCK_OK_EINT2_WIDTH 1 /* FLL1_CLOCK_OK_EINT2 */ | ||
| 4728 | |||
| 4729 | /* | ||
| 4730 | * R3352 (0xD18) - IRQ2 Status 1 Mask | ||
| 4731 | */ | ||
| 4732 | #define ARIZONA_IM_GP4_EINT2 0x0008 /* IM_GP4_EINT2 */ | ||
| 4733 | #define ARIZONA_IM_GP4_EINT2_MASK 0x0008 /* IM_GP4_EINT2 */ | ||
| 4734 | #define ARIZONA_IM_GP4_EINT2_SHIFT 3 /* IM_GP4_EINT2 */ | ||
| 4735 | #define ARIZONA_IM_GP4_EINT2_WIDTH 1 /* IM_GP4_EINT2 */ | ||
| 4736 | #define ARIZONA_IM_GP3_EINT2 0x0004 /* IM_GP3_EINT2 */ | ||
| 4737 | #define ARIZONA_IM_GP3_EINT2_MASK 0x0004 /* IM_GP3_EINT2 */ | ||
| 4738 | #define ARIZONA_IM_GP3_EINT2_SHIFT 2 /* IM_GP3_EINT2 */ | ||
| 4739 | #define ARIZONA_IM_GP3_EINT2_WIDTH 1 /* IM_GP3_EINT2 */ | ||
| 4740 | #define ARIZONA_IM_GP2_EINT2 0x0002 /* IM_GP2_EINT2 */ | ||
| 4741 | #define ARIZONA_IM_GP2_EINT2_MASK 0x0002 /* IM_GP2_EINT2 */ | ||
| 4742 | #define ARIZONA_IM_GP2_EINT2_SHIFT 1 /* IM_GP2_EINT2 */ | ||
| 4743 | #define ARIZONA_IM_GP2_EINT2_WIDTH 1 /* IM_GP2_EINT2 */ | ||
| 4744 | #define ARIZONA_IM_GP1_EINT2 0x0001 /* IM_GP1_EINT2 */ | ||
| 4745 | #define ARIZONA_IM_GP1_EINT2_MASK 0x0001 /* IM_GP1_EINT2 */ | ||
| 4746 | #define ARIZONA_IM_GP1_EINT2_SHIFT 0 /* IM_GP1_EINT2 */ | ||
| 4747 | #define ARIZONA_IM_GP1_EINT2_WIDTH 1 /* IM_GP1_EINT2 */ | ||
| 4748 | |||
| 4749 | /* | ||
| 4750 | * R3353 (0xD19) - IRQ2 Status 2 Mask | ||
| 4751 | */ | ||
| 4752 | #define ARIZONA_IM_DSP1_RAM_RDY_EINT2 0x0100 /* IM_DSP1_RAM_RDY_EINT2 */ | ||
| 4753 | #define ARIZONA_IM_DSP1_RAM_RDY_EINT2_MASK 0x0100 /* IM_DSP1_RAM_RDY_EINT2 */ | ||
| 4754 | #define ARIZONA_IM_DSP1_RAM_RDY_EINT2_SHIFT 8 /* IM_DSP1_RAM_RDY_EINT2 */ | ||
| 4755 | #define ARIZONA_IM_DSP1_RAM_RDY_EINT2_WIDTH 1 /* IM_DSP1_RAM_RDY_EINT2 */ | ||
| 4756 | #define ARIZONA_IM_DSP_IRQ2_EINT2 0x0002 /* IM_DSP_IRQ2_EINT2 */ | ||
| 4757 | #define ARIZONA_IM_DSP_IRQ2_EINT2_MASK 0x0002 /* IM_DSP_IRQ2_EINT2 */ | ||
| 4758 | #define ARIZONA_IM_DSP_IRQ2_EINT2_SHIFT 1 /* IM_DSP_IRQ2_EINT2 */ | ||
| 4759 | #define ARIZONA_IM_DSP_IRQ2_EINT2_WIDTH 1 /* IM_DSP_IRQ2_EINT2 */ | ||
| 4760 | #define ARIZONA_IM_DSP_IRQ1_EINT2 0x0001 /* IM_DSP_IRQ1_EINT2 */ | ||
| 4761 | #define ARIZONA_IM_DSP_IRQ1_EINT2_MASK 0x0001 /* IM_DSP_IRQ1_EINT2 */ | ||
| 4762 | #define ARIZONA_IM_DSP_IRQ1_EINT2_SHIFT 0 /* IM_DSP_IRQ1_EINT2 */ | ||
| 4763 | #define ARIZONA_IM_DSP_IRQ1_EINT2_WIDTH 1 /* IM_DSP_IRQ1_EINT2 */ | ||
| 4764 | |||
| 4765 | /* | ||
| 4766 | * R3354 (0xD1A) - IRQ2 Status 3 Mask | ||
| 4767 | */ | ||
| 4768 | #define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT2 */ | ||
| 4769 | #define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2_MASK 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT2 */ | ||
| 4770 | #define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2_SHIFT 15 /* IM_SPK_SHUTDOWN_WARN_EINT2 */ | ||
| 4771 | #define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2_WIDTH 1 /* IM_SPK_SHUTDOWN_WARN_EINT2 */ | ||
| 4772 | #define ARIZONA_IM_SPK_SHUTDOWN_EINT2 0x4000 /* IM_SPK_SHUTDOWN_EINT2 */ | ||
| 4773 | #define ARIZONA_IM_SPK_SHUTDOWN_EINT2_MASK 0x4000 /* IM_SPK_SHUTDOWN_EINT2 */ | ||
| 4774 | #define ARIZONA_IM_SPK_SHUTDOWN_EINT2_SHIFT 14 /* IM_SPK_SHUTDOWN_EINT2 */ | ||
| 4775 | #define ARIZONA_IM_SPK_SHUTDOWN_EINT2_WIDTH 1 /* IM_SPK_SHUTDOWN_EINT2 */ | ||
| 4776 | #define ARIZONA_IM_HPDET_EINT2 0x2000 /* IM_HPDET_EINT2 */ | ||
| 4777 | #define ARIZONA_IM_HPDET_EINT2_MASK 0x2000 /* IM_HPDET_EINT2 */ | ||
| 4778 | #define ARIZONA_IM_HPDET_EINT2_SHIFT 13 /* IM_HPDET_EINT2 */ | ||
| 4779 | #define ARIZONA_IM_HPDET_EINT2_WIDTH 1 /* IM_HPDET_EINT2 */ | ||
| 4780 | #define ARIZONA_IM_MICDET_EINT2 0x1000 /* IM_MICDET_EINT2 */ | ||
| 4781 | #define ARIZONA_IM_MICDET_EINT2_MASK 0x1000 /* IM_MICDET_EINT2 */ | ||
| 4782 | #define ARIZONA_IM_MICDET_EINT2_SHIFT 12 /* IM_MICDET_EINT2 */ | ||
| 4783 | #define ARIZONA_IM_MICDET_EINT2_WIDTH 1 /* IM_MICDET_EINT2 */ | ||
| 4784 | #define ARIZONA_IM_WSEQ_DONE_EINT2 0x0800 /* IM_WSEQ_DONE_EINT2 */ | ||
| 4785 | #define ARIZONA_IM_WSEQ_DONE_EINT2_MASK 0x0800 /* IM_WSEQ_DONE_EINT2 */ | ||
| 4786 | #define ARIZONA_IM_WSEQ_DONE_EINT2_SHIFT 11 /* IM_WSEQ_DONE_EINT2 */ | ||
| 4787 | #define ARIZONA_IM_WSEQ_DONE_EINT2_WIDTH 1 /* IM_WSEQ_DONE_EINT2 */ | ||
| 4788 | #define ARIZONA_IM_DRC2_SIG_DET_EINT2 0x0400 /* IM_DRC2_SIG_DET_EINT2 */ | ||
| 4789 | #define ARIZONA_IM_DRC2_SIG_DET_EINT2_MASK 0x0400 /* IM_DRC2_SIG_DET_EINT2 */ | ||
| 4790 | #define ARIZONA_IM_DRC2_SIG_DET_EINT2_SHIFT 10 /* IM_DRC2_SIG_DET_EINT2 */ | ||
| 4791 | #define ARIZONA_IM_DRC2_SIG_DET_EINT2_WIDTH 1 /* IM_DRC2_SIG_DET_EINT2 */ | ||
| 4792 | #define ARIZONA_IM_DRC1_SIG_DET_EINT2 0x0200 /* IM_DRC1_SIG_DET_EINT2 */ | ||
| 4793 | #define ARIZONA_IM_DRC1_SIG_DET_EINT2_MASK 0x0200 /* IM_DRC1_SIG_DET_EINT2 */ | ||
| 4794 | #define ARIZONA_IM_DRC1_SIG_DET_EINT2_SHIFT 9 /* IM_DRC1_SIG_DET_EINT2 */ | ||
| 4795 | #define ARIZONA_IM_DRC1_SIG_DET_EINT2_WIDTH 1 /* IM_DRC1_SIG_DET_EINT2 */ | ||
| 4796 | #define ARIZONA_IM_ASRC2_LOCK_EINT2 0x0100 /* IM_ASRC2_LOCK_EINT2 */ | ||
| 4797 | #define ARIZONA_IM_ASRC2_LOCK_EINT2_MASK 0x0100 /* IM_ASRC2_LOCK_EINT2 */ | ||
| 4798 | #define ARIZONA_IM_ASRC2_LOCK_EINT2_SHIFT 8 /* IM_ASRC2_LOCK_EINT2 */ | ||
| 4799 | #define ARIZONA_IM_ASRC2_LOCK_EINT2_WIDTH 1 /* IM_ASRC2_LOCK_EINT2 */ | ||
| 4800 | #define ARIZONA_IM_ASRC1_LOCK_EINT2 0x0080 /* IM_ASRC1_LOCK_EINT2 */ | ||
| 4801 | #define ARIZONA_IM_ASRC1_LOCK_EINT2_MASK 0x0080 /* IM_ASRC1_LOCK_EINT2 */ | ||
| 4802 | #define ARIZONA_IM_ASRC1_LOCK_EINT2_SHIFT 7 /* IM_ASRC1_LOCK_EINT2 */ | ||
| 4803 | #define ARIZONA_IM_ASRC1_LOCK_EINT2_WIDTH 1 /* IM_ASRC1_LOCK_EINT2 */ | ||
| 4804 | #define ARIZONA_IM_UNDERCLOCKED_EINT2 0x0040 /* IM_UNDERCLOCKED_EINT2 */ | ||
| 4805 | #define ARIZONA_IM_UNDERCLOCKED_EINT2_MASK 0x0040 /* IM_UNDERCLOCKED_EINT2 */ | ||
| 4806 | #define ARIZONA_IM_UNDERCLOCKED_EINT2_SHIFT 6 /* IM_UNDERCLOCKED_EINT2 */ | ||
| 4807 | #define ARIZONA_IM_UNDERCLOCKED_EINT2_WIDTH 1 /* IM_UNDERCLOCKED_EINT2 */ | ||
| 4808 | #define ARIZONA_IM_OVERCLOCKED_EINT2 0x0020 /* IM_OVERCLOCKED_EINT2 */ | ||
| 4809 | #define ARIZONA_IM_OVERCLOCKED_EINT2_MASK 0x0020 /* IM_OVERCLOCKED_EINT2 */ | ||
| 4810 | #define ARIZONA_IM_OVERCLOCKED_EINT2_SHIFT 5 /* IM_OVERCLOCKED_EINT2 */ | ||
| 4811 | #define ARIZONA_IM_OVERCLOCKED_EINT2_WIDTH 1 /* IM_OVERCLOCKED_EINT2 */ | ||
| 4812 | #define ARIZONA_IM_FLL2_LOCK_EINT2 0x0008 /* IM_FLL2_LOCK_EINT2 */ | ||
| 4813 | #define ARIZONA_IM_FLL2_LOCK_EINT2_MASK 0x0008 /* IM_FLL2_LOCK_EINT2 */ | ||
| 4814 | #define ARIZONA_IM_FLL2_LOCK_EINT2_SHIFT 3 /* IM_FLL2_LOCK_EINT2 */ | ||
| 4815 | #define ARIZONA_IM_FLL2_LOCK_EINT2_WIDTH 1 /* IM_FLL2_LOCK_EINT2 */ | ||
| 4816 | #define ARIZONA_IM_FLL1_LOCK_EINT2 0x0004 /* IM_FLL1_LOCK_EINT2 */ | ||
| 4817 | #define ARIZONA_IM_FLL1_LOCK_EINT2_MASK 0x0004 /* IM_FLL1_LOCK_EINT2 */ | ||
| 4818 | #define ARIZONA_IM_FLL1_LOCK_EINT2_SHIFT 2 /* IM_FLL1_LOCK_EINT2 */ | ||
| 4819 | #define ARIZONA_IM_FLL1_LOCK_EINT2_WIDTH 1 /* IM_FLL1_LOCK_EINT2 */ | ||
| 4820 | #define ARIZONA_IM_CLKGEN_ERR_EINT2 0x0002 /* IM_CLKGEN_ERR_EINT2 */ | ||
| 4821 | #define ARIZONA_IM_CLKGEN_ERR_EINT2_MASK 0x0002 /* IM_CLKGEN_ERR_EINT2 */ | ||
| 4822 | #define ARIZONA_IM_CLKGEN_ERR_EINT2_SHIFT 1 /* IM_CLKGEN_ERR_EINT2 */ | ||
| 4823 | #define ARIZONA_IM_CLKGEN_ERR_EINT2_WIDTH 1 /* IM_CLKGEN_ERR_EINT2 */ | ||
| 4824 | #define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT2 0x0001 /* IM_CLKGEN_ERR_ASYNC_EINT2 */ | ||
| 4825 | #define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT2_MASK 0x0001 /* IM_CLKGEN_ERR_ASYNC_EINT2 */ | ||
| 4826 | #define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT2_SHIFT 0 /* IM_CLKGEN_ERR_ASYNC_EINT2 */ | ||
| 4827 | #define ARIZONA_IM_CLKGEN_ERR_ASYNC_EINT2_WIDTH 1 /* IM_CLKGEN_ERR_ASYNC_EINT2 */ | ||
| 4828 | |||
| 4829 | /* | ||
| 4830 | * R3355 (0xD1B) - IRQ2 Status 4 Mask | ||
| 4831 | */ | ||
| 4832 | #define ARIZONA_IM_ASRC_CFG_ERR_EINT2 0x8000 /* IM_ASRC_CFG_ERR_EINT2 */ | ||
| 4833 | #define ARIZONA_IM_ASRC_CFG_ERR_EINT2_MASK 0x8000 /* IM_ASRC_CFG_ERR_EINT2 */ | ||
| 4834 | #define ARIZONA_IM_ASRC_CFG_ERR_EINT2_SHIFT 15 /* IM_ASRC_CFG_ERR_EINT2 */ | ||
| 4835 | #define ARIZONA_IM_ASRC_CFG_ERR_EINT2_WIDTH 1 /* IM_ASRC_CFG_ERR_EINT2 */ | ||
| 4836 | #define ARIZONA_IM_AIF3_ERR_EINT2 0x4000 /* IM_AIF3_ERR_EINT2 */ | ||
| 4837 | #define ARIZONA_IM_AIF3_ERR_EINT2_MASK 0x4000 /* IM_AIF3_ERR_EINT2 */ | ||
| 4838 | #define ARIZONA_IM_AIF3_ERR_EINT2_SHIFT 14 /* IM_AIF3_ERR_EINT2 */ | ||
| 4839 | #define ARIZONA_IM_AIF3_ERR_EINT2_WIDTH 1 /* IM_AIF3_ERR_EINT2 */ | ||
| 4840 | #define ARIZONA_IM_AIF2_ERR_EINT2 0x2000 /* IM_AIF2_ERR_EINT2 */ | ||
| 4841 | #define ARIZONA_IM_AIF2_ERR_EINT2_MASK 0x2000 /* IM_AIF2_ERR_EINT2 */ | ||
| 4842 | #define ARIZONA_IM_AIF2_ERR_EINT2_SHIFT 13 /* IM_AIF2_ERR_EINT2 */ | ||
| 4843 | #define ARIZONA_IM_AIF2_ERR_EINT2_WIDTH 1 /* IM_AIF2_ERR_EINT2 */ | ||
| 4844 | #define ARIZONA_IM_AIF1_ERR_EINT2 0x1000 /* IM_AIF1_ERR_EINT2 */ | ||
| 4845 | #define ARIZONA_IM_AIF1_ERR_EINT2_MASK 0x1000 /* IM_AIF1_ERR_EINT2 */ | ||
| 4846 | #define ARIZONA_IM_AIF1_ERR_EINT2_SHIFT 12 /* IM_AIF1_ERR_EINT2 */ | ||
| 4847 | #define ARIZONA_IM_AIF1_ERR_EINT2_WIDTH 1 /* IM_AIF1_ERR_EINT2 */ | ||
| 4848 | #define ARIZONA_IM_CTRLIF_ERR_EINT2 0x0800 /* IM_CTRLIF_ERR_EINT2 */ | ||
| 4849 | #define ARIZONA_IM_CTRLIF_ERR_EINT2_MASK 0x0800 /* IM_CTRLIF_ERR_EINT2 */ | ||
| 4850 | #define ARIZONA_IM_CTRLIF_ERR_EINT2_SHIFT 11 /* IM_CTRLIF_ERR_EINT2 */ | ||
| 4851 | #define ARIZONA_IM_CTRLIF_ERR_EINT2_WIDTH 1 /* IM_CTRLIF_ERR_EINT2 */ | ||
| 4852 | #define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT2 0x0400 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */ | ||
| 4853 | #define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT2_MASK 0x0400 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */ | ||
| 4854 | #define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT2_SHIFT 10 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */ | ||
| 4855 | #define ARIZONA_IM_MIXER_DROPPED_SAMPLE_EINT2_WIDTH 1 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */ | ||
| 4856 | #define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT2 0x0200 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */ | ||
| 4857 | #define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT2_MASK 0x0200 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */ | ||
| 4858 | #define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT2_SHIFT 9 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */ | ||
| 4859 | #define ARIZONA_IM_ASYNC_CLK_ENA_LOW_EINT2_WIDTH 1 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */ | ||
| 4860 | #define ARIZONA_IM_SYSCLK_ENA_LOW_EINT2 0x0100 /* IM_SYSCLK_ENA_LOW_EINT2 */ | ||
| 4861 | #define ARIZONA_IM_SYSCLK_ENA_LOW_EINT2_MASK 0x0100 /* IM_SYSCLK_ENA_LOW_EINT2 */ | ||
| 4862 | #define ARIZONA_IM_SYSCLK_ENA_LOW_EINT2_SHIFT 8 /* IM_SYSCLK_ENA_LOW_EINT2 */ | ||
| 4863 | #define ARIZONA_IM_SYSCLK_ENA_LOW_EINT2_WIDTH 1 /* IM_SYSCLK_ENA_LOW_EINT2 */ | ||
| 4864 | #define ARIZONA_IM_ISRC1_CFG_ERR_EINT2 0x0080 /* IM_ISRC1_CFG_ERR_EINT2 */ | ||
| 4865 | #define ARIZONA_IM_ISRC1_CFG_ERR_EINT2_MASK 0x0080 /* IM_ISRC1_CFG_ERR_EINT2 */ | ||
| 4866 | #define ARIZONA_IM_ISRC1_CFG_ERR_EINT2_SHIFT 7 /* IM_ISRC1_CFG_ERR_EINT2 */ | ||
| 4867 | #define ARIZONA_IM_ISRC1_CFG_ERR_EINT2_WIDTH 1 /* IM_ISRC1_CFG_ERR_EINT2 */ | ||
| 4868 | #define ARIZONA_IM_ISRC2_CFG_ERR_EINT2 0x0040 /* IM_ISRC2_CFG_ERR_EINT2 */ | ||
| 4869 | #define ARIZONA_IM_ISRC2_CFG_ERR_EINT2_MASK 0x0040 /* IM_ISRC2_CFG_ERR_EINT2 */ | ||
| 4870 | #define ARIZONA_IM_ISRC2_CFG_ERR_EINT2_SHIFT 6 /* IM_ISRC2_CFG_ERR_EINT2 */ | ||
| 4871 | #define ARIZONA_IM_ISRC2_CFG_ERR_EINT2_WIDTH 1 /* IM_ISRC2_CFG_ERR_EINT2 */ | ||
| 4872 | |||
| 4873 | /* | ||
| 4874 | * R3356 (0xD1C) - IRQ2 Status 5 Mask | ||
| 4875 | */ | ||
| 4876 | |||
| 4877 | #define ARIZONA_IM_BOOT_DONE_EINT2 0x0100 /* IM_BOOT_DONE_EINT2 */ | ||
| 4878 | #define ARIZONA_IM_BOOT_DONE_EINT2_MASK 0x0100 /* IM_BOOT_DONE_EINT2 */ | ||
| 4879 | #define ARIZONA_IM_BOOT_DONE_EINT2_SHIFT 8 /* IM_BOOT_DONE_EINT2 */ | ||
| 4880 | #define ARIZONA_IM_BOOT_DONE_EINT2_WIDTH 1 /* IM_BOOT_DONE_EINT2 */ | ||
| 4881 | #define ARIZONA_IM_DCS_DAC_DONE_EINT2 0x0080 /* IM_DCS_DAC_DONE_EINT2 */ | ||
| 4882 | #define ARIZONA_IM_DCS_DAC_DONE_EINT2_MASK 0x0080 /* IM_DCS_DAC_DONE_EINT2 */ | ||
| 4883 | #define ARIZONA_IM_DCS_DAC_DONE_EINT2_SHIFT 7 /* IM_DCS_DAC_DONE_EINT2 */ | ||
| 4884 | #define ARIZONA_IM_DCS_DAC_DONE_EINT2_WIDTH 1 /* IM_DCS_DAC_DONE_EINT2 */ | ||
| 4885 | #define ARIZONA_IM_DCS_HP_DONE_EINT2 0x0040 /* IM_DCS_HP_DONE_EINT2 */ | ||
| 4886 | #define ARIZONA_IM_DCS_HP_DONE_EINT2_MASK 0x0040 /* IM_DCS_HP_DONE_EINT2 */ | ||
| 4887 | #define ARIZONA_IM_DCS_HP_DONE_EINT2_SHIFT 6 /* IM_DCS_HP_DONE_EINT2 */ | ||
| 4888 | #define ARIZONA_IM_DCS_HP_DONE_EINT2_WIDTH 1 /* IM_DCS_HP_DONE_EINT2 */ | ||
| 4889 | #define ARIZONA_IM_FLL2_CLOCK_OK_EINT2 0x0002 /* IM_FLL2_CLOCK_OK_EINT2 */ | ||
| 4890 | #define ARIZONA_IM_FLL2_CLOCK_OK_EINT2_MASK 0x0002 /* IM_FLL2_CLOCK_OK_EINT2 */ | ||
| 4891 | #define ARIZONA_IM_FLL2_CLOCK_OK_EINT2_SHIFT 1 /* IM_FLL2_CLOCK_OK_EINT2 */ | ||
| 4892 | #define ARIZONA_IM_FLL2_CLOCK_OK_EINT2_WIDTH 1 /* IM_FLL2_CLOCK_OK_EINT2 */ | ||
| 4893 | #define ARIZONA_IM_FLL1_CLOCK_OK_EINT2 0x0001 /* IM_FLL1_CLOCK_OK_EINT2 */ | ||
| 4894 | #define ARIZONA_IM_FLL1_CLOCK_OK_EINT2_MASK 0x0001 /* IM_FLL1_CLOCK_OK_EINT2 */ | ||
| 4895 | #define ARIZONA_IM_FLL1_CLOCK_OK_EINT2_SHIFT 0 /* IM_FLL1_CLOCK_OK_EINT2 */ | ||
| 4896 | #define ARIZONA_IM_FLL1_CLOCK_OK_EINT2_WIDTH 1 /* IM_FLL1_CLOCK_OK_EINT2 */ | ||
| 4897 | |||
| 4898 | /* | ||
| 4899 | * R3359 (0xD1F) - IRQ2 Control | ||
| 4900 | */ | ||
| 4901 | #define ARIZONA_IM_IRQ2 0x0001 /* IM_IRQ2 */ | ||
| 4902 | #define ARIZONA_IM_IRQ2_MASK 0x0001 /* IM_IRQ2 */ | ||
| 4903 | #define ARIZONA_IM_IRQ2_SHIFT 0 /* IM_IRQ2 */ | ||
| 4904 | #define ARIZONA_IM_IRQ2_WIDTH 1 /* IM_IRQ2 */ | ||
| 4905 | |||
| 4906 | /* | ||
| 4907 | * R3360 (0xD20) - Interrupt Raw Status 2 | ||
| 4908 | */ | ||
| 4909 | #define ARIZONA_DSP1_RAM_RDY_STS 0x0100 /* DSP1_RAM_RDY_STS */ | ||
| 4910 | #define ARIZONA_DSP1_RAM_RDY_STS_MASK 0x0100 /* DSP1_RAM_RDY_STS */ | ||
| 4911 | #define ARIZONA_DSP1_RAM_RDY_STS_SHIFT 8 /* DSP1_RAM_RDY_STS */ | ||
| 4912 | #define ARIZONA_DSP1_RAM_RDY_STS_WIDTH 1 /* DSP1_RAM_RDY_STS */ | ||
| 4913 | #define ARIZONA_DSP_IRQ2_STS 0x0002 /* DSP_IRQ2_STS */ | ||
| 4914 | #define ARIZONA_DSP_IRQ2_STS_MASK 0x0002 /* DSP_IRQ2_STS */ | ||
| 4915 | #define ARIZONA_DSP_IRQ2_STS_SHIFT 1 /* DSP_IRQ2_STS */ | ||
| 4916 | #define ARIZONA_DSP_IRQ2_STS_WIDTH 1 /* DSP_IRQ2_STS */ | ||
| 4917 | #define ARIZONA_DSP_IRQ1_STS 0x0001 /* DSP_IRQ1_STS */ | ||
| 4918 | #define ARIZONA_DSP_IRQ1_STS_MASK 0x0001 /* DSP_IRQ1_STS */ | ||
| 4919 | #define ARIZONA_DSP_IRQ1_STS_SHIFT 0 /* DSP_IRQ1_STS */ | ||
| 4920 | #define ARIZONA_DSP_IRQ1_STS_WIDTH 1 /* DSP_IRQ1_STS */ | ||
| 4921 | |||
| 4922 | /* | ||
| 4923 | * R3361 (0xD21) - Interrupt Raw Status 3 | ||
| 4924 | */ | ||
| 4925 | #define ARIZONA_SPK_SHUTDOWN_WARN_STS 0x8000 /* SPK_SHUTDOWN_WARN_STS */ | ||
| 4926 | #define ARIZONA_SPK_SHUTDOWN_WARN_STS_MASK 0x8000 /* SPK_SHUTDOWN_WARN_STS */ | ||
| 4927 | #define ARIZONA_SPK_SHUTDOWN_WARN_STS_SHIFT 15 /* SPK_SHUTDOWN_WARN_STS */ | ||
| 4928 | #define ARIZONA_SPK_SHUTDOWN_WARN_STS_WIDTH 1 /* SPK_SHUTDOWN_WARN_STS */ | ||
| 4929 | #define ARIZONA_SPK_SHUTDOWN_STS 0x4000 /* SPK_SHUTDOWN_STS */ | ||
| 4930 | #define ARIZONA_SPK_SHUTDOWN_STS_MASK 0x4000 /* SPK_SHUTDOWN_STS */ | ||
| 4931 | #define ARIZONA_SPK_SHUTDOWN_STS_SHIFT 14 /* SPK_SHUTDOWN_STS */ | ||
| 4932 | #define ARIZONA_SPK_SHUTDOWN_STS_WIDTH 1 /* SPK_SHUTDOWN_STS */ | ||
| 4933 | #define ARIZONA_HPDET_STS 0x2000 /* HPDET_STS */ | ||
| 4934 | #define ARIZONA_HPDET_STS_MASK 0x2000 /* HPDET_STS */ | ||
| 4935 | #define ARIZONA_HPDET_STS_SHIFT 13 /* HPDET_STS */ | ||
| 4936 | #define ARIZONA_HPDET_STS_WIDTH 1 /* HPDET_STS */ | ||
| 4937 | #define ARIZONA_MICDET_STS 0x1000 /* MICDET_STS */ | ||
| 4938 | #define ARIZONA_MICDET_STS_MASK 0x1000 /* MICDET_STS */ | ||
| 4939 | #define ARIZONA_MICDET_STS_SHIFT 12 /* MICDET_STS */ | ||
| 4940 | #define ARIZONA_MICDET_STS_WIDTH 1 /* MICDET_STS */ | ||
| 4941 | #define ARIZONA_WSEQ_DONE_STS 0x0800 /* WSEQ_DONE_STS */ | ||
| 4942 | #define ARIZONA_WSEQ_DONE_STS_MASK 0x0800 /* WSEQ_DONE_STS */ | ||
| 4943 | #define ARIZONA_WSEQ_DONE_STS_SHIFT 11 /* WSEQ_DONE_STS */ | ||
| 4944 | #define ARIZONA_WSEQ_DONE_STS_WIDTH 1 /* WSEQ_DONE_STS */ | ||
| 4945 | #define ARIZONA_DRC2_SIG_DET_STS 0x0400 /* DRC2_SIG_DET_STS */ | ||
| 4946 | #define ARIZONA_DRC2_SIG_DET_STS_MASK 0x0400 /* DRC2_SIG_DET_STS */ | ||
| 4947 | #define ARIZONA_DRC2_SIG_DET_STS_SHIFT 10 /* DRC2_SIG_DET_STS */ | ||
| 4948 | #define ARIZONA_DRC2_SIG_DET_STS_WIDTH 1 /* DRC2_SIG_DET_STS */ | ||
| 4949 | #define ARIZONA_DRC1_SIG_DET_STS 0x0200 /* DRC1_SIG_DET_STS */ | ||
| 4950 | #define ARIZONA_DRC1_SIG_DET_STS_MASK 0x0200 /* DRC1_SIG_DET_STS */ | ||
| 4951 | #define ARIZONA_DRC1_SIG_DET_STS_SHIFT 9 /* DRC1_SIG_DET_STS */ | ||
| 4952 | #define ARIZONA_DRC1_SIG_DET_STS_WIDTH 1 /* DRC1_SIG_DET_STS */ | ||
| 4953 | #define ARIZONA_ASRC2_LOCK_STS 0x0100 /* ASRC2_LOCK_STS */ | ||
| 4954 | #define ARIZONA_ASRC2_LOCK_STS_MASK 0x0100 /* ASRC2_LOCK_STS */ | ||
| 4955 | #define ARIZONA_ASRC2_LOCK_STS_SHIFT 8 /* ASRC2_LOCK_STS */ | ||
| 4956 | #define ARIZONA_ASRC2_LOCK_STS_WIDTH 1 /* ASRC2_LOCK_STS */ | ||
| 4957 | #define ARIZONA_ASRC1_LOCK_STS 0x0080 /* ASRC1_LOCK_STS */ | ||
| 4958 | #define ARIZONA_ASRC1_LOCK_STS_MASK 0x0080 /* ASRC1_LOCK_STS */ | ||
| 4959 | #define ARIZONA_ASRC1_LOCK_STS_SHIFT 7 /* ASRC1_LOCK_STS */ | ||
| 4960 | #define ARIZONA_ASRC1_LOCK_STS_WIDTH 1 /* ASRC1_LOCK_STS */ | ||
| 4961 | #define ARIZONA_UNDERCLOCKED_STS 0x0040 /* UNDERCLOCKED_STS */ | ||
| 4962 | #define ARIZONA_UNDERCLOCKED_STS_MASK 0x0040 /* UNDERCLOCKED_STS */ | ||
| 4963 | #define ARIZONA_UNDERCLOCKED_STS_SHIFT 6 /* UNDERCLOCKED_STS */ | ||
| 4964 | #define ARIZONA_UNDERCLOCKED_STS_WIDTH 1 /* UNDERCLOCKED_STS */ | ||
| 4965 | #define ARIZONA_OVERCLOCKED_STS 0x0020 /* OVERCLOCKED_STS */ | ||
| 4966 | #define ARIZONA_OVERCLOCKED_STS_MASK 0x0020 /* OVERCLOCKED_STS */ | ||
| 4967 | #define ARIZONA_OVERCLOCKED_STS_SHIFT 5 /* OVERCLOCKED_STS */ | ||
| 4968 | #define ARIZONA_OVERCLOCKED_STS_WIDTH 1 /* OVERCLOCKED_STS */ | ||
| 4969 | #define ARIZONA_FLL2_LOCK_STS 0x0008 /* FLL2_LOCK_STS */ | ||
| 4970 | #define ARIZONA_FLL2_LOCK_STS_MASK 0x0008 /* FLL2_LOCK_STS */ | ||
| 4971 | #define ARIZONA_FLL2_LOCK_STS_SHIFT 3 /* FLL2_LOCK_STS */ | ||
| 4972 | #define ARIZONA_FLL2_LOCK_STS_WIDTH 1 /* FLL2_LOCK_STS */ | ||
| 4973 | #define ARIZONA_FLL1_LOCK_STS 0x0004 /* FLL1_LOCK_STS */ | ||
| 4974 | #define ARIZONA_FLL1_LOCK_STS_MASK 0x0004 /* FLL1_LOCK_STS */ | ||
| 4975 | #define ARIZONA_FLL1_LOCK_STS_SHIFT 2 /* FLL1_LOCK_STS */ | ||
| 4976 | #define ARIZONA_FLL1_LOCK_STS_WIDTH 1 /* FLL1_LOCK_STS */ | ||
| 4977 | #define ARIZONA_CLKGEN_ERR_STS 0x0002 /* CLKGEN_ERR_STS */ | ||
| 4978 | #define ARIZONA_CLKGEN_ERR_STS_MASK 0x0002 /* CLKGEN_ERR_STS */ | ||
| 4979 | #define ARIZONA_CLKGEN_ERR_STS_SHIFT 1 /* CLKGEN_ERR_STS */ | ||
| 4980 | #define ARIZONA_CLKGEN_ERR_STS_WIDTH 1 /* CLKGEN_ERR_STS */ | ||
| 4981 | #define ARIZONA_CLKGEN_ERR_ASYNC_STS 0x0001 /* CLKGEN_ERR_ASYNC_STS */ | ||
| 4982 | #define ARIZONA_CLKGEN_ERR_ASYNC_STS_MASK 0x0001 /* CLKGEN_ERR_ASYNC_STS */ | ||
| 4983 | #define ARIZONA_CLKGEN_ERR_ASYNC_STS_SHIFT 0 /* CLKGEN_ERR_ASYNC_STS */ | ||
| 4984 | #define ARIZONA_CLKGEN_ERR_ASYNC_STS_WIDTH 1 /* CLKGEN_ERR_ASYNC_STS */ | ||
| 4985 | |||
| 4986 | /* | ||
| 4987 | * R3362 (0xD22) - Interrupt Raw Status 4 | ||
| 4988 | */ | ||
| 4989 | #define ARIZONA_ASRC_CFG_ERR_STS 0x8000 /* ASRC_CFG_ERR_STS */ | ||
| 4990 | #define ARIZONA_ASRC_CFG_ERR_STS_MASK 0x8000 /* ASRC_CFG_ERR_STS */ | ||
| 4991 | #define ARIZONA_ASRC_CFG_ERR_STS_SHIFT 15 /* ASRC_CFG_ERR_STS */ | ||
| 4992 | #define ARIZONA_ASRC_CFG_ERR_STS_WIDTH 1 /* ASRC_CFG_ERR_STS */ | ||
| 4993 | #define ARIZONA_AIF3_ERR_STS 0x4000 /* AIF3_ERR_STS */ | ||
| 4994 | #define ARIZONA_AIF3_ERR_STS_MASK 0x4000 /* AIF3_ERR_STS */ | ||
| 4995 | #define ARIZONA_AIF3_ERR_STS_SHIFT 14 /* AIF3_ERR_STS */ | ||
| 4996 | #define ARIZONA_AIF3_ERR_STS_WIDTH 1 /* AIF3_ERR_STS */ | ||
| 4997 | #define ARIZONA_AIF2_ERR_STS 0x2000 /* AIF2_ERR_STS */ | ||
| 4998 | #define ARIZONA_AIF2_ERR_STS_MASK 0x2000 /* AIF2_ERR_STS */ | ||
| 4999 | #define ARIZONA_AIF2_ERR_STS_SHIFT 13 /* AIF2_ERR_STS */ | ||
| 5000 | #define ARIZONA_AIF2_ERR_STS_WIDTH 1 /* AIF2_ERR_STS */ | ||
| 5001 | #define ARIZONA_AIF1_ERR_STS 0x1000 /* AIF1_ERR_STS */ | ||
| 5002 | #define ARIZONA_AIF1_ERR_STS_MASK 0x1000 /* AIF1_ERR_STS */ | ||
| 5003 | #define ARIZONA_AIF1_ERR_STS_SHIFT 12 /* AIF1_ERR_STS */ | ||
| 5004 | #define ARIZONA_AIF1_ERR_STS_WIDTH 1 /* AIF1_ERR_STS */ | ||
| 5005 | #define ARIZONA_CTRLIF_ERR_STS 0x0800 /* CTRLIF_ERR_STS */ | ||
| 5006 | #define ARIZONA_CTRLIF_ERR_STS_MASK 0x0800 /* CTRLIF_ERR_STS */ | ||
| 5007 | #define ARIZONA_CTRLIF_ERR_STS_SHIFT 11 /* CTRLIF_ERR_STS */ | ||
| 5008 | #define ARIZONA_CTRLIF_ERR_STS_WIDTH 1 /* CTRLIF_ERR_STS */ | ||
| 5009 | #define ARIZONA_MIXER_DROPPED_SAMPLE_STS 0x0400 /* MIXER_DROPPED_SAMPLE_STS */ | ||
| 5010 | #define ARIZONA_MIXER_DROPPED_SAMPLE_STS_MASK 0x0400 /* MIXER_DROPPED_SAMPLE_STS */ | ||
| 5011 | #define ARIZONA_MIXER_DROPPED_SAMPLE_STS_SHIFT 10 /* MIXER_DROPPED_SAMPLE_STS */ | ||
| 5012 | #define ARIZONA_MIXER_DROPPED_SAMPLE_STS_WIDTH 1 /* MIXER_DROPPED_SAMPLE_STS */ | ||
| 5013 | #define ARIZONA_ASYNC_CLK_ENA_LOW_STS 0x0200 /* ASYNC_CLK_ENA_LOW_STS */ | ||
| 5014 | #define ARIZONA_ASYNC_CLK_ENA_LOW_STS_MASK 0x0200 /* ASYNC_CLK_ENA_LOW_STS */ | ||
| 5015 | #define ARIZONA_ASYNC_CLK_ENA_LOW_STS_SHIFT 9 /* ASYNC_CLK_ENA_LOW_STS */ | ||
| 5016 | #define ARIZONA_ASYNC_CLK_ENA_LOW_STS_WIDTH 1 /* ASYNC_CLK_ENA_LOW_STS */ | ||
| 5017 | #define ARIZONA_SYSCLK_ENA_LOW_STS 0x0100 /* SYSCLK_ENA_LOW_STS */ | ||
| 5018 | #define ARIZONA_SYSCLK_ENA_LOW_STS_MASK 0x0100 /* SYSCLK_ENA_LOW_STS */ | ||
| 5019 | #define ARIZONA_SYSCLK_ENA_LOW_STS_SHIFT 8 /* SYSCLK_ENA_LOW_STS */ | ||
| 5020 | #define ARIZONA_SYSCLK_ENA_LOW_STS_WIDTH 1 /* SYSCLK_ENA_LOW_STS */ | ||
| 5021 | #define ARIZONA_ISRC1_CFG_ERR_STS 0x0080 /* ISRC1_CFG_ERR_STS */ | ||
| 5022 | #define ARIZONA_ISRC1_CFG_ERR_STS_MASK 0x0080 /* ISRC1_CFG_ERR_STS */ | ||
| 5023 | #define ARIZONA_ISRC1_CFG_ERR_STS_SHIFT 7 /* ISRC1_CFG_ERR_STS */ | ||
| 5024 | #define ARIZONA_ISRC1_CFG_ERR_STS_WIDTH 1 /* ISRC1_CFG_ERR_STS */ | ||
| 5025 | #define ARIZONA_ISRC2_CFG_ERR_STS 0x0040 /* ISRC2_CFG_ERR_STS */ | ||
| 5026 | #define ARIZONA_ISRC2_CFG_ERR_STS_MASK 0x0040 /* ISRC2_CFG_ERR_STS */ | ||
| 5027 | #define ARIZONA_ISRC2_CFG_ERR_STS_SHIFT 6 /* ISRC2_CFG_ERR_STS */ | ||
| 5028 | #define ARIZONA_ISRC2_CFG_ERR_STS_WIDTH 1 /* ISRC2_CFG_ERR_STS */ | ||
| 5029 | |||
| 5030 | /* | ||
| 5031 | * R3363 (0xD23) - Interrupt Raw Status 5 | ||
| 5032 | */ | ||
| 5033 | #define ARIZONA_BOOT_DONE_STS 0x0100 /* BOOT_DONE_STS */ | ||
| 5034 | #define ARIZONA_BOOT_DONE_STS_MASK 0x0100 /* BOOT_DONE_STS */ | ||
| 5035 | #define ARIZONA_BOOT_DONE_STS_SHIFT 8 /* BOOT_DONE_STS */ | ||
| 5036 | #define ARIZONA_BOOT_DONE_STS_WIDTH 1 /* BOOT_DONE_STS */ | ||
| 5037 | #define ARIZONA_DCS_DAC_DONE_STS 0x0080 /* DCS_DAC_DONE_STS */ | ||
| 5038 | #define ARIZONA_DCS_DAC_DONE_STS_MASK 0x0080 /* DCS_DAC_DONE_STS */ | ||
| 5039 | #define ARIZONA_DCS_DAC_DONE_STS_SHIFT 7 /* DCS_DAC_DONE_STS */ | ||
| 5040 | #define ARIZONA_DCS_DAC_DONE_STS_WIDTH 1 /* DCS_DAC_DONE_STS */ | ||
| 5041 | #define ARIZONA_DCS_HP_DONE_STS 0x0040 /* DCS_HP_DONE_STS */ | ||
| 5042 | #define ARIZONA_DCS_HP_DONE_STS_MASK 0x0040 /* DCS_HP_DONE_STS */ | ||
| 5043 | #define ARIZONA_DCS_HP_DONE_STS_SHIFT 6 /* DCS_HP_DONE_STS */ | ||
| 5044 | #define ARIZONA_DCS_HP_DONE_STS_WIDTH 1 /* DCS_HP_DONE_STS */ | ||
| 5045 | #define ARIZONA_FLL2_CLOCK_OK_STS 0x0002 /* FLL2_CLOCK_OK_STS */ | ||
| 5046 | #define ARIZONA_FLL2_CLOCK_OK_STS_MASK 0x0002 /* FLL2_CLOCK_OK_STS */ | ||
| 5047 | #define ARIZONA_FLL2_CLOCK_OK_STS_SHIFT 1 /* FLL2_CLOCK_OK_STS */ | ||
| 5048 | #define ARIZONA_FLL2_CLOCK_OK_STS_WIDTH 1 /* FLL2_CLOCK_OK_STS */ | ||
| 5049 | #define ARIZONA_FLL1_CLOCK_OK_STS 0x0001 /* FLL1_CLOCK_OK_STS */ | ||
| 5050 | #define ARIZONA_FLL1_CLOCK_OK_STS_MASK 0x0001 /* FLL1_CLOCK_OK_STS */ | ||
| 5051 | #define ARIZONA_FLL1_CLOCK_OK_STS_SHIFT 0 /* FLL1_CLOCK_OK_STS */ | ||
| 5052 | #define ARIZONA_FLL1_CLOCK_OK_STS_WIDTH 1 /* FLL1_CLOCK_OK_STS */ | ||
| 5053 | |||
| 5054 | /* | ||
| 5055 | * R3364 (0xD24) - Interrupt Raw Status 6 | ||
| 5056 | */ | ||
| 5057 | #define ARIZONA_PWM_OVERCLOCKED_STS 0x2000 /* PWM_OVERCLOCKED_STS */ | ||
| 5058 | #define ARIZONA_PWM_OVERCLOCKED_STS_MASK 0x2000 /* PWM_OVERCLOCKED_STS */ | ||
| 5059 | #define ARIZONA_PWM_OVERCLOCKED_STS_SHIFT 13 /* PWM_OVERCLOCKED_STS */ | ||
| 5060 | #define ARIZONA_PWM_OVERCLOCKED_STS_WIDTH 1 /* PWM_OVERCLOCKED_STS */ | ||
| 5061 | #define ARIZONA_FX_CORE_OVERCLOCKED_STS 0x1000 /* FX_CORE_OVERCLOCKED_STS */ | ||
| 5062 | #define ARIZONA_FX_CORE_OVERCLOCKED_STS_MASK 0x1000 /* FX_CORE_OVERCLOCKED_STS */ | ||
| 5063 | #define ARIZONA_FX_CORE_OVERCLOCKED_STS_SHIFT 12 /* FX_CORE_OVERCLOCKED_STS */ | ||
| 5064 | #define ARIZONA_FX_CORE_OVERCLOCKED_STS_WIDTH 1 /* FX_CORE_OVERCLOCKED_STS */ | ||
| 5065 | #define ARIZONA_DAC_SYS_OVERCLOCKED_STS 0x0400 /* DAC_SYS_OVERCLOCKED_STS */ | ||
| 5066 | #define ARIZONA_DAC_SYS_OVERCLOCKED_STS_MASK 0x0400 /* DAC_SYS_OVERCLOCKED_STS */ | ||
| 5067 | #define ARIZONA_DAC_SYS_OVERCLOCKED_STS_SHIFT 10 /* DAC_SYS_OVERCLOCKED_STS */ | ||
| 5068 | #define ARIZONA_DAC_SYS_OVERCLOCKED_STS_WIDTH 1 /* DAC_SYS_OVERCLOCKED_STS */ | ||
| 5069 | #define ARIZONA_DAC_WARP_OVERCLOCKED_STS 0x0200 /* DAC_WARP_OVERCLOCKED_STS */ | ||
| 5070 | #define ARIZONA_DAC_WARP_OVERCLOCKED_STS_MASK 0x0200 /* DAC_WARP_OVERCLOCKED_STS */ | ||
| 5071 | #define ARIZONA_DAC_WARP_OVERCLOCKED_STS_SHIFT 9 /* DAC_WARP_OVERCLOCKED_STS */ | ||
| 5072 | #define ARIZONA_DAC_WARP_OVERCLOCKED_STS_WIDTH 1 /* DAC_WARP_OVERCLOCKED_STS */ | ||
| 5073 | #define ARIZONA_ADC_OVERCLOCKED_STS 0x0100 /* ADC_OVERCLOCKED_STS */ | ||
| 5074 | #define ARIZONA_ADC_OVERCLOCKED_STS_MASK 0x0100 /* ADC_OVERCLOCKED_STS */ | ||
| 5075 | #define ARIZONA_ADC_OVERCLOCKED_STS_SHIFT 8 /* ADC_OVERCLOCKED_STS */ | ||
| 5076 | #define ARIZONA_ADC_OVERCLOCKED_STS_WIDTH 1 /* ADC_OVERCLOCKED_STS */ | ||
| 5077 | #define ARIZONA_MIXER_OVERCLOCKED_STS 0x0080 /* MIXER_OVERCLOCKED_STS */ | ||
| 5078 | #define ARIZONA_MIXER_OVERCLOCKED_STS_MASK 0x0080 /* MIXER_OVERCLOCKED_STS */ | ||
| 5079 | #define ARIZONA_MIXER_OVERCLOCKED_STS_SHIFT 7 /* MIXER_OVERCLOCKED_STS */ | ||
| 5080 | #define ARIZONA_MIXER_OVERCLOCKED_STS_WIDTH 1 /* MIXER_OVERCLOCKED_STS */ | ||
| 5081 | #define ARIZONA_AIF3_ASYNC_OVERCLOCKED_STS 0x0040 /* AIF3_ASYNC_OVERCLOCKED_STS */ | ||
| 5082 | #define ARIZONA_AIF3_ASYNC_OVERCLOCKED_STS_MASK 0x0040 /* AIF3_ASYNC_OVERCLOCKED_STS */ | ||
| 5083 | #define ARIZONA_AIF3_ASYNC_OVERCLOCKED_STS_SHIFT 6 /* AIF3_ASYNC_OVERCLOCKED_STS */ | ||
| 5084 | #define ARIZONA_AIF3_ASYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF3_ASYNC_OVERCLOCKED_STS */ | ||
| 5085 | #define ARIZONA_AIF2_ASYNC_OVERCLOCKED_STS 0x0020 /* AIF2_ASYNC_OVERCLOCKED_STS */ | ||
| 5086 | #define ARIZONA_AIF2_ASYNC_OVERCLOCKED_STS_MASK 0x0020 /* AIF2_ASYNC_OVERCLOCKED_STS */ | ||
| 5087 | #define ARIZONA_AIF2_ASYNC_OVERCLOCKED_STS_SHIFT 5 /* AIF2_ASYNC_OVERCLOCKED_STS */ | ||
| 5088 | #define ARIZONA_AIF2_ASYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF2_ASYNC_OVERCLOCKED_STS */ | ||
| 5089 | #define ARIZONA_AIF1_ASYNC_OVERCLOCKED_STS 0x0010 /* AIF1_ASYNC_OVERCLOCKED_STS */ | ||
| 5090 | #define ARIZONA_AIF1_ASYNC_OVERCLOCKED_STS_MASK 0x0010 /* AIF1_ASYNC_OVERCLOCKED_STS */ | ||
| 5091 | #define ARIZONA_AIF1_ASYNC_OVERCLOCKED_STS_SHIFT 4 /* AIF1_ASYNC_OVERCLOCKED_STS */ | ||
| 5092 | #define ARIZONA_AIF1_ASYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF1_ASYNC_OVERCLOCKED_STS */ | ||
| 5093 | #define ARIZONA_AIF3_SYNC_OVERCLOCKED_STS 0x0008 /* AIF3_SYNC_OVERCLOCKED_STS */ | ||
| 5094 | #define ARIZONA_AIF3_SYNC_OVERCLOCKED_STS_MASK 0x0008 /* AIF3_SYNC_OVERCLOCKED_STS */ | ||
| 5095 | #define ARIZONA_AIF3_SYNC_OVERCLOCKED_STS_SHIFT 3 /* AIF3_SYNC_OVERCLOCKED_STS */ | ||
| 5096 | #define ARIZONA_AIF3_SYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF3_SYNC_OVERCLOCKED_STS */ | ||
| 5097 | #define ARIZONA_AIF2_SYNC_OVERCLOCKED_STS 0x0004 /* AIF2_SYNC_OVERCLOCKED_STS */ | ||
| 5098 | #define ARIZONA_AIF2_SYNC_OVERCLOCKED_STS_MASK 0x0004 /* AIF2_SYNC_OVERCLOCKED_STS */ | ||
| 5099 | #define ARIZONA_AIF2_SYNC_OVERCLOCKED_STS_SHIFT 2 /* AIF2_SYNC_OVERCLOCKED_STS */ | ||
| 5100 | #define ARIZONA_AIF2_SYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF2_SYNC_OVERCLOCKED_STS */ | ||
| 5101 | #define ARIZONA_AIF1_SYNC_OVERCLOCKED_STS 0x0002 /* AIF1_SYNC_OVERCLOCKED_STS */ | ||
| 5102 | #define ARIZONA_AIF1_SYNC_OVERCLOCKED_STS_MASK 0x0002 /* AIF1_SYNC_OVERCLOCKED_STS */ | ||
| 5103 | #define ARIZONA_AIF1_SYNC_OVERCLOCKED_STS_SHIFT 1 /* AIF1_SYNC_OVERCLOCKED_STS */ | ||
| 5104 | #define ARIZONA_AIF1_SYNC_OVERCLOCKED_STS_WIDTH 1 /* AIF1_SYNC_OVERCLOCKED_STS */ | ||
| 5105 | #define ARIZONA_PAD_CTRL_OVERCLOCKED_STS 0x0001 /* PAD_CTRL_OVERCLOCKED_STS */ | ||
| 5106 | #define ARIZONA_PAD_CTRL_OVERCLOCKED_STS_MASK 0x0001 /* PAD_CTRL_OVERCLOCKED_STS */ | ||
| 5107 | #define ARIZONA_PAD_CTRL_OVERCLOCKED_STS_SHIFT 0 /* PAD_CTRL_OVERCLOCKED_STS */ | ||
| 5108 | #define ARIZONA_PAD_CTRL_OVERCLOCKED_STS_WIDTH 1 /* PAD_CTRL_OVERCLOCKED_STS */ | ||
| 5109 | |||
| 5110 | /* | ||
| 5111 | * R3365 (0xD25) - Interrupt Raw Status 7 | ||
| 5112 | */ | ||
| 5113 | #define ARIZONA_SLIMBUS_SUBSYS_OVERCLOCKED_STS 0x8000 /* SLIMBUS_SUBSYS_OVERCLOCKED_STS */ | ||
| 5114 | #define ARIZONA_SLIMBUS_SUBSYS_OVERCLOCKED_STS_MASK 0x8000 /* SLIMBUS_SUBSYS_OVERCLOCKED_STS */ | ||
| 5115 | #define ARIZONA_SLIMBUS_SUBSYS_OVERCLOCKED_STS_SHIFT 15 /* SLIMBUS_SUBSYS_OVERCLOCKED_STS */ | ||
| 5116 | #define ARIZONA_SLIMBUS_SUBSYS_OVERCLOCKED_STS_WIDTH 1 /* SLIMBUS_SUBSYS_OVERCLOCKED_STS */ | ||
| 5117 | #define ARIZONA_SLIMBUS_ASYNC_OVERCLOCKED_STS 0x4000 /* SLIMBUS_ASYNC_OVERCLOCKED_STS */ | ||
| 5118 | #define ARIZONA_SLIMBUS_ASYNC_OVERCLOCKED_STS_MASK 0x4000 /* SLIMBUS_ASYNC_OVERCLOCKED_STS */ | ||
| 5119 | #define ARIZONA_SLIMBUS_ASYNC_OVERCLOCKED_STS_SHIFT 14 /* SLIMBUS_ASYNC_OVERCLOCKED_STS */ | ||
| 5120 | #define ARIZONA_SLIMBUS_ASYNC_OVERCLOCKED_STS_WIDTH 1 /* SLIMBUS_ASYNC_OVERCLOCKED_STS */ | ||
| 5121 | #define ARIZONA_SLIMBUS_SYNC_OVERCLOCKED_STS 0x2000 /* SLIMBUS_SYNC_OVERCLOCKED_STS */ | ||
| 5122 | #define ARIZONA_SLIMBUS_SYNC_OVERCLOCKED_STS_MASK 0x2000 /* SLIMBUS_SYNC_OVERCLOCKED_STS */ | ||
| 5123 | #define ARIZONA_SLIMBUS_SYNC_OVERCLOCKED_STS_SHIFT 13 /* SLIMBUS_SYNC_OVERCLOCKED_STS */ | ||
| 5124 | #define ARIZONA_SLIMBUS_SYNC_OVERCLOCKED_STS_WIDTH 1 /* SLIMBUS_SYNC_OVERCLOCKED_STS */ | ||
| 5125 | #define ARIZONA_ASRC_ASYNC_SYS_OVERCLOCKED_STS 0x1000 /* ASRC_ASYNC_SYS_OVERCLOCKED_STS */ | ||
| 5126 | #define ARIZONA_ASRC_ASYNC_SYS_OVERCLOCKED_STS_MASK 0x1000 /* ASRC_ASYNC_SYS_OVERCLOCKED_STS */ | ||
| 5127 | #define ARIZONA_ASRC_ASYNC_SYS_OVERCLOCKED_STS_SHIFT 12 /* ASRC_ASYNC_SYS_OVERCLOCKED_STS */ | ||
| 5128 | #define ARIZONA_ASRC_ASYNC_SYS_OVERCLOCKED_STS_WIDTH 1 /* ASRC_ASYNC_SYS_OVERCLOCKED_STS */ | ||
| 5129 | #define ARIZONA_ASRC_ASYNC_WARP_OVERCLOCKED_STS 0x0800 /* ASRC_ASYNC_WARP_OVERCLOCKED_STS */ | ||
| 5130 | #define ARIZONA_ASRC_ASYNC_WARP_OVERCLOCKED_STS_MASK 0x0800 /* ASRC_ASYNC_WARP_OVERCLOCKED_STS */ | ||
| 5131 | #define ARIZONA_ASRC_ASYNC_WARP_OVERCLOCKED_STS_SHIFT 11 /* ASRC_ASYNC_WARP_OVERCLOCKED_STS */ | ||
| 5132 | #define ARIZONA_ASRC_ASYNC_WARP_OVERCLOCKED_STS_WIDTH 1 /* ASRC_ASYNC_WARP_OVERCLOCKED_STS */ | ||
| 5133 | #define ARIZONA_ASRC_SYNC_SYS_OVERCLOCKED_STS 0x0400 /* ASRC_SYNC_SYS_OVERCLOCKED_STS */ | ||
| 5134 | #define ARIZONA_ASRC_SYNC_SYS_OVERCLOCKED_STS_MASK 0x0400 /* ASRC_SYNC_SYS_OVERCLOCKED_STS */ | ||
| 5135 | #define ARIZONA_ASRC_SYNC_SYS_OVERCLOCKED_STS_SHIFT 10 /* ASRC_SYNC_SYS_OVERCLOCKED_STS */ | ||
| 5136 | #define ARIZONA_ASRC_SYNC_SYS_OVERCLOCKED_STS_WIDTH 1 /* ASRC_SYNC_SYS_OVERCLOCKED_STS */ | ||
| 5137 | #define ARIZONA_ASRC_SYNC_WARP_OVERCLOCKED_STS 0x0200 /* ASRC_SYNC_WARP_OVERCLOCKED_STS */ | ||
| 5138 | #define ARIZONA_ASRC_SYNC_WARP_OVERCLOCKED_STS_MASK 0x0200 /* ASRC_SYNC_WARP_OVERCLOCKED_STS */ | ||
| 5139 | #define ARIZONA_ASRC_SYNC_WARP_OVERCLOCKED_STS_SHIFT 9 /* ASRC_SYNC_WARP_OVERCLOCKED_STS */ | ||
| 5140 | #define ARIZONA_ASRC_SYNC_WARP_OVERCLOCKED_STS_WIDTH 1 /* ASRC_SYNC_WARP_OVERCLOCKED_STS */ | ||
| 5141 | #define ARIZONA_ADSP2_1_OVERCLOCKED_STS 0x0008 /* ADSP2_1_OVERCLOCKED_STS */ | ||
| 5142 | #define ARIZONA_ADSP2_1_OVERCLOCKED_STS_MASK 0x0008 /* ADSP2_1_OVERCLOCKED_STS */ | ||
| 5143 | #define ARIZONA_ADSP2_1_OVERCLOCKED_STS_SHIFT 3 /* ADSP2_1_OVERCLOCKED_STS */ | ||
| 5144 | #define ARIZONA_ADSP2_1_OVERCLOCKED_STS_WIDTH 1 /* ADSP2_1_OVERCLOCKED_STS */ | ||
| 5145 | #define ARIZONA_ISRC2_OVERCLOCKED_STS 0x0002 /* ISRC2_OVERCLOCKED_STS */ | ||
| 5146 | #define ARIZONA_ISRC2_OVERCLOCKED_STS_MASK 0x0002 /* ISRC2_OVERCLOCKED_STS */ | ||
| 5147 | #define ARIZONA_ISRC2_OVERCLOCKED_STS_SHIFT 1 /* ISRC2_OVERCLOCKED_STS */ | ||
| 5148 | #define ARIZONA_ISRC2_OVERCLOCKED_STS_WIDTH 1 /* ISRC2_OVERCLOCKED_STS */ | ||
| 5149 | #define ARIZONA_ISRC1_OVERCLOCKED_STS 0x0001 /* ISRC1_OVERCLOCKED_STS */ | ||
| 5150 | #define ARIZONA_ISRC1_OVERCLOCKED_STS_MASK 0x0001 /* ISRC1_OVERCLOCKED_STS */ | ||
| 5151 | #define ARIZONA_ISRC1_OVERCLOCKED_STS_SHIFT 0 /* ISRC1_OVERCLOCKED_STS */ | ||
| 5152 | #define ARIZONA_ISRC1_OVERCLOCKED_STS_WIDTH 1 /* ISRC1_OVERCLOCKED_STS */ | ||
| 5153 | |||
| 5154 | /* | ||
| 5155 | * R3366 (0xD26) - Interrupt Raw Status 8 | ||
| 5156 | */ | ||
| 5157 | #define ARIZONA_AIF3_UNDERCLOCKED_STS 0x0400 /* AIF3_UNDERCLOCKED_STS */ | ||
| 5158 | #define ARIZONA_AIF3_UNDERCLOCKED_STS_MASK 0x0400 /* AIF3_UNDERCLOCKED_STS */ | ||
| 5159 | #define ARIZONA_AIF3_UNDERCLOCKED_STS_SHIFT 10 /* AIF3_UNDERCLOCKED_STS */ | ||
| 5160 | #define ARIZONA_AIF3_UNDERCLOCKED_STS_WIDTH 1 /* AIF3_UNDERCLOCKED_STS */ | ||
| 5161 | #define ARIZONA_AIF2_UNDERCLOCKED_STS 0x0200 /* AIF2_UNDERCLOCKED_STS */ | ||
| 5162 | #define ARIZONA_AIF2_UNDERCLOCKED_STS_MASK 0x0200 /* AIF2_UNDERCLOCKED_STS */ | ||
| 5163 | #define ARIZONA_AIF2_UNDERCLOCKED_STS_SHIFT 9 /* AIF2_UNDERCLOCKED_STS */ | ||
| 5164 | #define ARIZONA_AIF2_UNDERCLOCKED_STS_WIDTH 1 /* AIF2_UNDERCLOCKED_STS */ | ||
| 5165 | #define ARIZONA_AIF1_UNDERCLOCKED_STS 0x0100 /* AIF1_UNDERCLOCKED_STS */ | ||
| 5166 | #define ARIZONA_AIF1_UNDERCLOCKED_STS_MASK 0x0100 /* AIF1_UNDERCLOCKED_STS */ | ||
| 5167 | #define ARIZONA_AIF1_UNDERCLOCKED_STS_SHIFT 8 /* AIF1_UNDERCLOCKED_STS */ | ||
| 5168 | #define ARIZONA_AIF1_UNDERCLOCKED_STS_WIDTH 1 /* AIF1_UNDERCLOCKED_STS */ | ||
| 5169 | #define ARIZONA_ISRC2_UNDERCLOCKED_STS 0x0040 /* ISRC2_UNDERCLOCKED_STS */ | ||
| 5170 | #define ARIZONA_ISRC2_UNDERCLOCKED_STS_MASK 0x0040 /* ISRC2_UNDERCLOCKED_STS */ | ||
| 5171 | #define ARIZONA_ISRC2_UNDERCLOCKED_STS_SHIFT 6 /* ISRC2_UNDERCLOCKED_STS */ | ||
| 5172 | #define ARIZONA_ISRC2_UNDERCLOCKED_STS_WIDTH 1 /* ISRC2_UNDERCLOCKED_STS */ | ||
| 5173 | #define ARIZONA_ISRC1_UNDERCLOCKED_STS 0x0020 /* ISRC1_UNDERCLOCKED_STS */ | ||
| 5174 | #define ARIZONA_ISRC1_UNDERCLOCKED_STS_MASK 0x0020 /* ISRC1_UNDERCLOCKED_STS */ | ||
| 5175 | #define ARIZONA_ISRC1_UNDERCLOCKED_STS_SHIFT 5 /* ISRC1_UNDERCLOCKED_STS */ | ||
| 5176 | #define ARIZONA_ISRC1_UNDERCLOCKED_STS_WIDTH 1 /* ISRC1_UNDERCLOCKED_STS */ | ||
| 5177 | #define ARIZONA_FX_UNDERCLOCKED_STS 0x0010 /* FX_UNDERCLOCKED_STS */ | ||
| 5178 | #define ARIZONA_FX_UNDERCLOCKED_STS_MASK 0x0010 /* FX_UNDERCLOCKED_STS */ | ||
| 5179 | #define ARIZONA_FX_UNDERCLOCKED_STS_SHIFT 4 /* FX_UNDERCLOCKED_STS */ | ||
| 5180 | #define ARIZONA_FX_UNDERCLOCKED_STS_WIDTH 1 /* FX_UNDERCLOCKED_STS */ | ||
| 5181 | #define ARIZONA_ASRC_UNDERCLOCKED_STS 0x0008 /* ASRC_UNDERCLOCKED_STS */ | ||
| 5182 | #define ARIZONA_ASRC_UNDERCLOCKED_STS_MASK 0x0008 /* ASRC_UNDERCLOCKED_STS */ | ||
| 5183 | #define ARIZONA_ASRC_UNDERCLOCKED_STS_SHIFT 3 /* ASRC_UNDERCLOCKED_STS */ | ||
| 5184 | #define ARIZONA_ASRC_UNDERCLOCKED_STS_WIDTH 1 /* ASRC_UNDERCLOCKED_STS */ | ||
| 5185 | #define ARIZONA_DAC_UNDERCLOCKED_STS 0x0004 /* DAC_UNDERCLOCKED_STS */ | ||
| 5186 | #define ARIZONA_DAC_UNDERCLOCKED_STS_MASK 0x0004 /* DAC_UNDERCLOCKED_STS */ | ||
| 5187 | #define ARIZONA_DAC_UNDERCLOCKED_STS_SHIFT 2 /* DAC_UNDERCLOCKED_STS */ | ||
| 5188 | #define ARIZONA_DAC_UNDERCLOCKED_STS_WIDTH 1 /* DAC_UNDERCLOCKED_STS */ | ||
| 5189 | #define ARIZONA_ADC_UNDERCLOCKED_STS 0x0002 /* ADC_UNDERCLOCKED_STS */ | ||
| 5190 | #define ARIZONA_ADC_UNDERCLOCKED_STS_MASK 0x0002 /* ADC_UNDERCLOCKED_STS */ | ||
| 5191 | #define ARIZONA_ADC_UNDERCLOCKED_STS_SHIFT 1 /* ADC_UNDERCLOCKED_STS */ | ||
| 5192 | #define ARIZONA_ADC_UNDERCLOCKED_STS_WIDTH 1 /* ADC_UNDERCLOCKED_STS */ | ||
| 5193 | #define ARIZONA_MIXER_UNDERCLOCKED_STS 0x0001 /* MIXER_UNDERCLOCKED_STS */ | ||
| 5194 | #define ARIZONA_MIXER_UNDERCLOCKED_STS_MASK 0x0001 /* MIXER_UNDERCLOCKED_STS */ | ||
| 5195 | #define ARIZONA_MIXER_UNDERCLOCKED_STS_SHIFT 0 /* MIXER_UNDERCLOCKED_STS */ | ||
| 5196 | #define ARIZONA_MIXER_UNDERCLOCKED_STS_WIDTH 1 /* MIXER_UNDERCLOCKED_STS */ | ||
| 5197 | |||
| 5198 | /* | ||
| 5199 | * R3392 (0xD40) - IRQ Pin Status | ||
| 5200 | */ | ||
| 5201 | #define ARIZONA_IRQ2_STS 0x0002 /* IRQ2_STS */ | ||
| 5202 | #define ARIZONA_IRQ2_STS_MASK 0x0002 /* IRQ2_STS */ | ||
| 5203 | #define ARIZONA_IRQ2_STS_SHIFT 1 /* IRQ2_STS */ | ||
| 5204 | #define ARIZONA_IRQ2_STS_WIDTH 1 /* IRQ2_STS */ | ||
| 5205 | #define ARIZONA_IRQ1_STS 0x0001 /* IRQ1_STS */ | ||
| 5206 | #define ARIZONA_IRQ1_STS_MASK 0x0001 /* IRQ1_STS */ | ||
| 5207 | #define ARIZONA_IRQ1_STS_SHIFT 0 /* IRQ1_STS */ | ||
| 5208 | #define ARIZONA_IRQ1_STS_WIDTH 1 /* IRQ1_STS */ | ||
| 5209 | |||
| 5210 | /* | ||
| 5211 | * R3393 (0xD41) - ADSP2 IRQ0 | ||
| 5212 | */ | ||
| 5213 | #define ARIZONA_DSP_IRQ2 0x0002 /* DSP_IRQ2 */ | ||
| 5214 | #define ARIZONA_DSP_IRQ2_MASK 0x0002 /* DSP_IRQ2 */ | ||
| 5215 | #define ARIZONA_DSP_IRQ2_SHIFT 1 /* DSP_IRQ2 */ | ||
| 5216 | #define ARIZONA_DSP_IRQ2_WIDTH 1 /* DSP_IRQ2 */ | ||
| 5217 | #define ARIZONA_DSP_IRQ1 0x0001 /* DSP_IRQ1 */ | ||
| 5218 | #define ARIZONA_DSP_IRQ1_MASK 0x0001 /* DSP_IRQ1 */ | ||
| 5219 | #define ARIZONA_DSP_IRQ1_SHIFT 0 /* DSP_IRQ1 */ | ||
| 5220 | #define ARIZONA_DSP_IRQ1_WIDTH 1 /* DSP_IRQ1 */ | ||
| 5221 | |||
| 5222 | /* | ||
| 5223 | * R3408 (0xD50) - AOD wkup and trig | ||
| 5224 | */ | ||
| 5225 | #define ARIZONA_GP5_FALL_TRIG_STS 0x0020 /* GP5_FALL_TRIG_STS */ | ||
| 5226 | #define ARIZONA_GP5_FALL_TRIG_STS_MASK 0x0020 /* GP5_FALL_TRIG_STS */ | ||
| 5227 | #define ARIZONA_GP5_FALL_TRIG_STS_SHIFT 5 /* GP5_FALL_TRIG_STS */ | ||
| 5228 | #define ARIZONA_GP5_FALL_TRIG_STS_WIDTH 1 /* GP5_FALL_TRIG_STS */ | ||
| 5229 | #define ARIZONA_GP5_RISE_TRIG_STS 0x0010 /* GP5_RISE_TRIG_STS */ | ||
| 5230 | #define ARIZONA_GP5_RISE_TRIG_STS_MASK 0x0010 /* GP5_RISE_TRIG_STS */ | ||
| 5231 | #define ARIZONA_GP5_RISE_TRIG_STS_SHIFT 4 /* GP5_RISE_TRIG_STS */ | ||
| 5232 | #define ARIZONA_GP5_RISE_TRIG_STS_WIDTH 1 /* GP5_RISE_TRIG_STS */ | ||
| 5233 | #define ARIZONA_JD1_FALL_TRIG_STS 0x0008 /* JD1_FALL_TRIG_STS */ | ||
| 5234 | #define ARIZONA_JD1_FALL_TRIG_STS_MASK 0x0008 /* JD1_FALL_TRIG_STS */ | ||
| 5235 | #define ARIZONA_JD1_FALL_TRIG_STS_SHIFT 3 /* JD1_FALL_TRIG_STS */ | ||
| 5236 | #define ARIZONA_JD1_FALL_TRIG_STS_WIDTH 1 /* JD1_FALL_TRIG_STS */ | ||
| 5237 | #define ARIZONA_JD1_RISE_TRIG_STS 0x0004 /* JD1_RISE_TRIG_STS */ | ||
| 5238 | #define ARIZONA_JD1_RISE_TRIG_STS_MASK 0x0004 /* JD1_RISE_TRIG_STS */ | ||
| 5239 | #define ARIZONA_JD1_RISE_TRIG_STS_SHIFT 2 /* JD1_RISE_TRIG_STS */ | ||
| 5240 | #define ARIZONA_JD1_RISE_TRIG_STS_WIDTH 1 /* JD1_RISE_TRIG_STS */ | ||
| 5241 | #define ARIZONA_JD2_FALL_TRIG_STS 0x0002 /* JD2_FALL_TRIG_STS */ | ||
| 5242 | #define ARIZONA_JD2_FALL_TRIG_STS_MASK 0x0002 /* JD2_FALL_TRIG_STS */ | ||
| 5243 | #define ARIZONA_JD2_FALL_TRIG_STS_SHIFT 1 /* JD2_FALL_TRIG_STS */ | ||
| 5244 | #define ARIZONA_JD2_FALL_TRIG_STS_WIDTH 1 /* JD2_FALL_TRIG_STS */ | ||
| 5245 | #define ARIZONA_JD2_RISE_TRIG_STS 0x0001 /* JD2_RISE_TRIG_STS */ | ||
| 5246 | #define ARIZONA_JD2_RISE_TRIG_STS_MASK 0x0001 /* JD2_RISE_TRIG_STS */ | ||
| 5247 | #define ARIZONA_JD2_RISE_TRIG_STS_SHIFT 0 /* JD2_RISE_TRIG_STS */ | ||
| 5248 | #define ARIZONA_JD2_RISE_TRIG_STS_WIDTH 1 /* JD2_RISE_TRIG_STS */ | ||
| 5249 | |||
| 5250 | /* | ||
| 5251 | * R3409 (0xD51) - AOD IRQ1 | ||
| 5252 | */ | ||
| 5253 | #define ARIZONA_GP5_FALL_EINT1 0x0020 /* GP5_FALL_EINT1 */ | ||
| 5254 | #define ARIZONA_GP5_FALL_EINT1_MASK 0x0020 /* GP5_FALL_EINT1 */ | ||
| 5255 | #define ARIZONA_GP5_FALL_EINT1_SHIFT 5 /* GP5_FALL_EINT1 */ | ||
| 5256 | #define ARIZONA_GP5_FALL_EINT1_WIDTH 1 /* GP5_FALL_EINT1 */ | ||
| 5257 | #define ARIZONA_GP5_RISE_EINT1 0x0010 /* GP5_RISE_EINT1 */ | ||
| 5258 | #define ARIZONA_GP5_RISE_EINT1_MASK 0x0010 /* GP5_RISE_EINT1 */ | ||
| 5259 | #define ARIZONA_GP5_RISE_EINT1_SHIFT 4 /* GP5_RISE_EINT1 */ | ||
| 5260 | #define ARIZONA_GP5_RISE_EINT1_WIDTH 1 /* GP5_RISE_EINT1 */ | ||
| 5261 | #define ARIZONA_JD1_FALL_EINT1 0x0008 /* JD1_FALL_EINT1 */ | ||
| 5262 | #define ARIZONA_JD1_FALL_EINT1_MASK 0x0008 /* JD1_FALL_EINT1 */ | ||
| 5263 | #define ARIZONA_JD1_FALL_EINT1_SHIFT 3 /* JD1_FALL_EINT1 */ | ||
| 5264 | #define ARIZONA_JD1_FALL_EINT1_WIDTH 1 /* JD1_FALL_EINT1 */ | ||
| 5265 | #define ARIZONA_JD1_RISE_EINT1 0x0004 /* JD1_RISE_EINT1 */ | ||
| 5266 | #define ARIZONA_JD1_RISE_EINT1_MASK 0x0004 /* JD1_RISE_EINT1 */ | ||
| 5267 | #define ARIZONA_JD1_RISE_EINT1_SHIFT 2 /* JD1_RISE_EINT1 */ | ||
| 5268 | #define ARIZONA_JD1_RISE_EINT1_WIDTH 1 /* JD1_RISE_EINT1 */ | ||
| 5269 | #define ARIZONA_JD2_FALL_EINT1 0x0002 /* JD2_FALL_EINT1 */ | ||
| 5270 | #define ARIZONA_JD2_FALL_EINT1_MASK 0x0002 /* JD2_FALL_EINT1 */ | ||
| 5271 | #define ARIZONA_JD2_FALL_EINT1_SHIFT 1 /* JD2_FALL_EINT1 */ | ||
| 5272 | #define ARIZONA_JD2_FALL_EINT1_WIDTH 1 /* JD2_FALL_EINT1 */ | ||
| 5273 | #define ARIZONA_JD2_RISE_EINT1 0x0001 /* JD2_RISE_EINT1 */ | ||
| 5274 | #define ARIZONA_JD2_RISE_EINT1_MASK 0x0001 /* JD2_RISE_EINT1 */ | ||
| 5275 | #define ARIZONA_JD2_RISE_EINT1_SHIFT 0 /* JD2_RISE_EINT1 */ | ||
| 5276 | #define ARIZONA_JD2_RISE_EINT1_WIDTH 1 /* JD2_RISE_EINT1 */ | ||
| 5277 | |||
| 5278 | /* | ||
| 5279 | * R3410 (0xD52) - AOD IRQ2 | ||
| 5280 | */ | ||
| 5281 | #define ARIZONA_GP5_FALL_EINT2 0x0020 /* GP5_FALL_EINT2 */ | ||
| 5282 | #define ARIZONA_GP5_FALL_EINT2_MASK 0x0020 /* GP5_FALL_EINT2 */ | ||
| 5283 | #define ARIZONA_GP5_FALL_EINT2_SHIFT 5 /* GP5_FALL_EINT2 */ | ||
| 5284 | #define ARIZONA_GP5_FALL_EINT2_WIDTH 1 /* GP5_FALL_EINT2 */ | ||
| 5285 | #define ARIZONA_GP5_RISE_EINT2 0x0010 /* GP5_RISE_EINT2 */ | ||
| 5286 | #define ARIZONA_GP5_RISE_EINT2_MASK 0x0010 /* GP5_RISE_EINT2 */ | ||
| 5287 | #define ARIZONA_GP5_RISE_EINT2_SHIFT 4 /* GP5_RISE_EINT2 */ | ||
| 5288 | #define ARIZONA_GP5_RISE_EINT2_WIDTH 1 /* GP5_RISE_EINT2 */ | ||
| 5289 | #define ARIZONA_JD1_FALL_EINT2 0x0008 /* JD1_FALL_EINT2 */ | ||
| 5290 | #define ARIZONA_JD1_FALL_EINT2_MASK 0x0008 /* JD1_FALL_EINT2 */ | ||
| 5291 | #define ARIZONA_JD1_FALL_EINT2_SHIFT 3 /* JD1_FALL_EINT2 */ | ||
| 5292 | #define ARIZONA_JD1_FALL_EINT2_WIDTH 1 /* JD1_FALL_EINT2 */ | ||
| 5293 | #define ARIZONA_JD1_RISE_EINT2 0x0004 /* JD1_RISE_EINT2 */ | ||
| 5294 | #define ARIZONA_JD1_RISE_EINT2_MASK 0x0004 /* JD1_RISE_EINT2 */ | ||
| 5295 | #define ARIZONA_JD1_RISE_EINT2_SHIFT 2 /* JD1_RISE_EINT2 */ | ||
| 5296 | #define ARIZONA_JD1_RISE_EINT2_WIDTH 1 /* JD1_RISE_EINT2 */ | ||
| 5297 | #define ARIZONA_JD2_FALL_EINT2 0x0002 /* JD2_FALL_EINT2 */ | ||
| 5298 | #define ARIZONA_JD2_FALL_EINT2_MASK 0x0002 /* JD2_FALL_EINT2 */ | ||
| 5299 | #define ARIZONA_JD2_FALL_EINT2_SHIFT 1 /* JD2_FALL_EINT2 */ | ||
| 5300 | #define ARIZONA_JD2_FALL_EINT2_WIDTH 1 /* JD2_FALL_EINT2 */ | ||
| 5301 | #define ARIZONA_JD2_RISE_EINT2 0x0001 /* JD2_RISE_EINT2 */ | ||
| 5302 | #define ARIZONA_JD2_RISE_EINT2_MASK 0x0001 /* JD2_RISE_EINT2 */ | ||
| 5303 | #define ARIZONA_JD2_RISE_EINT2_SHIFT 0 /* JD2_RISE_EINT2 */ | ||
| 5304 | #define ARIZONA_JD2_RISE_EINT2_WIDTH 1 /* JD2_RISE_EINT2 */ | ||
| 5305 | |||
| 5306 | /* | ||
| 5307 | * R3411 (0xD53) - AOD IRQ Mask IRQ1 | ||
| 5308 | */ | ||
| 5309 | #define ARIZONA_IM_GP5_FALL_EINT1 0x0020 /* IM_GP5_FALL_EINT1 */ | ||
| 5310 | #define ARIZONA_IM_GP5_FALL_EINT1_MASK 0x0020 /* IM_GP5_FALL_EINT1 */ | ||
| 5311 | #define ARIZONA_IM_GP5_FALL_EINT1_SHIFT 5 /* IM_GP5_FALL_EINT1 */ | ||
| 5312 | #define ARIZONA_IM_GP5_FALL_EINT1_WIDTH 1 /* IM_GP5_FALL_EINT1 */ | ||
| 5313 | #define ARIZONA_IM_GP5_RISE_EINT1 0x0010 /* IM_GP5_RISE_EINT1 */ | ||
| 5314 | #define ARIZONA_IM_GP5_RISE_EINT1_MASK 0x0010 /* IM_GP5_RISE_EINT1 */ | ||
| 5315 | #define ARIZONA_IM_GP5_RISE_EINT1_SHIFT 4 /* IM_GP5_RISE_EINT1 */ | ||
| 5316 | #define ARIZONA_IM_GP5_RISE_EINT1_WIDTH 1 /* IM_GP5_RISE_EINT1 */ | ||
| 5317 | #define ARIZONA_IM_JD1_FALL_EINT1 0x0008 /* IM_JD1_FALL_EINT1 */ | ||
| 5318 | #define ARIZONA_IM_JD1_FALL_EINT1_MASK 0x0008 /* IM_JD1_FALL_EINT1 */ | ||
| 5319 | #define ARIZONA_IM_JD1_FALL_EINT1_SHIFT 3 /* IM_JD1_FALL_EINT1 */ | ||
| 5320 | #define ARIZONA_IM_JD1_FALL_EINT1_WIDTH 1 /* IM_JD1_FALL_EINT1 */ | ||
| 5321 | #define ARIZONA_IM_JD1_RISE_EINT1 0x0004 /* IM_JD1_RISE_EINT1 */ | ||
| 5322 | #define ARIZONA_IM_JD1_RISE_EINT1_MASK 0x0004 /* IM_JD1_RISE_EINT1 */ | ||
| 5323 | #define ARIZONA_IM_JD1_RISE_EINT1_SHIFT 2 /* IM_JD1_RISE_EINT1 */ | ||
| 5324 | #define ARIZONA_IM_JD1_RISE_EINT1_WIDTH 1 /* IM_JD1_RISE_EINT1 */ | ||
| 5325 | #define ARIZONA_IM_JD2_FALL_EINT1 0x0002 /* IM_JD2_FALL_EINT1 */ | ||
| 5326 | #define ARIZONA_IM_JD2_FALL_EINT1_MASK 0x0002 /* IM_JD2_FALL_EINT1 */ | ||
| 5327 | #define ARIZONA_IM_JD2_FALL_EINT1_SHIFT 1 /* IM_JD2_FALL_EINT1 */ | ||
| 5328 | #define ARIZONA_IM_JD2_FALL_EINT1_WIDTH 1 /* IM_JD2_FALL_EINT1 */ | ||
| 5329 | #define ARIZONA_IM_JD2_RISE_EINT1 0x0001 /* IM_JD2_RISE_EINT1 */ | ||
| 5330 | #define ARIZONA_IM_JD2_RISE_EINT1_MASK 0x0001 /* IM_JD2_RISE_EINT1 */ | ||
| 5331 | #define ARIZONA_IM_JD2_RISE_EINT1_SHIFT 0 /* IM_JD2_RISE_EINT1 */ | ||
| 5332 | #define ARIZONA_IM_JD2_RISE_EINT1_WIDTH 1 /* IM_JD2_RISE_EINT1 */ | ||
| 5333 | |||
| 5334 | /* | ||
| 5335 | * R3412 (0xD54) - AOD IRQ Mask IRQ2 | ||
| 5336 | */ | ||
| 5337 | #define ARIZONA_IM_GP5_FALL_EINT2 0x0020 /* IM_GP5_FALL_EINT2 */ | ||
| 5338 | #define ARIZONA_IM_GP5_FALL_EINT2_MASK 0x0020 /* IM_GP5_FALL_EINT2 */ | ||
| 5339 | #define ARIZONA_IM_GP5_FALL_EINT2_SHIFT 5 /* IM_GP5_FALL_EINT2 */ | ||
| 5340 | #define ARIZONA_IM_GP5_FALL_EINT2_WIDTH 1 /* IM_GP5_FALL_EINT2 */ | ||
| 5341 | #define ARIZONA_IM_GP5_RISE_EINT2 0x0010 /* IM_GP5_RISE_EINT2 */ | ||
| 5342 | #define ARIZONA_IM_GP5_RISE_EINT2_MASK 0x0010 /* IM_GP5_RISE_EINT2 */ | ||
| 5343 | #define ARIZONA_IM_GP5_RISE_EINT2_SHIFT 4 /* IM_GP5_RISE_EINT2 */ | ||
| 5344 | #define ARIZONA_IM_GP5_RISE_EINT2_WIDTH 1 /* IM_GP5_RISE_EINT2 */ | ||
| 5345 | #define ARIZONA_IM_JD1_FALL_EINT2 0x0008 /* IM_JD1_FALL_EINT2 */ | ||
| 5346 | #define ARIZONA_IM_JD1_FALL_EINT2_MASK 0x0008 /* IM_JD1_FALL_EINT2 */ | ||
| 5347 | #define ARIZONA_IM_JD1_FALL_EINT2_SHIFT 3 /* IM_JD1_FALL_EINT2 */ | ||
| 5348 | #define ARIZONA_IM_JD1_FALL_EINT2_WIDTH 1 /* IM_JD1_FALL_EINT2 */ | ||
| 5349 | #define ARIZONA_IM_JD1_RISE_EINT2 0x0004 /* IM_JD1_RISE_EINT2 */ | ||
| 5350 | #define ARIZONA_IM_JD1_RISE_EINT2_MASK 0x0004 /* IM_JD1_RISE_EINT2 */ | ||
| 5351 | #define ARIZONA_IM_JD1_RISE_EINT2_SHIFT 2 /* IM_JD1_RISE_EINT2 */ | ||
| 5352 | #define ARIZONA_IM_JD1_RISE_EINT2_WIDTH 1 /* IM_JD1_RISE_EINT2 */ | ||
| 5353 | #define ARIZONA_IM_JD2_FALL_EINT2 0x0002 /* IM_JD2_FALL_EINT2 */ | ||
| 5354 | #define ARIZONA_IM_JD2_FALL_EINT2_MASK 0x0002 /* IM_JD2_FALL_EINT2 */ | ||
| 5355 | #define ARIZONA_IM_JD2_FALL_EINT2_SHIFT 1 /* IM_JD2_FALL_EINT2 */ | ||
| 5356 | #define ARIZONA_IM_JD2_FALL_EINT2_WIDTH 1 /* IM_JD2_FALL_EINT2 */ | ||
| 5357 | #define ARIZONA_IM_JD2_RISE_EINT2 0x0001 /* IM_JD2_RISE_EINT2 */ | ||
| 5358 | #define ARIZONA_IM_JD2_RISE_EINT2_MASK 0x0001 /* IM_JD2_RISE_EINT2 */ | ||
| 5359 | #define ARIZONA_IM_JD2_RISE_EINT2_SHIFT 0 /* IM_JD2_RISE_EINT2 */ | ||
| 5360 | #define ARIZONA_IM_JD2_RISE_EINT2_WIDTH 1 /* IM_JD2_RISE_EINT2 */ | ||
| 5361 | |||
| 5362 | /* | ||
| 5363 | * R3413 (0xD55) - AOD IRQ Raw Status | ||
| 5364 | */ | ||
| 5365 | #define ARIZONA_GP5_STS 0x0004 /* GP5_STS */ | ||
| 5366 | #define ARIZONA_GP5_STS_MASK 0x0004 /* GP5_STS */ | ||
| 5367 | #define ARIZONA_GP5_STS_SHIFT 2 /* GP5_STS */ | ||
| 5368 | #define ARIZONA_GP5_STS_WIDTH 1 /* GP5_STS */ | ||
| 5369 | #define ARIZONA_JD2_STS 0x0002 /* JD2_STS */ | ||
| 5370 | #define ARIZONA_JD2_STS_MASK 0x0002 /* JD2_STS */ | ||
| 5371 | #define ARIZONA_JD2_STS_SHIFT 1 /* JD2_STS */ | ||
| 5372 | #define ARIZONA_JD2_STS_WIDTH 1 /* JD2_STS */ | ||
| 5373 | #define ARIZONA_JD1_STS 0x0001 /* JD1_STS */ | ||
| 5374 | #define ARIZONA_JD1_STS_MASK 0x0001 /* JD1_STS */ | ||
| 5375 | #define ARIZONA_JD1_STS_SHIFT 0 /* JD1_STS */ | ||
| 5376 | #define ARIZONA_JD1_STS_WIDTH 1 /* JD1_STS */ | ||
| 5377 | |||
| 5378 | /* | ||
| 5379 | * R3414 (0xD56) - Jack detect debounce | ||
| 5380 | */ | ||
| 5381 | #define ARIZONA_JD2_DB 0x0002 /* JD2_DB */ | ||
| 5382 | #define ARIZONA_JD2_DB_MASK 0x0002 /* JD2_DB */ | ||
| 5383 | #define ARIZONA_JD2_DB_SHIFT 1 /* JD2_DB */ | ||
| 5384 | #define ARIZONA_JD2_DB_WIDTH 1 /* JD2_DB */ | ||
| 5385 | #define ARIZONA_JD1_DB 0x0001 /* JD1_DB */ | ||
| 5386 | #define ARIZONA_JD1_DB_MASK 0x0001 /* JD1_DB */ | ||
| 5387 | #define ARIZONA_JD1_DB_SHIFT 0 /* JD1_DB */ | ||
| 5388 | #define ARIZONA_JD1_DB_WIDTH 1 /* JD1_DB */ | ||
| 5389 | |||
| 5390 | /* | ||
| 5391 | * R3584 (0xE00) - FX_Ctrl1 | ||
| 5392 | */ | ||
| 5393 | #define ARIZONA_FX_RATE_MASK 0x7800 /* FX_RATE - [14:11] */ | ||
| 5394 | #define ARIZONA_FX_RATE_SHIFT 11 /* FX_RATE - [14:11] */ | ||
| 5395 | #define ARIZONA_FX_RATE_WIDTH 4 /* FX_RATE - [14:11] */ | ||
| 5396 | |||
| 5397 | /* | ||
| 5398 | * R3585 (0xE01) - FX_Ctrl2 | ||
| 5399 | */ | ||
| 5400 | #define ARIZONA_FX_STS_MASK 0xFFF0 /* FX_STS - [15:4] */ | ||
| 5401 | #define ARIZONA_FX_STS_SHIFT 4 /* FX_STS - [15:4] */ | ||
| 5402 | #define ARIZONA_FX_STS_WIDTH 12 /* FX_STS - [15:4] */ | ||
| 5403 | |||
| 5404 | /* | ||
| 5405 | * R3600 (0xE10) - EQ1_1 | ||
| 5406 | */ | ||
| 5407 | #define ARIZONA_EQ1_B1_GAIN_MASK 0xF800 /* EQ1_B1_GAIN - [15:11] */ | ||
| 5408 | #define ARIZONA_EQ1_B1_GAIN_SHIFT 11 /* EQ1_B1_GAIN - [15:11] */ | ||
| 5409 | #define ARIZONA_EQ1_B1_GAIN_WIDTH 5 /* EQ1_B1_GAIN - [15:11] */ | ||
| 5410 | #define ARIZONA_EQ1_B2_GAIN_MASK 0x07C0 /* EQ1_B2_GAIN - [10:6] */ | ||
| 5411 | #define ARIZONA_EQ1_B2_GAIN_SHIFT 6 /* EQ1_B2_GAIN - [10:6] */ | ||
| 5412 | #define ARIZONA_EQ1_B2_GAIN_WIDTH 5 /* EQ1_B2_GAIN - [10:6] */ | ||
| 5413 | #define ARIZONA_EQ1_B3_GAIN_MASK 0x003E /* EQ1_B3_GAIN - [5:1] */ | ||
| 5414 | #define ARIZONA_EQ1_B3_GAIN_SHIFT 1 /* EQ1_B3_GAIN - [5:1] */ | ||
| 5415 | #define ARIZONA_EQ1_B3_GAIN_WIDTH 5 /* EQ1_B3_GAIN - [5:1] */ | ||
| 5416 | #define ARIZONA_EQ1_ENA 0x0001 /* EQ1_ENA */ | ||
| 5417 | #define ARIZONA_EQ1_ENA_MASK 0x0001 /* EQ1_ENA */ | ||
| 5418 | #define ARIZONA_EQ1_ENA_SHIFT 0 /* EQ1_ENA */ | ||
| 5419 | #define ARIZONA_EQ1_ENA_WIDTH 1 /* EQ1_ENA */ | ||
| 5420 | |||
| 5421 | /* | ||
| 5422 | * R3601 (0xE11) - EQ1_2 | ||
| 5423 | */ | ||
| 5424 | #define ARIZONA_EQ1_B4_GAIN_MASK 0xF800 /* EQ1_B4_GAIN - [15:11] */ | ||
| 5425 | #define ARIZONA_EQ1_B4_GAIN_SHIFT 11 /* EQ1_B4_GAIN - [15:11] */ | ||
| 5426 | #define ARIZONA_EQ1_B4_GAIN_WIDTH 5 /* EQ1_B4_GAIN - [15:11] */ | ||
| 5427 | #define ARIZONA_EQ1_B5_GAIN_MASK 0x07C0 /* EQ1_B5_GAIN - [10:6] */ | ||
| 5428 | #define ARIZONA_EQ1_B5_GAIN_SHIFT 6 /* EQ1_B5_GAIN - [10:6] */ | ||
| 5429 | #define ARIZONA_EQ1_B5_GAIN_WIDTH 5 /* EQ1_B5_GAIN - [10:6] */ | ||
| 5430 | #define ARIZONA_EQ1_B1_MODE 0x0001 /* EQ1_B1_MODE */ | ||
| 5431 | #define ARIZONA_EQ1_B1_MODE_MASK 0x0001 /* EQ1_B1_MODE */ | ||
| 5432 | #define ARIZONA_EQ1_B1_MODE_SHIFT 0 /* EQ1_B1_MODE */ | ||
| 5433 | #define ARIZONA_EQ1_B1_MODE_WIDTH 1 /* EQ1_B1_MODE */ | ||
| 5434 | |||
| 5435 | /* | ||
| 5436 | * R3602 (0xE12) - EQ1_3 | ||
| 5437 | */ | ||
| 5438 | #define ARIZONA_EQ1_B1_A_MASK 0xFFFF /* EQ1_B1_A - [15:0] */ | ||
| 5439 | #define ARIZONA_EQ1_B1_A_SHIFT 0 /* EQ1_B1_A - [15:0] */ | ||
| 5440 | #define ARIZONA_EQ1_B1_A_WIDTH 16 /* EQ1_B1_A - [15:0] */ | ||
| 5441 | |||
| 5442 | /* | ||
| 5443 | * R3603 (0xE13) - EQ1_4 | ||
| 5444 | */ | ||
| 5445 | #define ARIZONA_EQ1_B1_B_MASK 0xFFFF /* EQ1_B1_B - [15:0] */ | ||
| 5446 | #define ARIZONA_EQ1_B1_B_SHIFT 0 /* EQ1_B1_B - [15:0] */ | ||
| 5447 | #define ARIZONA_EQ1_B1_B_WIDTH 16 /* EQ1_B1_B - [15:0] */ | ||
| 5448 | |||
| 5449 | /* | ||
| 5450 | * R3604 (0xE14) - EQ1_5 | ||
| 5451 | */ | ||
| 5452 | #define ARIZONA_EQ1_B1_PG_MASK 0xFFFF /* EQ1_B1_PG - [15:0] */ | ||
| 5453 | #define ARIZONA_EQ1_B1_PG_SHIFT 0 /* EQ1_B1_PG - [15:0] */ | ||
| 5454 | #define ARIZONA_EQ1_B1_PG_WIDTH 16 /* EQ1_B1_PG - [15:0] */ | ||
| 5455 | |||
| 5456 | /* | ||
| 5457 | * R3605 (0xE15) - EQ1_6 | ||
| 5458 | */ | ||
| 5459 | #define ARIZONA_EQ1_B2_A_MASK 0xFFFF /* EQ1_B2_A - [15:0] */ | ||
| 5460 | #define ARIZONA_EQ1_B2_A_SHIFT 0 /* EQ1_B2_A - [15:0] */ | ||
| 5461 | #define ARIZONA_EQ1_B2_A_WIDTH 16 /* EQ1_B2_A - [15:0] */ | ||
| 5462 | |||
| 5463 | /* | ||
| 5464 | * R3606 (0xE16) - EQ1_7 | ||
| 5465 | */ | ||
| 5466 | #define ARIZONA_EQ1_B2_B_MASK 0xFFFF /* EQ1_B2_B - [15:0] */ | ||
| 5467 | #define ARIZONA_EQ1_B2_B_SHIFT 0 /* EQ1_B2_B - [15:0] */ | ||
| 5468 | #define ARIZONA_EQ1_B2_B_WIDTH 16 /* EQ1_B2_B - [15:0] */ | ||
| 5469 | |||
| 5470 | /* | ||
| 5471 | * R3607 (0xE17) - EQ1_8 | ||
| 5472 | */ | ||
| 5473 | #define ARIZONA_EQ1_B2_C_MASK 0xFFFF /* EQ1_B2_C - [15:0] */ | ||
| 5474 | #define ARIZONA_EQ1_B2_C_SHIFT 0 /* EQ1_B2_C - [15:0] */ | ||
| 5475 | #define ARIZONA_EQ1_B2_C_WIDTH 16 /* EQ1_B2_C - [15:0] */ | ||
| 5476 | |||
| 5477 | /* | ||
| 5478 | * R3608 (0xE18) - EQ1_9 | ||
| 5479 | */ | ||
| 5480 | #define ARIZONA_EQ1_B2_PG_MASK 0xFFFF /* EQ1_B2_PG - [15:0] */ | ||
| 5481 | #define ARIZONA_EQ1_B2_PG_SHIFT 0 /* EQ1_B2_PG - [15:0] */ | ||
| 5482 | #define ARIZONA_EQ1_B2_PG_WIDTH 16 /* EQ1_B2_PG - [15:0] */ | ||
| 5483 | |||
| 5484 | /* | ||
| 5485 | * R3609 (0xE19) - EQ1_10 | ||
| 5486 | */ | ||
| 5487 | #define ARIZONA_EQ1_B3_A_MASK 0xFFFF /* EQ1_B3_A - [15:0] */ | ||
| 5488 | #define ARIZONA_EQ1_B3_A_SHIFT 0 /* EQ1_B3_A - [15:0] */ | ||
| 5489 | #define ARIZONA_EQ1_B3_A_WIDTH 16 /* EQ1_B3_A - [15:0] */ | ||
| 5490 | |||
| 5491 | /* | ||
| 5492 | * R3610 (0xE1A) - EQ1_11 | ||
| 5493 | */ | ||
| 5494 | #define ARIZONA_EQ1_B3_B_MASK 0xFFFF /* EQ1_B3_B - [15:0] */ | ||
| 5495 | #define ARIZONA_EQ1_B3_B_SHIFT 0 /* EQ1_B3_B - [15:0] */ | ||
| 5496 | #define ARIZONA_EQ1_B3_B_WIDTH 16 /* EQ1_B3_B - [15:0] */ | ||
| 5497 | |||
| 5498 | /* | ||
| 5499 | * R3611 (0xE1B) - EQ1_12 | ||
| 5500 | */ | ||
| 5501 | #define ARIZONA_EQ1_B3_C_MASK 0xFFFF /* EQ1_B3_C - [15:0] */ | ||
| 5502 | #define ARIZONA_EQ1_B3_C_SHIFT 0 /* EQ1_B3_C - [15:0] */ | ||
| 5503 | #define ARIZONA_EQ1_B3_C_WIDTH 16 /* EQ1_B3_C - [15:0] */ | ||
| 5504 | |||
| 5505 | /* | ||
| 5506 | * R3612 (0xE1C) - EQ1_13 | ||
| 5507 | */ | ||
| 5508 | #define ARIZONA_EQ1_B3_PG_MASK 0xFFFF /* EQ1_B3_PG - [15:0] */ | ||
| 5509 | #define ARIZONA_EQ1_B3_PG_SHIFT 0 /* EQ1_B3_PG - [15:0] */ | ||
| 5510 | #define ARIZONA_EQ1_B3_PG_WIDTH 16 /* EQ1_B3_PG - [15:0] */ | ||
| 5511 | |||
| 5512 | /* | ||
| 5513 | * R3613 (0xE1D) - EQ1_14 | ||
| 5514 | */ | ||
| 5515 | #define ARIZONA_EQ1_B4_A_MASK 0xFFFF /* EQ1_B4_A - [15:0] */ | ||
| 5516 | #define ARIZONA_EQ1_B4_A_SHIFT 0 /* EQ1_B4_A - [15:0] */ | ||
| 5517 | #define ARIZONA_EQ1_B4_A_WIDTH 16 /* EQ1_B4_A - [15:0] */ | ||
| 5518 | |||
| 5519 | /* | ||
| 5520 | * R3614 (0xE1E) - EQ1_15 | ||
| 5521 | */ | ||
| 5522 | #define ARIZONA_EQ1_B4_B_MASK 0xFFFF /* EQ1_B4_B - [15:0] */ | ||
| 5523 | #define ARIZONA_EQ1_B4_B_SHIFT 0 /* EQ1_B4_B - [15:0] */ | ||
| 5524 | #define ARIZONA_EQ1_B4_B_WIDTH 16 /* EQ1_B4_B - [15:0] */ | ||
| 5525 | |||
| 5526 | /* | ||
| 5527 | * R3615 (0xE1F) - EQ1_16 | ||
| 5528 | */ | ||
| 5529 | #define ARIZONA_EQ1_B4_C_MASK 0xFFFF /* EQ1_B4_C - [15:0] */ | ||
| 5530 | #define ARIZONA_EQ1_B4_C_SHIFT 0 /* EQ1_B4_C - [15:0] */ | ||
| 5531 | #define ARIZONA_EQ1_B4_C_WIDTH 16 /* EQ1_B4_C - [15:0] */ | ||
| 5532 | |||
| 5533 | /* | ||
| 5534 | * R3616 (0xE20) - EQ1_17 | ||
| 5535 | */ | ||
| 5536 | #define ARIZONA_EQ1_B4_PG_MASK 0xFFFF /* EQ1_B4_PG - [15:0] */ | ||
| 5537 | #define ARIZONA_EQ1_B4_PG_SHIFT 0 /* EQ1_B4_PG - [15:0] */ | ||
| 5538 | #define ARIZONA_EQ1_B4_PG_WIDTH 16 /* EQ1_B4_PG - [15:0] */ | ||
| 5539 | |||
| 5540 | /* | ||
| 5541 | * R3617 (0xE21) - EQ1_18 | ||
| 5542 | */ | ||
| 5543 | #define ARIZONA_EQ1_B5_A_MASK 0xFFFF /* EQ1_B5_A - [15:0] */ | ||
| 5544 | #define ARIZONA_EQ1_B5_A_SHIFT 0 /* EQ1_B5_A - [15:0] */ | ||
| 5545 | #define ARIZONA_EQ1_B5_A_WIDTH 16 /* EQ1_B5_A - [15:0] */ | ||
| 5546 | |||
| 5547 | /* | ||
| 5548 | * R3618 (0xE22) - EQ1_19 | ||
| 5549 | */ | ||
| 5550 | #define ARIZONA_EQ1_B5_B_MASK 0xFFFF /* EQ1_B5_B - [15:0] */ | ||
| 5551 | #define ARIZONA_EQ1_B5_B_SHIFT 0 /* EQ1_B5_B - [15:0] */ | ||
| 5552 | #define ARIZONA_EQ1_B5_B_WIDTH 16 /* EQ1_B5_B - [15:0] */ | ||
| 5553 | |||
| 5554 | /* | ||
| 5555 | * R3619 (0xE23) - EQ1_20 | ||
| 5556 | */ | ||
| 5557 | #define ARIZONA_EQ1_B5_PG_MASK 0xFFFF /* EQ1_B5_PG - [15:0] */ | ||
| 5558 | #define ARIZONA_EQ1_B5_PG_SHIFT 0 /* EQ1_B5_PG - [15:0] */ | ||
| 5559 | #define ARIZONA_EQ1_B5_PG_WIDTH 16 /* EQ1_B5_PG - [15:0] */ | ||
| 5560 | |||
| 5561 | /* | ||
| 5562 | * R3620 (0xE24) - EQ1_21 | ||
| 5563 | */ | ||
| 5564 | #define ARIZONA_EQ1_B1_C_MASK 0xFFFF /* EQ1_B1_C - [15:0] */ | ||
| 5565 | #define ARIZONA_EQ1_B1_C_SHIFT 0 /* EQ1_B1_C - [15:0] */ | ||
| 5566 | #define ARIZONA_EQ1_B1_C_WIDTH 16 /* EQ1_B1_C - [15:0] */ | ||
| 5567 | |||
| 5568 | /* | ||
| 5569 | * R3622 (0xE26) - EQ2_1 | ||
| 5570 | */ | ||
| 5571 | #define ARIZONA_EQ2_B1_GAIN_MASK 0xF800 /* EQ2_B1_GAIN - [15:11] */ | ||
| 5572 | #define ARIZONA_EQ2_B1_GAIN_SHIFT 11 /* EQ2_B1_GAIN - [15:11] */ | ||
| 5573 | #define ARIZONA_EQ2_B1_GAIN_WIDTH 5 /* EQ2_B1_GAIN - [15:11] */ | ||
| 5574 | #define ARIZONA_EQ2_B2_GAIN_MASK 0x07C0 /* EQ2_B2_GAIN - [10:6] */ | ||
| 5575 | #define ARIZONA_EQ2_B2_GAIN_SHIFT 6 /* EQ2_B2_GAIN - [10:6] */ | ||
| 5576 | #define ARIZONA_EQ2_B2_GAIN_WIDTH 5 /* EQ2_B2_GAIN - [10:6] */ | ||
| 5577 | #define ARIZONA_EQ2_B3_GAIN_MASK 0x003E /* EQ2_B3_GAIN - [5:1] */ | ||
| 5578 | #define ARIZONA_EQ2_B3_GAIN_SHIFT 1 /* EQ2_B3_GAIN - [5:1] */ | ||
| 5579 | #define ARIZONA_EQ2_B3_GAIN_WIDTH 5 /* EQ2_B3_GAIN - [5:1] */ | ||
| 5580 | #define ARIZONA_EQ2_ENA 0x0001 /* EQ2_ENA */ | ||
| 5581 | #define ARIZONA_EQ2_ENA_MASK 0x0001 /* EQ2_ENA */ | ||
| 5582 | #define ARIZONA_EQ2_ENA_SHIFT 0 /* EQ2_ENA */ | ||
| 5583 | #define ARIZONA_EQ2_ENA_WIDTH 1 /* EQ2_ENA */ | ||
| 5584 | |||
| 5585 | /* | ||
| 5586 | * R3623 (0xE27) - EQ2_2 | ||
| 5587 | */ | ||
| 5588 | #define ARIZONA_EQ2_B4_GAIN_MASK 0xF800 /* EQ2_B4_GAIN - [15:11] */ | ||
| 5589 | #define ARIZONA_EQ2_B4_GAIN_SHIFT 11 /* EQ2_B4_GAIN - [15:11] */ | ||
| 5590 | #define ARIZONA_EQ2_B4_GAIN_WIDTH 5 /* EQ2_B4_GAIN - [15:11] */ | ||
| 5591 | #define ARIZONA_EQ2_B5_GAIN_MASK 0x07C0 /* EQ2_B5_GAIN - [10:6] */ | ||
| 5592 | #define ARIZONA_EQ2_B5_GAIN_SHIFT 6 /* EQ2_B5_GAIN - [10:6] */ | ||
| 5593 | #define ARIZONA_EQ2_B5_GAIN_WIDTH 5 /* EQ2_B5_GAIN - [10:6] */ | ||
| 5594 | #define ARIZONA_EQ2_B1_MODE 0x0001 /* EQ2_B1_MODE */ | ||
| 5595 | #define ARIZONA_EQ2_B1_MODE_MASK 0x0001 /* EQ2_B1_MODE */ | ||
| 5596 | #define ARIZONA_EQ2_B1_MODE_SHIFT 0 /* EQ2_B1_MODE */ | ||
| 5597 | #define ARIZONA_EQ2_B1_MODE_WIDTH 1 /* EQ2_B1_MODE */ | ||
| 5598 | |||
| 5599 | /* | ||
| 5600 | * R3624 (0xE28) - EQ2_3 | ||
| 5601 | */ | ||
| 5602 | #define ARIZONA_EQ2_B1_A_MASK 0xFFFF /* EQ2_B1_A - [15:0] */ | ||
| 5603 | #define ARIZONA_EQ2_B1_A_SHIFT 0 /* EQ2_B1_A - [15:0] */ | ||
| 5604 | #define ARIZONA_EQ2_B1_A_WIDTH 16 /* EQ2_B1_A - [15:0] */ | ||
| 5605 | |||
| 5606 | /* | ||
| 5607 | * R3625 (0xE29) - EQ2_4 | ||
| 5608 | */ | ||
| 5609 | #define ARIZONA_EQ2_B1_B_MASK 0xFFFF /* EQ2_B1_B - [15:0] */ | ||
| 5610 | #define ARIZONA_EQ2_B1_B_SHIFT 0 /* EQ2_B1_B - [15:0] */ | ||
| 5611 | #define ARIZONA_EQ2_B1_B_WIDTH 16 /* EQ2_B1_B - [15:0] */ | ||
| 5612 | |||
| 5613 | /* | ||
| 5614 | * R3626 (0xE2A) - EQ2_5 | ||
| 5615 | */ | ||
| 5616 | #define ARIZONA_EQ2_B1_PG_MASK 0xFFFF /* EQ2_B1_PG - [15:0] */ | ||
| 5617 | #define ARIZONA_EQ2_B1_PG_SHIFT 0 /* EQ2_B1_PG - [15:0] */ | ||
| 5618 | #define ARIZONA_EQ2_B1_PG_WIDTH 16 /* EQ2_B1_PG - [15:0] */ | ||
| 5619 | |||
| 5620 | /* | ||
| 5621 | * R3627 (0xE2B) - EQ2_6 | ||
| 5622 | */ | ||
| 5623 | #define ARIZONA_EQ2_B2_A_MASK 0xFFFF /* EQ2_B2_A - [15:0] */ | ||
| 5624 | #define ARIZONA_EQ2_B2_A_SHIFT 0 /* EQ2_B2_A - [15:0] */ | ||
| 5625 | #define ARIZONA_EQ2_B2_A_WIDTH 16 /* EQ2_B2_A - [15:0] */ | ||
| 5626 | |||
| 5627 | /* | ||
| 5628 | * R3628 (0xE2C) - EQ2_7 | ||
| 5629 | */ | ||
| 5630 | #define ARIZONA_EQ2_B2_B_MASK 0xFFFF /* EQ2_B2_B - [15:0] */ | ||
| 5631 | #define ARIZONA_EQ2_B2_B_SHIFT 0 /* EQ2_B2_B - [15:0] */ | ||
| 5632 | #define ARIZONA_EQ2_B2_B_WIDTH 16 /* EQ2_B2_B - [15:0] */ | ||
| 5633 | |||
| 5634 | /* | ||
| 5635 | * R3629 (0xE2D) - EQ2_8 | ||
| 5636 | */ | ||
| 5637 | #define ARIZONA_EQ2_B2_C_MASK 0xFFFF /* EQ2_B2_C - [15:0] */ | ||
| 5638 | #define ARIZONA_EQ2_B2_C_SHIFT 0 /* EQ2_B2_C - [15:0] */ | ||
| 5639 | #define ARIZONA_EQ2_B2_C_WIDTH 16 /* EQ2_B2_C - [15:0] */ | ||
| 5640 | |||
| 5641 | /* | ||
| 5642 | * R3630 (0xE2E) - EQ2_9 | ||
| 5643 | */ | ||
| 5644 | #define ARIZONA_EQ2_B2_PG_MASK 0xFFFF /* EQ2_B2_PG - [15:0] */ | ||
| 5645 | #define ARIZONA_EQ2_B2_PG_SHIFT 0 /* EQ2_B2_PG - [15:0] */ | ||
| 5646 | #define ARIZONA_EQ2_B2_PG_WIDTH 16 /* EQ2_B2_PG - [15:0] */ | ||
| 5647 | |||
| 5648 | /* | ||
| 5649 | * R3631 (0xE2F) - EQ2_10 | ||
| 5650 | */ | ||
| 5651 | #define ARIZONA_EQ2_B3_A_MASK 0xFFFF /* EQ2_B3_A - [15:0] */ | ||
| 5652 | #define ARIZONA_EQ2_B3_A_SHIFT 0 /* EQ2_B3_A - [15:0] */ | ||
| 5653 | #define ARIZONA_EQ2_B3_A_WIDTH 16 /* EQ2_B3_A - [15:0] */ | ||
| 5654 | |||
| 5655 | /* | ||
| 5656 | * R3632 (0xE30) - EQ2_11 | ||
| 5657 | */ | ||
| 5658 | #define ARIZONA_EQ2_B3_B_MASK 0xFFFF /* EQ2_B3_B - [15:0] */ | ||
| 5659 | #define ARIZONA_EQ2_B3_B_SHIFT 0 /* EQ2_B3_B - [15:0] */ | ||
| 5660 | #define ARIZONA_EQ2_B3_B_WIDTH 16 /* EQ2_B3_B - [15:0] */ | ||
| 5661 | |||
| 5662 | /* | ||
| 5663 | * R3633 (0xE31) - EQ2_12 | ||
| 5664 | */ | ||
| 5665 | #define ARIZONA_EQ2_B3_C_MASK 0xFFFF /* EQ2_B3_C - [15:0] */ | ||
| 5666 | #define ARIZONA_EQ2_B3_C_SHIFT 0 /* EQ2_B3_C - [15:0] */ | ||
| 5667 | #define ARIZONA_EQ2_B3_C_WIDTH 16 /* EQ2_B3_C - [15:0] */ | ||
| 5668 | |||
| 5669 | /* | ||
| 5670 | * R3634 (0xE32) - EQ2_13 | ||
| 5671 | */ | ||
| 5672 | #define ARIZONA_EQ2_B3_PG_MASK 0xFFFF /* EQ2_B3_PG - [15:0] */ | ||
| 5673 | #define ARIZONA_EQ2_B3_PG_SHIFT 0 /* EQ2_B3_PG - [15:0] */ | ||
| 5674 | #define ARIZONA_EQ2_B3_PG_WIDTH 16 /* EQ2_B3_PG - [15:0] */ | ||
| 5675 | |||
| 5676 | /* | ||
| 5677 | * R3635 (0xE33) - EQ2_14 | ||
| 5678 | */ | ||
| 5679 | #define ARIZONA_EQ2_B4_A_MASK 0xFFFF /* EQ2_B4_A - [15:0] */ | ||
| 5680 | #define ARIZONA_EQ2_B4_A_SHIFT 0 /* EQ2_B4_A - [15:0] */ | ||
| 5681 | #define ARIZONA_EQ2_B4_A_WIDTH 16 /* EQ2_B4_A - [15:0] */ | ||
| 5682 | |||
| 5683 | /* | ||
| 5684 | * R3636 (0xE34) - EQ2_15 | ||
| 5685 | */ | ||
| 5686 | #define ARIZONA_EQ2_B4_B_MASK 0xFFFF /* EQ2_B4_B - [15:0] */ | ||
| 5687 | #define ARIZONA_EQ2_B4_B_SHIFT 0 /* EQ2_B4_B - [15:0] */ | ||
| 5688 | #define ARIZONA_EQ2_B4_B_WIDTH 16 /* EQ2_B4_B - [15:0] */ | ||
| 5689 | |||
| 5690 | /* | ||
| 5691 | * R3637 (0xE35) - EQ2_16 | ||
| 5692 | */ | ||
| 5693 | #define ARIZONA_EQ2_B4_C_MASK 0xFFFF /* EQ2_B4_C - [15:0] */ | ||
| 5694 | #define ARIZONA_EQ2_B4_C_SHIFT 0 /* EQ2_B4_C - [15:0] */ | ||
| 5695 | #define ARIZONA_EQ2_B4_C_WIDTH 16 /* EQ2_B4_C - [15:0] */ | ||
| 5696 | |||
| 5697 | /* | ||
| 5698 | * R3638 (0xE36) - EQ2_17 | ||
| 5699 | */ | ||
| 5700 | #define ARIZONA_EQ2_B4_PG_MASK 0xFFFF /* EQ2_B4_PG - [15:0] */ | ||
| 5701 | #define ARIZONA_EQ2_B4_PG_SHIFT 0 /* EQ2_B4_PG - [15:0] */ | ||
| 5702 | #define ARIZONA_EQ2_B4_PG_WIDTH 16 /* EQ2_B4_PG - [15:0] */ | ||
| 5703 | |||
| 5704 | /* | ||
| 5705 | * R3639 (0xE37) - EQ2_18 | ||
| 5706 | */ | ||
| 5707 | #define ARIZONA_EQ2_B5_A_MASK 0xFFFF /* EQ2_B5_A - [15:0] */ | ||
| 5708 | #define ARIZONA_EQ2_B5_A_SHIFT 0 /* EQ2_B5_A - [15:0] */ | ||
| 5709 | #define ARIZONA_EQ2_B5_A_WIDTH 16 /* EQ2_B5_A - [15:0] */ | ||
| 5710 | |||
| 5711 | /* | ||
| 5712 | * R3640 (0xE38) - EQ2_19 | ||
| 5713 | */ | ||
| 5714 | #define ARIZONA_EQ2_B5_B_MASK 0xFFFF /* EQ2_B5_B - [15:0] */ | ||
| 5715 | #define ARIZONA_EQ2_B5_B_SHIFT 0 /* EQ2_B5_B - [15:0] */ | ||
| 5716 | #define ARIZONA_EQ2_B5_B_WIDTH 16 /* EQ2_B5_B - [15:0] */ | ||
| 5717 | |||
| 5718 | /* | ||
| 5719 | * R3641 (0xE39) - EQ2_20 | ||
| 5720 | */ | ||
| 5721 | #define ARIZONA_EQ2_B5_PG_MASK 0xFFFF /* EQ2_B5_PG - [15:0] */ | ||
| 5722 | #define ARIZONA_EQ2_B5_PG_SHIFT 0 /* EQ2_B5_PG - [15:0] */ | ||
| 5723 | #define ARIZONA_EQ2_B5_PG_WIDTH 16 /* EQ2_B5_PG - [15:0] */ | ||
| 5724 | |||
| 5725 | /* | ||
| 5726 | * R3642 (0xE3A) - EQ2_21 | ||
| 5727 | */ | ||
| 5728 | #define ARIZONA_EQ2_B1_C_MASK 0xFFFF /* EQ2_B1_C - [15:0] */ | ||
| 5729 | #define ARIZONA_EQ2_B1_C_SHIFT 0 /* EQ2_B1_C - [15:0] */ | ||
| 5730 | #define ARIZONA_EQ2_B1_C_WIDTH 16 /* EQ2_B1_C - [15:0] */ | ||
| 5731 | |||
| 5732 | /* | ||
| 5733 | * R3644 (0xE3C) - EQ3_1 | ||
| 5734 | */ | ||
| 5735 | #define ARIZONA_EQ3_B1_GAIN_MASK 0xF800 /* EQ3_B1_GAIN - [15:11] */ | ||
| 5736 | #define ARIZONA_EQ3_B1_GAIN_SHIFT 11 /* EQ3_B1_GAIN - [15:11] */ | ||
| 5737 | #define ARIZONA_EQ3_B1_GAIN_WIDTH 5 /* EQ3_B1_GAIN - [15:11] */ | ||
| 5738 | #define ARIZONA_EQ3_B2_GAIN_MASK 0x07C0 /* EQ3_B2_GAIN - [10:6] */ | ||
| 5739 | #define ARIZONA_EQ3_B2_GAIN_SHIFT 6 /* EQ3_B2_GAIN - [10:6] */ | ||
| 5740 | #define ARIZONA_EQ3_B2_GAIN_WIDTH 5 /* EQ3_B2_GAIN - [10:6] */ | ||
| 5741 | #define ARIZONA_EQ3_B3_GAIN_MASK 0x003E /* EQ3_B3_GAIN - [5:1] */ | ||
| 5742 | #define ARIZONA_EQ3_B3_GAIN_SHIFT 1 /* EQ3_B3_GAIN - [5:1] */ | ||
| 5743 | #define ARIZONA_EQ3_B3_GAIN_WIDTH 5 /* EQ3_B3_GAIN - [5:1] */ | ||
| 5744 | #define ARIZONA_EQ3_ENA 0x0001 /* EQ3_ENA */ | ||
| 5745 | #define ARIZONA_EQ3_ENA_MASK 0x0001 /* EQ3_ENA */ | ||
| 5746 | #define ARIZONA_EQ3_ENA_SHIFT 0 /* EQ3_ENA */ | ||
| 5747 | #define ARIZONA_EQ3_ENA_WIDTH 1 /* EQ3_ENA */ | ||
| 5748 | |||
| 5749 | /* | ||
| 5750 | * R3645 (0xE3D) - EQ3_2 | ||
| 5751 | */ | ||
| 5752 | #define ARIZONA_EQ3_B4_GAIN_MASK 0xF800 /* EQ3_B4_GAIN - [15:11] */ | ||
| 5753 | #define ARIZONA_EQ3_B4_GAIN_SHIFT 11 /* EQ3_B4_GAIN - [15:11] */ | ||
| 5754 | #define ARIZONA_EQ3_B4_GAIN_WIDTH 5 /* EQ3_B4_GAIN - [15:11] */ | ||
| 5755 | #define ARIZONA_EQ3_B5_GAIN_MASK 0x07C0 /* EQ3_B5_GAIN - [10:6] */ | ||
| 5756 | #define ARIZONA_EQ3_B5_GAIN_SHIFT 6 /* EQ3_B5_GAIN - [10:6] */ | ||
| 5757 | #define ARIZONA_EQ3_B5_GAIN_WIDTH 5 /* EQ3_B5_GAIN - [10:6] */ | ||
| 5758 | #define ARIZONA_EQ3_B1_MODE 0x0001 /* EQ3_B1_MODE */ | ||
| 5759 | #define ARIZONA_EQ3_B1_MODE_MASK 0x0001 /* EQ3_B1_MODE */ | ||
| 5760 | #define ARIZONA_EQ3_B1_MODE_SHIFT 0 /* EQ3_B1_MODE */ | ||
| 5761 | #define ARIZONA_EQ3_B1_MODE_WIDTH 1 /* EQ3_B1_MODE */ | ||
| 5762 | |||
| 5763 | /* | ||
| 5764 | * R3646 (0xE3E) - EQ3_3 | ||
| 5765 | */ | ||
| 5766 | #define ARIZONA_EQ3_B1_A_MASK 0xFFFF /* EQ3_B1_A - [15:0] */ | ||
| 5767 | #define ARIZONA_EQ3_B1_A_SHIFT 0 /* EQ3_B1_A - [15:0] */ | ||
| 5768 | #define ARIZONA_EQ3_B1_A_WIDTH 16 /* EQ3_B1_A - [15:0] */ | ||
| 5769 | |||
| 5770 | /* | ||
| 5771 | * R3647 (0xE3F) - EQ3_4 | ||
| 5772 | */ | ||
| 5773 | #define ARIZONA_EQ3_B1_B_MASK 0xFFFF /* EQ3_B1_B - [15:0] */ | ||
| 5774 | #define ARIZONA_EQ3_B1_B_SHIFT 0 /* EQ3_B1_B - [15:0] */ | ||
| 5775 | #define ARIZONA_EQ3_B1_B_WIDTH 16 /* EQ3_B1_B - [15:0] */ | ||
| 5776 | |||
| 5777 | /* | ||
| 5778 | * R3648 (0xE40) - EQ3_5 | ||
| 5779 | */ | ||
| 5780 | #define ARIZONA_EQ3_B1_PG_MASK 0xFFFF /* EQ3_B1_PG - [15:0] */ | ||
| 5781 | #define ARIZONA_EQ3_B1_PG_SHIFT 0 /* EQ3_B1_PG - [15:0] */ | ||
| 5782 | #define ARIZONA_EQ3_B1_PG_WIDTH 16 /* EQ3_B1_PG - [15:0] */ | ||
| 5783 | |||
| 5784 | /* | ||
| 5785 | * R3649 (0xE41) - EQ3_6 | ||
| 5786 | */ | ||
| 5787 | #define ARIZONA_EQ3_B2_A_MASK 0xFFFF /* EQ3_B2_A - [15:0] */ | ||
| 5788 | #define ARIZONA_EQ3_B2_A_SHIFT 0 /* EQ3_B2_A - [15:0] */ | ||
| 5789 | #define ARIZONA_EQ3_B2_A_WIDTH 16 /* EQ3_B2_A - [15:0] */ | ||
| 5790 | |||
| 5791 | /* | ||
| 5792 | * R3650 (0xE42) - EQ3_7 | ||
| 5793 | */ | ||
| 5794 | #define ARIZONA_EQ3_B2_B_MASK 0xFFFF /* EQ3_B2_B - [15:0] */ | ||
| 5795 | #define ARIZONA_EQ3_B2_B_SHIFT 0 /* EQ3_B2_B - [15:0] */ | ||
| 5796 | #define ARIZONA_EQ3_B2_B_WIDTH 16 /* EQ3_B2_B - [15:0] */ | ||
| 5797 | |||
| 5798 | /* | ||
| 5799 | * R3651 (0xE43) - EQ3_8 | ||
| 5800 | */ | ||
| 5801 | #define ARIZONA_EQ3_B2_C_MASK 0xFFFF /* EQ3_B2_C - [15:0] */ | ||
| 5802 | #define ARIZONA_EQ3_B2_C_SHIFT 0 /* EQ3_B2_C - [15:0] */ | ||
| 5803 | #define ARIZONA_EQ3_B2_C_WIDTH 16 /* EQ3_B2_C - [15:0] */ | ||
| 5804 | |||
| 5805 | /* | ||
| 5806 | * R3652 (0xE44) - EQ3_9 | ||
| 5807 | */ | ||
| 5808 | #define ARIZONA_EQ3_B2_PG_MASK 0xFFFF /* EQ3_B2_PG - [15:0] */ | ||
| 5809 | #define ARIZONA_EQ3_B2_PG_SHIFT 0 /* EQ3_B2_PG - [15:0] */ | ||
| 5810 | #define ARIZONA_EQ3_B2_PG_WIDTH 16 /* EQ3_B2_PG - [15:0] */ | ||
| 5811 | |||
| 5812 | /* | ||
| 5813 | * R3653 (0xE45) - EQ3_10 | ||
| 5814 | */ | ||
| 5815 | #define ARIZONA_EQ3_B3_A_MASK 0xFFFF /* EQ3_B3_A - [15:0] */ | ||
| 5816 | #define ARIZONA_EQ3_B3_A_SHIFT 0 /* EQ3_B3_A - [15:0] */ | ||
| 5817 | #define ARIZONA_EQ3_B3_A_WIDTH 16 /* EQ3_B3_A - [15:0] */ | ||
| 5818 | |||
| 5819 | /* | ||
| 5820 | * R3654 (0xE46) - EQ3_11 | ||
| 5821 | */ | ||
| 5822 | #define ARIZONA_EQ3_B3_B_MASK 0xFFFF /* EQ3_B3_B - [15:0] */ | ||
| 5823 | #define ARIZONA_EQ3_B3_B_SHIFT 0 /* EQ3_B3_B - [15:0] */ | ||
| 5824 | #define ARIZONA_EQ3_B3_B_WIDTH 16 /* EQ3_B3_B - [15:0] */ | ||
| 5825 | |||
| 5826 | /* | ||
| 5827 | * R3655 (0xE47) - EQ3_12 | ||
| 5828 | */ | ||
| 5829 | #define ARIZONA_EQ3_B3_C_MASK 0xFFFF /* EQ3_B3_C - [15:0] */ | ||
| 5830 | #define ARIZONA_EQ3_B3_C_SHIFT 0 /* EQ3_B3_C - [15:0] */ | ||
| 5831 | #define ARIZONA_EQ3_B3_C_WIDTH 16 /* EQ3_B3_C - [15:0] */ | ||
| 5832 | |||
| 5833 | /* | ||
| 5834 | * R3656 (0xE48) - EQ3_13 | ||
| 5835 | */ | ||
| 5836 | #define ARIZONA_EQ3_B3_PG_MASK 0xFFFF /* EQ3_B3_PG - [15:0] */ | ||
| 5837 | #define ARIZONA_EQ3_B3_PG_SHIFT 0 /* EQ3_B3_PG - [15:0] */ | ||
| 5838 | #define ARIZONA_EQ3_B3_PG_WIDTH 16 /* EQ3_B3_PG - [15:0] */ | ||
| 5839 | |||
| 5840 | /* | ||
| 5841 | * R3657 (0xE49) - EQ3_14 | ||
| 5842 | */ | ||
| 5843 | #define ARIZONA_EQ3_B4_A_MASK 0xFFFF /* EQ3_B4_A - [15:0] */ | ||
| 5844 | #define ARIZONA_EQ3_B4_A_SHIFT 0 /* EQ3_B4_A - [15:0] */ | ||
| 5845 | #define ARIZONA_EQ3_B4_A_WIDTH 16 /* EQ3_B4_A - [15:0] */ | ||
| 5846 | |||
| 5847 | /* | ||
| 5848 | * R3658 (0xE4A) - EQ3_15 | ||
| 5849 | */ | ||
| 5850 | #define ARIZONA_EQ3_B4_B_MASK 0xFFFF /* EQ3_B4_B - [15:0] */ | ||
| 5851 | #define ARIZONA_EQ3_B4_B_SHIFT 0 /* EQ3_B4_B - [15:0] */ | ||
| 5852 | #define ARIZONA_EQ3_B4_B_WIDTH 16 /* EQ3_B4_B - [15:0] */ | ||
| 5853 | |||
| 5854 | /* | ||
| 5855 | * R3659 (0xE4B) - EQ3_16 | ||
| 5856 | */ | ||
| 5857 | #define ARIZONA_EQ3_B4_C_MASK 0xFFFF /* EQ3_B4_C - [15:0] */ | ||
| 5858 | #define ARIZONA_EQ3_B4_C_SHIFT 0 /* EQ3_B4_C - [15:0] */ | ||
| 5859 | #define ARIZONA_EQ3_B4_C_WIDTH 16 /* EQ3_B4_C - [15:0] */ | ||
| 5860 | |||
| 5861 | /* | ||
| 5862 | * R3660 (0xE4C) - EQ3_17 | ||
| 5863 | */ | ||
| 5864 | #define ARIZONA_EQ3_B4_PG_MASK 0xFFFF /* EQ3_B4_PG - [15:0] */ | ||
| 5865 | #define ARIZONA_EQ3_B4_PG_SHIFT 0 /* EQ3_B4_PG - [15:0] */ | ||
| 5866 | #define ARIZONA_EQ3_B4_PG_WIDTH 16 /* EQ3_B4_PG - [15:0] */ | ||
| 5867 | |||
| 5868 | /* | ||
| 5869 | * R3661 (0xE4D) - EQ3_18 | ||
| 5870 | */ | ||
| 5871 | #define ARIZONA_EQ3_B5_A_MASK 0xFFFF /* EQ3_B5_A - [15:0] */ | ||
| 5872 | #define ARIZONA_EQ3_B5_A_SHIFT 0 /* EQ3_B5_A - [15:0] */ | ||
| 5873 | #define ARIZONA_EQ3_B5_A_WIDTH 16 /* EQ3_B5_A - [15:0] */ | ||
| 5874 | |||
| 5875 | /* | ||
| 5876 | * R3662 (0xE4E) - EQ3_19 | ||
| 5877 | */ | ||
| 5878 | #define ARIZONA_EQ3_B5_B_MASK 0xFFFF /* EQ3_B5_B - [15:0] */ | ||
| 5879 | #define ARIZONA_EQ3_B5_B_SHIFT 0 /* EQ3_B5_B - [15:0] */ | ||
| 5880 | #define ARIZONA_EQ3_B5_B_WIDTH 16 /* EQ3_B5_B - [15:0] */ | ||
| 5881 | |||
| 5882 | /* | ||
| 5883 | * R3663 (0xE4F) - EQ3_20 | ||
| 5884 | */ | ||
| 5885 | #define ARIZONA_EQ3_B5_PG_MASK 0xFFFF /* EQ3_B5_PG - [15:0] */ | ||
| 5886 | #define ARIZONA_EQ3_B5_PG_SHIFT 0 /* EQ3_B5_PG - [15:0] */ | ||
| 5887 | #define ARIZONA_EQ3_B5_PG_WIDTH 16 /* EQ3_B5_PG - [15:0] */ | ||
| 5888 | |||
| 5889 | /* | ||
| 5890 | * R3664 (0xE50) - EQ3_21 | ||
| 5891 | */ | ||
| 5892 | #define ARIZONA_EQ3_B1_C_MASK 0xFFFF /* EQ3_B1_C - [15:0] */ | ||
| 5893 | #define ARIZONA_EQ3_B1_C_SHIFT 0 /* EQ3_B1_C - [15:0] */ | ||
| 5894 | #define ARIZONA_EQ3_B1_C_WIDTH 16 /* EQ3_B1_C - [15:0] */ | ||
| 5895 | |||
| 5896 | /* | ||
| 5897 | * R3666 (0xE52) - EQ4_1 | ||
| 5898 | */ | ||
| 5899 | #define ARIZONA_EQ4_B1_GAIN_MASK 0xF800 /* EQ4_B1_GAIN - [15:11] */ | ||
| 5900 | #define ARIZONA_EQ4_B1_GAIN_SHIFT 11 /* EQ4_B1_GAIN - [15:11] */ | ||
| 5901 | #define ARIZONA_EQ4_B1_GAIN_WIDTH 5 /* EQ4_B1_GAIN - [15:11] */ | ||
| 5902 | #define ARIZONA_EQ4_B2_GAIN_MASK 0x07C0 /* EQ4_B2_GAIN - [10:6] */ | ||
| 5903 | #define ARIZONA_EQ4_B2_GAIN_SHIFT 6 /* EQ4_B2_GAIN - [10:6] */ | ||
| 5904 | #define ARIZONA_EQ4_B2_GAIN_WIDTH 5 /* EQ4_B2_GAIN - [10:6] */ | ||
| 5905 | #define ARIZONA_EQ4_B3_GAIN_MASK 0x003E /* EQ4_B3_GAIN - [5:1] */ | ||
| 5906 | #define ARIZONA_EQ4_B3_GAIN_SHIFT 1 /* EQ4_B3_GAIN - [5:1] */ | ||
| 5907 | #define ARIZONA_EQ4_B3_GAIN_WIDTH 5 /* EQ4_B3_GAIN - [5:1] */ | ||
| 5908 | #define ARIZONA_EQ4_ENA 0x0001 /* EQ4_ENA */ | ||
| 5909 | #define ARIZONA_EQ4_ENA_MASK 0x0001 /* EQ4_ENA */ | ||
| 5910 | #define ARIZONA_EQ4_ENA_SHIFT 0 /* EQ4_ENA */ | ||
| 5911 | #define ARIZONA_EQ4_ENA_WIDTH 1 /* EQ4_ENA */ | ||
| 5912 | |||
| 5913 | /* | ||
| 5914 | * R3667 (0xE53) - EQ4_2 | ||
| 5915 | */ | ||
| 5916 | #define ARIZONA_EQ4_B4_GAIN_MASK 0xF800 /* EQ4_B4_GAIN - [15:11] */ | ||
| 5917 | #define ARIZONA_EQ4_B4_GAIN_SHIFT 11 /* EQ4_B4_GAIN - [15:11] */ | ||
| 5918 | #define ARIZONA_EQ4_B4_GAIN_WIDTH 5 /* EQ4_B4_GAIN - [15:11] */ | ||
| 5919 | #define ARIZONA_EQ4_B5_GAIN_MASK 0x07C0 /* EQ4_B5_GAIN - [10:6] */ | ||
| 5920 | #define ARIZONA_EQ4_B5_GAIN_SHIFT 6 /* EQ4_B5_GAIN - [10:6] */ | ||
| 5921 | #define ARIZONA_EQ4_B5_GAIN_WIDTH 5 /* EQ4_B5_GAIN - [10:6] */ | ||
| 5922 | #define ARIZONA_EQ4_B1_MODE 0x0001 /* EQ4_B1_MODE */ | ||
| 5923 | #define ARIZONA_EQ4_B1_MODE_MASK 0x0001 /* EQ4_B1_MODE */ | ||
| 5924 | #define ARIZONA_EQ4_B1_MODE_SHIFT 0 /* EQ4_B1_MODE */ | ||
| 5925 | #define ARIZONA_EQ4_B1_MODE_WIDTH 1 /* EQ4_B1_MODE */ | ||
| 5926 | |||
| 5927 | /* | ||
| 5928 | * R3668 (0xE54) - EQ4_3 | ||
| 5929 | */ | ||
| 5930 | #define ARIZONA_EQ4_B1_A_MASK 0xFFFF /* EQ4_B1_A - [15:0] */ | ||
| 5931 | #define ARIZONA_EQ4_B1_A_SHIFT 0 /* EQ4_B1_A - [15:0] */ | ||
| 5932 | #define ARIZONA_EQ4_B1_A_WIDTH 16 /* EQ4_B1_A - [15:0] */ | ||
| 5933 | |||
| 5934 | /* | ||
| 5935 | * R3669 (0xE55) - EQ4_4 | ||
| 5936 | */ | ||
| 5937 | #define ARIZONA_EQ4_B1_B_MASK 0xFFFF /* EQ4_B1_B - [15:0] */ | ||
| 5938 | #define ARIZONA_EQ4_B1_B_SHIFT 0 /* EQ4_B1_B - [15:0] */ | ||
| 5939 | #define ARIZONA_EQ4_B1_B_WIDTH 16 /* EQ4_B1_B - [15:0] */ | ||
| 5940 | |||
| 5941 | /* | ||
| 5942 | * R3670 (0xE56) - EQ4_5 | ||
| 5943 | */ | ||
| 5944 | #define ARIZONA_EQ4_B1_PG_MASK 0xFFFF /* EQ4_B1_PG - [15:0] */ | ||
| 5945 | #define ARIZONA_EQ4_B1_PG_SHIFT 0 /* EQ4_B1_PG - [15:0] */ | ||
| 5946 | #define ARIZONA_EQ4_B1_PG_WIDTH 16 /* EQ4_B1_PG - [15:0] */ | ||
| 5947 | |||
| 5948 | /* | ||
| 5949 | * R3671 (0xE57) - EQ4_6 | ||
| 5950 | */ | ||
| 5951 | #define ARIZONA_EQ4_B2_A_MASK 0xFFFF /* EQ4_B2_A - [15:0] */ | ||
| 5952 | #define ARIZONA_EQ4_B2_A_SHIFT 0 /* EQ4_B2_A - [15:0] */ | ||
| 5953 | #define ARIZONA_EQ4_B2_A_WIDTH 16 /* EQ4_B2_A - [15:0] */ | ||
| 5954 | |||
| 5955 | /* | ||
| 5956 | * R3672 (0xE58) - EQ4_7 | ||
| 5957 | */ | ||
| 5958 | #define ARIZONA_EQ4_B2_B_MASK 0xFFFF /* EQ4_B2_B - [15:0] */ | ||
| 5959 | #define ARIZONA_EQ4_B2_B_SHIFT 0 /* EQ4_B2_B - [15:0] */ | ||
| 5960 | #define ARIZONA_EQ4_B2_B_WIDTH 16 /* EQ4_B2_B - [15:0] */ | ||
| 5961 | |||
| 5962 | /* | ||
| 5963 | * R3673 (0xE59) - EQ4_8 | ||
| 5964 | */ | ||
| 5965 | #define ARIZONA_EQ4_B2_C_MASK 0xFFFF /* EQ4_B2_C - [15:0] */ | ||
| 5966 | #define ARIZONA_EQ4_B2_C_SHIFT 0 /* EQ4_B2_C - [15:0] */ | ||
| 5967 | #define ARIZONA_EQ4_B2_C_WIDTH 16 /* EQ4_B2_C - [15:0] */ | ||
| 5968 | |||
| 5969 | /* | ||
| 5970 | * R3674 (0xE5A) - EQ4_9 | ||
| 5971 | */ | ||
| 5972 | #define ARIZONA_EQ4_B2_PG_MASK 0xFFFF /* EQ4_B2_PG - [15:0] */ | ||
| 5973 | #define ARIZONA_EQ4_B2_PG_SHIFT 0 /* EQ4_B2_PG - [15:0] */ | ||
| 5974 | #define ARIZONA_EQ4_B2_PG_WIDTH 16 /* EQ4_B2_PG - [15:0] */ | ||
| 5975 | |||
| 5976 | /* | ||
| 5977 | * R3675 (0xE5B) - EQ4_10 | ||
| 5978 | */ | ||
| 5979 | #define ARIZONA_EQ4_B3_A_MASK 0xFFFF /* EQ4_B3_A - [15:0] */ | ||
| 5980 | #define ARIZONA_EQ4_B3_A_SHIFT 0 /* EQ4_B3_A - [15:0] */ | ||
| 5981 | #define ARIZONA_EQ4_B3_A_WIDTH 16 /* EQ4_B3_A - [15:0] */ | ||
| 5982 | |||
| 5983 | /* | ||
| 5984 | * R3676 (0xE5C) - EQ4_11 | ||
| 5985 | */ | ||
| 5986 | #define ARIZONA_EQ4_B3_B_MASK 0xFFFF /* EQ4_B3_B - [15:0] */ | ||
| 5987 | #define ARIZONA_EQ4_B3_B_SHIFT 0 /* EQ4_B3_B - [15:0] */ | ||
| 5988 | #define ARIZONA_EQ4_B3_B_WIDTH 16 /* EQ4_B3_B - [15:0] */ | ||
| 5989 | |||
| 5990 | /* | ||
| 5991 | * R3677 (0xE5D) - EQ4_12 | ||
| 5992 | */ | ||
| 5993 | #define ARIZONA_EQ4_B3_C_MASK 0xFFFF /* EQ4_B3_C - [15:0] */ | ||
| 5994 | #define ARIZONA_EQ4_B3_C_SHIFT 0 /* EQ4_B3_C - [15:0] */ | ||
| 5995 | #define ARIZONA_EQ4_B3_C_WIDTH 16 /* EQ4_B3_C - [15:0] */ | ||
| 5996 | |||
| 5997 | /* | ||
| 5998 | * R3678 (0xE5E) - EQ4_13 | ||
| 5999 | */ | ||
| 6000 | #define ARIZONA_EQ4_B3_PG_MASK 0xFFFF /* EQ4_B3_PG - [15:0] */ | ||
| 6001 | #define ARIZONA_EQ4_B3_PG_SHIFT 0 /* EQ4_B3_PG - [15:0] */ | ||
| 6002 | #define ARIZONA_EQ4_B3_PG_WIDTH 16 /* EQ4_B3_PG - [15:0] */ | ||
| 6003 | |||
| 6004 | /* | ||
| 6005 | * R3679 (0xE5F) - EQ4_14 | ||
| 6006 | */ | ||
| 6007 | #define ARIZONA_EQ4_B4_A_MASK 0xFFFF /* EQ4_B4_A - [15:0] */ | ||
| 6008 | #define ARIZONA_EQ4_B4_A_SHIFT 0 /* EQ4_B4_A - [15:0] */ | ||
| 6009 | #define ARIZONA_EQ4_B4_A_WIDTH 16 /* EQ4_B4_A - [15:0] */ | ||
| 6010 | |||
| 6011 | /* | ||
| 6012 | * R3680 (0xE60) - EQ4_15 | ||
| 6013 | */ | ||
| 6014 | #define ARIZONA_EQ4_B4_B_MASK 0xFFFF /* EQ4_B4_B - [15:0] */ | ||
| 6015 | #define ARIZONA_EQ4_B4_B_SHIFT 0 /* EQ4_B4_B - [15:0] */ | ||
| 6016 | #define ARIZONA_EQ4_B4_B_WIDTH 16 /* EQ4_B4_B - [15:0] */ | ||
| 6017 | |||
| 6018 | /* | ||
| 6019 | * R3681 (0xE61) - EQ4_16 | ||
| 6020 | */ | ||
| 6021 | #define ARIZONA_EQ4_B4_C_MASK 0xFFFF /* EQ4_B4_C - [15:0] */ | ||
| 6022 | #define ARIZONA_EQ4_B4_C_SHIFT 0 /* EQ4_B4_C - [15:0] */ | ||
| 6023 | #define ARIZONA_EQ4_B4_C_WIDTH 16 /* EQ4_B4_C - [15:0] */ | ||
| 6024 | |||
| 6025 | /* | ||
| 6026 | * R3682 (0xE62) - EQ4_17 | ||
| 6027 | */ | ||
| 6028 | #define ARIZONA_EQ4_B4_PG_MASK 0xFFFF /* EQ4_B4_PG - [15:0] */ | ||
| 6029 | #define ARIZONA_EQ4_B4_PG_SHIFT 0 /* EQ4_B4_PG - [15:0] */ | ||
| 6030 | #define ARIZONA_EQ4_B4_PG_WIDTH 16 /* EQ4_B4_PG - [15:0] */ | ||
| 6031 | |||
| 6032 | /* | ||
| 6033 | * R3683 (0xE63) - EQ4_18 | ||
| 6034 | */ | ||
| 6035 | #define ARIZONA_EQ4_B5_A_MASK 0xFFFF /* EQ4_B5_A - [15:0] */ | ||
| 6036 | #define ARIZONA_EQ4_B5_A_SHIFT 0 /* EQ4_B5_A - [15:0] */ | ||
| 6037 | #define ARIZONA_EQ4_B5_A_WIDTH 16 /* EQ4_B5_A - [15:0] */ | ||
| 6038 | |||
| 6039 | /* | ||
| 6040 | * R3684 (0xE64) - EQ4_19 | ||
| 6041 | */ | ||
| 6042 | #define ARIZONA_EQ4_B5_B_MASK 0xFFFF /* EQ4_B5_B - [15:0] */ | ||
| 6043 | #define ARIZONA_EQ4_B5_B_SHIFT 0 /* EQ4_B5_B - [15:0] */ | ||
| 6044 | #define ARIZONA_EQ4_B5_B_WIDTH 16 /* EQ4_B5_B - [15:0] */ | ||
| 6045 | |||
| 6046 | /* | ||
| 6047 | * R3685 (0xE65) - EQ4_20 | ||
| 6048 | */ | ||
| 6049 | #define ARIZONA_EQ4_B5_PG_MASK 0xFFFF /* EQ4_B5_PG - [15:0] */ | ||
| 6050 | #define ARIZONA_EQ4_B5_PG_SHIFT 0 /* EQ4_B5_PG - [15:0] */ | ||
| 6051 | #define ARIZONA_EQ4_B5_PG_WIDTH 16 /* EQ4_B5_PG - [15:0] */ | ||
| 6052 | |||
| 6053 | /* | ||
| 6054 | * R3686 (0xE66) - EQ4_21 | ||
| 6055 | */ | ||
| 6056 | #define ARIZONA_EQ4_B1_C_MASK 0xFFFF /* EQ4_B1_C - [15:0] */ | ||
| 6057 | #define ARIZONA_EQ4_B1_C_SHIFT 0 /* EQ4_B1_C - [15:0] */ | ||
| 6058 | #define ARIZONA_EQ4_B1_C_WIDTH 16 /* EQ4_B1_C - [15:0] */ | ||
| 6059 | |||
| 6060 | /* | ||
| 6061 | * R3712 (0xE80) - DRC1 ctrl1 | ||
| 6062 | */ | ||
| 6063 | #define ARIZONA_DRC1_SIG_DET_RMS_MASK 0xF800 /* DRC1_SIG_DET_RMS - [15:11] */ | ||
| 6064 | #define ARIZONA_DRC1_SIG_DET_RMS_SHIFT 11 /* DRC1_SIG_DET_RMS - [15:11] */ | ||
| 6065 | #define ARIZONA_DRC1_SIG_DET_RMS_WIDTH 5 /* DRC1_SIG_DET_RMS - [15:11] */ | ||
| 6066 | #define ARIZONA_DRC1_SIG_DET_PK_MASK 0x0600 /* DRC1_SIG_DET_PK - [10:9] */ | ||
| 6067 | #define ARIZONA_DRC1_SIG_DET_PK_SHIFT 9 /* DRC1_SIG_DET_PK - [10:9] */ | ||
| 6068 | #define ARIZONA_DRC1_SIG_DET_PK_WIDTH 2 /* DRC1_SIG_DET_PK - [10:9] */ | ||
| 6069 | #define ARIZONA_DRC1_NG_ENA 0x0100 /* DRC1_NG_ENA */ | ||
| 6070 | #define ARIZONA_DRC1_NG_ENA_MASK 0x0100 /* DRC1_NG_ENA */ | ||
| 6071 | #define ARIZONA_DRC1_NG_ENA_SHIFT 8 /* DRC1_NG_ENA */ | ||
| 6072 | #define ARIZONA_DRC1_NG_ENA_WIDTH 1 /* DRC1_NG_ENA */ | ||
| 6073 | #define ARIZONA_DRC1_SIG_DET_MODE 0x0080 /* DRC1_SIG_DET_MODE */ | ||
| 6074 | #define ARIZONA_DRC1_SIG_DET_MODE_MASK 0x0080 /* DRC1_SIG_DET_MODE */ | ||
| 6075 | #define ARIZONA_DRC1_SIG_DET_MODE_SHIFT 7 /* DRC1_SIG_DET_MODE */ | ||
| 6076 | #define ARIZONA_DRC1_SIG_DET_MODE_WIDTH 1 /* DRC1_SIG_DET_MODE */ | ||
| 6077 | #define ARIZONA_DRC1_SIG_DET 0x0040 /* DRC1_SIG_DET */ | ||
| 6078 | #define ARIZONA_DRC1_SIG_DET_MASK 0x0040 /* DRC1_SIG_DET */ | ||
| 6079 | #define ARIZONA_DRC1_SIG_DET_SHIFT 6 /* DRC1_SIG_DET */ | ||
| 6080 | #define ARIZONA_DRC1_SIG_DET_WIDTH 1 /* DRC1_SIG_DET */ | ||
| 6081 | #define ARIZONA_DRC1_KNEE2_OP_ENA 0x0020 /* DRC1_KNEE2_OP_ENA */ | ||
| 6082 | #define ARIZONA_DRC1_KNEE2_OP_ENA_MASK 0x0020 /* DRC1_KNEE2_OP_ENA */ | ||
| 6083 | #define ARIZONA_DRC1_KNEE2_OP_ENA_SHIFT 5 /* DRC1_KNEE2_OP_ENA */ | ||
| 6084 | #define ARIZONA_DRC1_KNEE2_OP_ENA_WIDTH 1 /* DRC1_KNEE2_OP_ENA */ | ||
| 6085 | #define ARIZONA_DRC1_QR 0x0010 /* DRC1_QR */ | ||
| 6086 | #define ARIZONA_DRC1_QR_MASK 0x0010 /* DRC1_QR */ | ||
| 6087 | #define ARIZONA_DRC1_QR_SHIFT 4 /* DRC1_QR */ | ||
| 6088 | #define ARIZONA_DRC1_QR_WIDTH 1 /* DRC1_QR */ | ||
| 6089 | #define ARIZONA_DRC1_ANTICLIP 0x0008 /* DRC1_ANTICLIP */ | ||
| 6090 | #define ARIZONA_DRC1_ANTICLIP_MASK 0x0008 /* DRC1_ANTICLIP */ | ||
| 6091 | #define ARIZONA_DRC1_ANTICLIP_SHIFT 3 /* DRC1_ANTICLIP */ | ||
| 6092 | #define ARIZONA_DRC1_ANTICLIP_WIDTH 1 /* DRC1_ANTICLIP */ | ||
| 6093 | #define ARIZONA_DRC1L_ENA 0x0002 /* DRC1L_ENA */ | ||
| 6094 | #define ARIZONA_DRC1L_ENA_MASK 0x0002 /* DRC1L_ENA */ | ||
| 6095 | #define ARIZONA_DRC1L_ENA_SHIFT 1 /* DRC1L_ENA */ | ||
| 6096 | #define ARIZONA_DRC1L_ENA_WIDTH 1 /* DRC1L_ENA */ | ||
| 6097 | #define ARIZONA_DRC1R_ENA 0x0001 /* DRC1R_ENA */ | ||
| 6098 | #define ARIZONA_DRC1R_ENA_MASK 0x0001 /* DRC1R_ENA */ | ||
| 6099 | #define ARIZONA_DRC1R_ENA_SHIFT 0 /* DRC1R_ENA */ | ||
| 6100 | #define ARIZONA_DRC1R_ENA_WIDTH 1 /* DRC1R_ENA */ | ||
| 6101 | |||
| 6102 | /* | ||
| 6103 | * R3713 (0xE81) - DRC1 ctrl2 | ||
| 6104 | */ | ||
| 6105 | #define ARIZONA_DRC1_ATK_MASK 0x1E00 /* DRC1_ATK - [12:9] */ | ||
| 6106 | #define ARIZONA_DRC1_ATK_SHIFT 9 /* DRC1_ATK - [12:9] */ | ||
| 6107 | #define ARIZONA_DRC1_ATK_WIDTH 4 /* DRC1_ATK - [12:9] */ | ||
| 6108 | #define ARIZONA_DRC1_DCY_MASK 0x01E0 /* DRC1_DCY - [8:5] */ | ||
| 6109 | #define ARIZONA_DRC1_DCY_SHIFT 5 /* DRC1_DCY - [8:5] */ | ||
| 6110 | #define ARIZONA_DRC1_DCY_WIDTH 4 /* DRC1_DCY - [8:5] */ | ||
| 6111 | #define ARIZONA_DRC1_MINGAIN_MASK 0x001C /* DRC1_MINGAIN - [4:2] */ | ||
| 6112 | #define ARIZONA_DRC1_MINGAIN_SHIFT 2 /* DRC1_MINGAIN - [4:2] */ | ||
| 6113 | #define ARIZONA_DRC1_MINGAIN_WIDTH 3 /* DRC1_MINGAIN - [4:2] */ | ||
| 6114 | #define ARIZONA_DRC1_MAXGAIN_MASK 0x0003 /* DRC1_MAXGAIN - [1:0] */ | ||
| 6115 | #define ARIZONA_DRC1_MAXGAIN_SHIFT 0 /* DRC1_MAXGAIN - [1:0] */ | ||
| 6116 | #define ARIZONA_DRC1_MAXGAIN_WIDTH 2 /* DRC1_MAXGAIN - [1:0] */ | ||
| 6117 | |||
| 6118 | /* | ||
| 6119 | * R3714 (0xE82) - DRC1 ctrl3 | ||
| 6120 | */ | ||
| 6121 | #define ARIZONA_DRC1_NG_MINGAIN_MASK 0xF000 /* DRC1_NG_MINGAIN - [15:12] */ | ||
| 6122 | #define ARIZONA_DRC1_NG_MINGAIN_SHIFT 12 /* DRC1_NG_MINGAIN - [15:12] */ | ||
| 6123 | #define ARIZONA_DRC1_NG_MINGAIN_WIDTH 4 /* DRC1_NG_MINGAIN - [15:12] */ | ||
| 6124 | #define ARIZONA_DRC1_NG_EXP_MASK 0x0C00 /* DRC1_NG_EXP - [11:10] */ | ||
| 6125 | #define ARIZONA_DRC1_NG_EXP_SHIFT 10 /* DRC1_NG_EXP - [11:10] */ | ||
| 6126 | #define ARIZONA_DRC1_NG_EXP_WIDTH 2 /* DRC1_NG_EXP - [11:10] */ | ||
| 6127 | #define ARIZONA_DRC1_QR_THR_MASK 0x0300 /* DRC1_QR_THR - [9:8] */ | ||
| 6128 | #define ARIZONA_DRC1_QR_THR_SHIFT 8 /* DRC1_QR_THR - [9:8] */ | ||
| 6129 | #define ARIZONA_DRC1_QR_THR_WIDTH 2 /* DRC1_QR_THR - [9:8] */ | ||
| 6130 | #define ARIZONA_DRC1_QR_DCY_MASK 0x00C0 /* DRC1_QR_DCY - [7:6] */ | ||
| 6131 | #define ARIZONA_DRC1_QR_DCY_SHIFT 6 /* DRC1_QR_DCY - [7:6] */ | ||
| 6132 | #define ARIZONA_DRC1_QR_DCY_WIDTH 2 /* DRC1_QR_DCY - [7:6] */ | ||
| 6133 | #define ARIZONA_DRC1_HI_COMP_MASK 0x0038 /* DRC1_HI_COMP - [5:3] */ | ||
| 6134 | #define ARIZONA_DRC1_HI_COMP_SHIFT 3 /* DRC1_HI_COMP - [5:3] */ | ||
| 6135 | #define ARIZONA_DRC1_HI_COMP_WIDTH 3 /* DRC1_HI_COMP - [5:3] */ | ||
| 6136 | #define ARIZONA_DRC1_LO_COMP_MASK 0x0007 /* DRC1_LO_COMP - [2:0] */ | ||
| 6137 | #define ARIZONA_DRC1_LO_COMP_SHIFT 0 /* DRC1_LO_COMP - [2:0] */ | ||
| 6138 | #define ARIZONA_DRC1_LO_COMP_WIDTH 3 /* DRC1_LO_COMP - [2:0] */ | ||
| 6139 | |||
| 6140 | /* | ||
| 6141 | * R3715 (0xE83) - DRC1 ctrl4 | ||
| 6142 | */ | ||
| 6143 | #define ARIZONA_DRC1_KNEE_IP_MASK 0x07E0 /* DRC1_KNEE_IP - [10:5] */ | ||
| 6144 | #define ARIZONA_DRC1_KNEE_IP_SHIFT 5 /* DRC1_KNEE_IP - [10:5] */ | ||
| 6145 | #define ARIZONA_DRC1_KNEE_IP_WIDTH 6 /* DRC1_KNEE_IP - [10:5] */ | ||
| 6146 | #define ARIZONA_DRC1_KNEE_OP_MASK 0x001F /* DRC1_KNEE_OP - [4:0] */ | ||
| 6147 | #define ARIZONA_DRC1_KNEE_OP_SHIFT 0 /* DRC1_KNEE_OP - [4:0] */ | ||
| 6148 | #define ARIZONA_DRC1_KNEE_OP_WIDTH 5 /* DRC1_KNEE_OP - [4:0] */ | ||
| 6149 | |||
| 6150 | /* | ||
| 6151 | * R3716 (0xE84) - DRC1 ctrl5 | ||
| 6152 | */ | ||
| 6153 | #define ARIZONA_DRC1_KNEE2_IP_MASK 0x03E0 /* DRC1_KNEE2_IP - [9:5] */ | ||
| 6154 | #define ARIZONA_DRC1_KNEE2_IP_SHIFT 5 /* DRC1_KNEE2_IP - [9:5] */ | ||
| 6155 | #define ARIZONA_DRC1_KNEE2_IP_WIDTH 5 /* DRC1_KNEE2_IP - [9:5] */ | ||
| 6156 | #define ARIZONA_DRC1_KNEE2_OP_MASK 0x001F /* DRC1_KNEE2_OP - [4:0] */ | ||
| 6157 | #define ARIZONA_DRC1_KNEE2_OP_SHIFT 0 /* DRC1_KNEE2_OP - [4:0] */ | ||
| 6158 | #define ARIZONA_DRC1_KNEE2_OP_WIDTH 5 /* DRC1_KNEE2_OP - [4:0] */ | ||
| 6159 | |||
| 6160 | /* | ||
| 6161 | * R3721 (0xE89) - DRC2 ctrl1 | ||
| 6162 | */ | ||
| 6163 | #define ARIZONA_DRC2_SIG_DET_RMS_MASK 0xF800 /* DRC2_SIG_DET_RMS - [15:11] */ | ||
| 6164 | #define ARIZONA_DRC2_SIG_DET_RMS_SHIFT 11 /* DRC2_SIG_DET_RMS - [15:11] */ | ||
| 6165 | #define ARIZONA_DRC2_SIG_DET_RMS_WIDTH 5 /* DRC2_SIG_DET_RMS - [15:11] */ | ||
| 6166 | #define ARIZONA_DRC2_SIG_DET_PK_MASK 0x0600 /* DRC2_SIG_DET_PK - [10:9] */ | ||
| 6167 | #define ARIZONA_DRC2_SIG_DET_PK_SHIFT 9 /* DRC2_SIG_DET_PK - [10:9] */ | ||
| 6168 | #define ARIZONA_DRC2_SIG_DET_PK_WIDTH 2 /* DRC2_SIG_DET_PK - [10:9] */ | ||
| 6169 | #define ARIZONA_DRC2_NG_ENA 0x0100 /* DRC2_NG_ENA */ | ||
| 6170 | #define ARIZONA_DRC2_NG_ENA_MASK 0x0100 /* DRC2_NG_ENA */ | ||
| 6171 | #define ARIZONA_DRC2_NG_ENA_SHIFT 8 /* DRC2_NG_ENA */ | ||
| 6172 | #define ARIZONA_DRC2_NG_ENA_WIDTH 1 /* DRC2_NG_ENA */ | ||
| 6173 | #define ARIZONA_DRC2_SIG_DET_MODE 0x0080 /* DRC2_SIG_DET_MODE */ | ||
| 6174 | #define ARIZONA_DRC2_SIG_DET_MODE_MASK 0x0080 /* DRC2_SIG_DET_MODE */ | ||
| 6175 | #define ARIZONA_DRC2_SIG_DET_MODE_SHIFT 7 /* DRC2_SIG_DET_MODE */ | ||
| 6176 | #define ARIZONA_DRC2_SIG_DET_MODE_WIDTH 1 /* DRC2_SIG_DET_MODE */ | ||
| 6177 | #define ARIZONA_DRC2_SIG_DET 0x0040 /* DRC2_SIG_DET */ | ||
| 6178 | #define ARIZONA_DRC2_SIG_DET_MASK 0x0040 /* DRC2_SIG_DET */ | ||
| 6179 | #define ARIZONA_DRC2_SIG_DET_SHIFT 6 /* DRC2_SIG_DET */ | ||
| 6180 | #define ARIZONA_DRC2_SIG_DET_WIDTH 1 /* DRC2_SIG_DET */ | ||
| 6181 | #define ARIZONA_DRC2_KNEE2_OP_ENA 0x0020 /* DRC2_KNEE2_OP_ENA */ | ||
| 6182 | #define ARIZONA_DRC2_KNEE2_OP_ENA_MASK 0x0020 /* DRC2_KNEE2_OP_ENA */ | ||
| 6183 | #define ARIZONA_DRC2_KNEE2_OP_ENA_SHIFT 5 /* DRC2_KNEE2_OP_ENA */ | ||
| 6184 | #define ARIZONA_DRC2_KNEE2_OP_ENA_WIDTH 1 /* DRC2_KNEE2_OP_ENA */ | ||
| 6185 | #define ARIZONA_DRC2_QR 0x0010 /* DRC2_QR */ | ||
| 6186 | #define ARIZONA_DRC2_QR_MASK 0x0010 /* DRC2_QR */ | ||
| 6187 | #define ARIZONA_DRC2_QR_SHIFT 4 /* DRC2_QR */ | ||
| 6188 | #define ARIZONA_DRC2_QR_WIDTH 1 /* DRC2_QR */ | ||
| 6189 | #define ARIZONA_DRC2_ANTICLIP 0x0008 /* DRC2_ANTICLIP */ | ||
| 6190 | #define ARIZONA_DRC2_ANTICLIP_MASK 0x0008 /* DRC2_ANTICLIP */ | ||
| 6191 | #define ARIZONA_DRC2_ANTICLIP_SHIFT 3 /* DRC2_ANTICLIP */ | ||
| 6192 | #define ARIZONA_DRC2_ANTICLIP_WIDTH 1 /* DRC2_ANTICLIP */ | ||
| 6193 | #define ARIZONA_DRC2L_ENA 0x0002 /* DRC2L_ENA */ | ||
| 6194 | #define ARIZONA_DRC2L_ENA_MASK 0x0002 /* DRC2L_ENA */ | ||
| 6195 | #define ARIZONA_DRC2L_ENA_SHIFT 1 /* DRC2L_ENA */ | ||
| 6196 | #define ARIZONA_DRC2L_ENA_WIDTH 1 /* DRC2L_ENA */ | ||
| 6197 | #define ARIZONA_DRC2R_ENA 0x0001 /* DRC2R_ENA */ | ||
| 6198 | #define ARIZONA_DRC2R_ENA_MASK 0x0001 /* DRC2R_ENA */ | ||
| 6199 | #define ARIZONA_DRC2R_ENA_SHIFT 0 /* DRC2R_ENA */ | ||
| 6200 | #define ARIZONA_DRC2R_ENA_WIDTH 1 /* DRC2R_ENA */ | ||
| 6201 | |||
| 6202 | /* | ||
| 6203 | * R3722 (0xE8A) - DRC2 ctrl2 | ||
| 6204 | */ | ||
| 6205 | #define ARIZONA_DRC2_ATK_MASK 0x1E00 /* DRC2_ATK - [12:9] */ | ||
| 6206 | #define ARIZONA_DRC2_ATK_SHIFT 9 /* DRC2_ATK - [12:9] */ | ||
| 6207 | #define ARIZONA_DRC2_ATK_WIDTH 4 /* DRC2_ATK - [12:9] */ | ||
| 6208 | #define ARIZONA_DRC2_DCY_MASK 0x01E0 /* DRC2_DCY - [8:5] */ | ||
| 6209 | #define ARIZONA_DRC2_DCY_SHIFT 5 /* DRC2_DCY - [8:5] */ | ||
| 6210 | #define ARIZONA_DRC2_DCY_WIDTH 4 /* DRC2_DCY - [8:5] */ | ||
| 6211 | #define ARIZONA_DRC2_MINGAIN_MASK 0x001C /* DRC2_MINGAIN - [4:2] */ | ||
| 6212 | #define ARIZONA_DRC2_MINGAIN_SHIFT 2 /* DRC2_MINGAIN - [4:2] */ | ||
| 6213 | #define ARIZONA_DRC2_MINGAIN_WIDTH 3 /* DRC2_MINGAIN - [4:2] */ | ||
| 6214 | #define ARIZONA_DRC2_MAXGAIN_MASK 0x0003 /* DRC2_MAXGAIN - [1:0] */ | ||
| 6215 | #define ARIZONA_DRC2_MAXGAIN_SHIFT 0 /* DRC2_MAXGAIN - [1:0] */ | ||
| 6216 | #define ARIZONA_DRC2_MAXGAIN_WIDTH 2 /* DRC2_MAXGAIN - [1:0] */ | ||
| 6217 | |||
| 6218 | /* | ||
| 6219 | * R3723 (0xE8B) - DRC2 ctrl3 | ||
| 6220 | */ | ||
| 6221 | #define ARIZONA_DRC2_NG_MINGAIN_MASK 0xF000 /* DRC2_NG_MINGAIN - [15:12] */ | ||
| 6222 | #define ARIZONA_DRC2_NG_MINGAIN_SHIFT 12 /* DRC2_NG_MINGAIN - [15:12] */ | ||
| 6223 | #define ARIZONA_DRC2_NG_MINGAIN_WIDTH 4 /* DRC2_NG_MINGAIN - [15:12] */ | ||
| 6224 | #define ARIZONA_DRC2_NG_EXP_MASK 0x0C00 /* DRC2_NG_EXP - [11:10] */ | ||
| 6225 | #define ARIZONA_DRC2_NG_EXP_SHIFT 10 /* DRC2_NG_EXP - [11:10] */ | ||
| 6226 | #define ARIZONA_DRC2_NG_EXP_WIDTH 2 /* DRC2_NG_EXP - [11:10] */ | ||
| 6227 | #define ARIZONA_DRC2_QR_THR_MASK 0x0300 /* DRC2_QR_THR - [9:8] */ | ||
| 6228 | #define ARIZONA_DRC2_QR_THR_SHIFT 8 /* DRC2_QR_THR - [9:8] */ | ||
| 6229 | #define ARIZONA_DRC2_QR_THR_WIDTH 2 /* DRC2_QR_THR - [9:8] */ | ||
| 6230 | #define ARIZONA_DRC2_QR_DCY_MASK 0x00C0 /* DRC2_QR_DCY - [7:6] */ | ||
| 6231 | #define ARIZONA_DRC2_QR_DCY_SHIFT 6 /* DRC2_QR_DCY - [7:6] */ | ||
| 6232 | #define ARIZONA_DRC2_QR_DCY_WIDTH 2 /* DRC2_QR_DCY - [7:6] */ | ||
| 6233 | #define ARIZONA_DRC2_HI_COMP_MASK 0x0038 /* DRC2_HI_COMP - [5:3] */ | ||
| 6234 | #define ARIZONA_DRC2_HI_COMP_SHIFT 3 /* DRC2_HI_COMP - [5:3] */ | ||
| 6235 | #define ARIZONA_DRC2_HI_COMP_WIDTH 3 /* DRC2_HI_COMP - [5:3] */ | ||
| 6236 | #define ARIZONA_DRC2_LO_COMP_MASK 0x0007 /* DRC2_LO_COMP - [2:0] */ | ||
| 6237 | #define ARIZONA_DRC2_LO_COMP_SHIFT 0 /* DRC2_LO_COMP - [2:0] */ | ||
| 6238 | #define ARIZONA_DRC2_LO_COMP_WIDTH 3 /* DRC2_LO_COMP - [2:0] */ | ||
| 6239 | |||
| 6240 | /* | ||
| 6241 | * R3724 (0xE8C) - DRC2 ctrl4 | ||
| 6242 | */ | ||
| 6243 | #define ARIZONA_DRC2_KNEE_IP_MASK 0x07E0 /* DRC2_KNEE_IP - [10:5] */ | ||
| 6244 | #define ARIZONA_DRC2_KNEE_IP_SHIFT 5 /* DRC2_KNEE_IP - [10:5] */ | ||
| 6245 | #define ARIZONA_DRC2_KNEE_IP_WIDTH 6 /* DRC2_KNEE_IP - [10:5] */ | ||
| 6246 | #define ARIZONA_DRC2_KNEE_OP_MASK 0x001F /* DRC2_KNEE_OP - [4:0] */ | ||
| 6247 | #define ARIZONA_DRC2_KNEE_OP_SHIFT 0 /* DRC2_KNEE_OP - [4:0] */ | ||
| 6248 | #define ARIZONA_DRC2_KNEE_OP_WIDTH 5 /* DRC2_KNEE_OP - [4:0] */ | ||
| 6249 | |||
| 6250 | /* | ||
| 6251 | * R3725 (0xE8D) - DRC2 ctrl5 | ||
| 6252 | */ | ||
| 6253 | #define ARIZONA_DRC2_KNEE2_IP_MASK 0x03E0 /* DRC2_KNEE2_IP - [9:5] */ | ||
| 6254 | #define ARIZONA_DRC2_KNEE2_IP_SHIFT 5 /* DRC2_KNEE2_IP - [9:5] */ | ||
| 6255 | #define ARIZONA_DRC2_KNEE2_IP_WIDTH 5 /* DRC2_KNEE2_IP - [9:5] */ | ||
| 6256 | #define ARIZONA_DRC2_KNEE2_OP_MASK 0x001F /* DRC2_KNEE2_OP - [4:0] */ | ||
| 6257 | #define ARIZONA_DRC2_KNEE2_OP_SHIFT 0 /* DRC2_KNEE2_OP - [4:0] */ | ||
| 6258 | #define ARIZONA_DRC2_KNEE2_OP_WIDTH 5 /* DRC2_KNEE2_OP - [4:0] */ | ||
| 6259 | |||
| 6260 | /* | ||
| 6261 | * R3776 (0xEC0) - HPLPF1_1 | ||
| 6262 | */ | ||
| 6263 | #define ARIZONA_LHPF1_MODE 0x0002 /* LHPF1_MODE */ | ||
| 6264 | #define ARIZONA_LHPF1_MODE_MASK 0x0002 /* LHPF1_MODE */ | ||
| 6265 | #define ARIZONA_LHPF1_MODE_SHIFT 1 /* LHPF1_MODE */ | ||
| 6266 | #define ARIZONA_LHPF1_MODE_WIDTH 1 /* LHPF1_MODE */ | ||
| 6267 | #define ARIZONA_LHPF1_ENA 0x0001 /* LHPF1_ENA */ | ||
| 6268 | #define ARIZONA_LHPF1_ENA_MASK 0x0001 /* LHPF1_ENA */ | ||
| 6269 | #define ARIZONA_LHPF1_ENA_SHIFT 0 /* LHPF1_ENA */ | ||
| 6270 | #define ARIZONA_LHPF1_ENA_WIDTH 1 /* LHPF1_ENA */ | ||
| 6271 | |||
| 6272 | /* | ||
| 6273 | * R3777 (0xEC1) - HPLPF1_2 | ||
| 6274 | */ | ||
| 6275 | #define ARIZONA_LHPF1_COEFF_MASK 0xFFFF /* LHPF1_COEFF - [15:0] */ | ||
| 6276 | #define ARIZONA_LHPF1_COEFF_SHIFT 0 /* LHPF1_COEFF - [15:0] */ | ||
| 6277 | #define ARIZONA_LHPF1_COEFF_WIDTH 16 /* LHPF1_COEFF - [15:0] */ | ||
| 6278 | |||
| 6279 | /* | ||
| 6280 | * R3780 (0xEC4) - HPLPF2_1 | ||
| 6281 | */ | ||
| 6282 | #define ARIZONA_LHPF2_MODE 0x0002 /* LHPF2_MODE */ | ||
| 6283 | #define ARIZONA_LHPF2_MODE_MASK 0x0002 /* LHPF2_MODE */ | ||
| 6284 | #define ARIZONA_LHPF2_MODE_SHIFT 1 /* LHPF2_MODE */ | ||
| 6285 | #define ARIZONA_LHPF2_MODE_WIDTH 1 /* LHPF2_MODE */ | ||
| 6286 | #define ARIZONA_LHPF2_ENA 0x0001 /* LHPF2_ENA */ | ||
| 6287 | #define ARIZONA_LHPF2_ENA_MASK 0x0001 /* LHPF2_ENA */ | ||
| 6288 | #define ARIZONA_LHPF2_ENA_SHIFT 0 /* LHPF2_ENA */ | ||
| 6289 | #define ARIZONA_LHPF2_ENA_WIDTH 1 /* LHPF2_ENA */ | ||
| 6290 | |||
| 6291 | /* | ||
| 6292 | * R3781 (0xEC5) - HPLPF2_2 | ||
| 6293 | */ | ||
| 6294 | #define ARIZONA_LHPF2_COEFF_MASK 0xFFFF /* LHPF2_COEFF - [15:0] */ | ||
| 6295 | #define ARIZONA_LHPF2_COEFF_SHIFT 0 /* LHPF2_COEFF - [15:0] */ | ||
| 6296 | #define ARIZONA_LHPF2_COEFF_WIDTH 16 /* LHPF2_COEFF - [15:0] */ | ||
| 6297 | |||
| 6298 | /* | ||
| 6299 | * R3784 (0xEC8) - HPLPF3_1 | ||
| 6300 | */ | ||
| 6301 | #define ARIZONA_LHPF3_MODE 0x0002 /* LHPF3_MODE */ | ||
| 6302 | #define ARIZONA_LHPF3_MODE_MASK 0x0002 /* LHPF3_MODE */ | ||
| 6303 | #define ARIZONA_LHPF3_MODE_SHIFT 1 /* LHPF3_MODE */ | ||
| 6304 | #define ARIZONA_LHPF3_MODE_WIDTH 1 /* LHPF3_MODE */ | ||
| 6305 | #define ARIZONA_LHPF3_ENA 0x0001 /* LHPF3_ENA */ | ||
| 6306 | #define ARIZONA_LHPF3_ENA_MASK 0x0001 /* LHPF3_ENA */ | ||
| 6307 | #define ARIZONA_LHPF3_ENA_SHIFT 0 /* LHPF3_ENA */ | ||
| 6308 | #define ARIZONA_LHPF3_ENA_WIDTH 1 /* LHPF3_ENA */ | ||
| 6309 | |||
| 6310 | /* | ||
| 6311 | * R3785 (0xEC9) - HPLPF3_2 | ||
| 6312 | */ | ||
| 6313 | #define ARIZONA_LHPF3_COEFF_MASK 0xFFFF /* LHPF3_COEFF - [15:0] */ | ||
| 6314 | #define ARIZONA_LHPF3_COEFF_SHIFT 0 /* LHPF3_COEFF - [15:0] */ | ||
| 6315 | #define ARIZONA_LHPF3_COEFF_WIDTH 16 /* LHPF3_COEFF - [15:0] */ | ||
| 6316 | |||
| 6317 | /* | ||
| 6318 | * R3788 (0xECC) - HPLPF4_1 | ||
| 6319 | */ | ||
| 6320 | #define ARIZONA_LHPF4_MODE 0x0002 /* LHPF4_MODE */ | ||
| 6321 | #define ARIZONA_LHPF4_MODE_MASK 0x0002 /* LHPF4_MODE */ | ||
| 6322 | #define ARIZONA_LHPF4_MODE_SHIFT 1 /* LHPF4_MODE */ | ||
| 6323 | #define ARIZONA_LHPF4_MODE_WIDTH 1 /* LHPF4_MODE */ | ||
| 6324 | #define ARIZONA_LHPF4_ENA 0x0001 /* LHPF4_ENA */ | ||
| 6325 | #define ARIZONA_LHPF4_ENA_MASK 0x0001 /* LHPF4_ENA */ | ||
| 6326 | #define ARIZONA_LHPF4_ENA_SHIFT 0 /* LHPF4_ENA */ | ||
| 6327 | #define ARIZONA_LHPF4_ENA_WIDTH 1 /* LHPF4_ENA */ | ||
| 6328 | |||
| 6329 | /* | ||
| 6330 | * R3789 (0xECD) - HPLPF4_2 | ||
| 6331 | */ | ||
| 6332 | #define ARIZONA_LHPF4_COEFF_MASK 0xFFFF /* LHPF4_COEFF - [15:0] */ | ||
| 6333 | #define ARIZONA_LHPF4_COEFF_SHIFT 0 /* LHPF4_COEFF - [15:0] */ | ||
| 6334 | #define ARIZONA_LHPF4_COEFF_WIDTH 16 /* LHPF4_COEFF - [15:0] */ | ||
| 6335 | |||
| 6336 | /* | ||
| 6337 | * R3808 (0xEE0) - ASRC_ENABLE | ||
| 6338 | */ | ||
| 6339 | #define ARIZONA_ASRC2L_ENA 0x0008 /* ASRC2L_ENA */ | ||
| 6340 | #define ARIZONA_ASRC2L_ENA_MASK 0x0008 /* ASRC2L_ENA */ | ||
| 6341 | #define ARIZONA_ASRC2L_ENA_SHIFT 3 /* ASRC2L_ENA */ | ||
| 6342 | #define ARIZONA_ASRC2L_ENA_WIDTH 1 /* ASRC2L_ENA */ | ||
| 6343 | #define ARIZONA_ASRC2R_ENA 0x0004 /* ASRC2R_ENA */ | ||
| 6344 | #define ARIZONA_ASRC2R_ENA_MASK 0x0004 /* ASRC2R_ENA */ | ||
| 6345 | #define ARIZONA_ASRC2R_ENA_SHIFT 2 /* ASRC2R_ENA */ | ||
| 6346 | #define ARIZONA_ASRC2R_ENA_WIDTH 1 /* ASRC2R_ENA */ | ||
| 6347 | #define ARIZONA_ASRC1L_ENA 0x0002 /* ASRC1L_ENA */ | ||
| 6348 | #define ARIZONA_ASRC1L_ENA_MASK 0x0002 /* ASRC1L_ENA */ | ||
| 6349 | #define ARIZONA_ASRC1L_ENA_SHIFT 1 /* ASRC1L_ENA */ | ||
| 6350 | #define ARIZONA_ASRC1L_ENA_WIDTH 1 /* ASRC1L_ENA */ | ||
| 6351 | #define ARIZONA_ASRC1R_ENA 0x0001 /* ASRC1R_ENA */ | ||
| 6352 | #define ARIZONA_ASRC1R_ENA_MASK 0x0001 /* ASRC1R_ENA */ | ||
| 6353 | #define ARIZONA_ASRC1R_ENA_SHIFT 0 /* ASRC1R_ENA */ | ||
| 6354 | #define ARIZONA_ASRC1R_ENA_WIDTH 1 /* ASRC1R_ENA */ | ||
| 6355 | |||
| 6356 | /* | ||
| 6357 | * R3810 (0xEE2) - ASRC_RATE1 | ||
| 6358 | */ | ||
| 6359 | #define ARIZONA_ASRC_RATE1_MASK 0x7800 /* ASRC_RATE1 - [14:11] */ | ||
| 6360 | #define ARIZONA_ASRC_RATE1_SHIFT 11 /* ASRC_RATE1 - [14:11] */ | ||
| 6361 | #define ARIZONA_ASRC_RATE1_WIDTH 4 /* ASRC_RATE1 - [14:11] */ | ||
| 6362 | |||
| 6363 | /* | ||
| 6364 | * R3811 (0xEE3) - ASRC_RATE2 | ||
| 6365 | */ | ||
| 6366 | #define ARIZONA_ASRC_RATE2_MASK 0x7800 /* ASRC_RATE2 - [14:11] */ | ||
| 6367 | #define ARIZONA_ASRC_RATE2_SHIFT 11 /* ASRC_RATE2 - [14:11] */ | ||
| 6368 | #define ARIZONA_ASRC_RATE2_WIDTH 4 /* ASRC_RATE2 - [14:11] */ | ||
| 6369 | |||
| 6370 | /* | ||
| 6371 | * R3824 (0xEF0) - ISRC 1 CTRL 1 | ||
| 6372 | */ | ||
| 6373 | #define ARIZONA_ISRC1_FSH_MASK 0x7800 /* ISRC1_FSH - [14:11] */ | ||
| 6374 | #define ARIZONA_ISRC1_FSH_SHIFT 11 /* ISRC1_FSH - [14:11] */ | ||
| 6375 | #define ARIZONA_ISRC1_FSH_WIDTH 4 /* ISRC1_FSH - [14:11] */ | ||
| 6376 | #define ARIZONA_ISRC1_CLK_SEL_MASK 0x0700 /* ISRC1_CLK_SEL - [10:8] */ | ||
| 6377 | #define ARIZONA_ISRC1_CLK_SEL_SHIFT 8 /* ISRC1_CLK_SEL - [10:8] */ | ||
| 6378 | #define ARIZONA_ISRC1_CLK_SEL_WIDTH 3 /* ISRC1_CLK_SEL - [10:8] */ | ||
| 6379 | |||
| 6380 | /* | ||
| 6381 | * R3825 (0xEF1) - ISRC 1 CTRL 2 | ||
| 6382 | */ | ||
| 6383 | #define ARIZONA_ISRC1_FSL_MASK 0x7800 /* ISRC1_FSL - [14:11] */ | ||
| 6384 | #define ARIZONA_ISRC1_FSL_SHIFT 11 /* ISRC1_FSL - [14:11] */ | ||
| 6385 | #define ARIZONA_ISRC1_FSL_WIDTH 4 /* ISRC1_FSL - [14:11] */ | ||
| 6386 | |||
| 6387 | /* | ||
| 6388 | * R3826 (0xEF2) - ISRC 1 CTRL 3 | ||
| 6389 | */ | ||
| 6390 | #define ARIZONA_ISRC1_INT0_ENA 0x8000 /* ISRC1_INT0_ENA */ | ||
| 6391 | #define ARIZONA_ISRC1_INT0_ENA_MASK 0x8000 /* ISRC1_INT0_ENA */ | ||
| 6392 | #define ARIZONA_ISRC1_INT0_ENA_SHIFT 15 /* ISRC1_INT0_ENA */ | ||
| 6393 | #define ARIZONA_ISRC1_INT0_ENA_WIDTH 1 /* ISRC1_INT0_ENA */ | ||
| 6394 | #define ARIZONA_ISRC1_INT1_ENA 0x4000 /* ISRC1_INT1_ENA */ | ||
| 6395 | #define ARIZONA_ISRC1_INT1_ENA_MASK 0x4000 /* ISRC1_INT1_ENA */ | ||
| 6396 | #define ARIZONA_ISRC1_INT1_ENA_SHIFT 14 /* ISRC1_INT1_ENA */ | ||
| 6397 | #define ARIZONA_ISRC1_INT1_ENA_WIDTH 1 /* ISRC1_INT1_ENA */ | ||
| 6398 | #define ARIZONA_ISRC1_INT2_ENA 0x2000 /* ISRC1_INT2_ENA */ | ||
| 6399 | #define ARIZONA_ISRC1_INT2_ENA_MASK 0x2000 /* ISRC1_INT2_ENA */ | ||
| 6400 | #define ARIZONA_ISRC1_INT2_ENA_SHIFT 13 /* ISRC1_INT2_ENA */ | ||
| 6401 | #define ARIZONA_ISRC1_INT2_ENA_WIDTH 1 /* ISRC1_INT2_ENA */ | ||
| 6402 | #define ARIZONA_ISRC1_INT3_ENA 0x1000 /* ISRC1_INT3_ENA */ | ||
| 6403 | #define ARIZONA_ISRC1_INT3_ENA_MASK 0x1000 /* ISRC1_INT3_ENA */ | ||
| 6404 | #define ARIZONA_ISRC1_INT3_ENA_SHIFT 12 /* ISRC1_INT3_ENA */ | ||
| 6405 | #define ARIZONA_ISRC1_INT3_ENA_WIDTH 1 /* ISRC1_INT3_ENA */ | ||
| 6406 | #define ARIZONA_ISRC1_DEC0_ENA 0x0200 /* ISRC1_DEC0_ENA */ | ||
| 6407 | #define ARIZONA_ISRC1_DEC0_ENA_MASK 0x0200 /* ISRC1_DEC0_ENA */ | ||
| 6408 | #define ARIZONA_ISRC1_DEC0_ENA_SHIFT 9 /* ISRC1_DEC0_ENA */ | ||
| 6409 | #define ARIZONA_ISRC1_DEC0_ENA_WIDTH 1 /* ISRC1_DEC0_ENA */ | ||
| 6410 | #define ARIZONA_ISRC1_DEC1_ENA 0x0100 /* ISRC1_DEC1_ENA */ | ||
| 6411 | #define ARIZONA_ISRC1_DEC1_ENA_MASK 0x0100 /* ISRC1_DEC1_ENA */ | ||
| 6412 | #define ARIZONA_ISRC1_DEC1_ENA_SHIFT 8 /* ISRC1_DEC1_ENA */ | ||
| 6413 | #define ARIZONA_ISRC1_DEC1_ENA_WIDTH 1 /* ISRC1_DEC1_ENA */ | ||
| 6414 | #define ARIZONA_ISRC1_DEC2_ENA 0x0080 /* ISRC1_DEC2_ENA */ | ||
| 6415 | #define ARIZONA_ISRC1_DEC2_ENA_MASK 0x0080 /* ISRC1_DEC2_ENA */ | ||
| 6416 | #define ARIZONA_ISRC1_DEC2_ENA_SHIFT 7 /* ISRC1_DEC2_ENA */ | ||
| 6417 | #define ARIZONA_ISRC1_DEC2_ENA_WIDTH 1 /* ISRC1_DEC2_ENA */ | ||
| 6418 | #define ARIZONA_ISRC1_DEC3_ENA 0x0040 /* ISRC1_DEC3_ENA */ | ||
| 6419 | #define ARIZONA_ISRC1_DEC3_ENA_MASK 0x0040 /* ISRC1_DEC3_ENA */ | ||
| 6420 | #define ARIZONA_ISRC1_DEC3_ENA_SHIFT 6 /* ISRC1_DEC3_ENA */ | ||
| 6421 | #define ARIZONA_ISRC1_DEC3_ENA_WIDTH 1 /* ISRC1_DEC3_ENA */ | ||
| 6422 | #define ARIZONA_ISRC1_NOTCH_ENA 0x0001 /* ISRC1_NOTCH_ENA */ | ||
| 6423 | #define ARIZONA_ISRC1_NOTCH_ENA_MASK 0x0001 /* ISRC1_NOTCH_ENA */ | ||
| 6424 | #define ARIZONA_ISRC1_NOTCH_ENA_SHIFT 0 /* ISRC1_NOTCH_ENA */ | ||
| 6425 | #define ARIZONA_ISRC1_NOTCH_ENA_WIDTH 1 /* ISRC1_NOTCH_ENA */ | ||
| 6426 | |||
| 6427 | /* | ||
| 6428 | * R3827 (0xEF3) - ISRC 2 CTRL 1 | ||
| 6429 | */ | ||
| 6430 | #define ARIZONA_ISRC2_FSH_MASK 0x7800 /* ISRC2_FSH - [14:11] */ | ||
| 6431 | #define ARIZONA_ISRC2_FSH_SHIFT 11 /* ISRC2_FSH - [14:11] */ | ||
| 6432 | #define ARIZONA_ISRC2_FSH_WIDTH 4 /* ISRC2_FSH - [14:11] */ | ||
| 6433 | #define ARIZONA_ISRC2_CLK_SEL_MASK 0x0700 /* ISRC2_CLK_SEL - [10:8] */ | ||
| 6434 | #define ARIZONA_ISRC2_CLK_SEL_SHIFT 8 /* ISRC2_CLK_SEL - [10:8] */ | ||
| 6435 | #define ARIZONA_ISRC2_CLK_SEL_WIDTH 3 /* ISRC2_CLK_SEL - [10:8] */ | ||
| 6436 | |||
| 6437 | /* | ||
| 6438 | * R3828 (0xEF4) - ISRC 2 CTRL 2 | ||
| 6439 | */ | ||
| 6440 | #define ARIZONA_ISRC2_FSL_MASK 0x7800 /* ISRC2_FSL - [14:11] */ | ||
| 6441 | #define ARIZONA_ISRC2_FSL_SHIFT 11 /* ISRC2_FSL - [14:11] */ | ||
| 6442 | #define ARIZONA_ISRC2_FSL_WIDTH 4 /* ISRC2_FSL - [14:11] */ | ||
| 6443 | |||
| 6444 | /* | ||
| 6445 | * R3829 (0xEF5) - ISRC 2 CTRL 3 | ||
| 6446 | */ | ||
| 6447 | #define ARIZONA_ISRC2_INT0_ENA 0x8000 /* ISRC2_INT0_ENA */ | ||
| 6448 | #define ARIZONA_ISRC2_INT0_ENA_MASK 0x8000 /* ISRC2_INT0_ENA */ | ||
| 6449 | #define ARIZONA_ISRC2_INT0_ENA_SHIFT 15 /* ISRC2_INT0_ENA */ | ||
| 6450 | #define ARIZONA_ISRC2_INT0_ENA_WIDTH 1 /* ISRC2_INT0_ENA */ | ||
| 6451 | #define ARIZONA_ISRC2_INT1_ENA 0x4000 /* ISRC2_INT1_ENA */ | ||
| 6452 | #define ARIZONA_ISRC2_INT1_ENA_MASK 0x4000 /* ISRC2_INT1_ENA */ | ||
| 6453 | #define ARIZONA_ISRC2_INT1_ENA_SHIFT 14 /* ISRC2_INT1_ENA */ | ||
| 6454 | #define ARIZONA_ISRC2_INT1_ENA_WIDTH 1 /* ISRC2_INT1_ENA */ | ||
| 6455 | #define ARIZONA_ISRC2_INT2_ENA 0x2000 /* ISRC2_INT2_ENA */ | ||
| 6456 | #define ARIZONA_ISRC2_INT2_ENA_MASK 0x2000 /* ISRC2_INT2_ENA */ | ||
| 6457 | #define ARIZONA_ISRC2_INT2_ENA_SHIFT 13 /* ISRC2_INT2_ENA */ | ||
| 6458 | #define ARIZONA_ISRC2_INT2_ENA_WIDTH 1 /* ISRC2_INT2_ENA */ | ||
| 6459 | #define ARIZONA_ISRC2_INT3_ENA 0x1000 /* ISRC2_INT3_ENA */ | ||
| 6460 | #define ARIZONA_ISRC2_INT3_ENA_MASK 0x1000 /* ISRC2_INT3_ENA */ | ||
| 6461 | #define ARIZONA_ISRC2_INT3_ENA_SHIFT 12 /* ISRC2_INT3_ENA */ | ||
| 6462 | #define ARIZONA_ISRC2_INT3_ENA_WIDTH 1 /* ISRC2_INT3_ENA */ | ||
| 6463 | #define ARIZONA_ISRC2_DEC0_ENA 0x0200 /* ISRC2_DEC0_ENA */ | ||
| 6464 | #define ARIZONA_ISRC2_DEC0_ENA_MASK 0x0200 /* ISRC2_DEC0_ENA */ | ||
| 6465 | #define ARIZONA_ISRC2_DEC0_ENA_SHIFT 9 /* ISRC2_DEC0_ENA */ | ||
| 6466 | #define ARIZONA_ISRC2_DEC0_ENA_WIDTH 1 /* ISRC2_DEC0_ENA */ | ||
| 6467 | #define ARIZONA_ISRC2_DEC1_ENA 0x0100 /* ISRC2_DEC1_ENA */ | ||
| 6468 | #define ARIZONA_ISRC2_DEC1_ENA_MASK 0x0100 /* ISRC2_DEC1_ENA */ | ||
| 6469 | #define ARIZONA_ISRC2_DEC1_ENA_SHIFT 8 /* ISRC2_DEC1_ENA */ | ||
| 6470 | #define ARIZONA_ISRC2_DEC1_ENA_WIDTH 1 /* ISRC2_DEC1_ENA */ | ||
| 6471 | #define ARIZONA_ISRC2_DEC2_ENA 0x0080 /* ISRC2_DEC2_ENA */ | ||
| 6472 | #define ARIZONA_ISRC2_DEC2_ENA_MASK 0x0080 /* ISRC2_DEC2_ENA */ | ||
| 6473 | #define ARIZONA_ISRC2_DEC2_ENA_SHIFT 7 /* ISRC2_DEC2_ENA */ | ||
| 6474 | #define ARIZONA_ISRC2_DEC2_ENA_WIDTH 1 /* ISRC2_DEC2_ENA */ | ||
| 6475 | #define ARIZONA_ISRC2_DEC3_ENA 0x0040 /* ISRC2_DEC3_ENA */ | ||
| 6476 | #define ARIZONA_ISRC2_DEC3_ENA_MASK 0x0040 /* ISRC2_DEC3_ENA */ | ||
| 6477 | #define ARIZONA_ISRC2_DEC3_ENA_SHIFT 6 /* ISRC2_DEC3_ENA */ | ||
| 6478 | #define ARIZONA_ISRC2_DEC3_ENA_WIDTH 1 /* ISRC2_DEC3_ENA */ | ||
| 6479 | #define ARIZONA_ISRC2_NOTCH_ENA 0x0001 /* ISRC2_NOTCH_ENA */ | ||
| 6480 | #define ARIZONA_ISRC2_NOTCH_ENA_MASK 0x0001 /* ISRC2_NOTCH_ENA */ | ||
| 6481 | #define ARIZONA_ISRC2_NOTCH_ENA_SHIFT 0 /* ISRC2_NOTCH_ENA */ | ||
| 6482 | #define ARIZONA_ISRC2_NOTCH_ENA_WIDTH 1 /* ISRC2_NOTCH_ENA */ | ||
| 6483 | |||
| 6484 | /* | ||
| 6485 | * R3830 (0xEF6) - ISRC 3 CTRL 1 | ||
| 6486 | */ | ||
| 6487 | #define ARIZONA_ISRC3_FSH_MASK 0x7800 /* ISRC3_FSH - [14:11] */ | ||
| 6488 | #define ARIZONA_ISRC3_FSH_SHIFT 11 /* ISRC3_FSH - [14:11] */ | ||
| 6489 | #define ARIZONA_ISRC3_FSH_WIDTH 4 /* ISRC3_FSH - [14:11] */ | ||
| 6490 | #define ARIZONA_ISRC3_CLK_SEL_MASK 0x0700 /* ISRC3_CLK_SEL - [10:8] */ | ||
| 6491 | #define ARIZONA_ISRC3_CLK_SEL_SHIFT 8 /* ISRC3_CLK_SEL - [10:8] */ | ||
| 6492 | #define ARIZONA_ISRC3_CLK_SEL_WIDTH 3 /* ISRC3_CLK_SEL - [10:8] */ | ||
| 6493 | |||
| 6494 | /* | ||
| 6495 | * R3831 (0xEF7) - ISRC 3 CTRL 2 | ||
| 6496 | */ | ||
| 6497 | #define ARIZONA_ISRC3_FSL_MASK 0x7800 /* ISRC3_FSL - [14:11] */ | ||
| 6498 | #define ARIZONA_ISRC3_FSL_SHIFT 11 /* ISRC3_FSL - [14:11] */ | ||
| 6499 | #define ARIZONA_ISRC3_FSL_WIDTH 4 /* ISRC3_FSL - [14:11] */ | ||
| 6500 | |||
| 6501 | /* | ||
| 6502 | * R3832 (0xEF8) - ISRC 3 CTRL 3 | ||
| 6503 | */ | ||
| 6504 | #define ARIZONA_ISRC3_INT0_ENA 0x8000 /* ISRC3_INT0_ENA */ | ||
| 6505 | #define ARIZONA_ISRC3_INT0_ENA_MASK 0x8000 /* ISRC3_INT0_ENA */ | ||
| 6506 | #define ARIZONA_ISRC3_INT0_ENA_SHIFT 15 /* ISRC3_INT0_ENA */ | ||
| 6507 | #define ARIZONA_ISRC3_INT0_ENA_WIDTH 1 /* ISRC3_INT0_ENA */ | ||
| 6508 | #define ARIZONA_ISRC3_INT1_ENA 0x4000 /* ISRC3_INT1_ENA */ | ||
| 6509 | #define ARIZONA_ISRC3_INT1_ENA_MASK 0x4000 /* ISRC3_INT1_ENA */ | ||
| 6510 | #define ARIZONA_ISRC3_INT1_ENA_SHIFT 14 /* ISRC3_INT1_ENA */ | ||
| 6511 | #define ARIZONA_ISRC3_INT1_ENA_WIDTH 1 /* ISRC3_INT1_ENA */ | ||
| 6512 | #define ARIZONA_ISRC3_INT2_ENA 0x2000 /* ISRC3_INT2_ENA */ | ||
| 6513 | #define ARIZONA_ISRC3_INT2_ENA_MASK 0x2000 /* ISRC3_INT2_ENA */ | ||
| 6514 | #define ARIZONA_ISRC3_INT2_ENA_SHIFT 13 /* ISRC3_INT2_ENA */ | ||
| 6515 | #define ARIZONA_ISRC3_INT2_ENA_WIDTH 1 /* ISRC3_INT2_ENA */ | ||
| 6516 | #define ARIZONA_ISRC3_INT3_ENA 0x1000 /* ISRC3_INT3_ENA */ | ||
| 6517 | #define ARIZONA_ISRC3_INT3_ENA_MASK 0x1000 /* ISRC3_INT3_ENA */ | ||
| 6518 | #define ARIZONA_ISRC3_INT3_ENA_SHIFT 12 /* ISRC3_INT3_ENA */ | ||
| 6519 | #define ARIZONA_ISRC3_INT3_ENA_WIDTH 1 /* ISRC3_INT3_ENA */ | ||
| 6520 | #define ARIZONA_ISRC3_DEC0_ENA 0x0200 /* ISRC3_DEC0_ENA */ | ||
| 6521 | #define ARIZONA_ISRC3_DEC0_ENA_MASK 0x0200 /* ISRC3_DEC0_ENA */ | ||
| 6522 | #define ARIZONA_ISRC3_DEC0_ENA_SHIFT 9 /* ISRC3_DEC0_ENA */ | ||
| 6523 | #define ARIZONA_ISRC3_DEC0_ENA_WIDTH 1 /* ISRC3_DEC0_ENA */ | ||
| 6524 | #define ARIZONA_ISRC3_DEC1_ENA 0x0100 /* ISRC3_DEC1_ENA */ | ||
| 6525 | #define ARIZONA_ISRC3_DEC1_ENA_MASK 0x0100 /* ISRC3_DEC1_ENA */ | ||
| 6526 | #define ARIZONA_ISRC3_DEC1_ENA_SHIFT 8 /* ISRC3_DEC1_ENA */ | ||
| 6527 | #define ARIZONA_ISRC3_DEC1_ENA_WIDTH 1 /* ISRC3_DEC1_ENA */ | ||
| 6528 | #define ARIZONA_ISRC3_DEC2_ENA 0x0080 /* ISRC3_DEC2_ENA */ | ||
| 6529 | #define ARIZONA_ISRC3_DEC2_ENA_MASK 0x0080 /* ISRC3_DEC2_ENA */ | ||
| 6530 | #define ARIZONA_ISRC3_DEC2_ENA_SHIFT 7 /* ISRC3_DEC2_ENA */ | ||
| 6531 | #define ARIZONA_ISRC3_DEC2_ENA_WIDTH 1 /* ISRC3_DEC2_ENA */ | ||
| 6532 | #define ARIZONA_ISRC3_DEC3_ENA 0x0040 /* ISRC3_DEC3_ENA */ | ||
| 6533 | #define ARIZONA_ISRC3_DEC3_ENA_MASK 0x0040 /* ISRC3_DEC3_ENA */ | ||
| 6534 | #define ARIZONA_ISRC3_DEC3_ENA_SHIFT 6 /* ISRC3_DEC3_ENA */ | ||
| 6535 | #define ARIZONA_ISRC3_DEC3_ENA_WIDTH 1 /* ISRC3_DEC3_ENA */ | ||
| 6536 | #define ARIZONA_ISRC3_NOTCH_ENA 0x0001 /* ISRC3_NOTCH_ENA */ | ||
| 6537 | #define ARIZONA_ISRC3_NOTCH_ENA_MASK 0x0001 /* ISRC3_NOTCH_ENA */ | ||
| 6538 | #define ARIZONA_ISRC3_NOTCH_ENA_SHIFT 0 /* ISRC3_NOTCH_ENA */ | ||
| 6539 | #define ARIZONA_ISRC3_NOTCH_ENA_WIDTH 1 /* ISRC3_NOTCH_ENA */ | ||
| 6540 | |||
| 6541 | /* | ||
| 6542 | * R4352 (0x1100) - DSP1 Control 1 | ||
| 6543 | */ | ||
| 6544 | #define ARIZONA_DSP1_RATE_MASK 0x7800 /* DSP1_RATE - [14:11] */ | ||
| 6545 | #define ARIZONA_DSP1_RATE_SHIFT 11 /* DSP1_RATE - [14:11] */ | ||
| 6546 | #define ARIZONA_DSP1_RATE_WIDTH 4 /* DSP1_RATE - [14:11] */ | ||
| 6547 | #define ARIZONA_DSP1_MEM_ENA 0x0010 /* DSP1_MEM_ENA */ | ||
| 6548 | #define ARIZONA_DSP1_MEM_ENA_MASK 0x0010 /* DSP1_MEM_ENA */ | ||
| 6549 | #define ARIZONA_DSP1_MEM_ENA_SHIFT 4 /* DSP1_MEM_ENA */ | ||
| 6550 | #define ARIZONA_DSP1_MEM_ENA_WIDTH 1 /* DSP1_MEM_ENA */ | ||
| 6551 | #define ARIZONA_DSP1_SYS_ENA 0x0004 /* DSP1_SYS_ENA */ | ||
| 6552 | #define ARIZONA_DSP1_SYS_ENA_MASK 0x0004 /* DSP1_SYS_ENA */ | ||
| 6553 | #define ARIZONA_DSP1_SYS_ENA_SHIFT 2 /* DSP1_SYS_ENA */ | ||
| 6554 | #define ARIZONA_DSP1_SYS_ENA_WIDTH 1 /* DSP1_SYS_ENA */ | ||
| 6555 | #define ARIZONA_DSP1_CORE_ENA 0x0002 /* DSP1_CORE_ENA */ | ||
| 6556 | #define ARIZONA_DSP1_CORE_ENA_MASK 0x0002 /* DSP1_CORE_ENA */ | ||
| 6557 | #define ARIZONA_DSP1_CORE_ENA_SHIFT 1 /* DSP1_CORE_ENA */ | ||
| 6558 | #define ARIZONA_DSP1_CORE_ENA_WIDTH 1 /* DSP1_CORE_ENA */ | ||
| 6559 | #define ARIZONA_DSP1_START 0x0001 /* DSP1_START */ | ||
| 6560 | #define ARIZONA_DSP1_START_MASK 0x0001 /* DSP1_START */ | ||
| 6561 | #define ARIZONA_DSP1_START_SHIFT 0 /* DSP1_START */ | ||
| 6562 | #define ARIZONA_DSP1_START_WIDTH 1 /* DSP1_START */ | ||
| 6563 | |||
| 6564 | /* | ||
| 6565 | * R4353 (0x1101) - DSP1 Clocking 1 | ||
| 6566 | */ | ||
| 6567 | #define ARIZONA_DSP1_CLK_SEL_MASK 0x0007 /* DSP1_CLK_SEL - [2:0] */ | ||
| 6568 | #define ARIZONA_DSP1_CLK_SEL_SHIFT 0 /* DSP1_CLK_SEL - [2:0] */ | ||
| 6569 | #define ARIZONA_DSP1_CLK_SEL_WIDTH 3 /* DSP1_CLK_SEL - [2:0] */ | ||
| 6570 | |||
| 6571 | /* | ||
| 6572 | * R4356 (0x1104) - DSP1 Status 1 | ||
| 6573 | */ | ||
| 6574 | #define ARIZONA_DSP1_RAM_RDY 0x0001 /* DSP1_RAM_RDY */ | ||
| 6575 | #define ARIZONA_DSP1_RAM_RDY_MASK 0x0001 /* DSP1_RAM_RDY */ | ||
| 6576 | #define ARIZONA_DSP1_RAM_RDY_SHIFT 0 /* DSP1_RAM_RDY */ | ||
| 6577 | #define ARIZONA_DSP1_RAM_RDY_WIDTH 1 /* DSP1_RAM_RDY */ | ||
| 6578 | |||
| 6579 | /* | ||
| 6580 | * R4357 (0x1105) - DSP1 Status 2 | ||
| 6581 | */ | ||
| 6582 | #define ARIZONA_DSP1_PING_FULL 0x8000 /* DSP1_PING_FULL */ | ||
| 6583 | #define ARIZONA_DSP1_PING_FULL_MASK 0x8000 /* DSP1_PING_FULL */ | ||
| 6584 | #define ARIZONA_DSP1_PING_FULL_SHIFT 15 /* DSP1_PING_FULL */ | ||
| 6585 | #define ARIZONA_DSP1_PING_FULL_WIDTH 1 /* DSP1_PING_FULL */ | ||
| 6586 | #define ARIZONA_DSP1_PONG_FULL 0x4000 /* DSP1_PONG_FULL */ | ||
| 6587 | #define ARIZONA_DSP1_PONG_FULL_MASK 0x4000 /* DSP1_PONG_FULL */ | ||
| 6588 | #define ARIZONA_DSP1_PONG_FULL_SHIFT 14 /* DSP1_PONG_FULL */ | ||
| 6589 | #define ARIZONA_DSP1_PONG_FULL_WIDTH 1 /* DSP1_PONG_FULL */ | ||
| 6590 | #define ARIZONA_DSP1_WDMA_ACTIVE_CHANNELS_MASK 0x00FF /* DSP1_WDMA_ACTIVE_CHANNELS - [7:0] */ | ||
| 6591 | #define ARIZONA_DSP1_WDMA_ACTIVE_CHANNELS_SHIFT 0 /* DSP1_WDMA_ACTIVE_CHANNELS - [7:0] */ | ||
| 6592 | #define ARIZONA_DSP1_WDMA_ACTIVE_CHANNELS_WIDTH 8 /* DSP1_WDMA_ACTIVE_CHANNELS - [7:0] */ | ||
| 6593 | |||
| 6594 | #endif | ||
diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h index 4e76163dd862..3a8435a8058f 100644 --- a/include/linux/mfd/core.h +++ b/include/linux/mfd/core.h | |||
| @@ -36,6 +36,11 @@ struct mfd_cell { | |||
| 36 | /* platform data passed to the sub devices drivers */ | 36 | /* platform data passed to the sub devices drivers */ |
| 37 | void *platform_data; | 37 | void *platform_data; |
| 38 | size_t pdata_size; | 38 | size_t pdata_size; |
| 39 | /* | ||
| 40 | * Device Tree compatible string | ||
| 41 | * See: Documentation/devicetree/usage-model.txt Chapter 2.2 for details | ||
| 42 | */ | ||
| 43 | const char *of_compatible; | ||
| 39 | 44 | ||
| 40 | /* | 45 | /* |
| 41 | * These resources can be specified relative to the parent device. | 46 | * These resources can be specified relative to the parent device. |
diff --git a/include/linux/mfd/db8500-prcmu.h b/include/linux/mfd/db8500-prcmu.h index b3a43b1263fe..b82f6ee66a0b 100644 --- a/include/linux/mfd/db8500-prcmu.h +++ b/include/linux/mfd/db8500-prcmu.h | |||
| @@ -530,7 +530,7 @@ int db8500_prcmu_stop_temp_sense(void); | |||
| 530 | int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); | 530 | int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); |
| 531 | int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); | 531 | int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); |
| 532 | 532 | ||
| 533 | void prcmu_ac_wake_req(void); | 533 | int prcmu_ac_wake_req(void); |
| 534 | void prcmu_ac_sleep_req(void); | 534 | void prcmu_ac_sleep_req(void); |
| 535 | void db8500_prcmu_modem_reset(void); | 535 | void db8500_prcmu_modem_reset(void); |
| 536 | 536 | ||
| @@ -680,7 +680,10 @@ static inline int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size) | |||
| 680 | return -ENOSYS; | 680 | return -ENOSYS; |
| 681 | } | 681 | } |
| 682 | 682 | ||
| 683 | static inline void prcmu_ac_wake_req(void) {} | 683 | static inline int prcmu_ac_wake_req(void) |
| 684 | { | ||
| 685 | return 0; | ||
| 686 | } | ||
| 684 | 687 | ||
| 685 | static inline void prcmu_ac_sleep_req(void) {} | 688 | static inline void prcmu_ac_sleep_req(void) {} |
| 686 | 689 | ||
diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h index 5a13f93d8f1c..5b90e94399e1 100644 --- a/include/linux/mfd/dbx500-prcmu.h +++ b/include/linux/mfd/dbx500-prcmu.h | |||
| @@ -345,7 +345,7 @@ static inline u16 prcmu_get_reset_code(void) | |||
| 345 | return db8500_prcmu_get_reset_code(); | 345 | return db8500_prcmu_get_reset_code(); |
| 346 | } | 346 | } |
| 347 | 347 | ||
| 348 | void prcmu_ac_wake_req(void); | 348 | int prcmu_ac_wake_req(void); |
| 349 | void prcmu_ac_sleep_req(void); | 349 | void prcmu_ac_sleep_req(void); |
| 350 | static inline void prcmu_modem_reset(void) | 350 | static inline void prcmu_modem_reset(void) |
| 351 | { | 351 | { |
| @@ -533,7 +533,10 @@ static inline u16 prcmu_get_reset_code(void) | |||
| 533 | return 0; | 533 | return 0; |
| 534 | } | 534 | } |
| 535 | 535 | ||
| 536 | static inline void prcmu_ac_wake_req(void) {} | 536 | static inline int prcmu_ac_wake_req(void) |
| 537 | { | ||
| 538 | return 0; | ||
| 539 | } | ||
| 537 | 540 | ||
| 538 | static inline void prcmu_ac_sleep_req(void) {} | 541 | static inline void prcmu_ac_sleep_req(void) {} |
| 539 | 542 | ||
diff --git a/include/linux/mfd/max77686-private.h b/include/linux/mfd/max77686-private.h new file mode 100644 index 000000000000..d327d4971e4f --- /dev/null +++ b/include/linux/mfd/max77686-private.h | |||
| @@ -0,0 +1,246 @@ | |||
| 1 | /* | ||
| 2 | * max77686.h - Voltage regulator driver for the Maxim 77686 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Samsung Electrnoics | ||
| 5 | * Chiwoong Byun <woong.byun@samsung.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation; either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 20 | */ | ||
| 21 | |||
| 22 | #ifndef __LINUX_MFD_MAX77686_PRIV_H | ||
| 23 | #define __LINUX_MFD_MAX77686_PRIV_H | ||
| 24 | |||
| 25 | #include <linux/i2c.h> | ||
| 26 | #include <linux/regmap.h> | ||
| 27 | #include <linux/module.h> | ||
| 28 | |||
| 29 | #define MAX77686_REG_INVALID (0xff) | ||
| 30 | |||
| 31 | enum max77686_pmic_reg { | ||
| 32 | MAX77686_REG_DEVICE_ID = 0x00, | ||
| 33 | MAX77686_REG_INTSRC = 0x01, | ||
| 34 | MAX77686_REG_INT1 = 0x02, | ||
| 35 | MAX77686_REG_INT2 = 0x03, | ||
| 36 | |||
| 37 | MAX77686_REG_INT1MSK = 0x04, | ||
| 38 | MAX77686_REG_INT2MSK = 0x05, | ||
| 39 | |||
| 40 | MAX77686_REG_STATUS1 = 0x06, | ||
| 41 | MAX77686_REG_STATUS2 = 0x07, | ||
| 42 | |||
| 43 | MAX77686_REG_PWRON = 0x08, | ||
| 44 | MAX77686_REG_ONOFF_DELAY = 0x09, | ||
| 45 | MAX77686_REG_MRSTB = 0x0A, | ||
| 46 | /* Reserved: 0x0B-0x0F */ | ||
| 47 | |||
| 48 | MAX77686_REG_BUCK1CTRL = 0x10, | ||
| 49 | MAX77686_REG_BUCK1OUT = 0x11, | ||
| 50 | MAX77686_REG_BUCK2CTRL1 = 0x12, | ||
| 51 | MAX77686_REG_BUCK234FREQ = 0x13, | ||
| 52 | MAX77686_REG_BUCK2DVS1 = 0x14, | ||
| 53 | MAX77686_REG_BUCK2DVS2 = 0x15, | ||
| 54 | MAX77686_REG_BUCK2DVS3 = 0x16, | ||
| 55 | MAX77686_REG_BUCK2DVS4 = 0x17, | ||
| 56 | MAX77686_REG_BUCK2DVS5 = 0x18, | ||
| 57 | MAX77686_REG_BUCK2DVS6 = 0x19, | ||
| 58 | MAX77686_REG_BUCK2DVS7 = 0x1A, | ||
| 59 | MAX77686_REG_BUCK2DVS8 = 0x1B, | ||
| 60 | MAX77686_REG_BUCK3CTRL1 = 0x1C, | ||
| 61 | /* Reserved: 0x1D */ | ||
| 62 | MAX77686_REG_BUCK3DVS1 = 0x1E, | ||
| 63 | MAX77686_REG_BUCK3DVS2 = 0x1F, | ||
| 64 | MAX77686_REG_BUCK3DVS3 = 0x20, | ||
| 65 | MAX77686_REG_BUCK3DVS4 = 0x21, | ||
| 66 | MAX77686_REG_BUCK3DVS5 = 0x22, | ||
| 67 | MAX77686_REG_BUCK3DVS6 = 0x23, | ||
| 68 | MAX77686_REG_BUCK3DVS7 = 0x24, | ||
| 69 | MAX77686_REG_BUCK3DVS8 = 0x25, | ||
| 70 | MAX77686_REG_BUCK4CTRL1 = 0x26, | ||
| 71 | /* Reserved: 0x27 */ | ||
| 72 | MAX77686_REG_BUCK4DVS1 = 0x28, | ||
| 73 | MAX77686_REG_BUCK4DVS2 = 0x29, | ||
| 74 | MAX77686_REG_BUCK4DVS3 = 0x2A, | ||
| 75 | MAX77686_REG_BUCK4DVS4 = 0x2B, | ||
| 76 | MAX77686_REG_BUCK4DVS5 = 0x2C, | ||
| 77 | MAX77686_REG_BUCK4DVS6 = 0x2D, | ||
| 78 | MAX77686_REG_BUCK4DVS7 = 0x2E, | ||
| 79 | MAX77686_REG_BUCK4DVS8 = 0x2F, | ||
| 80 | MAX77686_REG_BUCK5CTRL = 0x30, | ||
| 81 | MAX77686_REG_BUCK5OUT = 0x31, | ||
| 82 | MAX77686_REG_BUCK6CTRL = 0x32, | ||
| 83 | MAX77686_REG_BUCK6OUT = 0x33, | ||
| 84 | MAX77686_REG_BUCK7CTRL = 0x34, | ||
| 85 | MAX77686_REG_BUCK7OUT = 0x35, | ||
| 86 | MAX77686_REG_BUCK8CTRL = 0x36, | ||
| 87 | MAX77686_REG_BUCK8OUT = 0x37, | ||
| 88 | MAX77686_REG_BUCK9CTRL = 0x38, | ||
| 89 | MAX77686_REG_BUCK9OUT = 0x39, | ||
| 90 | /* Reserved: 0x3A-0x3F */ | ||
| 91 | |||
| 92 | MAX77686_REG_LDO1CTRL1 = 0x40, | ||
| 93 | MAX77686_REG_LDO2CTRL1 = 0x41, | ||
| 94 | MAX77686_REG_LDO3CTRL1 = 0x42, | ||
| 95 | MAX77686_REG_LDO4CTRL1 = 0x43, | ||
| 96 | MAX77686_REG_LDO5CTRL1 = 0x44, | ||
| 97 | MAX77686_REG_LDO6CTRL1 = 0x45, | ||
| 98 | MAX77686_REG_LDO7CTRL1 = 0x46, | ||
| 99 | MAX77686_REG_LDO8CTRL1 = 0x47, | ||
| 100 | MAX77686_REG_LDO9CTRL1 = 0x48, | ||
| 101 | MAX77686_REG_LDO10CTRL1 = 0x49, | ||
| 102 | MAX77686_REG_LDO11CTRL1 = 0x4A, | ||
| 103 | MAX77686_REG_LDO12CTRL1 = 0x4B, | ||
| 104 | MAX77686_REG_LDO13CTRL1 = 0x4C, | ||
| 105 | MAX77686_REG_LDO14CTRL1 = 0x4D, | ||
| 106 | MAX77686_REG_LDO15CTRL1 = 0x4E, | ||
| 107 | MAX77686_REG_LDO16CTRL1 = 0x4F, | ||
| 108 | MAX77686_REG_LDO17CTRL1 = 0x50, | ||
| 109 | MAX77686_REG_LDO18CTRL1 = 0x51, | ||
| 110 | MAX77686_REG_LDO19CTRL1 = 0x52, | ||
| 111 | MAX77686_REG_LDO20CTRL1 = 0x53, | ||
| 112 | MAX77686_REG_LDO21CTRL1 = 0x54, | ||
| 113 | MAX77686_REG_LDO22CTRL1 = 0x55, | ||
| 114 | MAX77686_REG_LDO23CTRL1 = 0x56, | ||
| 115 | MAX77686_REG_LDO24CTRL1 = 0x57, | ||
| 116 | MAX77686_REG_LDO25CTRL1 = 0x58, | ||
| 117 | MAX77686_REG_LDO26CTRL1 = 0x59, | ||
| 118 | /* Reserved: 0x5A-0x5F */ | ||
| 119 | MAX77686_REG_LDO1CTRL2 = 0x60, | ||
| 120 | MAX77686_REG_LDO2CTRL2 = 0x61, | ||
| 121 | MAX77686_REG_LDO3CTRL2 = 0x62, | ||
| 122 | MAX77686_REG_LDO4CTRL2 = 0x63, | ||
| 123 | MAX77686_REG_LDO5CTRL2 = 0x64, | ||
| 124 | MAX77686_REG_LDO6CTRL2 = 0x65, | ||
| 125 | MAX77686_REG_LDO7CTRL2 = 0x66, | ||
| 126 | MAX77686_REG_LDO8CTRL2 = 0x67, | ||
| 127 | MAX77686_REG_LDO9CTRL2 = 0x68, | ||
| 128 | MAX77686_REG_LDO10CTRL2 = 0x69, | ||
| 129 | MAX77686_REG_LDO11CTRL2 = 0x6A, | ||
| 130 | MAX77686_REG_LDO12CTRL2 = 0x6B, | ||
| 131 | MAX77686_REG_LDO13CTRL2 = 0x6C, | ||
| 132 | MAX77686_REG_LDO14CTRL2 = 0x6D, | ||
| 133 | MAX77686_REG_LDO15CTRL2 = 0x6E, | ||
| 134 | MAX77686_REG_LDO16CTRL2 = 0x6F, | ||
| 135 | MAX77686_REG_LDO17CTRL2 = 0x70, | ||
| 136 | MAX77686_REG_LDO18CTRL2 = 0x71, | ||
| 137 | MAX77686_REG_LDO19CTRL2 = 0x72, | ||
| 138 | MAX77686_REG_LDO20CTRL2 = 0x73, | ||
| 139 | MAX77686_REG_LDO21CTRL2 = 0x74, | ||
| 140 | MAX77686_REG_LDO22CTRL2 = 0x75, | ||
| 141 | MAX77686_REG_LDO23CTRL2 = 0x76, | ||
| 142 | MAX77686_REG_LDO24CTRL2 = 0x77, | ||
| 143 | MAX77686_REG_LDO25CTRL2 = 0x78, | ||
| 144 | MAX77686_REG_LDO26CTRL2 = 0x79, | ||
| 145 | /* Reserved: 0x7A-0x7D */ | ||
| 146 | |||
| 147 | MAX77686_REG_BBAT_CHG = 0x7E, | ||
| 148 | MAX77686_REG_32KHZ = 0x7F, | ||
| 149 | |||
| 150 | MAX77686_REG_PMIC_END = 0x80, | ||
| 151 | }; | ||
| 152 | |||
| 153 | enum max77686_rtc_reg { | ||
| 154 | MAX77686_RTC_INT = 0x00, | ||
| 155 | MAX77686_RTC_INTM = 0x01, | ||
| 156 | MAX77686_RTC_CONTROLM = 0x02, | ||
| 157 | MAX77686_RTC_CONTROL = 0x03, | ||
| 158 | MAX77686_RTC_UPDATE0 = 0x04, | ||
| 159 | /* Reserved: 0x5 */ | ||
| 160 | MAX77686_WTSR_SMPL_CNTL = 0x06, | ||
| 161 | MAX77686_RTC_SEC = 0x07, | ||
| 162 | MAX77686_RTC_MIN = 0x08, | ||
| 163 | MAX77686_RTC_HOUR = 0x09, | ||
| 164 | MAX77686_RTC_WEEKDAY = 0x0A, | ||
| 165 | MAX77686_RTC_MONTH = 0x0B, | ||
| 166 | MAX77686_RTC_YEAR = 0x0C, | ||
| 167 | MAX77686_RTC_DATE = 0x0D, | ||
| 168 | MAX77686_ALARM1_SEC = 0x0E, | ||
| 169 | MAX77686_ALARM1_MIN = 0x0F, | ||
| 170 | MAX77686_ALARM1_HOUR = 0x10, | ||
| 171 | MAX77686_ALARM1_WEEKDAY = 0x11, | ||
| 172 | MAX77686_ALARM1_MONTH = 0x12, | ||
| 173 | MAX77686_ALARM1_YEAR = 0x13, | ||
| 174 | MAX77686_ALARM1_DATE = 0x14, | ||
| 175 | MAX77686_ALARM2_SEC = 0x15, | ||
| 176 | MAX77686_ALARM2_MIN = 0x16, | ||
| 177 | MAX77686_ALARM2_HOUR = 0x17, | ||
| 178 | MAX77686_ALARM2_WEEKDAY = 0x18, | ||
| 179 | MAX77686_ALARM2_MONTH = 0x19, | ||
| 180 | MAX77686_ALARM2_YEAR = 0x1A, | ||
| 181 | MAX77686_ALARM2_DATE = 0x1B, | ||
| 182 | }; | ||
| 183 | |||
| 184 | #define MAX77686_IRQSRC_PMIC (0) | ||
| 185 | #define MAX77686_IRQSRC_RTC (1 << 0) | ||
| 186 | |||
| 187 | enum max77686_irq_source { | ||
| 188 | PMIC_INT1 = 0, | ||
| 189 | PMIC_INT2, | ||
| 190 | RTC_INT, | ||
| 191 | |||
| 192 | MAX77686_IRQ_GROUP_NR, | ||
| 193 | }; | ||
| 194 | |||
| 195 | enum max77686_irq { | ||
| 196 | MAX77686_PMICIRQ_PWRONF, | ||
| 197 | MAX77686_PMICIRQ_PWRONR, | ||
| 198 | MAX77686_PMICIRQ_JIGONBF, | ||
| 199 | MAX77686_PMICIRQ_JIGONBR, | ||
| 200 | MAX77686_PMICIRQ_ACOKBF, | ||
| 201 | MAX77686_PMICIRQ_ACOKBR, | ||
| 202 | MAX77686_PMICIRQ_ONKEY1S, | ||
| 203 | MAX77686_PMICIRQ_MRSTB, | ||
| 204 | |||
| 205 | MAX77686_PMICIRQ_140C, | ||
| 206 | MAX77686_PMICIRQ_120C, | ||
| 207 | |||
| 208 | MAX77686_RTCIRQ_RTC60S, | ||
| 209 | MAX77686_RTCIRQ_RTCA1, | ||
| 210 | MAX77686_RTCIRQ_RTCA2, | ||
| 211 | MAX77686_RTCIRQ_SMPL, | ||
| 212 | MAX77686_RTCIRQ_RTC1S, | ||
| 213 | MAX77686_RTCIRQ_WTSR, | ||
| 214 | |||
| 215 | MAX77686_IRQ_NR, | ||
| 216 | }; | ||
| 217 | |||
| 218 | struct max77686_dev { | ||
| 219 | struct device *dev; | ||
| 220 | struct i2c_client *i2c; /* 0xcc / PMIC, Battery Control, and FLASH */ | ||
| 221 | struct i2c_client *rtc; /* slave addr 0x0c */ | ||
| 222 | |||
| 223 | int type; | ||
| 224 | |||
| 225 | struct regmap *regmap; /* regmap for mfd */ | ||
| 226 | struct regmap *rtc_regmap; /* regmap for rtc */ | ||
| 227 | |||
| 228 | struct irq_domain *irq_domain; | ||
| 229 | |||
| 230 | int irq; | ||
| 231 | int irq_gpio; | ||
| 232 | bool wakeup; | ||
| 233 | struct mutex irqlock; | ||
| 234 | int irq_masks_cur[MAX77686_IRQ_GROUP_NR]; | ||
| 235 | int irq_masks_cache[MAX77686_IRQ_GROUP_NR]; | ||
| 236 | }; | ||
| 237 | |||
| 238 | enum max77686_types { | ||
| 239 | TYPE_MAX77686, | ||
| 240 | }; | ||
| 241 | |||
| 242 | extern int max77686_irq_init(struct max77686_dev *max77686); | ||
| 243 | extern void max77686_irq_exit(struct max77686_dev *max77686); | ||
| 244 | extern int max77686_irq_resume(struct max77686_dev *max77686); | ||
| 245 | |||
| 246 | #endif /* __LINUX_MFD_MAX77686_PRIV_H */ | ||
diff --git a/include/linux/mfd/max77686.h b/include/linux/mfd/max77686.h new file mode 100644 index 000000000000..3d7ae4d7fd36 --- /dev/null +++ b/include/linux/mfd/max77686.h | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | /* | ||
| 2 | * max77686.h - Driver for the Maxim 77686 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Samsung Electrnoics | ||
| 5 | * Chiwoong Byun <woong.byun@samsung.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation; either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 20 | * | ||
| 21 | * This driver is based on max8997.h | ||
| 22 | * | ||
| 23 | * MAX77686 has PMIC, RTC devices. | ||
| 24 | * The devices share the same I2C bus and included in | ||
| 25 | * this mfd driver. | ||
| 26 | */ | ||
| 27 | |||
| 28 | #ifndef __LINUX_MFD_MAX77686_H | ||
| 29 | #define __LINUX_MFD_MAX77686_H | ||
| 30 | |||
| 31 | #include <linux/regulator/consumer.h> | ||
| 32 | |||
| 33 | /* MAX77686 regulator IDs */ | ||
| 34 | enum max77686_regulators { | ||
| 35 | MAX77686_LDO1 = 0, | ||
| 36 | MAX77686_LDO2, | ||
| 37 | MAX77686_LDO3, | ||
| 38 | MAX77686_LDO4, | ||
| 39 | MAX77686_LDO5, | ||
| 40 | MAX77686_LDO6, | ||
| 41 | MAX77686_LDO7, | ||
| 42 | MAX77686_LDO8, | ||
| 43 | MAX77686_LDO9, | ||
| 44 | MAX77686_LDO10, | ||
| 45 | MAX77686_LDO11, | ||
| 46 | MAX77686_LDO12, | ||
| 47 | MAX77686_LDO13, | ||
| 48 | MAX77686_LDO14, | ||
| 49 | MAX77686_LDO15, | ||
| 50 | MAX77686_LDO16, | ||
| 51 | MAX77686_LDO17, | ||
| 52 | MAX77686_LDO18, | ||
| 53 | MAX77686_LDO19, | ||
| 54 | MAX77686_LDO20, | ||
| 55 | MAX77686_LDO21, | ||
| 56 | MAX77686_LDO22, | ||
| 57 | MAX77686_LDO23, | ||
| 58 | MAX77686_LDO24, | ||
| 59 | MAX77686_LDO25, | ||
| 60 | MAX77686_LDO26, | ||
| 61 | MAX77686_BUCK1, | ||
| 62 | MAX77686_BUCK2, | ||
| 63 | MAX77686_BUCK3, | ||
| 64 | MAX77686_BUCK4, | ||
| 65 | MAX77686_BUCK5, | ||
| 66 | MAX77686_BUCK6, | ||
| 67 | MAX77686_BUCK7, | ||
| 68 | MAX77686_BUCK8, | ||
| 69 | MAX77686_BUCK9, | ||
| 70 | |||
| 71 | MAX77686_REG_MAX, | ||
| 72 | }; | ||
| 73 | |||
| 74 | struct max77686_regulator_data { | ||
| 75 | int id; | ||
| 76 | struct regulator_init_data *initdata; | ||
| 77 | }; | ||
| 78 | |||
| 79 | enum max77686_opmode { | ||
| 80 | MAX77686_OPMODE_NORMAL, | ||
| 81 | MAX77686_OPMODE_LP, | ||
| 82 | MAX77686_OPMODE_STANDBY, | ||
| 83 | }; | ||
| 84 | |||
| 85 | struct max77686_opmode_data { | ||
| 86 | int id; | ||
| 87 | int mode; | ||
| 88 | }; | ||
| 89 | |||
| 90 | struct max77686_platform_data { | ||
| 91 | /* IRQ */ | ||
| 92 | int irq_gpio; | ||
| 93 | int ono; | ||
| 94 | int wakeup; | ||
| 95 | |||
| 96 | /* ---- PMIC ---- */ | ||
| 97 | struct max77686_regulator_data *regulators; | ||
| 98 | int num_regulators; | ||
| 99 | |||
| 100 | struct max77686_opmode_data *opmode_data; | ||
| 101 | |||
| 102 | /* | ||
| 103 | * GPIO-DVS feature is not enabled with the current version of | ||
| 104 | * MAX77686 driver. Buck2/3/4_voltages[0] is used as the default | ||
| 105 | * voltage at probe. DVS/SELB gpios are set as OUTPUT-LOW. | ||
| 106 | */ | ||
| 107 | int buck234_gpio_dvs[3]; /* GPIO of [0]DVS1, [1]DVS2, [2]DVS3 */ | ||
| 108 | int buck234_gpio_selb[3]; /* [0]SELB2, [1]SELB3, [2]SELB4 */ | ||
| 109 | unsigned int buck2_voltage[8]; /* buckx_voltage in uV */ | ||
| 110 | unsigned int buck3_voltage[8]; | ||
| 111 | unsigned int buck4_voltage[8]; | ||
| 112 | }; | ||
| 113 | |||
| 114 | #endif /* __LINUX_MFD_MAX77686_H */ | ||
diff --git a/include/linux/mfd/max77693-private.h b/include/linux/mfd/max77693-private.h index 68263c5fa53c..1eeae5c07915 100644 --- a/include/linux/mfd/max77693-private.h +++ b/include/linux/mfd/max77693-private.h | |||
| @@ -190,7 +190,6 @@ struct max77693_dev { | |||
| 190 | struct i2c_client *i2c; /* 0xCC , PMIC, Charger, Flash LED */ | 190 | struct i2c_client *i2c; /* 0xCC , PMIC, Charger, Flash LED */ |
| 191 | struct i2c_client *muic; /* 0x4A , MUIC */ | 191 | struct i2c_client *muic; /* 0x4A , MUIC */ |
| 192 | struct i2c_client *haptic; /* 0x90 , Haptic */ | 192 | struct i2c_client *haptic; /* 0x90 , Haptic */ |
| 193 | struct mutex iolock; | ||
| 194 | 193 | ||
| 195 | int type; | 194 | int type; |
| 196 | 195 | ||
diff --git a/include/linux/mfd/max8997-private.h b/include/linux/mfd/max8997-private.h index 3f4deb62d6b0..830152cfae33 100644 --- a/include/linux/mfd/max8997-private.h +++ b/include/linux/mfd/max8997-private.h | |||
| @@ -23,6 +23,8 @@ | |||
| 23 | #define __LINUX_MFD_MAX8997_PRIV_H | 23 | #define __LINUX_MFD_MAX8997_PRIV_H |
| 24 | 24 | ||
| 25 | #include <linux/i2c.h> | 25 | #include <linux/i2c.h> |
| 26 | #include <linux/export.h> | ||
| 27 | #include <linux/irqdomain.h> | ||
| 26 | 28 | ||
| 27 | #define MAX8997_REG_INVALID (0xff) | 29 | #define MAX8997_REG_INVALID (0xff) |
| 28 | 30 | ||
| @@ -325,7 +327,7 @@ struct max8997_dev { | |||
| 325 | 327 | ||
| 326 | int irq; | 328 | int irq; |
| 327 | int ono; | 329 | int ono; |
| 328 | int irq_base; | 330 | struct irq_domain *irq_domain; |
| 329 | struct mutex irqlock; | 331 | struct mutex irqlock; |
| 330 | int irq_masks_cur[MAX8997_IRQ_GROUP_NR]; | 332 | int irq_masks_cur[MAX8997_IRQ_GROUP_NR]; |
| 331 | int irq_masks_cache[MAX8997_IRQ_GROUP_NR]; | 333 | int irq_masks_cache[MAX8997_IRQ_GROUP_NR]; |
diff --git a/include/linux/mfd/max8997.h b/include/linux/mfd/max8997.h index b40c08cd30bc..328d8e24b533 100644 --- a/include/linux/mfd/max8997.h +++ b/include/linux/mfd/max8997.h | |||
| @@ -181,7 +181,6 @@ struct max8997_led_platform_data { | |||
| 181 | 181 | ||
| 182 | struct max8997_platform_data { | 182 | struct max8997_platform_data { |
| 183 | /* IRQ */ | 183 | /* IRQ */ |
| 184 | int irq_base; | ||
| 185 | int ono; | 184 | int ono; |
| 186 | int wakeup; | 185 | int wakeup; |
| 187 | 186 | ||
diff --git a/include/linux/mfd/s5m87xx/s5m-core.h b/include/linux/mfd/s5m87xx/s5m-core.h deleted file mode 100644 index 0b2e0ed309f5..000000000000 --- a/include/linux/mfd/s5m87xx/s5m-core.h +++ /dev/null | |||
| @@ -1,379 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * s5m-core.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2011 Samsung Electronics Co., Ltd | ||
| 5 | * http://www.samsung.com | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify it | ||
| 8 | * under the terms of the GNU General Public License as published by the | ||
| 9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 10 | * option) any later version. | ||
| 11 | * | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __LINUX_MFD_S5M_CORE_H | ||
| 15 | #define __LINUX_MFD_S5M_CORE_H | ||
| 16 | |||
| 17 | #define NUM_IRQ_REGS 4 | ||
| 18 | |||
| 19 | enum s5m_device_type { | ||
| 20 | S5M8751X, | ||
| 21 | S5M8763X, | ||
| 22 | S5M8767X, | ||
| 23 | }; | ||
| 24 | |||
| 25 | /* S5M8767 registers */ | ||
| 26 | enum s5m8767_reg { | ||
| 27 | S5M8767_REG_ID, | ||
| 28 | S5M8767_REG_INT1, | ||
| 29 | S5M8767_REG_INT2, | ||
| 30 | S5M8767_REG_INT3, | ||
| 31 | S5M8767_REG_INT1M, | ||
| 32 | S5M8767_REG_INT2M, | ||
| 33 | S5M8767_REG_INT3M, | ||
| 34 | S5M8767_REG_STATUS1, | ||
| 35 | S5M8767_REG_STATUS2, | ||
| 36 | S5M8767_REG_STATUS3, | ||
| 37 | S5M8767_REG_CTRL1, | ||
| 38 | S5M8767_REG_CTRL2, | ||
| 39 | S5M8767_REG_LOWBAT1, | ||
| 40 | S5M8767_REG_LOWBAT2, | ||
| 41 | S5M8767_REG_BUCHG, | ||
| 42 | S5M8767_REG_DVSRAMP, | ||
| 43 | S5M8767_REG_DVSTIMER2 = 0x10, | ||
| 44 | S5M8767_REG_DVSTIMER3, | ||
| 45 | S5M8767_REG_DVSTIMER4, | ||
| 46 | S5M8767_REG_LDO1, | ||
| 47 | S5M8767_REG_LDO2, | ||
| 48 | S5M8767_REG_LDO3, | ||
| 49 | S5M8767_REG_LDO4, | ||
| 50 | S5M8767_REG_LDO5, | ||
| 51 | S5M8767_REG_LDO6, | ||
| 52 | S5M8767_REG_LDO7, | ||
| 53 | S5M8767_REG_LDO8, | ||
| 54 | S5M8767_REG_LDO9, | ||
| 55 | S5M8767_REG_LDO10, | ||
| 56 | S5M8767_REG_LDO11, | ||
| 57 | S5M8767_REG_LDO12, | ||
| 58 | S5M8767_REG_LDO13, | ||
| 59 | S5M8767_REG_LDO14 = 0x20, | ||
| 60 | S5M8767_REG_LDO15, | ||
| 61 | S5M8767_REG_LDO16, | ||
| 62 | S5M8767_REG_LDO17, | ||
| 63 | S5M8767_REG_LDO18, | ||
| 64 | S5M8767_REG_LDO19, | ||
| 65 | S5M8767_REG_LDO20, | ||
| 66 | S5M8767_REG_LDO21, | ||
| 67 | S5M8767_REG_LDO22, | ||
| 68 | S5M8767_REG_LDO23, | ||
| 69 | S5M8767_REG_LDO24, | ||
| 70 | S5M8767_REG_LDO25, | ||
| 71 | S5M8767_REG_LDO26, | ||
| 72 | S5M8767_REG_LDO27, | ||
| 73 | S5M8767_REG_LDO28, | ||
| 74 | S5M8767_REG_UVLO = 0x31, | ||
| 75 | S5M8767_REG_BUCK1CTRL1, | ||
| 76 | S5M8767_REG_BUCK1CTRL2, | ||
| 77 | S5M8767_REG_BUCK2CTRL, | ||
| 78 | S5M8767_REG_BUCK2DVS1, | ||
| 79 | S5M8767_REG_BUCK2DVS2, | ||
| 80 | S5M8767_REG_BUCK2DVS3, | ||
| 81 | S5M8767_REG_BUCK2DVS4, | ||
| 82 | S5M8767_REG_BUCK2DVS5, | ||
| 83 | S5M8767_REG_BUCK2DVS6, | ||
| 84 | S5M8767_REG_BUCK2DVS7, | ||
| 85 | S5M8767_REG_BUCK2DVS8, | ||
| 86 | S5M8767_REG_BUCK3CTRL, | ||
| 87 | S5M8767_REG_BUCK3DVS1, | ||
| 88 | S5M8767_REG_BUCK3DVS2, | ||
| 89 | S5M8767_REG_BUCK3DVS3, | ||
| 90 | S5M8767_REG_BUCK3DVS4, | ||
| 91 | S5M8767_REG_BUCK3DVS5, | ||
| 92 | S5M8767_REG_BUCK3DVS6, | ||
| 93 | S5M8767_REG_BUCK3DVS7, | ||
| 94 | S5M8767_REG_BUCK3DVS8, | ||
| 95 | S5M8767_REG_BUCK4CTRL, | ||
| 96 | S5M8767_REG_BUCK4DVS1, | ||
| 97 | S5M8767_REG_BUCK4DVS2, | ||
| 98 | S5M8767_REG_BUCK4DVS3, | ||
| 99 | S5M8767_REG_BUCK4DVS4, | ||
| 100 | S5M8767_REG_BUCK4DVS5, | ||
| 101 | S5M8767_REG_BUCK4DVS6, | ||
| 102 | S5M8767_REG_BUCK4DVS7, | ||
| 103 | S5M8767_REG_BUCK4DVS8, | ||
| 104 | S5M8767_REG_BUCK5CTRL1, | ||
| 105 | S5M8767_REG_BUCK5CTRL2, | ||
| 106 | S5M8767_REG_BUCK5CTRL3, | ||
| 107 | S5M8767_REG_BUCK5CTRL4, | ||
| 108 | S5M8767_REG_BUCK5CTRL5, | ||
| 109 | S5M8767_REG_BUCK6CTRL1, | ||
| 110 | S5M8767_REG_BUCK6CTRL2, | ||
| 111 | S5M8767_REG_BUCK7CTRL1, | ||
| 112 | S5M8767_REG_BUCK7CTRL2, | ||
| 113 | S5M8767_REG_BUCK8CTRL1, | ||
| 114 | S5M8767_REG_BUCK8CTRL2, | ||
| 115 | S5M8767_REG_BUCK9CTRL1, | ||
| 116 | S5M8767_REG_BUCK9CTRL2, | ||
| 117 | S5M8767_REG_LDO1CTRL, | ||
| 118 | S5M8767_REG_LDO2_1CTRL, | ||
| 119 | S5M8767_REG_LDO2_2CTRL, | ||
| 120 | S5M8767_REG_LDO2_3CTRL, | ||
| 121 | S5M8767_REG_LDO2_4CTRL, | ||
| 122 | S5M8767_REG_LDO3CTRL, | ||
| 123 | S5M8767_REG_LDO4CTRL, | ||
| 124 | S5M8767_REG_LDO5CTRL, | ||
| 125 | S5M8767_REG_LDO6CTRL, | ||
| 126 | S5M8767_REG_LDO7CTRL, | ||
| 127 | S5M8767_REG_LDO8CTRL, | ||
| 128 | S5M8767_REG_LDO9CTRL, | ||
| 129 | S5M8767_REG_LDO10CTRL, | ||
| 130 | S5M8767_REG_LDO11CTRL, | ||
| 131 | S5M8767_REG_LDO12CTRL, | ||
| 132 | S5M8767_REG_LDO13CTRL, | ||
| 133 | S5M8767_REG_LDO14CTRL, | ||
| 134 | S5M8767_REG_LDO15CTRL, | ||
| 135 | S5M8767_REG_LDO16CTRL, | ||
| 136 | S5M8767_REG_LDO17CTRL, | ||
| 137 | S5M8767_REG_LDO18CTRL, | ||
| 138 | S5M8767_REG_LDO19CTRL, | ||
| 139 | S5M8767_REG_LDO20CTRL, | ||
| 140 | S5M8767_REG_LDO21CTRL, | ||
| 141 | S5M8767_REG_LDO22CTRL, | ||
| 142 | S5M8767_REG_LDO23CTRL, | ||
| 143 | S5M8767_REG_LDO24CTRL, | ||
| 144 | S5M8767_REG_LDO25CTRL, | ||
| 145 | S5M8767_REG_LDO26CTRL, | ||
| 146 | S5M8767_REG_LDO27CTRL, | ||
| 147 | S5M8767_REG_LDO28CTRL, | ||
| 148 | }; | ||
| 149 | |||
| 150 | /* S5M8763 registers */ | ||
| 151 | enum s5m8763_reg { | ||
| 152 | S5M8763_REG_IRQ1, | ||
| 153 | S5M8763_REG_IRQ2, | ||
| 154 | S5M8763_REG_IRQ3, | ||
| 155 | S5M8763_REG_IRQ4, | ||
| 156 | S5M8763_REG_IRQM1, | ||
| 157 | S5M8763_REG_IRQM2, | ||
| 158 | S5M8763_REG_IRQM3, | ||
| 159 | S5M8763_REG_IRQM4, | ||
| 160 | S5M8763_REG_STATUS1, | ||
| 161 | S5M8763_REG_STATUS2, | ||
| 162 | S5M8763_REG_STATUSM1, | ||
| 163 | S5M8763_REG_STATUSM2, | ||
| 164 | S5M8763_REG_CHGR1, | ||
| 165 | S5M8763_REG_CHGR2, | ||
| 166 | S5M8763_REG_LDO_ACTIVE_DISCHARGE1, | ||
| 167 | S5M8763_REG_LDO_ACTIVE_DISCHARGE2, | ||
| 168 | S5M8763_REG_BUCK_ACTIVE_DISCHARGE3, | ||
| 169 | S5M8763_REG_ONOFF1, | ||
| 170 | S5M8763_REG_ONOFF2, | ||
| 171 | S5M8763_REG_ONOFF3, | ||
| 172 | S5M8763_REG_ONOFF4, | ||
| 173 | S5M8763_REG_BUCK1_VOLTAGE1, | ||
| 174 | S5M8763_REG_BUCK1_VOLTAGE2, | ||
| 175 | S5M8763_REG_BUCK1_VOLTAGE3, | ||
| 176 | S5M8763_REG_BUCK1_VOLTAGE4, | ||
| 177 | S5M8763_REG_BUCK2_VOLTAGE1, | ||
| 178 | S5M8763_REG_BUCK2_VOLTAGE2, | ||
| 179 | S5M8763_REG_BUCK3, | ||
| 180 | S5M8763_REG_BUCK4, | ||
| 181 | S5M8763_REG_LDO1_LDO2, | ||
| 182 | S5M8763_REG_LDO3, | ||
| 183 | S5M8763_REG_LDO4, | ||
| 184 | S5M8763_REG_LDO5, | ||
| 185 | S5M8763_REG_LDO6, | ||
| 186 | S5M8763_REG_LDO7, | ||
| 187 | S5M8763_REG_LDO7_LDO8, | ||
| 188 | S5M8763_REG_LDO9_LDO10, | ||
| 189 | S5M8763_REG_LDO11, | ||
| 190 | S5M8763_REG_LDO12, | ||
| 191 | S5M8763_REG_LDO13, | ||
| 192 | S5M8763_REG_LDO14, | ||
| 193 | S5M8763_REG_LDO15, | ||
| 194 | S5M8763_REG_LDO16, | ||
| 195 | S5M8763_REG_BKCHR, | ||
| 196 | S5M8763_REG_LBCNFG1, | ||
| 197 | S5M8763_REG_LBCNFG2, | ||
| 198 | }; | ||
| 199 | |||
| 200 | enum s5m8767_irq { | ||
| 201 | S5M8767_IRQ_PWRR, | ||
| 202 | S5M8767_IRQ_PWRF, | ||
| 203 | S5M8767_IRQ_PWR1S, | ||
| 204 | S5M8767_IRQ_JIGR, | ||
| 205 | S5M8767_IRQ_JIGF, | ||
| 206 | S5M8767_IRQ_LOWBAT2, | ||
| 207 | S5M8767_IRQ_LOWBAT1, | ||
| 208 | |||
| 209 | S5M8767_IRQ_MRB, | ||
| 210 | S5M8767_IRQ_DVSOK2, | ||
| 211 | S5M8767_IRQ_DVSOK3, | ||
| 212 | S5M8767_IRQ_DVSOK4, | ||
| 213 | |||
| 214 | S5M8767_IRQ_RTC60S, | ||
| 215 | S5M8767_IRQ_RTCA1, | ||
| 216 | S5M8767_IRQ_RTCA2, | ||
| 217 | S5M8767_IRQ_SMPL, | ||
| 218 | S5M8767_IRQ_RTC1S, | ||
| 219 | S5M8767_IRQ_WTSR, | ||
| 220 | |||
| 221 | S5M8767_IRQ_NR, | ||
| 222 | }; | ||
| 223 | |||
| 224 | #define S5M8767_IRQ_PWRR_MASK (1 << 0) | ||
| 225 | #define S5M8767_IRQ_PWRF_MASK (1 << 1) | ||
| 226 | #define S5M8767_IRQ_PWR1S_MASK (1 << 3) | ||
| 227 | #define S5M8767_IRQ_JIGR_MASK (1 << 4) | ||
| 228 | #define S5M8767_IRQ_JIGF_MASK (1 << 5) | ||
| 229 | #define S5M8767_IRQ_LOWBAT2_MASK (1 << 6) | ||
| 230 | #define S5M8767_IRQ_LOWBAT1_MASK (1 << 7) | ||
| 231 | |||
| 232 | #define S5M8767_IRQ_MRB_MASK (1 << 2) | ||
| 233 | #define S5M8767_IRQ_DVSOK2_MASK (1 << 3) | ||
| 234 | #define S5M8767_IRQ_DVSOK3_MASK (1 << 4) | ||
| 235 | #define S5M8767_IRQ_DVSOK4_MASK (1 << 5) | ||
| 236 | |||
| 237 | #define S5M8767_IRQ_RTC60S_MASK (1 << 0) | ||
| 238 | #define S5M8767_IRQ_RTCA1_MASK (1 << 1) | ||
| 239 | #define S5M8767_IRQ_RTCA2_MASK (1 << 2) | ||
| 240 | #define S5M8767_IRQ_SMPL_MASK (1 << 3) | ||
| 241 | #define S5M8767_IRQ_RTC1S_MASK (1 << 4) | ||
| 242 | #define S5M8767_IRQ_WTSR_MASK (1 << 5) | ||
| 243 | |||
| 244 | enum s5m8763_irq { | ||
| 245 | S5M8763_IRQ_DCINF, | ||
| 246 | S5M8763_IRQ_DCINR, | ||
| 247 | S5M8763_IRQ_JIGF, | ||
| 248 | S5M8763_IRQ_JIGR, | ||
| 249 | S5M8763_IRQ_PWRONF, | ||
| 250 | S5M8763_IRQ_PWRONR, | ||
| 251 | |||
| 252 | S5M8763_IRQ_WTSREVNT, | ||
| 253 | S5M8763_IRQ_SMPLEVNT, | ||
| 254 | S5M8763_IRQ_ALARM1, | ||
| 255 | S5M8763_IRQ_ALARM0, | ||
| 256 | |||
| 257 | S5M8763_IRQ_ONKEY1S, | ||
| 258 | S5M8763_IRQ_TOPOFFR, | ||
| 259 | S5M8763_IRQ_DCINOVPR, | ||
| 260 | S5M8763_IRQ_CHGRSTF, | ||
| 261 | S5M8763_IRQ_DONER, | ||
| 262 | S5M8763_IRQ_CHGFAULT, | ||
| 263 | |||
| 264 | S5M8763_IRQ_LOBAT1, | ||
| 265 | S5M8763_IRQ_LOBAT2, | ||
| 266 | |||
| 267 | S5M8763_IRQ_NR, | ||
| 268 | }; | ||
| 269 | |||
| 270 | #define S5M8763_IRQ_DCINF_MASK (1 << 2) | ||
| 271 | #define S5M8763_IRQ_DCINR_MASK (1 << 3) | ||
| 272 | #define S5M8763_IRQ_JIGF_MASK (1 << 4) | ||
| 273 | #define S5M8763_IRQ_JIGR_MASK (1 << 5) | ||
| 274 | #define S5M8763_IRQ_PWRONF_MASK (1 << 6) | ||
| 275 | #define S5M8763_IRQ_PWRONR_MASK (1 << 7) | ||
| 276 | |||
| 277 | #define S5M8763_IRQ_WTSREVNT_MASK (1 << 0) | ||
| 278 | #define S5M8763_IRQ_SMPLEVNT_MASK (1 << 1) | ||
| 279 | #define S5M8763_IRQ_ALARM1_MASK (1 << 2) | ||
| 280 | #define S5M8763_IRQ_ALARM0_MASK (1 << 3) | ||
| 281 | |||
| 282 | #define S5M8763_IRQ_ONKEY1S_MASK (1 << 0) | ||
| 283 | #define S5M8763_IRQ_TOPOFFR_MASK (1 << 2) | ||
| 284 | #define S5M8763_IRQ_DCINOVPR_MASK (1 << 3) | ||
| 285 | #define S5M8763_IRQ_CHGRSTF_MASK (1 << 4) | ||
| 286 | #define S5M8763_IRQ_DONER_MASK (1 << 5) | ||
| 287 | #define S5M8763_IRQ_CHGFAULT_MASK (1 << 7) | ||
| 288 | |||
| 289 | #define S5M8763_IRQ_LOBAT1_MASK (1 << 0) | ||
| 290 | #define S5M8763_IRQ_LOBAT2_MASK (1 << 1) | ||
| 291 | |||
| 292 | #define S5M8763_ENRAMP (1 << 4) | ||
| 293 | |||
| 294 | /** | ||
| 295 | * struct s5m87xx_dev - s5m87xx master device for sub-drivers | ||
| 296 | * @dev: master device of the chip (can be used to access platform data) | ||
| 297 | * @i2c: i2c client private data for regulator | ||
| 298 | * @rtc: i2c client private data for rtc | ||
| 299 | * @iolock: mutex for serializing io access | ||
| 300 | * @irqlock: mutex for buslock | ||
| 301 | * @irq_base: base IRQ number for s5m87xx, required for IRQs | ||
| 302 | * @irq: generic IRQ number for s5m87xx | ||
| 303 | * @ono: power onoff IRQ number for s5m87xx | ||
| 304 | * @irq_masks_cur: currently active value | ||
| 305 | * @irq_masks_cache: cached hardware value | ||
| 306 | * @type: indicate which s5m87xx "variant" is used | ||
| 307 | */ | ||
| 308 | struct s5m87xx_dev { | ||
| 309 | struct device *dev; | ||
| 310 | struct regmap *regmap; | ||
| 311 | struct i2c_client *i2c; | ||
| 312 | struct i2c_client *rtc; | ||
| 313 | struct mutex iolock; | ||
| 314 | struct mutex irqlock; | ||
| 315 | |||
| 316 | int device_type; | ||
| 317 | int irq_base; | ||
| 318 | int irq; | ||
| 319 | int ono; | ||
| 320 | u8 irq_masks_cur[NUM_IRQ_REGS]; | ||
| 321 | u8 irq_masks_cache[NUM_IRQ_REGS]; | ||
| 322 | int type; | ||
| 323 | bool wakeup; | ||
| 324 | }; | ||
| 325 | |||
| 326 | int s5m_irq_init(struct s5m87xx_dev *s5m87xx); | ||
| 327 | void s5m_irq_exit(struct s5m87xx_dev *s5m87xx); | ||
| 328 | int s5m_irq_resume(struct s5m87xx_dev *s5m87xx); | ||
| 329 | |||
| 330 | extern int s5m_reg_read(struct s5m87xx_dev *s5m87xx, u8 reg, void *dest); | ||
| 331 | extern int s5m_bulk_read(struct s5m87xx_dev *s5m87xx, u8 reg, int count, u8 *buf); | ||
| 332 | extern int s5m_reg_write(struct s5m87xx_dev *s5m87xx, u8 reg, u8 value); | ||
| 333 | extern int s5m_bulk_write(struct s5m87xx_dev *s5m87xx, u8 reg, int count, u8 *buf); | ||
| 334 | extern int s5m_reg_update(struct s5m87xx_dev *s5m87xx, u8 reg, u8 val, u8 mask); | ||
| 335 | |||
| 336 | struct s5m_platform_data { | ||
| 337 | struct s5m_regulator_data *regulators; | ||
| 338 | struct s5m_opmode_data *opmode; | ||
| 339 | int device_type; | ||
| 340 | int num_regulators; | ||
| 341 | |||
| 342 | int irq_base; | ||
| 343 | int (*cfg_pmic_irq)(void); | ||
| 344 | |||
| 345 | int ono; | ||
| 346 | bool wakeup; | ||
| 347 | bool buck_voltage_lock; | ||
| 348 | |||
| 349 | int buck_gpios[3]; | ||
| 350 | int buck_ds[3]; | ||
| 351 | int buck2_voltage[8]; | ||
| 352 | bool buck2_gpiodvs; | ||
| 353 | int buck3_voltage[8]; | ||
| 354 | bool buck3_gpiodvs; | ||
| 355 | int buck4_voltage[8]; | ||
| 356 | bool buck4_gpiodvs; | ||
| 357 | |||
| 358 | int buck_set1; | ||
| 359 | int buck_set2; | ||
| 360 | int buck_set3; | ||
| 361 | int buck2_enable; | ||
| 362 | int buck3_enable; | ||
| 363 | int buck4_enable; | ||
| 364 | int buck_default_idx; | ||
| 365 | int buck2_default_idx; | ||
| 366 | int buck3_default_idx; | ||
| 367 | int buck4_default_idx; | ||
| 368 | |||
| 369 | int buck_ramp_delay; | ||
| 370 | bool buck2_ramp_enable; | ||
| 371 | bool buck3_ramp_enable; | ||
| 372 | bool buck4_ramp_enable; | ||
| 373 | |||
| 374 | int buck2_init; | ||
| 375 | int buck3_init; | ||
| 376 | int buck4_init; | ||
| 377 | }; | ||
| 378 | |||
| 379 | #endif /* __LINUX_MFD_S5M_CORE_H */ | ||
diff --git a/include/linux/mfd/s5m87xx/s5m-pmic.h b/include/linux/mfd/s5m87xx/s5m-pmic.h deleted file mode 100644 index 7c719f20f58a..000000000000 --- a/include/linux/mfd/s5m87xx/s5m-pmic.h +++ /dev/null | |||
| @@ -1,129 +0,0 @@ | |||
| 1 | /* s5m87xx.h | ||
| 2 | * | ||
| 3 | * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. | ||
| 4 | * http://www.samsung.com | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef __LINUX_MFD_S5M_PMIC_H | ||
| 12 | #define __LINUX_MFD_S5M_PMIC_H | ||
| 13 | |||
| 14 | #include <linux/regulator/machine.h> | ||
| 15 | |||
| 16 | /* S5M8767 regulator ids */ | ||
| 17 | enum s5m8767_regulators { | ||
| 18 | S5M8767_LDO1, | ||
| 19 | S5M8767_LDO2, | ||
| 20 | S5M8767_LDO3, | ||
| 21 | S5M8767_LDO4, | ||
| 22 | S5M8767_LDO5, | ||
| 23 | S5M8767_LDO6, | ||
| 24 | S5M8767_LDO7, | ||
| 25 | S5M8767_LDO8, | ||
| 26 | S5M8767_LDO9, | ||
| 27 | S5M8767_LDO10, | ||
| 28 | S5M8767_LDO11, | ||
| 29 | S5M8767_LDO12, | ||
| 30 | S5M8767_LDO13, | ||
| 31 | S5M8767_LDO14, | ||
| 32 | S5M8767_LDO15, | ||
| 33 | S5M8767_LDO16, | ||
| 34 | S5M8767_LDO17, | ||
| 35 | S5M8767_LDO18, | ||
| 36 | S5M8767_LDO19, | ||
| 37 | S5M8767_LDO20, | ||
| 38 | S5M8767_LDO21, | ||
| 39 | S5M8767_LDO22, | ||
| 40 | S5M8767_LDO23, | ||
| 41 | S5M8767_LDO24, | ||
| 42 | S5M8767_LDO25, | ||
| 43 | S5M8767_LDO26, | ||
| 44 | S5M8767_LDO27, | ||
| 45 | S5M8767_LDO28, | ||
| 46 | S5M8767_BUCK1, | ||
| 47 | S5M8767_BUCK2, | ||
| 48 | S5M8767_BUCK3, | ||
| 49 | S5M8767_BUCK4, | ||
| 50 | S5M8767_BUCK5, | ||
| 51 | S5M8767_BUCK6, | ||
| 52 | S5M8767_BUCK7, | ||
| 53 | S5M8767_BUCK8, | ||
| 54 | S5M8767_BUCK9, | ||
| 55 | S5M8767_AP_EN32KHZ, | ||
| 56 | S5M8767_CP_EN32KHZ, | ||
| 57 | |||
| 58 | S5M8767_REG_MAX, | ||
| 59 | }; | ||
| 60 | |||
| 61 | #define S5M8767_ENCTRL_SHIFT 6 | ||
| 62 | |||
| 63 | /* S5M8763 regulator ids */ | ||
| 64 | enum s5m8763_regulators { | ||
| 65 | S5M8763_LDO1, | ||
| 66 | S5M8763_LDO2, | ||
| 67 | S5M8763_LDO3, | ||
| 68 | S5M8763_LDO4, | ||
| 69 | S5M8763_LDO5, | ||
| 70 | S5M8763_LDO6, | ||
| 71 | S5M8763_LDO7, | ||
| 72 | S5M8763_LDO8, | ||
| 73 | S5M8763_LDO9, | ||
| 74 | S5M8763_LDO10, | ||
| 75 | S5M8763_LDO11, | ||
| 76 | S5M8763_LDO12, | ||
| 77 | S5M8763_LDO13, | ||
| 78 | S5M8763_LDO14, | ||
| 79 | S5M8763_LDO15, | ||
| 80 | S5M8763_LDO16, | ||
| 81 | S5M8763_BUCK1, | ||
| 82 | S5M8763_BUCK2, | ||
| 83 | S5M8763_BUCK3, | ||
| 84 | S5M8763_BUCK4, | ||
| 85 | S5M8763_AP_EN32KHZ, | ||
| 86 | S5M8763_CP_EN32KHZ, | ||
| 87 | S5M8763_ENCHGVI, | ||
| 88 | S5M8763_ESAFEUSB1, | ||
| 89 | S5M8763_ESAFEUSB2, | ||
| 90 | }; | ||
| 91 | |||
| 92 | /** | ||
| 93 | * s5m87xx_regulator_data - regulator data | ||
| 94 | * @id: regulator id | ||
| 95 | * @initdata: regulator init data (contraints, supplies, ...) | ||
| 96 | */ | ||
| 97 | struct s5m_regulator_data { | ||
| 98 | int id; | ||
| 99 | struct regulator_init_data *initdata; | ||
| 100 | }; | ||
| 101 | |||
| 102 | /* | ||
| 103 | * s5m_opmode_data - regulator operation mode data | ||
| 104 | * @id: regulator id | ||
| 105 | * @mode: regulator operation mode | ||
| 106 | */ | ||
| 107 | struct s5m_opmode_data { | ||
| 108 | int id; | ||
| 109 | int mode; | ||
| 110 | }; | ||
| 111 | |||
| 112 | /* | ||
| 113 | * s5m regulator operation mode | ||
| 114 | * S5M_OPMODE_OFF Regulator always OFF | ||
| 115 | * S5M_OPMODE_ON Regulator always ON | ||
| 116 | * S5M_OPMODE_LOWPOWER Regulator is on in low-power mode | ||
| 117 | * S5M_OPMODE_SUSPEND Regulator is changed by PWREN pin | ||
| 118 | * If PWREN is high, regulator is on | ||
| 119 | * If PWREN is low, regulator is off | ||
| 120 | */ | ||
| 121 | |||
| 122 | enum s5m_opmode { | ||
| 123 | S5M_OPMODE_OFF, | ||
| 124 | S5M_OPMODE_ON, | ||
| 125 | S5M_OPMODE_LOWPOWER, | ||
| 126 | S5M_OPMODE_SUSPEND, | ||
| 127 | }; | ||
| 128 | |||
| 129 | #endif /* __LINUX_MFD_S5M_PMIC_H */ | ||
diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h new file mode 100644 index 000000000000..b50c38f8bc48 --- /dev/null +++ b/include/linux/mfd/samsung/core.h | |||
| @@ -0,0 +1,159 @@ | |||
| 1 | /* | ||
| 2 | * core.h | ||
| 3 | * | ||
| 4 | * copyright (c) 2011 Samsung Electronics Co., Ltd | ||
| 5 | * http://www.samsung.com | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify it | ||
| 8 | * under the terms of the GNU General Public License as published by the | ||
| 9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 10 | * option) any later version. | ||
| 11 | * | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __LINUX_MFD_SEC_CORE_H | ||
| 15 | #define __LINUX_MFD_SEC_CORE_H | ||
| 16 | |||
| 17 | #define NUM_IRQ_REGS 4 | ||
| 18 | |||
| 19 | enum sec_device_type { | ||
| 20 | S5M8751X, | ||
| 21 | S5M8763X, | ||
| 22 | S5M8767X, | ||
| 23 | S2MPS11X, | ||
| 24 | }; | ||
| 25 | |||
| 26 | /** | ||
| 27 | * struct sec_pmic_dev - s5m87xx master device for sub-drivers | ||
| 28 | * @dev: master device of the chip (can be used to access platform data) | ||
| 29 | * @i2c: i2c client private data for regulator | ||
| 30 | * @rtc: i2c client private data for rtc | ||
| 31 | * @iolock: mutex for serializing io access | ||
| 32 | * @irqlock: mutex for buslock | ||
| 33 | * @irq_base: base IRQ number for sec-pmic, required for IRQs | ||
| 34 | * @irq: generic IRQ number for s5m87xx | ||
| 35 | * @ono: power onoff IRQ number for s5m87xx | ||
| 36 | * @irq_masks_cur: currently active value | ||
| 37 | * @irq_masks_cache: cached hardware value | ||
| 38 | * @type: indicate which s5m87xx "variant" is used | ||
| 39 | */ | ||
| 40 | struct sec_pmic_dev { | ||
| 41 | struct device *dev; | ||
| 42 | struct regmap *regmap; | ||
| 43 | struct i2c_client *i2c; | ||
| 44 | struct i2c_client *rtc; | ||
| 45 | struct mutex iolock; | ||
| 46 | struct mutex irqlock; | ||
| 47 | |||
| 48 | int device_type; | ||
| 49 | int irq_base; | ||
| 50 | int irq; | ||
| 51 | struct regmap_irq_chip_data *irq_data; | ||
| 52 | |||
| 53 | int ono; | ||
| 54 | u8 irq_masks_cur[NUM_IRQ_REGS]; | ||
| 55 | u8 irq_masks_cache[NUM_IRQ_REGS]; | ||
| 56 | int type; | ||
| 57 | bool wakeup; | ||
| 58 | }; | ||
| 59 | |||
| 60 | int sec_irq_init(struct sec_pmic_dev *sec_pmic); | ||
| 61 | void sec_irq_exit(struct sec_pmic_dev *sec_pmic); | ||
| 62 | int sec_irq_resume(struct sec_pmic_dev *sec_pmic); | ||
| 63 | |||
| 64 | extern int sec_reg_read(struct sec_pmic_dev *sec_pmic, u8 reg, void *dest); | ||
| 65 | extern int sec_bulk_read(struct sec_pmic_dev *sec_pmic, u8 reg, int count, u8 *buf); | ||
| 66 | extern int sec_reg_write(struct sec_pmic_dev *sec_pmic, u8 reg, u8 value); | ||
| 67 | extern int sec_bulk_write(struct sec_pmic_dev *sec_pmic, u8 reg, int count, u8 *buf); | ||
| 68 | extern int sec_reg_update(struct sec_pmic_dev *sec_pmic, u8 reg, u8 val, u8 mask); | ||
| 69 | |||
| 70 | struct sec_platform_data { | ||
| 71 | struct sec_regulator_data *regulators; | ||
| 72 | struct sec_opmode_data *opmode; | ||
| 73 | int device_type; | ||
| 74 | int num_regulators; | ||
| 75 | |||
| 76 | int irq_base; | ||
| 77 | int (*cfg_pmic_irq)(void); | ||
| 78 | |||
| 79 | int ono; | ||
| 80 | bool wakeup; | ||
| 81 | bool buck_voltage_lock; | ||
| 82 | |||
| 83 | int buck_gpios[3]; | ||
| 84 | int buck_ds[3]; | ||
| 85 | int buck2_voltage[8]; | ||
| 86 | bool buck2_gpiodvs; | ||
| 87 | int buck3_voltage[8]; | ||
| 88 | bool buck3_gpiodvs; | ||
| 89 | int buck4_voltage[8]; | ||
| 90 | bool buck4_gpiodvs; | ||
| 91 | |||
| 92 | int buck_set1; | ||
| 93 | int buck_set2; | ||
| 94 | int buck_set3; | ||
| 95 | int buck2_enable; | ||
| 96 | int buck3_enable; | ||
| 97 | int buck4_enable; | ||
| 98 | int buck_default_idx; | ||
| 99 | int buck2_default_idx; | ||
| 100 | int buck3_default_idx; | ||
| 101 | int buck4_default_idx; | ||
| 102 | |||
| 103 | int buck_ramp_delay; | ||
| 104 | |||
| 105 | int buck2_ramp_delay; | ||
| 106 | int buck34_ramp_delay; | ||
| 107 | int buck5_ramp_delay; | ||
| 108 | int buck16_ramp_delay; | ||
| 109 | int buck7810_ramp_delay; | ||
| 110 | int buck9_ramp_delay; | ||
| 111 | |||
| 112 | bool buck2_ramp_enable; | ||
| 113 | bool buck3_ramp_enable; | ||
| 114 | bool buck4_ramp_enable; | ||
| 115 | bool buck6_ramp_enable; | ||
| 116 | |||
| 117 | int buck2_init; | ||
| 118 | int buck3_init; | ||
| 119 | int buck4_init; | ||
| 120 | }; | ||
| 121 | |||
| 122 | /** | ||
| 123 | * sec_regulator_data - regulator data | ||
| 124 | * @id: regulator id | ||
| 125 | * @initdata: regulator init data (contraints, supplies, ...) | ||
| 126 | */ | ||
| 127 | struct sec_regulator_data { | ||
| 128 | int id; | ||
| 129 | struct regulator_init_data *initdata; | ||
| 130 | }; | ||
| 131 | |||
| 132 | /* | ||
| 133 | * sec_opmode_data - regulator operation mode data | ||
| 134 | * @id: regulator id | ||
| 135 | * @mode: regulator operation mode | ||
| 136 | */ | ||
| 137 | struct sec_opmode_data { | ||
| 138 | int id; | ||
| 139 | int mode; | ||
| 140 | }; | ||
| 141 | |||
| 142 | /* | ||
| 143 | * samsung regulator operation mode | ||
| 144 | * SEC_OPMODE_OFF Regulator always OFF | ||
| 145 | * SEC_OPMODE_ON Regulator always ON | ||
| 146 | * SEC_OPMODE_LOWPOWER Regulator is on in low-power mode | ||
| 147 | * SEC_OPMODE_SUSPEND Regulator is changed by PWREN pin | ||
| 148 | * If PWREN is high, regulator is on | ||
| 149 | * If PWREN is low, regulator is off | ||
| 150 | */ | ||
| 151 | |||
| 152 | enum sec_opmode { | ||
| 153 | SEC_OPMODE_OFF, | ||
| 154 | SEC_OPMODE_ON, | ||
| 155 | SEC_OPMODE_LOWPOWER, | ||
| 156 | SEC_OPMODE_SUSPEND, | ||
| 157 | }; | ||
| 158 | |||
| 159 | #endif /* __LINUX_MFD_SEC_CORE_H */ | ||
diff --git a/include/linux/mfd/samsung/irq.h b/include/linux/mfd/samsung/irq.h new file mode 100644 index 000000000000..d43b4f9e7fb2 --- /dev/null +++ b/include/linux/mfd/samsung/irq.h | |||
| @@ -0,0 +1,152 @@ | |||
| 1 | /* irq.h | ||
| 2 | * | ||
| 3 | * Copyright (c) 2012 Samsung Electronics Co., Ltd | ||
| 4 | * http://www.samsung.com | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify it | ||
| 7 | * under the terms of the GNU General Public License as published by the | ||
| 8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 9 | * option) any later version. | ||
| 10 | * | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __LINUX_MFD_SEC_IRQ_H | ||
| 14 | #define __LINUX_MFD_SEC_IRQ_H | ||
| 15 | |||
| 16 | enum s2mps11_irq { | ||
| 17 | S2MPS11_IRQ_PWRONF, | ||
| 18 | S2MPS11_IRQ_PWRONR, | ||
| 19 | S2MPS11_IRQ_JIGONBF, | ||
| 20 | S2MPS11_IRQ_JIGONBR, | ||
| 21 | S2MPS11_IRQ_ACOKBF, | ||
| 22 | S2MPS11_IRQ_ACOKBR, | ||
| 23 | S2MPS11_IRQ_PWRON1S, | ||
| 24 | S2MPS11_IRQ_MRB, | ||
| 25 | |||
| 26 | S2MPS11_IRQ_RTC60S, | ||
| 27 | S2MPS11_IRQ_RTCA1, | ||
| 28 | S2MPS11_IRQ_RTCA2, | ||
| 29 | S2MPS11_IRQ_SMPL, | ||
| 30 | S2MPS11_IRQ_RTC1S, | ||
| 31 | S2MPS11_IRQ_WTSR, | ||
| 32 | |||
| 33 | S2MPS11_IRQ_INT120C, | ||
| 34 | S2MPS11_IRQ_INT140C, | ||
| 35 | |||
| 36 | S2MPS11_IRQ_NR, | ||
| 37 | }; | ||
| 38 | |||
| 39 | #define S2MPS11_IRQ_PWRONF_MASK (1 << 0) | ||
| 40 | #define S2MPS11_IRQ_PWRONR_MASK (1 << 1) | ||
| 41 | #define S2MPS11_IRQ_JIGONBF_MASK (1 << 2) | ||
| 42 | #define S2MPS11_IRQ_JIGONBR_MASK (1 << 3) | ||
| 43 | #define S2MPS11_IRQ_ACOKBF_MASK (1 << 4) | ||
| 44 | #define S2MPS11_IRQ_ACOKBR_MASK (1 << 5) | ||
| 45 | #define S2MPS11_IRQ_PWRON1S_MASK (1 << 6) | ||
| 46 | #define S2MPS11_IRQ_MRB_MASK (1 << 7) | ||
| 47 | |||
| 48 | #define S2MPS11_IRQ_RTC60S_MASK (1 << 0) | ||
| 49 | #define S2MPS11_IRQ_RTCA1_MASK (1 << 1) | ||
| 50 | #define S2MPS11_IRQ_RTCA2_MASK (1 << 2) | ||
| 51 | #define S2MPS11_IRQ_SMPL_MASK (1 << 3) | ||
| 52 | #define S2MPS11_IRQ_RTC1S_MASK (1 << 4) | ||
| 53 | #define S2MPS11_IRQ_WTSR_MASK (1 << 5) | ||
| 54 | |||
| 55 | #define S2MPS11_IRQ_INT120C_MASK (1 << 0) | ||
| 56 | #define S2MPS11_IRQ_INT140C_MASK (1 << 1) | ||
| 57 | |||
| 58 | enum s5m8767_irq { | ||
| 59 | S5M8767_IRQ_PWRR, | ||
| 60 | S5M8767_IRQ_PWRF, | ||
| 61 | S5M8767_IRQ_PWR1S, | ||
| 62 | S5M8767_IRQ_JIGR, | ||
| 63 | S5M8767_IRQ_JIGF, | ||
| 64 | S5M8767_IRQ_LOWBAT2, | ||
| 65 | S5M8767_IRQ_LOWBAT1, | ||
| 66 | |||
| 67 | S5M8767_IRQ_MRB, | ||
| 68 | S5M8767_IRQ_DVSOK2, | ||
| 69 | S5M8767_IRQ_DVSOK3, | ||
| 70 | S5M8767_IRQ_DVSOK4, | ||
| 71 | |||
| 72 | S5M8767_IRQ_RTC60S, | ||
| 73 | S5M8767_IRQ_RTCA1, | ||
| 74 | S5M8767_IRQ_RTCA2, | ||
| 75 | S5M8767_IRQ_SMPL, | ||
| 76 | S5M8767_IRQ_RTC1S, | ||
| 77 | S5M8767_IRQ_WTSR, | ||
| 78 | |||
| 79 | S5M8767_IRQ_NR, | ||
| 80 | }; | ||
| 81 | |||
| 82 | #define S5M8767_IRQ_PWRR_MASK (1 << 0) | ||
| 83 | #define S5M8767_IRQ_PWRF_MASK (1 << 1) | ||
| 84 | #define S5M8767_IRQ_PWR1S_MASK (1 << 3) | ||
| 85 | #define S5M8767_IRQ_JIGR_MASK (1 << 4) | ||
| 86 | #define S5M8767_IRQ_JIGF_MASK (1 << 5) | ||
| 87 | #define S5M8767_IRQ_LOWBAT2_MASK (1 << 6) | ||
| 88 | #define S5M8767_IRQ_LOWBAT1_MASK (1 << 7) | ||
| 89 | |||
| 90 | #define S5M8767_IRQ_MRB_MASK (1 << 2) | ||
| 91 | #define S5M8767_IRQ_DVSOK2_MASK (1 << 3) | ||
| 92 | #define S5M8767_IRQ_DVSOK3_MASK (1 << 4) | ||
| 93 | #define S5M8767_IRQ_DVSOK4_MASK (1 << 5) | ||
| 94 | |||
| 95 | #define S5M8767_IRQ_RTC60S_MASK (1 << 0) | ||
| 96 | #define S5M8767_IRQ_RTCA1_MASK (1 << 1) | ||
| 97 | #define S5M8767_IRQ_RTCA2_MASK (1 << 2) | ||
| 98 | #define S5M8767_IRQ_SMPL_MASK (1 << 3) | ||
| 99 | #define S5M8767_IRQ_RTC1S_MASK (1 << 4) | ||
| 100 | #define S5M8767_IRQ_WTSR_MASK (1 << 5) | ||
| 101 | |||
| 102 | enum s5m8763_irq { | ||
| 103 | S5M8763_IRQ_DCINF, | ||
| 104 | S5M8763_IRQ_DCINR, | ||
| 105 | S5M8763_IRQ_JIGF, | ||
| 106 | S5M8763_IRQ_JIGR, | ||
| 107 | S5M8763_IRQ_PWRONF, | ||
| 108 | S5M8763_IRQ_PWRONR, | ||
| 109 | |||
| 110 | S5M8763_IRQ_WTSREVNT, | ||
| 111 | S5M8763_IRQ_SMPLEVNT, | ||
| 112 | S5M8763_IRQ_ALARM1, | ||
| 113 | S5M8763_IRQ_ALARM0, | ||
| 114 | |||
| 115 | S5M8763_IRQ_ONKEY1S, | ||
| 116 | S5M8763_IRQ_TOPOFFR, | ||
| 117 | S5M8763_IRQ_DCINOVPR, | ||
| 118 | S5M8763_IRQ_CHGRSTF, | ||
| 119 | S5M8763_IRQ_DONER, | ||
| 120 | S5M8763_IRQ_CHGFAULT, | ||
| 121 | |||
| 122 | S5M8763_IRQ_LOBAT1, | ||
| 123 | S5M8763_IRQ_LOBAT2, | ||
| 124 | |||
| 125 | S5M8763_IRQ_NR, | ||
| 126 | }; | ||
| 127 | |||
| 128 | #define S5M8763_IRQ_DCINF_MASK (1 << 2) | ||
| 129 | #define S5M8763_IRQ_DCINR_MASK (1 << 3) | ||
| 130 | #define S5M8763_IRQ_JIGF_MASK (1 << 4) | ||
| 131 | #define S5M8763_IRQ_JIGR_MASK (1 << 5) | ||
| 132 | #define S5M8763_IRQ_PWRONF_MASK (1 << 6) | ||
| 133 | #define S5M8763_IRQ_PWRONR_MASK (1 << 7) | ||
| 134 | |||
| 135 | #define S5M8763_IRQ_WTSREVNT_MASK (1 << 0) | ||
| 136 | #define S5M8763_IRQ_SMPLEVNT_MASK (1 << 1) | ||
| 137 | #define S5M8763_IRQ_ALARM1_MASK (1 << 2) | ||
| 138 | #define S5M8763_IRQ_ALARM0_MASK (1 << 3) | ||
| 139 | |||
| 140 | #define S5M8763_IRQ_ONKEY1S_MASK (1 << 0) | ||
| 141 | #define S5M8763_IRQ_TOPOFFR_MASK (1 << 2) | ||
| 142 | #define S5M8763_IRQ_DCINOVPR_MASK (1 << 3) | ||
| 143 | #define S5M8763_IRQ_CHGRSTF_MASK (1 << 4) | ||
| 144 | #define S5M8763_IRQ_DONER_MASK (1 << 5) | ||
| 145 | #define S5M8763_IRQ_CHGFAULT_MASK (1 << 7) | ||
| 146 | |||
| 147 | #define S5M8763_IRQ_LOBAT1_MASK (1 << 0) | ||
| 148 | #define S5M8763_IRQ_LOBAT2_MASK (1 << 1) | ||
| 149 | |||
| 150 | #define S5M8763_ENRAMP (1 << 4) | ||
| 151 | |||
| 152 | #endif /* __LINUX_MFD_SEC_IRQ_H */ | ||
diff --git a/include/linux/mfd/s5m87xx/s5m-rtc.h b/include/linux/mfd/samsung/rtc.h index 6ce8da264cec..71597e20cddb 100644 --- a/include/linux/mfd/s5m87xx/s5m-rtc.h +++ b/include/linux/mfd/samsung/rtc.h | |||
| @@ -1,5 +1,4 @@ | |||
| 1 | /* | 1 | /* rtc.h |
| 2 | * s5m-rtc.h | ||
| 3 | * | 2 | * |
| 4 | * Copyright (c) 2011 Samsung Electronics Co., Ltd | 3 | * Copyright (c) 2011 Samsung Electronics Co., Ltd |
| 5 | * http://www.samsung.com | 4 | * http://www.samsung.com |
| @@ -11,39 +10,39 @@ | |||
| 11 | * | 10 | * |
| 12 | */ | 11 | */ |
| 13 | 12 | ||
| 14 | #ifndef __LINUX_MFD_S5M_RTC_H | 13 | #ifndef __LINUX_MFD_SEC_RTC_H |
| 15 | #define __LINUX_MFD_S5M_RTC_H | 14 | #define __LINUX_MFD_SEC_RTC_H |
| 16 | 15 | ||
| 17 | enum s5m87xx_rtc_reg { | 16 | enum sec_rtc_reg { |
| 18 | S5M87XX_RTC_SEC, | 17 | SEC_RTC_SEC, |
| 19 | S5M87XX_RTC_MIN, | 18 | SEC_RTC_MIN, |
| 20 | S5M87XX_RTC_HOUR, | 19 | SEC_RTC_HOUR, |
| 21 | S5M87XX_RTC_WEEKDAY, | 20 | SEC_RTC_WEEKDAY, |
| 22 | S5M87XX_RTC_DATE, | 21 | SEC_RTC_DATE, |
| 23 | S5M87XX_RTC_MONTH, | 22 | SEC_RTC_MONTH, |
| 24 | S5M87XX_RTC_YEAR1, | 23 | SEC_RTC_YEAR1, |
| 25 | S5M87XX_RTC_YEAR2, | 24 | SEC_RTC_YEAR2, |
| 26 | S5M87XX_ALARM0_SEC, | 25 | SEC_ALARM0_SEC, |
| 27 | S5M87XX_ALARM0_MIN, | 26 | SEC_ALARM0_MIN, |
| 28 | S5M87XX_ALARM0_HOUR, | 27 | SEC_ALARM0_HOUR, |
| 29 | S5M87XX_ALARM0_WEEKDAY, | 28 | SEC_ALARM0_WEEKDAY, |
| 30 | S5M87XX_ALARM0_DATE, | 29 | SEC_ALARM0_DATE, |
| 31 | S5M87XX_ALARM0_MONTH, | 30 | SEC_ALARM0_MONTH, |
| 32 | S5M87XX_ALARM0_YEAR1, | 31 | SEC_ALARM0_YEAR1, |
| 33 | S5M87XX_ALARM0_YEAR2, | 32 | SEC_ALARM0_YEAR2, |
| 34 | S5M87XX_ALARM1_SEC, | 33 | SEC_ALARM1_SEC, |
| 35 | S5M87XX_ALARM1_MIN, | 34 | SEC_ALARM1_MIN, |
| 36 | S5M87XX_ALARM1_HOUR, | 35 | SEC_ALARM1_HOUR, |
| 37 | S5M87XX_ALARM1_WEEKDAY, | 36 | SEC_ALARM1_WEEKDAY, |
| 38 | S5M87XX_ALARM1_DATE, | 37 | SEC_ALARM1_DATE, |
| 39 | S5M87XX_ALARM1_MONTH, | 38 | SEC_ALARM1_MONTH, |
| 40 | S5M87XX_ALARM1_YEAR1, | 39 | SEC_ALARM1_YEAR1, |
| 41 | S5M87XX_ALARM1_YEAR2, | 40 | SEC_ALARM1_YEAR2, |
| 42 | S5M87XX_ALARM0_CONF, | 41 | SEC_ALARM0_CONF, |
| 43 | S5M87XX_ALARM1_CONF, | 42 | SEC_ALARM1_CONF, |
| 44 | S5M87XX_RTC_STATUS, | 43 | SEC_RTC_STATUS, |
| 45 | S5M87XX_WTSR_SMPL_CNTL, | 44 | SEC_WTSR_SMPL_CNTL, |
| 46 | S5M87XX_RTC_UDR_CON, | 45 | SEC_RTC_UDR_CON, |
| 47 | }; | 46 | }; |
| 48 | 47 | ||
| 49 | #define RTC_I2C_ADDR (0x0C >> 1) | 48 | #define RTC_I2C_ADDR (0x0C >> 1) |
| @@ -81,4 +80,4 @@ enum { | |||
| 81 | RTC_YEAR2, | 80 | RTC_YEAR2, |
| 82 | }; | 81 | }; |
| 83 | 82 | ||
| 84 | #endif /* __LINUX_MFD_S5M_RTC_H */ | 83 | #endif /* __LINUX_MFD_SEC_RTC_H */ |
diff --git a/include/linux/mfd/samsung/s2mps11.h b/include/linux/mfd/samsung/s2mps11.h new file mode 100644 index 000000000000..ad2252f239d7 --- /dev/null +++ b/include/linux/mfd/samsung/s2mps11.h | |||
| @@ -0,0 +1,196 @@ | |||
| 1 | /* | ||
| 2 | * s2mps11.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2012 Samsung Electronics Co., Ltd | ||
| 5 | * http://www.samsung.com | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify it | ||
| 8 | * under the terms of the GNU General Public License as published by the | ||
| 9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 10 | * option) any later version. | ||
| 11 | * | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __LINUX_MFD_S2MPS11_H | ||
| 15 | #define __LINUX_MFD_S2MPS11_H | ||
| 16 | |||
| 17 | /* S2MPS11 registers */ | ||
| 18 | enum s2mps11_reg { | ||
| 19 | S2MPS11_REG_ID, | ||
| 20 | S2MPS11_REG_INT1, | ||
| 21 | S2MPS11_REG_INT2, | ||
| 22 | S2MPS11_REG_INT3, | ||
| 23 | S2MPS11_REG_INT1M, | ||
| 24 | S2MPS11_REG_INT2M, | ||
| 25 | S2MPS11_REG_INT3M, | ||
| 26 | S2MPS11_REG_ST1, | ||
| 27 | S2MPS11_REG_ST2, | ||
| 28 | S2MPS11_REG_OFFSRC, | ||
| 29 | S2MPS11_REG_PWRONSRC, | ||
| 30 | S2MPS11_REG_RTC_CTRL, | ||
| 31 | S2MPS11_REG_CTRL1, | ||
| 32 | S2MPS11_REG_ETC_TEST, | ||
| 33 | S2MPS11_REG_RSVD3, | ||
| 34 | S2MPS11_REG_BU_CHG, | ||
| 35 | S2MPS11_REG_RAMP, | ||
| 36 | S2MPS11_REG_RAMP_BUCK, | ||
| 37 | S2MPS11_REG_LDO1_8, | ||
| 38 | S2MPS11_REG_LDO9_16, | ||
| 39 | S2MPS11_REG_LDO17_24, | ||
| 40 | S2MPS11_REG_LDO25_32, | ||
| 41 | S2MPS11_REG_LDO33_38, | ||
| 42 | S2MPS11_REG_LDO1_8_1, | ||
| 43 | S2MPS11_REG_LDO9_16_1, | ||
| 44 | S2MPS11_REG_LDO17_24_1, | ||
| 45 | S2MPS11_REG_LDO25_32_1, | ||
| 46 | S2MPS11_REG_LDO33_38_1, | ||
| 47 | S2MPS11_REG_OTP_ADRL, | ||
| 48 | S2MPS11_REG_OTP_ADRH, | ||
| 49 | S2MPS11_REG_OTP_DATA, | ||
| 50 | S2MPS11_REG_MON1SEL, | ||
| 51 | S2MPS11_REG_MON2SEL, | ||
| 52 | S2MPS11_REG_LEE, | ||
| 53 | S2MPS11_REG_RSVD_NO, | ||
| 54 | S2MPS11_REG_UVLO, | ||
| 55 | S2MPS11_REG_LEE_NO, | ||
| 56 | S2MPS11_REG_B1CTRL1, | ||
| 57 | S2MPS11_REG_B1CTRL2, | ||
| 58 | S2MPS11_REG_B2CTRL1, | ||
| 59 | S2MPS11_REG_B2CTRL2, | ||
| 60 | S2MPS11_REG_B3CTRL1, | ||
| 61 | S2MPS11_REG_B3CTRL2, | ||
| 62 | S2MPS11_REG_B4CTRL1, | ||
| 63 | S2MPS11_REG_B4CTRL2, | ||
| 64 | S2MPS11_REG_B5CTRL1, | ||
| 65 | S2MPS11_REG_BUCK5_SW, | ||
| 66 | S2MPS11_REG_B5CTRL2, | ||
| 67 | S2MPS11_REG_B5CTRL3, | ||
| 68 | S2MPS11_REG_B5CTRL4, | ||
| 69 | S2MPS11_REG_B5CTRL5, | ||
| 70 | S2MPS11_REG_B6CTRL1, | ||
| 71 | S2MPS11_REG_B6CTRL2, | ||
| 72 | S2MPS11_REG_B7CTRL1, | ||
| 73 | S2MPS11_REG_B7CTRL2, | ||
| 74 | S2MPS11_REG_B8CTRL1, | ||
| 75 | S2MPS11_REG_B8CTRL2, | ||
| 76 | S2MPS11_REG_B9CTRL1, | ||
| 77 | S2MPS11_REG_B9CTRL2, | ||
| 78 | S2MPS11_REG_B10CTRL1, | ||
| 79 | S2MPS11_REG_B10CTRL2, | ||
| 80 | S2MPS11_REG_L1CTRL, | ||
| 81 | S2MPS11_REG_L2CTRL, | ||
| 82 | S2MPS11_REG_L3CTRL, | ||
| 83 | S2MPS11_REG_L4CTRL, | ||
| 84 | S2MPS11_REG_L5CTRL, | ||
| 85 | S2MPS11_REG_L6CTRL, | ||
| 86 | S2MPS11_REG_L7CTRL, | ||
| 87 | S2MPS11_REG_L8CTRL, | ||
| 88 | S2MPS11_REG_L9CTRL, | ||
| 89 | S2MPS11_REG_L10CTRL, | ||
| 90 | S2MPS11_REG_L11CTRL, | ||
| 91 | S2MPS11_REG_L12CTRL, | ||
| 92 | S2MPS11_REG_L13CTRL, | ||
| 93 | S2MPS11_REG_L14CTRL, | ||
| 94 | S2MPS11_REG_L15CTRL, | ||
| 95 | S2MPS11_REG_L16CTRL, | ||
| 96 | S2MPS11_REG_L17CTRL, | ||
| 97 | S2MPS11_REG_L18CTRL, | ||
| 98 | S2MPS11_REG_L19CTRL, | ||
| 99 | S2MPS11_REG_L20CTRL, | ||
| 100 | S2MPS11_REG_L21CTRL, | ||
| 101 | S2MPS11_REG_L22CTRL, | ||
| 102 | S2MPS11_REG_L23CTRL, | ||
| 103 | S2MPS11_REG_L24CTRL, | ||
| 104 | S2MPS11_REG_L25CTRL, | ||
| 105 | S2MPS11_REG_L26CTRL, | ||
| 106 | S2MPS11_REG_L27CTRL, | ||
| 107 | S2MPS11_REG_L28CTRL, | ||
| 108 | S2MPS11_REG_L29CTRL, | ||
| 109 | S2MPS11_REG_L30CTRL, | ||
| 110 | S2MPS11_REG_L31CTRL, | ||
| 111 | S2MPS11_REG_L32CTRL, | ||
| 112 | S2MPS11_REG_L33CTRL, | ||
| 113 | S2MPS11_REG_L34CTRL, | ||
| 114 | S2MPS11_REG_L35CTRL, | ||
| 115 | S2MPS11_REG_L36CTRL, | ||
| 116 | S2MPS11_REG_L37CTRL, | ||
| 117 | S2MPS11_REG_L38CTRL, | ||
| 118 | }; | ||
| 119 | |||
| 120 | /* S2MPS11 regulator ids */ | ||
| 121 | enum s2mps11_regulators { | ||
| 122 | S2MPS11_LDO1, | ||
| 123 | S2MPS11_LDO2, | ||
| 124 | S2MPS11_LDO3, | ||
| 125 | S2MPS11_LDO4, | ||
| 126 | S2MPS11_LDO5, | ||
| 127 | S2MPS11_LDO6, | ||
| 128 | S2MPS11_LDO7, | ||
| 129 | S2MPS11_LDO8, | ||
| 130 | S2MPS11_LDO9, | ||
| 131 | S2MPS11_LDO10, | ||
| 132 | S2MPS11_LDO11, | ||
| 133 | S2MPS11_LDO12, | ||
| 134 | S2MPS11_LDO13, | ||
| 135 | S2MPS11_LDO14, | ||
| 136 | S2MPS11_LDO15, | ||
| 137 | S2MPS11_LDO16, | ||
| 138 | S2MPS11_LDO17, | ||
| 139 | S2MPS11_LDO18, | ||
| 140 | S2MPS11_LDO19, | ||
| 141 | S2MPS11_LDO20, | ||
| 142 | S2MPS11_LDO21, | ||
| 143 | S2MPS11_LDO22, | ||
| 144 | S2MPS11_LDO23, | ||
| 145 | S2MPS11_LDO24, | ||
| 146 | S2MPS11_LDO25, | ||
| 147 | S2MPS11_LDO26, | ||
| 148 | S2MPS11_LDO27, | ||
| 149 | S2MPS11_LDO28, | ||
| 150 | S2MPS11_LDO29, | ||
| 151 | S2MPS11_LDO30, | ||
| 152 | S2MPS11_LDO31, | ||
| 153 | S2MPS11_LDO32, | ||
| 154 | S2MPS11_LDO33, | ||
| 155 | S2MPS11_LDO34, | ||
| 156 | S2MPS11_LDO35, | ||
| 157 | S2MPS11_LDO36, | ||
| 158 | S2MPS11_LDO37, | ||
| 159 | S2MPS11_LDO38, | ||
| 160 | S2MPS11_BUCK1, | ||
| 161 | S2MPS11_BUCK2, | ||
| 162 | S2MPS11_BUCK3, | ||
| 163 | S2MPS11_BUCK4, | ||
| 164 | S2MPS11_BUCK5, | ||
| 165 | S2MPS11_BUCK6, | ||
| 166 | S2MPS11_BUCK7, | ||
| 167 | S2MPS11_BUCK8, | ||
| 168 | S2MPS11_BUCK9, | ||
| 169 | S2MPS11_BUCK10, | ||
| 170 | S2MPS11_AP_EN32KHZ, | ||
| 171 | S2MPS11_CP_EN32KHZ, | ||
| 172 | S2MPS11_BT_EN32KHZ, | ||
| 173 | |||
| 174 | S2MPS11_REG_MAX, | ||
| 175 | }; | ||
| 176 | |||
| 177 | #define S2MPS11_BUCK_MIN1 600000 | ||
| 178 | #define S2MPS11_BUCK_MIN2 750000 | ||
| 179 | #define S2MPS11_BUCK_MIN3 3000000 | ||
| 180 | #define S2MPS11_LDO_MIN 800000 | ||
| 181 | #define S2MPS11_BUCK_STEP1 6250 | ||
| 182 | #define S2MPS11_BUCK_STEP2 12500 | ||
| 183 | #define S2MPS11_BUCK_STEP3 25000 | ||
| 184 | #define S2MPS11_LDO_STEP1 50000 | ||
| 185 | #define S2MPS11_LDO_STEP2 25000 | ||
| 186 | #define S2MPS11_LDO_VSEL_MASK 0x3F | ||
| 187 | #define S2MPS11_BUCK_VSEL_MASK 0xFF | ||
| 188 | #define S2MPS11_ENABLE_MASK (0x03 << S2MPS11_ENABLE_SHIFT) | ||
| 189 | #define S2MPS11_ENABLE_SHIFT 0x06 | ||
| 190 | #define S2MPS11_LDO_N_VOLTAGES (S2MPS11_LDO_VSEL_MASK + 1) | ||
| 191 | #define S2MPS11_BUCK_N_VOLTAGES (S2MPS11_BUCK_VSEL_MASK + 1) | ||
| 192 | |||
| 193 | #define S2MPS11_PMIC_EN_SHIFT 6 | ||
| 194 | #define S2MPS11_REGULATOR_MAX (S2MPS11_REG_MAX - 3) | ||
| 195 | |||
| 196 | #endif /* __LINUX_MFD_S2MPS11_H */ | ||
diff --git a/include/linux/mfd/samsung/s5m8763.h b/include/linux/mfd/samsung/s5m8763.h new file mode 100644 index 000000000000..e025418e5589 --- /dev/null +++ b/include/linux/mfd/samsung/s5m8763.h | |||
| @@ -0,0 +1,96 @@ | |||
| 1 | /* s5m8763.h | ||
| 2 | * | ||
| 3 | * Copyright (c) 2011 Samsung Electronics Co., Ltd | ||
| 4 | * http://www.samsung.com | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify it | ||
| 7 | * under the terms of the GNU General Public License as published by the | ||
| 8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 9 | * option) any later version. | ||
| 10 | * | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __LINUX_MFD_S5M8763_H | ||
| 14 | #define __LINUX_MFD_S5M8763_H | ||
| 15 | |||
| 16 | /* S5M8763 registers */ | ||
| 17 | enum s5m8763_reg { | ||
| 18 | S5M8763_REG_IRQ1, | ||
| 19 | S5M8763_REG_IRQ2, | ||
| 20 | S5M8763_REG_IRQ3, | ||
| 21 | S5M8763_REG_IRQ4, | ||
| 22 | S5M8763_REG_IRQM1, | ||
| 23 | S5M8763_REG_IRQM2, | ||
| 24 | S5M8763_REG_IRQM3, | ||
| 25 | S5M8763_REG_IRQM4, | ||
| 26 | S5M8763_REG_STATUS1, | ||
| 27 | S5M8763_REG_STATUS2, | ||
| 28 | S5M8763_REG_STATUSM1, | ||
| 29 | S5M8763_REG_STATUSM2, | ||
| 30 | S5M8763_REG_CHGR1, | ||
| 31 | S5M8763_REG_CHGR2, | ||
| 32 | S5M8763_REG_LDO_ACTIVE_DISCHARGE1, | ||
| 33 | S5M8763_REG_LDO_ACTIVE_DISCHARGE2, | ||
| 34 | S5M8763_REG_BUCK_ACTIVE_DISCHARGE3, | ||
| 35 | S5M8763_REG_ONOFF1, | ||
| 36 | S5M8763_REG_ONOFF2, | ||
| 37 | S5M8763_REG_ONOFF3, | ||
| 38 | S5M8763_REG_ONOFF4, | ||
| 39 | S5M8763_REG_BUCK1_VOLTAGE1, | ||
| 40 | S5M8763_REG_BUCK1_VOLTAGE2, | ||
| 41 | S5M8763_REG_BUCK1_VOLTAGE3, | ||
| 42 | S5M8763_REG_BUCK1_VOLTAGE4, | ||
| 43 | S5M8763_REG_BUCK2_VOLTAGE1, | ||
| 44 | S5M8763_REG_BUCK2_VOLTAGE2, | ||
| 45 | S5M8763_REG_BUCK3, | ||
| 46 | S5M8763_REG_BUCK4, | ||
| 47 | S5M8763_REG_LDO1_LDO2, | ||
| 48 | S5M8763_REG_LDO3, | ||
| 49 | S5M8763_REG_LDO4, | ||
| 50 | S5M8763_REG_LDO5, | ||
| 51 | S5M8763_REG_LDO6, | ||
| 52 | S5M8763_REG_LDO7, | ||
| 53 | S5M8763_REG_LDO7_LDO8, | ||
| 54 | S5M8763_REG_LDO9_LDO10, | ||
| 55 | S5M8763_REG_LDO11, | ||
| 56 | S5M8763_REG_LDO12, | ||
| 57 | S5M8763_REG_LDO13, | ||
| 58 | S5M8763_REG_LDO14, | ||
| 59 | S5M8763_REG_LDO15, | ||
| 60 | S5M8763_REG_LDO16, | ||
| 61 | S5M8763_REG_BKCHR, | ||
| 62 | S5M8763_REG_LBCNFG1, | ||
| 63 | S5M8763_REG_LBCNFG2, | ||
| 64 | }; | ||
| 65 | |||
| 66 | /* S5M8763 regulator ids */ | ||
| 67 | enum s5m8763_regulators { | ||
| 68 | S5M8763_LDO1, | ||
| 69 | S5M8763_LDO2, | ||
| 70 | S5M8763_LDO3, | ||
| 71 | S5M8763_LDO4, | ||
| 72 | S5M8763_LDO5, | ||
| 73 | S5M8763_LDO6, | ||
| 74 | S5M8763_LDO7, | ||
| 75 | S5M8763_LDO8, | ||
| 76 | S5M8763_LDO9, | ||
| 77 | S5M8763_LDO10, | ||
| 78 | S5M8763_LDO11, | ||
| 79 | S5M8763_LDO12, | ||
| 80 | S5M8763_LDO13, | ||
| 81 | S5M8763_LDO14, | ||
| 82 | S5M8763_LDO15, | ||
| 83 | S5M8763_LDO16, | ||
| 84 | S5M8763_BUCK1, | ||
| 85 | S5M8763_BUCK2, | ||
| 86 | S5M8763_BUCK3, | ||
| 87 | S5M8763_BUCK4, | ||
| 88 | S5M8763_AP_EN32KHZ, | ||
| 89 | S5M8763_CP_EN32KHZ, | ||
| 90 | S5M8763_ENCHGVI, | ||
| 91 | S5M8763_ESAFEUSB1, | ||
| 92 | S5M8763_ESAFEUSB2, | ||
| 93 | }; | ||
| 94 | |||
| 95 | #define S5M8763_ENRAMP (1 << 4) | ||
| 96 | #endif /* __LINUX_MFD_S5M8763_H */ | ||
diff --git a/include/linux/mfd/samsung/s5m8767.h b/include/linux/mfd/samsung/s5m8767.h new file mode 100644 index 000000000000..306a95fc558c --- /dev/null +++ b/include/linux/mfd/samsung/s5m8767.h | |||
| @@ -0,0 +1,188 @@ | |||
| 1 | /* s5m8767.h | ||
| 2 | * | ||
| 3 | * Copyright (c) 2011 Samsung Electronics Co., Ltd | ||
| 4 | * http://www.samsung.com | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify it | ||
| 7 | * under the terms of the GNU General Public License as published by the | ||
| 8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 9 | * option) any later version. | ||
| 10 | * | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __LINUX_MFD_S5M8767_H | ||
| 14 | #define __LINUX_MFD_S5M8767_H | ||
| 15 | |||
| 16 | /* S5M8767 registers */ | ||
| 17 | enum s5m8767_reg { | ||
| 18 | S5M8767_REG_ID, | ||
| 19 | S5M8767_REG_INT1, | ||
| 20 | S5M8767_REG_INT2, | ||
| 21 | S5M8767_REG_INT3, | ||
| 22 | S5M8767_REG_INT1M, | ||
| 23 | S5M8767_REG_INT2M, | ||
| 24 | S5M8767_REG_INT3M, | ||
| 25 | S5M8767_REG_STATUS1, | ||
| 26 | S5M8767_REG_STATUS2, | ||
| 27 | S5M8767_REG_STATUS3, | ||
| 28 | S5M8767_REG_CTRL1, | ||
| 29 | S5M8767_REG_CTRL2, | ||
| 30 | S5M8767_REG_LOWBAT1, | ||
| 31 | S5M8767_REG_LOWBAT2, | ||
| 32 | S5M8767_REG_BUCHG, | ||
| 33 | S5M8767_REG_DVSRAMP, | ||
| 34 | S5M8767_REG_DVSTIMER2 = 0x10, | ||
| 35 | S5M8767_REG_DVSTIMER3, | ||
| 36 | S5M8767_REG_DVSTIMER4, | ||
| 37 | S5M8767_REG_LDO1, | ||
| 38 | S5M8767_REG_LDO2, | ||
| 39 | S5M8767_REG_LDO3, | ||
| 40 | S5M8767_REG_LDO4, | ||
| 41 | S5M8767_REG_LDO5, | ||
| 42 | S5M8767_REG_LDO6, | ||
| 43 | S5M8767_REG_LDO7, | ||
| 44 | S5M8767_REG_LDO8, | ||
| 45 | S5M8767_REG_LDO9, | ||
| 46 | S5M8767_REG_LDO10, | ||
| 47 | S5M8767_REG_LDO11, | ||
| 48 | S5M8767_REG_LDO12, | ||
| 49 | S5M8767_REG_LDO13, | ||
| 50 | S5M8767_REG_LDO14 = 0x20, | ||
| 51 | S5M8767_REG_LDO15, | ||
| 52 | S5M8767_REG_LDO16, | ||
| 53 | S5M8767_REG_LDO17, | ||
| 54 | S5M8767_REG_LDO18, | ||
| 55 | S5M8767_REG_LDO19, | ||
| 56 | S5M8767_REG_LDO20, | ||
| 57 | S5M8767_REG_LDO21, | ||
| 58 | S5M8767_REG_LDO22, | ||
| 59 | S5M8767_REG_LDO23, | ||
| 60 | S5M8767_REG_LDO24, | ||
| 61 | S5M8767_REG_LDO25, | ||
| 62 | S5M8767_REG_LDO26, | ||
| 63 | S5M8767_REG_LDO27, | ||
| 64 | S5M8767_REG_LDO28, | ||
| 65 | S5M8767_REG_UVLO = 0x31, | ||
| 66 | S5M8767_REG_BUCK1CTRL1, | ||
| 67 | S5M8767_REG_BUCK1CTRL2, | ||
| 68 | S5M8767_REG_BUCK2CTRL, | ||
| 69 | S5M8767_REG_BUCK2DVS1, | ||
| 70 | S5M8767_REG_BUCK2DVS2, | ||
| 71 | S5M8767_REG_BUCK2DVS3, | ||
| 72 | S5M8767_REG_BUCK2DVS4, | ||
| 73 | S5M8767_REG_BUCK2DVS5, | ||
| 74 | S5M8767_REG_BUCK2DVS6, | ||
| 75 | S5M8767_REG_BUCK2DVS7, | ||
| 76 | S5M8767_REG_BUCK2DVS8, | ||
| 77 | S5M8767_REG_BUCK3CTRL, | ||
| 78 | S5M8767_REG_BUCK3DVS1, | ||
| 79 | S5M8767_REG_BUCK3DVS2, | ||
| 80 | S5M8767_REG_BUCK3DVS3, | ||
| 81 | S5M8767_REG_BUCK3DVS4, | ||
| 82 | S5M8767_REG_BUCK3DVS5, | ||
| 83 | S5M8767_REG_BUCK3DVS6, | ||
| 84 | S5M8767_REG_BUCK3DVS7, | ||
| 85 | S5M8767_REG_BUCK3DVS8, | ||
| 86 | S5M8767_REG_BUCK4CTRL, | ||
| 87 | S5M8767_REG_BUCK4DVS1, | ||
| 88 | S5M8767_REG_BUCK4DVS2, | ||
| 89 | S5M8767_REG_BUCK4DVS3, | ||
| 90 | S5M8767_REG_BUCK4DVS4, | ||
| 91 | S5M8767_REG_BUCK4DVS5, | ||
| 92 | S5M8767_REG_BUCK4DVS6, | ||
| 93 | S5M8767_REG_BUCK4DVS7, | ||
| 94 | S5M8767_REG_BUCK4DVS8, | ||
| 95 | S5M8767_REG_BUCK5CTRL1, | ||
| 96 | S5M8767_REG_BUCK5CTRL2, | ||
| 97 | S5M8767_REG_BUCK5CTRL3, | ||
| 98 | S5M8767_REG_BUCK5CTRL4, | ||
| 99 | S5M8767_REG_BUCK5CTRL5, | ||
| 100 | S5M8767_REG_BUCK6CTRL1, | ||
| 101 | S5M8767_REG_BUCK6CTRL2, | ||
| 102 | S5M8767_REG_BUCK7CTRL1, | ||
| 103 | S5M8767_REG_BUCK7CTRL2, | ||
| 104 | S5M8767_REG_BUCK8CTRL1, | ||
| 105 | S5M8767_REG_BUCK8CTRL2, | ||
| 106 | S5M8767_REG_BUCK9CTRL1, | ||
| 107 | S5M8767_REG_BUCK9CTRL2, | ||
| 108 | S5M8767_REG_LDO1CTRL, | ||
| 109 | S5M8767_REG_LDO2_1CTRL, | ||
| 110 | S5M8767_REG_LDO2_2CTRL, | ||
| 111 | S5M8767_REG_LDO2_3CTRL, | ||
| 112 | S5M8767_REG_LDO2_4CTRL, | ||
| 113 | S5M8767_REG_LDO3CTRL, | ||
| 114 | S5M8767_REG_LDO4CTRL, | ||
| 115 | S5M8767_REG_LDO5CTRL, | ||
| 116 | S5M8767_REG_LDO6CTRL, | ||
| 117 | S5M8767_REG_LDO7CTRL, | ||
| 118 | S5M8767_REG_LDO8CTRL, | ||
| 119 | S5M8767_REG_LDO9CTRL, | ||
| 120 | S5M8767_REG_LDO10CTRL, | ||
| 121 | S5M8767_REG_LDO11CTRL, | ||
| 122 | S5M8767_REG_LDO12CTRL, | ||
| 123 | S5M8767_REG_LDO13CTRL, | ||
| 124 | S5M8767_REG_LDO14CTRL, | ||
| 125 | S5M8767_REG_LDO15CTRL, | ||
| 126 | S5M8767_REG_LDO16CTRL, | ||
| 127 | S5M8767_REG_LDO17CTRL, | ||
| 128 | S5M8767_REG_LDO18CTRL, | ||
| 129 | S5M8767_REG_LDO19CTRL, | ||
| 130 | S5M8767_REG_LDO20CTRL, | ||
| 131 | S5M8767_REG_LDO21CTRL, | ||
| 132 | S5M8767_REG_LDO22CTRL, | ||
| 133 | S5M8767_REG_LDO23CTRL, | ||
| 134 | S5M8767_REG_LDO24CTRL, | ||
| 135 | S5M8767_REG_LDO25CTRL, | ||
| 136 | S5M8767_REG_LDO26CTRL, | ||
| 137 | S5M8767_REG_LDO27CTRL, | ||
| 138 | S5M8767_REG_LDO28CTRL, | ||
| 139 | }; | ||
| 140 | |||
| 141 | /* S5M8767 regulator ids */ | ||
| 142 | enum s5m8767_regulators { | ||
| 143 | S5M8767_LDO1, | ||
| 144 | S5M8767_LDO2, | ||
| 145 | S5M8767_LDO3, | ||
| 146 | S5M8767_LDO4, | ||
| 147 | S5M8767_LDO5, | ||
| 148 | S5M8767_LDO6, | ||
| 149 | S5M8767_LDO7, | ||
| 150 | S5M8767_LDO8, | ||
| 151 | S5M8767_LDO9, | ||
| 152 | S5M8767_LDO10, | ||
| 153 | S5M8767_LDO11, | ||
| 154 | S5M8767_LDO12, | ||
| 155 | S5M8767_LDO13, | ||
| 156 | S5M8767_LDO14, | ||
| 157 | S5M8767_LDO15, | ||
| 158 | S5M8767_LDO16, | ||
| 159 | S5M8767_LDO17, | ||
| 160 | S5M8767_LDO18, | ||
| 161 | S5M8767_LDO19, | ||
| 162 | S5M8767_LDO20, | ||
| 163 | S5M8767_LDO21, | ||
| 164 | S5M8767_LDO22, | ||
| 165 | S5M8767_LDO23, | ||
| 166 | S5M8767_LDO24, | ||
| 167 | S5M8767_LDO25, | ||
| 168 | S5M8767_LDO26, | ||
| 169 | S5M8767_LDO27, | ||
| 170 | S5M8767_LDO28, | ||
| 171 | S5M8767_BUCK1, | ||
| 172 | S5M8767_BUCK2, | ||
| 173 | S5M8767_BUCK3, | ||
| 174 | S5M8767_BUCK4, | ||
| 175 | S5M8767_BUCK5, | ||
| 176 | S5M8767_BUCK6, | ||
| 177 | S5M8767_BUCK7, | ||
| 178 | S5M8767_BUCK8, | ||
| 179 | S5M8767_BUCK9, | ||
| 180 | S5M8767_AP_EN32KHZ, | ||
| 181 | S5M8767_CP_EN32KHZ, | ||
| 182 | |||
| 183 | S5M8767_REG_MAX, | ||
| 184 | }; | ||
| 185 | |||
| 186 | #define S5M8767_ENCTRL_SHIFT 6 | ||
| 187 | |||
| 188 | #endif /* __LINUX_MFD_S5M8767_H */ | ||
diff --git a/include/linux/mfd/tps65910.h b/include/linux/mfd/tps65910.h index 6c4c478e21a4..9bf8767818b4 100644 --- a/include/linux/mfd/tps65910.h +++ b/include/linux/mfd/tps65910.h | |||
| @@ -807,6 +807,7 @@ struct tps65910_board { | |||
| 807 | int irq_base; | 807 | int irq_base; |
| 808 | int vmbch_threshold; | 808 | int vmbch_threshold; |
| 809 | int vmbch2_threshold; | 809 | int vmbch2_threshold; |
| 810 | bool en_ck32k_xtal; | ||
| 810 | bool en_dev_slp; | 811 | bool en_dev_slp; |
| 811 | struct tps65910_sleep_keepon_data *slp_keepon; | 812 | struct tps65910_sleep_keepon_data *slp_keepon; |
| 812 | bool en_gpio_sleep[TPS6591X_MAX_NUM_GPIO]; | 813 | bool en_gpio_sleep[TPS6591X_MAX_NUM_GPIO]; |
diff --git a/include/linux/mfd/twl6040.h b/include/linux/mfd/twl6040.h index 6659487c31e7..eaad49f7c130 100644 --- a/include/linux/mfd/twl6040.h +++ b/include/linux/mfd/twl6040.h | |||
| @@ -161,8 +161,9 @@ | |||
| 161 | #define TWL6040_CELLS 2 | 161 | #define TWL6040_CELLS 2 |
| 162 | 162 | ||
| 163 | #define TWL6040_REV_ES1_0 0x00 | 163 | #define TWL6040_REV_ES1_0 0x00 |
| 164 | #define TWL6040_REV_ES1_1 0x01 | 164 | #define TWL6040_REV_ES1_1 0x01 /* Rev ES1.1 and ES1.2 */ |
| 165 | #define TWL6040_REV_ES1_2 0x02 | 165 | #define TWL6040_REV_ES1_3 0x02 |
| 166 | #define TWL6041_REV_ES2_0 0x10 | ||
| 166 | 167 | ||
| 167 | #define TWL6040_IRQ_TH 0 | 168 | #define TWL6040_IRQ_TH 0 |
| 168 | #define TWL6040_IRQ_PLUG 1 | 169 | #define TWL6040_IRQ_PLUG 1 |
| @@ -206,7 +207,6 @@ struct twl6040 { | |||
| 206 | struct regmap *regmap; | 207 | struct regmap *regmap; |
| 207 | struct regulator_bulk_data supplies[2]; /* supplies for vio, v2v1 */ | 208 | struct regulator_bulk_data supplies[2]; /* supplies for vio, v2v1 */ |
| 208 | struct mutex mutex; | 209 | struct mutex mutex; |
| 209 | struct mutex io_mutex; | ||
| 210 | struct mutex irq_mutex; | 210 | struct mutex irq_mutex; |
| 211 | struct mfd_cell cells[TWL6040_CELLS]; | 211 | struct mfd_cell cells[TWL6040_CELLS]; |
| 212 | struct completion ready; | 212 | struct completion ready; |
diff --git a/include/linux/mfd/wm8350/core.h b/include/linux/mfd/wm8350/core.h index 9192b6404a73..509481d9cf19 100644 --- a/include/linux/mfd/wm8350/core.h +++ b/include/linux/mfd/wm8350/core.h | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <linux/mutex.h> | 17 | #include <linux/mutex.h> |
| 18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
| 19 | #include <linux/completion.h> | 19 | #include <linux/completion.h> |
| 20 | #include <linux/regmap.h> | ||
| 20 | 21 | ||
| 21 | #include <linux/mfd/wm8350/audio.h> | 22 | #include <linux/mfd/wm8350/audio.h> |
| 22 | #include <linux/mfd/wm8350/gpio.h> | 23 | #include <linux/mfd/wm8350/gpio.h> |
| @@ -66,6 +67,9 @@ | |||
| 66 | 67 | ||
| 67 | #define WM8350_MAX_REGISTER 0xFF | 68 | #define WM8350_MAX_REGISTER 0xFF |
| 68 | 69 | ||
| 70 | #define WM8350_UNLOCK_KEY 0x0013 | ||
| 71 | #define WM8350_LOCK_KEY 0x0000 | ||
| 72 | |||
| 69 | /* | 73 | /* |
| 70 | * Field Definitions. | 74 | * Field Definitions. |
| 71 | */ | 75 | */ |
| @@ -582,27 +586,9 @@ | |||
| 582 | 586 | ||
| 583 | #define WM8350_NUM_IRQ_REGS 7 | 587 | #define WM8350_NUM_IRQ_REGS 7 |
| 584 | 588 | ||
| 585 | struct wm8350_reg_access { | 589 | extern const struct regmap_config wm8350_regmap; |
| 586 | u16 readable; /* Mask of readable bits */ | ||
| 587 | u16 writable; /* Mask of writable bits */ | ||
| 588 | u16 vol; /* Mask of volatile bits */ | ||
| 589 | }; | ||
| 590 | extern const struct wm8350_reg_access wm8350_reg_io_map[]; | ||
| 591 | extern const u16 wm8350_mode0_defaults[]; | ||
| 592 | extern const u16 wm8350_mode1_defaults[]; | ||
| 593 | extern const u16 wm8350_mode2_defaults[]; | ||
| 594 | extern const u16 wm8350_mode3_defaults[]; | ||
| 595 | extern const u16 wm8351_mode0_defaults[]; | ||
| 596 | extern const u16 wm8351_mode1_defaults[]; | ||
| 597 | extern const u16 wm8351_mode2_defaults[]; | ||
| 598 | extern const u16 wm8351_mode3_defaults[]; | ||
| 599 | extern const u16 wm8352_mode0_defaults[]; | ||
| 600 | extern const u16 wm8352_mode1_defaults[]; | ||
| 601 | extern const u16 wm8352_mode2_defaults[]; | ||
| 602 | extern const u16 wm8352_mode3_defaults[]; | ||
| 603 | 590 | ||
| 604 | struct wm8350; | 591 | struct wm8350; |
| 605 | struct regmap; | ||
| 606 | 592 | ||
| 607 | struct wm8350_hwmon { | 593 | struct wm8350_hwmon { |
| 608 | struct platform_device *pdev; | 594 | struct platform_device *pdev; |
| @@ -614,7 +600,7 @@ struct wm8350 { | |||
| 614 | 600 | ||
| 615 | /* device IO */ | 601 | /* device IO */ |
| 616 | struct regmap *regmap; | 602 | struct regmap *regmap; |
| 617 | u16 *reg_cache; | 603 | bool unlocked; |
| 618 | 604 | ||
| 619 | struct mutex auxadc_mutex; | 605 | struct mutex auxadc_mutex; |
| 620 | struct completion auxadc_done; | 606 | struct completion auxadc_done; |
diff --git a/include/linux/mfd/wm8994/pdata.h b/include/linux/mfd/wm8994/pdata.h index 893267bb6229..f0361c031927 100644 --- a/include/linux/mfd/wm8994/pdata.h +++ b/include/linux/mfd/wm8994/pdata.h | |||
| @@ -141,6 +141,7 @@ struct wm8994_pdata { | |||
| 141 | struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO]; | 141 | struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO]; |
| 142 | 142 | ||
| 143 | int irq_base; /** Base IRQ number for WM8994, required for IRQs */ | 143 | int irq_base; /** Base IRQ number for WM8994, required for IRQs */ |
| 144 | unsigned long irq_flags; /** user irq flags */ | ||
| 144 | 145 | ||
| 145 | int num_drc_cfgs; | 146 | int num_drc_cfgs; |
| 146 | struct wm8994_drc_cfg *drc_cfgs; | 147 | struct wm8994_drc_cfg *drc_cfgs; |
diff --git a/sound/soc/codecs/twl6040.c b/sound/soc/codecs/twl6040.c index 0ff1e70b7770..c084c549942e 100644 --- a/sound/soc/codecs/twl6040.c +++ b/sound/soc/codecs/twl6040.c | |||
| @@ -653,7 +653,7 @@ int twl6040_get_hs_step_size(struct snd_soc_codec *codec) | |||
| 653 | { | 653 | { |
| 654 | struct twl6040 *twl6040 = codec->control_data; | 654 | struct twl6040 *twl6040 = codec->control_data; |
| 655 | 655 | ||
| 656 | if (twl6040_get_revid(twl6040) < TWL6040_REV_ES1_2) | 656 | if (twl6040_get_revid(twl6040) < TWL6040_REV_ES1_3) |
| 657 | /* For ES under ES_1.3 HS step is 2 mV */ | 657 | /* For ES under ES_1.3 HS step is 2 mV */ |
| 658 | return 2; | 658 | return 2; |
| 659 | else | 659 | else |
