if (rt5659 == NULL)
return -ENOMEM;
---- rt5659->i2c = i2c;
i2c_set_clientdata(i2c, rt5659);
if (pdata)
INIT_DELAYED_WORK(&rt5659->jack_detect_work, rt5659_jack_detect_work);
---- if (rt5659->i2c->irq) {
---- ret = request_threaded_irq(rt5659->i2c->irq, NULL, rt5659_irq,
---- IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING
++++ if (i2c->irq) {
++++ ret = devm_request_threaded_irq(&i2c->dev, i2c->irq, NULL,
++++ rt5659_irq, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING
| IRQF_ONESHOT, "rt5659", rt5659);
if (ret)
dev_err(&i2c->dev, "Failed to reguest IRQ: %d\n", ret);
}
---- ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt5659,
++++ return snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt5659,
rt5659_dai, ARRAY_SIZE(rt5659_dai));
----
---- if (ret) {
---- if (rt5659->i2c->irq)
---- free_irq(rt5659->i2c->irq, rt5659);
---- }
----
---- return 0;
}
static int rt5659_i2c_remove(struct i2c_client *i2c)
return 0;
}
-- --void rt5659_i2c_shutdown(struct i2c_client *client)
++ ++static void rt5659_i2c_shutdown(struct i2c_client *client)
{
struct rt5659_priv *rt5659 = i2c_get_clientdata(client);
regmap_write(rt5659->regmap, RT5659_RESET, 0);
}
++++#ifdef CONFIG_OF
static const struct of_device_id rt5659_of_match[] = {
{ .compatible = "realtek,rt5658", },
{ .compatible = "realtek,rt5659", },
---- {},
++++ { },
};
++++MODULE_DEVICE_TABLE(of, rt5659_of_match);
++++#endif
++++#ifdef CONFIG_ACPI
static struct acpi_device_id rt5659_acpi_match[] = {
---- { "10EC5658", 0},
---- { "10EC5659", 0},
---- { },
++++ { "10EC5658", 0, },
++++ { "10EC5659", 0, },
++++ { },
};
MODULE_DEVICE_TABLE(acpi, rt5659_acpi_match);
++++#endif
struct i2c_driver rt5659_i2c_driver = {
.driver = {
.name = "rt5659",
.owner = THIS_MODULE,
---- .of_match_table = rt5659_of_match,
++++ .of_match_table = of_match_ptr(rt5659_of_match),
.acpi_match_table = ACPI_PTR(rt5659_acpi_match),
},
.probe = rt5659_i2c_probe,