Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Richard Fitzgerald and committed by
Lee Jones
e5d4ef0d c517d838

+22 -4
+3 -2
drivers/mfd/Kconfig
··· 1289 1289 Support for Wolfson Microelectronics WM5102 low power audio SoC 1290 1290 1291 1291 config MFD_WM5110 1292 - bool "Wolfson Microelectronics WM5110" 1292 + bool "Wolfson Microelectronics WM5110 and WM8280/WM8281" 1293 1293 depends on MFD_ARIZONA 1294 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 1297 1298 config MFD_WM8997 1298 1299 bool "Wolfson Microelectronics WM8997"
+13 -2
drivers/mfd/arizona-core.c
··· 567 567 const struct of_device_id arizona_of_match[] = { 568 568 { .compatible = "wlf,wm5102", .data = (void *)WM5102 }, 569 569 { .compatible = "wlf,wm5110", .data = (void *)WM5110 }, 570 + { .compatible = "wlf,wm8280", .data = (void *)WM8280 }, 570 571 { .compatible = "wlf,wm8997", .data = (void *)WM8997 }, 571 572 {}, 572 573 }; ··· 672 671 switch (arizona->type) { 673 672 case WM5102: 674 673 case WM5110: 674 + case WM8280: 675 675 case WM8997: 676 676 for (i = 0; i < ARRAY_SIZE(wm5102_core_supplies); i++) 677 677 arizona->core_supplies[i].supply ··· 836 834 #endif 837 835 #ifdef CONFIG_MFD_WM5110 838 836 case 0x5110: 839 - type_name = "WM5110"; 840 - if (arizona->type != WM5110) { 837 + switch (arizona->type) { 838 + case WM5110: 839 + type_name = "WM5110"; 840 + break; 841 + case WM8280: 842 + type_name = "WM8280"; 843 + break; 844 + default: 845 + type_name = "WM5110"; 841 846 dev_err(arizona->dev, "WM5110 registered as %d\n", 842 847 arizona->type); 843 848 arizona->type = WM5110; 849 + break; 844 850 } 845 851 apply_patch = wm5110_patch; 846 852 break; ··· 1020 1010 ARRAY_SIZE(wm5102_devs), NULL, 0, NULL); 1021 1011 break; 1022 1012 case WM5110: 1013 + case WM8280: 1023 1014 ret = mfd_add_devices(arizona->dev, -1, wm5110_devs, 1024 1015 ARRAY_SIZE(wm5110_devs), NULL, 0, NULL); 1025 1016 break;
+2
drivers/mfd/arizona-i2c.c
··· 44 44 #endif 45 45 #ifdef CONFIG_MFD_WM5110 46 46 case WM5110: 47 + case WM8280: 47 48 regmap_config = &wm5110_i2c_regmap; 48 49 break; 49 50 #endif ··· 88 87 static const struct i2c_device_id arizona_i2c_id[] = { 89 88 { "wm5102", WM5102 }, 90 89 { "wm5110", WM5110 }, 90 + { "wm8280", WM8280 }, 91 91 { "wm8997", WM8997 }, 92 92 { } 93 93 };
+1
drivers/mfd/arizona-irq.c
··· 211 211 #endif 212 212 #ifdef CONFIG_MFD_WM5110 213 213 case WM5110: 214 + case WM8280: 214 215 aod = &wm5110_aod; 215 216 216 217 switch (arizona->rev) {
+2
drivers/mfd/arizona-spi.c
··· 44 44 #endif 45 45 #ifdef CONFIG_MFD_WM5110 46 46 case WM5110: 47 + case WM8280: 47 48 regmap_config = &wm5110_spi_regmap; 48 49 break; 49 50 #endif ··· 85 84 static const struct spi_device_id arizona_spi_ids[] = { 86 85 { "wm5102", WM5102 }, 87 86 { "wm5110", WM5110 }, 87 + { "wm8280", WM8280 }, 88 88 { }, 89 89 }; 90 90 MODULE_DEVICE_TABLE(spi, arizona_spi_ids);
+1
include/linux/mfd/arizona/core.h
··· 24 24 WM5102 = 1, 25 25 WM5110 = 2, 26 26 WM8997 = 3, 27 + WM8280 = 4, 27 28 }; 28 29 29 30 #define ARIZONA_IRQ_GP1 0