Add subsystem callbacks for VT8237x and VT890 family of chipsets
authorRudolf Marek <r.marek@assembler.cz>
Fri, 22 Apr 2011 18:48:21 +0000 (20:48 +0200)
committerStefan Reinauer <stefan.reinauer@coreboot.org>
Wed, 18 Jan 2012 22:01:36 +0000 (23:01 +0100)
Change-Id: Id34615f0c229d276d72cdf984cf82ea8cc1a85bb
Signed-off-by: Rudolf Marek <r.marek@assembler.cz>
Signed-off-by: Patrick Georgi <patrick@georgi-clan.de>
Reviewed-on: http://review.coreboot.org/523
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
src/southbridge/via/k8t890/ctrl.c
src/southbridge/via/k8t890/dram.c
src/southbridge/via/k8t890/error.c
src/southbridge/via/k8t890/host.c
src/southbridge/via/k8t890/host_ctrl.c
src/southbridge/via/vt8237r/lpc.c
src/southbridge/via/vt8237r/sata.c
src/southbridge/via/vt8237r/usb.c

index 6e5dbf787cec5ce45e7541743dc019eb1fb8c3ba..1ff0b744cd8654d41afb46f477ef671eebd83370 100644 (file)
@@ -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 = {
index 294e3871dd0d2b044ab7bd7c50ab6b57cdb25695..7e450cc69cac21f733e67fb3b1967f9038ba1097 100644 (file)
@@ -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 = {
index f2cab10db054b7a36d64aa1fec30c170f845d667..1f6979a31ebdf17217aad26028890f13b4ad0bac 100644 (file)
@@ -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 = {
index 700a6372fa9418c9e0749e2b7157b0be6942dc6c..54d79b45002446b6c3ca74501693078fbb4bc62c 100644 (file)
@@ -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 = {
index 5d46a00c966282622ef6d982ae205a57114fe473..c5d751e832080886c896404f604130da9894a198 100644 (file)
@@ -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 = {
index cd1064fade33f87b0b43928c7e2c527fb22ceb9c..d57d471e45382f552a439256697bf6b47acc3d2b 100644 (file)
@@ -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 = {
index 777d605a6be7f234af6122b6fed276fbc78c3091..2f07e692fbd8de9bc928cd479fca0c8dc00334ca 100644 (file)
@@ -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 = {
index 2bdcf9d4ba4c6bcd69d61b20b4e914e3c9907b0b..ac27f4399cac656a8b09cba84a5f47c84de8ae96 100644 (file)
@@ -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 = {