On Sun, Mar 29, 2026 at 9:04 AM Jonathan Gray <[email protected]> wrote:
>
> The isa bridge to udma mapping part seems fine.
>
> The matching of the RAID id I'd leave out, as no other VIA RAID
> ids are matched.

OK, I removed VT8237S RAID mode ID from the patch.

>
> Did you test VT8251/VT8261 on OpenBSD?  The Linux code suggests those
> need different channel handling.
>

Yes, I have tested VT8251 on OpenBSD.
At least in a way, that driver attaches drives in all ports
successfully, sets correct speed, and drives are accessible.

I am aware of slave port handling in Linux (and I think FreeBSD too),
but I am not fully aware how relevant it is to pciide driver and what
behaviour it can trigger.

I have tested VT8261 with SATA disks only. My current motherboard
doesn't have IDE ports (I had one in the past, but it is currently
broken unfortunately).
However, VT8261 IDE controller shares same 0x0571 as previous
southbridges, so I don't expect anything unusual.

The only thing I have noticed on VT8251 in NetBSD, not to write to a
certain registers to SATA controllers which are used to setup UDMA in
PATA case, but OpenBSD uses sata_setup_channel(), thus this problem
wasn't present here.

Regards,
Andrius V
diff --git a/sys/dev/pci/pcidevs b/sys/dev/pci/pcidevs
index d4ee23d6ca3..cb8a37cfb6b 100644
--- a/sys/dev/pci/pcidevs
+++ b/sys/dev/pci/pcidevs
@@ -9950,6 +9950,7 @@ product VIATECH VT8653_PCI	0x3101	VT8653 PCI
 product VIATECH VT6202		0x3104	VT6202 USB
 product VIATECH VT6105		0x3106	VT6105 RhineIII
 product VIATECH UNICHROME	0x3108	S3 Unichrome PRO IGP
+product VIATECH VT8233C_ISA	0x3109	VT8233C ISA
 product VIATECH VT8361_PCI	0x3112	VT8361 PCI
 product VIATECH VT8101_PPB	0x3113	VT8101 VPX-64
 product VIATECH VT8375		0x3116	VT8375 PCI
@@ -9999,6 +10000,7 @@ product VIATECH CHROME9_HC	0x3371	Chrome9 HC IGP
 product VIATECH VT8237S_ISA	0x3372	VT8237S ISA
 product VIATECH VT8237A_PPB_1	0x337a	VT8237A
 product VIATECH VT8237A_PPB_2	0x337b	VT8237A
+product VIATECH VT8261_ISA	0x3402	VT8261 ISA
 product VIATECH VX900_DRAM	0x3410	VX900 DRAM
 product VIATECH VL80X_XHCI 	0x3432	VL80x xHCI
 product	VIATECH	VL805_XHCI	0x3483	VL805 xHCI
@@ -10018,6 +10020,7 @@ product VIATECH VX800_4		0x4353	VX800 Host
 product VIATECH P4M900_4	0x4364	P4M900 Host
 product VIATECH VX900_1		0x4410	VX900 Host
 product VIATECH K8T890_IOAPIC	0x5238	K8T890 IOAPIC
+product VIATECH VT8251_SATA_2	0x5287	VT8251 SATA
 product VIATECH PT894_IOAPIC	0x5308	PT894 IOAPIC
 product VIATECH CX700_IDE	0x5324	CX700 IDE
 product VIATECH P4M890_IOAPIC	0x5327	P4M890 IOAPIC
@@ -10066,6 +10069,7 @@ product VIATECH VT82C597AGP	0x8597	VT82C597 AGP
 product VIATECH VT82C598AGP	0x8598	VT82C598 AGP
 product VIATECH VT82C601	0x8601	VT82C601 AGP
 product VIATECH VT8605_AGP	0x8605	VT8605 AGP
+product VIATECH VT8261_SATA	0x9000	VT8261 SATA
 product VIATECH VX900_IDE	0x9001	VX900 IDE
 product VIATECH HDA_1		0x9170	HD Audio
 product VIATECH VX800_SDMMC	0x9530	VX800 SD/MMC
diff --git a/sys/dev/pci/pciide.c b/sys/dev/pci/pciide.c
index fc925a8f7cb..2b5925aacf0 100644
--- a/sys/dev/pci/pciide.c
+++ b/sys/dev/pci/pciide.c
@@ -811,6 +811,14 @@ const struct pciide_product_desc pciide_via_products[] =  {
 	{ PCI_PRODUCT_VIATECH_VT8251_SATA, /* VIA VT8251 SATA */
 	  0,
 	  sata_chip_map
+	},
+	{ PCI_PRODUCT_VIATECH_VT8251_SATA_2, /* VIA VT8251(CE) SATA */
+	  0,
+	  sata_chip_map
+	},
+	{ PCI_PRODUCT_VIATECH_VT8261_SATA, /* VIA VT8261 SATA */
+	  0,
+	  sata_chip_map
 	}
 };
 
@@ -3511,12 +3519,17 @@ apollo_chip_map(struct pciide_softc *sc, struct pci_attach_args *pa)
 			break;
 		case PCI_PRODUCT_VIATECH_VT8231_ISA:
 		case PCI_PRODUCT_VIATECH_VT8233_ISA:
+		case PCI_PRODUCT_VIATECH_VT8233C_ISA:
 			printf(": ATA100");
 			sc->sc_wdcdev.UDMA_cap = 5;
 			break;
 		case PCI_PRODUCT_VIATECH_VT8233A_ISA:
 		case PCI_PRODUCT_VIATECH_VT8235_ISA:
 		case PCI_PRODUCT_VIATECH_VT8237_ISA:
+		case PCI_PRODUCT_VIATECH_VT8237A_ISA:
+		case PCI_PRODUCT_VIATECH_VT8237S_ISA:
+		case PCI_PRODUCT_VIATECH_VT8251_ISA:
+		case PCI_PRODUCT_VIATECH_VT8261_ISA:
 			printf(": ATA133");
 			sc->sc_wdcdev.UDMA_cap = 6;
 			break;

Reply via email to