All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v4 0/2] sunxi: video: Add simplefb support
@ 2014-11-17 15:48 Hans de Goede
  2014-11-17 15:48 ` [U-Boot] [PATCH v4 1/2] fdt_support: Add a fdt_setup_simplefb_node helper function Hans de Goede
  2014-11-17 15:48 ` [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support Hans de Goede
  0 siblings, 2 replies; 12+ messages in thread
From: Hans de Goede @ 2014-11-17 15:48 UTC (permalink / raw)
  To: u-boot

Hi All,

Here is v4 of my sunxi simplefb support set.

Changes since v3:
-Added a fdt_setup_simplefb_node() helper function (new patch)
-Changed how u-boot finds the pre-populated simplefb node to use a
 compatible string

Changes since v2:
-Detect and handle address and size #cells

Changes since v1:
-Use fdt_setprop_string for strings

Simon, can you review and ack the fdt_setup_simplefb_node() helper function
patch please ? Since it is a dep. for sunxi patches I would like to take it
upstream through the sunxi tree, but for obvious reasons I would also like
your ack on this.

Ian, I hope the sunxi specific patch is now more to your liking, please
re-review. Also can you please review v2 of:

-"sunxi: video: Add cfb console driver for sunxi"
 You've already reviewed and acked v1, v2 only has some Kconfig changes

-"sunxi: Add usb keyboard Kconfig option"
 Kconfig changes / fixes as discussed

You should have these in your mailbox, if not see patchwork.

Thanks & Regards,

Hans

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 1/2] fdt_support: Add a fdt_setup_simplefb_node helper function
  2014-11-17 15:48 [U-Boot] [PATCH v4 0/2] sunxi: video: Add simplefb support Hans de Goede
@ 2014-11-17 15:48 ` Hans de Goede
  2014-11-17 18:32   ` Simon Glass
  2014-11-17 15:48 ` [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support Hans de Goede
  1 sibling, 1 reply; 12+ messages in thread
From: Hans de Goede @ 2014-11-17 15:48 UTC (permalink / raw)
  To: u-boot

Add a generic helper to fill and enable simplefb nodes.

The first user of this will be the sunxi display code.

lcd_dt_simplefb_configure_node is also a good candidate to be converted
to use this, but that requires someone to run some tests first, as
lcd_dt_simplefb_configure_node does not honor #address-cells and #size-cells,
but simply assumes 1 and 1 for both.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 common/fdt_support.c  | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++
 include/fdt_support.h |  3 +++
 2 files changed, 68 insertions(+)

diff --git a/common/fdt_support.c b/common/fdt_support.c
index 3f64156..0ffa711 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -1523,3 +1523,68 @@ int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr,
 
 	return 0;
 }
+
+/**
+ * fdt_setup_simplefb_node - Fill and enable a simplefb node
+ *
+ * @fdt: ptr to device tree
+ * @node: offset of the simplefb node
+ * @base_address: framebuffer base address
+ * @width: width in pixels
+ * @height: height in pixels
+ * @stride: bytes per line
+ * @format: pixel format string
+ *
+ * Convenience function to fill and enable a simplefb node.
+ */
+int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
+			    u32 height, u32 stride, const char *format)
+{
+	char name[32];
+	fdt32_t cells[4];
+	int i, addrc, sizec, ret;
+
+	of_bus_default_count_cells(fdt, fdt_parent_offset(fdt, node),
+				   &addrc, &sizec);
+	i = 0;
+	if (addrc == 2)
+		cells[i++] = cpu_to_fdt32(base_address >> 32);
+	cells[i++] = cpu_to_fdt32(base_address);
+	if (sizec == 2)
+		cells[i++] = 0;
+	cells[i++] = cpu_to_fdt32(height * stride);
+
+	ret = fdt_setprop(fdt, node, "reg", cells, sizeof(cells[0]) * i);
+	if (ret < 0)
+		return ret;
+
+	snprintf(name, sizeof(name), "framebuffer@%llx", base_address);
+	ret = fdt_set_name(fdt, node, name);
+	if (ret < 0)
+		return ret;
+
+	cells[0] = cpu_to_fdt32(width);
+	ret = fdt_setprop(fdt, node, "width", cells, sizeof(cells[0]));
+	if (ret < 0)
+		return ret;
+
+	cells[0] = cpu_to_fdt32(height);
+	ret = fdt_setprop(fdt, node, "height", cells, sizeof(cells[0]));
+	if (ret < 0)
+		return ret;
+
+	cells[0] = cpu_to_fdt32(stride);
+	ret = fdt_setprop(fdt, node, "stride", cells, sizeof(cells[0]));
+	if (ret < 0)
+		return ret;
+
+	ret = fdt_setprop_string(fdt, node, "format", format);
+	if (ret < 0)
+		return ret;
+
+	ret = fdt_setprop_string(fdt, node, "status", "okay");
+	if (ret < 0)
+		return ret;
+
+	return 0;
+}
diff --git a/include/fdt_support.h b/include/fdt_support.h
index 55cef94..d5e09e6 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -147,6 +147,9 @@ void of_bus_default_count_cells(void *blob, int parentoffset,
 int ft_verify_fdt(void *fdt);
 int arch_fixup_memory_node(void *blob);
 
+int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
+			    u32 height, u32 stride, const char *format);
+
 #endif /* ifdef CONFIG_OF_LIBFDT */
 
 #ifdef USE_HOSTCC
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support
  2014-11-17 15:48 [U-Boot] [PATCH v4 0/2] sunxi: video: Add simplefb support Hans de Goede
  2014-11-17 15:48 ` [U-Boot] [PATCH v4 1/2] fdt_support: Add a fdt_setup_simplefb_node helper function Hans de Goede
