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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'soundwire-7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire

Pull soundwire updates from Vinod Koul:

- support for Qualcomm v2.2.0 controllers

- bus method updates for .probe(), .remove() and .shutdown()
and remove function return value updates

- Avell B.ON dmi-quirks mapping

- mark cs42l45 codec as wake capable

* tag 'soundwire-7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire:
soundwire: intel_ace2x: add SND_HDA_CORE dependency
dt-bindings: soundwire: qcom: Add SoundWire v2.2.0 compatible
soundwire: Use bus methods for .probe(), .remove() and .shutdown()
soundwire: Make remove function return no value
soundwire: dmi-quirks: add mapping for Avell B.ON (OEM rebranded of NUC15)
soundwire: qcom: Use guard to avoid mixing cleanup and goto
soundwire: intel_auxdevice: add cs42l45 codec to wake_capable_list

+57 -94
+1
Documentation/devicetree/bindings/soundwire/qcom,soundwire.yaml
··· 27 27 - items: 28 28 - enum: 29 29 - qcom,soundwire-v2.1.0 30 + - qcom,soundwire-v2.2.0 30 31 - const: qcom,soundwire-v2.0.0 31 32 32 33 reg:
+1
drivers/soundwire/Kconfig
··· 40 40 select AUXILIARY_BUS 41 41 depends on ACPI && SND_SOC 42 42 depends on SND_SOC_SOF_HDA_MLINK || !SND_SOC_SOF_HDA_MLINK 43 + depends on SND_HDA_CORE || !SND_HDA_ALIGNED_MMIO 43 44 help 44 45 SoundWire Intel Master driver. 45 46 If you have an Intel platform which has a SoundWire Master then
+14 -17
drivers/soundwire/bus_type.c
··· 72 72 return 0; 73 73 } 74 74 75 - const struct bus_type sdw_bus_type = { 76 - .name = "soundwire", 77 - .match = sdw_bus_match, 78 - }; 79 - EXPORT_SYMBOL_GPL(sdw_bus_type); 80 - 81 - static int sdw_drv_probe(struct device *dev) 75 + static int sdw_bus_probe(struct device *dev) 82 76 { 83 77 struct sdw_slave *slave = dev_to_sdw_dev(dev); 84 78 struct sdw_driver *drv = drv_to_sdw_driver(dev->driver); ··· 158 164 return 0; 159 165 } 160 166 161 - static int sdw_drv_remove(struct device *dev) 167 + static void sdw_bus_remove(struct device *dev) 162 168 { 163 169 struct sdw_slave *slave = dev_to_sdw_dev(dev); 164 170 struct sdw_driver *drv = drv_to_sdw_driver(dev->driver); 165 - int ret = 0; 166 171 167 172 mutex_lock(&slave->sdw_dev_lock); 168 173 ··· 170 177 mutex_unlock(&slave->sdw_dev_lock); 171 178 172 179 if (drv->remove) 173 - ret = drv->remove(slave); 180 + drv->remove(slave); 174 181 175 182 ida_free(&slave->bus->slave_ida, slave->index); 176 - 177 - return ret; 178 183 } 179 184 180 - static void sdw_drv_shutdown(struct device *dev) 185 + static void sdw_bus_shutdown(struct device *dev) 181 186 { 182 187 struct sdw_slave *slave = dev_to_sdw_dev(dev); 183 188 struct sdw_driver *drv = drv_to_sdw_driver(dev->driver); 184 189 185 - if (drv->shutdown) 190 + if (dev->driver && drv->shutdown) 186 191 drv->shutdown(slave); 187 192 } 193 + 194 + const struct bus_type sdw_bus_type = { 195 + .name = "soundwire", 196 + .match = sdw_bus_match, 197 + .probe = sdw_bus_probe, 198 + .remove = sdw_bus_remove, 199 + .shutdown = sdw_bus_shutdown, 200 + }; 201 + EXPORT_SYMBOL_GPL(sdw_bus_type); 188 202 189 203 /** 190 204 * __sdw_register_driver() - register a SoundWire Slave driver ··· 211 211 } 212 212 213 213 drv->driver.owner = owner; 214 - drv->driver.probe = sdw_drv_probe; 215 - drv->driver.remove = sdw_drv_remove; 216 - drv->driver.shutdown = sdw_drv_shutdown; 217 214 drv->driver.dev_groups = sdw_attr_groups; 218 215 219 216 return driver_register(&drv->driver);
+11
drivers/soundwire/dmi-quirks.c
··· 123 123 .driver_data = (void *)intel_tgl_bios, 124 124 }, 125 125 { 126 + /* 127 + * quirk used for Avell B.ON (OEM rebrand of NUC15 'Bishop County' 128 + * LAPBC510 and LAPBC710) 129 + */ 130 + .matches = { 131 + DMI_MATCH(DMI_SYS_VENDOR, "Avell High Performance"), 132 + DMI_MATCH(DMI_PRODUCT_NAME, "B.ON"), 133 + }, 134 + .driver_data = (void *)intel_tgl_bios, 135 + }, 136 + { 126 137 /* quirk used for NUC15 'Rooks County' LAPRC510 and LAPRC710 skews */ 127 138 .matches = { 128 139 DMI_MATCH(DMI_SYS_VENDOR, "Intel(R) Client Systems"),
+1
drivers/soundwire/intel_auxdevice.c
··· 52 52 53 53 static struct wake_capable_part wake_capable_list[] = { 54 54 {0x01fa, 0x4243}, 55 + {0x01fa, 0x4245}, 55 56 {0x025d, 0x5682}, 56 57 {0x025d, 0x700}, 57 58 {0x025d, 0x711},
+5 -7
drivers/soundwire/qcom.c
··· 1228 1228 struct sdw_port_runtime *p_rt; 1229 1229 struct sdw_slave *slave; 1230 1230 unsigned long *port_mask; 1231 - int maxport, pn, nports = 0, ret = 0; 1231 + int maxport, pn, nports = 0; 1232 1232 unsigned int m_port; 1233 1233 struct sdw_port_config *pconfig __free(kfree) = kcalloc(ctrl->nports, 1234 1234 sizeof(*pconfig), GFP_KERNEL); ··· 1246 1246 sconfig.type = stream->type; 1247 1247 sconfig.bps = 1; 1248 1248 1249 - mutex_lock(&ctrl->port_lock); 1249 + guard(mutex)(&ctrl->port_lock); 1250 + 1250 1251 list_for_each_entry(m_rt, &stream->master_list, stream_node) { 1251 1252 /* 1252 1253 * For streams with multiple masters: ··· 1273 1272 1274 1273 if (pn > maxport) { 1275 1274 dev_err(ctrl->dev, "All ports busy\n"); 1276 - ret = -EBUSY; 1277 - goto out; 1275 + return -EBUSY; 1278 1276 } 1279 1277 set_bit(pn, port_mask); 1280 1278 pconfig[nports].num = pn; ··· 1285 1285 1286 1286 sdw_stream_add_master(&ctrl->bus, &sconfig, pconfig, 1287 1287 nports, stream); 1288 - out: 1289 - mutex_unlock(&ctrl->port_lock); 1290 1288 1291 - return ret; 1289 + return 0; 1292 1290 } 1293 1291 1294 1292 static int qcom_swrm_hw_params(struct snd_pcm_substream *substream,
+1 -1
include/linux/soundwire/sdw.h
··· 705 705 706 706 struct sdw_driver { 707 707 int (*probe)(struct sdw_slave *sdw, const struct sdw_device_id *id); 708 - int (*remove)(struct sdw_slave *sdw); 708 + void (*remove)(struct sdw_slave *sdw); 709 709 void (*shutdown)(struct sdw_slave *sdw); 710 710 711 711 const struct sdw_device_id *id_table;
+1 -3
sound/soc/codecs/cs35l56-sdw.c
··· 554 554 return 0; 555 555 } 556 556 557 - static int cs35l56_sdw_remove(struct sdw_slave *peripheral) 557 + static void cs35l56_sdw_remove(struct sdw_slave *peripheral) 558 558 { 559 559 struct cs35l56_private *cs35l56 = dev_get_drvdata(&peripheral->dev); 560 560 ··· 566 566 sdw_write_no_pm(peripheral, CS35L56_SDW_GEN_INT_STAT_1, 0xFF); 567 567 568 568 cs35l56_remove(cs35l56); 569 - 570 - return 0; 571 569 } 572 570 573 571 static const struct dev_pm_ops cs35l56_sdw_pm = {
+1 -3
sound/soc/codecs/cs42l42-sdw.c
··· 585 585 return 0; 586 586 } 587 587 588 - static int cs42l42_sdw_remove(struct sdw_slave *peripheral) 588 + static void cs42l42_sdw_remove(struct sdw_slave *peripheral) 589 589 { 590 590 struct cs42l42_private *cs42l42 = dev_get_drvdata(&peripheral->dev); 591 591 592 592 cs42l42_common_remove(cs42l42); 593 593 pm_runtime_disable(cs42l42->dev); 594 - 595 - return 0; 596 594 } 597 595 598 596 static const struct dev_pm_ops cs42l42_sdw_pm = {
+1 -3
sound/soc/codecs/max98373-sdw.c
··· 839 839 return max98373_init(slave, regmap); 840 840 } 841 841 842 - static int max98373_sdw_remove(struct sdw_slave *slave) 842 + static void max98373_sdw_remove(struct sdw_slave *slave) 843 843 { 844 844 pm_runtime_disable(&slave->dev); 845 - 846 - return 0; 847 845 } 848 846 849 847 #if defined(CONFIG_OF)
+1 -3
sound/soc/codecs/pm4125-sdw.c
··· 436 436 return 0; 437 437 } 438 438 439 - static int pm4125_remove(struct sdw_slave *pdev) 439 + static void pm4125_remove(struct sdw_slave *pdev) 440 440 { 441 441 struct device *dev = &pdev->dev; 442 442 443 443 component_del(dev, &wcd_sdw_component_ops); 444 - 445 - return 0; 446 444 } 447 445 448 446 static const struct sdw_device_id pm4125_slave_id[] = {
+1 -3
sound/soc/codecs/rt1017-sdca-sdw.c
··· 741 741 return rt1017_sdca_init(&slave->dev, regmap, slave); 742 742 } 743 743 744 - static int rt1017_sdca_sdw_remove(struct sdw_slave *slave) 744 + static void rt1017_sdca_sdw_remove(struct sdw_slave *slave) 745 745 { 746 746 struct rt1017_sdca_priv *rt1017 = dev_get_drvdata(&slave->dev); 747 747 748 748 if (rt1017->first_hw_init) 749 749 pm_runtime_disable(&slave->dev); 750 - 751 - return 0; 752 750 } 753 751 754 752 static const struct sdw_device_id rt1017_sdca_id[] = {
+1 -3
sound/soc/codecs/rt1308-sdw.c
··· 739 739 return rt1308_sdw_init(&slave->dev, regmap, slave); 740 740 } 741 741 742 - static int rt1308_sdw_remove(struct sdw_slave *slave) 742 + static void rt1308_sdw_remove(struct sdw_slave *slave) 743 743 { 744 744 pm_runtime_disable(&slave->dev); 745 - 746 - return 0; 747 745 } 748 746 749 747 static const struct sdw_device_id rt1308_id[] = {
+1 -3
sound/soc/codecs/rt1316-sdw.c
··· 716 716 return rt1316_sdw_init(&slave->dev, regmap, slave); 717 717 } 718 718 719 - static int rt1316_sdw_remove(struct sdw_slave *slave) 719 + static void rt1316_sdw_remove(struct sdw_slave *slave) 720 720 { 721 721 pm_runtime_disable(&slave->dev); 722 - 723 - return 0; 724 722 } 725 723 726 724 static const struct sdw_device_id rt1316_id[] = {
+1 -3
sound/soc/codecs/rt1318-sdw.c
··· 793 793 return rt1318_sdw_init(&slave->dev, regmap, slave); 794 794 } 795 795 796 - static int rt1318_sdw_remove(struct sdw_slave *slave) 796 + static void rt1318_sdw_remove(struct sdw_slave *slave) 797 797 { 798 798 pm_runtime_disable(&slave->dev); 799 - 800 - return 0; 801 799 } 802 800 803 801 static const struct sdw_device_id rt1318_id[] = {
+1 -3
sound/soc/codecs/rt1320-sdw.c
··· 2950 2950 return rt1320_sdw_init(&slave->dev, regmap, mbq_regmap, slave); 2951 2951 } 2952 2952 2953 - static int rt1320_sdw_remove(struct sdw_slave *slave) 2953 + static void rt1320_sdw_remove(struct sdw_slave *slave) 2954 2954 { 2955 2955 struct rt1320_sdw_priv *rt1320 = dev_get_drvdata(&slave->dev); 2956 2956 2957 2957 cancel_work_sync(&rt1320->load_dspfw_work); 2958 2958 pm_runtime_disable(&slave->dev); 2959 - 2960 - return 0; 2961 2959 } 2962 2960 2963 2961 /*
+1 -3
sound/soc/codecs/rt5682-sdw.c
··· 690 690 return rt5682_sdw_init(&slave->dev, regmap, slave); 691 691 } 692 692 693 - static int rt5682_sdw_remove(struct sdw_slave *slave) 693 + static void rt5682_sdw_remove(struct sdw_slave *slave) 694 694 { 695 695 struct rt5682_priv *rt5682 = dev_get_drvdata(&slave->dev); 696 696 ··· 698 698 cancel_delayed_work_sync(&rt5682->jack_detect_work); 699 699 700 700 pm_runtime_disable(&slave->dev); 701 - 702 - return 0; 703 701 } 704 702 705 703 static const struct sdw_device_id rt5682_id[] = {
+1 -3
sound/soc/codecs/rt700-sdw.c
··· 455 455 return rt700_init(&slave->dev, sdw_regmap, regmap, slave); 456 456 } 457 457 458 - static int rt700_sdw_remove(struct sdw_slave *slave) 458 + static void rt700_sdw_remove(struct sdw_slave *slave) 459 459 { 460 460 struct rt700_priv *rt700 = dev_get_drvdata(&slave->dev); 461 461 ··· 465 465 } 466 466 467 467 pm_runtime_disable(&slave->dev); 468 - 469 - return 0; 470 468 } 471 469 472 470 static const struct sdw_device_id rt700_id[] = {
+1 -3
sound/soc/codecs/rt711-sdca-sdw.c
··· 365 365 return rt711_sdca_init(&slave->dev, regmap, mbq_regmap, slave); 366 366 } 367 367 368 - static int rt711_sdca_sdw_remove(struct sdw_slave *slave) 368 + static void rt711_sdca_sdw_remove(struct sdw_slave *slave) 369 369 { 370 370 struct rt711_sdca_priv *rt711 = dev_get_drvdata(&slave->dev); 371 371 ··· 378 378 379 379 mutex_destroy(&rt711->calibrate_mutex); 380 380 mutex_destroy(&rt711->disable_irq_lock); 381 - 382 - return 0; 383 381 } 384 382 385 383 static const struct sdw_device_id rt711_sdca_id[] = {
+1 -3
sound/soc/codecs/rt711-sdw.c
··· 458 458 return rt711_init(&slave->dev, sdw_regmap, regmap, slave); 459 459 } 460 460 461 - static int rt711_sdw_remove(struct sdw_slave *slave) 461 + static void rt711_sdw_remove(struct sdw_slave *slave) 462 462 { 463 463 struct rt711_priv *rt711 = dev_get_drvdata(&slave->dev); 464 464 ··· 472 472 473 473 mutex_destroy(&rt711->calibrate_mutex); 474 474 mutex_destroy(&rt711->disable_irq_lock); 475 - 476 - return 0; 477 475 } 478 476 479 477 static const struct sdw_device_id rt711_id[] = {
+1 -3
sound/soc/codecs/rt712-sdca-dmic.c
··· 960 960 return rt712_sdca_dmic_init(&slave->dev, regmap, mbq_regmap, slave); 961 961 } 962 962 963 - static int rt712_sdca_dmic_sdw_remove(struct sdw_slave *slave) 963 + static void rt712_sdca_dmic_sdw_remove(struct sdw_slave *slave) 964 964 { 965 965 pm_runtime_disable(&slave->dev); 966 - 967 - return 0; 968 966 } 969 967 970 968 static struct sdw_driver rt712_sdca_dmic_sdw_driver = {
+1 -3
sound/soc/codecs/rt712-sdca-sdw.c
··· 374 374 return rt712_sdca_init(&slave->dev, regmap, mbq_regmap, slave); 375 375 } 376 376 377 - static int rt712_sdca_sdw_remove(struct sdw_slave *slave) 377 + static void rt712_sdca_sdw_remove(struct sdw_slave *slave) 378 378 { 379 379 struct rt712_sdca_priv *rt712 = dev_get_drvdata(&slave->dev); 380 380 ··· 387 387 388 388 mutex_destroy(&rt712->calibrate_mutex); 389 389 mutex_destroy(&rt712->disable_irq_lock); 390 - 391 - return 0; 392 390 } 393 391 394 392 static const struct sdw_device_id rt712_sdca_id[] = {
+1 -3
sound/soc/codecs/rt715-sdca-sdw.c
··· 191 191 return rt715_sdca_init(&slave->dev, mbq_regmap, regmap, slave); 192 192 } 193 193 194 - static int rt715_sdca_sdw_remove(struct sdw_slave *slave) 194 + static void rt715_sdca_sdw_remove(struct sdw_slave *slave) 195 195 { 196 196 pm_runtime_disable(&slave->dev); 197 - 198 - return 0; 199 197 } 200 198 201 199 static const struct sdw_device_id rt715_sdca_id[] = {
+1 -3
sound/soc/codecs/rt715-sdw.c
··· 471 471 return rt715_init(&slave->dev, sdw_regmap, regmap, slave); 472 472 } 473 473 474 - static int rt715_sdw_remove(struct sdw_slave *slave) 474 + static void rt715_sdw_remove(struct sdw_slave *slave) 475 475 { 476 476 pm_runtime_disable(&slave->dev); 477 - 478 - return 0; 479 477 } 480 478 481 479 static const struct sdw_device_id rt715_id[] = {
+1 -3
sound/soc/codecs/rt721-sdca-sdw.c
··· 415 415 return rt721_sdca_init(&slave->dev, regmap, mbq_regmap, slave); 416 416 } 417 417 418 - static int rt721_sdca_sdw_remove(struct sdw_slave *slave) 418 + static void rt721_sdca_sdw_remove(struct sdw_slave *slave) 419 419 { 420 420 struct rt721_sdca_priv *rt721 = dev_get_drvdata(&slave->dev); 421 421 ··· 429 429 430 430 mutex_destroy(&rt721->calibrate_mutex); 431 431 mutex_destroy(&rt721->disable_irq_lock); 432 - 433 - return 0; 434 432 } 435 433 436 434 static const struct sdw_device_id rt721_sdca_id[] = {
+1 -3
sound/soc/codecs/rt722-sdca-sdw.c
··· 428 428 return rt722_sdca_init(&slave->dev, regmap, slave); 429 429 } 430 430 431 - static int rt722_sdca_sdw_remove(struct sdw_slave *slave) 431 + static void rt722_sdca_sdw_remove(struct sdw_slave *slave) 432 432 { 433 433 struct rt722_sdca_priv *rt722 = dev_get_drvdata(&slave->dev); 434 434 ··· 442 442 443 443 mutex_destroy(&rt722->calibrate_mutex); 444 444 mutex_destroy(&rt722->disable_irq_lock); 445 - 446 - return 0; 447 445 } 448 446 449 447 static const struct sdw_device_id rt722_sdca_id[] = {
+1 -3
sound/soc/codecs/tas2783-sdw.c
··· 1299 1299 return tas_init(tas_dev); 1300 1300 } 1301 1301 1302 - static s32 tas_sdw_remove(struct sdw_slave *peripheral) 1302 + static void tas_sdw_remove(struct sdw_slave *peripheral) 1303 1303 { 1304 1304 struct tas2783_prv *tas_dev = dev_get_drvdata(&peripheral->dev); 1305 1305 ··· 1308 1308 mutex_destroy(&tas_dev->calib_lock); 1309 1309 mutex_destroy(&tas_dev->pde_lock); 1310 1310 dev_set_drvdata(&peripheral->dev, NULL); 1311 - 1312 - return 0; 1313 1311 } 1314 1312 1315 1313 static const struct sdw_device_id tas_sdw_id[] = {
+1 -3
sound/soc/codecs/wcd937x-sdw.c
··· 1056 1056 return 0; 1057 1057 } 1058 1058 1059 - static int wcd9370_remove(struct sdw_slave *pdev) 1059 + static void wcd9370_remove(struct sdw_slave *pdev) 1060 1060 { 1061 1061 struct device *dev = &pdev->dev; 1062 1062 1063 1063 component_del(dev, &wcd_sdw_component_ops); 1064 - 1065 - return 0; 1066 1064 } 1067 1065 1068 1066 static const struct sdw_device_id wcd9370_slave_id[] = {
+1 -3
sound/soc/codecs/wcd938x-sdw.c
··· 1217 1217 return 0; 1218 1218 } 1219 1219 1220 - static int wcd9380_remove(struct sdw_slave *pdev) 1220 + static void wcd9380_remove(struct sdw_slave *pdev) 1221 1221 { 1222 1222 struct device *dev = &pdev->dev; 1223 1223 1224 1224 component_del(dev, &wcd_sdw_component_ops); 1225 - 1226 - return 0; 1227 1225 } 1228 1226 1229 1227 static const struct sdw_device_id wcd9380_slave_id[] = {
+1 -3
sound/soc/codecs/wcd939x-sdw.c
··· 1403 1403 return 0; 1404 1404 } 1405 1405 1406 - static int wcd9390_remove(struct sdw_slave *pdev) 1406 + static void wcd9390_remove(struct sdw_slave *pdev) 1407 1407 { 1408 1408 struct device *dev = &pdev->dev; 1409 1409 1410 1410 component_del(dev, &wcd_sdw_component_ops); 1411 - 1412 - return 0; 1413 1411 } 1414 1412 1415 1413 static const struct sdw_device_id wcd9390_slave_id[] = {