U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies
@ 2025-11-12 20:00 Tom Rini
  2025-11-12 20:00 ` [PATCHv2 1/7] video: mali_dp: Remove unused driver Tom Rini
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Tom Rini @ 2025-11-12 20:00 UTC (permalink / raw)
  To: u-boot; +Cc: Anatolij Gustschin

This is v2 of the series I originally posted back in August[1]. The
changes here are that I've dropped the first patch as TI has recently
posted their rework of the driver in question, and I added Svyatoslav's
Reviewed-by tag. The end goal here is that "allyesconfig" will be able
to build (on sandbox).

[1]: https://patchwork.ozlabs.org/project/uboot/list/?series=468123&state=*

-- 
Tom



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

* [PATCHv2 1/7] video: mali_dp: Remove unused driver
  2025-11-12 20:00 [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
@ 2025-11-12 20:00 ` Tom Rini
  2025-11-12 20:00 ` [PATCHv2 2/7] video: tegra: Rework some of the driver dependencies Tom Rini
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2025-11-12 20:00 UTC (permalink / raw)
  To: u-boot; +Cc: Anatolij Gustschin

This driver is unused. Remove it.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
 drivers/video/Kconfig   |   8 -
 drivers/video/Makefile  |   1 -
 drivers/video/mali_dp.c | 401 ----------------------------------------
 3 files changed, 410 deletions(-)
 delete mode 100644 drivers/video/mali_dp.c

diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index b5777da5218a..a12df55f84ff 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -886,14 +886,6 @@ config VIDEO_IVYBRIDGE_IGD
 
 source "drivers/video/rockchip/Kconfig"
 
-config VIDEO_ARM_MALIDP
-	bool "Enable Arm Mali Display Processor support"
-	depends on OF_CONTROL
-	select VEXPRESS_CLK
-	help
-	  This enables support for Arm Ltd Mali Display Processors from
-	  the DP500, DP550 and DP650 family.
-
 config VIDEO_SANDBOX_SDL
 	bool "Enable sandbox video console using SDL"
 	depends on SANDBOX_SDL
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 96c7ce7bb093..4189b81ba6b3 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -47,7 +47,6 @@ obj-$(CONFIG_LOGICORE_DP_TX) += logicore_dp_tx.o
 obj-$(CONFIG_NXP_TDA19988) += tda19988.o
 obj-$(CONFIG_OSD) += video_osd-uclass.o
 obj-$(CONFIG_SANDBOX_OSD) += sandbox_osd.o
-obj-$(CONFIG_VIDEO_ARM_MALIDP) += mali_dp.o
 obj-$(CONFIG_VIDEO_BCM2835) += bcm2835.o
 obj-$(CONFIG_VIDEO_BOCHS) += bochs.o
 obj-$(CONFIG_VIDEO_BROADWELL_IGD) += broadwell_igd.o
diff --git a/drivers/video/mali_dp.c b/drivers/video/mali_dp.c
deleted file mode 100644
index c89212674624..000000000000
--- a/drivers/video/mali_dp.c
+++ /dev/null
@@ -1,401 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2016-2018 ARM Ltd.
- * Author: Liviu Dudau <liviu.dudau@foss.arm.com>
- *
- */
-#define DEBUG
-#include <malloc.h>
-#include <video.h>
-#include <dm.h>
-#ifdef CONFIG_DISPLAY
-#include <display.h>
-#endif
-#include <fdtdec.h>
-#include <asm/global_data.h>
-#include <asm/io.h>
-#include <os.h>
-#include <fdt_support.h>
-#include <clk.h>
-#include <dm/device_compat.h>
-#include <linux/delay.h>
-#include <linux/sizes.h>
-
-#define MALIDP_CORE_ID		0x0018
-#define MALIDP_REG_BG_COLOR	0x0044
-#define MALIDP_LAYER_LV1	0x0100
-#define MALIDP_DC_STATUS	0xc000
-#define MALIDP_DC_CONTROL	0xc010
-#define MALIDP_DC_CFG_VALID	0xc014
-
-/* offsets inside the modesetting register block */
-#define MALIDP_H_INTERVALS	0x0000
-#define MALIDP_V_INTERVALS	0x0004
-#define MALIDP_SYNC_CONTROL	0x0008
-#define MALIDP_HV_ACTIVESIZE	0x000c
-#define MALIDP_OUTPUT_DEPTH	0x001c
-
-/* offsets inside the layer register block */
-#define MALIDP_LAYER_FORMAT	0x0000
-#define MALIDP_LAYER_CONTROL	0x0004
-#define MALIDP_LAYER_IN_SIZE	0x000c
-#define MALIDP_LAYER_CMP_SIZE	0x0010
-#define MALIDP_LAYER_STRIDE	0x0018
-#define MALIDP_LAYER_PTR_LOW	0x0024
-#define MALIDP_LAYER_PTR_HIGH	0x0028
-
-/* offsets inside the IRQ control blocks */
-#define MALIDP_REG_MASKIRQ	0x0008
-#define MALIDP_REG_CLEARIRQ	0x000c
-
-#define M1BITS	0x0001
-#define M2BITS	0x0003
-#define M4BITS	0x000f
-#define M8BITS	0x00ff
-#define M10BITS	0x03ff
-#define M12BITS	0x0fff
-#define M13BITS	0x1fff
-#define M16BITS	0xffff
-#define M17BITS	0x1ffff
-
-#define MALIDP_H_FRONTPORCH(x)	(((x) & M12BITS) << 0)
-#define MALIDP_H_BACKPORCH(x)	(((x) & M10BITS) << 16)
-#define MALIDP_V_FRONTPORCH(x)	(((x) & M12BITS) << 0)
-#define MALIDP_V_BACKPORCH(x)	(((x) & M8BITS) << 16)
-#define MALIDP_H_SYNCWIDTH(x)	(((x) & M10BITS) << 0)
-#define MALIDP_V_SYNCWIDTH(x)	(((x) & M8BITS) << 16)
-#define MALIDP_H_ACTIVE(x)	(((x) & M13BITS) << 0)
-#define MALIDP_V_ACTIVE(x)	(((x) & M13BITS) << 16)
-
-#define MALIDP_CMP_V_SIZE(x)	(((x) & M13BITS) << 16)
-#define MALIDP_CMP_H_SIZE(x)	(((x) & M13BITS) << 0)
-
-#define MALIDP_IN_V_SIZE(x)	(((x) & M13BITS) << 16)
-#define MALIDP_IN_H_SIZE(x)	(((x) & M13BITS) << 0)
-
-#define MALIDP_DC_CM_CONTROL(x)	((x) & M1BITS) << 16, 1 << 16
-#define MALIDP_DC_STATUS_GET_CM(reg) (((reg) >> 16) & M1BITS)
-
-#define MALIDP_FORMAT_ARGB8888	0x08
-#define MALIDP_DEFAULT_BG_R 0x0
-#define MALIDP_DEFAULT_BG_G 0x0
-#define MALIDP_DEFAULT_BG_B 0x0
-
-#define MALIDP_PRODUCT_ID(core_id)	((u32)(core_id) >> 16)
-
-#define MALIDP500	0x500
-
-DECLARE_GLOBAL_DATA_PTR;
-
-struct malidp_priv {
-	phys_addr_t base_addr;
-	phys_addr_t dc_status_addr;
-	phys_addr_t dc_control_addr;
-	phys_addr_t cval_addr;
-	struct udevice *display;	/* display device attached */
-	struct clk aclk;
-	struct clk pxlclk;
-	u16 modeset_regs_offset;
-	u8 config_bit_shift;
-	u8 clear_irq;			/* offset for IRQ clear register */
-};
-
-static const struct video_ops malidp_ops = {
-};
-
-static int malidp_get_hwid(phys_addr_t base_addr)
-{
-	int hwid;
-
-	/*
-	 * reading from the old CORE_ID offset will always
-	 * return 0x5000000 on DP500
-	 */
-	hwid = readl(base_addr + MALIDP_CORE_ID);
-	if (MALIDP_PRODUCT_ID(hwid) == MALIDP500)
-		return hwid;
-	/* otherwise try the other gen CORE_ID offset */
-	hwid = readl(base_addr + MALIDP_DC_STATUS + MALIDP_CORE_ID);
-
-	return hwid;
-}
-
-/*
- * wait for config mode bit setup to be acted upon by the hardware
- */
-static int malidp_wait_configdone(struct malidp_priv *malidp)
-{
-	u32 status, tries = 300;
-
-	while (tries--) {
-		status = readl(malidp->dc_status_addr);
-		if ((status >> malidp->config_bit_shift) & 1)
-			break;
-		udelay(500);
-	}
-
-	if (!tries)
-		return -ETIMEDOUT;
-
-	return 0;
-}
-
-/*
- * signal the hardware to enter configuration mode
- */
-static int malidp_enter_config(struct malidp_priv *malidp)
-{
-	setbits_le32(malidp->dc_control_addr, 1 << malidp->config_bit_shift);
-	return malidp_wait_configdone(malidp);
-}
-
-/*
- * signal the hardware to exit configuration mode
- */
-static int malidp_leave_config(struct malidp_priv *malidp)
-{
-	clrbits_le32(malidp->dc_control_addr, 1 << malidp->config_bit_shift);
-	return malidp_wait_configdone(malidp);
-}
-
-static void malidp_setup_timings(struct malidp_priv *malidp,
-				 struct display_timing *timings)
-{
-	u32 val = MALIDP_H_SYNCWIDTH(timings->hsync_len.typ) |
-		  MALIDP_V_SYNCWIDTH(timings->vsync_len.typ);
-	writel(val, malidp->base_addr + malidp->modeset_regs_offset +
-	       MALIDP_SYNC_CONTROL);
-	val = MALIDP_H_BACKPORCH(timings->hback_porch.typ) |
-		MALIDP_H_FRONTPORCH(timings->hfront_porch.typ);
-	writel(val, malidp->base_addr + malidp->modeset_regs_offset +
-	       MALIDP_H_INTERVALS);
-	val = MALIDP_V_BACKPORCH(timings->vback_porch.typ) |
-		MALIDP_V_FRONTPORCH(timings->vfront_porch.typ);
-	writel(val, malidp->base_addr + malidp->modeset_regs_offset +
-	       MALIDP_V_INTERVALS);
-	val = MALIDP_H_ACTIVE(timings->hactive.typ) |
-		MALIDP_V_ACTIVE(timings->vactive.typ);
-	writel(val, malidp->base_addr + malidp->modeset_regs_offset +
-	       MALIDP_HV_ACTIVESIZE);
-	/* default output bit-depth per colour is 8 bits */
-	writel(0x080808, malidp->base_addr + malidp->modeset_regs_offset +
-	       MALIDP_OUTPUT_DEPTH);
-}
-
-static int malidp_setup_mode(struct malidp_priv *malidp,
-			     struct display_timing *timings)
-{
-	int err;
-
-	if (clk_set_rate(&malidp->pxlclk, timings->pixelclock.typ) == 0)
-		return -EIO;
-
-	malidp_setup_timings(malidp, timings);
-
-	err = display_enable(malidp->display, 8, timings);
-	if (err)
-		printf("display_enable failed with %d\n", err);
-
-	return err;
-}
-
-static void malidp_setup_layer(struct malidp_priv *malidp,
-			       struct display_timing *timings,
-			       u32 layer_offset, phys_addr_t fb_addr)
-{
-	u32 val;
-
-	/* setup the base layer's pixel format to A8R8G8B8 */
-	writel(MALIDP_FORMAT_ARGB8888, malidp->base_addr + layer_offset +
-	       MALIDP_LAYER_FORMAT);
-	/* setup layer composition size */
-	val = MALIDP_CMP_V_SIZE(timings->vactive.typ) |
-		MALIDP_CMP_H_SIZE(timings->hactive.typ);
-	writel(val, malidp->base_addr + layer_offset +
-	       MALIDP_LAYER_CMP_SIZE);
-	/* setup layer input size */
-	val = MALIDP_IN_V_SIZE(timings->vactive.typ) |
-		MALIDP_IN_H_SIZE(timings->hactive.typ);
-	writel(val, malidp->base_addr + layer_offset + MALIDP_LAYER_IN_SIZE);
-	/* setup layer stride in bytes */
-	writel(timings->hactive.typ << 2, malidp->base_addr + layer_offset +
-	       MALIDP_LAYER_STRIDE);
-	/* set framebuffer address */
-	writel(lower_32_bits(fb_addr), malidp->base_addr + layer_offset +
-	       MALIDP_LAYER_PTR_LOW);
-	writel(upper_32_bits(fb_addr), malidp->base_addr + layer_offset +
-	       MALIDP_LAYER_PTR_HIGH);
-	/* enable layer */
-	setbits_le32(malidp->base_addr + layer_offset +
-		     MALIDP_LAYER_CONTROL, 1);
-}
-
-static void malidp_set_configvalid(struct malidp_priv *malidp)
-{
-	setbits_le32(malidp->cval_addr, 1);
-}
-
-static int malidp_update_timings_from_edid(struct udevice *dev,
-					   struct display_timing *timings)
-{
-#ifdef CONFIG_DISPLAY
-	struct malidp_priv *priv = dev_get_priv(dev);
-	struct udevice *disp_dev;
-	int err;
-
-	err = uclass_first_device_err(UCLASS_DISPLAY, &disp_dev);
-	if (err)
-		return err;
-
-	priv->display = disp_dev;
-
-	err = display_read_timing(disp_dev, timings);
-	if (err)
-		return err;
-
-#endif
-	return 0;
-}
-
-static int malidp_probe(struct udevice *dev)
-{
-	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
-	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
-	ofnode framebuffer = ofnode_find_subnode(dev_ofnode(dev), "framebuffer");
-	struct malidp_priv *priv = dev_get_priv(dev);
-	struct display_timing timings;
-	phys_addr_t fb_base, fb_size;
-	const char *format;
-	u32 value;
-	int err;
-
-	if (!ofnode_valid(framebuffer))
-		return -EINVAL;
-
-	err = clk_get_by_name(dev, "pxlclk", &priv->pxlclk);
-	if (err) {
-		dev_err(dev, "failed to get pixel clock\n");
-		return err;
-	}
-	err = clk_get_by_name(dev, "aclk", &priv->aclk);
-	if (err) {
-		dev_err(dev, "failed to get AXI clock\n");
-		goto fail_aclk;
-	}
-
-	err = ofnode_decode_display_timing(dev_ofnode(dev), 1, &timings);
-	if (err) {
-		dev_err(dev, "failed to get any display timings\n");
-		goto fail_timings;
-	}
-
-	err = malidp_update_timings_from_edid(dev, &timings);
-	if (err) {
-		printf("malidp_update_timings_from_edid failed: %d\n", err);
-		goto fail_timings;
-	}
-
-	fb_base = ofnode_get_addr_size(framebuffer, "reg", &fb_size);
-	if (fb_base != FDT_ADDR_T_NONE) {
-		uc_plat->base = fb_base;
-		uc_plat->size = fb_size;
-	} else {
-		printf("cannot get address size for framebuffer\n");
-	}
-
-	err = ofnode_read_u32(framebuffer, "width", &value);
-	if (err)
-		goto fail_timings;
-	uc_priv->xsize = (ushort)value;
-
-	err = ofnode_read_u32(framebuffer, "height", &value);
-	if (err)
-		goto fail_timings;
-	uc_priv->ysize = (ushort)value;
-
-	format = ofnode_read_string(framebuffer, "format");
-	if (!format) {
-		err = -EINVAL;
-		goto fail_timings;
-	} else if (!strncmp(format, "a8r8g8b8", 8)) {
-		uc_priv->bpix = VIDEO_BPP32;
-	}
-
-	uc_priv->rot = 0;
-	priv->base_addr = (phys_addr_t)dev_read_addr(dev);
-
-	clk_enable(&priv->pxlclk);
-	clk_enable(&priv->aclk);
-
-	value = malidp_get_hwid(priv->base_addr);
-	printf("Display: Arm Mali DP%3x r%dp%d\n", MALIDP_PRODUCT_ID(value),
-	       (value >> 12) & 0xf, (value >> 8) & 0xf);
-
-	if (MALIDP_PRODUCT_ID(value) == MALIDP500) {
-		/* DP500 is special */
-		priv->modeset_regs_offset = 0x28;
-		priv->dc_status_addr = priv->base_addr;
-		priv->dc_control_addr = priv->base_addr + 0xc;
-		priv->cval_addr = priv->base_addr + 0xf00;
-		priv->config_bit_shift = 17;
-		priv->clear_irq = 0;
-	} else {
-		priv->modeset_regs_offset = 0x30;
-		priv->dc_status_addr = priv->base_addr + MALIDP_DC_STATUS;
-		priv->dc_control_addr = priv->base_addr + MALIDP_DC_CONTROL;
-		priv->cval_addr = priv->base_addr + MALIDP_DC_CFG_VALID;
-		priv->config_bit_shift = 16;
-		priv->clear_irq = MALIDP_REG_CLEARIRQ;
-	}
-
-	/* enter config mode */
-	err  = malidp_enter_config(priv);
-	if (err)
-		return err;
-
-	/* disable interrupts */
-	writel(0, priv->dc_status_addr + MALIDP_REG_MASKIRQ);
-	writel(0xffffffff, priv->dc_status_addr + priv->clear_irq);
-
-	err = malidp_setup_mode(priv, &timings);
-	if (err)
-		return err;
-
-	malidp_setup_layer(priv, &timings, MALIDP_LAYER_LV1,
-			   (phys_addr_t)uc_plat->base);
-
-	err = malidp_leave_config(priv);
-	if (err)
-		return err;
-
-	malidp_set_configvalid(priv);
-
-	return 0;
-}
-
-static int malidp_bind(struct udevice *dev)
-{
-	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
-
-	/* choose max possible size: 2K x 2K, XRGB888 framebuffer */
-	uc_plat->size = 4 * 2048 * 2048;
-
-	return 0;
-}
-
-static const struct udevice_id malidp_ids[] = {
-	{ .compatible = "arm,mali-dp500" },
-	{ .compatible = "arm,mali-dp550" },
-	{ .compatible = "arm,mali-dp650" },
-	{ }
-};
-
-U_BOOT_DRIVER(mali_dp) = {
-	.name		= "mali_dp",
-	.id		= UCLASS_VIDEO,
-	.of_match	= malidp_ids,
-	.bind		= malidp_bind,
-	.probe		= malidp_probe,
-	.priv_auto	= sizeof(struct malidp_priv),
-	.ops		= &malidp_ops,
-};
-- 
2.43.0


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

* [PATCHv2 2/7] video: tegra: Rework some of the driver dependencies
  2025-11-12 20:00 [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
  2025-11-12 20:00 ` [PATCHv2 1/7] video: mali_dp: Remove unused driver Tom Rini
