|
@@ -111,6 +111,8 @@ static int ltq_mm_probe(struct platform_device *pdev)
|
|
|
if (!chip)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
+ platform_set_drvdata(pdev, chip);
|
|
|
+
|
|
|
chip->mmchip.gc.ngpio = 16;
|
|
|
chip->mmchip.gc.direction_output = ltq_mm_dir_out;
|
|
|
chip->mmchip.gc.set = ltq_mm_set;
|
|
@@ -123,6 +125,15 @@ static int ltq_mm_probe(struct platform_device *pdev)
|
|
|
return of_mm_gpiochip_add(pdev->dev.of_node, &chip->mmchip);
|
|
|
}
|
|
|
|
|
|
+static int ltq_mm_remove(struct platform_device *pdev)
|
|
|
+{
|
|
|
+ struct ltq_mm *chip = platform_get_drvdata(pdev);
|
|
|
+
|
|
|
+ of_mm_gpiochip_remove(&chip->mmchip);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static const struct of_device_id ltq_mm_match[] = {
|
|
|
{ .compatible = "lantiq,gpio-mm" },
|
|
|
{},
|
|
@@ -131,6 +142,7 @@ MODULE_DEVICE_TABLE(of, ltq_mm_match);
|
|
|
|
|
|
static struct platform_driver ltq_mm_driver = {
|
|
|
.probe = ltq_mm_probe,
|
|
|
+ .remove = ltq_mm_remove,
|
|
|
.driver = {
|
|
|
.name = "gpio-mm-ltq",
|
|
|
.of_match_table = ltq_mm_match,
|
|
@@ -143,3 +155,9 @@ static int __init ltq_mm_init(void)
|
|
|
}
|
|
|
|
|
|
subsys_initcall(ltq_mm_init);
|
|
|
+
|
|
|
+static void __exit ltq_mm_exit(void)
|
|
|
+{
|
|
|
+ platform_driver_unregister(<q_mm_driver);
|
|
|
+}
|
|
|
+module_exit(ltq_mm_exit);
|