tas_priv = devm_kzalloc(&spi->dev, sizeof(*tas_priv), GFP_KERNEL);
if (!tas_priv)
- goto err;
+ return -ENOMEM;
tas_priv->dev = &spi->dev;
tas_hda->priv = tas_priv;
tas_priv->regmap = devm_regmap_init_spi(spi, &tasdevice_regmap);
ret = PTR_ERR(tas_priv->regmap);
dev_err(tas_priv->dev, "Failed to allocate regmap: %d\n",
ret);
- goto err;
+ return ret;
}
if (strstr(dev_name(&spi->dev), "TXNW2781")) {
device_name = "TXNW2781";
tas_priv->save_calibration = tas2781_save_calibration;
tas_priv->apply_calibration = tas2781_apply_calib;
} else {
- goto err;
+ dev_err(tas_priv->dev, "Unmatched spi dev %s\n",
+ dev_name(&spi->dev));
+ return -ENODEV;
}
tas_priv->irq = spi->irq;
tasdevice_spi_init(tas_priv);
+ ret = component_add(tas_priv->dev, &tas2781_hda_comp_ops);
+ if (ret) {
+ dev_err(tas_priv->dev, "Register component fail: %d\n", ret);
+ return ret;
+ }
+
pm_runtime_set_autosuspend_delay(tas_priv->dev, 3000);
pm_runtime_use_autosuspend(tas_priv->dev);
pm_runtime_mark_last_busy(tas_priv->dev);
pm_runtime_put_autosuspend(tas_priv->dev);
- ret = component_add(tas_priv->dev, &tas2781_hda_comp_ops);
- if (ret) {
- dev_err(tas_priv->dev, "Register component fail: %d\n", ret);
- pm_runtime_disable(tas_priv->dev);
- }
-
-err:
- if (ret)
- tas2781_hda_remove(&spi->dev);
-
- return ret;
+ return 0;
}
static void tas2781_hda_spi_remove(struct spi_device *spi)