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
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
#include <linux/spinlock.h>
#include <linux/regulator/consumer.h>
#include <linux/pinctrl/consumer.h>
+#include "arche_platform.h"
enum apb_state {
APB_STATE_OFF,
/* 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;
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);
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");
#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 */
{ .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,
.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>");
--- /dev/null
+/*
+ * 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 */