30 Jul
2019
30 Jul
'19
2:41 p.m.
On Tue, Jul 30, 2019 at 01:09:37PM +0100, Thomas Preston wrote:
Add a debugfs device node which initiates the turn-on diagnostic routine feature of the TDA7802 amplifier. The four status registers (one per channel) are returned.
Signed-off-by: Thomas Preston thomas.preston@codethink.co.uk
Changes since v1:
- Rename speaker-test to (turn-on) diagnostics
- Move turn-on diagnostic to debugfs as there is no standard ALSA interface for this kind of routine.
sound/soc/codecs/tda7802.c | 186 ++++++++++++++++++++++++++++++++++++- 1 file changed, 185 insertions(+), 1 deletion(-)
+static int tda7802_bulk_update(struct regmap *map, struct reg_update *update,
size_t update_count)
+{
- int i, err;
- for (i = 0; i < update_count; i++) {
err = regmap_update_bits(map, update[i].reg, update[i].mask,
update[i].val);
if (err < 0)
return err;
- }
- return i;
+}
This could probably be removed using regmap_multi_reg_write.
+static int tda7802_probe(struct snd_soc_component *component) +{
- struct tda7802_priv *tda7802 = snd_soc_component_get_drvdata(component);
- struct device *dev = &tda7802->i2c->dev;
- int err;
- tda7802->debugfs = debugfs_create_dir(dev_name(dev), NULL);
- if (IS_ERR_OR_NULL(tda7802->debugfs)) {
dev_info(dev,
"Failed to create debugfs node, err %ld\n",
PTR_ERR(tda7802->debugfs));
return 0;
- }
- mutex_init(&tda7802->diagnostic_mutex);
- err = debugfs_create_file("diagnostic", 0444, tda7802->debugfs, tda7802,
&tda7802_diagnostic_fops);
- if (err < 0) {
dev_err(dev,
"debugfs: Failed to create diagnostic node, err %d\n",
err);
goto cleanup_diagnostic;
- }
You shouldn't be failing the driver probe if debugfs fails, it should be purely optional.
Thanks, Charles