sound/soc/sdw_utils/soc_sdw_rt_dmic.c

Source file repositories/reference/linux-study-clean/sound/soc/sdw_utils/soc_sdw_rt_dmic.c

File Facts

System
Linux kernel
Corpus path
sound/soc/sdw_utils/soc_sdw_rt_dmic.c
Extension
.c
Size
2722 bytes
Lines
86
Domain
Driver Families
Bucket
sound/soc
Inferred role
Driver Families: exported/initcall integration point
Status
integration implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

for_each_card_components(card, component) {
			if (!is_sdw_slave(component->dev))
				continue;
			sdw_peripheral = dev_to_sdw_dev(component->dev);
			if (sdw_peripheral->id.part_id != part_id)
				continue;
			for (i = 0; i < sdw_peripheral->sdca_data.num_functions; i++) {
				if (sdw_peripheral->sdca_data.function[i].type ==
				    SDCA_FUNCTION_TYPE_SMART_MIC) {
					rt1320_dmic_num++;
					break;
				}
			}
		}
		card->components = devm_kasprintf(card->dev, GFP_KERNEL,
						  "%s mic:%s cfg-mics:%d", card->components,
						  mic_name, rt1320_dmic_num);
	} else {
		card->components = devm_kasprintf(card->dev, GFP_KERNEL,
						  "%s mic:%s", card->components,
						  mic_name);
	}

	if (!card->components)
		return -ENOMEM;

	dev_dbg(card->dev, "card->components: %s\n", card->components);

	return 0;
}
EXPORT_SYMBOL_NS(asoc_sdw_rt_dmic_rtd_init, "SND_SOC_SDW_UTILS");

Annotation

Implementation Notes