Commit 7b62b61c authored by Viresh Kumar's avatar Viresh Kumar Committed by Greg Kroah-Hartman

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: default avatarViresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: default avatarVaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent f2bf63a3
...@@ -358,7 +358,7 @@ static int apb_ctrl_get_devtree_data(struct platform_device *pdev, ...@@ -358,7 +358,7 @@ static int apb_ctrl_get_devtree_data(struct platform_device *pdev,
return 0; return 0;
} }
int arche_apb_ctrl_probe(struct platform_device *pdev) static int arche_apb_ctrl_probe(struct platform_device *pdev)
{ {
int ret; int ret;
struct arche_apb_ctrl_drvdata *apb; struct arche_apb_ctrl_drvdata *apb;
...@@ -393,7 +393,7 @@ int arche_apb_ctrl_probe(struct platform_device *pdev) ...@@ -393,7 +393,7 @@ int arche_apb_ctrl_probe(struct platform_device *pdev)
return 0; 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); device_remove_file(&pdev->dev, &dev_attr_state);
poweroff_seq(pdev); poweroff_seq(pdev);
...@@ -430,6 +430,30 @@ static int arche_apb_ctrl_resume(struct device *dev) ...@@ -430,6 +430,30 @@ static int arche_apb_ctrl_resume(struct device *dev)
return 0; return 0;
} }
SIMPLE_DEV_PM_OPS(arche_apb_ctrl_pm_ops, static SIMPLE_DEV_PM_OPS(arche_apb_ctrl_pm_ops, arche_apb_ctrl_suspend,
arche_apb_ctrl_suspend, arche_apb_ctrl_resume);
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);
}
...@@ -580,11 +580,6 @@ static struct of_device_id arche_platform_of_match[] = { ...@@ -580,11 +580,6 @@ static struct of_device_id arche_platform_of_match[] = {
{ }, { },
}; };
static struct of_device_id arche_apb_ctrl_of_match[] = {
{ .compatible = "usbffff,2", },
{ },
};
static struct of_device_id arche_combined_id[] = { static struct of_device_id arche_combined_id[] = {
{ .compatible = "google,arche-platform", }, /* Use PID/VID of SVC device */ { .compatible = "google,arche-platform", }, /* Use PID/VID of SVC device */
{ .compatible = "usbffff,2", }, { .compatible = "usbffff,2", },
...@@ -602,16 +597,6 @@ static struct platform_driver arche_platform_device_driver = { ...@@ -602,16 +597,6 @@ static struct platform_driver arche_platform_device_driver = {
} }
}; };
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,
}
};
static int __init arche_init(void) static int __init arche_init(void)
{ {
int retval; int retval;
...@@ -620,7 +605,7 @@ static int __init arche_init(void) ...@@ -620,7 +605,7 @@ static int __init arche_init(void)
if (retval) if (retval)
return retval; return retval;
retval = platform_driver_register(&arche_apb_ctrl_device_driver); retval = arche_apb_init();
if (retval) if (retval)
platform_driver_unregister(&arche_platform_device_driver); platform_driver_unregister(&arche_platform_device_driver);
...@@ -630,7 +615,7 @@ module_init(arche_init); ...@@ -630,7 +615,7 @@ module_init(arche_init);
static void __exit arche_exit(void) static void __exit arche_exit(void)
{ {
platform_driver_unregister(&arche_apb_ctrl_device_driver); arche_apb_exit();
platform_driver_unregister(&arche_platform_device_driver); platform_driver_unregister(&arche_platform_device_driver);
} }
module_exit(arche_exit); module_exit(arche_exit);
......
...@@ -18,8 +18,8 @@ enum arche_platform_state { ...@@ -18,8 +18,8 @@ enum arche_platform_state {
}; };
int arche_apb_ctrl_probe(struct platform_device *pdev); int __init arche_apb_init(void);
int arche_apb_ctrl_remove(struct platform_device *pdev); void __exit arche_apb_exit(void);
/* Operational states for the APB device */ /* Operational states for the APB device */
int apb_ctrl_coldboot(struct device *dev); int apb_ctrl_coldboot(struct device *dev);
...@@ -27,7 +27,4 @@ int apb_ctrl_fw_flashing(struct device *dev); ...@@ -27,7 +27,4 @@ int apb_ctrl_fw_flashing(struct device *dev);
int apb_ctrl_standby_boot(struct device *dev); int apb_ctrl_standby_boot(struct device *dev);
void apb_ctrl_poweroff(struct device *dev); void apb_ctrl_poweroff(struct device *dev);
extern const struct dev_pm_ops arche_apb_ctrl_pm_ops;
#endif /* __ARCHE_PLATFORM_H */ #endif /* __ARCHE_PLATFORM_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment