X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fvideo%2Fvideo-uclass.c;h=b6dd0f5a58387c4f37f73fe25079a507a84b0c72;hb=26f50fbed2f19edf0c4a2eb80e7fa12941764660;hp=24d537e6c44ff37236e1b8b41049417c8f13147f;hpb=12f229ea8f6c8e20f8fd07906eafc853c4c354a9;p=u-boot diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c index 24d537e6c4..b6dd0f5a58 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -180,6 +180,7 @@ static int video_post_probe(struct udevice *dev) struct video_uc_platdata *plat = dev_get_uclass_platdata(dev); struct video_priv *priv = dev_get_uclass_priv(dev); char name[30], drv[15], *str; + const char *drv_name = drv; struct udevice *cons; int ret; @@ -197,20 +198,38 @@ static int video_post_probe(struct udevice *dev) video_clear(dev); /* - * Create a text console devices. For now we always do this, although + * Create a text console device. For now we always do this, although * it might be useful to support only bitmap drawing on the device - * for boards that don't need to display text. + * for boards that don't need to display text. We create a TrueType + * console if enabled, a rotated console if the video driver requests + * it, otherwise a normal console. + * + * The console can be override by setting vidconsole_drv_name before + * probing this video driver, or in the probe() method. + * + * TrueType does not support rotation at present so fall back to the + * rotated console in that case. */ - snprintf(name, sizeof(name), "%s.vidconsole", dev->name); + if (!priv->rot && IS_ENABLED(CONFIG_CONSOLE_TRUETYPE)) { + snprintf(name, sizeof(name), "%s.vidconsole_tt", dev->name); + strcpy(drv, "vidconsole_tt"); + } else { + snprintf(name, sizeof(name), "%s.vidconsole%d", dev->name, + priv->rot); + snprintf(drv, sizeof(drv), "vidconsole%d", priv->rot); + } + str = strdup(name); if (!str) return -ENOMEM; - snprintf(drv, sizeof(drv), "vidconsole%d", priv->rot); - ret = device_bind_driver(dev, drv, str, &cons); + if (priv->vidconsole_drv_name) + drv_name = priv->vidconsole_drv_name; + ret = device_bind_driver(dev, drv_name, str, &cons); if (ret) { debug("%s: Cannot bind console driver\n", __func__); return ret; } + ret = device_probe(cons); if (ret) { debug("%s: Cannot probe console driver\n", __func__);