From owner-p4-projects@FreeBSD.ORG Fri Feb 1 16:13:35 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3A485BF1; Fri, 1 Feb 2013 16:13:35 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id F3078BEF for ; Fri, 1 Feb 2013 16:13:34 +0000 (UTC) (envelope-from bz@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) by mx1.freebsd.org (Postfix) with ESMTP id E2AF2F79 for ; Fri, 1 Feb 2013 16:13:34 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.6/8.14.6) with ESMTP id r11GDY2F060986 for ; Fri, 1 Feb 2013 16:13:34 GMT (envelope-from bz@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.6/8.14.6/Submit) id r11GDYbk060983 for perforce@freebsd.org; Fri, 1 Feb 2013 16:13:34 GMT (envelope-from bz@freebsd.org) Date: Fri, 1 Feb 2013 16:13:34 GMT Message-Id: <201302011613.r11GDYbk060983@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to bz@freebsd.org using -f From: "Bjoern A. Zeeb" Subject: PERFORCE change 221677 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Feb 2013 16:13:35 -0000 http://p4web.freebsd.org/@@221677?ac=10 Change 221677 by bz@bz_zenith on 2013/02/01 16:13:23 With isf(4) attaching earlier we can read the the Ethernet addresses from flash even in the fdt(4) case now. Keep the nexus code around as well and try both. Affected files ... .. //depot/projects/ctsrd/beribsd/src/sys/dev/altera/atse/if_atse.c#5 edit Differences ... ==== //depot/projects/ctsrd/beribsd/src/sys/dev/altera/atse/if_atse.c#5 (text+ko) ==== @@ -562,7 +562,7 @@ } static int -atse_ethernet_option_bits_read(device_t dev) +atse_ethernet_option_bits_read_nexus(device_t dev) { const char *at, *name; struct resource *res; @@ -628,6 +628,53 @@ } static int +atse_ethernet_option_bits_read_fdt(device_t dev) +{ + struct resource *res; + device_t isfdev; + int i, rid; + + if (atse_ethernet_option_bits_flag & ATSE_ETHERNET_OPTION_BITS_READ) + return (0); + + isfdev = device_find_child(device_get_parent(dev), "isf", 0); + if (isfdev == NULL) + return (ENOENT); + + rid = 0; + res = bus_alloc_resource_any(isfdev, SYS_RES_MEMORY, &rid, + RF_ACTIVE | RF_SHAREABLE); + if (res == NULL) + return (ENXIO); + + for (i = 0; i < ALTERA_ETHERNET_OPTION_BITS_LEN; i++) + atse_ethernet_option_bits[i] = bus_read_1(res, + ALTERA_ETHERNET_OPTION_BITS_OFF + i); + + bus_release_resource(dev, SYS_RES_MEMORY, rid, res); + atse_ethernet_option_bits_flag |= ATSE_ETHERNET_OPTION_BITS_READ; + + return (0); +} + +static int +atse_ethernet_option_bits_read(device_t dev) +{ + int error; + + error = atse_ethernet_option_bits_read_nexus(dev); + if (error == 0) + return (0); + + error = atse_ethernet_option_bits_read_fdt(dev); + if (error == 0) + return (0); + + device_printf(dev, "Cannot read Ethernet addresses from flash.\n"); + return (error); +} + +static int atse_get_eth_address(struct atse_softc *sc) { unsigned long hostid;