summaryrefslogtreecommitdiffstats
path: root/drivers/staging/greybus/arche-apb-ctrl.c
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2016-04-20 11:48:37 +0530
committerGreg Kroah-Hartman <gregkh@google.com>2016-04-23 09:37:21 +0900
commit7b62b61c752a4700ecf11d63a7ec40aeb3cee66c (patch)
treefd61c48dd760bf5fe4b3ecccb71eaef78dbe3709 /drivers/staging/greybus/arche-apb-ctrl.c
parentf2bf63a365425fa7df56c4e1dbe5a6bb29680324 (diff)
downloadop-kernel-dev-7b62b61c752a4700ecf11d63a7ec40aeb3cee66c.zip
op-kernel-dev-7b62b61c752a4700ecf11d63a7ec40aeb3cee66c.tar.gz
greybus: arche-ctrl: Don't expose driver internals to arche-platform driver
We have chosen the *ugly* way of registering two platform drivers from the module_init() of only one of them, so that we can avoid having two separate modules for them. But we should still be doing this in a sane way. There is no need to expose internals of arche-ctrl to arche-platform, like PM-ops, probe, resume, id-table, etc. Just expose an init and a exit callback. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/staging/greybus/arche-apb-ctrl.c')
-rw-r--r--drivers/staging/greybus/arche-apb-ctrl.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/drivers/staging/greybus/arche-apb-ctrl.c b/drivers/staging/greybus/arche-apb-ctrl.c
index 3a092a5..a9d78a8 100644
--- a/drivers/staging/greybus/arche-apb-ctrl.c
+++ b/drivers/staging/greybus/arche-apb-ctrl.c
@@ -358,7 +358,7 @@ static int apb_ctrl_get_devtree_data(struct platform_device *pdev,
return 0;
}
-int arche_apb_ctrl_probe(struct platform_device *pdev)
+static int arche_apb_ctrl_probe(struct platform_device *pdev)
{
int ret;
struct arche_apb_ctrl_drvdata *apb;
@@ -393,7 +393,7 @@ int arche_apb_ctrl_probe(struct platform_device *pdev)
return 0;
}
-int arche_apb_ctrl_remove(struct platform_device *pdev)
+static int arche_apb_ctrl_remove(struct platform_device *pdev)
{
device_remove_file(&pdev->dev, &dev_attr_state);
poweroff_seq(pdev);
@@ -430,6 +430,30 @@ static int arche_apb_ctrl_resume(struct device *dev)
return 0;
}
-SIMPLE_DEV_PM_OPS(arche_apb_ctrl_pm_ops,
- arche_apb_ctrl_suspend,
- arche_apb_ctrl_resume);
+static SIMPLE_DEV_PM_OPS(arche_apb_ctrl_pm_ops, arche_apb_ctrl_suspend,
+ arche_apb_ctrl_resume);
+
+static struct of_device_id arche_apb_ctrl_of_match[] = {
+ { .compatible = "usbffff,2", },
+ { },
+};
+
+static struct platform_driver arche_apb_ctrl_device_driver = {
+ .probe = arche_apb_ctrl_probe,
+ .remove = arche_apb_ctrl_remove,
+ .driver = {
+ .name = "arche-apb-ctrl",
+ .pm = &arche_apb_ctrl_pm_ops,
+ .of_match_table = arche_apb_ctrl_of_match,
+ }
+};
+
+int __init arche_apb_init(void)
+{
+ return platform_driver_register(&arche_apb_ctrl_device_driver);
+}
+
+void __exit arche_apb_exit(void)
+{
+ platform_driver_unregister(&arche_apb_ctrl_device_driver);
+}
OpenPOWER on IntegriCloud