|
@@ -435,16 +435,24 @@ EXPORT_SYMBOL_GPL(cs42xx8_of_match);
|
|
|
|
|
|
int cs42xx8_probe(struct device *dev, struct regmap *regmap)
|
|
|
{
|
|
|
- const struct of_device_id *of_id = of_match_device(cs42xx8_of_match, dev);
|
|
|
+ const struct of_device_id *of_id;
|
|
|
struct cs42xx8_priv *cs42xx8;
|
|
|
int ret, val, i;
|
|
|
|
|
|
+ if (IS_ERR(regmap)) {
|
|
|
+ ret = PTR_ERR(regmap);
|
|
|
+ dev_err(dev, "failed to allocate regmap: %d\n", ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
cs42xx8 = devm_kzalloc(dev, sizeof(*cs42xx8), GFP_KERNEL);
|
|
|
if (cs42xx8 == NULL)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
+ cs42xx8->regmap = regmap;
|
|
|
dev_set_drvdata(dev, cs42xx8);
|
|
|
|
|
|
+ of_id = of_match_device(cs42xx8_of_match, dev);
|
|
|
if (of_id)
|
|
|
cs42xx8->drvdata = of_id->data;
|
|
|
|
|
@@ -482,13 +490,6 @@ int cs42xx8_probe(struct device *dev, struct regmap *regmap)
|
|
|
/* Make sure hardware reset done */
|
|
|
msleep(5);
|
|
|
|
|
|
- cs42xx8->regmap = regmap;
|
|
|
- if (IS_ERR(cs42xx8->regmap)) {
|
|
|
- ret = PTR_ERR(cs42xx8->regmap);
|
|
|
- dev_err(dev, "failed to allocate regmap: %d\n", ret);
|
|
|
- goto err_enable;
|
|
|
- }
|
|
|
-
|
|
|
/*
|
|
|
* We haven't marked the chip revision as volatile due to
|
|
|
* sharing a register with the right input volume; explicitly
|