[U-Boot] [PATCH V3 3/4] video: add access to GraphicDevice struct

Che-Liang Chiou
2011-10-18T09:15:37Z

video_hw_init() returns this struct, which is quite useful, but it is
probably not okay to call this function multiple times. So this patch
adds video_devinfo() that does nothing but return this struct.

video_devinfo() does not guarantee that this struct is initialized. It
is user's responsibility to make sure that the video device is properly
initialized.

Signed-off-by: Che-Liang Chiou <clchiou@chromium.org>
---

Changes in V3
Add to the patch set

board/eltec/mhpc/mhpc.c | 7 +++++++
drivers/video/ati_radeon_fb.c | 5 +++++
drivers/video/ct69000.c | 5 +++++
drivers/video/fsl_diu_fb.c | 8 +++++++-
drivers/video/mb862xx.c | 5 +++++
drivers/video/mb86r0xgdc.c | 5 +++++
drivers/video/mx3fb.c | 5 +++++
drivers/video/mxc_ipuv3_fb.c | 5 +++++
drivers/video/sed13806.c | 6 ++++++
drivers/video/sm501.c | 5 +++++
drivers/video/smiLynxEM.c | 5 +++++
include/video_fb.h | 6 +++++-
12 files changed, 65 insertions(+), 2 deletions(-)

diff --git a/board/eltec/mhpc/mhpc.c b/board/eltec/mhpc/mhpc.c
index 7cca6b2..0d2c8c9 100644
--- a/board/eltec/mhpc/mhpc.c
+++ b/board/eltec/mhpc/mhpc.c
@@ -466,6 +466,13 @@ void *video_hw_init (void)

/* ------------------------------------------------------------------------- */

+void *video_devinfo(void)
+{
+ return (void *)&gdev;
+}
+
+/* ------------------------------------------------------------------------- */
+
void video_set_lut (unsigned int index,
unsigned char r, unsigned char g, unsigned char b)
{
diff --git a/drivers/video/ati_radeon_fb.c b/drivers/video/ati_radeon_fb.c
index 4a9bd07..77509e1 100644
--- a/drivers/video/ati_radeon_fb.c
+++ b/drivers/video/ati_radeon_fb.c
@@ -770,6 +770,11 @@ void *video_hw_init(void)
return ((void *) pGD);
}

+void *video_devinfo(void)
+{
+ return (void *)&ctfb;
+}
+
void video_set_lut (unsigned int index, /* color number */
unsigned char r, /* red */
unsigned char g, /* green */
diff --git a/drivers/video/ct69000.c b/drivers/video/ct69000.c
index 3db614d..660a64c 100644
--- a/drivers/video/ct69000.c
+++ b/drivers/video/ct69000.c
@@ -1176,6 +1176,11 @@ video_hw_init (void)
return ((void *) &ctfb);
}

+void *video_devinfo(void)
+{
+ return (void *)&ctfb;
+}
+
/*******************************************************************************
*
* Set a RGB color in the LUT (8 bit index)
diff --git a/drivers/video/fsl_diu_fb.c b/drivers/video/fsl_diu_fb.c
index cb43904..6ed6c32 100644
--- a/drivers/video/fsl_diu_fb.c
+++ b/drivers/video/fsl_diu_fb.c
@@ -367,9 +367,10 @@ int fsl_diu_init(u16 xres, u16 yres, u32 pixel_format, int gamma_fix)
return 0;
}

+static GraphicDevice ctfb;
+
void *video_hw_init(void)
{
- static GraphicDevice ctfb;
const char *options;
unsigned int depth = 0, freq = 0;

@@ -408,3 +409,8 @@ void *video_hw_init(void)

return &ctfb;
}
+
+void *video_devinfo(void)
+{
+ return (void *)&ctfb;
+}
diff --git a/drivers/video/mb862xx.c b/drivers/video/mb862xx.c
index 1a4ba82..36dbdc1 100644
--- a/drivers/video/mb862xx.c
+++ b/drivers/video/mb862xx.c
@@ -444,6 +444,11 @@ void *video_hw_init (void)
return dev;
}

+void *video_devinfo(void)
+{
+ return (void *)&mb862xx;
+}
+
/*
* Set a RGB color in the LUT
*/
diff --git a/drivers/video/mb86r0xgdc.c b/drivers/video/mb86r0xgdc.c
index 345a73b..455aea3 100644
--- a/drivers/video/mb86r0xgdc.c
+++ b/drivers/video/mb86r0xgdc.c
@@ -182,3 +182,8 @@ void *video_hw_init(void)

