platform_set_drvdata(pdev, NULL);
i2c_del_adapter(&i2c->adap);
kfree(i2c);
i2c_gpio_free();
return 0;
}
static int i2c_atxx_gpio_suspend(struct device *dev)
{
return 0;
}
static int i2c_atxx_gpio_resume(struct device *dev)
{
return 0;
}
static void i2c_atxx_gpio_shutdown(struct platform_device *pdev)
{
/* TODO: */
}
const struct dev_pm_ops i2c_atxx_gpio_pm_ops = {
.resume = i2c_atxx_gpio_resume,
};
static struct platform_driver i2c_atxx_gpio_driver = {
.driver = {
.name = "i2c-gpio",
.owner = THIS_MODULE,
.pm = &i2c_atxx_gpio_pm_ops,
},
.probe = i2c_atxx_gpio_probe,
.remove = i2c_atxx_gpio_remove,
.shutdown = i2c_atxx_gpio_shutdown,
};
static int __init i2c_adap_atxx_gpio_init(void)
{
return platform_driver_register(&i2c_atxx_gpio_driver);
}
static void __exit i2c_adap_atxx_gpio_exit(void)
{
platform_driver_unregister(&i2c_atxx_gpio_driver);
}
arch_initcall(i2c_adap_atxx_gpio_init);