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 |