diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c index 6a786c2c781f58..43bd3eee53e539 100644 --- a/drivers/soundwire/intel.c +++ b/drivers/soundwire/intel.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "cadence_master.h" #include "bus.h" #include "intel.h" @@ -1654,6 +1655,7 @@ struct sdw_md_driver intel_sdw_driver = { .name = "intel-sdw", .owner = THIS_MODULE, .pm = &intel_pm, + .bus = &sdw_bus_type, }, .probe = intel_master_probe, .startup = intel_master_startup, diff --git a/drivers/soundwire/intel_init.c b/drivers/soundwire/intel_init.c index b3f9ca2382e3f0..dc04a22da6fe0d 100644 --- a/drivers/soundwire/intel_init.c +++ b/drivers/soundwire/intel_init.c @@ -185,6 +185,7 @@ static struct sdw_intel_ctx struct sdw_master_device *md; u32 link_mask; int count; + int err; int i; if (!res) @@ -218,6 +219,12 @@ static struct sdw_intel_ctx INIT_LIST_HEAD(&ctx->link_list); + err = driver_register(&intel_sdw_driver.driver); + if (err) { + dev_err(&adev->dev, "failed to register sdw master driver\n"); + goto register_err; + } + /* Create SDW Master devices */ for (i = 0; i < count; i++, link++) { if (link_mask && !(link_mask & BIT(i))) @@ -252,6 +259,8 @@ static struct sdw_intel_ctx err: sdw_intel_cleanup(ctx); link_err: + driver_unregister(&intel_sdw_driver.driver); +register_err: kfree(ctx); return NULL; } @@ -395,6 +404,7 @@ EXPORT_SYMBOL(sdw_intel_startup); void sdw_intel_exit(struct sdw_intel_ctx *ctx) { sdw_intel_cleanup(ctx); + driver_unregister(&intel_sdw_driver.driver); kfree(ctx); } EXPORT_SYMBOL(sdw_intel_exit); diff --git a/drivers/soundwire/master.c b/drivers/soundwire/master.c index d23111d43fd6f3..44f70ea67ae3ae 100644 --- a/drivers/soundwire/master.c +++ b/drivers/soundwire/master.c @@ -46,6 +46,7 @@ struct sdw_master_device *sdw_md_add(struct sdw_md_driver *driver, md->dev.type = &sdw_md_type; md->dev.dma_mask = md->dev.parent->dma_mask; dev_set_name(&md->dev, "sdw-master-%d", md->link_id); + md->dev.driver = &driver->driver; ret = device_register(&md->dev); if (ret) { @@ -57,8 +58,6 @@ struct sdw_master_device *sdw_md_add(struct sdw_md_driver *driver, put_device(&md->dev); } - md->dev.driver = &driver->driver; - return md; } EXPORT_SYMBOL(sdw_md_add);