@ 2025-11-12 20:00 ` Tom Rini
  2025-11-12 20:00 ` [PATCHv2 3/7] video: Tighten some video " Tom Rini
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2025-11-12 20:00 UTC (permalink / raw)
  To: u-boot; +Cc: Anatolij Gustschin, Svyatoslav Ryhel

Looking these drivers over, all of them cannot build without access to
some platform specific header files. Express those requirements in
Kconfig as well. Furthermore, update the logic a bit more to reflect
which parts are optional when other drivers are enabled and which parts
cannot be enabled (meaningfully) by themselves.

Reviewed-by: Svyatoslav Ryhel <clamor95@gmail.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
---
 configs/star_defconfig      |  1 +
 drivers/video/tegra/Kconfig | 19 ++++++++++---------
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/configs/star_defconfig b/configs/star_defconfig
index 59eabdcb2b43..7015c417e9eb 100644
--- a/configs/star_defconfig
+++ b/configs/star_defconfig
@@ -86,4 +86,5 @@ CONFIG_VIDEO_LCD_LG_LH400WV3=y
 CONFIG_VIDEO_LCD_HITACHI_TX10D07VM0BAA=y
 CONFIG_BACKLIGHT_AAT2870=y
 CONFIG_VIDEO_BRIDGE=y