@ 2014-11-17 15:48 ` Hans de Goede
  2014-11-17 18:39   ` Simon Glass
  2014-11-17 19:12   ` Ian Campbell
  1 sibling, 2 replies; 12+ messages in thread
From: Hans de Goede @ 2014-11-17 15:48 UTC (permalink / raw)
  To: u-boot

From: Luc Verhaegen <libv@skynet.be>

Add simplefb support, note this depends on the kernel having support for
the clocks property which has recently been added to the simplefb devicetree
binding.

Signed-off-by: Luc Verhaegen <libv@skynet.be>
[hdegoede at redhat.com: Use pre-populated simplefb node under /chosen as
 disussed on the devicetree list]
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 arch/arm/include/asm/arch-sunxi/display.h |  4 ++++
 board/sunxi/board.c                       | 11 +++++++++
 drivers/video/sunxi_display.c             | 39 +++++++++++++++++++++++++++++++
 include/configs/sunxi-common.h            |  8 +++++++
 4 files changed, 62 insertions(+)

diff --git a/arch/arm/include/asm/arch-sunxi/display.h b/arch/arm/include/asm/arch-sunxi/display.h
index 8d80ceb..4c694f8 100644
--- a/arch/arm/include/asm/arch-sunxi/display.h
+++ b/arch/arm/include/asm/arch-sunxi/display.h
@@ -195,4 +195,8 @@ struct sunxi_hdmi_reg {
 #define SUNXI_HDMI_PLL_DBG0_PLL3		(0 << 21)
 #define SUNXI_HDMI_PLL_DBG0_PLL7		(1 << 21)
 
+#ifdef CONFIG_VIDEO_DT_SIMPLEFB
+void sunxi_simplefb_setup(void *blob);
+#endif
+
 #endif /* _SUNXI_DISPLAY_H */
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index e6ec5b8..d4530e8 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -24,6 +24,7 @@
 #endif
 #include <asm/arch/clock.h>
 #include <asm/arch/cpu.h>
+#include <asm/arch/display.h>
 #include <asm/arch/dram.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/mmc.h>
@@ -237,3 +238,13 @@ int misc_init_r(void)
 	return 0;
 }
 #endif
+
+#ifdef CONFIG_OF_BOARD_SETUP
+void
+ft_board_setup(void *blob, bd_t *bd)
+{
+#ifdef CONFIG_VIDEO_DT_SIMPLEFB
+	sunxi_simplefb_setup(blob);
+#endif
+}
+#endif /* CONFIG_OF_BOARD_SETUP */
diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
index 3f46c31..74c4bd3 100644
--- a/drivers/video/sunxi_display.c
+++ b/drivers/video/sunxi_display.c
@@ -13,6 +13,8 @@
 #include <asm/arch/display.h>
 #include <asm/global_data.h>
 #include <asm/io.h>
+#include <fdtdec.h>
+#include <fdt_support.h>
 #include <linux/fb.h>
 #include <video_fb.h>
 
@@ -416,3 +418,40 @@ video_hw_init(void)
 
 	return graphic_device;
 }
+
+/*
+ * Simplefb support.
+ */
+#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_VIDEO_DT_SIMPLEFB)
+void
+sunxi_simplefb_setup(void *blob)
+{
+	static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
+	int offset, ret;
+
+	if (!sunxi_display.enabled)
+		return;
+
+	/* Find a framebuffer node, with pipeline == "de_be0-lcd0-hdmi" */
+	offset = fdt_node_offset_by_compatible(blob, -1, "sunxi,framebuffer");
+	while (offset >= 0) {
+		ret = fdt_find_string(blob, offset, "sunxi,pipeline",
+				      "de_be0-lcd0-hdmi");
+		if (ret == 0)
+			break;
+		offset = fdt_node_offset_by_compatible(blob, offset,
+						       "sunxi,framebuffer");
+	}
+	if (offset < 0) {
+		eprintf("Cannot setup simplefb: node not found\n");
+		return;
+	}
+
+	ret = fdt_setup_simplefb_node(blob, offset, gd->fb_base,
+			graphic_device->winSizeX, graphic_device->winSizeY,
+			graphic_device->winSizeX * graphic_device->gdfBytesPP,
+			"x8r8g8b8");
+	if (ret < 0)
+		eprintf("Cannot setup simplefb: Error setting properties\n");
+}
+#endif /* CONFIG_OF_BOARD_SETUP && CONFIG_VIDEO_DT_SIMPLEFB */
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index 900ef52..d5d907b 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -204,6 +204,9 @@
  */
 #define CONFIG_SUNXI_FB_SIZE (8 << 20)
 
+/* Do we want to initialize a simple FB? */
+#define CONFIG_VIDEO_DT_SIMPLEFB
+
 #define CONFIG_VIDEO_SUNXI
 
 #define CONFIG_CFB_CONSOLE
@@ -217,6 +220,11 @@
 
 #define CONFIG_SYS_MEM_TOP_HIDE ((CONFIG_SUNXI_FB_SIZE + 0xFFF) & ~0xFFF)
 
+/* To be able to hook simplefb into dt */
+#ifdef CONFIG_VIDEO_DT_SIMPLEFB
+#define CONFIG_OF_BOARD_SETUP
+#endif
+
 #endif /* CONFIG_VIDEO */
 
 /* Ethernet support */
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 1/2] fdt_support: Add a fdt_setup_simplefb_node helper function
  2014-11-17 15:48 ` [U-Boot] [PATCH v4 1/2] fdt_support: Add a fdt_setup_simplefb_node helper function Hans de Goede
@ 2014-11-17 18:32   ` Simon Glass
  2014-11-18 11:18     ` Hans de Goede
  0 siblings, 1 reply; 12+ messages in thread
From: Simon Glass @ 2014-11-17 18:32 UTC (permalink / raw)
  To: u-boot

Hi Hans,

On 17 November 2014 15:48, Hans de Goede <hdegoede@redhat.com> wrote:
> Add a generic helper to fill and enable simplefb nodes.
>
> The first user of this will be the sunxi display code.
>
> lcd_dt_simplefb_configure_node is also a good candidate to be converted
> to use this, but that requires someone to run some tests first, as
> lcd_dt_simplefb_configure_node does not honor #address-cells and #size-cells,
> but simply assumes 1 and 1 for both.
>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  common/fdt_support.c  | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  include/fdt_support.h |  3 +++
>  2 files changed, 68 insertions(+)
>
> diff --git a/common/fdt_support.c b/common/fdt_support.c
> index 3f64156..0ffa711 100644
> --- a/common/fdt_support.c
> +++ b/common/fdt_support.c
> @@ -1523,3 +1523,68 @@ int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr,
>
>         return 0;
>  }
> +
> +/**
> + * fdt_setup_simplefb_node - Fill and enable a simplefb node
> + *
> + * @fdt: ptr to device tree
> + * @node: offset of the simplefb node
> + * @base_address: framebuffer base address
> + * @width: width in pixels
> + * @height: height in pixels
> + * @stride: bytes per line
> + * @format: pixel format string
> + *
> + * Convenience function to fill and enable a simplefb node.
> + */
> +int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
> +                           u32 height, u32 stride, const char *format)

Please see lcd_dt_simplefb_configure_node() which seems similar.

Regards,
Simon

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support
  2014-11-17 15:48 ` [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support Hans de Goede
@ 2014-11-17 18:39   ` Simon Glass
  2014-11-18 11:23     ` Hans de Goede
  2014-11-17 19:12   ` Ian Campbell
  1 sibling, 1 reply; 12+ messages in thread
From: Simon Glass @ 2014-11-17 18:39 UTC (permalink / raw)
  To: u-boot

Hi Hans,

