Patrick Georgi (patrick@georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/523
-gerrit
commit 80f420e5d626dc84c98196c2b9dd9d58cd3ad1d5 Author: Rudolf Marek r.marek@assembler.cz Date: Fri Apr 22 20:48:21 2011 +0200
Add subsystem callbacks for VT8237x and VT890 family of chipsets
Change-Id: Id34615f0c229d276d72cdf984cf82ea8cc1a85bb Signed-off-by: Rudolf Marek r.marek@assembler.cz Signed-off-by: Patrick Georgi patrick@georgi-clan.de --- src/southbridge/via/k8t890/ctrl.c | 6 +++++- src/southbridge/via/k8t890/dram.c | 8 ++++++-- src/southbridge/via/k8t890/error.c | 6 +++++- src/southbridge/via/k8t890/host.c | 8 ++++++-- src/southbridge/via/k8t890/host_ctrl.c | 8 ++++++-- src/southbridge/via/vt8237r/lpc.c | 14 ++++++++++++++ src/southbridge/via/vt8237r/sata.c | 15 +++++++++++++-- src/southbridge/via/vt8237r/usb.c | 16 ++++++++++++++-- 8 files changed, 69 insertions(+), 12 deletions(-)
diff --git a/src/southbridge/via/k8t890/ctrl.c b/src/southbridge/via/k8t890/ctrl.c index 6e5dbf7..1ff0b74 100644 --- a/src/southbridge/via/k8t890/ctrl.c +++ b/src/southbridge/via/k8t890/ctrl.c @@ -181,12 +181,16 @@ static void ctrl_init(struct device *dev)
}
+static struct pci_operations lops_pci = { + .set_subsystem = pci_dev_set_subsystem, +}; + static const struct device_operations ctrl_ops = { .read_resources = pci_dev_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .init = ctrl_init, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct pci_driver northbridge_driver_t800 __pci_driver = { diff --git a/src/southbridge/via/k8t890/dram.c b/src/southbridge/via/k8t890/dram.c index 294e387..7e450cc 100644 --- a/src/southbridge/via/k8t890/dram.c +++ b/src/southbridge/via/k8t890/dram.c @@ -153,12 +153,16 @@ static void dram_init_fb(struct device *dev) #endif }
+static struct pci_operations lops_pci = { + .set_subsystem = pci_dev_set_subsystem, +}; + static const struct device_operations dram_ops_t = { .read_resources = pci_dev_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .enable = dram_enable, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct device_operations dram_ops_m = { @@ -167,7 +171,7 @@ static const struct device_operations dram_ops_m = { .enable_resources = pci_dev_enable_resources, .enable = dram_enable_k8m890, .init = dram_init_fb, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct pci_driver northbridge_driver_t800 __pci_driver = { diff --git a/src/southbridge/via/k8t890/error.c b/src/southbridge/via/k8t890/error.c index f2cab10..1f6979a 100644 --- a/src/southbridge/via/k8t890/error.c +++ b/src/southbridge/via/k8t890/error.c @@ -41,12 +41,16 @@ static void error_enable(struct device *dev) dump_south(dev); }
+static struct pci_operations lops_pci = { + .set_subsystem = pci_dev_set_subsystem, +}; + static const struct device_operations error_ops = { .read_resources = pci_dev_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .enable = error_enable, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct pci_driver northbridge_driver_t800 __pci_driver = { diff --git a/src/southbridge/via/k8t890/host.c b/src/southbridge/via/k8t890/host.c index 700a637..54d79b4 100644 --- a/src/southbridge/via/k8t890/host.c +++ b/src/southbridge/via/k8t890/host.c @@ -95,12 +95,16 @@ static const struct device_operations host_ops_old = { .ops_pci = 0, };
+static struct pci_operations lops_pci = { + .set_subsystem = pci_dev_set_subsystem, +}; + static const struct device_operations host_ops_t = { .read_resources = pci_dev_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .enable = host_enable, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct device_operations host_ops_m = { @@ -109,7 +113,7 @@ static const struct device_operations host_ops_m = { .enable_resources = pci_dev_enable_resources, .enable = host_enable, .init = host_init, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct pci_driver northbridge_driver_t800_old __pci_driver = { diff --git a/src/southbridge/via/k8t890/host_ctrl.c b/src/southbridge/via/k8t890/host_ctrl.c index 5d46a00..c5d751e 100644 --- a/src/southbridge/via/k8t890/host_ctrl.c +++ b/src/southbridge/via/k8t890/host_ctrl.c @@ -122,12 +122,16 @@ void set_cbmem_toc(struct cbmem_entry *toc) { outl((u32) toc, K8T890_NVRAM_IO_BASE+K8T890_NVRAM_CBMEM_TOC); }
+static struct pci_operations lops_pci = { + .set_subsystem = pci_dev_set_subsystem, +}; + static const struct device_operations host_ctrl_ops_t = { .read_resources = pci_dev_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .enable = host_ctrl_enable_k8t8xx, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct device_operations host_ctrl_ops_m = { @@ -135,7 +139,7 @@ static const struct device_operations host_ctrl_ops_m = { .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .enable = host_ctrl_enable_k8m8xx, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct pci_driver northbridge_driver_t800 __pci_driver = { diff --git a/src/southbridge/via/vt8237r/lpc.c b/src/southbridge/via/vt8237r/lpc.c index cd1064f..d57d471 100644 --- a/src/southbridge/via/vt8237r/lpc.c +++ b/src/southbridge/via/vt8237r/lpc.c @@ -639,12 +639,24 @@ static void southbridge_init_common(struct device *dev) init_keyboard(dev); }
+ +static void vt8237_set_subsystem(device_t dev, unsigned vendor, unsigned device) +{ + pci_write_config16(dev, 0x70, vendor); + pci_write_config16(dev, 0x72, device); +} + +static struct pci_operations lops_pci = { + .set_subsystem = vt8237_set_subsystem, +}; + static const struct device_operations vt8237r_lpc_ops_s = { .read_resources = vt8237r_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .init = vt8237s_init, .scan_bus = scan_static_bus, + .ops_pci = &lops_pci, };
static const struct device_operations vt8237r_lpc_ops_r = { @@ -653,6 +665,7 @@ static const struct device_operations vt8237r_lpc_ops_r = { .enable_resources = pci_dev_enable_resources, .init = vt8237r_init, .scan_bus = scan_static_bus, + .ops_pci = &lops_pci, };
static const struct device_operations vt8237r_lpc_ops_a = { @@ -661,6 +674,7 @@ static const struct device_operations vt8237r_lpc_ops_a = { .enable_resources = pci_dev_enable_resources, .init = vt8237a_init, .scan_bus = scan_static_bus, + .ops_pci = &lops_pci, };
static const struct pci_driver lpc_driver_r __pci_driver = { diff --git a/src/southbridge/via/vt8237r/sata.c b/src/southbridge/via/vt8237r/sata.c index 777d605..2f07e69 100644 --- a/src/southbridge/via/vt8237r/sata.c +++ b/src/southbridge/via/vt8237r/sata.c @@ -95,13 +95,24 @@ static void sata_ii_init(struct device *dev) } }
+ +static void vt8237_set_subsystem(device_t dev, unsigned vendor, unsigned device) +{ + pci_write_config16(dev, 0xd4, vendor); + pci_write_config16(dev, 0xd6, device); +} + +static struct pci_operations lops_pci = { + .set_subsystem = vt8237_set_subsystem, +}; + static const struct device_operations sata_i_ops = { .read_resources = pci_dev_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .init = sata_i_init, .enable = 0, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct device_operations sata_ii_ops = { @@ -110,7 +121,7 @@ static const struct device_operations sata_ii_ops = { .enable_resources = pci_dev_enable_resources, .init = sata_ii_init, .enable = 0, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct pci_driver northbridge_driver_ii __pci_driver = { diff --git a/src/southbridge/via/vt8237r/usb.c b/src/southbridge/via/vt8237r/usb.c index 2bdcf9d..ac27f43 100644 --- a/src/southbridge/via/vt8237r/usb.c +++ b/src/southbridge/via/vt8237r/usb.c @@ -158,13 +158,25 @@ static void vt8237_usb_ii_read_resources(struct device *dev) return; }
+static void vt8237_set_subsystem(device_t dev, unsigned vendor, unsigned device) +{ + pci_write_config32(dev, 0x42, pci_read_config32(dev, 0x42) | 0x10); + pci_write_config16(dev, 0x2c, vendor); + pci_write_config16(dev, 0x2e, device); + pci_write_config32(dev, 0x42, pci_read_config32(dev, 0x42) & ~0x10); +} + +static struct pci_operations lops_pci = { + .set_subsystem = vt8237_set_subsystem, +}; + static const struct device_operations usb_i_ops = { .read_resources = vt8237_usb_i_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .init = usb_i_init, .enable = 0, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct device_operations usb_ii_ops = { @@ -173,7 +185,7 @@ static const struct device_operations usb_ii_ops = { .enable_resources = pci_dev_enable_resources, .init = usb_ii_init, .enable = 0, - .ops_pci = 0, + .ops_pci = &lops_pci, };
static const struct pci_driver vt8237r_driver_usbii __pci_driver = {