+CONFIG_VIDEO_TEGRA=y
 CONFIG_TEGRA_8BIT_CPU_BRIDGE=y
diff --git a/drivers/video/tegra/Kconfig b/drivers/video/tegra/Kconfig
index f32972d937e5..8bc29f2838bd 100644
--- a/drivers/video/tegra/Kconfig
+++ b/drivers/video/tegra/Kconfig
@@ -1,10 +1,12 @@
 config HOST1X_TEGRA
-	bool "NVIDIA Tegra host1x BUS support"
-	depends on SIMPLE_BUS
+	bool
+	select SIMPLE_BUS
+	help
+	  NVIDIA Tegra host1x BUS support
 
 config VIDEO_TEGRA
 	bool "Enable Display Controller support on Tegra devices"
-	depends on OF_CONTROL
+	depends on OF_CONTROL && ARCH_TEGRA
 	select HOST1X_TEGRA
 	help
 	   Enable support for Display Controller found in Tegra SoC. The
@@ -17,7 +19,7 @@ config VIDEO_TEGRA
 
 config VIDEO_DSI_TEGRA
 	bool "Enable DSI controller support on Tegra devices"
-	depends on VIDEO_BRIDGE && PANEL && DM_GPIO
+	depends on VIDEO_BRIDGE && PANEL && DM_GPIO && ARCH_TEGRA
 	select VIDEO_TEGRA
 	select VIDEO_MIPI_DSI
 	help