On 17 November 2014 15:48, Hans de Goede <hdegoede@redhat.com> wrote:
> From: Luc Verhaegen <libv@skynet.be>
>
> Add simplefb support, note this depends on the kernel having support for
> the clocks property which has recently been added to the simplefb devicetree
> binding.
>
> Signed-off-by: Luc Verhaegen <libv@skynet.be>
> [hdegoede at redhat.com: Use pre-populated simplefb node under /chosen as
>  disussed on the devicetree list]
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  arch/arm/include/asm/arch-sunxi/display.h |  4 ++++
>  board/sunxi/board.c                       | 11 +++++++++
>  drivers/video/sunxi_display.c             | 39 +++++++++++++++++++++++++++++++
>  include/configs/sunxi-common.h            |  8 +++++++
>  4 files changed, 62 insertions(+)
>
> diff --git a/arch/arm/include/asm/arch-sunxi/display.h b/arch/arm/include/asm/arch-sunxi/display.h
> index 8d80ceb..4c694f8 100644
> --- a/arch/arm/include/asm/arch-sunxi/display.h
> +++ b/arch/arm/include/asm/arch-sunxi/display.h
> @@ -195,4 +195,8 @@ struct sunxi_hdmi_reg {
>  #define SUNXI_HDMI_PLL_DBG0_PLL3               (0 << 21)
>  #define SUNXI_HDMI_PLL_DBG0_PLL7               (1 << 21)
>
> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
> +void sunxi_simplefb_setup(void *blob);
> +#endif
> +
>  #endif /* _SUNXI_DISPLAY_H */
> diff --git a/board/sunxi/board.c b/board/sunxi/board.c
> index e6ec5b8..d4530e8 100644
> --- a/board/sunxi/board.c
> +++ b/board/sunxi/board.c
> @@ -24,6 +24,7 @@
>  #endif
>  #include <asm/arch/clock.h>
>  #include <asm/arch/cpu.h>
> +#include <asm/arch/display.h>
>  #include <asm/arch/dram.h>
>  #include <asm/arch/gpio.h>
>  #include <asm/arch/mmc.h>
> @@ -237,3 +238,13 @@ int misc_init_r(void)
>         return 0;
>  }
>  #endif
> +
> +#ifdef CONFIG_OF_BOARD_SETUP
> +void
> +ft_board_setup(void *blob, bd_t *bd)
> +{
> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
> +       sunxi_simplefb_setup(blob);
> +#endif
> +}
> +#endif /* CONFIG_OF_BOARD_SETUP */
> diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
> index 3f46c31..74c4bd3 100644
> --- a/drivers/video/sunxi_display.c
> +++ b/drivers/video/sunxi_display.c
> @@ -13,6 +13,8 @@
>  #include <asm/arch/display.h>
>  #include <asm/global_data.h>
>  #include <asm/io.h>
> +#include <fdtdec.h>
> +#include <fdt_support.h>
>  #include <linux/fb.h>
>  #include <video_fb.h>
>
> @@ -416,3 +418,40 @@ video_hw_init(void)
>
>         return graphic_device;
>  }
> +
> +/*
> + * Simplefb support.
> + */
> +#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_VIDEO_DT_SIMPLEFB)
> +void
> +sunxi_simplefb_setup(void *blob)
> +{
> +       static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
> +       int offset, ret;
> +
> +       if (!sunxi_display.enabled)
> +               return;

return -ENOENT?

> +
> +       /* Find a framebuffer node, with pipeline == "de_be0-lcd0-hdmi" */
> +       offset = fdt_node_offset_by_compatible(blob, -1, "sunxi,framebuffer");

These should convert to DM at some point. To make sure we don't forget
any, you should add this compatible string to fdtdec.c and use the
enum from fdtdec.h and also fdtdec_next_compatible().

> +       while (offset >= 0) {
> +               ret = fdt_find_string(blob, offset, "sunxi,pipeline",
> +                                     "de_be0-lcd0-hdmi");
> +               if (ret == 0)
> +                       break;
> +               offset = fdt_node_offset_by_compatible(blob, offset,
> +                                                      "sunxi,framebuffer");
> +       }
> +       if (offset < 0) {
> +               eprintf("Cannot setup simplefb: node not found\n");
> +               return;

return -ENODEV?

> +       }
> +
> +       ret = fdt_setup_simplefb_node(blob, offset, gd->fb_base,
> +                       graphic_device->winSizeX, graphic_device->winSizeY,
> +                       graphic_device->winSizeX * graphic_device->gdfBytesPP,
> +                       "x8r8g8b8");
> +       if (ret < 0)
> +               eprintf("Cannot setup simplefb: Error setting properties\n");

Can we return the error here? Maybe -EPERM or something like that.

> +}
> +#endif /* CONFIG_OF_BOARD_SETUP && CONFIG_VIDEO_DT_SIMPLEFB */
> diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
> index 900ef52..d5d907b 100644
> --- a/include/configs/sunxi-common.h
> +++ b/include/configs/sunxi-common.h
> @@ -204,6 +204,9 @@
>   */
>  #define CONFIG_SUNXI_FB_SIZE (8 << 20)
>
> +/* Do we want to initialize a simple FB? */
> +#define CONFIG_VIDEO_DT_SIMPLEFB
> +
>  #define CONFIG_VIDEO_SUNXI
>
>  #define CONFIG_CFB_CONSOLE
> @@ -217,6 +220,11 @@
>
>  #define CONFIG_SYS_MEM_TOP_HIDE ((CONFIG_SUNXI_FB_SIZE + 0xFFF) & ~0xFFF)
>
> +/* To be able to hook simplefb into dt */
> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
> +#define CONFIG_OF_BOARD_SETUP
> +#endif
> +
>  #endif /* CONFIG_VIDEO */
>
>  /* Ethernet support */
> --
> 2.1.0
>

Regards,
Simon

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support
  2014-11-17 15:48 ` [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support Hans de Goede
  2014-11-17 18:39   ` Simon Glass
@ 2014-11-17 19:12   ` Ian Campbell
  1 sibling, 0 replies; 12+ messages in thread
From: Ian Campbell @ 2014-11-17 19:12 UTC (permalink / raw)
  To: u-boot

On Mon, 2014-11-17 at 16:48 +0100, Hans de Goede wrote:
> From: Luc Verhaegen <libv@skynet.be>
> 
> Add simplefb support, note this depends on the kernel having support for
> the clocks property which has recently been added to the simplefb devicetree
> binding.
> 
> Signed-off-by: Luc Verhaegen <libv@skynet.be>
> [hdegoede at redhat.com: Use pre-populated simplefb node under /chosen as
>  disussed on the devicetree list]
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

I've no comments over and above what Simon said.

Ian.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 1/2] fdt_support: Add a fdt_setup_simplefb_node helper function
  2014-11-17 18:32   ` Simon Glass
