From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hannes Schmelzer Date: Thu, 15 Feb 2018 09:36:09 +0100 Subject: [U-Boot] [PATCH] pci: Fix decode regions for memory banks In-Reply-To: <20180215075953.5015-1-bernhard.messerklinger@br-automation.com> References: <20180215075953.5015-1-bernhard.messerklinger@br-automation.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Bernhard Messerklinger schrieb am 15.02.2018 08:59:53: > Von: Bernhard Messerklinger > An: u-boot at lists.denx.de > Kopie: hannes.schmelzer at br-automation.com, Bernhard Messerklinger > , Simon Glass , > Masahiro Yamada , Tuomas Tynkkynen > , Bin Meng , "xypron.glpk at gmx.de" > , Hou Zhiqiang > Datum: 15.02.2018 09:00 > Betreff: [PATCH] pci: Fix decode regions for memory banks > > Since memory banks may not be located behind each other we need to add > them separately. > > Signed-off-by: Bernhard Messerklinger > --- > > drivers/pci/pci-uclass.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c > index 5a24eb6428..ad43e8a27c 100644 > --- a/drivers/pci/pci-uclass.c > +++ b/drivers/pci/pci-uclass.c > @@ -815,7 +815,6 @@ static int decode_regions(struct pci_controller *hose, > ofnode parent_node, > ofnode node) > { > int pci_addr_cells, addr_cells, size_cells; > - phys_addr_t base = 0, size; > int cells_per_record; > const u32 *prop; > int len; > @@ -874,6 +873,21 @@ static int decode_regions(struct pci_controller *hose, > ofnode parent_node, > } > > /* Add a region for our local memory */ > +#ifdef CONFIG_NR_DRAM_BANKS > + bd_t *bd = gd->bd; > + > + for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) { > + if (bd->bi_dram[i].size) { > + pci_set_region(hose->regions + hose->region_count++, > + bd->bi_dram[i].start, > + bd->bi_dram[i].start, > + bd->bi_dram[i].size, > + PCI_REGION_MEM | PCI_REGION_SYS_MEMORY); > + } > + } > +#else > + phys_addr_t base = 0, size; > + > size = gd->ram_size; > #ifdef CONFIG_SYS_SDRAM_BASE > base = CONFIG_SYS_SDRAM_BASE; > @@ -882,6 +896,7 @@ static int decode_regions(struct pci_controller *hose, > ofnode parent_node, > size = gd->pci_ram_top - base; > pci_set_region(hose->regions + hose->region_count++, base, base, > size, PCI_REGION_MEM | PCI_REGION_SYS_MEMORY); > +#endif > > return 0; > } > -- > 2.16.1 > Reviewed-by: Hannes Schmelzer