From owner-p4-projects@FreeBSD.ORG Thu Apr 27 01:27:25 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 506ED16A40B; Thu, 27 Apr 2006 01:27:25 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2B40516A400 for ; Thu, 27 Apr 2006 01:27:25 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C14A643D5C for ; Thu, 27 Apr 2006 01:27:22 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k3R1RM2C095470 for ; Thu, 27 Apr 2006 01:27:22 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k3R1RMbA095467 for perforce@freebsd.org; Thu, 27 Apr 2006 01:27:22 GMT (envelope-from marcel@freebsd.org) Date: Thu, 27 Apr 2006 01:27:22 GMT Message-Id: <200604270127.k3R1RMbA095467@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Cc: Subject: PERFORCE change 96178 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Apr 2006 01:27:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=96178 Change 96178 by marcel@marcel_nfs on 2006/04/27 01:27:20 Setup the Winbond W83877TFs on Syba Techs Multi-I/O card. Affected files ... .. //depot/projects/uart/dev/puc/pucdata.c#31 edit Differences ... ==== //depot/projects/uart/dev/puc/pucdata.c#31 (text+ko) ==== @@ -820,23 +820,67 @@ puc_config_syba(struct puc_softc *sc, enum puc_cfg_cmd cmd, int port, intptr_t *res) { + static int base[] = { 0x251, 0x3f0, 0 }; + const struct puc_cfg *cfg = sc->sc_cfg; + struct puc_bar *bar; + int efir, idx, ofs; + uint8_t v; + switch (cmd) { + case PUC_CFG_SETUP: + bar = puc_get_bar(sc, cfg->rid); + if (bar == NULL) + return (ENXIO); + + /* configure both W83877TFs */ + bus_write_1(bar->b_res, 0x250, 0x89); + bus_write_1(bar->b_res, 0x3f0, 0x87); + bus_write_1(bar->b_res, 0x3f0, 0x87); + idx = 0; + while (base[idx] != 0) { + efir = base[idx]; + bus_write_1(bar->b_res, efir, 0x09); + v = bus_read_1(bar->b_res, efir + 1); + if ((v & 0x0f) != 0x0c) + return (ENXIO); + bus_write_1(bar->b_res, efir, 0x16); + v = bus_read_1(bar->b_res, efir + 1); + bus_write_1(bar->b_res, efir, 0x16); + bus_write_1(bar->b_res, efir + 1, v | 0x04); + bus_write_1(bar->b_res, efir, 0x16); + bus_write_1(bar->b_res, efir + 1, v & ~0x04); + ofs = base[idx] & 0x300; + bus_write_1(bar->b_res, efir, 0x23); + bus_write_1(bar->b_res, efir + 1, (ofs + 0x78) >> 2); + bus_write_1(bar->b_res, efir, 0x24); + bus_write_1(bar->b_res, efir + 1, (ofs + 0xf8) >> 2); + bus_write_1(bar->b_res, efir, 0x25); + bus_write_1(bar->b_res, efir + 1, (ofs + 0xe8) >> 2); + bus_write_1(bar->b_res, efir, 0x17); + bus_write_1(bar->b_res, efir + 1, 0x03); + bus_write_1(bar->b_res, efir, 0x28); + bus_write_1(bar->b_res, efir + 1, 0x43); + idx++; + } + bus_write_1(bar->b_res, 0x250, 0xaa); + bus_write_1(bar->b_res, 0x3f0, 0xaa); + return (0); case PUC_CFG_GET_OFS: switch (port) { case 0: - *res = 0x3f8; + *res = 0x2f8; return (0); case 1: - *res = 0x2f8; + *res = 0x2e8; return (0); case 2: - *res = 0x3e8; + *res = 0x3f8; return (0); case 3: - *res = 0x2e8; + *res = 0x3e8; return (0); case 4: - *res = 0; + *res = 0x278; return (0); } break;