Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 91594
b: refs/heads/master
c: 378458d
h: refs/heads/master
v: v3
  • Loading branch information
Scott Wood authored and Kumar Gala committed Apr 17, 2008
1 parent 0df9462 commit cde5266
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3866409541b1ae87a2e42ee7f483843f1af56917
refs/heads/master: 378458d8655056d3d04994cb2b1c0fabb1b35983
27 changes: 19 additions & 8 deletions trunk/arch/powerpc/boot/cuboot-pq2.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ static void fixup_pci(void)
u8 *soc_regs;
int i, len;
void *node, *parent_node;
u32 naddr, nsize, mem_log2;
u32 naddr, nsize, mem_pow2, mem_mask;

node = finddevice("/pci");
if (!node || !dt_is_compatible(node, "fsl,pq2-pci"))
Expand All @@ -141,7 +141,7 @@ static void fixup_pci(void)

soc_regs = (u8 *)fsl_get_immr();
if (!soc_regs)
goto err;
goto unhandled;

dt_get_reg_format(node, &naddr, &nsize);
if (naddr != 3 || nsize != 2)
Expand All @@ -153,7 +153,7 @@ static void fixup_pci(void)

dt_get_reg_format(parent_node, &naddr, &nsize);
if (naddr != 1 || nsize != 1)
goto err;
goto unhandled;

len = getprop(node, "ranges", pci_ranges_buf,
sizeof(pci_ranges_buf));
Expand All @@ -170,14 +170,20 @@ static void fixup_pci(void)
}

if (!mem || !mmio || !io)
goto err;
goto unhandled;
if (mem->size[1] != mmio->size[1])
goto unhandled;
if (mem->size[1] & (mem->size[1] - 1))
goto unhandled;
if (io->size[1] & (io->size[1] - 1))
goto unhandled;

if (mem->phys_addr + mem->size[1] == mmio->phys_addr)
mem_base = mem;
else if (mmio->phys_addr + mmio->size[1] == mem->phys_addr)
mem_base = mmio;
else
goto err;
goto unhandled;

out_be32(&pci_regs[1][0], mem_base->phys_addr | 1);
out_be32(&pci_regs[2][0], ~(mem->size[1] + mmio->size[1] - 1));
Expand All @@ -201,8 +207,9 @@ static void fixup_pci(void)
out_le32(&pci_regs[0][58], 0);
out_le32(&pci_regs[0][60], 0);

mem_log2 = 1 << (__ilog2_u32(bd.bi_memsize - 1) + 1);
out_le32(&pci_regs[0][62], 0xa0000000 | ~((1 << (mem_log2 - 12)) - 1));
mem_pow2 = 1 << (__ilog2_u32(bd.bi_memsize - 1) + 1);
mem_mask = ~(mem_pow2 - 1) >> 12;
out_le32(&pci_regs[0][62], 0xa0000000 | mem_mask);

/* If PCI is disabled, drive RST high to enable. */
if (!(in_le32(&pci_regs[0][32]) & 1)) {
Expand All @@ -228,7 +235,11 @@ static void fixup_pci(void)
return;

err:
printf("Bad PCI node\r\n");
printf("Bad PCI node -- using existing firmware setup.\r\n");
return;

unhandled:
printf("Unsupported PCI node -- using existing firmware setup.\r\n");
}

static void pq2_platform_fixups(void)
Expand Down

0 comments on commit cde5266

Please sign in to comment.