[RFC PATCH 04/11] OMAP: Add early device for system control module
From: Cousson, Benoit <hidden>
Date: 2012-05-25 12:32:41
Also in:
linux-omap, linux-pm
On 5/25/2012 10:25 AM, Eduardo Valentin wrote:
quoted hunk ↗ jump to hunk
This is a way to add an early device for system control module. the code is also requesting for driver registration and probing. Done at early_initcall because at that time, ioremapping is possible. Signed-off-by: Eduardo Valentin<redacted> --- arch/arm/mach-omap2/devices.c | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-)diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 9332673..58cc5c3 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c@@ -40,6 +40,35 @@ #define L3_MODULES_MAX_LEN 12 #define L3_MODULES 3 +static struct resource control_resources[] = { + [0] = { + .start = 0x4a002000, + .end = 0x4a0027ff, + .flags = IORESOURCE_MEM, + }, +};
I guess you should be able to do use DT to build the early device as well. It will avoid hard coding some physical address inside the devices. Regards, Benoit
+static struct platform_device control_device = {
+ .name = "omap-control-core",
+ .id = 0,
+ .resource = control_resources,
+ .num_resources = ARRAY_SIZE(control_resources),
+};
+
+static struct platform_device *early_devices[] __initdata = {
+ &control_device,
+};
+
+static int __init plat_early_device_setup(void)
+{
+ early_platform_add_devices(early_devices,
+ ARRAY_SIZE(early_devices));
+ early_platform_driver_register_all("early_omap_control");
+ early_platform_driver_probe("early_omap_control", 1, false);
+
+ return 0;
+}
+early_initcall(plat_early_device_setup);
+
static int omap_init_control(void)
{
struct omap_hwmod *oh;