summaryrefslogtreecommitdiff
path: root/drivers/soundwire/intel_init.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-01-18 14:53:41 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-01-18 14:53:41 +0100
commitc20c76acf6ec1df0af3bdd3370f7e3fef4494ba8 (patch)
tree58e87829837e2a1ac5fed3f1434f754fdc330c08 /drivers/soundwire/intel_init.c
parent1660557bd7cfced58b12389d7e99e21cde7e1cbe (diff)
parent5098cae1f79cc0580dc2741ce250307a60451eca (diff)
Merge tag 'soundwire-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire into char-misc-next
Vinod writes: soundwire updates for v5.6-rc1 This round we have bunch of updates to interfaces for ASoC (audio) subsystem by Intel and a new Qualcomm controller driver Details - Updates for sdw_slave interfaces for ASoC - Updates to cadence library and intel driver - New Soundwire controller for Qualcomm masters - Rework of device number assignment * tag 'soundwire-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire: (27 commits) dt-bindings: soundwire: fix example soundwire: cadence: fix kernel-doc parameter descriptions soundwire: intel: report slave_ids for each link to SOF driver soundwire: intel: fix factor of two in MCLK handling soundwire: bus: fix device number leak on errors soundwire: cadence: remove useless variable incrementation soundwire: cadence: update kernel-doc parameter descriptions soundwire: qcom: add support for SoundWire controller dt-bindings: soundwire: add bindings for Qcom controller soundwire: bus: check first if Slaves become UNATTACHED soundwire: cadence_master: handle multiple status reports per Slave soundwire: cadence_master: remove config update for interrupt setting soundwire: cadence_master: log more useful information during timeouts soundwire: cadence_master: clear interrupt status before enabling interrupt soundwire: cadence_master: filter out bad interrupts soundwire: stream: remove redundant pr_err traces soundwire: intel: add clock stop quirks soundwire: intel: add mutex for shared SHIM register access soundwire: intel: add prototype for WAKEEN interrupt processing soundwire: intel: add link_list to handle interrupts with a single thread ...
Diffstat (limited to 'drivers/soundwire/intel_init.c')
-rw-r--r--drivers/soundwire/intel_init.c32
1 files changed, 8 insertions, 24 deletions
diff --git a/drivers/soundwire/intel_init.c b/drivers/soundwire/intel_init.c
index 2a2b4d8df462..4b769409f6f8 100644
--- a/drivers/soundwire/intel_init.c
+++ b/drivers/soundwire/intel_init.c
@@ -27,19 +27,9 @@ static int link_mask;
module_param_named(sdw_link_mask, link_mask, int, 0444);
MODULE_PARM_DESC(sdw_link_mask, "Intel link mask (one bit per link)");
-struct sdw_link_data {
- struct sdw_intel_link_res res;
- struct platform_device *pdev;
-};
-
-struct sdw_intel_ctx {
- int count;
- struct sdw_link_data *links;
-};
-
static int sdw_intel_cleanup_pdev(struct sdw_intel_ctx *ctx)
{
- struct sdw_link_data *link = ctx->links;
+ struct sdw_intel_link_res *link = ctx->links;
int i;
if (!link)
@@ -62,7 +52,7 @@ static struct sdw_intel_ctx
{
struct platform_device_info pdevinfo;
struct platform_device *pdev;
- struct sdw_link_data *link;
+ struct sdw_intel_link_res *link;
struct sdw_intel_ctx *ctx;
struct acpi_device *adev;
int ret, i;
@@ -123,14 +113,13 @@ static struct sdw_intel_ctx
continue;
}
- link->res.irq = res->irq;
- link->res.registers = res->mmio_base + SDW_LINK_BASE
+ link->registers = res->mmio_base + SDW_LINK_BASE
+ (SDW_LINK_SIZE * i);
- link->res.shim = res->mmio_base + SDW_SHIM_BASE;
- link->res.alh = res->mmio_base + SDW_ALH_BASE;
+ link->shim = res->mmio_base + SDW_SHIM_BASE;
+ link->alh = res->mmio_base + SDW_ALH_BASE;
- link->res.ops = res->ops;
- link->res.arg = res->arg;
+ link->ops = res->ops;
+ link->dev = res->dev;
memset(&pdevinfo, 0, sizeof(pdevinfo));
@@ -138,8 +127,6 @@ static struct sdw_intel_ctx
pdevinfo.name = "int-sdw";
pdevinfo.id = i;
pdevinfo.fwnode = acpi_fwnode_handle(adev);
- pdevinfo.data = &link->res;
- pdevinfo.size_data = sizeof(link->res);
pdev = platform_device_register_full(&pdevinfo);
if (IS_ERR(pdev)) {
@@ -216,7 +203,6 @@ void *sdw_intel_init(acpi_handle *parent_handle, struct sdw_intel_res *res)
return sdw_intel_add_controller(res);
}
-EXPORT_SYMBOL(sdw_intel_init);
/**
* sdw_intel_exit() - SoundWire Intel exit
@@ -224,10 +210,8 @@ EXPORT_SYMBOL(sdw_intel_init);
*
* Delete the controller instances created and cleanup
*/
-void sdw_intel_exit(void *arg)
+void sdw_intel_exit(struct sdw_intel_ctx *ctx)
{
- struct sdw_intel_ctx *ctx = arg;
-
sdw_intel_cleanup_pdev(ctx);
kfree(ctx);
}