RE: [EXTERNAL] Re: [PATCH v1 2/2] ASoC: tas2781: Add tas5832 support

Ding, Shenghao
2026-03-26T02:24:44Z

Hi Krzk,
>
> > (rather than OF_ID) to obtain the chip name and chip ID. The chip ID i
> > s specifically reserved for handling exceptional cases, for example,
> > the workaround for the TAS2781’s lower speaker impedance issue.
> >
> > Since the 58xx family lacks a dedicated register to query the chip ID,
> > both the supported chip ID and name are stored in id_table.
> > This approach allows compatibility with both DT-based (Device Tree)
> > and ACPI-based (Advanced Configuration and Power Interface) device.
> >
> > if (ACPI_HANDLE(&i2c->dev)) {
> > acpi_id = acpi_match_device(i2c->dev.driver-
> >acpi_match_table,
> > &i2c->dev);
> > if (!acpi_id) {
> > dev_err(&i2c->dev, "No driver data\n");
> > ret = -EINVAL;
> > goto err;
> > }
> > tas_priv->chip_id = acpi_id->driver_data;
> > tas_priv->isacpi = true;
> > } else {
> > tas_priv->chip_id = (uintptr_t)i2c_get_match_data(i2c);
> > tas_priv->isacpi = false;
> > }
>
> I do not see the point you are making. All last replies felt off topic to me, so
> just to be sure - do you understand how i2c_get_match_data() works? That it
> calls device_get_match_data() which will return what?
> What exactly?
In my understanding, may I have following modification, and omit id_table assignment in the i2c_driver structure?
static const struct of_device_id tasdevice_of_match[] = {
{ .compatible = "ti,tas2020", .data = &tasdevice_id[TAS2020] },
{ .compatible = "ti,tas2118", .data = &tasdevice_id[TAS2118] },
{ .compatible = "ti,tas2120", .data = &tasdevice_id[TAS2120] },
{ .compatible = "ti,tas2320", .data = &tasdevice_id[TAS2320] },
{ .compatible = "ti,tas2563", .data = &tasdevice_id[TAS2563] },
{ .compatible = "ti,tas2568", .data = &tasdevice_id[TAS2568] },
{ .compatible = "ti,tas2570", .data = &tasdevice_id[TAS2570] },
{ .compatible = "ti,tas2572", .data = &tasdevice_id[TAS2572] },
{ .compatible = "ti,tas2574", .data = &tasdevice_id[TAS2574] },
{ .compatible = "ti,tas2781", .data = &tasdevice_id[TAS2781] },
{ .compatible = "ti,tas5802", .data = &tasdevice_id[TAS5802] },
{ .compatible = "ti,tas5806m", .data = &tasdevice_id[TAS5806M] },
{ .compatible = "ti,tas5806md", .data = &tasdevice_id[TAS5806MD] },
{ .compatible = "ti,tas5815", .data = &tasdevice_id[TAS5815] },
{ .compatible = "ti,tas5822", .data = &tasdevice_id[TAS5822] },
{ .compatible = "ti,tas5825", .data = &tasdevice_id[TAS5825] },
{ .compatible = "ti,tas5827", .data = &tasdevice_id[TAS5827] },
{ .compatible = "ti,tas5828", .data = &tasdevice_id[TAS5828] },
{ .compatible = "ti,tas5830", .data = &tasdevice_id[TAS5830] },
{},
};

static const struct acpi_device_id tasdevice_acpi_match[] = {
{ "TXNW2020", &tasdevice_id[TAS2020] },
{ "TXNW2118", &tasdevice_id[TAS2118] },
{ "TXNW2120", &tasdevice_id[TAS2120] },
{ "TXNW2320", &tasdevice_id[TAS2320] },
{ "TXNW2563", &tasdevice_id[TAS2563] },
{ "TXNW2568", &tasdevice_id[TAS2568] },
{ "TXNW2570", &tasdevice_id[TAS2570] },
{ "TXNW2572", &tasdevice_id[TAS2572] },
{ "TXNW2574", &tasdevice_id[TAS2574] },
{ "TXNW2781", &tasdevice_id[TAS2781] },
{ "TXNW5802", &tasdevice_id[TAS5802] },
{ "TXNW806M", &tasdevice_id[TAS5806M] },
{ "TXNW806D", &tasdevice_id[TAS5806MD] },
{ "TXNW5815", &tasdevice_id[TAS5815] },
{ "TXNW5822", &tasdevice_id[TAS5822] },
{ "TXNW5825", &tasdevice_id[TAS5825] },
{ "TXNW5827", &tasdevice_id[TAS5827] },
{ "TXNW5828", &tasdevice_id[TAS5828] },
{ "TXNW5830", &tasdevice_id[TAS5830] },
{},
};
>
> Best regards,
> Krzysztof