OMAP2, 3: DSS2: Create new file display.c for central dss driver registration.
authorSumit Semwal <sumit.semwal@ti.com>
Mon, 24 Jan 2011 06:21:54 +0000 (06:21 +0000)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 23 Feb 2011 07:33:27 +0000 (09:33 +0200)
A new file display.c is introduced for display driver init, which adds a function
omap_display_init to do the DSS driver registration. This is the first step in moving
away registration of DSS from board files into a common place.

Reviewed-by: Kevin Hilman <khilman@ti.com>
Tested-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Senthilvadivu Guruswamy <svadivu@ti.com>
Signed-off-by: Sumit Semwal <sumit.semwal@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/display.c [new file with mode: 0644]
arch/arm/plat-omap/include/plat/display.h

index ee72a9787bf15e63424d777e35943eec02f80d1a..1c3635d7f4cfded1e61086535b8729ea9c7b032a 100644 (file)
@@ -245,3 +245,6 @@ obj-y                                       += $(smc91x-m) $(smc91x-y)
 smsc911x-$(CONFIG_SMSC911X)            := gpmc-smsc911x.o
 obj-y                                  += $(smsc911x-m) $(smsc911x-y)
 obj-$(CONFIG_ARCH_OMAP4)               += hwspinlock.o
+
+disp-$(CONFIG_OMAP2_DSS)               := display.o
+obj-y                                  += $(disp-m) $(disp-y)
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
new file mode 100644 (file)
index 0000000..b18db84
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * OMAP2plus display device setup / initialization.
+ *
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
+ *     Senthilvadivu Guruswamy
+ *     Sumit Semwal
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/io.h>
+#include <linux/clk.h>
+#include <linux/err.h>
+
+#include <plat/display.h>
+
+static struct platform_device omap_display_device = {
+       .name          = "omapdss",
+       .id            = -1,
+       .dev            = {
+               .platform_data = NULL,
+       },
+};
+
+int __init omap_display_init(struct omap_dss_board_info *board_data)
+{
+       int r = 0;
+       omap_display_device.dev.platform_data = board_data;
+
+       r = platform_device_register(&omap_display_device);
+       if (r < 0)
+               printk(KERN_ERR "Unable to register OMAP-Display device\n");
+
+       return r;
+}
index 537f4e449f50b429b05f3c21ac74e9f7920b18c9..0f140ecedb01da592e8f8d923a5a3a31b093cee1 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/list.h>
 #include <linux/kobject.h>
 #include <linux/device.h>
+#include <linux/platform_device.h>
 #include <asm/atomic.h>
 
 #define DISPC_IRQ_FRAMEDONE            (1 << 0)
@@ -226,6 +227,16 @@ struct omap_dss_board_info {
        struct omap_dss_device *default_device;
 };
 
+#if defined(CONFIG_OMAP2_DSS_MODULE) || defined(CONFIG_OMAP2_DSS)
+/* Init with the board info */
+extern int omap_display_init(struct omap_dss_board_info *board_data);
+#else
+static inline int omap_display_init(struct omap_dss_board_info *board_data)
+{
+       return 0;
+}
+#endif
+
 struct omap_video_timings {
        /* Unit: pixels */
        u16 x_res;