@ 2014-11-18 11:18     ` Hans de Goede
  2014-11-18 14:30       ` Simon Glass
  0 siblings, 1 reply; 12+ messages in thread
From: Hans de Goede @ 2014-11-18 11:18 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On 11/17/2014 07:32 PM, Simon Glass wrote:
> Hi Hans,
> 
> On 17 November 2014 15:48, Hans de Goede <hdegoede@redhat.com> wrote:
>> Add a generic helper to fill and enable simplefb nodes.
>>
>> The first user of this will be the sunxi display code.
>>
>> lcd_dt_simplefb_configure_node is also a good candidate to be converted
>> to use this, but that requires someone to run some tests first, as
>> lcd_dt_simplefb_configure_node does not honor #address-cells and #size-cells,
>> but simply assumes 1 and 1 for both.
>>
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>>  common/fdt_support.c  | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++
>>  include/fdt_support.h |  3 +++
>>  2 files changed, 68 insertions(+)
>>
>> diff --git a/common/fdt_support.c b/common/fdt_support.c
>> index 3f64156..0ffa711 100644
>> --- a/common/fdt_support.c
>> +++ b/common/fdt_support.c
>> @@ -1523,3 +1523,68 @@ int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr,
>>
>>         return 0;
>>  }
>> +
>> +/**
>> + * fdt_setup_simplefb_node - Fill and enable a simplefb node
>> + *
>> + * @fdt: ptr to device tree
>> + * @node: offset of the simplefb node
>> + * @base_address: framebuffer base address
>> + * @width: width in pixels
>> + * @height: height in pixels
>> + * @stride: bytes per line
>> + * @format: pixel format string
>> + *
>> + * Convenience function to fill and enable a simplefb node.
>> + */
>> +int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
>> +                           u32 height, u32 stride, const char *format)
> 
> Please see lcd_dt_simplefb_configure_node() which seems similar.

As mentioned in the commit message already :) lcd_dt_simplefb_configure_node()
should be made to use this new helper function eventually.

There are several reasons why lcd_dt_simplefb_configure_node() is not usable
as a generic helper, and this new function is necessary:

1) It is lcd specific, only available if CONFIG_LCD is set
2) It does not take width / height / stride parameters, instead it reads global
variables from lcd.c which are only set if the other common/lcd.c functions are
used.
3) It hardcodes the format
4) It does not properly handle #address-cells and #size-cells

4) Is the main reason why I've not included a patch in my patch-set to move
lcd_dt_simplefb_configure_node() over to use this new helper, as I'm afraid
that may break things. of_bus_default_count_cells() will return different
values then the 1/1 the current lcd code assumes when no #address-cells or
#size-cells are present in the parent.

So my plan is to add this new helper, use it for sunxi, and ask someone who
has a board which is using lcd.c + simplefb to test moving lcd.c over to
the new helper.

Regards,

Hans

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support
  2014-11-17 18:39   ` Simon Glass
@ 2014-11-18 11:23     ` Hans de Goede
  2014-11-18 14:32       ` Simon Glass
  0 siblings, 1 reply; 12+ messages in thread
From: Hans de Goede @ 2014-11-18 11:23 UTC (permalink / raw)
  To: u-boot

Hi,

On 11/17/2014 07:39 PM, Simon Glass wrote:
> Hi Hans,
> 
> On 17 November 2014 15:48, Hans de Goede <hdegoede@redhat.com> wrote:
>> From: Luc Verhaegen <libv@skynet.be>
>>
>> Add simplefb support, note this depends on the kernel having support for
>> the clocks property which has recently been added to the simplefb devicetree
>> binding.
>>
>> Signed-off-by: Luc Verhaegen <libv@skynet.be>
>> [hdegoede at redhat.com: Use pre-populated simplefb node under /chosen as
>>  disussed on the devicetree list]
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>>  arch/arm/include/asm/arch-sunxi/display.h |  4 ++++
>>  board/sunxi/board.c                       | 11 +++++++++
>>  drivers/video/sunxi_display.c             | 39 +++++++++++++++++++++++++++++++
>>  include/configs/sunxi-common.h            |  8 +++++++
>>  4 files changed, 62 insertions(+)
>>
>> diff --git a/arch/arm/include/asm/arch-sunxi/display.h b/arch/arm/include/asm/arch-sunxi/display.h
>> index 8d80ceb..4c694f8 100644
>> --- a/arch/arm/include/asm/arch-sunxi/display.h
>> +++ b/arch/arm/include/asm/arch-sunxi/display.h
>> @@ -195,4 +195,8 @@ struct sunxi_hdmi_reg {
>>  #define SUNXI_HDMI_PLL_DBG0_PLL3               (0 << 21)
>>  #define SUNXI_HDMI_PLL_DBG0_PLL7               (1 << 21)
>>
>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>> +void sunxi_simplefb_setup(void *blob);
>> +#endif
>> +
>>  #endif /* _SUNXI_DISPLAY_H */
>> diff --git a/board/sunxi/board.c b/board/sunxi/board.c
>> index e6ec5b8..d4530e8 100644
>> --- a/board/sunxi/board.c
>> +++ b/board/sunxi/board.c
>> @@ -24,6 +24,7 @@
>>  #endif
>>  #include <asm/arch/clock.h>
>>  #include <asm/arch/cpu.h>
>> +#include <asm/arch/display.h>
>>  #include <asm/arch/dram.h>
>>  #include <asm/arch/gpio.h>
>>  #include <asm/arch/mmc.h>
>> @@ -237,3 +238,13 @@ int misc_init_r(void)
>>         return 0;
>>  }
>>  #endif
>> +
>> +#ifdef CONFIG_OF_BOARD_SETUP
>> +void
>> +ft_board_setup(void *blob, bd_t *bd)
>> +{
>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>> +       sunxi_simplefb_setup(blob);
>> +#endif
>> +}
>> +#endif /* CONFIG_OF_BOARD_SETUP */
>> diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
>> index 3f46c31..74c4bd3 100644
>> --- a/drivers/video/sunxi_display.c
>> +++ b/drivers/video/sunxi_display.c
>> @@ -13,6 +13,8 @@
>>  #include <asm/arch/display.h>
>>  #include <asm/global_data.h>
>>  #include <asm/io.h>
>> +#include <fdtdec.h>
>> +#include <fdt_support.h>
>>  #include <linux/fb.h>
>>  #include <video_fb.h>
>>
>> @@ -416,3 +418,40 @@ video_hw_init(void)
>>
>>         return graphic_device;
>>  }
>> +
>> +/*
>> + * Simplefb support.
>> + */
>> +#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_VIDEO_DT_SIMPLEFB)
>> +void
>> +sunxi_simplefb_setup(void *blob)
>> +{
>> +       static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
>> +       int offset, ret;
>> +
>> +       if (!sunxi_display.enabled)
>> +               return;
> 
> return -ENOENT?

If people want this, I can change the proto to an int and make sunxi_simplefb_setup
return error codes as you suggest, but this function gets called from
ft_board_setup which is void itself, so there is no where to propagate the error,
and more-over we do not want simplefb setup errors to be treated as fatal, so
I see little use in having it return error codes.

>> +
>> +       /* Find a framebuffer node, with pipeline == "de_be0-lcd0-hdmi" */
>> +       offset = fdt_node_offset_by_compatible(blob, -1, "sunxi,framebuffer");
> 
> These should convert to DM at some point. To make sure we don't forget
> any, you should add this compatible string to fdtdec.c and use the
> enum from fdtdec.h and also fdtdec_next_compatible().

Most sunxi boards do not set CONFIG_OF_CONTROL, so the ftddec functions are
not available.

>> +       while (offset >= 0) {
>> +               ret = fdt_find_string(blob, offset, "sunxi,pipeline",
>> +                                     "de_be0-lcd0-hdmi");
>> +               if (ret == 0)
>> +                       break;
>> +               offset = fdt_node_offset_by_compatible(blob, offset,
>> +                                                      "sunxi,framebuffer");
>> +       }
>> +       if (offset < 0) {
>> +               eprintf("Cannot setup simplefb: node not found\n");
>> +               return;
> 
> return -ENODEV?
> 
>> +       }
>> +
>> +       ret = fdt_setup_simplefb_node(blob, offset, gd->fb_base,
>> +                       graphic_device->winSizeX, graphic_device->winSizeY,
>> +                       graphic_device->winSizeX * graphic_device->gdfBytesPP,
>> +                       "x8r8g8b8");
>> +       if (ret < 0)
>> +               eprintf("Cannot setup simplefb: Error setting properties\n");
> 
> Can we return the error here? Maybe -EPERM or something like that.
> 
>> +}
>> +#endif /* CONFIG_OF_BOARD_SETUP && CONFIG_VIDEO_DT_SIMPLEFB */
>> diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
>> index 900ef52..d5d907b 100644
>> --- a/include/configs/sunxi-common.h
>> +++ b/include/configs/sunxi-common.h
>> @@ -204,6 +204,9 @@
>>   */
>>  #define CONFIG_SUNXI_FB_SIZE (8 << 20)
>>
>> +/* Do we want to initialize a simple FB? */
>> +#define CONFIG_VIDEO_DT_SIMPLEFB
>> +
>>  #define CONFIG_VIDEO_SUNXI
>>
>>  #define CONFIG_CFB_CONSOLE
>> @@ -217,6 +220,11 @@
>>
>>  #define CONFIG_SYS_MEM_TOP_HIDE ((CONFIG_SUNXI_FB_SIZE + 0xFFF) & ~0xFFF)
>>
>> +/* To be able to hook simplefb into dt */
>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>> +#define CONFIG_OF_BOARD_SETUP
>> +#endif
>> +
>>  #endif /* CONFIG_VIDEO */
>>
>>  /* Ethernet support */

Regards,

Hans

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 1/2] fdt_support: Add a fdt_setup_simplefb_node helper function
  2014-11-18 11:18     ` Hans de Goede
