devpccard: use 64-bit physical addresses
This commit is contained in:
parent
4eeaedbcaf
commit
182e18ecff
3 changed files with 17 additions and 16 deletions
|
@ -540,7 +540,7 @@ devpccardlink(void)
|
||||||
pci = nil;
|
pci = nil;
|
||||||
intl = 0xff;
|
intl = 0xff;
|
||||||
while ((pci = pcimatch(pci, 0, 0)) != nil) {
|
while ((pci = pcimatch(pci, 0, 0)) != nil) {
|
||||||
ulong baddr;
|
uvlong baddr;
|
||||||
Cardbus *cb;
|
Cardbus *cb;
|
||||||
uchar pin;
|
uchar pin;
|
||||||
|
|
||||||
|
@ -632,12 +632,13 @@ devpccardlink(void)
|
||||||
pcicfgw8(cb->pci, 0xD4, 0xCA);
|
pcicfgw8(cb->pci, 0xD4, 0xCA);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((baddr = pcicfgr32(cb->pci, PciBAR0)) == 0) {
|
baddr = pcicfgr32(cb->pci, PciBAR0);
|
||||||
|
if (baddr == 0) {
|
||||||
int size = (pci->did == Ricoh_478_did)? 0x10000: 0x1000;
|
int size = (pci->did == Ricoh_478_did)? 0x10000: 0x1000;
|
||||||
baddr = upaalloc(-1, size, size);
|
baddr = upaalloc(-1ULL, size, size);
|
||||||
if(baddr == -1)
|
if(baddr == -1)
|
||||||
continue;
|
continue;
|
||||||
pcicfgw32(cb->pci, PciBAR0, baddr);
|
pcicfgw32(cb->pci, PciBAR0, (ulong)baddr);
|
||||||
cb->regs = (ulong *)vmap(baddr, size);
|
cb->regs = (ulong *)vmap(baddr, size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -652,7 +653,7 @@ devpccardlink(void)
|
||||||
/* Don't really know what to do with this... */
|
/* Don't really know what to do with this... */
|
||||||
i82365probe(cb, LegacyAddr, LegacyAddr + 1);
|
i82365probe(cb, LegacyAddr, LegacyAddr + 1);
|
||||||
|
|
||||||
print("#Y%ld: %s, %.8ulX intl %d\n", cb - cbslots,
|
print("#Y%ld: %s, %.8lluX intl %d\n", cb - cbslots,
|
||||||
variant[i].name, baddr, pci->intl);
|
variant[i].name, baddr, pci->intl);
|
||||||
|
|
||||||
nslots++;
|
nslots++;
|
||||||
|
@ -776,9 +777,9 @@ static void
|
||||||
configure(Cardbus *cb)
|
configure(Cardbus *cb)
|
||||||
{
|
{
|
||||||
int i, r;
|
int i, r;
|
||||||
ulong size, bar;
|
|
||||||
Pcidev *pci;
|
Pcidev *pci;
|
||||||
ulong membase, iobase, memlen, iolen, rombase, romlen;
|
uvlong romlen, memlen, membase, rombase, bar;
|
||||||
|
ulong iobase, iolen, size;
|
||||||
|
|
||||||
if(DEBUG)
|
if(DEBUG)
|
||||||
print("configuring slot %ld (%s)\n", cb - cbslots, states[cb->state]);
|
print("configuring slot %ld (%s)\n", cb - cbslots, states[cb->state]);
|
||||||
|
@ -822,7 +823,7 @@ configure(Cardbus *cb)
|
||||||
memlen += romlen;
|
memlen += romlen;
|
||||||
if(memlen < 1*1024*1024)
|
if(memlen < 1*1024*1024)
|
||||||
memlen = 1*1024*1024;
|
memlen = 1*1024*1024;
|
||||||
membase = upaalloc(-1, memlen, 4*1024*1024); /* TO DO: better alignment */
|
membase = upaalloc(-1ULL, memlen, 4*1024*1024); /* TO DO: better alignment */
|
||||||
if(membase == -1)
|
if(membase == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -831,8 +832,8 @@ configure(Cardbus *cb)
|
||||||
pcicfgw32(cb->pci, PciCBIBR1, 0);
|
pcicfgw32(cb->pci, PciCBIBR1, 0);
|
||||||
pcicfgw32(cb->pci, PciCBILR1, 0);
|
pcicfgw32(cb->pci, PciCBILR1, 0);
|
||||||
|
|
||||||
pcicfgw32(cb->pci, PciCBMBR0, membase);
|
pcicfgw32(cb->pci, PciCBMBR0, (ulong)membase);
|
||||||
pcicfgw32(cb->pci, PciCBMLR0, membase + memlen-1);
|
pcicfgw32(cb->pci, PciCBMLR0, (ulong)membase + memlen-1);
|
||||||
pcicfgw32(cb->pci, PciCBMBR1, 0);
|
pcicfgw32(cb->pci, PciCBMBR1, 0);
|
||||||
pcicfgw32(cb->pci, PciCBMLR1, 0);
|
pcicfgw32(cb->pci, PciCBMLR1, 0);
|
||||||
|
|
||||||
|
@ -861,7 +862,7 @@ configure(Cardbus *cb)
|
||||||
pci->mem[i].bar = bar;
|
pci->mem[i].bar = bar;
|
||||||
pcicfgw32(pci, PciBAR0 + 4*i, bar);
|
pcicfgw32(pci, PciBAR0 + 4*i, bar);
|
||||||
if((bar & 1) == 0){
|
if((bar & 1) == 0){
|
||||||
print("%T mem[%d] %8.8lux %d\n", pci->tbdf, i, bar, pci->mem[i].size);
|
print("%T mem[%d] %8.8llux %d\n", pci->tbdf, i, bar, pci->mem[i].size);
|
||||||
if(bar & 0x80){ /* TO DO: enable prefetch */
|
if(bar & 0x80){ /* TO DO: enable prefetch */
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -1172,7 +1173,7 @@ pccard_pcmspecial(char *idstr, ISAConf *isa)
|
||||||
pi->irq = isa->irq;
|
pi->irq = isa->irq;
|
||||||
unlock(cb);
|
unlock(cb);
|
||||||
|
|
||||||
print("#Y%ld: %s irq %d, port %lX\n", cb - cbslots, pi->verstr, isa->irq, isa->port);
|
print("#Y%ld: %s irq %d, port %lluX\n", cb - cbslots, pi->verstr, isa->irq, isa->port);
|
||||||
return (int)(cb - cbslots);
|
return (int)(cb - cbslots);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1325,11 +1326,11 @@ pccardread(Chan *c, void *a, long n, vlong offset)
|
||||||
for (i = 0; i != Nbars; i++)
|
for (i = 0; i != Nbars; i++)
|
||||||
if (pci->mem[i].size)
|
if (pci->mem[i].size)
|
||||||
p = seprint(p, e,
|
p = seprint(p, e,
|
||||||
"\tmem[%d] %.8ulX (%.8uX)\n",
|
"\tmem[%d] %.8ullX (%.8uX)\n",
|
||||||
i, pci->mem[i].bar,
|
i, pci->mem[i].bar,
|
||||||
pci->mem[i].size);
|
pci->mem[i].size);
|
||||||
if (pci->rom.size)
|
if (pci->rom.size)
|
||||||
p = seprint(p, e, "\tROM %.8ulX (%.8uX)\n",
|
p = seprint(p, e, "\tROM %.8ullX (%.8uX)\n",
|
||||||
pci->rom.bar, pci->rom.size);
|
pci->rom.bar, pci->rom.size);
|
||||||
pci = pci->list;
|
pci = pci->list;
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,7 +126,7 @@ void outsl(int, void*, int);
|
||||||
ulong paddr(void*);
|
ulong paddr(void*);
|
||||||
void patwc(void*, int);
|
void patwc(void*, int);
|
||||||
ulong pcibarsize(Pcidev*, int);
|
ulong pcibarsize(Pcidev*, int);
|
||||||
void pcibussize(Pcidev*, ulong*, ulong*);
|
void pcibussize(Pcidev*, uvlong*, ulong*);
|
||||||
int pcicfgr8(Pcidev*, int);
|
int pcicfgr8(Pcidev*, int);
|
||||||
int pcicfgr16(Pcidev*, int);
|
int pcicfgr16(Pcidev*, int);
|
||||||
int pcicfgr32(Pcidev*, int);
|
int pcicfgr32(Pcidev*, int);
|
||||||
|
|
|
@ -125,7 +125,7 @@ void outsl(int, void*, int);
|
||||||
uintptr paddr(void*);
|
uintptr paddr(void*);
|
||||||
void patwc(void*, int);
|
void patwc(void*, int);
|
||||||
ulong pcibarsize(Pcidev*, int);
|
ulong pcibarsize(Pcidev*, int);
|
||||||
void pcibussize(Pcidev*, ulong*, ulong*);
|
void pcibussize(Pcidev*, uvlong*, ulong*);
|
||||||
int pcicfgr8(Pcidev*, int);
|
int pcicfgr8(Pcidev*, int);
|
||||||
int pcicfgr16(Pcidev*, int);
|
int pcicfgr16(Pcidev*, int);
|
||||||
int pcicfgr32(Pcidev*, int);
|
int pcicfgr32(Pcidev*, int);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue