Module Name: src Committed By: andvar Date: Thu Jan 23 22:47:38 UTC 2025
Modified Files: src/sys/dev/pci: viaide.c Log Message: viaide(4): Add support for VIA VT8261 IDE/SATA integrated controller. The VT8261 southbridge, paired with the VN1000 chipset, is obscure and hard to find. Besides some evaluation boards surfacing after Centaur's demise, at least one rare production motherboard is known to exist. Despite its rarity, the VT8261 is very similar to the VT8251. It uses separate PCI IDs for PATA and SATA (IDE/RAID modes) with 4 SATA ports in total, 2 ports sharing one channel, and maps registers through BAR5. This similarity made adding basic support relatively simple (sharing same issues too). Tested briefly on VIA VT8591B eval board. To generate a diff of this commit: cvs rdiff -u -r1.90 -r1.91 src/sys/dev/pci/viaide.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/viaide.c diff -u src/sys/dev/pci/viaide.c:1.90 src/sys/dev/pci/viaide.c:1.91 --- src/sys/dev/pci/viaide.c:1.90 Thu Oct 17 17:15:33 2024 +++ src/sys/dev/pci/viaide.c Thu Jan 23 22:47:38 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: viaide.c,v 1.90 2024/10/17 17:15:33 andvar Exp $ */ +/* $NetBSD: viaide.c,v 1.91 2025/01/23 22:47:38 andvar Exp $ */ /* * Copyright (c) 1999, 2000, 2001 Manuel Bouyer. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: viaide.c,v 1.90 2024/10/17 17:15:33 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: viaide.c,v 1.91 2025/01/23 22:47:38 andvar Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -354,6 +354,16 @@ static const struct pciide_product_desc "VIA Technologies VT8237S SATA Controller (RAID mode)", via_sata_chip_map_7, }, + { PCI_PRODUCT_VIATECH_VT8261_SATA, + 0, + "VIA Technologies VT8261 SATA Controller", + via_chip_map, + }, + { PCI_PRODUCT_VIATECH_VT8261_RAID, + 0, + "VIA Technologies VT8261 SATA Controller (RAID mode)", + via_sata_chip_map_7, + }, { 0, 0, NULL, @@ -473,6 +483,9 @@ via_chip_map(struct pciide_softc *sc, co interface = PCIIDE_INTERFACE_BUS_MASTER_DMA | PCIIDE_INTERFACE_PCI(0) | PCIIDE_INTERFACE_PCI(1); break; + case PCI_PRODUCT_VIATECH_VT8261_SATA: + sc->sc_wdcdev.sc_atac.atac_udma_cap = 6; + break; case PCI_PRODUCT_VIATECH_VX900_IDE: aprint_normal_dev(sc->sc_wdcdev.sc_atac.atac_dev, "VIA Technologies VX900 ATA133 controller\n"); @@ -551,6 +564,10 @@ via_chip_map(struct pciide_softc *sc, co aprint_normal("VT8251 ATA133 controller\n"); sc->sc_wdcdev.sc_atac.atac_udma_cap = 6; break; + case PCI_PRODUCT_VIATECH_VT8261: + aprint_normal("VT8261 ATA133 controller\n"); + sc->sc_wdcdev.sc_atac.atac_udma_cap = 6; + break; case PCI_PRODUCT_VIATECH_VX800: aprint_normal("VX800 ATA133 controller\n"); sc->sc_wdcdev.sc_atac.atac_udma_cap = 6;