PCI: rcar: Recalculate inbound range alignment for each controller entry
authorMarek Vasut <marek.vasut+renesas@gmail.com>
Sat, 26 Oct 2019 18:26:59 +0000 (20:26 +0200)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Mon, 11 Nov 2019 14:29:20 +0000 (14:29 +0000)
commit767c7846419cc562c9dd4f14cc617c2b9b1b96cd
tree063397a8f390a646387a3f96b21aff341cc6d145
parent85bff4c3d320bffceab0c96ee2be4d5f55a3a4e7
PCI: rcar: Recalculate inbound range alignment for each controller entry

Due to hardware constraints, the size of each inbound range entry
populated into the controller cannot be larger than the alignment
of the entry's start address. Currently, the alignment for each
"dma-ranges" inbound range is calculated only once for each range
and the increment for programming the controller is also derived
from it only once. Thus, a "dma-ranges" entry describing a memory
at 0x48000000 and size 0x38000000 would lead to multiple controller
entries, each 0x08000000 long.

This is inefficient, especially considering that by adding the size
to the start address, the alignment increases. This patch moves the
alignment calculation into the loop populating the controller entries,
thus updating the alignment for each controller entry.

Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: Andrew Murray <andrew.murray@arm.com>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Wolfram Sang <wsa@the-dreams.de>
Cc: linux-renesas-soc@vger.kernel.org
drivers/pci/controller/pcie-rcar.c