// SPDX-License-Identifier: GPL-2.0 /* * PCI operations for the Sega Dreamcast * * Copyright (C) 2001, 2002 M. R. Brown * Copyright (C) 2002, 2003 Paul Mundt
*/
/* * The !gapspci_config_access case really shouldn't happen, ever, unless * someone implicitly messes around with the last devfn value.. otherwise we * only support a single device anyways, and if we didn't have a BBA, we * wouldn't make it terribly far through the PCI setup anyways. * * Also, we could very easily support both Type 0 and Type 1 configurations * here, but since it doesn't seem that there is any such implementation in * existence, we don't bother. * * I suppose if someone actually gets around to ripping the chip out of * the BBA and hanging some more devices off of it, then this might be * something to take into consideration. However, due to the cost of the BBA, * and the general lack of activity by DC hardware hackers, this doesn't seem * likely to happen anytime soon.
*/ staticint gapspci_config_access(unsignedchar bus, unsignedint devfn)
{ return (bus == 0) && (devfn == 0);
}
/* * We can also actually read and write in b/w/l sizes! Thankfully this part * was at least done right, and we don't have to do the stupid masking and * shifting that we do on the 7751! Small wonders never cease to amaze.
*/ staticint gapspci_read(struct pci_bus *bus, unsignedint devfn, int where, int size, u32 *val)
{
*val = 0xffffffff;
if (!gapspci_config_access(bus->number, devfn)) return PCIBIOS_DEVICE_NOT_FOUND;
switch (size) { case 1: *val = inb(GAPSPCI_BBA_CONFIG+where); break; case 2: *val = inw(GAPSPCI_BBA_CONFIG+where); break; case 4: *val = inl(GAPSPCI_BBA_CONFIG+where); break;
}
return PCIBIOS_SUCCESSFUL;
}
staticint gapspci_write(struct pci_bus *bus, unsignedint devfn, int where, int size, u32 val)
{ if (!gapspci_config_access(bus->number, devfn)) return PCIBIOS_DEVICE_NOT_FOUND;
switch (size) { case 1: outb(( u8)val, GAPSPCI_BBA_CONFIG+where); break; case 2: outw((u16)val, GAPSPCI_BBA_CONFIG+where); break; case 4: outl((u32)val, GAPSPCI_BBA_CONFIG+where); break;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.