@@ -27,7 +29,7 @@ config VIDEO_DSI_TEGRA
 
 config VIDEO_HDMI_TEGRA
 	bool "Enable HDMI support on Tegra devices"
-	depends on VIDEO_BRIDGE && DM_I2C
+	depends on VIDEO_BRIDGE && DM_I2C && ARCH_TEGRA
 	select I2C_EDID
 	select VIDEO_TEGRA
 	help
@@ -36,16 +38,14 @@ config VIDEO_HDMI_TEGRA
 
 config TEGRA_BACKLIGHT_PWM
 	bool "Enable Tegra DC PWM backlight support"
-	depends on BACKLIGHT
-	select VIDEO_TEGRA
+	depends on BACKLIGHT && VIDEO_TEGRA
 	help
 	   Enable support for the Display Controller dependent PWM backlight
 	   found in the Tegra SoC and usually used with DSI panels.
 
 config TEGRA_8BIT_CPU_BRIDGE
 	bool "Enable 8 bit panel communication protocol for Tegra 20/30"
-	depends on VIDEO_BRIDGE && DM_GPIO
-	select VIDEO_TEGRA
+	depends on VIDEO_BRIDGE && DM_GPIO && VIDEO_TEGRA
 	select VIDEO_MIPI_DSI
 	help
 	   Tegra 20 and Tegra 30 feature 8 bit CPU driver panel control
