Fix subvendor/subdevice programming on RS690
Some RS690 devices require subvendor/subdevice IDs to be programmed at locations other than default 0x2c. Signed-off-by: Josef Kellermann <seppk@arcor.de> Acked-by: Patrick Georgi <patrick.georgi@secunet.com> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6330 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
87fcffac82
commit
a96b218c9c
|
@ -193,8 +193,13 @@ static void rs690_internal_gfx_enable(device_t dev)
|
||||||
/* TODO: the optimization of voltage and frequency */
|
/* TODO: the optimization of voltage and frequency */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void gfx_dev_set_subsystem(struct device *dev, unsigned vendor, unsigned device)
|
||||||
|
{
|
||||||
|
pci_write_config32(dev, 0x4c, ((device & 0xffff) << 16) | (vendor & 0xffff));
|
||||||
|
}
|
||||||
|
|
||||||
static struct pci_operations lops_pci = {
|
static struct pci_operations lops_pci = {
|
||||||
.set_subsystem = pci_dev_set_subsystem,
|
.set_subsystem = gfx_dev_set_subsystem,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct device_operations pcie_ops = {
|
static struct device_operations pcie_ops = {
|
||||||
|
|
|
@ -70,8 +70,13 @@ static void pcie_init(struct device *dev)
|
||||||
pci_write_config32(dev, 0x4C, dword);
|
pci_write_config32(dev, 0x4C, dword);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ht_dev_set_subsystem(struct device *dev, unsigned vendor, unsigned device)
|
||||||
|
{
|
||||||
|
pci_write_config32(dev, 0x50, ((device & 0xffff) << 16) | (vendor & 0xffff));
|
||||||
|
}
|
||||||
|
|
||||||
static struct pci_operations lops_pci = {
|
static struct pci_operations lops_pci = {
|
||||||
.set_subsystem = pci_dev_set_subsystem,
|
.set_subsystem = ht_dev_set_subsystem,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct device_operations ht_ops = {
|
static struct device_operations ht_ops = {
|
||||||
|
|
Loading…
Reference in New Issue