Re: pciide(4): identify more VIA IDE/SATA controllers by ISA bus and PCI IDs

Andrius V <[email protected]>
Newsgroups gmane.os.openbsd.bugs
Message-ID <CAFO4NkqP1H=bKqzBzHJSeXvV=hwhto+DCWajLbZcjrHs0nXAug@mail.gmail.com>
Thank you!

On Tue, Apr 7, 2026 at 3:18 AM Jonathan Gray <[email protected]> wrote:
>
> 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;
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.