@ 2014-11-18 14:30       ` Simon Glass
  0 siblings, 0 replies; 12+ messages in thread
From: Simon Glass @ 2014-11-18 14:30 UTC (permalink / raw)
  To: u-boot

Hi Hans,

On 18 November 2014 11:18, Hans de Goede <hdegoede@redhat.com> wrote:
>
> Hi Simon,
>
> On 11/17/2014 07:32 PM, Simon Glass wrote:
> > Hi Hans,
> >
> > On 17 November 2014 15:48, Hans de Goede <hdegoede@redhat.com> wrote:
> >> Add a generic helper to fill and enable simplefb nodes.
> >>
> >> The first user of this will be the sunxi display code.
> >>
> >> lcd_dt_simplefb_configure_node is also a good candidate to be converted
> >> to use this, but that requires someone to run some tests first, as
> >> lcd_dt_simplefb_configure_node does not honor #address-cells and #size-cells,
> >> but simply assumes 1 and 1 for both.
> >>
> >> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> >> ---
> >>  common/fdt_support.c  | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++
> >>  include/fdt_support.h |  3 +++
> >>  2 files changed, 68 insertions(+)
> >>
> >> diff --git a/common/fdt_support.c b/common/fdt_support.c
> >> index 3f64156..0ffa711 100644
> >> --- a/common/fdt_support.c
> >> +++ b/common/fdt_support.c
> >> @@ -1523,3 +1523,68 @@ int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr,
> >>
> >>         return 0;
> >>  }
> >> +
> >> +/**
> >> + * fdt_setup_simplefb_node - Fill and enable a simplefb node
> >> + *
> >> + * @fdt: ptr to device tree
> >> + * @node: offset of the simplefb node
> >> + * @base_address: framebuffer base address
> >> + * @width: width in pixels
> >> + * @height: height in pixels
> >> + * @stride: bytes per line
> >> + * @format: pixel format string
> >> + *
> >> + * Convenience function to fill and enable a simplefb node.
> >> + */
> >> +int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
> >> +                           u32 height, u32 stride, const char *format)
> >
> > Please see lcd_dt_simplefb_configure_node() which seems similar.
>
> As mentioned in the commit message already :) lcd_dt_simplefb_configure_node()
> should be made to use this new helper function eventually.

OK I think we have established that I can't read :-)

>
> There are several reasons why lcd_dt_simplefb_configure_node() is not usable
> as a generic helper, and this new function is necessary:
>
> 1) It is lcd specific, only available if CONFIG_LCD is set
> 2) It does not take width / height / stride parameters, instead it reads global
> variables from lcd.c which are only set if the other common/lcd.c functions are
> used.
> 3) It hardcodes the format
> 4) It does not properly handle #address-cells and #size-cells
>
> 4) Is the main reason why I've not included a patch in my patch-set to move
> lcd_dt_simplefb_configure_node() over to use this new helper, as I'm afraid
> that may break things. of_bus_default_count_cells() will return different
> values then the 1/1 the current lcd code assumes when no #address-cells or
> #size-cells are present in the parent.
>
> So my plan is to add this new helper, use it for sunxi, and ask someone who
> has a board which is using lcd.c + simplefb to test moving lcd.c over to
> the new helper.

I think it's only used by Raspberry Pi. If you send the patch I can
test it next week. But we really shouldn't have two such similar
functions.

Regards,
Simon

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support
  2014-11-18 11:23     ` Hans de Goede
