9 Sep
2022
9 Sep
'22
4:47 p.m.
On 09/09/2022 15:53, Martin PoviĊĦer wrote:
The CS42L83 part is a headphone jack codec found in recent Apple machines. It is a publicly undocumented part but as far as can be told it is identical to CS42L42 except for two points:
(...)
- regmap = devm_regmap_init_i2c(i2c_client, &cs42l83_regmap);
- if (IS_ERR(regmap)) {
ret = PTR_ERR(regmap);
dev_err(&i2c_client->dev, "regmap_init() failed: %d\n", ret);
return ret;
Use dev_err_probe()
- }
- cs42l83->devid = CS42L83_CHIP_ID;
- cs42l83->dev = dev;
- cs42l83->regmap = regmap;
- cs42l83->irq = i2c_client->irq;
- ret = cs42l42_common_probe(cs42l83, &cs42l42_soc_component, &cs42l42_dai);
- if (ret)
return ret;
- ret = cs42l42_init(cs42l83);
- if (ret)
cs42l42_common_remove(cs42l83);
- return ret;
+}
+static int cs42l83_i2c_remove(struct i2c_client *i2c_client) +{
- struct cs42l42_private *cs42l83 = dev_get_drvdata(&i2c_client->dev);
- cs42l42_common_remove(cs42l83);
- return 0;
+}
+static int __maybe_unused cs42l83_i2c_resume(struct device *dev) +{
- int ret;
- ret = cs42l42_resume(dev);
- if (ret)
return ret;
- cs42l42_resume_restore(dev);
- return 0;
+}
+static const struct dev_pm_ops cs42l83_i2c_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(cs42l42_suspend, cs42l83_i2c_resume)
+};
+static const struct of_device_id __maybe_unused cs42l83_of_match[] = {
- { .compatible = "cirrus,cs42l83", },
- {}
+}; +MODULE_DEVICE_TABLE(of, cs42l83_of_match);
+static struct i2c_driver cs42l83_i2c_driver = {
- .driver = {
.name = "cs42l83",
.pm = &cs42l83_i2c_pm_ops,
.of_match_table = of_match_ptr(cs42l83_of_match),
This should complain with compile testing. Usually it comes with __maybe_unused/
Best regards, Krzysztof