Module Name: src Committed By: nisimura Date: Mon Feb 7 12:45:21 UTC 2011
Modified Files: src/sys/arch/sandpoint/stand/altboot: brdsetup.c Log Message: add IOMEGA StorCenter fixup codes. Need more change as the satellite microcontroller protocol is defined in 8-byte fixed length sequence. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sandpoint/stand/altboot/brdsetup.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.1 src/sys/arch/sandpoint/stand/altboot/brdsetup.c:1.2 --- src/sys/arch/sandpoint/stand/altboot/brdsetup.c:1.1 Sun Jan 23 01:05:30 2011 +++ src/sys/arch/sandpoint/stand/altboot/brdsetup.c Mon Feb 7 12:45:21 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: brdsetup.c,v 1.1 2011/01/23 01:05:30 nisimura Exp $ */ +/* $NetBSD: brdsetup.c,v 1.2 2011/02/07 12:45:21 nisimura Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -52,6 +52,7 @@ BRD_DECL(kuro); BRD_DECL(syno); BRD_DECL(qnap); +BRD_DECL(iomega); static struct brdprop brdlist[] = { { @@ -92,11 +93,11 @@ NULL, NULL, qnappcifix }, { "iomega", - "IOMEGA Storcenter", + "IOMEGA StorCenter", BRD_STORCENTER, 0, "eumb", 0x4500, 115200, - NULL, NULL, NULL }, + NULL, iomegabrdfix, iomegapcifix }, { "unknown", "Unknown board", @@ -693,6 +694,14 @@ } void +synoreset() +{ + + send_sat("C"); + /*NOTRECHED*/ +} + +void qnappcifix(struct brdprop *brd) { unsigned ide, nic, usb, val; @@ -724,11 +733,41 @@ } void -synoreset() +iomegabrdfix(struct brdprop *brd) { - send_sat("C"); - /*NOTRECHED*/ + init_uart(uart2base, 9600, LCR_8BITS | LCR_PNONE); +} + +void +iomegapcifix(struct brdprop *brd) +{ + unsigned ide, nic, usb, val; + + ide = pcimaketag(0, 13, 0); + val = pcicfgread(ide, 0x3c) & 0xffffff00; + val |= 13; + pcicfgwrite(ide, 0x3c, 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); } void