return pGD;
}
+
+void *video_devinfo(void)
+{
+ return (void *)&mb86r0x;
+}
diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
index f30deb3..4ff84c8 100644
--- a/drivers/video/mx3fb.c
+++ b/drivers/video/mx3fb.c
@@ -922,6 +922,11 @@ void *video_hw_init(void)
return (void *) &panel;
}

+void *video_devinfo(void)
+{
+ return (void *)&panel;
+}
+
void video_set_lut(unsigned int index, /* color number */
unsigned char r, /* red */
unsigned char g, /* green */
diff --git a/drivers/video/mxc_ipuv3_fb.c b/drivers/video/mxc_ipuv3_fb.c
index 1bee54c..fd27828 100644
--- a/drivers/video/mxc_ipuv3_fb.c
+++ b/drivers/video/mxc_ipuv3_fb.c
@@ -590,6 +590,11 @@ void *video_hw_init(void)
return (void *)&panel;
}

+void *video_devinfo(void)
+{
+ return (void *)&panel;
+}
+
void video_set_lut(unsigned int index, /* color number */
unsigned char r, /* red */
unsigned char g, /* green */
diff --git a/drivers/video/sed13806.c b/drivers/video/sed13806.c
index 0bf9ba6..ee7b9b9 100644
--- a/drivers/video/sed13806.c
+++ b/drivers/video/sed13806.c
@@ -108,6 +108,12 @@ void *video_hw_init (void)

return (&sed13806);
}
+
+void *video_devinfo(void)
+{
+ return (void *)&sed13806;
+}
+
/*-----------------------------------------------------------------------------
* Epson_wait_idle -- Wait for hardware to become idle
*-----------------------------------------------------------------------------
diff --git a/drivers/video/sm501.c b/drivers/video/sm501.c
index 42ac680..dd2a438 100644
--- a/drivers/video/sm501.c
+++ b/drivers/video/sm501.c
@@ -238,3 +238,8 @@ not_pci:

return (&sm501);
}
+
+void *video_devinfo(void)
+{
+ return (void *)&sm501;
+}
diff --git a/drivers/video/smiLynxEM.c b/drivers/video/smiLynxEM.c
index 2001e9c..87855eb 100644
--- a/drivers/video/smiLynxEM.c
+++ b/drivers/video/smiLynxEM.c
@@ -752,6 +752,11 @@ void *video_hw_init (void)
return ((void*)&smi);
}

+void *video_devinfo(void)
+{
+ return (void *)&smi;
+}
+
/*******************************************************************************
*
* Drawing engine fill on screen region
diff --git a/include/video_fb.h b/include/video_fb.h
index f649c54..239bf37 100644
--- a/include/video_fb.h
+++ b/include/video_fb.h
@@ -76,7 +76,11 @@ typedef struct {
/* Export Graphic Functions */
/******************************************************************************/

-void *video_hw_init (void); /* returns GraphicDevice struct or NULL */
+void *video_hw_init(void); /* initializes the device and
+ returns GraphicDevice struct or NULL */
+
+void *video_devinfo(void); /* returns GraphicDevice struct;
+ _no_ guarantee it is initialized! */

#ifdef VIDEO_HW_BITBLT
void video_hw_bitblt (
--
1.7.3.1