All of lore.kernel.org
 help / color / mirror / Atom feed
From: Przemyslaw Marczak <p.marczak@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] fdt: Do not report bad cell count when #size-cells = <0>
Date: Thu, 14 Apr 2016 11:45:48 +0200	[thread overview]
Message-ID: <570F66CC.7040509@samsung.com> (raw)
In-Reply-To: <dbb9c24189974a6fc157bf1a38cdc82d48be77a5.1460614826.git.michal.simek@xilinx.com>

Hello Michal,

+CC Stephen Warren

On 04/14/2016 08:20 AM, Michal Simek wrote:
> Upcomming pca953x gpio driver (tca6416 is compatible with it)
> is using for example this DT description (ZynqMP zcu102):
> i2c0: i2c at ff020000 {
> 	compatible = "cdns,i2c-r1p10";
> 	interrupt-parent = <&gic>;
> 	interrupts = <0 17 4>;
> 	reg = <0x0 0xff020000 0x1000>;
> 	#address-cells = <1>;
> 	#size-cells = <0>;
>
> 	tca6416_u61: gpio at 21 {
> 		compatible = "ti,tca6416";
> 		reg = <0x21>;
> 		gpio-controller;
> 		#gpio-cells = <2>;
> 	};
> };
>
> I2C bus is using #size-cells = <0> which current code detects as
> "Bad cell count":
> OF: reached root node
> OF: ** translation for device gpio at 20 **
> __of_translate_address: Bad cell count for gpio at 20
> Command 'gpio' failed: Error -19
>
> This patch fixes OF_CHECK_COUNTS macro not to report problem when
> size-cells is 0 which is also valid bus configuration.
>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
>
>   common/fdt_support.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/common/fdt_support.c b/common/fdt_support.c
> index ced119e70d9f..5f5b49c6210b 100644
> --- a/common/fdt_support.c
> +++ b/common/fdt_support.c
> @@ -941,7 +941,7 @@ void fdt_del_node_and_alias(void *blob, const char *alias)
>   #define OF_MAX_ADDR_CELLS	4
>   #define OF_BAD_ADDR	FDT_ADDR_T_NONE
>   #define OF_CHECK_COUNTS(na, ns)	((na) > 0 && (na) <= OF_MAX_ADDR_CELLS && \
> -			(ns) > 0)
> +			(ns) >= 0)
>
>   /* Debug utility */
>   #ifdef DEBUG
>

Some time ago I tried to solve GPIO issue on Exynos boards, by proposing 
change similar to your patch. After some discussion with Stephen Warren 
and Simon Glass, I was aware, that it was a wrong approach to solve this 
problem.

You can follow it here:

http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/247651

https://patchwork.ozlabs.org/patch/564246/
https://patchwork.ozlabs.org/patch/557008/
https://patchwork.ozlabs.org/patch/557010/
https://patchwork.ozlabs.org/patch/557009/

As a conclusion, for MMIO addresses we are using 'reg' property with a 
range. If you need use this as I2C address or I2C device's register - 
e.g. 'reg = <0x4>' - it's good until you don't use dev_get_addr() 
function to get it - because it's a different address space - non-MMIO.

I didn't saw your GPIO driver, but I can assume, that you should use 
fdtdec_get_int() to get the GPIO register addres instead of dev_get_addr().

Please look at function i2c_chip_ofdata_to_platdata() in i2c-uclass.c, 
the reg is taken by using fdtdec_get_int()...

Best regards,
-- 
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

  parent reply	other threads:[~2016-04-14  9:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-14  6:20 [U-Boot] [PATCH] fdt: Do not report bad cell count when #size-cells = <0> Michal Simek
2016-04-14  7:54 ` Peng Fan
2016-04-14  9:45 ` Przemyslaw Marczak [this message]
2016-04-14 12:49   ` Michal Simek

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=570F66CC.7040509@samsung.com \
    --to=p.marczak@samsung.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.