summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Fitzgerald <rf@opensource.wolfsonmicro.com>2015-01-17 10:21:22 -0500
committerLee Jones <lee.jones@linaro.org>2015-02-26 05:04:07 -0500
commite5d4ef0d731664b3fe204f4e5e87f5756e848fb1 (patch)
tree135041e482374e93f9a93d531a3f248932cbbb31
parentc517d838eb7d07bbe9507871fab3931deccff539 (diff)
mfd: arizona: Add support for WM8280/WM8281
This adds support for the Wolfson Microelectronics WM8280 and WM8281 codecs. Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> [Lee: Minor fixup to remove potentially uninitialised variable. ] Signed-off-by: Lee Jones <lee.jones@linaro.org>
-rw-r--r--drivers/mfd/Kconfig5
-rw-r--r--drivers/mfd/arizona-core.c15
-rw-r--r--drivers/mfd/arizona-i2c.c2
-rw-r--r--drivers/mfd/arizona-irq.c1
-rw-r--r--drivers/mfd/arizona-spi.c2
-rw-r--r--include/linux/mfd/arizona/core.h1
6 files changed, 22 insertions, 4 deletions
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 38356e39adba..9b5e60564d97 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1289,10 +1289,11 @@ config MFD_WM5102
1289 Support for Wolfson Microelectronics WM5102 low power audio SoC 1289 Support for Wolfson Microelectronics WM5102 low power audio SoC
1290 1290
1291config MFD_WM5110 1291config MFD_WM5110
1292 bool "Wolfson Microelectronics WM5110" 1292 bool "Wolfson Microelectronics WM5110 and WM8280/WM8281"
1293 depends on MFD_ARIZONA 1293 depends on MFD_ARIZONA
1294 help 1294 help
1295 Support for Wolfson Microelectronics WM5110 low power audio SoC 1295 Support for Wolfson Microelectronics WM5110 and WM8280/WM8281
1296 low power audio SoC
1296 1297
1297config MFD_WM8997 1298config MFD_WM8997
1298 bool "Wolfson Microelectronics WM8997" 1299 bool "Wolfson Microelectronics WM8997"
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
index 09ba8f186e6a..9f819989683b 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)
567const struct of_device_id arizona_of_match[] = { 567const struct of_device_id arizona_of_match[] = {
568 { .compatible = "wlf,wm5102", .data = (void *)WM5102 }, 568 { .compatible = "wlf,wm5102", .data = (void *)WM5102 },
569 { .compatible = "wlf,wm5110", .data = (void *)WM5110 }, 569 { .compatible = "wlf,wm5110", .data = (void *)WM5110 },
570 { .compatible = "wlf,wm8280", .data = (void *)WM8280 },
570 { .compatible = "wlf,wm8997", .data = (void *)WM8997 }, 571 { .compatible = "wlf,wm8997", .data = (void *)WM8997 },
571 {}, 572 {},
572}; 573};
@@ -671,6 +672,7 @@ int arizona_dev_init(struct arizona *arizona)
671 switch (arizona->type) { 672 switch (arizona->type) {
672 case WM5102: 673 case WM5102:
673 case WM5110: 674 case WM5110:
675 case WM8280:
674 case WM8997: 676 case WM8997:
675 for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++) 677 for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++)
676 arizona->core_supplies[i].supply 678 arizona->core_supplies[i].supply
@@ -834,11 +836,19 @@ int arizona_dev_init(struct arizona *arizona)
834#endif 836#endif
835#ifdef CONFIG_MFD_WM5110 837#ifdef CONFIG_MFD_WM5110
836 case 0x5110: 838 case 0x5110:
837 type_name = "WM5110"; 839 switch (arizona->type) {
838 if (arizona->type != WM5110) { 840 case WM5110:
841 type_name = "WM5110";
842 break;
843 case WM8280:
844 type_name = "WM8280";
845 break;
846 default:
847 type_name = "WM5110";
839 dev_err(arizona->dev, "WM5110 registered as %d\n", 848 dev_err(arizona->dev, "WM5110 registered as %d\n",
840 arizona->type); 849 arizona->type);
841 arizona->type = WM5110; 850 arizona->type = WM5110;
851 break;
842 } 852 }
843 apply_patch = wm5110_patch; 853 apply_patch = wm5110_patch;
844 break; 854 break;
@@ -1010,6 +1020,7 @@ int arizona_dev_init(struct arizona *arizona)
1010 ARRAY_SIZE(wm5102_devs), NULL, 0, NULL); 1020 ARRAY_SIZE(wm5102_devs), NULL, 0, NULL);
1011 break; 1021 break;
1012 case WM5110: 1022 case WM5110:
1023 case WM8280:
1013 ret = mfd_add_devices(arizona->dev, -1, wm5110_devs, 1024 ret = mfd_add_devices(arizona->dev, -1, wm5110_devs,
1014 ARRAY_SIZE(wm5110_devs), NULL, 0, NULL); 1025 ARRAY_SIZE(wm5110_devs), NULL, 0, NULL);
1015 break; 1026 break;
diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
index 9d4156fb082a..ff782a5de235 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,
44#endif 44#endif
45#ifdef CONFIG_MFD_WM5110 45#ifdef CONFIG_MFD_WM5110
46 case WM5110: 46 case WM5110:
47 case WM8280:
47 regmap_config = &wm5110_i2c_regmap; 48 regmap_config = &wm5110_i2c_regmap;
48 break; 49 break;
49#endif 50#endif
@@ -87,6 +88,7 @@ static int arizona_i2c_remove(struct i2c_client *i2c)
87static const struct i2c_device_id arizona_i2c_id[] = { 88static const struct i2c_device_id arizona_i2c_id[] = {
88 { "wm5102", WM5102 }, 89 { "wm5102", WM5102 },
89 { "wm5110", WM5110 }, 90 { "wm5110", WM5110 },
91 { "wm8280", WM8280 },
90 { "wm8997", WM8997 }, 92 { "wm8997", WM8997 },
91 { } 93 { }
92}; 94};
diff --git a/drivers/mfd/arizona-irq.c b/drivers/mfd/arizona-irq.c
index 3a3fe7cc6d61..d063b94b94b5 100644
--- a/drivers/mfd/arizona-irq.c
+++ b/drivers/mfd/arizona-irq.c
@@ -211,6 +211,7 @@ int arizona_irq_init(struct arizona *arizona)
211#endif 211#endif
212#ifdef CONFIG_MFD_WM5110 212#ifdef CONFIG_MFD_WM5110
213 case WM5110: 213 case WM5110:
214 case WM8280:
214 aod = &wm5110_aod; 215 aod = &wm5110_aod;
215 216
216 switch (arizona->rev) { 217 switch (arizona->rev) {
diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
index 8ef58bcff193..1e845f6d407b 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)
44#endif 44#endif
45#ifdef CONFIG_MFD_WM5110 45#ifdef CONFIG_MFD_WM5110
46 case WM5110: 46 case WM5110:
47 case WM8280:
47 regmap_config = &wm5110_spi_regmap; 48 regmap_config = &wm5110_spi_regmap;
48 break; 49 break;
49#endif 50#endif
@@ -84,6 +85,7 @@ static int arizona_spi_remove(struct spi_device *spi)
84static const struct spi_device_id arizona_spi_ids[] = { 85static const struct spi_device_id arizona_spi_ids[] = {
85 { "wm5102", WM5102 }, 86 { "wm5102", WM5102 },
86 { "wm5110", WM5110 }, 87 { "wm5110", WM5110 },
88 { "wm8280", WM8280 },
87 { }, 89 { },
88}; 90};
89MODULE_DEVICE_TABLE(spi, arizona_spi_ids); 91MODULE_DEVICE_TABLE(spi, arizona_spi_ids);
diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h
index 910e3aa1e965..f97010576f56 100644
--- a/include/linux/mfd/arizona/core.h
+++ b/include/linux/mfd/arizona/core.h
@@ -24,6 +24,7 @@ enum arizona_type {
24 WM5102 = 1, 24 WM5102 = 1,
25 WM5110 = 2, 25 WM5110 = 2,
26 WM8997 = 3, 26 WM8997 = 3,
27 WM8280 = 4,
27}; 28};
28 29
29#define ARIZONA_IRQ_GP1 0 30#define ARIZONA_IRQ_GP1 0