public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 0/3] dm: add dev_get_reg() for getting device node's reg
Date: Wed, 16 Dec 2015 12:07:55 -0700	[thread overview]
Message-ID: <5671B68B.5080203@wwwdotorg.org> (raw)
In-Reply-To: <5671B33E.5070701@wwwdotorg.org>

On 12/16/2015 11:53 AM, Stephen Warren wrote:
> On 12/15/2015 09:32 AM, Przemyslaw Marczak wrote:
>> commit: dm: core: Enable optional use of fdt_translate_address()
>>
>> enables device's bus/child address translation method, depending
>> on bus 'ranges' property and including child 'reg' property.
>> This change makes impossible to decode the 'reg' for node with
>> '#size-cells' equal to 0.
>>
>> Such case is possible by the specification and is also used in U-Boot,
>> e.g. by I2C uclass or S5P GPIO - the last one is broken at present.
>
> Can you please explain the problem you're seeing in more detail? Without
> any context, my initial reaction is that this is simply a bug somewhere.
> That bug should be fixed, rather than introducing new APIs to hide the
> problem.

Ah, I guess the problem is caused by the following code in 
__of_translate_address():

	bus->count_cells(blob, parent, &na, &ns);
	if (!OF_CHECK_COUNTS(na, ns)) {
		printf("%s: Bad cell count for %s\n", __FUNCTION__,

That's because the function assumes it's called for MMIO addresses. 
However, reg values for I2C devices aren't MMIO addresses, so those 
assumptions don't apply. So, there is an argument for introducing some 
new functionality. I'm not sure that a whole new function is the correct 
way to go though. Rather, the existing translation functions should be 
enhanced to know the location of root of the address space that contains 
the address that's being translated. Then, translation can stop there.

Something like skipping the check on ns in the above code if parent == 
addr_space_root_offset, and also terminating the for (;;) loop in that 
function under a similar condition.

This would allow for translation to occur for buses other than the CPU's 
root MMIO space, yet not attempt to translate across known address space 
boundaries (i.e. where address translation is known to be impossible).

  reply	other threads:[~2015-12-16 19:07 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-15 16:32 [U-Boot] [PATCH 0/3] dm: add dev_get_reg() for getting device node's reg Przemyslaw Marczak
2015-12-15 16:32 ` [U-Boot] [PATCH 1/3] dm: core: extend API by new function: dev_get_reg() Przemyslaw Marczak
2015-12-15 16:32 ` [U-Boot] [PATCH 2/3] gpio: s5p: use dev_get_reg() instead of dev_get_addr() Przemyslaw Marczak
2015-12-15 16:32 ` [U-Boot] [PATCH 3/3] dm: i2c: get chip address with dev_get_reg() Przemyslaw Marczak
2015-12-16 18:53 ` [U-Boot] [PATCH 0/3] dm: add dev_get_reg() for getting device node's reg Stephen Warren
2015-12-16 19:07   ` Stephen Warren [this message]
2015-12-29  8:47     ` Przemyslaw Marczak
2016-01-04 20:06       ` Stephen Warren
2016-01-05 15:38         ` Przemyslaw Marczak
2016-01-05 17:12           ` Stephen Warren
2016-01-06  0:24             ` Simon Glass
2016-01-06 19:14               ` Stephen Warren
2016-01-07 11:57               ` Przemyslaw Marczak
2015-12-29  8:47   ` Przemyslaw Marczak
2016-01-04 20:02     ` Stephen Warren
2016-01-05  0:58       ` Simon Glass
2016-01-05 17:05         ` Stephen Warren
2016-01-05 15:37       ` Przemyslaw Marczak
2016-01-05 17:08         ` Stephen Warren
2016-01-07 11:45           ` Przemyslaw Marczak

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=5671B68B.5080203@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --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