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;