diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2016-04-20 11:48:37 +0530 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@google.com> | 2016-04-23 09:37:21 +0900 |
commit | 7b62b61c752a4700ecf11d63a7ec40aeb3cee66c (patch) | |
tree | fd61c48dd760bf5fe4b3ecccb71eaef78dbe3709 /drivers/staging/greybus/arche-apb-ctrl.c | |
parent | f2bf63a365425fa7df56c4e1dbe5a6bb29680324 (diff) | |
download | op-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.c | 34 |
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); +} |