@ 2014-11-18 14:32       ` Simon Glass
  2014-11-18 14:54         ` Hans de Goede
  0 siblings, 1 reply; 12+ messages in thread
From: Simon Glass @ 2014-11-18 14:32 UTC (permalink / raw)
  To: u-boot

Hi Hans,


On 18 November 2014 11:23, Hans de Goede <hdegoede@redhat.com> wrote:
> Hi,
>
> On 11/17/2014 07:39 PM, Simon Glass wrote:
>> Hi Hans,
>>
>> On 17 November 2014 15:48, Hans de Goede <hdegoede@redhat.com> wrote:
>>> From: Luc Verhaegen <libv@skynet.be>
>>>
>>> Add simplefb support, note this depends on the kernel having support for
>>> the clocks property which has recently been added to the simplefb devicetree
>>> binding.
>>>
>>> Signed-off-by: Luc Verhaegen <libv@skynet.be>
>>> [hdegoede at redhat.com: Use pre-populated simplefb node under /chosen as
>>>  disussed on the devicetree list]
>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>> ---
>>>  arch/arm/include/asm/arch-sunxi/display.h |  4 ++++
>>>  board/sunxi/board.c                       | 11 +++++++++
>>>  drivers/video/sunxi_display.c             | 39 +++++++++++++++++++++++++++++++
>>>  include/configs/sunxi-common.h            |  8 +++++++
>>>  4 files changed, 62 insertions(+)
>>>
>>> diff --git a/arch/arm/include/asm/arch-sunxi/display.h b/arch/arm/include/asm/arch-sunxi/display.h
>>> index 8d80ceb..4c694f8 100644
>>> --- a/arch/arm/include/asm/arch-sunxi/display.h
>>> +++ b/arch/arm/include/asm/arch-sunxi/display.h
>>> @@ -195,4 +195,8 @@ struct sunxi_hdmi_reg {
>>>  #define SUNXI_HDMI_PLL_DBG0_PLL3               (0 << 21)
>>>  #define SUNXI_HDMI_PLL_DBG0_PLL7               (1 << 21)
>>>
>>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>>> +void sunxi_simplefb_setup(void *blob);
>>> +#endif
>>> +
>>>  #endif /* _SUNXI_DISPLAY_H */
>>> diff --git a/board/sunxi/board.c b/board/sunxi/board.c
>>> index e6ec5b8..d4530e8 100644
>>> --- a/board/sunxi/board.c
>>> +++ b/board/sunxi/board.c
>>> @@ -24,6 +24,7 @@
>>>  #endif
>>>  #include <asm/arch/clock.h>
>>>  #include <asm/arch/cpu.h>
>>> +#include <asm/arch/display.h>
>>>  #include <asm/arch/dram.h>
>>>  #include <asm/arch/gpio.h>
>>>  #include <asm/arch/mmc.h>
>>> @@ -237,3 +238,13 @@ int misc_init_r(void)
>>>         return 0;
>>>  }
>>>  #endif
>>> +
>>> +#ifdef CONFIG_OF_BOARD_SETUP
>>> +void
>>> +ft_board_setup(void *blob, bd_t *bd)
>>> +{
>>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>>> +       sunxi_simplefb_setup(blob);
>>> +#endif
>>> +}
>>> +#endif /* CONFIG_OF_BOARD_SETUP */
>>> diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
>>> index 3f46c31..74c4bd3 100644
>>> --- a/drivers/video/sunxi_display.c
>>> +++ b/drivers/video/sunxi_display.c
>>> @@ -13,6 +13,8 @@
>>>  #include <asm/arch/display.h>
>>>  #include <asm/global_data.h>
>>>  #include <asm/io.h>
>>> +#include <fdtdec.h>
>>> +#include <fdt_support.h>
>>>  #include <linux/fb.h>
>>>  #include <video_fb.h>
>>>
>>> @@ -416,3 +418,40 @@ video_hw_init(void)
>>>
>>>         return graphic_device;
>>>  }
>>> +
>>> +/*
>>> + * Simplefb support.
>>> + */
>>> +#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_VIDEO_DT_SIMPLEFB)
>>> +void
>>> +sunxi_simplefb_setup(void *blob)
>>> +{
>>> +       static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
>>> +       int offset, ret;
>>> +
>>> +       if (!sunxi_display.enabled)
>>> +               return;
>>
>> return -ENOENT?
>
> If people want this, I can change the proto to an int and make sunxi_simplefb_setup
> return error codes as you suggest, but this function gets called from
> ft_board_setup which is void itself, so there is no where to propagate the error,
> and more-over we do not want simplefb setup errors to be treated as fatal, so
> I see little use in having it return error codes.

ft_board_setup() will soon change to return an error. Will likely
merge those patches next week.

>
>>> +
>>> +       /* Find a framebuffer node, with pipeline == "de_be0-lcd0-hdmi" */
>>> +       offset = fdt_node_offset_by_compatible(blob, -1, "sunxi,framebuffer");
>>
>> These should convert to DM at some point. To make sure we don't forget
>> any, you should add this compatible string to fdtdec.c and use the
>> enum from fdtdec.h and also fdtdec_next_compatible().
>
> Most sunxi boards do not set CONFIG_OF_CONTROL, so the ftddec functions are
> not available.

Actually I was wrong - this is adjust the kernel FDT so ignore my comment.

>
>>> +       while (offset >= 0) {
>>> +               ret = fdt_find_string(blob, offset, "sunxi,pipeline",
>>> +                                     "de_be0-lcd0-hdmi");
>>> +               if (ret == 0)
>>> +                       break;
>>> +               offset = fdt_node_offset_by_compatible(blob, offset,
>>> +                                                      "sunxi,framebuffer");
>>> +       }
>>> +       if (offset < 0) {
>>> +               eprintf("Cannot setup simplefb: node not found\n");
>>> +               return;
>>
>> return -ENODEV?
>>
>>> +       }
>>> +
>>> +       ret = fdt_setup_simplefb_node(blob, offset, gd->fb_base,
>>> +                       graphic_device->winSizeX, graphic_device->winSizeY,
>>> +                       graphic_device->winSizeX * graphic_device->gdfBytesPP,
>>> +                       "x8r8g8b8");
>>> +       if (ret < 0)
>>> +               eprintf("Cannot setup simplefb: Error setting properties\n");
>>
>> Can we return the error here? Maybe -EPERM or something like that.
>>
>>> +}
>>> +#endif /* CONFIG_OF_BOARD_SETUP && CONFIG_VIDEO_DT_SIMPLEFB */
>>> diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
>>> index 900ef52..d5d907b 100644
>>> --- a/include/configs/sunxi-common.h
>>> +++ b/include/configs/sunxi-common.h
>>> @@ -204,6 +204,9 @@
>>>   */
>>>  #define CONFIG_SUNXI_FB_SIZE (8 << 20)
>>>
>>> +/* Do we want to initialize a simple FB? */
>>> +#define CONFIG_VIDEO_DT_SIMPLEFB
>>> +
>>>  #define CONFIG_VIDEO_SUNXI
>>>
>>>  #define CONFIG_CFB_CONSOLE
>>> @@ -217,6 +220,11 @@
>>>
>>>  #define CONFIG_SYS_MEM_TOP_HIDE ((CONFIG_SUNXI_FB_SIZE + 0xFFF) & ~0xFFF)
>>>
>>> +/* To be able to hook simplefb into dt */
>>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>>> +#define CONFIG_OF_BOARD_SETUP
>>> +#endif
>>> +
>>>  #endif /* CONFIG_VIDEO */
>>>
>>>  /* Ethernet support */

