ASoC: tlv320*: use i2c_match_id and simple i2c probe
As part of the ongoing i2c transition to the simple probe ("probe_new"), this patch uses i2c_match_id to retrieve the driver_data for the probed device. The id parameter is thus no longer necessary and the simple probe can be used instead. In the context of an i2c probe, i2c_match_id with the module id table and the probed client never returns null, so removing the null check on the i2c_device_id pointer is safe. The i2c id tables are moved up before the probe function, as suggested by Wolfram Sang, except where the existing code already had a declaration for the of_device_id table. Signed-off-by: Stephen Kitt <steve@sk2.org> Link: https://lore.kernel.org/r/20220415160613.148882-7-steve@sk2.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
55116b39e5
commit
988e6870c8
|
@ -1337,11 +1337,18 @@ static const struct snd_soc_component_driver soc_component_dev_adc3xxx = {
|
|||
.num_dapm_routes = ARRAY_SIZE(adc3xxx_intercon),
|
||||
};
|
||||
|
||||
static int adc3xxx_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
static const struct i2c_device_id adc3xxx_i2c_id[] = {
|
||||
{ "tlv320adc3001", ADC3001 },
|
||||
{ "tlv320adc3101", ADC3101 },
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, adc3xxx_i2c_id);
|
||||
|
||||
static int adc3xxx_i2c_probe(struct i2c_client *i2c)
|
||||
{
|
||||
struct device *dev = &i2c->dev;
|
||||
struct adc3xxx *adc3xxx = NULL;
|
||||
const struct i2c_device_id *id;
|
||||
int ret;
|
||||
|
||||
adc3xxx = devm_kzalloc(dev, sizeof(struct adc3xxx), GFP_KERNEL);
|
||||
|
@ -1394,6 +1401,7 @@ static int adc3xxx_i2c_probe(struct i2c_client *i2c,
|
|||
|
||||
i2c_set_clientdata(i2c, adc3xxx);
|
||||
|
||||
id = i2c_match_id(adc3xxx_i2c_id, i2c);
|
||||
adc3xxx->type = id->driver_data;
|
||||
|
||||
/* Reset codec chip */
|
||||
|
@ -1436,19 +1444,12 @@ static const struct of_device_id tlv320adc3xxx_of_match[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, tlv320adc3xxx_of_match);
|
||||
|
||||
static const struct i2c_device_id adc3xxx_i2c_id[] = {
|
||||
{ "tlv320adc3001", ADC3001 },
|
||||
{ "tlv320adc3101", ADC3101 },
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, adc3xxx_i2c_id);
|
||||
|
||||
static struct i2c_driver adc3xxx_i2c_driver = {
|
||||
.driver = {
|
||||
.name = "tlv320adc3xxx-codec",
|
||||
.of_match_table = tlv320adc3xxx_of_match,
|
||||
},
|
||||
.probe = adc3xxx_i2c_probe,
|
||||
.probe_new = adc3xxx_i2c_probe,
|
||||
.remove = adc3xxx_i2c_remove,
|
||||
.id_table = adc3xxx_i2c_id,
|
||||
};
|
||||
|
|
|
@ -1628,11 +1628,24 @@ static void aic31xx_configure_ocmv(struct aic31xx_priv *priv)
|
|||
}
|
||||
}
|
||||
|
||||
static int aic31xx_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
static const struct i2c_device_id aic31xx_i2c_id[] = {
|
||||
{ "tlv320aic310x", AIC3100 },
|
||||
{ "tlv320aic311x", AIC3110 },
|
||||
{ "tlv320aic3100", AIC3100 },
|
||||
{ "tlv320aic3110", AIC3110 },
|
||||
{ "tlv320aic3120", AIC3120 },
|
||||
{ "tlv320aic3111", AIC3111 },
|
||||
{ "tlv320dac3100", DAC3100 },
|
||||
{ "tlv320dac3101", DAC3101 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, aic31xx_i2c_id);
|
||||
|
||||
static int aic31xx_i2c_probe(struct i2c_client *i2c)
|
||||
{
|
||||
struct aic31xx_priv *aic31xx;
|
||||
unsigned int micbias_value = MICBIAS_2_0V;
|
||||
const struct i2c_device_id *id = i2c_match_id(aic31xx_i2c_id, i2c);
|
||||
int i, ret;
|
||||
|
||||
dev_dbg(&i2c->dev, "## %s: %s codec_type = %d\n", __func__,
|
||||
|
@ -1729,26 +1742,13 @@ static int aic31xx_i2c_probe(struct i2c_client *i2c,
|
|||
ARRAY_SIZE(aic31xx_dai_driver));
|
||||
}
|
||||
|
||||
static const struct i2c_device_id aic31xx_i2c_id[] = {
|
||||
{ "tlv320aic310x", AIC3100 },
|
||||
{ "tlv320aic311x", AIC3110 },
|
||||
{ "tlv320aic3100", AIC3100 },
|
||||
{ "tlv320aic3110", AIC3110 },
|
||||
{ "tlv320aic3120", AIC3120 },
|
||||
{ "tlv320aic3111", AIC3111 },
|
||||
{ "tlv320dac3100", DAC3100 },
|
||||
{ "tlv320dac3101", DAC3101 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, aic31xx_i2c_id);
|
||||
|
||||
static struct i2c_driver aic31xx_i2c_driver = {
|
||||
.driver = {
|
||||
.name = "tlv320aic31xx-codec",
|
||||
.of_match_table = of_match_ptr(tlv320aic31xx_of_match),
|
||||
.acpi_match_table = ACPI_PTR(aic31xx_acpi_match),
|
||||
},
|
||||
.probe = aic31xx_i2c_probe,
|
||||
.probe_new = aic31xx_i2c_probe,
|
||||
.id_table = aic31xx_i2c_id,
|
||||
};
|
||||
module_i2c_driver(aic31xx_i2c_driver);
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
#include "tlv320aic32x4.h"
|
||||
|
||||
static const struct of_device_id aic32x4_of_id[];
|
||||
static const struct i2c_device_id aic32x4_i2c_id[];
|
||||
|
||||
static int aic32x4_i2c_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
static int aic32x4_i2c_probe(struct i2c_client *i2c)
|
||||
{
|
||||
struct regmap *regmap;
|
||||
struct regmap_config config;
|
||||
|
@ -35,7 +35,10 @@ static int aic32x4_i2c_probe(struct i2c_client *i2c,
|
|||
|
||||
oid = of_match_node(aic32x4_of_id, i2c->dev.of_node);
|
||||
dev_set_drvdata(&i2c->dev, (void *)oid->data);
|
||||
} else if (id) {
|
||||
} else {
|
||||
const struct i2c_device_id *id;
|
||||
|
||||
id = i2c_match_id(aic32x4_i2c_id, i2c);
|
||||
dev_set_drvdata(&i2c->dev, (void *)id->driver_data);
|
||||
}
|
||||
|
||||
|
@ -70,7 +73,7 @@ static struct i2c_driver aic32x4_i2c_driver = {
|
|||
.name = "tlv320aic32x4",
|
||||
.of_match_table = aic32x4_of_id,
|
||||
},
|
||||
.probe = aic32x4_i2c_probe,
|
||||
.probe_new = aic32x4_i2c_probe,
|
||||
.remove = aic32x4_i2c_remove,
|
||||
.id_table = aic32x4_i2c_id,
|
||||
};
|
||||
|
|
|
@ -17,10 +17,21 @@
|
|||
|
||||
#include "tlv320aic3x.h"
|
||||
|
||||
static int aic3x_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
|
||||
static const struct i2c_device_id aic3x_i2c_id[] = {
|
||||
{ "tlv320aic3x", AIC3X_MODEL_3X },
|
||||
{ "tlv320aic33", AIC3X_MODEL_33 },
|
||||
{ "tlv320aic3007", AIC3X_MODEL_3007 },
|
||||
{ "tlv320aic3104", AIC3X_MODEL_3104 },
|
||||
{ "tlv320aic3106", AIC3X_MODEL_3106 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, aic3x_i2c_id);
|
||||
|
||||
static int aic3x_i2c_probe(struct i2c_client *i2c)
|
||||
{
|
||||
struct regmap *regmap;
|
||||
struct regmap_config config;
|
||||
const struct i2c_device_id *id = i2c_match_id(aic3x_i2c_id, i2c);
|
||||
|
||||
config = aic3x_regmap;
|
||||
config.reg_bits = 8;
|
||||
|
@ -37,16 +48,6 @@ static int aic3x_i2c_remove(struct i2c_client *i2c)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const struct i2c_device_id aic3x_i2c_id[] = {
|
||||
{ "tlv320aic3x", AIC3X_MODEL_3X },
|
||||
{ "tlv320aic33", AIC3X_MODEL_33 },
|
||||
{ "tlv320aic3007", AIC3X_MODEL_3007 },
|
||||
{ "tlv320aic3104", AIC3X_MODEL_3104 },
|
||||
{ "tlv320aic3106", AIC3X_MODEL_3106 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, aic3x_i2c_id);
|
||||
|
||||
static const struct of_device_id aic3x_of_id[] = {
|
||||
{ .compatible = "ti,tlv320aic3x", },
|
||||
{ .compatible = "ti,tlv320aic33" },
|
||||
|
@ -62,7 +63,7 @@ static struct i2c_driver aic3x_i2c_driver = {
|
|||
.name = "tlv320aic3x",
|
||||
.of_match_table = aic3x_of_id,
|
||||
},
|
||||
.probe = aic3x_i2c_probe,
|
||||
.probe_new = aic3x_i2c_probe,
|
||||
.remove = aic3x_i2c_remove,
|
||||
.id_table = aic3x_i2c_id,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue