All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [RFC PATCH 1/2] video: add a function to acquire the GraphicDevice of cfb_console
@ 2017-02-07 12:58 Icenowy Zheng
  2017-02-07 12:58 ` [U-Boot] [RFC PATCH 2/2] efi_loader: gop: add support to use cfb_console's framebuffer Icenowy Zheng
  2017-02-10 16:22 ` [U-Boot] [RFC PATCH 1/2] video: add a function to acquire the GraphicDevice of cfb_console Simon Glass
  0 siblings, 2 replies; 4+ messages in thread
From: Icenowy Zheng @ 2017-02-07 12:58 UTC (permalink / raw)
  To: u-boot

Sometimes the GraphicDevice of cfb_console is useful at other place.

Add a function to acquire it, so that the graphics hardware (especially
the framebuffer) can be reused.

Signed-off-by: Icenowy Zheng <icenowy@aosc.xyz>
---
 drivers/video/cfb_console.c | 5 +++++
 include/video_fb.h          | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c
index c0b1b8dc17..c80ed1646f 100644
--- a/drivers/video/cfb_console.c
+++ b/drivers/video/cfb_console.c
@@ -2199,3 +2199,8 @@ int video_get_screen_columns(void)
 {
 	return CONSOLE_COLS;
 }
+
+GraphicDevice *video_get_graphic_device(void)
+{
+	return pGD;
+};
diff --git a/include/video_fb.h b/include/video_fb.h
index b008853f30..29f2b24648 100644
--- a/include/video_fb.h
+++ b/include/video_fb.h
@@ -89,4 +89,6 @@ void video_set_lut (
     unsigned char b               /* blue */
     );
 
+GraphicDevice *video_get_graphic_device(void);
+
 #endif /*_VIDEO_FB_H_ */
-- 
2.11.0

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

* [U-Boot] [RFC PATCH 2/2] efi_loader: gop: add support to use cfb_console's framebuffer
  2017-02-07 12:58 [U-Boot] [RFC PATCH 1/2] video: add a function to acquire the GraphicDevice of cfb_console Icenowy Zheng
@ 2017-02-07 12:58 ` Icenowy Zheng
  2017-02-08  2:44   ` Bin Meng
  2017-02-10 16:22 ` [U-Boot] [RFC PATCH 1/2] video: add a function to acquire the GraphicDevice of cfb_console Simon Glass
  1 sibling, 1 reply; 4+ messages in thread
From: Icenowy Zheng @ 2017-02-07 12:58 UTC (permalink / raw)
  To: u-boot

As cfb_console now can expose its GraphicDevice, use it in the
implementation of EFI GOP protocol, so that the graphics framebuffer can
be passed to EFI applications.

Signed-off-by: Icenowy Zheng <icenowy@aosc.xyz>
---

Tested on an Allwinner H3 board with out-of-tree display support.

 cmd/bootefi.c            |  2 +-
 lib/efi_loader/Makefile  |  1 +
 lib/efi_loader/efi_gop.c | 29 ++++++++++++++++++++++++-----
 3 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index 97a0fc9c7c..c0636ba5a3 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -210,7 +210,7 @@ static unsigned long do_bootefi_exec(void *efi, void *fdt)
 #ifdef CONFIG_PARTITIONS
 	efi_disk_register();
 #endif
-#ifdef CONFIG_LCD
+#if defined CONFIG_LCD || defined CONFIG_CFB_CONSOLE
 	efi_gop_register();
 #endif
 #ifdef CONFIG_NET
diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile
index fa8b91a526..e88c99528c 100644
--- a/lib/efi_loader/Makefile
+++ b/lib/efi_loader/Makefile
@@ -17,6 +17,7 @@ obj-$(CONFIG_CMD_BOOTEFI_HELLO) += helloworld_efi.o
 obj-y += efi_image_loader.o efi_boottime.o efi_runtime.o efi_console.o
 obj-y += efi_memory.o
 obj-$(CONFIG_LCD) += efi_gop.o
+obj-$(CONFIG_CFB_CONSOLE) += efi_gop.o
 obj-$(CONFIG_PARTITIONS) += efi_disk.o
 obj-$(CONFIG_NET) += efi_net.o
 obj-$(CONFIG_GENERATE_SMBIOS_TABLE) += efi_smbios.o
diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c
index 286ad83097..86f9aa2d70 100644
--- a/lib/efi_loader/efi_gop.c
+++ b/lib/efi_loader/efi_gop.c
@@ -13,6 +13,7 @@
 #include <lcd.h>
 #include <malloc.h>
 #include <video.h>
+#include <video_fb.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -80,8 +81,10 @@ static efi_status_t EFIAPI gop_blt(struct efi_gop *this, void *buffer,
 	switch (gopobj->bpix) {
 #ifdef CONFIG_DM_VIDEO
 	case VIDEO_BPP32:
-#else
+#elif defined CONFIG_LCD
 	case LCD_COLOR32:
+#elif defined CONFIG_CFB_CONSOLE
+	case GDF_32BIT_X888RGB:
 #endif
 		for (i = 0; i < height; i++) {
 			u32 *dest = fb + ((i + dy)  * line_len32) +
@@ -117,7 +120,7 @@ static efi_status_t EFIAPI gop_blt(struct efi_gop *this, void *buffer,
 
 #ifdef CONFIG_DM_VIDEO
 	video_sync_all();
-#else
+#elif defined CONFIG_LCD
 	lcd_sync();
 #endif
 
@@ -144,7 +147,7 @@ int efi_gop_register(void)
 	row = video_get_ysize(vdev);
 	fb_base = (uintptr_t)priv->fb;
 	fb_size = priv->fb_size;
-#else
+#elif defined CONFIG_LCD
 	int line_len;
 
 	bpix = panel_info.vl_bpix;
@@ -152,15 +155,29 @@ int efi_gop_register(void)
 	row = panel_info.vl_row;
 	fb_base = gd->fb_base;
 	fb_size = lcd_get_size(&line_len);
+#elif defined CONFIG_CFB_CONSOLE
+	GraphicDevice *pGD;
+
+	pGD = video_get_graphic_device();
+	bpix = pGD->gdfIndex;
+	col = pGD->winSizeX;
+	row = pGD->winSizeY;
+	fb_base = pGD->frameAdrs;
+	if (pGD->memSize)
+		fb_size = pGD->memSize;
+	else
+		fb_size = pGD->plnSizeX * row;
 #endif
 
 	switch (bpix) {
 #ifdef CONFIG_DM_VIDEO
 	case VIDEO_BPP16:
 	case VIDEO_BPP32:
-#else
+#elif defined CONFIG_LCD
 	case LCD_COLOR32:
 	case LCD_COLOR16:
+#elif defined CONFIG_CFB_CONSOLE
+	case GDF_32BIT_X888RGB:
 #endif
 		break;
 	default:
@@ -185,8 +202,10 @@ int efi_gop_register(void)
 
 #ifdef CONFIG_DM_VIDEO
 	if (bpix == VIDEO_BPP32) {
-#else
+#elif defined CONFIG_LCD
 	if (bpix == LCD_COLOR32) {
+#elif defined CONFIG_CFB_CONSOLE
+	if (bpix == GDF_32BIT_X888RGB) {
 #endif
 		/* With 32bit color space we can directly expose the fb */
 		gopobj->mode.fb_base = fb_base;
-- 
2.11.0

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

* [U-Boot] [RFC PATCH 2/2] efi_loader: gop: add support to use cfb_console's framebuffer
  2017-02-07 12:58 ` [U-Boot] [RFC PATCH 2/2] efi_loader: gop: add support to use cfb_console's framebuffer Icenowy Zheng
@ 2017-02-08  2:44   ` Bin Meng
  0 siblings, 0 replies; 4+ messages in thread
From: Bin Meng @ 2017-02-08  2:44 UTC (permalink / raw)
  To: u-boot

On Tue, Feb 7, 2017 at 8:58 PM, Icenowy Zheng <icenowy@aosc.xyz> wrote:
> As cfb_console now can expose its GraphicDevice, use it in the
> implementation of EFI GOP protocol, so that the graphics framebuffer can
> be passed to EFI applications.
>
> Signed-off-by: Icenowy Zheng <icenowy@aosc.xyz>
> ---
>
> Tested on an Allwinner H3 board with out-of-tree display support.
>
>  cmd/bootefi.c            |  2 +-
>  lib/efi_loader/Makefile  |  1 +
>  lib/efi_loader/efi_gop.c | 29 ++++++++++++++++++++++++-----
>  3 files changed, 26 insertions(+), 6 deletions(-)
>

Instead of adding support on legacy CFB console driver, can we use the
DM video driver instead?

Regards,
Bin

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

* [U-Boot] [RFC PATCH 1/2] video: add a function to acquire the GraphicDevice of cfb_console
  2017-02-07 12:58 [U-Boot] [RFC PATCH 1/2] video: add a function to acquire the GraphicDevice of cfb_console Icenowy Zheng
  2017-02-07 12:58 ` [U-Boot] [RFC PATCH 2/2] efi_loader: gop: add support to use cfb_console's framebuffer Icenowy Zheng
@ 2017-02-10 16:22 ` Simon Glass
  1 sibling, 0 replies; 4+ messages in thread
From: Simon Glass @ 2017-02-10 16:22 UTC (permalink / raw)
  To: u-boot

Hi,

On 7 February 2017 at 05:58, Icenowy Zheng <icenowy@aosc.xyz> wrote:
> Sometimes the GraphicDevice of cfb_console is useful at other place.
>
> Add a function to acquire it, so that the graphics hardware (especially
> the framebuffer) can be reused.
>
> Signed-off-by: Icenowy Zheng <icenowy@aosc.xyz>
> ---
>  drivers/video/cfb_console.c | 5 +++++
>  include/video_fb.h          | 2 ++
>  2 files changed, 7 insertions(+)

Please can you use driver-model video instead.

Regards,
Simon

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

end of thread, other threads:[~2017-02-10 16:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-07 12:58 [U-Boot] [RFC PATCH 1/2] video: add a function to acquire the GraphicDevice of cfb_console Icenowy Zheng
2017-02-07 12:58 ` [U-Boot] [RFC PATCH 2/2] efi_loader: gop: add support to use cfb_console's framebuffer Icenowy Zheng
2017-02-08  2:44   ` Bin Meng
2017-02-10 16:22 ` [U-Boot] [RFC PATCH 1/2] video: add a function to acquire the GraphicDevice of cfb_console Simon Glass

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.