Regards,
Simon

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support
  2014-11-18 14:32       ` Simon Glass
@ 2014-11-18 14:54         ` Hans de Goede
  2014-11-18 15:08           ` Simon Glass
  0 siblings, 1 reply; 12+ messages in thread
From: Hans de Goede @ 2014-11-18 14:54 UTC (permalink / raw)
  To: u-boot

Hi,

On 11/18/2014 03:32 PM, Simon Glass wrote:
> Hi Hans,
> 
> 
> On 18 November 2014 11:23, Hans de Goede <hdegoede@redhat.com> wrote:
>> Hi,
>>
>> On 11/17/2014 07:39 PM, Simon Glass wrote:
>>> Hi Hans,
>>>
>>> On 17 November 2014 15:48, Hans de Goede <hdegoede@redhat.com> wrote:
>>>> From: Luc Verhaegen <libv@skynet.be>
>>>>
>>>> Add simplefb support, note this depends on the kernel having support for
>>>> the clocks property which has recently been added to the simplefb devicetree
>>>> binding.
>>>>
>>>> Signed-off-by: Luc Verhaegen <libv@skynet.be>
>>>> [hdegoede at redhat.com: Use pre-populated simplefb node under /chosen as
>>>>  disussed on the devicetree list]
>>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>>> ---
>>>>  arch/arm/include/asm/arch-sunxi/display.h |  4 ++++
>>>>  board/sunxi/board.c                       | 11 +++++++++
>>>>  drivers/video/sunxi_display.c             | 39 +++++++++++++++++++++++++++++++
>>>>  include/configs/sunxi-common.h            |  8 +++++++
>>>>  4 files changed, 62 insertions(+)
>>>>
>>>> diff --git a/arch/arm/include/asm/arch-sunxi/display.h b/arch/arm/include/asm/arch-sunxi/display.h
>>>> index 8d80ceb..4c694f8 100644
>>>> --- a/arch/arm/include/asm/arch-sunxi/display.h
>>>> +++ b/arch/arm/include/asm/arch-sunxi/display.h
>>>> @@ -195,4 +195,8 @@ struct sunxi_hdmi_reg {
>>>>  #define SUNXI_HDMI_PLL_DBG0_PLL3               (0 << 21)
>>>>  #define SUNXI_HDMI_PLL_DBG0_PLL7               (1 << 21)
>>>>
>>>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>>>> +void sunxi_simplefb_setup(void *blob);
>>>> +#endif
>>>> +
>>>>  #endif /* _SUNXI_DISPLAY_H */
>>>> diff --git a/board/sunxi/board.c b/board/sunxi/board.c
>>>> index e6ec5b8..d4530e8 100644
>>>> --- a/board/sunxi/board.c
>>>> +++ b/board/sunxi/board.c
>>>> @@ -24,6 +24,7 @@
>>>>  #endif
>>>>  #include <asm/arch/clock.h>
>>>>  #include <asm/arch/cpu.h>
>>>> +#include <asm/arch/display.h>
>>>>  #include <asm/arch/dram.h>
>>>>  #include <asm/arch/gpio.h>
>>>>  #include <asm/arch/mmc.h>
>>>> @@ -237,3 +238,13 @@ int misc_init_r(void)
>>>>         return 0;
>>>>  }
>>>>  #endif
>>>> +
>>>> +#ifdef CONFIG_OF_BOARD_SETUP
>>>> +void
>>>> +ft_board_setup(void *blob, bd_t *bd)
>>>> +{
>>>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>>>> +       sunxi_simplefb_setup(blob);
>>>> +#endif
>>>> +}
>>>> +#endif /* CONFIG_OF_BOARD_SETUP */
>>>> diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
>>>> index 3f46c31..74c4bd3 100644
>>>> --- a/drivers/video/sunxi_display.c
>>>> +++ b/drivers/video/sunxi_display.c
>>>> @@ -13,6 +13,8 @@
>>>>  #include <asm/arch/display.h>
>>>>  #include <asm/global_data.h>
>>>>  #include <asm/io.h>
>>>> +#include <fdtdec.h>
>>>> +#include <fdt_support.h>
>>>>  #include <linux/fb.h>
>>>>  #include <video_fb.h>
>>>>
>>>> @@ -416,3 +418,40 @@ video_hw_init(void)
>>>>
>>>>         return graphic_device;
>>>>  }
>>>> +
>>>> +/*
>>>> + * Simplefb support.
>>>> + */
>>>> +#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_VIDEO_DT_SIMPLEFB)
>>>> +void
>>>> +sunxi_simplefb_setup(void *blob)
>>>> +{
>>>> +       static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
>>>> +       int offset, ret;
>>>> +
>>>> +       if (!sunxi_display.enabled)
>>>> +               return;
>>>
>>> return -ENOENT?
>>
>> If people want this, I can change the proto to an int and make sunxi_simplefb_setup
>> return error codes as you suggest, but this function gets called from
>> ft_board_setup which is void itself, so there is no where to propagate the error,
>> and more-over we do not want simplefb setup errors to be treated as fatal, so
>> I see little use in having it return error codes.
> 
> ft_board_setup() will soon change to return an error. Will likely
> merge those patches next week.

That is good to hear, but not relevant in this case, as said:

"more-over we do not want simplefb setup errors to be treated as fatal"

Main reason for this is that older dtb-s do not have the pre-populated
simplefb node. I guess it could be argued that not having the node
should be a warning (and return 0), and the other errors should be
real errors. I can be convinced to make that change, let me know either
way.

Regards,

Hans

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support
  2014-11-18 14:54         ` Hans de Goede
