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;

Reply via email to