[alsa-devel] [RESEND PATCH 0/6] Add support for the WM8280 and WM8281
This set of patches adds support for the WM8280 and WM8281 codecs to the Wolfson Arizona drivers.
Just another resend on this series, if it would expedite the process I would be happy if we could just merge the MFD patches then I can push the other patches through their respective trees once that hits mainline, but at the moment all the patches are gated by a build dependency on the MFD patches.
Thanks, Charles
Richard Fitzgerald (6): mfd: arizona: Add support for WM8280/WM8281 Documentation: devicetree: arizona: Add bindings for WM8280 regulator: arizona-micsupp: Add support for WM8280/WM8281 gpio: arizona: Add support for WM8280/WM8281 extcon: arizona: Add support for WM8280/WM8281 ASoC: arizona: Add support for WM8280/WM8281
Documentation/devicetree/bindings/mfd/arizona.txt | 15 +++++++++++---- drivers/extcon/extcon-arizona.c | 1 + drivers/gpio/gpio-arizona.c | 1 + drivers/mfd/Kconfig | 5 +++-- drivers/mfd/arizona-core.c | 15 +++++++++++++-- drivers/mfd/arizona-i2c.c | 2 ++ drivers/mfd/arizona-irq.c | 1 + drivers/mfd/arizona-spi.c | 2 ++ drivers/regulator/arizona-micsupp.c | 1 + include/linux/mfd/arizona/core.h | 1 + sound/soc/codecs/arizona.c | 2 ++ 11 files changed, 38 insertions(+), 8 deletions(-)
From: Richard Fitzgerald rf@opensource.wolfsonmicro.com
This adds support for the Wolfson Microelectronics WM8280 and WM8281 codecs.
Signed-off-by: Richard Fitzgerald rf@opensource.wolfsonmicro.com Acked-by: Lee Jones lee.jones@linaro.org [ Minor fixup to remove potentially uninitialised variable. ] Signed-off-by: Charles Keepax ckeepax@opensource.wolfsonmicro.com --- drivers/mfd/Kconfig | 5 +++-- drivers/mfd/arizona-core.c | 15 +++++++++++++-- drivers/mfd/arizona-i2c.c | 2 ++ drivers/mfd/arizona-irq.c | 1 + drivers/mfd/arizona-spi.c | 2 ++ include/linux/mfd/arizona/core.h | 1 + 6 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 38356e3..9b5e605 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -1289,10 +1289,11 @@ config MFD_WM5102 Support for Wolfson Microelectronics WM5102 low power audio SoC
config MFD_WM5110 - bool "Wolfson Microelectronics WM5110" + bool "Wolfson Microelectronics WM5110 and WM8280/WM8281" depends on MFD_ARIZONA help - Support for Wolfson Microelectronics WM5110 low power audio SoC + Support for Wolfson Microelectronics WM5110 and WM8280/WM8281 + low power audio SoC
config MFD_WM8997 bool "Wolfson Microelectronics WM8997" diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index 09ba8f1..9f81998 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -567,6 +567,7 @@ static int arizona_of_get_core_pdata(struct arizona *arizona) const struct of_device_id arizona_of_match[] = { { .compatible = "wlf,wm5102", .data = (void *)WM5102 }, { .compatible = "wlf,wm5110", .data = (void *)WM5110 }, + { .compatible = "wlf,wm8280", .data = (void *)WM8280 }, { .compatible = "wlf,wm8997", .data = (void *)WM8997 }, {}, }; @@ -671,6 +672,7 @@ int arizona_dev_init(struct arizona *arizona) switch (arizona->type) { case WM5102: case WM5110: + case WM8280: case WM8997: for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++) arizona->core_supplies[i].supply @@ -834,11 +836,19 @@ int arizona_dev_init(struct arizona *arizona) #endif #ifdef CONFIG_MFD_WM5110 case 0x5110: - type_name = "WM5110"; - if (arizona->type != WM5110) { + switch (arizona->type) { + case WM5110: + type_name = "WM5110"; + break; + case WM8280: + type_name = "WM8280"; + break; + default: + type_name = "WM5110"; dev_err(arizona->dev, "WM5110 registered as %d\n", arizona->type); arizona->type = WM5110; + break; } apply_patch = wm5110_patch; break; @@ -1010,6 +1020,7 @@ int arizona_dev_init(struct arizona *arizona) ARRAY_SIZE(wm5102_devs), NULL, 0, NULL); break; case WM5110: + case WM8280: ret = mfd_add_devices(arizona->dev, -1, wm5110_devs, ARRAY_SIZE(wm5110_devs), NULL, 0, NULL); break; diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c index 9d4156f..ff782a5d 100644 --- a/drivers/mfd/arizona-i2c.c +++ b/drivers/mfd/arizona-i2c.c @@ -44,6 +44,7 @@ static int arizona_i2c_probe(struct i2c_client *i2c, #endif #ifdef CONFIG_MFD_WM5110 case WM5110: + case WM8280: regmap_config = &wm5110_i2c_regmap; break; #endif @@ -87,6 +88,7 @@ static int arizona_i2c_remove(struct i2c_client *i2c) static const struct i2c_device_id arizona_i2c_id[] = { { "wm5102", WM5102 }, { "wm5110", WM5110 }, + { "wm8280", WM8280 }, { "wm8997", WM8997 }, { } }; diff --git a/drivers/mfd/arizona-irq.c b/drivers/mfd/arizona-irq.c index 3a3fe7c..d063b94 100644 --- a/drivers/mfd/arizona-irq.c +++ b/drivers/mfd/arizona-irq.c @@ -211,6 +211,7 @@ int arizona_irq_init(struct arizona *arizona) #endif #ifdef CONFIG_MFD_WM5110 case WM5110: + case WM8280: aod = &wm5110_aod;
switch (arizona->rev) { diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c index 8ef58bc..1e845f6 100644 --- a/drivers/mfd/arizona-spi.c +++ b/drivers/mfd/arizona-spi.c @@ -44,6 +44,7 @@ static int arizona_spi_probe(struct spi_device *spi) #endif #ifdef CONFIG_MFD_WM5110 case WM5110: + case WM8280: regmap_config = &wm5110_spi_regmap; break; #endif @@ -84,6 +85,7 @@ static int arizona_spi_remove(struct spi_device *spi) static const struct spi_device_id arizona_spi_ids[] = { { "wm5102", WM5102 }, { "wm5110", WM5110 }, + { "wm8280", WM8280 }, { }, }; MODULE_DEVICE_TABLE(spi, arizona_spi_ids); diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h index 910e3aa..f970105 100644 --- a/include/linux/mfd/arizona/core.h +++ b/include/linux/mfd/arizona/core.h @@ -24,6 +24,7 @@ enum arizona_type { WM5102 = 1, WM5110 = 2, WM8997 = 3, + WM8280 = 4, };
#define ARIZONA_IRQ_GP1 0
From: Richard Fitzgerald rf@opensource.wolfsonmicro.com
Signed-off-by: Richard Fitzgerald rf@opensource.wolfsonmicro.com Signed-off-by: Charles Keepax ckeepax@opensource.wolfsonmicro.com --- Documentation/devicetree/bindings/mfd/arizona.txt | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/mfd/arizona.txt b/Documentation/devicetree/bindings/mfd/arizona.txt index 7bd1273..87c878b 100644 --- a/Documentation/devicetree/bindings/mfd/arizona.txt +++ b/Documentation/devicetree/bindings/mfd/arizona.txt @@ -8,6 +8,7 @@ Required properties: - compatible : One of the following chip-specific strings: "wlf,wm5102" "wlf,wm5110" + "wlf,wm8280" "wlf,wm8997" - reg : I2C slave address when connected using I2C, chip select number when using SPI. @@ -26,10 +27,16 @@ Required properties: - #gpio-cells : Must be 2. The first cell is the pin number and the second cell is used to specify optional parameters (currently unused).
- - AVDD-supply, DBVDD1-supply, DBVDD2-supply, DBVDD3-supply (wm5102, wm5110), - CPVDD-supply, SPKVDDL-supply (wm5102, wm5110), SPKVDDR-supply (wm5102, - wm5110), SPKVDD-supply (wm8997) : Power supplies for the device, as covered - in Documentation/devicetree/bindings/regulator/regulator.txt + - AVDD-supply, DBVDD1-supply, CPVDD-supply : Power supplies for the device, + as covered in Documentation/devicetree/bindings/regulator/regulator.txt + + - DBVDD2-supply, DBVDD3-supply : Additional databus power supplies (wm5102, + wm5110, wm8280) + + - SPKVDDL-supply, SPKVDDR-supply : Speaker driver power supplies (wm5102, + wm5110, wm8280) + + - SPKVDD-supply : Speaker driver power supply (wm8997)
Optional properties:
From: Richard Fitzgerald rf@opensource.wolfsonmicro.com
Signed-off-by: Richard Fitzgerald rf@opensource.wolfsonmicro.com Reviewed-by: Mark Brown broonie@kernel.org Signed-off-by: Charles Keepax ckeepax@opensource.wolfsonmicro.com --- drivers/regulator/arizona-micsupp.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/regulator/arizona-micsupp.c b/drivers/regulator/arizona-micsupp.c index 2007900..bfe5dac 100644 --- a/drivers/regulator/arizona-micsupp.c +++ b/drivers/regulator/arizona-micsupp.c @@ -246,6 +246,7 @@ static int arizona_micsupp_probe(struct platform_device *pdev) */ switch (arizona->type) { case WM5110: + case WM8280: desc = &arizona_micsupp_ext; micsupp->init_data = arizona_micsupp_ext_default; break;
From: Richard Fitzgerald rf@opensource.wolfsonmicro.com
Signed-off-by: Richard Fitzgerald rf@opensource.wolfsonmicro.com Acked-by: Linus Walleij linus.walleij@linaro.org Signed-off-by: Charles Keepax ckeepax@opensource.wolfsonmicro.com --- drivers/gpio/gpio-arizona.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/gpio/gpio-arizona.c b/drivers/gpio/gpio-arizona.c index fe369f5..9665d0a 100644 --- a/drivers/gpio/gpio-arizona.c +++ b/drivers/gpio/gpio-arizona.c @@ -116,6 +116,7 @@ static int arizona_gpio_probe(struct platform_device *pdev) switch (arizona->type) { case WM5102: case WM5110: + case WM8280: case WM8997: arizona_gpio->gpio_chip.ngpio = 5; break;
From: Richard Fitzgerald rf@opensource.wolfsonmicro.com
Signed-off-by: Richard Fitzgerald rf@opensource.wolfsonmicro.com Acked-by: Chanwoo Choi cw00.choi@samsung.com Signed-off-by: Charles Keepax ckeepax@opensource.wolfsonmicro.com --- drivers/extcon/extcon-arizona.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c index 63f01c4..6b5e795 100644 --- a/drivers/extcon/extcon-arizona.c +++ b/drivers/extcon/extcon-arizona.c @@ -1149,6 +1149,7 @@ static int arizona_extcon_probe(struct platform_device *pdev) } break; case WM5110: + case WM8280: switch (arizona->rev) { case 0 ... 2: break;
From: Richard Fitzgerald rf@opensource.wolfsonmicro.com
Signed-off-by: Richard Fitzgerald rf@opensource.wolfsonmicro.com Acked-by: Mark Brown broonie@kernel.org Signed-off-by: Charles Keepax ckeepax@opensource.wolfsonmicro.com --- sound/soc/codecs/arizona.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c index 9550d74..55b5e22 100644 --- a/sound/soc/codecs/arizona.c +++ b/sound/soc/codecs/arizona.c @@ -281,6 +281,7 @@ int arizona_init_gpio(struct snd_soc_codec *codec)
switch (arizona->type) { case WM5110: + case WM8280: snd_soc_dapm_disable_pin(&codec->dapm, "DRC2 Signal Activity"); break; default: @@ -1669,6 +1670,7 @@ static int arizona_calc_fratio(struct arizona_fll *fll,
switch (fll->arizona->type) { case WM5110: + case WM8280: if (fll->arizona->rev < 3 || sync) return init_ratio; break;
participants (1)
-
Charles Keepax