[U-Boot] [PATCH] video: Allow driver to specify the line length
Simon Glass
sjg at chromium.org
Thu Nov 29 22:08:52 UTC 2018
At present line_length is always calculated in video_post_probe(). But
some hardware may use a different line length, e.g. with a 1366-wide
display.
Allow the driver to set this value if needed.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
drivers/pci/pci_rom.c | 1 +
drivers/video/video-uclass.c | 4 +++-
include/video.h | 4 +++-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/pci_rom.c b/drivers/pci/pci_rom.c
index 29113f79586..b4dabead01d 100644
--- a/drivers/pci/pci_rom.c
+++ b/drivers/pci/pci_rom.c
@@ -331,6 +331,7 @@ int vbe_setup_video_priv(struct vesa_mode_info *vesa,
return -ENXIO;
uc_priv->xsize = vesa->x_resolution;
uc_priv->ysize = vesa->y_resolution;
+ uc_priv->line_length = vesa->bytes_per_scanline;
switch (vesa->bits_per_pixel) {
case 32:
case 24:
diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c
index dd0873767ba..804576b65a8 100644
--- a/drivers/video/video-uclass.c
+++ b/drivers/video/video-uclass.c
@@ -213,7 +213,9 @@ static int video_post_probe(struct udevice *dev)
/* Set up the line and display size */
priv->fb = map_sysmem(plat->base, plat->size);
- priv->line_length = priv->xsize * VNBYTES(priv->bpix);
+ if (!priv->line_length)
+ priv->line_length = priv->xsize * VNBYTES(priv->bpix);
+
priv->fb_size = priv->line_length * priv->ysize;
/* Set up colors */
diff --git a/include/video.h b/include/video.h
index ddc2eeb5a95..dce8c5518bb 100644
--- a/include/video.h
+++ b/include/video.h
@@ -61,7 +61,9 @@ enum video_log2_bpp {
* @font_size: Font size in pixels (0 to use a default value)
* @fb: Frame buffer
* @fb_size: Frame buffer size
- * @line_length: Length of each frame buffer line, in bytes
+ * @line_length: Length of each frame buffer line, in bytes. This can be
+ * set by the driver, but if not, the uclass will set it after
+ * probing
* @colour_fg: Foreground colour (pixel value)
* @colour_bg: Background colour (pixel value)
* @flush_dcache: true to enable flushing of the data cache after
--
2.20.0.rc0.387.gc7a69e6b6c-goog
More information about the U-Boot
mailing list