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>
This commit is contained in:
parent
f2bf63a365
commit
7b62b61c75
3 changed files with 33 additions and 27 deletions
|
@ -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)
|
||||||
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)
|
||||||
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[] = {
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
|
|
||||||
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 = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
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)
|
||||||
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);
|
||||||
|
|
||||||
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 {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
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);
|
||||||
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 */
|
||||||
|
|
Loading…
Add table
Reference in a new issue