@ 2014-11-18 15:08           ` Simon Glass
  0 siblings, 0 replies; 12+ messages in thread
From: Simon Glass @ 2014-11-18 15:08 UTC (permalink / raw)
  To: u-boot

Hi Hans,


On 18 November 2014 14:54, Hans de Goede <hdegoede@redhat.com> wrote:
> Hi,
>
> On 11/18/2014 03:32 PM, Simon Glass wrote:
>> Hi Hans,
>>
>>
>> On 18 November 2014 11:23, Hans de Goede <hdegoede@redhat.com> wrote:
>>> Hi,
>>>
>>> On 11/17/2014 07:39 PM, Simon Glass wrote:
>>>> Hi Hans,
>>>>
>>>> On 17 November 2014 15:48, Hans de Goede <hdegoede@redhat.com> wrote:
>>>>> From: Luc Verhaegen <libv@skynet.be>
>>>>>
>>>>> Add simplefb support, note this depends on the kernel having support for
>>>>> the clocks property which has recently been added to the simplefb devicetree
>>>>> binding.
>>>>>
>>>>> Signed-off-by: Luc Verhaegen <libv@skynet.be>
>>>>> [hdegoede at redhat.com: Use pre-populated simplefb node under /chosen as
>>>>>  disussed on the devicetree list]
>>>>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>>>>> ---
>>>>>  arch/arm/include/asm/arch-sunxi/display.h |  4 ++++
>>>>>  board/sunxi/board.c                       | 11 +++++++++
>>>>>  drivers/video/sunxi_display.c             | 39 +++++++++++++++++++++++++++++++
>>>>>  include/configs/sunxi-common.h            |  8 +++++++
>>>>>  4 files changed, 62 insertions(+)
>>>>>
>>>>> diff --git a/arch/arm/include/asm/arch-sunxi/display.h b/arch/arm/include/asm/arch-sunxi/display.h
>>>>> index 8d80ceb..4c694f8 100644
>>>>> --- a/arch/arm/include/asm/arch-sunxi/display.h
>>>>> +++ b/arch/arm/include/asm/arch-sunxi/display.h
>>>>> @@ -195,4 +195,8 @@ struct sunxi_hdmi_reg {
>>>>>  #define SUNXI_HDMI_PLL_DBG0_PLL3               (0 << 21)
>>>>>  #define SUNXI_HDMI_PLL_DBG0_PLL7               (1 << 21)
>>>>>
>>>>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>>>>> +void sunxi_simplefb_setup(void *blob);
>>>>> +#endif
>>>>> +
>>>>>  #endif /* _SUNXI_DISPLAY_H */
>>>>> diff --git a/board/sunxi/board.c b/board/sunxi/board.c
>>>>> index e6ec5b8..d4530e8 100644
>>>>> --- a/board/sunxi/board.c
>>>>> +++ b/board/sunxi/board.c
>>>>> @@ -24,6 +24,7 @@
>>>>>  #endif
>>>>>  #include <asm/arch/clock.h>
>>>>>  #include <asm/arch/cpu.h>
>>>>> +#include <asm/arch/display.h>
>>>>>  #include <asm/arch/dram.h>
>>>>>  #include <asm/arch/gpio.h>
>>>>>  #include <asm/arch/mmc.h>
>>>>> @@ -237,3 +238,13 @@ int misc_init_r(void)
>>>>>         return 0;
>>>>>  }
>>>>>  #endif
>>>>> +
>>>>> +#ifdef CONFIG_OF_BOARD_SETUP
>>>>> +void
>>>>> +ft_board_setup(void *blob, bd_t *bd)
>>>>> +{
>>>>> +#ifdef CONFIG_VIDEO_DT_SIMPLEFB
>>>>> +       sunxi_simplefb_setup(blob);
>>>>> +#endif
>>>>> +}
>>>>> +#endif /* CONFIG_OF_BOARD_SETUP */
>>>>> diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
>>>>> index 3f46c31..74c4bd3 100644
>>>>> --- a/drivers/video/sunxi_display.c
>>>>> +++ b/drivers/video/sunxi_display.c
>>>>> @@ -13,6 +13,8 @@
>>>>>  #include <asm/arch/display.h>
>>>>>  #include <asm/global_data.h>
>>>>>  #include <asm/io.h>
>>>>> +#include <fdtdec.h>
>>>>> +#include <fdt_support.h>
>>>>>  #include <linux/fb.h>
>>>>>  #include <video_fb.h>
>>>>>
>>>>> @@ -416,3 +418,40 @@ video_hw_init(void)
>>>>>
>>>>>         return graphic_device;
>>>>>  }
>>>>> +
>>>>> +/*
>>>>> + * Simplefb support.
>>>>> + */
>>>>> +#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_VIDEO_DT_SIMPLEFB)
>>>>> +void
>>>>> +sunxi_simplefb_setup(void *blob)
>>>>> +{
>>>>> +       static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
>>>>> +       int offset, ret;
>>>>> +
>>>>> +       if (!sunxi_display.enabled)
>>>>> +               return;
>>>>
>>>> return -ENOENT?
>>>
>>> If people want this, I can change the proto to an int and make sunxi_simplefb_setup
>>> return error codes as you suggest, but this function gets called from
>>> ft_board_setup which is void itself, so there is no where to propagate the error,
>>> and more-over we do not want simplefb setup errors to be treated as fatal, so
>>> I see little use in having it return error codes.
>>
>> ft_board_setup() will soon change to return an error. Will likely
>> merge those patches next week.
>
> That is good to hear, but not relevant in this case, as said:
>
> "more-over we do not want simplefb setup errors to be treated as fatal"
>
> Main reason for this is that older dtb-s do not have the pre-populated
> simplefb node. I guess it could be argued that not having the node
> should be a warning (and return 0), and the other errors should be
> real errors. I can be convinced to make that change, let me know either
> way.

Yes that sounds right to me.

Regards,
Simon

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2014-11-18 15:08 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-17 15:48 [U-Boot] [PATCH v4 0/2] sunxi: video: Add simplefb support Hans de Goede
2014-11-17 15:48 ` [U-Boot] [PATCH v4 1/2] fdt_support: Add a fdt_setup_simplefb_node helper function Hans de Goede
2014-11-17 18:32   ` Simon Glass
2014-11-18 11:18     ` Hans de Goede
2014-11-18 14:30       ` Simon Glass
2014-11-17 15:48 ` [U-Boot] [PATCH v4 2/2] sunxi: video: Add simplefb support Hans de Goede
2014-11-17 18:39   ` Simon Glass
2014-11-18 11:23     ` Hans de Goede
2014-11-18 14:32       ` Simon Glass
2014-11-18 14:54         ` Hans de Goede
2014-11-18 15:08           ` Simon Glass
2014-11-17 19:12   ` Ian Campbell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.