Re: pciide(4): identify more VIA IDE/SATA controllers by ISA bus and PCI IDs
Jonathan Gray <[email protected]>
| Newsgroups | gmane.os.openbsd.bugs |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Mar 30, 2026 at 12:20:27AM +0300, Andrius V wrote: > 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 thanks, committed > 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;