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;

Reply via email to