video: sunxi: extract simplefb match code to a new file
authorIcenowy Zheng <icenowy@aosc.io>
Thu, 26 Oct 2017 03:14:45 +0000 (11:14 +0800)
committerAnatolij Gustschin <agust@denx.de>
Thu, 26 Oct 2017 09:51:45 +0000 (11:51 +0200)
As the DE2 simplefb setup code can also benefit from the simplefb match
code, extract it to a new source file.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
drivers/video/sunxi/Makefile
drivers/video/sunxi/simplefb_common.c [new file with mode: 0644]
drivers/video/sunxi/simplefb_common.h [new file with mode: 0644]
drivers/video/sunxi/sunxi_display.c

index 0d64c2021f874c60736910576a54eaccb1280715..10862edacaf74ba588a1cd71aa34594d38bede12 100644 (file)
@@ -5,5 +5,5 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_VIDEO_SUNXI) += sunxi_display.o lcdc.o tve_common.o ../videomodes.o
+obj-$(CONFIG_VIDEO_SUNXI) += sunxi_display.o simplefb_common.o lcdc.o tve_common.o ../videomodes.o
 obj-$(CONFIG_VIDEO_DE2) += sunxi_de2.o sunxi_dw_hdmi.o lcdc.o ../dw_hdmi.o
diff --git a/drivers/video/sunxi/simplefb_common.c b/drivers/video/sunxi/simplefb_common.c
new file mode 100644 (file)
index 0000000..0cf5f0c
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Common code for Allwinner SimpleFB with pipeline.
+ *
+ * (C) Copyright 2013-2014 Luc Verhaegen <libv@skynet.be>
+ * (C) Copyright 2014-2015 Hans de Goede <hdegoede@redhat.com>
+ * (C) Copyright 2017 Icenowy Zheng <icenowy@aosc.io>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <fdtdec.h>
+
+int sunxi_simplefb_fdt_match(void *blob, const char *pipeline)
+{
+       int offset, ret;
+
+       /* Find a prefilled simpefb node, matching out pipeline config */
+       offset = fdt_node_offset_by_compatible(blob, -1,
+                                              "allwinner,simple-framebuffer");
+       while (offset >= 0) {
+               ret = fdt_stringlist_search(blob, offset, "allwinner,pipeline",
+                                           pipeline);
+               if (ret == 0)
+                       break;
+               offset = fdt_node_offset_by_compatible(blob, offset,
+                                               "allwinner,simple-framebuffer");
+       }
+
+       return offset;
+}
diff --git a/drivers/video/sunxi/simplefb_common.h b/drivers/video/sunxi/simplefb_common.h
new file mode 100644 (file)
index 0000000..1a2bfab
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * (C) Copyright 2017 Icenowy Zheng <icenowy@aosc.io>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __SIMPLEFB_COMMON_H
+#define __SIMPLEFB_COMMON_H
+
+/**
+ * sunxi_simplefb_fdt_match() - match a sunxi simplefb node
+ *
+ * Match a sunxi simplefb device node with a specified pipeline, and
+ * return its offset.
+ *
+ * @blob: device tree blob
+ * @pipeline: display pipeline
+ * @return device node offset in blob, or negative values if failed
+ */
+int sunxi_simplefb_fdt_match(void *blob, const char *pipeline);
+
+#endif
index de768ba94a3351e08ca0a01fb5307dc7237159ff..7f25ed5f26e9d7e90e8be43d076295c6047c3de3 100644 (file)
@@ -29,6 +29,7 @@
 #include "../anx9804.h"
 #include "../hitachi_tx18d42vm_lcd.h"
 #include "../ssd2828.h"
+#include "simplefb_common.h"
 
 #ifdef CONFIG_VIDEO_LCD_BL_PWM_ACTIVE_LOW
 #define PWM_ON 0
@@ -1377,17 +1378,7 @@ int sunxi_simplefb_setup(void *blob)
                break;
        }
 
-       /* Find a prefilled simpefb node, matching out pipeline config */
-       offset = fdt_node_offset_by_compatible(blob, -1,
-                                              "allwinner,simple-framebuffer");
-       while (offset >= 0) {
-               ret = fdt_stringlist_search(blob, offset, "allwinner,pipeline",
-                                           pipeline);
-               if (ret == 0)
-                       break;
-               offset = fdt_node_offset_by_compatible(blob, offset,
-                                              "allwinner,simple-framebuffer");
-       }
+       offset = sunxi_simplefb_fdt_match(blob, pipeline);
        if (offset < 0) {
                eprintf("Cannot setup simplefb: node not found\n");
                return 0; /* Keep older kernels working */