diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-04 14:35:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-04 14:35:03 -0400 |
commit | 8bd8fd0a29bfd5ad8e1976edd8c4c40cdb39aa4f (patch) | |
tree | 1d7b2e30083194cc4223d9b150583fc2924bd032 | |
parent | 352712274507645b6f82b8763977ad87321919a3 (diff) | |
parent | 5a688c455066c21c133bc8ffa7b11f8c66b7fe0b (diff) |
Merge tag 'mfd-for-linus-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
Pull MFD updates from Lee Jones:
"New Device Support:
- New Clocksource driver from ST
- New MFD/ACPI/DMA drivers for Intel's Sunrisepoint PCH based platforms
- Add support for Arizona WM8998 and WM1814
- Add support for Dialog Semi DA9062 and DA9063
- Add support for Kontron COMe-bBL6 and COMe-cBW6
- Add support for X-Powers AXP152
- Add support for Atmel, many
- Add support for STMPE, many
- Add support for USB in X-Powers AXP22X
Core Frameworks:
- New Base API to traverse devices and their children in reverse order
Bug Fixes:
- Fix race between runtime-suspend and IRQs
- Obtain platform data form more reliable source
Fix-ups:
- Constifying things
- Variable signage changes
- Kconfig depends|selects changes
- Make use of BIT() macro
- Do not supply .owner attribute in *_driver structures
- MAINTAINERS entries
- Stop using set_irq_flags()
- Start using irq_set_chained_handler_and_data()
- Export DT device ID structures"
* tag 'mfd-for-linus-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (69 commits)
mfd: jz4740-adc: Init mask cache in generic IRQ chip
mfd: cros_ec: spi: Add OF match table
mfd: stmpe: Add OF match table
mfd: max77686: Split out regulator part from the DT binding
mfd: Add DT binding for Maxim MAX77802 IC
mfd: max77686: Use a generic name for the PMIC node in the example
mfd: max77686: Don't suggest in binding to use a deprecated property
mfd: Add MFD_CROS_EC dependencies
mfd: cros_ec: Remove CROS_EC_PROTO dependency for SPI and I2C drivers
mfd: axp20x: Add a cell for the usb power_supply part of the axp20x PMICs
mfd: axp20x: Add missing registers, and mark more registers volatile
mfd: arizona: Fixup some formatting/white space errors
mfd: wm8994: Fix NULL pointer exception on missing pdata
of: Add vendor prefix for Nuvoton
mfd: mt6397: Implement wake handler and suspend/resume to handle wake up event
mfd: atmel-hlcdc: Add support for new SoCs
mfd: Export OF module alias information in missing drivers
mfd: stw481x: Export I2C module alias information
mfd: da9062: Support for the DA9063 OnKey in the DA9062 core
mfd: max899x: Avoid redundant irq_data lookup
...
125 files changed, 4816 insertions, 581 deletions
diff --git a/Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt b/Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt index f64de95a8e8b..ad5d90482a0e 100644 --- a/Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt +++ b/Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt | |||
@@ -2,7 +2,11 @@ Device-Tree bindings for Atmel's HLCDC (High LCD Controller) MFD driver | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: value should be one of the following: | 4 | - compatible: value should be one of the following: |
5 | "atmel,at91sam9n12-hlcdc" | ||
6 | "atmel,at91sam9x5-hlcdc" | ||
7 | "atmel,sama5d2-hlcdc" | ||
5 | "atmel,sama5d3-hlcdc" | 8 | "atmel,sama5d3-hlcdc" |
9 | "atmel,sama5d4-hlcdc" | ||
6 | - reg: base address and size of the HLCDC device registers. | 10 | - reg: base address and size of the HLCDC device registers. |
7 | - clock-names: the name of the 3 clocks requested by the HLCDC device. | 11 | - clock-names: the name of the 3 clocks requested by the HLCDC device. |
8 | Should contain "periph_clk", "sys_clk" and "slow_clk". | 12 | Should contain "periph_clk", "sys_clk" and "slow_clk". |
diff --git a/Documentation/devicetree/bindings/mfd/axp20x.txt b/Documentation/devicetree/bindings/mfd/axp20x.txt index 753f14f46e85..41811223e5be 100644 --- a/Documentation/devicetree/bindings/mfd/axp20x.txt +++ b/Documentation/devicetree/bindings/mfd/axp20x.txt | |||
@@ -1,12 +1,14 @@ | |||
1 | AXP family PMIC device tree bindings | 1 | AXP family PMIC device tree bindings |
2 | 2 | ||
3 | The axp20x family current members : | 3 | The axp20x family current members : |
4 | axp152 (X-Powers) | ||
4 | axp202 (X-Powers) | 5 | axp202 (X-Powers) |
5 | axp209 (X-Powers) | 6 | axp209 (X-Powers) |
6 | axp221 (X-Powers) | 7 | axp221 (X-Powers) |
7 | 8 | ||
8 | Required properties: | 9 | Required properties: |
9 | - compatible: "x-powers,axp202", "x-powers,axp209", "x-powers,axp221" | 10 | - compatible: "x-powers,axp152", "x-powers,axp202", "x-powers,axp209", |
11 | "x-powers,axp221" | ||
10 | - reg: The I2C slave address for the AXP chip | 12 | - reg: The I2C slave address for the AXP chip |
11 | - interrupt-parent: The parent interrupt controller | 13 | - interrupt-parent: The parent interrupt controller |
12 | - interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin | 14 | - interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin |
diff --git a/Documentation/devicetree/bindings/mfd/da9062.txt b/Documentation/devicetree/bindings/mfd/da9062.txt new file mode 100644 index 000000000000..38802b54d48a --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/da9062.txt | |||
@@ -0,0 +1,88 @@ | |||
1 | * Dialog DA9062 Power Management Integrated Circuit (PMIC) | ||
2 | |||
3 | DA9062 consists of a large and varied group of sub-devices: | ||
4 | |||
5 | Device Supply Names Description | ||
6 | ------ ------------ ----------- | ||
7 | da9062-regulator : : LDOs & BUCKs | ||
8 | da9062-rtc : : Real-Time Clock | ||
9 | da9062-watchdog : : Watchdog Timer | ||
10 | |||
11 | ====== | ||
12 | |||
13 | Required properties: | ||
14 | |||
15 | - compatible : Should be "dlg,da9062". | ||
16 | - reg : Specifies the I2C slave address (this defaults to 0x58 but it can be | ||
17 | modified to match the chip's OTP settings). | ||
18 | - interrupt-parent : Specifies the reference to the interrupt controller for | ||
19 | the DA9062. | ||
20 | - interrupts : IRQ line information. | ||
21 | - interrupt-controller | ||
22 | |||
23 | See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for | ||
24 | further information on IRQ bindings. | ||
25 | |||
26 | Sub-nodes: | ||
27 | |||
28 | - regulators : This node defines the settings for the LDOs and BUCKs. The | ||
29 | DA9062 regulators are bound using their names listed below: | ||
30 | |||
31 | buck1 : BUCK_1 | ||
32 | buck2 : BUCK_2 | ||
33 | buck3 : BUCK_3 | ||
34 | buck4 : BUCK_4 | ||
35 | ldo1 : LDO_1 | ||
36 | ldo2 : LDO_2 | ||
37 | ldo3 : LDO_3 | ||
38 | ldo4 : LDO_4 | ||
39 | |||
40 | The component follows the standard regulator framework and the bindings | ||
41 | details of individual regulator device can be found in: | ||
42 | Documentation/devicetree/bindings/regulator/regulator.txt | ||
43 | |||
44 | |||
45 | - rtc : This node defines settings required for the Real-Time Clock associated | ||
46 | with the DA9062. There are currently no entries in this binding, however | ||
47 | compatible = "dlg,da9062-rtc" should be added if a node is created. | ||
48 | |||
49 | - watchdog: This node defines the settings for the watchdog driver associated | ||
50 | with the DA9062 PMIC. The compatible = "dlg,da9062-watchdog" should be added | ||
51 | if a node is created. | ||
52 | |||
53 | |||
54 | Example: | ||
55 | |||
56 | pmic0: da9062@58 { | ||
57 | compatible = "dlg,da9062"; | ||
58 | reg = <0x58>; | ||
59 | interrupt-parent = <&gpio6>; | ||
60 | interrupts = <11 IRQ_TYPE_LEVEL_LOW>; | ||
61 | interrupt-controller; | ||
62 | |||
63 | rtc { | ||
64 | compatible = "dlg,da9062-rtc"; | ||
65 | }; | ||
66 | |||
67 | watchdog { | ||
68 | compatible = "dlg,da9062-watchdog"; | ||
69 | }; | ||
70 | |||
71 | regulators { | ||
72 | DA9062_BUCK1: buck1 { | ||
73 | regulator-name = "BUCK1"; | ||
74 | regulator-min-microvolt = <300000>; | ||
75 | regulator-max-microvolt = <1570000>; | ||
76 | regulator-min-microamp = <500000>; | ||
77 | regulator-max-microamp = <2000000>; | ||
78 | regulator-boot-on; | ||
79 | }; | ||
80 | DA9062_LDO1: ldo1 { | ||
81 | regulator-name = "LDO_1"; | ||
82 | regulator-min-microvolt = <900000>; | ||
83 | regulator-max-microvolt = <3600000>; | ||
84 | regulator-boot-on; | ||
85 | }; | ||
86 | }; | ||
87 | }; | ||
88 | |||
diff --git a/Documentation/devicetree/bindings/mfd/max77686.txt b/Documentation/devicetree/bindings/mfd/max77686.txt index 163bd81a4607..741e76688cf2 100644 --- a/Documentation/devicetree/bindings/mfd/max77686.txt +++ b/Documentation/devicetree/bindings/mfd/max77686.txt | |||
@@ -7,8 +7,9 @@ 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 | 7 | client while probing.This document describes the binding for mfd device and |
8 | PMIC submodule. | 8 | PMIC submodule. |
9 | 9 | ||
10 | Binding for the built-in 32k clock generator block is defined separately | 10 | Bindings for the built-in 32k clock generator block and |
11 | in bindings/clk/maxim,max77686.txt file. | 11 | regulators are defined in ../clk/maxim,max77686.txt and |
12 | ../regulator/max77686.txt respectively. | ||
12 | 13 | ||
13 | Required properties: | 14 | Required properties: |
14 | - compatible : Must be "maxim,max77686"; | 15 | - compatible : Must be "maxim,max77686"; |
@@ -16,67 +17,11 @@ Required properties: | |||
16 | - interrupts : This i2c device has an IRQ line connected to the main SoC. | 17 | - interrupts : This i2c device has an IRQ line connected to the main SoC. |
17 | - interrupt-parent : The parent interrupt controller. | 18 | - interrupt-parent : The parent interrupt controller. |
18 | 19 | ||
19 | Optional node: | ||
20 | - voltage-regulators : The regulators of max77686 have to be instantiated | ||
21 | under subnode named "voltage-regulators" using the following format. | ||
22 | |||
23 | regulator_name { | ||
24 | regulator-compatible = LDOn/BUCKn | ||
25 | standard regulator constraints.... | ||
26 | }; | ||
27 | refer Documentation/devicetree/bindings/regulator/regulator.txt | ||
28 | |||
29 | The regulator-compatible property of regulator should initialized with string | ||
30 | to get matched with their hardware counterparts as follow: | ||
31 | |||
32 | -LDOn : for LDOs, where n can lie in range 1 to 26. | ||
33 | example: LDO1, LDO2, LDO26. | ||
34 | -BUCKn : for BUCKs, where n can lie in range 1 to 9. | ||
35 | example: BUCK1, BUCK5, BUCK9. | ||
36 | |||
37 | Regulators which can be turned off during system suspend: | ||
38 | -LDOn : 2, 6-8, 10-12, 14-16, | ||
39 | -BUCKn : 1-4. | ||
40 | Use standard regulator bindings for it ('regulator-off-in-suspend'). | ||
41 | |||
42 | LDO20, LDO21, LDO22, BUCK8 and BUCK9 can be configured to GPIO enable | ||
43 | control. To turn this feature on this property must be added to the regulator | ||
44 | sub-node: | ||
45 | - maxim,ena-gpios : one GPIO specifier enable control (the gpio | ||
46 | flags are actually ignored and always | ||
47 | ACTIVE_HIGH is used) | ||
48 | |||
49 | Example: | 20 | Example: |
50 | 21 | ||
51 | max77686@09 { | 22 | max77686: pmic@09 { |
52 | compatible = "maxim,max77686"; | 23 | compatible = "maxim,max77686"; |
53 | interrupt-parent = <&wakeup_eint>; | 24 | interrupt-parent = <&wakeup_eint>; |
54 | interrupts = <26 0>; | 25 | interrupts = <26 0>; |
55 | reg = <0x09>; | 26 | reg = <0x09>; |
56 | 27 | }; | |
57 | voltage-regulators { | ||
58 | ldo11_reg { | ||
59 | regulator-compatible = "LDO11"; | ||
60 | regulator-name = "vdd_ldo11"; | ||
61 | regulator-min-microvolt = <1900000>; | ||
62 | regulator-max-microvolt = <1900000>; | ||
63 | regulator-always-on; | ||
64 | }; | ||
65 | |||
66 | buck1_reg { | ||
67 | regulator-compatible = "BUCK1"; | ||
68 | regulator-name = "vdd_mif"; | ||
69 | regulator-min-microvolt = <950000>; | ||
70 | regulator-max-microvolt = <1300000>; | ||
71 | regulator-always-on; | ||
72 | regulator-boot-on; | ||
73 | }; | ||
74 | |||
75 | buck9_reg { | ||
76 | regulator-compatible = "BUCK9"; | ||
77 | regulator-name = "CAM_ISP_CORE_1.2V"; | ||
78 | regulator-min-microvolt = <1000000>; | ||
79 | regulator-max-microvolt = <1200000>; | ||
80 | maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>; | ||
81 | }; | ||
82 | } | ||
diff --git a/Documentation/devicetree/bindings/mfd/max77802.txt b/Documentation/devicetree/bindings/mfd/max77802.txt new file mode 100644 index 000000000000..51fc1a60caa5 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/max77802.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | Maxim MAX77802 multi-function device | ||
2 | |||
3 | The Maxim MAX77802 is a Power Management IC (PMIC) that contains 10 high | ||
4 | efficiency Buck regulators, 32 Low-DropOut (LDO) regulators used to power | ||
5 | up application processors and peripherals, a 2-channel 32kHz clock outputs, | ||
6 | a Real-Time-Clock (RTC) and a I2C interface to program the individual | ||
7 | regulators, clocks outputs and the RTC. | ||
8 | |||
9 | Bindings for the built-in 32k clock generator block and | ||
10 | regulators are defined in ../clk/maxim,max77802.txt and | ||
11 | ../regulator/max77802.txt respectively. | ||
12 | |||
13 | Required properties: | ||
14 | - compatible : Must be "maxim,max77802" | ||
15 | - reg : Specifies the I2C slave address of PMIC block. | ||
16 | - interrupts : I2C device IRQ line connected to the main SoC. | ||
17 | - interrupt-parent : The parent interrupt controller. | ||
18 | |||
19 | Example: | ||
20 | |||
21 | max77802: pmic@09 { | ||
22 | compatible = "maxim,max77802"; | ||
23 | interrupt-parent = <&intc>; | ||
24 | interrupts = <26 IRQ_TYPE_NONE>; | ||
25 | reg = <0x09>; | ||
26 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/max77686.txt b/Documentation/devicetree/bindings/regulator/max77686.txt new file mode 100644 index 000000000000..0dded64d89d3 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/max77686.txt | |||
@@ -0,0 +1,71 @@ | |||
1 | Binding for Maxim MAX77686 regulators | ||
2 | |||
3 | This is a part of the device tree bindings of MAX77686 multi-function device. | ||
4 | More information can be found in ../mfd/max77686.txt file. | ||
5 | |||
6 | The MAX77686 PMIC has 9 high-efficiency Buck and 26 Low-DropOut (LDO) | ||
7 | regulators that can be controlled over I2C. | ||
8 | |||
9 | Following properties should be present in main device node of the MFD chip. | ||
10 | |||
11 | Optional node: | ||
12 | - voltage-regulators : The regulators of max77686 have to be instantiated | ||
13 | under subnode named "voltage-regulators" using the following format. | ||
14 | |||
15 | regulator_name { | ||
16 | regulator-compatible = LDOn/BUCKn | ||
17 | standard regulator constraints.... | ||
18 | }; | ||
19 | refer Documentation/devicetree/bindings/regulator/regulator.txt | ||
20 | |||
21 | The regulator node's name should be initialized with a string | ||
22 | to get matched with their hardware counterparts as follow: | ||
23 | |||
24 | -LDOn : for LDOs, where n can lie in range 1 to 26. | ||
25 | example: LDO1, LDO2, LDO26. | ||
26 | -BUCKn : for BUCKs, where n can lie in range 1 to 9. | ||
27 | example: BUCK1, BUCK5, BUCK9. | ||
28 | |||
29 | Regulators which can be turned off during system suspend: | ||
30 | -LDOn : 2, 6-8, 10-12, 14-16, | ||
31 | -BUCKn : 1-4. | ||
32 | Use standard regulator bindings for it ('regulator-off-in-suspend'). | ||
33 | |||
34 | LDO20, LDO21, LDO22, BUCK8 and BUCK9 can be configured to GPIO enable | ||
35 | control. To turn this feature on this property must be added to the regulator | ||
36 | sub-node: | ||
37 | - maxim,ena-gpios : one GPIO specifier enable control (the gpio | ||
38 | flags are actually ignored and always | ||
39 | ACTIVE_HIGH is used) | ||
40 | |||
41 | Example: | ||
42 | |||
43 | max77686: pmic@09 { | ||
44 | compatible = "maxim,max77686"; | ||
45 | interrupt-parent = <&wakeup_eint>; | ||
46 | interrupts = <26 IRQ_TYPE_NONE>; | ||
47 | reg = <0x09>; | ||
48 | |||
49 | voltage-regulators { | ||
50 | ldo11_reg: LDO11 { | ||
51 | regulator-name = "vdd_ldo11"; | ||
52 | regulator-min-microvolt = <1900000>; | ||
53 | regulator-max-microvolt = <1900000>; | ||
54 | regulator-always-on; | ||
55 | }; | ||
56 | |||
57 | buck1_reg: BUCK1 { | ||
58 | regulator-name = "vdd_mif"; | ||
59 | regulator-min-microvolt = <950000>; | ||
60 | regulator-max-microvolt = <1300000>; | ||
61 | regulator-always-on; | ||
62 | regulator-boot-on; | ||
63 | }; | ||
64 | |||
65 | buck9_reg: BUCK9 { | ||
66 | regulator-name = "CAM_ISP_CORE_1.2V"; | ||
67 | regulator-min-microvolt = <1000000>; | ||
68 | regulator-max-microvolt = <1200000>; | ||
69 | maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>; | ||
70 | }; | ||
71 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/rtc-st-lpc.txt b/Documentation/devicetree/bindings/rtc/rtc-st-lpc.txt index 73407f502e4e..daf88265df32 100644 --- a/Documentation/devicetree/bindings/rtc/rtc-st-lpc.txt +++ b/Documentation/devicetree/bindings/rtc/rtc-st-lpc.txt | |||
@@ -1,20 +1,23 @@ | |||
1 | STMicroelectronics Low Power Controller (LPC) - RTC | 1 | STMicroelectronics Low Power Controller (LPC) - RTC |
2 | =================================================== | 2 | =================================================== |
3 | 3 | ||
4 | LPC currently supports Watchdog OR Real Time Clock functionality. | 4 | LPC currently supports Watchdog OR Real Time Clock OR Clocksource |
5 | functionality. | ||
5 | 6 | ||
6 | [See: ../watchdog/st_lpc_wdt.txt for Watchdog options] | 7 | [See: ../watchdog/st_lpc_wdt.txt for Watchdog options] |
8 | [See: ../timer/st,stih407-lpc for Clocksource options] | ||
7 | 9 | ||
8 | Required properties | 10 | Required properties |
9 | 11 | ||
10 | - compatible : Must be one of: "st,stih407-lpc" "st,stih416-lpc" | 12 | - compatible : Must be: "st,stih407-lpc" |
11 | "st,stih415-lpc" "st,stid127-lpc" | ||
12 | - reg : LPC registers base address + size | 13 | - reg : LPC registers base address + size |
13 | - interrupts : LPC interrupt line number and associated flags | 14 | - interrupts : LPC interrupt line number and associated flags |
14 | - clocks : Clock used by LPC device (See: ../clock/clock-bindings.txt) | 15 | - clocks : Clock used by LPC device (See: ../clock/clock-bindings.txt) |
15 | - st,lpc-mode : The LPC can run either one of two modes ST_LPC_MODE_RTC [0] or | 16 | - st,lpc-mode : The LPC can run either one of three modes: |
16 | ST_LPC_MODE_WDT [1]. One (and only one) mode must be | 17 | ST_LPC_MODE_RTC [0] |
17 | selected. | 18 | ST_LPC_MODE_WDT [1] |
19 | ST_LPC_MODE_CLKSRC [2] | ||
20 | One (and only one) mode must be selected. | ||
18 | 21 | ||
19 | Example: | 22 | Example: |
20 | lpc@fde05000 { | 23 | lpc@fde05000 { |
diff --git a/Documentation/devicetree/bindings/timer/st,stih407-lpc b/Documentation/devicetree/bindings/timer/st,stih407-lpc new file mode 100644 index 000000000000..72acb487b856 --- /dev/null +++ b/Documentation/devicetree/bindings/timer/st,stih407-lpc | |||
@@ -0,0 +1,28 @@ | |||
1 | STMicroelectronics Low Power Controller (LPC) - Clocksource | ||
2 | =========================================================== | ||
3 | |||
4 | LPC currently supports Watchdog OR Real Time Clock OR Clocksource | ||
5 | functionality. | ||
6 | |||
7 | [See: ../watchdog/st_lpc_wdt.txt for Watchdog options] | ||
8 | [See: ../rtc/rtc-st-lpc.txt for RTC options] | ||
9 | |||
10 | Required properties | ||
11 | |||
12 | - compatible : Must be: "st,stih407-lpc" | ||
13 | - reg : LPC registers base address + size | ||
14 | - interrupts : LPC interrupt line number and associated flags | ||
15 | - clocks : Clock used by LPC device (See: ../clock/clock-bindings.txt) | ||
16 | - st,lpc-mode : The LPC can run either one of three modes: | ||
17 | ST_LPC_MODE_RTC [0] | ||
18 | ST_LPC_MODE_WDT [1] | ||
19 | ST_LPC_MODE_CLKSRC [2] | ||
20 | One (and only one) mode must be selected. | ||
21 | |||
22 | Example: | ||
23 | lpc@fde05000 { | ||
24 | compatible = "st,stih407-lpc"; | ||
25 | reg = <0xfde05000 0x1000>; | ||
26 | clocks = <&clk_s_d3_flexgen CLK_LPC_0>; | ||
27 | st,lpc-mode = <ST_LPC_MODE_CLKSRC>; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index 56a6d4e79383..80a72099ed76 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -150,6 +150,7 @@ netxeon Shenzhen Netxeon Technology CO., LTD | |||
150 | newhaven Newhaven Display International | 150 | newhaven Newhaven Display International |
151 | nintendo Nintendo | 151 | nintendo Nintendo |
152 | nokia Nokia | 152 | nokia Nokia |
153 | nuvoton Nuvoton Technology Corporation | ||
153 | nvidia NVIDIA | 154 | nvidia NVIDIA |
154 | nxp NXP Semiconductors | 155 | nxp NXP Semiconductors |
155 | onnn ON Semiconductor Corp. | 156 | onnn ON Semiconductor Corp. |
diff --git a/Documentation/devicetree/bindings/watchdog/st_lpc_wdt.txt b/Documentation/devicetree/bindings/watchdog/st_lpc_wdt.txt index 388c88a01222..039c5ca45577 100644 --- a/Documentation/devicetree/bindings/watchdog/st_lpc_wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/st_lpc_wdt.txt | |||
@@ -1,9 +1,11 @@ | |||
1 | STMicroelectronics Low Power Controller (LPC) - Watchdog | 1 | STMicroelectronics Low Power Controller (LPC) - Watchdog |
2 | ======================================================== | 2 | ======================================================== |
3 | 3 | ||
4 | LPC currently supports Watchdog OR Real Time Clock functionality. | 4 | LPC currently supports Watchdog OR Real Time Clock OR Clocksource |
5 | functionality. | ||
5 | 6 | ||
6 | [See: ../rtc/rtc-st-lpc.txt for RTC options] | 7 | [See: ../rtc/rtc-st-lpc.txt for RTC options] |
8 | [See: ../timer/st,stih407-lpc for Clocksource options] | ||
7 | 9 | ||
8 | Required properties | 10 | Required properties |
9 | 11 | ||
@@ -12,9 +14,11 @@ Required properties | |||
12 | - reg : LPC registers base address + size | 14 | - reg : LPC registers base address + size |
13 | - interrupts : LPC interrupt line number and associated flags | 15 | - interrupts : LPC interrupt line number and associated flags |
14 | - clocks : Clock used by LPC device (See: ../clock/clock-bindings.txt) | 16 | - clocks : Clock used by LPC device (See: ../clock/clock-bindings.txt) |
15 | - st,lpc-mode : The LPC can run either one of two modes ST_LPC_MODE_RTC [0] or | 17 | - st,lpc-mode : The LPC can run either one of three modes: |
16 | ST_LPC_MODE_WDT [1]. One (and only one) mode must be | 18 | ST_LPC_MODE_RTC [0] |
17 | selected. | 19 | ST_LPC_MODE_WDT [1] |
20 | ST_LPC_MODE_CLKSRC [2] | ||
21 | One (and only one) mode must be selected. | ||
18 | 22 | ||
19 | Required properties [watchdog mode] | 23 | Required properties [watchdog mode] |
20 | 24 | ||
diff --git a/MAINTAINERS b/MAINTAINERS index 29a0576e87f1..6592bdc6c1f2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -1517,6 +1517,7 @@ S: Maintained | |||
1517 | F: arch/arm/mach-sti/ | 1517 | F: arch/arm/mach-sti/ |
1518 | F: arch/arm/boot/dts/sti* | 1518 | F: arch/arm/boot/dts/sti* |
1519 | F: drivers/clocksource/arm_global_timer.c | 1519 | F: drivers/clocksource/arm_global_timer.c |
1520 | F: drivers/clocksource/clksrc_st_lpc.c | ||
1520 | F: drivers/i2c/busses/i2c-st.c | 1521 | F: drivers/i2c/busses/i2c-st.c |
1521 | F: drivers/media/rc/st_rc.c | 1522 | F: drivers/media/rc/st_rc.c |
1522 | F: drivers/mmc/host/sdhci-st.c | 1523 | F: drivers/mmc/host/sdhci-st.c |
@@ -6594,6 +6595,14 @@ S: Supported | |||
6594 | F: drivers/power/max14577_charger.c | 6595 | F: drivers/power/max14577_charger.c |
6595 | F: drivers/power/max77693_charger.c | 6596 | F: drivers/power/max77693_charger.c |
6596 | 6597 | ||
6598 | MAXIM MAX77802 MULTIFUNCTION PMIC DEVICE DRIVERS | ||
6599 | M: Javier Martinez Canillas <javier@osg.samsung.com> | ||
6600 | L: linux-kernel@vger.kernel.org | ||
6601 | S: Supported | ||
6602 | F: drivers/*/*max77802.c | ||
6603 | F: Documentation/devicetree/bindings/*/*max77802.txt | ||
6604 | F: include/dt-bindings/*/*max77802.h | ||
6605 | |||
6597 | MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS | 6606 | MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS |
6598 | M: Chanwoo Choi <cw00.choi@samsung.com> | 6607 | M: Chanwoo Choi <cw00.choi@samsung.com> |
6599 | M: Krzysztof Kozlowski <k.kozlowski@samsung.com> | 6608 | M: Krzysztof Kozlowski <k.kozlowski@samsung.com> |
@@ -6607,7 +6616,7 @@ F: drivers/extcon/extcon-max77693.c | |||
6607 | F: drivers/rtc/rtc-max77686.c | 6616 | F: drivers/rtc/rtc-max77686.c |
6608 | F: drivers/clk/clk-max77686.c | 6617 | F: drivers/clk/clk-max77686.c |
6609 | F: Documentation/devicetree/bindings/mfd/max14577.txt | 6618 | F: Documentation/devicetree/bindings/mfd/max14577.txt |
6610 | F: Documentation/devicetree/bindings/mfd/max77686.txt | 6619 | F: Documentation/devicetree/bindings/*/max77686.txt |
6611 | F: Documentation/devicetree/bindings/mfd/max77693.txt | 6620 | F: Documentation/devicetree/bindings/mfd/max77693.txt |
6612 | F: Documentation/devicetree/bindings/clock/maxim,max77686.txt | 6621 | F: Documentation/devicetree/bindings/clock/maxim,max77686.txt |
6613 | F: include/linux/mfd/max14577*.h | 6622 | F: include/linux/mfd/max14577*.h |
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig index 552c9b134cc5..a7726db13abb 100644 --- a/drivers/clocksource/Kconfig +++ b/drivers/clocksource/Kconfig | |||
@@ -297,4 +297,12 @@ config CLKSRC_IMX_GPT | |||
297 | depends on ARM && CLKDEV_LOOKUP | 297 | depends on ARM && CLKDEV_LOOKUP |
298 | select CLKSRC_MMIO | 298 | select CLKSRC_MMIO |
299 | 299 | ||
300 | config CLKSRC_ST_LPC | ||
301 | bool | ||
302 | depends on ARCH_STI | ||
303 | select CLKSRC_OF if OF | ||
304 | help | ||
305 | Enable this option to use the Low Power controller timer | ||
306 | as clocksource. | ||
307 | |||
300 | endmenu | 308 | endmenu |
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile index 066337e24737..5c00863c3e33 100644 --- a/drivers/clocksource/Makefile +++ b/drivers/clocksource/Makefile | |||
@@ -61,3 +61,4 @@ obj-$(CONFIG_ASM9260_TIMER) += asm9260_timer.o | |||
61 | obj-$(CONFIG_H8300) += h8300_timer8.o | 61 | obj-$(CONFIG_H8300) += h8300_timer8.o |
62 | obj-$(CONFIG_H8300_TMR16) += h8300_timer16.o | 62 | obj-$(CONFIG_H8300_TMR16) += h8300_timer16.o |
63 | obj-$(CONFIG_H8300_TPU) += h8300_tpu.o | 63 | obj-$(CONFIG_H8300_TPU) += h8300_tpu.o |
64 | obj-$(CONFIG_CLKSRC_ST_LPC) += clksrc_st_lpc.o | ||
diff --git a/drivers/clocksource/clksrc_st_lpc.c b/drivers/clocksource/clksrc_st_lpc.c new file mode 100644 index 000000000000..65ec4674416d --- /dev/null +++ b/drivers/clocksource/clksrc_st_lpc.c | |||
@@ -0,0 +1,131 @@ | |||
1 | /* | ||
2 | * Clocksource using the Low Power Timer found in the Low Power Controller (LPC) | ||
3 | * | ||
4 | * Copyright (C) 2015 STMicroelectronics – All Rights Reserved | ||
5 | * | ||
6 | * Author(s): Francesco Virlinzi <francesco.virlinzi@st.com> | ||
7 | * Ajit Pal Singh <ajitpal.singh@st.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 as published by | ||
11 | * the Free Software Foundation; either version 2 of the License, or | ||
12 | * (at your option) any later version. | ||
13 | */ | ||
14 | |||
15 | #include <linux/clk.h> | ||
16 | #include <linux/clocksource.h> | ||
17 | #include <linux/init.h> | ||
18 | #include <linux/of_address.h> | ||
19 | #include <linux/sched_clock.h> | ||
20 | #include <linux/slab.h> | ||
21 | |||
22 | #include <dt-bindings/mfd/st-lpc.h> | ||
23 | |||
24 | /* Low Power Timer */ | ||
25 | #define LPC_LPT_LSB_OFF 0x400 | ||
26 | #define LPC_LPT_MSB_OFF 0x404 | ||
27 | #define LPC_LPT_START_OFF 0x408 | ||
28 | |||
29 | static struct st_clksrc_ddata { | ||
30 | struct clk *clk; | ||
31 | void __iomem *base; | ||
32 | } ddata; | ||
33 | |||
34 | static void __init st_clksrc_reset(void) | ||
35 | { | ||
36 | writel_relaxed(0, ddata.base + LPC_LPT_START_OFF); | ||
37 | writel_relaxed(0, ddata.base + LPC_LPT_MSB_OFF); | ||
38 | writel_relaxed(0, ddata.base + LPC_LPT_LSB_OFF); | ||
39 | writel_relaxed(1, ddata.base + LPC_LPT_START_OFF); | ||
40 | } | ||
41 | |||
42 | static u64 notrace st_clksrc_sched_clock_read(void) | ||
43 | { | ||
44 | return (u64)readl_relaxed(ddata.base + LPC_LPT_LSB_OFF); | ||
45 | } | ||
46 | |||
47 | static int __init st_clksrc_init(void) | ||
48 | { | ||
49 | unsigned long rate; | ||
50 | int ret; | ||
51 | |||
52 | st_clksrc_reset(); | ||
53 | |||
54 | rate = clk_get_rate(ddata.clk); | ||
55 | |||
56 | sched_clock_register(st_clksrc_sched_clock_read, 32, rate); | ||
57 | |||
58 | ret = clocksource_mmio_init(ddata.base + LPC_LPT_LSB_OFF, | ||
59 | "clksrc-st-lpc", rate, 300, 32, | ||
60 | clocksource_mmio_readl_up); | ||
61 | if (ret) { | ||
62 | pr_err("clksrc-st-lpc: Failed to register clocksource\n"); | ||
63 | return ret; | ||
64 | } | ||
65 | |||
66 | return 0; | ||
67 | } | ||
68 | |||
69 | static int __init st_clksrc_setup_clk(struct device_node *np) | ||
70 | { | ||
71 | struct clk *clk; | ||
72 | |||
73 | clk = of_clk_get(np, 0); | ||
74 | if (IS_ERR(clk)) { | ||
75 | pr_err("clksrc-st-lpc: Failed to get LPC clock\n"); | ||
76 | return PTR_ERR(clk); | ||
77 | } | ||
78 | |||
79 | if (clk_prepare_enable(clk)) { | ||
80 | pr_err("clksrc-st-lpc: Failed to enable LPC clock\n"); | ||
81 | return -EINVAL; | ||
82 | } | ||
83 | |||
84 | if (!clk_get_rate(clk)) { | ||
85 | pr_err("clksrc-st-lpc: Failed to get LPC clock rate\n"); | ||
86 | clk_disable_unprepare(clk); | ||
87 | return -EINVAL; | ||
88 | } | ||
89 | |||
90 | ddata.clk = clk; | ||
91 | |||
92 | return 0; | ||
93 | } | ||
94 | |||
95 | static void __init st_clksrc_of_register(struct device_node *np) | ||
96 | { | ||
97 | int ret; | ||
98 | uint32_t mode; | ||
99 | |||
100 | ret = of_property_read_u32(np, "st,lpc-mode", &mode); | ||
101 | if (ret) { | ||
102 | pr_err("clksrc-st-lpc: An LPC mode must be provided\n"); | ||
103 | return; | ||
104 | } | ||
105 | |||
106 | /* LPC can either run as a Clocksource or in RTC or WDT mode */ | ||
107 | if (mode != ST_LPC_MODE_CLKSRC) | ||
108 | return; | ||
109 | |||
110 | ddata.base = of_iomap(np, 0); | ||
111 | if (!ddata.base) { | ||
112 | pr_err("clksrc-st-lpc: Unable to map iomem\n"); | ||
113 | return; | ||
114 | } | ||
115 | |||
116 | if (st_clksrc_setup_clk(np)) { | ||
117 | iounmap(ddata.base); | ||
118 | return; | ||
119 | } | ||
120 | |||
121 | if (st_clksrc_init()) { | ||
122 | clk_disable_unprepare(ddata.clk); | ||
123 | clk_put(ddata.clk); | ||
124 | iounmap(ddata.base); | ||
125 | return; | ||
126 | } | ||
127 | |||
128 | pr_info("clksrc-st-lpc: clocksource initialised - running @ %luHz\n", | ||
129 | clk_get_rate(ddata.clk)); | ||
130 | } | ||
131 | CLOCKSOURCE_OF_DECLARE(ddata, "st,stih407-lpc", st_clksrc_of_register); | ||
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index 5ecbb3fdc27e..eaef9bc9d88c 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c | |||
@@ -88,12 +88,13 @@ | |||
88 | #include <linux/slab.h> | 88 | #include <linux/slab.h> |
89 | #include <linux/wait.h> | 89 | #include <linux/wait.h> |
90 | #include <linux/err.h> | 90 | #include <linux/err.h> |
91 | #include <linux/platform_device.h> | ||
92 | #include <linux/platform_data/itco_wdt.h> | ||
91 | 93 | ||
92 | #if (defined CONFIG_I2C_MUX_GPIO || defined CONFIG_I2C_MUX_GPIO_MODULE) && \ | 94 | #if (defined CONFIG_I2C_MUX_GPIO || defined CONFIG_I2C_MUX_GPIO_MODULE) && \ |
93 | defined CONFIG_DMI | 95 | defined CONFIG_DMI |
94 | #include <linux/gpio.h> | 96 | #include <linux/gpio.h> |
95 | #include <linux/i2c-mux-gpio.h> | 97 | #include <linux/i2c-mux-gpio.h> |
96 | #include <linux/platform_device.h> | ||
97 | #endif | 98 | #endif |
98 | 99 | ||
99 | /* I801 SMBus address offsets */ | 100 | /* I801 SMBus address offsets */ |
@@ -113,6 +114,16 @@ | |||
113 | #define SMBPCICTL 0x004 | 114 | #define SMBPCICTL 0x004 |
114 | #define SMBPCISTS 0x006 | 115 | #define SMBPCISTS 0x006 |
115 | #define SMBHSTCFG 0x040 | 116 | #define SMBHSTCFG 0x040 |
117 | #define TCOBASE 0x050 | ||
118 | #define TCOCTL 0x054 | ||
119 | |||
120 | #define ACPIBASE 0x040 | ||
121 | #define ACPIBASE_SMI_OFF 0x030 | ||
122 | #define ACPICTRL 0x044 | ||
123 | #define ACPICTRL_EN 0x080 | ||
124 | |||
125 | #define SBREG_BAR 0x10 | ||
126 | #define SBREG_SMBCTRL 0xc6000c | ||
116 | 127 | ||
117 | /* Host status bits for SMBPCISTS */ | 128 | /* Host status bits for SMBPCISTS */ |
118 | #define SMBPCISTS_INTS 0x08 | 129 | #define SMBPCISTS_INTS 0x08 |
@@ -125,6 +136,9 @@ | |||
125 | #define SMBHSTCFG_SMB_SMI_EN 2 | 136 | #define SMBHSTCFG_SMB_SMI_EN 2 |
126 | #define SMBHSTCFG_I2C_EN 4 | 137 | #define SMBHSTCFG_I2C_EN 4 |
127 | 138 | ||
139 | /* TCO configuration bits for TCOCTL */ | ||
140 | #define TCOCTL_EN 0x0100 | ||
141 | |||
128 | /* Auxiliary control register bits, ICH4+ only */ | 142 | /* Auxiliary control register bits, ICH4+ only */ |
129 | #define SMBAUXCTL_CRC 1 | 143 | #define SMBAUXCTL_CRC 1 |
130 | #define SMBAUXCTL_E32B 2 | 144 | #define SMBAUXCTL_E32B 2 |
@@ -221,6 +235,7 @@ struct i801_priv { | |||
221 | const struct i801_mux_config *mux_drvdata; | 235 | const struct i801_mux_config *mux_drvdata; |
222 | struct platform_device *mux_pdev; | 236 | struct platform_device *mux_pdev; |
223 | #endif | 237 | #endif |
238 | struct platform_device *tco_pdev; | ||
224 | }; | 239 | }; |
225 | 240 | ||
226 | #define FEATURE_SMBUS_PEC (1 << 0) | 241 | #define FEATURE_SMBUS_PEC (1 << 0) |
@@ -230,6 +245,7 @@ struct i801_priv { | |||
230 | #define FEATURE_IRQ (1 << 4) | 245 | #define FEATURE_IRQ (1 << 4) |
231 | /* Not really a feature, but it's convenient to handle it as such */ | 246 | /* Not really a feature, but it's convenient to handle it as such */ |
232 | #define FEATURE_IDF (1 << 15) | 247 | #define FEATURE_IDF (1 << 15) |
248 | #define FEATURE_TCO (1 << 16) | ||
233 | 249 | ||
234 | static const char *i801_feature_names[] = { | 250 | static const char *i801_feature_names[] = { |
235 | "SMBus PEC", | 251 | "SMBus PEC", |
@@ -1132,6 +1148,95 @@ static inline unsigned int i801_get_adapter_class(struct i801_priv *priv) | |||
1132 | } | 1148 | } |
1133 | #endif | 1149 | #endif |
1134 | 1150 | ||
1151 | static const struct itco_wdt_platform_data tco_platform_data = { | ||
1152 | .name = "Intel PCH", | ||
1153 | .version = 4, | ||
1154 | }; | ||
1155 | |||
1156 | static DEFINE_SPINLOCK(p2sb_spinlock); | ||
1157 | |||
1158 | static void i801_add_tco(struct i801_priv *priv) | ||
1159 | { | ||
1160 | struct pci_dev *pci_dev = priv->pci_dev; | ||
1161 | struct resource tco_res[3], *res; | ||
1162 | struct platform_device *pdev; | ||
1163 | unsigned int devfn; | ||
1164 | u32 tco_base, tco_ctl; | ||
1165 | u32 base_addr, ctrl_val; | ||
1166 | u64 base64_addr; | ||
1167 | |||
1168 | if (!(priv->features & FEATURE_TCO)) | ||
1169 | return; | ||
1170 | |||
1171 | pci_read_config_dword(pci_dev, TCOBASE, &tco_base); | ||
1172 | pci_read_config_dword(pci_dev, TCOCTL, &tco_ctl); | ||
1173 | if (!(tco_ctl & TCOCTL_EN)) | ||
1174 | return; | ||
1175 | |||
1176 | memset(tco_res, 0, sizeof(tco_res)); | ||
1177 | |||
1178 | res = &tco_res[ICH_RES_IO_TCO]; | ||
1179 | res->start = tco_base & ~1; | ||
1180 | res->end = res->start + 32 - 1; | ||
1181 | res->flags = IORESOURCE_IO; | ||
1182 | |||
1183 | /* | ||
1184 | * Power Management registers. | ||
1185 | */ | ||
1186 | devfn = PCI_DEVFN(PCI_SLOT(pci_dev->devfn), 2); | ||
1187 | pci_bus_read_config_dword(pci_dev->bus, devfn, ACPIBASE, &base_addr); | ||
1188 | |||
1189 | res = &tco_res[ICH_RES_IO_SMI]; | ||
1190 | res->start = (base_addr & ~1) + ACPIBASE_SMI_OFF; | ||
1191 | res->end = res->start + 3; | ||
1192 | res->flags = IORESOURCE_IO; | ||
1193 | |||
1194 | /* | ||
1195 | * Enable the ACPI I/O space. | ||
1196 | */ | ||
1197 | pci_bus_read_config_dword(pci_dev->bus, devfn, ACPICTRL, &ctrl_val); | ||
1198 | ctrl_val |= ACPICTRL_EN; | ||
1199 | pci_bus_write_config_dword(pci_dev->bus, devfn, ACPICTRL, ctrl_val); | ||
1200 | |||
1201 | /* | ||
1202 | * We must access the NO_REBOOT bit over the Primary to Sideband | ||
1203 | * bridge (P2SB). The BIOS prevents the P2SB device from being | ||
1204 | * enumerated by the PCI subsystem, so we need to unhide/hide it | ||
1205 | * to lookup the P2SB BAR. | ||
1206 | */ | ||
1207 | spin_lock(&p2sb_spinlock); | ||
1208 | |||
1209 | devfn = PCI_DEVFN(PCI_SLOT(pci_dev->devfn), 1); | ||
1210 | |||
1211 | /* Unhide the P2SB device */ | ||
1212 | pci_bus_write_config_byte(pci_dev->bus, devfn, 0xe1, 0x0); | ||
1213 | |||
1214 | pci_bus_read_config_dword(pci_dev->bus, devfn, SBREG_BAR, &base_addr); | ||
1215 | base64_addr = base_addr & 0xfffffff0; | ||
1216 | |||
1217 | pci_bus_read_config_dword(pci_dev->bus, devfn, SBREG_BAR + 0x4, &base_addr); | ||
1218 | base64_addr |= (u64)base_addr << 32; | ||
1219 | |||
1220 | /* Hide the P2SB device */ | ||
1221 | pci_bus_write_config_byte(pci_dev->bus, devfn, 0xe1, 0x1); | ||
1222 | spin_unlock(&p2sb_spinlock); | ||
1223 | |||
1224 | res = &tco_res[ICH_RES_MEM_OFF]; | ||
1225 | res->start = (resource_size_t)base64_addr + SBREG_SMBCTRL; | ||
1226 | res->end = res->start + 3; | ||
1227 | res->flags = IORESOURCE_MEM; | ||
1228 | |||
1229 | pdev = platform_device_register_resndata(&pci_dev->dev, "iTCO_wdt", -1, | ||
1230 | tco_res, 3, &tco_platform_data, | ||
1231 | sizeof(tco_platform_data)); | ||
1232 | if (IS_ERR(pdev)) { | ||
1233 | dev_warn(&pci_dev->dev, "failed to create iTCO device\n"); | ||
1234 | return; | ||
1235 | } | ||
1236 | |||
1237 | priv->tco_pdev = pdev; | ||
1238 | } | ||
1239 | |||
1135 | static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id) | 1240 | static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id) |
1136 | { | 1241 | { |
1137 | unsigned char temp; | 1242 | unsigned char temp; |
@@ -1149,6 +1254,15 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id) | |||
1149 | 1254 | ||
1150 | priv->pci_dev = dev; | 1255 | priv->pci_dev = dev; |
1151 | switch (dev->device) { | 1256 | switch (dev->device) { |
1257 | case PCI_DEVICE_ID_INTEL_SUNRISEPOINT_H_SMBUS: | ||
1258 | case PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_SMBUS: | ||
1259 | priv->features |= FEATURE_I2C_BLOCK_READ; | ||
1260 | priv->features |= FEATURE_IRQ; | ||
1261 | priv->features |= FEATURE_SMBUS_PEC; | ||
1262 | priv->features |= FEATURE_BLOCK_BUFFER; | ||
1263 | priv->features |= FEATURE_TCO; | ||
1264 | break; | ||
1265 | |||
1152 | case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF0: | 1266 | case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF0: |
1153 | case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1: | 1267 | case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1: |
1154 | case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2: | 1268 | case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2: |
@@ -1265,6 +1379,8 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id) | |||
1265 | dev_info(&dev->dev, "SMBus using %s\n", | 1379 | dev_info(&dev->dev, "SMBus using %s\n", |
1266 | priv->features & FEATURE_IRQ ? "PCI interrupt" : "polling"); | 1380 | priv->features & FEATURE_IRQ ? "PCI interrupt" : "polling"); |
1267 | 1381 | ||
1382 | i801_add_tco(priv); | ||
1383 | |||
1268 | /* set up the sysfs linkage to our parent device */ | 1384 | /* set up the sysfs linkage to our parent device */ |
1269 | priv->adapter.dev.parent = &dev->dev; | 1385 | priv->adapter.dev.parent = &dev->dev; |
1270 | 1386 | ||
@@ -1296,6 +1412,8 @@ static void i801_remove(struct pci_dev *dev) | |||
1296 | i2c_del_adapter(&priv->adapter); | 1412 | i2c_del_adapter(&priv->adapter); |
1297 | pci_write_config_byte(dev, SMBHSTCFG, priv->original_hstcfg); | 1413 | pci_write_config_byte(dev, SMBHSTCFG, priv->original_hstcfg); |
1298 | 1414 | ||
1415 | platform_device_unregister(priv->tco_pdev); | ||
1416 | |||
1299 | /* | 1417 | /* |
1300 | * do not call pci_disable_device(dev) since it can cause hard hangs on | 1418 | * do not call pci_disable_device(dev) since it can cause hard hangs on |
1301 | * some systems during power-off (eg. Fujitsu-Siemens Lifebook E8010) | 1419 | * some systems during power-off (eg. Fujitsu-Siemens Lifebook E8010) |
diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c index 841717a2842c..f2d9fb4c4e8e 100644 --- a/drivers/mfd/88pm800.c +++ b/drivers/mfd/88pm800.c | |||
@@ -609,7 +609,6 @@ static int pm800_remove(struct i2c_client *client) | |||
609 | static struct i2c_driver pm800_driver = { | 609 | static struct i2c_driver pm800_driver = { |
610 | .driver = { | 610 | .driver = { |
611 | .name = "88PM800", | 611 | .name = "88PM800", |
612 | .owner = THIS_MODULE, | ||
613 | .pm = &pm80x_pm_ops, | 612 | .pm = &pm80x_pm_ops, |
614 | }, | 613 | }, |
615 | .probe = pm800_probe, | 614 | .probe = pm800_probe, |
diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c index e9d50644660c..39f2302e137b 100644 --- a/drivers/mfd/88pm805.c +++ b/drivers/mfd/88pm805.c | |||
@@ -267,7 +267,6 @@ static int pm805_remove(struct i2c_client *client) | |||
267 | static struct i2c_driver pm805_driver = { | 267 | static struct i2c_driver pm805_driver = { |
268 | .driver = { | 268 | .driver = { |
269 | .name = "88PM805", | 269 | .name = "88PM805", |
270 | .owner = THIS_MODULE, | ||
271 | .pm = &pm80x_pm_ops, | 270 | .pm = &pm80x_pm_ops, |
272 | }, | 271 | }, |
273 | .probe = pm805_probe, | 272 | .probe = pm805_probe, |
diff --git a/drivers/mfd/88pm860x-core.c b/drivers/mfd/88pm860x-core.c index e03b7f45b8f7..3269a9990b24 100644 --- a/drivers/mfd/88pm860x-core.c +++ b/drivers/mfd/88pm860x-core.c | |||
@@ -558,11 +558,7 @@ static int pm860x_irq_domain_map(struct irq_domain *d, unsigned int virq, | |||
558 | irq_set_chip_data(virq, d->host_data); | 558 | irq_set_chip_data(virq, d->host_data); |
559 | irq_set_chip_and_handler(virq, &pm860x_irq_chip, handle_edge_irq); | 559 | irq_set_chip_and_handler(virq, &pm860x_irq_chip, handle_edge_irq); |
560 | irq_set_nested_thread(virq, 1); | 560 | irq_set_nested_thread(virq, 1); |
561 | #ifdef CONFIG_ARM | ||
562 | set_irq_flags(virq, IRQF_VALID); | ||
563 | #else | ||
564 | irq_set_noprobe(virq); | 561 | irq_set_noprobe(virq); |
565 | #endif | ||
566 | return 0; | 562 | return 0; |
567 | } | 563 | } |
568 | 564 | ||
@@ -1258,7 +1254,6 @@ MODULE_DEVICE_TABLE(of, pm860x_dt_ids); | |||
1258 | static struct i2c_driver pm860x_driver = { | 1254 | static struct i2c_driver pm860x_driver = { |
1259 | .driver = { | 1255 | .driver = { |
1260 | .name = "88PM860x", | 1256 | .name = "88PM860x", |
1261 | .owner = THIS_MODULE, | ||
1262 | .pm = &pm860x_pm_ops, | 1257 | .pm = &pm860x_pm_ops, |
1263 | .of_match_table = pm860x_dt_ids, | 1258 | .of_match_table = pm860x_dt_ids, |
1264 | }, | 1259 | }, |
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 076f593f90d3..5fa21739c54f 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig | |||
@@ -97,6 +97,7 @@ config MFD_CROS_EC | |||
97 | select MFD_CORE | 97 | select MFD_CORE |
98 | select CHROME_PLATFORMS | 98 | select CHROME_PLATFORMS |
99 | select CROS_EC_PROTO | 99 | select CROS_EC_PROTO |
100 | depends on X86 || ARM || COMPILE_TEST | ||
100 | help | 101 | help |
101 | If you say Y here you get support for the ChromeOS Embedded | 102 | If you say Y here you get support for the ChromeOS Embedded |
102 | Controller (EC) providing keyboard, battery and power services. | 103 | Controller (EC) providing keyboard, battery and power services. |
@@ -105,7 +106,7 @@ config MFD_CROS_EC | |||
105 | 106 | ||
106 | config MFD_CROS_EC_I2C | 107 | config MFD_CROS_EC_I2C |
107 | tristate "ChromeOS Embedded Controller (I2C)" | 108 | tristate "ChromeOS Embedded Controller (I2C)" |
108 | depends on MFD_CROS_EC && CROS_EC_PROTO && I2C | 109 | depends on MFD_CROS_EC && I2C |
109 | 110 | ||
110 | help | 111 | help |
111 | If you say Y here, you get support for talking to the ChromeOS | 112 | If you say Y here, you get support for talking to the ChromeOS |
@@ -115,7 +116,7 @@ config MFD_CROS_EC_I2C | |||
115 | 116 | ||
116 | config MFD_CROS_EC_SPI | 117 | config MFD_CROS_EC_SPI |
117 | tristate "ChromeOS Embedded Controller (SPI)" | 118 | tristate "ChromeOS Embedded Controller (SPI)" |
118 | depends on MFD_CROS_EC && CROS_EC_PROTO && SPI | 119 | depends on MFD_CROS_EC && SPI |
119 | 120 | ||
120 | ---help--- | 121 | ---help--- |
121 | If you say Y here, you get support for talking to the ChromeOS EC | 122 | If you say Y here, you get support for talking to the ChromeOS EC |
@@ -186,6 +187,18 @@ config MFD_DA9055 | |||
186 | This driver can be built as a module. If built as a module it will be | 187 | This driver can be built as a module. If built as a module it will be |
187 | called "da9055" | 188 | called "da9055" |
188 | 189 | ||
190 | config MFD_DA9062 | ||
191 | tristate "Dialog Semiconductor DA9062 PMIC Support" | ||
192 | select MFD_CORE | ||
193 | select REGMAP_I2C | ||
194 | select REGMAP_IRQ | ||
195 | depends on I2C=y | ||
196 | help | ||
197 | Say yes here for support for the Dialog Semiconductor DA9062 PMIC. | ||
198 | This includes the I2C driver and core APIs. | ||
199 | Additional drivers must be enabled in order to use the functionality | ||
200 | of the device. | ||
201 | |||
189 | config MFD_DA9063 | 202 | config MFD_DA9063 |
190 | bool "Dialog Semiconductor DA9063 PMIC Support" | 203 | bool "Dialog Semiconductor DA9063 PMIC Support" |
191 | select MFD_CORE | 204 | select MFD_CORE |
@@ -398,12 +411,14 @@ config MFD_KEMPLD | |||
398 | device may provide functions like watchdog, GPIO, UART and I2C bus. | 411 | device may provide functions like watchdog, GPIO, UART and I2C bus. |
399 | 412 | ||
400 | The following modules are supported: | 413 | The following modules are supported: |
414 | * COMe-bBL6 | ||
401 | * COMe-bHL6 | 415 | * COMe-bHL6 |
402 | * COMe-bIP# | 416 | * COMe-bIP# |
403 | * COMe-bPC2 (ETXexpress-PC) | 417 | * COMe-bPC2 (ETXexpress-PC) |
404 | * COMe-bSC# (ETXexpress-SC T#) | 418 | * COMe-bSC# (ETXexpress-SC T#) |
405 | * COMe-cBL6 | 419 | * COMe-cBL6 |
406 | * COMe-cBT6 | 420 | * COMe-cBT6 |
421 | * COMe-cBW6 | ||
407 | * COMe-cCT6 | 422 | * COMe-cCT6 |
408 | * COMe-cDC2 (microETXexpress-DC) | 423 | * COMe-cDC2 (microETXexpress-DC) |
409 | * COMe-cHL6 | 424 | * COMe-cHL6 |
@@ -1379,6 +1394,12 @@ config MFD_WM8997 | |||
1379 | help | 1394 | help |
1380 | Support for Wolfson Microelectronics WM8997 low power audio SoC | 1395 | Support for Wolfson Microelectronics WM8997 low power audio SoC |
1381 | 1396 | ||
1397 | config MFD_WM8998 | ||
1398 | bool "Wolfson Microelectronics WM8998" | ||
1399 | depends on MFD_ARIZONA | ||
1400 | help | ||
1401 | Support for Wolfson Microelectronics WM8998 low power audio SoC | ||
1402 | |||
1382 | config MFD_WM8400 | 1403 | config MFD_WM8400 |
1383 | bool "Wolfson Microelectronics WM8400" | 1404 | bool "Wolfson Microelectronics WM8400" |
1384 | select MFD_CORE | 1405 | select MFD_CORE |
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index 9d730a2d1878..a59e3fcc8626 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile | |||
@@ -48,6 +48,9 @@ endif | |||
48 | ifeq ($(CONFIG_MFD_WM8997),y) | 48 | ifeq ($(CONFIG_MFD_WM8997),y) |
49 | obj-$(CONFIG_MFD_ARIZONA) += wm8997-tables.o | 49 | obj-$(CONFIG_MFD_ARIZONA) += wm8997-tables.o |
50 | endif | 50 | endif |
51 | ifeq ($(CONFIG_MFD_WM8998),y) | ||
52 | obj-$(CONFIG_MFD_ARIZONA) += wm8998-tables.o | ||
53 | endif | ||
51 | obj-$(CONFIG_MFD_WM8400) += wm8400-core.o | 54 | obj-$(CONFIG_MFD_WM8400) += wm8400-core.o |
52 | wm831x-objs := wm831x-core.o wm831x-irq.o wm831x-otp.o | 55 | wm831x-objs := wm831x-core.o wm831x-irq.o wm831x-otp.o |
53 | wm831x-objs += wm831x-auxadc.o | 56 | wm831x-objs += wm831x-auxadc.o |
@@ -110,10 +113,11 @@ obj-$(CONFIG_MFD_LP8788) += lp8788.o lp8788-irq.o | |||
110 | 113 | ||
111 | da9055-objs := da9055-core.o da9055-i2c.o | 114 | da9055-objs := da9055-core.o da9055-i2c.o |
112 | obj-$(CONFIG_MFD_DA9055) += da9055.o | 115 | obj-$(CONFIG_MFD_DA9055) += da9055.o |
113 | 116 | obj-$(CONFIG_MFD_DA9062) += da9062-core.o | |
114 | da9063-objs := da9063-core.o da9063-irq.o da9063-i2c.o | 117 | da9063-objs := da9063-core.o da9063-irq.o da9063-i2c.o |
115 | obj-$(CONFIG_MFD_DA9063) += da9063.o | 118 | obj-$(CONFIG_MFD_DA9063) += da9063.o |
116 | obj-$(CONFIG_MFD_DA9150) += da9150-core.o | 119 | obj-$(CONFIG_MFD_DA9150) += da9150-core.o |
120 | |||
117 | obj-$(CONFIG_MFD_MAX14577) += max14577.o | 121 | obj-$(CONFIG_MFD_MAX14577) += max14577.o |
118 | obj-$(CONFIG_MFD_MAX77686) += max77686.o | 122 | obj-$(CONFIG_MFD_MAX77686) += max77686.o |
119 | obj-$(CONFIG_MFD_MAX77693) += max77693.o | 123 | obj-$(CONFIG_MFD_MAX77693) += max77693.o |
diff --git a/drivers/mfd/aat2870-core.c b/drivers/mfd/aat2870-core.c index 4e6e03d63e12..29b6a2d4ac72 100644 --- a/drivers/mfd/aat2870-core.c +++ b/drivers/mfd/aat2870-core.c | |||
@@ -500,7 +500,6 @@ MODULE_DEVICE_TABLE(i2c, aat2870_i2c_id_table); | |||
500 | static struct i2c_driver aat2870_i2c_driver = { | 500 | static struct i2c_driver aat2870_i2c_driver = { |
501 | .driver = { | 501 | .driver = { |
502 | .name = "aat2870", | 502 | .name = "aat2870", |
503 | .owner = THIS_MODULE, | ||
504 | .pm = &aat2870_pm_ops, | 503 | .pm = &aat2870_pm_ops, |
505 | }, | 504 | }, |
506 | .probe = aat2870_i2c_probe, | 505 | .probe = aat2870_i2c_probe, |
diff --git a/drivers/mfd/ab3100-core.c b/drivers/mfd/ab3100-core.c index 4659ac1db039..f0afb44271f8 100644 --- a/drivers/mfd/ab3100-core.c +++ b/drivers/mfd/ab3100-core.c | |||
@@ -972,7 +972,6 @@ MODULE_DEVICE_TABLE(i2c, ab3100_id); | |||
972 | static struct i2c_driver ab3100_driver = { | 972 | static struct i2c_driver ab3100_driver = { |
973 | .driver = { | 973 | .driver = { |
974 | .name = "ab3100", | 974 | .name = "ab3100", |
975 | .owner = THIS_MODULE, | ||
976 | }, | 975 | }, |
977 | .id_table = ab3100_id, | 976 | .id_table = ab3100_id, |
978 | .probe = ab3100_probe, | 977 | .probe = ab3100_probe, |
diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c index 000da72a0ae9..fefbe4cfa61d 100644 --- a/drivers/mfd/ab8500-core.c +++ b/drivers/mfd/ab8500-core.c | |||
@@ -565,11 +565,7 @@ static int ab8500_irq_map(struct irq_domain *d, unsigned int virq, | |||
565 | irq_set_chip_and_handler(virq, &ab8500_irq_chip, | 565 | irq_set_chip_and_handler(virq, &ab8500_irq_chip, |
566 | handle_simple_irq); | 566 | handle_simple_irq); |
567 | irq_set_nested_thread(virq, 1); | 567 | irq_set_nested_thread(virq, 1); |
568 | #ifdef CONFIG_ARM | ||
569 | set_irq_flags(virq, IRQF_VALID); | ||
570 | #else | ||
571 | irq_set_noprobe(virq); | 568 | irq_set_noprobe(virq); |
572 | #endif | ||
573 | 569 | ||
574 | return 0; | 570 | return 0; |
575 | } | 571 | } |
diff --git a/drivers/mfd/adp5520.c b/drivers/mfd/adp5520.c index f495b8b57dd7..ae88654595dc 100644 --- a/drivers/mfd/adp5520.c +++ b/drivers/mfd/adp5520.c | |||
@@ -351,7 +351,6 @@ MODULE_DEVICE_TABLE(i2c, adp5520_id); | |||
351 | static struct i2c_driver adp5520_driver = { | 351 | static struct i2c_driver adp5520_driver = { |
352 | .driver = { | 352 | .driver = { |
353 | .name = "adp5520", | 353 | .name = "adp5520", |
354 | .owner = THIS_MODULE, | ||
355 | .pm = &adp5520_pm, | 354 | .pm = &adp5520_pm, |
356 | }, | 355 | }, |
357 | .probe = adp5520_probe, | 356 | .probe = adp5520_probe, |
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index a72ddb295078..08b36fa5b0c5 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c | |||
@@ -30,7 +30,7 @@ | |||
30 | 30 | ||
31 | #include "arizona.h" | 31 | #include "arizona.h" |
32 | 32 | ||
33 | static const char *wm5102_core_supplies[] = { | 33 | static const char * const wm5102_core_supplies[] = { |
34 | "AVDD", | 34 | "AVDD", |
35 | "DBVDD1", | 35 | "DBVDD1", |
36 | }; | 36 | }; |
@@ -146,17 +146,31 @@ static irqreturn_t arizona_underclocked(int irq, void *data) | |||
146 | static irqreturn_t arizona_overclocked(int irq, void *data) | 146 | static irqreturn_t arizona_overclocked(int irq, void *data) |
147 | { | 147 | { |
148 | struct arizona *arizona = data; | 148 | struct arizona *arizona = data; |
149 | unsigned int val[2]; | 149 | unsigned int val[3]; |
150 | int ret; | 150 | int ret; |
151 | 151 | ||
152 | ret = regmap_bulk_read(arizona->regmap, ARIZONA_INTERRUPT_RAW_STATUS_6, | 152 | ret = regmap_bulk_read(arizona->regmap, ARIZONA_INTERRUPT_RAW_STATUS_6, |
153 | &val[0], 2); | 153 | &val[0], 3); |
154 | if (ret != 0) { | 154 | if (ret != 0) { |
155 | dev_err(arizona->dev, "Failed to read overclock status: %d\n", | 155 | dev_err(arizona->dev, "Failed to read overclock status: %d\n", |
156 | ret); | 156 | ret); |
157 | return IRQ_NONE; | 157 | return IRQ_NONE; |
158 | } | 158 | } |
159 | 159 | ||
160 | switch (arizona->type) { | ||
161 | case WM8998: | ||
162 | case WM1814: | ||
163 | /* Some bits are shifted on WM8998, | ||
164 | * rearrange to match the standard bit layout | ||
165 | */ | ||
166 | val[0] = ((val[0] & 0x60e0) >> 1) | | ||
167 | ((val[0] & 0x1e00) >> 2) | | ||
168 | (val[0] & 0x000f); | ||
169 | break; | ||
170 | default: | ||
171 | break; | ||
172 | } | ||
173 | |||
160 | if (val[0] & ARIZONA_PWM_OVERCLOCKED_STS) | 174 | if (val[0] & ARIZONA_PWM_OVERCLOCKED_STS) |
161 | dev_err(arizona->dev, "PWM overclocked\n"); | 175 | dev_err(arizona->dev, "PWM overclocked\n"); |
162 | if (val[0] & ARIZONA_FX_CORE_OVERCLOCKED_STS) | 176 | if (val[0] & ARIZONA_FX_CORE_OVERCLOCKED_STS) |
@@ -201,6 +215,9 @@ static irqreturn_t arizona_overclocked(int irq, void *data) | |||
201 | if (val[1] & ARIZONA_ISRC1_OVERCLOCKED_STS) | 215 | if (val[1] & ARIZONA_ISRC1_OVERCLOCKED_STS) |
202 | dev_err(arizona->dev, "ISRC1 overclocked\n"); | 216 | dev_err(arizona->dev, "ISRC1 overclocked\n"); |
203 | 217 | ||
218 | if (val[2] & ARIZONA_SPDIF_OVERCLOCKED_STS) | ||
219 | dev_err(arizona->dev, "SPDIF overclocked\n"); | ||
220 | |||
204 | return IRQ_HANDLED; | 221 | return IRQ_HANDLED; |
205 | } | 222 | } |
206 | 223 | ||
@@ -550,9 +567,8 @@ static int arizona_runtime_resume(struct device *dev) | |||
550 | break; | 567 | break; |
551 | default: | 568 | default: |
552 | ret = arizona_wait_for_boot(arizona); | 569 | ret = arizona_wait_for_boot(arizona); |
553 | if (ret != 0) { | 570 | if (ret != 0) |
554 | goto err; | 571 | goto err; |
555 | } | ||
556 | 572 | ||
557 | if (arizona->external_dcvdd) { | 573 | if (arizona->external_dcvdd) { |
558 | ret = regmap_update_bits(arizona->regmap, | 574 | ret = regmap_update_bits(arizona->regmap, |
@@ -759,8 +775,8 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) | |||
759 | 775 | ||
760 | ret = of_property_read_u32_array(arizona->dev->of_node, | 776 | ret = of_property_read_u32_array(arizona->dev->of_node, |
761 | "wlf,gpio-defaults", | 777 | "wlf,gpio-defaults", |
762 | arizona->pdata.gpio_defaults, | 778 | pdata->gpio_defaults, |
763 | ARRAY_SIZE(arizona->pdata.gpio_defaults)); | 779 | ARRAY_SIZE(pdata->gpio_defaults)); |
764 | if (ret >= 0) { | 780 | if (ret >= 0) { |
765 | /* | 781 | /* |
766 | * All values are literal except out of range values | 782 | * All values are literal except out of range values |
@@ -768,11 +784,11 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) | |||
768 | * data which uses 0 as chip default and out of range | 784 | * data which uses 0 as chip default and out of range |
769 | * as zero. | 785 | * as zero. |
770 | */ | 786 | */ |
771 | for (i = 0; i < ARRAY_SIZE(arizona->pdata.gpio_defaults); i++) { | 787 | for (i = 0; i < ARRAY_SIZE(pdata->gpio_defaults); i++) { |
772 | if (arizona->pdata.gpio_defaults[i] > 0xffff) | 788 | if (pdata->gpio_defaults[i] > 0xffff) |
773 | arizona->pdata.gpio_defaults[i] = 0; | 789 | pdata->gpio_defaults[i] = 0; |
774 | else if (arizona->pdata.gpio_defaults[i] == 0) | 790 | else if (pdata->gpio_defaults[i] == 0) |
775 | arizona->pdata.gpio_defaults[i] = 0x10000; | 791 | pdata->gpio_defaults[i] = 0x10000; |
776 | } | 792 | } |
777 | } else { | 793 | } else { |
778 | dev_err(arizona->dev, "Failed to parse GPIO defaults: %d\n", | 794 | dev_err(arizona->dev, "Failed to parse GPIO defaults: %d\n", |
@@ -781,20 +797,20 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) | |||
781 | 797 | ||
782 | of_property_for_each_u32(arizona->dev->of_node, "wlf,inmode", prop, | 798 | of_property_for_each_u32(arizona->dev->of_node, "wlf,inmode", prop, |
783 | cur, val) { | 799 | cur, val) { |
784 | if (count == ARRAY_SIZE(arizona->pdata.inmode)) | 800 | if (count == ARRAY_SIZE(pdata->inmode)) |
785 | break; | 801 | break; |
786 | 802 | ||
787 | arizona->pdata.inmode[count] = val; | 803 | pdata->inmode[count] = val; |
788 | count++; | 804 | count++; |
789 | } | 805 | } |
790 | 806 | ||
791 | count = 0; | 807 | count = 0; |
792 | of_property_for_each_u32(arizona->dev->of_node, "wlf,dmic-ref", prop, | 808 | of_property_for_each_u32(arizona->dev->of_node, "wlf,dmic-ref", prop, |
793 | cur, val) { | 809 | cur, val) { |
794 | if (count == ARRAY_SIZE(arizona->pdata.dmic_ref)) | 810 | if (count == ARRAY_SIZE(pdata->dmic_ref)) |
795 | break; | 811 | break; |
796 | 812 | ||
797 | arizona->pdata.dmic_ref[count] = val; | 813 | pdata->dmic_ref[count] = val; |
798 | count++; | 814 | count++; |
799 | } | 815 | } |
800 | 816 | ||
@@ -806,6 +822,8 @@ const struct of_device_id arizona_of_match[] = { | |||
806 | { .compatible = "wlf,wm5110", .data = (void *)WM5110 }, | 822 | { .compatible = "wlf,wm5110", .data = (void *)WM5110 }, |
807 | { .compatible = "wlf,wm8280", .data = (void *)WM8280 }, | 823 | { .compatible = "wlf,wm8280", .data = (void *)WM8280 }, |
808 | { .compatible = "wlf,wm8997", .data = (void *)WM8997 }, | 824 | { .compatible = "wlf,wm8997", .data = (void *)WM8997 }, |
825 | { .compatible = "wlf,wm8998", .data = (void *)WM8998 }, | ||
826 | { .compatible = "wlf,wm1814", .data = (void *)WM1814 }, | ||
809 | {}, | 827 | {}, |
810 | }; | 828 | }; |
811 | EXPORT_SYMBOL_GPL(arizona_of_match); | 829 | EXPORT_SYMBOL_GPL(arizona_of_match); |
@@ -820,7 +838,7 @@ static const struct mfd_cell early_devs[] = { | |||
820 | { .name = "arizona-ldo1" }, | 838 | { .name = "arizona-ldo1" }, |
821 | }; | 839 | }; |
822 | 840 | ||
823 | static const char *wm5102_supplies[] = { | 841 | static const char * const wm5102_supplies[] = { |
824 | "MICVDD", | 842 | "MICVDD", |
825 | "DBVDD2", | 843 | "DBVDD2", |
826 | "DBVDD3", | 844 | "DBVDD3", |
@@ -863,7 +881,7 @@ static const struct mfd_cell wm5110_devs[] = { | |||
863 | }, | 881 | }, |
864 | }; | 882 | }; |
865 | 883 | ||
866 | static const char *wm8997_supplies[] = { | 884 | static const char * const wm8997_supplies[] = { |
867 | "MICVDD", | 885 | "MICVDD", |
868 | "DBVDD2", | 886 | "DBVDD2", |
869 | "CPVDD", | 887 | "CPVDD", |
@@ -887,11 +905,28 @@ static const struct mfd_cell wm8997_devs[] = { | |||
887 | }, | 905 | }, |
888 | }; | 906 | }; |
889 | 907 | ||
908 | static const struct mfd_cell wm8998_devs[] = { | ||
909 | { | ||
910 | .name = "arizona-extcon", | ||
911 | .parent_supplies = wm5102_supplies, | ||
912 | .num_parent_supplies = 1, /* We only need MICVDD */ | ||
913 | }, | ||
914 | { .name = "arizona-gpio" }, | ||
915 | { .name = "arizona-haptics" }, | ||
916 | { .name = "arizona-pwm" }, | ||
917 | { | ||
918 | .name = "wm8998-codec", | ||
919 | .parent_supplies = wm5102_supplies, | ||
920 | .num_parent_supplies = ARRAY_SIZE(wm5102_supplies), | ||
921 | }, | ||
922 | { .name = "arizona-micsupp" }, | ||
923 | }; | ||
924 | |||
890 | int arizona_dev_init(struct arizona *arizona) | 925 | int arizona_dev_init(struct arizona *arizona) |
891 | { | 926 | { |
892 | struct device *dev = arizona->dev; | 927 | struct device *dev = arizona->dev; |
893 | const char *type_name; | 928 | const char *type_name; |
894 | unsigned int reg, val; | 929 | unsigned int reg, val, mask; |
895 | int (*apply_patch)(struct arizona *) = NULL; | 930 | int (*apply_patch)(struct arizona *) = NULL; |
896 | int ret, i; | 931 | int ret, i; |
897 | 932 | ||
@@ -911,6 +946,8 @@ int arizona_dev_init(struct arizona *arizona) | |||
911 | case WM5110: | 946 | case WM5110: |
912 | case WM8280: | 947 | case WM8280: |
913 | case WM8997: | 948 | case WM8997: |
949 | case WM8998: | ||
950 | case WM1814: | ||
914 | for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++) | 951 | for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++) |
915 | arizona->core_supplies[i].supply | 952 | arizona->core_supplies[i].supply |
916 | = wm5102_core_supplies[i]; | 953 | = wm5102_core_supplies[i]; |
@@ -992,6 +1029,7 @@ int arizona_dev_init(struct arizona *arizona) | |||
992 | switch (reg) { | 1029 | switch (reg) { |
993 | case 0x5102: | 1030 | case 0x5102: |
994 | case 0x5110: | 1031 | case 0x5110: |
1032 | case 0x6349: | ||
995 | case 0x8997: | 1033 | case 0x8997: |
996 | break; | 1034 | break; |
997 | default: | 1035 | default: |
@@ -1093,6 +1131,27 @@ int arizona_dev_init(struct arizona *arizona) | |||
1093 | apply_patch = wm8997_patch; | 1131 | apply_patch = wm8997_patch; |
1094 | break; | 1132 | break; |
1095 | #endif | 1133 | #endif |
1134 | #ifdef CONFIG_MFD_WM8998 | ||
1135 | case 0x6349: | ||
1136 | switch (arizona->type) { | ||
1137 | case WM8998: | ||
1138 | type_name = "WM8998"; | ||
1139 | break; | ||
1140 | |||
1141 | case WM1814: | ||
1142 | type_name = "WM1814"; | ||
1143 | break; | ||
1144 | |||
1145 | default: | ||
1146 | type_name = "WM8998"; | ||
1147 | dev_err(arizona->dev, "WM8998 registered as %d\n", | ||
1148 | arizona->type); | ||
1149 | arizona->type = WM8998; | ||
1150 | } | ||
1151 | |||
1152 | apply_patch = wm8998_patch; | ||
1153 | break; | ||
1154 | #endif | ||
1096 | default: | 1155 | default: |
1097 | dev_err(arizona->dev, "Unknown device ID %x\n", reg); | 1156 | dev_err(arizona->dev, "Unknown device ID %x\n", reg); |
1098 | goto err_reset; | 1157 | goto err_reset; |
@@ -1204,14 +1263,38 @@ int arizona_dev_init(struct arizona *arizona) | |||
1204 | << ARIZONA_IN1_DMIC_SUP_SHIFT; | 1263 | << ARIZONA_IN1_DMIC_SUP_SHIFT; |
1205 | if (arizona->pdata.inmode[i] & ARIZONA_INMODE_DMIC) | 1264 | if (arizona->pdata.inmode[i] & ARIZONA_INMODE_DMIC) |
1206 | val |= 1 << ARIZONA_IN1_MODE_SHIFT; | 1265 | val |= 1 << ARIZONA_IN1_MODE_SHIFT; |
1207 | if (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE) | 1266 | |
1208 | val |= 1 << ARIZONA_IN1_SINGLE_ENDED_SHIFT; | 1267 | switch (arizona->type) { |
1268 | case WM8998: | ||
1269 | case WM1814: | ||
1270 | regmap_update_bits(arizona->regmap, | ||
1271 | ARIZONA_ADC_DIGITAL_VOLUME_1L + (i * 8), | ||
1272 | ARIZONA_IN1L_SRC_SE_MASK, | ||
1273 | (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE) | ||
1274 | << ARIZONA_IN1L_SRC_SE_SHIFT); | ||
1275 | |||
1276 | regmap_update_bits(arizona->regmap, | ||
1277 | ARIZONA_ADC_DIGITAL_VOLUME_1R + (i * 8), | ||
1278 | ARIZONA_IN1R_SRC_SE_MASK, | ||
1279 | (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE) | ||
1280 | << ARIZONA_IN1R_SRC_SE_SHIFT); | ||
1281 | |||
1282 | mask = ARIZONA_IN1_DMIC_SUP_MASK | | ||
1283 | ARIZONA_IN1_MODE_MASK; | ||
1284 | break; | ||
1285 | default: | ||
1286 | if (arizona->pdata.inmode[i] & ARIZONA_INMODE_SE) | ||
1287 | val |= 1 << ARIZONA_IN1_SINGLE_ENDED_SHIFT; | ||
1288 | |||
1289 | mask = ARIZONA_IN1_DMIC_SUP_MASK | | ||
1290 | ARIZONA_IN1_MODE_MASK | | ||
1291 | ARIZONA_IN1_SINGLE_ENDED_MASK; | ||
1292 | break; | ||
1293 | } | ||
1209 | 1294 | ||
1210 | regmap_update_bits(arizona->regmap, | 1295 | regmap_update_bits(arizona->regmap, |
1211 | ARIZONA_IN1L_CONTROL + (i * 8), | 1296 | ARIZONA_IN1L_CONTROL + (i * 8), |
1212 | ARIZONA_IN1_DMIC_SUP_MASK | | 1297 | mask, val); |
1213 | ARIZONA_IN1_MODE_MASK | | ||
1214 | ARIZONA_IN1_SINGLE_ENDED_MASK, val); | ||
1215 | } | 1298 | } |
1216 | 1299 | ||
1217 | for (i = 0; i < ARIZONA_MAX_OUTPUT; i++) { | 1300 | for (i = 0; i < ARIZONA_MAX_OUTPUT; i++) { |
@@ -1273,6 +1356,11 @@ int arizona_dev_init(struct arizona *arizona) | |||
1273 | ret = mfd_add_devices(arizona->dev, -1, wm8997_devs, | 1356 | ret = mfd_add_devices(arizona->dev, -1, wm8997_devs, |
1274 | ARRAY_SIZE(wm8997_devs), NULL, 0, NULL); | 1357 | ARRAY_SIZE(wm8997_devs), NULL, 0, NULL); |
1275 | break; | 1358 | break; |
1359 | case WM8998: | ||
1360 | case WM1814: | ||
1361 | ret = mfd_add_devices(arizona->dev, -1, wm8998_devs, | ||
1362 | ARRAY_SIZE(wm8998_devs), NULL, 0, NULL); | ||
1363 | break; | ||
1276 | } | 1364 | } |
1277 | 1365 | ||
1278 | if (ret != 0) { | 1366 | if (ret != 0) { |
diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c index ff782a5de235..cea1b409fa27 100644 --- a/drivers/mfd/arizona-i2c.c +++ b/drivers/mfd/arizona-i2c.c | |||
@@ -53,6 +53,12 @@ static int arizona_i2c_probe(struct i2c_client *i2c, | |||
53 | regmap_config = &wm8997_i2c_regmap; | 53 | regmap_config = &wm8997_i2c_regmap; |
54 | break; | 54 | break; |
55 | #endif | 55 | #endif |
56 | #ifdef CONFIG_MFD_WM8998 | ||
57 | case WM8998: | ||
58 | case WM1814: | ||
59 | regmap_config = &wm8998_i2c_regmap; | ||
60 | break; | ||
61 | #endif | ||
56 | default: | 62 | default: |
57 | dev_err(&i2c->dev, "Unknown device type %ld\n", | 63 | dev_err(&i2c->dev, "Unknown device type %ld\n", |
58 | id->driver_data); | 64 | id->driver_data); |
@@ -90,6 +96,8 @@ static const struct i2c_device_id arizona_i2c_id[] = { | |||
90 | { "wm5110", WM5110 }, | 96 | { "wm5110", WM5110 }, |
91 | { "wm8280", WM8280 }, | 97 | { "wm8280", WM8280 }, |
92 | { "wm8997", WM8997 }, | 98 | { "wm8997", WM8997 }, |
99 | { "wm8998", WM8998 }, | ||
100 | { "wm1814", WM1814 }, | ||
93 | { } | 101 | { } |
94 | }; | 102 | }; |
95 | MODULE_DEVICE_TABLE(i2c, arizona_i2c_id); | 103 | MODULE_DEVICE_TABLE(i2c, arizona_i2c_id); |
@@ -97,7 +105,6 @@ MODULE_DEVICE_TABLE(i2c, arizona_i2c_id); | |||
97 | static struct i2c_driver arizona_i2c_driver = { | 105 | static struct i2c_driver arizona_i2c_driver = { |
98 | .driver = { | 106 | .driver = { |
99 | .name = "arizona", | 107 | .name = "arizona", |
100 | .owner = THIS_MODULE, | ||
101 | .pm = &arizona_pm_ops, | 108 | .pm = &arizona_pm_ops, |
102 | .of_match_table = of_match_ptr(arizona_of_match), | 109 | .of_match_table = of_match_ptr(arizona_of_match), |
103 | }, | 110 | }, |
diff --git a/drivers/mfd/arizona-irq.c b/drivers/mfd/arizona-irq.c index 2b9965d53e4e..2cac4f463f1e 100644 --- a/drivers/mfd/arizona-irq.c +++ b/drivers/mfd/arizona-irq.c | |||
@@ -174,14 +174,7 @@ static int arizona_irq_map(struct irq_domain *h, unsigned int virq, | |||
174 | irq_set_chip_data(virq, data); | 174 | irq_set_chip_data(virq, data); |
175 | irq_set_chip_and_handler(virq, &arizona_irq_chip, handle_simple_irq); | 175 | irq_set_chip_and_handler(virq, &arizona_irq_chip, handle_simple_irq); |
176 | irq_set_nested_thread(virq, 1); | 176 | irq_set_nested_thread(virq, 1); |
177 | |||
178 | /* ARM needs us to explicitly flag the IRQ as valid | ||
179 | * and will set them noprobe when we do so. */ | ||
180 | #ifdef CONFIG_ARM | ||
181 | set_irq_flags(virq, IRQF_VALID); | ||
182 | #else | ||
183 | irq_set_noprobe(virq); | 177 | irq_set_noprobe(virq); |
184 | #endif | ||
185 | 178 | ||
186 | return 0; | 179 | return 0; |
187 | } | 180 | } |
@@ -234,6 +227,15 @@ int arizona_irq_init(struct arizona *arizona) | |||
234 | arizona->ctrlif_error = false; | 227 | arizona->ctrlif_error = false; |
235 | break; | 228 | break; |
236 | #endif | 229 | #endif |
230 | #ifdef CONFIG_MFD_WM8998 | ||
231 | case WM8998: | ||
232 | case WM1814: | ||
233 | aod = &wm8998_aod; | ||
234 | irq = &wm8998_irq; | ||
235 | |||
236 | arizona->ctrlif_error = false; | ||
237 | break; | ||
238 | #endif | ||
237 | default: | 239 | default: |
238 | BUG_ON("Unknown Arizona class device" == NULL); | 240 | BUG_ON("Unknown Arizona class device" == NULL); |
239 | return -EINVAL; | 241 | return -EINVAL; |
diff --git a/drivers/mfd/arizona.h b/drivers/mfd/arizona.h index fbe2843271c5..3af12e938f57 100644 --- a/drivers/mfd/arizona.h +++ b/drivers/mfd/arizona.h | |||
@@ -27,6 +27,8 @@ extern const struct regmap_config wm5110_spi_regmap; | |||
27 | 27 | ||
28 | extern const struct regmap_config wm8997_i2c_regmap; | 28 | extern const struct regmap_config wm8997_i2c_regmap; |
29 | 29 | ||
30 | extern const struct regmap_config wm8998_i2c_regmap; | ||
31 | |||
30 | extern const struct dev_pm_ops arizona_pm_ops; | 32 | extern const struct dev_pm_ops arizona_pm_ops; |
31 | 33 | ||
32 | extern const struct of_device_id arizona_of_match[]; | 34 | extern const struct of_device_id arizona_of_match[]; |
@@ -41,6 +43,9 @@ extern const struct regmap_irq_chip wm5110_revd_irq; | |||
41 | extern const struct regmap_irq_chip wm8997_aod; | 43 | extern const struct regmap_irq_chip wm8997_aod; |
42 | extern const struct regmap_irq_chip wm8997_irq; | 44 | extern const struct regmap_irq_chip wm8997_irq; |
43 | 45 | ||
46 | extern struct regmap_irq_chip wm8998_aod; | ||
47 | extern struct regmap_irq_chip wm8998_irq; | ||
48 | |||
44 | int arizona_dev_init(struct arizona *arizona); | 49 | int arizona_dev_init(struct arizona *arizona); |
45 | int arizona_dev_exit(struct arizona *arizona); | 50 | int arizona_dev_exit(struct arizona *arizona); |
46 | int arizona_irq_init(struct arizona *arizona); | 51 | int arizona_irq_init(struct arizona *arizona); |
diff --git a/drivers/mfd/as3711.c b/drivers/mfd/as3711.c index d9706ede8d39..d001f7e238f5 100644 --- a/drivers/mfd/as3711.c +++ b/drivers/mfd/as3711.c | |||
@@ -211,7 +211,6 @@ MODULE_DEVICE_TABLE(i2c, as3711_i2c_id); | |||
211 | static struct i2c_driver as3711_i2c_driver = { | 211 | static struct i2c_driver as3711_i2c_driver = { |
212 | .driver = { | 212 | .driver = { |
213 | .name = "as3711", | 213 | .name = "as3711", |
214 | .owner = THIS_MODULE, | ||
215 | .of_match_table = of_match_ptr(as3711_of_match), | 214 | .of_match_table = of_match_ptr(as3711_of_match), |
216 | }, | 215 | }, |
217 | .probe = as3711_i2c_probe, | 216 | .probe = as3711_i2c_probe, |
diff --git a/drivers/mfd/as3722.c b/drivers/mfd/as3722.c index 39fa554f13bb..924ea90494ae 100644 --- a/drivers/mfd/as3722.c +++ b/drivers/mfd/as3722.c | |||
@@ -437,7 +437,6 @@ MODULE_DEVICE_TABLE(i2c, as3722_i2c_id); | |||
437 | static struct i2c_driver as3722_i2c_driver = { | 437 | static struct i2c_driver as3722_i2c_driver = { |
438 | .driver = { | 438 | .driver = { |
439 | .name = "as3722", | 439 | .name = "as3722", |
440 | .owner = THIS_MODULE, | ||
441 | .of_match_table = as3722_of_match, | 440 | .of_match_table = as3722_of_match, |
442 | }, | 441 | }, |
443 | .probe = as3722_i2c_probe, | 442 | .probe = as3722_i2c_probe, |
diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c index 120df5c08741..4b54128bc78e 100644 --- a/drivers/mfd/asic3.c +++ b/drivers/mfd/asic3.c | |||
@@ -411,7 +411,7 @@ static int __init asic3_irq_probe(struct platform_device *pdev) | |||
411 | 411 | ||
412 | irq_set_chip_data(irq, asic); | 412 | irq_set_chip_data(irq, asic); |
413 | irq_set_handler(irq, handle_level_irq); | 413 | irq_set_handler(irq, handle_level_irq); |
414 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | 414 | irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
415 | } | 415 | } |
416 | 416 | ||
417 | asic3_write_register(asic, ASIC3_OFFSET(INTR, INT_MASK), | 417 | asic3_write_register(asic, ASIC3_OFFSET(INTR, INT_MASK), |
@@ -431,7 +431,7 @@ static void asic3_irq_remove(struct platform_device *pdev) | |||
431 | irq_base = asic->irq_base; | 431 | irq_base = asic->irq_base; |
432 | 432 | ||
433 | for (irq = irq_base; irq < irq_base + ASIC3_NR_IRQS; irq++) { | 433 | for (irq = irq_base; irq < irq_base + ASIC3_NR_IRQS; irq++) { |
434 | set_irq_flags(irq, 0); | 434 | irq_set_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
435 | irq_set_chip_and_handler(irq, NULL, NULL); | 435 | irq_set_chip_and_handler(irq, NULL, NULL); |
436 | irq_set_chip_data(irq, NULL); | 436 | irq_set_chip_data(irq, NULL); |
437 | } | 437 | } |
diff --git a/drivers/mfd/atmel-hlcdc.c b/drivers/mfd/atmel-hlcdc.c index cfd58f4cc5c3..3fff6b5d0426 100644 --- a/drivers/mfd/atmel-hlcdc.c +++ b/drivers/mfd/atmel-hlcdc.c | |||
@@ -18,6 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/clk.h> | 20 | #include <linux/clk.h> |
21 | #include <linux/iopoll.h> | ||
21 | #include <linux/mfd/atmel-hlcdc.h> | 22 | #include <linux/mfd/atmel-hlcdc.h> |
22 | #include <linux/mfd/core.h> | 23 | #include <linux/mfd/core.h> |
23 | #include <linux/module.h> | 24 | #include <linux/module.h> |
@@ -26,6 +27,10 @@ | |||
26 | 27 | ||
27 | #define ATMEL_HLCDC_REG_MAX (0x4000 - 0x4) | 28 | #define ATMEL_HLCDC_REG_MAX (0x4000 - 0x4) |
28 | 29 | ||
30 | struct atmel_hlcdc_regmap { | ||
31 | void __iomem *regs; | ||
32 | }; | ||
33 | |||
29 | static const struct mfd_cell atmel_hlcdc_cells[] = { | 34 | static const struct mfd_cell atmel_hlcdc_cells[] = { |
30 | { | 35 | { |
31 | .name = "atmel-hlcdc-pwm", | 36 | .name = "atmel-hlcdc-pwm", |
@@ -37,28 +42,62 @@ static const struct mfd_cell atmel_hlcdc_cells[] = { | |||
37 | }, | 42 | }, |
38 | }; | 43 | }; |
39 | 44 | ||
45 | static int regmap_atmel_hlcdc_reg_write(void *context, unsigned int reg, | ||
46 | unsigned int val) | ||
47 | { | ||
48 | struct atmel_hlcdc_regmap *hregmap = context; | ||
49 | |||
50 | if (reg <= ATMEL_HLCDC_DIS) { | ||
51 | u32 status; | ||
52 | |||
53 | readl_poll_timeout(hregmap->regs + ATMEL_HLCDC_SR, status, | ||
54 | !(status & ATMEL_HLCDC_SIP), 1, 100); | ||
55 | } | ||
56 | |||
57 | writel(val, hregmap->regs + reg); | ||
58 | |||
59 | return 0; | ||
60 | } | ||
61 | |||
62 | static int regmap_atmel_hlcdc_reg_read(void *context, unsigned int reg, | ||
63 | unsigned int *val) | ||
64 | { | ||
65 | struct atmel_hlcdc_regmap *hregmap = context; | ||
66 | |||
67 | *val = readl(hregmap->regs + reg); | ||
68 | |||
69 | return 0; | ||
70 | } | ||
71 | |||
40 | static const struct regmap_config atmel_hlcdc_regmap_config = { | 72 | static const struct regmap_config atmel_hlcdc_regmap_config = { |
41 | .reg_bits = 32, | 73 | .reg_bits = 32, |
42 | .val_bits = 32, | 74 | .val_bits = 32, |
43 | .reg_stride = 4, | 75 | .reg_stride = 4, |
44 | .max_register = ATMEL_HLCDC_REG_MAX, | 76 | .max_register = ATMEL_HLCDC_REG_MAX, |
77 | .reg_write = regmap_atmel_hlcdc_reg_write, | ||
78 | .reg_read = regmap_atmel_hlcdc_reg_read, | ||
79 | .fast_io = true, | ||
45 | }; | 80 | }; |
46 | 81 | ||
47 | static int atmel_hlcdc_probe(struct platform_device *pdev) | 82 | static int atmel_hlcdc_probe(struct platform_device *pdev) |
48 | { | 83 | { |
84 | struct atmel_hlcdc_regmap *hregmap; | ||
49 | struct device *dev = &pdev->dev; | 85 | struct device *dev = &pdev->dev; |
50 | struct atmel_hlcdc *hlcdc; | 86 | struct atmel_hlcdc *hlcdc; |
51 | struct resource *res; | 87 | struct resource *res; |
52 | void __iomem *regs; | 88 | |
89 | hregmap = devm_kzalloc(dev, sizeof(*hregmap), GFP_KERNEL); | ||
90 | if (!hregmap) | ||
91 | return -ENOMEM; | ||
53 | 92 | ||
54 | hlcdc = devm_kzalloc(dev, sizeof(*hlcdc), GFP_KERNEL); | 93 | hlcdc = devm_kzalloc(dev, sizeof(*hlcdc), GFP_KERNEL); |
55 | if (!hlcdc) | 94 | if (!hlcdc) |
56 | return -ENOMEM; | 95 | return -ENOMEM; |
57 | 96 | ||
58 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 97 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
59 | regs = devm_ioremap_resource(dev, res); | 98 | hregmap->regs = devm_ioremap_resource(dev, res); |
60 | if (IS_ERR(regs)) | 99 | if (IS_ERR(hregmap->regs)) |
61 | return PTR_ERR(regs); | 100 | return PTR_ERR(hregmap->regs); |
62 | 101 | ||
63 | hlcdc->irq = platform_get_irq(pdev, 0); | 102 | hlcdc->irq = platform_get_irq(pdev, 0); |
64 | if (hlcdc->irq < 0) | 103 | if (hlcdc->irq < 0) |
@@ -82,8 +121,8 @@ static int atmel_hlcdc_probe(struct platform_device *pdev) | |||
82 | return PTR_ERR(hlcdc->slow_clk); | 121 | return PTR_ERR(hlcdc->slow_clk); |
83 | } | 122 | } |
84 | 123 | ||
85 | hlcdc->regmap = devm_regmap_init_mmio(dev, regs, | 124 | hlcdc->regmap = devm_regmap_init(dev, NULL, hregmap, |
86 | &atmel_hlcdc_regmap_config); | 125 | &atmel_hlcdc_regmap_config); |
87 | if (IS_ERR(hlcdc->regmap)) | 126 | if (IS_ERR(hlcdc->regmap)) |
88 | return PTR_ERR(hlcdc->regmap); | 127 | return PTR_ERR(hlcdc->regmap); |
89 | 128 | ||
@@ -102,7 +141,11 @@ static int atmel_hlcdc_remove(struct platform_device *pdev) | |||
102 | } | 141 | } |
103 | 142 | ||
104 | static const struct of_device_id atmel_hlcdc_match[] = { | 143 | static const struct of_device_id atmel_hlcdc_match[] = { |
144 | { .compatible = "atmel,at91sam9n12-hlcdc" }, | ||
145 | { .compatible = "atmel,at91sam9x5-hlcdc" }, | ||
146 | { .compatible = "atmel,sama5d2-hlcdc" }, | ||
105 | { .compatible = "atmel,sama5d3-hlcdc" }, | 147 | { .compatible = "atmel,sama5d3-hlcdc" }, |
148 | { .compatible = "atmel,sama5d4-hlcdc" }, | ||
106 | { /* sentinel */ }, | 149 | { /* sentinel */ }, |
107 | }; | 150 | }; |
108 | 151 | ||
diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c index 6df91556faf3..3f576b76c322 100644 --- a/drivers/mfd/axp20x.c +++ b/drivers/mfd/axp20x.c | |||
@@ -30,19 +30,47 @@ | |||
30 | #define AXP20X_OFF 0x80 | 30 | #define AXP20X_OFF 0x80 |
31 | 31 | ||
32 | static const char * const axp20x_model_names[] = { | 32 | static const char * const axp20x_model_names[] = { |
33 | "AXP152", | ||
33 | "AXP202", | 34 | "AXP202", |
34 | "AXP209", | 35 | "AXP209", |
35 | "AXP221", | 36 | "AXP221", |
36 | "AXP288", | 37 | "AXP288", |
37 | }; | 38 | }; |
38 | 39 | ||
40 | static const struct regmap_range axp152_writeable_ranges[] = { | ||
41 | regmap_reg_range(AXP152_LDO3456_DC1234_CTRL, AXP152_IRQ3_STATE), | ||
42 | regmap_reg_range(AXP152_DCDC_MODE, AXP152_PWM1_DUTY_CYCLE), | ||
43 | }; | ||
44 | |||
45 | static const struct regmap_range axp152_volatile_ranges[] = { | ||
46 | regmap_reg_range(AXP152_PWR_OP_MODE, AXP152_PWR_OP_MODE), | ||
47 | regmap_reg_range(AXP152_IRQ1_EN, AXP152_IRQ3_STATE), | ||
48 | regmap_reg_range(AXP152_GPIO_INPUT, AXP152_GPIO_INPUT), | ||
49 | }; | ||
50 | |||
51 | static const struct regmap_access_table axp152_writeable_table = { | ||
52 | .yes_ranges = axp152_writeable_ranges, | ||
53 | .n_yes_ranges = ARRAY_SIZE(axp152_writeable_ranges), | ||
54 | }; | ||
55 | |||
56 | static const struct regmap_access_table axp152_volatile_table = { | ||
57 | .yes_ranges = axp152_volatile_ranges, | ||
58 | .n_yes_ranges = ARRAY_SIZE(axp152_volatile_ranges), | ||
59 | }; | ||
60 | |||
39 | static const struct regmap_range axp20x_writeable_ranges[] = { | 61 | static const struct regmap_range axp20x_writeable_ranges[] = { |
40 | regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE), | 62 | regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE), |
41 | regmap_reg_range(AXP20X_DCDC_MODE, AXP20X_FG_RES), | 63 | regmap_reg_range(AXP20X_DCDC_MODE, AXP20X_FG_RES), |
64 | regmap_reg_range(AXP20X_RDC_H, AXP20X_OCV(AXP20X_OCV_MAX)), | ||
42 | }; | 65 | }; |
43 | 66 | ||
44 | static const struct regmap_range axp20x_volatile_ranges[] = { | 67 | static const struct regmap_range axp20x_volatile_ranges[] = { |
68 | regmap_reg_range(AXP20X_PWR_INPUT_STATUS, AXP20X_USB_OTG_STATUS), | ||
69 | regmap_reg_range(AXP20X_CHRG_CTRL1, AXP20X_CHRG_CTRL2), | ||
45 | regmap_reg_range(AXP20X_IRQ1_EN, AXP20X_IRQ5_STATE), | 70 | regmap_reg_range(AXP20X_IRQ1_EN, AXP20X_IRQ5_STATE), |
71 | regmap_reg_range(AXP20X_ACIN_V_ADC_H, AXP20X_IPSOUT_V_HIGH_L), | ||
72 | regmap_reg_range(AXP20X_GPIO20_SS, AXP20X_GPIO3_CTRL), | ||
73 | regmap_reg_range(AXP20X_FG_RES, AXP20X_RDC_L), | ||
46 | }; | 74 | }; |
47 | 75 | ||
48 | static const struct regmap_access_table axp20x_writeable_table = { | 76 | static const struct regmap_access_table axp20x_writeable_table = { |
@@ -93,6 +121,11 @@ static const struct regmap_access_table axp288_volatile_table = { | |||
93 | .n_yes_ranges = ARRAY_SIZE(axp288_volatile_ranges), | 121 | .n_yes_ranges = ARRAY_SIZE(axp288_volatile_ranges), |
94 | }; | 122 | }; |
95 | 123 | ||
124 | static struct resource axp152_pek_resources[] = { | ||
125 | DEFINE_RES_IRQ_NAMED(AXP152_IRQ_PEK_RIS_EDGE, "PEK_DBR"), | ||
126 | DEFINE_RES_IRQ_NAMED(AXP152_IRQ_PEK_FAL_EDGE, "PEK_DBF"), | ||
127 | }; | ||
128 | |||
96 | static struct resource axp20x_pek_resources[] = { | 129 | static struct resource axp20x_pek_resources[] = { |
97 | { | 130 | { |
98 | .name = "PEK_DBR", | 131 | .name = "PEK_DBR", |
@@ -107,6 +140,13 @@ static struct resource axp20x_pek_resources[] = { | |||
107 | }, | 140 | }, |
108 | }; | 141 | }; |
109 | 142 | ||
143 | static struct resource axp20x_usb_power_supply_resources[] = { | ||
144 | DEFINE_RES_IRQ_NAMED(AXP20X_IRQ_VBUS_PLUGIN, "VBUS_PLUGIN"), | ||
145 | DEFINE_RES_IRQ_NAMED(AXP20X_IRQ_VBUS_REMOVAL, "VBUS_REMOVAL"), | ||
146 | DEFINE_RES_IRQ_NAMED(AXP20X_IRQ_VBUS_VALID, "VBUS_VALID"), | ||
147 | DEFINE_RES_IRQ_NAMED(AXP20X_IRQ_VBUS_NOT_VALID, "VBUS_NOT_VALID"), | ||
148 | }; | ||
149 | |||
110 | static struct resource axp22x_pek_resources[] = { | 150 | static struct resource axp22x_pek_resources[] = { |
111 | { | 151 | { |
112 | .name = "PEK_DBR", | 152 | .name = "PEK_DBR", |
@@ -154,12 +194,21 @@ static struct resource axp288_fuel_gauge_resources[] = { | |||
154 | }, | 194 | }, |
155 | }; | 195 | }; |
156 | 196 | ||
197 | static const struct regmap_config axp152_regmap_config = { | ||
198 | .reg_bits = 8, | ||
199 | .val_bits = 8, | ||
200 | .wr_table = &axp152_writeable_table, | ||
201 | .volatile_table = &axp152_volatile_table, | ||
202 | .max_register = AXP152_PWM1_DUTY_CYCLE, | ||
203 | .cache_type = REGCACHE_RBTREE, | ||
204 | }; | ||
205 | |||
157 | static const struct regmap_config axp20x_regmap_config = { | 206 | static const struct regmap_config axp20x_regmap_config = { |
158 | .reg_bits = 8, | 207 | .reg_bits = 8, |
159 | .val_bits = 8, | 208 | .val_bits = 8, |
160 | .wr_table = &axp20x_writeable_table, | 209 | .wr_table = &axp20x_writeable_table, |
161 | .volatile_table = &axp20x_volatile_table, | 210 | .volatile_table = &axp20x_volatile_table, |
162 | .max_register = AXP20X_FG_RES, | 211 | .max_register = AXP20X_OCV(AXP20X_OCV_MAX), |
163 | .cache_type = REGCACHE_RBTREE, | 212 | .cache_type = REGCACHE_RBTREE, |
164 | }; | 213 | }; |
165 | 214 | ||
@@ -184,6 +233,26 @@ static const struct regmap_config axp288_regmap_config = { | |||
184 | #define INIT_REGMAP_IRQ(_variant, _irq, _off, _mask) \ | 233 | #define INIT_REGMAP_IRQ(_variant, _irq, _off, _mask) \ |
185 | [_variant##_IRQ_##_irq] = { .reg_offset = (_off), .mask = BIT(_mask) } | 234 | [_variant##_IRQ_##_irq] = { .reg_offset = (_off), .mask = BIT(_mask) } |
186 | 235 | ||
236 | static const struct regmap_irq axp152_regmap_irqs[] = { | ||
237 | INIT_REGMAP_IRQ(AXP152, LDO0IN_CONNECT, 0, 6), | ||
238 | INIT_REGMAP_IRQ(AXP152, LDO0IN_REMOVAL, 0, 5), | ||
239 | INIT_REGMAP_IRQ(AXP152, ALDO0IN_CONNECT, 0, 3), | ||
240 | INIT_REGMAP_IRQ(AXP152, ALDO0IN_REMOVAL, 0, 2), | ||
241 | INIT_REGMAP_IRQ(AXP152, DCDC1_V_LOW, 1, 5), | ||
242 | INIT_REGMAP_IRQ(AXP152, DCDC2_V_LOW, 1, 4), | ||
243 | INIT_REGMAP_IRQ(AXP152, DCDC3_V_LOW, 1, 3), | ||
244 | INIT_REGMAP_IRQ(AXP152, DCDC4_V_LOW, 1, 2), | ||
245 | INIT_REGMAP_IRQ(AXP152, PEK_SHORT, 1, 1), | ||
246 | INIT_REGMAP_IRQ(AXP152, PEK_LONG, 1, 0), | ||
247 | INIT_REGMAP_IRQ(AXP152, TIMER, 2, 7), | ||
248 | INIT_REGMAP_IRQ(AXP152, PEK_RIS_EDGE, 2, 6), | ||
249 | INIT_REGMAP_IRQ(AXP152, PEK_FAL_EDGE, 2, 5), | ||
250 | INIT_REGMAP_IRQ(AXP152, GPIO3_INPUT, 2, 3), | ||
251 | INIT_REGMAP_IRQ(AXP152, GPIO2_INPUT, 2, 2), | ||
252 | INIT_REGMAP_IRQ(AXP152, GPIO1_INPUT, 2, 1), | ||
253 | INIT_REGMAP_IRQ(AXP152, GPIO0_INPUT, 2, 0), | ||
254 | }; | ||
255 | |||
187 | static const struct regmap_irq axp20x_regmap_irqs[] = { | 256 | static const struct regmap_irq axp20x_regmap_irqs[] = { |
188 | INIT_REGMAP_IRQ(AXP20X, ACIN_OVER_V, 0, 7), | 257 | INIT_REGMAP_IRQ(AXP20X, ACIN_OVER_V, 0, 7), |
189 | INIT_REGMAP_IRQ(AXP20X, ACIN_PLUGIN, 0, 6), | 258 | INIT_REGMAP_IRQ(AXP20X, ACIN_PLUGIN, 0, 6), |
@@ -293,6 +362,7 @@ static const struct regmap_irq axp288_regmap_irqs[] = { | |||
293 | }; | 362 | }; |
294 | 363 | ||
295 | static const struct of_device_id axp20x_of_match[] = { | 364 | static const struct of_device_id axp20x_of_match[] = { |
365 | { .compatible = "x-powers,axp152", .data = (void *) AXP152_ID }, | ||
296 | { .compatible = "x-powers,axp202", .data = (void *) AXP202_ID }, | 366 | { .compatible = "x-powers,axp202", .data = (void *) AXP202_ID }, |
297 | { .compatible = "x-powers,axp209", .data = (void *) AXP209_ID }, | 367 | { .compatible = "x-powers,axp209", .data = (void *) AXP209_ID }, |
298 | { .compatible = "x-powers,axp221", .data = (void *) AXP221_ID }, | 368 | { .compatible = "x-powers,axp221", .data = (void *) AXP221_ID }, |
@@ -317,6 +387,18 @@ static const struct acpi_device_id axp20x_acpi_match[] = { | |||
317 | }; | 387 | }; |
318 | MODULE_DEVICE_TABLE(acpi, axp20x_acpi_match); | 388 | MODULE_DEVICE_TABLE(acpi, axp20x_acpi_match); |
319 | 389 | ||
390 | static const struct regmap_irq_chip axp152_regmap_irq_chip = { | ||
391 | .name = "axp152_irq_chip", | ||
392 | .status_base = AXP152_IRQ1_STATE, | ||
393 | .ack_base = AXP152_IRQ1_STATE, | ||
394 | .mask_base = AXP152_IRQ1_EN, | ||
395 | .mask_invert = true, | ||
396 | .init_ack_masked = true, | ||
397 | .irqs = axp152_regmap_irqs, | ||
398 | .num_irqs = ARRAY_SIZE(axp152_regmap_irqs), | ||
399 | .num_regs = 3, | ||
400 | }; | ||
401 | |||
320 | static const struct regmap_irq_chip axp20x_regmap_irq_chip = { | 402 | static const struct regmap_irq_chip axp20x_regmap_irq_chip = { |
321 | .name = "axp20x_irq_chip", | 403 | .name = "axp20x_irq_chip", |
322 | .status_base = AXP20X_IRQ1_STATE, | 404 | .status_base = AXP20X_IRQ1_STATE, |
@@ -357,11 +439,16 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = { | |||
357 | 439 | ||
358 | static struct mfd_cell axp20x_cells[] = { | 440 | static struct mfd_cell axp20x_cells[] = { |
359 | { | 441 | { |
360 | .name = "axp20x-pek", | 442 | .name = "axp20x-pek", |
361 | .num_resources = ARRAY_SIZE(axp20x_pek_resources), | 443 | .num_resources = ARRAY_SIZE(axp20x_pek_resources), |
362 | .resources = axp20x_pek_resources, | 444 | .resources = axp20x_pek_resources, |
363 | }, { | 445 | }, { |
364 | .name = "axp20x-regulator", | 446 | .name = "axp20x-regulator", |
447 | }, { | ||
448 | .name = "axp20x-usb-power-supply", | ||
449 | .of_compatible = "x-powers,axp202-usb-power-supply", | ||
450 | .num_resources = ARRAY_SIZE(axp20x_usb_power_supply_resources), | ||
451 | .resources = axp20x_usb_power_supply_resources, | ||
365 | }, | 452 | }, |
366 | }; | 453 | }; |
367 | 454 | ||
@@ -375,6 +462,14 @@ static struct mfd_cell axp22x_cells[] = { | |||
375 | }, | 462 | }, |
376 | }; | 463 | }; |
377 | 464 | ||
465 | static struct mfd_cell axp152_cells[] = { | ||
466 | { | ||
467 | .name = "axp20x-pek", | ||
468 | .num_resources = ARRAY_SIZE(axp152_pek_resources), | ||
469 | .resources = axp152_pek_resources, | ||
470 | }, | ||
471 | }; | ||
472 | |||
378 | static struct resource axp288_adc_resources[] = { | 473 | static struct resource axp288_adc_resources[] = { |
379 | { | 474 | { |
380 | .name = "GPADC", | 475 | .name = "GPADC", |
@@ -513,6 +608,12 @@ static int axp20x_match_device(struct axp20x_dev *axp20x, struct device *dev) | |||
513 | } | 608 | } |
514 | 609 | ||
515 | switch (axp20x->variant) { | 610 | switch (axp20x->variant) { |
611 | case AXP152_ID: | ||
612 | axp20x->nr_cells = ARRAY_SIZE(axp152_cells); | ||
613 | axp20x->cells = axp152_cells; | ||
614 | axp20x->regmap_cfg = &axp152_regmap_config; | ||
615 | axp20x->regmap_irq_chip = &axp152_regmap_irq_chip; | ||
616 | break; | ||
516 | case AXP202_ID: | 617 | case AXP202_ID: |
517 | case AXP209_ID: | 618 | case AXP209_ID: |
518 | axp20x->nr_cells = ARRAY_SIZE(axp20x_cells); | 619 | axp20x->nr_cells = ARRAY_SIZE(axp20x_cells); |
@@ -613,7 +714,6 @@ static int axp20x_i2c_remove(struct i2c_client *i2c) | |||
613 | static struct i2c_driver axp20x_i2c_driver = { | 714 | static struct i2c_driver axp20x_i2c_driver = { |
614 | .driver = { | 715 | .driver = { |
615 | .name = "axp20x", | 716 | .name = "axp20x", |
616 | .owner = THIS_MODULE, | ||
617 | .of_match_table = of_match_ptr(axp20x_of_match), | 717 | .of_match_table = of_match_ptr(axp20x_of_match), |
618 | .acpi_match_table = ACPI_PTR(axp20x_acpi_match), | 718 | .acpi_match_table = ACPI_PTR(axp20x_acpi_match), |
619 | }, | 719 | }, |
diff --git a/drivers/mfd/bcm590xx.c b/drivers/mfd/bcm590xx.c index e334de000e8c..da2af5b4f855 100644 --- a/drivers/mfd/bcm590xx.c +++ b/drivers/mfd/bcm590xx.c | |||
@@ -117,7 +117,6 @@ MODULE_DEVICE_TABLE(i2c, bcm590xx_i2c_id); | |||
117 | static struct i2c_driver bcm590xx_i2c_driver = { | 117 | static struct i2c_driver bcm590xx_i2c_driver = { |
118 | .driver = { | 118 | .driver = { |
119 | .name = "bcm590xx", | 119 | .name = "bcm590xx", |
120 | .owner = THIS_MODULE, | ||
121 | .of_match_table = of_match_ptr(bcm590xx_of_match), | 120 | .of_match_table = of_match_ptr(bcm590xx_of_match), |
122 | }, | 121 | }, |
123 | .probe = bcm590xx_i2c_probe, | 122 | .probe = bcm590xx_i2c_probe, |
diff --git a/drivers/mfd/cros_ec_i2c.c b/drivers/mfd/cros_ec_i2c.c index b9a0963ca5c3..d06e4b46db80 100644 --- a/drivers/mfd/cros_ec_i2c.c +++ b/drivers/mfd/cros_ec_i2c.c | |||
@@ -353,7 +353,6 @@ MODULE_DEVICE_TABLE(i2c, cros_ec_i2c_id); | |||
353 | static struct i2c_driver cros_ec_driver = { | 353 | static struct i2c_driver cros_ec_driver = { |
354 | .driver = { | 354 | .driver = { |
355 | .name = "cros-ec-i2c", | 355 | .name = "cros-ec-i2c", |
356 | .owner = THIS_MODULE, | ||
357 | .pm = &cros_ec_i2c_pm_ops, | 356 | .pm = &cros_ec_i2c_pm_ops, |
358 | }, | 357 | }, |
359 | .probe = cros_ec_i2c_probe, | 358 | .probe = cros_ec_i2c_probe, |
diff --git a/drivers/mfd/cros_ec_spi.c b/drivers/mfd/cros_ec_spi.c index 16f228dc243f..30a296b4e748 100644 --- a/drivers/mfd/cros_ec_spi.c +++ b/drivers/mfd/cros_ec_spi.c | |||
@@ -701,6 +701,12 @@ static int cros_ec_spi_resume(struct device *dev) | |||
701 | static SIMPLE_DEV_PM_OPS(cros_ec_spi_pm_ops, cros_ec_spi_suspend, | 701 | static SIMPLE_DEV_PM_OPS(cros_ec_spi_pm_ops, cros_ec_spi_suspend, |
702 | cros_ec_spi_resume); | 702 | cros_ec_spi_resume); |
703 | 703 | ||
704 | static const struct of_device_id cros_ec_spi_of_match[] = { | ||
705 | { .compatible = "google,cros-ec-spi", }, | ||
706 | { /* sentinel */ }, | ||
707 | }; | ||
708 | MODULE_DEVICE_TABLE(of, cros_ec_spi_of_match); | ||
709 | |||
704 | static const struct spi_device_id cros_ec_spi_id[] = { | 710 | static const struct spi_device_id cros_ec_spi_id[] = { |
705 | { "cros-ec-spi", 0 }, | 711 | { "cros-ec-spi", 0 }, |
706 | { } | 712 | { } |
@@ -710,6 +716,7 @@ MODULE_DEVICE_TABLE(spi, cros_ec_spi_id); | |||
710 | static struct spi_driver cros_ec_driver_spi = { | 716 | static struct spi_driver cros_ec_driver_spi = { |
711 | .driver = { | 717 | .driver = { |
712 | .name = "cros-ec-spi", | 718 | .name = "cros-ec-spi", |
719 | .of_match_table = of_match_ptr(cros_ec_spi_of_match), | ||
713 | .owner = THIS_MODULE, | 720 | .owner = THIS_MODULE, |
714 | .pm = &cros_ec_spi_pm_ops, | 721 | .pm = &cros_ec_spi_pm_ops, |
715 | }, | 722 | }, |
diff --git a/drivers/mfd/da903x.c b/drivers/mfd/da903x.c index e0a2e0ee603b..ef7fe2ae2fa4 100644 --- a/drivers/mfd/da903x.c +++ b/drivers/mfd/da903x.c | |||
@@ -550,7 +550,6 @@ static int da903x_remove(struct i2c_client *client) | |||
550 | static struct i2c_driver da903x_driver = { | 550 | static struct i2c_driver da903x_driver = { |
551 | .driver = { | 551 | .driver = { |
552 | .name = "da903x", | 552 | .name = "da903x", |
553 | .owner = THIS_MODULE, | ||
554 | }, | 553 | }, |
555 | .probe = da903x_probe, | 554 | .probe = da903x_probe, |
556 | .remove = da903x_remove, | 555 | .remove = da903x_remove, |
diff --git a/drivers/mfd/da9052-i2c.c b/drivers/mfd/da9052-i2c.c index ec39287a245b..02887001e800 100644 --- a/drivers/mfd/da9052-i2c.c +++ b/drivers/mfd/da9052-i2c.c | |||
@@ -195,7 +195,6 @@ static struct i2c_driver da9052_i2c_driver = { | |||
195 | .id_table = da9052_i2c_id, | 195 | .id_table = da9052_i2c_id, |
196 | .driver = { | 196 | .driver = { |
197 | .name = "da9052", | 197 | .name = "da9052", |
198 | .owner = THIS_MODULE, | ||
199 | #ifdef CONFIG_OF | 198 | #ifdef CONFIG_OF |
200 | .of_match_table = dialog_dt_ids, | 199 | .of_match_table = dialog_dt_ids, |
201 | #endif | 200 | #endif |
diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c index d4d4c165eb95..b53e100f577c 100644 --- a/drivers/mfd/da9055-i2c.c +++ b/drivers/mfd/da9055-i2c.c | |||
@@ -79,7 +79,6 @@ static struct i2c_driver da9055_i2c_driver = { | |||
79 | .id_table = da9055_i2c_id, | 79 | .id_table = da9055_i2c_id, |
80 | .driver = { | 80 | .driver = { |
81 | .name = "da9055-pmic", | 81 | .name = "da9055-pmic", |
82 | .owner = THIS_MODULE, | ||
83 | .of_match_table = of_match_ptr(da9055_of_match), | 82 | .of_match_table = of_match_ptr(da9055_of_match), |
84 | }, | 83 | }, |
85 | }; | 84 | }; |
diff --git a/drivers/mfd/da9062-core.c b/drivers/mfd/da9062-core.c new file mode 100644 index 000000000000..f80d9471f2e7 --- /dev/null +++ b/drivers/mfd/da9062-core.c | |||
@@ -0,0 +1,533 @@ | |||
1 | /* | ||
2 | * Core, IRQ and I2C device driver for DA9062 PMIC | ||
3 | * Copyright (C) 2015 Dialog Semiconductor Ltd. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License | ||
7 | * as published by the Free Software Foundation; either version 2 | ||
8 | * of the License, or (at your option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | */ | ||
15 | |||
16 | #include <linux/kernel.h> | ||
17 | #include <linux/module.h> | ||
18 | #include <linux/init.h> | ||
19 | #include <linux/device.h> | ||
20 | #include <linux/interrupt.h> | ||
21 | #include <linux/regmap.h> | ||
22 | #include <linux/irq.h> | ||
23 | #include <linux/mfd/core.h> | ||
24 | #include <linux/i2c.h> | ||
25 | #include <linux/mfd/da9062/core.h> | ||
26 | #include <linux/mfd/da9062/registers.h> | ||
27 | #include <linux/regulator/of_regulator.h> | ||
28 | |||
29 | #define DA9062_REG_EVENT_A_OFFSET 0 | ||
30 | #define DA9062_REG_EVENT_B_OFFSET 1 | ||
31 | #define DA9062_REG_EVENT_C_OFFSET 2 | ||
32 | |||
33 | static struct regmap_irq da9062_irqs[] = { | ||
34 | /* EVENT A */ | ||
35 | [DA9062_IRQ_ONKEY] = { | ||
36 | .reg_offset = DA9062_REG_EVENT_A_OFFSET, | ||
37 | .mask = DA9062AA_M_NONKEY_MASK, | ||
38 | }, | ||
39 | [DA9062_IRQ_ALARM] = { | ||
40 | .reg_offset = DA9062_REG_EVENT_A_OFFSET, | ||
41 | .mask = DA9062AA_M_ALARM_MASK, | ||
42 | }, | ||
43 | [DA9062_IRQ_TICK] = { | ||
44 | .reg_offset = DA9062_REG_EVENT_A_OFFSET, | ||
45 | .mask = DA9062AA_M_TICK_MASK, | ||
46 | }, | ||
47 | [DA9062_IRQ_WDG_WARN] = { | ||
48 | .reg_offset = DA9062_REG_EVENT_A_OFFSET, | ||
49 | .mask = DA9062AA_M_WDG_WARN_MASK, | ||
50 | }, | ||
51 | [DA9062_IRQ_SEQ_RDY] = { | ||
52 | .reg_offset = DA9062_REG_EVENT_A_OFFSET, | ||
53 | .mask = DA9062AA_M_SEQ_RDY_MASK, | ||
54 | }, | ||
55 | /* EVENT B */ | ||
56 | [DA9062_IRQ_TEMP] = { | ||
57 | .reg_offset = DA9062_REG_EVENT_B_OFFSET, | ||
58 | .mask = DA9062AA_M_TEMP_MASK, | ||
59 | }, | ||
60 | [DA9062_IRQ_LDO_LIM] = { | ||
61 | .reg_offset = DA9062_REG_EVENT_B_OFFSET, | ||
62 | .mask = DA9062AA_M_LDO_LIM_MASK, | ||
63 | }, | ||
64 | [DA9062_IRQ_DVC_RDY] = { | ||
65 | .reg_offset = DA9062_REG_EVENT_B_OFFSET, | ||
66 | .mask = DA9062AA_M_DVC_RDY_MASK, | ||
67 | }, | ||
68 | [DA9062_IRQ_VDD_WARN] = { | ||
69 | .reg_offset = DA9062_REG_EVENT_B_OFFSET, | ||
70 | .mask = DA9062AA_M_VDD_WARN_MASK, | ||
71 | }, | ||
72 | /* EVENT C */ | ||
73 | [DA9062_IRQ_GPI0] = { | ||
74 | .reg_offset = DA9062_REG_EVENT_C_OFFSET, | ||
75 | .mask = DA9062AA_M_GPI0_MASK, | ||
76 | }, | ||
77 | [DA9062_IRQ_GPI1] = { | ||
78 | .reg_offset = DA9062_REG_EVENT_C_OFFSET, | ||
79 | .mask = DA9062AA_M_GPI1_MASK, | ||
80 | }, | ||
81 | [DA9062_IRQ_GPI2] = { | ||
82 | .reg_offset = DA9062_REG_EVENT_C_OFFSET, | ||
83 | .mask = DA9062AA_M_GPI2_MASK, | ||
84 | }, | ||
85 | [DA9062_IRQ_GPI3] = { | ||
86 | .reg_offset = DA9062_REG_EVENT_C_OFFSET, | ||
87 | .mask = DA9062AA_M_GPI3_MASK, | ||
88 | }, | ||
89 | [DA9062_IRQ_GPI4] = { | ||
90 | .reg_offset = DA9062_REG_EVENT_C_OFFSET, | ||
91 | .mask = DA9062AA_M_GPI4_MASK, | ||
92 | }, | ||
93 | }; | ||
94 | |||
95 | static struct regmap_irq_chip da9062_irq_chip = { | ||
96 | .name = "da9062-irq", | ||
97 | .irqs = da9062_irqs, | ||
98 | .num_irqs = DA9062_NUM_IRQ, | ||
99 | .num_regs = 3, | ||
100 | .status_base = DA9062AA_EVENT_A, | ||
101 | .mask_base = DA9062AA_IRQ_MASK_A, | ||
102 | .ack_base = DA9062AA_EVENT_A, | ||
103 | }; | ||
104 | |||
105 | static struct resource da9062_core_resources[] = { | ||
106 | DEFINE_RES_NAMED(DA9062_IRQ_VDD_WARN, 1, "VDD_WARN", IORESOURCE_IRQ), | ||
107 | }; | ||
108 | |||
109 | static struct resource da9062_regulators_resources[] = { | ||
110 | DEFINE_RES_NAMED(DA9062_IRQ_LDO_LIM, 1, "LDO_LIM", IORESOURCE_IRQ), | ||
111 | }; | ||
112 | |||
113 | static struct resource da9062_thermal_resources[] = { | ||
114 | DEFINE_RES_NAMED(DA9062_IRQ_TEMP, 1, "THERMAL", IORESOURCE_IRQ), | ||
115 | }; | ||
116 | |||
117 | static struct resource da9062_wdt_resources[] = { | ||
118 | DEFINE_RES_NAMED(DA9062_IRQ_WDG_WARN, 1, "WD_WARN", IORESOURCE_IRQ), | ||
119 | }; | ||
120 | |||
121 | static struct resource da9062_rtc_resources[] = { | ||
122 | DEFINE_RES_NAMED(DA9062_IRQ_ALARM, 1, "ALARM", IORESOURCE_IRQ), | ||
123 | DEFINE_RES_NAMED(DA9062_IRQ_TICK, 1, "TICK", IORESOURCE_IRQ), | ||
124 | }; | ||
125 | |||
126 | static struct resource da9062_onkey_resources[] = { | ||
127 | DEFINE_RES_NAMED(DA9062_IRQ_ONKEY, 1, "ONKEY", IORESOURCE_IRQ), | ||
128 | }; | ||
129 | |||
130 | static const struct mfd_cell da9062_devs[] = { | ||
131 | { | ||
132 | .name = "da9062-core", | ||
133 | .num_resources = ARRAY_SIZE(da9062_core_resources), | ||
134 | .resources = da9062_core_resources, | ||
135 | }, | ||
136 | { | ||
137 | .name = "da9062-regulators", | ||
138 | .num_resources = ARRAY_SIZE(da9062_regulators_resources), | ||
139 | .resources = da9062_regulators_resources, | ||
140 | }, | ||
141 | { | ||
142 | .name = "da9062-watchdog", | ||
143 | .num_resources = ARRAY_SIZE(da9062_wdt_resources), | ||
144 | .resources = da9062_wdt_resources, | ||
145 | .of_compatible = "dlg,da9062-wdt", | ||
146 | }, | ||
147 | { | ||
148 | .name = "da9062-thermal", | ||
149 | .num_resources = ARRAY_SIZE(da9062_thermal_resources), | ||
150 | .resources = da9062_thermal_resources, | ||
151 | .of_compatible = "dlg,da9062-thermal", | ||
152 | }, | ||
153 | { | ||
154 | .name = "da9062-rtc", | ||
155 | .num_resources = ARRAY_SIZE(da9062_rtc_resources), | ||
156 | .resources = da9062_rtc_resources, | ||
157 | .of_compatible = "dlg,da9062-rtc", | ||
158 | }, | ||
159 | { | ||
160 | .name = "da9062-onkey", | ||
161 | .num_resources = ARRAY_SIZE(da9062_onkey_resources), | ||
162 | .resources = da9062_onkey_resources, | ||
163 | .of_compatible = "dlg,da9062-onkey", | ||
164 | }, | ||
165 | }; | ||
166 | |||
167 | static int da9062_clear_fault_log(struct da9062 *chip) | ||
168 | { | ||
169 | int ret; | ||
170 | int fault_log; | ||
171 | |||
172 | ret = regmap_read(chip->regmap, DA9062AA_FAULT_LOG, &fault_log); | ||
173 | if (ret < 0) | ||
174 | return ret; | ||
175 | |||
176 | if (fault_log) { | ||
177 | if (fault_log & DA9062AA_TWD_ERROR_MASK) | ||
178 | dev_dbg(chip->dev, "Fault log entry detected: TWD_ERROR\n"); | ||
179 | if (fault_log & DA9062AA_POR_MASK) | ||
180 | dev_dbg(chip->dev, "Fault log entry detected: POR\n"); | ||
181 | if (fault_log & DA9062AA_VDD_FAULT_MASK) | ||
182 | dev_dbg(chip->dev, "Fault log entry detected: VDD_FAULT\n"); | ||
183 | if (fault_log & DA9062AA_VDD_START_MASK) | ||
184 | dev_dbg(chip->dev, "Fault log entry detected: VDD_START\n"); | ||
185 | if (fault_log & DA9062AA_TEMP_CRIT_MASK) | ||
186 | dev_dbg(chip->dev, "Fault log entry detected: TEMP_CRIT\n"); | ||
187 | if (fault_log & DA9062AA_KEY_RESET_MASK) | ||
188 | dev_dbg(chip->dev, "Fault log entry detected: KEY_RESET\n"); | ||
189 | if (fault_log & DA9062AA_NSHUTDOWN_MASK) | ||
190 | dev_dbg(chip->dev, "Fault log entry detected: NSHUTDOWN\n"); | ||
191 | if (fault_log & DA9062AA_WAIT_SHUT_MASK) | ||
192 | dev_dbg(chip->dev, "Fault log entry detected: WAIT_SHUT\n"); | ||
193 | |||
194 | ret = regmap_write(chip->regmap, DA9062AA_FAULT_LOG, | ||
195 | fault_log); | ||
196 | } | ||
197 | |||
198 | return ret; | ||
199 | } | ||
200 | |||
201 | int get_device_type(struct da9062 *chip) | ||
202 | { | ||
203 | int device_id, variant_id, variant_mrc; | ||
204 | int ret; | ||
205 | |||
206 | ret = regmap_read(chip->regmap, DA9062AA_DEVICE_ID, &device_id); | ||
207 | if (ret < 0) { | ||
208 | dev_err(chip->dev, "Cannot read chip ID.\n"); | ||
209 | return -EIO; | ||
210 | } | ||
211 | if (device_id != DA9062_PMIC_DEVICE_ID) { | ||
212 | dev_err(chip->dev, "Invalid device ID: 0x%02x\n", device_id); | ||
213 | return -ENODEV; | ||
214 | } | ||
215 | |||
216 | ret = regmap_read(chip->regmap, DA9062AA_VARIANT_ID, &variant_id); | ||
217 | if (ret < 0) { | ||
218 | dev_err(chip->dev, "Cannot read chip variant id.\n"); | ||
219 | return -EIO; | ||
220 | } | ||
221 | |||
222 | dev_info(chip->dev, | ||
223 | "Device detected (device-ID: 0x%02X, var-ID: 0x%02X)\n", | ||
224 | device_id, variant_id); | ||
225 | |||
226 | variant_mrc = (variant_id & DA9062AA_MRC_MASK) >> DA9062AA_MRC_SHIFT; | ||
227 | |||
228 | if (variant_mrc < DA9062_PMIC_VARIANT_MRC_AA) { | ||
229 | dev_err(chip->dev, | ||
230 | "Cannot support variant MRC: 0x%02X\n", variant_mrc); | ||
231 | return -ENODEV; | ||
232 | } | ||
233 | |||
234 | return ret; | ||
235 | } | ||
236 | |||
237 | static const struct regmap_range da9062_aa_readable_ranges[] = { | ||
238 | { | ||
239 | .range_min = DA9062AA_PAGE_CON, | ||
240 | .range_max = DA9062AA_STATUS_B, | ||
241 | }, { | ||
242 | .range_min = DA9062AA_STATUS_D, | ||
243 | .range_max = DA9062AA_EVENT_C, | ||
244 | }, { | ||
245 | .range_min = DA9062AA_IRQ_MASK_A, | ||
246 | .range_max = DA9062AA_IRQ_MASK_C, | ||
247 | }, { | ||
248 | .range_min = DA9062AA_CONTROL_A, | ||
249 | .range_max = DA9062AA_GPIO_4, | ||
250 | }, { | ||
251 | .range_min = DA9062AA_GPIO_WKUP_MODE, | ||
252 | .range_max = DA9062AA_BUCK4_CONT, | ||
253 | }, { | ||
254 | .range_min = DA9062AA_BUCK3_CONT, | ||
255 | .range_max = DA9062AA_BUCK3_CONT, | ||
256 | }, { | ||
257 | .range_min = DA9062AA_LDO1_CONT, | ||
258 | .range_max = DA9062AA_LDO4_CONT, | ||
259 | }, { | ||
260 | .range_min = DA9062AA_DVC_1, | ||
261 | .range_max = DA9062AA_DVC_1, | ||
262 | }, { | ||
263 | .range_min = DA9062AA_COUNT_S, | ||
264 | .range_max = DA9062AA_SECOND_D, | ||
265 | }, { | ||
266 | .range_min = DA9062AA_SEQ, | ||
267 | .range_max = DA9062AA_ID_4_3, | ||
268 | }, { | ||
269 | .range_min = DA9062AA_ID_12_11, | ||
270 | .range_max = DA9062AA_ID_16_15, | ||
271 | }, { | ||
272 | .range_min = DA9062AA_ID_22_21, | ||
273 | .range_max = DA9062AA_ID_32_31, | ||
274 | }, { | ||
275 | .range_min = DA9062AA_SEQ_A, | ||
276 | .range_max = DA9062AA_BUCK3_CFG, | ||
277 | }, { | ||
278 | .range_min = DA9062AA_VBUCK2_A, | ||
279 | .range_max = DA9062AA_VBUCK4_A, | ||
280 | }, { | ||
281 | .range_min = DA9062AA_VBUCK3_A, | ||
282 | .range_max = DA9062AA_VBUCK3_A, | ||
283 | }, { | ||
284 | .range_min = DA9062AA_VLDO1_A, | ||
285 | .range_max = DA9062AA_VLDO4_A, | ||
286 | }, { | ||
287 | .range_min = DA9062AA_VBUCK2_B, | ||
288 | .range_max = DA9062AA_VBUCK4_B, | ||
289 | }, { | ||
290 | .range_min = DA9062AA_VBUCK3_B, | ||
291 | .range_max = DA9062AA_VBUCK3_B, | ||
292 | }, { | ||
293 | .range_min = DA9062AA_VLDO1_B, | ||
294 | .range_max = DA9062AA_VLDO4_B, | ||
295 | }, { | ||
296 | .range_min = DA9062AA_BBAT_CONT, | ||
297 | .range_max = DA9062AA_BBAT_CONT, | ||
298 | }, { | ||
299 | .range_min = DA9062AA_INTERFACE, | ||
300 | .range_max = DA9062AA_CONFIG_E, | ||
301 | }, { | ||
302 | .range_min = DA9062AA_CONFIG_G, | ||
303 | .range_max = DA9062AA_CONFIG_K, | ||
304 | }, { | ||
305 | .range_min = DA9062AA_CONFIG_M, | ||
306 | .range_max = DA9062AA_CONFIG_M, | ||
307 | }, { | ||
308 | .range_min = DA9062AA_TRIM_CLDR, | ||
309 | .range_max = DA9062AA_GP_ID_19, | ||
310 | }, { | ||
311 | .range_min = DA9062AA_DEVICE_ID, | ||
312 | .range_max = DA9062AA_CONFIG_ID, | ||
313 | }, | ||
314 | }; | ||
315 | |||
316 | static const struct regmap_range da9062_aa_writeable_ranges[] = { | ||
317 | { | ||
318 | .range_min = DA9062AA_PAGE_CON, | ||
319 | .range_max = DA9062AA_PAGE_CON, | ||
320 | }, { | ||
321 | .range_min = DA9062AA_FAULT_LOG, | ||
322 | .range_max = DA9062AA_EVENT_C, | ||
323 | }, { | ||
324 | .range_min = DA9062AA_IRQ_MASK_A, | ||
325 | .range_max = DA9062AA_IRQ_MASK_C, | ||
326 | }, { | ||
327 | .range_min = DA9062AA_CONTROL_A, | ||
328 | .range_max = DA9062AA_GPIO_4, | ||
329 | }, { | ||
330 | .range_min = DA9062AA_GPIO_WKUP_MODE, | ||
331 | .range_max = DA9062AA_BUCK4_CONT, | ||
332 | }, { | ||
333 | .range_min = DA9062AA_BUCK3_CONT, | ||
334 | .range_max = DA9062AA_BUCK3_CONT, | ||
335 | }, { | ||
336 | .range_min = DA9062AA_LDO1_CONT, | ||
337 | .range_max = DA9062AA_LDO4_CONT, | ||
338 | }, { | ||
339 | .range_min = DA9062AA_DVC_1, | ||
340 | .range_max = DA9062AA_DVC_1, | ||
341 | }, { | ||
342 | .range_min = DA9062AA_COUNT_S, | ||
343 | .range_max = DA9062AA_ALARM_Y, | ||
344 | }, { | ||
345 | .range_min = DA9062AA_SEQ, | ||
346 | .range_max = DA9062AA_ID_4_3, | ||
347 | }, { | ||
348 | .range_min = DA9062AA_ID_12_11, | ||
349 | .range_max = DA9062AA_ID_16_15, | ||
350 | }, { | ||
351 | .range_min = DA9062AA_ID_22_21, | ||
352 | .range_max = DA9062AA_ID_32_31, | ||
353 | }, { | ||
354 | .range_min = DA9062AA_SEQ_A, | ||
355 | .range_max = DA9062AA_BUCK3_CFG, | ||
356 | }, { | ||
357 | .range_min = DA9062AA_VBUCK2_A, | ||
358 | .range_max = DA9062AA_VBUCK4_A, | ||
359 | }, { | ||
360 | .range_min = DA9062AA_VBUCK3_A, | ||
361 | .range_max = DA9062AA_VBUCK3_A, | ||
362 | }, { | ||
363 | .range_min = DA9062AA_VLDO1_A, | ||
364 | .range_max = DA9062AA_VLDO4_A, | ||
365 | }, { | ||
366 | .range_min = DA9062AA_VBUCK2_B, | ||
367 | .range_max = DA9062AA_VBUCK4_B, | ||
368 | }, { | ||
369 | .range_min = DA9062AA_VBUCK3_B, | ||
370 | .range_max = DA9062AA_VBUCK3_B, | ||
371 | }, { | ||
372 | .range_min = DA9062AA_VLDO1_B, | ||
373 | .range_max = DA9062AA_VLDO4_B, | ||
374 | }, { | ||
375 | .range_min = DA9062AA_BBAT_CONT, | ||
376 | .range_max = DA9062AA_BBAT_CONT, | ||
377 | }, { | ||
378 | .range_min = DA9062AA_GP_ID_0, | ||
379 | .range_max = DA9062AA_GP_ID_19, | ||
380 | }, | ||
381 | }; | ||
382 | |||
383 | static const struct regmap_range da9062_aa_volatile_ranges[] = { | ||
384 | { | ||
385 | .range_min = DA9062AA_PAGE_CON, | ||
386 | .range_max = DA9062AA_STATUS_B, | ||
387 | }, { | ||
388 | .range_min = DA9062AA_STATUS_D, | ||
389 | .range_max = DA9062AA_EVENT_C, | ||
390 | }, { | ||
391 | .range_min = DA9062AA_CONTROL_F, | ||
392 | .range_max = DA9062AA_CONTROL_F, | ||
393 | }, { | ||
394 | .range_min = DA9062AA_COUNT_S, | ||
395 | .range_max = DA9062AA_SECOND_D, | ||
396 | }, | ||
397 | }; | ||
398 | |||
399 | static const struct regmap_access_table da9062_aa_readable_table = { | ||
400 | .yes_ranges = da9062_aa_readable_ranges, | ||
401 | .n_yes_ranges = ARRAY_SIZE(da9062_aa_readable_ranges), | ||
402 | }; | ||
403 | |||
404 | static const struct regmap_access_table da9062_aa_writeable_table = { | ||
405 | .yes_ranges = da9062_aa_writeable_ranges, | ||
406 | .n_yes_ranges = ARRAY_SIZE(da9062_aa_writeable_ranges), | ||
407 | }; | ||
408 | |||
409 | static const struct regmap_access_table da9062_aa_volatile_table = { | ||
410 | .yes_ranges = da9062_aa_volatile_ranges, | ||
411 | .n_yes_ranges = ARRAY_SIZE(da9062_aa_volatile_ranges), | ||
412 | }; | ||
413 | |||
414 | static const struct regmap_range_cfg da9062_range_cfg[] = { | ||
415 | { | ||
416 | .range_min = DA9062AA_PAGE_CON, | ||
417 | .range_max = DA9062AA_CONFIG_ID, | ||
418 | .selector_reg = DA9062AA_PAGE_CON, | ||
419 | .selector_mask = 1 << DA9062_I2C_PAGE_SEL_SHIFT, | ||
420 | .selector_shift = DA9062_I2C_PAGE_SEL_SHIFT, | ||
421 | .window_start = 0, | ||
422 | .window_len = 256, | ||
423 | } | ||
424 | }; | ||
425 | |||
426 | static struct regmap_config da9062_regmap_config = { | ||
427 | .reg_bits = 8, | ||
428 | .val_bits = 8, | ||
429 | .ranges = da9062_range_cfg, | ||
430 | .num_ranges = ARRAY_SIZE(da9062_range_cfg), | ||
431 | .max_register = DA9062AA_CONFIG_ID, | ||
432 | .cache_type = REGCACHE_RBTREE, | ||
433 | .rd_table = &da9062_aa_readable_table, | ||
434 | .wr_table = &da9062_aa_writeable_table, | ||
435 | .volatile_table = &da9062_aa_volatile_table, | ||
436 | }; | ||
437 | |||
438 | static int da9062_i2c_probe(struct i2c_client *i2c, | ||
439 | const struct i2c_device_id *id) | ||
440 | { | ||
441 | struct da9062 *chip; | ||
442 | unsigned int irq_base; | ||
443 | int ret; | ||
444 | |||
445 | chip = devm_kzalloc(&i2c->dev, sizeof(*chip), GFP_KERNEL); | ||
446 | if (!chip) | ||
447 | return -ENOMEM; | ||
448 | |||
449 | i2c_set_clientdata(i2c, chip); | ||
450 | chip->dev = &i2c->dev; | ||
451 | |||
452 | if (!i2c->irq) { | ||
453 | dev_err(chip->dev, "No IRQ configured\n"); | ||
454 | return -EINVAL; | ||
455 | } | ||
456 | |||
457 | chip->regmap = devm_regmap_init_i2c(i2c, &da9062_regmap_config); | ||
458 | if (IS_ERR(chip->regmap)) { | ||
459 | ret = PTR_ERR(chip->regmap); | ||
460 | dev_err(chip->dev, "Failed to allocate register map: %d\n", | ||
461 | ret); | ||
462 | return ret; | ||
463 | } | ||
464 | |||
465 | ret = da9062_clear_fault_log(chip); | ||
466 | if (ret < 0) | ||
467 | dev_warn(chip->dev, "Cannot clear fault log\n"); | ||
468 | |||
469 | ret = get_device_type(chip); | ||
470 | if (ret) | ||
471 | return ret; | ||
472 | |||
473 | ret = regmap_add_irq_chip(chip->regmap, i2c->irq, | ||
474 | IRQF_TRIGGER_LOW | IRQF_ONESHOT | IRQF_SHARED, | ||
475 | -1, &da9062_irq_chip, | ||
476 | &chip->regmap_irq); | ||
477 | if (ret) { | ||
478 | dev_err(chip->dev, "Failed to request IRQ %d: %d\n", | ||
479 | i2c->irq, ret); | ||
480 | return ret; | ||
481 | } | ||
482 | |||
483 | irq_base = regmap_irq_chip_get_base(chip->regmap_irq); | ||
484 | |||
485 | ret = mfd_add_devices(chip->dev, PLATFORM_DEVID_NONE, da9062_devs, | ||
486 | ARRAY_SIZE(da9062_devs), NULL, irq_base, | ||
487 | NULL); | ||
488 | if (ret) { | ||
489 | dev_err(chip->dev, "Cannot register child devices\n"); | ||
490 | regmap_del_irq_chip(i2c->irq, chip->regmap_irq); | ||
491 | return ret; | ||
492 | } | ||
493 | |||
494 | return ret; | ||
495 | } | ||
496 | |||
497 | static int da9062_i2c_remove(struct i2c_client *i2c) | ||
498 | { | ||
499 | struct da9062 *chip = i2c_get_clientdata(i2c); | ||
500 | |||
501 | mfd_remove_devices(chip->dev); | ||
502 | regmap_del_irq_chip(i2c->irq, chip->regmap_irq); | ||
503 | |||
504 | return 0; | ||
505 | } | ||
506 | |||
507 | static const struct i2c_device_id da9062_i2c_id[] = { | ||
508 | { "da9062", 0 }, | ||
509 | { }, | ||
510 | }; | ||
511 | MODULE_DEVICE_TABLE(i2c, da9062_i2c_id); | ||
512 | |||
513 | static const struct of_device_id da9062_dt_ids[] = { | ||
514 | { .compatible = "dlg,da9062", }, | ||
515 | { } | ||
516 | }; | ||
517 | MODULE_DEVICE_TABLE(of, da9062_dt_ids); | ||
518 | |||
519 | static struct i2c_driver da9062_i2c_driver = { | ||
520 | .driver = { | ||
521 | .name = "da9062", | ||
522 | .of_match_table = of_match_ptr(da9062_dt_ids), | ||
523 | }, | ||
524 | .probe = da9062_i2c_probe, | ||
525 | .remove = da9062_i2c_remove, | ||
526 | .id_table = da9062_i2c_id, | ||
527 | }; | ||
528 | |||
529 | module_i2c_driver(da9062_i2c_driver); | ||
530 | |||
531 | MODULE_DESCRIPTION("Core device driver for Dialog DA9062"); | ||
532 | MODULE_AUTHOR("Steve Twiss <stwiss.opensource@diasemi.com>"); | ||
533 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/mfd/da9063-i2c.c b/drivers/mfd/da9063-i2c.c index 6f3a7c0001f9..2d4e3e0f4e94 100644 --- a/drivers/mfd/da9063-i2c.c +++ b/drivers/mfd/da9063-i2c.c | |||
@@ -264,7 +264,6 @@ MODULE_DEVICE_TABLE(i2c, da9063_i2c_id); | |||
264 | static struct i2c_driver da9063_i2c_driver = { | 264 | static struct i2c_driver da9063_i2c_driver = { |
265 | .driver = { | 265 | .driver = { |
266 | .name = "da9063", | 266 | .name = "da9063", |
267 | .owner = THIS_MODULE, | ||
268 | .of_match_table = of_match_ptr(da9063_dt_ids), | 267 | .of_match_table = of_match_ptr(da9063_dt_ids), |
269 | }, | 268 | }, |
270 | .probe = da9063_i2c_probe, | 269 | .probe = da9063_i2c_probe, |
diff --git a/drivers/mfd/da9063-irq.c b/drivers/mfd/da9063-irq.c index eaf1ec9208b2..26302634633c 100644 --- a/drivers/mfd/da9063-irq.c +++ b/drivers/mfd/da9063-irq.c | |||
@@ -77,6 +77,10 @@ static const struct regmap_irq da9063_irqs[] = { | |||
77 | .reg_offset = DA9063_REG_EVENT_B_OFFSET, | 77 | .reg_offset = DA9063_REG_EVENT_B_OFFSET, |
78 | .mask = DA9063_M_UVOV, | 78 | .mask = DA9063_M_UVOV, |
79 | }, | 79 | }, |
80 | [DA9063_IRQ_DVC_RDY] = { | ||
81 | .reg_offset = DA9063_REG_EVENT_B_OFFSET, | ||
82 | .mask = DA9063_M_DVC_RDY, | ||
83 | }, | ||
80 | [DA9063_IRQ_VDD_MON] = { | 84 | [DA9063_IRQ_VDD_MON] = { |
81 | .reg_offset = DA9063_REG_EVENT_B_OFFSET, | 85 | .reg_offset = DA9063_REG_EVENT_B_OFFSET, |
82 | .mask = DA9063_M_VDD_MON, | 86 | .mask = DA9063_M_VDD_MON, |
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c index 8b14740f9fca..e6e4bacb09ee 100644 --- a/drivers/mfd/db8500-prcmu.c +++ b/drivers/mfd/db8500-prcmu.c | |||
@@ -2654,7 +2654,6 @@ static int db8500_irq_map(struct irq_domain *d, unsigned int virq, | |||
2654 | { | 2654 | { |
2655 | irq_set_chip_and_handler(virq, &prcmu_irq_chip, | 2655 | irq_set_chip_and_handler(virq, &prcmu_irq_chip, |
2656 | handle_simple_irq); | 2656 | handle_simple_irq); |
2657 | set_irq_flags(virq, IRQF_VALID); | ||
2658 | 2657 | ||
2659 | return 0; | 2658 | return 0; |
2660 | } | 2659 | } |
diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c index 5991faddd3c6..a76eb6ef47a0 100644 --- a/drivers/mfd/ezx-pcap.c +++ b/drivers/mfd/ezx-pcap.c | |||
@@ -207,7 +207,7 @@ static void pcap_isr_work(struct work_struct *work) | |||
207 | 207 | ||
208 | static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc) | 208 | static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc) |
209 | { | 209 | { |
210 | struct pcap_chip *pcap = irq_get_handler_data(irq); | 210 | struct pcap_chip *pcap = irq_desc_get_handler_data(desc); |
211 | 211 | ||
212 | desc->irq_data.chip->irq_ack(&desc->irq_data); | 212 | desc->irq_data.chip->irq_ack(&desc->irq_data); |
213 | queue_work(pcap->workqueue, &pcap->isr_work); | 213 | queue_work(pcap->workqueue, &pcap->isr_work); |
@@ -463,11 +463,7 @@ static int ezx_pcap_probe(struct spi_device *spi) | |||
463 | for (i = pcap->irq_base; i < (pcap->irq_base + PCAP_NIRQS); i++) { | 463 | for (i = pcap->irq_base; i < (pcap->irq_base + PCAP_NIRQS); i++) { |
464 | irq_set_chip_and_handler(i, &pcap_irq_chip, handle_simple_irq); | 464 | irq_set_chip_and_handler(i, &pcap_irq_chip, handle_simple_irq); |
465 | irq_set_chip_data(i, pcap); | 465 | irq_set_chip_data(i, pcap); |
466 | #ifdef CONFIG_ARM | 466 | irq_clear_status_flags(i, IRQ_NOREQUEST | IRQ_NOPROBE); |
467 | set_irq_flags(i, IRQF_VALID); | ||
468 | #else | ||
469 | irq_set_noprobe(i); | ||
470 | #endif | ||
471 | } | 467 | } |
472 | 468 | ||
473 | /* mask/ack all PCAP interrupts */ | 469 | /* mask/ack all PCAP interrupts */ |
@@ -476,8 +472,7 @@ static int ezx_pcap_probe(struct spi_device *spi) | |||
476 | pcap->msr = PCAP_MASK_ALL_INTERRUPT; | 472 | pcap->msr = PCAP_MASK_ALL_INTERRUPT; |
477 | 473 | ||
478 | irq_set_irq_type(spi->irq, IRQ_TYPE_EDGE_RISING); | 474 | irq_set_irq_type(spi->irq, IRQ_TYPE_EDGE_RISING); |
479 | irq_set_handler_data(spi->irq, pcap); | 475 | irq_set_chained_handler_and_data(spi->irq, pcap_irq_handler, pcap); |
480 | irq_set_chained_handler(spi->irq, pcap_irq_handler); | ||
481 | irq_set_irq_wake(spi->irq, 1); | 476 | irq_set_irq_wake(spi->irq, 1); |
482 | 477 | ||
483 | /* ADC */ | 478 | /* ADC */ |
diff --git a/drivers/mfd/htc-egpio.c b/drivers/mfd/htc-egpio.c index 49f39feca784..9131cdcdc64a 100644 --- a/drivers/mfd/htc-egpio.c +++ b/drivers/mfd/htc-egpio.c | |||
@@ -350,11 +350,11 @@ static int __init egpio_probe(struct platform_device *pdev) | |||
350 | irq_set_chip_and_handler(irq, &egpio_muxed_chip, | 350 | irq_set_chip_and_handler(irq, &egpio_muxed_chip, |
351 | handle_simple_irq); | 351 | handle_simple_irq); |
352 | irq_set_chip_data(irq, ei); | 352 | irq_set_chip_data(irq, ei); |
353 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | 353 | irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
354 | } | 354 | } |
355 | irq_set_irq_type(ei->chained_irq, IRQ_TYPE_EDGE_RISING); | 355 | irq_set_irq_type(ei->chained_irq, IRQ_TYPE_EDGE_RISING); |
356 | irq_set_handler_data(ei->chained_irq, ei); | 356 | irq_set_chained_handler_and_data(ei->chained_irq, |
357 | irq_set_chained_handler(ei->chained_irq, egpio_handler); | 357 | egpio_handler, ei); |
358 | ack_irqs(ei); | 358 | ack_irqs(ei); |
359 | 359 | ||
360 | device_init_wakeup(&pdev->dev, 1); | 360 | device_init_wakeup(&pdev->dev, 1); |
@@ -376,7 +376,7 @@ static int __exit egpio_remove(struct platform_device *pdev) | |||
376 | irq_end = ei->irq_start + ei->nirqs; | 376 | irq_end = ei->irq_start + ei->nirqs; |
377 | for (irq = ei->irq_start; irq < irq_end; irq++) { | 377 | for (irq = ei->irq_start; irq < irq_end; irq++) { |
378 | irq_set_chip_and_handler(irq, NULL, NULL); | 378 | irq_set_chip_and_handler(irq, NULL, NULL); |
379 | set_irq_flags(irq, 0); | 379 | irq_set_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
380 | } | 380 | } |
381 | irq_set_chained_handler(ei->chained_irq, NULL); | 381 | irq_set_chained_handler(ei->chained_irq, NULL); |
382 | device_init_wakeup(&pdev->dev, 0); | 382 | device_init_wakeup(&pdev->dev, 0); |
diff --git a/drivers/mfd/htc-i2cpld.c b/drivers/mfd/htc-i2cpld.c index b54baad30164..1bd5b042c8b3 100644 --- a/drivers/mfd/htc-i2cpld.c +++ b/drivers/mfd/htc-i2cpld.c | |||
@@ -330,11 +330,7 @@ static int htcpld_setup_chip_irq( | |||
330 | irq_set_chip_and_handler(irq, &htcpld_muxed_chip, | 330 | irq_set_chip_and_handler(irq, &htcpld_muxed_chip, |
331 | handle_simple_irq); | 331 | handle_simple_irq); |
332 | irq_set_chip_data(irq, chip); | 332 | irq_set_chip_data(irq, chip); |
333 | #ifdef CONFIG_ARM | 333 | irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
334 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | ||
335 | #else | ||
336 | irq_set_probe(irq); | ||
337 | #endif | ||
338 | } | 334 | } |
339 | 335 | ||
340 | return ret; | 336 | return ret; |
diff --git a/drivers/mfd/intel_soc_pmic_core.c b/drivers/mfd/intel_soc_pmic_core.c index 7b50b6b208a5..ffbf6f6680b0 100644 --- a/drivers/mfd/intel_soc_pmic_core.c +++ b/drivers/mfd/intel_soc_pmic_core.c | |||
@@ -147,7 +147,7 @@ static const struct i2c_device_id intel_soc_pmic_i2c_id[] = { | |||
147 | MODULE_DEVICE_TABLE(i2c, intel_soc_pmic_i2c_id); | 147 | MODULE_DEVICE_TABLE(i2c, intel_soc_pmic_i2c_id); |
148 | 148 | ||
149 | #if defined(CONFIG_ACPI) | 149 | #if defined(CONFIG_ACPI) |
150 | static struct acpi_device_id intel_soc_pmic_acpi_match[] = { | 150 | static const struct acpi_device_id intel_soc_pmic_acpi_match[] = { |
151 | {"INT33FD", (kernel_ulong_t)&intel_soc_pmic_config_crc}, | 151 | {"INT33FD", (kernel_ulong_t)&intel_soc_pmic_config_crc}, |
152 | { }, | 152 | { }, |
153 | }; | 153 | }; |
@@ -157,7 +157,6 @@ MODULE_DEVICE_TABLE(acpi, intel_soc_pmic_acpi_match); | |||
157 | static struct i2c_driver intel_soc_pmic_i2c_driver = { | 157 | static struct i2c_driver intel_soc_pmic_i2c_driver = { |
158 | .driver = { | 158 | .driver = { |
159 | .name = "intel_soc_pmic_i2c", | 159 | .name = "intel_soc_pmic_i2c", |
160 | .owner = THIS_MODULE, | ||
161 | .pm = &intel_soc_pmic_pm_ops, | 160 | .pm = &intel_soc_pmic_pm_ops, |
162 | .acpi_match_table = ACPI_PTR(intel_soc_pmic_acpi_match), | 161 | .acpi_match_table = ACPI_PTR(intel_soc_pmic_acpi_match), |
163 | }, | 162 | }, |
diff --git a/drivers/mfd/ipaq-micro.c b/drivers/mfd/ipaq-micro.c index 8df3266064e4..a41859c55bda 100644 --- a/drivers/mfd/ipaq-micro.c +++ b/drivers/mfd/ipaq-micro.c | |||
@@ -53,8 +53,8 @@ static void ipaq_micro_trigger_tx(struct ipaq_micro *micro) | |||
53 | tx->buf[bp++] = checksum; | 53 | tx->buf[bp++] = checksum; |
54 | tx->len = bp; | 54 | tx->len = bp; |
55 | tx->index = 0; | 55 | tx->index = 0; |
56 | print_hex_dump(KERN_DEBUG, "data: ", DUMP_PREFIX_OFFSET, 16, 1, | 56 | print_hex_dump_debug("data: ", DUMP_PREFIX_OFFSET, 16, 1, |
57 | tx->buf, tx->len, true); | 57 | tx->buf, tx->len, true); |
58 | 58 | ||
59 | /* Enable interrupt */ | 59 | /* Enable interrupt */ |
60 | val = readl(micro->base + UTCR3); | 60 | val = readl(micro->base + UTCR3); |
@@ -242,7 +242,7 @@ static u16 ipaq_micro_to_u16(u8 *data) | |||
242 | return data[1] << 8 | data[0]; | 242 | return data[1] << 8 | data[0]; |
243 | } | 243 | } |
244 | 244 | ||
245 | static void ipaq_micro_eeprom_dump(struct ipaq_micro *micro) | 245 | static void __init ipaq_micro_eeprom_dump(struct ipaq_micro *micro) |
246 | { | 246 | { |
247 | u8 dump[256]; | 247 | u8 dump[256]; |
248 | char *str; | 248 | char *str; |
@@ -250,7 +250,7 @@ static void ipaq_micro_eeprom_dump(struct ipaq_micro *micro) | |||
250 | ipaq_micro_eeprom_read(micro, 0, 128, dump); | 250 | ipaq_micro_eeprom_read(micro, 0, 128, dump); |
251 | str = ipaq_micro_str(dump, 10); | 251 | str = ipaq_micro_str(dump, 10); |
252 | if (str) { | 252 | if (str) { |
253 | dev_info(micro->dev, "HM version %s\n", str); | 253 | dev_info(micro->dev, "HW version %s\n", str); |
254 | kfree(str); | 254 | kfree(str); |
255 | } | 255 | } |
256 | str = ipaq_micro_str(dump+10, 40); | 256 | str = ipaq_micro_str(dump+10, 40); |
@@ -281,8 +281,8 @@ static void ipaq_micro_eeprom_dump(struct ipaq_micro *micro) | |||
281 | dev_info(micro->dev, "RAM size: %u KiB\n", ipaq_micro_to_u16(dump+92)); | 281 | dev_info(micro->dev, "RAM size: %u KiB\n", ipaq_micro_to_u16(dump+92)); |
282 | dev_info(micro->dev, "screen: %u x %u\n", | 282 | dev_info(micro->dev, "screen: %u x %u\n", |
283 | ipaq_micro_to_u16(dump+94), ipaq_micro_to_u16(dump+96)); | 283 | ipaq_micro_to_u16(dump+94), ipaq_micro_to_u16(dump+96)); |
284 | print_hex_dump(KERN_DEBUG, "eeprom: ", DUMP_PREFIX_OFFSET, 16, 1, | 284 | print_hex_dump_debug("eeprom: ", DUMP_PREFIX_OFFSET, 16, 1, |
285 | dump, 256, true); | 285 | dump, 256, true); |
286 | 286 | ||
287 | } | 287 | } |
288 | 288 | ||
@@ -386,7 +386,7 @@ static int micro_resume(struct device *dev) | |||
386 | return 0; | 386 | return 0; |
387 | } | 387 | } |
388 | 388 | ||
389 | static int micro_probe(struct platform_device *pdev) | 389 | static int __init micro_probe(struct platform_device *pdev) |
390 | { | 390 | { |
391 | struct ipaq_micro *micro; | 391 | struct ipaq_micro *micro; |
392 | struct resource *res; | 392 | struct resource *res; |
@@ -448,21 +448,6 @@ static int micro_probe(struct platform_device *pdev) | |||
448 | return 0; | 448 | return 0; |
449 | } | 449 | } |
450 | 450 | ||
451 | static int micro_remove(struct platform_device *pdev) | ||
452 | { | ||
453 | struct ipaq_micro *micro = platform_get_drvdata(pdev); | ||
454 | u32 val; | ||
455 | |||
456 | mfd_remove_devices(&pdev->dev); | ||
457 | |||
458 | val = readl(micro->base + UTCR3); | ||
459 | val &= ~(UTCR3_RXE | UTCR3_RIE); /* disable receive interrupt */ | ||
460 | val &= ~(UTCR3_TXE | UTCR3_TIE); /* disable transmit interrupt */ | ||
461 | writel(val, micro->base + UTCR3); | ||
462 | |||
463 | return 0; | ||
464 | } | ||
465 | |||
466 | static const struct dev_pm_ops micro_dev_pm_ops = { | 451 | static const struct dev_pm_ops micro_dev_pm_ops = { |
467 | SET_SYSTEM_SLEEP_PM_OPS(NULL, micro_resume) | 452 | SET_SYSTEM_SLEEP_PM_OPS(NULL, micro_resume) |
468 | }; | 453 | }; |
@@ -471,12 +456,7 @@ static struct platform_driver micro_device_driver = { | |||
471 | .driver = { | 456 | .driver = { |
472 | .name = "ipaq-h3xxx-micro", | 457 | .name = "ipaq-h3xxx-micro", |
473 | .pm = µ_dev_pm_ops, | 458 | .pm = µ_dev_pm_ops, |
459 | .suppress_bind_attrs = true, | ||
474 | }, | 460 | }, |
475 | .probe = micro_probe, | ||
476 | .remove = micro_remove, | ||
477 | /* .shutdown = micro_suspend, // FIXME */ | ||
478 | }; | 461 | }; |
479 | module_platform_driver(micro_device_driver); | 462 | builtin_platform_driver_probe(micro_device_driver, micro_probe); |
480 | |||
481 | MODULE_LICENSE("GPL"); | ||
482 | MODULE_DESCRIPTION("driver for iPAQ Atmel micro core and backlight"); | ||
diff --git a/drivers/mfd/jz4740-adc.c b/drivers/mfd/jz4740-adc.c index b31c54e4ecb2..5bb49f08955d 100644 --- a/drivers/mfd/jz4740-adc.c +++ b/drivers/mfd/jz4740-adc.c | |||
@@ -273,12 +273,12 @@ static int jz4740_adc_probe(struct platform_device *pdev) | |||
273 | ct->chip.irq_unmask = irq_gc_mask_clr_bit; | 273 | ct->chip.irq_unmask = irq_gc_mask_clr_bit; |
274 | ct->chip.irq_ack = irq_gc_ack_set_bit; | 274 | ct->chip.irq_ack = irq_gc_ack_set_bit; |
275 | 275 | ||
276 | irq_setup_generic_chip(gc, IRQ_MSK(5), 0, 0, IRQ_NOPROBE | IRQ_LEVEL); | 276 | irq_setup_generic_chip(gc, IRQ_MSK(5), IRQ_GC_INIT_MASK_CACHE, 0, |
277 | IRQ_NOPROBE | IRQ_LEVEL); | ||
277 | 278 | ||
278 | adc->gc = gc; | 279 | adc->gc = gc; |
279 | 280 | ||
280 | irq_set_handler_data(adc->irq, gc); | 281 | irq_set_chained_handler_and_data(adc->irq, jz4740_adc_irq_demux, gc); |
281 | irq_set_chained_handler(adc->irq, jz4740_adc_irq_demux); | ||
282 | 282 | ||
283 | writeb(0x00, adc->base + JZ_REG_ADC_ENABLE); | 283 | writeb(0x00, adc->base + JZ_REG_ADC_ENABLE); |
284 | writeb(0xff, adc->base + JZ_REG_ADC_CTRL); | 284 | writeb(0xff, adc->base + JZ_REG_ADC_CTRL); |
@@ -308,8 +308,7 @@ static int jz4740_adc_remove(struct platform_device *pdev) | |||
308 | 308 | ||
309 | irq_remove_generic_chip(adc->gc, IRQ_MSK(5), IRQ_NOPROBE | IRQ_LEVEL, 0); | 309 | irq_remove_generic_chip(adc->gc, IRQ_MSK(5), IRQ_NOPROBE | IRQ_LEVEL, 0); |
310 | kfree(adc->gc); | 310 | kfree(adc->gc); |
311 | irq_set_handler_data(adc->irq, NULL); | 311 | irq_set_chained_handler_and_data(adc->irq, NULL, NULL); |
312 | irq_set_chained_handler(adc->irq, NULL); | ||
313 | 312 | ||
314 | iounmap(adc->base); | 313 | iounmap(adc->base); |
315 | release_mem_region(adc->mem->start, resource_size(adc->mem)); | 314 | release_mem_region(adc->mem->start, resource_size(adc->mem)); |
diff --git a/drivers/mfd/kempld-core.c b/drivers/mfd/kempld-core.c index 8057849d51ac..463f4eae20c1 100644 --- a/drivers/mfd/kempld-core.c +++ b/drivers/mfd/kempld-core.c | |||
@@ -501,6 +501,14 @@ static struct platform_driver kempld_driver = { | |||
501 | 501 | ||
502 | static struct dmi_system_id kempld_dmi_table[] __initdata = { | 502 | static struct dmi_system_id kempld_dmi_table[] __initdata = { |
503 | { | 503 | { |
504 | .ident = "BBL6", | ||
505 | .matches = { | ||
506 | DMI_MATCH(DMI_BOARD_VENDOR, "Kontron"), | ||
507 | DMI_MATCH(DMI_BOARD_NAME, "COMe-bBL6"), | ||
508 | }, | ||
509 | .driver_data = (void *)&kempld_platform_data_generic, | ||
510 | .callback = kempld_create_platform_device, | ||
511 | }, { | ||
504 | .ident = "BHL6", | 512 | .ident = "BHL6", |
505 | .matches = { | 513 | .matches = { |
506 | DMI_MATCH(DMI_BOARD_VENDOR, "Kontron"), | 514 | DMI_MATCH(DMI_BOARD_VENDOR, "Kontron"), |
@@ -517,6 +525,14 @@ static struct dmi_system_id kempld_dmi_table[] __initdata = { | |||
517 | .driver_data = (void *)&kempld_platform_data_generic, | 525 | .driver_data = (void *)&kempld_platform_data_generic, |
518 | .callback = kempld_create_platform_device, | 526 | .callback = kempld_create_platform_device, |
519 | }, { | 527 | }, { |
528 | .ident = "CBW6", | ||
529 | .matches = { | ||
530 | DMI_MATCH(DMI_BOARD_VENDOR, "Kontron"), | ||
531 | DMI_MATCH(DMI_BOARD_NAME, "COMe-cBW6"), | ||
532 | }, | ||
533 | .driver_data = (void *)&kempld_platform_data_generic, | ||
534 | .callback = kempld_create_platform_device, | ||
535 | }, { | ||
520 | .ident = "CCR2", | 536 | .ident = "CCR2", |
521 | .matches = { | 537 | .matches = { |
522 | DMI_MATCH(DMI_BOARD_VENDOR, "Kontron"), | 538 | DMI_MATCH(DMI_BOARD_VENDOR, "Kontron"), |
diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c index d42fbb667d8c..643f3750e830 100644 --- a/drivers/mfd/lm3533-core.c +++ b/drivers/mfd/lm3533-core.c | |||
@@ -640,7 +640,6 @@ MODULE_DEVICE_TABLE(i2c, lm3533_i2c_ids); | |||
640 | static struct i2c_driver lm3533_i2c_driver = { | 640 | static struct i2c_driver lm3533_i2c_driver = { |
641 | .driver = { | 641 | .driver = { |
642 | .name = "lm3533", | 642 | .name = "lm3533", |
643 | .owner = THIS_MODULE, | ||
644 | }, | 643 | }, |
645 | .id_table = lm3533_i2c_ids, | 644 | .id_table = lm3533_i2c_ids, |
646 | .probe = lm3533_i2c_probe, | 645 | .probe = lm3533_i2c_probe, |
diff --git a/drivers/mfd/lp3943.c b/drivers/mfd/lp3943.c index 335b930112b2..eecbb13de1bd 100644 --- a/drivers/mfd/lp3943.c +++ b/drivers/mfd/lp3943.c | |||
@@ -154,7 +154,6 @@ static struct i2c_driver lp3943_driver = { | |||
154 | .remove = lp3943_remove, | 154 | .remove = lp3943_remove, |
155 | .driver = { | 155 | .driver = { |
156 | .name = "lp3943", | 156 | .name = "lp3943", |
157 | .owner = THIS_MODULE, | ||
158 | .of_match_table = of_match_ptr(lp3943_of_match), | 157 | .of_match_table = of_match_ptr(lp3943_of_match), |
159 | }, | 158 | }, |
160 | .id_table = lp3943_ids, | 159 | .id_table = lp3943_ids, |
diff --git a/drivers/mfd/lp8788-irq.c b/drivers/mfd/lp8788-irq.c index a87f2b548f71..c7a9825aa4ce 100644 --- a/drivers/mfd/lp8788-irq.c +++ b/drivers/mfd/lp8788-irq.c | |||
@@ -141,12 +141,7 @@ static int lp8788_irq_map(struct irq_domain *d, unsigned int virq, | |||
141 | irq_set_chip_data(virq, irqd); | 141 | irq_set_chip_data(virq, irqd); |
142 | irq_set_chip_and_handler(virq, chip, handle_edge_irq); | 142 | irq_set_chip_and_handler(virq, chip, handle_edge_irq); |
143 | irq_set_nested_thread(virq, 1); | 143 | irq_set_nested_thread(virq, 1); |
144 | |||
145 | #ifdef CONFIG_ARM | ||
146 | set_irq_flags(virq, IRQF_VALID); | ||
147 | #else | ||
148 | irq_set_noprobe(virq); | 144 | irq_set_noprobe(virq); |
149 | #endif | ||
150 | 145 | ||
151 | return 0; | 146 | return 0; |
152 | } | 147 | } |
diff --git a/drivers/mfd/lp8788.c b/drivers/mfd/lp8788.c index a30bc15fe5ba..acf616559512 100644 --- a/drivers/mfd/lp8788.c +++ b/drivers/mfd/lp8788.c | |||
@@ -221,7 +221,6 @@ MODULE_DEVICE_TABLE(i2c, lp8788_ids); | |||
221 | static struct i2c_driver lp8788_driver = { | 221 | static struct i2c_driver lp8788_driver = { |
222 | .driver = { | 222 | .driver = { |
223 | .name = "lp8788", | 223 | .name = "lp8788", |
224 | .owner = THIS_MODULE, | ||
225 | }, | 224 | }, |
226 | .probe = lp8788_probe, | 225 | .probe = lp8788_probe, |
227 | .remove = lp8788_remove, | 226 | .remove = lp8788_remove, |
diff --git a/drivers/mfd/lpc_ich.c b/drivers/mfd/lpc_ich.c index 8de34398abc0..c5a9a08b5dfb 100644 --- a/drivers/mfd/lpc_ich.c +++ b/drivers/mfd/lpc_ich.c | |||
@@ -66,6 +66,7 @@ | |||
66 | #include <linux/pci.h> | 66 | #include <linux/pci.h> |
67 | #include <linux/mfd/core.h> | 67 | #include <linux/mfd/core.h> |
68 | #include <linux/mfd/lpc_ich.h> | 68 | #include <linux/mfd/lpc_ich.h> |
69 | #include <linux/platform_data/itco_wdt.h> | ||
69 | 70 | ||
70 | #define ACPIBASE 0x40 | 71 | #define ACPIBASE 0x40 |
71 | #define ACPIBASE_GPE_OFF 0x28 | 72 | #define ACPIBASE_GPE_OFF 0x28 |
@@ -835,9 +836,31 @@ static void lpc_ich_enable_pmc_space(struct pci_dev *dev) | |||
835 | priv->actrl_pbase_save = reg_save; | 836 | priv->actrl_pbase_save = reg_save; |
836 | } | 837 | } |
837 | 838 | ||
838 | static void lpc_ich_finalize_cell(struct pci_dev *dev, struct mfd_cell *cell) | 839 | static int lpc_ich_finalize_wdt_cell(struct pci_dev *dev) |
839 | { | 840 | { |
841 | struct itco_wdt_platform_data *pdata; | ||
840 | struct lpc_ich_priv *priv = pci_get_drvdata(dev); | 842 | struct lpc_ich_priv *priv = pci_get_drvdata(dev); |
843 | struct lpc_ich_info *info; | ||
844 | struct mfd_cell *cell = &lpc_ich_cells[LPC_WDT]; | ||
845 | |||
846 | pdata = devm_kzalloc(&dev->dev, sizeof(*pdata), GFP_KERNEL); | ||
847 | if (!pdata) | ||
848 | return -ENOMEM; | ||
849 | |||
850 | info = &lpc_chipset_info[priv->chipset]; | ||
851 | |||
852 | pdata->version = info->iTCO_version; | ||
853 | strlcpy(pdata->name, info->name, sizeof(pdata->name)); | ||
854 | |||
855 | cell->platform_data = pdata; | ||
856 | cell->pdata_size = sizeof(*pdata); | ||
857 | return 0; | ||
858 | } | ||
859 | |||
860 | static void lpc_ich_finalize_gpio_cell(struct pci_dev *dev) | ||
861 | { | ||
862 | struct lpc_ich_priv *priv = pci_get_drvdata(dev); | ||
863 | struct mfd_cell *cell = &lpc_ich_cells[LPC_GPIO]; | ||
841 | 864 | ||
842 | cell->platform_data = &lpc_chipset_info[priv->chipset]; | 865 | cell->platform_data = &lpc_chipset_info[priv->chipset]; |
843 | cell->pdata_size = sizeof(struct lpc_ich_info); | 866 | cell->pdata_size = sizeof(struct lpc_ich_info); |
@@ -933,7 +956,7 @@ gpe0_done: | |||
933 | lpc_chipset_info[priv->chipset].use_gpio = ret; | 956 | lpc_chipset_info[priv->chipset].use_gpio = ret; |
934 | lpc_ich_enable_gpio_space(dev); | 957 | lpc_ich_enable_gpio_space(dev); |
935 | 958 | ||
936 | lpc_ich_finalize_cell(dev, &lpc_ich_cells[LPC_GPIO]); | 959 | lpc_ich_finalize_gpio_cell(dev); |
937 | ret = mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO, | 960 | ret = mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO, |
938 | &lpc_ich_cells[LPC_GPIO], 1, NULL, 0, NULL); | 961 | &lpc_ich_cells[LPC_GPIO], 1, NULL, 0, NULL); |
939 | 962 | ||
@@ -1007,7 +1030,10 @@ static int lpc_ich_init_wdt(struct pci_dev *dev) | |||
1007 | res->end = base_addr + ACPIBASE_PMC_END; | 1030 | res->end = base_addr + ACPIBASE_PMC_END; |
1008 | } | 1031 | } |
1009 | 1032 | ||
1010 | lpc_ich_finalize_cell(dev, &lpc_ich_cells[LPC_WDT]); | 1033 | ret = lpc_ich_finalize_wdt_cell(dev); |
1034 | if (ret) | ||
1035 | goto wdt_done; | ||
1036 | |||
1011 | ret = mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO, | 1037 | ret = mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO, |
1012 | &lpc_ich_cells[LPC_WDT], 1, NULL, 0, NULL); | 1038 | &lpc_ich_cells[LPC_WDT], 1, NULL, 0, NULL); |
1013 | 1039 | ||
diff --git a/drivers/mfd/max14577.c b/drivers/mfd/max14577.c index 3bf8def82f1e..56e216dedc91 100644 --- a/drivers/mfd/max14577.c +++ b/drivers/mfd/max14577.c | |||
@@ -532,7 +532,6 @@ static SIMPLE_DEV_PM_OPS(max14577_pm, max14577_suspend, max14577_resume); | |||
532 | static struct i2c_driver max14577_i2c_driver = { | 532 | static struct i2c_driver max14577_i2c_driver = { |
533 | .driver = { | 533 | .driver = { |
534 | .name = "max14577", | 534 | .name = "max14577", |
535 | .owner = THIS_MODULE, | ||
536 | .pm = &max14577_pm, | 535 | .pm = &max14577_pm, |
537 | .of_match_table = max14577_dt_match, | 536 | .of_match_table = max14577_dt_match, |
538 | }, | 537 | }, |
diff --git a/drivers/mfd/max77686.c b/drivers/mfd/max77686.c index 760d08d7923d..d19be64cd32b 100644 --- a/drivers/mfd/max77686.c +++ b/drivers/mfd/max77686.c | |||
@@ -391,7 +391,6 @@ static SIMPLE_DEV_PM_OPS(max77686_pm, max77686_suspend, max77686_resume); | |||
391 | static struct i2c_driver max77686_i2c_driver = { | 391 | static struct i2c_driver max77686_i2c_driver = { |
392 | .driver = { | 392 | .driver = { |
393 | .name = "max77686", | 393 | .name = "max77686", |
394 | .owner = THIS_MODULE, | ||
395 | .pm = &max77686_pm, | 394 | .pm = &max77686_pm, |
396 | .of_match_table = of_match_ptr(max77686_pmic_dt_match), | 395 | .of_match_table = of_match_ptr(max77686_pmic_dt_match), |
397 | }, | 396 | }, |
diff --git a/drivers/mfd/max77693.c b/drivers/mfd/max77693.c index 67bc53fdc389..007f729e150b 100644 --- a/drivers/mfd/max77693.c +++ b/drivers/mfd/max77693.c | |||
@@ -373,7 +373,6 @@ static const struct of_device_id max77693_dt_match[] = { | |||
373 | static struct i2c_driver max77693_i2c_driver = { | 373 | static struct i2c_driver max77693_i2c_driver = { |
374 | .driver = { | 374 | .driver = { |
375 | .name = "max77693", | 375 | .name = "max77693", |
376 | .owner = THIS_MODULE, | ||
377 | .pm = &max77693_pm, | 376 | .pm = &max77693_pm, |
378 | .of_match_table = of_match_ptr(max77693_dt_match), | 377 | .of_match_table = of_match_ptr(max77693_dt_match), |
379 | }, | 378 | }, |
diff --git a/drivers/mfd/max8907.c b/drivers/mfd/max8907.c index 232749c8813d..2974c8b1273b 100644 --- a/drivers/mfd/max8907.c +++ b/drivers/mfd/max8907.c | |||
@@ -321,7 +321,6 @@ MODULE_DEVICE_TABLE(i2c, max8907_i2c_id); | |||
321 | static struct i2c_driver max8907_i2c_driver = { | 321 | static struct i2c_driver max8907_i2c_driver = { |
322 | .driver = { | 322 | .driver = { |
323 | .name = "max8907", | 323 | .name = "max8907", |
324 | .owner = THIS_MODULE, | ||
325 | .of_match_table = of_match_ptr(max8907_of_match), | 324 | .of_match_table = of_match_ptr(max8907_of_match), |
326 | }, | 325 | }, |
327 | .probe = max8907_i2c_probe, | 326 | .probe = max8907_i2c_probe, |
diff --git a/drivers/mfd/max8925-core.c b/drivers/mfd/max8925-core.c index 8520bd68c1ff..fd8b15cd84fd 100644 --- a/drivers/mfd/max8925-core.c +++ b/drivers/mfd/max8925-core.c | |||
@@ -650,11 +650,8 @@ static int max8925_irq_domain_map(struct irq_domain *d, unsigned int virq, | |||
650 | irq_set_chip_data(virq, d->host_data); | 650 | irq_set_chip_data(virq, d->host_data); |
651 | irq_set_chip_and_handler(virq, &max8925_irq_chip, handle_edge_irq); | 651 | irq_set_chip_and_handler(virq, &max8925_irq_chip, handle_edge_irq); |
652 | irq_set_nested_thread(virq, 1); | 652 | irq_set_nested_thread(virq, 1); |
653 | #ifdef CONFIG_ARM | ||
654 | set_irq_flags(virq, IRQF_VALID); | ||
655 | #else | ||
656 | irq_set_noprobe(virq); | 653 | irq_set_noprobe(virq); |
657 | #endif | 654 | |
658 | return 0; | 655 | return 0; |
659 | } | 656 | } |
660 | 657 | ||
diff --git a/drivers/mfd/max8925-i2c.c b/drivers/mfd/max8925-i2c.c index c880c895c5a6..b0fe8103e401 100644 --- a/drivers/mfd/max8925-i2c.c +++ b/drivers/mfd/max8925-i2c.c | |||
@@ -245,7 +245,6 @@ MODULE_DEVICE_TABLE(of, max8925_dt_ids); | |||
245 | static struct i2c_driver max8925_driver = { | 245 | static struct i2c_driver max8925_driver = { |
246 | .driver = { | 246 | .driver = { |
247 | .name = "max8925", | 247 | .name = "max8925", |
248 | .owner = THIS_MODULE, | ||
249 | .pm = &max8925_pm_ops, | 248 | .pm = &max8925_pm_ops, |
250 | .of_match_table = max8925_dt_ids, | 249 | .of_match_table = max8925_dt_ids, |
251 | }, | 250 | }, |
diff --git a/drivers/mfd/max8997-irq.c b/drivers/mfd/max8997-irq.c index d3025be57f39..b95a46d79b9d 100644 --- a/drivers/mfd/max8997-irq.c +++ b/drivers/mfd/max8997-irq.c | |||
@@ -113,14 +113,14 @@ static const struct max8997_irq_data max8997_irqs[] = { | |||
113 | 113 | ||
114 | static void max8997_irq_lock(struct irq_data *data) | 114 | static void max8997_irq_lock(struct irq_data *data) |
115 | { | 115 | { |
116 | struct max8997_dev *max8997 = irq_get_chip_data(data->irq); | 116 | struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data); |
117 | 117 | ||
118 | mutex_lock(&max8997->irqlock); | 118 | mutex_lock(&max8997->irqlock); |
119 | } | 119 | } |
120 | 120 | ||
121 | static void max8997_irq_sync_unlock(struct irq_data *data) | 121 | static void max8997_irq_sync_unlock(struct irq_data *data) |
122 | { | 122 | { |
123 | struct max8997_dev *max8997 = irq_get_chip_data(data->irq); | 123 | struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data); |
124 | int i; | 124 | int i; |
125 | 125 | ||
126 | for (i = 0; i < MAX8997_IRQ_GROUP_NR; i++) { | 126 | for (i = 0; i < MAX8997_IRQ_GROUP_NR; i++) { |
@@ -140,26 +140,25 @@ static void max8997_irq_sync_unlock(struct irq_data *data) | |||
140 | } | 140 | } |
141 | 141 | ||
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, struct irq_data *data) |
144 | { | 144 | { |
145 | struct irq_data *data = irq_get_irq_data(irq); | ||
146 | return &max8997_irqs[data->hwirq]; | 145 | return &max8997_irqs[data->hwirq]; |
147 | } | 146 | } |
148 | 147 | ||
149 | static void max8997_irq_mask(struct irq_data *data) | 148 | static void max8997_irq_mask(struct irq_data *data) |
150 | { | 149 | { |
151 | struct max8997_dev *max8997 = irq_get_chip_data(data->irq); | 150 | struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data); |
152 | const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997, | 151 | const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997, |
153 | data->irq); | 152 | data); |
154 | 153 | ||
155 | max8997->irq_masks_cur[irq_data->group] |= irq_data->mask; | 154 | max8997->irq_masks_cur[irq_data->group] |= irq_data->mask; |
156 | } | 155 | } |
157 | 156 | ||
158 | static void max8997_irq_unmask(struct irq_data *data) | 157 | static void max8997_irq_unmask(struct irq_data *data) |
159 | { | 158 | { |
160 | struct max8997_dev *max8997 = irq_get_chip_data(data->irq); | 159 | struct max8997_dev *max8997 = irq_data_get_irq_chip_data(data); |
161 | const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997, | 160 | const struct max8997_irq_data *irq_data = irq_to_max8997_irq(max8997, |
162 | data->irq); | 161 | data); |
163 | 162 | ||
164 | max8997->irq_masks_cur[irq_data->group] &= ~irq_data->mask; | 163 | max8997->irq_masks_cur[irq_data->group] &= ~irq_data->mask; |
165 | } | 164 | } |
@@ -295,11 +294,8 @@ static int max8997_irq_domain_map(struct irq_domain *d, unsigned int irq, | |||
295 | irq_set_chip_data(irq, max8997); | 294 | irq_set_chip_data(irq, max8997); |
296 | irq_set_chip_and_handler(irq, &max8997_irq_chip, handle_edge_irq); | 295 | irq_set_chip_and_handler(irq, &max8997_irq_chip, handle_edge_irq); |
297 | irq_set_nested_thread(irq, 1); | 296 | irq_set_nested_thread(irq, 1); |
298 | #ifdef CONFIG_ARM | ||
299 | set_irq_flags(irq, IRQF_VALID); | ||
300 | #else | ||
301 | irq_set_noprobe(irq); | 297 | irq_set_noprobe(irq); |
302 | #endif | 298 | |
303 | return 0; | 299 | return 0; |
304 | } | 300 | } |
305 | 301 | ||
diff --git a/drivers/mfd/max8997.c b/drivers/mfd/max8997.c index 595364ee178a..d3cfa9cf5c8f 100644 --- a/drivers/mfd/max8997.c +++ b/drivers/mfd/max8997.c | |||
@@ -508,7 +508,6 @@ static const struct dev_pm_ops max8997_pm = { | |||
508 | static struct i2c_driver max8997_i2c_driver = { | 508 | static struct i2c_driver max8997_i2c_driver = { |
509 | .driver = { | 509 | .driver = { |
510 | .name = "max8997", | 510 | .name = "max8997", |
511 | .owner = THIS_MODULE, | ||
512 | .pm = &max8997_pm, | 511 | .pm = &max8997_pm, |
513 | .of_match_table = of_match_ptr(max8997_pmic_dt_match), | 512 | .of_match_table = of_match_ptr(max8997_pmic_dt_match), |
514 | }, | 513 | }, |
diff --git a/drivers/mfd/max8998-irq.c b/drivers/mfd/max8998-irq.c index 3702056628a8..90bad9ffa7e2 100644 --- a/drivers/mfd/max8998-irq.c +++ b/drivers/mfd/max8998-irq.c | |||
@@ -98,9 +98,8 @@ static struct max8998_irq_data max8998_irqs[] = { | |||
98 | }; | 98 | }; |
99 | 99 | ||
100 | static inline struct max8998_irq_data * | 100 | static inline struct max8998_irq_data * |
101 | irq_to_max8998_irq(struct max8998_dev *max8998, int irq) | 101 | irq_to_max8998_irq(struct max8998_dev *max8998, struct irq_data *data) |
102 | { | 102 | { |
103 | struct irq_data *data = irq_get_irq_data(irq); | ||
104 | return &max8998_irqs[data->hwirq]; | 103 | return &max8998_irqs[data->hwirq]; |
105 | } | 104 | } |
106 | 105 | ||
@@ -134,8 +133,7 @@ static void max8998_irq_sync_unlock(struct irq_data *data) | |||
134 | static void max8998_irq_unmask(struct irq_data *data) | 133 | static void max8998_irq_unmask(struct irq_data *data) |
135 | { | 134 | { |
136 | struct max8998_dev *max8998 = irq_data_get_irq_chip_data(data); | 135 | struct max8998_dev *max8998 = irq_data_get_irq_chip_data(data); |
137 | struct max8998_irq_data *irq_data = irq_to_max8998_irq(max8998, | 136 | struct max8998_irq_data *irq_data = irq_to_max8998_irq(max8998, data); |
138 | data->irq); | ||
139 | 137 | ||
140 | max8998->irq_masks_cur[irq_data->reg - 1] &= ~irq_data->mask; | 138 | max8998->irq_masks_cur[irq_data->reg - 1] &= ~irq_data->mask; |
141 | } | 139 | } |
@@ -143,8 +141,7 @@ static void max8998_irq_unmask(struct irq_data *data) | |||
143 | static void max8998_irq_mask(struct irq_data *data) | 141 | static void max8998_irq_mask(struct irq_data *data) |
144 | { | 142 | { |
145 | struct max8998_dev *max8998 = irq_data_get_irq_chip_data(data); | 143 | struct max8998_dev *max8998 = irq_data_get_irq_chip_data(data); |
146 | struct max8998_irq_data *irq_data = irq_to_max8998_irq(max8998, | 144 | struct max8998_irq_data *irq_data = irq_to_max8998_irq(max8998, data); |
147 | data->irq); | ||
148 | 145 | ||
149 | max8998->irq_masks_cur[irq_data->reg - 1] |= irq_data->mask; | 146 | max8998->irq_masks_cur[irq_data->reg - 1] |= irq_data->mask; |
150 | } | 147 | } |
@@ -206,11 +203,8 @@ static int max8998_irq_domain_map(struct irq_domain *d, unsigned int irq, | |||
206 | irq_set_chip_data(irq, max8998); | 203 | irq_set_chip_data(irq, max8998); |
207 | irq_set_chip_and_handler(irq, &max8998_irq_chip, handle_edge_irq); | 204 | irq_set_chip_and_handler(irq, &max8998_irq_chip, handle_edge_irq); |
208 | irq_set_nested_thread(irq, 1); | 205 | irq_set_nested_thread(irq, 1); |
209 | #ifdef CONFIG_ARM | ||
210 | set_irq_flags(irq, IRQF_VALID); | ||
211 | #else | ||
212 | irq_set_noprobe(irq); | 206 | irq_set_noprobe(irq); |
213 | #endif | 207 | |
214 | return 0; | 208 | return 0; |
215 | } | 209 | } |
216 | 210 | ||
diff --git a/drivers/mfd/max8998.c b/drivers/mfd/max8998.c index a37cb7444b6e..a7afe3bf27fc 100644 --- a/drivers/mfd/max8998.c +++ b/drivers/mfd/max8998.c | |||
@@ -377,7 +377,6 @@ static const struct dev_pm_ops max8998_pm = { | |||
377 | static struct i2c_driver max8998_i2c_driver = { | 377 | static struct i2c_driver max8998_i2c_driver = { |
378 | .driver = { | 378 | .driver = { |
379 | .name = "max8998", | 379 | .name = "max8998", |
380 | .owner = THIS_MODULE, | ||
381 | .pm = &max8998_pm, | 380 | .pm = &max8998_pm, |
382 | .of_match_table = of_match_ptr(max8998_dt_match), | 381 | .of_match_table = of_match_ptr(max8998_dt_match), |
383 | }, | 382 | }, |
diff --git a/drivers/mfd/mc13xxx-i2c.c b/drivers/mfd/mc13xxx-i2c.c index 68b844811566..67e4c9aa7d18 100644 --- a/drivers/mfd/mc13xxx-i2c.c +++ b/drivers/mfd/mc13xxx-i2c.c | |||
@@ -96,7 +96,6 @@ static int mc13xxx_i2c_remove(struct i2c_client *client) | |||
96 | static struct i2c_driver mc13xxx_i2c_driver = { | 96 | static struct i2c_driver mc13xxx_i2c_driver = { |
97 | .id_table = mc13xxx_i2c_device_id, | 97 | .id_table = mc13xxx_i2c_device_id, |
98 | .driver = { | 98 | .driver = { |
99 | .owner = THIS_MODULE, | ||
100 | .name = "mc13xxx", | 99 | .name = "mc13xxx", |
101 | .of_match_table = mc13xxx_dt_ids, | 100 | .of_match_table = mc13xxx_dt_ids, |
102 | }, | 101 | }, |
diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c index 03929a6c6fc4..1749c1c9f405 100644 --- a/drivers/mfd/mt6397-core.c +++ b/drivers/mfd/mt6397-core.c | |||
@@ -60,14 +60,14 @@ static const struct mfd_cell mt6397_devs[] = { | |||
60 | 60 | ||
61 | static void mt6397_irq_lock(struct irq_data *data) | 61 | static void mt6397_irq_lock(struct irq_data *data) |
62 | { | 62 | { |
63 | struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq); | 63 | struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data); |
64 | 64 | ||
65 | mutex_lock(&mt6397->irqlock); | 65 | mutex_lock(&mt6397->irqlock); |
66 | } | 66 | } |
67 | 67 | ||
68 | static void mt6397_irq_sync_unlock(struct irq_data *data) | 68 | static void mt6397_irq_sync_unlock(struct irq_data *data) |
69 | { | 69 | { |
70 | struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq); | 70 | struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data); |
71 | 71 | ||
72 | regmap_write(mt6397->regmap, MT6397_INT_CON0, mt6397->irq_masks_cur[0]); | 72 | regmap_write(mt6397->regmap, MT6397_INT_CON0, mt6397->irq_masks_cur[0]); |
73 | regmap_write(mt6397->regmap, MT6397_INT_CON1, mt6397->irq_masks_cur[1]); | 73 | regmap_write(mt6397->regmap, MT6397_INT_CON1, mt6397->irq_masks_cur[1]); |
@@ -77,7 +77,7 @@ static void mt6397_irq_sync_unlock(struct irq_data *data) | |||
77 | 77 | ||
78 | static void mt6397_irq_disable(struct irq_data *data) | 78 | static void mt6397_irq_disable(struct irq_data *data) |
79 | { | 79 | { |
80 | struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq); | 80 | struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data); |
81 | int shift = data->hwirq & 0xf; | 81 | int shift = data->hwirq & 0xf; |
82 | int reg = data->hwirq >> 4; | 82 | int reg = data->hwirq >> 4; |
83 | 83 | ||
@@ -86,19 +86,38 @@ static void mt6397_irq_disable(struct irq_data *data) | |||
86 | 86 | ||
87 | static void mt6397_irq_enable(struct irq_data *data) | 87 | static void mt6397_irq_enable(struct irq_data *data) |
88 | { | 88 | { |
89 | struct mt6397_chip *mt6397 = irq_get_chip_data(data->irq); | 89 | struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(data); |
90 | int shift = data->hwirq & 0xf; | 90 | int shift = data->hwirq & 0xf; |
91 | int reg = data->hwirq >> 4; | 91 | int reg = data->hwirq >> 4; |
92 | 92 | ||
93 | mt6397->irq_masks_cur[reg] |= BIT(shift); | 93 | mt6397->irq_masks_cur[reg] |= BIT(shift); |
94 | } | 94 | } |
95 | 95 | ||
96 | #ifdef CONFIG_PM_SLEEP | ||
97 | static int mt6397_irq_set_wake(struct irq_data *irq_data, unsigned int on) | ||
98 | { | ||
99 | struct mt6397_chip *mt6397 = irq_data_get_irq_chip_data(irq_data); | ||
100 | int shift = irq_data->hwirq & 0xf; | ||
101 | int reg = irq_data->hwirq >> 4; | ||
102 | |||
103 | if (on) | ||
104 | mt6397->wake_mask[reg] |= BIT(shift); | ||
105 | else | ||
106 | mt6397->wake_mask[reg] &= ~BIT(shift); | ||
107 | |||
108 | return 0; | ||
109 | } | ||
110 | #else | ||
111 | #define mt6397_irq_set_wake NULL | ||
112 | #endif | ||
113 | |||
96 | static struct irq_chip mt6397_irq_chip = { | 114 | static struct irq_chip mt6397_irq_chip = { |
97 | .name = "mt6397-irq", | 115 | .name = "mt6397-irq", |
98 | .irq_bus_lock = mt6397_irq_lock, | 116 | .irq_bus_lock = mt6397_irq_lock, |
99 | .irq_bus_sync_unlock = mt6397_irq_sync_unlock, | 117 | .irq_bus_sync_unlock = mt6397_irq_sync_unlock, |
100 | .irq_enable = mt6397_irq_enable, | 118 | .irq_enable = mt6397_irq_enable, |
101 | .irq_disable = mt6397_irq_disable, | 119 | .irq_disable = mt6397_irq_disable, |
120 | .irq_set_wake = mt6397_irq_set_wake, | ||
102 | }; | 121 | }; |
103 | 122 | ||
104 | static void mt6397_irq_handle_reg(struct mt6397_chip *mt6397, int reg, | 123 | static void mt6397_irq_handle_reg(struct mt6397_chip *mt6397, int reg, |
@@ -142,11 +161,7 @@ static int mt6397_irq_domain_map(struct irq_domain *d, unsigned int irq, | |||
142 | irq_set_chip_data(irq, mt6397); | 161 | irq_set_chip_data(irq, mt6397); |
143 | irq_set_chip_and_handler(irq, &mt6397_irq_chip, handle_level_irq); | 162 | irq_set_chip_and_handler(irq, &mt6397_irq_chip, handle_level_irq); |
144 | irq_set_nested_thread(irq, 1); | 163 | irq_set_nested_thread(irq, 1); |
145 | #ifdef CONFIG_ARM | ||
146 | set_irq_flags(irq, IRQF_VALID); | ||
147 | #else | ||
148 | irq_set_noprobe(irq); | 164 | irq_set_noprobe(irq); |
149 | #endif | ||
150 | 165 | ||
151 | return 0; | 166 | return 0; |
152 | } | 167 | } |
@@ -183,6 +198,35 @@ static int mt6397_irq_init(struct mt6397_chip *mt6397) | |||
183 | return 0; | 198 | return 0; |
184 | } | 199 | } |
185 | 200 | ||
201 | #ifdef CONFIG_PM_SLEEP | ||
202 | static int mt6397_irq_suspend(struct device *dev) | ||
203 | { | ||
204 | struct mt6397_chip *chip = dev_get_drvdata(dev); | ||
205 | |||
206 | regmap_write(chip->regmap, MT6397_INT_CON0, chip->wake_mask[0]); | ||
207 | regmap_write(chip->regmap, MT6397_INT_CON1, chip->wake_mask[1]); | ||
208 | |||
209 | enable_irq_wake(chip->irq); | ||
210 | |||
211 | return 0; | ||
212 | } | ||
213 | |||
214 | static int mt6397_irq_resume(struct device *dev) | ||
215 | { | ||
216 | struct mt6397_chip *chip = dev_get_drvdata(dev); | ||
217 | |||
218 | regmap_write(chip->regmap, MT6397_INT_CON0, chip->irq_masks_cur[0]); | ||
219 | regmap_write(chip->regmap, MT6397_INT_CON1, chip->irq_masks_cur[1]); | ||
220 | |||
221 | disable_irq_wake(chip->irq); | ||
222 | |||
223 | return 0; | ||
224 | } | ||
225 | #endif | ||
226 | |||
227 | static SIMPLE_DEV_PM_OPS(mt6397_pm_ops, mt6397_irq_suspend, | ||
228 | mt6397_irq_resume); | ||
229 | |||
186 | static int mt6397_probe(struct platform_device *pdev) | 230 | static int mt6397_probe(struct platform_device *pdev) |
187 | { | 231 | { |
188 | int ret; | 232 | int ret; |
@@ -237,6 +281,7 @@ static struct platform_driver mt6397_driver = { | |||
237 | .driver = { | 281 | .driver = { |
238 | .name = "mt6397", | 282 | .name = "mt6397", |
239 | .of_match_table = of_match_ptr(mt6397_of_match), | 283 | .of_match_table = of_match_ptr(mt6397_of_match), |
284 | .pm = &mt6397_pm_ops, | ||
240 | }, | 285 | }, |
241 | }; | 286 | }; |
242 | 287 | ||
diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c index 28cb048f4760..8f8bacb67a15 100644 --- a/drivers/mfd/palmas.c +++ b/drivers/mfd/palmas.c | |||
@@ -719,7 +719,6 @@ static struct i2c_driver palmas_i2c_driver = { | |||
719 | .driver = { | 719 | .driver = { |
720 | .name = "palmas", | 720 | .name = "palmas", |
721 | .of_match_table = of_palmas_match_tbl, | 721 | .of_match_table = of_palmas_match_tbl, |
722 | .owner = THIS_MODULE, | ||
723 | }, | 722 | }, |
724 | .probe = palmas_i2c_probe, | 723 | .probe = palmas_i2c_probe, |
725 | .remove = palmas_i2c_remove, | 724 | .remove = palmas_i2c_remove, |
diff --git a/drivers/mfd/pm8921-core.c b/drivers/mfd/pm8921-core.c index 5a92646a2ccb..59502d02cd15 100644 --- a/drivers/mfd/pm8921-core.c +++ b/drivers/mfd/pm8921-core.c | |||
@@ -236,11 +236,49 @@ static int pm8xxx_irq_set_type(struct irq_data *d, unsigned int flow_type) | |||
236 | return pm8xxx_config_irq(chip, block, config); | 236 | return pm8xxx_config_irq(chip, block, config); |
237 | } | 237 | } |
238 | 238 | ||
239 | static int pm8xxx_irq_get_irqchip_state(struct irq_data *d, | ||
240 | enum irqchip_irq_state which, | ||
241 | bool *state) | ||
242 | { | ||
243 | struct pm_irq_chip *chip = irq_data_get_irq_chip_data(d); | ||
244 | unsigned int pmirq = irqd_to_hwirq(d); | ||
245 | unsigned int bits; | ||
246 | int irq_bit; | ||
247 | u8 block; | ||
248 | int rc; | ||
249 | |||
250 | if (which != IRQCHIP_STATE_LINE_LEVEL) | ||
251 | return -EINVAL; | ||
252 | |||
253 | block = pmirq / 8; | ||
254 | irq_bit = pmirq % 8; | ||
255 | |||
256 | spin_lock(&chip->pm_irq_lock); | ||
257 | rc = regmap_write(chip->regmap, SSBI_REG_ADDR_IRQ_BLK_SEL, block); | ||
258 | if (rc) { | ||
259 | pr_err("Failed Selecting Block %d rc=%d\n", block, rc); | ||
260 | goto bail; | ||
261 | } | ||
262 | |||
263 | rc = regmap_read(chip->regmap, SSBI_REG_ADDR_IRQ_RT_STATUS, &bits); | ||
264 | if (rc) { | ||
265 | pr_err("Failed Reading Status rc=%d\n", rc); | ||
266 | goto bail; | ||
267 | } | ||
268 | |||
269 | *state = !!(bits & BIT(irq_bit)); | ||
270 | bail: | ||
271 | spin_unlock(&chip->pm_irq_lock); | ||
272 | |||
273 | return rc; | ||
274 | } | ||
275 | |||
239 | static struct irq_chip pm8xxx_irq_chip = { | 276 | static struct irq_chip pm8xxx_irq_chip = { |
240 | .name = "pm8xxx", | 277 | .name = "pm8xxx", |
241 | .irq_mask_ack = pm8xxx_irq_mask_ack, | 278 | .irq_mask_ack = pm8xxx_irq_mask_ack, |
242 | .irq_unmask = pm8xxx_irq_unmask, | 279 | .irq_unmask = pm8xxx_irq_unmask, |
243 | .irq_set_type = pm8xxx_irq_set_type, | 280 | .irq_set_type = pm8xxx_irq_set_type, |
281 | .irq_get_irqchip_state = pm8xxx_irq_get_irqchip_state, | ||
244 | .flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SKIP_SET_WAKE, | 282 | .flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SKIP_SET_WAKE, |
245 | }; | 283 | }; |
246 | 284 | ||
@@ -251,11 +289,8 @@ static int pm8xxx_irq_domain_map(struct irq_domain *d, unsigned int irq, | |||
251 | 289 | ||
252 | irq_set_chip_and_handler(irq, &pm8xxx_irq_chip, handle_level_irq); | 290 | irq_set_chip_and_handler(irq, &pm8xxx_irq_chip, handle_level_irq); |
253 | irq_set_chip_data(irq, chip); | 291 | irq_set_chip_data(irq, chip); |
254 | #ifdef CONFIG_ARM | ||
255 | set_irq_flags(irq, IRQF_VALID); | ||
256 | #else | ||
257 | irq_set_noprobe(irq); | 292 | irq_set_noprobe(irq); |
258 | #endif | 293 | |
259 | return 0; | 294 | return 0; |
260 | } | 295 | } |
261 | 296 | ||
@@ -336,14 +371,12 @@ static int pm8921_probe(struct platform_device *pdev) | |||
336 | if (!chip->irqdomain) | 371 | if (!chip->irqdomain) |
337 | return -ENODEV; | 372 | return -ENODEV; |
338 | 373 | ||
339 | irq_set_handler_data(irq, chip); | 374 | irq_set_chained_handler_and_data(irq, pm8xxx_irq_handler, chip); |
340 | irq_set_chained_handler(irq, pm8xxx_irq_handler); | ||
341 | irq_set_irq_wake(irq, 1); | 375 | irq_set_irq_wake(irq, 1); |
342 | 376 | ||
343 | rc = of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev); | 377 | rc = of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev); |
344 | if (rc) { | 378 | if (rc) { |
345 | irq_set_chained_handler(irq, NULL); | 379 | irq_set_chained_handler_and_data(irq, NULL, NULL); |
346 | irq_set_handler_data(irq, NULL); | ||
347 | irq_domain_remove(chip->irqdomain); | 380 | irq_domain_remove(chip->irqdomain); |
348 | } | 381 | } |
349 | 382 | ||
@@ -362,8 +395,7 @@ static int pm8921_remove(struct platform_device *pdev) | |||
362 | struct pm_irq_chip *chip = platform_get_drvdata(pdev); | 395 | struct pm_irq_chip *chip = platform_get_drvdata(pdev); |
363 | 396 | ||
364 | device_for_each_child(&pdev->dev, NULL, pm8921_remove_child); | 397 | device_for_each_child(&pdev->dev, NULL, pm8921_remove_child); |
365 | irq_set_chained_handler(irq, NULL); | 398 | irq_set_chained_handler_and_data(irq, NULL, NULL); |
366 | irq_set_handler_data(irq, NULL); | ||
367 | irq_domain_remove(chip->irqdomain); | 399 | irq_domain_remove(chip->irqdomain); |
368 | 400 | ||
369 | return 0; | 401 | return 0; |
diff --git a/drivers/mfd/qcom_rpm.c b/drivers/mfd/qcom_rpm.c index 12e324319573..6afc9fabd94c 100644 --- a/drivers/mfd/qcom_rpm.c +++ b/drivers/mfd/qcom_rpm.c | |||
@@ -149,6 +149,7 @@ static const struct qcom_rpm_resource apq8064_rpm_resource_table[] = { | |||
149 | [QCOM_RPM_USB_OTG_SWITCH] = { 210, 125, 82, 1 }, | 149 | [QCOM_RPM_USB_OTG_SWITCH] = { 210, 125, 82, 1 }, |
150 | [QCOM_RPM_HDMI_SWITCH] = { 211, 126, 83, 1 }, | 150 | [QCOM_RPM_HDMI_SWITCH] = { 211, 126, 83, 1 }, |
151 | [QCOM_RPM_DDR_DMM] = { 212, 127, 84, 2 }, | 151 | [QCOM_RPM_DDR_DMM] = { 212, 127, 84, 2 }, |
152 | [QCOM_RPM_QDSS_CLK] = { 214, ~0, 7, 1 }, | ||
152 | [QCOM_RPM_VDDMIN_GPIO] = { 215, 131, 89, 1 }, | 153 | [QCOM_RPM_VDDMIN_GPIO] = { 215, 131, 89, 1 }, |
153 | }; | 154 | }; |
154 | 155 | ||
diff --git a/drivers/mfd/rc5t583-irq.c b/drivers/mfd/rc5t583-irq.c index bb8502020274..3f8812daa304 100644 --- a/drivers/mfd/rc5t583-irq.c +++ b/drivers/mfd/rc5t583-irq.c | |||
@@ -386,9 +386,7 @@ int rc5t583_irq_init(struct rc5t583 *rc5t583, int irq, int irq_base) | |||
386 | irq_set_chip_and_handler(__irq, &rc5t583_irq_chip, | 386 | irq_set_chip_and_handler(__irq, &rc5t583_irq_chip, |
387 | handle_simple_irq); | 387 | handle_simple_irq); |
388 | irq_set_nested_thread(__irq, 1); | 388 | irq_set_nested_thread(__irq, 1); |
389 | #ifdef CONFIG_ARM | 389 | irq_clear_status_flags(__irq, IRQ_NOREQUEST); |
390 | set_irq_flags(__irq, IRQF_VALID); | ||
391 | #endif | ||
392 | } | 390 | } |
393 | 391 | ||
394 | ret = request_threaded_irq(irq, NULL, rc5t583_irq, IRQF_ONESHOT, | 392 | ret = request_threaded_irq(irq, NULL, rc5t583_irq, IRQF_ONESHOT, |
diff --git a/drivers/mfd/rc5t583.c b/drivers/mfd/rc5t583.c index df276ad9f40b..e10f02f5d551 100644 --- a/drivers/mfd/rc5t583.c +++ b/drivers/mfd/rc5t583.c | |||
@@ -322,7 +322,6 @@ MODULE_DEVICE_TABLE(i2c, rc5t583_i2c_id); | |||
322 | static struct i2c_driver rc5t583_i2c_driver = { | 322 | static struct i2c_driver rc5t583_i2c_driver = { |
323 | .driver = { | 323 | .driver = { |
324 | .name = "rc5t583", | 324 | .name = "rc5t583", |
325 | .owner = THIS_MODULE, | ||
326 | }, | 325 | }, |
327 | .probe = rc5t583_i2c_probe, | 326 | .probe = rc5t583_i2c_probe, |
328 | .remove = rc5t583_i2c_remove, | 327 | .remove = rc5t583_i2c_remove, |
diff --git a/drivers/mfd/retu-mfd.c b/drivers/mfd/retu-mfd.c index 2d64430c719b..d4c114abeb75 100644 --- a/drivers/mfd/retu-mfd.c +++ b/drivers/mfd/retu-mfd.c | |||
@@ -311,7 +311,6 @@ MODULE_DEVICE_TABLE(i2c, retu_id); | |||
311 | static struct i2c_driver retu_driver = { | 311 | static struct i2c_driver retu_driver = { |
312 | .driver = { | 312 | .driver = { |
313 | .name = "retu-mfd", | 313 | .name = "retu-mfd", |
314 | .owner = THIS_MODULE, | ||
315 | }, | 314 | }, |
316 | .probe = retu_probe, | 315 | .probe = retu_probe, |
317 | .remove = retu_remove, | 316 | .remove = retu_remove, |
diff --git a/drivers/mfd/rt5033.c b/drivers/mfd/rt5033.c index db395a6c52bc..d60f91619c4a 100644 --- a/drivers/mfd/rt5033.c +++ b/drivers/mfd/rt5033.c | |||
@@ -124,6 +124,7 @@ static const struct of_device_id rt5033_dt_match[] = { | |||
124 | { .compatible = "richtek,rt5033", }, | 124 | { .compatible = "richtek,rt5033", }, |
125 | { } | 125 | { } |
126 | }; | 126 | }; |
127 | MODULE_DEVICE_TABLE(of, rt5033_dt_match); | ||
127 | 128 | ||
128 | static struct i2c_driver rt5033_driver = { | 129 | static struct i2c_driver rt5033_driver = { |
129 | .driver = { | 130 | .driver = { |
diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c index 4a69afb425ad..d206a3e8fe87 100644 --- a/drivers/mfd/sec-core.c +++ b/drivers/mfd/sec-core.c | |||
@@ -486,7 +486,6 @@ MODULE_DEVICE_TABLE(i2c, sec_pmic_id); | |||
486 | static struct i2c_driver sec_pmic_driver = { | 486 | static struct i2c_driver sec_pmic_driver = { |
487 | .driver = { | 487 | .driver = { |
488 | .name = "sec_pmic", | 488 | .name = "sec_pmic", |
489 | .owner = THIS_MODULE, | ||
490 | .pm = &sec_pmic_pm_ops, | 489 | .pm = &sec_pmic_pm_ops, |
491 | .of_match_table = of_match_ptr(sec_dt_match), | 490 | .of_match_table = of_match_ptr(sec_dt_match), |
492 | }, | 491 | }, |
diff --git a/drivers/mfd/si476x-i2c.c b/drivers/mfd/si476x-i2c.c index e3deb466628b..fb4ce6d04c30 100644 --- a/drivers/mfd/si476x-i2c.c +++ b/drivers/mfd/si476x-i2c.c | |||
@@ -873,7 +873,6 @@ MODULE_DEVICE_TABLE(i2c, si476x_id); | |||
873 | static struct i2c_driver si476x_core_driver = { | 873 | static struct i2c_driver si476x_core_driver = { |
874 | .driver = { | 874 | .driver = { |
875 | .name = "si476x-core", | 875 | .name = "si476x-core", |
876 | .owner = THIS_MODULE, | ||
877 | }, | 876 | }, |
878 | .probe = si476x_core_probe, | 877 | .probe = si476x_core_probe, |
879 | .remove = si476x_core_remove, | 878 | .remove = si476x_core_remove, |
diff --git a/drivers/mfd/smsc-ece1099.c b/drivers/mfd/smsc-ece1099.c index 03246880d484..a4c0df71c8b3 100644 --- a/drivers/mfd/smsc-ece1099.c +++ b/drivers/mfd/smsc-ece1099.c | |||
@@ -98,7 +98,6 @@ MODULE_DEVICE_TABLE(i2c, smsc_i2c_id); | |||
98 | static struct i2c_driver smsc_i2c_driver = { | 98 | static struct i2c_driver smsc_i2c_driver = { |
99 | .driver = { | 99 | .driver = { |
100 | .name = "smsc", | 100 | .name = "smsc", |
101 | .owner = THIS_MODULE, | ||
102 | }, | 101 | }, |
103 | .probe = smsc_i2c_probe, | 102 | .probe = smsc_i2c_probe, |
104 | .remove = smsc_i2c_remove, | 103 | .remove = smsc_i2c_remove, |
diff --git a/drivers/mfd/stmpe-i2c.c b/drivers/mfd/stmpe-i2c.c index e14c8c9d189b..c3f4aab53b07 100644 --- a/drivers/mfd/stmpe-i2c.c +++ b/drivers/mfd/stmpe-i2c.c | |||
@@ -112,7 +112,6 @@ MODULE_DEVICE_TABLE(i2c, stmpe_id); | |||
112 | static struct i2c_driver stmpe_i2c_driver = { | 112 | static struct i2c_driver stmpe_i2c_driver = { |
113 | .driver = { | 113 | .driver = { |
114 | .name = "stmpe-i2c", | 114 | .name = "stmpe-i2c", |
115 | .owner = THIS_MODULE, | ||
116 | #ifdef CONFIG_PM | 115 | #ifdef CONFIG_PM |
117 | .pm = &stmpe_dev_pm_ops, | 116 | .pm = &stmpe_dev_pm_ops, |
118 | #endif | 117 | #endif |
diff --git a/drivers/mfd/stmpe-spi.c b/drivers/mfd/stmpe-spi.c index 6fdb30e84a2b..618ba244d98a 100644 --- a/drivers/mfd/stmpe-spi.c +++ b/drivers/mfd/stmpe-spi.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/interrupt.h> | 11 | #include <linux/interrupt.h> |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/of.h> | ||
14 | #include <linux/types.h> | 15 | #include <linux/types.h> |
15 | #include "stmpe.h" | 16 | #include "stmpe.h" |
16 | 17 | ||
@@ -108,6 +109,17 @@ static int stmpe_spi_remove(struct spi_device *spi) | |||
108 | return stmpe_remove(stmpe); | 109 | return stmpe_remove(stmpe); |
109 | } | 110 | } |
110 | 111 | ||
112 | static const struct of_device_id stmpe_spi_of_match[] = { | ||
113 | { .compatible = "st,stmpe610", }, | ||
114 | { .compatible = "st,stmpe801", }, | ||
115 | { .compatible = "st,stmpe811", }, | ||
116 | { .compatible = "st,stmpe1601", }, | ||
117 | { .compatible = "st,stmpe2401", }, | ||
118 | { .compatible = "st,stmpe2403", }, | ||
119 | { /* sentinel */ }, | ||
120 | }; | ||
121 | MODULE_DEVICE_TABLE(of, stmpe_spi_of_match); | ||
122 | |||
111 | static const struct spi_device_id stmpe_spi_id[] = { | 123 | static const struct spi_device_id stmpe_spi_id[] = { |
112 | { "stmpe610", STMPE610 }, | 124 | { "stmpe610", STMPE610 }, |
113 | { "stmpe801", STMPE801 }, | 125 | { "stmpe801", STMPE801 }, |
@@ -122,6 +134,7 @@ MODULE_DEVICE_TABLE(spi, stmpe_id); | |||
122 | static struct spi_driver stmpe_spi_driver = { | 134 | static struct spi_driver stmpe_spi_driver = { |
123 | .driver = { | 135 | .driver = { |
124 | .name = "stmpe-spi", | 136 | .name = "stmpe-spi", |
137 | .of_match_table = of_match_ptr(stmpe_spi_of_match), | ||
125 | .owner = THIS_MODULE, | 138 | .owner = THIS_MODULE, |
126 | #ifdef CONFIG_PM | 139 | #ifdef CONFIG_PM |
127 | .pm = &stmpe_dev_pm_ops, | 140 | .pm = &stmpe_dev_pm_ops, |
diff --git a/drivers/mfd/stmpe.c b/drivers/mfd/stmpe.c index 18c4d72d1d2a..e971af86ce1e 100644 --- a/drivers/mfd/stmpe.c +++ b/drivers/mfd/stmpe.c | |||
@@ -971,20 +971,13 @@ static int stmpe_irq_map(struct irq_domain *d, unsigned int virq, | |||
971 | irq_set_chip_data(virq, stmpe); | 971 | irq_set_chip_data(virq, stmpe); |
972 | irq_set_chip_and_handler(virq, chip, handle_edge_irq); | 972 | irq_set_chip_and_handler(virq, chip, handle_edge_irq); |
973 | irq_set_nested_thread(virq, 1); | 973 | irq_set_nested_thread(virq, 1); |
974 | #ifdef CONFIG_ARM | ||
975 | set_irq_flags(virq, IRQF_VALID); | ||
976 | #else | ||
977 | irq_set_noprobe(virq); | 974 | irq_set_noprobe(virq); |
978 | #endif | ||
979 | 975 | ||
980 | return 0; | 976 | return 0; |
981 | } | 977 | } |
982 | 978 | ||
983 | static void stmpe_irq_unmap(struct irq_domain *d, unsigned int virq) | 979 | static void stmpe_irq_unmap(struct irq_domain *d, unsigned int virq) |
984 | { | 980 | { |
985 | #ifdef CONFIG_ARM | ||
986 | set_irq_flags(virq, 0); | ||
987 | #endif | ||
988 | irq_set_chip_and_handler(virq, NULL, NULL); | 981 | irq_set_chip_and_handler(virq, NULL, NULL); |
989 | irq_set_chip_data(virq, NULL); | 982 | irq_set_chip_data(virq, NULL); |
990 | } | 983 | } |
diff --git a/drivers/mfd/stw481x.c b/drivers/mfd/stw481x.c index 7ceb3df09e25..ca613df36143 100644 --- a/drivers/mfd/stw481x.c +++ b/drivers/mfd/stw481x.c | |||
@@ -231,6 +231,7 @@ static const struct i2c_device_id stw481x_id[] = { | |||
231 | { "stw481x", 0 }, | 231 | { "stw481x", 0 }, |
232 | { }, | 232 | { }, |
233 | }; | 233 | }; |
234 | MODULE_DEVICE_TABLE(i2c, stw481x_id); | ||
234 | 235 | ||
235 | static const struct of_device_id stw481x_match[] = { | 236 | static const struct of_device_id stw481x_match[] = { |
236 | { .compatible = "st,stw4810", }, | 237 | { .compatible = "st,stw4810", }, |
diff --git a/drivers/mfd/t7l66xb.c b/drivers/mfd/t7l66xb.c index c09fb5dccd50..16fc1adc4fa3 100644 --- a/drivers/mfd/t7l66xb.c +++ b/drivers/mfd/t7l66xb.c | |||
@@ -187,7 +187,7 @@ static struct mfd_cell t7l66xb_cells[] = { | |||
187 | /* Handle the T7L66XB interrupt mux */ | 187 | /* Handle the T7L66XB interrupt mux */ |
188 | static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc) | 188 | static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc) |
189 | { | 189 | { |
190 | struct t7l66xb *t7l66xb = irq_get_handler_data(irq); | 190 | struct t7l66xb *t7l66xb = irq_desc_get_handler_data(desc); |
191 | unsigned int isr; | 191 | unsigned int isr; |
192 | unsigned int i, irq_base; | 192 | unsigned int i, irq_base; |
193 | 193 | ||
@@ -246,14 +246,10 @@ static void t7l66xb_attach_irq(struct platform_device *dev) | |||
246 | for (irq = irq_base; irq < irq_base + T7L66XB_NR_IRQS; irq++) { | 246 | for (irq = irq_base; irq < irq_base + T7L66XB_NR_IRQS; irq++) { |
247 | irq_set_chip_and_handler(irq, &t7l66xb_chip, handle_level_irq); | 247 | irq_set_chip_and_handler(irq, &t7l66xb_chip, handle_level_irq); |
248 | irq_set_chip_data(irq, t7l66xb); | 248 | irq_set_chip_data(irq, t7l66xb); |
249 | #ifdef CONFIG_ARM | ||
250 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | ||
251 | #endif | ||
252 | } | 249 | } |
253 | 250 | ||
254 | irq_set_irq_type(t7l66xb->irq, IRQ_TYPE_EDGE_FALLING); | 251 | irq_set_irq_type(t7l66xb->irq, IRQ_TYPE_EDGE_FALLING); |
255 | irq_set_handler_data(t7l66xb->irq, t7l66xb); | 252 | irq_set_chained_handler_and_data(t7l66xb->irq, t7l66xb_irq, t7l66xb); |
256 | irq_set_chained_handler(t7l66xb->irq, t7l66xb_irq); | ||
257 | } | 253 | } |
258 | 254 | ||
259 | static void t7l66xb_detach_irq(struct platform_device *dev) | 255 | static void t7l66xb_detach_irq(struct platform_device *dev) |
@@ -263,13 +259,9 @@ static void t7l66xb_detach_irq(struct platform_device *dev) | |||
263 | 259 | ||
264 | irq_base = t7l66xb->irq_base; | 260 | irq_base = t7l66xb->irq_base; |
265 | 261 | ||
266 | irq_set_chained_handler(t7l66xb->irq, NULL); | 262 | irq_set_chained_handler_and_data(t7l66xb->irq, NULL, NULL); |
267 | irq_set_handler_data(t7l66xb->irq, NULL); | ||
268 | 263 | ||
269 | for (irq = irq_base; irq < irq_base + T7L66XB_NR_IRQS; irq++) { | 264 | for (irq = irq_base; irq < irq_base + T7L66XB_NR_IRQS; irq++) { |
270 | #ifdef CONFIG_ARM | ||
271 | set_irq_flags(irq, 0); | ||
272 | #endif | ||
273 | irq_set_chip(irq, NULL); | 265 | irq_set_chip(irq, NULL); |
274 | irq_set_chip_data(irq, NULL); | 266 | irq_set_chip_data(irq, NULL); |
275 | } | 267 | } |
@@ -318,7 +310,7 @@ static int t7l66xb_probe(struct platform_device *dev) | |||
318 | struct resource *iomem, *rscr; | 310 | struct resource *iomem, *rscr; |
319 | int ret; | 311 | int ret; |
320 | 312 | ||
321 | if (pdata == NULL) | 313 | if (!pdata) |
322 | return -EINVAL; | 314 | return -EINVAL; |
323 | 315 | ||
324 | iomem = platform_get_resource(dev, IORESOURCE_MEM, 0); | 316 | iomem = platform_get_resource(dev, IORESOURCE_MEM, 0); |
@@ -371,7 +363,7 @@ static int t7l66xb_probe(struct platform_device *dev) | |||
371 | 363 | ||
372 | clk_prepare_enable(t7l66xb->clk48m); | 364 | clk_prepare_enable(t7l66xb->clk48m); |
373 | 365 | ||
374 | if (pdata && pdata->enable) | 366 | if (pdata->enable) |
375 | pdata->enable(dev); | 367 | pdata->enable(dev); |
376 | 368 | ||
377 | /* Mask all interrupts */ | 369 | /* Mask all interrupts */ |
diff --git a/drivers/mfd/tc3589x.c b/drivers/mfd/tc3589x.c index 96d420dfc15d..274bf39968aa 100644 --- a/drivers/mfd/tc3589x.c +++ b/drivers/mfd/tc3589x.c | |||
@@ -215,20 +215,13 @@ static int tc3589x_irq_map(struct irq_domain *d, unsigned int virq, | |||
215 | irq_set_chip_and_handler(virq, &dummy_irq_chip, | 215 | irq_set_chip_and_handler(virq, &dummy_irq_chip, |
216 | handle_edge_irq); | 216 | handle_edge_irq); |
217 | irq_set_nested_thread(virq, 1); | 217 | irq_set_nested_thread(virq, 1); |
218 | #ifdef CONFIG_ARM | ||
219 | set_irq_flags(virq, IRQF_VALID); | ||
220 | #else | ||
221 | irq_set_noprobe(virq); | 218 | irq_set_noprobe(virq); |
222 | #endif | ||
223 | 219 | ||
224 | return 0; | 220 | return 0; |
225 | } | 221 | } |
226 | 222 | ||
227 | static void tc3589x_irq_unmap(struct irq_domain *d, unsigned int virq) | 223 | static void tc3589x_irq_unmap(struct irq_domain *d, unsigned int virq) |
228 | { | 224 | { |
229 | #ifdef CONFIG_ARM | ||
230 | set_irq_flags(virq, 0); | ||
231 | #endif | ||
232 | irq_set_chip_and_handler(virq, NULL, NULL); | 225 | irq_set_chip_and_handler(virq, NULL, NULL); |
233 | irq_set_chip_data(virq, NULL); | 226 | irq_set_chip_data(virq, NULL); |
234 | } | 227 | } |
@@ -492,7 +485,6 @@ MODULE_DEVICE_TABLE(i2c, tc3589x_id); | |||
492 | static struct i2c_driver tc3589x_driver = { | 485 | static struct i2c_driver tc3589x_driver = { |
493 | .driver = { | 486 | .driver = { |
494 | .name = "tc3589x", | 487 | .name = "tc3589x", |
495 | .owner = THIS_MODULE, | ||
496 | .pm = &tc3589x_dev_pm_ops, | 488 | .pm = &tc3589x_dev_pm_ops, |
497 | .of_match_table = of_match_ptr(tc3589x_match), | 489 | .of_match_table = of_match_ptr(tc3589x_match), |
498 | }, | 490 | }, |
diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c index 63458b39a97d..775b9aca871a 100644 --- a/drivers/mfd/tc6393xb.c +++ b/drivers/mfd/tc6393xb.c | |||
@@ -525,7 +525,7 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base) | |||
525 | static void | 525 | static void |
526 | tc6393xb_irq(unsigned int irq, struct irq_desc *desc) | 526 | tc6393xb_irq(unsigned int irq, struct irq_desc *desc) |
527 | { | 527 | { |
528 | struct tc6393xb *tc6393xb = irq_get_handler_data(irq); | 528 | struct tc6393xb *tc6393xb = irq_desc_get_handler_data(desc); |
529 | unsigned int isr; | 529 | unsigned int isr; |
530 | unsigned int i, irq_base; | 530 | unsigned int i, irq_base; |
531 | 531 | ||
@@ -586,12 +586,12 @@ static void tc6393xb_attach_irq(struct platform_device *dev) | |||
586 | for (irq = irq_base; irq < irq_base + TC6393XB_NR_IRQS; irq++) { | 586 | for (irq = irq_base; irq < irq_base + TC6393XB_NR_IRQS; irq++) { |
587 | irq_set_chip_and_handler(irq, &tc6393xb_chip, handle_edge_irq); | 587 | irq_set_chip_and_handler(irq, &tc6393xb_chip, handle_edge_irq); |
588 | irq_set_chip_data(irq, tc6393xb); | 588 | irq_set_chip_data(irq, tc6393xb); |
589 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | 589 | irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
590 | } | 590 | } |
591 | 591 | ||
592 | irq_set_irq_type(tc6393xb->irq, IRQ_TYPE_EDGE_FALLING); | 592 | irq_set_irq_type(tc6393xb->irq, IRQ_TYPE_EDGE_FALLING); |
593 | irq_set_handler_data(tc6393xb->irq, tc6393xb); | 593 | irq_set_chained_handler_and_data(tc6393xb->irq, tc6393xb_irq, |
594 | irq_set_chained_handler(tc6393xb->irq, tc6393xb_irq); | 594 | tc6393xb); |
595 | } | 595 | } |
596 | 596 | ||
597 | static void tc6393xb_detach_irq(struct platform_device *dev) | 597 | static void tc6393xb_detach_irq(struct platform_device *dev) |
@@ -599,13 +599,12 @@ static void tc6393xb_detach_irq(struct platform_device *dev) | |||
599 | struct tc6393xb *tc6393xb = platform_get_drvdata(dev); | 599 | struct tc6393xb *tc6393xb = platform_get_drvdata(dev); |
600 | unsigned int irq, irq_base; | 600 | unsigned int irq, irq_base; |
601 | 601 | ||
602 | irq_set_chained_handler(tc6393xb->irq, NULL); | 602 | irq_set_chained_handler_and_data(tc6393xb->irq, NULL, NULL); |
603 | irq_set_handler_data(tc6393xb->irq, NULL); | ||
604 | 603 | ||
605 | irq_base = tc6393xb->irq_base; | 604 | irq_base = tc6393xb->irq_base; |
606 | 605 | ||
607 | for (irq = irq_base; irq < irq_base + TC6393XB_NR_IRQS; irq++) { | 606 | for (irq = irq_base; irq < irq_base + TC6393XB_NR_IRQS; irq++) { |
608 | set_irq_flags(irq, 0); | 607 | irq_set_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
609 | irq_set_chip(irq, NULL); | 608 | irq_set_chip(irq, NULL); |
610 | irq_set_chip_data(irq, NULL); | 609 | irq_set_chip_data(irq, NULL); |
611 | } | 610 | } |
diff --git a/drivers/mfd/tps6507x.c b/drivers/mfd/tps6507x.c index a2e1990c9de7..1ab3dd6c8adf 100644 --- a/drivers/mfd/tps6507x.c +++ b/drivers/mfd/tps6507x.c | |||
@@ -129,7 +129,6 @@ MODULE_DEVICE_TABLE(of, tps6507x_of_match); | |||
129 | static struct i2c_driver tps6507x_i2c_driver = { | 129 | static struct i2c_driver tps6507x_i2c_driver = { |
130 | .driver = { | 130 | .driver = { |
131 | .name = "tps6507x", | 131 | .name = "tps6507x", |
132 | .owner = THIS_MODULE, | ||
133 | .of_match_table = of_match_ptr(tps6507x_of_match), | 132 | .of_match_table = of_match_ptr(tps6507x_of_match), |
134 | }, | 133 | }, |
135 | .probe = tps6507x_i2c_probe, | 134 | .probe = tps6507x_i2c_probe, |
diff --git a/drivers/mfd/tps65090.c b/drivers/mfd/tps65090.c index 14b62e11aff4..f88085ad9772 100644 --- a/drivers/mfd/tps65090.c +++ b/drivers/mfd/tps65090.c | |||
@@ -259,7 +259,6 @@ MODULE_DEVICE_TABLE(i2c, tps65090_id_table); | |||
259 | static struct i2c_driver tps65090_driver = { | 259 | static struct i2c_driver tps65090_driver = { |
260 | .driver = { | 260 | .driver = { |
261 | .name = "tps65090", | 261 | .name = "tps65090", |
262 | .owner = THIS_MODULE, | ||
263 | .of_match_table = of_match_ptr(tps65090_of_match), | 262 | .of_match_table = of_match_ptr(tps65090_of_match), |
264 | }, | 263 | }, |
265 | .probe = tps65090_i2c_probe, | 264 | .probe = tps65090_i2c_probe, |
diff --git a/drivers/mfd/tps65217.c b/drivers/mfd/tps65217.c index 7d1cfc1d3ce0..55add0453ae9 100644 --- a/drivers/mfd/tps65217.c +++ b/drivers/mfd/tps65217.c | |||
@@ -156,6 +156,7 @@ static const struct of_device_id tps65217_of_match[] = { | |||
156 | { .compatible = "ti,tps65217", .data = (void *)TPS65217 }, | 156 | { .compatible = "ti,tps65217", .data = (void *)TPS65217 }, |
157 | { /* sentinel */ }, | 157 | { /* sentinel */ }, |
158 | }; | 158 | }; |
159 | MODULE_DEVICE_TABLE(of, tps65217_of_match); | ||
159 | 160 | ||
160 | static int tps65217_probe(struct i2c_client *client, | 161 | static int tps65217_probe(struct i2c_client *client, |
161 | const struct i2c_device_id *ids) | 162 | const struct i2c_device_id *ids) |
@@ -248,7 +249,6 @@ MODULE_DEVICE_TABLE(i2c, tps65217_id_table); | |||
248 | static struct i2c_driver tps65217_driver = { | 249 | static struct i2c_driver tps65217_driver = { |
249 | .driver = { | 250 | .driver = { |
250 | .name = "tps65217", | 251 | .name = "tps65217", |
251 | .owner = THIS_MODULE, | ||
252 | .of_match_table = tps65217_of_match, | 252 | .of_match_table = tps65217_of_match, |
253 | }, | 253 | }, |
254 | .id_table = tps65217_id_table, | 254 | .id_table = tps65217_id_table, |
diff --git a/drivers/mfd/tps65218.c b/drivers/mfd/tps65218.c index 7af11a8b9753..80b9dc363cd8 100644 --- a/drivers/mfd/tps65218.c +++ b/drivers/mfd/tps65218.c | |||
@@ -211,6 +211,7 @@ static const struct of_device_id of_tps65218_match_table[] = { | |||
211 | { .compatible = "ti,tps65218", }, | 211 | { .compatible = "ti,tps65218", }, |
212 | {} | 212 | {} |
213 | }; | 213 | }; |
214 | MODULE_DEVICE_TABLE(of, of_tps65218_match_table); | ||
214 | 215 | ||
215 | static int tps65218_probe(struct i2c_client *client, | 216 | static int tps65218_probe(struct i2c_client *client, |
216 | const struct i2c_device_id *ids) | 217 | const struct i2c_device_id *ids) |
@@ -280,7 +281,6 @@ MODULE_DEVICE_TABLE(i2c, tps65218_id_table); | |||
280 | static struct i2c_driver tps65218_driver = { | 281 | static struct i2c_driver tps65218_driver = { |
281 | .driver = { | 282 | .driver = { |
282 | .name = "tps65218", | 283 | .name = "tps65218", |
283 | .owner = THIS_MODULE, | ||
284 | .of_match_table = of_tps65218_match_table, | 284 | .of_match_table = of_tps65218_match_table, |
285 | }, | 285 | }, |
286 | .probe = tps65218_probe, | 286 | .probe = tps65218_probe, |
diff --git a/drivers/mfd/tps6586x.c b/drivers/mfd/tps6586x.c index e0a2583916ce..5628a6b5b19b 100644 --- a/drivers/mfd/tps6586x.c +++ b/drivers/mfd/tps6586x.c | |||
@@ -52,7 +52,7 @@ | |||
52 | #define TPS6586X_VERSIONCRC 0xcd | 52 | #define TPS6586X_VERSIONCRC 0xcd |
53 | 53 | ||
54 | /* Maximum register */ | 54 | /* Maximum register */ |
55 | #define TPS6586X_MAX_REGISTER (TPS6586X_VERSIONCRC + 1) | 55 | #define TPS6586X_MAX_REGISTER TPS6586X_VERSIONCRC |
56 | 56 | ||
57 | struct tps6586x_irq_data { | 57 | struct tps6586x_irq_data { |
58 | u8 mask_reg; | 58 | u8 mask_reg; |
@@ -299,14 +299,7 @@ static int tps6586x_irq_map(struct irq_domain *h, unsigned int virq, | |||
299 | irq_set_chip_data(virq, tps6586x); | 299 | irq_set_chip_data(virq, tps6586x); |
300 | irq_set_chip_and_handler(virq, &tps6586x_irq_chip, handle_simple_irq); | 300 | irq_set_chip_and_handler(virq, &tps6586x_irq_chip, handle_simple_irq); |
301 | irq_set_nested_thread(virq, 1); | 301 | irq_set_nested_thread(virq, 1); |
302 | |||
303 | /* ARM needs us to explicitly flag the IRQ as valid | ||
304 | * and will set them noprobe when we do so. */ | ||
305 | #ifdef CONFIG_ARM | ||
306 | set_irq_flags(virq, IRQF_VALID); | ||
307 | #else | ||
308 | irq_set_noprobe(virq); | 302 | irq_set_noprobe(virq); |
309 | #endif | ||
310 | 303 | ||
311 | return 0; | 304 | return 0; |
312 | } | 305 | } |
@@ -467,7 +460,7 @@ static bool is_volatile_reg(struct device *dev, unsigned int reg) | |||
467 | static const struct regmap_config tps6586x_regmap_config = { | 460 | static const struct regmap_config tps6586x_regmap_config = { |
468 | .reg_bits = 8, | 461 | .reg_bits = 8, |
469 | .val_bits = 8, | 462 | .val_bits = 8, |
470 | .max_register = TPS6586X_MAX_REGISTER - 1, | 463 | .max_register = TPS6586X_MAX_REGISTER, |
471 | .volatile_reg = is_volatile_reg, | 464 | .volatile_reg = is_volatile_reg, |
472 | .cache_type = REGCACHE_RBTREE, | 465 | .cache_type = REGCACHE_RBTREE, |
473 | }; | 466 | }; |
@@ -610,7 +603,6 @@ MODULE_DEVICE_TABLE(i2c, tps6586x_id_table); | |||
610 | static struct i2c_driver tps6586x_driver = { | 603 | static struct i2c_driver tps6586x_driver = { |
611 | .driver = { | 604 | .driver = { |
612 | .name = "tps6586x", | 605 | .name = "tps6586x", |
613 | .owner = THIS_MODULE, | ||
614 | .of_match_table = of_match_ptr(tps6586x_of_match), | 606 | .of_match_table = of_match_ptr(tps6586x_of_match), |
615 | }, | 607 | }, |
616 | .probe = tps6586x_i2c_probe, | 608 | .probe = tps6586x_i2c_probe, |
diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c index 7612d89850dd..f7ab115483a9 100644 --- a/drivers/mfd/tps65910.c +++ b/drivers/mfd/tps65910.c | |||
@@ -544,7 +544,6 @@ MODULE_DEVICE_TABLE(i2c, tps65910_i2c_id); | |||
544 | static struct i2c_driver tps65910_i2c_driver = { | 544 | static struct i2c_driver tps65910_i2c_driver = { |
545 | .driver = { | 545 | .driver = { |
546 | .name = "tps65910", | 546 | .name = "tps65910", |
547 | .owner = THIS_MODULE, | ||
548 | .of_match_table = of_match_ptr(tps65910_of_match), | 547 | .of_match_table = of_match_ptr(tps65910_of_match), |
549 | }, | 548 | }, |
550 | .probe = tps65910_i2c_probe, | 549 | .probe = tps65910_i2c_probe, |
diff --git a/drivers/mfd/tps65912-i2c.c b/drivers/mfd/tps65912-i2c.c index 6a6343ee95fe..7e55640b3ed5 100644 --- a/drivers/mfd/tps65912-i2c.c +++ b/drivers/mfd/tps65912-i2c.c | |||
@@ -109,7 +109,6 @@ MODULE_DEVICE_TABLE(i2c, tps65912_i2c_id); | |||
109 | static struct i2c_driver tps65912_i2c_driver = { | 109 | static struct i2c_driver tps65912_i2c_driver = { |
110 | .driver = { | 110 | .driver = { |
111 | .name = "tps65912", | 111 | .name = "tps65912", |
112 | .owner = THIS_MODULE, | ||
113 | }, | 112 | }, |
114 | .probe = tps65912_i2c_probe, | 113 | .probe = tps65912_i2c_probe, |
115 | .remove = tps65912_i2c_remove, | 114 | .remove = tps65912_i2c_remove, |
diff --git a/drivers/mfd/tps65912-irq.c b/drivers/mfd/tps65912-irq.c index fbecec7f1e3d..db2c29cb709b 100644 --- a/drivers/mfd/tps65912-irq.c +++ b/drivers/mfd/tps65912-irq.c | |||
@@ -197,13 +197,7 @@ int tps65912_irq_init(struct tps65912 *tps65912, int irq, | |||
197 | irq_set_chip_and_handler(cur_irq, &tps65912_irq_chip, | 197 | irq_set_chip_and_handler(cur_irq, &tps65912_irq_chip, |
198 | handle_edge_irq); | 198 | handle_edge_irq); |
199 | irq_set_nested_thread(cur_irq, 1); | 199 | irq_set_nested_thread(cur_irq, 1); |
200 | /* ARM needs us to explicitly flag the IRQ as valid | 200 | irq_clear_status_flags(cur_irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
201 | * and will set them noprobe when we do so. */ | ||
202 | #ifdef CONFIG_ARM | ||
203 | set_irq_flags(cur_irq, IRQF_VALID); | ||
204 | #else | ||
205 | irq_set_noprobe(cur_irq); | ||
206 | #endif | ||
207 | } | 201 | } |
208 | 202 | ||
209 | ret = request_threaded_irq(irq, NULL, tps65912_irq, flags, | 203 | ret = request_threaded_irq(irq, NULL, tps65912_irq, flags, |
diff --git a/drivers/mfd/tps80031.c b/drivers/mfd/tps80031.c index ed6c5b0956e2..0812df3b0d47 100644 --- a/drivers/mfd/tps80031.c +++ b/drivers/mfd/tps80031.c | |||
@@ -549,7 +549,6 @@ MODULE_DEVICE_TABLE(i2c, tps80031_id_table); | |||
549 | static struct i2c_driver tps80031_driver = { | 549 | static struct i2c_driver tps80031_driver = { |
550 | .driver = { | 550 | .driver = { |
551 | .name = "tps80031", | 551 | .name = "tps80031", |
552 | .owner = THIS_MODULE, | ||
553 | }, | 552 | }, |
554 | .probe = tps80031_probe, | 553 | .probe = tps80031_probe, |
555 | .remove = tps80031_remove, | 554 | .remove = tps80031_remove, |
diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c index a3fa7f4f1fb4..40e51b0baa46 100644 --- a/drivers/mfd/twl4030-irq.c +++ b/drivers/mfd/twl4030-irq.c | |||
@@ -419,16 +419,7 @@ static int twl4030_init_sih_modules(unsigned line) | |||
419 | 419 | ||
420 | static inline void activate_irq(int irq) | 420 | static inline void activate_irq(int irq) |
421 | { | 421 | { |
422 | #ifdef CONFIG_ARM | 422 | irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
423 | /* | ||
424 | * ARM requires an extra step to clear IRQ_NOREQUEST, which it | ||
425 | * sets on behalf of every irq_chip. Also sets IRQ_NOPROBE. | ||
426 | */ | ||
427 | set_irq_flags(irq, IRQF_VALID); | ||
428 | #else | ||
429 | /* same effect on other architectures */ | ||
430 | irq_set_noprobe(irq); | ||
431 | #endif | ||
432 | } | 423 | } |
433 | 424 | ||
434 | /*----------------------------------------------------------------------*/ | 425 | /*----------------------------------------------------------------------*/ |
diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c index 20fb58179ada..53574508a613 100644 --- a/drivers/mfd/twl6030-irq.c +++ b/drivers/mfd/twl6030-irq.c | |||
@@ -231,7 +231,7 @@ static irqreturn_t twl6030_irq_thread(int irq, void *data) | |||
231 | 231 | ||
232 | static int twl6030_irq_set_wake(struct irq_data *d, unsigned int on) | 232 | static int twl6030_irq_set_wake(struct irq_data *d, unsigned int on) |
233 | { | 233 | { |
234 | struct twl6030_irq *pdata = irq_get_chip_data(d->irq); | 234 | struct twl6030_irq *pdata = irq_data_get_irq_chip_data(d); |
235 | 235 | ||
236 | if (on) | 236 | if (on) |
237 | atomic_inc(&pdata->wakeirqs); | 237 | atomic_inc(&pdata->wakeirqs); |
@@ -352,26 +352,13 @@ static int twl6030_irq_map(struct irq_domain *d, unsigned int virq, | |||
352 | irq_set_chip_and_handler(virq, &pdata->irq_chip, handle_simple_irq); | 352 | irq_set_chip_and_handler(virq, &pdata->irq_chip, handle_simple_irq); |
353 | irq_set_nested_thread(virq, true); | 353 | irq_set_nested_thread(virq, true); |
354 | irq_set_parent(virq, pdata->twl_irq); | 354 | irq_set_parent(virq, pdata->twl_irq); |
355 | |||
356 | #ifdef CONFIG_ARM | ||
357 | /* | ||
358 | * ARM requires an extra step to clear IRQ_NOREQUEST, which it | ||
359 | * sets on behalf of every irq_chip. Also sets IRQ_NOPROBE. | ||
360 | */ | ||
361 | set_irq_flags(virq, IRQF_VALID); | ||
362 | #else | ||
363 | /* same effect on other architectures */ | ||
364 | irq_set_noprobe(virq); | 355 | irq_set_noprobe(virq); |
365 | #endif | ||
366 | 356 | ||
367 | return 0; | 357 | return 0; |
368 | } | 358 | } |
369 | 359 | ||
370 | static void twl6030_irq_unmap(struct irq_domain *d, unsigned int virq) | 360 | static void twl6030_irq_unmap(struct irq_domain *d, unsigned int virq) |
371 | { | 361 | { |
372 | #ifdef CONFIG_ARM | ||
373 | set_irq_flags(virq, 0); | ||
374 | #endif | ||
375 | irq_set_chip_and_handler(virq, NULL, NULL); | 362 | irq_set_chip_and_handler(virq, NULL, NULL); |
376 | irq_set_chip_data(virq, NULL); | 363 | irq_set_chip_data(virq, NULL); |
377 | } | 364 | } |
diff --git a/drivers/mfd/twl6040.c b/drivers/mfd/twl6040.c index c5265c1262c5..fbc9b6eb20a2 100644 --- a/drivers/mfd/twl6040.c +++ b/drivers/mfd/twl6040.c | |||
@@ -801,7 +801,6 @@ MODULE_DEVICE_TABLE(i2c, twl6040_i2c_id); | |||
801 | static struct i2c_driver twl6040_driver = { | 801 | static struct i2c_driver twl6040_driver = { |
802 | .driver = { | 802 | .driver = { |
803 | .name = "twl6040", | 803 | .name = "twl6040", |
804 | .owner = THIS_MODULE, | ||
805 | }, | 804 | }, |
806 | .probe = twl6040_probe, | 805 | .probe = twl6040_probe, |
807 | .remove = twl6040_remove, | 806 | .remove = twl6040_remove, |
diff --git a/drivers/mfd/ucb1x00-core.c b/drivers/mfd/ucb1x00-core.c index 3591550598ad..9a2302129711 100644 --- a/drivers/mfd/ucb1x00-core.c +++ b/drivers/mfd/ucb1x00-core.c | |||
@@ -282,7 +282,7 @@ void ucb1x00_adc_disable(struct ucb1x00 *ucb) | |||
282 | * SIBCLK to talk to the chip. We leave the clock running until | 282 | * SIBCLK to talk to the chip. We leave the clock running until |
283 | * we have finished processing all interrupts from the chip. | 283 | * we have finished processing all interrupts from the chip. |
284 | */ | 284 | */ |
285 | static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc) | 285 | static void ucb1x00_irq(unsigned int __irq, struct irq_desc *desc) |
286 | { | 286 | { |
287 | struct ucb1x00 *ucb = irq_desc_get_handler_data(desc); | 287 | struct ucb1x00 *ucb = irq_desc_get_handler_data(desc); |
288 | unsigned int isr, i; | 288 | unsigned int isr, i; |
@@ -292,7 +292,7 @@ static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc) | |||
292 | ucb1x00_reg_write(ucb, UCB_IE_CLEAR, isr); | 292 | ucb1x00_reg_write(ucb, UCB_IE_CLEAR, isr); |
293 | ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 0); | 293 | ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 0); |
294 | 294 | ||
295 | for (i = 0; i < 16 && isr; i++, isr >>= 1, irq++) | 295 | for (i = 0; i < 16 && isr; i++, isr >>= 1) |
296 | if (isr & 1) | 296 | if (isr & 1) |
297 | generic_handle_irq(ucb->irq_base + i); | 297 | generic_handle_irq(ucb->irq_base + i); |
298 | ucb1x00_disable(ucb); | 298 | ucb1x00_disable(ucb); |
@@ -562,7 +562,7 @@ static int ucb1x00_probe(struct mcp *mcp) | |||
562 | 562 | ||
563 | irq_set_chip_and_handler(irq, &ucb1x00_irqchip, handle_edge_irq); | 563 | irq_set_chip_and_handler(irq, &ucb1x00_irqchip, handle_edge_irq); |
564 | irq_set_chip_data(irq, ucb); | 564 | irq_set_chip_data(irq, ucb); |
565 | set_irq_flags(irq, IRQF_VALID | IRQ_NOREQUEST); | 565 | irq_clear_status_flags(irq, IRQ_NOREQUEST); |
566 | } | 566 | } |
567 | 567 | ||
568 | irq_set_irq_type(ucb->irq, IRQ_TYPE_EDGE_RISING); | 568 | irq_set_irq_type(ucb->irq, IRQ_TYPE_EDGE_RISING); |
diff --git a/drivers/mfd/wm5102-tables.c b/drivers/mfd/wm5102-tables.c index aeae6ec123b3..a4997a5c02ce 100644 --- a/drivers/mfd/wm5102-tables.c +++ b/drivers/mfd/wm5102-tables.c | |||
@@ -266,8 +266,6 @@ static const struct reg_default wm5102_reg_default[] = { | |||
266 | { 0x00000069, 0x01FF }, /* R105 - Always On Triggers Sequence Select 4 */ | 266 | { 0x00000069, 0x01FF }, /* R105 - Always On Triggers Sequence Select 4 */ |
267 | { 0x0000006A, 0x01FF }, /* R106 - Always On Triggers Sequence Select 5 */ | 267 | { 0x0000006A, 0x01FF }, /* R106 - Always On Triggers Sequence Select 5 */ |
268 | { 0x0000006B, 0x01FF }, /* R107 - Always On Triggers Sequence Select 6 */ | 268 | { 0x0000006B, 0x01FF }, /* R107 - Always On Triggers Sequence Select 6 */ |
269 | { 0x0000006E, 0x01FF }, /* R110 - Trigger Sequence Select 32 */ | ||
270 | { 0x0000006F, 0x01FF }, /* R111 - Trigger Sequence Select 33 */ | ||
271 | { 0x00000070, 0x0000 }, /* R112 - Comfort Noise Generator */ | 269 | { 0x00000070, 0x0000 }, /* R112 - Comfort Noise Generator */ |
272 | { 0x00000090, 0x0000 }, /* R144 - Haptics Control 1 */ | 270 | { 0x00000090, 0x0000 }, /* R144 - Haptics Control 1 */ |
273 | { 0x00000091, 0x7FFF }, /* R145 - Haptics Control 2 */ | 271 | { 0x00000091, 0x7FFF }, /* R145 - Haptics Control 2 */ |
@@ -300,7 +298,6 @@ static const struct reg_default wm5102_reg_default[] = { | |||
300 | { 0x00000175, 0x0004 }, /* R373 - FLL1 Control 5 */ | 298 | { 0x00000175, 0x0004 }, /* R373 - FLL1 Control 5 */ |
301 | { 0x00000176, 0x0000 }, /* R374 - FLL1 Control 6 */ | 299 | { 0x00000176, 0x0000 }, /* R374 - FLL1 Control 6 */ |
302 | { 0x00000177, 0x0181 }, /* R375 - FLL1 Loop Filter Test 1 */ | 300 | { 0x00000177, 0x0181 }, /* R375 - FLL1 Loop Filter Test 1 */ |
303 | { 0x00000178, 0x0000 }, /* R376 - FLL1 NCO Test 0 */ | ||
304 | { 0x00000179, 0x0000 }, /* R377 - FLL1 Control 7 */ | 301 | { 0x00000179, 0x0000 }, /* R377 - FLL1 Control 7 */ |
305 | { 0x00000181, 0x0000 }, /* R385 - FLL1 Synchroniser 1 */ | 302 | { 0x00000181, 0x0000 }, /* R385 - FLL1 Synchroniser 1 */ |
306 | { 0x00000182, 0x0000 }, /* R386 - FLL1 Synchroniser 2 */ | 303 | { 0x00000182, 0x0000 }, /* R386 - FLL1 Synchroniser 2 */ |
@@ -318,7 +315,6 @@ static const struct reg_default wm5102_reg_default[] = { | |||
318 | { 0x00000195, 0x0004 }, /* R405 - FLL2 Control 5 */ | 315 | { 0x00000195, 0x0004 }, /* R405 - FLL2 Control 5 */ |
319 | { 0x00000196, 0x0000 }, /* R406 - FLL2 Control 6 */ | 316 | { 0x00000196, 0x0000 }, /* R406 - FLL2 Control 6 */ |
320 | { 0x00000197, 0x0000 }, /* R407 - FLL2 Loop Filter Test 1 */ | 317 | { 0x00000197, 0x0000 }, /* R407 - FLL2 Loop Filter Test 1 */ |
321 | { 0x00000198, 0x0000 }, /* R408 - FLL2 NCO Test 0 */ | ||
322 | { 0x00000199, 0x0000 }, /* R409 - FLL2 Control 7 */ | 318 | { 0x00000199, 0x0000 }, /* R409 - FLL2 Control 7 */ |
323 | { 0x000001A1, 0x0000 }, /* R417 - FLL2 Synchroniser 1 */ | 319 | { 0x000001A1, 0x0000 }, /* R417 - FLL2 Synchroniser 1 */ |
324 | { 0x000001A2, 0x0000 }, /* R418 - FLL2 Synchroniser 2 */ | 320 | { 0x000001A2, 0x0000 }, /* R418 - FLL2 Synchroniser 2 */ |
@@ -338,12 +334,9 @@ static const struct reg_default wm5102_reg_default[] = { | |||
338 | { 0x0000021A, 0x01A6 }, /* R538 - Mic Bias Ctrl 3 */ | 334 | { 0x0000021A, 0x01A6 }, /* R538 - Mic Bias Ctrl 3 */ |
339 | { 0x00000293, 0x0000 }, /* R659 - Accessory Detect Mode 1 */ | 335 | { 0x00000293, 0x0000 }, /* R659 - Accessory Detect Mode 1 */ |
340 | { 0x0000029B, 0x0020 }, /* R667 - Headphone Detect 1 */ | 336 | { 0x0000029B, 0x0020 }, /* R667 - Headphone Detect 1 */ |
341 | { 0x0000029C, 0x0000 }, /* R668 - Headphone Detect 2 */ | ||
342 | { 0x0000029F, 0x0000 }, /* R671 - Headphone Detect Test */ | ||
343 | { 0x000002A2, 0x0000 }, /* R674 - Micd clamp control */ | 337 | { 0x000002A2, 0x0000 }, /* R674 - Micd clamp control */ |
344 | { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ | 338 | { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ |
345 | { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ | 339 | { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ |
346 | { 0x000002A5, 0x0000 }, /* R677 - Mic Detect 3 */ | ||
347 | { 0x000002A6, 0x3737 }, /* R678 - Mic Detect Level 1 */ | 340 | { 0x000002A6, 0x3737 }, /* R678 - Mic Detect Level 1 */ |
348 | { 0x000002A7, 0x372C }, /* R679 - Mic Detect Level 2 */ | 341 | { 0x000002A7, 0x372C }, /* R679 - Mic Detect Level 2 */ |
349 | { 0x000002A8, 0x1422 }, /* R680 - Mic Detect Level 3 */ | 342 | { 0x000002A8, 0x1422 }, /* R680 - Mic Detect Level 3 */ |
@@ -887,11 +880,11 @@ static const struct reg_default wm5102_reg_default[] = { | |||
887 | { 0x00000D1B, 0xFFFF }, /* R3355 - IRQ2 Status 4 Mask */ | 880 | { 0x00000D1B, 0xFFFF }, /* R3355 - IRQ2 Status 4 Mask */ |
888 | { 0x00000D1C, 0xFFFF }, /* R3356 - IRQ2 Status 5 Mask */ | 881 | { 0x00000D1C, 0xFFFF }, /* R3356 - IRQ2 Status 5 Mask */ |
889 | { 0x00000D1F, 0x0000 }, /* R3359 - IRQ2 Control */ | 882 | { 0x00000D1F, 0x0000 }, /* R3359 - IRQ2 Control */ |
883 | { 0x00000D41, 0x0000 }, /* R3393 - ADSP2 IRQ0 */ | ||
890 | { 0x00000D53, 0xFFFF }, /* R3411 - AOD IRQ Mask IRQ1 */ | 884 | { 0x00000D53, 0xFFFF }, /* R3411 - AOD IRQ Mask IRQ1 */ |
891 | { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ | 885 | { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ |
892 | { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ | 886 | { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ |
893 | { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ | 887 | { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ |
894 | { 0x00000E01, 0x0000 }, /* R3585 - FX_Ctrl2 */ | ||
895 | { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ | 888 | { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ |
896 | { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ | 889 | { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ |
897 | { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ | 890 | { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ |
@@ -991,6 +984,7 @@ static const struct reg_default wm5102_reg_default[] = { | |||
991 | { 0x00000ECD, 0x0000 }, /* R3789 - HPLPF4_2 */ | 984 | { 0x00000ECD, 0x0000 }, /* R3789 - HPLPF4_2 */ |
992 | { 0x00000EE0, 0x0000 }, /* R3808 - ASRC_ENABLE */ | 985 | { 0x00000EE0, 0x0000 }, /* R3808 - ASRC_ENABLE */ |
993 | { 0x00000EE2, 0x0000 }, /* R3810 - ASRC_RATE1 */ | 986 | { 0x00000EE2, 0x0000 }, /* R3810 - ASRC_RATE1 */ |
987 | { 0x00000EE3, 0x0400 }, /* R3811 - ASRC_RATE2 */ | ||
994 | { 0x00000EF0, 0x0000 }, /* R3824 - ISRC 1 CTRL 1 */ | 988 | { 0x00000EF0, 0x0000 }, /* R3824 - ISRC 1 CTRL 1 */ |
995 | { 0x00000EF1, 0x0000 }, /* R3825 - ISRC 1 CTRL 2 */ | 989 | { 0x00000EF1, 0x0000 }, /* R3825 - ISRC 1 CTRL 2 */ |
996 | { 0x00000EF2, 0x0000 }, /* R3826 - ISRC 1 CTRL 3 */ | 990 | { 0x00000EF2, 0x0000 }, /* R3826 - ISRC 1 CTRL 3 */ |
@@ -998,7 +992,6 @@ static const struct reg_default wm5102_reg_default[] = { | |||
998 | { 0x00000EF4, 0x0000 }, /* R3828 - ISRC 2 CTRL 2 */ | 992 | { 0x00000EF4, 0x0000 }, /* R3828 - ISRC 2 CTRL 2 */ |
999 | { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */ | 993 | { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */ |
1000 | { 0x00001100, 0x0010 }, /* R4352 - DSP1 Control 1 */ | 994 | { 0x00001100, 0x0010 }, /* R4352 - DSP1 Control 1 */ |
1001 | { 0x00001101, 0x0000 }, /* R4353 - DSP1 Clocking 1 */ | ||
1002 | }; | 995 | }; |
1003 | 996 | ||
1004 | static bool wm5102_readable_register(struct device *dev, unsigned int reg) | 997 | static bool wm5102_readable_register(struct device *dev, unsigned int reg) |
@@ -1008,12 +1001,10 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1008 | case ARIZONA_DEVICE_REVISION: | 1001 | case ARIZONA_DEVICE_REVISION: |
1009 | case ARIZONA_CTRL_IF_SPI_CFG_1: | 1002 | case ARIZONA_CTRL_IF_SPI_CFG_1: |
1010 | case ARIZONA_CTRL_IF_I2C1_CFG_1: | 1003 | case ARIZONA_CTRL_IF_I2C1_CFG_1: |
1011 | case ARIZONA_CTRL_IF_STATUS_1: | ||
1012 | case ARIZONA_WRITE_SEQUENCER_CTRL_0: | 1004 | case ARIZONA_WRITE_SEQUENCER_CTRL_0: |
1013 | case ARIZONA_WRITE_SEQUENCER_CTRL_1: | 1005 | case ARIZONA_WRITE_SEQUENCER_CTRL_1: |
1014 | case ARIZONA_WRITE_SEQUENCER_CTRL_2: | 1006 | case ARIZONA_WRITE_SEQUENCER_CTRL_2: |
1015 | case ARIZONA_WRITE_SEQUENCER_CTRL_3: | 1007 | case ARIZONA_WRITE_SEQUENCER_CTRL_3: |
1016 | case ARIZONA_WRITE_SEQUENCER_PROM: | ||
1017 | case ARIZONA_TONE_GENERATOR_1: | 1008 | case ARIZONA_TONE_GENERATOR_1: |
1018 | case ARIZONA_TONE_GENERATOR_2: | 1009 | case ARIZONA_TONE_GENERATOR_2: |
1019 | case ARIZONA_TONE_GENERATOR_3: | 1010 | case ARIZONA_TONE_GENERATOR_3: |
@@ -1034,8 +1025,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1034 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4: | 1025 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4: |
1035 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_5: | 1026 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_5: |
1036 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_6: | 1027 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_6: |
1037 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_7: | ||
1038 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_8: | ||
1039 | case ARIZONA_COMFORT_NOISE_GENERATOR: | 1028 | case ARIZONA_COMFORT_NOISE_GENERATOR: |
1040 | case ARIZONA_HAPTICS_CONTROL_1: | 1029 | case ARIZONA_HAPTICS_CONTROL_1: |
1041 | case ARIZONA_HAPTICS_CONTROL_2: | 1030 | case ARIZONA_HAPTICS_CONTROL_2: |
@@ -1176,7 +1165,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1176 | case ARIZONA_DAC_DIGITAL_VOLUME_4L: | 1165 | case ARIZONA_DAC_DIGITAL_VOLUME_4L: |
1177 | case ARIZONA_OUT_VOLUME_4L: | 1166 | case ARIZONA_OUT_VOLUME_4L: |
1178 | case ARIZONA_NOISE_GATE_SELECT_4L: | 1167 | case ARIZONA_NOISE_GATE_SELECT_4L: |
1179 | case ARIZONA_OUTPUT_PATH_CONFIG_4R: | ||
1180 | case ARIZONA_DAC_DIGITAL_VOLUME_4R: | 1168 | case ARIZONA_DAC_DIGITAL_VOLUME_4R: |
1181 | case ARIZONA_OUT_VOLUME_4R: | 1169 | case ARIZONA_OUT_VOLUME_4R: |
1182 | case ARIZONA_NOISE_GATE_SELECT_4R: | 1170 | case ARIZONA_NOISE_GATE_SELECT_4R: |
@@ -1184,7 +1172,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1184 | case ARIZONA_DAC_DIGITAL_VOLUME_5L: | 1172 | case ARIZONA_DAC_DIGITAL_VOLUME_5L: |
1185 | case ARIZONA_DAC_VOLUME_LIMIT_5L: | 1173 | case ARIZONA_DAC_VOLUME_LIMIT_5L: |
1186 | case ARIZONA_NOISE_GATE_SELECT_5L: | 1174 | case ARIZONA_NOISE_GATE_SELECT_5L: |
1187 | case ARIZONA_OUTPUT_PATH_CONFIG_5R: | ||
1188 | case ARIZONA_DAC_DIGITAL_VOLUME_5R: | 1175 | case ARIZONA_DAC_DIGITAL_VOLUME_5R: |
1189 | case ARIZONA_DAC_VOLUME_LIMIT_5R: | 1176 | case ARIZONA_DAC_VOLUME_LIMIT_5R: |
1190 | case ARIZONA_NOISE_GATE_SELECT_5R: | 1177 | case ARIZONA_NOISE_GATE_SELECT_5R: |
@@ -1195,8 +1182,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1195 | case ARIZONA_NOISE_GATE_CONTROL: | 1182 | case ARIZONA_NOISE_GATE_CONTROL: |
1196 | case ARIZONA_PDM_SPK1_CTRL_1: | 1183 | case ARIZONA_PDM_SPK1_CTRL_1: |
1197 | case ARIZONA_PDM_SPK1_CTRL_2: | 1184 | case ARIZONA_PDM_SPK1_CTRL_2: |
1198 | case ARIZONA_SPK_CTRL_2: | ||
1199 | case ARIZONA_SPK_CTRL_3: | ||
1200 | case ARIZONA_DAC_COMP_1: | 1185 | case ARIZONA_DAC_COMP_1: |
1201 | case ARIZONA_DAC_COMP_2: | 1186 | case ARIZONA_DAC_COMP_2: |
1202 | case ARIZONA_DAC_COMP_3: | 1187 | case ARIZONA_DAC_COMP_3: |
@@ -1228,7 +1213,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1228 | case ARIZONA_AIF1_FRAME_CTRL_18: | 1213 | case ARIZONA_AIF1_FRAME_CTRL_18: |
1229 | case ARIZONA_AIF1_TX_ENABLES: | 1214 | case ARIZONA_AIF1_TX_ENABLES: |
1230 | case ARIZONA_AIF1_RX_ENABLES: | 1215 | case ARIZONA_AIF1_RX_ENABLES: |
1231 | case ARIZONA_AIF1_FORCE_WRITE: | ||
1232 | case ARIZONA_AIF2_BCLK_CTRL: | 1216 | case ARIZONA_AIF2_BCLK_CTRL: |
1233 | case ARIZONA_AIF2_TX_PIN_CTRL: | 1217 | case ARIZONA_AIF2_TX_PIN_CTRL: |
1234 | case ARIZONA_AIF2_RX_PIN_CTRL: | 1218 | case ARIZONA_AIF2_RX_PIN_CTRL: |
@@ -1244,7 +1228,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1244 | case ARIZONA_AIF2_FRAME_CTRL_12: | 1228 | case ARIZONA_AIF2_FRAME_CTRL_12: |
1245 | case ARIZONA_AIF2_TX_ENABLES: | 1229 | case ARIZONA_AIF2_TX_ENABLES: |
1246 | case ARIZONA_AIF2_RX_ENABLES: | 1230 | case ARIZONA_AIF2_RX_ENABLES: |
1247 | case ARIZONA_AIF2_FORCE_WRITE: | ||
1248 | case ARIZONA_AIF3_BCLK_CTRL: | 1231 | case ARIZONA_AIF3_BCLK_CTRL: |
1249 | case ARIZONA_AIF3_TX_PIN_CTRL: | 1232 | case ARIZONA_AIF3_TX_PIN_CTRL: |
1250 | case ARIZONA_AIF3_RX_PIN_CTRL: | 1233 | case ARIZONA_AIF3_RX_PIN_CTRL: |
@@ -1260,7 +1243,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1260 | case ARIZONA_AIF3_FRAME_CTRL_12: | 1243 | case ARIZONA_AIF3_FRAME_CTRL_12: |
1261 | case ARIZONA_AIF3_TX_ENABLES: | 1244 | case ARIZONA_AIF3_TX_ENABLES: |
1262 | case ARIZONA_AIF3_RX_ENABLES: | 1245 | case ARIZONA_AIF3_RX_ENABLES: |
1263 | case ARIZONA_AIF3_FORCE_WRITE: | ||
1264 | case ARIZONA_SLIMBUS_FRAMER_REF_GEAR: | 1246 | case ARIZONA_SLIMBUS_FRAMER_REF_GEAR: |
1265 | case ARIZONA_SLIMBUS_RATES_1: | 1247 | case ARIZONA_SLIMBUS_RATES_1: |
1266 | case ARIZONA_SLIMBUS_RATES_2: | 1248 | case ARIZONA_SLIMBUS_RATES_2: |
@@ -1586,22 +1568,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1586 | case ARIZONA_DRC1RMIX_INPUT_3_VOLUME: | 1568 | case ARIZONA_DRC1RMIX_INPUT_3_VOLUME: |
1587 | case ARIZONA_DRC1RMIX_INPUT_4_SOURCE: | 1569 | case ARIZONA_DRC1RMIX_INPUT_4_SOURCE: |
1588 | case ARIZONA_DRC1RMIX_INPUT_4_VOLUME: | 1570 | case ARIZONA_DRC1RMIX_INPUT_4_VOLUME: |
1589 | case ARIZONA_DRC2LMIX_INPUT_1_SOURCE: | ||
1590 | case ARIZONA_DRC2LMIX_INPUT_1_VOLUME: | ||
1591 | case ARIZONA_DRC2LMIX_INPUT_2_SOURCE: | ||
1592 | case ARIZONA_DRC2LMIX_INPUT_2_VOLUME: | ||
1593 | case ARIZONA_DRC2LMIX_INPUT_3_SOURCE: | ||
1594 | case ARIZONA_DRC2LMIX_INPUT_3_VOLUME: | ||
1595 | case ARIZONA_DRC2LMIX_INPUT_4_SOURCE: | ||
1596 | case ARIZONA_DRC2LMIX_INPUT_4_VOLUME: | ||
1597 | case ARIZONA_DRC2RMIX_INPUT_1_SOURCE: | ||
1598 | case ARIZONA_DRC2RMIX_INPUT_1_VOLUME: | ||
1599 | case ARIZONA_DRC2RMIX_INPUT_2_SOURCE: | ||
1600 | case ARIZONA_DRC2RMIX_INPUT_2_VOLUME: | ||
1601 | case ARIZONA_DRC2RMIX_INPUT_3_SOURCE: | ||
1602 | case ARIZONA_DRC2RMIX_INPUT_3_VOLUME: | ||
1603 | case ARIZONA_DRC2RMIX_INPUT_4_SOURCE: | ||
1604 | case ARIZONA_DRC2RMIX_INPUT_4_VOLUME: | ||
1605 | case ARIZONA_HPLP1MIX_INPUT_1_SOURCE: | 1571 | case ARIZONA_HPLP1MIX_INPUT_1_SOURCE: |
1606 | case ARIZONA_HPLP1MIX_INPUT_1_VOLUME: | 1572 | case ARIZONA_HPLP1MIX_INPUT_1_VOLUME: |
1607 | case ARIZONA_HPLP1MIX_INPUT_2_SOURCE: | 1573 | case ARIZONA_HPLP1MIX_INPUT_2_SOURCE: |
@@ -1810,11 +1776,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1810 | case ARIZONA_DRC1_CTRL3: | 1776 | case ARIZONA_DRC1_CTRL3: |
1811 | case ARIZONA_DRC1_CTRL4: | 1777 | case ARIZONA_DRC1_CTRL4: |
1812 | case ARIZONA_DRC1_CTRL5: | 1778 | case ARIZONA_DRC1_CTRL5: |
1813 | case ARIZONA_DRC2_CTRL1: | ||
1814 | case ARIZONA_DRC2_CTRL2: | ||
1815 | case ARIZONA_DRC2_CTRL3: | ||
1816 | case ARIZONA_DRC2_CTRL4: | ||
1817 | case ARIZONA_DRC2_CTRL5: | ||
1818 | case ARIZONA_HPLPF1_1: | 1779 | case ARIZONA_HPLPF1_1: |
1819 | case ARIZONA_HPLPF1_2: | 1780 | case ARIZONA_HPLPF1_2: |
1820 | case ARIZONA_HPLPF2_1: | 1781 | case ARIZONA_HPLPF2_1: |
@@ -1832,9 +1793,6 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg) | |||
1832 | case ARIZONA_ISRC_2_CTRL_1: | 1793 | case ARIZONA_ISRC_2_CTRL_1: |
1833 | case ARIZONA_ISRC_2_CTRL_2: | 1794 | case ARIZONA_ISRC_2_CTRL_2: |
1834 | case ARIZONA_ISRC_2_CTRL_3: | 1795 | case ARIZONA_ISRC_2_CTRL_3: |
1835 | case ARIZONA_ISRC_3_CTRL_1: | ||
1836 | case ARIZONA_ISRC_3_CTRL_2: | ||
1837 | case ARIZONA_ISRC_3_CTRL_3: | ||
1838 | case ARIZONA_DSP1_CONTROL_1: | 1796 | case ARIZONA_DSP1_CONTROL_1: |
1839 | case ARIZONA_DSP1_CLOCKING_1: | 1797 | case ARIZONA_DSP1_CLOCKING_1: |
1840 | case ARIZONA_DSP1_STATUS_1: | 1798 | case ARIZONA_DSP1_STATUS_1: |
@@ -1883,7 +1841,6 @@ static bool wm5102_volatile_register(struct device *dev, unsigned int reg) | |||
1883 | case ARIZONA_WRITE_SEQUENCER_CTRL_2: | 1841 | case ARIZONA_WRITE_SEQUENCER_CTRL_2: |
1884 | case ARIZONA_WRITE_SEQUENCER_CTRL_3: | 1842 | case ARIZONA_WRITE_SEQUENCER_CTRL_3: |
1885 | case ARIZONA_OUTPUT_STATUS_1: | 1843 | case ARIZONA_OUTPUT_STATUS_1: |
1886 | case ARIZONA_RAW_OUTPUT_STATUS_1: | ||
1887 | case ARIZONA_SLIMBUS_RX_PORT_STATUS: | 1844 | case ARIZONA_SLIMBUS_RX_PORT_STATUS: |
1888 | case ARIZONA_SLIMBUS_TX_PORT_STATUS: | 1845 | case ARIZONA_SLIMBUS_TX_PORT_STATUS: |
1889 | case ARIZONA_SAMPLE_RATE_1_STATUS: | 1846 | case ARIZONA_SAMPLE_RATE_1_STATUS: |
@@ -1969,6 +1926,8 @@ const struct regmap_config wm5102_spi_regmap = { | |||
1969 | .reg_bits = 32, | 1926 | .reg_bits = 32, |
1970 | .pad_bits = 16, | 1927 | .pad_bits = 16, |
1971 | .val_bits = 16, | 1928 | .val_bits = 16, |
1929 | .reg_format_endian = REGMAP_ENDIAN_BIG, | ||
1930 | .val_format_endian = REGMAP_ENDIAN_BIG, | ||
1972 | 1931 | ||
1973 | .max_register = WM5102_MAX_REGISTER, | 1932 | .max_register = WM5102_MAX_REGISTER, |
1974 | .readable_reg = wm5102_readable_register, | 1933 | .readable_reg = wm5102_readable_register, |
@@ -1983,6 +1942,8 @@ EXPORT_SYMBOL_GPL(wm5102_spi_regmap); | |||
1983 | const struct regmap_config wm5102_i2c_regmap = { | 1942 | const struct regmap_config wm5102_i2c_regmap = { |
1984 | .reg_bits = 32, | 1943 | .reg_bits = 32, |
1985 | .val_bits = 16, | 1944 | .val_bits = 16, |
1945 | .reg_format_endian = REGMAP_ENDIAN_BIG, | ||
1946 | .val_format_endian = REGMAP_ENDIAN_BIG, | ||
1986 | 1947 | ||
1987 | .max_register = WM5102_MAX_REGISTER, | 1948 | .max_register = WM5102_MAX_REGISTER, |
1988 | .readable_reg = wm5102_readable_register, | 1949 | .readable_reg = wm5102_readable_register, |
diff --git a/drivers/mfd/wm5110-tables.c b/drivers/mfd/wm5110-tables.c index 12cad94b4035..19785a6bcac6 100644 --- a/drivers/mfd/wm5110-tables.c +++ b/drivers/mfd/wm5110-tables.c | |||
@@ -754,11 +754,9 @@ static const struct reg_default wm5110_reg_default[] = { | |||
754 | { 0x0000021A, 0x01A6 }, /* R538 - Mic Bias Ctrl 3 */ | 754 | { 0x0000021A, 0x01A6 }, /* R538 - Mic Bias Ctrl 3 */ |
755 | { 0x00000293, 0x0000 }, /* R659 - Accessory Detect Mode 1 */ | 755 | { 0x00000293, 0x0000 }, /* R659 - Accessory Detect Mode 1 */ |
756 | { 0x0000029B, 0x0028 }, /* R667 - Headphone Detect 1 */ | 756 | { 0x0000029B, 0x0028 }, /* R667 - Headphone Detect 1 */ |
757 | { 0x0000029C, 0x0000 }, /* R668 - Headphone Detect 2 */ | ||
758 | { 0x000002A2, 0x0000 }, /* R674 - Micd clamp control */ | 757 | { 0x000002A2, 0x0000 }, /* R674 - Micd clamp control */ |
759 | { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ | 758 | { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ |
760 | { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ | 759 | { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ |
761 | { 0x000002A5, 0x0000 }, /* R677 - Mic Detect 3 */ | ||
762 | { 0x000002A6, 0x3737 }, /* R678 - Mic Detect Level 1 */ | 760 | { 0x000002A6, 0x3737 }, /* R678 - Mic Detect Level 1 */ |
763 | { 0x000002A7, 0x372C }, /* R679 - Mic Detect Level 2 */ | 761 | { 0x000002A7, 0x372C }, /* R679 - Mic Detect Level 2 */ |
764 | { 0x000002A8, 0x1422 }, /* R680 - Mic Detect Level 3 */ | 762 | { 0x000002A8, 0x1422 }, /* R680 - Mic Detect Level 3 */ |
@@ -848,8 +846,6 @@ static const struct reg_default wm5110_reg_default[] = { | |||
848 | { 0x00000440, 0x8FFF }, /* R1088 - DRE Enable */ | 846 | { 0x00000440, 0x8FFF }, /* R1088 - DRE Enable */ |
849 | { 0x00000450, 0x0000 }, /* R1104 - DAC AEC Control 1 */ | 847 | { 0x00000450, 0x0000 }, /* R1104 - DAC AEC Control 1 */ |
850 | { 0x00000458, 0x0000 }, /* R1112 - Noise Gate Control */ | 848 | { 0x00000458, 0x0000 }, /* R1112 - Noise Gate Control */ |
851 | { 0x00000480, 0x0040 }, /* R1152 - Class W ANC Threshold 1 */ | ||
852 | { 0x00000481, 0x0040 }, /* R1153 - Class W ANC Threshold 2 */ | ||
853 | { 0x00000490, 0x0069 }, /* R1168 - PDM SPK1 CTRL 1 */ | 849 | { 0x00000490, 0x0069 }, /* R1168 - PDM SPK1 CTRL 1 */ |
854 | { 0x00000491, 0x0000 }, /* R1169 - PDM SPK1 CTRL 2 */ | 850 | { 0x00000491, 0x0000 }, /* R1169 - PDM SPK1 CTRL 2 */ |
855 | { 0x00000492, 0x0069 }, /* R1170 - PDM SPK2 CTRL 1 */ | 851 | { 0x00000492, 0x0069 }, /* R1170 - PDM SPK2 CTRL 1 */ |
@@ -1508,7 +1504,6 @@ static const struct reg_default wm5110_reg_default[] = { | |||
1508 | { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ | 1504 | { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ |
1509 | { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ | 1505 | { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ |
1510 | { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ | 1506 | { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ |
1511 | { 0x00000E01, 0x0000 }, /* R3585 - FX_Ctrl2 */ | ||
1512 | { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ | 1507 | { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ |
1513 | { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ | 1508 | { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ |
1514 | { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ | 1509 | { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ |
@@ -1625,14 +1620,9 @@ static const struct reg_default wm5110_reg_default[] = { | |||
1625 | { 0x00000F00, 0x0000 }, /* R3840 - Clock Control */ | 1620 | { 0x00000F00, 0x0000 }, /* R3840 - Clock Control */ |
1626 | { 0x00000F01, 0x0000 }, /* R3841 - ANC_SRC */ | 1621 | { 0x00000F01, 0x0000 }, /* R3841 - ANC_SRC */ |
1627 | { 0x00001100, 0x0010 }, /* R4352 - DSP1 Control 1 */ | 1622 | { 0x00001100, 0x0010 }, /* R4352 - DSP1 Control 1 */ |
1628 | { 0x00001101, 0x0000 }, /* R4353 - DSP1 Clocking 1 */ | ||
1629 | { 0x00001200, 0x0010 }, /* R4608 - DSP2 Control 1 */ | 1623 | { 0x00001200, 0x0010 }, /* R4608 - DSP2 Control 1 */ |
1630 | { 0x00001201, 0x0000 }, /* R4609 - DSP2 Clocking 1 */ | ||
1631 | { 0x00001300, 0x0010 }, /* R4864 - DSP3 Control 1 */ | 1624 | { 0x00001300, 0x0010 }, /* R4864 - DSP3 Control 1 */ |
1632 | { 0x00001301, 0x0000 }, /* R4865 - DSP3 Clocking 1 */ | ||
1633 | { 0x00001400, 0x0010 }, /* R5120 - DSP4 Control 1 */ | 1625 | { 0x00001400, 0x0010 }, /* R5120 - DSP4 Control 1 */ |
1634 | { 0x00001401, 0x0000 }, /* R5121 - DSP4 Clocking 1 */ | ||
1635 | { 0x00001404, 0x0000 }, /* R5124 - DSP4 Status 1 */ | ||
1636 | }; | 1626 | }; |
1637 | 1627 | ||
1638 | static bool wm5110_is_rev_b_adsp_memory(unsigned int reg) | 1628 | static bool wm5110_is_rev_b_adsp_memory(unsigned int reg) |
@@ -3007,6 +2997,8 @@ const struct regmap_config wm5110_spi_regmap = { | |||
3007 | .reg_bits = 32, | 2997 | .reg_bits = 32, |
3008 | .pad_bits = 16, | 2998 | .pad_bits = 16, |
3009 | .val_bits = 16, | 2999 | .val_bits = 16, |
3000 | .reg_format_endian = REGMAP_ENDIAN_BIG, | ||
3001 | .val_format_endian = REGMAP_ENDIAN_BIG, | ||
3010 | 3002 | ||
3011 | .max_register = WM5110_MAX_REGISTER, | 3003 | .max_register = WM5110_MAX_REGISTER, |
3012 | .readable_reg = wm5110_readable_register, | 3004 | .readable_reg = wm5110_readable_register, |
@@ -3021,6 +3013,8 @@ EXPORT_SYMBOL_GPL(wm5110_spi_regmap); | |||
3021 | const struct regmap_config wm5110_i2c_regmap = { | 3013 | const struct regmap_config wm5110_i2c_regmap = { |
3022 | .reg_bits = 32, | 3014 | .reg_bits = 32, |
3023 | .val_bits = 16, | 3015 | .val_bits = 16, |
3016 | .reg_format_endian = REGMAP_ENDIAN_BIG, | ||
3017 | .val_format_endian = REGMAP_ENDIAN_BIG, | ||
3024 | 3018 | ||
3025 | .max_register = WM5110_MAX_REGISTER, | 3019 | .max_register = WM5110_MAX_REGISTER, |
3026 | .readable_reg = wm5110_readable_register, | 3020 | .readable_reg = wm5110_readable_register, |
diff --git a/drivers/mfd/wm831x-i2c.c b/drivers/mfd/wm831x-i2c.c index a4cbefe5430f..824bcbaa9624 100644 --- a/drivers/mfd/wm831x-i2c.c +++ b/drivers/mfd/wm831x-i2c.c | |||
@@ -93,7 +93,6 @@ static const struct dev_pm_ops wm831x_pm_ops = { | |||
93 | static struct i2c_driver wm831x_i2c_driver = { | 93 | static struct i2c_driver wm831x_i2c_driver = { |
94 | .driver = { | 94 | .driver = { |
95 | .name = "wm831x", | 95 | .name = "wm831x", |
96 | .owner = THIS_MODULE, | ||
97 | .pm = &wm831x_pm_ops, | 96 | .pm = &wm831x_pm_ops, |
98 | }, | 97 | }, |
99 | .probe = wm831x_i2c_probe, | 98 | .probe = wm831x_i2c_probe, |
diff --git a/drivers/mfd/wm831x-irq.c b/drivers/mfd/wm831x-irq.c index 3da81263c764..dfea8b9c2fe6 100644 --- a/drivers/mfd/wm831x-irq.c +++ b/drivers/mfd/wm831x-irq.c | |||
@@ -552,14 +552,7 @@ static int wm831x_irq_map(struct irq_domain *h, unsigned int virq, | |||
552 | irq_set_chip_data(virq, h->host_data); | 552 | irq_set_chip_data(virq, h->host_data); |
553 | irq_set_chip_and_handler(virq, &wm831x_irq_chip, handle_edge_irq); | 553 | irq_set_chip_and_handler(virq, &wm831x_irq_chip, handle_edge_irq); |
554 | irq_set_nested_thread(virq, 1); | 554 | irq_set_nested_thread(virq, 1); |
555 | |||
556 | /* ARM needs us to explicitly flag the IRQ as valid | ||
557 | * and will set them noprobe when we do so. */ | ||
558 | #ifdef CONFIG_ARM | ||
559 | set_irq_flags(virq, IRQF_VALID); | ||
560 | #else | ||
561 | irq_set_noprobe(virq); | 555 | irq_set_noprobe(virq); |
562 | #endif | ||
563 | 556 | ||
564 | return 0; | 557 | return 0; |
565 | } | 558 | } |
diff --git a/drivers/mfd/wm8350-i2c.c b/drivers/mfd/wm8350-i2c.c index 6a16a8a6f9fa..9358f03b7938 100644 --- a/drivers/mfd/wm8350-i2c.c +++ b/drivers/mfd/wm8350-i2c.c | |||
@@ -69,7 +69,6 @@ MODULE_DEVICE_TABLE(i2c, wm8350_i2c_id); | |||
69 | static struct i2c_driver wm8350_i2c_driver = { | 69 | static struct i2c_driver wm8350_i2c_driver = { |
70 | .driver = { | 70 | .driver = { |
71 | .name = "wm8350", | 71 | .name = "wm8350", |
72 | .owner = THIS_MODULE, | ||
73 | }, | 72 | }, |
74 | .probe = wm8350_i2c_probe, | 73 | .probe = wm8350_i2c_probe, |
75 | .remove = wm8350_i2c_remove, | 74 | .remove = wm8350_i2c_remove, |
diff --git a/drivers/mfd/wm8350-irq.c b/drivers/mfd/wm8350-irq.c index 813ff50f95b6..27054f357b8e 100644 --- a/drivers/mfd/wm8350-irq.c +++ b/drivers/mfd/wm8350-irq.c | |||
@@ -526,13 +526,7 @@ int wm8350_irq_init(struct wm8350 *wm8350, int irq, | |||
526 | handle_edge_irq); | 526 | handle_edge_irq); |
527 | irq_set_nested_thread(cur_irq, 1); | 527 | irq_set_nested_thread(cur_irq, 1); |
528 | 528 | ||
529 | /* ARM needs us to explicitly flag the IRQ as valid | 529 | irq_clear_status_flags(cur_irq, IRQ_NOREQUEST | IRQ_NOPROBE); |
530 | * and will set them noprobe when we do so. */ | ||
531 | #ifdef CONFIG_ARM | ||
532 | set_irq_flags(cur_irq, IRQF_VALID); | ||
533 | #else | ||
534 | irq_set_noprobe(cur_irq); | ||
535 | #endif | ||
536 | } | 530 | } |
537 | 531 | ||
538 | ret = request_threaded_irq(irq, NULL, wm8350_irq, flags, | 532 | ret = request_threaded_irq(irq, NULL, wm8350_irq, flags, |
diff --git a/drivers/mfd/wm8400-core.c b/drivers/mfd/wm8400-core.c index c6fb5d16ca09..3bd44a45c378 100644 --- a/drivers/mfd/wm8400-core.c +++ b/drivers/mfd/wm8400-core.c | |||
@@ -194,7 +194,6 @@ MODULE_DEVICE_TABLE(i2c, wm8400_i2c_id); | |||
194 | static struct i2c_driver wm8400_i2c_driver = { | 194 | static struct i2c_driver wm8400_i2c_driver = { |
195 | .driver = { | 195 | .driver = { |
196 | .name = "WM8400", | 196 | .name = "WM8400", |
197 | .owner = THIS_MODULE, | ||
198 | }, | 197 | }, |
199 | .probe = wm8400_i2c_probe, | 198 | .probe = wm8400_i2c_probe, |
200 | .remove = wm8400_i2c_remove, | 199 | .remove = wm8400_i2c_remove, |
diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c index 53ae5af5d6e4..213da3416778 100644 --- a/drivers/mfd/wm8994-core.c +++ b/drivers/mfd/wm8994-core.c | |||
@@ -677,7 +677,6 @@ static const struct dev_pm_ops wm8994_pm_ops = { | |||
677 | static struct i2c_driver wm8994_i2c_driver = { | 677 | static struct i2c_driver wm8994_i2c_driver = { |
678 | .driver = { | 678 | .driver = { |
679 | .name = "wm8994", | 679 | .name = "wm8994", |
680 | .owner = THIS_MODULE, | ||
681 | .pm = &wm8994_pm_ops, | 680 | .pm = &wm8994_pm_ops, |
682 | .of_match_table = of_match_ptr(wm8994_of_match), | 681 | .of_match_table = of_match_ptr(wm8994_of_match), |
683 | }, | 682 | }, |
diff --git a/drivers/mfd/wm8994-irq.c b/drivers/mfd/wm8994-irq.c index 55c380a67686..18710f3b5c53 100644 --- a/drivers/mfd/wm8994-irq.c +++ b/drivers/mfd/wm8994-irq.c | |||
@@ -172,14 +172,7 @@ static int wm8994_edge_irq_map(struct irq_domain *h, unsigned int virq, | |||
172 | irq_set_chip_data(virq, wm8994); | 172 | irq_set_chip_data(virq, wm8994); |
173 | irq_set_chip_and_handler(virq, &wm8994_edge_irq_chip, handle_edge_irq); | 173 | irq_set_chip_and_handler(virq, &wm8994_edge_irq_chip, handle_edge_irq); |
174 | irq_set_nested_thread(virq, 1); | 174 | irq_set_nested_thread(virq, 1); |
175 | |||
176 | /* ARM needs us to explicitly flag the IRQ as valid | ||
177 | * and will set them noprobe when we do so. */ | ||
178 | #ifdef CONFIG_ARM | ||
179 | set_irq_flags(virq, IRQF_VALID); | ||
180 | #else | ||
181 | irq_set_noprobe(virq); | 175 | irq_set_noprobe(virq); |
182 | #endif | ||
183 | 176 | ||
184 | return 0; | 177 | return 0; |
185 | } | 178 | } |
@@ -193,7 +186,7 @@ int wm8994_irq_init(struct wm8994 *wm8994) | |||
193 | { | 186 | { |
194 | int ret; | 187 | int ret; |
195 | unsigned long irqflags; | 188 | unsigned long irqflags; |
196 | struct wm8994_pdata *pdata = dev_get_platdata(wm8994->dev); | 189 | struct wm8994_pdata *pdata = &wm8994->pdata; |
197 | 190 | ||
198 | if (!wm8994->irq) { | 191 | if (!wm8994->irq) { |
199 | dev_warn(wm8994->dev, | 192 | dev_warn(wm8994->dev, |
diff --git a/drivers/mfd/wm8994-regmap.c b/drivers/mfd/wm8994-regmap.c index 300e9b6a2e96..c56b1600ef3e 100644 --- a/drivers/mfd/wm8994-regmap.c +++ b/drivers/mfd/wm8994-regmap.c | |||
@@ -19,7 +19,7 @@ | |||
19 | 19 | ||
20 | #include "wm8994.h" | 20 | #include "wm8994.h" |
21 | 21 | ||
22 | static struct reg_default wm1811_defaults[] = { | 22 | static const struct reg_default wm1811_defaults[] = { |
23 | { 0x0001, 0x0000 }, /* R1 - Power Management (1) */ | 23 | { 0x0001, 0x0000 }, /* R1 - Power Management (1) */ |
24 | { 0x0002, 0x6000 }, /* R2 - Power Management (2) */ | 24 | { 0x0002, 0x6000 }, /* R2 - Power Management (2) */ |
25 | { 0x0003, 0x0000 }, /* R3 - Power Management (3) */ | 25 | { 0x0003, 0x0000 }, /* R3 - Power Management (3) */ |
@@ -251,7 +251,7 @@ static struct reg_default wm1811_defaults[] = { | |||
251 | { 0x0748, 0x003F }, /* R1864 - IRQ Debounce */ | 251 | { 0x0748, 0x003F }, /* R1864 - IRQ Debounce */ |
252 | }; | 252 | }; |
253 | 253 | ||
254 | static struct reg_default wm8994_defaults[] = { | 254 | static const struct reg_default wm8994_defaults[] = { |
255 | { 0x0001, 0x0000 }, /* R1 - Power Management (1) */ | 255 | { 0x0001, 0x0000 }, /* R1 - Power Management (1) */ |
256 | { 0x0002, 0x6000 }, /* R2 - Power Management (2) */ | 256 | { 0x0002, 0x6000 }, /* R2 - Power Management (2) */ |
257 | { 0x0003, 0x0000 }, /* R3 - Power Management (3) */ | 257 | { 0x0003, 0x0000 }, /* R3 - Power Management (3) */ |
@@ -470,7 +470,7 @@ static struct reg_default wm8994_defaults[] = { | |||
470 | { 0x0748, 0x003F }, /* R1864 - IRQ Debounce */ | 470 | { 0x0748, 0x003F }, /* R1864 - IRQ Debounce */ |
471 | }; | 471 | }; |
472 | 472 | ||
473 | static struct reg_default wm8958_defaults[] = { | 473 | static const struct reg_default wm8958_defaults[] = { |
474 | { 0x0001, 0x0000 }, /* R1 - Power Management (1) */ | 474 | { 0x0001, 0x0000 }, /* R1 - Power Management (1) */ |
475 | { 0x0002, 0x6000 }, /* R2 - Power Management (2) */ | 475 | { 0x0002, 0x6000 }, /* R2 - Power Management (2) */ |
476 | { 0x0003, 0x0000 }, /* R3 - Power Management (3) */ | 476 | { 0x0003, 0x0000 }, /* R3 - Power Management (3) */ |
diff --git a/drivers/mfd/wm8997-tables.c b/drivers/mfd/wm8997-tables.c index c0c25d75aacc..2a91473dc1ee 100644 --- a/drivers/mfd/wm8997-tables.c +++ b/drivers/mfd/wm8997-tables.c | |||
@@ -243,7 +243,6 @@ static const struct reg_default wm8997_reg_default[] = { | |||
243 | { 0x0000029B, 0x0020 }, /* R667 - Headphone Detect 1 */ | 243 | { 0x0000029B, 0x0020 }, /* R667 - Headphone Detect 1 */ |
244 | { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ | 244 | { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ |
245 | { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ | 245 | { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ |
246 | { 0x000002A5, 0x0000 }, /* R677 - Mic Detect 3 */ | ||
247 | { 0x000002C3, 0x0000 }, /* R707 - Mic noise mix control 1 */ | 246 | { 0x000002C3, 0x0000 }, /* R707 - Mic noise mix control 1 */ |
248 | { 0x000002CB, 0x0000 }, /* R715 - Isolation control */ | 247 | { 0x000002CB, 0x0000 }, /* R715 - Isolation control */ |
249 | { 0x000002D3, 0x0000 }, /* R723 - Jack detect analogue */ | 248 | { 0x000002D3, 0x0000 }, /* R723 - Jack detect analogue */ |
@@ -684,7 +683,6 @@ static const struct reg_default wm8997_reg_default[] = { | |||
684 | { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ | 683 | { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ |
685 | { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ | 684 | { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ |
686 | { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ | 685 | { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ |
687 | { 0x00000E01, 0x0000 }, /* R3585 - FX_Ctrl2 */ | ||
688 | { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ | 686 | { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ |
689 | { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ | 687 | { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ |
690 | { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ | 688 | { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ |
@@ -788,8 +786,6 @@ static const struct reg_default wm8997_reg_default[] = { | |||
788 | { 0x00000EF3, 0x0000 }, /* R3827 - ISRC 2 CTRL 1 */ | 786 | { 0x00000EF3, 0x0000 }, /* R3827 - ISRC 2 CTRL 1 */ |
789 | { 0x00000EF4, 0x0000 }, /* R3828 - ISRC 2 CTRL 2 */ | 787 | { 0x00000EF4, 0x0000 }, /* R3828 - ISRC 2 CTRL 2 */ |
790 | { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */ | 788 | { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */ |
791 | { 0x00001100, 0x0010 }, /* R4352 - DSP1 Control 1 */ | ||
792 | { 0x00001101, 0x0000 }, /* R4353 - DSP1 Clocking 1 */ | ||
793 | }; | 789 | }; |
794 | 790 | ||
795 | static bool wm8997_readable_register(struct device *dev, unsigned int reg) | 791 | static bool wm8997_readable_register(struct device *dev, unsigned int reg) |
@@ -1480,6 +1476,8 @@ static bool wm8997_volatile_register(struct device *dev, unsigned int reg) | |||
1480 | case ARIZONA_SAMPLE_RATE_2_STATUS: | 1476 | case ARIZONA_SAMPLE_RATE_2_STATUS: |
1481 | case ARIZONA_SAMPLE_RATE_3_STATUS: | 1477 | case ARIZONA_SAMPLE_RATE_3_STATUS: |
1482 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | 1478 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: |
1479 | case ARIZONA_FLL1_NCO_TEST_0: | ||
1480 | case ARIZONA_FLL2_NCO_TEST_0: | ||
1483 | case ARIZONA_MIC_DETECT_3: | 1481 | case ARIZONA_MIC_DETECT_3: |
1484 | case ARIZONA_HP_CTRL_1L: | 1482 | case ARIZONA_HP_CTRL_1L: |
1485 | case ARIZONA_HP_CTRL_1R: | 1483 | case ARIZONA_HP_CTRL_1R: |
@@ -1521,6 +1519,8 @@ static bool wm8997_volatile_register(struct device *dev, unsigned int reg) | |||
1521 | const struct regmap_config wm8997_i2c_regmap = { | 1519 | const struct regmap_config wm8997_i2c_regmap = { |
1522 | .reg_bits = 32, | 1520 | .reg_bits = 32, |
1523 | .val_bits = 16, | 1521 | .val_bits = 16, |
1522 | .reg_format_endian = REGMAP_ENDIAN_BIG, | ||
1523 | .val_format_endian = REGMAP_ENDIAN_BIG, | ||
1524 | 1524 | ||
1525 | .max_register = WM8997_MAX_REGISTER, | 1525 | .max_register = WM8997_MAX_REGISTER, |
1526 | .readable_reg = wm8997_readable_register, | 1526 | .readable_reg = wm8997_readable_register, |
diff --git a/drivers/mfd/wm8998-tables.c b/drivers/mfd/wm8998-tables.c new file mode 100644 index 000000000000..e6de3cd8a9aa --- /dev/null +++ b/drivers/mfd/wm8998-tables.c | |||
@@ -0,0 +1,1594 @@ | |||
1 | /* | ||
2 | * wm8998-tables.c -- data tables for wm8998-class codecs | ||
3 | * | ||
4 | * Copyright 2014 Wolfson Microelectronics plc | ||
5 | * | ||
6 | * Author: Richard Fitzgerald <rf@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 | #include <linux/device.h> | ||
18 | |||
19 | #include "arizona.h" | ||
20 | |||
21 | #define WM8998_NUM_AOD_ISR 2 | ||
22 | #define WM8998_NUM_ISR 5 | ||
23 | |||
24 | static const struct reg_default wm8998_rev_a_patch[] = { | ||
25 | { 0x0212, 0x0000 }, | ||
26 | { 0x0211, 0x0014 }, | ||
27 | { 0x04E4, 0x0E0D }, | ||
28 | { 0x04E5, 0x0E0D }, | ||
29 | { 0x04E6, 0x0E0D }, | ||
30 | { 0x04EB, 0x060E }, | ||
31 | { 0x0441, 0xC759 }, | ||
32 | { 0x0442, 0x2A08 }, | ||
33 | { 0x0443, 0x5CFA }, | ||
34 | { 0x026E, 0x0064 }, | ||
35 | { 0x026F, 0x00EA }, | ||
36 | { 0x0270, 0x1F16 }, | ||
37 | { 0x0410, 0x2080 }, | ||
38 | { 0x0418, 0x2080 }, | ||
39 | { 0x0420, 0x2080 }, | ||
40 | { 0x04B8, 0x1120 }, | ||
41 | { 0x047E, 0x080E }, | ||
42 | { 0x0448, 0x03EF }, | ||
43 | }; | ||
44 | |||
45 | /* We use a function so we can use ARRAY_SIZE() */ | ||
46 | int wm8998_patch(struct arizona *arizona) | ||
47 | { | ||
48 | return regmap_register_patch(arizona->regmap, | ||
49 | wm8998_rev_a_patch, | ||
50 | ARRAY_SIZE(wm8998_rev_a_patch)); | ||
51 | } | ||
52 | |||
53 | static const struct regmap_irq wm8998_aod_irqs[ARIZONA_NUM_IRQ] = { | ||
54 | [ARIZONA_IRQ_MICD_CLAMP_FALL] = { | ||
55 | .mask = ARIZONA_MICD_CLAMP_FALL_EINT1 | ||
56 | }, | ||
57 | [ARIZONA_IRQ_MICD_CLAMP_RISE] = { | ||
58 | .mask = ARIZONA_MICD_CLAMP_RISE_EINT1 | ||
59 | }, | ||
60 | [ARIZONA_IRQ_GP5_FALL] = { .mask = ARIZONA_GP5_FALL_EINT1 }, | ||
61 | [ARIZONA_IRQ_GP5_RISE] = { .mask = ARIZONA_GP5_RISE_EINT1 }, | ||
62 | [ARIZONA_IRQ_JD_FALL] = { .mask = ARIZONA_JD1_FALL_EINT1 }, | ||
63 | [ARIZONA_IRQ_JD_RISE] = { .mask = ARIZONA_JD1_RISE_EINT1 }, | ||
64 | }; | ||
65 | |||
66 | struct regmap_irq_chip wm8998_aod = { | ||
67 | .name = "wm8998 AOD", | ||
68 | .status_base = ARIZONA_AOD_IRQ1, | ||
69 | .mask_base = ARIZONA_AOD_IRQ_MASK_IRQ1, | ||
70 | .ack_base = ARIZONA_AOD_IRQ1, | ||
71 | .wake_base = ARIZONA_WAKE_CONTROL, | ||
72 | .wake_invert = 1, | ||
73 | .num_regs = 1, | ||
74 | .irqs = wm8998_aod_irqs, | ||
75 | .num_irqs = ARRAY_SIZE(wm8998_aod_irqs), | ||
76 | }; | ||
77 | |||
78 | static const struct regmap_irq wm8998_irqs[ARIZONA_NUM_IRQ] = { | ||
79 | [ARIZONA_IRQ_GP4] = { .reg_offset = 0, .mask = ARIZONA_GP4_EINT1 }, | ||
80 | [ARIZONA_IRQ_GP3] = { .reg_offset = 0, .mask = ARIZONA_GP3_EINT1 }, | ||
81 | [ARIZONA_IRQ_GP2] = { .reg_offset = 0, .mask = ARIZONA_GP2_EINT1 }, | ||
82 | [ARIZONA_IRQ_GP1] = { .reg_offset = 0, .mask = ARIZONA_GP1_EINT1 }, | ||
83 | |||
84 | [ARIZONA_IRQ_SPK_OVERHEAT_WARN] = { | ||
85 | .reg_offset = 2, .mask = ARIZONA_SPK_OVERHEAT_WARN_EINT1 | ||
86 | }, | ||
87 | [ARIZONA_IRQ_SPK_OVERHEAT] = { | ||
88 | .reg_offset = 2, .mask = ARIZONA_SPK_OVERHEAT_EINT1 | ||
89 | }, | ||
90 | [ARIZONA_IRQ_HPDET] = { | ||
91 | .reg_offset = 2, .mask = ARIZONA_HPDET_EINT1 | ||
92 | }, | ||
93 | [ARIZONA_IRQ_MICDET] = { | ||
94 | .reg_offset = 2, .mask = ARIZONA_MICDET_EINT1 | ||
95 | }, | ||
96 | [ARIZONA_IRQ_WSEQ_DONE] = { | ||
97 | .reg_offset = 2, .mask = ARIZONA_WSEQ_DONE_EINT1 | ||
98 | }, | ||
99 | [ARIZONA_IRQ_DRC1_SIG_DET] = { | ||
100 | .reg_offset = 2, .mask = ARIZONA_DRC1_SIG_DET_EINT1 | ||
101 | }, | ||
102 | [ARIZONA_IRQ_ASRC2_LOCK] = { | ||
103 | .reg_offset = 2, .mask = ARIZONA_ASRC2_LOCK_EINT1 | ||
104 | }, | ||
105 | [ARIZONA_IRQ_ASRC1_LOCK] = { | ||
106 | .reg_offset = 2, .mask = ARIZONA_ASRC1_LOCK_EINT1 | ||
107 | }, | ||
108 | [ARIZONA_IRQ_UNDERCLOCKED] = { | ||
109 | .reg_offset = 2, .mask = ARIZONA_UNDERCLOCKED_EINT1 | ||
110 | }, | ||
111 | [ARIZONA_IRQ_OVERCLOCKED] = { | ||
112 | .reg_offset = 2, .mask = ARIZONA_OVERCLOCKED_EINT1 | ||
113 | }, | ||
114 | [ARIZONA_IRQ_FLL2_LOCK] = { | ||
115 | .reg_offset = 2, .mask = ARIZONA_FLL2_LOCK_EINT1 | ||
116 | }, | ||
117 | [ARIZONA_IRQ_FLL1_LOCK] = { | ||
118 | .reg_offset = 2, .mask = ARIZONA_FLL1_LOCK_EINT1 | ||
119 | }, | ||
120 | [ARIZONA_IRQ_CLKGEN_ERR] = { | ||
121 | .reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_EINT1 | ||
122 | }, | ||
123 | [ARIZONA_IRQ_CLKGEN_ERR_ASYNC] = { | ||
124 | .reg_offset = 2, .mask = ARIZONA_CLKGEN_ERR_ASYNC_EINT1 | ||
125 | }, | ||
126 | |||
127 | [ARIZONA_IRQ_ASRC_CFG_ERR] = { | ||
128 | .reg_offset = 3, .mask = ARIZONA_ASRC_CFG_ERR_EINT1 | ||
129 | }, | ||
130 | [ARIZONA_IRQ_AIF3_ERR] = { | ||
131 | .reg_offset = 3, .mask = ARIZONA_AIF3_ERR_EINT1 | ||
132 | }, | ||
133 | [ARIZONA_IRQ_AIF2_ERR] = { | ||
134 | .reg_offset = 3, .mask = ARIZONA_AIF2_ERR_EINT1 | ||
135 | }, | ||
136 | [ARIZONA_IRQ_AIF1_ERR] = { | ||
137 | .reg_offset = 3, .mask = ARIZONA_AIF1_ERR_EINT1 | ||
138 | }, | ||
139 | [ARIZONA_IRQ_CTRLIF_ERR] = { | ||
140 | .reg_offset = 3, .mask = ARIZONA_CTRLIF_ERR_EINT1 | ||
141 | }, | ||
142 | [ARIZONA_IRQ_MIXER_DROPPED_SAMPLES] = { | ||
143 | .reg_offset = 3, .mask = ARIZONA_MIXER_DROPPED_SAMPLE_EINT1 | ||
144 | }, | ||
145 | [ARIZONA_IRQ_ASYNC_CLK_ENA_LOW] = { | ||
146 | .reg_offset = 3, .mask = ARIZONA_ASYNC_CLK_ENA_LOW_EINT1 | ||
147 | }, | ||
148 | [ARIZONA_IRQ_SYSCLK_ENA_LOW] = { | ||
149 | .reg_offset = 3, .mask = ARIZONA_SYSCLK_ENA_LOW_EINT1 | ||
150 | }, | ||
151 | [ARIZONA_IRQ_ISRC1_CFG_ERR] = { | ||
152 | .reg_offset = 3, .mask = ARIZONA_ISRC1_CFG_ERR_EINT1 | ||
153 | }, | ||
154 | [ARIZONA_IRQ_ISRC2_CFG_ERR] = { | ||
155 | .reg_offset = 3, .mask = ARIZONA_ISRC2_CFG_ERR_EINT1 | ||
156 | }, | ||
157 | |||
158 | [ARIZONA_IRQ_BOOT_DONE] = { | ||
159 | .reg_offset = 4, .mask = ARIZONA_BOOT_DONE_EINT1 | ||
160 | }, | ||
161 | [ARIZONA_IRQ_FLL2_CLOCK_OK] = { | ||
162 | .reg_offset = 4, .mask = ARIZONA_FLL2_CLOCK_OK_EINT1 | ||
163 | }, | ||
164 | [ARIZONA_IRQ_FLL1_CLOCK_OK] = { | ||
165 | .reg_offset = 4, .mask = ARIZONA_FLL1_CLOCK_OK_EINT1 | ||
166 | }, | ||
167 | }; | ||
168 | |||
169 | struct regmap_irq_chip wm8998_irq = { | ||
170 | .name = "wm8998 IRQ", | ||
171 | .status_base = ARIZONA_INTERRUPT_STATUS_1, | ||
172 | .mask_base = ARIZONA_INTERRUPT_STATUS_1_MASK, | ||
173 | .ack_base = ARIZONA_INTERRUPT_STATUS_1, | ||
174 | .num_regs = 5, | ||
175 | .irqs = wm8998_irqs, | ||
176 | .num_irqs = ARRAY_SIZE(wm8998_irqs), | ||
177 | }; | ||
178 | |||
179 | static const struct reg_default wm8998_reg_default[] = { | ||
180 | { 0x00000009, 0x0001 }, /* R9 - Ctrl IF I2C1 CFG 1 */ | ||
181 | { 0x0000000B, 0x001A }, /* R11 - Ctrl IF I2C1 CFG 2 */ | ||
182 | { 0x00000020, 0x0000 }, /* R32 - Tone Generator 1 */ | ||
183 | { 0x00000021, 0x1000 }, /* R33 - Tone Generator 2 */ | ||
184 | { 0x00000022, 0x0000 }, /* R34 - Tone Generator 3 */ | ||
185 | { 0x00000023, 0x1000 }, /* R35 - Tone Generator 4 */ | ||
186 | { 0x00000024, 0x0000 }, /* R36 - Tone Generator 5 */ | ||
187 | { 0x00000030, 0x0000 }, /* R48 - PWM Drive 1 */ | ||
188 | { 0x00000031, 0x0100 }, /* R49 - PWM Drive 2 */ | ||
189 | { 0x00000032, 0x0100 }, /* R50 - PWM Drive 3 */ | ||
190 | { 0x00000040, 0x0000 }, /* R64 - Wake control */ | ||
191 | { 0x00000041, 0x0000 }, /* R65 - Sequence control */ | ||
192 | { 0x00000061, 0x01FF }, /* R97 - Sample Rate Sequence Select 1 */ | ||
193 | { 0x00000062, 0x01FF }, /* R98 - Sample Rate Sequence Select 2 */ | ||
194 | { 0x00000063, 0x01FF }, /* R99 - Sample Rate Sequence Select 3 */ | ||
195 | { 0x00000064, 0x01FF }, /* R100 - Sample Rate Sequence Select 4 */ | ||
196 | { 0x00000066, 0x01FF }, /* R102 - Always On Triggers Sequence Select 1 */ | ||
197 | { 0x00000067, 0x01FF }, /* R103 - Always On Triggers Sequence Select 2 */ | ||
198 | { 0x00000068, 0x01FF }, /* R104 - Always On Triggers Sequence Select 3 */ | ||
199 | { 0x00000069, 0x01FF }, /* R105 - Always On Triggers Sequence Select 4 */ | ||
200 | { 0x0000006A, 0x01FF }, /* R106 - Always On Triggers Sequence Select 5 */ | ||
201 | { 0x0000006B, 0x01FF }, /* R107 - Always On Triggers Sequence Select 6 */ | ||
202 | { 0x0000006E, 0x01FF }, /* R110 - Trigger Sequence Select 32 */ | ||
203 | { 0x0000006F, 0x01FF }, /* R111 - Trigger Sequence Select 33 */ | ||
204 | { 0x00000090, 0x0000 }, /* R144 - Haptics Control 1 */ | ||
205 | { 0x00000091, 0x7FFF }, /* R145 - Haptics Control 2 */ | ||
206 | { 0x00000092, 0x0000 }, /* R146 - Haptics phase 1 intensity */ | ||
207 | { 0x00000093, 0x0000 }, /* R147 - Haptics phase 1 duration */ | ||
208 | { 0x00000094, 0x0000 }, /* R148 - Haptics phase 2 intensity */ | ||
209 | { 0x00000095, 0x0000 }, /* R149 - Haptics phase 2 duration */ | ||
210 | { 0x00000096, 0x0000 }, /* R150 - Haptics phase 3 intensity */ | ||
211 | { 0x00000097, 0x0000 }, /* R151 - Haptics phase 3 duration */ | ||
212 | { 0x00000100, 0x0002 }, /* R256 - Clock 32k 1 */ | ||
213 | { 0x00000101, 0x0304 }, /* R257 - System Clock 1 */ | ||
214 | { 0x00000102, 0x0011 }, /* R258 - Sample rate 1 */ | ||
215 | { 0x00000103, 0x0011 }, /* R259 - Sample rate 2 */ | ||
216 | { 0x00000104, 0x0011 }, /* R260 - Sample rate 3 */ | ||
217 | { 0x00000112, 0x0305 }, /* R274 - Async clock 1 */ | ||
218 | { 0x00000113, 0x0011 }, /* R275 - Async sample rate 1 */ | ||
219 | { 0x00000114, 0x0011 }, /* R276 - Async sample rate 2 */ | ||
220 | { 0x00000149, 0x0000 }, /* R329 - Output system clock */ | ||
221 | { 0x0000014A, 0x0000 }, /* R330 - Output async clock */ | ||
222 | { 0x00000152, 0x0000 }, /* R338 - Rate Estimator 1 */ | ||
223 | { 0x00000153, 0x0000 }, /* R339 - Rate Estimator 2 */ | ||
224 | { 0x00000154, 0x0000 }, /* R340 - Rate Estimator 3 */ | ||
225 | { 0x00000155, 0x0000 }, /* R341 - Rate Estimator 4 */ | ||
226 | { 0x00000156, 0x0000 }, /* R342 - Rate Estimator 5 */ | ||
227 | { 0x00000161, 0x0000 }, /* R353 - Dynamic Frequency Scaling 1 */ | ||
228 | { 0x00000171, 0x0002 }, /* R369 - FLL1 Control 1 */ | ||
229 | { 0x00000172, 0x0008 }, /* R370 - FLL1 Control 2 */ | ||
230 | { 0x00000173, 0x0018 }, /* R371 - FLL1 Control 3 */ | ||
231 | { 0x00000174, 0x007D }, /* R372 - FLL1 Control 4 */ | ||
232 | { 0x00000175, 0x0004 }, /* R373 - FLL1 Control 5 */ | ||
233 | { 0x00000176, 0x0000 }, /* R374 - FLL1 Control 6 */ | ||
234 | { 0x00000177, 0x0181 }, /* R375 - FLL1 Loop Filter Test 1 */ | ||
235 | { 0x00000178, 0x0000 }, /* R376 - FLL1 NCO Test 0 */ | ||
236 | { 0x00000179, 0x0000 }, /* R377 - FLL1 Control 7 */ | ||
237 | { 0x00000181, 0x0000 }, /* R385 - FLL1 Synchroniser 1 */ | ||
238 | { 0x00000182, 0x0000 }, /* R386 - FLL1 Synchroniser 2 */ | ||
239 | { 0x00000183, 0x0000 }, /* R387 - FLL1 Synchroniser 3 */ | ||
240 | { 0x00000184, 0x0000 }, /* R388 - FLL1 Synchroniser 4 */ | ||
241 | { 0x00000185, 0x0000 }, /* R389 - FLL1 Synchroniser 5 */ | ||
242 | { 0x00000186, 0x0000 }, /* R390 - FLL1 Synchroniser 6 */ | ||
243 | { 0x00000187, 0x0001 }, /* R391 - FLL1 Synchroniser 7 */ | ||
244 | { 0x00000189, 0x0000 }, /* R393 - FLL1 Spread Spectrum */ | ||
245 | { 0x0000018A, 0x0004 }, /* R394 - FLL1 GPIO Clock */ | ||
246 | { 0x00000191, 0x0000 }, /* R401 - FLL2 Control 1 */ | ||
247 | { 0x00000192, 0x0008 }, /* R402 - FLL2 Control 2 */ | ||
248 | { 0x00000193, 0x0018 }, /* R403 - FLL2 Control 3 */ | ||
249 | { 0x00000194, 0x007D }, /* R404 - FLL2 Control 4 */ | ||
250 | { 0x00000195, 0x0004 }, /* R405 - FLL2 Control 5 */ | ||
251 | { 0x00000196, 0x0000 }, /* R406 - FLL2 Control 6 */ | ||
252 | { 0x00000197, 0x0000 }, /* R407 - FLL2 Loop Filter Test 1 */ | ||
253 | { 0x00000198, 0x0000 }, /* R408 - FLL2 NCO Test 0 */ | ||
254 | { 0x00000199, 0x0000 }, /* R409 - FLL2 Control 7 */ | ||
255 | { 0x000001A1, 0x0000 }, /* R417 - FLL2 Synchroniser 1 */ | ||
256 | { 0x000001A2, 0x0000 }, /* R418 - FLL2 Synchroniser 2 */ | ||
257 | { 0x000001A3, 0x0000 }, /* R419 - FLL2 Synchroniser 3 */ | ||
258 | { 0x000001A4, 0x0000 }, /* R420 - FLL2 Synchroniser 4 */ | ||
259 | { 0x000001A5, 0x0000 }, /* R421 - FLL2 Synchroniser 5 */ | ||
260 | { 0x000001A6, 0x0000 }, /* R422 - FLL2 Synchroniser 6 */ | ||
261 | { 0x000001A7, 0x0001 }, /* R423 - FLL2 Synchroniser 7 */ | ||
262 | { 0x000001A9, 0x0000 }, /* R425 - FLL2 Spread Spectrum */ | ||
263 | { 0x000001AA, 0x0004 }, /* R426 - FLL2 GPIO Clock */ | ||
264 | { 0x00000200, 0x0006 }, /* R512 - Mic Charge Pump 1 */ | ||
265 | { 0x00000210, 0x00D4 }, /* R528 - LDO1 Control 1 */ | ||
266 | { 0x00000212, 0x0000 }, /* R530 - LDO1 Control 2 */ | ||
267 | { 0x00000213, 0x0344 }, /* R531 - LDO2 Control 1 */ | ||
268 | { 0x00000218, 0x01A6 }, /* R536 - Mic Bias Ctrl 1 */ | ||
269 | { 0x00000219, 0x01A6 }, /* R537 - Mic Bias Ctrl 2 */ | ||
270 | { 0x0000021A, 0x01A6 }, /* R538 - Mic Bias Ctrl 3 */ | ||
271 | { 0x00000293, 0x0080 }, /* R659 - Accessory Detect Mode 1 */ | ||
272 | { 0x0000029B, 0x0000 }, /* R667 - Headphone Detect 1 */ | ||
273 | { 0x0000029C, 0x0000 }, /* R668 - Headphone Detect 2 */ | ||
274 | { 0x000002A2, 0x0000 }, /* R674 - Micd Clamp control */ | ||
275 | { 0x000002A3, 0x1102 }, /* R675 - Mic Detect 1 */ | ||
276 | { 0x000002A4, 0x009F }, /* R676 - Mic Detect 2 */ | ||
277 | { 0x000002A5, 0x0000 }, /* R677 - Mic Detect 3 */ | ||
278 | { 0x000002A6, 0x3737 }, /* R678 - Mic Detect Level 1 */ | ||
279 | { 0x000002A7, 0x2C37 }, /* R679 - Mic Detect Level 2 */ | ||
280 | { 0x000002A8, 0x1422 }, /* R680 - Mic Detect Level 3 */ | ||
281 | { 0x000002A9, 0x030A }, /* R681 - Mic Detect Level 4 */ | ||
282 | { 0x000002AB, 0x0000 }, /* R683 - Mic Detect 4 */ | ||
283 | { 0x000002CB, 0x0000 }, /* R715 - Isolation control */ | ||
284 | { 0x000002D3, 0x0000 }, /* R723 - Jack detect analogue */ | ||
285 | { 0x00000300, 0x0000 }, /* R768 - Input Enables */ | ||
286 | { 0x00000308, 0x0000 }, /* R776 - Input Rate */ | ||
287 | { 0x00000309, 0x0022 }, /* R777 - Input Volume Ramp */ | ||
288 | { 0x0000030C, 0x0002 }, /* R780 - HPF Control */ | ||
289 | { 0x00000310, 0x2080 }, /* R784 - IN1L Control */ | ||
290 | { 0x00000311, 0x0180 }, /* R785 - ADC Digital Volume 1L */ | ||
291 | { 0x00000312, 0x0000 }, /* R786 - DMIC1L Control */ | ||
292 | { 0x00000314, 0x0080 }, /* R788 - IN1R Control */ | ||
293 | { 0x00000315, 0x0180 }, /* R789 - ADC Digital Volume 1R */ | ||
294 | { 0x00000316, 0x0000 }, /* R790 - DMIC1R Control */ | ||
295 | { 0x00000318, 0x2080 }, /* R792 - IN2L Control */ | ||
296 | { 0x00000319, 0x0180 }, /* R793 - ADC Digital Volume 2L */ | ||
297 | { 0x0000031A, 0x0000 }, /* R794 - DMIC2L Control */ | ||
298 | { 0x00000400, 0x0000 }, /* R1024 - Output Enables 1 */ | ||
299 | { 0x00000408, 0x0000 }, /* R1032 - Output Rate 1 */ | ||
300 | { 0x00000409, 0x0022 }, /* R1033 - Output Volume Ramp */ | ||
301 | { 0x00000410, 0x2080 }, /* R1040 - Output Path Config 1L */ | ||
302 | { 0x00000411, 0x0180 }, /* R1041 - DAC Digital Volume 1L */ | ||
303 | { 0x00000413, 0x0001 }, /* R1043 - Noise Gate Select 1L */ | ||
304 | { 0x00000414, 0x0080 }, /* R1044 - Output Path Config 1R */ | ||
305 | { 0x00000415, 0x0180 }, /* R1045 - DAC Digital Volume 1R */ | ||
306 | { 0x00000417, 0x0002 }, /* R1047 - Noise Gate Select 1R */ | ||
307 | { 0x00000418, 0x2080 }, /* R1048 - Output Path Config 2L */ | ||
308 | { 0x00000419, 0x0180 }, /* R1049 - DAC Digital Volume 2L */ | ||
309 | { 0x0000041B, 0x0004 }, /* R1051 - Noise Gate Select 2L */ | ||
310 | { 0x0000041C, 0x0080 }, /* R1052 - Output Path Config 2R */ | ||
311 | { 0x0000041D, 0x0180 }, /* R1053 - DAC Digital Volume 2R */ | ||
312 | { 0x0000041F, 0x0008 }, /* R1055 - Noise Gate Select 2R */ | ||
313 | { 0x00000420, 0x2080 }, /* R1056 - Output Path Config 3L */ | ||
314 | { 0x00000421, 0x0180 }, /* R1057 - DAC Digital Volume 3L */ | ||
315 | { 0x00000423, 0x0010 }, /* R1059 - Noise Gate Select 3L */ | ||
316 | { 0x00000428, 0x0000 }, /* R1064 - Output Path Config 4L */ | ||
317 | { 0x00000429, 0x0180 }, /* R1065 - DAC Digital Volume 4L */ | ||
318 | { 0x0000042B, 0x0040 }, /* R1067 - Noise Gate Select 4L */ | ||
319 | { 0x0000042C, 0x0000 }, /* R1068 - Output Path Config 4R */ | ||
320 | { 0x0000042D, 0x0180 }, /* R1069 - DAC Digital Volume 4R */ | ||
321 | { 0x0000042F, 0x0080 }, /* R1071 - Noise Gate Select 4R */ | ||
322 | { 0x00000430, 0x0000 }, /* R1072 - Output Path Config 5L */ | ||
323 | { 0x00000431, 0x0180 }, /* R1073 - DAC Digital Volume 5L */ | ||
324 | { 0x00000433, 0x0100 }, /* R1075 - Noise Gate Select 5L */ | ||
325 | { 0x00000434, 0x0000 }, /* R1076 - Output Path Config 5R */ | ||
326 | { 0x00000435, 0x0180 }, /* R1077 - DAC Digital Volume 5R */ | ||
327 | { 0x00000437, 0x0200 }, /* R1079 - Noise Gate Select 5R */ | ||
328 | { 0x00000440, 0x8FFF }, /* R1088 - DRE Enable */ | ||
329 | { 0x00000441, 0xC759 }, /* R1089 - DRE Control 1 */ | ||
330 | { 0x00000442, 0x2A08 }, /* R1089 - DRE Control 2 */ | ||
331 | { 0x00000443, 0x5CFA }, /* R1089 - DRE Control 3 */ | ||
332 | { 0x00000448, 0x03EF }, /* R1096 - EDRE Enable */ | ||
333 | { 0x00000450, 0x0000 }, /* R1104 - DAC AEC Control 1 */ | ||
334 | { 0x00000451, 0x0000 }, /* R1105 - DAC AEC Control 2 */ | ||
335 | { 0x00000458, 0x0000 }, /* R1112 - Noise Gate Control */ | ||
336 | { 0x00000490, 0x0069 }, /* R1168 - PDM SPK1 CTRL 1 */ | ||
337 | { 0x00000491, 0x0000 }, /* R1169 - PDM SPK1 CTRL 2 */ | ||
338 | { 0x0000049A, 0x0000 }, /* R1178 - HP_TEST_CTRL_13 */ | ||
339 | { 0x00000500, 0x000C }, /* R1280 - AIF1 BCLK Ctrl */ | ||
340 | { 0x00000501, 0x0008 }, /* R1281 - AIF1 Tx Pin Ctrl */ | ||
341 | { 0x00000502, 0x0000 }, /* R1282 - AIF1 Rx Pin Ctrl */ | ||
342 | { 0x00000503, 0x0000 }, /* R1283 - AIF1 Rate Ctrl */ | ||
343 | { 0x00000504, 0x0000 }, /* R1284 - AIF1 Format */ | ||
344 | { 0x00000506, 0x0040 }, /* R1286 - AIF1 Rx BCLK Rate */ | ||
345 | { 0x00000507, 0x1818 }, /* R1287 - AIF1 Frame Ctrl 1 */ | ||
346 | { 0x00000508, 0x1818 }, /* R1288 - AIF1 Frame Ctrl 2 */ | ||
347 | { 0x00000509, 0x0000 }, /* R1289 - AIF1 Frame Ctrl 3 */ | ||
348 | { 0x0000050A, 0x0001 }, /* R1290 - AIF1 Frame Ctrl 4 */ | ||
349 | { 0x0000050B, 0x0002 }, /* R1291 - AIF1 Frame Ctrl 5 */ | ||
350 | { 0x0000050C, 0x0003 }, /* R1292 - AIF1 Frame Ctrl 6 */ | ||
351 | { 0x0000050D, 0x0004 }, /* R1293 - AIF1 Frame Ctrl 7 */ | ||
352 | { 0x0000050E, 0x0005 }, /* R1294 - AIF1 Frame Ctrl 8 */ | ||
353 | { 0x00000511, 0x0000 }, /* R1297 - AIF1 Frame Ctrl 11 */ | ||
354 | { 0x00000512, 0x0001 }, /* R1298 - AIF1 Frame Ctrl 12 */ | ||
355 | { 0x00000513, 0x0002 }, /* R1299 - AIF1 Frame Ctrl 13 */ | ||
356 | { 0x00000514, 0x0003 }, /* R1300 - AIF1 Frame Ctrl 14 */ | ||
357 | { 0x00000515, 0x0004 }, /* R1301 - AIF1 Frame Ctrl 15 */ | ||
358 | { 0x00000516, 0x0005 }, /* R1302 - AIF1 Frame Ctrl 16 */ | ||
359 | { 0x00000519, 0x0000 }, /* R1305 - AIF1 Tx Enables */ | ||
360 | { 0x0000051A, 0x0000 }, /* R1306 - AIF1 Rx Enables */ | ||
361 | { 0x00000540, 0x000C }, /* R1344 - AIF2 BCLK Ctrl */ | ||
362 | { 0x00000541, 0x0008 }, /* R1345 - AIF2 Tx Pin Ctrl */ | ||
363 | { 0x00000542, 0x0000 }, /* R1346 - AIF2 Rx Pin Ctrl */ | ||
364 | { 0x00000543, 0x0000 }, /* R1347 - AIF2 Rate Ctrl */ | ||
365 | { 0x00000544, 0x0000 }, /* R1348 - AIF2 Format */ | ||
366 | { 0x00000546, 0x0040 }, /* R1350 - AIF2 Rx BCLK Rate */ | ||
367 | { 0x00000547, 0x1818 }, /* R1351 - AIF2 Frame Ctrl 1 */ | ||
368 | { 0x00000548, 0x1818 }, /* R1352 - AIF2 Frame Ctrl 2 */ | ||
369 | { 0x00000549, 0x0000 }, /* R1353 - AIF2 Frame Ctrl 3 */ | ||
370 | { 0x0000054A, 0x0001 }, /* R1354 - AIF2 Frame Ctrl 4 */ | ||
371 | { 0x0000054B, 0x0002 }, /* R1355 - AIF2 Frame Ctrl 5 */ | ||
372 | { 0x0000054C, 0x0003 }, /* R1356 - AIF2 Frame Ctrl 6 */ | ||
373 | { 0x0000054D, 0x0004 }, /* R1357 - AIF2 Frame Ctrl 7 */ | ||
374 | { 0x0000054E, 0x0005 }, /* R1358 - AIF2 Frame Ctrl 8 */ | ||
375 | { 0x00000551, 0x0000 }, /* R1361 - AIF2 Frame Ctrl 11 */ | ||
376 | { 0x00000552, 0x0001 }, /* R1362 - AIF2 Frame Ctrl 12 */ | ||
377 | { 0x00000553, 0x0002 }, /* R1363 - AIF2 Frame Ctrl 13 */ | ||
378 | { 0x00000554, 0x0003 }, /* R1364 - AIF2 Frame Ctrl 14 */ | ||
379 | { 0x00000555, 0x0004 }, /* R1365 - AIF2 Frame Ctrl 15 */ | ||
380 | { 0x00000556, 0x0005 }, /* R1366 - AIF2 Frame Ctrl 16 */ | ||
381 | { 0x00000559, 0x0000 }, /* R1369 - AIF2 Tx Enables */ | ||
382 | { 0x0000055A, 0x0000 }, /* R1370 - AIF2 Rx Enables */ | ||
383 | { 0x00000580, 0x000C }, /* R1408 - AIF3 BCLK Ctrl */ | ||
384 | { 0x00000581, 0x0008 }, /* R1409 - AIF3 Tx Pin Ctrl */ | ||
385 | { 0x00000582, 0x0000 }, /* R1410 - AIF3 Rx Pin Ctrl */ | ||
386 | { 0x00000583, 0x0000 }, /* R1411 - AIF3 Rate Ctrl */ | ||
387 | { 0x00000584, 0x0000 }, /* R1412 - AIF3 Format */ | ||
388 | { 0x00000586, 0x0040 }, /* R1414 - AIF3 Rx BCLK Rate */ | ||
389 | { 0x00000587, 0x1818 }, /* R1415 - AIF3 Frame Ctrl 1 */ | ||
390 | { 0x00000588, 0x1818 }, /* R1416 - AIF3 Frame Ctrl 2 */ | ||
391 | { 0x00000589, 0x0000 }, /* R1417 - AIF3 Frame Ctrl 3 */ | ||
392 | { 0x0000058A, 0x0001 }, /* R1418 - AIF3 Frame Ctrl 4 */ | ||
393 | { 0x00000591, 0x0000 }, /* R1425 - AIF3 Frame Ctrl 11 */ | ||
394 | { 0x00000592, 0x0001 }, /* R1426 - AIF3 Frame Ctrl 12 */ | ||
395 | { 0x00000599, 0x0000 }, /* R1433 - AIF3 Tx Enables */ | ||
396 | { 0x0000059A, 0x0000 }, /* R1434 - AIF3 Rx Enables */ | ||
397 | { 0x000005C2, 0x0000 }, /* R1474 - SPD1 TX Control */ | ||
398 | { 0x000005C3, 0x0000 }, /* R1475 - SPD1 TX Channel Status 1 */ | ||
399 | { 0x000005C4, 0x0B01 }, /* R1476 - SPD1 TX Channel Status 2 */ | ||
400 | { 0x000005C5, 0x0000 }, /* R1477 - SPD1 TX Channel Status 3 */ | ||
401 | { 0x000005E3, 0x0004 }, /* R1507 - SLIMbus Framer Ref Gear */ | ||
402 | { 0x000005E5, 0x0000 }, /* R1509 - SLIMbus Rates 1 */ | ||
403 | { 0x000005E6, 0x0000 }, /* R1510 - SLIMbus Rates 2 */ | ||
404 | { 0x000005E9, 0x0000 }, /* R1513 - SLIMbus Rates 5 */ | ||
405 | { 0x000005EA, 0x0000 }, /* R1514 - SLIMbus Rates 6 */ | ||
406 | { 0x000005EB, 0x0000 }, /* R1515 - SLIMbus Rates 7 */ | ||
407 | { 0x000005F5, 0x0000 }, /* R1525 - SLIMbus RX Channel Enable */ | ||
408 | { 0x000005F6, 0x0000 }, /* R1526 - SLIMbus TX Channel Enable */ | ||
409 | { 0x00000640, 0x0000 }, /* R1600 - PWM1MIX Input 1 Source */ | ||
410 | { 0x00000641, 0x0080 }, /* R1601 - PWM1MIX Input 1 Volume */ | ||
411 | { 0x00000642, 0x0000 }, /* R1602 - PWM1MIX Input 2 Source */ | ||
412 | { 0x00000643, 0x0080 }, /* R1603 - PWM1MIX Input 2 Volume */ | ||
413 | { 0x00000644, 0x0000 }, /* R1604 - PWM1MIX Input 3 Source */ | ||
414 | { 0x00000645, 0x0080 }, /* R1605 - PWM1MIX Input 3 Volume */ | ||
415 | { 0x00000646, 0x0000 }, /* R1606 - PWM1MIX Input 4 Source */ | ||
416 | { 0x00000647, 0x0080 }, /* R1607 - PWM1MIX Input 4 Volume */ | ||
417 | { 0x00000648, 0x0000 }, /* R1608 - PWM2MIX Input 1 Source */ | ||
418 | { 0x00000649, 0x0080 }, /* R1609 - PWM2MIX Input 1 Volume */ | ||
419 | { 0x0000064A, 0x0000 }, /* R1610 - PWM2MIX Input 2 Source */ | ||
420 | { 0x0000064B, 0x0080 }, /* R1611 - PWM2MIX Input 2 Volume */ | ||
421 | { 0x0000064C, 0x0000 }, /* R1612 - PWM2MIX Input 3 Source */ | ||
422 | { 0x0000064D, 0x0080 }, /* R1613 - PWM2MIX Input 3 Volume */ | ||
423 | { 0x0000064E, 0x0000 }, /* R1614 - PWM2MIX Input 4 Source */ | ||
424 | { 0x0000064F, 0x0080 }, /* R1615 - PWM2MIX Input 4 Volume */ | ||
425 | { 0x00000680, 0x0000 }, /* R1664 - OUT1LMIX Input 1 Source */ | ||
426 | { 0x00000681, 0x0080 }, /* R1665 - OUT1LMIX Input 1 Volume */ | ||
427 | { 0x00000682, 0x0000 }, /* R1666 - OUT1LMIX Input 2 Source */ | ||
428 | { 0x00000683, 0x0080 }, /* R1667 - OUT1LMIX Input 2 Volume */ | ||
429 | { 0x00000684, 0x0000 }, /* R1668 - OUT1LMIX Input 3 Source */ | ||
430 | { 0x00000685, 0x0080 }, /* R1669 - OUT1LMIX Input 3 Volume */ | ||
431 | { 0x00000686, 0x0000 }, /* R1670 - OUT1LMIX Input 4 Source */ | ||
432 | { 0x00000687, 0x0080 }, /* R1671 - OUT1LMIX Input 4 Volume */ | ||
433 | { 0x00000688, 0x0000 }, /* R1672 - OUT1RMIX Input 1 Source */ | ||
434 | { 0x00000689, 0x0080 }, /* R1673 - OUT1RMIX Input 1 Volume */ | ||
435 | { 0x0000068A, 0x0000 }, /* R1674 - OUT1RMIX Input 2 Source */ | ||
436 | { 0x0000068B, 0x0080 }, /* R1675 - OUT1RMIX Input 2 Volume */ | ||
437 | { 0x0000068C, 0x0000 }, /* R1676 - OUT1RMIX Input 3 Source */ | ||
438 | { 0x0000068D, 0x0080 }, /* R1677 - OUT1RMIX Input 3 Volume */ | ||
439 | { 0x0000068E, 0x0000 }, /* R1678 - OUT1RMIX Input 4 Source */ | ||
440 | { 0x0000068F, 0x0080 }, /* R1679 - OUT1RMIX Input 4 Volume */ | ||
441 | { 0x00000690, 0x0000 }, /* R1680 - OUT2LMIX Input 1 Source */ | ||
442 | { 0x00000691, 0x0080 }, /* R1681 - OUT2LMIX Input 1 Volume */ | ||
443 | { 0x00000692, 0x0000 }, /* R1682 - OUT2LMIX Input 2 Source */ | ||
444 | { 0x00000693, 0x0080 }, /* R1683 - OUT2LMIX Input 2 Volume */ | ||
445 | { 0x00000694, 0x0000 }, /* R1684 - OUT2LMIX Input 3 Source */ | ||
446 | { 0x00000695, 0x0080 }, /* R1685 - OUT2LMIX Input 3 Volume */ | ||
447 | { 0x00000696, 0x0000 }, /* R1686 - OUT2LMIX Input 4 Source */ | ||
448 | { 0x00000697, 0x0080 }, /* R1687 - OUT2LMIX Input 4 Volume */ | ||
449 | { 0x00000698, 0x0000 }, /* R1688 - OUT2RMIX Input 1 Source */ | ||
450 | { 0x00000699, 0x0080 }, /* R1689 - OUT2RMIX Input 1 Volume */ | ||
451 | { 0x0000069A, 0x0000 }, /* R1690 - OUT2RMIX Input 2 Source */ | ||
452 | { 0x0000069B, 0x0080 }, /* R1691 - OUT2RMIX Input 2 Volume */ | ||
453 | { 0x0000069C, 0x0000 }, /* R1692 - OUT2RMIX Input 3 Source */ | ||
454 | { 0x0000069D, 0x0080 }, /* R1693 - OUT2RMIX Input 3 Volume */ | ||
455 | { 0x0000069E, 0x0000 }, /* R1694 - OUT2RMIX Input 4 Source */ | ||
456 | { 0x0000069F, 0x0080 }, /* R1695 - OUT2RMIX Input 4 Volume */ | ||
457 | { 0x000006A0, 0x0000 }, /* R1696 - OUT3LMIX Input 1 Source */ | ||
458 | { 0x000006A1, 0x0080 }, /* R1697 - OUT3LMIX Input 1 Volume */ | ||
459 | { 0x000006A2, 0x0000 }, /* R1698 - OUT3LMIX Input 2 Source */ | ||
460 | { 0x000006A3, 0x0080 }, /* R1699 - OUT3LMIX Input 2 Volume */ | ||
461 | { 0x000006A4, 0x0000 }, /* R1700 - OUT3LMIX Input 3 Source */ | ||
462 | { 0x000006A5, 0x0080 }, /* R1701 - OUT3LMIX Input 3 Volume */ | ||
463 | { 0x000006A6, 0x0000 }, /* R1702 - OUT3LMIX Input 4 Source */ | ||
464 | { 0x000006A7, 0x0080 }, /* R1703 - OUT3LMIX Input 4 Volume */ | ||
465 | { 0x000006B0, 0x0000 }, /* R1712 - OUT4LMIX Input 1 Source */ | ||
466 | { 0x000006B1, 0x0080 }, /* R1713 - OUT4LMIX Input 1 Volume */ | ||
467 | { 0x000006B2, 0x0000 }, /* R1714 - OUT4LMIX Input 2 Source */ | ||
468 | { 0x000006B3, 0x0080 }, /* R1715 - OUT4LMIX Input 2 Volume */ | ||
469 | { 0x000006B4, 0x0000 }, /* R1716 - OUT4LMIX Input 3 Source */ | ||
470 | { 0x000006B5, 0x0080 }, /* R1717 - OUT4LMIX Input 3 Volume */ | ||
471 | { 0x000006B6, 0x0000 }, /* R1718 - OUT4LMIX Input 4 Source */ | ||
472 | { 0x000006B7, 0x0080 }, /* R1719 - OUT4LMIX Input 4 Volume */ | ||
473 | { 0x000006B8, 0x0000 }, /* R1720 - OUT4RMIX Input 1 Source */ | ||
474 | { 0x000006B9, 0x0080 }, /* R1721 - OUT4RMIX Input 1 Volume */ | ||
475 | { 0x000006BA, 0x0000 }, /* R1722 - OUT4RMIX Input 2 Source */ | ||
476 | { 0x000006BB, 0x0080 }, /* R1723 - OUT4RMIX Input 2 Volume */ | ||
477 | { 0x000006BC, 0x0000 }, /* R1724 - OUT4RMIX Input 3 Source */ | ||
478 | { 0x000006BD, 0x0080 }, /* R1725 - OUT4RMIX Input 3 Volume */ | ||
479 | { 0x000006BE, 0x0000 }, /* R1726 - OUT4RMIX Input 4 Source */ | ||
480 | { 0x000006BF, 0x0080 }, /* R1727 - OUT4RMIX Input 4 Volume */ | ||
481 | { 0x000006C0, 0x0000 }, /* R1728 - OUT5LMIX Input 1 Source */ | ||
482 | { 0x000006C1, 0x0080 }, /* R1729 - OUT5LMIX Input 1 Volume */ | ||
483 | { 0x000006C2, 0x0000 }, /* R1730 - OUT5LMIX Input 2 Source */ | ||
484 | { 0x000006C3, 0x0080 }, /* R1731 - OUT5LMIX Input 2 Volume */ | ||
485 | { 0x000006C4, 0x0000 }, /* R1732 - OUT5LMIX Input 3 Source */ | ||
486 | { 0x000006C5, 0x0080 }, /* R1733 - OUT5LMIX Input 3 Volume */ | ||
487 | { 0x000006C6, 0x0000 }, /* R1734 - OUT5LMIX Input 4 Source */ | ||
488 | { 0x000006C7, 0x0080 }, /* R1735 - OUT5LMIX Input 4 Volume */ | ||
489 | { 0x000006C8, 0x0000 }, /* R1736 - OUT5RMIX Input 1 Source */ | ||
490 | { 0x000006C9, 0x0080 }, /* R1737 - OUT5RMIX Input 1 Volume */ | ||
491 | { 0x000006CA, 0x0000 }, /* R1738 - OUT5RMIX Input 2 Source */ | ||
492 | { 0x000006CB, 0x0080 }, /* R1739 - OUT5RMIX Input 2 Volume */ | ||
493 | { 0x000006CC, 0x0000 }, /* R1740 - OUT5RMIX Input 3 Source */ | ||
494 | { 0x000006CD, 0x0080 }, /* R1741 - OUT5RMIX Input 3 Volume */ | ||
495 | { 0x000006CE, 0x0000 }, /* R1742 - OUT5RMIX Input 4 Source */ | ||
496 | { 0x000006CF, 0x0080 }, /* R1743 - OUT5RMIX Input 4 Volume */ | ||
497 | { 0x00000700, 0x0000 }, /* R1792 - AIF1TX1MIX Input 1 Source */ | ||
498 | { 0x00000701, 0x0080 }, /* R1793 - AIF1TX1MIX Input 1 Volume */ | ||
499 | { 0x00000702, 0x0000 }, /* R1794 - AIF1TX1MIX Input 2 Source */ | ||
500 | { 0x00000703, 0x0080 }, /* R1795 - AIF1TX1MIX Input 2 Volume */ | ||
501 | { 0x00000704, 0x0000 }, /* R1796 - AIF1TX1MIX Input 3 Source */ | ||
502 | { 0x00000705, 0x0080 }, /* R1797 - AIF1TX1MIX Input 3 Volume */ | ||
503 | { 0x00000706, 0x0000 }, /* R1798 - AIF1TX1MIX Input 4 Source */ | ||
504 | { 0x00000707, 0x0080 }, /* R1799 - AIF1TX1MIX Input 4 Volume */ | ||
505 | { 0x00000708, 0x0000 }, /* R1800 - AIF1TX2MIX Input 1 Source */ | ||
506 | { 0x00000709, 0x0080 }, /* R1801 - AIF1TX2MIX Input 1 Volume */ | ||
507 | { 0x0000070A, 0x0000 }, /* R1802 - AIF1TX2MIX Input 2 Source */ | ||
508 | { 0x0000070B, 0x0080 }, /* R1803 - AIF1TX2MIX Input 2 Volume */ | ||
509 | { 0x0000070C, 0x0000 }, /* R1804 - AIF1TX2MIX Input 3 Source */ | ||
510 | { 0x0000070D, 0x0080 }, /* R1805 - AIF1TX2MIX Input 3 Volume */ | ||
511 | { 0x0000070E, 0x0000 }, /* R1806 - AIF1TX2MIX Input 4 Source */ | ||
512 | { 0x0000070F, 0x0080 }, /* R1807 - AIF1TX2MIX Input 4 Volume */ | ||
513 | { 0x00000710, 0x0000 }, /* R1808 - AIF1TX3MIX Input 1 Source */ | ||
514 | { 0x00000711, 0x0080 }, /* R1809 - AIF1TX3MIX Input 1 Volume */ | ||
515 | { 0x00000712, 0x0000 }, /* R1810 - AIF1TX3MIX Input 2 Source */ | ||
516 | { 0x00000713, 0x0080 }, /* R1811 - AIF1TX3MIX Input 2 Volume */ | ||
517 | { 0x00000714, 0x0000 }, /* R1812 - AIF1TX3MIX Input 3 Source */ | ||
518 | { 0x00000715, 0x0080 }, /* R1813 - AIF1TX3MIX Input 3 Volume */ | ||
519 | { 0x00000716, 0x0000 }, /* R1814 - AIF1TX3MIX Input 4 Source */ | ||
520 | { 0x00000717, 0x0080 }, /* R1815 - AIF1TX3MIX Input 4 Volume */ | ||
521 | { 0x00000718, 0x0000 }, /* R1816 - AIF1TX4MIX Input 1 Source */ | ||
522 | { 0x00000719, 0x0080 }, /* R1817 - AIF1TX4MIX Input 1 Volume */ | ||
523 | { 0x0000071A, 0x0000 }, /* R1818 - AIF1TX4MIX Input 2 Source */ | ||
524 | { 0x0000071B, 0x0080 }, /* R1819 - AIF1TX4MIX Input 2 Volume */ | ||
525 | { 0x0000071C, 0x0000 }, /* R1820 - AIF1TX4MIX Input 3 Source */ | ||
526 | { 0x0000071D, 0x0080 }, /* R1821 - AIF1TX4MIX Input 3 Volume */ | ||
527 | { 0x0000071E, 0x0000 }, /* R1822 - AIF1TX4MIX Input 4 Source */ | ||
528 | { 0x0000071F, 0x0080 }, /* R1823 - AIF1TX4MIX Input 4 Volume */ | ||
529 | { 0x00000720, 0x0000 }, /* R1824 - AIF1TX5MIX Input 1 Source */ | ||
530 | { 0x00000721, 0x0080 }, /* R1825 - AIF1TX5MIX Input 1 Volume */ | ||
531 | { 0x00000722, 0x0000 }, /* R1826 - AIF1TX5MIX Input 2 Source */ | ||
532 | { 0x00000723, 0x0080 }, /* R1827 - AIF1TX5MIX Input 2 Volume */ | ||
533 | { 0x00000724, 0x0000 }, /* R1828 - AIF1TX5MIX Input 3 Source */ | ||
534 | { 0x00000725, 0x0080 }, /* R1829 - AIF1TX5MIX Input 3 Volume */ | ||
535 | { 0x00000726, 0x0000 }, /* R1830 - AIF1TX5MIX Input 4 Source */ | ||
536 | { 0x00000727, 0x0080 }, /* R1831 - AIF1TX5MIX Input 4 Volume */ | ||
537 | { 0x00000728, 0x0000 }, /* R1832 - AIF1TX6MIX Input 1 Source */ | ||
538 | { 0x00000729, 0x0080 }, /* R1833 - AIF1TX6MIX Input 1 Volume */ | ||
539 | { 0x0000072A, 0x0000 }, /* R1834 - AIF1TX6MIX Input 2 Source */ | ||
540 | { 0x0000072B, 0x0080 }, /* R1835 - AIF1TX6MIX Input 2 Volume */ | ||
541 | { 0x0000072C, 0x0000 }, /* R1836 - AIF1TX6MIX Input 3 Source */ | ||
542 | { 0x0000072D, 0x0080 }, /* R1837 - AIF1TX6MIX Input 3 Volume */ | ||
543 | { 0x0000072E, 0x0000 }, /* R1838 - AIF1TX6MIX Input 4 Source */ | ||
544 | { 0x0000072F, 0x0080 }, /* R1839 - AIF1TX6MIX Input 4 Volume */ | ||
545 | { 0x00000740, 0x0000 }, /* R1856 - AIF2TX1MIX Input 1 Source */ | ||
546 | { 0x00000741, 0x0080 }, /* R1857 - AIF2TX1MIX Input 1 Volume */ | ||
547 | { 0x00000742, 0x0000 }, /* R1858 - AIF2TX1MIX Input 2 Source */ | ||
548 | { 0x00000743, 0x0080 }, /* R1859 - AIF2TX1MIX Input 2 Volume */ | ||
549 | { 0x00000744, 0x0000 }, /* R1860 - AIF2TX1MIX Input 3 Source */ | ||
550 | { 0x00000745, 0x0080 }, /* R1861 - AIF2TX1MIX Input 3 Volume */ | ||
551 | { 0x00000746, 0x0000 }, /* R1862 - AIF2TX1MIX Input 4 Source */ | ||
552 | { 0x00000747, 0x0080 }, /* R1863 - AIF2TX1MIX Input 4 Volume */ | ||
553 | { 0x00000748, 0x0000 }, /* R1864 - AIF2TX2MIX Input 1 Source */ | ||
554 | { 0x00000749, 0x0080 }, /* R1865 - AIF2TX2MIX Input 1 Volume */ | ||
555 | { 0x0000074A, 0x0000 }, /* R1866 - AIF2TX2MIX Input 2 Source */ | ||
556 | { 0x0000074B, 0x0080 }, /* R1867 - AIF2TX2MIX Input 2 Volume */ | ||
557 | { 0x0000074C, 0x0000 }, /* R1868 - AIF2TX2MIX Input 3 Source */ | ||
558 | { 0x0000074D, 0x0080 }, /* R1869 - AIF2TX2MIX Input 3 Volume */ | ||
559 | { 0x0000074E, 0x0000 }, /* R1870 - AIF2TX2MIX Input 4 Source */ | ||
560 | { 0x0000074F, 0x0080 }, /* R1871 - AIF2TX2MIX Input 4 Volume */ | ||
561 | { 0x00000750, 0x0000 }, /* R1872 - AIF2TX3MIX Input 1 Source */ | ||
562 | { 0x00000751, 0x0080 }, /* R1873 - AIF2TX3MIX Input 1 Volume */ | ||
563 | { 0x00000752, 0x0000 }, /* R1874 - AIF2TX3MIX Input 2 Source */ | ||
564 | { 0x00000753, 0x0080 }, /* R1875 - AIF2TX3MIX Input 2 Volume */ | ||
565 | { 0x00000754, 0x0000 }, /* R1876 - AIF2TX3MIX Input 3 Source */ | ||
566 | { 0x00000755, 0x0080 }, /* R1877 - AIF2TX3MIX Input 3 Volume */ | ||
567 | { 0x00000756, 0x0000 }, /* R1878 - AIF2TX3MIX Input 4 Source */ | ||
568 | { 0x00000757, 0x0080 }, /* R1879 - AIF2TX3MIX Input 4 Volume */ | ||
569 | { 0x00000758, 0x0000 }, /* R1880 - AIF2TX4MIX Input 1 Source */ | ||
570 | { 0x00000759, 0x0080 }, /* R1881 - AIF2TX4MIX Input 1 Volume */ | ||
571 | { 0x0000075A, 0x0000 }, /* R1882 - AIF2TX4MIX Input 2 Source */ | ||
572 | { 0x0000075B, 0x0080 }, /* R1883 - AIF2TX4MIX Input 2 Volume */ | ||
573 | { 0x0000075C, 0x0000 }, /* R1884 - AIF2TX4MIX Input 3 Source */ | ||
574 | { 0x0000075D, 0x0080 }, /* R1885 - AIF2TX4MIX Input 3 Volume */ | ||
575 | { 0x0000075E, 0x0000 }, /* R1886 - AIF2TX4MIX Input 4 Source */ | ||
576 | { 0x0000075F, 0x0080 }, /* R1887 - AIF2TX4MIX Input 4 Volume */ | ||
577 | { 0x00000760, 0x0000 }, /* R1888 - AIF2TX5MIX Input 1 Source */ | ||
578 | { 0x00000761, 0x0080 }, /* R1889 - AIF2TX5MIX Input 1 Volume */ | ||
579 | { 0x00000762, 0x0000 }, /* R1890 - AIF2TX5MIX Input 2 Source */ | ||
580 | { 0x00000763, 0x0080 }, /* R1891 - AIF2TX5MIX Input 2 Volume */ | ||
581 | { 0x00000764, 0x0000 }, /* R1892 - AIF2TX5MIX Input 3 Source */ | ||
582 | { 0x00000765, 0x0080 }, /* R1893 - AIF2TX5MIX Input 3 Volume */ | ||
583 | { 0x00000766, 0x0000 }, /* R1894 - AIF2TX5MIX Input 4 Source */ | ||
584 | { 0x00000767, 0x0080 }, /* R1895 - AIF2TX5MIX Input 4 Volume */ | ||
585 | { 0x00000768, 0x0000 }, /* R1896 - AIF2TX6MIX Input 1 Source */ | ||
586 | { 0x00000769, 0x0080 }, /* R1897 - AIF2TX6MIX Input 1 Volume */ | ||
587 | { 0x0000076A, 0x0000 }, /* R1898 - AIF2TX6MIX Input 2 Source */ | ||
588 | { 0x0000076B, 0x0080 }, /* R1899 - AIF2TX6MIX Input 2 Volume */ | ||
589 | { 0x0000076C, 0x0000 }, /* R1900 - AIF2TX6MIX Input 3 Source */ | ||
590 | { 0x0000076D, 0x0080 }, /* R1901 - AIF2TX6MIX Input 3 Volume */ | ||
591 | { 0x0000076E, 0x0000 }, /* R1902 - AIF2TX6MIX Input 4 Source */ | ||
592 | { 0x0000076F, 0x0080 }, /* R1903 - AIF2TX6MIX Input 4 Volume */ | ||
593 | { 0x00000780, 0x0000 }, /* R1920 - AIF3TX1MIX Input 1 Source */ | ||
594 | { 0x00000781, 0x0080 }, /* R1921 - AIF3TX1MIX Input 1 Volume */ | ||
595 | { 0x00000782, 0x0000 }, /* R1922 - AIF3TX1MIX Input 2 Source */ | ||
596 | { 0x00000783, 0x0080 }, /* R1923 - AIF3TX1MIX Input 2 Volume */ | ||
597 | { 0x00000784, 0x0000 }, /* R1924 - AIF3TX1MIX Input 3 Source */ | ||
598 | { 0x00000785, 0x0080 }, /* R1925 - AIF3TX1MIX Input 3 Volume */ | ||
599 | { 0x00000786, 0x0000 }, /* R1926 - AIF3TX1MIX Input 4 Source */ | ||
600 | { 0x00000787, 0x0080 }, /* R1927 - AIF3TX1MIX Input 4 Volume */ | ||
601 | { 0x00000788, 0x0000 }, /* R1928 - AIF3TX2MIX Input 1 Source */ | ||
602 | { 0x00000789, 0x0080 }, /* R1929 - AIF3TX2MIX Input 1 Volume */ | ||
603 | { 0x0000078A, 0x0000 }, /* R1930 - AIF3TX2MIX Input 2 Source */ | ||
604 | { 0x0000078B, 0x0080 }, /* R1931 - AIF3TX2MIX Input 2 Volume */ | ||
605 | { 0x0000078C, 0x0000 }, /* R1932 - AIF3TX2MIX Input 3 Source */ | ||
606 | { 0x0000078D, 0x0080 }, /* R1933 - AIF3TX2MIX Input 3 Volume */ | ||
607 | { 0x0000078E, 0x0000 }, /* R1934 - AIF3TX2MIX Input 4 Source */ | ||
608 | { 0x0000078F, 0x0080 }, /* R1935 - AIF3TX2MIX Input 4 Volume */ | ||
609 | { 0x000007C0, 0x0000 }, /* R1984 - SLIMTX1MIX Input 1 Source */ | ||
610 | { 0x000007C1, 0x0080 }, /* R1985 - SLIMTX1MIX Input 1 Volume */ | ||
611 | { 0x000007C8, 0x0000 }, /* R1992 - SLIMTX2MIX Input 1 Source */ | ||
612 | { 0x000007C9, 0x0080 }, /* R1993 - SLIMTX2MIX Input 1 Volume */ | ||
613 | { 0x000007D0, 0x0000 }, /* R2000 - SLIMTX3MIX Input 1 Source */ | ||
614 | { 0x000007D1, 0x0080 }, /* R2001 - SLIMTX3MIX Input 1 Volume */ | ||
615 | { 0x000007D8, 0x0000 }, /* R2008 - SLIMTX4MIX Input 1 Source */ | ||
616 | { 0x000007D9, 0x0080 }, /* R2009 - SLIMTX4MIX Input 1 Volume */ | ||
617 | { 0x000007E0, 0x0000 }, /* R2016 - SLIMTX5MIX Input 1 Source */ | ||
618 | { 0x000007E1, 0x0080 }, /* R2017 - SLIMTX5MIX Input 1 Volume */ | ||
619 | { 0x000007E8, 0x0000 }, /* R2024 - SLIMTX6MIX Input 1 Source */ | ||
620 | { 0x000007E9, 0x0080 }, /* R2025 - SLIMTX6MIX Input 1 Volume */ | ||
621 | { 0x00000800, 0x0000 }, /* R2048 - SPDIF1TX1MIX Input 1 Source */ | ||
622 | { 0x00000801, 0x0080 }, /* R2049 - SPDIF1TX1MIX Input 1 Volume */ | ||
623 | { 0x00000808, 0x0000 }, /* R2056 - SPDIF1TX2MIX Input 1 Source */ | ||
624 | { 0x00000809, 0x0080 }, /* R2057 - SPDIF1TX2MIX Input 1 Volume */ | ||
625 | { 0x00000880, 0x0000 }, /* R2176 - EQ1MIX Input 1 Source */ | ||
626 | { 0x00000881, 0x0080 }, /* R2177 - EQ1MIX Input 1 Volume */ | ||
627 | { 0x00000888, 0x0000 }, /* R2184 - EQ2MIX Input 1 Source */ | ||
628 | { 0x00000889, 0x0080 }, /* R2185 - EQ2MIX Input 1 Volume */ | ||
629 | { 0x00000890, 0x0000 }, /* R2192 - EQ3MIX Input 1 Source */ | ||
630 | { 0x00000891, 0x0080 }, /* R2193 - EQ3MIX Input 1 Volume */ | ||
631 | { 0x00000898, 0x0000 }, /* R2200 - EQ4MIX Input 1 Source */ | ||
632 | { 0x00000899, 0x0080 }, /* R2201 - EQ4MIX Input 1 Volume */ | ||
633 | { 0x000008C0, 0x0000 }, /* R2240 - DRC1LMIX Input 1 Source */ | ||
634 | { 0x000008C1, 0x0080 }, /* R2241 - DRC1LMIX Input 1 Volume */ | ||
635 | { 0x000008C8, 0x0000 }, /* R2248 - DRC1RMIX Input 1 Source */ | ||
636 | { 0x000008C9, 0x0080 }, /* R2249 - DRC1RMIX Input 1 Volume */ | ||
637 | { 0x00000900, 0x0000 }, /* R2304 - HPLP1MIX Input 1 Source */ | ||
638 | { 0x00000901, 0x0080 }, /* R2305 - HPLP1MIX Input 1 Volume */ | ||
639 | { 0x00000902, 0x0000 }, /* R2306 - HPLP1MIX Input 2 Source */ | ||
640 | { 0x00000903, 0x0080 }, /* R2307 - HPLP1MIX Input 2 Volume */ | ||
641 | { 0x00000904, 0x0000 }, /* R2308 - HPLP1MIX Input 3 Source */ | ||
642 | { 0x00000905, 0x0080 }, /* R2309 - HPLP1MIX Input 3 Volume */ | ||
643 | { 0x00000906, 0x0000 }, /* R2310 - HPLP1MIX Input 4 Source */ | ||
644 | { 0x00000907, 0x0080 }, /* R2311 - HPLP1MIX Input 4 Volume */ | ||
645 | { 0x00000908, 0x0000 }, /* R2312 - HPLP2MIX Input 1 Source */ | ||
646 | { 0x00000909, 0x0080 }, /* R2313 - HPLP2MIX Input 1 Volume */ | ||
647 | { 0x0000090A, 0x0000 }, /* R2314 - HPLP2MIX Input 2 Source */ | ||
648 | { 0x0000090B, 0x0080 }, /* R2315 - HPLP2MIX Input 2 Volume */ | ||
649 | { 0x0000090C, 0x0000 }, /* R2316 - HPLP2MIX Input 3 Source */ | ||
650 | { 0x0000090D, 0x0080 }, /* R2317 - HPLP2MIX Input 3 Volume */ | ||
651 | { 0x0000090E, 0x0000 }, /* R2318 - HPLP2MIX Input 4 Source */ | ||
652 | { 0x0000090F, 0x0080 }, /* R2319 - HPLP2MIX Input 4 Volume */ | ||
653 | { 0x00000910, 0x0000 }, /* R2320 - HPLP3MIX Input 1 Source */ | ||
654 | { 0x00000911, 0x0080 }, /* R2321 - HPLP3MIX Input 1 Volume */ | ||
655 | { 0x00000912, 0x0000 }, /* R2322 - HPLP3MIX Input 2 Source */ | ||
656 | { 0x00000913, 0x0080 }, /* R2323 - HPLP3MIX Input 2 Volume */ | ||
657 | { 0x00000914, 0x0000 }, /* R2324 - HPLP3MIX Input 3 Source */ | ||
658 | { 0x00000915, 0x0080 }, /* R2325 - HPLP3MIX Input 3 Volume */ | ||
659 | { 0x00000916, 0x0000 }, /* R2326 - HPLP3MIX Input 4 Source */ | ||
660 | { 0x00000917, 0x0080 }, /* R2327 - HPLP3MIX Input 4 Volume */ | ||
661 | { 0x00000918, 0x0000 }, /* R2328 - HPLP4MIX Input 1 Source */ | ||
662 | { 0x00000919, 0x0080 }, /* R2329 - HPLP4MIX Input 1 Volume */ | ||
663 | { 0x0000091A, 0x0000 }, /* R2330 - HPLP4MIX Input 2 Source */ | ||
664 | { 0x0000091B, 0x0080 }, /* R2331 - HPLP4MIX Input 2 Volume */ | ||
665 | { 0x0000091C, 0x0000 }, /* R2332 - HPLP4MIX Input 3 Source */ | ||
666 | { 0x0000091D, 0x0080 }, /* R2333 - HPLP4MIX Input 3 Volume */ | ||
667 | { 0x0000091E, 0x0000 }, /* R2334 - HPLP4MIX Input 4 Source */ | ||
668 | { 0x0000091F, 0x0080 }, /* R2335 - HPLP4MIX Input 4 Volume */ | ||
669 | { 0x00000A80, 0x0000 }, /* R2688 - ASRC1LMIX Input 1 Source */ | ||
670 | { 0x00000A88, 0x0000 }, /* R2696 - ASRC1RMIX Input 1 Source */ | ||
671 | { 0x00000A90, 0x0000 }, /* R2704 - ASRC2LMIX Input 1 Source */ | ||
672 | { 0x00000A98, 0x0000 }, /* R2712 - ASRC2RMIX Input 1 Source */ | ||
673 | { 0x00000B00, 0x0000 }, /* R2816 - ISRC1DEC1MIX Input 1 Source */ | ||
674 | { 0x00000B08, 0x0000 }, /* R2824 - ISRC1DEC2MIX Input 1 Source */ | ||
675 | { 0x00000B10, 0x0000 }, /* R2832 - ISRC1DEC3MIX Input 1 Source */ | ||
676 | { 0x00000B18, 0x0000 }, /* R2840 - ISRC1DEC4MIX Input 1 Source */ | ||
677 | { 0x00000B20, 0x0000 }, /* R2848 - ISRC1INT1MIX Input 1 Source */ | ||
678 | { 0x00000B28, 0x0000 }, /* R2856 - ISRC1INT2MIX Input 1 Source */ | ||
679 | { 0x00000B30, 0x0000 }, /* R2864 - ISRC1INT3MIX Input 1 Source */ | ||
680 | { 0x00000B38, 0x0000 }, /* R2872 - ISRC1INT4MIX Input 1 Source */ | ||
681 | { 0x00000B40, 0x0000 }, /* R2880 - ISRC2DEC1MIX Input 1 Source */ | ||
682 | { 0x00000B48, 0x0000 }, /* R2888 - ISRC2DEC2MIX Input 1 Source */ | ||
683 | { 0x00000B60, 0x0000 }, /* R2912 - ISRC2INT1MIX Input 1 Source */ | ||
684 | { 0x00000B68, 0x0000 }, /* R2920 - ISRC2INT2MIX Input 1 Source */ | ||
685 | { 0x00000C00, 0xA101 }, /* R3072 - GPIO1 CTRL */ | ||
686 | { 0x00000C01, 0xA101 }, /* R3073 - GPIO2 CTRL */ | ||
687 | { 0x00000C02, 0xA101 }, /* R3074 - GPIO3 CTRL */ | ||
688 | { 0x00000C03, 0xA101 }, /* R3075 - GPIO4 CTRL */ | ||
689 | { 0x00000C04, 0xA101 }, /* R3076 - GPIO5 CTRL */ | ||
690 | { 0x00000C0F, 0x0400 }, /* R3087 - IRQ CTRL 1 */ | ||
691 | { 0x00000C10, 0x1000 }, /* R3088 - GPIO Debounce Config */ | ||
692 | { 0x00000C18, 0x0000 }, /* R3096 - GP Switch 1 */ | ||
693 | { 0x00000C20, 0x8002 }, /* R3104 - Misc Pad Ctrl 1 */ | ||
694 | { 0x00000C21, 0x8001 }, /* R3105 - Misc Pad Ctrl 2 */ | ||
695 | { 0x00000C22, 0x0000 }, /* R3106 - Misc Pad Ctrl 3 */ | ||
696 | { 0x00000C23, 0x0000 }, /* R3107 - Misc Pad Ctrl 4 */ | ||
697 | { 0x00000C24, 0x0000 }, /* R3108 - Misc Pad Ctrl 5 */ | ||
698 | { 0x00000C25, 0x0000 }, /* R3109 - Misc Pad Ctrl 6 */ | ||
699 | { 0x00000D08, 0xFFFF }, /* R3336 - Interrupt Status 1 Mask */ | ||
700 | { 0x00000D09, 0xFFFF }, /* R3337 - Interrupt Status 2 Mask */ | ||
701 | { 0x00000D0A, 0xFFFF }, /* R3338 - Interrupt Status 3 Mask */ | ||
702 | { 0x00000D0B, 0xFFFF }, /* R3339 - Interrupt Status 4 Mask */ | ||
703 | { 0x00000D0C, 0xFEFF }, /* R3340 - Interrupt Status 5 Mask */ | ||
704 | { 0x00000D0F, 0x0000 }, /* R3343 - Interrupt Control */ | ||
705 | { 0x00000D18, 0xFFFF }, /* R3352 - IRQ2 Status 1 Mask */ | ||
706 | { 0x00000D19, 0xFFFF }, /* R3353 - IRQ2 Status 2 Mask */ | ||
707 | { 0x00000D1A, 0xFFFF }, /* R3354 - IRQ2 Status 3 Mask */ | ||
708 | { 0x00000D1B, 0xFFFF }, /* R3355 - IRQ2 Status 4 Mask */ | ||
709 | { 0x00000D1C, 0xFEFF }, /* R3356 - IRQ2 Status 5 Mask */ | ||
710 | { 0x00000D1D, 0xFFFF }, /* R3357 - IRQ2 Status 6 Mask */ | ||
711 | { 0x00000D1F, 0x0000 }, /* R3359 - IRQ2 Control */ | ||
712 | { 0x00000D53, 0xFFFF }, /* R3411 - AOD IRQ Mask IRQ1 */ | ||
713 | { 0x00000D54, 0xFFFF }, /* R3412 - AOD IRQ Mask IRQ2 */ | ||
714 | { 0x00000D56, 0x0000 }, /* R3414 - Jack detect debounce */ | ||
715 | { 0x00000E00, 0x0000 }, /* R3584 - FX_Ctrl1 */ | ||
716 | { 0x00000E01, 0x0000 }, /* R3585 - FX_Ctrl2 */ | ||
717 | { 0x00000E10, 0x6318 }, /* R3600 - EQ1_1 */ | ||
718 | { 0x00000E11, 0x6300 }, /* R3601 - EQ1_2 */ | ||
719 | { 0x00000E12, 0x0FC8 }, /* R3602 - EQ1_3 */ | ||
720 | { 0x00000E13, 0x03FE }, /* R3603 - EQ1_4 */ | ||
721 | { 0x00000E14, 0x00E0 }, /* R3604 - EQ1_5 */ | ||
722 | { 0x00000E15, 0x1EC4 }, /* R3605 - EQ1_6 */ | ||
723 | { 0x00000E16, 0xF136 }, /* R3606 - EQ1_7 */ | ||
724 | { 0x00000E17, 0x0409 }, /* R3607 - EQ1_8 */ | ||
725 | { 0x00000E18, 0x04CC }, /* R3608 - EQ1_9 */ | ||
726 | { 0x00000E19, 0x1C9B }, /* R3609 - EQ1_10 */ | ||
727 | { 0x00000E1A, 0xF337 }, /* R3610 - EQ1_11 */ | ||
728 | { 0x00000E1B, 0x040B }, /* R3611 - EQ1_12 */ | ||
729 | { 0x00000E1C, 0x0CBB }, /* R3612 - EQ1_13 */ | ||
730 | { 0x00000E1D, 0x16F8 }, /* R3613 - EQ1_14 */ | ||
731 | { 0x00000E1E, 0xF7D9 }, /* R3614 - EQ1_15 */ | ||
732 | { 0x00000E1F, 0x040A }, /* R3615 - EQ1_16 */ | ||
733 | { 0x00000E20, 0x1F14 }, /* R3616 - EQ1_17 */ | ||
734 | { 0x00000E21, 0x058C }, /* R3617 - EQ1_18 */ | ||
735 | { 0x00000E22, 0x0563 }, /* R3618 - EQ1_19 */ | ||
736 | { 0x00000E23, 0x4000 }, /* R3619 - EQ1_20 */ | ||
737 | { 0x00000E24, 0x0B75 }, /* R3620 - EQ1_21 */ | ||
738 | { 0x00000E26, 0x6318 }, /* R3622 - EQ2_1 */ | ||
739 | { 0x00000E27, 0x6300 }, /* R3623 - EQ2_2 */ | ||
740 | { 0x00000E28, 0x0FC8 }, /* R3624 - EQ2_3 */ | ||
741 | { 0x00000E29, 0x03FE }, /* R3625 - EQ2_4 */ | ||
742 | { 0x00000E2A, 0x00E0 }, /* R3626 - EQ2_5 */ | ||
743 | { 0x00000E2B, 0x1EC4 }, /* R3627 - EQ2_6 */ | ||
744 | { 0x00000E2C, 0xF136 }, /* R3628 - EQ2_7 */ | ||
745 | { 0x00000E2D, 0x0409 }, /* R3629 - EQ2_8 */ | ||
746 | { 0x00000E2E, 0x04CC }, /* R3630 - EQ2_9 */ | ||
747 | { 0x00000E2F, 0x1C9B }, /* R3631 - EQ2_10 */ | ||
748 | { 0x00000E30, 0xF337 }, /* R3632 - EQ2_11 */ | ||
749 | { 0x00000E31, 0x040B }, /* R3633 - EQ2_12 */ | ||
750 | { 0x00000E32, 0x0CBB }, /* R3634 - EQ2_13 */ | ||
751 | { 0x00000E33, 0x16F8 }, /* R3635 - EQ2_14 */ | ||
752 | { 0x00000E34, 0xF7D9 }, /* R3636 - EQ2_15 */ | ||
753 | { 0x00000E35, 0x040A }, /* R3637 - EQ2_16 */ | ||
754 | { 0x00000E36, 0x1F14 }, /* R3638 - EQ2_17 */ | ||
755 | { 0x00000E37, 0x058C }, /* R3639 - EQ2_18 */ | ||
756 | { 0x00000E38, 0x0563 }, /* R3640 - EQ2_19 */ | ||
757 | { 0x00000E39, 0x4000 }, /* R3641 - EQ2_20 */ | ||
758 | { 0x00000E3A, 0x0B75 }, /* R3642 - EQ2_21 */ | ||
759 | { 0x00000E3C, 0x6318 }, /* R3644 - EQ3_1 */ | ||
760 | { 0x00000E3D, 0x6300 }, /* R3645 - EQ3_2 */ | ||
761 | { 0x00000E3E, 0x0FC8 }, /* R3646 - EQ3_3 */ | ||
762 | { 0x00000E3F, 0x03FE }, /* R3647 - EQ3_4 */ | ||
763 | { 0x00000E40, 0x00E0 }, /* R3648 - EQ3_5 */ | ||
764 | { 0x00000E41, 0x1EC4 }, /* R3649 - EQ3_6 */ | ||
765 | { 0x00000E42, 0xF136 }, /* R3650 - EQ3_7 */ | ||
766 | { 0x00000E43, 0x0409 }, /* R3651 - EQ3_8 */ | ||
767 | { 0x00000E44, 0x04CC }, /* R3652 - EQ3_9 */ | ||
768 | { 0x00000E45, 0x1C9B }, /* R3653 - EQ3_10 */ | ||
769 | { 0x00000E46, 0xF337 }, /* R3654 - EQ3_11 */ | ||
770 | { 0x00000E47, 0x040B }, /* R3655 - EQ3_12 */ | ||
771 | { 0x00000E48, 0x0CBB }, /* R3656 - EQ3_13 */ | ||
772 | { 0x00000E49, 0x16F8 }, /* R3657 - EQ3_14 */ | ||
773 | { 0x00000E4A, 0xF7D9 }, /* R3658 - EQ3_15 */ | ||
774 | { 0x00000E4B, 0x040A }, /* R3659 - EQ3_16 */ | ||
775 | { 0x00000E4C, 0x1F14 }, /* R3660 - EQ3_17 */ | ||
776 | { 0x00000E4D, 0x058C }, /* R3661 - EQ3_18 */ | ||
777 | { 0x00000E4E, 0x0563 }, /* R3662 - EQ3_19 */ | ||
778 | { 0x00000E4F, 0x4000 }, /* R3663 - EQ3_20 */ | ||
779 | { 0x00000E50, 0x0B75 }, /* R3664 - EQ3_21 */ | ||
780 | { 0x00000E52, 0x6318 }, /* R3666 - EQ4_1 */ | ||
781 | { 0x00000E53, 0x6300 }, /* R3667 - EQ4_2 */ | ||
782 | { 0x00000E54, 0x0FC8 }, /* R3668 - EQ4_3 */ | ||
783 | { 0x00000E55, 0x03FE }, /* R3669 - EQ4_4 */ | ||
784 | { 0x00000E56, 0x00E0 }, /* R3670 - EQ4_5 */ | ||
785 | { 0x00000E57, 0x1EC4 }, /* R3671 - EQ4_6 */ | ||
786 | { 0x00000E58, 0xF136 }, /* R3672 - EQ4_7 */ | ||
787 | { 0x00000E59, 0x0409 }, /* R3673 - EQ4_8 */ | ||
788 | { 0x00000E5A, 0x04CC }, /* R3674 - EQ4_9 */ | ||
789 | { 0x00000E5B, 0x1C9B }, /* R3675 - EQ4_10 */ | ||
790 | { 0x00000E5C, 0xF337 }, /* R3676 - EQ4_11 */ | ||
791 | { 0x00000E5D, 0x040B }, /* R3677 - EQ4_12 */ | ||
792 | { 0x00000E5E, 0x0CBB }, /* R3678 - EQ4_13 */ | ||
793 | { 0x00000E5F, 0x16F8 }, /* R3679 - EQ4_14 */ | ||
794 | { 0x00000E60, 0xF7D9 }, /* R3680 - EQ4_15 */ | ||
795 | { 0x00000E61, 0x040A }, /* R3681 - EQ4_16 */ | ||
796 | { 0x00000E62, 0x1F14 }, /* R3682 - EQ4_17 */ | ||
797 | { 0x00000E63, 0x058C }, /* R3683 - EQ4_18 */ | ||
798 | { 0x00000E64, 0x0563 }, /* R3684 - EQ4_19 */ | ||
799 | { 0x00000E65, 0x4000 }, /* R3685 - EQ4_20 */ | ||
800 | { 0x00000E66, 0x0B75 }, /* R3686 - EQ4_21 */ | ||
801 | { 0x00000E80, 0x0018 }, /* R3712 - DRC1 ctrl1 */ | ||
802 | { 0x00000E81, 0x0933 }, /* R3713 - DRC1 ctrl2 */ | ||
803 | { 0x00000E82, 0x0018 }, /* R3714 - DRC1 ctrl3 */ | ||
804 | { 0x00000E83, 0x0000 }, /* R3715 - DRC1 ctrl4 */ | ||
805 | { 0x00000E84, 0x0000 }, /* R3716 - DRC1 ctrl5 */ | ||
806 | { 0x00000EC0, 0x0000 }, /* R3776 - HPLPF1_1 */ | ||
807 | { 0x00000EC1, 0x0000 }, /* R3777 - HPLPF1_2 */ | ||
808 | { 0x00000EC4, 0x0000 }, /* R3780 - HPLPF2_1 */ | ||
809 | { 0x00000EC5, 0x0000 }, /* R3781 - HPLPF2_2 */ | ||
810 | { 0x00000EC8, 0x0000 }, /* R3784 - HPLPF3_1 */ | ||
811 | { 0x00000EC9, 0x0000 }, /* R3785 - HPLPF3_2 */ | ||
812 | { 0x00000ECC, 0x0000 }, /* R3788 - HPLPF4_1 */ | ||
813 | { 0x00000ECD, 0x0000 }, /* R3789 - HPLPF4_2 */ | ||
814 | { 0x00000EE0, 0x0000 }, /* R3808 - ASRC_ENABLE */ | ||
815 | { 0x00000EE2, 0x0000 }, /* R3810 - ASRC_RATE1 */ | ||
816 | { 0x00000EE3, 0x4000 }, /* R3811 - ASRC_RATE2 */ | ||
817 | { 0x00000EF0, 0x0000 }, /* R3824 - ISRC 1 CTRL 1 */ | ||
818 | { 0x00000EF1, 0x0001 }, /* R3825 - ISRC 1 CTRL 2 */ | ||
819 | { 0x00000EF2, 0x0000 }, /* R3826 - ISRC 1 CTRL 3 */ | ||
820 | { 0x00000EF3, 0x0000 }, /* R3827 - ISRC 2 CTRL 1 */ | ||
821 | { 0x00000EF4, 0x0001 }, /* R3828 - ISRC 2 CTRL 2 */ | ||
822 | { 0x00000EF5, 0x0000 }, /* R3829 - ISRC 2 CTRL 3 */ | ||
823 | { 0x00001700, 0x0000 }, /* R5888 - FRF_COEFF_1 */ | ||
824 | { 0x00001701, 0x0000 }, /* R5889 - FRF_COEFF_2 */ | ||
825 | { 0x00001702, 0x0000 }, /* R5890 - FRF_COEFF_3 */ | ||
826 | { 0x00001703, 0x0000 }, /* R5891 - FRF_COEFF_4 */ | ||
827 | { 0x00001704, 0x0000 }, /* R5892 - DAC_COMP_1 */ | ||
828 | { 0x00001705, 0x0000 }, /* R5893 - DAC_COMP_2 */ | ||
829 | }; | ||
830 | |||
831 | static bool wm8998_readable_register(struct device *dev, unsigned int reg) | ||
832 | { | ||
833 | switch (reg) { | ||
834 | case ARIZONA_SOFTWARE_RESET: | ||
835 | case ARIZONA_DEVICE_REVISION: | ||
836 | case ARIZONA_CTRL_IF_SPI_CFG_1: | ||
837 | case ARIZONA_CTRL_IF_I2C1_CFG_1: | ||
838 | case ARIZONA_CTRL_IF_I2C1_CFG_2: | ||
839 | case ARIZONA_WRITE_SEQUENCER_CTRL_0: | ||
840 | case ARIZONA_WRITE_SEQUENCER_CTRL_1: | ||
841 | case ARIZONA_WRITE_SEQUENCER_CTRL_2: | ||
842 | case ARIZONA_TONE_GENERATOR_1: | ||
843 | case ARIZONA_TONE_GENERATOR_2: | ||
844 | case ARIZONA_TONE_GENERATOR_3: | ||
845 | case ARIZONA_TONE_GENERATOR_4: | ||
846 | case ARIZONA_TONE_GENERATOR_5: | ||
847 | case ARIZONA_PWM_DRIVE_1: | ||
848 | case ARIZONA_PWM_DRIVE_2: | ||
849 | case ARIZONA_PWM_DRIVE_3: | ||
850 | case ARIZONA_WAKE_CONTROL: | ||
851 | case ARIZONA_SEQUENCE_CONTROL: | ||
852 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1: | ||
853 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2: | ||
854 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3: | ||
855 | case ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_4: | ||
856 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_1: | ||
857 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_2: | ||
858 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_3: | ||
859 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_4: | ||
860 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_5: | ||
861 | case ARIZONA_ALWAYS_ON_TRIGGERS_SEQUENCE_SELECT_6: | ||
862 | case ARIZONA_HAPTICS_CONTROL_1: | ||
863 | case ARIZONA_HAPTICS_CONTROL_2: | ||
864 | case ARIZONA_HAPTICS_PHASE_1_INTENSITY: | ||
865 | case ARIZONA_HAPTICS_PHASE_1_DURATION: | ||
866 | case ARIZONA_HAPTICS_PHASE_2_INTENSITY: | ||
867 | case ARIZONA_HAPTICS_PHASE_2_DURATION: | ||
868 | case ARIZONA_HAPTICS_PHASE_3_INTENSITY: | ||
869 | case ARIZONA_HAPTICS_PHASE_3_DURATION: | ||
870 | case ARIZONA_HAPTICS_STATUS: | ||
871 | case ARIZONA_CLOCK_32K_1: | ||
872 | case ARIZONA_SYSTEM_CLOCK_1: | ||
873 | case ARIZONA_SAMPLE_RATE_1: | ||
874 | case ARIZONA_SAMPLE_RATE_2: | ||
875 | case ARIZONA_SAMPLE_RATE_3: | ||
876 | case ARIZONA_SAMPLE_RATE_1_STATUS: | ||
877 | case ARIZONA_SAMPLE_RATE_2_STATUS: | ||
878 | case ARIZONA_SAMPLE_RATE_3_STATUS: | ||
879 | case ARIZONA_ASYNC_CLOCK_1: | ||
880 | case ARIZONA_ASYNC_SAMPLE_RATE_1: | ||
881 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | ||
882 | case ARIZONA_ASYNC_SAMPLE_RATE_2: | ||
883 | case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS: | ||
884 | case ARIZONA_OUTPUT_SYSTEM_CLOCK: | ||
885 | case ARIZONA_OUTPUT_ASYNC_CLOCK: | ||
886 | case ARIZONA_RATE_ESTIMATOR_1: | ||
887 | case ARIZONA_RATE_ESTIMATOR_2: | ||
888 | case ARIZONA_RATE_ESTIMATOR_3: | ||
889 | case ARIZONA_RATE_ESTIMATOR_4: | ||
890 | case ARIZONA_RATE_ESTIMATOR_5: | ||
891 | case ARIZONA_DYNAMIC_FREQUENCY_SCALING_1: | ||
892 | case ARIZONA_FLL1_CONTROL_1: | ||
893 | case ARIZONA_FLL1_CONTROL_2: | ||
894 | case ARIZONA_FLL1_CONTROL_3: | ||
895 | case ARIZONA_FLL1_CONTROL_4: | ||
896 | case ARIZONA_FLL1_CONTROL_5: | ||
897 | case ARIZONA_FLL1_CONTROL_6: | ||
898 | case ARIZONA_FLL1_CONTROL_7: | ||
899 | case ARIZONA_FLL1_LOOP_FILTER_TEST_1: | ||
900 | case ARIZONA_FLL1_NCO_TEST_0: | ||
901 | case ARIZONA_FLL1_SYNCHRONISER_1: | ||
902 | case ARIZONA_FLL1_SYNCHRONISER_2: | ||
903 | case ARIZONA_FLL1_SYNCHRONISER_3: | ||
904 | case ARIZONA_FLL1_SYNCHRONISER_4: | ||
905 | case ARIZONA_FLL1_SYNCHRONISER_5: | ||
906 | case ARIZONA_FLL1_SYNCHRONISER_6: | ||
907 | case ARIZONA_FLL1_SYNCHRONISER_7: | ||
908 | case ARIZONA_FLL1_SPREAD_SPECTRUM: | ||
909 | case ARIZONA_FLL1_GPIO_CLOCK: | ||
910 | case ARIZONA_FLL2_CONTROL_1: | ||
911 | case ARIZONA_FLL2_CONTROL_2: | ||
912 | case ARIZONA_FLL2_CONTROL_3: | ||
913 | case ARIZONA_FLL2_CONTROL_4: | ||
914 | case ARIZONA_FLL2_CONTROL_5: | ||
915 | case ARIZONA_FLL2_CONTROL_6: | ||
916 | case ARIZONA_FLL2_CONTROL_7: | ||
917 | case ARIZONA_FLL2_LOOP_FILTER_TEST_1: | ||
918 | case ARIZONA_FLL2_NCO_TEST_0: | ||
919 | case ARIZONA_FLL2_SYNCHRONISER_1: | ||
920 | case ARIZONA_FLL2_SYNCHRONISER_2: | ||
921 | case ARIZONA_FLL2_SYNCHRONISER_3: | ||
922 | case ARIZONA_FLL2_SYNCHRONISER_4: | ||
923 | case ARIZONA_FLL2_SYNCHRONISER_5: | ||
924 | case ARIZONA_FLL2_SYNCHRONISER_6: | ||
925 | case ARIZONA_FLL2_SYNCHRONISER_7: | ||
926 | case ARIZONA_FLL2_SPREAD_SPECTRUM: | ||
927 | case ARIZONA_FLL2_GPIO_CLOCK: | ||
928 | case ARIZONA_MIC_CHARGE_PUMP_1: | ||
929 | case ARIZONA_LDO1_CONTROL_1: | ||
930 | case ARIZONA_LDO1_CONTROL_2: | ||
931 | case ARIZONA_LDO2_CONTROL_1: | ||
932 | case ARIZONA_MIC_BIAS_CTRL_1: | ||
933 | case ARIZONA_MIC_BIAS_CTRL_2: | ||
934 | case ARIZONA_MIC_BIAS_CTRL_3: | ||
935 | case ARIZONA_ACCESSORY_DETECT_MODE_1: | ||
936 | case ARIZONA_HEADPHONE_DETECT_1: | ||
937 | case ARIZONA_HEADPHONE_DETECT_2: | ||
938 | case ARIZONA_MICD_CLAMP_CONTROL: | ||
939 | case ARIZONA_MIC_DETECT_1: | ||
940 | case ARIZONA_MIC_DETECT_2: | ||
941 | case ARIZONA_MIC_DETECT_3: | ||
942 | case ARIZONA_MIC_DETECT_4: | ||
943 | case ARIZONA_MIC_DETECT_LEVEL_1: | ||
944 | case ARIZONA_MIC_DETECT_LEVEL_2: | ||
945 | case ARIZONA_MIC_DETECT_LEVEL_3: | ||
946 | case ARIZONA_MIC_DETECT_LEVEL_4: | ||
947 | case ARIZONA_ISOLATION_CONTROL: | ||
948 | case ARIZONA_JACK_DETECT_ANALOGUE: | ||
949 | case ARIZONA_INPUT_ENABLES: | ||
950 | case ARIZONA_INPUT_ENABLES_STATUS: | ||
951 | case ARIZONA_INPUT_RATE: | ||
952 | case ARIZONA_INPUT_VOLUME_RAMP: | ||
953 | case ARIZONA_HPF_CONTROL: | ||
954 | case ARIZONA_IN1L_CONTROL: | ||
955 | case ARIZONA_ADC_DIGITAL_VOLUME_1L: | ||
956 | case ARIZONA_DMIC1L_CONTROL: | ||
957 | case ARIZONA_IN1R_CONTROL: | ||
958 | case ARIZONA_ADC_DIGITAL_VOLUME_1R: | ||
959 | case ARIZONA_DMIC1R_CONTROL: | ||
960 | case ARIZONA_IN2L_CONTROL: | ||
961 | case ARIZONA_ADC_DIGITAL_VOLUME_2L: | ||
962 | case ARIZONA_DMIC2L_CONTROL: | ||
963 | case ARIZONA_OUTPUT_ENABLES_1: | ||
964 | case ARIZONA_OUTPUT_STATUS_1: | ||
965 | case ARIZONA_RAW_OUTPUT_STATUS_1: | ||
966 | case ARIZONA_OUTPUT_RATE_1: | ||
967 | case ARIZONA_OUTPUT_VOLUME_RAMP: | ||
968 | case ARIZONA_OUTPUT_PATH_CONFIG_1L: | ||
969 | case ARIZONA_DAC_DIGITAL_VOLUME_1L: | ||
970 | case ARIZONA_NOISE_GATE_SELECT_1L: | ||
971 | case ARIZONA_OUTPUT_PATH_CONFIG_1R: | ||
972 | case ARIZONA_DAC_DIGITAL_VOLUME_1R: | ||
973 | case ARIZONA_NOISE_GATE_SELECT_1R: | ||
974 | case ARIZONA_OUTPUT_PATH_CONFIG_2L: | ||
975 | case ARIZONA_DAC_DIGITAL_VOLUME_2L: | ||
976 | case ARIZONA_NOISE_GATE_SELECT_2L: | ||
977 | case ARIZONA_OUTPUT_PATH_CONFIG_2R: | ||
978 | case ARIZONA_DAC_DIGITAL_VOLUME_2R: | ||
979 | case ARIZONA_NOISE_GATE_SELECT_2R: | ||
980 | case ARIZONA_OUTPUT_PATH_CONFIG_3L: | ||
981 | case ARIZONA_DAC_DIGITAL_VOLUME_3L: | ||
982 | case ARIZONA_NOISE_GATE_SELECT_3L: | ||
983 | case ARIZONA_OUTPUT_PATH_CONFIG_4L: | ||
984 | case ARIZONA_DAC_DIGITAL_VOLUME_4L: | ||
985 | case ARIZONA_NOISE_GATE_SELECT_4L: | ||
986 | case ARIZONA_OUTPUT_PATH_CONFIG_4R: | ||
987 | case ARIZONA_DAC_DIGITAL_VOLUME_4R: | ||
988 | case ARIZONA_NOISE_GATE_SELECT_4R: | ||
989 | case ARIZONA_OUTPUT_PATH_CONFIG_5L: | ||
990 | case ARIZONA_DAC_DIGITAL_VOLUME_5L: | ||
991 | case ARIZONA_NOISE_GATE_SELECT_5L: | ||
992 | case ARIZONA_OUTPUT_PATH_CONFIG_5R: | ||
993 | case ARIZONA_DAC_DIGITAL_VOLUME_5R: | ||
994 | case ARIZONA_NOISE_GATE_SELECT_5R: | ||
995 | case ARIZONA_DRE_ENABLE: | ||
996 | case ARIZONA_DRE_CONTROL_1: | ||
997 | case ARIZONA_DRE_CONTROL_2: | ||
998 | case ARIZONA_DRE_CONTROL_3: | ||
999 | case ARIZONA_EDRE_ENABLE: | ||
1000 | case ARIZONA_DAC_AEC_CONTROL_1: | ||
1001 | case ARIZONA_DAC_AEC_CONTROL_2: | ||
1002 | case ARIZONA_NOISE_GATE_CONTROL: | ||
1003 | case ARIZONA_PDM_SPK1_CTRL_1: | ||
1004 | case ARIZONA_PDM_SPK1_CTRL_2: | ||
1005 | case ARIZONA_HP_TEST_CTRL_13: | ||
1006 | case ARIZONA_AIF1_BCLK_CTRL: | ||
1007 | case ARIZONA_AIF1_TX_PIN_CTRL: | ||
1008 | case ARIZONA_AIF1_RX_PIN_CTRL: | ||
1009 | case ARIZONA_AIF1_RATE_CTRL: | ||
1010 | case ARIZONA_AIF1_FORMAT: | ||
1011 | case ARIZONA_AIF1_RX_BCLK_RATE: | ||
1012 | case ARIZONA_AIF1_FRAME_CTRL_1: | ||
1013 | case ARIZONA_AIF1_FRAME_CTRL_2: | ||
1014 | case ARIZONA_AIF1_FRAME_CTRL_3: | ||
1015 | case ARIZONA_AIF1_FRAME_CTRL_4: | ||
1016 | case ARIZONA_AIF1_FRAME_CTRL_5: | ||
1017 | case ARIZONA_AIF1_FRAME_CTRL_6: | ||
1018 | case ARIZONA_AIF1_FRAME_CTRL_7: | ||
1019 | case ARIZONA_AIF1_FRAME_CTRL_8: | ||
1020 | case ARIZONA_AIF1_FRAME_CTRL_11: | ||
1021 | case ARIZONA_AIF1_FRAME_CTRL_12: | ||
1022 | case ARIZONA_AIF1_FRAME_CTRL_13: | ||
1023 | case ARIZONA_AIF1_FRAME_CTRL_14: | ||
1024 | case ARIZONA_AIF1_FRAME_CTRL_15: | ||
1025 | case ARIZONA_AIF1_FRAME_CTRL_16: | ||
1026 | case ARIZONA_AIF1_TX_ENABLES: | ||
1027 | case ARIZONA_AIF1_RX_ENABLES: | ||
1028 | case ARIZONA_AIF2_BCLK_CTRL: | ||
1029 | case ARIZONA_AIF2_TX_PIN_CTRL: | ||
1030 | case ARIZONA_AIF2_RX_PIN_CTRL: | ||
1031 | case ARIZONA_AIF2_RATE_CTRL: | ||
1032 | case ARIZONA_AIF2_FORMAT: | ||
1033 | case ARIZONA_AIF2_RX_BCLK_RATE: | ||
1034 | case ARIZONA_AIF2_FRAME_CTRL_1: | ||
1035 | case ARIZONA_AIF2_FRAME_CTRL_2: | ||
1036 | case ARIZONA_AIF2_FRAME_CTRL_3: | ||
1037 | case ARIZONA_AIF2_FRAME_CTRL_4: | ||
1038 | case ARIZONA_AIF2_FRAME_CTRL_5: | ||
1039 | case ARIZONA_AIF2_FRAME_CTRL_6: | ||
1040 | case ARIZONA_AIF2_FRAME_CTRL_7: | ||
1041 | case ARIZONA_AIF2_FRAME_CTRL_8: | ||
1042 | case ARIZONA_AIF2_FRAME_CTRL_11: | ||
1043 | case ARIZONA_AIF2_FRAME_CTRL_12: | ||
1044 | case ARIZONA_AIF2_FRAME_CTRL_13: | ||
1045 | case ARIZONA_AIF2_FRAME_CTRL_14: | ||
1046 | case ARIZONA_AIF2_FRAME_CTRL_15: | ||
1047 | case ARIZONA_AIF2_FRAME_CTRL_16: | ||
1048 | case ARIZONA_AIF2_TX_ENABLES: | ||
1049 | case ARIZONA_AIF2_RX_ENABLES: | ||
1050 | case ARIZONA_AIF3_BCLK_CTRL: | ||
1051 | case ARIZONA_AIF3_TX_PIN_CTRL: | ||
1052 | case ARIZONA_AIF3_RX_PIN_CTRL: | ||
1053 | case ARIZONA_AIF3_RATE_CTRL: | ||
1054 | case ARIZONA_AIF3_FORMAT: | ||
1055 | case ARIZONA_AIF3_RX_BCLK_RATE: | ||
1056 | case ARIZONA_AIF3_FRAME_CTRL_1: | ||
1057 | case ARIZONA_AIF3_FRAME_CTRL_2: | ||
1058 | case ARIZONA_AIF3_FRAME_CTRL_3: | ||
1059 | case ARIZONA_AIF3_FRAME_CTRL_4: | ||
1060 | case ARIZONA_AIF3_FRAME_CTRL_11: | ||
1061 | case ARIZONA_AIF3_FRAME_CTRL_12: | ||
1062 | case ARIZONA_AIF3_TX_ENABLES: | ||
1063 | case ARIZONA_AIF3_RX_ENABLES: | ||
1064 | case ARIZONA_SPD1_TX_CONTROL: | ||
1065 | case ARIZONA_SPD1_TX_CHANNEL_STATUS_1: | ||
1066 | case ARIZONA_SPD1_TX_CHANNEL_STATUS_2: | ||
1067 | case ARIZONA_SPD1_TX_CHANNEL_STATUS_3: | ||
1068 | case ARIZONA_SLIMBUS_FRAMER_REF_GEAR: | ||
1069 | case ARIZONA_SLIMBUS_RATES_1: | ||
1070 | case ARIZONA_SLIMBUS_RATES_2: | ||
1071 | case ARIZONA_SLIMBUS_RATES_5: | ||
1072 | case ARIZONA_SLIMBUS_RATES_6: | ||
1073 | case ARIZONA_SLIMBUS_RATES_7: | ||
1074 | case ARIZONA_SLIMBUS_RX_CHANNEL_ENABLE: | ||
1075 | case ARIZONA_SLIMBUS_TX_CHANNEL_ENABLE: | ||
1076 | case ARIZONA_SLIMBUS_RX_PORT_STATUS: | ||
1077 | case ARIZONA_SLIMBUS_TX_PORT_STATUS: | ||
1078 | case ARIZONA_PWM1MIX_INPUT_1_SOURCE: | ||
1079 | case ARIZONA_PWM1MIX_INPUT_1_VOLUME: | ||
1080 | case ARIZONA_PWM1MIX_INPUT_2_SOURCE: | ||
1081 | case ARIZONA_PWM1MIX_INPUT_2_VOLUME: | ||
1082 | case ARIZONA_PWM1MIX_INPUT_3_SOURCE: | ||
1083 | case ARIZONA_PWM1MIX_INPUT_3_VOLUME: | ||
1084 | case ARIZONA_PWM1MIX_INPUT_4_SOURCE: | ||
1085 | case ARIZONA_PWM1MIX_INPUT_4_VOLUME: | ||
1086 | case ARIZONA_PWM2MIX_INPUT_1_SOURCE: | ||
1087 | case ARIZONA_PWM2MIX_INPUT_1_VOLUME: | ||
1088 | case ARIZONA_PWM2MIX_INPUT_2_SOURCE: | ||
1089 | case ARIZONA_PWM2MIX_INPUT_2_VOLUME: | ||
1090 | case ARIZONA_PWM2MIX_INPUT_3_SOURCE: | ||
1091 | case ARIZONA_PWM2MIX_INPUT_3_VOLUME: | ||
1092 | case ARIZONA_PWM2MIX_INPUT_4_SOURCE: | ||
1093 | case ARIZONA_PWM2MIX_INPUT_4_VOLUME: | ||
1094 | case ARIZONA_OUT1LMIX_INPUT_1_SOURCE: | ||
1095 | case ARIZONA_OUT1LMIX_INPUT_1_VOLUME: | ||
1096 | case ARIZONA_OUT1LMIX_INPUT_2_SOURCE: | ||
1097 | case ARIZONA_OUT1LMIX_INPUT_2_VOLUME: | ||
1098 | case ARIZONA_OUT1LMIX_INPUT_3_SOURCE: | ||
1099 | case ARIZONA_OUT1LMIX_INPUT_3_VOLUME: | ||
1100 | case ARIZONA_OUT1LMIX_INPUT_4_SOURCE: | ||
1101 | case ARIZONA_OUT1LMIX_INPUT_4_VOLUME: | ||
1102 | case ARIZONA_OUT1RMIX_INPUT_1_SOURCE: | ||
1103 | case ARIZONA_OUT1RMIX_INPUT_1_VOLUME: | ||
1104 | case ARIZONA_OUT1RMIX_INPUT_2_SOURCE: | ||
1105 | case ARIZONA_OUT1RMIX_INPUT_2_VOLUME: | ||
1106 | case ARIZONA_OUT1RMIX_INPUT_3_SOURCE: | ||
1107 | case ARIZONA_OUT1RMIX_INPUT_3_VOLUME: | ||
1108 | case ARIZONA_OUT1RMIX_INPUT_4_SOURCE: | ||
1109 | case ARIZONA_OUT1RMIX_INPUT_4_VOLUME: | ||
1110 | case ARIZONA_OUT2LMIX_INPUT_1_SOURCE: | ||
1111 | case ARIZONA_OUT2LMIX_INPUT_1_VOLUME: | ||
1112 | case ARIZONA_OUT2LMIX_INPUT_2_SOURCE: | ||
1113 | case ARIZONA_OUT2LMIX_INPUT_2_VOLUME: | ||
1114 | case ARIZONA_OUT2LMIX_INPUT_3_SOURCE: | ||
1115 | case ARIZONA_OUT2LMIX_INPUT_3_VOLUME: | ||
1116 | case ARIZONA_OUT2LMIX_INPUT_4_SOURCE: | ||
1117 | case ARIZONA_OUT2LMIX_INPUT_4_VOLUME: | ||
1118 | case ARIZONA_OUT2RMIX_INPUT_1_SOURCE: | ||
1119 | case ARIZONA_OUT2RMIX_INPUT_1_VOLUME: | ||
1120 | case ARIZONA_OUT2RMIX_INPUT_2_SOURCE: | ||
1121 | case ARIZONA_OUT2RMIX_INPUT_2_VOLUME: | ||
1122 | case ARIZONA_OUT2RMIX_INPUT_3_SOURCE: | ||
1123 | case ARIZONA_OUT2RMIX_INPUT_3_VOLUME: | ||
1124 | case ARIZONA_OUT2RMIX_INPUT_4_SOURCE: | ||
1125 | case ARIZONA_OUT2RMIX_INPUT_4_VOLUME: | ||
1126 | case ARIZONA_OUT3LMIX_INPUT_1_SOURCE: | ||
1127 | case ARIZONA_OUT3LMIX_INPUT_1_VOLUME: | ||
1128 | case ARIZONA_OUT3LMIX_INPUT_2_SOURCE: | ||
1129 | case ARIZONA_OUT3LMIX_INPUT_2_VOLUME: | ||
1130 | case ARIZONA_OUT3LMIX_INPUT_3_SOURCE: | ||
1131 | case ARIZONA_OUT3LMIX_INPUT_3_VOLUME: | ||
1132 | case ARIZONA_OUT3LMIX_INPUT_4_SOURCE: | ||
1133 | case ARIZONA_OUT3LMIX_INPUT_4_VOLUME: | ||
1134 | case ARIZONA_OUT4LMIX_INPUT_1_SOURCE: | ||
1135 | case ARIZONA_OUT4LMIX_INPUT_1_VOLUME: | ||
1136 | case ARIZONA_OUT4LMIX_INPUT_2_SOURCE: | ||
1137 | case ARIZONA_OUT4LMIX_INPUT_2_VOLUME: | ||
1138 | case ARIZONA_OUT4LMIX_INPUT_3_SOURCE: | ||
1139 | case ARIZONA_OUT4LMIX_INPUT_3_VOLUME: | ||
1140 | case ARIZONA_OUT4LMIX_INPUT_4_SOURCE: | ||
1141 | case ARIZONA_OUT4LMIX_INPUT_4_VOLUME: | ||
1142 | case ARIZONA_OUT4RMIX_INPUT_1_SOURCE: | ||
1143 | case ARIZONA_OUT4RMIX_INPUT_1_VOLUME: | ||
1144 | case ARIZONA_OUT4RMIX_INPUT_2_SOURCE: | ||
1145 | case ARIZONA_OUT4RMIX_INPUT_2_VOLUME: | ||
1146 | case ARIZONA_OUT4RMIX_INPUT_3_SOURCE: | ||
1147 | case ARIZONA_OUT4RMIX_INPUT_3_VOLUME: | ||
1148 | case ARIZONA_OUT4RMIX_INPUT_4_SOURCE: | ||
1149 | case ARIZONA_OUT4RMIX_INPUT_4_VOLUME: | ||
1150 | case ARIZONA_OUT5LMIX_INPUT_1_SOURCE: | ||
1151 | case ARIZONA_OUT5LMIX_INPUT_1_VOLUME: | ||
1152 | case ARIZONA_OUT5LMIX_INPUT_2_SOURCE: | ||
1153 | case ARIZONA_OUT5LMIX_INPUT_2_VOLUME: | ||
1154 | case ARIZONA_OUT5LMIX_INPUT_3_SOURCE: | ||
1155 | case ARIZONA_OUT5LMIX_INPUT_3_VOLUME: | ||
1156 | case ARIZONA_OUT5LMIX_INPUT_4_SOURCE: | ||
1157 | case ARIZONA_OUT5LMIX_INPUT_4_VOLUME: | ||
1158 | case ARIZONA_OUT5RMIX_INPUT_1_SOURCE: | ||
1159 | case ARIZONA_OUT5RMIX_INPUT_1_VOLUME: | ||
1160 | case ARIZONA_OUT5RMIX_INPUT_2_SOURCE: | ||
1161 | case ARIZONA_OUT5RMIX_INPUT_2_VOLUME: | ||
1162 | case ARIZONA_OUT5RMIX_INPUT_3_SOURCE: | ||
1163 | case ARIZONA_OUT5RMIX_INPUT_3_VOLUME: | ||
1164 | case ARIZONA_OUT5RMIX_INPUT_4_SOURCE: | ||
1165 | case ARIZONA_OUT5RMIX_INPUT_4_VOLUME: | ||
1166 | case ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE: | ||
1167 | case ARIZONA_AIF1TX1MIX_INPUT_1_VOLUME: | ||
1168 | case ARIZONA_AIF1TX1MIX_INPUT_2_SOURCE: | ||
1169 | case ARIZONA_AIF1TX1MIX_INPUT_2_VOLUME: | ||
1170 | case ARIZONA_AIF1TX1MIX_INPUT_3_SOURCE: | ||
1171 | case ARIZONA_AIF1TX1MIX_INPUT_3_VOLUME: | ||
1172 | case ARIZONA_AIF1TX1MIX_INPUT_4_SOURCE: | ||
1173 | case ARIZONA_AIF1TX1MIX_INPUT_4_VOLUME: | ||
1174 | case ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE: | ||
1175 | case ARIZONA_AIF1TX2MIX_INPUT_1_VOLUME: | ||
1176 | case ARIZONA_AIF1TX2MIX_INPUT_2_SOURCE: | ||
1177 | case ARIZONA_AIF1TX2MIX_INPUT_2_VOLUME: | ||
1178 | case ARIZONA_AIF1TX2MIX_INPUT_3_SOURCE: | ||
1179 | case ARIZONA_AIF1TX2MIX_INPUT_3_VOLUME: | ||
1180 | case ARIZONA_AIF1TX2MIX_INPUT_4_SOURCE: | ||
1181 | case ARIZONA_AIF1TX2MIX_INPUT_4_VOLUME: | ||
1182 | case ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE: | ||
1183 | case ARIZONA_AIF1TX3MIX_INPUT_1_VOLUME: | ||
1184 | case ARIZONA_AIF1TX3MIX_INPUT_2_SOURCE: | ||
1185 | case ARIZONA_AIF1TX3MIX_INPUT_2_VOLUME: | ||
1186 | case ARIZONA_AIF1TX3MIX_INPUT_3_SOURCE: | ||
1187 | case ARIZONA_AIF1TX3MIX_INPUT_3_VOLUME: | ||
1188 | case ARIZONA_AIF1TX3MIX_INPUT_4_SOURCE: | ||
1189 | case ARIZONA_AIF1TX3MIX_INPUT_4_VOLUME: | ||
1190 | case ARIZONA_AIF1TX4MIX_INPUT_1_SOURCE: | ||
1191 | case ARIZONA_AIF1TX4MIX_INPUT_1_VOLUME: | ||
1192 | case ARIZONA_AIF1TX4MIX_INPUT_2_SOURCE: | ||
1193 | case ARIZONA_AIF1TX4MIX_INPUT_2_VOLUME: | ||
1194 | case ARIZONA_AIF1TX4MIX_INPUT_3_SOURCE: | ||
1195 | case ARIZONA_AIF1TX4MIX_INPUT_3_VOLUME: | ||
1196 | case ARIZONA_AIF1TX4MIX_INPUT_4_SOURCE: | ||
1197 | case ARIZONA_AIF1TX4MIX_INPUT_4_VOLUME: | ||
1198 | case ARIZONA_AIF1TX5MIX_INPUT_1_SOURCE: | ||
1199 | case ARIZONA_AIF1TX5MIX_INPUT_1_VOLUME: | ||
1200 | case ARIZONA_AIF1TX5MIX_INPUT_2_SOURCE: | ||
1201 | case ARIZONA_AIF1TX5MIX_INPUT_2_VOLUME: | ||
1202 | case ARIZONA_AIF1TX5MIX_INPUT_3_SOURCE: | ||
1203 | case ARIZONA_AIF1TX5MIX_INPUT_3_VOLUME: | ||
1204 | case ARIZONA_AIF1TX5MIX_INPUT_4_SOURCE: | ||
1205 | case ARIZONA_AIF1TX5MIX_INPUT_4_VOLUME: | ||
1206 | case ARIZONA_AIF1TX6MIX_INPUT_1_SOURCE: | ||
1207 | case ARIZONA_AIF1TX6MIX_INPUT_1_VOLUME: | ||
1208 | case ARIZONA_AIF1TX6MIX_INPUT_2_SOURCE: | ||
1209 | case ARIZONA_AIF1TX6MIX_INPUT_2_VOLUME: | ||
1210 | case ARIZONA_AIF1TX6MIX_INPUT_3_SOURCE: | ||
1211 | case ARIZONA_AIF1TX6MIX_INPUT_3_VOLUME: | ||
1212 | case ARIZONA_AIF1TX6MIX_INPUT_4_SOURCE: | ||
1213 | case ARIZONA_AIF1TX6MIX_INPUT_4_VOLUME: | ||
1214 | case ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE: | ||
1215 | case ARIZONA_AIF2TX1MIX_INPUT_1_VOLUME: | ||
1216 | case ARIZONA_AIF2TX1MIX_INPUT_2_SOURCE: | ||
1217 | case ARIZONA_AIF2TX1MIX_INPUT_2_VOLUME: | ||
1218 | case ARIZONA_AIF2TX1MIX_INPUT_3_SOURCE: | ||
1219 | case ARIZONA_AIF2TX1MIX_INPUT_3_VOLUME: | ||
1220 | case ARIZONA_AIF2TX1MIX_INPUT_4_SOURCE: | ||
1221 | case ARIZONA_AIF2TX1MIX_INPUT_4_VOLUME: | ||
1222 | case ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE: | ||
1223 | case ARIZONA_AIF2TX2MIX_INPUT_1_VOLUME: | ||
1224 | case ARIZONA_AIF2TX2MIX_INPUT_2_SOURCE: | ||
1225 | case ARIZONA_AIF2TX2MIX_INPUT_2_VOLUME: | ||
1226 | case ARIZONA_AIF2TX2MIX_INPUT_3_SOURCE: | ||
1227 | case ARIZONA_AIF2TX2MIX_INPUT_3_VOLUME: | ||
1228 | case ARIZONA_AIF2TX2MIX_INPUT_4_SOURCE: | ||
1229 | case ARIZONA_AIF2TX2MIX_INPUT_4_VOLUME: | ||
1230 | case ARIZONA_AIF2TX3MIX_INPUT_1_SOURCE: | ||
1231 | case ARIZONA_AIF2TX3MIX_INPUT_1_VOLUME: | ||
1232 | case ARIZONA_AIF2TX3MIX_INPUT_2_SOURCE: | ||
1233 | case ARIZONA_AIF2TX3MIX_INPUT_2_VOLUME: | ||
1234 | case ARIZONA_AIF2TX3MIX_INPUT_3_SOURCE: | ||
1235 | case ARIZONA_AIF2TX3MIX_INPUT_3_VOLUME: | ||
1236 | case ARIZONA_AIF2TX3MIX_INPUT_4_SOURCE: | ||
1237 | case ARIZONA_AIF2TX3MIX_INPUT_4_VOLUME: | ||
1238 | case ARIZONA_AIF2TX4MIX_INPUT_1_SOURCE: | ||
1239 | case ARIZONA_AIF2TX4MIX_INPUT_1_VOLUME: | ||
1240 | case ARIZONA_AIF2TX4MIX_INPUT_2_SOURCE: | ||
1241 | case ARIZONA_AIF2TX4MIX_INPUT_2_VOLUME: | ||
1242 | case ARIZONA_AIF2TX4MIX_INPUT_3_SOURCE: | ||
1243 | case ARIZONA_AIF2TX4MIX_INPUT_3_VOLUME: | ||
1244 | case ARIZONA_AIF2TX4MIX_INPUT_4_SOURCE: | ||
1245 | case ARIZONA_AIF2TX4MIX_INPUT_4_VOLUME: | ||
1246 | case ARIZONA_AIF2TX5MIX_INPUT_1_SOURCE: | ||
1247 | case ARIZONA_AIF2TX5MIX_INPUT_1_VOLUME: | ||
1248 | case ARIZONA_AIF2TX5MIX_INPUT_2_SOURCE: | ||
1249 | case ARIZONA_AIF2TX5MIX_INPUT_2_VOLUME: | ||
1250 | case ARIZONA_AIF2TX5MIX_INPUT_3_SOURCE: | ||
1251 | case ARIZONA_AIF2TX5MIX_INPUT_3_VOLUME: | ||
1252 | case ARIZONA_AIF2TX5MIX_INPUT_4_SOURCE: | ||
1253 | case ARIZONA_AIF2TX5MIX_INPUT_4_VOLUME: | ||
1254 | case ARIZONA_AIF2TX6MIX_INPUT_1_SOURCE: | ||
1255 | case ARIZONA_AIF2TX6MIX_INPUT_1_VOLUME: | ||
1256 | case ARIZONA_AIF2TX6MIX_INPUT_2_SOURCE: | ||
1257 | case ARIZONA_AIF2TX6MIX_INPUT_2_VOLUME: | ||
1258 | case ARIZONA_AIF2TX6MIX_INPUT_3_SOURCE: | ||
1259 | case ARIZONA_AIF2TX6MIX_INPUT_3_VOLUME: | ||
1260 | case ARIZONA_AIF2TX6MIX_INPUT_4_SOURCE: | ||
1261 | case ARIZONA_AIF2TX6MIX_INPUT_4_VOLUME: | ||
1262 | case ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE: | ||
1263 | case ARIZONA_AIF3TX1MIX_INPUT_1_VOLUME: | ||
1264 | case ARIZONA_AIF3TX1MIX_INPUT_2_SOURCE: | ||
1265 | case ARIZONA_AIF3TX1MIX_INPUT_2_VOLUME: | ||
1266 | case ARIZONA_AIF3TX1MIX_INPUT_3_SOURCE: | ||
1267 | case ARIZONA_AIF3TX1MIX_INPUT_3_VOLUME: | ||
1268 | case ARIZONA_AIF3TX1MIX_INPUT_4_SOURCE: | ||
1269 | case ARIZONA_AIF3TX1MIX_INPUT_4_VOLUME: | ||
1270 | case ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE: | ||
1271 | case ARIZONA_AIF3TX2MIX_INPUT_1_VOLUME: | ||
1272 | case ARIZONA_AIF3TX2MIX_INPUT_2_SOURCE: | ||
1273 | case ARIZONA_AIF3TX2MIX_INPUT_2_VOLUME: | ||
1274 | case ARIZONA_AIF3TX2MIX_INPUT_3_SOURCE: | ||
1275 | case ARIZONA_AIF3TX2MIX_INPUT_3_VOLUME: | ||
1276 | case ARIZONA_AIF3TX2MIX_INPUT_4_SOURCE: | ||
1277 | case ARIZONA_AIF3TX2MIX_INPUT_4_VOLUME: | ||
1278 | case ARIZONA_SLIMTX1MIX_INPUT_1_SOURCE: | ||
1279 | case ARIZONA_SLIMTX1MIX_INPUT_1_VOLUME: | ||
1280 | case ARIZONA_SLIMTX2MIX_INPUT_1_SOURCE: | ||
1281 | case ARIZONA_SLIMTX2MIX_INPUT_1_VOLUME: | ||
1282 | case ARIZONA_SLIMTX3MIX_INPUT_1_SOURCE: | ||
1283 | case ARIZONA_SLIMTX3MIX_INPUT_1_VOLUME: | ||
1284 | case ARIZONA_SLIMTX4MIX_INPUT_1_SOURCE: | ||
1285 | case ARIZONA_SLIMTX4MIX_INPUT_1_VOLUME: | ||
1286 | case ARIZONA_SLIMTX5MIX_INPUT_1_SOURCE: | ||
1287 | case ARIZONA_SLIMTX5MIX_INPUT_1_VOLUME: | ||
1288 | case ARIZONA_SLIMTX6MIX_INPUT_1_SOURCE: | ||
1289 | case ARIZONA_SLIMTX6MIX_INPUT_1_VOLUME: | ||
1290 | case ARIZONA_SPDIFTX1MIX_INPUT_1_SOURCE: | ||
1291 | case ARIZONA_SPDIFTX1MIX_INPUT_1_VOLUME: | ||
1292 | case ARIZONA_SPDIFTX2MIX_INPUT_1_SOURCE: | ||
1293 | case ARIZONA_SPDIFTX2MIX_INPUT_1_VOLUME: | ||
1294 | case ARIZONA_EQ1MIX_INPUT_1_SOURCE: | ||
1295 | case ARIZONA_EQ1MIX_INPUT_1_VOLUME: | ||
1296 | case ARIZONA_EQ2MIX_INPUT_1_SOURCE: | ||
1297 | case ARIZONA_EQ2MIX_INPUT_1_VOLUME: | ||
1298 | case ARIZONA_EQ3MIX_INPUT_1_SOURCE: | ||
1299 | case ARIZONA_EQ3MIX_INPUT_1_VOLUME: | ||
1300 | case ARIZONA_EQ4MIX_INPUT_1_SOURCE: | ||
1301 | case ARIZONA_EQ4MIX_INPUT_1_VOLUME: | ||
1302 | case ARIZONA_DRC1LMIX_INPUT_1_SOURCE: | ||
1303 | case ARIZONA_DRC1LMIX_INPUT_1_VOLUME: | ||
1304 | case ARIZONA_DRC1RMIX_INPUT_1_SOURCE: | ||
1305 | case ARIZONA_DRC1RMIX_INPUT_1_VOLUME: | ||
1306 | case ARIZONA_HPLP1MIX_INPUT_1_SOURCE: | ||
1307 | case ARIZONA_HPLP1MIX_INPUT_1_VOLUME: | ||
1308 | case ARIZONA_HPLP1MIX_INPUT_2_SOURCE: | ||
1309 | case ARIZONA_HPLP1MIX_INPUT_2_VOLUME: | ||
1310 | case ARIZONA_HPLP1MIX_INPUT_3_SOURCE: | ||
1311 | case ARIZONA_HPLP1MIX_INPUT_3_VOLUME: | ||
1312 | case ARIZONA_HPLP1MIX_INPUT_4_SOURCE: | ||
1313 | case ARIZONA_HPLP1MIX_INPUT_4_VOLUME: | ||
1314 | case ARIZONA_HPLP2MIX_INPUT_1_SOURCE: | ||
1315 | case ARIZONA_HPLP2MIX_INPUT_1_VOLUME: | ||
1316 | case ARIZONA_HPLP2MIX_INPUT_2_SOURCE: | ||
1317 | case ARIZONA_HPLP2MIX_INPUT_2_VOLUME: | ||
1318 | case ARIZONA_HPLP2MIX_INPUT_3_SOURCE: | ||
1319 | case ARIZONA_HPLP2MIX_INPUT_3_VOLUME: | ||
1320 | case ARIZONA_HPLP2MIX_INPUT_4_SOURCE: | ||
1321 | case ARIZONA_HPLP2MIX_INPUT_4_VOLUME: | ||
1322 | case ARIZONA_HPLP3MIX_INPUT_1_SOURCE: | ||
1323 | case ARIZONA_HPLP3MIX_INPUT_1_VOLUME: | ||
1324 | case ARIZONA_HPLP3MIX_INPUT_2_SOURCE: | ||
1325 | case ARIZONA_HPLP3MIX_INPUT_2_VOLUME: | ||
1326 | case ARIZONA_HPLP3MIX_INPUT_3_SOURCE: | ||
1327 | case ARIZONA_HPLP3MIX_INPUT_3_VOLUME: | ||
1328 | case ARIZONA_HPLP3MIX_INPUT_4_SOURCE: | ||
1329 | case ARIZONA_HPLP3MIX_INPUT_4_VOLUME: | ||
1330 | case ARIZONA_HPLP4MIX_INPUT_1_SOURCE: | ||
1331 | case ARIZONA_HPLP4MIX_INPUT_1_VOLUME: | ||
1332 | case ARIZONA_HPLP4MIX_INPUT_2_SOURCE: | ||
1333 | case ARIZONA_HPLP4MIX_INPUT_2_VOLUME: | ||
1334 | case ARIZONA_HPLP4MIX_INPUT_3_SOURCE: | ||
1335 | case ARIZONA_HPLP4MIX_INPUT_3_VOLUME: | ||
1336 | case ARIZONA_HPLP4MIX_INPUT_4_SOURCE: | ||
1337 | case ARIZONA_HPLP4MIX_INPUT_4_VOLUME: | ||
1338 | case ARIZONA_ASRC1LMIX_INPUT_1_SOURCE: | ||
1339 | case ARIZONA_ASRC1RMIX_INPUT_1_SOURCE: | ||
1340 | case ARIZONA_ASRC2LMIX_INPUT_1_SOURCE: | ||
1341 | case ARIZONA_ASRC2RMIX_INPUT_1_SOURCE: | ||
1342 | case ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE: | ||
1343 | case ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE: | ||
1344 | case ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE: | ||
1345 | case ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE: | ||
1346 | case ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE: | ||
1347 | case ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE: | ||
1348 | case ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE: | ||
1349 | case ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE: | ||
1350 | case ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE: | ||
1351 | case ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE: | ||
1352 | case ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE: | ||
1353 | case ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE: | ||
1354 | case ARIZONA_GPIO1_CTRL: | ||
1355 | case ARIZONA_GPIO2_CTRL: | ||
1356 | case ARIZONA_GPIO3_CTRL: | ||
1357 | case ARIZONA_GPIO4_CTRL: | ||
1358 | case ARIZONA_GPIO5_CTRL: | ||
1359 | case ARIZONA_IRQ_CTRL_1: | ||
1360 | case ARIZONA_GPIO_DEBOUNCE_CONFIG: | ||
1361 | case ARIZONA_GP_SWITCH_1: | ||
1362 | case ARIZONA_MISC_PAD_CTRL_1: | ||
1363 | case ARIZONA_MISC_PAD_CTRL_2: | ||
1364 | case ARIZONA_MISC_PAD_CTRL_3: | ||
1365 | case ARIZONA_MISC_PAD_CTRL_4: | ||
1366 | case ARIZONA_MISC_PAD_CTRL_5: | ||
1367 | case ARIZONA_MISC_PAD_CTRL_6: | ||
1368 | case ARIZONA_INTERRUPT_STATUS_1: | ||
1369 | case ARIZONA_INTERRUPT_STATUS_2: | ||
1370 | case ARIZONA_INTERRUPT_STATUS_3: | ||
1371 | case ARIZONA_INTERRUPT_STATUS_4: | ||
1372 | case ARIZONA_INTERRUPT_STATUS_5: | ||
1373 | case ARIZONA_INTERRUPT_STATUS_1_MASK: | ||
1374 | case ARIZONA_INTERRUPT_STATUS_2_MASK: | ||
1375 | case ARIZONA_INTERRUPT_STATUS_3_MASK: | ||
1376 | case ARIZONA_INTERRUPT_STATUS_4_MASK: | ||
1377 | case ARIZONA_INTERRUPT_STATUS_5_MASK: | ||
1378 | case ARIZONA_INTERRUPT_CONTROL: | ||
1379 | case ARIZONA_IRQ2_STATUS_1: | ||
1380 | case ARIZONA_IRQ2_STATUS_2: | ||
1381 | case ARIZONA_IRQ2_STATUS_3: | ||
1382 | case ARIZONA_IRQ2_STATUS_4: | ||
1383 | case ARIZONA_IRQ2_STATUS_5: | ||
1384 | case ARIZONA_IRQ2_STATUS_1_MASK: | ||
1385 | case ARIZONA_IRQ2_STATUS_2_MASK: | ||
1386 | case ARIZONA_IRQ2_STATUS_3_MASK: | ||
1387 | case ARIZONA_IRQ2_STATUS_4_MASK: | ||
1388 | case ARIZONA_IRQ2_STATUS_5_MASK: | ||
1389 | case ARIZONA_IRQ2_CONTROL: | ||
1390 | case ARIZONA_INTERRUPT_RAW_STATUS_2: | ||
1391 | case ARIZONA_INTERRUPT_RAW_STATUS_3: | ||
1392 | case ARIZONA_INTERRUPT_RAW_STATUS_4: | ||
1393 | case ARIZONA_INTERRUPT_RAW_STATUS_5: | ||
1394 | case ARIZONA_INTERRUPT_RAW_STATUS_6: | ||
1395 | case ARIZONA_INTERRUPT_RAW_STATUS_7: | ||
1396 | case ARIZONA_INTERRUPT_RAW_STATUS_8: | ||
1397 | case ARIZONA_IRQ_PIN_STATUS: | ||
1398 | case ARIZONA_AOD_WKUP_AND_TRIG: | ||
1399 | case ARIZONA_AOD_IRQ1: | ||
1400 | case ARIZONA_AOD_IRQ2: | ||
1401 | case ARIZONA_AOD_IRQ_MASK_IRQ1: | ||
1402 | case ARIZONA_AOD_IRQ_MASK_IRQ2: | ||
1403 | case ARIZONA_AOD_IRQ_RAW_STATUS: | ||
1404 | case ARIZONA_JACK_DETECT_DEBOUNCE: | ||
1405 | case ARIZONA_FX_CTRL1: | ||
1406 | case ARIZONA_FX_CTRL2: | ||
1407 | case ARIZONA_EQ1_1: | ||
1408 | case ARIZONA_EQ1_2: | ||
1409 | case ARIZONA_EQ1_3: | ||
1410 | case ARIZONA_EQ1_4: | ||
1411 | case ARIZONA_EQ1_5: | ||
1412 | case ARIZONA_EQ1_6: | ||
1413 | case ARIZONA_EQ1_7: | ||
1414 | case ARIZONA_EQ1_8: | ||
1415 | case ARIZONA_EQ1_9: | ||
1416 | case ARIZONA_EQ1_10: | ||
1417 | case ARIZONA_EQ1_11: | ||
1418 | case ARIZONA_EQ1_12: | ||
1419 | case ARIZONA_EQ1_13: | ||
1420 | case ARIZONA_EQ1_14: | ||
1421 | case ARIZONA_EQ1_15: | ||
1422 | case ARIZONA_EQ1_16: | ||
1423 | case ARIZONA_EQ1_17: | ||
1424 | case ARIZONA_EQ1_18: | ||
1425 | case ARIZONA_EQ1_19: | ||
1426 | case ARIZONA_EQ1_20: | ||
1427 | case ARIZONA_EQ1_21: | ||
1428 | case ARIZONA_EQ2_1: | ||
1429 | case ARIZONA_EQ2_2: | ||
1430 | case ARIZONA_EQ2_3: | ||
1431 | case ARIZONA_EQ2_4: | ||
1432 | case ARIZONA_EQ2_5: | ||
1433 | case ARIZONA_EQ2_6: | ||
1434 | case ARIZONA_EQ2_7: | ||
1435 | case ARIZONA_EQ2_8: | ||
1436 | case ARIZONA_EQ2_9: | ||
1437 | case ARIZONA_EQ2_10: | ||
1438 | case ARIZONA_EQ2_11: | ||
1439 | case ARIZONA_EQ2_12: | ||
1440 | case ARIZONA_EQ2_13: | ||
1441 | case ARIZONA_EQ2_14: | ||
1442 | case ARIZONA_EQ2_15: | ||
1443 | case ARIZONA_EQ2_16: | ||
1444 | case ARIZONA_EQ2_17: | ||
1445 | case ARIZONA_EQ2_18: | ||
1446 | case ARIZONA_EQ2_19: | ||
1447 | case ARIZONA_EQ2_20: | ||
1448 | case ARIZONA_EQ2_21: | ||
1449 | case ARIZONA_EQ3_1: | ||
1450 | case ARIZONA_EQ3_2: | ||
1451 | case ARIZONA_EQ3_3: | ||
1452 | case ARIZONA_EQ3_4: | ||
1453 | case ARIZONA_EQ3_5: | ||
1454 | case ARIZONA_EQ3_6: | ||
1455 | case ARIZONA_EQ3_7: | ||
1456 | case ARIZONA_EQ3_8: | ||
1457 | case ARIZONA_EQ3_9: | ||
1458 | case ARIZONA_EQ3_10: | ||
1459 | case ARIZONA_EQ3_11: | ||
1460 | case ARIZONA_EQ3_12: | ||
1461 | case ARIZONA_EQ3_13: | ||
1462 | case ARIZONA_EQ3_14: | ||
1463 | case ARIZONA_EQ3_15: | ||
1464 | case ARIZONA_EQ3_16: | ||
1465 | case ARIZONA_EQ3_17: | ||
1466 | case ARIZONA_EQ3_18: | ||
1467 | case ARIZONA_EQ3_19: | ||
1468 | case ARIZONA_EQ3_20: | ||
1469 | case ARIZONA_EQ3_21: | ||
1470 | case ARIZONA_EQ4_1: | ||
1471 | case ARIZONA_EQ4_2: | ||
1472 | case ARIZONA_EQ4_3: | ||
1473 | case ARIZONA_EQ4_4: | ||
1474 | case ARIZONA_EQ4_5: | ||
1475 | case ARIZONA_EQ4_6: | ||
1476 | case ARIZONA_EQ4_7: | ||
1477 | case ARIZONA_EQ4_8: | ||
1478 | case ARIZONA_EQ4_9: | ||
1479 | case ARIZONA_EQ4_10: | ||
1480 | case ARIZONA_EQ4_11: | ||
1481 | case ARIZONA_EQ4_12: | ||
1482 | case ARIZONA_EQ4_13: | ||
1483 | case ARIZONA_EQ4_14: | ||
1484 | case ARIZONA_EQ4_15: | ||
1485 | case ARIZONA_EQ4_16: | ||
1486 | case ARIZONA_EQ4_17: | ||
1487 | case ARIZONA_EQ4_18: | ||
1488 | case ARIZONA_EQ4_19: | ||
1489 | case ARIZONA_EQ4_20: | ||
1490 | case ARIZONA_EQ4_21: | ||
1491 | case ARIZONA_DRC1_CTRL1: | ||
1492 | case ARIZONA_DRC1_CTRL2: | ||
1493 | case ARIZONA_DRC1_CTRL3: | ||
1494 | case ARIZONA_DRC1_CTRL4: | ||
1495 | case ARIZONA_DRC1_CTRL5: | ||
1496 | case ARIZONA_HPLPF1_1: | ||
1497 | case ARIZONA_HPLPF1_2: | ||
1498 | case ARIZONA_HPLPF2_1: | ||
1499 | case ARIZONA_HPLPF2_2: | ||
1500 | case ARIZONA_HPLPF3_1: | ||
1501 | case ARIZONA_HPLPF3_2: | ||
1502 | case ARIZONA_HPLPF4_1: | ||
1503 | case ARIZONA_HPLPF4_2: | ||
1504 | case ARIZONA_ASRC_ENABLE: | ||
1505 | case ARIZONA_ASRC_STATUS: | ||
1506 | case ARIZONA_ASRC_RATE1: | ||
1507 | case ARIZONA_ASRC_RATE2: | ||
1508 | case ARIZONA_ISRC_1_CTRL_1: | ||
1509 | case ARIZONA_ISRC_1_CTRL_2: | ||
1510 | case ARIZONA_ISRC_1_CTRL_3: | ||
1511 | case ARIZONA_ISRC_2_CTRL_1: | ||
1512 | case ARIZONA_ISRC_2_CTRL_2: | ||
1513 | case ARIZONA_ISRC_2_CTRL_3: | ||
1514 | case ARIZONA_FRF_COEFF_1: | ||
1515 | case ARIZONA_FRF_COEFF_2: | ||
1516 | case ARIZONA_FRF_COEFF_3: | ||
1517 | case ARIZONA_FRF_COEFF_4: | ||
1518 | case ARIZONA_V2_DAC_COMP_1: | ||
1519 | case ARIZONA_V2_DAC_COMP_2: | ||
1520 | return true; | ||
1521 | default: | ||
1522 | return false; | ||
1523 | } | ||
1524 | } | ||
1525 | |||
1526 | static bool wm8998_volatile_register(struct device *dev, unsigned int reg) | ||
1527 | { | ||
1528 | switch (reg) { | ||
1529 | case ARIZONA_SOFTWARE_RESET: | ||
1530 | case ARIZONA_DEVICE_REVISION: | ||
1531 | case ARIZONA_WRITE_SEQUENCER_CTRL_0: | ||
1532 | case ARIZONA_WRITE_SEQUENCER_CTRL_1: | ||
1533 | case ARIZONA_WRITE_SEQUENCER_CTRL_2: | ||
1534 | case ARIZONA_HAPTICS_STATUS: | ||
1535 | case ARIZONA_SAMPLE_RATE_1_STATUS: | ||
1536 | case ARIZONA_SAMPLE_RATE_2_STATUS: | ||
1537 | case ARIZONA_SAMPLE_RATE_3_STATUS: | ||
1538 | case ARIZONA_ASYNC_SAMPLE_RATE_1_STATUS: | ||
1539 | case ARIZONA_ASYNC_SAMPLE_RATE_2_STATUS: | ||
1540 | case ARIZONA_MIC_DETECT_3: | ||
1541 | case ARIZONA_MIC_DETECT_4: | ||
1542 | case ARIZONA_HEADPHONE_DETECT_2: | ||
1543 | case ARIZONA_INPUT_ENABLES_STATUS: | ||
1544 | case ARIZONA_OUTPUT_STATUS_1: | ||
1545 | case ARIZONA_RAW_OUTPUT_STATUS_1: | ||
1546 | case ARIZONA_SLIMBUS_RX_PORT_STATUS: | ||
1547 | case ARIZONA_SLIMBUS_TX_PORT_STATUS: | ||
1548 | case ARIZONA_INTERRUPT_STATUS_1: | ||
1549 | case ARIZONA_INTERRUPT_STATUS_2: | ||
1550 | case ARIZONA_INTERRUPT_STATUS_3: | ||
1551 | case ARIZONA_INTERRUPT_STATUS_4: | ||
1552 | case ARIZONA_INTERRUPT_STATUS_5: | ||
1553 | case ARIZONA_IRQ2_STATUS_1: | ||
1554 | case ARIZONA_IRQ2_STATUS_2: | ||
1555 | case ARIZONA_IRQ2_STATUS_3: | ||
1556 | case ARIZONA_IRQ2_STATUS_4: | ||
1557 | case ARIZONA_IRQ2_STATUS_5: | ||
1558 | case ARIZONA_INTERRUPT_RAW_STATUS_2: | ||
1559 | case ARIZONA_INTERRUPT_RAW_STATUS_3: | ||
1560 | case ARIZONA_INTERRUPT_RAW_STATUS_4: | ||
1561 | case ARIZONA_INTERRUPT_RAW_STATUS_5: | ||
1562 | case ARIZONA_INTERRUPT_RAW_STATUS_6: | ||
1563 | case ARIZONA_INTERRUPT_RAW_STATUS_7: | ||
1564 | case ARIZONA_INTERRUPT_RAW_STATUS_8: | ||
1565 | case ARIZONA_IRQ_PIN_STATUS: | ||
1566 | case ARIZONA_AOD_WKUP_AND_TRIG: | ||
1567 | case ARIZONA_AOD_IRQ1: | ||
1568 | case ARIZONA_AOD_IRQ2: | ||
1569 | case ARIZONA_AOD_IRQ_RAW_STATUS: | ||
1570 | case ARIZONA_FX_CTRL2: | ||
1571 | case ARIZONA_ASRC_STATUS: | ||
1572 | return true; | ||
1573 | default: | ||
1574 | return false; | ||
1575 | } | ||
1576 | } | ||
1577 | |||
1578 | #define WM8998_MAX_REGISTER 0x31ff | ||
1579 | |||
1580 | const struct regmap_config wm8998_i2c_regmap = { | ||
1581 | .reg_bits = 32, | ||
1582 | .val_bits = 16, | ||
1583 | .reg_format_endian = REGMAP_ENDIAN_BIG, | ||
1584 | .val_format_endian = REGMAP_ENDIAN_BIG, | ||
1585 | |||
1586 | .max_register = WM8998_MAX_REGISTER, | ||
1587 | .readable_reg = wm8998_readable_register, | ||
1588 | .volatile_reg = wm8998_volatile_register, | ||
1589 | |||
1590 | .cache_type = REGCACHE_RBTREE, | ||
1591 | .reg_defaults = wm8998_reg_default, | ||
1592 | .num_reg_defaults = ARRAY_SIZE(wm8998_reg_default), | ||
1593 | }; | ||
1594 | EXPORT_SYMBOL_GPL(wm8998_i2c_regmap); | ||
diff --git a/drivers/platform/x86/intel_pmc_ipc.c b/drivers/platform/x86/intel_pmc_ipc.c index 105cfffe82c6..28b2a12bb26d 100644 --- a/drivers/platform/x86/intel_pmc_ipc.c +++ b/drivers/platform/x86/intel_pmc_ipc.c | |||
@@ -33,7 +33,7 @@ | |||
33 | #include <linux/suspend.h> | 33 | #include <linux/suspend.h> |
34 | #include <linux/acpi.h> | 34 | #include <linux/acpi.h> |
35 | #include <asm/intel_pmc_ipc.h> | 35 | #include <asm/intel_pmc_ipc.h> |
36 | #include <linux/mfd/lpc_ich.h> | 36 | #include <linux/platform_data/itco_wdt.h> |
37 | 37 | ||
38 | /* | 38 | /* |
39 | * IPC registers | 39 | * IPC registers |
@@ -473,9 +473,9 @@ static struct resource tco_res[] = { | |||
473 | }, | 473 | }, |
474 | }; | 474 | }; |
475 | 475 | ||
476 | static struct lpc_ich_info tco_info = { | 476 | static struct itco_wdt_platform_data tco_info = { |
477 | .name = "Apollo Lake SoC", | 477 | .name = "Apollo Lake SoC", |
478 | .iTCO_version = 3, | 478 | .version = 3, |
479 | }; | 479 | }; |
480 | 480 | ||
481 | static int ipc_create_punit_device(void) | 481 | static int ipc_create_punit_device(void) |
@@ -552,8 +552,7 @@ static int ipc_create_tco_device(void) | |||
552 | goto err; | 552 | goto err; |
553 | } | 553 | } |
554 | 554 | ||
555 | ret = platform_device_add_data(pdev, &tco_info, | 555 | ret = platform_device_add_data(pdev, &tco_info, sizeof(tco_info)); |
556 | sizeof(struct lpc_ich_info)); | ||
557 | if (ret) { | 556 | if (ret) { |
558 | dev_err(ipcdev.dev, "Failed to add tco platform data\n"); | 557 | dev_err(ipcdev.dev, "Failed to add tco platform data\n"); |
559 | goto err; | 558 | goto err; |
diff --git a/drivers/rtc/rtc-st-lpc.c b/drivers/rtc/rtc-st-lpc.c index 3f9d0acb81c7..74c0a336ceea 100644 --- a/drivers/rtc/rtc-st-lpc.c +++ b/drivers/rtc/rtc-st-lpc.c | |||
@@ -208,7 +208,7 @@ static int st_rtc_probe(struct platform_device *pdev) | |||
208 | return -EINVAL; | 208 | return -EINVAL; |
209 | } | 209 | } |
210 | 210 | ||
211 | /* LPC can either run in RTC or WDT mode */ | 211 | /* LPC can either run as a Clocksource or in RTC or WDT mode */ |
212 | if (mode != ST_LPC_MODE_RTC) | 212 | if (mode != ST_LPC_MODE_RTC) |
213 | return -ENODEV; | 213 | return -ENODEV; |
214 | 214 | ||
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index 241fafde42cb..55c4b5b0a317 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig | |||
@@ -797,7 +797,8 @@ config ITCO_WDT | |||
797 | tristate "Intel TCO Timer/Watchdog" | 797 | tristate "Intel TCO Timer/Watchdog" |
798 | depends on (X86 || IA64) && PCI | 798 | depends on (X86 || IA64) && PCI |
799 | select WATCHDOG_CORE | 799 | select WATCHDOG_CORE |
800 | select LPC_ICH | 800 | select LPC_ICH if !EXPERT |
801 | select I2C_I801 if !EXPERT | ||
801 | ---help--- | 802 | ---help--- |
802 | Hardware driver for the intel TCO timer based watchdog devices. | 803 | Hardware driver for the intel TCO timer based watchdog devices. |
803 | These drivers are included in the Intel 82801 I/O Controller | 804 | These drivers are included in the Intel 82801 I/O Controller |
diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c index 3c3fd417ddeb..0acc6c5f729d 100644 --- a/drivers/watchdog/iTCO_wdt.c +++ b/drivers/watchdog/iTCO_wdt.c | |||
@@ -66,8 +66,7 @@ | |||
66 | #include <linux/spinlock.h> /* For spin_lock/spin_unlock/... */ | 66 | #include <linux/spinlock.h> /* For spin_lock/spin_unlock/... */ |
67 | #include <linux/uaccess.h> /* For copy_to_user/put_user/... */ | 67 | #include <linux/uaccess.h> /* For copy_to_user/put_user/... */ |
68 | #include <linux/io.h> /* For inb/outb/... */ | 68 | #include <linux/io.h> /* For inb/outb/... */ |
69 | #include <linux/mfd/core.h> | 69 | #include <linux/platform_data/itco_wdt.h> |
70 | #include <linux/mfd/lpc_ich.h> | ||
71 | 70 | ||
72 | #include "iTCO_vendor.h" | 71 | #include "iTCO_vendor.h" |
73 | 72 | ||
@@ -146,59 +145,67 @@ static inline unsigned int ticks_to_seconds(int ticks) | |||
146 | return iTCO_wdt_private.iTCO_version == 3 ? ticks : (ticks * 6) / 10; | 145 | return iTCO_wdt_private.iTCO_version == 3 ? ticks : (ticks * 6) / 10; |
147 | } | 146 | } |
148 | 147 | ||
148 | static inline u32 no_reboot_bit(void) | ||
149 | { | ||
150 | u32 enable_bit; | ||
151 | |||
152 | switch (iTCO_wdt_private.iTCO_version) { | ||
153 | case 3: | ||
154 | enable_bit = 0x00000010; | ||
155 | break; | ||
156 | case 2: | ||
157 | enable_bit = 0x00000020; | ||
158 | break; | ||
159 | case 4: | ||
160 | case 1: | ||
161 | default: | ||
162 | enable_bit = 0x00000002; | ||
163 | break; | ||
164 | } | ||
165 | |||
166 | return enable_bit; | ||
167 | } | ||
168 | |||
149 | static void iTCO_wdt_set_NO_REBOOT_bit(void) | 169 | static void iTCO_wdt_set_NO_REBOOT_bit(void) |
150 | { | 170 | { |
151 | u32 val32; | 171 | u32 val32; |
152 | 172 | ||
153 | /* Set the NO_REBOOT bit: this disables reboots */ | 173 | /* Set the NO_REBOOT bit: this disables reboots */ |
154 | if (iTCO_wdt_private.iTCO_version == 3) { | 174 | if (iTCO_wdt_private.iTCO_version >= 2) { |
155 | val32 = readl(iTCO_wdt_private.gcs_pmc); | ||
156 | val32 |= 0x00000010; | ||
157 | writel(val32, iTCO_wdt_private.gcs_pmc); | ||
158 | } else if (iTCO_wdt_private.iTCO_version == 2) { | ||
159 | val32 = readl(iTCO_wdt_private.gcs_pmc); | 175 | val32 = readl(iTCO_wdt_private.gcs_pmc); |
160 | val32 |= 0x00000020; | 176 | val32 |= no_reboot_bit(); |
161 | writel(val32, iTCO_wdt_private.gcs_pmc); | 177 | writel(val32, iTCO_wdt_private.gcs_pmc); |
162 | } else if (iTCO_wdt_private.iTCO_version == 1) { | 178 | } else if (iTCO_wdt_private.iTCO_version == 1) { |
163 | pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32); | 179 | pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32); |
164 | val32 |= 0x00000002; | 180 | val32 |= no_reboot_bit(); |
165 | pci_write_config_dword(iTCO_wdt_private.pdev, 0xd4, val32); | 181 | pci_write_config_dword(iTCO_wdt_private.pdev, 0xd4, val32); |
166 | } | 182 | } |
167 | } | 183 | } |
168 | 184 | ||
169 | static int iTCO_wdt_unset_NO_REBOOT_bit(void) | 185 | static int iTCO_wdt_unset_NO_REBOOT_bit(void) |
170 | { | 186 | { |
171 | int ret = 0; | 187 | u32 enable_bit = no_reboot_bit(); |
172 | u32 val32; | 188 | u32 val32 = 0; |
173 | 189 | ||
174 | /* Unset the NO_REBOOT bit: this enables reboots */ | 190 | /* Unset the NO_REBOOT bit: this enables reboots */ |
175 | if (iTCO_wdt_private.iTCO_version == 3) { | 191 | if (iTCO_wdt_private.iTCO_version >= 2) { |
176 | val32 = readl(iTCO_wdt_private.gcs_pmc); | ||
177 | val32 &= 0xffffffef; | ||
178 | writel(val32, iTCO_wdt_private.gcs_pmc); | ||
179 | |||
180 | val32 = readl(iTCO_wdt_private.gcs_pmc); | ||
181 | if (val32 & 0x00000010) | ||
182 | ret = -EIO; | ||
183 | } else if (iTCO_wdt_private.iTCO_version == 2) { | ||
184 | val32 = readl(iTCO_wdt_private.gcs_pmc); | 192 | val32 = readl(iTCO_wdt_private.gcs_pmc); |
185 | val32 &= 0xffffffdf; | 193 | val32 &= ~enable_bit; |
186 | writel(val32, iTCO_wdt_private.gcs_pmc); | 194 | writel(val32, iTCO_wdt_private.gcs_pmc); |
187 | 195 | ||
188 | val32 = readl(iTCO_wdt_private.gcs_pmc); | 196 | val32 = readl(iTCO_wdt_private.gcs_pmc); |
189 | if (val32 & 0x00000020) | ||
190 | ret = -EIO; | ||
191 | } else if (iTCO_wdt_private.iTCO_version == 1) { | 197 | } else if (iTCO_wdt_private.iTCO_version == 1) { |
192 | pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32); | 198 | pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32); |
193 | val32 &= 0xfffffffd; | 199 | val32 &= ~enable_bit; |
194 | pci_write_config_dword(iTCO_wdt_private.pdev, 0xd4, val32); | 200 | pci_write_config_dword(iTCO_wdt_private.pdev, 0xd4, val32); |
195 | 201 | ||
196 | pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32); | 202 | pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32); |
197 | if (val32 & 0x00000002) | ||
198 | ret = -EIO; | ||
199 | } | 203 | } |
200 | 204 | ||
201 | return ret; /* returns: 0 = OK, -EIO = Error */ | 205 | if (val32 & enable_bit) |
206 | return -EIO; | ||
207 | |||
208 | return 0; | ||
202 | } | 209 | } |
203 | 210 | ||
204 | static int iTCO_wdt_start(struct watchdog_device *wd_dev) | 211 | static int iTCO_wdt_start(struct watchdog_device *wd_dev) |
@@ -418,9 +425,9 @@ static int iTCO_wdt_probe(struct platform_device *dev) | |||
418 | { | 425 | { |
419 | int ret = -ENODEV; | 426 | int ret = -ENODEV; |
420 | unsigned long val32; | 427 | unsigned long val32; |
421 | struct lpc_ich_info *ich_info = dev_get_platdata(&dev->dev); | 428 | struct itco_wdt_platform_data *pdata = dev_get_platdata(&dev->dev); |
422 | 429 | ||
423 | if (!ich_info) | 430 | if (!pdata) |
424 | goto out; | 431 | goto out; |
425 | 432 | ||
426 | spin_lock_init(&iTCO_wdt_private.io_lock); | 433 | spin_lock_init(&iTCO_wdt_private.io_lock); |
@@ -435,7 +442,7 @@ static int iTCO_wdt_probe(struct platform_device *dev) | |||
435 | if (!iTCO_wdt_private.smi_res) | 442 | if (!iTCO_wdt_private.smi_res) |
436 | goto out; | 443 | goto out; |
437 | 444 | ||
438 | iTCO_wdt_private.iTCO_version = ich_info->iTCO_version; | 445 | iTCO_wdt_private.iTCO_version = pdata->version; |
439 | iTCO_wdt_private.dev = dev; | 446 | iTCO_wdt_private.dev = dev; |
440 | iTCO_wdt_private.pdev = to_pci_dev(dev->dev.parent); | 447 | iTCO_wdt_private.pdev = to_pci_dev(dev->dev.parent); |
441 | 448 | ||
@@ -501,15 +508,24 @@ static int iTCO_wdt_probe(struct platform_device *dev) | |||
501 | } | 508 | } |
502 | 509 | ||
503 | pr_info("Found a %s TCO device (Version=%d, TCOBASE=0x%04llx)\n", | 510 | pr_info("Found a %s TCO device (Version=%d, TCOBASE=0x%04llx)\n", |
504 | ich_info->name, ich_info->iTCO_version, (u64)TCOBASE); | 511 | pdata->name, pdata->version, (u64)TCOBASE); |
505 | 512 | ||
506 | /* Clear out the (probably old) status */ | 513 | /* Clear out the (probably old) status */ |
507 | if (iTCO_wdt_private.iTCO_version == 3) { | 514 | switch (iTCO_wdt_private.iTCO_version) { |
515 | case 4: | ||
516 | outw(0x0008, TCO1_STS); /* Clear the Time Out Status bit */ | ||
517 | outw(0x0002, TCO2_STS); /* Clear SECOND_TO_STS bit */ | ||
518 | break; | ||
519 | case 3: | ||
508 | outl(0x20008, TCO1_STS); | 520 | outl(0x20008, TCO1_STS); |
509 | } else { | 521 | break; |
522 | case 2: | ||
523 | case 1: | ||
524 | default: | ||
510 | outw(0x0008, TCO1_STS); /* Clear the Time Out Status bit */ | 525 | outw(0x0008, TCO1_STS); /* Clear the Time Out Status bit */ |
511 | outw(0x0002, TCO2_STS); /* Clear SECOND_TO_STS bit */ | 526 | outw(0x0002, TCO2_STS); /* Clear SECOND_TO_STS bit */ |
512 | outw(0x0004, TCO2_STS); /* Clear BOOT_STS bit */ | 527 | outw(0x0004, TCO2_STS); /* Clear BOOT_STS bit */ |
528 | break; | ||
513 | } | 529 | } |
514 | 530 | ||
515 | iTCO_wdt_watchdog_dev.bootstatus = 0; | 531 | iTCO_wdt_watchdog_dev.bootstatus = 0; |
diff --git a/include/dt-bindings/mfd/st-lpc.h b/include/dt-bindings/mfd/st-lpc.h index e3e6c75d8822..d05894afa7e7 100644 --- a/include/dt-bindings/mfd/st-lpc.h +++ b/include/dt-bindings/mfd/st-lpc.h | |||
@@ -11,5 +11,6 @@ | |||
11 | 11 | ||
12 | #define ST_LPC_MODE_RTC 0 | 12 | #define ST_LPC_MODE_RTC 0 |
13 | #define ST_LPC_MODE_WDT 1 | 13 | #define ST_LPC_MODE_WDT 1 |
14 | #define ST_LPC_MODE_CLKSRC 2 | ||
14 | 15 | ||
15 | #endif /* __DT_BINDINGS_ST_LPC_H__ */ | 16 | #endif /* __DT_BINDINGS_ST_LPC_H__ */ |
diff --git a/include/linux/mfd/88pm80x.h b/include/linux/mfd/88pm80x.h index 97cb283cc8e1..8fcad63fab55 100644 --- a/include/linux/mfd/88pm80x.h +++ b/include/linux/mfd/88pm80x.h | |||
@@ -60,60 +60,60 @@ enum { | |||
60 | /* page 0 basic: slave adder 0x60 */ | 60 | /* page 0 basic: slave adder 0x60 */ |
61 | 61 | ||
62 | #define PM800_STATUS_1 (0x01) | 62 | #define PM800_STATUS_1 (0x01) |
63 | #define PM800_ONKEY_STS1 (1 << 0) | 63 | #define PM800_ONKEY_STS1 BIT(0) |
64 | #define PM800_EXTON_STS1 (1 << 1) | 64 | #define PM800_EXTON_STS1 BIT(1) |
65 | #define PM800_CHG_STS1 (1 << 2) | 65 | #define PM800_CHG_STS1 BIT(2) |
66 | #define PM800_BAT_STS1 (1 << 3) | 66 | #define PM800_BAT_STS1 BIT(3) |
67 | #define PM800_VBUS_STS1 (1 << 4) | 67 | #define PM800_VBUS_STS1 BIT(4) |
68 | #define PM800_LDO_PGOOD_STS1 (1 << 5) | 68 | #define PM800_LDO_PGOOD_STS1 BIT(5) |
69 | #define PM800_BUCK_PGOOD_STS1 (1 << 6) | 69 | #define PM800_BUCK_PGOOD_STS1 BIT(6) |
70 | 70 | ||
71 | #define PM800_STATUS_2 (0x02) | 71 | #define PM800_STATUS_2 (0x02) |
72 | #define PM800_RTC_ALARM_STS2 (1 << 0) | 72 | #define PM800_RTC_ALARM_STS2 BIT(0) |
73 | 73 | ||
74 | /* Wakeup Registers */ | 74 | /* Wakeup Registers */ |
75 | #define PM800_WAKEUP1 (0x0D) | 75 | #define PM800_WAKEUP1 (0x0D) |
76 | 76 | ||
77 | #define PM800_WAKEUP2 (0x0E) | 77 | #define PM800_WAKEUP2 (0x0E) |
78 | #define PM800_WAKEUP2_INV_INT (1 << 0) | 78 | #define PM800_WAKEUP2_INV_INT BIT(0) |
79 | #define PM800_WAKEUP2_INT_CLEAR (1 << 1) | 79 | #define PM800_WAKEUP2_INT_CLEAR BIT(1) |
80 | #define PM800_WAKEUP2_INT_MASK (1 << 2) | 80 | #define PM800_WAKEUP2_INT_MASK BIT(2) |
81 | 81 | ||
82 | #define PM800_POWER_UP_LOG (0x10) | 82 | #define PM800_POWER_UP_LOG (0x10) |
83 | 83 | ||
84 | /* Referance and low power registers */ | 84 | /* Referance and low power registers */ |
85 | #define PM800_LOW_POWER1 (0x20) | 85 | #define PM800_LOW_POWER1 (0x20) |
86 | #define PM800_LOW_POWER2 (0x21) | 86 | #define PM800_LOW_POWER2 (0x21) |
87 | #define PM800_LOW_POWER_CONFIG3 (0x22) | 87 | #define PM800_LOW_POWER_CONFIG3 (0x22) |
88 | #define PM800_LOW_POWER_CONFIG4 (0x23) | 88 | #define PM800_LOW_POWER_CONFIG4 (0x23) |
89 | 89 | ||
90 | /* GPIO register */ | 90 | /* GPIO register */ |
91 | #define PM800_GPIO_0_1_CNTRL (0x30) | 91 | #define PM800_GPIO_0_1_CNTRL (0x30) |
92 | #define PM800_GPIO0_VAL (1 << 0) | 92 | #define PM800_GPIO0_VAL BIT(0) |
93 | #define PM800_GPIO0_GPIO_MODE(x) (x << 1) | 93 | #define PM800_GPIO0_GPIO_MODE(x) (x << 1) |
94 | #define PM800_GPIO1_VAL (1 << 4) | 94 | #define PM800_GPIO1_VAL BIT(4) |
95 | #define PM800_GPIO1_GPIO_MODE(x) (x << 5) | 95 | #define PM800_GPIO1_GPIO_MODE(x) (x << 5) |
96 | 96 | ||
97 | #define PM800_GPIO_2_3_CNTRL (0x31) | 97 | #define PM800_GPIO_2_3_CNTRL (0x31) |
98 | #define PM800_GPIO2_VAL (1 << 0) | 98 | #define PM800_GPIO2_VAL BIT(0) |
99 | #define PM800_GPIO2_GPIO_MODE(x) (x << 1) | 99 | #define PM800_GPIO2_GPIO_MODE(x) (x << 1) |
100 | #define PM800_GPIO3_VAL (1 << 4) | 100 | #define PM800_GPIO3_VAL BIT(4) |
101 | #define PM800_GPIO3_GPIO_MODE(x) (x << 5) | 101 | #define PM800_GPIO3_GPIO_MODE(x) (x << 5) |
102 | #define PM800_GPIO3_MODE_MASK 0x1F | 102 | #define PM800_GPIO3_MODE_MASK 0x1F |
103 | #define PM800_GPIO3_HEADSET_MODE PM800_GPIO3_GPIO_MODE(6) | 103 | #define PM800_GPIO3_HEADSET_MODE PM800_GPIO3_GPIO_MODE(6) |
104 | 104 | ||
105 | #define PM800_GPIO_4_CNTRL (0x32) | 105 | #define PM800_GPIO_4_CNTRL (0x32) |
106 | #define PM800_GPIO4_VAL (1 << 0) | 106 | #define PM800_GPIO4_VAL BIT(0) |
107 | #define PM800_GPIO4_GPIO_MODE(x) (x << 1) | 107 | #define PM800_GPIO4_GPIO_MODE(x) (x << 1) |
108 | 108 | ||
109 | #define PM800_HEADSET_CNTRL (0x38) | 109 | #define PM800_HEADSET_CNTRL (0x38) |
110 | #define PM800_HEADSET_DET_EN (1 << 7) | 110 | #define PM800_HEADSET_DET_EN BIT(7) |
111 | #define PM800_HSDET_SLP (1 << 1) | 111 | #define PM800_HSDET_SLP BIT(1) |
112 | /* PWM register */ | 112 | /* PWM register */ |
113 | #define PM800_PWM1 (0x40) | 113 | #define PM800_PWM1 (0x40) |
114 | #define PM800_PWM2 (0x41) | 114 | #define PM800_PWM2 (0x41) |
115 | #define PM800_PWM3 (0x42) | 115 | #define PM800_PWM3 (0x42) |
116 | #define PM800_PWM4 (0x43) | 116 | #define PM800_PWM4 (0x43) |
117 | 117 | ||
118 | /* RTC Registers */ | 118 | /* RTC Registers */ |
119 | #define PM800_RTC_CONTROL (0xD0) | 119 | #define PM800_RTC_CONTROL (0xD0) |
@@ -123,55 +123,55 @@ enum { | |||
123 | #define PM800_RTC_MISC4 (0xE4) | 123 | #define PM800_RTC_MISC4 (0xE4) |
124 | #define PM800_RTC_MISC5 (0xE7) | 124 | #define PM800_RTC_MISC5 (0xE7) |
125 | /* bit definitions of RTC Register 1 (0xD0) */ | 125 | /* bit definitions of RTC Register 1 (0xD0) */ |
126 | #define PM800_ALARM1_EN (1 << 0) | 126 | #define PM800_ALARM1_EN BIT(0) |
127 | #define PM800_ALARM_WAKEUP (1 << 4) | 127 | #define PM800_ALARM_WAKEUP BIT(4) |
128 | #define PM800_ALARM (1 << 5) | 128 | #define PM800_ALARM BIT(5) |
129 | #define PM800_RTC1_USE_XO (1 << 7) | 129 | #define PM800_RTC1_USE_XO BIT(7) |
130 | 130 | ||
131 | /* Regulator Control Registers: BUCK1,BUCK5,LDO1 have DVC */ | 131 | /* Regulator Control Registers: BUCK1,BUCK5,LDO1 have DVC */ |
132 | 132 | ||
133 | /* buck registers */ | 133 | /* buck registers */ |
134 | #define PM800_SLEEP_BUCK1 (0x30) | 134 | #define PM800_SLEEP_BUCK1 (0x30) |
135 | 135 | ||
136 | /* BUCK Sleep Mode Register 1: BUCK[1..4] */ | 136 | /* BUCK Sleep Mode Register 1: BUCK[1..4] */ |
137 | #define PM800_BUCK_SLP1 (0x5A) | 137 | #define PM800_BUCK_SLP1 (0x5A) |
138 | #define PM800_BUCK1_SLP1_SHIFT 0 | 138 | #define PM800_BUCK1_SLP1_SHIFT 0 |
139 | #define PM800_BUCK1_SLP1_MASK (0x3 << PM800_BUCK1_SLP1_SHIFT) | 139 | #define PM800_BUCK1_SLP1_MASK (0x3 << PM800_BUCK1_SLP1_SHIFT) |
140 | 140 | ||
141 | /* page 2 GPADC: slave adder 0x02 */ | 141 | /* page 2 GPADC: slave adder 0x02 */ |
142 | #define PM800_GPADC_MEAS_EN1 (0x01) | 142 | #define PM800_GPADC_MEAS_EN1 (0x01) |
143 | #define PM800_MEAS_EN1_VBAT (1 << 2) | 143 | #define PM800_MEAS_EN1_VBAT BIT(2) |
144 | #define PM800_GPADC_MEAS_EN2 (0x02) | 144 | #define PM800_GPADC_MEAS_EN2 (0x02) |
145 | #define PM800_MEAS_EN2_RFTMP (1 << 0) | 145 | #define PM800_MEAS_EN2_RFTMP BIT(0) |
146 | #define PM800_MEAS_GP0_EN (1 << 2) | 146 | #define PM800_MEAS_GP0_EN BIT(2) |
147 | #define PM800_MEAS_GP1_EN (1 << 3) | 147 | #define PM800_MEAS_GP1_EN BIT(3) |
148 | #define PM800_MEAS_GP2_EN (1 << 4) | 148 | #define PM800_MEAS_GP2_EN BIT(4) |
149 | #define PM800_MEAS_GP3_EN (1 << 5) | 149 | #define PM800_MEAS_GP3_EN BIT(5) |
150 | #define PM800_MEAS_GP4_EN (1 << 6) | 150 | #define PM800_MEAS_GP4_EN BIT(6) |
151 | 151 | ||
152 | #define PM800_GPADC_MISC_CONFIG1 (0x05) | 152 | #define PM800_GPADC_MISC_CONFIG1 (0x05) |
153 | #define PM800_GPADC_MISC_CONFIG2 (0x06) | 153 | #define PM800_GPADC_MISC_CONFIG2 (0x06) |
154 | #define PM800_GPADC_MISC_GPFSM_EN (1 << 0) | 154 | #define PM800_GPADC_MISC_GPFSM_EN BIT(0) |
155 | #define PM800_GPADC_SLOW_MODE(x) (x << 3) | 155 | #define PM800_GPADC_SLOW_MODE(x) (x << 3) |
156 | 156 | ||
157 | #define PM800_GPADC_MISC_CONFIG3 (0x09) | 157 | #define PM800_GPADC_MISC_CONFIG3 (0x09) |
158 | #define PM800_GPADC_MISC_CONFIG4 (0x0A) | 158 | #define PM800_GPADC_MISC_CONFIG4 (0x0A) |
159 | 159 | ||
160 | #define PM800_GPADC_PREBIAS1 (0x0F) | 160 | #define PM800_GPADC_PREBIAS1 (0x0F) |
161 | #define PM800_GPADC0_GP_PREBIAS_TIME(x) (x << 0) | 161 | #define PM800_GPADC0_GP_PREBIAS_TIME(x) (x << 0) |
162 | #define PM800_GPADC_PREBIAS2 (0x10) | 162 | #define PM800_GPADC_PREBIAS2 (0x10) |
163 | 163 | ||
164 | #define PM800_GP_BIAS_ENA1 (0x14) | 164 | #define PM800_GP_BIAS_ENA1 (0x14) |
165 | #define PM800_GPADC_GP_BIAS_EN0 (1 << 0) | 165 | #define PM800_GPADC_GP_BIAS_EN0 BIT(0) |
166 | #define PM800_GPADC_GP_BIAS_EN1 (1 << 1) | 166 | #define PM800_GPADC_GP_BIAS_EN1 BIT(1) |
167 | #define PM800_GPADC_GP_BIAS_EN2 (1 << 2) | 167 | #define PM800_GPADC_GP_BIAS_EN2 BIT(2) |
168 | #define PM800_GPADC_GP_BIAS_EN3 (1 << 3) | 168 | #define PM800_GPADC_GP_BIAS_EN3 BIT(3) |
169 | 169 | ||
170 | #define PM800_GP_BIAS_OUT1 (0x15) | 170 | #define PM800_GP_BIAS_OUT1 (0x15) |
171 | #define PM800_BIAS_OUT_GP0 (1 << 0) | 171 | #define PM800_BIAS_OUT_GP0 BIT(0) |
172 | #define PM800_BIAS_OUT_GP1 (1 << 1) | 172 | #define PM800_BIAS_OUT_GP1 BIT(1) |
173 | #define PM800_BIAS_OUT_GP2 (1 << 2) | 173 | #define PM800_BIAS_OUT_GP2 BIT(2) |
174 | #define PM800_BIAS_OUT_GP3 (1 << 3) | 174 | #define PM800_BIAS_OUT_GP3 BIT(3) |
175 | 175 | ||
176 | #define PM800_GPADC0_LOW_TH 0x20 | 176 | #define PM800_GPADC0_LOW_TH 0x20 |
177 | #define PM800_GPADC1_LOW_TH 0x21 | 177 | #define PM800_GPADC1_LOW_TH 0x21 |
@@ -222,37 +222,37 @@ enum { | |||
222 | 222 | ||
223 | #define PM805_INT_STATUS1 (0x03) | 223 | #define PM805_INT_STATUS1 (0x03) |
224 | 224 | ||
225 | #define PM805_INT1_HP1_SHRT (1 << 0) | 225 | #define PM805_INT1_HP1_SHRT BIT(0) |
226 | #define PM805_INT1_HP2_SHRT (1 << 1) | 226 | #define PM805_INT1_HP2_SHRT BIT(1) |
227 | #define PM805_INT1_MIC_CONFLICT (1 << 2) | 227 | #define PM805_INT1_MIC_CONFLICT BIT(2) |
228 | #define PM805_INT1_CLIP_FAULT (1 << 3) | 228 | #define PM805_INT1_CLIP_FAULT BIT(3) |
229 | #define PM805_INT1_LDO_OFF (1 << 4) | 229 | #define PM805_INT1_LDO_OFF BIT(4) |
230 | #define PM805_INT1_SRC_DPLL_LOCK (1 << 5) | 230 | #define PM805_INT1_SRC_DPLL_LOCK BIT(5) |
231 | 231 | ||
232 | #define PM805_INT_STATUS2 (0x04) | 232 | #define PM805_INT_STATUS2 (0x04) |
233 | 233 | ||
234 | #define PM805_INT2_MIC_DET (1 << 0) | 234 | #define PM805_INT2_MIC_DET BIT(0) |
235 | #define PM805_INT2_SHRT_BTN_DET (1 << 1) | 235 | #define PM805_INT2_SHRT_BTN_DET BIT(1) |
236 | #define PM805_INT2_VOLM_BTN_DET (1 << 2) | 236 | #define PM805_INT2_VOLM_BTN_DET BIT(2) |
237 | #define PM805_INT2_VOLP_BTN_DET (1 << 3) | 237 | #define PM805_INT2_VOLP_BTN_DET BIT(3) |
238 | #define PM805_INT2_RAW_PLL_FAULT (1 << 4) | 238 | #define PM805_INT2_RAW_PLL_FAULT BIT(4) |
239 | #define PM805_INT2_FINE_PLL_FAULT (1 << 5) | 239 | #define PM805_INT2_FINE_PLL_FAULT BIT(5) |
240 | 240 | ||
241 | #define PM805_INT_MASK1 (0x05) | 241 | #define PM805_INT_MASK1 (0x05) |
242 | #define PM805_INT_MASK2 (0x06) | 242 | #define PM805_INT_MASK2 (0x06) |
243 | #define PM805_SHRT_BTN_DET (1 << 1) | 243 | #define PM805_SHRT_BTN_DET BIT(1) |
244 | 244 | ||
245 | /* number of status and int reg in a row */ | 245 | /* number of status and int reg in a row */ |
246 | #define PM805_INT_REG_NUM (2) | 246 | #define PM805_INT_REG_NUM (2) |
247 | 247 | ||
248 | #define PM805_MIC_DET1 (0x07) | 248 | #define PM805_MIC_DET1 (0x07) |
249 | #define PM805_MIC_DET_EN_MIC_DET (1 << 0) | 249 | #define PM805_MIC_DET_EN_MIC_DET BIT(0) |
250 | #define PM805_MIC_DET2 (0x08) | 250 | #define PM805_MIC_DET2 (0x08) |
251 | #define PM805_MIC_DET_STATUS1 (0x09) | 251 | #define PM805_MIC_DET_STATUS1 (0x09) |
252 | 252 | ||
253 | #define PM805_MIC_DET_STATUS3 (0x0A) | 253 | #define PM805_MIC_DET_STATUS3 (0x0A) |
254 | #define PM805_AUTO_SEQ_STATUS1 (0x0B) | 254 | #define PM805_AUTO_SEQ_STATUS1 (0x0B) |
255 | #define PM805_AUTO_SEQ_STATUS2 (0x0C) | 255 | #define PM805_AUTO_SEQ_STATUS2 (0x0C) |
256 | 256 | ||
257 | #define PM805_ADC_SETTING1 (0x10) | 257 | #define PM805_ADC_SETTING1 (0x10) |
258 | #define PM805_ADC_SETTING2 (0x11) | 258 | #define PM805_ADC_SETTING2 (0x11) |
@@ -261,7 +261,7 @@ enum { | |||
261 | #define PM805_ADC_GAIN2 (0x13) | 261 | #define PM805_ADC_GAIN2 (0x13) |
262 | #define PM805_DMIC_SETTING (0x15) | 262 | #define PM805_DMIC_SETTING (0x15) |
263 | #define PM805_DWS_SETTING (0x16) | 263 | #define PM805_DWS_SETTING (0x16) |
264 | #define PM805_MIC_CONFLICT_STS (0x17) | 264 | #define PM805_MIC_CONFLICT_STS (0x17) |
265 | 265 | ||
266 | #define PM805_PDM_SETTING1 (0x20) | 266 | #define PM805_PDM_SETTING1 (0x20) |
267 | #define PM805_PDM_SETTING2 (0x21) | 267 | #define PM805_PDM_SETTING2 (0x21) |
@@ -270,11 +270,11 @@ enum { | |||
270 | #define PM805_PDM_CONTROL2 (0x24) | 270 | #define PM805_PDM_CONTROL2 (0x24) |
271 | #define PM805_PDM_CONTROL3 (0x25) | 271 | #define PM805_PDM_CONTROL3 (0x25) |
272 | 272 | ||
273 | #define PM805_HEADPHONE_SETTING (0x26) | 273 | #define PM805_HEADPHONE_SETTING (0x26) |
274 | #define PM805_HEADPHONE_GAIN_A2A (0x27) | 274 | #define PM805_HEADPHONE_GAIN_A2A (0x27) |
275 | #define PM805_HEADPHONE_SHORT_STATE (0x28) | 275 | #define PM805_HEADPHONE_SHORT_STATE (0x28) |
276 | #define PM805_EARPHONE_SETTING (0x29) | 276 | #define PM805_EARPHONE_SETTING (0x29) |
277 | #define PM805_AUTO_SEQ_SETTING (0x2A) | 277 | #define PM805_AUTO_SEQ_SETTING (0x2A) |
278 | 278 | ||
279 | struct pm80x_rtc_pdata { | 279 | struct pm80x_rtc_pdata { |
280 | int vrtc; | 280 | int vrtc; |
diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h index 2f434f4f79a1..79e607e2f081 100644 --- a/include/linux/mfd/arizona/core.h +++ b/include/linux/mfd/arizona/core.h | |||
@@ -25,6 +25,8 @@ enum arizona_type { | |||
25 | WM5110 = 2, | 25 | WM5110 = 2, |
26 | WM8997 = 3, | 26 | WM8997 = 3, |
27 | WM8280 = 4, | 27 | WM8280 = 4, |
28 | WM8998 = 5, | ||
29 | WM1814 = 6, | ||
28 | }; | 30 | }; |
29 | 31 | ||
30 | #define ARIZONA_IRQ_GP1 0 | 32 | #define ARIZONA_IRQ_GP1 0 |
@@ -165,6 +167,7 @@ static inline int wm5102_patch(struct arizona *arizona) | |||
165 | 167 | ||
166 | int wm5110_patch(struct arizona *arizona); | 168 | int wm5110_patch(struct arizona *arizona); |
167 | int wm8997_patch(struct arizona *arizona); | 169 | int wm8997_patch(struct arizona *arizona); |
170 | int wm8998_patch(struct arizona *arizona); | ||
168 | 171 | ||
169 | extern int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop, | 172 | extern int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop, |
170 | bool mandatory); | 173 | bool mandatory); |
diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h index 43db4faad143..1dc385850ba2 100644 --- a/include/linux/mfd/arizona/pdata.h +++ b/include/linux/mfd/arizona/pdata.h | |||
@@ -101,7 +101,7 @@ struct arizona_pdata { | |||
101 | * useful for systems where and I2S bus with multiple data | 101 | * useful for systems where and I2S bus with multiple data |
102 | * lines is mastered. | 102 | * lines is mastered. |
103 | */ | 103 | */ |
104 | int max_channels_clocked[ARIZONA_MAX_AIF]; | 104 | unsigned int max_channels_clocked[ARIZONA_MAX_AIF]; |
105 | 105 | ||
106 | /** GPIO5 is used for jack detection */ | 106 | /** GPIO5 is used for jack detection */ |
107 | bool jd_gpio5; | 107 | bool jd_gpio5; |
@@ -125,22 +125,22 @@ struct arizona_pdata { | |||
125 | unsigned int hpdet_channel; | 125 | unsigned int hpdet_channel; |
126 | 126 | ||
127 | /** Extra debounce timeout used during initial mic detection (ms) */ | 127 | /** Extra debounce timeout used during initial mic detection (ms) */ |
128 | int micd_detect_debounce; | 128 | unsigned int micd_detect_debounce; |
129 | 129 | ||
130 | /** GPIO for mic detection polarity */ | 130 | /** GPIO for mic detection polarity */ |
131 | int micd_pol_gpio; | 131 | int micd_pol_gpio; |
132 | 132 | ||
133 | /** Mic detect ramp rate */ | 133 | /** Mic detect ramp rate */ |
134 | int micd_bias_start_time; | 134 | unsigned int micd_bias_start_time; |
135 | 135 | ||
136 | /** Mic detect sample rate */ | 136 | /** Mic detect sample rate */ |
137 | int micd_rate; | 137 | unsigned int micd_rate; |
138 | 138 | ||
139 | /** Mic detect debounce level */ | 139 | /** Mic detect debounce level */ |
140 | int micd_dbtime; | 140 | unsigned int micd_dbtime; |
141 | 141 | ||
142 | /** Mic detect timeout (ms) */ | 142 | /** Mic detect timeout (ms) */ |
143 | int micd_timeout; | 143 | unsigned int micd_timeout; |
144 | 144 | ||
145 | /** Force MICBIAS on for mic detect */ | 145 | /** Force MICBIAS on for mic detect */ |
146 | bool micd_force_micbias; | 146 | bool micd_force_micbias; |
@@ -162,6 +162,8 @@ struct arizona_pdata { | |||
162 | /** | 162 | /** |
163 | * Mode of input structures | 163 | * Mode of input structures |
164 | * One of the ARIZONA_INMODE_xxx values | 164 | * One of the ARIZONA_INMODE_xxx values |
165 | * wm5102/wm5110/wm8280/wm8997: [0]=IN1 [1]=IN2 [2]=IN3 [3]=IN4 | ||
166 | * wm8998: [0]=IN1A [1]=IN2A [2]=IN1B [3]=IN2B | ||
165 | */ | 167 | */ |
166 | int inmode[ARIZONA_MAX_INPUT]; | 168 | int inmode[ARIZONA_MAX_INPUT]; |
167 | 169 | ||
diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h index 3499d36e6067..5c39dc5d279e 100644 --- a/include/linux/mfd/arizona/registers.h +++ b/include/linux/mfd/arizona/registers.h | |||
@@ -139,6 +139,7 @@ | |||
139 | #define ARIZONA_MIC_DETECT_LEVEL_2 0x2A7 | 139 | #define ARIZONA_MIC_DETECT_LEVEL_2 0x2A7 |
140 | #define ARIZONA_MIC_DETECT_LEVEL_3 0x2A8 | 140 | #define ARIZONA_MIC_DETECT_LEVEL_3 0x2A8 |
141 | #define ARIZONA_MIC_DETECT_LEVEL_4 0x2A9 | 141 | #define ARIZONA_MIC_DETECT_LEVEL_4 0x2A9 |
142 | #define ARIZONA_MIC_DETECT_4 0x2AB | ||
142 | #define ARIZONA_MIC_NOISE_MIX_CONTROL_1 0x2C3 | 143 | #define ARIZONA_MIC_NOISE_MIX_CONTROL_1 0x2C3 |
143 | #define ARIZONA_ISOLATION_CONTROL 0x2CB | 144 | #define ARIZONA_ISOLATION_CONTROL 0x2CB |
144 | #define ARIZONA_JACK_DETECT_ANALOGUE 0x2D3 | 145 | #define ARIZONA_JACK_DETECT_ANALOGUE 0x2D3 |
@@ -225,14 +226,18 @@ | |||
225 | #define ARIZONA_DAC_VOLUME_LIMIT_6R 0x43E | 226 | #define ARIZONA_DAC_VOLUME_LIMIT_6R 0x43E |
226 | #define ARIZONA_NOISE_GATE_SELECT_6R 0x43F | 227 | #define ARIZONA_NOISE_GATE_SELECT_6R 0x43F |
227 | #define ARIZONA_DRE_ENABLE 0x440 | 228 | #define ARIZONA_DRE_ENABLE 0x440 |
229 | #define ARIZONA_DRE_CONTROL_1 0x441 | ||
228 | #define ARIZONA_DRE_CONTROL_2 0x442 | 230 | #define ARIZONA_DRE_CONTROL_2 0x442 |
229 | #define ARIZONA_DRE_CONTROL_3 0x443 | 231 | #define ARIZONA_DRE_CONTROL_3 0x443 |
232 | #define ARIZONA_EDRE_ENABLE 0x448 | ||
230 | #define ARIZONA_DAC_AEC_CONTROL_1 0x450 | 233 | #define ARIZONA_DAC_AEC_CONTROL_1 0x450 |
234 | #define ARIZONA_DAC_AEC_CONTROL_2 0x451 | ||
231 | #define ARIZONA_NOISE_GATE_CONTROL 0x458 | 235 | #define ARIZONA_NOISE_GATE_CONTROL 0x458 |
232 | #define ARIZONA_PDM_SPK1_CTRL_1 0x490 | 236 | #define ARIZONA_PDM_SPK1_CTRL_1 0x490 |
233 | #define ARIZONA_PDM_SPK1_CTRL_2 0x491 | 237 | #define ARIZONA_PDM_SPK1_CTRL_2 0x491 |
234 | #define ARIZONA_PDM_SPK2_CTRL_1 0x492 | 238 | #define ARIZONA_PDM_SPK2_CTRL_1 0x492 |
235 | #define ARIZONA_PDM_SPK2_CTRL_2 0x493 | 239 | #define ARIZONA_PDM_SPK2_CTRL_2 0x493 |
240 | #define ARIZONA_HP_TEST_CTRL_13 0x49A | ||
236 | #define ARIZONA_HP1_SHORT_CIRCUIT_CTRL 0x4A0 | 241 | #define ARIZONA_HP1_SHORT_CIRCUIT_CTRL 0x4A0 |
237 | #define ARIZONA_HP2_SHORT_CIRCUIT_CTRL 0x4A1 | 242 | #define ARIZONA_HP2_SHORT_CIRCUIT_CTRL 0x4A1 |
238 | #define ARIZONA_HP3_SHORT_CIRCUIT_CTRL 0x4A2 | 243 | #define ARIZONA_HP3_SHORT_CIRCUIT_CTRL 0x4A2 |
@@ -310,6 +315,10 @@ | |||
310 | #define ARIZONA_AIF3_TX_ENABLES 0x599 | 315 | #define ARIZONA_AIF3_TX_ENABLES 0x599 |
311 | #define ARIZONA_AIF3_RX_ENABLES 0x59A | 316 | #define ARIZONA_AIF3_RX_ENABLES 0x59A |
312 | #define ARIZONA_AIF3_FORCE_WRITE 0x59B | 317 | #define ARIZONA_AIF3_FORCE_WRITE 0x59B |
318 | #define ARIZONA_SPD1_TX_CONTROL 0x5C2 | ||
319 | #define ARIZONA_SPD1_TX_CHANNEL_STATUS_1 0x5C3 | ||
320 | #define ARIZONA_SPD1_TX_CHANNEL_STATUS_2 0x5C4 | ||
321 | #define ARIZONA_SPD1_TX_CHANNEL_STATUS_3 0x5C5 | ||
313 | #define ARIZONA_SLIMBUS_FRAMER_REF_GEAR 0x5E3 | 322 | #define ARIZONA_SLIMBUS_FRAMER_REF_GEAR 0x5E3 |
314 | #define ARIZONA_SLIMBUS_RATES_1 0x5E5 | 323 | #define ARIZONA_SLIMBUS_RATES_1 0x5E5 |
315 | #define ARIZONA_SLIMBUS_RATES_2 0x5E6 | 324 | #define ARIZONA_SLIMBUS_RATES_2 0x5E6 |
@@ -643,6 +652,10 @@ | |||
643 | #define ARIZONA_SLIMTX8MIX_INPUT_3_VOLUME 0x7FD | 652 | #define ARIZONA_SLIMTX8MIX_INPUT_3_VOLUME 0x7FD |
644 | #define ARIZONA_SLIMTX8MIX_INPUT_4_SOURCE 0x7FE | 653 | #define ARIZONA_SLIMTX8MIX_INPUT_4_SOURCE 0x7FE |
645 | #define ARIZONA_SLIMTX8MIX_INPUT_4_VOLUME 0x7FF | 654 | #define ARIZONA_SLIMTX8MIX_INPUT_4_VOLUME 0x7FF |
655 | #define ARIZONA_SPDIFTX1MIX_INPUT_1_SOURCE 0x800 | ||
656 | #define ARIZONA_SPDIFTX1MIX_INPUT_1_VOLUME 0x801 | ||
657 | #define ARIZONA_SPDIFTX2MIX_INPUT_1_SOURCE 0x808 | ||
658 | #define ARIZONA_SPDIFTX2MIX_INPUT_1_VOLUME 0x809 | ||
646 | #define ARIZONA_EQ1MIX_INPUT_1_SOURCE 0x880 | 659 | #define ARIZONA_EQ1MIX_INPUT_1_SOURCE 0x880 |
647 | #define ARIZONA_EQ1MIX_INPUT_1_VOLUME 0x881 | 660 | #define ARIZONA_EQ1MIX_INPUT_1_VOLUME 0x881 |
648 | #define ARIZONA_EQ1MIX_INPUT_2_SOURCE 0x882 | 661 | #define ARIZONA_EQ1MIX_INPUT_2_SOURCE 0x882 |
@@ -868,6 +881,7 @@ | |||
868 | #define ARIZONA_GPIO5_CTRL 0xC04 | 881 | #define ARIZONA_GPIO5_CTRL 0xC04 |
869 | #define ARIZONA_IRQ_CTRL_1 0xC0F | 882 | #define ARIZONA_IRQ_CTRL_1 0xC0F |
870 | #define ARIZONA_GPIO_DEBOUNCE_CONFIG 0xC10 | 883 | #define ARIZONA_GPIO_DEBOUNCE_CONFIG 0xC10 |
884 | #define ARIZONA_GP_SWITCH_1 0xC18 | ||
871 | #define ARIZONA_MISC_PAD_CTRL_1 0xC20 | 885 | #define ARIZONA_MISC_PAD_CTRL_1 0xC20 |
872 | #define ARIZONA_MISC_PAD_CTRL_2 0xC21 | 886 | #define ARIZONA_MISC_PAD_CTRL_2 0xC21 |
873 | #define ARIZONA_MISC_PAD_CTRL_3 0xC22 | 887 | #define ARIZONA_MISC_PAD_CTRL_3 0xC22 |
@@ -1169,6 +1183,13 @@ | |||
1169 | #define ARIZONA_DSP4_SCRATCH_1 0x1441 | 1183 | #define ARIZONA_DSP4_SCRATCH_1 0x1441 |
1170 | #define ARIZONA_DSP4_SCRATCH_2 0x1442 | 1184 | #define ARIZONA_DSP4_SCRATCH_2 0x1442 |
1171 | #define ARIZONA_DSP4_SCRATCH_3 0x1443 | 1185 | #define ARIZONA_DSP4_SCRATCH_3 0x1443 |
1186 | #define ARIZONA_FRF_COEFF_1 0x1700 | ||
1187 | #define ARIZONA_FRF_COEFF_2 0x1701 | ||
1188 | #define ARIZONA_FRF_COEFF_3 0x1702 | ||
1189 | #define ARIZONA_FRF_COEFF_4 0x1703 | ||
1190 | #define ARIZONA_V2_DAC_COMP_1 0x1704 | ||
1191 | #define ARIZONA_V2_DAC_COMP_2 0x1705 | ||
1192 | |||
1172 | 1193 | ||
1173 | /* | 1194 | /* |
1174 | * Field Definitions. | 1195 | * Field Definitions. |
@@ -2325,6 +2346,9 @@ | |||
2325 | #define ARIZONA_HP_IDAC_STEER_MASK 0x0004 /* HP_IDAC_STEER */ | 2346 | #define ARIZONA_HP_IDAC_STEER_MASK 0x0004 /* HP_IDAC_STEER */ |
2326 | #define ARIZONA_HP_IDAC_STEER_SHIFT 2 /* HP_IDAC_STEER */ | 2347 | #define ARIZONA_HP_IDAC_STEER_SHIFT 2 /* HP_IDAC_STEER */ |
2327 | #define ARIZONA_HP_IDAC_STEER_WIDTH 1 /* HP_IDAC_STEER */ | 2348 | #define ARIZONA_HP_IDAC_STEER_WIDTH 1 /* HP_IDAC_STEER */ |
2349 | #define WM8998_HP_RATE_MASK 0x0006 /* HP_RATE - [2:1] */ | ||
2350 | #define WM8998_HP_RATE_SHIFT 1 /* HP_RATE - [2:1] */ | ||
2351 | #define WM8998_HP_RATE_WIDTH 2 /* HP_RATE - [2:1] */ | ||
2328 | #define ARIZONA_HP_RATE 0x0002 /* HP_RATE */ | 2352 | #define ARIZONA_HP_RATE 0x0002 /* HP_RATE */ |
2329 | #define ARIZONA_HP_RATE_MASK 0x0002 /* HP_RATE */ | 2353 | #define ARIZONA_HP_RATE_MASK 0x0002 /* HP_RATE */ |
2330 | #define ARIZONA_HP_RATE_SHIFT 1 /* HP_RATE */ | 2354 | #define ARIZONA_HP_RATE_SHIFT 1 /* HP_RATE */ |
@@ -2413,6 +2437,16 @@ | |||
2413 | #define ARIZONA_MICD_STS_WIDTH 1 /* MICD_STS */ | 2437 | #define ARIZONA_MICD_STS_WIDTH 1 /* MICD_STS */ |
2414 | 2438 | ||
2415 | /* | 2439 | /* |
2440 | * R683 (0x2AB) - Mic Detect 4 | ||
2441 | */ | ||
2442 | #define ARIZONA_MICDET_ADCVAL_DIFF_MASK 0xFF00 /* MICDET_ADCVAL_DIFF - [15:8] */ | ||
2443 | #define ARIZONA_MICDET_ADCVAL_DIFF_SHIFT 8 /* MICDET_ADCVAL_DIFF - [15:8] */ | ||
2444 | #define ARIZONA_MICDET_ADCVAL_DIFF_WIDTH 8 /* MICDET_ADCVAL_DIFF - [15:8] */ | ||
2445 | #define ARIZONA_MICDET_ADCVAL_MASK 0x007F /* MICDET_ADCVAL - [15:8] */ | ||
2446 | #define ARIZONA_MICDET_ADCVAL_SHIFT 0 /* MICDET_ADCVAL - [15:8] */ | ||
2447 | #define ARIZONA_MICDET_ADCVAL_WIDTH 7 /* MICDET_ADCVAL - [15:8] */ | ||
2448 | |||
2449 | /* | ||
2416 | * R707 (0x2C3) - Mic noise mix control 1 | 2450 | * R707 (0x2C3) - Mic noise mix control 1 |
2417 | */ | 2451 | */ |
2418 | #define ARIZONA_MICMUTE_RATE_MASK 0x7800 /* MICMUTE_RATE - [14:11] */ | 2452 | #define ARIZONA_MICMUTE_RATE_MASK 0x7800 /* MICMUTE_RATE - [14:11] */ |
@@ -2528,6 +2562,12 @@ | |||
2528 | /* | 2562 | /* |
2529 | * R785 (0x311) - ADC Digital Volume 1L | 2563 | * R785 (0x311) - ADC Digital Volume 1L |
2530 | */ | 2564 | */ |
2565 | #define ARIZONA_IN1L_SRC_MASK 0x4000 /* IN1L_SRC - [14] */ | ||
2566 | #define ARIZONA_IN1L_SRC_SHIFT 14 /* IN1L_SRC - [14] */ | ||
2567 | #define ARIZONA_IN1L_SRC_WIDTH 1 /* IN1L_SRC - [14] */ | ||
2568 | #define ARIZONA_IN1L_SRC_SE_MASK 0x2000 /* IN1L_SRC - [13] */ | ||
2569 | #define ARIZONA_IN1L_SRC_SE_SHIFT 13 /* IN1L_SRC - [13] */ | ||
2570 | #define ARIZONA_IN1L_SRC_SE_WIDTH 1 /* IN1L_SRC - [13] */ | ||
2531 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | 2571 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ |
2532 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | 2572 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ |
2533 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | 2573 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ |
@@ -2560,6 +2600,12 @@ | |||
2560 | /* | 2600 | /* |
2561 | * R789 (0x315) - ADC Digital Volume 1R | 2601 | * R789 (0x315) - ADC Digital Volume 1R |
2562 | */ | 2602 | */ |
2603 | #define ARIZONA_IN1R_SRC_MASK 0x4000 /* IN1R_SRC - [14] */ | ||
2604 | #define ARIZONA_IN1R_SRC_SHIFT 14 /* IN1R_SRC - [14] */ | ||
2605 | #define ARIZONA_IN1R_SRC_WIDTH 1 /* IN1R_SRC - [14] */ | ||
2606 | #define ARIZONA_IN1R_SRC_SE_MASK 0x2000 /* IN1R_SRC - [13] */ | ||
2607 | #define ARIZONA_IN1R_SRC_SE_SHIFT 13 /* IN1R_SRC - [13] */ | ||
2608 | #define ARIZONA_IN1R_SRC_SE_WIDTH 1 /* IN1R_SRC - [13] */ | ||
2563 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | 2609 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ |
2564 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | 2610 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ |
2565 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | 2611 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ |
@@ -2604,6 +2650,12 @@ | |||
2604 | /* | 2650 | /* |
2605 | * R793 (0x319) - ADC Digital Volume 2L | 2651 | * R793 (0x319) - ADC Digital Volume 2L |
2606 | */ | 2652 | */ |
2653 | #define ARIZONA_IN2L_SRC_MASK 0x4000 /* IN2L_SRC - [14] */ | ||
2654 | #define ARIZONA_IN2L_SRC_SHIFT 14 /* IN2L_SRC - [14] */ | ||
2655 | #define ARIZONA_IN2L_SRC_WIDTH 1 /* IN2L_SRC - [14] */ | ||
2656 | #define ARIZONA_IN2L_SRC_SE_MASK 0x2000 /* IN2L_SRC - [13] */ | ||
2657 | #define ARIZONA_IN2L_SRC_SE_SHIFT 13 /* IN2L_SRC - [13] */ | ||
2658 | #define ARIZONA_IN2L_SRC_SE_WIDTH 1 /* IN2L_SRC - [13] */ | ||
2607 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ | 2659 | #define ARIZONA_IN_VU 0x0200 /* IN_VU */ |
2608 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ | 2660 | #define ARIZONA_IN_VU_MASK 0x0200 /* IN_VU */ |
2609 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ | 2661 | #define ARIZONA_IN_VU_SHIFT 9 /* IN_VU */ |
@@ -3412,11 +3464,45 @@ | |||
3412 | #define ARIZONA_DRE1L_ENA_WIDTH 1 /* DRE1L_ENA */ | 3464 | #define ARIZONA_DRE1L_ENA_WIDTH 1 /* DRE1L_ENA */ |
3413 | 3465 | ||
3414 | /* | 3466 | /* |
3467 | * R1088 (0x440) - DRE Enable (WM8998) | ||
3468 | */ | ||
3469 | #define WM8998_DRE3L_ENA 0x0020 /* DRE3L_ENA */ | ||
3470 | #define WM8998_DRE3L_ENA_MASK 0x0020 /* DRE3L_ENA */ | ||
3471 | #define WM8998_DRE3L_ENA_SHIFT 5 /* DRE3L_ENA */ | ||
3472 | #define WM8998_DRE3L_ENA_WIDTH 1 /* DRE3L_ENA */ | ||
3473 | #define WM8998_DRE2L_ENA 0x0008 /* DRE2L_ENA */ | ||
3474 | #define WM8998_DRE2L_ENA_MASK 0x0008 /* DRE2L_ENA */ | ||
3475 | #define WM8998_DRE2L_ENA_SHIFT 3 /* DRE2L_ENA */ | ||
3476 | #define WM8998_DRE2L_ENA_WIDTH 1 /* DRE2L_ENA */ | ||
3477 | #define WM8998_DRE2R_ENA 0x0004 /* DRE2R_ENA */ | ||
3478 | #define WM8998_DRE2R_ENA_MASK 0x0004 /* DRE2R_ENA */ | ||
3479 | #define WM8998_DRE2R_ENA_SHIFT 2 /* DRE2R_ENA */ | ||
3480 | #define WM8998_DRE2R_ENA_WIDTH 1 /* DRE2R_ENA */ | ||
3481 | #define WM8998_DRE1L_ENA 0x0002 /* DRE1L_ENA */ | ||
3482 | #define WM8998_DRE1L_ENA_MASK 0x0002 /* DRE1L_ENA */ | ||
3483 | #define WM8998_DRE1L_ENA_SHIFT 1 /* DRE1L_ENA */ | ||
3484 | #define WM8998_DRE1L_ENA_WIDTH 1 /* DRE1L_ENA */ | ||
3485 | #define WM8998_DRE1R_ENA 0x0001 /* DRE1R_ENA */ | ||
3486 | #define WM8998_DRE1R_ENA_MASK 0x0001 /* DRE1R_ENA */ | ||
3487 | #define WM8998_DRE1R_ENA_SHIFT 0 /* DRE1R_ENA */ | ||
3488 | #define WM8998_DRE1R_ENA_WIDTH 1 /* DRE1R_ENA */ | ||
3489 | |||
3490 | /* | ||
3491 | * R1089 (0x441) - DRE Control 1 | ||
3492 | */ | ||
3493 | #define ARIZONA_DRE_ENV_TC_FAST_MASK 0x0F00 /* DRE_ENV_TC_FAST - [11:8] */ | ||
3494 | #define ARIZONA_DRE_ENV_TC_FAST_SHIFT 8 /* DRE_ENV_TC_FAST - [11:8] */ | ||
3495 | #define ARIZONA_DRE_ENV_TC_FAST_WIDTH 4 /* DRE_ENV_TC_FAST - [11:8] */ | ||
3496 | |||
3497 | /* | ||
3415 | * R1090 (0x442) - DRE Control 2 | 3498 | * R1090 (0x442) - DRE Control 2 |
3416 | */ | 3499 | */ |
3417 | #define ARIZONA_DRE_T_LOW_MASK 0x3F00 /* DRE_T_LOW - [13:8] */ | 3500 | #define ARIZONA_DRE_T_LOW_MASK 0x3F00 /* DRE_T_LOW - [13:8] */ |
3418 | #define ARIZONA_DRE_T_LOW_SHIFT 8 /* DRE_T_LOW - [13:8] */ | 3501 | #define ARIZONA_DRE_T_LOW_SHIFT 8 /* DRE_T_LOW - [13:8] */ |
3419 | #define ARIZONA_DRE_T_LOW_WIDTH 6 /* DRE_T_LOW - [13:8] */ | 3502 | #define ARIZONA_DRE_T_LOW_WIDTH 6 /* DRE_T_LOW - [13:8] */ |
3503 | #define ARIZONA_DRE_ALOG_VOL_DELAY_MASK 0x000F /* DRE_ALOG_VOL_DELAY - [3:0] */ | ||
3504 | #define ARIZONA_DRE_ALOG_VOL_DELAY_SHIFT 0 /* DRE_ALOG_VOL_DELAY - [3:0] */ | ||
3505 | #define ARIZONA_DRE_ALOG_VOL_DELAY_WIDTH 4 /* DRE_ALOG_VOL_DELAY - [3:0] */ | ||
3420 | 3506 | ||
3421 | /* | 3507 | /* |
3422 | * R1091 (0x443) - DRE Control 3 | 3508 | * R1091 (0x443) - DRE Control 3 |
@@ -3428,6 +3514,49 @@ | |||
3428 | #define ARIZONA_DRE_LOW_LEVEL_ABS_SHIFT 0 /* LOW_LEVEL_ABS - [3:0] */ | 3514 | #define ARIZONA_DRE_LOW_LEVEL_ABS_SHIFT 0 /* LOW_LEVEL_ABS - [3:0] */ |
3429 | #define ARIZONA_DRE_LOW_LEVEL_ABS_WIDTH 4 /* LOW_LEVEL_ABS - [3:0] */ | 3515 | #define ARIZONA_DRE_LOW_LEVEL_ABS_WIDTH 4 /* LOW_LEVEL_ABS - [3:0] */ |
3430 | 3516 | ||
3517 | /* R486 (0x448) - EDRE_Enable | ||
3518 | */ | ||
3519 | #define ARIZONA_EDRE_OUT4L_THR2_ENA 0x0200 /* EDRE_OUT4L_THR2_ENA */ | ||
3520 | #define ARIZONA_EDRE_OUT4L_THR2_ENA_MASK 0x0200 /* EDRE_OUT4L_THR2_ENA */ | ||
3521 | #define ARIZONA_EDRE_OUT4L_THR2_ENA_SHIFT 9 /* EDRE_OUT4L_THR2_ENA */ | ||
3522 | #define ARIZONA_EDRE_OUT4L_THR2_ENA_WIDTH 1 /* EDRE_OUT4L_THR2_ENA */ | ||
3523 | #define ARIZONA_EDRE_OUT4R_THR2_ENA 0x0100 /* EDRE_OUT4R_THR2_ENA */ | ||
3524 | #define ARIZONA_EDRE_OUT4R_THR2_ENA_MASK 0x0100 /* EDRE_OUT4R_THR2_ENA */ | ||
3525 | #define ARIZONA_EDRE_OUT4R_THR2_ENA_SHIFT 8 /* EDRE_OUT4R_THR2_ENA */ | ||
3526 | #define ARIZONA_EDRE_OUT4R_THR2_ENA_WIDTH 1 /* EDRE_OUT4R_THR2_ENA */ | ||
3527 | #define ARIZONA_EDRE_OUT4L_THR1_ENA 0x0080 /* EDRE_OUT4L_THR1_ENA */ | ||
3528 | #define ARIZONA_EDRE_OUT4L_THR1_ENA_MASK 0x0080 /* EDRE_OUT4L_THR1_ENA */ | ||
3529 | #define ARIZONA_EDRE_OUT4L_THR1_ENA_SHIFT 7 /* EDRE_OUT4L_THR1_ENA */ | ||
3530 | #define ARIZONA_EDRE_OUT4L_THR1_ENA_WIDTH 1 /* EDRE_OUT4L_THR1_ENA */ | ||
3531 | #define ARIZONA_EDRE_OUT4R_THR1_ENA 0x0040 /* EDRE_OUT4R_THR1_ENA */ | ||
3532 | #define ARIZONA_EDRE_OUT4R_THR1_ENA_MASK 0x0040 /* EDRE_OUT4R_THR1_ENA */ | ||
3533 | #define ARIZONA_EDRE_OUT4R_THR1_ENA_SHIFT 6 /* EDRE_OUT4R_THR1_ENA */ | ||
3534 | #define ARIZONA_EDRE_OUT4R_THR1_ENA_WIDTH 1 /* EDRE_OUT4R_THR1_ENA */ | ||
3535 | #define ARIZONA_EDRE_OUT3L_THR1_ENA 0x0020 /* EDRE_OUT3L_THR1_ENA */ | ||
3536 | #define ARIZONA_EDRE_OUT3L_THR1_ENA_MASK 0x0020 /* EDRE_OUT3L_THR1_ENA */ | ||
3537 | #define ARIZONA_EDRE_OUT3L_THR1_ENA_SHIFT 5 /* EDRE_OUT3L_THR1_ENA */ | ||
3538 | #define ARIZONA_EDRE_OUT3L_THR1_ENA_WIDTH 1 /* EDRE_OUT3L_THR1_ENA */ | ||
3539 | #define ARIZONA_EDRE_OUT3R_THR1_ENA 0x0010 /* EDRE_OUT3R_THR1_ENA */ | ||
3540 | #define ARIZONA_EDRE_OUT3R_THR1_ENA_MASK 0x0010 /* EDRE_OUT3R_THR1_ENA */ | ||
3541 | #define ARIZONA_EDRE_OUT3R_THR1_ENA_SHIFT 4 /* EDRE_OUT3R_THR1_ENA */ | ||
3542 | #define ARIZONA_EDRE_OUT3R_THR1_ENA_WIDTH 1 /* EDRE_OUT3R_THR1_ENA */ | ||
3543 | #define ARIZONA_EDRE_OUT2L_THR1_ENA 0x0008 /* EDRE_OUT2L_THR1_ENA */ | ||
3544 | #define ARIZONA_EDRE_OUT2L_THR1_ENA_MASK 0x0008 /* EDRE_OUT2L_THR1_ENA */ | ||
3545 | #define ARIZONA_EDRE_OUT2L_THR1_ENA_SHIFT 3 /* EDRE_OUT2L_THR1_ENA */ | ||
3546 | #define ARIZONA_EDRE_OUT2L_THR1_ENA_WIDTH 1 /* EDRE_OUT2L_THR1_ENA */ | ||
3547 | #define ARIZONA_EDRE_OUT2R_THR1_ENA 0x0004 /* EDRE_OUT2R_THR1_ENA */ | ||
3548 | #define ARIZONA_EDRE_OUT2R_THR1_ENA_MASK 0x0004 /* EDRE_OUT2R_THR1_ENA */ | ||
3549 | #define ARIZONA_EDRE_OUT2R_THR1_ENA_SHIFT 2 /* EDRE_OUT2R_THR1_ENA */ | ||
3550 | #define ARIZONA_EDRE_OUT2R_THR1_ENA_WIDTH 1 /* EDRE_OUT2R_THR1_ENA */ | ||
3551 | #define ARIZONA_EDRE_OUT1L_THR1_ENA 0x0002 /* EDRE_OUT1L_THR1_ENA */ | ||
3552 | #define ARIZONA_EDRE_OUT1L_THR1_ENA_MASK 0x0002 /* EDRE_OUT1L_THR1_ENA */ | ||
3553 | #define ARIZONA_EDRE_OUT1L_THR1_ENA_SHIFT 1 /* EDRE_OUT1L_THR1_ENA */ | ||
3554 | #define ARIZONA_EDRE_OUT1L_THR1_ENA_WIDTH 1 /* EDRE_OUT1L_THR1_ENA */ | ||
3555 | #define ARIZONA_EDRE_OUT1R_THR1_ENA 0x0001 /* EDRE_OUT1R_THR1_ENA */ | ||
3556 | #define ARIZONA_EDRE_OUT1R_THR1_ENA_MASK 0x0001 /* EDRE_OUT1R_THR1_ENA */ | ||
3557 | #define ARIZONA_EDRE_OUT1R_THR1_ENA_SHIFT 0 /* EDRE_OUT1R_THR1_ENA */ | ||
3558 | #define ARIZONA_EDRE_OUT1R_THR1_ENA_WIDTH 1 /* EDRE_OUT1R_THR1_ENA */ | ||
3559 | |||
3431 | /* | 3560 | /* |
3432 | * R1104 (0x450) - DAC AEC Control 1 | 3561 | * R1104 (0x450) - DAC AEC Control 1 |
3433 | */ | 3562 | */ |
@@ -4308,6 +4437,86 @@ | |||
4308 | #define ARIZONA_AIF3_FRC_WR_WIDTH 1 /* AIF3_FRC_WR */ | 4437 | #define ARIZONA_AIF3_FRC_WR_WIDTH 1 /* AIF3_FRC_WR */ |
4309 | 4438 | ||
4310 | /* | 4439 | /* |
4440 | * R1474 (0x5C2) - SPD1 TX Control | ||
4441 | */ | ||
4442 | #define ARIZONA_SPD1_VAL2 0x2000 /* SPD1_VAL2 */ | ||
4443 | #define ARIZONA_SPD1_VAL2_MASK 0x2000 /* SPD1_VAL2 */ | ||
4444 | #define ARIZONA_SPD1_VAL2_SHIFT 13 /* SPD1_VAL2 */ | ||
4445 | #define ARIZONA_SPD1_VAL2_WIDTH 1 /* SPD1_VAL2 */ | ||
4446 | #define ARIZONA_SPD1_VAL1 0x1000 /* SPD1_VAL1 */ | ||
4447 | #define ARIZONA_SPD1_VAL1_MASK 0x1000 /* SPD1_VAL1 */ | ||
4448 | #define ARIZONA_SPD1_VAL1_SHIFT 12 /* SPD1_VAL1 */ | ||
4449 | #define ARIZONA_SPD1_VAL1_WIDTH 1 /* SPD1_VAL1 */ | ||
4450 | #define ARIZONA_SPD1_RATE_MASK 0x00F0 /* SPD1_RATE */ | ||
4451 | #define ARIZONA_SPD1_RATE_SHIFT 4 /* SPD1_RATE */ | ||
4452 | #define ARIZONA_SPD1_RATE_WIDTH 4 /* SPD1_RATE */ | ||
4453 | #define ARIZONA_SPD1_ENA 0x0001 /* SPD1_ENA */ | ||
4454 | #define ARIZONA_SPD1_ENA_MASK 0x0001 /* SPD1_ENA */ | ||
4455 | #define ARIZONA_SPD1_ENA_SHIFT 0 /* SPD1_ENA */ | ||
4456 | #define ARIZONA_SPD1_ENA_WIDTH 1 /* SPD1_ENA */ | ||
4457 | |||
4458 | /* | ||
4459 | * R1475 (0x5C3) - SPD1 TX Channel Status 1 | ||
4460 | */ | ||
4461 | #define ARIZONA_SPD1_CATCODE_MASK 0xFF00 /* SPD1_CATCODE */ | ||
4462 | #define ARIZONA_SPD1_CATCODE_SHIFT 8 /* SPD1_CATCODE */ | ||
4463 | #define ARIZONA_SPD1_CATCODE_WIDTH 8 /* SPD1_CATCODE */ | ||
4464 | #define ARIZONA_SPD1_CHSTMODE_MASK 0x00C0 /* SPD1_CHSTMODE */ | ||
4465 | #define ARIZONA_SPD1_CHSTMODE_SHIFT 6 /* SPD1_CHSTMODE */ | ||
4466 | #define ARIZONA_SPD1_CHSTMODE_WIDTH 2 /* SPD1_CHSTMODE */ | ||
4467 | #define ARIZONA_SPD1_PREEMPH_MASK 0x0038 /* SPD1_PREEMPH */ | ||
4468 | #define ARIZONA_SPD1_PREEMPH_SHIFT 3 /* SPD1_PREEMPH */ | ||
4469 | #define ARIZONA_SPD1_PREEMPH_WIDTH 3 /* SPD1_PREEMPH */ | ||
4470 | #define ARIZONA_SPD1_NOCOPY 0x0004 /* SPD1_NOCOPY */ | ||
4471 | #define ARIZONA_SPD1_NOCOPY_MASK 0x0004 /* SPD1_NOCOPY */ | ||
4472 | #define ARIZONA_SPD1_NOCOPY_SHIFT 2 /* SPD1_NOCOPY */ | ||
4473 | #define ARIZONA_SPD1_NOCOPY_WIDTH 1 /* SPD1_NOCOPY */ | ||
4474 | #define ARIZONA_SPD1_NOAUDIO 0x0002 /* SPD1_NOAUDIO */ | ||
4475 | #define ARIZONA_SPD1_NOAUDIO_MASK 0x0002 /* SPD1_NOAUDIO */ | ||
4476 | #define ARIZONA_SPD1_NOAUDIO_SHIFT 1 /* SPD1_NOAUDIO */ | ||
4477 | #define ARIZONA_SPD1_NOAUDIO_WIDTH 1 /* SPD1_NOAUDIO */ | ||
4478 | #define ARIZONA_SPD1_PRO 0x0001 /* SPD1_PRO */ | ||
4479 | #define ARIZONA_SPD1_PRO_MASK 0x0001 /* SPD1_PRO */ | ||
4480 | #define ARIZONA_SPD1_PRO_SHIFT 0 /* SPD1_PRO */ | ||
4481 | #define ARIZONA_SPD1_PRO_WIDTH 1 /* SPD1_PRO */ | ||
4482 | |||
4483 | /* | ||
4484 | * R1475 (0x5C4) - SPD1 TX Channel Status 2 | ||
4485 | */ | ||
4486 | #define ARIZONA_SPD1_FREQ_MASK 0xF000 /* SPD1_FREQ */ | ||
4487 | #define ARIZONA_SPD1_FREQ_SHIFT 12 /* SPD1_FREQ */ | ||
4488 | #define ARIZONA_SPD1_FREQ_WIDTH 4 /* SPD1_FREQ */ | ||
4489 | #define ARIZONA_SPD1_CHNUM2_MASK 0x0F00 /* SPD1_CHNUM2 */ | ||
4490 | #define ARIZONA_SPD1_CHNUM2_SHIFT 8 /* SPD1_CHNUM2 */ | ||
4491 | #define ARIZONA_SPD1_CHNUM2_WIDTH 4 /* SPD1_CHNUM2 */ | ||
4492 | #define ARIZONA_SPD1_CHNUM1_MASK 0x00F0 /* SPD1_CHNUM1 */ | ||
4493 | #define ARIZONA_SPD1_CHNUM1_SHIFT 4 /* SPD1_CHNUM1 */ | ||
4494 | #define ARIZONA_SPD1_CHNUM1_WIDTH 4 /* SPD1_CHNUM1 */ | ||
4495 | #define ARIZONA_SPD1_SRCNUM_MASK 0x000F /* SPD1_SRCNUM */ | ||
4496 | #define ARIZONA_SPD1_SRCNUM_SHIFT 0 /* SPD1_SRCNUM */ | ||
4497 | #define ARIZONA_SPD1_SRCNUM_WIDTH 4 /* SPD1_SRCNUM */ | ||
4498 | |||
4499 | /* | ||
4500 | * R1475 (0x5C5) - SPD1 TX Channel Status 3 | ||
4501 | */ | ||
4502 | #define ARIZONA_SPD1_ORGSAMP_MASK 0x0F00 /* SPD1_ORGSAMP */ | ||
4503 | #define ARIZONA_SPD1_ORGSAMP_SHIFT 8 /* SPD1_ORGSAMP */ | ||
4504 | #define ARIZONA_SPD1_ORGSAMP_WIDTH 4 /* SPD1_ORGSAMP */ | ||
4505 | #define ARIZONA_SPD1_TXWL_MASK 0x00E0 /* SPD1_TXWL */ | ||
4506 | #define ARIZONA_SPD1_TXWL_SHIFT 5 /* SPD1_TXWL */ | ||
4507 | #define ARIZONA_SPD1_TXWL_WIDTH 3 /* SPD1_TXWL */ | ||
4508 | #define ARIZONA_SPD1_MAXWL 0x0010 /* SPD1_MAXWL */ | ||
4509 | #define ARIZONA_SPD1_MAXWL_MASK 0x0010 /* SPD1_MAXWL */ | ||
4510 | #define ARIZONA_SPD1_MAXWL_SHIFT 4 /* SPD1_MAXWL */ | ||
4511 | #define ARIZONA_SPD1_MAXWL_WIDTH 1 /* SPD1_MAXWL */ | ||
4512 | #define ARIZONA_SPD1_CS31_30_MASK 0x000C /* SPD1_CS31_30 */ | ||
4513 | #define ARIZONA_SPD1_CS31_30_SHIFT 2 /* SPD1_CS31_30 */ | ||
4514 | #define ARIZONA_SPD1_CS31_30_WIDTH 2 /* SPD1_CS31_30 */ | ||
4515 | #define ARIZONA_SPD1_CLKACU_MASK 0x0003 /* SPD1_CLKACU */ | ||
4516 | #define ARIZONA_SPD1_CLKACU_SHIFT 2 /* SPD1_CLKACU */ | ||
4517 | #define ARIZONA_SPD1_CLKACU_WIDTH 0 /* SPD1_CLKACU */ | ||
4518 | |||
4519 | /* | ||
4311 | * R1507 (0x5E3) - SLIMbus Framer Ref Gear | 4520 | * R1507 (0x5E3) - SLIMbus Framer Ref Gear |
4312 | */ | 4521 | */ |
4313 | #define ARIZONA_SLIMCLK_SRC 0x0010 /* SLIMCLK_SRC */ | 4522 | #define ARIZONA_SLIMCLK_SRC 0x0010 /* SLIMCLK_SRC */ |
@@ -4562,6 +4771,13 @@ | |||
4562 | #define ARIZONA_GP_DBTIME_WIDTH 4 /* GP_DBTIME - [15:12] */ | 4771 | #define ARIZONA_GP_DBTIME_WIDTH 4 /* GP_DBTIME - [15:12] */ |
4563 | 4772 | ||
4564 | /* | 4773 | /* |
4774 | * R3096 (0xC18) - GP Switch 1 | ||
4775 | */ | ||
4776 | #define ARIZONA_SW1_MODE_MASK 0x0003 /* SW1_MODE - [1:0] */ | ||
4777 | #define ARIZONA_SW1_MODE_SHIFT 0 /* SW1_MODE - [1:0] */ | ||
4778 | #define ARIZONA_SW1_MODE_WIDTH 2 /* SW1_MODE - [1:0] */ | ||
4779 | |||
4780 | /* | ||
4565 | * R3104 (0xC20) - Misc Pad Ctrl 1 | 4781 | * R3104 (0xC20) - Misc Pad Ctrl 1 |
4566 | */ | 4782 | */ |
4567 | #define ARIZONA_LDO1ENA_PD 0x8000 /* LDO1ENA_PD */ | 4783 | #define ARIZONA_LDO1ENA_PD 0x8000 /* LDO1ENA_PD */ |
@@ -6301,6 +6517,10 @@ | |||
6301 | /* | 6517 | /* |
6302 | * R3366 (0xD26) - Interrupt Raw Status 8 | 6518 | * R3366 (0xD26) - Interrupt Raw Status 8 |
6303 | */ | 6519 | */ |
6520 | #define ARIZONA_SPDIF_OVERCLOCKED_STS 0x8000 /* SPDIF_OVERCLOCKED_STS */ | ||
6521 | #define ARIZONA_SPDIF_OVERCLOCKED_STS_MASK 0x8000 /* SPDIF_OVERCLOCKED_STS */ | ||
6522 | #define ARIZONA_SPDIF_OVERCLOCKED_STS_SHIFT 15 /* SPDIF_OVERCLOCKED_STS */ | ||
6523 | #define ARIZONA_SPDIF_OVERCLOCKED_STS_WIDTH 1 /* SPDIF_OVERCLOCKED_STS */ | ||
6304 | #define ARIZONA_AIF3_UNDERCLOCKED_STS 0x0400 /* AIF3_UNDERCLOCKED_STS */ | 6524 | #define ARIZONA_AIF3_UNDERCLOCKED_STS 0x0400 /* AIF3_UNDERCLOCKED_STS */ |
6305 | #define ARIZONA_AIF3_UNDERCLOCKED_STS_MASK 0x0400 /* AIF3_UNDERCLOCKED_STS */ | 6525 | #define ARIZONA_AIF3_UNDERCLOCKED_STS_MASK 0x0400 /* AIF3_UNDERCLOCKED_STS */ |
6306 | #define ARIZONA_AIF3_UNDERCLOCKED_STS_SHIFT 10 /* AIF3_UNDERCLOCKED_STS */ | 6526 | #define ARIZONA_AIF3_UNDERCLOCKED_STS_SHIFT 10 /* AIF3_UNDERCLOCKED_STS */ |
diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h index c2aa853fb412..cc8ad1e1a307 100644 --- a/include/linux/mfd/axp20x.h +++ b/include/linux/mfd/axp20x.h | |||
@@ -12,7 +12,8 @@ | |||
12 | #define __LINUX_MFD_AXP20X_H | 12 | #define __LINUX_MFD_AXP20X_H |
13 | 13 | ||
14 | enum { | 14 | enum { |
15 | AXP202_ID = 0, | 15 | AXP152_ID = 0, |
16 | AXP202_ID, | ||
16 | AXP209_ID, | 17 | AXP209_ID, |
17 | AXP221_ID, | 18 | AXP221_ID, |
18 | AXP288_ID, | 19 | AXP288_ID, |
@@ -22,6 +23,24 @@ enum { | |||
22 | #define AXP20X_DATACACHE(m) (0x04 + (m)) | 23 | #define AXP20X_DATACACHE(m) (0x04 + (m)) |
23 | 24 | ||
24 | /* Power supply */ | 25 | /* Power supply */ |
26 | #define AXP152_PWR_OP_MODE 0x01 | ||
27 | #define AXP152_LDO3456_DC1234_CTRL 0x12 | ||
28 | #define AXP152_ALDO_OP_MODE 0x13 | ||
29 | #define AXP152_LDO0_CTRL 0x15 | ||
30 | #define AXP152_DCDC2_V_OUT 0x23 | ||
31 | #define AXP152_DCDC2_V_SCAL 0x25 | ||
32 | #define AXP152_DCDC1_V_OUT 0x26 | ||
33 | #define AXP152_DCDC3_V_OUT 0x27 | ||
34 | #define AXP152_ALDO12_V_OUT 0x28 | ||
35 | #define AXP152_DLDO1_V_OUT 0x29 | ||
36 | #define AXP152_DLDO2_V_OUT 0x2a | ||
37 | #define AXP152_DCDC4_V_OUT 0x2b | ||
38 | #define AXP152_V_OFF 0x31 | ||
39 | #define AXP152_OFF_CTRL 0x32 | ||
40 | #define AXP152_PEK_KEY 0x36 | ||
41 | #define AXP152_DCDC_FREQ 0x37 | ||
42 | #define AXP152_DCDC_MODE 0x80 | ||
43 | |||
25 | #define AXP20X_PWR_INPUT_STATUS 0x00 | 44 | #define AXP20X_PWR_INPUT_STATUS 0x00 |
26 | #define AXP20X_PWR_OP_MODE 0x01 | 45 | #define AXP20X_PWR_OP_MODE 0x01 |
27 | #define AXP20X_USB_OTG_STATUS 0x02 | 46 | #define AXP20X_USB_OTG_STATUS 0x02 |
@@ -69,6 +88,13 @@ enum { | |||
69 | #define AXP22X_CHRG_CTRL3 0x35 | 88 | #define AXP22X_CHRG_CTRL3 0x35 |
70 | 89 | ||
71 | /* Interrupt */ | 90 | /* Interrupt */ |
91 | #define AXP152_IRQ1_EN 0x40 | ||
92 | #define AXP152_IRQ2_EN 0x41 | ||
93 | #define AXP152_IRQ3_EN 0x42 | ||
94 | #define AXP152_IRQ1_STATE 0x48 | ||
95 | #define AXP152_IRQ2_STATE 0x49 | ||
96 | #define AXP152_IRQ3_STATE 0x4a | ||
97 | |||
72 | #define AXP20X_IRQ1_EN 0x40 | 98 | #define AXP20X_IRQ1_EN 0x40 |
73 | #define AXP20X_IRQ2_EN 0x41 | 99 | #define AXP20X_IRQ2_EN 0x41 |
74 | #define AXP20X_IRQ3_EN 0x42 | 100 | #define AXP20X_IRQ3_EN 0x42 |
@@ -127,6 +153,19 @@ enum { | |||
127 | #define AXP22X_PWREN_CTRL2 0x8d | 153 | #define AXP22X_PWREN_CTRL2 0x8d |
128 | 154 | ||
129 | /* GPIO */ | 155 | /* GPIO */ |
156 | #define AXP152_GPIO0_CTRL 0x90 | ||
157 | #define AXP152_GPIO1_CTRL 0x91 | ||
158 | #define AXP152_GPIO2_CTRL 0x92 | ||
159 | #define AXP152_GPIO3_CTRL 0x93 | ||
160 | #define AXP152_LDOGPIO2_V_OUT 0x96 | ||
161 | #define AXP152_GPIO_INPUT 0x97 | ||
162 | #define AXP152_PWM0_FREQ_X 0x98 | ||
163 | #define AXP152_PWM0_FREQ_Y 0x99 | ||
164 | #define AXP152_PWM0_DUTY_CYCLE 0x9a | ||
165 | #define AXP152_PWM1_FREQ_X 0x9b | ||
166 | #define AXP152_PWM1_FREQ_Y 0x9c | ||
167 | #define AXP152_PWM1_DUTY_CYCLE 0x9d | ||
168 | |||
130 | #define AXP20X_GPIO0_CTRL 0x90 | 169 | #define AXP20X_GPIO0_CTRL 0x90 |
131 | #define AXP20X_LDO5_V_OUT 0x91 | 170 | #define AXP20X_LDO5_V_OUT 0x91 |
132 | #define AXP20X_GPIO1_CTRL 0x92 | 171 | #define AXP20X_GPIO1_CTRL 0x92 |
@@ -151,6 +190,12 @@ enum { | |||
151 | #define AXP20X_CC_CTRL 0xb8 | 190 | #define AXP20X_CC_CTRL 0xb8 |
152 | #define AXP20X_FG_RES 0xb9 | 191 | #define AXP20X_FG_RES 0xb9 |
153 | 192 | ||
193 | /* OCV */ | ||
194 | #define AXP20X_RDC_H 0xba | ||
195 | #define AXP20X_RDC_L 0xbb | ||
196 | #define AXP20X_OCV(m) (0xc0 + (m)) | ||
197 | #define AXP20X_OCV_MAX 0xf | ||
198 | |||
154 | /* AXP22X specific registers */ | 199 | /* AXP22X specific registers */ |
155 | #define AXP22X_BATLOW_THRES1 0xe6 | 200 | #define AXP22X_BATLOW_THRES1 0xe6 |
156 | 201 | ||
@@ -218,6 +263,26 @@ enum { | |||
218 | 263 | ||
219 | /* IRQs */ | 264 | /* IRQs */ |
220 | enum { | 265 | enum { |
266 | AXP152_IRQ_LDO0IN_CONNECT = 1, | ||
267 | AXP152_IRQ_LDO0IN_REMOVAL, | ||
268 | AXP152_IRQ_ALDO0IN_CONNECT, | ||
269 | AXP152_IRQ_ALDO0IN_REMOVAL, | ||
270 | AXP152_IRQ_DCDC1_V_LOW, | ||
271 | AXP152_IRQ_DCDC2_V_LOW, | ||
272 | AXP152_IRQ_DCDC3_V_LOW, | ||
273 | AXP152_IRQ_DCDC4_V_LOW, | ||
274 | AXP152_IRQ_PEK_SHORT, | ||
275 | AXP152_IRQ_PEK_LONG, | ||
276 | AXP152_IRQ_TIMER, | ||
277 | AXP152_IRQ_PEK_RIS_EDGE, | ||
278 | AXP152_IRQ_PEK_FAL_EDGE, | ||
279 | AXP152_IRQ_GPIO3_INPUT, | ||
280 | AXP152_IRQ_GPIO2_INPUT, | ||
281 | AXP152_IRQ_GPIO1_INPUT, | ||
282 | AXP152_IRQ_GPIO0_INPUT, | ||
283 | }; | ||
284 | |||
285 | enum { | ||
221 | AXP20X_IRQ_ACIN_OVER_V = 1, | 286 | AXP20X_IRQ_ACIN_OVER_V = 1, |
222 | AXP20X_IRQ_ACIN_PLUGIN, | 287 | AXP20X_IRQ_ACIN_PLUGIN, |
223 | AXP20X_IRQ_ACIN_REMOVAL, | 288 | AXP20X_IRQ_ACIN_REMOVAL, |
diff --git a/include/linux/mfd/da9062/core.h b/include/linux/mfd/da9062/core.h new file mode 100644 index 000000000000..376ba84366a0 --- /dev/null +++ b/include/linux/mfd/da9062/core.h | |||
@@ -0,0 +1,50 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2015 Dialog Semiconductor Ltd. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | ||
5 | * modify it under the terms of the GNU General Public License | ||
6 | * as published by the Free Software Foundation; either version 2 | ||
7 | * of the License, or (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | */ | ||
14 | |||
15 | #ifndef __MFD_DA9062_CORE_H__ | ||
16 | #define __MFD_DA9062_CORE_H__ | ||
17 | |||
18 | #include <linux/interrupt.h> | ||
19 | #include <linux/mfd/da9062/registers.h> | ||
20 | |||
21 | /* Interrupts */ | ||
22 | enum da9062_irqs { | ||
23 | /* IRQ A */ | ||
24 | DA9062_IRQ_ONKEY, | ||
25 | DA9062_IRQ_ALARM, | ||
26 | DA9062_IRQ_TICK, | ||
27 | DA9062_IRQ_WDG_WARN, | ||
28 | DA9062_IRQ_SEQ_RDY, | ||
29 | /* IRQ B*/ | ||
30 | DA9062_IRQ_TEMP, | ||
31 | DA9062_IRQ_LDO_LIM, | ||
32 | DA9062_IRQ_DVC_RDY, | ||
33 | DA9062_IRQ_VDD_WARN, | ||
34 | /* IRQ C */ | ||
35 | DA9062_IRQ_GPI0, | ||
36 | DA9062_IRQ_GPI1, | ||
37 | DA9062_IRQ_GPI2, | ||
38 | DA9062_IRQ_GPI3, | ||
39 | DA9062_IRQ_GPI4, | ||
40 | |||
41 | DA9062_NUM_IRQ, | ||
42 | }; | ||
43 | |||
44 | struct da9062 { | ||
45 | struct device *dev; | ||
46 | struct regmap *regmap; | ||
47 | struct regmap_irq_chip_data *regmap_irq; | ||
48 | }; | ||
49 | |||
50 | #endif /* __MFD_DA9062_CORE_H__ */ | ||
diff --git a/include/linux/mfd/da9062/registers.h b/include/linux/mfd/da9062/registers.h new file mode 100644 index 000000000000..97790d1b02c5 --- /dev/null +++ b/include/linux/mfd/da9062/registers.h | |||
@@ -0,0 +1,1108 @@ | |||
1 | /* | ||
2 | * registers.h - REGISTERS H for DA9062 | ||
3 | * Copyright (C) 2015 Dialog Semiconductor Ltd. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License | ||
7 | * as published by the Free Software Foundation; either version 2 | ||
8 | * of the License, or (at your option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | */ | ||
15 | |||
16 | #ifndef __DA9062_H__ | ||
17 | #define __DA9062_H__ | ||
18 | |||
19 | #define DA9062_PMIC_DEVICE_ID 0x62 | ||
20 | #define DA9062_PMIC_VARIANT_MRC_AA 0x01 | ||
21 | |||
22 | #define DA9062_I2C_PAGE_SEL_SHIFT 1 | ||
23 | |||
24 | /* | ||
25 | * Registers | ||
26 | */ | ||
27 | |||
28 | #define DA9062AA_PAGE_CON 0x000 | ||
29 | #define DA9062AA_STATUS_A 0x001 | ||
30 | #define DA9062AA_STATUS_B 0x002 | ||
31 | #define DA9062AA_STATUS_D 0x004 | ||
32 | #define DA9062AA_FAULT_LOG 0x005 | ||
33 | #define DA9062AA_EVENT_A 0x006 | ||
34 | #define DA9062AA_EVENT_B 0x007 | ||
35 | #define DA9062AA_EVENT_C 0x008 | ||
36 | #define DA9062AA_IRQ_MASK_A 0x00A | ||
37 | #define DA9062AA_IRQ_MASK_B 0x00B | ||
38 | #define DA9062AA_IRQ_MASK_C 0x00C | ||
39 | #define DA9062AA_CONTROL_A 0x00E | ||
40 | #define DA9062AA_CONTROL_B 0x00F | ||
41 | #define DA9062AA_CONTROL_C 0x010 | ||
42 | #define DA9062AA_CONTROL_D 0x011 | ||
43 | #define DA9062AA_CONTROL_E 0x012 | ||
44 | #define DA9062AA_CONTROL_F 0x013 | ||
45 | #define DA9062AA_PD_DIS 0x014 | ||
46 | #define DA9062AA_GPIO_0_1 0x015 | ||
47 | #define DA9062AA_GPIO_2_3 0x016 | ||
48 | #define DA9062AA_GPIO_4 0x017 | ||
49 | #define DA9062AA_GPIO_WKUP_MODE 0x01C | ||
50 | #define DA9062AA_GPIO_MODE0_4 0x01D | ||
51 | #define DA9062AA_GPIO_OUT0_2 0x01E | ||
52 | #define DA9062AA_GPIO_OUT3_4 0x01F | ||
53 | #define DA9062AA_BUCK2_CONT 0x020 | ||
54 | #define DA9062AA_BUCK1_CONT 0x021 | ||
55 | #define DA9062AA_BUCK4_CONT 0x022 | ||
56 | #define DA9062AA_BUCK3_CONT 0x024 | ||
57 | #define DA9062AA_LDO1_CONT 0x026 | ||
58 | #define DA9062AA_LDO2_CONT 0x027 | ||
59 | #define DA9062AA_LDO3_CONT 0x028 | ||
60 | #define DA9062AA_LDO4_CONT 0x029 | ||
61 | #define DA9062AA_DVC_1 0x032 | ||
62 | #define DA9062AA_COUNT_S 0x040 | ||
63 | #define DA9062AA_COUNT_MI 0x041 | ||
64 | #define DA9062AA_COUNT_H 0x042 | ||
65 | #define DA9062AA_COUNT_D 0x043 | ||
66 | #define DA9062AA_COUNT_MO 0x044 | ||
67 | #define DA9062AA_COUNT_Y 0x045 | ||
68 | #define DA9062AA_ALARM_S 0x046 | ||
69 | #define DA9062AA_ALARM_MI 0x047 | ||
70 | #define DA9062AA_ALARM_H 0x048 | ||
71 | #define DA9062AA_ALARM_D 0x049 | ||
72 | #define DA9062AA_ALARM_MO 0x04A | ||
73 | #define DA9062AA_ALARM_Y 0x04B | ||
74 | #define DA9062AA_SECOND_A 0x04C | ||
75 | #define DA9062AA_SECOND_B 0x04D | ||
76 | #define DA9062AA_SECOND_C 0x04E | ||
77 | #define DA9062AA_SECOND_D 0x04F | ||
78 | #define DA9062AA_SEQ 0x081 | ||
79 | #define DA9062AA_SEQ_TIMER 0x082 | ||
80 | #define DA9062AA_ID_2_1 0x083 | ||
81 | #define DA9062AA_ID_4_3 0x084 | ||
82 | #define DA9062AA_ID_12_11 0x088 | ||
83 | #define DA9062AA_ID_14_13 0x089 | ||
84 | #define DA9062AA_ID_16_15 0x08A | ||
85 | #define DA9062AA_ID_22_21 0x08D | ||
86 | #define DA9062AA_ID_24_23 0x08E | ||
87 | #define DA9062AA_ID_26_25 0x08F | ||
88 | #define DA9062AA_ID_28_27 0x090 | ||
89 | #define DA9062AA_ID_30_29 0x091 | ||
90 | #define DA9062AA_ID_32_31 0x092 | ||
91 | #define DA9062AA_SEQ_A 0x095 | ||
92 | #define DA9062AA_SEQ_B 0x096 | ||
93 | #define DA9062AA_WAIT 0x097 | ||
94 | #define DA9062AA_EN_32K 0x098 | ||
95 | #define DA9062AA_RESET 0x099 | ||
96 | #define DA9062AA_BUCK_ILIM_A 0x09A | ||
97 | #define DA9062AA_BUCK_ILIM_B 0x09B | ||
98 | #define DA9062AA_BUCK_ILIM_C 0x09C | ||
99 | #define DA9062AA_BUCK2_CFG 0x09D | ||
100 | #define DA9062AA_BUCK1_CFG 0x09E | ||
101 | #define DA9062AA_BUCK4_CFG 0x09F | ||
102 | #define DA9062AA_BUCK3_CFG 0x0A0 | ||
103 | #define DA9062AA_VBUCK2_A 0x0A3 | ||
104 | #define DA9062AA_VBUCK1_A 0x0A4 | ||
105 | #define DA9062AA_VBUCK4_A 0x0A5 | ||
106 | #define DA9062AA_VBUCK3_A 0x0A7 | ||
107 | #define DA9062AA_VLDO1_A 0x0A9 | ||
108 | #define DA9062AA_VLDO2_A 0x0AA | ||
109 | #define DA9062AA_VLDO3_A 0x0AB | ||
110 | #define DA9062AA_VLDO4_A 0x0AC | ||
111 | #define DA9062AA_VBUCK2_B 0x0B4 | ||
112 | #define DA9062AA_VBUCK1_B 0x0B5 | ||
113 | #define DA9062AA_VBUCK4_B 0x0B6 | ||
114 | #define DA9062AA_VBUCK3_B 0x0B8 | ||
115 | #define DA9062AA_VLDO1_B 0x0BA | ||
116 | #define DA9062AA_VLDO2_B 0x0BB | ||
117 | #define DA9062AA_VLDO3_B 0x0BC | ||
118 | #define DA9062AA_VLDO4_B 0x0BD | ||
119 | #define DA9062AA_BBAT_CONT 0x0C5 | ||
120 | #define DA9062AA_INTERFACE 0x105 | ||
121 | #define DA9062AA_CONFIG_A 0x106 | ||
122 | #define DA9062AA_CONFIG_B 0x107 | ||
123 | #define DA9062AA_CONFIG_C 0x108 | ||
124 | #define DA9062AA_CONFIG_D 0x109 | ||
125 | #define DA9062AA_CONFIG_E 0x10A | ||
126 | #define DA9062AA_CONFIG_G 0x10C | ||
127 | #define DA9062AA_CONFIG_H 0x10D | ||
128 | #define DA9062AA_CONFIG_I 0x10E | ||
129 | #define DA9062AA_CONFIG_J 0x10F | ||
130 | #define DA9062AA_CONFIG_K 0x110 | ||
131 | #define DA9062AA_CONFIG_M 0x112 | ||
132 | #define DA9062AA_TRIM_CLDR 0x120 | ||
133 | #define DA9062AA_GP_ID_0 0x121 | ||
134 | #define DA9062AA_GP_ID_1 0x122 | ||
135 | #define DA9062AA_GP_ID_2 0x123 | ||
136 | #define DA9062AA_GP_ID_3 0x124 | ||
137 | #define DA9062AA_GP_ID_4 0x125 | ||
138 | #define DA9062AA_GP_ID_5 0x126 | ||
139 | #define DA9062AA_GP_ID_6 0x127 | ||
140 | #define DA9062AA_GP_ID_7 0x128 | ||
141 | #define DA9062AA_GP_ID_8 0x129 | ||
142 | #define DA9062AA_GP_ID_9 0x12A | ||
143 | #define DA9062AA_GP_ID_10 0x12B | ||
144 | #define DA9062AA_GP_ID_11 0x12C | ||
145 | #define DA9062AA_GP_ID_12 0x12D | ||
146 | #define DA9062AA_GP_ID_13 0x12E | ||
147 | #define DA9062AA_GP_ID_14 0x12F | ||
148 | #define DA9062AA_GP_ID_15 0x130 | ||
149 | #define DA9062AA_GP_ID_16 0x131 | ||
150 | #define DA9062AA_GP_ID_17 0x132 | ||
151 | #define DA9062AA_GP_ID_18 0x133 | ||
152 | #define DA9062AA_GP_ID_19 0x134 | ||
153 | #define DA9062AA_DEVICE_ID 0x181 | ||
154 | #define DA9062AA_VARIANT_ID 0x182 | ||
155 | #define DA9062AA_CUSTOMER_ID 0x183 | ||
156 | #define DA9062AA_CONFIG_ID 0x184 | ||
157 | |||
158 | /* | ||
159 | * Bit fields | ||
160 | */ | ||
161 | |||
162 | /* DA9062AA_PAGE_CON = 0x000 */ | ||
163 | #define DA9062AA_PAGE_SHIFT 0 | ||
164 | #define DA9062AA_PAGE_MASK 0x3f | ||
165 | #define DA9062AA_WRITE_MODE_SHIFT 6 | ||
166 | #define DA9062AA_WRITE_MODE_MASK BIT(6) | ||
167 | #define DA9062AA_REVERT_SHIFT 7 | ||
168 | #define DA9062AA_REVERT_MASK BIT(7) | ||
169 | |||
170 | /* DA9062AA_STATUS_A = 0x001 */ | ||
171 | #define DA9062AA_NONKEY_SHIFT 0 | ||
172 | #define DA9062AA_NONKEY_MASK 0x01 | ||
173 | #define DA9062AA_DVC_BUSY_SHIFT 2 | ||
174 | #define DA9062AA_DVC_BUSY_MASK BIT(2) | ||
175 | |||
176 | /* DA9062AA_STATUS_B = 0x002 */ | ||
177 | #define DA9062AA_GPI0_SHIFT 0 | ||
178 | #define DA9062AA_GPI0_MASK 0x01 | ||
179 | #define DA9062AA_GPI1_SHIFT 1 | ||
180 | #define DA9062AA_GPI1_MASK BIT(1) | ||
181 | #define DA9062AA_GPI2_SHIFT 2 | ||
182 | #define DA9062AA_GPI2_MASK BIT(2) | ||
183 | #define DA9062AA_GPI3_SHIFT 3 | ||
184 | #define DA9062AA_GPI3_MASK BIT(3) | ||
185 | #define DA9062AA_GPI4_SHIFT 4 | ||
186 | #define DA9062AA_GPI4_MASK BIT(4) | ||
187 | |||
188 | /* DA9062AA_STATUS_D = 0x004 */ | ||
189 | #define DA9062AA_LDO1_ILIM_SHIFT 0 | ||
190 | #define DA9062AA_LDO1_ILIM_MASK 0x01 | ||
191 | #define DA9062AA_LDO2_ILIM_SHIFT 1 | ||
192 | #define DA9062AA_LDO2_ILIM_MASK BIT(1) | ||
193 | #define DA9062AA_LDO3_ILIM_SHIFT 2 | ||
194 | #define DA9062AA_LDO3_ILIM_MASK BIT(2) | ||
195 | #define DA9062AA_LDO4_ILIM_SHIFT 3 | ||
196 | #define DA9062AA_LDO4_ILIM_MASK BIT(3) | ||
197 | |||
198 | /* DA9062AA_FAULT_LOG = 0x005 */ | ||
199 | #define DA9062AA_TWD_ERROR_SHIFT 0 | ||
200 | #define DA9062AA_TWD_ERROR_MASK 0x01 | ||
201 | #define DA9062AA_POR_SHIFT 1 | ||
202 | #define DA9062AA_POR_MASK BIT(1) | ||
203 | #define DA9062AA_VDD_FAULT_SHIFT 2 | ||
204 | #define DA9062AA_VDD_FAULT_MASK BIT(2) | ||
205 | #define DA9062AA_VDD_START_SHIFT 3 | ||
206 | #define DA9062AA_VDD_START_MASK BIT(3) | ||
207 | #define DA9062AA_TEMP_CRIT_SHIFT 4 | ||
208 | #define DA9062AA_TEMP_CRIT_MASK BIT(4) | ||
209 | #define DA9062AA_KEY_RESET_SHIFT 5 | ||
210 | #define DA9062AA_KEY_RESET_MASK BIT(5) | ||
211 | #define DA9062AA_NSHUTDOWN_SHIFT 6 | ||
212 | #define DA9062AA_NSHUTDOWN_MASK BIT(6) | ||
213 | #define DA9062AA_WAIT_SHUT_SHIFT 7 | ||
214 | #define DA9062AA_WAIT_SHUT_MASK BIT(7) | ||
215 | |||
216 | /* DA9062AA_EVENT_A = 0x006 */ | ||
217 | #define DA9062AA_E_NONKEY_SHIFT 0 | ||
218 | #define DA9062AA_E_NONKEY_MASK 0x01 | ||
219 | #define DA9062AA_E_ALARM_SHIFT 1 | ||
220 | #define DA9062AA_E_ALARM_MASK BIT(1) | ||
221 | #define DA9062AA_E_TICK_SHIFT 2 | ||
222 | #define DA9062AA_E_TICK_MASK BIT(2) | ||
223 | #define DA9062AA_E_WDG_WARN_SHIFT 3 | ||
224 | #define DA9062AA_E_WDG_WARN_MASK BIT(3) | ||
225 | #define DA9062AA_E_SEQ_RDY_SHIFT 4 | ||
226 | #define DA9062AA_E_SEQ_RDY_MASK BIT(4) | ||
227 | #define DA9062AA_EVENTS_B_SHIFT 5 | ||
228 | #define DA9062AA_EVENTS_B_MASK BIT(5) | ||
229 | #define DA9062AA_EVENTS_C_SHIFT 6 | ||
230 | #define DA9062AA_EVENTS_C_MASK BIT(6) | ||
231 | |||
232 | /* DA9062AA_EVENT_B = 0x007 */ | ||
233 | #define DA9062AA_E_TEMP_SHIFT 1 | ||
234 | #define DA9062AA_E_TEMP_MASK BIT(1) | ||
235 | #define DA9062AA_E_LDO_LIM_SHIFT 3 | ||
236 | #define DA9062AA_E_LDO_LIM_MASK BIT(3) | ||
237 | #define DA9062AA_E_DVC_RDY_SHIFT 5 | ||
238 | #define DA9062AA_E_DVC_RDY_MASK BIT(5) | ||
239 | #define DA9062AA_E_VDD_WARN_SHIFT 7 | ||
240 | #define DA9062AA_E_VDD_WARN_MASK BIT(7) | ||
241 | |||
242 | /* DA9062AA_EVENT_C = 0x008 */ | ||
243 | #define DA9062AA_E_GPI0_SHIFT 0 | ||
244 | #define DA9062AA_E_GPI0_MASK 0x01 | ||
245 | #define DA9062AA_E_GPI1_SHIFT 1 | ||
246 | #define DA9062AA_E_GPI1_MASK BIT(1) | ||
247 | #define DA9062AA_E_GPI2_SHIFT 2 | ||
248 | #define DA9062AA_E_GPI2_MASK BIT(2) | ||
249 | #define DA9062AA_E_GPI3_SHIFT 3 | ||
250 | #define DA9062AA_E_GPI3_MASK BIT(3) | ||
251 | #define DA9062AA_E_GPI4_SHIFT 4 | ||
252 | #define DA9062AA_E_GPI4_MASK BIT(4) | ||
253 | |||
254 | /* DA9062AA_IRQ_MASK_A = 0x00A */ | ||
255 | #define DA9062AA_M_NONKEY_SHIFT 0 | ||
256 | #define DA9062AA_M_NONKEY_MASK 0x01 | ||
257 | #define DA9062AA_M_ALARM_SHIFT 1 | ||
258 | #define DA9062AA_M_ALARM_MASK BIT(1) | ||
259 | #define DA9062AA_M_TICK_SHIFT 2 | ||
260 | #define DA9062AA_M_TICK_MASK BIT(2) | ||
261 | #define DA9062AA_M_WDG_WARN_SHIFT 3 | ||
262 | #define DA9062AA_M_WDG_WARN_MASK BIT(3) | ||
263 | #define DA9062AA_M_SEQ_RDY_SHIFT 4 | ||
264 | #define DA9062AA_M_SEQ_RDY_MASK BIT(4) | ||
265 | |||
266 | /* DA9062AA_IRQ_MASK_B = 0x00B */ | ||
267 | #define DA9062AA_M_TEMP_SHIFT 1 | ||
268 | #define DA9062AA_M_TEMP_MASK BIT(1) | ||
269 | #define DA9062AA_M_LDO_LIM_SHIFT 3 | ||
270 | #define DA9062AA_M_LDO_LIM_MASK BIT(3) | ||
271 | #define DA9062AA_M_DVC_RDY_SHIFT 5 | ||
272 | #define DA9062AA_M_DVC_RDY_MASK BIT(5) | ||
273 | #define DA9062AA_M_VDD_WARN_SHIFT 7 | ||
274 | #define DA9062AA_M_VDD_WARN_MASK BIT(7) | ||
275 | |||
276 | /* DA9062AA_IRQ_MASK_C = 0x00C */ | ||
277 | #define DA9062AA_M_GPI0_SHIFT 0 | ||
278 | #define DA9062AA_M_GPI0_MASK 0x01 | ||
279 | #define DA9062AA_M_GPI1_SHIFT 1 | ||
280 | #define DA9062AA_M_GPI1_MASK BIT(1) | ||
281 | #define DA9062AA_M_GPI2_SHIFT 2 | ||
282 | #define DA9062AA_M_GPI2_MASK BIT(2) | ||
283 | #define DA9062AA_M_GPI3_SHIFT 3 | ||
284 | #define DA9062AA_M_GPI3_MASK BIT(3) | ||
285 | #define DA9062AA_M_GPI4_SHIFT 4 | ||
286 | #define DA9062AA_M_GPI4_MASK BIT(4) | ||
287 | |||
288 | /* DA9062AA_CONTROL_A = 0x00E */ | ||
289 | #define DA9062AA_SYSTEM_EN_SHIFT 0 | ||
290 | #define DA9062AA_SYSTEM_EN_MASK 0x01 | ||
291 | #define DA9062AA_POWER_EN_SHIFT 1 | ||
292 | #define DA9062AA_POWER_EN_MASK BIT(1) | ||
293 | #define DA9062AA_POWER1_EN_SHIFT 2 | ||
294 | #define DA9062AA_POWER1_EN_MASK BIT(2) | ||
295 | #define DA9062AA_STANDBY_SHIFT 3 | ||
296 | #define DA9062AA_STANDBY_MASK BIT(3) | ||
297 | #define DA9062AA_M_SYSTEM_EN_SHIFT 4 | ||
298 | #define DA9062AA_M_SYSTEM_EN_MASK BIT(4) | ||
299 | #define DA9062AA_M_POWER_EN_SHIFT 5 | ||
300 | #define DA9062AA_M_POWER_EN_MASK BIT(5) | ||
301 | #define DA9062AA_M_POWER1_EN_SHIFT 6 | ||
302 | #define DA9062AA_M_POWER1_EN_MASK BIT(6) | ||
303 | |||
304 | /* DA9062AA_CONTROL_B = 0x00F */ | ||
305 | #define DA9062AA_WATCHDOG_PD_SHIFT 1 | ||
306 | #define DA9062AA_WATCHDOG_PD_MASK BIT(1) | ||
307 | #define DA9062AA_FREEZE_EN_SHIFT 2 | ||
308 | #define DA9062AA_FREEZE_EN_MASK BIT(2) | ||
309 | #define DA9062AA_NRES_MODE_SHIFT 3 | ||
310 | #define DA9062AA_NRES_MODE_MASK BIT(3) | ||
311 | #define DA9062AA_NONKEY_LOCK_SHIFT 4 | ||
312 | #define DA9062AA_NONKEY_LOCK_MASK BIT(4) | ||
313 | #define DA9062AA_NFREEZE_SHIFT 5 | ||
314 | #define DA9062AA_NFREEZE_MASK (0x03 << 5) | ||
315 | #define DA9062AA_BUCK_SLOWSTART_SHIFT 7 | ||
316 | #define DA9062AA_BUCK_SLOWSTART_MASK BIT(7) | ||
317 | |||
318 | /* DA9062AA_CONTROL_C = 0x010 */ | ||
319 | #define DA9062AA_DEBOUNCING_SHIFT 0 | ||
320 | #define DA9062AA_DEBOUNCING_MASK 0x07 | ||
321 | #define DA9062AA_AUTO_BOOT_SHIFT 3 | ||
322 | #define DA9062AA_AUTO_BOOT_MASK BIT(3) | ||
323 | #define DA9062AA_OTPREAD_EN_SHIFT 4 | ||
324 | #define DA9062AA_OTPREAD_EN_MASK BIT(4) | ||
325 | #define DA9062AA_SLEW_RATE_SHIFT 5 | ||
326 | #define DA9062AA_SLEW_RATE_MASK (0x03 << 5) | ||
327 | #define DA9062AA_DEF_SUPPLY_SHIFT 7 | ||
328 | #define DA9062AA_DEF_SUPPLY_MASK BIT(7) | ||
329 | |||
330 | /* DA9062AA_CONTROL_D = 0x011 */ | ||
331 | #define DA9062AA_TWDSCALE_SHIFT 0 | ||
332 | #define DA9062AA_TWDSCALE_MASK 0x07 | ||
333 | |||
334 | /* DA9062AA_CONTROL_E = 0x012 */ | ||
335 | #define DA9062AA_RTC_MODE_PD_SHIFT 0 | ||
336 | #define DA9062AA_RTC_MODE_PD_MASK 0x01 | ||
337 | #define DA9062AA_RTC_MODE_SD_SHIFT 1 | ||
338 | #define DA9062AA_RTC_MODE_SD_MASK BIT(1) | ||
339 | #define DA9062AA_RTC_EN_SHIFT 2 | ||
340 | #define DA9062AA_RTC_EN_MASK BIT(2) | ||
341 | #define DA9062AA_V_LOCK_SHIFT 7 | ||
342 | #define DA9062AA_V_LOCK_MASK BIT(7) | ||
343 | |||
344 | /* DA9062AA_CONTROL_F = 0x013 */ | ||
345 | #define DA9062AA_WATCHDOG_SHIFT 0 | ||
346 | #define DA9062AA_WATCHDOG_MASK 0x01 | ||
347 | #define DA9062AA_SHUTDOWN_SHIFT 1 | ||
348 | #define DA9062AA_SHUTDOWN_MASK BIT(1) | ||
349 | #define DA9062AA_WAKE_UP_SHIFT 2 | ||
350 | #define DA9062AA_WAKE_UP_MASK BIT(2) | ||
351 | |||
352 | /* DA9062AA_PD_DIS = 0x014 */ | ||
353 | #define DA9062AA_GPI_DIS_SHIFT 0 | ||
354 | #define DA9062AA_GPI_DIS_MASK 0x01 | ||
355 | #define DA9062AA_PMIF_DIS_SHIFT 2 | ||
356 | #define DA9062AA_PMIF_DIS_MASK BIT(2) | ||
357 | #define DA9062AA_CLDR_PAUSE_SHIFT 4 | ||
358 | #define DA9062AA_CLDR_PAUSE_MASK BIT(4) | ||
359 | #define DA9062AA_BBAT_DIS_SHIFT 5 | ||
360 | #define DA9062AA_BBAT_DIS_MASK BIT(5) | ||
361 | #define DA9062AA_OUT32K_PAUSE_SHIFT 6 | ||
362 | #define DA9062AA_OUT32K_PAUSE_MASK BIT(6) | ||
363 | #define DA9062AA_PMCONT_DIS_SHIFT 7 | ||
364 | #define DA9062AA_PMCONT_DIS_MASK BIT(7) | ||
365 | |||
366 | /* DA9062AA_GPIO_0_1 = 0x015 */ | ||
367 | #define DA9062AA_GPIO0_PIN_SHIFT 0 | ||
368 | #define DA9062AA_GPIO0_PIN_MASK 0x03 | ||
369 | #define DA9062AA_GPIO0_TYPE_SHIFT 2 | ||
370 | #define DA9062AA_GPIO0_TYPE_MASK BIT(2) | ||
371 | #define DA9062AA_GPIO0_WEN_SHIFT 3 | ||
372 | #define DA9062AA_GPIO0_WEN_MASK BIT(3) | ||
373 | #define DA9062AA_GPIO1_PIN_SHIFT 4 | ||
374 | #define DA9062AA_GPIO1_PIN_MASK (0x03 << 4) | ||
375 | #define DA9062AA_GPIO1_TYPE_SHIFT 6 | ||
376 | #define DA9062AA_GPIO1_TYPE_MASK BIT(6) | ||
377 | #define DA9062AA_GPIO1_WEN_SHIFT 7 | ||
378 | #define DA9062AA_GPIO1_WEN_MASK BIT(7) | ||
379 | |||
380 | /* DA9062AA_GPIO_2_3 = 0x016 */ | ||
381 | #define DA9062AA_GPIO2_PIN_SHIFT 0 | ||
382 | #define DA9062AA_GPIO2_PIN_MASK 0x03 | ||
383 | #define DA9062AA_GPIO2_TYPE_SHIFT 2 | ||
384 | #define DA9062AA_GPIO2_TYPE_MASK BIT(2) | ||
385 | #define DA9062AA_GPIO2_WEN_SHIFT 3 | ||
386 | #define DA9062AA_GPIO2_WEN_MASK BIT(3) | ||
387 | #define DA9062AA_GPIO3_PIN_SHIFT 4 | ||
388 | #define DA9062AA_GPIO3_PIN_MASK (0x03 << 4) | ||
389 | #define DA9062AA_GPIO3_TYPE_SHIFT 6 | ||
390 | #define DA9062AA_GPIO3_TYPE_MASK BIT(6) | ||
391 | #define DA9062AA_GPIO3_WEN_SHIFT 7 | ||
392 | #define DA9062AA_GPIO3_WEN_MASK BIT(7) | ||
393 | |||
394 | /* DA9062AA_GPIO_4 = 0x017 */ | ||
395 | #define DA9062AA_GPIO4_PIN_SHIFT 0 | ||
396 | #define DA9062AA_GPIO4_PIN_MASK 0x03 | ||
397 | #define DA9062AA_GPIO4_TYPE_SHIFT 2 | ||
398 | #define DA9062AA_GPIO4_TYPE_MASK BIT(2) | ||
399 | #define DA9062AA_GPIO4_WEN_SHIFT 3 | ||
400 | #define DA9062AA_GPIO4_WEN_MASK BIT(3) | ||
401 | |||
402 | /* DA9062AA_GPIO_WKUP_MODE = 0x01C */ | ||
403 | #define DA9062AA_GPIO0_WKUP_MODE_SHIFT 0 | ||
404 | #define DA9062AA_GPIO0_WKUP_MODE_MASK 0x01 | ||
405 | #define DA9062AA_GPIO1_WKUP_MODE_SHIFT 1 | ||
406 | #define DA9062AA_GPIO1_WKUP_MODE_MASK BIT(1) | ||
407 | #define DA9062AA_GPIO2_WKUP_MODE_SHIFT 2 | ||
408 | #define DA9062AA_GPIO2_WKUP_MODE_MASK BIT(2) | ||
409 | #define DA9062AA_GPIO3_WKUP_MODE_SHIFT 3 | ||
410 | #define DA9062AA_GPIO3_WKUP_MODE_MASK BIT(3) | ||
411 | #define DA9062AA_GPIO4_WKUP_MODE_SHIFT 4 | ||
412 | #define DA9062AA_GPIO4_WKUP_MODE_MASK BIT(4) | ||
413 | |||
414 | /* DA9062AA_GPIO_MODE0_4 = 0x01D */ | ||
415 | #define DA9062AA_GPIO0_MODE_SHIFT 0 | ||
416 | #define DA9062AA_GPIO0_MODE_MASK 0x01 | ||
417 | #define DA9062AA_GPIO1_MODE_SHIFT 1 | ||
418 | #define DA9062AA_GPIO1_MODE_MASK BIT(1) | ||
419 | #define DA9062AA_GPIO2_MODE_SHIFT 2 | ||
420 | #define DA9062AA_GPIO2_MODE_MASK BIT(2) | ||
421 | #define DA9062AA_GPIO3_MODE_SHIFT 3 | ||
422 | #define DA9062AA_GPIO3_MODE_MASK BIT(3) | ||
423 | #define DA9062AA_GPIO4_MODE_SHIFT 4 | ||
424 | #define DA9062AA_GPIO4_MODE_MASK BIT(4) | ||
425 | |||
426 | /* DA9062AA_GPIO_OUT0_2 = 0x01E */ | ||
427 | #define DA9062AA_GPIO0_OUT_SHIFT 0 | ||
428 | #define DA9062AA_GPIO0_OUT_MASK 0x07 | ||
429 | #define DA9062AA_GPIO1_OUT_SHIFT 3 | ||
430 | #define DA9062AA_GPIO1_OUT_MASK (0x07 << 3) | ||
431 | #define DA9062AA_GPIO2_OUT_SHIFT 6 | ||
432 | #define DA9062AA_GPIO2_OUT_MASK (0x03 << 6) | ||
433 | |||
434 | /* DA9062AA_GPIO_OUT3_4 = 0x01F */ | ||
435 | #define DA9062AA_GPIO3_OUT_SHIFT 0 | ||
436 | #define DA9062AA_GPIO3_OUT_MASK 0x07 | ||
437 | #define DA9062AA_GPIO4_OUT_SHIFT 3 | ||
438 | #define DA9062AA_GPIO4_OUT_MASK (0x03 << 3) | ||
439 | |||
440 | /* DA9062AA_BUCK2_CONT = 0x020 */ | ||
441 | #define DA9062AA_BUCK2_EN_SHIFT 0 | ||
442 | #define DA9062AA_BUCK2_EN_MASK 0x01 | ||
443 | #define DA9062AA_BUCK2_GPI_SHIFT 1 | ||
444 | #define DA9062AA_BUCK2_GPI_MASK (0x03 << 1) | ||
445 | #define DA9062AA_BUCK2_CONF_SHIFT 3 | ||
446 | #define DA9062AA_BUCK2_CONF_MASK BIT(3) | ||
447 | #define DA9062AA_VBUCK2_GPI_SHIFT 5 | ||
448 | #define DA9062AA_VBUCK2_GPI_MASK (0x03 << 5) | ||
449 | |||
450 | /* DA9062AA_BUCK1_CONT = 0x021 */ | ||
451 | #define DA9062AA_BUCK1_EN_SHIFT 0 | ||
452 | #define DA9062AA_BUCK1_EN_MASK 0x01 | ||
453 | #define DA9062AA_BUCK1_GPI_SHIFT 1 | ||
454 | #define DA9062AA_BUCK1_GPI_MASK (0x03 << 1) | ||
455 | #define DA9062AA_BUCK1_CONF_SHIFT 3 | ||
456 | #define DA9062AA_BUCK1_CONF_MASK BIT(3) | ||
457 | #define DA9062AA_VBUCK1_GPI_SHIFT 5 | ||
458 | #define DA9062AA_VBUCK1_GPI_MASK (0x03 << 5) | ||
459 | |||
460 | /* DA9062AA_BUCK4_CONT = 0x022 */ | ||
461 | #define DA9062AA_BUCK4_EN_SHIFT 0 | ||
462 | #define DA9062AA_BUCK4_EN_MASK 0x01 | ||
463 | #define DA9062AA_BUCK4_GPI_SHIFT 1 | ||
464 | #define DA9062AA_BUCK4_GPI_MASK (0x03 << 1) | ||
465 | #define DA9062AA_BUCK4_CONF_SHIFT 3 | ||
466 | #define DA9062AA_BUCK4_CONF_MASK BIT(3) | ||
467 | #define DA9062AA_VBUCK4_GPI_SHIFT 5 | ||
468 | #define DA9062AA_VBUCK4_GPI_MASK (0x03 << 5) | ||
469 | |||
470 | /* DA9062AA_BUCK3_CONT = 0x024 */ | ||
471 | #define DA9062AA_BUCK3_EN_SHIFT 0 | ||
472 | #define DA9062AA_BUCK3_EN_MASK 0x01 | ||
473 | #define DA9062AA_BUCK3_GPI_SHIFT 1 | ||
474 | #define DA9062AA_BUCK3_GPI_MASK (0x03 << 1) | ||
475 | #define DA9062AA_BUCK3_CONF_SHIFT 3 | ||
476 | #define DA9062AA_BUCK3_CONF_MASK BIT(3) | ||
477 | #define DA9062AA_VBUCK3_GPI_SHIFT 5 | ||
478 | #define DA9062AA_VBUCK3_GPI_MASK (0x03 << 5) | ||
479 | |||
480 | /* DA9062AA_LDO1_CONT = 0x026 */ | ||
481 | #define DA9062AA_LDO1_EN_SHIFT 0 | ||
482 | #define DA9062AA_LDO1_EN_MASK 0x01 | ||
483 | #define DA9062AA_LDO1_GPI_SHIFT 1 | ||
484 | #define DA9062AA_LDO1_GPI_MASK (0x03 << 1) | ||
485 | #define DA9062AA_LDO1_PD_DIS_SHIFT 3 | ||
486 | #define DA9062AA_LDO1_PD_DIS_MASK BIT(3) | ||
487 | #define DA9062AA_VLDO1_GPI_SHIFT 5 | ||
488 | #define DA9062AA_VLDO1_GPI_MASK (0x03 << 5) | ||
489 | #define DA9062AA_LDO1_CONF_SHIFT 7 | ||
490 | #define DA9062AA_LDO1_CONF_MASK BIT(7) | ||
491 | |||
492 | /* DA9062AA_LDO2_CONT = 0x027 */ | ||
493 | #define DA9062AA_LDO2_EN_SHIFT 0 | ||
494 | #define DA9062AA_LDO2_EN_MASK 0x01 | ||
495 | #define DA9062AA_LDO2_GPI_SHIFT 1 | ||
496 | #define DA9062AA_LDO2_GPI_MASK (0x03 << 1) | ||
497 | #define DA9062AA_LDO2_PD_DIS_SHIFT 3 | ||
498 | #define DA9062AA_LDO2_PD_DIS_MASK BIT(3) | ||
499 | #define DA9062AA_VLDO2_GPI_SHIFT 5 | ||
500 | #define DA9062AA_VLDO2_GPI_MASK (0x03 << 5) | ||
501 | #define DA9062AA_LDO2_CONF_SHIFT 7 | ||
502 | #define DA9062AA_LDO2_CONF_MASK BIT(7) | ||
503 | |||
504 | /* DA9062AA_LDO3_CONT = 0x028 */ | ||
505 | #define DA9062AA_LDO3_EN_SHIFT 0 | ||
506 | #define DA9062AA_LDO3_EN_MASK 0x01 | ||
507 | #define DA9062AA_LDO3_GPI_SHIFT 1 | ||
508 | #define DA9062AA_LDO3_GPI_MASK (0x03 << 1) | ||
509 | #define DA9062AA_LDO3_PD_DIS_SHIFT 3 | ||
510 | #define DA9062AA_LDO3_PD_DIS_MASK BIT(3) | ||
511 | #define DA9062AA_VLDO3_GPI_SHIFT 5 | ||
512 | #define DA9062AA_VLDO3_GPI_MASK (0x03 << 5) | ||
513 | #define DA9062AA_LDO3_CONF_SHIFT 7 | ||
514 | #define DA9062AA_LDO3_CONF_MASK BIT(7) | ||
515 | |||
516 | /* DA9062AA_LDO4_CONT = 0x029 */ | ||
517 | #define DA9062AA_LDO4_EN_SHIFT 0 | ||
518 | #define DA9062AA_LDO4_EN_MASK 0x01 | ||
519 | #define DA9062AA_LDO4_GPI_SHIFT 1 | ||
520 | #define DA9062AA_LDO4_GPI_MASK (0x03 << 1) | ||
521 | #define DA9062AA_LDO4_PD_DIS_SHIFT 3 | ||
522 | #define DA9062AA_LDO4_PD_DIS_MASK BIT(3) | ||
523 | #define DA9062AA_VLDO4_GPI_SHIFT 5 | ||
524 | #define DA9062AA_VLDO4_GPI_MASK (0x03 << 5) | ||
525 | #define DA9062AA_LDO4_CONF_SHIFT 7 | ||
526 | #define DA9062AA_LDO4_CONF_MASK BIT(7) | ||
527 | |||
528 | /* DA9062AA_DVC_1 = 0x032 */ | ||
529 | #define DA9062AA_VBUCK1_SEL_SHIFT 0 | ||
530 | #define DA9062AA_VBUCK1_SEL_MASK 0x01 | ||
531 | #define DA9062AA_VBUCK2_SEL_SHIFT 1 | ||
532 | #define DA9062AA_VBUCK2_SEL_MASK BIT(1) | ||
533 | #define DA9062AA_VBUCK4_SEL_SHIFT 2 | ||
534 | #define DA9062AA_VBUCK4_SEL_MASK BIT(2) | ||
535 | #define DA9062AA_VBUCK3_SEL_SHIFT 3 | ||
536 | #define DA9062AA_VBUCK3_SEL_MASK BIT(3) | ||
537 | #define DA9062AA_VLDO1_SEL_SHIFT 4 | ||
538 | #define DA9062AA_VLDO1_SEL_MASK BIT(4) | ||
539 | #define DA9062AA_VLDO2_SEL_SHIFT 5 | ||
540 | #define DA9062AA_VLDO2_SEL_MASK BIT(5) | ||
541 | #define DA9062AA_VLDO3_SEL_SHIFT 6 | ||
542 | #define DA9062AA_VLDO3_SEL_MASK BIT(6) | ||
543 | #define DA9062AA_VLDO4_SEL_SHIFT 7 | ||
544 | #define DA9062AA_VLDO4_SEL_MASK BIT(7) | ||
545 | |||
546 | /* DA9062AA_COUNT_S = 0x040 */ | ||
547 | #define DA9062AA_COUNT_SEC_SHIFT 0 | ||
548 | #define DA9062AA_COUNT_SEC_MASK 0x3f | ||
549 | #define DA9062AA_RTC_READ_SHIFT 7 | ||
550 | #define DA9062AA_RTC_READ_MASK BIT(7) | ||
551 | |||
552 | /* DA9062AA_COUNT_MI = 0x041 */ | ||
553 | #define DA9062AA_COUNT_MIN_SHIFT 0 | ||
554 | #define DA9062AA_COUNT_MIN_MASK 0x3f | ||
555 | |||
556 | /* DA9062AA_COUNT_H = 0x042 */ | ||
557 | #define DA9062AA_COUNT_HOUR_SHIFT 0 | ||
558 | #define DA9062AA_COUNT_HOUR_MASK 0x1f | ||
559 | |||
560 | /* DA9062AA_COUNT_D = 0x043 */ | ||
561 | #define DA9062AA_COUNT_DAY_SHIFT 0 | ||
562 | #define DA9062AA_COUNT_DAY_MASK 0x1f | ||
563 | |||
564 | /* DA9062AA_COUNT_MO = 0x044 */ | ||
565 | #define DA9062AA_COUNT_MONTH_SHIFT 0 | ||
566 | #define DA9062AA_COUNT_MONTH_MASK 0x0f | ||
567 | |||
568 | /* DA9062AA_COUNT_Y = 0x045 */ | ||
569 | #define DA9062AA_COUNT_YEAR_SHIFT 0 | ||
570 | #define DA9062AA_COUNT_YEAR_MASK 0x3f | ||
571 | #define DA9062AA_MONITOR_SHIFT 6 | ||
572 | #define DA9062AA_MONITOR_MASK BIT(6) | ||
573 | |||
574 | /* DA9062AA_ALARM_S = 0x046 */ | ||
575 | #define DA9062AA_ALARM_SEC_SHIFT 0 | ||
576 | #define DA9062AA_ALARM_SEC_MASK 0x3f | ||
577 | #define DA9062AA_ALARM_STATUS_SHIFT 6 | ||
578 | #define DA9062AA_ALARM_STATUS_MASK (0x03 << 6) | ||
579 | |||
580 | /* DA9062AA_ALARM_MI = 0x047 */ | ||
581 | #define DA9062AA_ALARM_MIN_SHIFT 0 | ||
582 | #define DA9062AA_ALARM_MIN_MASK 0x3f | ||
583 | |||
584 | /* DA9062AA_ALARM_H = 0x048 */ | ||
585 | #define DA9062AA_ALARM_HOUR_SHIFT 0 | ||
586 | #define DA9062AA_ALARM_HOUR_MASK 0x1f | ||
587 | |||
588 | /* DA9062AA_ALARM_D = 0x049 */ | ||
589 | #define DA9062AA_ALARM_DAY_SHIFT 0 | ||
590 | #define DA9062AA_ALARM_DAY_MASK 0x1f | ||
591 | |||
592 | /* DA9062AA_ALARM_MO = 0x04A */ | ||
593 | #define DA9062AA_ALARM_MONTH_SHIFT 0 | ||
594 | #define DA9062AA_ALARM_MONTH_MASK 0x0f | ||
595 | #define DA9062AA_TICK_TYPE_SHIFT 4 | ||
596 | #define DA9062AA_TICK_TYPE_MASK BIT(4) | ||
597 | #define DA9062AA_TICK_WAKE_SHIFT 5 | ||
598 | #define DA9062AA_TICK_WAKE_MASK BIT(5) | ||
599 | |||
600 | /* DA9062AA_ALARM_Y = 0x04B */ | ||
601 | #define DA9062AA_ALARM_YEAR_SHIFT 0 | ||
602 | #define DA9062AA_ALARM_YEAR_MASK 0x3f | ||
603 | #define DA9062AA_ALARM_ON_SHIFT 6 | ||
604 | #define DA9062AA_ALARM_ON_MASK BIT(6) | ||
605 | #define DA9062AA_TICK_ON_SHIFT 7 | ||
606 | #define DA9062AA_TICK_ON_MASK BIT(7) | ||
607 | |||
608 | /* DA9062AA_SECOND_A = 0x04C */ | ||
609 | #define DA9062AA_SECONDS_A_SHIFT 0 | ||
610 | #define DA9062AA_SECONDS_A_MASK 0xff | ||
611 | |||
612 | /* DA9062AA_SECOND_B = 0x04D */ | ||
613 | #define DA9062AA_SECONDS_B_SHIFT 0 | ||
614 | #define DA9062AA_SECONDS_B_MASK 0xff | ||
615 | |||
616 | /* DA9062AA_SECOND_C = 0x04E */ | ||
617 | #define DA9062AA_SECONDS_C_SHIFT 0 | ||
618 | #define DA9062AA_SECONDS_C_MASK 0xff | ||
619 | |||
620 | /* DA9062AA_SECOND_D = 0x04F */ | ||
621 | #define DA9062AA_SECONDS_D_SHIFT 0 | ||
622 | #define DA9062AA_SECONDS_D_MASK 0xff | ||
623 | |||
624 | /* DA9062AA_SEQ = 0x081 */ | ||
625 | #define DA9062AA_SEQ_POINTER_SHIFT 0 | ||
626 | #define DA9062AA_SEQ_POINTER_MASK 0x0f | ||
627 | #define DA9062AA_NXT_SEQ_START_SHIFT 4 | ||
628 | #define DA9062AA_NXT_SEQ_START_MASK (0x0f << 4) | ||
629 | |||
630 | /* DA9062AA_SEQ_TIMER = 0x082 */ | ||
631 | #define DA9062AA_SEQ_TIME_SHIFT 0 | ||
632 | #define DA9062AA_SEQ_TIME_MASK 0x0f | ||
633 | #define DA9062AA_SEQ_DUMMY_SHIFT 4 | ||
634 | #define DA9062AA_SEQ_DUMMY_MASK (0x0f << 4) | ||
635 | |||
636 | /* DA9062AA_ID_2_1 = 0x083 */ | ||
637 | #define DA9062AA_LDO1_STEP_SHIFT 0 | ||
638 | #define DA9062AA_LDO1_STEP_MASK 0x0f | ||
639 | #define DA9062AA_LDO2_STEP_SHIFT 4 | ||
640 | #define DA9062AA_LDO2_STEP_MASK (0x0f << 4) | ||
641 | |||
642 | /* DA9062AA_ID_4_3 = 0x084 */ | ||
643 | #define DA9062AA_LDO3_STEP_SHIFT 0 | ||
644 | #define DA9062AA_LDO3_STEP_MASK 0x0f | ||
645 | #define DA9062AA_LDO4_STEP_SHIFT 4 | ||
646 | #define DA9062AA_LDO4_STEP_MASK (0x0f << 4) | ||
647 | |||
648 | /* DA9062AA_ID_12_11 = 0x088 */ | ||
649 | #define DA9062AA_PD_DIS_STEP_SHIFT 4 | ||
650 | #define DA9062AA_PD_DIS_STEP_MASK (0x0f << 4) | ||
651 | |||
652 | /* DA9062AA_ID_14_13 = 0x089 */ | ||
653 | #define DA9062AA_BUCK1_STEP_SHIFT 0 | ||
654 | #define DA9062AA_BUCK1_STEP_MASK 0x0f | ||
655 | #define DA9062AA_BUCK2_STEP_SHIFT 4 | ||
656 | #define DA9062AA_BUCK2_STEP_MASK (0x0f << 4) | ||
657 | |||
658 | /* DA9062AA_ID_16_15 = 0x08A */ | ||
659 | #define DA9062AA_BUCK4_STEP_SHIFT 0 | ||
660 | #define DA9062AA_BUCK4_STEP_MASK 0x0f | ||
661 | #define DA9062AA_BUCK3_STEP_SHIFT 4 | ||
662 | #define DA9062AA_BUCK3_STEP_MASK (0x0f << 4) | ||
663 | |||
664 | /* DA9062AA_ID_22_21 = 0x08D */ | ||
665 | #define DA9062AA_GP_RISE1_STEP_SHIFT 0 | ||
666 | #define DA9062AA_GP_RISE1_STEP_MASK 0x0f | ||
667 | #define DA9062AA_GP_FALL1_STEP_SHIFT 4 | ||
668 | #define DA9062AA_GP_FALL1_STEP_MASK (0x0f << 4) | ||
669 | |||
670 | /* DA9062AA_ID_24_23 = 0x08E */ | ||
671 | #define DA9062AA_GP_RISE2_STEP_SHIFT 0 | ||
672 | #define DA9062AA_GP_RISE2_STEP_MASK 0x0f | ||
673 | #define DA9062AA_GP_FALL2_STEP_SHIFT 4 | ||
674 | #define DA9062AA_GP_FALL2_STEP_MASK (0x0f << 4) | ||
675 | |||
676 | /* DA9062AA_ID_26_25 = 0x08F */ | ||
677 | #define DA9062AA_GP_RISE3_STEP_SHIFT 0 | ||
678 | #define DA9062AA_GP_RISE3_STEP_MASK 0x0f | ||
679 | #define DA9062AA_GP_FALL3_STEP_SHIFT 4 | ||
680 | #define DA9062AA_GP_FALL3_STEP_MASK (0x0f << 4) | ||
681 | |||
682 | /* DA9062AA_ID_28_27 = 0x090 */ | ||
683 | #define DA9062AA_GP_RISE4_STEP_SHIFT 0 | ||
684 | #define DA9062AA_GP_RISE4_STEP_MASK 0x0f | ||
685 | #define DA9062AA_GP_FALL4_STEP_SHIFT 4 | ||
686 | #define DA9062AA_GP_FALL4_STEP_MASK (0x0f << 4) | ||
687 | |||
688 | /* DA9062AA_ID_30_29 = 0x091 */ | ||
689 | #define DA9062AA_GP_RISE5_STEP_SHIFT 0 | ||
690 | #define DA9062AA_GP_RISE5_STEP_MASK 0x0f | ||
691 | #define DA9062AA_GP_FALL5_STEP_SHIFT 4 | ||
692 | #define DA9062AA_GP_FALL5_STEP_MASK (0x0f << 4) | ||
693 | |||
694 | /* DA9062AA_ID_32_31 = 0x092 */ | ||
695 | #define DA9062AA_WAIT_STEP_SHIFT 0 | ||
696 | #define DA9062AA_WAIT_STEP_MASK 0x0f | ||
697 | #define DA9062AA_EN32K_STEP_SHIFT 4 | ||
698 | #define DA9062AA_EN32K_STEP_MASK (0x0f << 4) | ||
699 | |||
700 | /* DA9062AA_SEQ_A = 0x095 */ | ||
701 | #define DA9062AA_SYSTEM_END_SHIFT 0 | ||
702 | #define DA9062AA_SYSTEM_END_MASK 0x0f | ||
703 | #define DA9062AA_POWER_END_SHIFT 4 | ||
704 | #define DA9062AA_POWER_END_MASK (0x0f << 4) | ||
705 | |||
706 | /* DA9062AA_SEQ_B = 0x096 */ | ||
707 | #define DA9062AA_MAX_COUNT_SHIFT 0 | ||
708 | #define DA9062AA_MAX_COUNT_MASK 0x0f | ||
709 | #define DA9062AA_PART_DOWN_SHIFT 4 | ||
710 | #define DA9062AA_PART_DOWN_MASK (0x0f << 4) | ||
711 | |||
712 | /* DA9062AA_WAIT = 0x097 */ | ||
713 | #define DA9062AA_WAIT_TIME_SHIFT 0 | ||
714 | #define DA9062AA_WAIT_TIME_MASK 0x0f | ||
715 | #define DA9062AA_WAIT_MODE_SHIFT 4 | ||
716 | #define DA9062AA_WAIT_MODE_MASK BIT(4) | ||
717 | #define DA9062AA_TIME_OUT_SHIFT 5 | ||
718 | #define DA9062AA_TIME_OUT_MASK BIT(5) | ||
719 | #define DA9062AA_WAIT_DIR_SHIFT 6 | ||
720 | #define DA9062AA_WAIT_DIR_MASK (0x03 << 6) | ||
721 | |||
722 | /* DA9062AA_EN_32K = 0x098 */ | ||
723 | #define DA9062AA_STABILISATION_TIME_SHIFT 0 | ||
724 | #define DA9062AA_STABILISATION_TIME_MASK 0x07 | ||
725 | #define DA9062AA_CRYSTAL_SHIFT 3 | ||
726 | #define DA9062AA_CRYSTAL_MASK BIT(3) | ||
727 | #define DA9062AA_DELAY_MODE_SHIFT 4 | ||
728 | #define DA9062AA_DELAY_MODE_MASK BIT(4) | ||
729 | #define DA9062AA_OUT_CLOCK_SHIFT 5 | ||
730 | #define DA9062AA_OUT_CLOCK_MASK BIT(5) | ||
731 | #define DA9062AA_RTC_CLOCK_SHIFT 6 | ||
732 | #define DA9062AA_RTC_CLOCK_MASK BIT(6) | ||
733 | #define DA9062AA_EN_32KOUT_SHIFT 7 | ||
734 | #define DA9062AA_EN_32KOUT_MASK BIT(7) | ||
735 | |||
736 | /* DA9062AA_RESET = 0x099 */ | ||
737 | #define DA9062AA_RESET_TIMER_SHIFT 0 | ||
738 | #define DA9062AA_RESET_TIMER_MASK 0x3f | ||
739 | #define DA9062AA_RESET_EVENT_SHIFT 6 | ||
740 | #define DA9062AA_RESET_EVENT_MASK (0x03 << 6) | ||
741 | |||
742 | /* DA9062AA_BUCK_ILIM_A = 0x09A */ | ||
743 | #define DA9062AA_BUCK3_ILIM_SHIFT 0 | ||
744 | #define DA9062AA_BUCK3_ILIM_MASK 0x0f | ||
745 | |||
746 | /* DA9062AA_BUCK_ILIM_B = 0x09B */ | ||
747 | #define DA9062AA_BUCK4_ILIM_SHIFT 0 | ||
748 | #define DA9062AA_BUCK4_ILIM_MASK 0x0f | ||
749 | |||
750 | /* DA9062AA_BUCK_ILIM_C = 0x09C */ | ||
751 | #define DA9062AA_BUCK1_ILIM_SHIFT 0 | ||
752 | #define DA9062AA_BUCK1_ILIM_MASK 0x0f | ||
753 | #define DA9062AA_BUCK2_ILIM_SHIFT 4 | ||
754 | #define DA9062AA_BUCK2_ILIM_MASK (0x0f << 4) | ||
755 | |||
756 | /* DA9062AA_BUCK2_CFG = 0x09D */ | ||
757 | #define DA9062AA_BUCK2_PD_DIS_SHIFT 5 | ||
758 | #define DA9062AA_BUCK2_PD_DIS_MASK BIT(5) | ||
759 | #define DA9062AA_BUCK2_MODE_SHIFT 6 | ||
760 | #define DA9062AA_BUCK2_MODE_MASK (0x03 << 6) | ||
761 | |||
762 | /* DA9062AA_BUCK1_CFG = 0x09E */ | ||
763 | #define DA9062AA_BUCK1_PD_DIS_SHIFT 5 | ||
764 | #define DA9062AA_BUCK1_PD_DIS_MASK BIT(5) | ||
765 | #define DA9062AA_BUCK1_MODE_SHIFT 6 | ||
766 | #define DA9062AA_BUCK1_MODE_MASK (0x03 << 6) | ||
767 | |||
768 | /* DA9062AA_BUCK4_CFG = 0x09F */ | ||
769 | #define DA9062AA_BUCK4_VTTR_EN_SHIFT 3 | ||
770 | #define DA9062AA_BUCK4_VTTR_EN_MASK BIT(3) | ||
771 | #define DA9062AA_BUCK4_VTT_EN_SHIFT 4 | ||
772 | #define DA9062AA_BUCK4_VTT_EN_MASK BIT(4) | ||
773 | #define DA9062AA_BUCK4_PD_DIS_SHIFT 5 | ||
774 | #define DA9062AA_BUCK4_PD_DIS_MASK BIT(5) | ||
775 | #define DA9062AA_BUCK4_MODE_SHIFT 6 | ||
776 | #define DA9062AA_BUCK4_MODE_MASK (0x03 << 6) | ||
777 | |||
778 | /* DA9062AA_BUCK3_CFG = 0x0A0 */ | ||
779 | #define DA9062AA_BUCK3_PD_DIS_SHIFT 5 | ||
780 | #define DA9062AA_BUCK3_PD_DIS_MASK BIT(5) | ||
781 | #define DA9062AA_BUCK3_MODE_SHIFT 6 | ||
782 | #define DA9062AA_BUCK3_MODE_MASK (0x03 << 6) | ||
783 | |||
784 | /* DA9062AA_VBUCK2_A = 0x0A3 */ | ||
785 | #define DA9062AA_VBUCK2_A_SHIFT 0 | ||
786 | #define DA9062AA_VBUCK2_A_MASK 0x7f | ||
787 | #define DA9062AA_BUCK2_SL_A_SHIFT 7 | ||
788 | #define DA9062AA_BUCK2_SL_A_MASK BIT(7) | ||
789 | |||
790 | /* DA9062AA_VBUCK1_A = 0x0A4 */ | ||
791 | #define DA9062AA_VBUCK1_A_SHIFT 0 | ||
792 | #define DA9062AA_VBUCK1_A_MASK 0x7f | ||
793 | #define DA9062AA_BUCK1_SL_A_SHIFT 7 | ||
794 | #define DA9062AA_BUCK1_SL_A_MASK BIT(7) | ||
795 | |||
796 | /* DA9062AA_VBUCK4_A = 0x0A5 */ | ||
797 | #define DA9062AA_VBUCK4_A_SHIFT 0 | ||
798 | #define DA9062AA_VBUCK4_A_MASK 0x7f | ||
799 | #define DA9062AA_BUCK4_SL_A_SHIFT 7 | ||
800 | #define DA9062AA_BUCK4_SL_A_MASK BIT(7) | ||
801 | |||
802 | /* DA9062AA_VBUCK3_A = 0x0A7 */ | ||
803 | #define DA9062AA_VBUCK3_A_SHIFT 0 | ||
804 | #define DA9062AA_VBUCK3_A_MASK 0x7f | ||
805 | #define DA9062AA_BUCK3_SL_A_SHIFT 7 | ||
806 | #define DA9062AA_BUCK3_SL_A_MASK BIT(7) | ||
807 | |||
808 | /* DA9062AA_VLDO1_A = 0x0A9 */ | ||
809 | #define DA9062AA_VLDO1_A_SHIFT 0 | ||
810 | #define DA9062AA_VLDO1_A_MASK 0x3f | ||
811 | #define DA9062AA_LDO1_SL_A_SHIFT 7 | ||
812 | #define DA9062AA_LDO1_SL_A_MASK BIT(7) | ||
813 | |||
814 | /* DA9062AA_VLDO2_A = 0x0AA */ | ||
815 | #define DA9062AA_VLDO2_A_SHIFT 0 | ||
816 | #define DA9062AA_VLDO2_A_MASK 0x3f | ||
817 | #define DA9062AA_LDO2_SL_A_SHIFT 7 | ||
818 | #define DA9062AA_LDO2_SL_A_MASK BIT(7) | ||
819 | |||
820 | /* DA9062AA_VLDO3_A = 0x0AB */ | ||
821 | #define DA9062AA_VLDO3_A_SHIFT 0 | ||
822 | #define DA9062AA_VLDO3_A_MASK 0x3f | ||
823 | #define DA9062AA_LDO3_SL_A_SHIFT 7 | ||
824 | #define DA9062AA_LDO3_SL_A_MASK BIT(7) | ||
825 | |||
826 | /* DA9062AA_VLDO4_A = 0x0AC */ | ||
827 | #define DA9062AA_VLDO4_A_SHIFT 0 | ||
828 | #define DA9062AA_VLDO4_A_MASK 0x3f | ||
829 | #define DA9062AA_LDO4_SL_A_SHIFT 7 | ||
830 | #define DA9062AA_LDO4_SL_A_MASK BIT(7) | ||
831 | |||
832 | /* DA9062AA_VBUCK2_B = 0x0B4 */ | ||
833 | #define DA9062AA_VBUCK2_B_SHIFT 0 | ||
834 | #define DA9062AA_VBUCK2_B_MASK 0x7f | ||
835 | #define DA9062AA_BUCK2_SL_B_SHIFT 7 | ||
836 | #define DA9062AA_BUCK2_SL_B_MASK BIT(7) | ||
837 | |||
838 | /* DA9062AA_VBUCK1_B = 0x0B5 */ | ||
839 | #define DA9062AA_VBUCK1_B_SHIFT 0 | ||
840 | #define DA9062AA_VBUCK1_B_MASK 0x7f | ||
841 | #define DA9062AA_BUCK1_SL_B_SHIFT 7 | ||
842 | #define DA9062AA_BUCK1_SL_B_MASK BIT(7) | ||
843 | |||
844 | /* DA9062AA_VBUCK4_B = 0x0B6 */ | ||
845 | #define DA9062AA_VBUCK4_B_SHIFT 0 | ||
846 | #define DA9062AA_VBUCK4_B_MASK 0x7f | ||
847 | #define DA9062AA_BUCK4_SL_B_SHIFT 7 | ||
848 | #define DA9062AA_BUCK4_SL_B_MASK BIT(7) | ||
849 | |||
850 | /* DA9062AA_VBUCK3_B = 0x0B8 */ | ||
851 | #define DA9062AA_VBUCK3_B_SHIFT 0 | ||
852 | #define DA9062AA_VBUCK3_B_MASK 0x7f | ||
853 | #define DA9062AA_BUCK3_SL_B_SHIFT 7 | ||
854 | #define DA9062AA_BUCK3_SL_B_MASK BIT(7) | ||
855 | |||
856 | /* DA9062AA_VLDO1_B = 0x0BA */ | ||
857 | #define DA9062AA_VLDO1_B_SHIFT 0 | ||
858 | #define DA9062AA_VLDO1_B_MASK 0x3f | ||
859 | #define DA9062AA_LDO1_SL_B_SHIFT 7 | ||
860 | #define DA9062AA_LDO1_SL_B_MASK BIT(7) | ||
861 | |||
862 | /* DA9062AA_VLDO2_B = 0x0BB */ | ||
863 | #define DA9062AA_VLDO2_B_SHIFT 0 | ||
864 | #define DA9062AA_VLDO2_B_MASK 0x3f | ||
865 | #define DA9062AA_LDO2_SL_B_SHIFT 7 | ||
866 | #define DA9062AA_LDO2_SL_B_MASK BIT(7) | ||
867 | |||
868 | /* DA9062AA_VLDO3_B = 0x0BC */ | ||
869 | #define DA9062AA_VLDO3_B_SHIFT 0 | ||
870 | #define DA9062AA_VLDO3_B_MASK 0x3f | ||
871 | #define DA9062AA_LDO3_SL_B_SHIFT 7 | ||
872 | #define DA9062AA_LDO3_SL_B_MASK BIT(7) | ||
873 | |||
874 | /* DA9062AA_VLDO4_B = 0x0BD */ | ||
875 | #define DA9062AA_VLDO4_B_SHIFT 0 | ||
876 | #define DA9062AA_VLDO4_B_MASK 0x3f | ||
877 | #define DA9062AA_LDO4_SL_B_SHIFT 7 | ||
878 | #define DA9062AA_LDO4_SL_B_MASK BIT(7) | ||
879 | |||
880 | /* DA9062AA_BBAT_CONT = 0x0C5 */ | ||
881 | #define DA9062AA_BCHG_VSET_SHIFT 0 | ||
882 | #define DA9062AA_BCHG_VSET_MASK 0x0f | ||
883 | #define DA9062AA_BCHG_ISET_SHIFT 4 | ||
884 | #define DA9062AA_BCHG_ISET_MASK (0x0f << 4) | ||
885 | |||
886 | /* DA9062AA_INTERFACE = 0x105 */ | ||
887 | #define DA9062AA_IF_BASE_ADDR_SHIFT 4 | ||
888 | #define DA9062AA_IF_BASE_ADDR_MASK (0x0f << 4) | ||
889 | |||
890 | /* DA9062AA_CONFIG_A = 0x106 */ | ||
891 | #define DA9062AA_PM_I_V_SHIFT 0 | ||
892 | #define DA9062AA_PM_I_V_MASK 0x01 | ||
893 | #define DA9062AA_PM_O_TYPE_SHIFT 2 | ||
894 | #define DA9062AA_PM_O_TYPE_MASK BIT(2) | ||
895 | #define DA9062AA_IRQ_TYPE_SHIFT 3 | ||
896 | #define DA9062AA_IRQ_TYPE_MASK BIT(3) | ||
897 | #define DA9062AA_PM_IF_V_SHIFT 4 | ||
898 | #define DA9062AA_PM_IF_V_MASK BIT(4) | ||
899 | #define DA9062AA_PM_IF_FMP_SHIFT 5 | ||
900 | #define DA9062AA_PM_IF_FMP_MASK BIT(5) | ||
901 | #define DA9062AA_PM_IF_HSM_SHIFT 6 | ||
902 | #define DA9062AA_PM_IF_HSM_MASK BIT(6) | ||
903 | |||
904 | /* DA9062AA_CONFIG_B = 0x107 */ | ||
905 | #define DA9062AA_VDD_FAULT_ADJ_SHIFT 0 | ||
906 | #define DA9062AA_VDD_FAULT_ADJ_MASK 0x0f | ||
907 | #define DA9062AA_VDD_HYST_ADJ_SHIFT 4 | ||
908 | #define DA9062AA_VDD_HYST_ADJ_MASK (0x07 << 4) | ||
909 | |||
910 | /* DA9062AA_CONFIG_C = 0x108 */ | ||
911 | #define DA9062AA_BUCK_ACTV_DISCHRG_SHIFT 2 | ||
912 | #define DA9062AA_BUCK_ACTV_DISCHRG_MASK BIT(2) | ||
913 | #define DA9062AA_BUCK1_CLK_INV_SHIFT 3 | ||
914 | #define DA9062AA_BUCK1_CLK_INV_MASK BIT(3) | ||
915 | #define DA9062AA_BUCK4_CLK_INV_SHIFT 4 | ||
916 | #define DA9062AA_BUCK4_CLK_INV_MASK BIT(4) | ||
917 | #define DA9062AA_BUCK3_CLK_INV_SHIFT 6 | ||
918 | #define DA9062AA_BUCK3_CLK_INV_MASK BIT(6) | ||
919 | |||
920 | /* DA9062AA_CONFIG_D = 0x109 */ | ||
921 | #define DA9062AA_GPI_V_SHIFT 0 | ||
922 | #define DA9062AA_GPI_V_MASK 0x01 | ||
923 | #define DA9062AA_NIRQ_MODE_SHIFT 1 | ||
924 | #define DA9062AA_NIRQ_MODE_MASK BIT(1) | ||
925 | #define DA9062AA_SYSTEM_EN_RD_SHIFT 2 | ||
926 | #define DA9062AA_SYSTEM_EN_RD_MASK BIT(2) | ||
927 | #define DA9062AA_FORCE_RESET_SHIFT 5 | ||
928 | #define DA9062AA_FORCE_RESET_MASK BIT(5) | ||
929 | |||
930 | /* DA9062AA_CONFIG_E = 0x10A */ | ||
931 | #define DA9062AA_BUCK1_AUTO_SHIFT 0 | ||
932 | #define DA9062AA_BUCK1_AUTO_MASK 0x01 | ||
933 | #define DA9062AA_BUCK2_AUTO_SHIFT 1 | ||
934 | #define DA9062AA_BUCK2_AUTO_MASK BIT(1) | ||
935 | #define DA9062AA_BUCK4_AUTO_SHIFT 2 | ||
936 | #define DA9062AA_BUCK4_AUTO_MASK BIT(2) | ||
937 | #define DA9062AA_BUCK3_AUTO_SHIFT 4 | ||
938 | #define DA9062AA_BUCK3_AUTO_MASK BIT(4) | ||
939 | |||
940 | /* DA9062AA_CONFIG_G = 0x10C */ | ||
941 | #define DA9062AA_LDO1_AUTO_SHIFT 0 | ||
942 | #define DA9062AA_LDO1_AUTO_MASK 0x01 | ||
943 | #define DA9062AA_LDO2_AUTO_SHIFT 1 | ||
944 | #define DA9062AA_LDO2_AUTO_MASK BIT(1) | ||
945 | #define DA9062AA_LDO3_AUTO_SHIFT 2 | ||
946 | #define DA9062AA_LDO3_AUTO_MASK BIT(2) | ||
947 | #define DA9062AA_LDO4_AUTO_SHIFT 3 | ||
948 | #define DA9062AA_LDO4_AUTO_MASK BIT(3) | ||
949 | |||
950 | /* DA9062AA_CONFIG_H = 0x10D */ | ||
951 | #define DA9062AA_BUCK1_2_MERGE_SHIFT 3 | ||
952 | #define DA9062AA_BUCK1_2_MERGE_MASK BIT(3) | ||
953 | #define DA9062AA_BUCK2_OD_SHIFT 5 | ||
954 | #define DA9062AA_BUCK2_OD_MASK BIT(5) | ||
955 | #define DA9062AA_BUCK1_OD_SHIFT 6 | ||
956 | #define DA9062AA_BUCK1_OD_MASK BIT(6) | ||
957 | |||
958 | /* DA9062AA_CONFIG_I = 0x10E */ | ||
959 | #define DA9062AA_NONKEY_PIN_SHIFT 0 | ||
960 | #define DA9062AA_NONKEY_PIN_MASK 0x03 | ||
961 | #define DA9062AA_nONKEY_SD_SHIFT 2 | ||
962 | #define DA9062AA_nONKEY_SD_MASK BIT(2) | ||
963 | #define DA9062AA_WATCHDOG_SD_SHIFT 3 | ||
964 | #define DA9062AA_WATCHDOG_SD_MASK BIT(3) | ||
965 | #define DA9062AA_KEY_SD_MODE_SHIFT 4 | ||
966 | #define DA9062AA_KEY_SD_MODE_MASK BIT(4) | ||
967 | #define DA9062AA_HOST_SD_MODE_SHIFT 5 | ||
968 | #define DA9062AA_HOST_SD_MODE_MASK BIT(5) | ||
969 | #define DA9062AA_INT_SD_MODE_SHIFT 6 | ||
970 | #define DA9062AA_INT_SD_MODE_MASK BIT(6) | ||
971 | #define DA9062AA_LDO_SD_SHIFT 7 | ||
972 | #define DA9062AA_LDO_SD_MASK BIT(7) | ||
973 | |||
974 | /* DA9062AA_CONFIG_J = 0x10F */ | ||
975 | #define DA9062AA_KEY_DELAY_SHIFT 0 | ||
976 | #define DA9062AA_KEY_DELAY_MASK 0x03 | ||
977 | #define DA9062AA_SHUT_DELAY_SHIFT 2 | ||
978 | #define DA9062AA_SHUT_DELAY_MASK (0x03 << 2) | ||
979 | #define DA9062AA_RESET_DURATION_SHIFT 4 | ||
980 | #define DA9062AA_RESET_DURATION_MASK (0x03 << 4) | ||
981 | #define DA9062AA_TWOWIRE_TO_SHIFT 6 | ||
982 | #define DA9062AA_TWOWIRE_TO_MASK BIT(6) | ||
983 | #define DA9062AA_IF_RESET_SHIFT 7 | ||
984 | #define DA9062AA_IF_RESET_MASK BIT(7) | ||
985 | |||
986 | /* DA9062AA_CONFIG_K = 0x110 */ | ||
987 | #define DA9062AA_GPIO0_PUPD_SHIFT 0 | ||
988 | #define DA9062AA_GPIO0_PUPD_MASK 0x01 | ||
989 | #define DA9062AA_GPIO1_PUPD_SHIFT 1 | ||
990 | #define DA9062AA_GPIO1_PUPD_MASK BIT(1) | ||
991 | #define DA9062AA_GPIO2_PUPD_SHIFT 2 | ||
992 | #define DA9062AA_GPIO2_PUPD_MASK BIT(2) | ||
993 | #define DA9062AA_GPIO3_PUPD_SHIFT 3 | ||
994 | #define DA9062AA_GPIO3_PUPD_MASK BIT(3) | ||
995 | #define DA9062AA_GPIO4_PUPD_SHIFT 4 | ||
996 | #define DA9062AA_GPIO4_PUPD_MASK BIT(4) | ||
997 | |||
998 | /* DA9062AA_CONFIG_M = 0x112 */ | ||
999 | #define DA9062AA_NSHUTDOWN_PU_SHIFT 1 | ||
1000 | #define DA9062AA_NSHUTDOWN_PU_MASK BIT(1) | ||
1001 | #define DA9062AA_WDG_MODE_SHIFT 3 | ||
1002 | #define DA9062AA_WDG_MODE_MASK BIT(3) | ||
1003 | #define DA9062AA_OSC_FRQ_SHIFT 4 | ||
1004 | #define DA9062AA_OSC_FRQ_MASK (0x0f << 4) | ||
1005 | |||
1006 | /* DA9062AA_TRIM_CLDR = 0x120 */ | ||
1007 | #define DA9062AA_TRIM_CLDR_SHIFT 0 | ||
1008 | #define DA9062AA_TRIM_CLDR_MASK 0xff | ||
1009 | |||
1010 | /* DA9062AA_GP_ID_0 = 0x121 */ | ||
1011 | #define DA9062AA_GP_0_SHIFT 0 | ||
1012 | #define DA9062AA_GP_0_MASK 0xff | ||
1013 | |||
1014 | /* DA9062AA_GP_ID_1 = 0x122 */ | ||
1015 | #define DA9062AA_GP_1_SHIFT 0 | ||
1016 | #define DA9062AA_GP_1_MASK 0xff | ||
1017 | |||
1018 | /* DA9062AA_GP_ID_2 = 0x123 */ | ||
1019 | #define DA9062AA_GP_2_SHIFT 0 | ||
1020 | #define DA9062AA_GP_2_MASK 0xff | ||
1021 | |||
1022 | /* DA9062AA_GP_ID_3 = 0x124 */ | ||
1023 | #define DA9062AA_GP_3_SHIFT 0 | ||
1024 | #define DA9062AA_GP_3_MASK 0xff | ||
1025 | |||
1026 | /* DA9062AA_GP_ID_4 = 0x125 */ | ||
1027 | #define DA9062AA_GP_4_SHIFT 0 | ||
1028 | #define DA9062AA_GP_4_MASK 0xff | ||
1029 | |||
1030 | /* DA9062AA_GP_ID_5 = 0x126 */ | ||
1031 | #define DA9062AA_GP_5_SHIFT 0 | ||
1032 | #define DA9062AA_GP_5_MASK 0xff | ||
1033 | |||
1034 | /* DA9062AA_GP_ID_6 = 0x127 */ | ||
1035 | #define DA9062AA_GP_6_SHIFT 0 | ||
1036 | #define DA9062AA_GP_6_MASK 0xff | ||
1037 | |||
1038 | /* DA9062AA_GP_ID_7 = 0x128 */ | ||
1039 | #define DA9062AA_GP_7_SHIFT 0 | ||
1040 | #define DA9062AA_GP_7_MASK 0xff | ||
1041 | |||
1042 | /* DA9062AA_GP_ID_8 = 0x129 */ | ||
1043 | #define DA9062AA_GP_8_SHIFT 0 | ||
1044 | #define DA9062AA_GP_8_MASK 0xff | ||
1045 | |||
1046 | /* DA9062AA_GP_ID_9 = 0x12A */ | ||
1047 | #define DA9062AA_GP_9_SHIFT 0 | ||
1048 | #define DA9062AA_GP_9_MASK 0xff | ||
1049 | |||
1050 | /* DA9062AA_GP_ID_10 = 0x12B */ | ||
1051 | #define DA9062AA_GP_10_SHIFT 0 | ||
1052 | #define DA9062AA_GP_10_MASK 0xff | ||
1053 | |||
1054 | /* DA9062AA_GP_ID_11 = 0x12C */ | ||
1055 | #define DA9062AA_GP_11_SHIFT 0 | ||
1056 | #define DA9062AA_GP_11_MASK 0xff | ||
1057 | |||
1058 | /* DA9062AA_GP_ID_12 = 0x12D */ | ||
1059 | #define DA9062AA_GP_12_SHIFT 0 | ||
1060 | #define DA9062AA_GP_12_MASK 0xff | ||
1061 | |||
1062 | /* DA9062AA_GP_ID_13 = 0x12E */ | ||
1063 | #define DA9062AA_GP_13_SHIFT 0 | ||
1064 | #define DA9062AA_GP_13_MASK 0xff | ||
1065 | |||
1066 | /* DA9062AA_GP_ID_14 = 0x12F */ | ||
1067 | #define DA9062AA_GP_14_SHIFT 0 | ||
1068 | #define DA9062AA_GP_14_MASK 0xff | ||
1069 | |||
1070 | /* DA9062AA_GP_ID_15 = 0x130 */ | ||
1071 | #define DA9062AA_GP_15_SHIFT 0 | ||
1072 | #define DA9062AA_GP_15_MASK 0xff | ||
1073 | |||
1074 | /* DA9062AA_GP_ID_16 = 0x131 */ | ||
1075 | #define DA9062AA_GP_16_SHIFT 0 | ||
1076 | #define DA9062AA_GP_16_MASK 0xff | ||
1077 | |||
1078 | /* DA9062AA_GP_ID_17 = 0x132 */ | ||
1079 | #define DA9062AA_GP_17_SHIFT 0 | ||
1080 | #define DA9062AA_GP_17_MASK 0xff | ||
1081 | |||
1082 | /* DA9062AA_GP_ID_18 = 0x133 */ | ||
1083 | #define DA9062AA_GP_18_SHIFT 0 | ||
1084 | #define DA9062AA_GP_18_MASK 0xff | ||
1085 | |||
1086 | /* DA9062AA_GP_ID_19 = 0x134 */ | ||
1087 | #define DA9062AA_GP_19_SHIFT 0 | ||
1088 | #define DA9062AA_GP_19_MASK 0xff | ||
1089 | |||
1090 | /* DA9062AA_DEVICE_ID = 0x181 */ | ||
1091 | #define DA9062AA_DEV_ID_SHIFT 0 | ||
1092 | #define DA9062AA_DEV_ID_MASK 0xff | ||
1093 | |||
1094 | /* DA9062AA_VARIANT_ID = 0x182 */ | ||
1095 | #define DA9062AA_VRC_SHIFT 0 | ||
1096 | #define DA9062AA_VRC_MASK 0x0f | ||
1097 | #define DA9062AA_MRC_SHIFT 4 | ||
1098 | #define DA9062AA_MRC_MASK (0x0f << 4) | ||
1099 | |||
1100 | /* DA9062AA_CUSTOMER_ID = 0x183 */ | ||
1101 | #define DA9062AA_CUST_ID_SHIFT 0 | ||
1102 | #define DA9062AA_CUST_ID_MASK 0xff | ||
1103 | |||
1104 | /* DA9062AA_CONFIG_ID = 0x184 */ | ||
1105 | #define DA9062AA_CONFIG_REV_SHIFT 0 | ||
1106 | #define DA9062AA_CONFIG_REV_MASK 0xff | ||
1107 | |||
1108 | #endif /* __DA9062_H__ */ | ||
diff --git a/include/linux/mfd/da9063/core.h b/include/linux/mfd/da9063/core.h index 79f4d822ba13..621af82123c6 100644 --- a/include/linux/mfd/da9063/core.h +++ b/include/linux/mfd/da9063/core.h | |||
@@ -51,6 +51,7 @@ enum da9063_irqs { | |||
51 | DA9063_IRQ_COMP_1V2, | 51 | DA9063_IRQ_COMP_1V2, |
52 | DA9063_IRQ_LDO_LIM, | 52 | DA9063_IRQ_LDO_LIM, |
53 | DA9063_IRQ_REG_UVOV, | 53 | DA9063_IRQ_REG_UVOV, |
54 | DA9063_IRQ_DVC_RDY, | ||
54 | DA9063_IRQ_VDD_MON, | 55 | DA9063_IRQ_VDD_MON, |
55 | DA9063_IRQ_WARN, | 56 | DA9063_IRQ_WARN, |
56 | DA9063_IRQ_GPI0, | 57 | DA9063_IRQ_GPI0, |
diff --git a/include/linux/mfd/lpc_ich.h b/include/linux/mfd/lpc_ich.h index 8feac782fa83..2b300b44f994 100644 --- a/include/linux/mfd/lpc_ich.h +++ b/include/linux/mfd/lpc_ich.h | |||
@@ -20,12 +20,6 @@ | |||
20 | #ifndef LPC_ICH_H | 20 | #ifndef LPC_ICH_H |
21 | #define LPC_ICH_H | 21 | #define LPC_ICH_H |
22 | 22 | ||
23 | /* Watchdog resources */ | ||
24 | #define ICH_RES_IO_TCO 0 | ||
25 | #define ICH_RES_IO_SMI 1 | ||
26 | #define ICH_RES_MEM_OFF 2 | ||
27 | #define ICH_RES_MEM_GCS_PMC 0 | ||
28 | |||
29 | /* GPIO resources */ | 23 | /* GPIO resources */ |
30 | #define ICH_RES_GPIO 0 | 24 | #define ICH_RES_GPIO 0 |
31 | #define ICH_RES_GPE0 1 | 25 | #define ICH_RES_GPE0 1 |
diff --git a/include/linux/mfd/mt6397/core.h b/include/linux/mfd/mt6397/core.h index cf5265b0d1c1..45b8e8aa1fbf 100644 --- a/include/linux/mfd/mt6397/core.h +++ b/include/linux/mfd/mt6397/core.h | |||
@@ -57,6 +57,7 @@ struct mt6397_chip { | |||
57 | int irq; | 57 | int irq; |
58 | struct irq_domain *irq_domain; | 58 | struct irq_domain *irq_domain; |
59 | struct mutex irqlock; | 59 | struct mutex irqlock; |
60 | u16 wake_mask[2]; | ||
60 | u16 irq_masks_cur[2]; | 61 | u16 irq_masks_cur[2]; |
61 | u16 irq_masks_cache[2]; | 62 | u16 irq_masks_cache[2]; |
62 | }; | 63 | }; |
diff --git a/include/linux/platform_data/itco_wdt.h b/include/linux/platform_data/itco_wdt.h new file mode 100644 index 000000000000..f16542c77ff7 --- /dev/null +++ b/include/linux/platform_data/itco_wdt.h | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * Platform data for the Intel TCO Watchdog | ||
3 | */ | ||
4 | |||
5 | #ifndef _ITCO_WDT_H_ | ||
6 | #define _ITCO_WDT_H_ | ||
7 | |||
8 | /* Watchdog resources */ | ||
9 | #define ICH_RES_IO_TCO 0 | ||
10 | #define ICH_RES_IO_SMI 1 | ||
11 | #define ICH_RES_MEM_OFF 2 | ||
12 | #define ICH_RES_MEM_GCS_PMC 0 | ||
13 | |||
14 | struct itco_wdt_platform_data { | ||
15 | char name[32]; | ||
16 | unsigned int version; | ||
17 | }; | ||
18 | |||
19 | #endif /* _ITCO_WDT_H_ */ | ||