@@ -346,6 +346,9 @@ static int cs35l41_hda_bind(struct device *dev, struct device *master, void *mas
return -EBUSY;
comps->dev = dev;
+ if (!cs35l41->acpi_subsystem_id)
+ cs35l41->acpi_subsystem_id = devm_kasprintf(dev, GFP_KERNEL,
+ "%.8x", comps->subsystem_id);
cs35l41->codec = comps->codec;
strscpy(comps->name, dev_name(dev), sizeof(comps->name));
comps->playback_hook = cs35l41_hda_playback_hook;
@@ -42,6 +42,7 @@ struct cs35l41_hda {
int channel_index;
unsigned volatile long irq_errors;
const char *amp_name;
+ const char *acpi_subsystem_id;
struct regmap_irq_chip_data *irq_data;
bool firmware_running;
bool halo_initialized;
@@ -14,6 +14,7 @@
struct hda_component {
struct device *dev;
char name[HDA_MAX_NAME_SIZE];
+ int subsystem_id;
struct hda_codec *codec;
void (*playback_hook)(struct device *dev, int action);
};
@@ -6631,6 +6631,7 @@ static void cs35l41_generic_fixup(struct hda_codec *cdc, int action, const char
if (!name)
return;
spec->comps[i].codec = cdc;
+ spec->comps[i].subsystem_id = cdc->core.subsystem_id;
component_match_add(dev, &spec->match, component_compare_dev_name, name);
}
ret = component_master_add_with_match(dev, &comp_master_ops, spec->match);