static int tps65912_gpio_probe(struct platform_device *pdev)
{
- struct tps65912 *tps65912 = dev_get_drvdata(pdev->dev.parent);
- struct tps65912_board *pdata = dev_get_platdata(tps65912->dev);
- struct tps65912_gpio_data *tps65912_gpio;
+ struct tps65912 *tps = dev_get_drvdata(pdev->dev.parent);
+ struct tps65912_gpio *gpio;
int ret;
- tps65912_gpio = devm_kzalloc(&pdev->dev, sizeof(*tps65912_gpio),
- GFP_KERNEL);
- if (tps65912_gpio == NULL)
+ gpio = devm_kzalloc(&pdev->dev, sizeof(*gpio), GFP_KERNEL);
+ if (!gpio)
return -ENOMEM;
- tps65912_gpio->tps65912 = tps65912;
- tps65912_gpio->gpio_chip = template_chip;
- tps65912_gpio->gpio_chip.parent = &pdev->dev;
- if (pdata && pdata->gpio_base)
- tps65912_gpio->gpio_chip.base = pdata->gpio_base;
+ gpio->tps = dev_get_drvdata(pdev->dev.parent);
+ gpio->gpio_chip = template_chip;
+ gpio->gpio_chip.parent = tps->dev;
- ret = gpiochip_add_data(&gpio->gpio_chip, gpio);
+ ret = devm_gpiochip_add_data(&pdev->dev, &tps65912_gpio->gpio_chip,
+ tps65912_gpio);
if (ret < 0) {
- dev_err(&pdev->dev, "Failed to register gpiochip, %d\n", ret);
+ dev_err(&pdev->dev, "Could not register gpiochip, %d\n", ret);
return ret;
}
- platform_set_drvdata(pdev, tps65912_gpio);
+ platform_set_drvdata(pdev, gpio);
- return ret;
+ return 0;
}
-static int tps65912_gpio_remove(struct platform_device *pdev)
-{
- struct tps65912_gpio *gpio = platform_get_drvdata(pdev);
-
- gpiochip_remove(&gpio->gpio_chip);
-
- return 0;
-}
-
+ static const struct platform_device_id tps65912_gpio_id_table[] = {
+ { "tps65912-gpio", },
+ { /* sentinel */ }
+ };
+ MODULE_DEVICE_TABLE(platform, tps65912_gpio_id_table);
+
static struct platform_driver tps65912_gpio_driver = {
.driver = {
.name = "tps65912-gpio",
},
.probe = tps65912_gpio_probe,
- .remove = tps65912_gpio_remove,
+ .id_table = tps65912_gpio_id_table,
};
+ module_platform_driver(tps65912_gpio_driver);
- static int __init tps65912_gpio_init(void)
- {
- return platform_driver_register(&tps65912_gpio_driver);
- }
- subsys_initcall(tps65912_gpio_init);
-
- static void __exit tps65912_gpio_exit(void)
- {
- platform_driver_unregister(&tps65912_gpio_driver);
- }
- module_exit(tps65912_gpio_exit);
-
- MODULE_AUTHOR("Margarita Olaya Cabrera <magi@slimlogic.co.uk>");
- MODULE_DESCRIPTION("GPIO interface for TPS65912 PMICs");
+ MODULE_AUTHOR("Andrew F. Davis <afd@ti.com>");
+ MODULE_DESCRIPTION("TPS65912 GPIO driver");
MODULE_LICENSE("GPL v2");
- MODULE_ALIAS("platform:tps65912-gpio");