mirror of https://gitee.com/openkylin/linux.git
Soundwire: intel_init: save Slave(s) _ADR info in sdw_intel_ctx
Save ACPI information in context so that we can match machine driver with sdw _ADR matching tables. Suggested-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20200716150947.22119-10-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
ab2c913297
commit
a81844034e
|
@ -188,7 +188,11 @@ static struct sdw_intel_ctx
|
|||
struct sdw_intel_link_res *link;
|
||||
struct sdw_intel_ctx *ctx;
|
||||
struct acpi_device *adev;
|
||||
struct sdw_slave *slave;
|
||||
struct list_head *node;
|
||||
struct sdw_bus *bus;
|
||||
u32 link_mask;
|
||||
int num_slaves = 0;
|
||||
int count;
|
||||
int i;
|
||||
|
||||
|
@ -265,6 +269,26 @@ static struct sdw_intel_ctx
|
|||
link->cdns = platform_get_drvdata(pdev);
|
||||
|
||||
list_add_tail(&link->list, &ctx->link_list);
|
||||
bus = &link->cdns->bus;
|
||||
/* Calculate number of slaves */
|
||||
list_for_each(node, &bus->slaves)
|
||||
num_slaves++;
|
||||
}
|
||||
|
||||
ctx->ids = devm_kcalloc(&adev->dev, num_slaves,
|
||||
sizeof(*ctx->ids), GFP_KERNEL);
|
||||
if (!ctx->ids)
|
||||
goto err;
|
||||
|
||||
ctx->num_slaves = num_slaves;
|
||||
i = 0;
|
||||
list_for_each_entry(link, &ctx->link_list, list) {
|
||||
bus = &link->cdns->bus;
|
||||
list_for_each_entry(slave, &bus->slaves, node) {
|
||||
ctx->ids[i].id = slave->id;
|
||||
ctx->ids[i].link_id = bus->link_id;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
return ctx;
|
||||
|
|
Loading…
Reference in New Issue