@@ -54,6 +54,7 @@ config TEGRA_8BIT_CPU_BRIDGE
 
 config VIDEO_TEGRA124
 	bool "Enable video support on Tegra124"
+	depends on ARCH_TEGRA
 	imply VIDEO_DAMAGE
 	help
 	   Tegra124 supports many video output options including eDP and
-- 
2.43.0


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

* [PATCHv2 3/7] video: Tighten some video driver dependencies
  2025-11-12 20:00 [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
  2025-11-12 20:00 ` [PATCHv2 1/7] video: mali_dp: Remove unused driver Tom Rini
  2025-11-12 20:00 ` [PATCHv2 2/7] video: tegra: Rework some of the driver dependencies Tom Rini
@ 2025-11-12 20:00 ` Tom Rini
  2025-11-12 20:00 ` [PATCHv2 4/7] video: anx9804: Only build when needed Tom Rini
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2025-11-12 20:00 UTC (permalink / raw)
  To: u-boot; +Cc: Anatolij Gustschin

A few video drivers cannot build without access to some platform
specific header files. Express those requirements in Kconfig as well.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
 drivers/video/Kconfig          | 4 ++++
 drivers/video/bridge/Kconfig   | 2 +-
 drivers/video/exynos/Kconfig   | 2 +-
 drivers/video/imx/Kconfig      | 1 +
 drivers/video/meson/Kconfig    | 2 +-
 drivers/video/rockchip/Kconfig | 2 +-
 drivers/video/stm32/Kconfig    | 1 -
 drivers/video/ti/Kconfig       | 1 +
 8 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index a12df55f84ff..0fc1c161541e 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -523,6 +523,7 @@ config ATMEL_LCD_BGR555
 
 config VIDEO_BCM2835
 	bool "Display support for BCM2835"
+	depends on ARCH_BCM283X
 	imply VIDEO_DAMAGE
 	help
 	  The graphics processor already sets up the display so this driver
@@ -755,6 +756,7 @@ source "drivers/video/meson/Kconfig"
 
 config VIDEO_MVEBU
 	bool "Armada XP LCD controller"
+	depends on ARCH_MVEBU
 	imply VIDEO_DAMAGE
 	---help---
 	Support for the LCD controller integrated in the Marvell
@@ -796,6 +798,7 @@ config NXP_TDA19988
 
 config ATMEL_HLCD
 	bool "Enable ATMEL video support using HLCDC"
+	depends on ARCH_AT91
 	imply VIDEO_DAMAGE
 	help
 	   HLCDC supports video output to an attached LCD panel.
@@ -907,6 +910,7 @@ source "drivers/video/imx/Kconfig"
 
 config VIDEO_MXS
 	bool "Enable video support on i.MX28/i.MX6UL/i.MX7 SoCs"
+	depends on MACH_IMX
 	imply VIDEO_DAMAGE
 	help
 	  Enable framebuffer driver for i.MX28/i.MX6UL/i.MX7 processors
diff --git a/drivers/video/bridge/Kconfig b/drivers/video/bridge/Kconfig
index a48cec7a1384..5322a0029285 100644
--- a/drivers/video/bridge/Kconfig
+++ b/drivers/video/bridge/Kconfig
@@ -53,7 +53,7 @@ config VIDEO_BRIDGE_SOLOMON_SSD2825
 
 config VIDEO_BRIDGE_TOSHIBA_TC358768
 	bool "Support Toshiba TC358768 MIPI DSI bridge"
-	depends on VIDEO_BRIDGE && PANEL && DM_GPIO
+	depends on VIDEO_BRIDGE && PANEL && DM_GPIO && !64BIT
 	select VIDEO_MIPI_DSI
 	select DM_I2C
 	help
diff --git a/drivers/video/exynos/Kconfig b/drivers/video/exynos/Kconfig
index a2cf752aac03..1fffec5c9c5e 100644
--- a/drivers/video/exynos/Kconfig
+++ b/drivers/video/exynos/Kconfig
@@ -1,7 +1,7 @@
 
 menuconfig VIDEO_EXYNOS
 	bool "Enable Exynos video support"
-	depends on VIDEO
+	depends on VIDEO && ARCH_EXYNOS
 	help
 	  Enable support for various video output options on Exynos SoCs.
 
diff --git a/drivers/video/imx/Kconfig b/drivers/video/imx/Kconfig
index 4a1927c66d7d..b35ba965efc3 100644
--- a/drivers/video/imx/Kconfig
+++ b/drivers/video/imx/Kconfig
@@ -23,3 +23,4 @@ config IMX_LDB
 
 config IMX_LCDIF
 	bool "i.MX LCDIFv3 LCD controller"
+	depends on MACH_IMX
diff --git a/drivers/video/meson/Kconfig b/drivers/video/meson/Kconfig
index fcf486ca0a3a..77c3017382eb 100644
--- a/drivers/video/meson/Kconfig
+++ b/drivers/video/meson/Kconfig
@@ -6,7 +6,7 @@
 
 config VIDEO_MESON
 	bool "Enable Amlogic Meson video support"
-	depends on VIDEO
+	depends on VIDEO && ARCH_MESON
 	select DISPLAY
 	imply VIDEO_DAMAGE
 	help
diff --git a/drivers/video/rockchip/Kconfig b/drivers/video/rockchip/Kconfig
index 0f4550a29e38..96af6d28ef0b 100644
--- a/drivers/video/rockchip/Kconfig
+++ b/drivers/video/rockchip/Kconfig
@@ -10,7 +10,7 @@
 
 menuconfig VIDEO_ROCKCHIP
 	bool "Enable Rockchip Video Support"
-	depends on VIDEO
+	depends on VIDEO && ARCH_ROCKCHIP
 	imply VIDEO_DAMAGE
 	help
 	  Rockchip SoCs provide video output capabilities for High-Definition
diff --git a/drivers/video/stm32/Kconfig b/drivers/video/stm32/Kconfig
index c354c402c288..ea4ce6799fda 100644
--- a/drivers/video/stm32/Kconfig
+++ b/drivers/video/stm32/Kconfig
@@ -7,7 +7,6 @@
 
 menuconfig VIDEO_STM32
 	bool "Enable STM32 video support"
-	depends on VIDEO
 	imply VIDEO_DAMAGE
 	help
 	  STM32 supports many video output options including RGB and
diff --git a/drivers/video/ti/Kconfig b/drivers/video/ti/Kconfig
index 3081e9e8c09b..0483f760ea19 100644
--- a/drivers/video/ti/Kconfig
+++ b/drivers/video/ti/Kconfig
@@ -4,5 +4,6 @@
 #
 config AM335X_LCD
 	bool "Enable AM335x video support"
+	depends on ARCH_OMAP2PLUS
 	help
 	   Supports video output to an attached LCD panel.
-- 
2.43.0


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

* [PATCHv2 4/7] video: anx9804: Only build when needed
  2025-11-12 20:00 [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
                   ` (2 preceding siblings ...)
  2025-11-12 20:00 ` [PATCHv2 3/7] video: Tighten some video " Tom Rini
@ 2025-11-12 20:00 ` Tom Rini
  2025-11-12 20:00 ` [PATCHv2 5/7] video: ihs_video_out: Add missing <asm/io.h> to ihs_video_out.c Tom Rini
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2025-11-12 20:00 UTC (permalink / raw)
  To: u-boot; +Cc: Anatolij Gustschin

The logic for how to handle this video driver is slightly odd. Only in
the case of when CONFIG_VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804 is
enabled do we need to have this file built, and otherwise we have a
dummy function in use. Correct the logic by only building this file when
needed.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
 drivers/video/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index 4189b81ba6b3..984768ea156d 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -56,7 +56,7 @@ obj-$(CONFIG_VIDEO_DW_MIPI_DSI) += dw_mipi_dsi.o
 obj-$(CONFIG_VIDEO_EFI) += efi.o
 obj-y += imx/
 obj-$(CONFIG_VIDEO_IVYBRIDGE_IGD) += ivybridge_igd.o
-obj-$(CONFIG_VIDEO_LCD_ANX9804) += anx9804.o
+obj-$(CONFIG_VIDEO_LCD_PANEL_EDP_4_LANE_1620M_VIA_ANX9804) += anx9804.o
 obj-$(CONFIG_VIDEO_LCD_ENDEAVORU) += endeavoru-panel.o
 obj-$(CONFIG_VIDEO_LCD_HIMAX_HX8394) += himax-hx8394.o
 obj-$(CONFIG_VIDEO_LCD_HITACHI_TX10D07VM0BAA) += hitachi-tx10d07vm0baa.o
-- 
2.43.0


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

* [PATCHv2 5/7] video: ihs_video_out: Add missing <asm/io.h> to ihs_video_out.c
  2025-11-12 20:00 [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
                   ` (3 preceding siblings ...)
  2025-11-12 20:00 ` [PATCHv2 4/7] video: anx9804: Only build when needed Tom Rini
@ 2025-11-12 20:00 ` Tom Rini
  2025-11-12 20:00 ` [PATCHv2 6/7] video: sharp-lq101r1sx01: Do not make use of 'z' for printing non-size_t Tom Rini
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2025-11-12 20:00 UTC (permalink / raw)
  To: u-boot; +Cc: Anatolij Gustschin

This driver references IO macros while relying on an indirection
inclusion of <asm/io.h>. Add the missing include directly.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
 drivers/video/ihs_video_out.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/ihs_video_out.c b/drivers/video/ihs_video_out.c
index bf4d4995c36c..e2130274b491 100644
--- a/drivers/video/ihs_video_out.c
+++ b/drivers/video/ihs_video_out.c
@@ -15,6 +15,7 @@
 #include <regmap.h>
 #include <video_osd.h>
 #include <asm/gpio.h>
+#include <asm/io.h>
 
 static const uint MAX_X_CHARS = 53;
 static const uint MAX_Y_CHARS = 26;
-- 
2.43.0


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

* [PATCHv2 6/7] video: sharp-lq101r1sx01: Do not make use of 'z' for printing non-size_t
  2025-11-12 20:00 [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
                   ` (4 preceding siblings ...)
  2025-11-12 20:00 ` [PATCHv2 5/7] video: ihs_video_out: Add missing <asm/io.h> to ihs_video_out.c Tom Rini
@ 2025-11-12 20:00 ` Tom Rini
  2025-11-12 20:00 ` [PATCHv2 7/7] video: stm32: stm32_ltdc: Add missing <linux/sizes.h> to stm32_ltdc.c Tom Rini
  2025-12-30 23:19 ` [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
  7 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2025-11-12 20:00 UTC (permalink / raw)
  To: u-boot; +Cc: Anatolij Gustschin

The debug macros in this driver make use of the z prefix when printing
regular, non-size_t variables and this results in a warning. Drop 'z'.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
 drivers/video/sharp-lq101r1sx01.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/video/sharp-lq101r1sx01.c b/drivers/video/sharp-lq101r1sx01.c
index 4fdf0da8a94c..1c7cef777c30 100644
--- a/drivers/video/sharp-lq101r1sx01.c
+++ b/drivers/video/sharp-lq101r1sx01.c
@@ -40,14 +40,14 @@ static int sharp_lq101r1sx01_write(struct mipi_dsi_device *dsi,
 
 	ret = mipi_dsi_generic_write(dsi, payload, sizeof(payload));
 	if (ret < 0) {
-		log_debug("%s: failed to write %02x to %04x: %zd\n",
+		log_debug("%s: failed to write %02x to %04x: %d\n",
 			  __func__, value, offset, ret);
 		return ret;
 	}
 
 	ret = mipi_dsi_dcs_nop(dsi);
 	if (ret < 0) {
-		log_debug("%s: failed to send DCS nop: %zd\n",
+		log_debug("%s: failed to send DCS nop: %d\n",
 			  __func__, ret);
 		return ret;
 	}
-- 
2.43.0


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

* [PATCHv2 7/7] video: stm32: stm32_ltdc: Add missing <linux/sizes.h> to stm32_ltdc.c
  2025-11-12 20:00 [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
                   ` (5 preceding siblings ...)
  2025-11-12 20:00 ` [PATCHv2 6/7] video: sharp-lq101r1sx01: Do not make use of 'z' for printing non-size_t Tom Rini
@ 2025-11-12 20:00 ` Tom Rini
  2025-12-30 23:19 ` [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
  7 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2025-11-12 20:00 UTC (permalink / raw)
  To: u-boot; +Cc: Anatolij Gustschin

This driver references the SZ_ macros while relying on an indirection
inclusion of <linux/sizes.h>. Add the missing include directly.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
 drivers/video/stm32/stm32_ltdc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/stm32/stm32_ltdc.c b/drivers/video/stm32/stm32_ltdc.c
index 0a062c8939db..1281acaaadee 100644
--- a/drivers/video/stm32/stm32_ltdc.c
+++ b/drivers/video/stm32/stm32_ltdc.c
@@ -20,6 +20,7 @@
 #include <dm/device_compat.h>
 #include <linux/bitops.h>
 #include <linux/printk.h>
+#include <linux/sizes.h>
 
 struct stm32_ltdc_priv {
 	void __iomem *regs;
-- 
2.43.0


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

* Re: [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies
  2025-11-12 20:00 [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
                   ` (6 preceding siblings ...)
  2025-11-12 20:00 ` [PATCHv2 7/7] video: stm32: stm32_ltdc: Add missing <linux/sizes.h> to stm32_ltdc.c Tom Rini
@ 2025-12-30 23:19 ` Tom Rini
  7 siblings, 0 replies; 9+ messages in thread
From: Tom Rini @ 2025-12-30 23:19 UTC (permalink / raw)
  To: u-boot, Tom Rini; +Cc: Anatolij Gustschin

On Wed, 12 Nov 2025 14:00:01 -0600, Tom Rini wrote:

> This is v2 of the series I originally posted back in August[1]. The
> changes here are that I've dropped the first patch as TI has recently
> posted their rework of the driver in question, and I added Svyatoslav's
> Reviewed-by tag. The end goal here is that "allyesconfig" will be able
> to build (on sandbox).
> 
> [1]: https://patchwork.ozlabs.org/project/uboot/list/?series=468123&state=*
> 
> [...]

Applied to u-boot/next, thanks!

[1/7] video: mali_dp: Remove unused driver
      commit: c2ef9e1b0cb7e32a8046e4714a219fd21b9a0daf
[2/7] video: tegra: Rework some of the driver dependencies
      commit: 68735fd33427ff1576f37391f24b5d8912afe45e
[3/7] video: Tighten some video driver dependencies
      commit: 96d1e8b29b4fc3aa150bce520f33966955efa456
[4/7] video: anx9804: Only build when needed
      commit: e1bcce1dbbb13a7ec1e8f02e8ce27fad8c550f23
[5/7] video: ihs_video_out: Add missing <asm/io.h> to ihs_video_out.c
      commit: 082e5118dab3a23c3d61ed429ad03195efe57653
[6/7] video: sharp-lq101r1sx01: Do not make use of 'z' for printing non-size_t
      commit: 5d3af86ae16f1207e1b38b00fccb5d01965cc778
[7/7] video: stm32: stm32_ltdc: Add missing <linux/sizes.h> to stm32_ltdc.c
      commit: b6f78b815af652cf7ce47db48f93d6283cad4c5b
-- 
Tom



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

end of thread, other threads:[~2025-12-30 23:20 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-12 20:00 [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini
2025-11-12 20:00 ` [PATCHv2 1/7] video: mali_dp: Remove unused driver Tom Rini
2025-11-12 20:00 ` [PATCHv2 2/7] video: tegra: Rework some of the driver dependencies Tom Rini
2025-11-12 20:00 ` [PATCHv2 3/7] video: Tighten some video " Tom Rini
2025-11-12 20:00 ` [PATCHv2 4/7] video: anx9804: Only build when needed Tom Rini
2025-11-12 20:00 ` [PATCHv2 5/7] video: ihs_video_out: Add missing <asm/io.h> to ihs_video_out.c Tom Rini
2025-11-12 20:00 ` [PATCHv2 6/7] video: sharp-lq101r1sx01: Do not make use of 'z' for printing non-size_t Tom Rini
2025-11-12 20:00 ` [PATCHv2 7/7] video: stm32: stm32_ltdc: Add missing <linux/sizes.h> to stm32_ltdc.c Tom Rini
2025-12-30 23:19 ` [PATCHv2 0/7] video: Remove unused drivers, clean up dependencies Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox