U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Dario Binacchi <dariobin@libero.it>
To: u-boot@lists.denx.de
Subject: [PATCH v2 03/12] pinctrl: single: fix offset management
Date: Thu, 28 Jan 2021 23:24:52 +0100	[thread overview]
Message-ID: <20210128222501.31943-4-dariobin@libero.it> (raw)
In-Reply-To: <20210128222501.31943-1-dariobin@libero.it>

The pinmux configuration DT node of a peripheral does not define a
physical address but an offset. Only by adding it to the base address of
the controller it is possible to calculate the physical address of the
register to be configured. Printing an offset also requires a different
formatting option than a physical address.

Signed-off-by: Dario Binacchi <dariobin@libero.it>
---

(no changes since v1)

 drivers/pinctrl/pinctrl-single.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index 49ed15211d..935b5e920d 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -77,15 +77,17 @@ static int single_configure_pins(struct udevice *dev,
 	struct single_pdata *pdata = dev_get_plat(dev);
 	int n, count = size / sizeof(struct single_fdt_pin_cfg);
 	phys_addr_t reg;
-	u32 val;
+	u32 offset, val;
 
 	for (n = 0; n < count; n++, pins++) {
-		reg = fdt32_to_cpu(pins->reg);
-		if ((reg < 0) || (reg > pdata->offset)) {
-			dev_dbg(dev, "  invalid register offset 0x%pa\n", &reg);
+		offset = fdt32_to_cpu(pins->reg);
+		if (offset < 0 || offset > pdata->offset) {
+			dev_dbg(dev, "  invalid register offset 0x%x\n",
+				offset);
 			continue;
 		}
-		reg += pdata->base;
+
+		reg = pdata->base + offset;
 		val = fdt32_to_cpu(pins->val) & pdata->mask;
 		switch (pdata->width) {
 		case 16:
@@ -111,15 +113,17 @@ static int single_configure_bits(struct udevice *dev,
 	struct single_pdata *pdata = dev_get_plat(dev);
 	int n, count = size / sizeof(struct single_fdt_bits_cfg);
 	phys_addr_t reg;
-	u32 val, mask;
+	u32 offset, val, mask;
 
 	for (n = 0; n < count; n++, pins++) {
-		reg = fdt32_to_cpu(pins->reg);
-		if ((reg < 0) || (reg > pdata->offset)) {
-			dev_dbg(dev, "  invalid register offset 0x%pa\n", &reg);
+		offset = fdt32_to_cpu(pins->reg);
+		if (offset < 0 || offset > pdata->offset) {
+			dev_dbg(dev, "  invalid register offset 0x%x\n",
+				offset);
 			continue;
 		}
-		reg += pdata->base;
+
+		reg = pdata->base + offset;
 
 		mask = fdt32_to_cpu(pins->mask);
 		val = fdt32_to_cpu(pins->val) & mask;
-- 
2.17.1

  parent reply	other threads:[~2021-01-28 22:24 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-28 22:24 [PATCH v2 00/12] Add support for pinmux status command on beaglebone Dario Binacchi
2021-01-28 22:24 ` [PATCH v2 01/12] pinctrl: single: fix format of structure documentation Dario Binacchi
2021-01-28 22:24 ` [PATCH v2 02/12] pinctrl: single: fix the loop counter variable type Dario Binacchi
2021-01-28 22:24 ` Dario Binacchi [this message]
2021-01-29 16:50   ` [PATCH v2 03/12] pinctrl: single: fix offset management Pratyush Yadav
2021-01-28 22:24 ` [PATCH v2 04/12] pinctrl: single: fix debug messages formatting Dario Binacchi
2021-01-29 16:53   ` Pratyush Yadav
2021-01-28 22:24 ` [PATCH v2 05/12] pinctrl: single: get register area size by device API Dario Binacchi
2021-01-29 17:47   ` Pratyush Yadav
2021-01-28 22:24 ` [PATCH v2 06/12] pinctrl: single: check "register-width" DT property Dario Binacchi
2021-01-28 22:24 ` [PATCH v2 07/12] pinctrl: single: change function mask default value Dario Binacchi
2021-02-01 20:44   ` Simon Glass
2021-01-28 22:24 ` [PATCH v2 08/12] pinctrl: single: add register access functions Dario Binacchi
2021-02-01 20:44   ` Simon Glass
2021-01-28 22:24 ` [PATCH v2 09/12] pinctrl: single: add get_pins_count operation Dario Binacchi
2021-01-28 22:24 ` [PATCH v2 10/12] pinctrl: single: add get_pin_name operation Dario Binacchi
2021-01-28 22:25 ` [PATCH v2 11/12] pinctrl: single: add get_pin_muxing operation Dario Binacchi
2021-02-01 20:44   ` Simon Glass
2021-01-28 22:25 ` [PATCH v2 12/12] test: pinmux: add test for 'pinctrl-single' driver Dario Binacchi
2021-02-04 18:02 ` [PATCH v2 00/12] Add support for pinmux status command on beaglebone Lokesh Vutla
2021-02-05 10:54   ` Dario Binacchi
2021-02-05 14:17     ` Lokesh Vutla
2021-02-05 18:37       ` Tom Rini

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=20210128222501.31943-4-dariobin@libero.it \
    --to=dariobin@libero.it \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox