mirror of https://gitee.com/openkylin/linux.git
greybus: arche-platform: merge arche-apb-ctrl and arche-platform
No need to have two separate arche platform drivers, that's just crazy, so merge them both together to be only one kernel module. Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Reviewed-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org> Tested-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
This commit is contained in:
parent
bc142bbb4c
commit
1e5dd1f827
|
@ -28,8 +28,7 @@ gb-light-y := light.o
|
|||
gb-raw-y := raw.o
|
||||
gb-hid-y := hid.o
|
||||
gb-es2-y := es2.o
|
||||
gb-arche-y := arche-platform.o
|
||||
gb-arche-apb-ctrl-y := arche-apb-ctrl.o
|
||||
gb-arche-y := arche-platform.o arche-apb-ctrl.o
|
||||
gb-audio-codec-y := audio-codec.o
|
||||
gb-camera-y := camera.o
|
||||
|
||||
|
@ -43,7 +42,6 @@ obj-m += gb-hid.o
|
|||
obj-m += gb-raw.o
|
||||
obj-m += gb-es2.o
|
||||
obj-m += gb-arche.o
|
||||
obj-m += gb-arche-apb-ctrl.o
|
||||
obj-m += gb-audio-codec.o
|
||||
obj-m += gb-camera.o
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <linux/spinlock.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include "arche_platform.h"
|
||||
|
||||
enum apb_state {
|
||||
APB_STATE_OFF,
|
||||
|
@ -279,7 +280,7 @@ static void apb_ctrl_cleanup(struct arche_apb_ctrl_drvdata *apb)
|
|||
/* TODO: May have to send an event to SVC about this exit */
|
||||
}
|
||||
|
||||
static int arche_apb_ctrl_probe(struct platform_device *pdev)
|
||||
int arche_apb_ctrl_probe(struct platform_device *pdev)
|
||||
{
|
||||
int ret;
|
||||
struct arche_apb_ctrl_drvdata *apb;
|
||||
|
@ -335,7 +336,7 @@ static int arche_apb_ctrl_probe(struct platform_device *pdev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int arche_apb_ctrl_remove(struct platform_device *pdev)
|
||||
int arche_apb_ctrl_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct arche_apb_ctrl_drvdata *apb = platform_get_drvdata(pdev);
|
||||
|
||||
|
@ -375,28 +376,8 @@ static int arche_apb_ctrl_resume(struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(arche_apb_ctrl_pm_ops,
|
||||
arche_apb_ctrl_suspend,
|
||||
arche_apb_ctrl_resume);
|
||||
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", },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, arche_apb_ctrl_of_match);
|
||||
|
||||
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 = of_match_ptr(arche_apb_ctrl_of_match),
|
||||
}
|
||||
};
|
||||
|
||||
module_platform_driver(arche_apb_ctrl_device_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Vaibhav Hiremath <vaibhav.hiremath@linaro.org>");
|
||||
MODULE_DESCRIPTION("Arche APB control Driver");
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <linux/spinlock.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include "arche_platform.h"
|
||||
|
||||
struct arche_platform_drvdata {
|
||||
/* Control GPIO signals to and from AP <=> SVC */
|
||||
|
@ -208,7 +209,18 @@ static struct of_device_id arche_platform_of_match[] = {
|
|||
{ .compatible = "google,arche-platform", }, /* Use PID/VID of SVC device */
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, 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[] = {
|
||||
{ .compatible = "google,arche-platform", }, /* Use PID/VID of SVC device */
|
||||
{ .compatible = "usbffff,2", },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, arche_combined_id);
|
||||
|
||||
static struct platform_driver arche_platform_device_driver = {
|
||||
.probe = arche_platform_probe,
|
||||
|
@ -216,11 +228,42 @@ static struct platform_driver arche_platform_device_driver = {
|
|||
.driver = {
|
||||
.name = "arche-platform-ctrl",
|
||||
.pm = &arche_platform_pm_ops,
|
||||
.of_match_table = of_match_ptr(arche_platform_of_match),
|
||||
.of_match_table = arche_platform_of_match,
|
||||
}
|
||||
};
|
||||
|
||||
module_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)
|
||||
{
|
||||
int retval;
|
||||
|
||||
retval = platform_driver_register(&arche_platform_device_driver);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
retval = platform_driver_register(&arche_apb_ctrl_device_driver);
|
||||
if (retval)
|
||||
platform_driver_unregister(&arche_platform_device_driver);
|
||||
|
||||
return retval;
|
||||
}
|
||||
module_init(arche_init);
|
||||
|
||||
static void __exit arche_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&arche_apb_ctrl_device_driver);
|
||||
platform_driver_unregister(&arche_platform_device_driver);
|
||||
}
|
||||
module_exit(arche_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Vaibhav Hiremath <vaibhav.hiremath@linaro.org>");
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* Arche Platform driver to enable Unipro link.
|
||||
*
|
||||
* Copyright 2015-2016 Google Inc.
|
||||
* Copyright 2015-2016 Linaro Ltd.
|
||||
*
|
||||
* Released under the GPLv2 only.
|
||||
*/
|
||||
|
||||
#ifndef __ARCHE_PLATFORM_H
|
||||
#define __ARCHE_PLATFORM_H
|
||||
|
||||
int arche_apb_ctrl_probe(struct platform_device *pdev);
|
||||
int arche_apb_ctrl_remove(struct platform_device *pdev);
|
||||
extern const struct dev_pm_ops arche_apb_ctrl_pm_ops;
|
||||
|
||||
#endif /* __ARCHE_PLATFORM_H */
|
Loading…
Reference in New Issue