summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/rpi_2_defconfig2
-rw-r--r--configs/rpi_3_32b_defconfig2
-rw-r--r--configs/rpi_3_defconfig2
-rw-r--r--configs/rpi_defconfig2
-rw-r--r--drivers/video/bcm2835.c62
-rw-r--r--include/configs/rpi.h11
6 files changed, 34 insertions, 47 deletions
diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig
index e43b59c..f8b3ed4 100644
--- a/configs/rpi_2_defconfig
+++ b/configs/rpi_2_defconfig
@@ -21,7 +21,7 @@ CONFIG_USB=y
CONFIG_DM_USB=y
CONFIG_USB_STORAGE=y
CONFIG_USB_KEYBOARD=y
+CONFIG_DM_VIDEO=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_CONSOLE_SCROLL_LINES=10
-CONFIG_LCD=y
CONFIG_PHYS_TO_BUS=y
diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig
index eadf6bf..490af81 100644
--- a/configs/rpi_3_32b_defconfig
+++ b/configs/rpi_3_32b_defconfig
@@ -23,7 +23,7 @@ CONFIG_USB=y
CONFIG_DM_USB=y
CONFIG_USB_STORAGE=y
CONFIG_USB_KEYBOARD=y
+CONFIG_DM_VIDEO=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_CONSOLE_SCROLL_LINES=10
-CONFIG_LCD=y
CONFIG_PHYS_TO_BUS=y
diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig
index f0ccca1..4c0eb04 100644
--- a/configs/rpi_3_defconfig
+++ b/configs/rpi_3_defconfig
@@ -23,7 +23,7 @@ CONFIG_USB=y
CONFIG_DM_USB=y
CONFIG_USB_STORAGE=y
CONFIG_USB_KEYBOARD=y
+CONFIG_DM_VIDEO=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_CONSOLE_SCROLL_LINES=10
-CONFIG_LCD=y
CONFIG_PHYS_TO_BUS=y
diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig
index bd10b13..1b954fe 100644
--- a/configs/rpi_defconfig
+++ b/configs/rpi_defconfig
@@ -21,7 +21,7 @@ CONFIG_USB=y
CONFIG_DM_USB=y
CONFIG_USB_STORAGE=y
CONFIG_USB_KEYBOARD=y
+CONFIG_DM_VIDEO=y
CONFIG_SYS_WHITE_ON_BLACK=y
CONFIG_CONSOLE_SCROLL_LINES=10
-CONFIG_LCD=y
CONFIG_PHYS_TO_BUS=y
diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c
index cd15f7f..952ef59 100644
--- a/drivers/video/bcm2835.c
+++ b/drivers/video/bcm2835.c
@@ -5,62 +5,56 @@
*/
#include <common.h>
-#include <lcd.h>
-#include <memalign.h>
-#include <phys2bus.h>
+#include <dm.h>
+#include <video.h>
#include <asm/arch/mbox.h>
#include <asm/arch/msg.h>
-#include <asm/global_data.h>
-DECLARE_GLOBAL_DATA_PTR;
-
-/* Global variables that lcd.c expects to exist */
-vidinfo_t panel_info;
-
-static int bcm2835_pitch;
-
-void lcd_ctrl_init(void *lcdbase)
+static int bcm2835_video_probe(struct udevice *dev)
{
+ struct video_uc_platdata *plat = dev_get_uclass_platdata(dev);
+ struct video_priv *uc_priv = dev_get_uclass_priv(dev);
int ret;
- int w, h;
+ int w, h, pitch;
ulong fb_base, fb_size, fb_start, fb_end;
debug("bcm2835: Query resolution...\n");
ret = bcm2835_get_video_size(&w, &h);
- if (ret) {
- /* FIXME: How to disable the LCD to prevent errors? hang()? */
- return;
- }
+ if (ret)
+ return -EIO;
debug("bcm2835: Setting up display for %d x %d\n", w, h);
ret = bcm2835_set_video_params(&w, &h, 32, BCM2835_MBOX_PIXEL_ORDER_RGB,
BCM2835_MBOX_ALPHA_MODE_IGNORED,
- &fb_base, &fb_size, &bcm2835_pitch);
+ &fb_base, &fb_size, &pitch);
debug("bcm2835: Final resolution is %d x %d\n", w, h);
- panel_info.vl_col = w;
- panel_info.vl_row = h;
- panel_info.vl_bpix = LCD_COLOR32;
-
- gd->fb_base = fb_base;
-
/* Enable dcache for the frame buffer */
fb_start = fb_base & ~(MMU_SECTION_SIZE - 1);
fb_end = fb_base + fb_size;
fb_end = ALIGN(fb_end, 1 << MMU_SECTION_SHIFT);
mmu_set_region_dcache_behaviour(fb_start, fb_end - fb_start,
DCACHE_WRITEBACK);
- lcd_set_flush_dcache(1);
-}
+ video_set_flush_dcache(dev, true);
-void lcd_enable(void)
-{
-}
+ uc_priv->xsize = w;
+ uc_priv->ysize = h;
+ uc_priv->bpix = VIDEO_BPP32;
+ plat->base = fb_base;
+ plat->size = fb_size;
-int lcd_get_size(int *line_length)
-{
- *line_length = bcm2835_pitch;
-
- return *line_length * panel_info.vl_row;
+ return 0;
}
+
+static const struct udevice_id bcm2835_video_ids[] = {
+ { .compatible = "brcm,bcm2835-hdmi" },
+ { }
+};
+
+U_BOOT_DRIVER(bcm2835_video) = {
+ .name = "bcm2835_video",
+ .id = UCLASS_VIDEO,
+ .of_match = bcm2835_video_ids,
+ .probe = bcm2835_video_probe,
+};
diff --git a/include/configs/rpi.h b/include/configs/rpi.h
index a2e74f6..7b9017f 100644
--- a/include/configs/rpi.h
+++ b/include/configs/rpi.h
@@ -68,13 +68,6 @@
#define CONFIG_BCM2835_GPIO
/* LCD */
#define CONFIG_LCD_DT_SIMPLEFB
-#define LCD_BPP LCD_COLOR32
-/*
- * Prevent allocation of RAM for FB; the real FB address is queried
- * dynamically from the VideoCore co-processor, and comes from RAM
- * not owned by the ARM CPU.
- */
-#define CONFIG_FB_ADDR 0
#define CONFIG_VIDEO_BCM2835
#ifdef CONFIG_CMD_USB
@@ -124,8 +117,8 @@
#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
#define ENV_DEVICE_SETTINGS \
"stdin=serial,usbkbd\0" \
- "stdout=serial,lcd\0" \
- "stderr=serial,lcd\0"
+ "stdout=serial,vidconsole\0" \
+ "stderr=serial,vidconsole\0"
/*
* Memory layout for where various images get loaded by boot scripts: