From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Warren Date: Thu, 7 Jan 2016 11:25:15 -0700 Subject: [U-Boot] [PATCH] fdt: __of_translate_address(): check parent's 'ranges' before translate In-Reply-To: <1452166849-24461-1-git-send-email-p.marczak@samsung.com> References: <1452166849-24461-1-git-send-email-p.marczak@samsung.com> Message-ID: <568EAD8B.6090909@wwwdotorg.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 01/07/2016 04:40 AM, Przemyslaw Marczak wrote: > The present implementation of __of_translate_address() taken > from the Linux, is designed for translate bus/child address > mappings by using 'ranges' property - and it doesn't allow > for checking an address for a device's node with zero size-cells. > > The 'size-cells > 0' is required for bus/child address mapping, > but is not required for non-memory mapped address, e.g.: I2C chip. > Then when we need only raw 'reg' property's value. > > Since the I2C device address goes to a single-cell reg property, > support for that case is welcome, but currently calling dev_get_addr() > for I2C device will return 'FDT_ADDR_T_NONE', and print the warning: > > warning: > __of_translate_address: Bad cell count for 'some-dev' This patch takes the wrong approach. It simply doesn't make sense to /attempt/ to translate an I2C address into an MMIO address space. It's a nonsensical operation; no such translation is possible under any circumstances because I2C and MMIO addresses mean completely different things and simply can't be translated to each-other. Rather than making this nonsensical operation succeed in a way that gives the desired no-op result, the nonsensical operation simply shouldn't be performed in the first place.