All of lore.kernel.org
 help / color / mirror / Atom feed
From: Caleb Connolly <caleb.connolly@linaro.org>
To: Anatolij Gustschin <agust@denx.de>, Tom Rini <trini@konsulko.com>
Cc: Rob Clark <robdclark@gmail.com>,
	u-boot@lists.denx.de, Caleb Connolly <caleb.connolly@linaro.org>
Subject: [PATCH] video: simplefb: modernise DT parsing
Date: Fri, 16 Feb 2024 18:38:06 +0000	[thread overview]
Message-ID: <20240216183840.879482-1-caleb.connolly@linaro.org> (raw)

simplefb was using old style FDT parsing which doesn't behave well in
combination with livetree. Update it to use ofnode instead and add a
missing null check for the "format" property.

Standardise the error logging while we're here.

Fixes: 971d7e64245d ("video: simplefb")
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
---
 drivers/video/simplefb.c | 32 ++++++++++++++++++++------------
 1 file changed, 20 insertions(+), 12 deletions(-)

diff --git a/drivers/video/simplefb.c b/drivers/video/simplefb.c
index 235ec761f70b..3d83bf8f2e88 100644
--- a/drivers/video/simplefb.c
+++ b/drivers/video/simplefb.c
@@ -15,14 +15,14 @@ static int simple_video_probe(struct udevice *dev)
 {
 	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
-	const void *blob = gd->fdt_blob;
-	const int node = dev_of_offset(dev);
+	ofnode node = dev_ofnode(dev);
 	const char *format;
+	int ret;
 	fdt_addr_t base;
 	fdt_size_t size;
+	u32 width, height, rot;
 
-	base = fdtdec_get_addr_size_auto_parent(blob, dev_of_offset(dev->parent),
-			node, "reg", 0, &size, false);
+	base = dev_read_addr_size(dev, &size);
 	if (base == FDT_ADDR_T_NONE) {
 		debug("%s: Failed to decode memory region\n", __func__);
 		return -EINVAL;
@@ -41,17 +41,25 @@ static int simple_video_probe(struct udevice *dev)
 
 	debug("%s: Query resolution...\n", __func__);
 
-	uc_priv->xsize = fdtdec_get_uint(blob, node, "width", 0);
-	uc_priv->ysize = fdtdec_get_uint(blob, node, "height", 0);
-	uc_priv->rot = fdtdec_get_uint(blob, node, "rot", 0);
-	if (uc_priv->rot > 3) {
-		log_debug("%s: invalid rot\n", __func__);
-		return log_msg_ret("rot", -EINVAL);
+	ret = ofnode_read_u32(node, "width", &width);
+	ret = ret ?: ofnode_read_u32(node, "height", &height);
+	if (ret || !width || !height) {
+		log_err("%s: invalid width or height: %d\n", __func__, ret);
+		return ret;
 	}
+	ofnode_read_u32(node, "rot", &rot);
+	uc_priv->rot = rot;
+	uc_priv->xsize = width;
+	uc_priv->ysize = height;
 
-	format = fdt_getprop(blob, node, "format", NULL);
+	format = ofnode_read_string(node, "format");
 	debug("%s: %dx%d@%s\n", __func__, uc_priv->xsize, uc_priv->ysize, format);
 
+	if (!format) {
+		log_err("%s: please add required property \"format\"\n", __func__);
+		return -EINVAL;
+	}
+
 	if (strcmp(format, "r5g6b5") == 0) {
 		uc_priv->bpix = VIDEO_BPP16;
 	} else if (strcmp(format, "a8b8g8r8") == 0 ||
@@ -67,7 +75,7 @@ static int simple_video_probe(struct udevice *dev)
 		uc_priv->bpix = VIDEO_BPP32;
 		uc_priv->format = VIDEO_X2R10G10B10;
 	} else {
-		printf("%s: invalid format: %s\n", __func__, format);
+		log_err("%s: invalid format: %s\n", __func__, format);
 		return -EINVAL;
 	}
 
-- 
2.43.1


             reply	other threads:[~2024-02-16 18:39 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-16 18:38 Caleb Connolly [this message]
2024-02-20 13:21 ` [PATCH] video: simplefb: modernise DT parsing Dan Carpenter
2024-04-20 23:12 ` Anatolij Gustschin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240216183840.879482-1-caleb.connolly@linaro.org \
    --to=caleb.connolly@linaro.org \
    --cc=agust@denx.de \
    --cc=robdclark@gmail.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.