Module Name: src Committed By: nisimura Date: Tue Feb 8 00:33:05 UTC 2011
Modified Files: src/sys/arch/sandpoint/stand/altboot: brdsetup.c globals.h pciide.c Log Message: - add preliminary code to support D-Link DSM-G600 rev.B NAS. - it features 9600bps console, Moto MCU on the 2nd DUART channel, ACARD ATP865 PCIIDE and IP Plus IP1000A GbE. It has MiniPCI slot. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/arch/sandpoint/stand/altboot/brdsetup.c cvs rdiff -u -r1.3 -r1.4 src/sys/arch/sandpoint/stand/altboot/globals.h cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sandpoint/stand/altboot/pciide.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/arch/sandpoint/stand/altboot/brdsetup.c diff -u src/sys/arch/sandpoint/stand/altboot/brdsetup.c:1.2 src/sys/arch/sandpoint/stand/altboot/brdsetup.c:1.3 --- src/sys/arch/sandpoint/stand/altboot/brdsetup.c:1.2 Mon Feb 7 12:45:21 2011 +++ src/sys/arch/sandpoint/stand/altboot/brdsetup.c Tue Feb 8 00:33:05 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: brdsetup.c,v 1.2 2011/02/07 12:45:21 nisimura Exp $ */ +/* $NetBSD: brdsetup.c,v 1.3 2011/02/08 00:33:05 nisimura Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -53,6 +53,7 @@ BRD_DECL(syno); BRD_DECL(qnap); BRD_DECL(iomega); +BRD_DECL(dlink); static struct brdprop brdlist[] = { { @@ -99,6 +100,13 @@ "eumb", 0x4500, 115200, NULL, iomegabrdfix, iomegapcifix }, { + "dlink", + "D-Link GSM-G600", + BRD_DLINKGSM, + 0, + "eumb", 0x4500, 9600, + NULL, dlinkbrdfix, dlinkpcifix }, + { "unknown", "Unknown board", BRD_UNKNOWN, @@ -205,6 +213,10 @@ 0x1106) { /* PCI_VENDOR_VIA */ brdtype = BRD_STORCENTER; } + else if (PCI_VENDOR(pcicfgread(pcimaketag(0, 16, 0), PCI_ID_REG)) == + 0x1191) { /* PCI_VENDOR_ACARD */ + brdtype = BRD_DLINKGSM; + } brdprop = brd_lookup(brdtype); @@ -771,6 +783,44 @@ } void +dlinkbrdfix(struct brdprop *brd) +{ + + init_uart(uart2base, 9600, LCR_8BITS | LCR_PNONE); +} + +void +dlinkpcifix(struct brdprop *brd) +{ + unsigned usb, nic, ide, val; + + usb = pcimaketag(0, 14, 0); + val = pcicfgread(usb, 0x3c) & 0xffffff00; + val |= 14; + pcicfgwrite(usb, 0x3c, val); + + usb = pcimaketag(0, 14, 1); + val = pcicfgread(usb, 0x3c) & 0xffffff00; + val |= 14; + pcicfgwrite(usb, 0x3c, val); + + usb = pcimaketag(0, 14, 2); + val = pcicfgread(usb, 0x3c) & 0xffffff00; + val |= 14; + pcicfgwrite(usb, 0x3c, val); + + nic = pcimaketag(0, 15, 0); + val = pcicfgread(nic, 0x3c) & 0xffffff00; + val |= 15; + pcicfgwrite(nic, 0x3c, val); + + ide = pcimaketag(0, 16, 0); + val = pcicfgread(ide, 0x3c) & 0xffffff00; + val |= 16; + pcicfgwrite(ide, 0x3c, val); +} + +void _rtt(void) { Index: src/sys/arch/sandpoint/stand/altboot/globals.h diff -u src/sys/arch/sandpoint/stand/altboot/globals.h:1.3 src/sys/arch/sandpoint/stand/altboot/globals.h:1.4 --- src/sys/arch/sandpoint/stand/altboot/globals.h:1.3 Thu Jan 27 17:38:04 2011 +++ src/sys/arch/sandpoint/stand/altboot/globals.h Tue Feb 8 00:33:05 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: globals.h,v 1.3 2011/01/27 17:38:04 phx Exp $ */ +/* $NetBSD: globals.h,v 1.4 2011/02/08 00:33:05 nisimura Exp $ */ #ifdef DEBUG #define DPRINTF(x) printf x @@ -20,6 +20,7 @@ #define BRD_QNAPTS101 101 #define BRD_SYNOLOGY 102 #define BRD_STORCENTER 103 +#define BRD_DLINKGSM 104 #define BRD_UNKNOWN -1 struct brdprop { Index: src/sys/arch/sandpoint/stand/altboot/pciide.c diff -u src/sys/arch/sandpoint/stand/altboot/pciide.c:1.1 src/sys/arch/sandpoint/stand/altboot/pciide.c:1.2 --- src/sys/arch/sandpoint/stand/altboot/pciide.c:1.1 Sun Jan 23 01:05:30 2011 +++ src/sys/arch/sandpoint/stand/altboot/pciide.c Tue Feb 8 00:33:05 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: pciide.c,v 1.1 2011/01/23 01:05:30 nisimura Exp $ */ +/* $NetBSD: pciide.c,v 1.2 2011/02/08 00:33:05 nisimura Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -43,7 +43,7 @@ }; static int cmdidefix(struct dkdev_ata *); static struct myops cmdideops = { cmdidefix, NULL }; -static struct myops *myops = &cmdideops; +static struct myops *myops; int pciide_match(unsigned, void *); void *pciide_init(unsigned, void *); @@ -56,10 +56,13 @@ v = pcicfgread(tag, PCI_ID_REG); switch (v) { case PCI_DEVICE(0x1095, 0x0680): /* SiI 0680 IDE */ + myops = &cmdideops; + return 1; case PCI_DEVICE(0x1283, 0x8211): /* ITE 8211 IDE */ case PCI_DEVICE(0x1106, 0x1571): /* VIA 82C586 IDE */ case PCI_DEVICE(0x10ad, 0x0105): /* Symphony Labs 82C105 IDE */ case PCI_DEVICE(0x10b8, 0x5229): /* ALi IDE */ + case PCI_DEVICE(0x1191, 0x0008): /* ACARD ATP865 */ return 1; } return 0;