From owner-svn-src-projects@FreeBSD.ORG Sun Feb 12 06:28:00 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4247F106566C; Sun, 12 Feb 2012 06:28:00 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2F9318FC0A; Sun, 12 Feb 2012 06:28:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1C6S0xV068651; Sun, 12 Feb 2012 06:28:00 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1C6S0iE068646; Sun, 12 Feb 2012 06:28:00 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201202120628.q1C6S0iE068646@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sun, 12 Feb 2012 06:28:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231546 - in projects/armv6/sys: arm/conf conf dev/usb dev/usb/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Feb 2012 06:28:00 -0000 Author: gonzo Date: Sun Feb 12 06:27:59 2012 New Revision: 231546 URL: http://svn.freebsd.org/changeset/base/231546 Log: Add SMSC LAN95XX driver submitted by Ben Gray with some cleanup and EEPROM handling code by me. Before we figure out the way to pass MAC from u-boot to driver, stick with hardcoded address for debugging purposes. Submitted by: Ben Gray Added: projects/armv6/sys/dev/usb/net/if_smsc.c (contents, props changed) projects/armv6/sys/dev/usb/net/if_smscreg.h (contents, props changed) Modified: projects/armv6/sys/arm/conf/PANDABOARD projects/armv6/sys/conf/files projects/armv6/sys/dev/usb/usbdevs Modified: projects/armv6/sys/arm/conf/PANDABOARD ============================================================================== --- projects/armv6/sys/arm/conf/PANDABOARD Sun Feb 12 06:01:49 2012 (r231545) +++ projects/armv6/sys/arm/conf/PANDABOARD Sun Feb 12 06:27:59 2012 (r231546) @@ -124,8 +124,8 @@ device da # Direct Access (disks) # USB Ethernet support, requires miibus device miibus -device axe # ASIX Electronics USB Ethernet -# device smsc # SMSC LAN95xx USB Ethernet +# device axe # ASIX Electronics USB Ethernet +device smsc # SMSC LAN95xx USB Ethernet # Flattened Device Tree options FDT Modified: projects/armv6/sys/conf/files ============================================================================== --- projects/armv6/sys/conf/files Sun Feb 12 06:01:49 2012 (r231545) +++ projects/armv6/sys/conf/files Sun Feb 12 06:27:59 2012 (r231546) @@ -1925,11 +1925,12 @@ dev/usb/net/if_ipheth.c optional ipheth dev/usb/net/if_kue.c optional kue dev/usb/net/if_mos.c optional mos dev/usb/net/if_rue.c optional rue +dev/usb/net/if_smsc.c optional smsc dev/usb/net/if_udav.c optional udav dev/usb/net/if_usie.c optional usie dev/usb/net/ruephy.c optional rue dev/usb/net/usb_ethernet.c optional aue | axe | cdce | cue | kue | mos | \ - rue | udav + rue | smsc | udav dev/usb/net/uhso.c optional uhso # # USB WLAN drivers Added: projects/armv6/sys/dev/usb/net/if_smsc.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/dev/usb/net/if_smsc.c Sun Feb 12 06:27:59 2012 (r231546) @@ -0,0 +1,1440 @@ +/*- + * Copyright (c) 2011 + * Ben Gray . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the company nor the name of the author may be used to + * endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY BEN GRAY ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL BEN GRAY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * SMSC LAN9xxx devices. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "usbdevs.h" + +#define USB_DEBUG_VAR smsc_debug +#include +#include + +#include +#include +#include + +/* + * From looking at the Linux SMSC logs I believe the LAN95xx devices have + * the following endpoints: + * Endpoints In 1 Out 2 Int 3 + * + */ +enum { + SMSC_BULK_DT_RD, + SMSC_BULK_DT_WR, + SMSC_INTR_DT_RD, + SMSC_N_TRANSFER, +}; + +#ifdef USB_DEBUG +static int smsc_debug = 0; + +SYSCTL_NODE(_hw_usb, OID_AUTO, smsc, CTLFLAG_RW, 0, "USB smsc"); +SYSCTL_INT(_hw_usb_smsc, OID_AUTO, debug, CTLFLAG_RW, &smsc_debug, 0, + "Debug level"); +#endif + +/* + * Various supported device vendors/products. + */ +static const struct usb_device_id smsc_devs[] = { +#define SMSC_DEV(p,i) { USB_VPI(USB_VENDOR_SMC2, USB_PRODUCT_SMC2_##p, i) } + SMSC_DEV(LAN9514_ETH, 0), +#undef SMSC_DEV +}; + +struct smsc_softc { + struct usb_ether sc_ue; + struct mtx sc_mtx; + struct usb_xfer *sc_xfer[SMSC_N_TRANSFER]; + int sc_phyno; + + /* The following stores the settings in the mac control (SMSC_REG_MAC_CR) register */ + uint32_t sc_mac_cr; + + uint32_t sc_flags; +#define SMSC_FLAG_LINK 0x0001 +#define SMSC_FLAG_LAN9514 0x1000 /* LAN9514 */ + +}; + +#define SMSC_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) +#define SMSC_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx) +#define SMSC_LOCK_ASSERT(_sc, t) mtx_assert(&(_sc)->sc_mtx, t) + +#define SMSC_TIMEOUT 100 /* 10*ms */ + +static device_probe_t smsc_probe; +static device_attach_t smsc_attach; +static device_detach_t smsc_detach; + +static usb_callback_t smsc_bulk_read_callback; +static usb_callback_t smsc_bulk_write_callback; +static usb_callback_t smsc_intr_callback; + +static miibus_readreg_t smsc_miibus_readreg; +static miibus_writereg_t smsc_miibus_writereg; +static miibus_statchg_t smsc_miibus_statchg; + +static uether_fn_t smsc_attach_post; +static uether_fn_t smsc_init; +static uether_fn_t smsc_stop; +static uether_fn_t smsc_start; +static uether_fn_t smsc_tick; +static uether_fn_t smsc_setmulti; +static uether_fn_t smsc_setpromisc; + +static int smsc_ifmedia_upd(struct ifnet *); +static void smsc_ifmedia_sts(struct ifnet *, struct ifmediareq *); + +static int smsc_chip_init(struct smsc_softc *sc); + +static const struct usb_config smsc_config[SMSC_N_TRANSFER] = { + + [SMSC_BULK_DT_WR] = { + .type = UE_BULK, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_OUT, + .frames = 16, + .bufsize = 16 * MCLBYTES, + .flags = {.pipe_bof = 1,.force_short_xfer = 1,}, + .callback = smsc_bulk_write_callback, + .timeout = 10000, /* 10 seconds */ + }, + + [SMSC_BULK_DT_RD] = { + .type = UE_BULK, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_IN, + .bufsize = 18944, /* bytes */ + .flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, + .callback = smsc_bulk_read_callback, + .timeout = 0, /* no timeout */ + }, + + [SMSC_INTR_DT_RD] = { + .type = UE_INTERRUPT, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_IN, + .flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, + .bufsize = 0, /* use wMaxPacketSize */ + .callback = smsc_intr_callback, + }, +}; + +static const struct usb_ether_methods smsc_ue_methods = { + .ue_attach_post = smsc_attach_post, + .ue_start = smsc_start, + .ue_init = smsc_init, + .ue_stop = smsc_stop, + .ue_tick = smsc_tick, + .ue_setmulti = smsc_setmulti, + .ue_setpromisc = smsc_setpromisc, + .ue_mii_upd = smsc_ifmedia_upd, + .ue_mii_sts = smsc_ifmedia_sts, +}; + +/** + * smsc_read_reg - Reads a 32-bit register on the device + * @sc: driver soft context + * + * + * + * RETURNS: + * Register value or 0 if read failed + */ +static uint32_t +smsc_read_reg(struct smsc_softc *sc, uint32_t off) +{ + struct usb_device_request req; + uint32_t buf; + usb_error_t err; + + SMSC_LOCK_ASSERT(sc, MA_OWNED); + + req.bmRequestType = UT_READ_VENDOR_DEVICE; + req.bRequest = SMSC_UR_READ; + USETW(req.wValue, 0); + USETW(req.wIndex, off); + USETW(req.wLength, 4); + + err = uether_do_request(&sc->sc_ue, &req, &buf, 1000); + if (err != 0) { + device_printf(sc->sc_ue.ue_dev, "Failed to read register 0x%0x, err = %d\n", off, err); + return (0); + } + + return le32toh(buf); +} + +/** + * smsc_write_reg - Reads a 32-bit register on the device + * @sc: driver soft context + * + * + * + * RETURNS: + * Nothing + */ +static void +smsc_write_reg(struct smsc_softc *sc, uint32_t off, uint32_t data) +{ + struct usb_device_request req; + uint32_t buf; + usb_error_t err; + + SMSC_LOCK_ASSERT(sc, MA_OWNED); + + buf = htole32(data); + + req.bmRequestType = UT_WRITE_VENDOR_DEVICE; + req.bRequest = SMSC_UR_WRITE; + USETW(req.wValue, 0); + USETW(req.wIndex, off); + USETW(req.wLength, 4); + + err = uether_do_request(&sc->sc_ue, &req, &buf, 1000); + if (err != 0) + device_printf(sc->sc_ue.ue_dev, "Failed to write register 0x%0x, err = %d\n", off, err); + +} + +/** + * smsc_wait_for_bits - Reads data from eeprom + * @sc: driver soft context + * @reg: register number + * @bits: bit to wait for to clear + * + * RETURNS: + * 0 if succeeded, -1 if timed out + */ +static int +smsc_wait_for_bits(struct smsc_softc *sc, uint32_t reg, uint32_t bits) +{ + int i; + uint32_t val; + + for (i = 0; i != SMSC_TIMEOUT; i++) { + val = smsc_read_reg(sc, SMSC_REG_E2P_CMD); + if (!(val & bits)) + break; + if (uether_pause(&sc->sc_ue, hz / 100)) + break; + } + + if (i == SMSC_TIMEOUT) + return (-1); + + return (0); +} + +/** + * smsc_read_eeprom - Reads data from eeprom + * @sc: driver soft context + * @off: EEPROM offset + * @data: memory to read data to + * @length: read length bytes + * + * + * + * RETURNS: + * 0 on success, -1 otherwise + */ +static int +smsc_read_eeprom(struct smsc_softc *sc, uint32_t off, uint8_t *data, int length) +{ + int timedout, i; + uint32_t val; + + if (smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY)) { + device_printf(sc->sc_ue.ue_dev, "Timed-out waiting for busy EEPROM\n"); + return (-1); + } + + for (i = 0; i < length; i++) { + smsc_write_reg(sc, SMSC_REG_E2P_CMD, + E2P_CMD_BUSY | E2P_CMD_READ | ((off+i) & E2P_CMD_ADDR)); + + timedout = smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY); + val = smsc_read_reg(sc, SMSC_REG_E2P_CMD); + if (timedout || (val & E2P_CMD_TIMEOUT)) { + device_printf(sc->sc_ue.ue_dev, + "Timed-out reading from EEPROM\n"); + return (-1); + } + + val = smsc_read_reg(sc, SMSC_REG_E2P_DATA); + data[i] = val & E2P_DATA_MASK; + } + + return (0); +} + +#if 0 +/** + * smsc_write_eeprom - Reads data from eeprom + * @sc: driver soft context + * @off: EEPROM offset + * @data: memory to write + * @length: write length bytes + * + * RETURNS: + * 0 on success, -1 otherwise + */ +static int +smsc_write_eeprom(struct smsc_softc *sc, uint32_t off, uint8_t *data, int length) +{ + int timedout, i; + uint32_t val; + + if (smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY)) { + device_printf(sc->sc_ue.ue_dev, "Timed-out waiting for busy EEPROM\n"); + return (-1); + } + + /* + * Write/Erase + */ + smsc_write_reg(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY | E2P_CMD_EWEN); + timedout = smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY); + val = smsc_read_reg(sc, SMSC_REG_E2P_CMD); + + if (timedout || (val & E2P_CMD_TIMEOUT)) { + device_printf(sc->sc_ue.ue_dev, "Timed-out erasing EEPROM\n"); + return (-1); + } + + for (i = 0; i < length; i++) { + val = data[i]; + smsc_write_reg(sc, SMSC_REG_E2P_DATA, val); + smsc_write_reg(sc, SMSC_REG_E2P_CMD, + E2P_CMD_BUSY | E2P_CMD_WRITE | ((off+i) & E2P_CMD_ADDR)); + + timedout = smsc_wait_for_bits(sc, SMSC_REG_E2P_CMD, E2P_CMD_BUSY); + val = smsc_read_reg(sc, SMSC_REG_E2P_CMD); + + if (timedout || (val & E2P_CMD_TIMEOUT)) { + device_printf(sc->sc_ue.ue_dev, + "Timed-out writing EEPROM %d %x\n", i, val); + return (-1); + } + } + + return (0); +} +#endif + +/** + * smsc_miibus_readreg - Reads a MII/MDIO register + * @dev: usb ether device + * @phy: the number of phy writing to + * @reg: the register address + * @val: the value to write + * + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static int +smsc_miibus_readreg(device_t dev, int phy, int reg) +{ + struct smsc_softc *sc = device_get_softc(dev); + int locked; + uint32_t addr; + uint32_t val = 0; + int i; + + locked = mtx_owned(&sc->sc_mtx); + if (!locked) + SMSC_LOCK(sc); + + addr = (phy << 11) | (reg << 6) | MII_READ; + smsc_write_reg(sc, SMSC_REG_MII_ADDR, addr); + + for (i = 0; i != SMSC_TIMEOUT; i++) { + if (!(smsc_read_reg(sc, SMSC_REG_MII_ADDR) & MII_BUSY)) + break; + if (uether_pause(&sc->sc_ue, hz / 100)) + break; + } + + if (i == SMSC_TIMEOUT) + device_printf(sc->sc_ue.ue_dev, "MII read timed out\n"); + + val = smsc_read_reg(sc, SMS_REG_MII_DATA); + + if (!locked) + SMSC_UNLOCK(sc); + + return (val & 0xFFFF); +} + +/** + * smsc_miibus_writereg - Writes a MII/MDIO register + * @dev: usb ether device + * @phy: the number of phy writing to + * @reg: the register address + * @val: the value to write + * + * + * + * RETURNS: + * 0 + */ +static int +smsc_miibus_writereg(device_t dev, int phy, int reg, int val) +{ + struct smsc_softc *sc = device_get_softc(dev); + int locked; + uint32_t addr; + int i; + + if (sc->sc_phyno != phy) + return (0); + + locked = mtx_owned(&sc->sc_mtx); + if (!locked) + SMSC_LOCK(sc); + + val = htole32(val); + smsc_write_reg(sc, SMS_REG_MII_DATA, val); + + addr = (phy << 11) | (reg << 6) | MII_WRITE; + smsc_write_reg(sc, SMSC_REG_MII_ADDR, addr); + + for (i = 0; i != SMSC_TIMEOUT; i++) { + if (!(smsc_read_reg(sc, SMSC_REG_MII_ADDR) & MII_BUSY)) + break; + if (uether_pause(&sc->sc_ue, hz / 100)) + break; + } + + if (i == SMSC_TIMEOUT) + device_printf(sc->sc_ue.ue_dev, "MII write timed out\n"); + + if (!locked) + SMSC_UNLOCK(sc); + + return (0); +} + + + +/** + * smsc_miibus_statchg - Called when the MII status changes + * @dev: usb ether device + * + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_miibus_statchg(device_t dev) +{ + struct smsc_softc *sc = device_get_softc(dev); + struct mii_data *mii = uether_getmii(&sc->sc_ue); + struct ifnet *ifp; + int locked; + + locked = mtx_owned(&sc->sc_mtx); + if (!locked) + SMSC_LOCK(sc); + + ifp = uether_getifp(&sc->sc_ue); + if (mii == NULL || ifp == NULL || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) + goto done; + + /* Use the MII status to determine link status */ + sc->sc_flags &= ~SMSC_FLAG_LINK; + if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) == + (IFM_ACTIVE | IFM_AVALID)) { + switch (IFM_SUBTYPE(mii->mii_media_active)) { + case IFM_10_T: + case IFM_100_TX: + sc->sc_flags |= SMSC_FLAG_LINK; + break; + case IFM_1000_T: + /* Gigabit ethernet not supported by chipset */ + break; + default: + break; + } + } + + /* Lost link, do nothing. */ + if ((sc->sc_flags & SMSC_FLAG_LINK) == 0) + goto done; + + /* Enable/disable full duplex operation */ + if ((IFM_OPTIONS(mii->mii_media_active) & IFM_FDX) != 0) { + sc->sc_mac_cr &= ~MAC_CR_RCVOWN; + sc->sc_mac_cr |= MAC_CR_FDPX; + } else { + sc->sc_mac_cr &= ~MAC_CR_FDPX; + sc->sc_mac_cr |= MAC_CR_RCVOWN; + } + + smsc_write_reg(sc, SMSC_REG_MAC_CR, sc->sc_mac_cr); + +done: + if (!locked) + SMSC_UNLOCK(sc); +} + +/** + * smsc_ifmedia_upd - Set media options + * @ifp: interface pointer + * + * Basically boilerplate code that simply calls the mii functions to set the + * media options. + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static int +smsc_ifmedia_upd(struct ifnet *ifp) +{ + struct smsc_softc *sc = ifp->if_softc; + struct mii_data *mii = uether_getmii(&sc->sc_ue); + int err; + + SMSC_LOCK_ASSERT(sc, MA_OWNED); + + if (mii->mii_instance) { + struct mii_softc *miisc; + + LIST_FOREACH(miisc, &mii->mii_phys, mii_list) + mii_phy_reset(miisc); + } + err = mii_mediachg(mii); + return (err); +} + +/** + * smsc_ifmedia_sts - Report current media status + * @ifp: + * @ifmr: + * + * Basically boilerplate code that simply calls the mii functions to get the + * media status. + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr) +{ + struct smsc_softc *sc = ifp->if_softc; + struct mii_data *mii = uether_getmii(&sc->sc_ue); + + SMSC_LOCK(sc); + + mii_pollstat(mii); + + SMSC_UNLOCK(sc); + + ifmr->ifm_active = mii->mii_media_active; + ifmr->ifm_status = mii->mii_media_status; +} + +/** + * smsc_hash - Calculate the hash of a mac address + * @addr: The mac address to calculate the has on + * + * + * RETURNS: + * Returns a value from 0-63 which is the hash of the mac address. + */ +static inline uint32_t +smsc_hash(uint8_t addr[ETHER_ADDR_LEN]) +{ + return (ether_crc32_be(addr, ETHER_ADDR_LEN) >> 26) & 0x3f; +} + +/** + * smsc_setmulti - Setup multicast + * @ue: + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_setmulti(struct usb_ether *ue) +{ + struct smsc_softc *sc = uether_getsc(ue); + struct ifnet *ifp = uether_getifp(ue); + struct ifmultiaddr *ifma; + uint32_t hashtbl[2] = { 0, 0 }; + uint32_t hash; + + SMSC_LOCK_ASSERT(sc, MA_OWNED); + + if (ifp->if_flags & IFF_PROMISC) { + /* Enter promiscuous mode and set the bits accordingly */ + sc->sc_mac_cr |= MAC_CR_PRMS; + sc->sc_mac_cr &= ~(MAC_CR_MCPAS | MAC_CR_HPFILT); + } else if (ifp->if_flags & IFF_ALLMULTI) { + /* Enter multicaste mode and set the bits accordingly */ + sc->sc_mac_cr |= MAC_CR_MCPAS; + sc->sc_mac_cr &= ~(MAC_CR_PRMS | MAC_CR_HPFILT); + + } else { + /* Take the lock of the mac address list before hashing each of them */ + if_maddr_rlock(ifp); + + if (!TAILQ_EMPTY(&ifp->if_multiaddrs)) { + /* We are filtering on a set of address so calculate hashes of each + * of the address and set the corresponding bits in the register. + */ + sc->sc_mac_cr |= MAC_CR_HPFILT; + sc->sc_mac_cr &= ~(MAC_CR_PRMS | MAC_CR_MCPAS); + + TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { + if (ifma->ifma_addr->sa_family != AF_LINK) + continue; + + hash = smsc_hash(LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); + hashtbl[hash >> 5] |= 1 << (hash & 0x1F); + } + } else { + /* Only receive packets with destination set to our mac address */ + sc->sc_mac_cr &= ~(MAC_CR_PRMS | MAC_CR_MCPAS | MAC_CR_HPFILT); + } + + if_maddr_runlock(ifp); + } + + /* Write the hash table and mac control registers */ + smsc_write_reg(sc, SMSC_REG_HASHH, hashtbl[1]); + smsc_write_reg(sc, SMSC_REG_HASHL, hashtbl[0]); + smsc_write_reg(sc, SMSC_REG_MAC_CR, sc->sc_mac_cr); +} + +/** + * smsc_setpromisc - Setup promiscuous mode + * @ue: + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_setpromisc(struct usb_ether *ue) +{ + struct smsc_softc *sc = uether_getsc(ue); + struct ifnet *ifp = uether_getifp(ue); + + device_printf(sc->sc_ue.ue_dev, "promiscuous mode enabled\n"); + + SMSC_LOCK_ASSERT(sc, MA_OWNED); + + /* Set/clear the promiscuous bit based on setting */ + if (ifp->if_flags & IFF_PROMISC) { + sc->sc_mac_cr |= MAC_CR_PRMS; + } else { + sc->sc_mac_cr &= ~MAC_CR_PRMS; + } + + /* Write mac control registers */ + smsc_write_reg(sc, SMSC_REG_MAC_CR, sc->sc_mac_cr); +} + +/** + * smsc_set_mac_address - Sets the mac address in the device + * @sc: driver soft context + * @addr: pointer to array contain at least 6 bytes of the mac + * + * Writes the MAC address into the device, usually this doesn't need to be + * done because typically the MAC is read from the attached EEPROM. + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_set_mac_address(struct smsc_softc *sc, const uint8_t *addr) +{ + uint32_t tmp; + + /* Program the lower 4 bytes of the MAC */ + tmp = addr[3] << 24 | addr[2] << 16 | addr[1] << 8 | addr[0]; + smsc_write_reg(sc, SMSC_REG_ADDRL, tmp); + + /* Program the upper 2 bytes of the MAC */ + tmp = addr[5] << 8 | addr[4]; + smsc_write_reg(sc, SMSC_REG_ADDRH, tmp); +} + +/** + * smsc_reset - Reset the SMSC interface + * @sc: device soft context + * + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_reset(struct smsc_softc *sc) +{ + struct usb_config_descriptor *cd; + usb_error_t err; + + cd = usbd_get_config_descriptor(sc->sc_ue.ue_udev); + + err = usbd_req_set_config(sc->sc_ue.ue_udev, &sc->sc_mtx, + cd->bConfigurationValue); + + if (err) + device_printf(sc->sc_ue.ue_dev, "reset failed (ignored)\n"); + + /* Wait a little while for the chip to get its brains in order. */ + uether_pause(&sc->sc_ue, hz / 100); + + /* Reinitialize controller to achieve full reset. */ + smsc_chip_init(sc); +} + + +/** + * smsc_init - Initialises the LAN95xx chip + * @ue: USB ether interface + * + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_init(struct usb_ether *ue) +{ + struct smsc_softc *sc = uether_getsc(ue); + struct ifnet *ifp = uether_getifp(ue); + + SMSC_LOCK_ASSERT(sc, MA_OWNED); + + if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) + return; + + /* Cancel pending I/O */ + smsc_stop(ue); + + /* Reset the ethernet interface */ + smsc_reset(sc); + + /* Set MAC address. */ + smsc_set_mac_address(sc, IF_LLADDR(ifp)); + + /* Load the multicast filter. */ + smsc_setmulti(ue); + + usbd_xfer_set_stall(sc->sc_xfer[SMSC_BULK_DT_WR]); + + /* Indicate we are up and running */ + ifp->if_drv_flags |= IFF_DRV_RUNNING; + + /* Switch to selected media. */ + smsc_ifmedia_upd(ifp); + smsc_start(ue); +} + + +/** + * smsc_intr_callback - Inteerupt callback used to process the USB packet + * @xfer: the USB transfer + * @error: + * + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_intr_callback(struct usb_xfer *xfer, usb_error_t error) +{ + int actlen; + + usbd_xfer_status(xfer, &actlen, NULL, NULL, NULL); +} + +/** + * smsc_bulk_read_callback - Read callback used to process the USB packet + * @xfer: the USB transfer + * @error: + * + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_bulk_read_callback(struct usb_xfer *xfer, usb_error_t error) +{ + struct smsc_softc *sc = usbd_xfer_softc(xfer); + struct usb_ether *ue = &sc->sc_ue; + struct ifnet *ifp = uether_getifp(ue); + struct usb_page_cache *pc; + uint32_t rxhdr; + uint16_t pktlen; + uint32_t len; + + int actlen; + int frames; + static int count = 0; + + usbd_xfer_status(xfer, &actlen, NULL, &frames, NULL); + count++; + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + /* From looking at the linux driver it appears the received packet + * is prefixed with a 32-bit header, which contains information like + * the status of the received packet. + * + * Also there maybe multiple packets in the USB frame, each will + * have a header and each needs to have it's own mbuf allocated and + * populated for it. + */ + if (actlen < sizeof(rxhdr) + ETHER_CRC_LEN) { + ifp->if_ierrors++; + printf("DROP\n"); + goto tr_setup; + } + pc = usbd_xfer_get_frame(xfer, 0); + usbd_copy_out(pc, 0, &rxhdr, sizeof(rxhdr)); + actlen -= sizeof(rxhdr); + rxhdr = le32toh(rxhdr); + pktlen = (uint16_t)((rxhdr & SMSC_RX_STATUS_FL_MASK) >> SMSC_RX_STATUS_FL_SHIFT); + len = min(pktlen, actlen); + if (rxhdr & SMSC_RX_STATUS_ES) { + ifp->if_ierrors++; + printf("DROP\n"); + goto tr_setup; + } + uether_rxbuf(ue, pc, 2 + sizeof(rxhdr), len); + /* FALLTHROUGH */ + + case USB_ST_SETUP: +tr_setup: + usbd_xfer_set_frame_len(xfer, 0, usbd_xfer_max_len(xfer)); + usbd_transfer_submit(xfer); + uether_rxflush(ue); + return; + + default: + device_printf(sc->sc_ue.ue_dev, "bulk read error, %s", usbd_errstr(error)); + if (error != USB_ERR_CANCELLED) { + usbd_xfer_set_stall(xfer); + goto tr_setup; + } + device_printf(sc->sc_ue.ue_dev, "start rx %i", usbd_xfer_max_len(xfer)); + return; + } +} + +/** + * smsc_bulk_write_callback - Write callback used to send ethernet frame + * @xfer: the USB transfer + * @error: + * + * + * + * RETURNS: + * Returns 0 on success or a negative error code. + */ +static void +smsc_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error) +{ + struct smsc_softc *sc = usbd_xfer_softc(xfer); + struct ifnet *ifp = uether_getifp(&sc->sc_ue); + struct usb_page_cache *pc; + struct mbuf *m; + uint32_t txhdr; + uint32_t frm_len = 0; + uint32_t csum_prefix = 0; + + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + /* FALLTHROUGH */ + + case USB_ST_SETUP: +tr_setup: + if ((sc->sc_flags & SMSC_FLAG_LINK) == 0 || + (ifp->if_drv_flags & IFF_DRV_OACTIVE) != 0) { + /* Don't send anything if there is no link or controller is + * busy. + */ + return; + } + + /* Pull the frame of the queue */ + IFQ_DRV_DEQUEUE(&ifp->if_snd, m); + if (m == NULL) + return; + + /* Get the frame so we copy in the header and frame data */ + pc = usbd_xfer_get_frame(xfer, 0); + + /* Check if we can use the H/W checksumming */ + if ((ifp->if_capenable & IFCAP_TXCSUM) && + ((m->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP)) != 0)) { + panic("HW checksumming support is not implemented\n"); + } + + /* Each frame is prefixed with two 32-bit values describing the + * length and checksum offloading request. + */ + txhdr = m->m_pkthdr.len | SMSC_TX_CMD_A_FIRST_SEG | SMSC_TX_CMD_A_LAST_SEG; + txhdr = htole32(txhdr); + usbd_copy_in(pc, 0, &txhdr, sizeof(txhdr)); + + txhdr = m->m_pkthdr.len; + if (csum_prefix) + txhdr |= SMSC_TX_CMD_B_CSUM_ENABLE; + txhdr = htole32(txhdr); + usbd_copy_in(pc, 4, &txhdr, sizeof(txhdr)); + + frm_len += 8; + + + /* Next copy in the actual packet */ + usbd_m_copy_in(pc, frm_len, m, 0, m->m_pkthdr.len); + frm_len += m->m_pkthdr.len; + + /* Set the length of the transfer including the header */ + usbd_xfer_set_frame_len(xfer, 0, frm_len); + + /* Update the number of packets sent */ + ifp->if_opackets++; + + /* If there's a BPF listener, bounce a copy of this frame to him */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sun Feb 12 07:06:46 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4B0BA106564A; Sun, 12 Feb 2012 07:06:46 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3A2B88FC0C; Sun, 12 Feb 2012 07:06:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1C76kTW069972; Sun, 12 Feb 2012 07:06:46 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1C76kI2069970; Sun, 12 Feb 2012 07:06:46 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201202120706.q1C76kI2069970@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sun, 12 Feb 2012 07:06:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231548 - projects/armv6/sys/boot/fdt/dts X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Feb 2012 07:06:46 -0000 Author: gonzo Date: Sun Feb 12 07:06:45 2012 New Revision: 231548 URL: http://svn.freebsd.org/changeset/base/231548 Log: Fix interrupt number for UART Modified: projects/armv6/sys/boot/fdt/dts/pandaboard.dts Modified: projects/armv6/sys/boot/fdt/dts/pandaboard.dts ============================================================================== --- projects/armv6/sys/boot/fdt/dts/pandaboard.dts Sun Feb 12 06:41:29 2012 (r231547) +++ projects/armv6/sys/boot/fdt/dts/pandaboard.dts Sun Feb 12 07:06:45 2012 (r231548) @@ -77,7 +77,7 @@ compatible = "ns16550"; reg = <0x48020000 0x1000>; reg-shift = <2>; - interrupts = < 68 >; + interrupts = < 106 >; interrupt-parent = <&GIC>; clock-frequency = < 48000000 >; /* 48Mhz clock for all uarts */ /* (techref 17.3.1.1) */ From owner-svn-src-projects@FreeBSD.ORG Sun Feb 12 23:45:27 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 62F66106566C; Sun, 12 Feb 2012 23:45:27 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4EDEF8FC13; Sun, 12 Feb 2012 23:45:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1CNjRps006271; Sun, 12 Feb 2012 23:45:27 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1CNjRc1006269; Sun, 12 Feb 2012 23:45:27 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201202122345.q1CNjRc1006269@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sun, 12 Feb 2012 23:45:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231569 - projects/armv6/sys/arm/ti/omap4 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Feb 2012 23:45:27 -0000 Author: gonzo Date: Sun Feb 12 23:45:27 2012 New Revision: 231569 URL: http://svn.freebsd.org/changeset/base/231569 Log: Clean out unused files Deleted: projects/armv6/sys/arm/ti/omap4/omap4.c projects/armv6/sys/arm/ti/omap4/omap4_timer.c projects/armv6/sys/arm/ti/omap4/uart_cpu_omap4.c Modified: projects/armv6/sys/arm/ti/omap4/files.omap4 Modified: projects/armv6/sys/arm/ti/omap4/files.omap4 ============================================================================== --- projects/armv6/sys/arm/ti/omap4/files.omap4 Sun Feb 12 23:18:05 2012 (r231568) +++ projects/armv6/sys/arm/ti/omap4/files.omap4 Sun Feb 12 23:45:27 2012 (r231569) @@ -22,7 +22,6 @@ arm/ti/ti_machdep.c standard arm/ti/omap_gpio.c optional gpio arm/ti/usb/omap_ehci.c optional usb ehci -# arm/ti/omap4/omap4.c standard arm/ti/omap4/omap4_prcm_clks.c standard arm/ti/omap4/omap4_scm_padconf.c standard From owner-svn-src-projects@FreeBSD.ORG Sun Feb 12 23:48:39 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D6EF11065672; Sun, 12 Feb 2012 23:48:39 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C15C68FC16; Sun, 12 Feb 2012 23:48:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1CNmdGf006401; Sun, 12 Feb 2012 23:48:39 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1CNmdN3006399; Sun, 12 Feb 2012 23:48:39 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201202122348.q1CNmdN3006399@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sun, 12 Feb 2012 23:48:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231570 - projects/armv6/sys/arm/ti/usb X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Feb 2012 23:48:39 -0000 Author: gonzo Date: Sun Feb 12 23:48:39 2012 New Revision: 231570 URL: http://svn.freebsd.org/changeset/base/231570 Log: Replace readl/writel with read_4/write_4 Modified: projects/armv6/sys/arm/ti/usb/omap_ehci.c Modified: projects/armv6/sys/arm/ti/usb/omap_ehci.c ============================================================================== --- projects/armv6/sys/arm/ti/usb/omap_ehci.c Sun Feb 12 23:45:27 2012 (r231569) +++ projects/armv6/sys/arm/ti/usb/omap_ehci.c Sun Feb 12 23:48:39 2012 (r231570) @@ -133,8 +133,8 @@ static device_suspend_t omap_ehci_suspen static device_resume_t omap_ehci_resume; /** - * omap_tll_readl - read a 32-bit value from the USBTLL registers - * omap_tll_writel - write a 32-bit value from the USBTLL registers + * omap_tll_read_4 - read a 32-bit value from the USBTLL registers + * omap_tll_write_4 - write a 32-bit value from the USBTLL registers * omap_tll_readb - read an 8-bit value from the USBTLL registers * omap_tll_writeb - write an 8-bit value from the USBTLL registers * @sc: omap ehci device context @@ -149,13 +149,13 @@ static device_resume_t omap_ehci_resume; * nothing in case of write function, if read function returns the value read. */ static inline uint32_t -omap_tll_readl(struct omap_ehci_softc *sc, bus_size_t off) +omap_tll_read_4(struct omap_ehci_softc *sc, bus_size_t off) { return bus_read_4(sc->tll_mem_res, off); } static inline void -omap_tll_writel(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val) +omap_tll_write_4(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val) { bus_write_4(sc->tll_mem_res, off, val); } @@ -173,8 +173,8 @@ omap_tll_writeb(struct omap_ehci_softc * } /** - * omap_ehci_readl - read a 32-bit value from the EHCI registers - * omap_ehci_writel - write a 32-bit value from the EHCI registers + * omap_ehci_read_4 - read a 32-bit value from the EHCI registers + * omap_ehci_write_4 - write a 32-bit value from the EHCI registers * @sc: omap ehci device context * @off: byte offset within the register set to read from * @val: the value to write into the register @@ -187,19 +187,19 @@ omap_tll_writeb(struct omap_ehci_softc * * nothing in case of write function, if read function returns the value read. */ static inline uint32_t -omap_ehci_readl(struct omap_ehci_softc *sc, bus_size_t off) +omap_ehci_read_4(struct omap_ehci_softc *sc, bus_size_t off) { return (bus_read_4(sc->base.sc_io_res, off)); } static inline void -omap_ehci_writel(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val) +omap_ehci_write_4(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val) { bus_write_4(sc->base.sc_io_res, off, val); } /** - * omap_uhh_readl - read a 32-bit value from the UHH registers - * omap_uhh_writel - write a 32-bit value from the UHH registers + * omap_uhh_read_4 - read a 32-bit value from the UHH registers + * omap_uhh_write_4 - write a 32-bit value from the UHH registers * @sc: omap ehci device context * @off: byte offset within the register set to read from * @val: the value to write into the register @@ -212,12 +212,12 @@ omap_ehci_writel(struct omap_ehci_softc * nothing in case of write function, if read function returns the value read. */ static inline uint32_t -omap_uhh_readl(struct omap_ehci_softc *sc, bus_size_t off) +omap_uhh_read_4(struct omap_ehci_softc *sc, bus_size_t off) { return bus_read_4(sc->uhh_mem_res, off); } static inline void -omap_uhh_writel(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val) +omap_uhh_write_4(struct omap_ehci_softc *sc, bus_size_t off, uint32_t val) { bus_write_4(sc->uhh_mem_res, off, val); } @@ -244,17 +244,17 @@ omap_ehci_utmi_init(struct omap_ehci_sof * same, SDR mode, bit stuffing and no autoidle. */ for (i=0; i<3; i++) { - reg = omap_tll_readl(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i)); + reg = omap_tll_read_4(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i)); reg &= ~(TLL_CHANNEL_CONF_UTMIAUTOIDLE | TLL_CHANNEL_CONF_ULPINOBITSTUFF | TLL_CHANNEL_CONF_ULPIDDRMODE); - omap_tll_writel(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i), reg); + omap_tll_write_4(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i), reg); } /* Program the common TLL register */ - reg = omap_tll_readl(isc, OMAP_USBTLL_TLL_SHARED_CONF); + reg = omap_tll_read_4(isc, OMAP_USBTLL_TLL_SHARED_CONF); reg &= ~( TLL_SHARED_CONF_USB_90D_DDR_EN | TLL_SHARED_CONF_USB_DIVRATIO_MASK); @@ -262,18 +262,18 @@ omap_ehci_utmi_init(struct omap_ehci_sof | TLL_SHARED_CONF_USB_DIVRATIO_2 | TLL_SHARED_CONF_USB_180D_SDR_EN); - omap_tll_writel(isc, OMAP_USBTLL_TLL_SHARED_CONF, reg); + omap_tll_write_4(isc, OMAP_USBTLL_TLL_SHARED_CONF, reg); /* Enable channels now */ for (i = 0; i < 3; i++) { - reg = omap_tll_readl(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i)); + reg = omap_tll_read_4(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i)); /* Enable only the reg that is needed */ if ((en_mask & (1 << i)) == 0) continue; reg |= TLL_CHANNEL_CONF_CHANEN; - omap_tll_writel(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i), reg); + omap_tll_write_4(isc, OMAP_USBTLL_TLL_CHANNEL_CONF(i), reg); } } @@ -305,10 +305,10 @@ omap_ehci_soft_phy_reset(struct omap_ehc /* start ULPI access*/ | (1 << OMAP_USBHOST_INSNREG05_ULPI_CONTROL_SHIFT); - omap_ehci_writel(isc, OMAP_USBHOST_INSNREG05_ULPI, reg); + omap_ehci_write_4(isc, OMAP_USBHOST_INSNREG05_ULPI, reg); /* Wait for ULPI access completion */ - while ((omap_ehci_readl(isc, OMAP_USBHOST_INSNREG05_ULPI) + while ((omap_ehci_read_4(isc, OMAP_USBHOST_INSNREG05_ULPI) & (1 << OMAP_USBHOST_INSNREG05_ULPI_CONTROL_SHIFT))) { /* Sleep for a tick */ @@ -371,7 +371,7 @@ omap_ehci_init(struct omap_ehci_softc *i DELAY(10); /* Read the UHH revision */ - isc->ehci_rev = omap_uhh_readl(isc, OMAP_USBHOST_UHH_REVISION); + isc->ehci_rev = omap_uhh_read_4(isc, OMAP_USBHOST_UHH_REVISION); device_printf(isc->sc_dev, "UHH revision 0x%08x\n", isc->ehci_rev); /* Initilise the low level interface module(s) */ @@ -381,13 +381,13 @@ omap_ehci_init(struct omap_ehci_softc *i omap_prcm_clk_enable(USBTLL_CLK); /* Perform TLL soft reset, and wait until reset is complete */ - omap_tll_writel(isc, OMAP_USBTLL_SYSCONFIG, TLL_SYSCONFIG_SOFTRESET); + omap_tll_write_4(isc, OMAP_USBTLL_SYSCONFIG, TLL_SYSCONFIG_SOFTRESET); /* Set the timeout to 100ms*/ timeout = (hz < 10) ? 1 : ((100 * hz) / 1000); /* Wait for TLL reset to complete */ - while ((omap_tll_readl(isc, OMAP_USBTLL_SYSSTATUS) & + while ((omap_tll_read_4(isc, OMAP_USBTLL_SYSSTATUS) & TLL_SYSSTATUS_RESETDONE) == 0x00) { /* Sleep for a tick */ @@ -407,7 +407,7 @@ omap_ehci_init(struct omap_ehci_softc *i * assertion when no more activity on the USB. * ENAWAKEUP = 1 : Wakeup generation enabled */ - omap_tll_writel(isc, OMAP_USBTLL_SYSCONFIG, TLL_SYSCONFIG_ENAWAKEUP | + omap_tll_write_4(isc, OMAP_USBTLL_SYSCONFIG, TLL_SYSCONFIG_ENAWAKEUP | TLL_SYSCONFIG_AUTOIDLE | TLL_SYSCONFIG_SIDLE_SMART_IDLE | TLL_SYSCONFIG_CACTIVITY); @@ -439,7 +439,7 @@ omap_ehci_init(struct omap_ehci_softc *i } /* Put UHH in SmartIdle/SmartStandby mode */ - reg = omap_uhh_readl(isc, OMAP_USBHOST_UHH_SYSCONFIG); + reg = omap_uhh_read_4(isc, OMAP_USBHOST_UHH_SYSCONFIG); if (isc->ehci_rev == OMAP_EHCI_REV1) { reg &= ~(UHH_SYSCONFIG_SIDLEMODE_MASK | UHH_SYSCONFIG_MIDLEMODE_MASK); @@ -454,10 +454,10 @@ omap_ehci_init(struct omap_ehci_softc *i reg &= ~UHH_SYSCONFIG_STANDBYMODE_MASK; reg |= UHH_SYSCONFIG_STANDBYMODE_NOSTDBY; } - omap_uhh_writel(isc, OMAP_USBHOST_UHH_SYSCONFIG, reg); + omap_uhh_write_4(isc, OMAP_USBHOST_UHH_SYSCONFIG, reg); device_printf(isc->sc_dev, "OMAP_UHH_SYSCONFIG: 0x%08x\n", reg); - reg = omap_uhh_readl(isc, OMAP_USBHOST_UHH_HOSTCONFIG); + reg = omap_uhh_read_4(isc, OMAP_USBHOST_UHH_HOSTCONFIG); /* Setup ULPI bypass and burst configurations */ reg |= (UHH_HOSTCONFIG_ENA_INCR4 | @@ -499,7 +499,7 @@ omap_ehci_init(struct omap_ehci_softc *i reg |= UHH_HOSTCONFIG_P2_MODE_HSIC; } - omap_uhh_writel(isc, OMAP_USBHOST_UHH_HOSTCONFIG, reg); + omap_uhh_write_4(isc, OMAP_USBHOST_UHH_HOSTCONFIG, reg); device_printf(isc->sc_dev, "UHH setup done, uhh_hostconfig=0x%08x\n", reg); @@ -512,7 +512,7 @@ omap_ehci_init(struct omap_ehci_softc *i * register bit disables this feature and restores normal behavior." */ #if 0 - omap_ehci_writel(isc, OMAP_USBHOST_INSNREG04, + omap_ehci_write_4(isc, OMAP_USBHOST_INSNREG04, OMAP_USBHOST_INSNREG04_DISABLE_UNSUSPEND); #endif @@ -554,10 +554,10 @@ omap_ehci_init(struct omap_ehci_softc *i * which the host controller issues interrupts. We set it to 1 microframe * at startup - the default is 8 mircoframes (equates to 1ms). */ - reg = omap_ehci_readl(isc, OMAP_USBHOST_USBCMD); + reg = omap_ehci_read_4(isc, OMAP_USBHOST_USBCMD); reg &= 0xff00ffff; reg |= (1 << 16); - omap_ehci_writel(isc, OMAP_USBHOST_USBCMD, reg); + omap_ehci_write_4(isc, OMAP_USBHOST_USBCMD, reg); /* Soft reset the PHY using PHY reset command over ULPI */ if (isc->port_mode[0] == EHCI_HCD_OMAP_MODE_PHY) @@ -605,8 +605,8 @@ omap_ehci_fini(struct omap_ehci_softc *i timeout = (100 * hz) / 1000; /* Reset the UHH, OHCI and EHCI modules */ - omap_uhh_writel(isc, OMAP_USBHOST_UHH_SYSCONFIG, 0x0002); - while ((omap_uhh_readl(isc, OMAP_USBHOST_UHH_SYSSTATUS) & 0x07) == 0x00) { + omap_uhh_write_4(isc, OMAP_USBHOST_UHH_SYSCONFIG, 0x0002); + while ((omap_uhh_read_4(isc, OMAP_USBHOST_UHH_SYSSTATUS) & 0x07) == 0x00) { /* Sleep for a tick */ pause("USBRESET", 1); @@ -624,8 +624,8 @@ omap_ehci_fini(struct omap_ehci_softc *i timeout = (100 * hz) / 1000; /* Reset the TLL module */ - omap_tll_writel(isc, OMAP_USBTLL_SYSCONFIG, 0x0002); - while ((omap_tll_readl(isc, OMAP_USBTLL_SYSSTATUS) & (0x01)) == 0x00) { + omap_tll_write_4(isc, OMAP_USBTLL_SYSCONFIG, 0x0002); + while ((omap_tll_read_4(isc, OMAP_USBTLL_SYSSTATUS) & (0x01)) == 0x00) { /* Sleep for a tick */ pause("USBRESET", 1); From owner-svn-src-projects@FreeBSD.ORG Mon Feb 13 11:36:42 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B3246106568B; Mon, 13 Feb 2012 11:36:42 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A21458FC14; Mon, 13 Feb 2012 11:36:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1DBag4T040655; Mon, 13 Feb 2012 11:36:42 GMT (envelope-from pho@svn.freebsd.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1DBag4K040653; Mon, 13 Feb 2012 11:36:42 GMT (envelope-from pho@svn.freebsd.org) Message-Id: <201202131136.q1DBag4K040653@svn.freebsd.org> From: Peter Holm Date: Mon, 13 Feb 2012 11:36:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231583 - projects/stress2/misc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Feb 2012 11:36:42 -0000 Author: pho Date: Mon Feb 13 11:36:42 2012 New Revision: 231583 URL: http://svn.freebsd.org/changeset/base/231583 Log: Added two snapshot scenarios that also fails for the non SUJ case. Added: projects/stress2/misc/suj26.sh (contents, props changed) projects/stress2/misc/suj27.sh (contents, props changed) Added: projects/stress2/misc/suj26.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/stress2/misc/suj26.sh Mon Feb 13 11:36:42 2012 (r231583) @@ -0,0 +1,85 @@ +#!/bin/sh + +# +# Copyright (c) 2012 Peter Holm +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +# Variation of suj16.sh with more test programs and VM pressure. + +# Deadlocks seen. + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint +mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart + +mdconfig -a -t swap -s 2g -u $mdstart || exit 1 +bsdlabel -w md$mdstart auto + +[ $# -eq 1 ] && opt="$1" || opt="-j" +newfs $opt md${mdstart}$part > /dev/null 2>&1 + +mount /dev/md${mdstart}$part $mntpoint +chmod 777 $mntpoint + +export runRUNTIME=30m +export RUNDIR=$mntpoint/stressX +export creatINCARNATIONS=2 + +export TESTPROGS=" +testcases/creat/creat +testcases/mkdir/mkdir +testcases/swap/swap +" +su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > /dev/null 2>&1 & +rpid=$! +mdstart2=$((mdstart + 1)) +mntpoint2=${mntpoint}2 +[ -d $mntpoint2 ] || mkdir $mntpoint2 +mount | grep $mntpoint2 | grep -q /dev/md && umount -f $mntpoint2 +mdconfig -l | grep -q md$mdstart2 && mdconfig -d -u $mdstart2 +while kill -0 $rpid 2> /dev/null; do + rm -f /mnt/.snap/suj26 + { mksnap_ffs /mnt /mnt/.snap/suj26 || continue; } 2>&1 | \ + grep -v "Resource temporarily unavailable" + [ ! -s /mnt/.snap/suj26 ] && continue + mdconfig -a -t vnode -f /mnt/.snap/suj26 -u $mdstart2 -o readonly + mount -r /dev/md$mdstart2 $mntpoint2 + + ls -l $mntpoint2 > /dev/null + + umount $mntpoint2 + mdconfig -d -u $mdstart2 +done +wait + +while mount | grep $mntpoint | grep -q /dev/md; do + umount $mntpoint || sleep 1 +done +mdconfig -d -u $mdstart Added: projects/stress2/misc/suj27.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/stress2/misc/suj27.sh Mon Feb 13 11:36:42 2012 (r231583) @@ -0,0 +1,86 @@ +#!/bin/sh + +# +# Copyright (c) 2012 Peter Holm +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +# Variation of suj26.sh with one more test program. + +# Deadlocks seen. + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint +mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart + +mdconfig -a -t swap -s 2g -u $mdstart || exit 1 +bsdlabel -w md$mdstart auto + +[ $# -eq 1 ] && opt="$1" || opt="-j" +newfs $opt md${mdstart}$part > /dev/null 2>&1 + +mount /dev/md${mdstart}$part $mntpoint +chmod 777 $mntpoint + +export runRUNTIME=30m +export RUNDIR=$mntpoint/stressX +export creatINCARNATIONS=2 + +export TESTPROGS=" +testcases/creat/creat +testcases/mkdir/mkdir +testcases/rw/rw +testcases/swap/swap +" +su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' > /dev/null 2>&1 & +rpid=$! +mdstart2=$((mdstart + 1)) +mntpoint2=${mntpoint}2 +[ -d $mntpoint2 ] || mkdir $mntpoint2 +mount | grep $mntpoint2 | grep -q /dev/md && umount -f $mntpoint2 +mdconfig -l | grep -q md$mdstart2 && mdconfig -d -u $mdstart2 +while kill -0 $rpid 2> /dev/null; do + rm -f /mnt/.snap/suj27 + { mksnap_ffs /mnt /mnt/.snap/suj27 || continue; } 2>&1 | \ + grep -v "Resource temporarily unavailable" + [ ! -s /mnt/.snap/suj27 ] && continue + mdconfig -a -t vnode -f /mnt/.snap/suj27 -u $mdstart2 -o readonly + mount -r /dev/md$mdstart2 $mntpoint2 + + ls -l $mntpoint2 > /dev/null + + umount $mntpoint2 + mdconfig -d -u $mdstart2 +done +wait + +while mount | grep $mntpoint | grep -q /dev/md; do + umount $mntpoint || sleep 1 +done +mdconfig -d -u $mdstart From owner-svn-src-projects@FreeBSD.ORG Tue Feb 14 09:11:55 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 631591065670; Tue, 14 Feb 2012 09:11:55 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 343B58FC13; Tue, 14 Feb 2012 09:11:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1E9BtpH087916; Tue, 14 Feb 2012 09:11:55 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1E9Bswb087915; Tue, 14 Feb 2012 09:11:54 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202140911.q1E9Bswb087915@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Tue, 14 Feb 2012 09:11:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231645 - projects/multi-fibv6/9 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Feb 2012 09:11:55 -0000 Author: bz Date: Tue Feb 14 09:11:54 2012 New Revision: 231645 URL: http://svn.freebsd.org/changeset/base/231645 Log: Create a working branch to prepare the merge of multi-FIB IPv6 support to stable/9. Sponsored by: Cisco Systems, Inc. Added: - copied from r231644, stable/9/ Directory Properties: projects/multi-fibv6/9/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Tue Feb 14 09:12:09 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1E5A31065674; Tue, 14 Feb 2012 09:12:09 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E43988FC14; Tue, 14 Feb 2012 09:12:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1E9C8gF087962; Tue, 14 Feb 2012 09:12:08 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1E9C8oe087961; Tue, 14 Feb 2012 09:12:08 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202140912.q1E9C8oe087961@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Tue, 14 Feb 2012 09:12:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231646 - projects/multi-fibv6/8 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Feb 2012 09:12:09 -0000 Author: bz Date: Tue Feb 14 09:12:08 2012 New Revision: 231646 URL: http://svn.freebsd.org/changeset/base/231646 Log: Create a working branch to prepare the merge of multi-FIB IPv6 support to stable/8. Sponsored by: Cisco Systems, Inc. Added: - copied from r231645, stable/8/ Directory Properties: projects/multi-fibv6/8/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Tue Feb 14 11:37:04 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EEA18106566C; Tue, 14 Feb 2012 11:37:04 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DD7318FC18; Tue, 14 Feb 2012 11:37:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1EBb4fB096286; Tue, 14 Feb 2012 11:37:04 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1EBb4hQ096283; Tue, 14 Feb 2012 11:37:04 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202141137.q1EBb4hQ096283@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Tue, 14 Feb 2012 11:37:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231670 - projects/multi-fibv6/head/contrib/netcat X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Feb 2012 11:37:05 -0000 Author: bz Date: Tue Feb 14 11:37:04 2012 New Revision: 231670 URL: http://svn.freebsd.org/changeset/base/231670 Log: Switch from setfib(2) moving the process to a different FIB to setsockopt(2) with SO_SETFIB to only tag the socket with the right FIB. That way either setfib(1) or nc -V can be used depending on what wants to be achieved. This also allows nc to be used for simple regression testing of either feature. Sponsored by: Cisco Systems, Inc. Modified: projects/multi-fibv6/head/contrib/netcat/netcat.c Modified: projects/multi-fibv6/head/contrib/netcat/netcat.c ============================================================================== --- projects/multi-fibv6/head/contrib/netcat/netcat.c Tue Feb 14 11:24:24 2012 (r231669) +++ projects/multi-fibv6/head/contrib/netcat/netcat.c Tue Feb 14 11:37:04 2012 (r231670) @@ -605,8 +605,10 @@ remote_connect(const char *host, const c #endif if (rtableid) { - if (setfib(rtableid) == -1) - err(1, "setfib"); + if (setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid, + sizeof(rtableid)) == -1) + err(1, "setsockopt(.., SO_SETFIB, %u, ..)", + rtableid); } /* Bind to a local port or source address if specified. */ @@ -678,8 +680,11 @@ local_listen(char *host, char *port, str continue; if (rtableid) { - if (setfib(rtableid) == -1) - err(1, "setfib"); + ret = setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid, + sizeof(rtableid)); + if (ret == -1) + err(1, "setsockopt(.., SO_SETFIB, %u, ..)", + rtableid); } ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); From owner-svn-src-projects@FreeBSD.ORG Tue Feb 14 11:51:32 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AC1AB106566B; Tue, 14 Feb 2012 11:51:32 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 99F848FC1C; Tue, 14 Feb 2012 11:51:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1EBpWBQ096752; Tue, 14 Feb 2012 11:51:32 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1EBpWUW096749; Tue, 14 Feb 2012 11:51:32 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202141151.q1EBpWUW096749@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Tue, 14 Feb 2012 11:51:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231671 - projects/multi-fibv6/head/sys/netinet6 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Feb 2012 11:51:32 -0000 Author: bz Date: Tue Feb 14 11:51:32 2012 New Revision: 231671 URL: http://svn.freebsd.org/changeset/base/231671 Log: Allow to provide a hint to in6_selectsrc() for the interface using the return ifnet double pointer. Pass that hint down to in6_selectif() to be used when i) the default FIB is queried and ii) route lookup fails because the network is not present (i.e. someone deleted the connected subnet). This hint should not be generally used from anywhere outside the neighbor discovery code. We just make use of it from nd6_ns_output(). Extend the nd6_na_output() interface by a nd6_na_output_fib() version and pass the FIB number from the NS mbuf on to NA to allow the new mbuf to inherit the FIB tag and a later lookup from ip6_output() to succeed in the aformentioned example case. Provide a wrapper function for the old public interface also used from CARP but mark it with BURN_BRIDGES to cleanup in HEAD after MFC. Sponsored by: Cisco Systems, Inc. Modified: projects/multi-fibv6/head/sys/netinet6/in6_src.c projects/multi-fibv6/head/sys/netinet6/nd6_nbr.c Modified: projects/multi-fibv6/head/sys/netinet6/in6_src.c ============================================================================== --- projects/multi-fibv6/head/sys/netinet6/in6_src.c Tue Feb 14 11:37:04 2012 (r231670) +++ projects/multi-fibv6/head/sys/netinet6/in6_src.c Tue Feb 14 11:51:32 2012 (r231671) @@ -131,7 +131,8 @@ static int selectroute __P((struct socka struct ip6_moptions *, struct route_in6 *, struct ifnet **, struct rtentry **, int, int)); static int in6_selectif __P((struct sockaddr_in6 *, struct ip6_pktopts *, - struct ip6_moptions *, struct route_in6 *ro, struct ifnet **, int)); + struct ip6_moptions *, struct route_in6 *ro, struct ifnet **, + struct ifnet *, int)); static struct in6_addrpolicy *lookup_addrsel_policy(struct sockaddr_in6 *); @@ -182,7 +183,7 @@ in6_selectsrc(struct sockaddr_in6 *dstso struct ifnet **ifpp, struct in6_addr *srcp) { struct in6_addr dst, tmp; - struct ifnet *ifp = NULL; + struct ifnet *ifp = NULL, *oifp = NULL; struct in6_ifaddr *ia = NULL, *ia_best = NULL; struct in6_pktinfo *pi = NULL; int dst_scope = -1, best_scope = -1, best_matchlen = -1; @@ -195,8 +196,18 @@ in6_selectsrc(struct sockaddr_in6 *dstso KASSERT(srcp != NULL, ("%s: srcp is NULL", __func__)); dst = dstsock->sin6_addr; /* make a copy for local operation */ - if (ifpp) + if (ifpp) { + /* + * Save a possibly passed in ifp for in6_selectsrc. Only + * neighbor discovery code should use this feature, where + * we may know the interface but not the FIB number holding + * the connected subnet in case someone deleted it from the + * default FIB and we need to check the interface. + */ + if (*ifpp != NULL) + oifp = *ifpp; *ifpp = NULL; + } if (inp != NULL) { INP_LOCK_ASSERT(inp); @@ -217,7 +228,7 @@ in6_selectsrc(struct sockaddr_in6 *dstso struct in6_ifaddr *ia6; /* get the outgoing interface */ - if ((error = in6_selectif(dstsock, opts, mopts, ro, &ifp, + if ((error = in6_selectif(dstsock, opts, mopts, ro, &ifp, oifp, (inp != NULL) ? inp->inp_inc.inc_fibnum : RT_DEFAULT_FIB)) != 0) return (error); @@ -283,7 +294,7 @@ in6_selectsrc(struct sockaddr_in6 *dstso * the outgoing interface and the destination address. */ /* get the outgoing interface */ - if ((error = in6_selectif(dstsock, opts, mopts, ro, &ifp, + if ((error = in6_selectif(dstsock, opts, mopts, ro, &ifp, oifp, (inp != NULL) ? inp->inp_inc.inc_fibnum : RT_DEFAULT_FIB)) != 0) return (error); @@ -750,12 +761,14 @@ selectroute(struct sockaddr_in6 *dstsock static int in6_selectif(struct sockaddr_in6 *dstsock, struct ip6_pktopts *opts, struct ip6_moptions *mopts, struct route_in6 *ro, struct ifnet **retifp, - int fibnum) + struct ifnet *oifp, int fibnum) { int error; struct route_in6 sro; struct rtentry *rt = NULL; + KASSERT(retifp != NULL, ("%s: retifp is NULL", __func__)); + if (ro == NULL) { bzero(&sro, sizeof(sro)); ro = &sro; @@ -765,6 +778,11 @@ in6_selectif(struct sockaddr_in6 *dstsoc &rt, 1, fibnum)) != 0) { if (ro == &sro && rt && rt == sro.ro_rt) RTFREE(rt); + /* Help ND. See oifp comment in in6_selectsrc(). */ + if (oifp != NULL && fibnum == RT_DEFAULT_FIB) { + *retifp = oifp; + error = 0; + } return (error); } Modified: projects/multi-fibv6/head/sys/netinet6/nd6_nbr.c ============================================================================== --- projects/multi-fibv6/head/sys/netinet6/nd6_nbr.c Tue Feb 14 11:37:04 2012 (r231670) +++ projects/multi-fibv6/head/sys/netinet6/nd6_nbr.c Tue Feb 14 11:51:32 2012 (r231671) @@ -85,6 +85,8 @@ static void nd6_dad_timer(struct dadq *) static void nd6_dad_ns_output(struct dadq *, struct ifaddr *); static void nd6_dad_ns_input(struct ifaddr *); static void nd6_dad_na_input(struct ifaddr *); +static void nd6_na_output_fib(struct ifnet *, const struct in6_addr *, + const struct in6_addr *, u_long, int, struct sockaddr *, u_int); VNET_DEFINE(int, dad_ignore_ns) = 0; /* ignore NS in DAD - specwise incorrect*/ VNET_DEFINE(int, dad_maxtry) = 15; /* max # of *tries* to transmit DAD packet */ @@ -344,19 +346,20 @@ nd6_ns_input(struct mbuf *m, int off, in in6_all = in6addr_linklocal_allnodes; if (in6_setscope(&in6_all, ifp, NULL) != 0) goto bad; - nd6_na_output(ifp, &in6_all, &taddr6, + nd6_na_output_fib(ifp, &in6_all, &taddr6, ((anycast || proxy || !tlladdr) ? 0 : ND_NA_FLAG_OVERRIDE) | - rflag, tlladdr, proxy ? (struct sockaddr *)&proxydl : NULL); + rflag, tlladdr, proxy ? (struct sockaddr *)&proxydl : NULL, + M_GETFIB(m)); goto freeit; } nd6_cache_lladdr(ifp, &saddr6, lladdr, lladdrlen, ND_NEIGHBOR_SOLICIT, 0); - nd6_na_output(ifp, &saddr6, &taddr6, + nd6_na_output_fib(ifp, &saddr6, &taddr6, ((anycast || proxy || !tlladdr) ? 0 : ND_NA_FLAG_OVERRIDE) | rflag | ND_NA_FLAG_SOLICITED, tlladdr, - proxy ? (struct sockaddr *)&proxydl : NULL); + proxy ? (struct sockaddr *)&proxydl : NULL, M_GETFIB(m)); freeit: if (ifa != NULL) ifa_free(ifa); @@ -508,14 +511,16 @@ nd6_ns_output(struct ifnet *ifp, const s int error; struct sockaddr_in6 dst_sa; struct in6_addr src_in; + struct ifnet *oifp; bzero(&dst_sa, sizeof(dst_sa)); dst_sa.sin6_family = AF_INET6; dst_sa.sin6_len = sizeof(dst_sa); dst_sa.sin6_addr = ip6->ip6_dst; + oifp = ifp; error = in6_selectsrc(&dst_sa, NULL, - NULL, &ro, NULL, NULL, &src_in); + NULL, &ro, NULL, &oifp, &src_in); if (error) { char ip6buf[INET6_ADDRSTRLEN]; nd6log((LOG_DEBUG, @@ -957,13 +962,14 @@ nd6_na_input(struct mbuf *m, int off, in * tlladdr - 1 if include target link-layer address * sdl0 - sockaddr_dl (= proxy NA) or NULL */ -void -nd6_na_output(struct ifnet *ifp, const struct in6_addr *daddr6_0, +static void +nd6_na_output_fib(struct ifnet *ifp, const struct in6_addr *daddr6_0, const struct in6_addr *taddr6, u_long flags, int tlladdr, - struct sockaddr *sdl0) + struct sockaddr *sdl0, u_int fibnum) { struct mbuf *m; struct m_tag *mtag; + struct ifnet *oifp; struct ip6_hdr *ip6; struct nd_neighbor_advert *nd_na; struct ip6_moptions im6o; @@ -999,6 +1005,7 @@ nd6_na_output(struct ifnet *ifp, const s if (m == NULL) return; m->m_pkthdr.rcvif = NULL; + M_SETFIB(m, fibnum); if (IN6_IS_ADDR_MULTICAST(&daddr6)) { m->m_flags |= M_MCAST; @@ -1040,7 +1047,8 @@ nd6_na_output(struct ifnet *ifp, const s * Select a source whose scope is the same as that of the dest. */ bcopy(&dst_sa, &ro.ro_dst, sizeof(dst_sa)); - error = in6_selectsrc(&dst_sa, NULL, NULL, &ro, NULL, NULL, &src); + oifp = ifp; + error = in6_selectsrc(&dst_sa, NULL, NULL, &ro, NULL, &oifp, &src); if (error) { char ip6buf[INET6_ADDRSTRLEN]; nd6log((LOG_DEBUG, "nd6_na_output: source can't be " @@ -1129,6 +1137,18 @@ nd6_na_output(struct ifnet *ifp, const s return; } +#ifndef BURN_BRIDGES +void +nd6_na_output(struct ifnet *ifp, const struct in6_addr *daddr6_0, + const struct in6_addr *taddr6, u_long flags, int tlladdr, + struct sockaddr *sdl0) +{ + + nd6_na_output_fib(ifp, daddr6_0, taddr6, flags, tlladdr, sdl0, + RT_DEFAULT_FIB); +} +#endif + caddr_t nd6_ifptomac(struct ifnet *ifp) { From owner-svn-src-projects@FreeBSD.ORG Tue Feb 14 22:06:09 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 83D24106564A; Tue, 14 Feb 2012 22:06:09 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6F6758FC18; Tue, 14 Feb 2012 22:06:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1EM69jA021319; Tue, 14 Feb 2012 22:06:09 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1EM69AI021318; Tue, 14 Feb 2012 22:06:09 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202142206.q1EM69AI021318@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Tue, 14 Feb 2012 22:06:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231715 - in projects/multi-fibv6/9: contrib/netcat contrib/pf/pfctl etc/rc.d share/man/man4 sys/contrib/pf/net sys/fs/nfsclient sys/kern sys/net sys/netinet sys/netinet/ipfw sys/netine... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Feb 2012 22:06:09 -0000 Author: bz Date: Tue Feb 14 22:06:08 2012 New Revision: 231715 URL: http://svn.freebsd.org/changeset/base/231715 Log: Initial backport of the multi-FIB IPv6 changes from HEAD. Sponsored by: Cisco Systems, Inc. Modified: projects/multi-fibv6/9/contrib/netcat/netcat.c projects/multi-fibv6/9/contrib/pf/pfctl/parse.y projects/multi-fibv6/9/etc/rc.d/routing projects/multi-fibv6/9/share/man/man4/faith.4 projects/multi-fibv6/9/sys/contrib/pf/net/pf.c projects/multi-fibv6/9/sys/contrib/pf/net/pf_ioctl.c projects/multi-fibv6/9/sys/contrib/pf/net/pf_lb.c projects/multi-fibv6/9/sys/contrib/pf/net/pf_norm.c projects/multi-fibv6/9/sys/contrib/pf/net/pfvar.h projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clport.c projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clvfsops.c projects/multi-fibv6/9/sys/kern/uipc_socket.c projects/multi-fibv6/9/sys/net/flowtable.c projects/multi-fibv6/9/sys/net/if_faith.c projects/multi-fibv6/9/sys/net/route.c projects/multi-fibv6/9/sys/net/route.h projects/multi-fibv6/9/sys/netinet/in.c projects/multi-fibv6/9/sys/netinet/ipfw/ip_fw2.c projects/multi-fibv6/9/sys/netinet/sctp_os_bsd.h projects/multi-fibv6/9/sys/netinet/tcp_subr.c projects/multi-fibv6/9/sys/netinet6/icmp6.c projects/multi-fibv6/9/sys/netinet6/in6.c projects/multi-fibv6/9/sys/netinet6/in6_gif.c projects/multi-fibv6/9/sys/netinet6/in6_ifattach.c projects/multi-fibv6/9/sys/netinet6/in6_mcast.c projects/multi-fibv6/9/sys/netinet6/in6_rmx.c projects/multi-fibv6/9/sys/netinet6/in6_src.c projects/multi-fibv6/9/sys/netinet6/in6_var.h projects/multi-fibv6/9/sys/netinet6/ip6_forward.c projects/multi-fibv6/9/sys/netinet6/ip6_input.c projects/multi-fibv6/9/sys/netinet6/ip6_output.c projects/multi-fibv6/9/sys/netinet6/ip6_var.h projects/multi-fibv6/9/sys/netinet6/nd6.c projects/multi-fibv6/9/sys/netinet6/nd6_nbr.c projects/multi-fibv6/9/sys/netinet6/nd6_rtr.c projects/multi-fibv6/9/sys/netinet6/raw_ip6.c projects/multi-fibv6/9/sys/netipsec/ipsec_output.c projects/multi-fibv6/9/sys/nfs/bootp_subr.c projects/multi-fibv6/9/sys/nfsclient/nfs_vfsops.c projects/multi-fibv6/9/usr.bin/netstat/route.c Modified: projects/multi-fibv6/9/contrib/netcat/netcat.c ============================================================================== --- projects/multi-fibv6/9/contrib/netcat/netcat.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/contrib/netcat/netcat.c Tue Feb 14 22:06:08 2012 (r231715) @@ -605,8 +605,10 @@ remote_connect(const char *host, const c #endif if (rtableid) { - if (setfib(rtableid) == -1) - err(1, "setfib"); + if (setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid, + sizeof(rtableid)) == -1) + err(1, "setsockopt(.., SO_SETFIB, %u, ..)", + rtableid); } /* Bind to a local port or source address if specified. */ @@ -678,8 +680,11 @@ local_listen(char *host, char *port, str continue; if (rtableid) { - if (setfib(rtableid) == -1) - err(1, "setfib"); + ret = setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid, + sizeof(rtableid)); + if (ret == -1) + err(1, "setsockopt(.., SO_SETFIB, %u, ..)", + rtableid); } ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); Modified: projects/multi-fibv6/9/contrib/pf/pfctl/parse.y ============================================================================== --- projects/multi-fibv6/9/contrib/pf/pfctl/parse.y Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/contrib/pf/pfctl/parse.y Tue Feb 14 22:06:08 2012 (r231715) @@ -33,6 +33,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#ifdef __FreeBSD__ +#include +#endif #include #include #include @@ -335,6 +338,7 @@ int expand_skip_interface(struct node_ int check_rulestate(int); int getservice(char *); int rule_label(struct pf_rule *, char *); +int rt_tableid_max(void); void mv_rules(struct pf_ruleset *, struct pf_ruleset *); void decide_address_family(struct node_host *, sa_family_t *); @@ -1174,7 +1178,7 @@ scrub_opt : NODF { scrub_opts.randomid = 1; } | RTABLE NUMBER { - if ($2 < 0 /* || $2 > RT_TABLEID_MAX */) { + if ($2 < 0 || $2 > rt_tableid_max()) { yyerror("invalid rtable id"); YYERROR; } @@ -1322,7 +1326,7 @@ antispoof_opt : label { antispoof_opts.label = $1; } | RTABLE NUMBER { - if ($2 < 0 /* || $2 > RT_TABLEID_MAX */ ) { + if ($2 < 0 || $2 > rt_tableid_max()) { yyerror("invalid rtable id"); YYERROR; } @@ -2361,7 +2365,7 @@ filter_opt : USER uids { filter_opts.prob = 1; } | RTABLE NUMBER { - if ($2 < 0 /* || $2 > RT_TABLEID_MAX */ ) { + if ($2 < 0 || $2 > rt_tableid_max()) { yyerror("invalid rtable id"); YYERROR; } @@ -4190,7 +4194,7 @@ tagged : /* empty */ { $$.neg = 0; $$. rtable : /* empty */ { $$ = -1; } | RTABLE NUMBER { - if ($2 < 0 /* || $2 > RT_TABLEID_MAX */ ) { + if ($2 < 0 || $2 > rt_tableid_max()) { yyerror("invalid rtable id"); YYERROR; } @@ -6051,3 +6055,23 @@ pfctl_load_anchors(int dev, struct pfctl return (0); } + +int +rt_tableid_max(void) +{ +#ifdef __FreeBSD__ + int fibs; + size_t l = sizeof(fibs); + + if (sysctlbyname("net.fibs", &fibs, &l, NULL, 0) == -1) + fibs = 16; /* XXX RT_MAXFIBS, at least limit it some. */ + /* + * As the OpenBSD code only compares > and not >= we need to adjust + * here given we only accept values of 0..n and want to avoid #ifdefs + * in the grammer. + */ + return (fibs - 1); +#else + return (RT_TABLEID_MAX); +#endif +} Modified: projects/multi-fibv6/9/etc/rc.d/routing ============================================================================== --- projects/multi-fibv6/9/etc/rc.d/routing Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/etc/rc.d/routing Tue Feb 14 22:06:08 2012 (r231715) @@ -137,12 +137,22 @@ static_inet() static_inet6() { - local _action i + local _action i fibs _action=$1 + # get the number of FIBs supported. + fibs=`sysctl -n net.fibs` + : ${fibs:=1} + # disallow "internal" addresses to appear on the wire - route ${_action} -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject - route ${_action} -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject + i=0 + while test ${i} -lt ${fibs}; do + setfib -F ${i} route ${_action} \ + -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject + setfib -F ${i} route ${_action} \ + -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject + i=$((i + 1)) + done case ${ipv6_defaultrouter} in [Nn][Oo] | '') @@ -214,8 +224,14 @@ static_inet6() # for the host case, you will allow to omit the identifiers. # Under this configuration, the packets will go to the default # interface. - route ${_action} -inet6 fe80:: -prefixlen 10 ::1 -reject - route ${_action} -inet6 ff02:: -prefixlen 16 ::1 -reject + i=0 + while test ${i} -lt ${fibs}; do + setfib -F ${i} route ${_action} \ + -inet6 fe80:: -prefixlen 10 ::1 -reject + setfib -F ${i} route ${_action} \ + -inet6 ff02:: -prefixlen 16 ::1 -reject + i=$((i + 1)) + done case ${ipv6_default_interface} in '') Modified: projects/multi-fibv6/9/share/man/man4/faith.4 ============================================================================== --- projects/multi-fibv6/9/share/man/man4/faith.4 Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/share/man/man4/faith.4 Tue Feb 14 22:06:08 2012 (r231715) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 10, 1999 +.Dd January 23, 2012 .Dt FAITH 4 .Os .Sh NAME @@ -58,7 +58,7 @@ variable in .Xr rc.conf 5 . .Pp Special action will be taken when IPv6 TCP traffic is seen on a router, -and the routing table suggests to route it to the +and the default routing table suggests to route it to the .Nm interface. In this case, the packet will be accepted by the router, Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pf.c ============================================================================== --- projects/multi-fibv6/9/sys/contrib/pf/net/pf.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/contrib/pf/net/pf.c Tue Feb 14 22:06:08 2012 (r231715) @@ -320,7 +320,7 @@ u_int8_t pf_get_wscale(struct mbuf *, u_int16_t pf_get_mss(struct mbuf *, int, u_int16_t, sa_family_t); u_int16_t pf_calc_mss(struct pf_addr *, sa_family_t, - u_int16_t); + int, u_int16_t); void pf_set_rt_ifp(struct pf_state *, struct pf_addr *); int pf_check_proto_cksum(struct mbuf *, int, int, @@ -3137,7 +3137,7 @@ pf_get_mss(struct mbuf *m, int off, u_in } u_int16_t -pf_calc_mss(struct pf_addr *addr, sa_family_t af, u_int16_t offer) +pf_calc_mss(struct pf_addr *addr, sa_family_t af, int rtableid, u_int16_t offer) { #ifdef INET struct sockaddr_in *dst; @@ -3166,11 +3166,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam dst->sin_len = sizeof(*dst); dst->sin_addr = addr->v4; #ifdef __FreeBSD__ -#ifdef RTF_PRCLONING - rtalloc_ign(&ro, (RTF_CLONING | RTF_PRCLONING)); -#else /* !RTF_PRCLONING */ - in_rtalloc_ign(&ro, 0, 0); -#endif + in_rtalloc_ign(&ro, 0, rtableid); #else /* ! __FreeBSD__ */ rtalloc_noclone(&ro, NO_CLONING); #endif @@ -3186,12 +3182,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam dst6->sin6_len = sizeof(*dst6); dst6->sin6_addr = addr->v6; #ifdef __FreeBSD__ -#ifdef RTF_PRCLONING - rtalloc_ign((struct route *)&ro6, - (RTF_CLONING | RTF_PRCLONING)); -#else /* !RTF_PRCLONING */ - rtalloc_ign((struct route *)&ro6, 0); -#endif + in6_rtalloc_ign(&ro6, 0, rtableid); #else /* ! __FreeBSD__ */ rtalloc_noclone((struct route *)&ro6, NO_CLONING); #endif @@ -3532,14 +3523,14 @@ pf_test_rule(struct pf_rule **rm, struct else if (r->proto && r->proto != pd->proto) r = r->skip[PF_SKIP_PROTO].ptr; else if (PF_MISMATCHAW(&r->src.addr, saddr, af, - r->src.neg, kif)) + r->src.neg, kif, M_GETFIB(m))) r = r->skip[PF_SKIP_SRC_ADDR].ptr; /* tcp/udp only. port_op always 0 in other cases */ else if (r->src.port_op && !pf_match_port(r->src.port_op, r->src.port[0], r->src.port[1], sport)) r = r->skip[PF_SKIP_SRC_PORT].ptr; else if (PF_MISMATCHAW(&r->dst.addr, daddr, af, - r->dst.neg, NULL)) + r->dst.neg, NULL, M_GETFIB(m))) r = r->skip[PF_SKIP_DST_ADDR].ptr; /* tcp/udp only. port_op always 0 in other cases */ else if (r->dst.port_op && !pf_match_port(r->dst.port_op, @@ -3988,9 +3979,10 @@ pf_create_state(struct pf_rule *r, struc } s->src.seqhi = htonl(arc4random()); /* Find mss option */ + int rtid = M_GETFIB(m); mss = pf_get_mss(m, off, th->th_off, pd->af); - mss = pf_calc_mss(pd->src, pd->af, mss); - mss = pf_calc_mss(pd->dst, pd->af, mss); + mss = pf_calc_mss(pd->src, pd->af, rtid, mss); + mss = pf_calc_mss(pd->dst, pd->af, rtid, mss); s->src.mss = mss; #ifdef __FreeBSD__ pf_send_tcp(NULL, r, pd->af, pd->dst, pd->src, th->th_dport, @@ -4072,10 +4064,10 @@ pf_test_fragment(struct pf_rule **rm, in else if (r->proto && r->proto != pd->proto) r = r->skip[PF_SKIP_PROTO].ptr; else if (PF_MISMATCHAW(&r->src.addr, pd->src, af, - r->src.neg, kif)) + r->src.neg, kif, M_GETFIB(m))) r = r->skip[PF_SKIP_SRC_ADDR].ptr; else if (PF_MISMATCHAW(&r->dst.addr, pd->dst, af, - r->dst.neg, NULL)) + r->dst.neg, NULL, M_GETFIB(m))) r = r->skip[PF_SKIP_DST_ADDR].ptr; else if (r->tos && !(r->tos == pd->tos)) r = TAILQ_NEXT(r, entries); @@ -5677,7 +5669,8 @@ pf_pull_hdr(struct mbuf *m, int off, voi } int -pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kif *kif) +pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kif *kif, + int rtableid) { #ifdef __FreeBSD__ #ifdef RADIX_MPATH @@ -5751,13 +5744,21 @@ pf_routable(struct pf_addr *addr, sa_fam goto out; #ifdef __FreeBSD__ -/* XXX MRT not always INET */ /* stick with table 0 though */ + switch (af) { +#ifdef INET6 + case AF_INET6: + in6_rtalloc_ign(&ro, 0, rtableid); + break; +#endif #ifdef INET - if (af == AF_INET) - in_rtalloc_ign((struct route *)&ro, 0, 0); - else + case AF_INET: + in_rtalloc_ign((struct route *)&ro, 0, rtableid); + break; #endif - rtalloc_ign((struct route *)&ro, 0); + default: + rtalloc_ign((struct route *)&ro, 0); /* No/default FIB. */ + break; + } #else /* ! __FreeBSD__ */ rtalloc_noclone((struct route *)&ro, NO_CLONING); #endif @@ -5803,7 +5804,8 @@ out: } int -pf_rtlabel_match(struct pf_addr *addr, sa_family_t af, struct pf_addr_wrap *aw) +pf_rtlabel_match(struct pf_addr *addr, sa_family_t af, struct pf_addr_wrap *aw, + int rtableid) { struct sockaddr_in *dst; #ifdef INET6 @@ -5835,16 +5837,21 @@ pf_rtlabel_match(struct pf_addr *addr, s } #ifdef __FreeBSD__ -# ifdef RTF_PRCLONING - rtalloc_ign((struct route *)&ro, (RTF_CLONING|RTF_PRCLONING)); -# else /* !RTF_PRCLONING */ + switch (af) { +#ifdef INET6 + case AF_INET6: + in6_rtalloc_ign(&ro, 0, rtableid); + break; +#endif #ifdef INET - if (af == AF_INET) - in_rtalloc_ign((struct route *)&ro, 0, 0); - else + case AF_INET: + in_rtalloc_ign((struct route *)&ro, 0, rtableid); + break; #endif + default: rtalloc_ign((struct route *)&ro, 0); -# endif + break; + } #else /* ! __FreeBSD__ */ rtalloc_noclone((struct route *)&ro, NO_CLONING); #endif @@ -5927,7 +5934,7 @@ pf_route(struct mbuf **m, struct pf_rule if (r->rt == PF_FASTROUTE) { #ifdef __FreeBSD__ - in_rtalloc(ro, 0); + in_rtalloc_ign(ro, 0, M_GETFIB(m0)); #else rtalloc(ro); #endif @@ -6893,7 +6900,7 @@ done: ("pf: dropping packet with ip options\n")); } - if ((s && s->tag) || r->rtableid) + if ((s && s->tag) || r->rtableid >= 0) #ifdef __FreeBSD__ pf_tag_packet(m, s ? s->tag : 0, r->rtableid, pd.pf_mtag); #else @@ -7437,7 +7444,7 @@ done: ("pf: dropping packet with dangerous v6 headers\n")); } - if ((s && s->tag) || r->rtableid) + if ((s && s->tag) || r->rtableid >= 0) #ifdef __FreeBSD__ pf_tag_packet(m, s ? s->tag : 0, r->rtableid, pd.pf_mtag); #else Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- projects/multi-fibv6/9/sys/contrib/pf/net/pf_ioctl.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/contrib/pf/net/pf_ioctl.c Tue Feb 14 22:06:08 2012 (r231715) @@ -1754,7 +1754,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a } #ifdef __FreeBSD__ /* ROUTING */ - if (rule->rtableid > 0 && rule->rtableid > rt_numfibs) + if (rule->rtableid > 0 && rule->rtableid >= rt_numfibs) #else if (rule->rtableid > 0 && !rtable_exists(rule->rtableid)) #endif @@ -2035,7 +2035,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a if (newrule->rtableid > 0 && #ifdef __FreeBSD__ /* ROUTING */ - newrule->rtableid > rt_numfibs) + newrule->rtableid >= rt_numfibs) #else !rtable_exists(newrule->rtableid)) #endif Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pf_lb.c ============================================================================== --- projects/multi-fibv6/9/sys/contrib/pf/net/pf_lb.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/contrib/pf/net/pf_lb.c Tue Feb 14 22:06:08 2012 (r231715) @@ -261,7 +261,7 @@ pf_match_translation(struct pf_pdesc *pd else if (r->proto && r->proto != pd->proto) r = r->skip[PF_SKIP_PROTO].ptr; else if (PF_MISMATCHAW(&src->addr, saddr, pd->af, - src->neg, kif)) + src->neg, kif, M_GETFIB(m))) r = r->skip[src == &r->src ? PF_SKIP_SRC_ADDR : PF_SKIP_DST_ADDR].ptr; else if (src->port_op && !pf_match_port(src->port_op, @@ -269,10 +269,11 @@ pf_match_translation(struct pf_pdesc *pd r = r->skip[src == &r->src ? PF_SKIP_SRC_PORT : PF_SKIP_DST_PORT].ptr; else if (dst != NULL && - PF_MISMATCHAW(&dst->addr, daddr, pd->af, dst->neg, NULL)) + PF_MISMATCHAW(&dst->addr, daddr, pd->af, dst->neg, NULL, + M_GETFIB(m))) r = r->skip[PF_SKIP_DST_ADDR].ptr; else if (xdst != NULL && PF_MISMATCHAW(xdst, daddr, pd->af, - 0, NULL)) + 0, NULL, M_GETFIB(m))) r = TAILQ_NEXT(r, entries); else if (dst != NULL && dst->port_op && !pf_match_port(dst->port_op, dst->port[0], Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pf_norm.c ============================================================================== --- projects/multi-fibv6/9/sys/contrib/pf/net/pf_norm.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/contrib/pf/net/pf_norm.c Tue Feb 14 22:06:08 2012 (r231715) @@ -1163,11 +1163,11 @@ pf_normalize_ip(struct mbuf **m0, int di r = r->skip[PF_SKIP_PROTO].ptr; else if (PF_MISMATCHAW(&r->src.addr, (struct pf_addr *)&h->ip_src.s_addr, AF_INET, - r->src.neg, kif)) + r->src.neg, kif, M_GETFIB(m))) r = r->skip[PF_SKIP_SRC_ADDR].ptr; else if (PF_MISMATCHAW(&r->dst.addr, (struct pf_addr *)&h->ip_dst.s_addr, AF_INET, - r->dst.neg, NULL)) + r->dst.neg, NULL, M_GETFIB(m))) r = r->skip[PF_SKIP_DST_ADDR].ptr; #ifdef __FreeBSD__ else if (r->match_tag && !pf_match_tag(m, r, &tag, pd->pf_mtag)) @@ -1428,11 +1428,11 @@ pf_normalize_ip6(struct mbuf **m0, int d #endif else if (PF_MISMATCHAW(&r->src.addr, (struct pf_addr *)&h->ip6_src, AF_INET6, - r->src.neg, kif)) + r->src.neg, kif, M_GETFIB(m))) r = r->skip[PF_SKIP_SRC_ADDR].ptr; else if (PF_MISMATCHAW(&r->dst.addr, (struct pf_addr *)&h->ip6_dst, AF_INET6, - r->dst.neg, NULL)) + r->dst.neg, NULL, M_GETFIB(m))) r = r->skip[PF_SKIP_DST_ADDR].ptr; else break; @@ -1593,13 +1593,13 @@ pf_normalize_tcp(int dir, struct pfi_kif else if (r->proto && r->proto != pd->proto) r = r->skip[PF_SKIP_PROTO].ptr; else if (PF_MISMATCHAW(&r->src.addr, pd->src, af, - r->src.neg, kif)) + r->src.neg, kif, M_GETFIB(m))) r = r->skip[PF_SKIP_SRC_ADDR].ptr; else if (r->src.port_op && !pf_match_port(r->src.port_op, r->src.port[0], r->src.port[1], th->th_sport)) r = r->skip[PF_SKIP_SRC_PORT].ptr; else if (PF_MISMATCHAW(&r->dst.addr, pd->dst, af, - r->dst.neg, NULL)) + r->dst.neg, NULL, M_GETFIB(m))) r = r->skip[PF_SKIP_DST_ADDR].ptr; else if (r->dst.port_op && !pf_match_port(r->dst.port_op, r->dst.port[0], r->dst.port[1], th->th_dport)) Modified: projects/multi-fibv6/9/sys/contrib/pf/net/pfvar.h ============================================================================== --- projects/multi-fibv6/9/sys/contrib/pf/net/pfvar.h Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/contrib/pf/net/pfvar.h Tue Feb 14 22:06:08 2012 (r231715) @@ -402,14 +402,18 @@ extern struct mtx pf_task_mtx; #endif /* PF_INET6_ONLY */ #endif /* PF_INET_INET6 */ -#define PF_MISMATCHAW(aw, x, af, neg, ifp) \ +/* + * XXX callers not FIB-aware in our version of pf yet. + * OpenBSD fixed it later it seems, 2010/05/07 13:33:16 claudio. + */ +#define PF_MISMATCHAW(aw, x, af, neg, ifp, rtid) \ ( \ (((aw)->type == PF_ADDR_NOROUTE && \ - pf_routable((x), (af), NULL)) || \ + pf_routable((x), (af), NULL, (rtid))) || \ (((aw)->type == PF_ADDR_URPFFAILED && (ifp) != NULL && \ - pf_routable((x), (af), (ifp))) || \ + pf_routable((x), (af), (ifp), (rtid))) || \ ((aw)->type == PF_ADDR_RTLABEL && \ - !pf_rtlabel_match((x), (af), (aw))) || \ + !pf_rtlabel_match((x), (af), (aw), (rtid))) || \ ((aw)->type == PF_ADDR_TABLE && \ !pfr_match_addr((aw)->p.tbl, (x), (af))) || \ ((aw)->type == PF_ADDR_DYNIFTL && \ @@ -1977,8 +1981,10 @@ int pf_normalize_tcp_stateful(struct mbu u_int32_t pf_state_expires(const struct pf_state *); void pf_purge_expired_fragments(void); -int pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kif *); -int pf_rtlabel_match(struct pf_addr *, sa_family_t, struct pf_addr_wrap *); +int pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kif *, + int); +int pf_rtlabel_match(struct pf_addr *, sa_family_t, struct pf_addr_wrap *, + int); #ifdef __FreeBSD__ int pf_socket_lookup(int, struct pf_pdesc *, struct inpcb *); #else Modified: projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clport.c ============================================================================== --- projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clport.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clport.c Tue Feb 14 22:06:08 2012 (r231715) @@ -976,7 +976,8 @@ nfscl_getmyip(struct nfsmount *nmp, int sad.sin_len = sizeof (struct sockaddr_in); sad.sin_addr.s_addr = sin->sin_addr.s_addr; CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); - rt = rtalloc1((struct sockaddr *)&sad, 0, 0UL); + rt = rtalloc1_fib((struct sockaddr *)&sad, 0, 0UL, + curthread->td_proc->p_fibnum); if (rt != NULL) { if (rt->rt_ifp != NULL && rt->rt_ifa != NULL && @@ -1001,7 +1002,8 @@ nfscl_getmyip(struct nfsmount *nmp, int sad6.sin6_len = sizeof (struct sockaddr_in6); sad6.sin6_addr = sin6->sin6_addr; CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); - rt = rtalloc1((struct sockaddr *)&sad6, 0, 0UL); + rt = rtalloc1_fib((struct sockaddr *)&sad6, 0, 0UL, + curthread->td_proc->p_fibnum); if (rt != NULL) { if (rt->rt_ifp != NULL && rt->rt_ifa != NULL && Modified: projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clvfsops.c ============================================================================== --- projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clvfsops.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/fs/nfsclient/nfs_clvfsops.c Tue Feb 14 22:06:08 2012 (r231715) @@ -459,10 +459,10 @@ nfs_mountroot(struct mount *mp) sin.sin_len = sizeof(sin); /* XXX MRT use table 0 for this sort of thing */ CURVNET_SET(TD_TO_VNET(td)); - error = rtrequest(RTM_ADD, (struct sockaddr *)&sin, + error = rtrequest_fib(RTM_ADD, (struct sockaddr *)&sin, (struct sockaddr *)&nd->mygateway, (struct sockaddr *)&mask, - RTF_UP | RTF_GATEWAY, NULL); + RTF_UP | RTF_GATEWAY, NULL, RT_DEFAULT_FIB); CURVNET_RESTORE(); if (error) panic("nfs_mountroot: RTM_ADD: %d", error); Modified: projects/multi-fibv6/9/sys/kern/uipc_socket.c ============================================================================== --- projects/multi-fibv6/9/sys/kern/uipc_socket.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/kern/uipc_socket.c Tue Feb 14 22:06:08 2012 (r231715) @@ -392,6 +392,7 @@ socreate(int dom, struct socket **aso, i so->so_type = type; so->so_cred = crhold(cred); if ((prp->pr_domain->dom_family == PF_INET) || + (prp->pr_domain->dom_family == PF_INET6) || (prp->pr_domain->dom_family == PF_ROUTE)) so->so_fibnum = td->td_proc->p_fibnum; else @@ -2498,12 +2499,13 @@ sosetopt(struct socket *so, struct socko case SO_SETFIB: error = sooptcopyin(sopt, &optval, sizeof optval, sizeof optval); - if (optval < 0 || optval > rt_numfibs) { + if (optval < 0 || optval >= rt_numfibs) { error = EINVAL; goto bad; } if (so->so_proto != NULL && ((so->so_proto->pr_domain->dom_family == PF_INET) || + (so->so_proto->pr_domain->dom_family == PF_INET6) || (so->so_proto->pr_domain->dom_family == PF_ROUTE))) { so->so_fibnum = optval; /* Note: ignore error */ Modified: projects/multi-fibv6/9/sys/net/flowtable.c ============================================================================== --- projects/multi-fibv6/9/sys/net/flowtable.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/net/flowtable.c Tue Feb 14 22:06:08 2012 (r231715) @@ -373,7 +373,7 @@ SYSCTL_VNET_PROC(_net_inet_flowtable, OI #ifndef RADIX_MPATH static void -in_rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum) +rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum) { rtalloc_ign_fib(ro, 0, fibnum); @@ -1312,7 +1312,7 @@ flowtable_alloc(char *name, int nentry, #ifdef RADIX_MPATH ft->ft_rtalloc = rtalloc_mpath_fib; #else - ft->ft_rtalloc = in_rtalloc_ign_wrapper; + ft->ft_rtalloc = rtalloc_ign_wrapper; #endif if (flags & FL_PCPU) { ft->ft_lock = flowtable_pcpu_lock; Modified: projects/multi-fibv6/9/sys/net/if_faith.c ============================================================================== --- projects/multi-fibv6/9/sys/net/if_faith.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/net/if_faith.c Tue Feb 14 22:06:08 2012 (r231715) @@ -338,7 +338,7 @@ faithprefix(in6) sin6.sin6_family = AF_INET6; sin6.sin6_len = sizeof(struct sockaddr_in6); sin6.sin6_addr = *in6; - rt = rtalloc1((struct sockaddr *)&sin6, 0, 0UL); + rt = in6_rtalloc1((struct sockaddr *)&sin6, 0, 0UL, RT_DEFAULT_FIB); if (rt && rt->rt_ifp && rt->rt_ifp->if_type == IFT_FAITH && (rt->rt_ifp->if_flags & IFF_UP) != 0) ret = 1; Modified: projects/multi-fibv6/9/sys/net/route.c ============================================================================== --- projects/multi-fibv6/9/sys/net/route.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/net/route.c Tue Feb 14 22:06:08 2012 (r231715) @@ -35,6 +35,7 @@ ***********************************************************************/ #include "opt_inet.h" +#include "opt_inet6.h" #include "opt_route.h" #include "opt_mrouting.h" #include "opt_mpath.h" @@ -72,7 +73,11 @@ SYSCTL_UINT(_net, OID_AUTO, fibs, CTLFLA /* * Allow the boot code to allow LESS than RT_MAXFIBS to be used. * We can't do more because storage is statically allocated for now. - * (for compatibility reasons.. this will change). + * (for compatibility reasons.. this will change. When this changes, code should + * be refactored to protocol independent parts and protocol dependent parts, + * probably hanging of domain(9) specific storage to not need the full + * fib * af RNH allocation etc. but allow tuning the number of tables per + * address family). */ TUNABLE_INT("net.fibs", &rt_numfibs); @@ -82,6 +87,9 @@ TUNABLE_INT("net.fibs", &rt_numfibs); * changes for the FIB of the caller when adding a new set of addresses * to an interface. XXX this is a shotgun aproach to a problem that needs * a more fine grained solution.. that will come. + * XXX also has the problems getting the FIB from curthread which will not + * always work given the fib can be overridden and prefixes can be added + * from the network stack context. */ u_int rt_add_addr_allfibs = 1; SYSCTL_UINT(_net, OID_AUTO, add_addr_allfibs, CTLFLAG_RW, @@ -196,27 +204,23 @@ vnet_route_init(const void *unused __unu V_rtzone = uma_zcreate("rtentry", sizeof(struct rtentry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); for (dom = domains; dom; dom = dom->dom_next) { - if (dom->dom_rtattach) { - for (table = 0; table < rt_numfibs; table++) { - if ( (fam = dom->dom_family) == AF_INET || - table == 0) { - /* for now only AF_INET has > 1 table */ - /* XXX MRT - * rtattach will be also called - * from vfs_export.c but the - * offset will be 0 - * (only for AF_INET and AF_INET6 - * which don't need it anyhow) - */ - rnh = rt_tables_get_rnh_ptr(table, fam); - if (rnh == NULL) - panic("%s: rnh NULL", __func__); - dom->dom_rtattach((void **)rnh, - dom->dom_rtoffset); - } else { - break; - } - } + if (dom->dom_rtattach == NULL) + continue; + + for (table = 0; table < rt_numfibs; table++) { + fam = dom->dom_family; + if (table != 0 && fam != AF_INET6 && fam != AF_INET) + break; + + /* + * XXX MRT rtattach will be also called from + * vfs_export.c but the offset will be 0 (only for + * AF_INET and AF_INET6 which don't need it anyhow). + */ + rnh = rt_tables_get_rnh_ptr(table, fam); + if (rnh == NULL) + panic("%s: rnh NULL", __func__); + dom->dom_rtattach((void **)rnh, dom->dom_rtoffset); } } } @@ -233,20 +237,19 @@ vnet_route_uninit(const void *unused __u struct radix_node_head **rnh; for (dom = domains; dom; dom = dom->dom_next) { - if (dom->dom_rtdetach) { - for (table = 0; table < rt_numfibs; table++) { - if ( (fam = dom->dom_family) == AF_INET || - table == 0) { - /* For now only AF_INET has > 1 tbl. */ - rnh = rt_tables_get_rnh_ptr(table, fam); - if (rnh == NULL) - panic("%s: rnh NULL", __func__); - dom->dom_rtdetach((void **)rnh, - dom->dom_rtoffset); - } else { - break; - } - } + if (dom->dom_rtdetach == NULL) + continue; + + for (table = 0; table < rt_numfibs; table++) { + fam = dom->dom_family; + + if (table != 0 && fam != AF_INET6 && fam != AF_INET) + break; + + rnh = rt_tables_get_rnh_ptr(table, fam); + if (rnh == NULL) + panic("%s: rnh NULL", __func__); + dom->dom_rtdetach((void **)rnh, dom->dom_rtoffset); } } } @@ -274,7 +277,8 @@ sys_setfib(struct thread *td, struct set void rtalloc(struct route *ro) { - rtalloc_ign_fib(ro, 0UL, 0); + + rtalloc_ign_fib(ro, 0UL, RT_DEFAULT_FIB); } void @@ -294,7 +298,7 @@ rtalloc_ign(struct route *ro, u_long ign RTFREE(rt); ro->ro_rt = NULL; } - ro->ro_rt = rtalloc1_fib(&ro->ro_dst, 1, ignore, 0); + ro->ro_rt = rtalloc1_fib(&ro->ro_dst, 1, ignore, RT_DEFAULT_FIB); if (ro->ro_rt) RT_UNLOCK(ro->ro_rt); } @@ -324,7 +328,8 @@ rtalloc_ign_fib(struct route *ro, u_long struct rtentry * rtalloc1(struct sockaddr *dst, int report, u_long ignflags) { - return (rtalloc1_fib(dst, report, ignflags, 0)); + + return (rtalloc1_fib(dst, report, ignflags, RT_DEFAULT_FIB)); } struct rtentry * @@ -339,8 +344,15 @@ rtalloc1_fib(struct sockaddr *dst, int r int needlock; KASSERT((fibnum < rt_numfibs), ("rtalloc1_fib: bad fibnum")); - if (dst->sa_family != AF_INET) /* Only INET supports > 1 fib now */ - fibnum = 0; + switch (dst->sa_family) { + case AF_INET6: + case AF_INET: + /* We support multiple FIBs. */ + break; + default: + fibnum = RT_DEFAULT_FIB; + break; + } rnh = rt_tables_get_rnh(fibnum, dst->sa_family); newrt = NULL; if (rnh == NULL) @@ -486,7 +498,8 @@ rtredirect(struct sockaddr *dst, int flags, struct sockaddr *src) { - rtredirect_fib(dst, gateway, netmask, flags, src, 0); + + rtredirect_fib(dst, gateway, netmask, flags, src, RT_DEFAULT_FIB); } void @@ -617,7 +630,8 @@ out: int rtioctl(u_long req, caddr_t data) { - return (rtioctl_fib(req, data, 0)); + + return (rtioctl_fib(req, data, RT_DEFAULT_FIB)); } /* @@ -647,7 +661,8 @@ rtioctl_fib(u_long req, caddr_t data, u_ struct ifaddr * ifa_ifwithroute(int flags, struct sockaddr *dst, struct sockaddr *gateway) { - return (ifa_ifwithroute_fib(flags, dst, gateway, 0)); + + return (ifa_ifwithroute_fib(flags, dst, gateway, RT_DEFAULT_FIB)); } struct ifaddr * @@ -732,7 +747,9 @@ rtrequest(int req, int flags, struct rtentry **ret_nrt) { - return (rtrequest_fib(req, dst, gateway, netmask, flags, ret_nrt, 0)); + + return (rtrequest_fib(req, dst, gateway, netmask, flags, ret_nrt, + RT_DEFAULT_FIB)); } int @@ -771,7 +788,8 @@ rtrequest_fib(int req, int rt_getifa(struct rt_addrinfo *info) { - return (rt_getifa_fib(info, 0)); + + return (rt_getifa_fib(info, RT_DEFAULT_FIB)); } /* @@ -1029,8 +1047,16 @@ rtrequest1_fib(int req, struct rt_addrin #define senderr(x) { error = x ; goto bad; } KASSERT((fibnum < rt_numfibs), ("rtrequest1_fib: bad fibnum")); - if (dst->sa_family != AF_INET) /* Only INET supports > 1 fib now */ - fibnum = 0; + switch (dst->sa_family) { + case AF_INET6: + case AF_INET: + /* We support multiple FIBs. */ + break; + default: + fibnum = RT_DEFAULT_FIB; + break; + } + /* * Find the correct routing tree to use for this Address Family */ @@ -1136,8 +1162,7 @@ rtrequest1_fib(int req, struct rt_addrin rt->rt_flags = RTF_UP | flags; rt->rt_fibnum = fibnum; /* - * Add the gateway. Possibly re-malloc-ing the storage for it - * + * Add the gateway. Possibly re-malloc-ing the storage for it. */ RT_LOCK(rt); if ((error = rt_setgate(rt, dst, gateway)) != 0) { @@ -1186,12 +1211,15 @@ rtrequest1_fib(int req, struct rt_addrin #ifdef FLOWTABLE rt0 = NULL; - /* XXX - * "flow-table" only support IPv4 at the moment. - * XXX-BZ as of r205066 it would support IPv6. - */ + /* "flow-table" only supports IPv6 and IPv4 at the moment. */ + switch (dst->sa_family) { +#ifdef INET6 + case AF_INET6: +#endif #ifdef INET - if (dst->sa_family == AF_INET) { + case AF_INET: +#endif +#if defined(INET6) || defined(INET) rn = rnh->rnh_matchaddr(dst, rnh); if (rn && ((rn->rn_flags & RNF_ROOT) == 0)) { struct sockaddr *mask; @@ -1230,9 +1258,9 @@ rtrequest1_fib(int req, struct rt_addrin } } } +#endif/* INET6 || INET */ } -#endif -#endif +#endif /* FLOWTABLE */ /* XXX mtu manipulation will be done in rnh_addaddr -- itojun */ rn = rnh->rnh_addaddr(ndst, netmask, rnh, rt->rt_nodes); @@ -1254,9 +1282,18 @@ rtrequest1_fib(int req, struct rt_addrin } #ifdef FLOWTABLE else if (rt0 != NULL) { + switch (dst->sa_family) { +#ifdef INET6 + case AF_INET6: + flowtable_route_flush(V_ip6_ft, rt0); + break; +#endif #ifdef INET - flowtable_route_flush(V_ip_ft, rt0); + case AF_INET: + flowtable_route_flush(V_ip_ft, rt0); + break; #endif + } RTFREE(rt0); } #endif @@ -1388,8 +1425,17 @@ rtinit1(struct ifaddr *ifa, int cmd, int dst = ifa->ifa_addr; netmask = ifa->ifa_netmask; } - if ( dst->sa_family != AF_INET) - fibnum = 0; + if (dst->sa_len == 0) + return(EINVAL); + switch (dst->sa_family) { + case AF_INET6: + case AF_INET: + /* We support multiple FIBs. */ + break; + default: + fibnum = RT_DEFAULT_FIB; + break; + } if (fibnum == -1) { if (rt_add_addr_allfibs == 0 && cmd == (int)RTM_ADD) { startfib = endfib = curthread->td_proc->p_fibnum; @@ -1402,8 +1448,6 @@ rtinit1(struct ifaddr *ifa, int cmd, int startfib = fibnum; endfib = fibnum; } - if (dst->sa_len == 0) - return(EINVAL); /* * If it's a delete, check that if it exists, @@ -1427,9 +1471,7 @@ rtinit1(struct ifaddr *ifa, int cmd, int * Now go through all the requested tables (fibs) and do the * requested action. Realistically, this will either be fib 0 * for protocols that don't do multiple tables or all the - * tables for those that do. XXX For this version only AF_INET. - * When that changes code should be refactored to protocol - * independent parts and protocol dependent parts. + * tables for those that do. */ for ( fibnum = startfib; fibnum <= endfib; fibnum++) { if (cmd == RTM_DELETE) { @@ -1569,12 +1611,14 @@ rtinit1(struct ifaddr *ifa, int cmd, int return (error); } +#ifndef BURN_BRIDGES /* special one for inet internal use. may not use. */ int rtinit_fib(struct ifaddr *ifa, int cmd, int flags) { return (rtinit1(ifa, cmd, flags, -1)); } +#endif /* * Set up a routing table entry, normally @@ -1584,7 +1628,7 @@ int rtinit(struct ifaddr *ifa, int cmd, int flags) { struct sockaddr *dst; - int fib = 0; + int fib = RT_DEFAULT_FIB; if (flags & RTF_HOST) { dst = ifa->ifa_dstaddr; @@ -1592,7 +1636,12 @@ rtinit(struct ifaddr *ifa, int cmd, int dst = ifa->ifa_addr; } - if (dst->sa_family == AF_INET) + switch (dst->sa_family) { + case AF_INET6: + case AF_INET: + /* We do support multiple FIBs. */ fib = -1; + break; + } return (rtinit1(ifa, cmd, flags, fib)); } Modified: projects/multi-fibv6/9/sys/net/route.h ============================================================================== --- projects/multi-fibv6/9/sys/net/route.h Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/net/route.h Tue Feb 14 22:06:08 2012 (r231715) @@ -111,6 +111,7 @@ struct rt_metrics { #endif #endif +#define RT_DEFAULT_FIB 0 /* Explicitly mark fib=0 restricted cases */ extern u_int rt_numfibs; /* number fo usable routing tables */ /* * XXX kernel function pointer `rt_output' is visible to applications. @@ -405,8 +406,10 @@ void rtredirect(struct sockaddr *, stru int rtrequest(int, struct sockaddr *, struct sockaddr *, struct sockaddr *, int, struct rtentry **); +#ifndef BURN_BRIDGES /* defaults to "all" FIBs */ int rtinit_fib(struct ifaddr *, int, int); +#endif /* XXX MRT NEW VERSIONS THAT USE FIBs * For now the protocol indepedent versions are the same as the AF_INET ones Modified: projects/multi-fibv6/9/sys/netinet/in.c ============================================================================== --- projects/multi-fibv6/9/sys/netinet/in.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/netinet/in.c Tue Feb 14 22:06:08 2012 (r231715) @@ -938,7 +938,7 @@ in_ifinit(struct ifnet *ifp, struct in_i bzero(&ia_ro, sizeof(ia_ro)); *((struct sockaddr_in *)(&ia_ro.ro_dst)) = ia->ia_addr; - rtalloc_ign_fib(&ia_ro, 0, 0); + rtalloc_ign_fib(&ia_ro, 0, RT_DEFAULT_FIB); if ((ia_ro.ro_rt != NULL) && (ia_ro.ro_rt->rt_ifp != NULL) && (ia_ro.ro_rt->rt_ifp == V_loif)) { RT_LOCK(ia_ro.ro_rt); Modified: projects/multi-fibv6/9/sys/netinet/ipfw/ip_fw2.c ============================================================================== --- projects/multi-fibv6/9/sys/netinet/ipfw/ip_fw2.c Tue Feb 14 21:48:46 2012 (r231714) +++ projects/multi-fibv6/9/sys/netinet/ipfw/ip_fw2.c Tue Feb 14 22:06:08 2012 (r231715) @@ -496,7 +496,7 @@ search_ip6_addr_net (struct in6_addr * i } static int -verify_path6(struct in6_addr *src, struct ifnet *ifp) +verify_path6(struct in6_addr *src, struct ifnet *ifp, u_int fib) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Feb 15 06:49:51 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9A059106566B; Wed, 15 Feb 2012 06:49:51 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 80B458FC17; Wed, 15 Feb 2012 06:49:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1F6npsH041818; Wed, 15 Feb 2012 06:49:51 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1F6np39041797; Wed, 15 Feb 2012 06:49:51 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202150649.q1F6np39041797@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Wed, 15 Feb 2012 06:49:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231744 - in projects/multi-fibv6/8: contrib/netcat etc etc/rc.d share/man/man4 sys/contrib/pf/net sys/fs/nfsclient sys/kern sys/net sys/netinet sys/netinet/ipfw sys/netinet6 sys/netips... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Feb 2012 06:49:51 -0000 Author: bz Date: Wed Feb 15 06:49:50 2012 New Revision: 231744 URL: http://svn.freebsd.org/changeset/base/231744 Log: Initial backport of the multi-FIB IPv6 changes from HEAD. Sponsored by: Cisco Systems, Inc. Modified: projects/multi-fibv6/8/contrib/netcat/netcat.c projects/multi-fibv6/8/etc/network.subr projects/multi-fibv6/8/etc/rc.d/network_ipv6 projects/multi-fibv6/8/share/man/man4/faith.4 projects/multi-fibv6/8/sys/contrib/pf/net/pf.c projects/multi-fibv6/8/sys/contrib/pf/net/pf_ioctl.c projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clport.c projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clvfsops.c projects/multi-fibv6/8/sys/kern/uipc_socket.c projects/multi-fibv6/8/sys/net/flowtable.c projects/multi-fibv6/8/sys/net/if_faith.c projects/multi-fibv6/8/sys/net/route.c projects/multi-fibv6/8/sys/net/route.h projects/multi-fibv6/8/sys/netinet/in.c projects/multi-fibv6/8/sys/netinet/ipfw/ip_fw2.c projects/multi-fibv6/8/sys/netinet/sctp_os_bsd.h projects/multi-fibv6/8/sys/netinet/tcp_subr.c projects/multi-fibv6/8/sys/netinet6/icmp6.c projects/multi-fibv6/8/sys/netinet6/in6.c projects/multi-fibv6/8/sys/netinet6/in6_gif.c projects/multi-fibv6/8/sys/netinet6/in6_ifattach.c projects/multi-fibv6/8/sys/netinet6/in6_mcast.c projects/multi-fibv6/8/sys/netinet6/in6_rmx.c projects/multi-fibv6/8/sys/netinet6/in6_src.c projects/multi-fibv6/8/sys/netinet6/in6_var.h projects/multi-fibv6/8/sys/netinet6/ip6_forward.c projects/multi-fibv6/8/sys/netinet6/ip6_input.c projects/multi-fibv6/8/sys/netinet6/ip6_output.c projects/multi-fibv6/8/sys/netinet6/ip6_var.h projects/multi-fibv6/8/sys/netinet6/nd6.c projects/multi-fibv6/8/sys/netinet6/nd6_nbr.c projects/multi-fibv6/8/sys/netinet6/nd6_rtr.c projects/multi-fibv6/8/sys/netinet6/raw_ip6.c projects/multi-fibv6/8/sys/netipsec/ipsec_output.c projects/multi-fibv6/8/sys/nfs/bootp_subr.c projects/multi-fibv6/8/sys/nfsclient/nfs_vfsops.c projects/multi-fibv6/8/usr.bin/netstat/route.c Modified: projects/multi-fibv6/8/contrib/netcat/netcat.c ============================================================================== --- projects/multi-fibv6/8/contrib/netcat/netcat.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/contrib/netcat/netcat.c Wed Feb 15 06:49:50 2012 (r231744) @@ -605,8 +605,10 @@ remote_connect(const char *host, const c #endif if (rtableid) { - if (setfib(rtableid) == -1) - err(1, "setfib"); + if (setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid, + sizeof(rtableid)) == -1) + err(1, "setsockopt(.., SO_SETFIB, %u, ..)", + rtableid); } /* Bind to a local port or source address if specified. */ @@ -678,8 +680,11 @@ local_listen(char *host, char *port, str continue; if (rtableid) { - if (setfib(rtableid) == -1) - err(1, "setfib"); + ret = setsockopt(s, SOL_SOCKET, SO_SETFIB, &rtableid, + sizeof(rtableid)); + if (ret == -1) + err(1, "setsockopt(.., SO_SETFIB, %u, ..)", + rtableid); } ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); Modified: projects/multi-fibv6/8/etc/network.subr ============================================================================== --- projects/multi-fibv6/8/etc/network.subr Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/etc/network.subr Wed Feb 15 06:49:50 2012 (r231744) @@ -1125,16 +1125,33 @@ network6_default_interface_setup() ;; esac + # Get the number of FIBs supported. + fibs=`sysctl -n net.fibs` + : ${fibs:=1} + # Disallow unicast packets without outgoing scope identifiers, # or route such packets to a "default" interface, if it is specified. route add -inet6 fe80:: -prefixlen 10 ::1 -reject case ${ipv6_default_interface} in [Nn][Oo] | '') - route add -inet6 ff02:: -prefixlen 16 ::1 -reject + i=0 + while test ${i} -lt ${fibs}; do + setfib -F ${i} \ + route add -inet6 ff02:: -prefixlen 16 ::1 -reject + i=$((i + 1)) + done ;; *) laddr=`network6_getladdr ${ipv6_default_interface}` + # Only add the laddr route to the default FIB and a reject + # route to all others. route add -inet6 ff02:: ${laddr} -prefixlen 16 -interface + i=1 + while test ${i} -lt ${fibs}; do + setfib -F ${i} \ + route add -inet6 ff02:: -prefixlen 16 ::1 -reject + i=$((i + 1)) + done # Disable installing the default interface with the # case net.inet6.ip6.forwarding=0 and Modified: projects/multi-fibv6/8/etc/rc.d/network_ipv6 ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/network_ipv6 Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/etc/rc.d/network_ipv6 Wed Feb 15 06:49:50 2012 (r231744) @@ -41,9 +41,21 @@ start_cmd="network_ipv6_start" network_ipv6_start() { - # disallow "internal" addresses to appear on the wire - route add -inet6 ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject - route add -inet6 ::0.0.0.0 -prefixlen 96 ::1 -reject + local fibs i + + # Get the number of FIBs supported. + fibs=`sysctl -n net.fibs` + : ${fibs:=1} + + # disallow "internal" addresses to appear on the wire + i=0 + while test ${i} -lt ${fibs}; do + setfib -F ${i} route add -inet6 \ + ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject + setfib -F ${i} route add -inet6 \ + ::0.0.0.0 -prefixlen 96 ::1 -reject + i=$((i + 1)) + done case ${ipv6_network_interfaces} in [Aa][Uu][Tt][Oo]) Modified: projects/multi-fibv6/8/share/man/man4/faith.4 ============================================================================== --- projects/multi-fibv6/8/share/man/man4/faith.4 Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/share/man/man4/faith.4 Wed Feb 15 06:49:50 2012 (r231744) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 10, 1999 +.Dd January 23, 2012 .Dt FAITH 4 .Os .Sh NAME @@ -58,7 +58,7 @@ variable in .Xr rc.conf 5 . .Pp Special action will be taken when IPv6 TCP traffic is seen on a router, -and the routing table suggests to route it to the +and the default routing table suggests to route it to the .Nm interface. In this case, the packet will be accepted by the router, Modified: projects/multi-fibv6/8/sys/contrib/pf/net/pf.c ============================================================================== --- projects/multi-fibv6/8/sys/contrib/pf/net/pf.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/contrib/pf/net/pf.c Wed Feb 15 06:49:50 2012 (r231744) @@ -3197,11 +3197,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam dst->sin_len = sizeof(*dst); dst->sin_addr = addr->v4; #ifdef __FreeBSD__ -#ifdef RTF_PRCLONING - rtalloc_ign(&ro, (RTF_CLONING | RTF_PRCLONING)); -#else /* !RTF_PRCLONING */ - in_rtalloc_ign(&ro, 0, 0); -#endif + in_rtalloc_ign(&ro, 0, RT_DEFAULT_FIB); #else /* ! __FreeBSD__ */ rtalloc_noclone(&ro, NO_CLONING); #endif @@ -3217,12 +3213,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam dst6->sin6_len = sizeof(*dst6); dst6->sin6_addr = addr->v6; #ifdef __FreeBSD__ -#ifdef RTF_PRCLONING - rtalloc_ign((struct route *)&ro6, - (RTF_CLONING | RTF_PRCLONING)); -#else /* !RTF_PRCLONING */ - rtalloc_ign((struct route *)&ro6, 0); -#endif + in6_rtalloc_ign(&ro6, 0, RT_DEFAULT_FIB); #else /* ! __FreeBSD__ */ rtalloc_noclone((struct route *)&ro6, NO_CLONING); #endif @@ -6134,9 +6125,11 @@ pf_routable(struct pf_addr *addr, sa_fam #ifdef __FreeBSD__ /* XXX MRT not always INET */ /* stick with table 0 though */ if (af == AF_INET) - in_rtalloc_ign((struct route *)&ro, 0, 0); + in_rtalloc_ign((struct route *)&ro, 0, RT_DEFAULT_FIB); +#ifdef INET6 else - rtalloc_ign((struct route *)&ro, 0); + in6_rtalloc_ign(&ro, 0, RT_DEFAULT_FIB); +#endif #else /* ! __FreeBSD__ */ rtalloc_noclone((struct route *)&ro, NO_CLONING); #endif @@ -6212,14 +6205,12 @@ pf_rtlabel_match(struct pf_addr *addr, s } #ifdef __FreeBSD__ -# ifdef RTF_PRCLONING - rtalloc_ign((struct route *)&ro, (RTF_CLONING|RTF_PRCLONING)); -# else /* !RTF_PRCLONING */ if (af == AF_INET) - in_rtalloc_ign((struct route *)&ro, 0, 0); + in_rtalloc_ign((struct route *)&ro, 0, RT_DEFAULT_FIB); +#ifdef INET6 else - rtalloc_ign((struct route *)&ro, 0); -# endif + in6_rtalloc_ign(&ro, 0, RT_DEFAULT_FIB); +#endif #else /* ! __FreeBSD__ */ rtalloc_noclone((struct route *)&ro, NO_CLONING); #endif Modified: projects/multi-fibv6/8/sys/contrib/pf/net/pf_ioctl.c ============================================================================== --- projects/multi-fibv6/8/sys/contrib/pf/net/pf_ioctl.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/contrib/pf/net/pf_ioctl.c Wed Feb 15 06:49:50 2012 (r231744) @@ -1531,7 +1531,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a } #ifdef __FreeBSD__ /* ROUTING */ - if (rule->rtableid > 0 && rule->rtableid > rt_numfibs) + if (rule->rtableid > 0 && rule->rtableid >= rt_numfibs) #else if (rule->rtableid > 0 && !rtable_exists(rule->rtableid)) #endif @@ -1794,7 +1794,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a if (newrule->rtableid > 0 && #ifdef __FreeBSD__ /* ROUTING */ - newrule->rtableid > rt_numfibs) + newrule->rtableid >= rt_numfibs) #else !rtable_exists(newrule->rtableid)) #endif Modified: projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clport.c ============================================================================== --- projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clport.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clport.c Wed Feb 15 06:49:50 2012 (r231744) @@ -946,7 +946,8 @@ nfscl_getmyip(struct nfsmount *nmp, int sad.sin_len = sizeof (struct sockaddr_in); sad.sin_addr.s_addr = sin->sin_addr.s_addr; CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); - rt = rtalloc1((struct sockaddr *)&sad, 0, 0UL); + rt = rtalloc1_fib((struct sockaddr *)&sad, 0, 0UL, + curthread->td_proc->p_fibnum); if (rt != NULL) { if (rt->rt_ifp != NULL && rt->rt_ifa != NULL && @@ -971,7 +972,8 @@ nfscl_getmyip(struct nfsmount *nmp, int sad6.sin6_len = sizeof (struct sockaddr_in6); sad6.sin6_addr = sin6->sin6_addr; CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); - rt = rtalloc1((struct sockaddr *)&sad6, 0, 0UL); + rt = rtalloc1_fib((struct sockaddr *)&sad6, 0, 0UL, + curthread->td_proc->p_fibnum); if (rt != NULL) { if (rt->rt_ifp != NULL && rt->rt_ifa != NULL && Modified: projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clvfsops.c ============================================================================== --- projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clvfsops.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/fs/nfsclient/nfs_clvfsops.c Wed Feb 15 06:49:50 2012 (r231744) @@ -455,10 +455,10 @@ nfs_mountroot(struct mount *mp) sin.sin_len = sizeof(sin); /* XXX MRT use table 0 for this sort of thing */ CURVNET_SET(TD_TO_VNET(td)); - error = rtrequest(RTM_ADD, (struct sockaddr *)&sin, + error = rtrequest_fib(RTM_ADD, (struct sockaddr *)&sin, (struct sockaddr *)&nd->mygateway, (struct sockaddr *)&mask, - RTF_UP | RTF_GATEWAY, NULL); + RTF_UP | RTF_GATEWAY, NULL, RT_DEFAULT_FIB); CURVNET_RESTORE(); if (error) panic("nfs_mountroot: RTM_ADD: %d", error); Modified: projects/multi-fibv6/8/sys/kern/uipc_socket.c ============================================================================== --- projects/multi-fibv6/8/sys/kern/uipc_socket.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/kern/uipc_socket.c Wed Feb 15 06:49:50 2012 (r231744) @@ -383,6 +383,7 @@ socreate(int dom, struct socket **aso, i so->so_type = type; so->so_cred = crhold(cred); if ((prp->pr_domain->dom_family == PF_INET) || + (prp->pr_domain->dom_family == PF_INET6) || (prp->pr_domain->dom_family == PF_ROUTE)) so->so_fibnum = td->td_proc->p_fibnum; else @@ -2492,12 +2493,13 @@ sosetopt(struct socket *so, struct socko case SO_SETFIB: error = sooptcopyin(sopt, &optval, sizeof optval, sizeof optval); - if (optval < 0 || optval > rt_numfibs) { + if (optval < 0 || optval >= rt_numfibs) { error = EINVAL; goto bad; } if (so->so_proto != NULL && ((so->so_proto->pr_domain->dom_family == PF_INET) || + (so->so_proto->pr_domain->dom_family == PF_INET6) || (so->so_proto->pr_domain->dom_family == PF_ROUTE))) { so->so_fibnum = optval; /* Note: ignore error */ Modified: projects/multi-fibv6/8/sys/net/flowtable.c ============================================================================== --- projects/multi-fibv6/8/sys/net/flowtable.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/net/flowtable.c Wed Feb 15 06:49:50 2012 (r231744) @@ -373,7 +373,7 @@ SYSCTL_VNET_PROC(_net_inet_flowtable, OI #ifndef RADIX_MPATH static void -in_rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum) +rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fibnum) { rtalloc_ign_fib(ro, 0, fibnum); @@ -1313,7 +1313,7 @@ flowtable_alloc(char *name, int nentry, #ifdef RADIX_MPATH ft->ft_rtalloc = rtalloc_mpath_fib; #else - ft->ft_rtalloc = in_rtalloc_ign_wrapper; + ft->ft_rtalloc = rtalloc_ign_wrapper; #endif if (flags & FL_PCPU) { ft->ft_lock = flowtable_pcpu_lock; Modified: projects/multi-fibv6/8/sys/net/if_faith.c ============================================================================== --- projects/multi-fibv6/8/sys/net/if_faith.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/net/if_faith.c Wed Feb 15 06:49:50 2012 (r231744) @@ -338,7 +338,7 @@ faithprefix(in6) sin6.sin6_family = AF_INET6; sin6.sin6_len = sizeof(struct sockaddr_in6); sin6.sin6_addr = *in6; - rt = rtalloc1((struct sockaddr *)&sin6, 0, 0UL); + rt = in6_rtalloc1((struct sockaddr *)&sin6, 0, 0UL, RT_DEFAULT_FIB); if (rt && rt->rt_ifp && rt->rt_ifp->if_type == IFT_FAITH && (rt->rt_ifp->if_flags & IFF_UP) != 0) ret = 1; Modified: projects/multi-fibv6/8/sys/net/route.c ============================================================================== --- projects/multi-fibv6/8/sys/net/route.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/net/route.c Wed Feb 15 06:49:50 2012 (r231744) @@ -35,6 +35,7 @@ ***********************************************************************/ #include "opt_inet.h" +#include "opt_inet6.h" #include "opt_route.h" #include "opt_mrouting.h" #include "opt_mpath.h" @@ -72,7 +73,11 @@ SYSCTL_INT(_net, OID_AUTO, fibs, CTLFLAG /* * Allow the boot code to allow LESS than RT_MAXFIBS to be used. * We can't do more because storage is statically allocated for now. - * (for compatibility reasons.. this will change). + * (for compatibility reasons.. this will change. When this changes, code should + * be refactored to protocol independent parts and protocol dependent parts, + * probably hanging of domain(9) specific storage to not need the full + * fib * af RNH allocation etc. but allow tuning the number of tables per + * address family). */ TUNABLE_INT("net.fibs", &rt_numfibs); @@ -82,6 +87,9 @@ TUNABLE_INT("net.fibs", &rt_numfibs); * changes for the FIB of the caller when adding a new set of addresses * to an interface. XXX this is a shotgun aproach to a problem that needs * a more fine grained solution.. that will come. + * XXX also has the problems getting the FIB from curthread which will not + * always work given the fib can be overridden and prefixes can be added + * from the network stack context. */ u_int rt_add_addr_allfibs = 1; SYSCTL_INT(_net, OID_AUTO, add_addr_allfibs, CTLFLAG_RW, @@ -196,27 +204,23 @@ vnet_route_init(const void *unused __unu V_rtzone = uma_zcreate("rtentry", sizeof(struct rtentry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); for (dom = domains; dom; dom = dom->dom_next) { - if (dom->dom_rtattach) { - for (table = 0; table < rt_numfibs; table++) { - if ( (fam = dom->dom_family) == AF_INET || - table == 0) { - /* for now only AF_INET has > 1 table */ - /* XXX MRT - * rtattach will be also called - * from vfs_export.c but the - * offset will be 0 - * (only for AF_INET and AF_INET6 - * which don't need it anyhow) - */ - rnh = rt_tables_get_rnh_ptr(table, fam); - if (rnh == NULL) - panic("%s: rnh NULL", __func__); - dom->dom_rtattach((void **)rnh, - dom->dom_rtoffset); - } else { - break; - } - } + if (dom->dom_rtattach == NULL) + continue; + + for (table = 0; table < rt_numfibs; table++) { + fam = dom->dom_family; + if (table != 0 && fam != AF_INET6 && fam != AF_INET) + break; + + /* + * XXX MRT rtattach will be also called from + * vfs_export.c but the offset will be 0 (only for + * AF_INET and AF_INET6 which don't need it anyhow). + */ + rnh = rt_tables_get_rnh_ptr(table, fam); + if (rnh == NULL) + panic("%s: rnh NULL", __func__); + dom->dom_rtattach((void **)rnh, dom->dom_rtoffset); } } } @@ -233,20 +237,19 @@ vnet_route_uninit(const void *unused __u struct radix_node_head **rnh; for (dom = domains; dom; dom = dom->dom_next) { - if (dom->dom_rtdetach) { - for (table = 0; table < rt_numfibs; table++) { - if ( (fam = dom->dom_family) == AF_INET || - table == 0) { - /* For now only AF_INET has > 1 tbl. */ - rnh = rt_tables_get_rnh_ptr(table, fam); - if (rnh == NULL) - panic("%s: rnh NULL", __func__); - dom->dom_rtdetach((void **)rnh, - dom->dom_rtoffset); - } else { - break; - } - } + if (dom->dom_rtdetach == NULL) + continue; + + for (table = 0; table < rt_numfibs; table++) { + fam = dom->dom_family; + + if (table != 0 && fam != AF_INET6 && fam != AF_INET) + break; + + rnh = rt_tables_get_rnh_ptr(table, fam); + if (rnh == NULL) + panic("%s: rnh NULL", __func__); + dom->dom_rtdetach((void **)rnh, dom->dom_rtoffset); } } } @@ -274,7 +277,8 @@ setfib(struct thread *td, struct setfib_ void rtalloc(struct route *ro) { - rtalloc_ign_fib(ro, 0UL, 0); + + rtalloc_ign_fib(ro, 0UL, RT_DEFAULT_FIB); } void @@ -294,7 +298,7 @@ rtalloc_ign(struct route *ro, u_long ign RTFREE(rt); ro->ro_rt = NULL; } - ro->ro_rt = rtalloc1_fib(&ro->ro_dst, 1, ignore, 0); + ro->ro_rt = rtalloc1_fib(&ro->ro_dst, 1, ignore, RT_DEFAULT_FIB); if (ro->ro_rt) RT_UNLOCK(ro->ro_rt); } @@ -324,7 +328,8 @@ rtalloc_ign_fib(struct route *ro, u_long struct rtentry * rtalloc1(struct sockaddr *dst, int report, u_long ignflags) { - return (rtalloc1_fib(dst, report, ignflags, 0)); + + return (rtalloc1_fib(dst, report, ignflags, RT_DEFAULT_FIB)); } struct rtentry * @@ -339,8 +344,15 @@ rtalloc1_fib(struct sockaddr *dst, int r int needlock; KASSERT((fibnum < rt_numfibs), ("rtalloc1_fib: bad fibnum")); - if (dst->sa_family != AF_INET) /* Only INET supports > 1 fib now */ - fibnum = 0; + switch (dst->sa_family) { + case AF_INET6: + case AF_INET: + /* We support multiple FIBs. */ + break; + default: + fibnum = RT_DEFAULT_FIB; + break; + } rnh = rt_tables_get_rnh(fibnum, dst->sa_family); newrt = NULL; if (rnh == NULL) @@ -486,7 +498,8 @@ rtredirect(struct sockaddr *dst, int flags, struct sockaddr *src) { - rtredirect_fib(dst, gateway, netmask, flags, src, 0); + + rtredirect_fib(dst, gateway, netmask, flags, src, RT_DEFAULT_FIB); } void @@ -617,7 +630,8 @@ out: int rtioctl(u_long req, caddr_t data) { - return (rtioctl_fib(req, data, 0)); + + return (rtioctl_fib(req, data, RT_DEFAULT_FIB)); } /* @@ -647,7 +661,8 @@ rtioctl_fib(u_long req, caddr_t data, u_ struct ifaddr * ifa_ifwithroute(int flags, struct sockaddr *dst, struct sockaddr *gateway) { - return (ifa_ifwithroute_fib(flags, dst, gateway, 0)); + + return (ifa_ifwithroute_fib(flags, dst, gateway, RT_DEFAULT_FIB)); } struct ifaddr * @@ -732,7 +747,9 @@ rtrequest(int req, int flags, struct rtentry **ret_nrt) { - return (rtrequest_fib(req, dst, gateway, netmask, flags, ret_nrt, 0)); + + return (rtrequest_fib(req, dst, gateway, netmask, flags, ret_nrt, + RT_DEFAULT_FIB)); } int @@ -771,7 +788,8 @@ rtrequest_fib(int req, int rt_getifa(struct rt_addrinfo *info) { - return (rt_getifa_fib(info, 0)); + + return (rt_getifa_fib(info, RT_DEFAULT_FIB)); } /* @@ -1029,8 +1047,16 @@ rtrequest1_fib(int req, struct rt_addrin #define senderr(x) { error = x ; goto bad; } KASSERT((fibnum < rt_numfibs), ("rtrequest1_fib: bad fibnum")); - if (dst->sa_family != AF_INET) /* Only INET supports > 1 fib now */ - fibnum = 0; + switch (dst->sa_family) { + case AF_INET6: + case AF_INET: + /* We support multiple FIBs. */ + break; + default: + fibnum = RT_DEFAULT_FIB; + break; + } + /* * Find the correct routing tree to use for this Address Family */ @@ -1136,8 +1162,7 @@ rtrequest1_fib(int req, struct rt_addrin rt->rt_flags = RTF_UP | flags; rt->rt_fibnum = fibnum; /* - * Add the gateway. Possibly re-malloc-ing the storage for it - * + * Add the gateway. Possibly re-malloc-ing the storage for it. */ RT_LOCK(rt); if ((error = rt_setgate(rt, dst, gateway)) != 0) { @@ -1186,12 +1211,17 @@ rtrequest1_fib(int req, struct rt_addrin #ifdef FLOWTABLE rt0 = NULL; - /* XXX - * "flow-table" only support IPv4 at the moment. - * XXX-BZ as of r205066 it would support IPv6. - */ + /* "flow-table" only supports IPv6 and IPv4 at the moment. */ + switch (dst->sa_family) { +#ifdef notyet +#ifdef INET6 + case AF_INET6: +#endif +#endif #ifdef INET - if (dst->sa_family == AF_INET) { + case AF_INET: +#endif +#if defined(INET6) || defined(INET) rn = rnh->rnh_matchaddr(dst, rnh); if (rn && ((rn->rn_flags & RNF_ROOT) == 0)) { struct sockaddr *mask; @@ -1230,9 +1260,9 @@ rtrequest1_fib(int req, struct rt_addrin } } } +#endif/* INET6 || INET */ } -#endif -#endif +#endif /* FLOWTABLE */ /* XXX mtu manipulation will be done in rnh_addaddr -- itojun */ rn = rnh->rnh_addaddr(ndst, netmask, rnh, rt->rt_nodes); @@ -1254,9 +1284,20 @@ rtrequest1_fib(int req, struct rt_addrin } #ifdef FLOWTABLE else if (rt0 != NULL) { + switch (dst->sa_family) { +#ifdef notyet +#ifdef INET6 + case AF_INET6: + flowtable_route_flush(V_ip6_ft, rt0); + break; +#endif +#endif #ifdef INET - flowtable_route_flush(V_ip_ft, rt0); + case AF_INET: + flowtable_route_flush(V_ip_ft, rt0); + break; #endif + } RTFREE(rt0); } #endif @@ -1388,8 +1429,17 @@ rtinit1(struct ifaddr *ifa, int cmd, int dst = ifa->ifa_addr; netmask = ifa->ifa_netmask; } - if ( dst->sa_family != AF_INET) - fibnum = 0; + if (dst->sa_len == 0) + return(EINVAL); + switch (dst->sa_family) { + case AF_INET6: + case AF_INET: + /* We support multiple FIBs. */ + break; + default: + fibnum = RT_DEFAULT_FIB; + break; + } if (fibnum == -1) { if (rt_add_addr_allfibs == 0 && cmd == (int)RTM_ADD) { startfib = endfib = curthread->td_proc->p_fibnum; @@ -1402,8 +1452,6 @@ rtinit1(struct ifaddr *ifa, int cmd, int startfib = fibnum; endfib = fibnum; } - if (dst->sa_len == 0) - return(EINVAL); /* * If it's a delete, check that if it exists, @@ -1427,9 +1475,7 @@ rtinit1(struct ifaddr *ifa, int cmd, int * Now go through all the requested tables (fibs) and do the * requested action. Realistically, this will either be fib 0 * for protocols that don't do multiple tables or all the - * tables for those that do. XXX For this version only AF_INET. - * When that changes code should be refactored to protocol - * independent parts and protocol dependent parts. + * tables for those that do. */ for ( fibnum = startfib; fibnum <= endfib; fibnum++) { if (cmd == RTM_DELETE) { @@ -1569,12 +1615,14 @@ rtinit1(struct ifaddr *ifa, int cmd, int return (error); } +#ifndef BURN_BRIDGES /* special one for inet internal use. may not use. */ int rtinit_fib(struct ifaddr *ifa, int cmd, int flags) { return (rtinit1(ifa, cmd, flags, -1)); } +#endif /* * Set up a routing table entry, normally @@ -1584,7 +1632,7 @@ int rtinit(struct ifaddr *ifa, int cmd, int flags) { struct sockaddr *dst; - int fib = 0; + int fib = RT_DEFAULT_FIB; if (flags & RTF_HOST) { dst = ifa->ifa_dstaddr; @@ -1592,7 +1640,12 @@ rtinit(struct ifaddr *ifa, int cmd, int dst = ifa->ifa_addr; } - if (dst->sa_family == AF_INET) + switch (dst->sa_family) { + case AF_INET6: + case AF_INET: + /* We do support multiple FIBs. */ fib = -1; + break; + } return (rtinit1(ifa, cmd, flags, fib)); } Modified: projects/multi-fibv6/8/sys/net/route.h ============================================================================== --- projects/multi-fibv6/8/sys/net/route.h Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/net/route.h Wed Feb 15 06:49:50 2012 (r231744) @@ -107,6 +107,7 @@ struct rt_metrics { #endif #endif +#define RT_DEFAULT_FIB 0 /* Explicitly mark fib=0 restricted cases */ extern u_int rt_numfibs; /* number fo usable routing tables */ /* * XXX kernel function pointer `rt_output' is visible to applications. @@ -401,8 +402,10 @@ void rtredirect(struct sockaddr *, stru int rtrequest(int, struct sockaddr *, struct sockaddr *, struct sockaddr *, int, struct rtentry **); +#ifndef BURN_BRIDGES /* defaults to "all" FIBs */ int rtinit_fib(struct ifaddr *, int, int); +#endif /* XXX MRT NEW VERSIONS THAT USE FIBs * For now the protocol indepedent versions are the same as the AF_INET ones Modified: projects/multi-fibv6/8/sys/netinet/in.c ============================================================================== --- projects/multi-fibv6/8/sys/netinet/in.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/netinet/in.c Wed Feb 15 06:49:50 2012 (r231744) @@ -957,7 +957,7 @@ in_ifinit(struct ifnet *ifp, struct in_i bzero(&ia_ro, sizeof(ia_ro)); *((struct sockaddr_in *)(&ia_ro.ro_dst)) = ia->ia_addr; - rtalloc_ign_fib(&ia_ro, 0, 0); + rtalloc_ign_fib(&ia_ro, 0, RT_DEFAULT_FIB); if ((ia_ro.ro_rt != NULL) && (ia_ro.ro_rt->rt_ifp != NULL) && (ia_ro.ro_rt->rt_ifp == V_loif)) { RT_LOCK(ia_ro.ro_rt); Modified: projects/multi-fibv6/8/sys/netinet/ipfw/ip_fw2.c ============================================================================== --- projects/multi-fibv6/8/sys/netinet/ipfw/ip_fw2.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/netinet/ipfw/ip_fw2.c Wed Feb 15 06:49:50 2012 (r231744) @@ -494,7 +494,7 @@ search_ip6_addr_net (struct in6_addr * i } static int -verify_path6(struct in6_addr *src, struct ifnet *ifp) +verify_path6(struct in6_addr *src, struct ifnet *ifp, u_int fib) { struct route_in6 ro; struct sockaddr_in6 *dst; @@ -505,9 +505,8 @@ verify_path6(struct in6_addr *src, struc dst->sin6_family = AF_INET6; dst->sin6_len = sizeof(*dst); dst->sin6_addr = *src; - /* XXX MRT 0 for ipv6 at this time */ - rtalloc_ign((struct route *)&ro, 0); + in6_rtalloc_ign(&ro, 0, fib); if (ro.ro_rt == NULL) return 0; @@ -1682,7 +1681,7 @@ do { \ #ifdef INET6 is_ipv6 ? verify_path6(&(args->f_id.src_ip6), - m->m_pkthdr.rcvif) : + m->m_pkthdr.rcvif, args->f_id.fib) : #endif verify_path(src_ip, m->m_pkthdr.rcvif, args->f_id.fib))); @@ -1694,7 +1693,7 @@ do { \ #ifdef INET6 is_ipv6 ? verify_path6(&(args->f_id.src_ip6), - NULL) : + NULL, args->f_id.fib) : #endif verify_path(src_ip, NULL, args->f_id.fib))); break; @@ -1712,7 +1711,8 @@ do { \ #ifdef INET6 is_ipv6 ? verify_path6( &(args->f_id.src_ip6), - m->m_pkthdr.rcvif) : + m->m_pkthdr.rcvif, + args->f_id.fib) : #endif verify_path(src_ip, m->m_pkthdr.rcvif, Modified: projects/multi-fibv6/8/sys/netinet/sctp_os_bsd.h ============================================================================== --- projects/multi-fibv6/8/sys/netinet/sctp_os_bsd.h Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/netinet/sctp_os_bsd.h Wed Feb 15 06:49:50 2012 (r231744) @@ -424,6 +424,12 @@ typedef struct callout sctp_os_timer_t; typedef struct route sctp_route_t; typedef struct rtentry sctp_rtentry_t; +/* + * XXX multi-FIB support was backed out in r179783 and it seems clear that the + * VRF support as currently in FreeBSD is not ready to support multi-FIB. + * It might be best to implement multi-FIB support for both v4 and v6 indepedent + * of VRFs and leave those to a real MPLS stack. + */ #define SCTP_RTALLOC(ro, vrf_id) rtalloc_ign((struct route *)ro, 0UL) /* Future zero copy wakeup/send function */ Modified: projects/multi-fibv6/8/sys/netinet/tcp_subr.c ============================================================================== --- projects/multi-fibv6/8/sys/netinet/tcp_subr.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/netinet/tcp_subr.c Wed Feb 15 06:49:50 2012 (r231744) @@ -1801,7 +1801,7 @@ tcp_maxmtu6(struct in_conninfo *inc, int sro6.ro_dst.sin6_family = AF_INET6; sro6.ro_dst.sin6_len = sizeof(struct sockaddr_in6); sro6.ro_dst.sin6_addr = inc->inc6_faddr; - rtalloc_ign((struct route *)&sro6, 0); + in6_rtalloc_ign(&sro6, 0, inc->inc_fibnum); } if (sro6.ro_rt != NULL) { ifp = sro6.ro_rt->rt_ifp; Modified: projects/multi-fibv6/8/sys/netinet6/icmp6.c ============================================================================== --- projects/multi-fibv6/8/sys/netinet6/icmp6.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/netinet6/icmp6.c Wed Feb 15 06:49:50 2012 (r231744) @@ -359,7 +359,7 @@ icmp6_error(struct mbuf *m, int type, in m_adj(m, ICMPV6_PLD_MAXLEN - m->m_pkthdr.len); preplen = sizeof(struct ip6_hdr) + sizeof(struct icmp6_hdr); - M_PREPEND(m, preplen, M_DONTWAIT); + M_PREPEND(m, preplen, M_DONTWAIT); /* FIB is also copied over. */ if (m && m->m_len < preplen) m = m_pullup(m, preplen); if (m == NULL) { @@ -581,7 +581,7 @@ icmp6_input(struct mbuf **mp, int *offp, MGETHDR(n, M_DONTWAIT, n0->m_type); n0len = n0->m_pkthdr.len; /* save for use below */ if (n) - M_MOVE_PKTHDR(n, n0); + M_MOVE_PKTHDR(n, n0); /* FIB copied. */ if (n && maxlen >= MHLEN) { MCLGET(n, M_DONTWAIT); if ((n->m_flags & M_EXT) == 0) { @@ -1419,7 +1419,7 @@ ni6_input(struct mbuf *m, int off) m_freem(m); return (NULL); } - M_MOVE_PKTHDR(n, m); /* just for recvif */ + M_MOVE_PKTHDR(n, m); /* just for recvif and FIB */ if (replylen > MHLEN) { if (replylen > MCLBYTES) { /* @@ -2332,7 +2332,7 @@ icmp6_redirect_input(struct mbuf *m, int sin6.sin6_family = AF_INET6; sin6.sin6_len = sizeof(struct sockaddr_in6); bcopy(&reddst6, &sin6.sin6_addr, sizeof(reddst6)); - rt = rtalloc1((struct sockaddr *)&sin6, 0, 0UL); + rt = in6_rtalloc1((struct sockaddr *)&sin6, 0, 0UL, RT_DEFAULT_FIB); if (rt) { if (rt->rt_gateway == NULL || rt->rt_gateway->sa_family != AF_INET6) { @@ -2421,6 +2421,7 @@ icmp6_redirect_input(struct mbuf *m, int struct sockaddr_in6 sdst; struct sockaddr_in6 sgw; struct sockaddr_in6 ssrc; + u_int fibnum; bzero(&sdst, sizeof(sdst)); bzero(&sgw, sizeof(sgw)); @@ -2431,9 +2432,11 @@ icmp6_redirect_input(struct mbuf *m, int bcopy(&redtgt6, &sgw.sin6_addr, sizeof(struct in6_addr)); bcopy(&reddst6, &sdst.sin6_addr, sizeof(struct in6_addr)); bcopy(&src6, &ssrc.sin6_addr, sizeof(struct in6_addr)); - rtredirect((struct sockaddr *)&sdst, (struct sockaddr *)&sgw, - (struct sockaddr *)NULL, RTF_GATEWAY | RTF_HOST, - (struct sockaddr *)&ssrc); + for (fibnum = 0; fibnum < rt_numfibs; fibnum++) + in6_rtredirect((struct sockaddr *)&sdst, + (struct sockaddr *)&sgw, (struct sockaddr *)NULL, + RTF_GATEWAY | RTF_HOST, (struct sockaddr *)&ssrc, + fibnum); } /* finally update cached route in each socket via pfctlinput */ { @@ -2517,6 +2520,7 @@ icmp6_redirect_output(struct mbuf *m0, s MCLGET(m, M_DONTWAIT); if (!m) goto fail; + M_SETFIB(m, rt->rt_fibnum); m->m_pkthdr.rcvif = NULL; m->m_len = 0; maxlen = M_TRAILINGSPACE(m); Modified: projects/multi-fibv6/8/sys/netinet6/in6.c ============================================================================== --- projects/multi-fibv6/8/sys/netinet6/in6.c Wed Feb 15 06:45:49 2012 (r231743) +++ projects/multi-fibv6/8/sys/netinet6/in6.c Wed Feb 15 06:49:50 2012 (r231744) @@ -198,6 +198,11 @@ in6_control(struct socket *so, u_long cm switch (cmd) { case SIOCGETSGCNT_IN6: case SIOCGETMIFCNT_IN6: + /* + * XXX mrt_ioctl has a 3rd, unused, FIB argument in route.c. + * We cannot see how that would be needed, so do not adjust the + * KPI blindly; more likely should clean up the IPv4 variant. + */ return (mrt6_ioctl ? mrt6_ioctl(cmd, data) : EOPNOTSUPP); } @@ -696,6 +701,169 @@ out: } /* + * Join necessary multicast groups. Factored out from in6_update_ifa(). + * This entire work should only be done once, for the default FIB. + */ +static int +in6_update_ifa_join_mc(struct ifnet *ifp, struct in6_aliasreq *ifra, + struct in6_ifaddr *ia, int flags, struct in6_multi **in6m_sol) +{ + char ip6buf[INET6_ADDRSTRLEN]; + struct sockaddr_in6 mltaddr, mltmask; + struct in6_addr llsol; + struct in6_multi_mship *imm; + struct rtentry *rt; + int delay, error; + + KASSERT(in6m_sol != NULL, ("%s: in6m_sol is NULL", __func__)); + + /* Join solicited multicast addr for new host id. */ + bzero(&llsol, sizeof(struct in6_addr)); + llsol.s6_addr32[0] = IPV6_ADDR_INT32_MLL; + llsol.s6_addr32[1] = 0; + llsol.s6_addr32[2] = htonl(1); + llsol.s6_addr32[3] = ifra->ifra_addr.sin6_addr.s6_addr32[3]; + llsol.s6_addr8[12] = 0xff; + if ((error = in6_setscope(&llsol, ifp, NULL)) != 0) { + /* XXX: should not happen */ + log(LOG_ERR, "%s: in6_setscope failed\n", __func__); + goto cleanup; + } + delay = 0; + if ((flags & IN6_IFAUPDATE_DADDELAY)) { + /* + * We need a random delay for DAD on the address being + * configured. It also means delaying transmission of the + * corresponding MLD report to avoid report collision. + * [RFC 4861, Section 6.3.7] + */ + delay = arc4random() % (MAX_RTR_SOLICITATION_DELAY * hz); + } + imm = in6_joingroup(ifp, &llsol, &error, delay); + if (imm == NULL) { + nd6log((LOG_WARNING, "%s: addmulti failed for %s on %s " + "(errno=%d)\n", __func__, ip6_sprintf(ip6buf, &llsol), + if_name(ifp), error)); + goto cleanup; + } + LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain); + *in6m_sol = imm->i6mm_maddr; + + bzero(&mltmask, sizeof(mltmask)); + mltmask.sin6_len = sizeof(struct sockaddr_in6); + mltmask.sin6_family = AF_INET6; + mltmask.sin6_addr = in6mask32; +#define MLTMASK_LEN 4 /* mltmask's masklen (=32bit=4octet) */ + + /* + * Join link-local all-nodes address. + */ + bzero(&mltaddr, sizeof(mltaddr)); + mltaddr.sin6_len = sizeof(struct sockaddr_in6); + mltaddr.sin6_family = AF_INET6; + mltaddr.sin6_addr = in6addr_linklocal_allnodes; + if ((error = in6_setscope(&mltaddr.sin6_addr, ifp, NULL)) != 0) + goto cleanup; /* XXX: should not fail */ + + /* + * XXX: do we really need this automatic routes? We should probably + * reconsider this stuff. Most applications actually do not need the + * routes, since they usually specify the outgoing interface. + */ + rt = in6_rtalloc1((struct sockaddr *)&mltaddr, 0, 0UL, RT_DEFAULT_FIB); + if (rt != NULL) { + /* XXX: only works in !SCOPEDROUTING case. */ + if (memcmp(&mltaddr.sin6_addr, + &((struct sockaddr_in6 *)rt_key(rt))->sin6_addr, + MLTMASK_LEN)) { + RTFREE_LOCKED(rt); + rt = NULL; + } + } + if (rt == NULL) { + error = in6_rtrequest(RTM_ADD, (struct sockaddr *)&mltaddr, + (struct sockaddr *)&ia->ia_addr, + (struct sockaddr *)&mltmask, RTF_UP, + (struct rtentry **)0, RT_DEFAULT_FIB); + if (error) + goto cleanup; + } else + RTFREE_LOCKED(rt); + + imm = in6_joingroup(ifp, &mltaddr.sin6_addr, &error, 0); + if (imm == NULL) { + nd6log((LOG_WARNING, "%s: addmulti failed for %s on %s " + "(errno=%d)\n", __func__, ip6_sprintf(ip6buf, + &mltaddr.sin6_addr), if_name(ifp), error)); + goto cleanup; + } + LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain); + + /* + * Join node information group address. + */ + delay = 0; + if ((flags & IN6_IFAUPDATE_DADDELAY)) { + /* + * The spec does not say anything about delay for this group, + * but the same logic should apply. + */ + delay = arc4random() % (MAX_RTR_SOLICITATION_DELAY * hz); + } + if (in6_nigroup(ifp, NULL, -1, &mltaddr.sin6_addr) == 0) { + /* XXX jinmei */ + imm = in6_joingroup(ifp, &mltaddr.sin6_addr, &error, delay); + if (imm == NULL) + nd6log((LOG_WARNING, "%s: addmulti failed for %s on %s " + "(errno=%d)\n", __func__, ip6_sprintf(ip6buf, + &mltaddr.sin6_addr), if_name(ifp), error)); + /* XXX not very fatal, go on... */ + else + LIST_INSERT_HEAD(&ia->ia6_memberships, imm, i6mm_chain); + } + + /* + * Join interface-local all-nodes address. + * (ff01::1%ifN, and ff01::%ifN/32) + */ + mltaddr.sin6_addr = in6addr_nodelocal_allnodes; + if ((error = in6_setscope(&mltaddr.sin6_addr, ifp, NULL)) != 0) + goto cleanup; /* XXX: should not fail */ + /* XXX: again, do we really need the route? */ + rt = in6_rtalloc1((struct sockaddr *)&mltaddr, 0, 0UL, RT_DEFAULT_FIB); + if (rt != NULL) { + if (memcmp(&mltaddr.sin6_addr, + &((struct sockaddr_in6 *)rt_key(rt))->sin6_addr, + MLTMASK_LEN)) { + RTFREE_LOCKED(rt); + rt = NULL; + } + } + if (rt == NULL) { + error = in6_rtrequest(RTM_ADD, (struct sockaddr *)&mltaddr, + (struct sockaddr *)&ia->ia_addr, + (struct sockaddr *)&mltmask, RTF_UP, + (struct rtentry **)0, RT_DEFAULT_FIB); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Feb 16 02:02:00 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EA648106564A; Thu, 16 Feb 2012 02:02:00 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D94048FC0C; Thu, 16 Feb 2012 02:02:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1G220wq093299; Thu, 16 Feb 2012 02:02:00 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1G22033093296; Thu, 16 Feb 2012 02:02:00 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201202160202.q1G22033093296@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 16 Feb 2012 02:02:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231804 - in projects/pseries/powerpc: include pseries X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Feb 2012 02:02:01 -0000 Author: nwhitehorn Date: Thu Feb 16 02:02:00 2012 New Revision: 231804 URL: http://svn.freebsd.org/changeset/base/231804 Log: Follow the standard with a little more paranoia. Modified: projects/pseries/powerpc/include/pte.h projects/pseries/powerpc/pseries/mmu_phyp.c Modified: projects/pseries/powerpc/include/pte.h ============================================================================== --- projects/pseries/powerpc/include/pte.h Thu Feb 16 01:41:34 2012 (r231803) +++ projects/pseries/powerpc/include/pte.h Thu Feb 16 02:02:00 2012 (r231804) @@ -96,8 +96,9 @@ struct lpteg { #define LPTE_VSID_SHIFT 12 #define LPTE_AVPN_MASK 0xFFFFFFFFFFFFFF80ULL #define LPTE_API 0x0000000000000F80ULL -#define LPTE_LOCKED 0x0000000000000010ULL -#define LPTE_WIRED 0x0000000000000008ULL +#define LPTE_SWBITS 0x0000000000000078ULL +#define LPTE_WIRED 0x0000000000000010ULL +#define LPTE_LOCKED 0x0000000000000008ULL #define LPTE_BIG 0x0000000000000004ULL /* 4kb/16Mb page */ #define LPTE_HID 0x0000000000000002ULL #define LPTE_VALID 0x0000000000000001ULL Modified: projects/pseries/powerpc/pseries/mmu_phyp.c ============================================================================== --- projects/pseries/powerpc/pseries/mmu_phyp.c Thu Feb 16 01:41:34 2012 (r231803) +++ projects/pseries/powerpc/pseries/mmu_phyp.c Thu Feb 16 02:02:00 2012 (r231804) @@ -262,7 +262,7 @@ mphyp_pte_spillable_ident(u_int ptegidx, phyp_pft_hcall(H_READ, 0, slot, 0, 0, &pt.pte_hi, &pt.pte_lo, &junk); - if (pt.pte_hi & (LPTE_LOCKED | LPTE_WIRED)) + if (pt.pte_hi & LPTE_SWBITS) continue; /* This is a candidate, so remember it */ From owner-svn-src-projects@FreeBSD.ORG Thu Feb 16 14:42:35 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B9437106566B; Thu, 16 Feb 2012 14:42:35 +0000 (UTC) (envelope-from dmarion@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A18BA8FC12; Thu, 16 Feb 2012 14:42:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1GEgZmP020997; Thu, 16 Feb 2012 14:42:35 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1GEgZ7s020985; Thu, 16 Feb 2012 14:42:35 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202161442.q1GEgZ7s020985@svn.freebsd.org> From: Damjan Marion Date: Thu, 16 Feb 2012 14:42:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231822 - in projects/armv6/sys: arm/ti arm/ti/am335x arm/ti/omap4 boot/fdt/dts conf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Feb 2012 14:42:35 -0000 Author: dmarion Date: Thu Feb 16 14:42:35 2012 New Revision: 231822 URL: http://svn.freebsd.org/changeset/base/231822 Log: Initial codedrop for TI AM335x / BeagleBone Includes: - AINTC Interrupt controller code - minimal PRCM code to enable Timers and select clock source - DMTimer code - CPU ID code - Console UART (FDT) Approved by: cognet (mentor) Added: projects/armv6/sys/arm/ti/aintc.c projects/armv6/sys/arm/ti/am335x/ projects/armv6/sys/arm/ti/am335x/am335x_dmtimer.c projects/armv6/sys/arm/ti/am335x/am335x_prcm.c projects/armv6/sys/arm/ti/am335x/am335x_reg.h projects/armv6/sys/arm/ti/am335x/files.am335x projects/armv6/sys/arm/ti/am335x/std.am335x projects/armv6/sys/arm/ti/am335x/std.beaglebone projects/armv6/sys/arm/ti/std.ti projects/armv6/sys/boot/fdt/dts/beaglebone.dts Deleted: projects/armv6/sys/arm/ti/std.omap Modified: projects/armv6/sys/arm/ti/omap4/std.omap4 projects/armv6/sys/arm/ti/ti_cpuid.c projects/armv6/sys/conf/options.arm Added: projects/armv6/sys/arm/ti/aintc.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/aintc.c Thu Feb 16 14:42:35 2012 (r231822) @@ -0,0 +1,191 @@ +/*- + * Copyright (c) 2012 Damjan Marion + * All rights reserved. + * + * Based on OMAP3 INTC code by Ben Gray + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#define INTC_REVISION 0x00 +#define INTC_SYSCONFIG 0x10 +#define INTC_SYSSTATUS 0x14 +#define INTC_SIR_IRQ 0x40 +#define INTC_CONTROL 0x48 +#define INTC_THRESHOLD 0x68 +#define INTC_MIR_CLEAR(x) (0x88 + ((x) * 0x20)) +#define INTC_MIR_SET(x) (0x8C + ((x) * 0x20)) +#define INTC_ISR_SET(x) (0x90 + ((x) * 0x20)) +#define INTC_ISR_CLEAR(x) (0x94 + ((x) * 0x20)) + +struct ti_aintc_softc { + device_t sc_dev; + struct resource * aintc_res[3]; + bus_space_tag_t aintc_bst; + bus_space_handle_t aintc_bsh; + uint8_t ver; +}; + +static struct resource_spec ti_aintc_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { -1, 0 } +}; + + +static struct ti_aintc_softc *ti_aintc_sc = NULL; + +#define aintc_read_4(reg) \ + bus_space_read_4(ti_aintc_sc->aintc_bst, ti_aintc_sc->aintc_bsh, reg) +#define aintc_write_4(reg, val) \ + bus_space_write_4(ti_aintc_sc->aintc_bst, ti_aintc_sc->aintc_bsh, reg, val) + + +static int +ti_aintc_probe(device_t dev) +{ + if (!ofw_bus_is_compatible(dev, "ti,aintc")) + return (ENXIO); + device_set_desc(dev, "TI AINTC Interrupt Controller"); + return (BUS_PROBE_DEFAULT); +} + +static int +ti_aintc_attach(device_t dev) +{ + struct ti_aintc_softc *sc = device_get_softc(dev); + uint32_t x; + + sc->sc_dev = dev; + + if (ti_aintc_sc) + return (ENXIO); + + if (bus_alloc_resources(dev, ti_aintc_spec, sc->aintc_res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + sc->aintc_bst = rman_get_bustag(sc->aintc_res[0]); + sc->aintc_bsh = rman_get_bushandle(sc->aintc_res[0]); + + ti_aintc_sc = sc; + + x = aintc_read_4(INTC_REVISION); + device_printf(dev, "Revision %u.%u\n",(x >> 4) & 0xF, x & 0xF); + return (0); +} + +static device_method_t ti_aintc_methods[] = { + DEVMETHOD(device_probe, ti_aintc_probe), + DEVMETHOD(device_attach, ti_aintc_attach), + { 0, 0 } +}; + +static driver_t ti_aintc_driver = { + "aintc", + ti_aintc_methods, + sizeof(struct ti_aintc_softc), +}; + +static devclass_t ti_aintc_devclass; + +DRIVER_MODULE(aintc, simplebus, ti_aintc_driver, ti_aintc_devclass, 0, 0); + +int +arm_get_next_irq(int last_irq) +{ + uint32_t active_irq; + + if (last_irq != -1) { + aintc_write_4(INTC_ISR_CLEAR(last_irq >> 5), + 1UL << (last_irq & 0x1F)); + aintc_write_4(INTC_CONTROL,1); + } + + /* Get the next active interrupt */ + active_irq = aintc_read_4(INTC_SIR_IRQ); + + /* Check for spurious interrupt */ + if ((active_irq & 0xffffff80)) { + device_printf(ti_aintc_sc->sc_dev, + "Spurious interrupt detected (0x%08x)\n", active_irq); + return -1; + } + + if (active_irq != last_irq) + return active_irq; + else + return -1; +} + +void +arm_mask_irq(uintptr_t nb) +{ + aintc_write_4(INTC_MIR_SET(nb >> 5), (1UL << (nb & 0x1F))); +} + +void +arm_unmask_irq(uintptr_t nb) +{ + aintc_write_4(INTC_MIR_CLEAR(nb >> 5), (1UL << (nb & 0x1F))); +} + +static int +fdt_ti_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig, + int *pol) +{ + + if (!fdt_is_compatible(node, "ti,aintc")) + return (ENXIO); + + *interrupt = fdt32_to_cpu(intr[0]); + *trig = INTR_TRIGGER_CONFORM; + *pol = INTR_POLARITY_CONFORM; + + return (0); +} + +fdt_pic_decode_t fdt_pic_table[] = { + &fdt_ti_aintc_decode_ic, + NULL +}; + + Added: projects/armv6/sys/arm/ti/am335x/am335x_dmtimer.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/am335x/am335x_dmtimer.c Thu Feb 16 14:42:35 2012 (r231822) @@ -0,0 +1,373 @@ +/*- + * Copyright (c) 2012 Damjan Marion + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#define AM335X_NUM_TIMERS 8 + +#define DMTIMER_TIDR 0x00 /* Identification Register */ +#define DMTIMER_TIOCP_CFG 0x10 /* Timer OCP Configuration Reg */ +#define DMTIMER_IQR_EOI 0x20 /* Timer IRQ End-Of-Interrupt Reg */ +#define DMTIMER_IRQSTATUS_RAW 0x24 /* Timer IRQSTATUS Raw Reg */ +#define DMTIMER_IRQSTATUS 0x28 /* Timer IRQSTATUS Reg */ +#define DMTIMER_IRQENABLE_SET 0x2c /* Timer IRQSTATUS Set Reg */ +#define DMTIMER_IRQENABLE_CLR 0x30 /* Timer IRQSTATUS Clear Reg */ +#define DMTIMER_IRQWAKEEN 0x34 /* Timer IRQ Wakeup Enable Reg */ +#define DMTIMER_TCLR 0x38 /* Timer Control Register */ +#define DMTIMER_TCRR 0x3C /* Timer Counter Register */ +#define DMTIMER_TLDR 0x40 /* Timer Load Reg */ +#define DMTIMER_TTGR 0x44 /* Timer Trigger Reg */ +#define DMTIMER_TWPS 0x48 /* Timer Write Posted Status Reg */ +#define DMTIMER_TMAR 0x4C /* Timer Match Reg */ +#define DMTIMER_TCAR1 0x50 /* Timer Capture Reg */ +#define DMTIMER_TSICR 0x54 /* Timer Synchr. Interface Control Reg */ +#define DMTIMER_TCAR2 0x48 /* Timer Capture Reg */ + + +struct am335x_dmtimer_softc { + struct resource * tmr_mem_res[AM335X_NUM_TIMERS]; + struct resource * tmr_irq_res[AM335X_NUM_TIMERS]; + uint32_t clkfreq; + struct am335x_dmtimer { + bus_space_tag_t bst; + bus_space_handle_t bsh; + struct eventtimer et; + } t[AM335X_NUM_TIMERS]; +}; + +static struct resource_spec am335x_dmtimer_mem_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { SYS_RES_MEMORY, 1, RF_ACTIVE }, + { SYS_RES_MEMORY, 2, RF_ACTIVE }, + { SYS_RES_MEMORY, 3, RF_ACTIVE }, + { SYS_RES_MEMORY, 4, RF_ACTIVE }, + { SYS_RES_MEMORY, 5, RF_ACTIVE }, + { SYS_RES_MEMORY, 6, RF_ACTIVE }, + { SYS_RES_MEMORY, 7, RF_ACTIVE }, + { -1, 0, 0 } +}; +static struct resource_spec am335x_dmtimer_irq_spec[] = { + { SYS_RES_IRQ, 0, RF_ACTIVE }, + { SYS_RES_IRQ, 1, RF_ACTIVE }, + { SYS_RES_IRQ, 2, RF_ACTIVE }, + { SYS_RES_IRQ, 3, RF_ACTIVE }, + { SYS_RES_IRQ, 4, RF_ACTIVE }, + { SYS_RES_IRQ, 5, RF_ACTIVE }, + { SYS_RES_IRQ, 6, RF_ACTIVE }, + { SYS_RES_IRQ, 7, RF_ACTIVE }, + { -1, 0, 0 } +}; + +static struct am335x_dmtimer *am335x_dmtimer_tc_tmr = NULL; + +/* Read/Write macros for Timer used as timecounter */ +#define am335x_dmtimer_tc_read_4(reg) \ + bus_space_read_4(am335x_dmtimer_tc_tmr->bst, \ + am335x_dmtimer_tc_tmr->bsh, reg) + +#define am335x_dmtimer_tc_write_4(reg, val) \ + bus_space_write_4(am335x_dmtimer_tc_tmr->bst, \ + am335x_dmtimer_tc_tmr->bsh, reg, val) + +/* Read/Write macros for Timer used as eventtimer */ +#define am335x_dmtimer_et_read_4(reg) \ + bus_space_read_4(tmr->bst, tmr->bsh, reg) + +#define am335x_dmtimer_et_write_4(reg, val) \ + bus_space_write_4(tmr->bst, tmr->bsh, reg, val) + +static unsigned am335x_dmtimer_tc_get_timecount(struct timecounter *); + +static struct timecounter am335x_dmtimer_tc = { + .tc_name = "AM335x Timecouter", + .tc_get_timecount = am335x_dmtimer_tc_get_timecount, + .tc_poll_pps = NULL, + .tc_counter_mask = ~0u, + .tc_frequency = 0, + .tc_quality = 1000, +}; + +static unsigned +am335x_dmtimer_tc_get_timecount(struct timecounter *tc) +{ + return am335x_dmtimer_tc_read_4(DMTIMER_TCRR); +} + +static int +am335x_dmtimer_start(struct eventtimer *et, struct bintime *first, + struct bintime *period) +{ + struct am335x_dmtimer *tmr = (struct am335x_dmtimer *)et->et_priv; + uint32_t load, count; + uint32_t tclr = 0; + + if (period != NULL) { + load = (et->et_frequency * (period->frac >> 32)) >> 32; + if (period->sec > 0) + load += et->et_frequency * period->sec; + tclr |= 2; /* autoreload bit */ + panic("periodic timer not implemented\n"); + } else { + load = 0; + } + + if (first != NULL) { + count = (tmr->et.et_frequency * (first->frac >> 32)) >> 32; + if (first->sec != 0) + count += tmr->et.et_frequency * first->sec; + } else { + count = load; + } + + /* Reset Timer */ + am335x_dmtimer_et_write_4(DMTIMER_TSICR, 2); + + /* Wait for reset to complete */ + while (am335x_dmtimer_et_read_4(DMTIMER_TIOCP_CFG) & 1); + + /* set load value */ + am335x_dmtimer_et_write_4(DMTIMER_TLDR, 0xFFFFFFFE - load); + + /* set counter value */ + am335x_dmtimer_et_write_4(DMTIMER_TCRR, 0xFFFFFFFE - count); + + /* enable overflow interrupt */ + am335x_dmtimer_et_write_4(DMTIMER_IRQENABLE_SET, 2); + + /* start timer(ST) */ + tclr |= 1; + am335x_dmtimer_et_write_4(DMTIMER_TCLR, tclr); + + return (0); +} + +static int +am335x_dmtimer_stop(struct eventtimer *et) +{ + struct am335x_dmtimer *tmr = (struct am335x_dmtimer *)et->et_priv; + + /* Disable all interrupts */ + am335x_dmtimer_et_write_4(DMTIMER_IRQENABLE_CLR, 7); + + /* Stop Timer */ + am335x_dmtimer_et_write_4(DMTIMER_TCLR, 0); + + return (0); +} + +static int +am335x_dmtimer_intr(void *arg) +{ + struct am335x_dmtimer *tmr = (struct am335x_dmtimer *)arg; + + /* Ack interrupt */ + am335x_dmtimer_et_write_4(DMTIMER_IRQSTATUS, 7); + if (tmr->et.et_active) + tmr->et.et_event_cb(&tmr->et, tmr->et.et_arg); + + return (FILTER_HANDLED); +} + +static int +am335x_dmtimer_probe(device_t dev) +{ + struct am335x_dmtimer_softc *sc; + sc = (struct am335x_dmtimer_softc *)device_get_softc(dev); + + if (ofw_bus_is_compatible(dev, "ti,am335x-dmtimer")) { + device_set_desc(dev, "AM335x DMTimer"); + return(BUS_PROBE_DEFAULT); + } + + return (ENXIO); +} + +static int +am335x_dmtimer_attach(device_t dev) +{ + struct am335x_dmtimer_softc *sc = device_get_softc(dev); + phandle_t node; + pcell_t clock; + void *ihl; + int err; + int i; + + if (am335x_dmtimer_tc_tmr != NULL) + return (EINVAL); + + /* Get the base clock frequency */ + node = ofw_bus_get_node(dev); + if ((OF_getprop(node, "clock-frequency", &clock, sizeof(clock))) <= 0) { + device_printf(dev, "missing clock-frequency attribute in FDT\n"); + return (ENXIO); + } + sc->clkfreq = fdt32_to_cpu(clock); + + /* Request the memory resources */ + err = bus_alloc_resources(dev, am335x_dmtimer_mem_spec, + sc->tmr_mem_res); + if (err) { + device_printf(dev, "Error: could not allocate mem resources\n"); + return (ENXIO); + } + + /* Request the IRQ resources */ + err = bus_alloc_resources(dev, am335x_dmtimer_irq_spec, + sc->tmr_irq_res); + if (err) { + device_printf(dev, "Error: could not allocate irq resources\n"); + return (ENXIO); + } + + for(i=0;it[i].bst = rman_get_bustag(sc->tmr_mem_res[i]); + sc->t[i].bsh = rman_get_bushandle(sc->tmr_mem_res[i]); + } + + /* Take DMTimer2 for TC */ + am335x_dmtimer_tc_tmr = &sc->t[2]; + + /* Reset Timer */ + am335x_dmtimer_tc_write_4(DMTIMER_TSICR, 2); + + /* Wait for reset to complete */ + while (am335x_dmtimer_tc_read_4(DMTIMER_TIOCP_CFG) & 1); + + /* set load value */ + am335x_dmtimer_tc_write_4(DMTIMER_TLDR, 0); + + /* set counter value */ + am335x_dmtimer_tc_write_4(DMTIMER_TCRR, 0); + + /* Set Timer autoreload(AR) and start timer(ST) */ + am335x_dmtimer_tc_write_4(DMTIMER_TCLR, 3); + + am335x_dmtimer_tc.tc_frequency = sc->clkfreq; + tc_init(&am335x_dmtimer_tc); + + /* Setup and enable the timer */ + if (bus_setup_intr(dev, sc->tmr_irq_res[3], INTR_TYPE_CLK, + am335x_dmtimer_intr, NULL, &sc->t[3], &ihl) != 0) { + bus_release_resources(dev, am335x_dmtimer_irq_spec, + sc->tmr_irq_res); + device_printf(dev, "Unable to setup the clock irq handler.\n"); + return (ENXIO); + } + + sc->t[3].et.et_name = "AM335x Eventtimer0"; + sc->t[3].et.et_flags = ET_FLAGS_PERIODIC | ET_FLAGS_ONESHOT; + sc->t[3].et.et_quality = 1000; + sc->t[3].et.et_frequency = sc->clkfreq; + sc->t[3].et.et_min_period.sec = 0; + sc->t[3].et.et_min_period.frac = + ((0x00000002LLU << 32) / sc->t[3].et.et_frequency) << 32; + sc->t[3].et.et_max_period.sec = 0xfffffff0U / sc->t[3].et.et_frequency; + sc->t[3].et.et_max_period.frac = + ((0xfffffffeLLU << 32) / sc->t[3].et.et_frequency) << 32; + sc->t[3].et.et_start = am335x_dmtimer_start; + sc->t[3].et.et_stop = am335x_dmtimer_stop; + sc->t[3].et.et_priv = &sc->t[3]; + et_register(&sc->t[3].et); + + return (0); +} + +static device_method_t am335x_dmtimer_methods[] = { + DEVMETHOD(device_probe, am335x_dmtimer_probe), + DEVMETHOD(device_attach, am335x_dmtimer_attach), + { 0, 0 } +}; + +static driver_t am335x_dmtimer_driver = { + "am335x-dmtimer", + am335x_dmtimer_methods, + sizeof(struct am335x_dmtimer_softc), +}; + +static devclass_t am335x_dmtimer_devclass; + +DRIVER_MODULE(am335x_dmtimer, simplebus, am335x_dmtimer_driver, am335x_dmtimer_devclass, 0, 0); + +void +cpu_initclocks(void) +{ + cpu_initclocks_bsp(); +} + +void +DELAY(int usec) +{ + int32_t counts; + uint32_t first, last; + + if (am335x_dmtimer_tc_tmr == NULL) { + for (; usec > 0; usec--) + for (counts = 200; counts > 0; counts--) + /* Prevent gcc from optimizing out the loop */ + cpufunc_nullop(); + return; + } + + /* Get the number of times to count */ + counts = usec * ((am335x_dmtimer_tc.tc_frequency / 1000000) + 1);; + + first = am335x_dmtimer_tc_read_4(DMTIMER_TCRR); + + while (counts > 0) { + last = am335x_dmtimer_tc_read_4(DMTIMER_TCRR); + if (last>first) { + counts -= (int32_t)(last - first); + } else { + counts -= (int32_t)((0xFFFFFFFF - first) + last); + } + first = last; + } +} + Added: projects/armv6/sys/arm/ti/am335x/am335x_prcm.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/am335x/am335x_prcm.c Thu Feb 16 14:42:35 2012 (r231822) @@ -0,0 +1,156 @@ +/*- + * Copyright (c) 2012 Damjan Marion + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#define CM_PER 0 +#define CM_PER_L4LS_CLKSTCTRL (CM_PER + 0x00) +#define CM_PER_TIMER7_CLKCTRL (CM_PER + 0x7C) +#define CM_PER_TIMER2_CLKCTRL (CM_PER + 0x80) +#define CM_PER_TIMER3_CLKCTRL (CM_PER + 0x84) +#define CM_PER_TIMER4_CLKCTRL (CM_PER + 0x88) +#define CM_PER_TIMER5_CLKCTRL (CM_PER + 0xEC) +#define CM_PER_TIMER6_CLKCTRL (CM_PER + 0xF0) + +#define CM_DPLL 0x500 +#define CLKSEL_TIMER7_CLK (CM_DPLL + 0x04) +#define CLKSEL_TIMER2_CLK (CM_DPLL + 0x08) +#define CLKSEL_TIMER3_CLK (CM_DPLL + 0x0C) +#define CLKSEL_TIMER4_CLK (CM_DPLL + 0x10) +#define CLKSEL_TIMER5_CLK (CM_DPLL + 0x18) +#define CLKSEL_TIMER6_CLK (CM_DPLL + 0x1C) + +struct am335x_prcm_softc { + struct resource * res[2]; + bus_space_tag_t bst; + bus_space_handle_t bsh; +}; + +static struct resource_spec am335x_prcm_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { -1, 0 } +}; + +static struct am335x_prcm_softc *am335x_prcm_sc = NULL; + +/* Read/Write macros */ +#define prcm_read_4(reg) \ + bus_space_read_4(am335x_prcm_sc->bst, am335x_prcm_sc->bsh, reg) +#define prcm_write_4(reg, val) \ + bus_space_write_4(am335x_prcm_sc->bst, am335x_prcm_sc->bsh, reg, val) + +static int +am335x_prcm_probe(device_t dev) +{ + struct am335x_prcm_softc *sc; + sc = (struct am335x_prcm_softc *)device_get_softc(dev); + + if (ofw_bus_is_compatible(dev, "am335x,prcm")) { + device_set_desc(dev, "AM335x PRCM"); + return(BUS_PROBE_DEFAULT); + } + + return (ENXIO); +} + +static int +am335x_prcm_attach(device_t dev) +{ + struct am335x_prcm_softc *sc = device_get_softc(dev); + + if (am335x_prcm_sc) + return (ENXIO); + + if (bus_alloc_resources(dev, am335x_prcm_spec, sc->res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + sc->bst = rman_get_bustag(sc->res[0]); + sc->bsh = rman_get_bushandle(sc->res[0]); + + am335x_prcm_sc = sc; + + /* Select CLK_M_OSC clock for Timer 2 */ + prcm_write_4(CLKSEL_TIMER2_CLK,1); + while ((prcm_read_4(CLKSEL_TIMER2_CLK) & 0x1) != 1); + + /* Enable Timer 2 Module */ + prcm_write_4(CM_PER_TIMER2_CLKCTRL, 2); + while ((prcm_read_4(CM_PER_TIMER2_CLKCTRL) & 0x3) != 2); + + /* Select CLK_M_OSC clock for Timer 3 */ + prcm_write_4(CLKSEL_TIMER3_CLK,1); + while ((prcm_read_4(CLKSEL_TIMER3_CLK) & 0x1) != 1); + + /* Enable Timer 3 Module */ + prcm_write_4(CM_PER_TIMER3_CLKCTRL, 2); + while ((prcm_read_4(CM_PER_TIMER3_CLKCTRL) & 0x3) != 2); + + return (0); +} + +static device_method_t am335x_prcm_methods[] = { + DEVMETHOD(device_probe, am335x_prcm_probe), + DEVMETHOD(device_attach, am335x_prcm_attach), + { 0, 0 } +}; + +static driver_t am335x_prcm_driver = { + "am335x-prcm", + am335x_prcm_methods, + sizeof(struct am335x_prcm_softc), +}; + +static devclass_t am335x_prcm_devclass; + +DRIVER_MODULE(am335x_prcm, simplebus, am335x_prcm_driver, + am335x_prcm_devclass, 0, 0); + Added: projects/armv6/sys/arm/ti/am335x/am335x_reg.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/am335x/am335x_reg.h Thu Feb 16 14:42:35 2012 (r231822) @@ -0,0 +1,39 @@ +/*- + * Copyright (c) 2012 Damjan Marion + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _AM335X_REG_H_ +#define _AM335X_REG_H_ + +#define AM335X_L4_WKUP_BASE 0x44C00000 +#define AM335X_L4_WKUP_SIZE 0x400000 + +#define AM335X_CONTROL_BASE AM335X_L4_WKUP_BASE + 0x210000 +#define AM335X_CONTROL_SIZE 0x2000 +#define AM335X_CONTROL_DEVICE_ID 0x0600 +#define AM335X_CONTROL_DEV_FEATURE 0x0604 + +#endif + Added: projects/armv6/sys/arm/ti/am335x/files.am335x ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/am335x/files.am335x Thu Feb 16 14:42:35 2012 (r231822) @@ -0,0 +1,20 @@ +#$FreeBSD$ + +kern/kern_clocksource.c standard + +arm/arm/bus_space_generic.c standard +arm/arm/bus_space_asm_generic.S standard +arm/arm/cpufunc_asm_armv5.S standard +arm/arm/cpufunc_asm_arm10.S standard +arm/arm/cpufunc_asm_arm11.S standard +arm/arm/cpufunc_asm_armv7.S standard +arm/arm/irq_dispatch.S standard + +arm/ti/ti_machdep.c standard +arm/ti/aintc.c standard + +arm/ti/am335x/am335x_prcm.c standard +arm/ti/am335x/am335x_dmtimer.c standard +arm/ti/am335x/if_cpsw.c standard + +dev/uart/uart_dev_ns8250.c optional uart Added: projects/armv6/sys/arm/ti/am335x/std.am335x ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/am335x/std.am335x Thu Feb 16 14:42:35 2012 (r231822) @@ -0,0 +1,21 @@ +# AM335x generic configuration +#$FreeBSD$ +files "../ti/am335x/files.am335x" +include "../ti/std.ti" +makeoption ARM_LITTLE_ENDIAN + +# Physical memory starts at 0x80000000. We assume images are loaded at +# 0x80200000, e.g. from u-boot with 'fatload mmc 0 0x80200000 kernel.bin' +# +# +options PHYSADDR=0x80000000 +options KERNPHYSADDR=0x80200000 +makeoptions KERNPHYSADDR=0x80200000 +options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm +makeoptions KERNVIRTADDR=0xc0200000 + +options STARTUP_PAGETABLE_ADDR=0x80000000 + +options SOC_TI_AM335X + +options ARM_L2_PIPT Added: projects/armv6/sys/arm/ti/am335x/std.beaglebone ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/am335x/std.beaglebone Thu Feb 16 14:42:35 2012 (r231822) @@ -0,0 +1,3 @@ +# $FreeBSD$ + +include "../ti/am335x/std.am335x" Modified: projects/armv6/sys/arm/ti/omap4/std.omap4 ============================================================================== --- projects/armv6/sys/arm/ti/omap4/std.omap4 Thu Feb 16 14:08:14 2012 (r231821) +++ projects/armv6/sys/arm/ti/omap4/std.omap4 Thu Feb 16 14:42:35 2012 (r231822) @@ -1,7 +1,7 @@ # Omap4430 generic configuration #$FreeBSD$ files "../ti/omap4/files.omap4" -include "../ti/std.omap" +include "../ti/std.ti" makeoption ARM_LITTLE_ENDIAN # Physical memory starts at 0x80000000. We assume images are loaded at Added: projects/armv6/sys/arm/ti/std.ti ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/std.ti Thu Feb 16 14:42:35 2012 (r231822) @@ -0,0 +1,6 @@ +# $FreeBSD$ + +# This should be armv7-a but current gcc doesn't support it +# makeoptions CONF_CFLAGS=-march=armv6 + +cpu CPU_CORTEXA Modified: projects/armv6/sys/arm/ti/ti_cpuid.c ============================================================================== --- projects/armv6/sys/arm/ti/ti_cpuid.c Thu Feb 16 14:08:14 2012 (r231821) +++ projects/armv6/sys/arm/ti/ti_cpuid.c Thu Feb 16 14:42:35 2012 (r231822) @@ -51,9 +51,7 @@ __FBSDID("$FreeBSD$"); #include #include -#ifdef notyet #include -#endif #define OMAP4_STD_FUSE_DIE_ID_0 0x2200 #define OMAP4_ID_CODE 0x2204 @@ -216,7 +214,6 @@ omap3_get_revision(void) OMAP_REV_MINOR(chip_revision)); } -#ifdef notyet static void am335x_get_revision(void) { @@ -255,7 +252,6 @@ am335x_get_revision(void) printf("Texas Instruments AM335%c Processor, Revision ES1.%u\n", cpu_last_char, AM335X_DEVREV(chip_revision)); } -#endif /** * ti_cpu_ident - attempts to identify the chip we are running on @@ -278,11 +274,9 @@ ti_cpu_ident(void *dummy) case CHIP_OMAP_4: omap4_get_revision(); break; -#ifdef notyet case CHIP_AM335X: am335x_get_revision(); break; -#endif default: panic("Unknown chip type, fixme!\n"); } Added: projects/armv6/sys/boot/fdt/dts/beaglebone.dts ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/boot/fdt/dts/beaglebone.dts Thu Feb 16 14:42:35 2012 (r231822) @@ -0,0 +1,118 @@ +/*- + * Copyright (c) 2012 Damjan Marion + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/dts-v1/; + +/ { + model = "beaglebone"; + compatible = "beaglebone", "ti,am335x"; + #address-cells = <1>; + #size-cells = <1>; + + interrupt-parent = <&AINTC>; + + aliases { + soc = &SOC; + uart0 = &uart0; + }; + + memory { + device_type = "memory"; + reg = < 0x80000000 0x10000000 >; /* 256MB RAM */ + }; + + SOC: am335x { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + ranges; + bus-frequency = <0>; + + AINTC: interrupt-controller@48200000 { + compatible = "ti,aintc"; + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <1>; + reg = < 0x48200000 0x1000 >; + }; + + prcm@44E00000 { + compatible = "am335x,prcm"; + #address-cells = <1>; + #size-cells = <1>; + reg = < 0x44E00000 0x1300 >; + }; + + dmtimers@44E05000 { + compatible = "ti,am335x-dmtimer"; + #address-cells = <1>; + #size-cells = <1>; + reg = < 0x44E05000 0x1000 + 0x44E31000 0x1000 + 0x48040000 0x1000 + 0x48042000 0x1000 + 0x48044000 0x1000 + 0x48046000 0x1000 + 0x48048000 0x1000 + 0x4804A000 0x1000 >; + interrupts = < 66 67 68 69 92 93 94 95 >; + interrupt-parent = <&AINTC>; + clock-frequency = < 24000000 >; + }; + + uart0: serial@44E09000 { + compatible = "ns16550"; + reg = <0x44E09000 0x1000>; + reg-shift = <2>; + interrupts = < 72 >; + interrupt-parent = <&AINTC>; + clock-frequency = < 48000000 >; /* FIXME */ + }; + + enet0: ethernet@4A100000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "ti,cpsw"; + reg = <0x4A100000 0x2000>; + interrupts = <40 41 42 43>; + interrupt-parent = <&AINTC>; + phy-handle = <&phy0>; + mdio@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "ti,cpsw-mdio"; + phy0: ethernet-phy@0 { + reg = <0x0>; + }; + }; + }; + }; + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Feb 16 15:04:12 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2195B1065672; Thu, 16 Feb 2012 15:04:12 +0000 (UTC) (envelope-from dmarion@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E6DC08FC15; Thu, 16 Feb 2012 15:04:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1GF4BCa021943; Thu, 16 Feb 2012 15:04:11 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1GF4BT3021940; Thu, 16 Feb 2012 15:04:11 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202161504.q1GF4BT3021940@svn.freebsd.org> From: Damjan Marion Date: Thu, 16 Feb 2012 15:04:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231826 - projects/armv6/sys/arm/ti X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Feb 2012 15:04:12 -0000 Author: dmarion Date: Thu Feb 16 15:04:11 2012 New Revision: 231826 URL: http://svn.freebsd.org/changeset/base/231826 Log: Keep FDT interrupt decode in arm/ti/common.c Approved by: cognet (mentor) Modified: projects/armv6/sys/arm/ti/aintc.c projects/armv6/sys/arm/ti/common.c Modified: projects/armv6/sys/arm/ti/aintc.c ============================================================================== --- projects/armv6/sys/arm/ti/aintc.c Thu Feb 16 14:54:51 2012 (r231825) +++ projects/armv6/sys/arm/ti/aintc.c Thu Feb 16 15:04:11 2012 (r231826) @@ -167,25 +167,3 @@ arm_unmask_irq(uintptr_t nb) { aintc_write_4(INTC_MIR_CLEAR(nb >> 5), (1UL << (nb & 0x1F))); } - -static int -fdt_ti_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig, - int *pol) -{ - - if (!fdt_is_compatible(node, "ti,aintc")) - return (ENXIO); - - *interrupt = fdt32_to_cpu(intr[0]); - *trig = INTR_TRIGGER_CONFORM; - *pol = INTR_POLARITY_CONFORM; - - return (0); -} - -fdt_pic_decode_t fdt_pic_table[] = { - &fdt_ti_aintc_decode_ic, - NULL -}; - - Modified: projects/armv6/sys/arm/ti/common.c ============================================================================== --- projects/armv6/sys/arm/ti/common.c Thu Feb 16 14:54:51 2012 (r231825) +++ projects/armv6/sys/arm/ti/common.c Thu Feb 16 15:04:11 2012 (r231826) @@ -53,6 +53,7 @@ struct fdt_fixup_entry fdt_fixup_table[] { NULL, NULL } }; +#ifdef SOC_OMAP4 static int fdt_gic_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig, int *pol) @@ -67,8 +68,31 @@ fdt_gic_decode_ic(phandle_t node, pcell_ return (0); } +#endif + +#ifdef SOC_TI_AM335X +static int +fdt_aintc_decode_ic(phandle_t node, pcell_t *intr, int *interrupt, int *trig, + int *pol) +{ + + if (!fdt_is_compatible(node, "ti,aintc")) + return (ENXIO); + + *interrupt = fdt32_to_cpu(intr[0]); + *trig = INTR_TRIGGER_CONFORM; + *pol = INTR_POLARITY_CONFORM; + + return (0); +} +#endif fdt_pic_decode_t fdt_pic_table[] = { +#ifdef SOC_OMAP4 &fdt_gic_decode_ic, +#endif +#ifdef SOC_TI_AM335X + &fdt_aintc_decode_ic, +#endif NULL }; From owner-svn-src-projects@FreeBSD.ORG Thu Feb 16 15:36:05 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C98321065672; Thu, 16 Feb 2012 15:36:05 +0000 (UTC) (envelope-from dmarion@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A8D098FC17; Thu, 16 Feb 2012 15:36:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1GFa5hV022996; Thu, 16 Feb 2012 15:36:05 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1GFa5qr022995; Thu, 16 Feb 2012 15:36:05 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202161536.q1GFa5qr022995@svn.freebsd.org> From: Damjan Marion Date: Thu, 16 Feb 2012 15:36:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231827 - projects/armv6/sys/arm/conf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Feb 2012 15:36:05 -0000 Author: dmarion Date: Thu Feb 16 15:36:05 2012 New Revision: 231827 URL: http://svn.freebsd.org/changeset/base/231827 Log: BEAGLEBONE conf file Approved by: cognet (mentor) Added: projects/armv6/sys/arm/conf/BEAGLEBONE Added: projects/armv6/sys/arm/conf/BEAGLEBONE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/conf/BEAGLEBONE Thu Feb 16 15:36:05 2012 (r231827) @@ -0,0 +1,133 @@ +# BEAGLEBONE -- Custom configuration for the BeagleBone ARM development +# platform, check out www.beagleboard.org/bone +# +# For more information on this file, please read the handbook section on +# Kernel Configuration Files: +# +# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD$ + +ident BEAGLEBONE + + + +# This probably wants to move somewhere else. Maybe we can create a basic +# OMAP4340 config, then make a PANDABOARD config that includes the basic one, +# adds the start addresses and custom devices plus pulls in this hints file. + +include "../ti/am335x/std.beaglebone" + +#To statically compile in device wiring instead of /boot/device.hints +makeoptions MODULES_OVERRIDE="" +makeoptions WITHOUT_MODULES="ahc" + +makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols +options HZ=100 + +options SCHED_4BSD #4BSD scheduler +options INET #InterNETworking +#options INET6 #IPv6 communications protocols +options FFS #Berkeley Fast Filesystem +options SOFTUPDATES #Enable FFS soft updates support +options UFS_ACL #Support for access control lists +options UFS_DIRHASH #Improve performance on big directories +#options MD_ROOT #MD is a potential root device +#options MD_ROOT_SIZE=6144 +#options ROOTDEVNAME=\"ufs:md0\" +options NFSCLIENT #Network Filesystem Client +device snp +#options NFSCL +#options NFSSERVER #Network Filesystem Server +options NFS_ROOT #NFS usable as /, requires NFSCLIENT +options BREAK_TO_DEBUGGER +options BOOTP_NFSROOT +options BOOTP_COMPAT +options BOOTP +options BOOTP_NFSV3 +options BOOTP_WIRED_TO=cpsw0 +options MSDOSFS #MSDOS Filesystem +#options CD9660 #ISO 9660 Filesystem +#options PROCFS #Process filesystem (requires PSEUDOFS) +options PSEUDOFS #Pseudo-filesystem framework +options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!] +options SCSI_DELAY=5000 #Delay (in ms) before probing SCSI +options KTRACE #ktrace(1) support +options SYSVSHM #SYSV-style shared memory +options SYSVMSG #SYSV-style message queues +options SYSVSEM #SYSV-style semaphores +options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions +options KBD_INSTALL_CDEV # install a CDEV entry in /dev + +options PREEMPTION + +# MMC/SD/SDIO Card slot support +device mmc # mmc/sd bus +device mmcsd # mmc/sd flash cards + +# I2C support +#device iicbus +#device iic +#device omap3_i2c + +device loop +device ether +device mii +device smcphy +device uart +device uart_ns8250 + +device gpio + +device pty + +# Debugging for use in -current +#options VERBOSE_SYSINIT #Enable verbose sysinit messages +options KDB +options DDB #Enable the kernel debugger +options INVARIANTS #Enable calls of extra sanity checking +options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS +options WITNESS #Enable checks to detect deadlocks and cycles +options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed +#options DIAGNOSTIC + +device md + +# The following enables MFS as root, this seems similar to an initramfs or initrd +# as used in Linux. +# options MD_ROOT +# options MD_ROOT_SIZE=7560 + +device random # Entropy device + +# USB support +device usb +options USB_DEBUG +#options USB_REQ_DEBUG +#options USB_VERBOSE +device ohci +device ehci +device umass +device scbus # SCSI bus (required for SCSI) +device da # Direct Access (disks) + + +# USB Ethernet support, requires miibus +device miibus +device axe # ASIX Electronics USB Ethernet + +# Flattened Device Tree +options FDT +options FDT_DTB_STATIC +makeoptions FDT_DTS_FILE=beaglebone.dts + From owner-svn-src-projects@FreeBSD.ORG Fri Feb 17 00:27:50 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AC2E2106564A; Fri, 17 Feb 2012 00:27:50 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 970AA8FC16; Fri, 17 Feb 2012 00:27:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1H0RorO041530; Fri, 17 Feb 2012 00:27:50 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1H0RoTi041495; Fri, 17 Feb 2012 00:27:50 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202170027.q1H0RoTi041495@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Fri, 17 Feb 2012 00:27:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231846 - in projects/multi-fibv6/head: . bin/sh cddl/contrib/opensolaris/cmd/zfs contrib/gcc contrib/llvm/tools/bugpoint contrib/llvm/tools/llc contrib/llvm/tools/lli contrib/llvm/tool... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Feb 2012 00:27:50 -0000 Author: bz Date: Fri Feb 17 00:27:48 2012 New Revision: 231846 URL: http://svn.freebsd.org/changeset/base/231846 Log: IFC @231845 Sponsored by: Cisco Systems, Inc. Added: projects/multi-fibv6/head/contrib/llvm/tools/bugpoint/ - copied from r231845, head/contrib/llvm/tools/bugpoint/ projects/multi-fibv6/head/contrib/llvm/tools/llc/ - copied from r231845, head/contrib/llvm/tools/llc/ projects/multi-fibv6/head/contrib/llvm/tools/lli/ - copied from r231845, head/contrib/llvm/tools/lli/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-ar/ - copied from r231845, head/contrib/llvm/tools/llvm-ar/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-as/ - copied from r231845, head/contrib/llvm/tools/llvm-as/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-bcanalyzer/ - copied from r231845, head/contrib/llvm/tools/llvm-bcanalyzer/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-diff/ - copied from r231845, head/contrib/llvm/tools/llvm-diff/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-dis/ - copied from r231845, head/contrib/llvm/tools/llvm-dis/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-extract/ - copied from r231845, head/contrib/llvm/tools/llvm-extract/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-ld/ - copied from r231845, head/contrib/llvm/tools/llvm-ld/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-link/ - copied from r231845, head/contrib/llvm/tools/llvm-link/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-mc/ - copied from r231845, head/contrib/llvm/tools/llvm-mc/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-nm/ - copied from r231845, head/contrib/llvm/tools/llvm-nm/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-objdump/ - copied from r231845, head/contrib/llvm/tools/llvm-objdump/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-prof/ - copied from r231845, head/contrib/llvm/tools/llvm-prof/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-ranlib/ - copied from r231845, head/contrib/llvm/tools/llvm-ranlib/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-rtdyld/ - copied from r231845, head/contrib/llvm/tools/llvm-rtdyld/ projects/multi-fibv6/head/contrib/llvm/tools/llvm-stub/ - copied from r231845, head/contrib/llvm/tools/llvm-stub/ projects/multi-fibv6/head/contrib/llvm/tools/macho-dump/ - copied from r231845, head/contrib/llvm/tools/macho-dump/ projects/multi-fibv6/head/contrib/llvm/tools/opt/ - copied from r231845, head/contrib/llvm/tools/opt/ projects/multi-fibv6/head/etc/rc.d/utx - copied unchanged from r231845, head/etc/rc.d/utx projects/multi-fibv6/head/lib/clang/libllvmarchive/ - copied from r231845, head/lib/clang/libllvmarchive/ projects/multi-fibv6/head/lib/clang/libllvmdebuginfo/ - copied from r231845, head/lib/clang/libllvmdebuginfo/ projects/multi-fibv6/head/lib/clang/libllvmexecutionengine/ - copied from r231845, head/lib/clang/libllvmexecutionengine/ projects/multi-fibv6/head/lib/clang/libllvminterpreter/ - copied from r231845, head/lib/clang/libllvminterpreter/ projects/multi-fibv6/head/lib/clang/libllvmjit/ - copied from r231845, head/lib/clang/libllvmjit/ projects/multi-fibv6/head/lib/clang/libllvmlinker/ - copied from r231845, head/lib/clang/libllvmlinker/ projects/multi-fibv6/head/lib/clang/libllvmmcdisassembler/ - copied from r231845, head/lib/clang/libllvmmcdisassembler/ projects/multi-fibv6/head/lib/clang/libllvmmcjit/ - copied from r231845, head/lib/clang/libllvmmcjit/ projects/multi-fibv6/head/lib/clang/libllvmobject/ - copied from r231845, head/lib/clang/libllvmobject/ projects/multi-fibv6/head/lib/clang/libllvmruntimedyld/ - copied from r231845, head/lib/clang/libllvmruntimedyld/ projects/multi-fibv6/head/lib/libc/arm/gen/__aeabi_read_tp.c - copied unchanged from r231845, head/lib/libc/arm/gen/__aeabi_read_tp.c projects/multi-fibv6/head/share/man/man3/offsetof.3 - copied unchanged from r231845, head/share/man/man3/offsetof.3 projects/multi-fibv6/head/sys/conf/WITHOUT_SOURCELESS - copied unchanged from r231845, head/sys/conf/WITHOUT_SOURCELESS projects/multi-fibv6/head/sys/conf/WITHOUT_SOURCELESS_HOST - copied unchanged from r231845, head/sys/conf/WITHOUT_SOURCELESS_HOST projects/multi-fibv6/head/sys/conf/WITHOUT_SOURCELESS_UCODE - copied unchanged from r231845, head/sys/conf/WITHOUT_SOURCELESS_UCODE projects/multi-fibv6/head/sys/contrib/dev/acpica/components/ - copied from r231845, head/sys/contrib/dev/acpica/components/ projects/multi-fibv6/head/sys/dev/oce/ - copied from r231845, head/sys/dev/oce/ projects/multi-fibv6/head/sys/modules/oce/ - copied from r231845, head/sys/modules/oce/ projects/multi-fibv6/head/sys/powerpc/ofw/ofw_pci.c - copied unchanged from r231845, head/sys/powerpc/ofw/ofw_pci.c projects/multi-fibv6/head/sys/powerpc/ofw/ofw_pci.h - copied unchanged from r231845, head/sys/powerpc/ofw/ofw_pci.h projects/multi-fibv6/head/tools/build/options/WITHOUT_SOURCELESS - copied unchanged from r231845, head/tools/build/options/WITHOUT_SOURCELESS projects/multi-fibv6/head/tools/build/options/WITHOUT_SOURCELESS_HOST - copied unchanged from r231845, head/tools/build/options/WITHOUT_SOURCELESS_HOST projects/multi-fibv6/head/tools/build/options/WITHOUT_SOURCELESS_UCODE - copied unchanged from r231845, head/tools/build/options/WITHOUT_SOURCELESS_UCODE projects/multi-fibv6/head/tools/build/options/WITH_CLANG_EXTRAS - copied unchanged from r231845, head/tools/build/options/WITH_CLANG_EXTRAS projects/multi-fibv6/head/tools/regression/bin/sh/builtins/hash4.0 - copied unchanged from r231845, head/tools/regression/bin/sh/builtins/hash4.0 projects/multi-fibv6/head/tools/test/hwpmc/ - copied from r231845, head/tools/test/hwpmc/ projects/multi-fibv6/head/tools/test/ptrace/ - copied from r231845, head/tools/test/ptrace/ projects/multi-fibv6/head/tools/tools/fixwhite/ - copied from r231845, head/tools/tools/fixwhite/ projects/multi-fibv6/head/usr.bin/clang/bugpoint/ - copied from r231845, head/usr.bin/clang/bugpoint/ projects/multi-fibv6/head/usr.bin/clang/llc/ - copied from r231845, head/usr.bin/clang/llc/ projects/multi-fibv6/head/usr.bin/clang/lli/ - copied from r231845, head/usr.bin/clang/lli/ projects/multi-fibv6/head/usr.bin/clang/llvm-ar/ - copied from r231845, head/usr.bin/clang/llvm-ar/ projects/multi-fibv6/head/usr.bin/clang/llvm-as/ - copied from r231845, head/usr.bin/clang/llvm-as/ projects/multi-fibv6/head/usr.bin/clang/llvm-bcanalyzer/ - copied from r231845, head/usr.bin/clang/llvm-bcanalyzer/ projects/multi-fibv6/head/usr.bin/clang/llvm-diff/ - copied from r231845, head/usr.bin/clang/llvm-diff/ projects/multi-fibv6/head/usr.bin/clang/llvm-dis/ - copied from r231845, head/usr.bin/clang/llvm-dis/ projects/multi-fibv6/head/usr.bin/clang/llvm-extract/ - copied from r231845, head/usr.bin/clang/llvm-extract/ projects/multi-fibv6/head/usr.bin/clang/llvm-ld/ - copied from r231845, head/usr.bin/clang/llvm-ld/ projects/multi-fibv6/head/usr.bin/clang/llvm-link/ - copied from r231845, head/usr.bin/clang/llvm-link/ projects/multi-fibv6/head/usr.bin/clang/llvm-mc/ - copied from r231845, head/usr.bin/clang/llvm-mc/ projects/multi-fibv6/head/usr.bin/clang/llvm-nm/ - copied from r231845, head/usr.bin/clang/llvm-nm/ projects/multi-fibv6/head/usr.bin/clang/llvm-objdump/ - copied from r231845, head/usr.bin/clang/llvm-objdump/ projects/multi-fibv6/head/usr.bin/clang/llvm-prof/ - copied from r231845, head/usr.bin/clang/llvm-prof/ projects/multi-fibv6/head/usr.bin/clang/llvm-ranlib/ - copied from r231845, head/usr.bin/clang/llvm-ranlib/ projects/multi-fibv6/head/usr.bin/clang/llvm-rtdyld/ - copied from r231845, head/usr.bin/clang/llvm-rtdyld/ projects/multi-fibv6/head/usr.bin/clang/llvm-stub/ - copied from r231845, head/usr.bin/clang/llvm-stub/ projects/multi-fibv6/head/usr.bin/clang/macho-dump/ - copied from r231845, head/usr.bin/clang/macho-dump/ projects/multi-fibv6/head/usr.bin/clang/opt/ - copied from r231845, head/usr.bin/clang/opt/ projects/multi-fibv6/head/usr.sbin/utx/ - copied from r231845, head/usr.sbin/utx/ Deleted: projects/multi-fibv6/head/sys/contrib/dev/acpica/debugger/ projects/multi-fibv6/head/sys/contrib/dev/acpica/disassembler/ projects/multi-fibv6/head/sys/contrib/dev/acpica/dispatcher/ projects/multi-fibv6/head/sys/contrib/dev/acpica/events/ projects/multi-fibv6/head/sys/contrib/dev/acpica/executer/ projects/multi-fibv6/head/sys/contrib/dev/acpica/hardware/ projects/multi-fibv6/head/sys/contrib/dev/acpica/namespace/ projects/multi-fibv6/head/sys/contrib/dev/acpica/parser/ projects/multi-fibv6/head/sys/contrib/dev/acpica/resources/ projects/multi-fibv6/head/sys/contrib/dev/acpica/tables/ projects/multi-fibv6/head/sys/contrib/dev/acpica/utilities/ projects/multi-fibv6/head/usr.sbin/utxrm/ Modified: projects/multi-fibv6/head/Makefile projects/multi-fibv6/head/UPDATING projects/multi-fibv6/head/bin/sh/eval.c projects/multi-fibv6/head/bin/sh/exec.c projects/multi-fibv6/head/bin/sh/jobs.c projects/multi-fibv6/head/bin/sh/jobs.h projects/multi-fibv6/head/bin/sh/var.c projects/multi-fibv6/head/bin/sh/var.h projects/multi-fibv6/head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/multi-fibv6/head/contrib/gcc/gcc.c projects/multi-fibv6/head/crypto/openssh/auth2.c projects/multi-fibv6/head/crypto/openssh/channels.c projects/multi-fibv6/head/crypto/openssh/channels.h projects/multi-fibv6/head/crypto/openssh/kex.c projects/multi-fibv6/head/crypto/openssh/loginrec.c (contents, props changed) projects/multi-fibv6/head/crypto/openssh/readconf.c projects/multi-fibv6/head/crypto/openssh/readconf.h projects/multi-fibv6/head/crypto/openssh/servconf.c projects/multi-fibv6/head/crypto/openssh/sftp.1 projects/multi-fibv6/head/crypto/openssh/ssh.c projects/multi-fibv6/head/crypto/openssh/sshd.c projects/multi-fibv6/head/crypto/openssh/sshd_config.5 projects/multi-fibv6/head/crypto/openssh/version.h projects/multi-fibv6/head/etc/Makefile projects/multi-fibv6/head/etc/defaults/periodic.conf projects/multi-fibv6/head/etc/defaults/rc.conf projects/multi-fibv6/head/etc/devd/usb.conf projects/multi-fibv6/head/etc/periodic/daily/404.status-zfs projects/multi-fibv6/head/etc/rc.d/LOGIN projects/multi-fibv6/head/etc/rc.d/Makefile projects/multi-fibv6/head/etc/rc.d/SERVERS projects/multi-fibv6/head/etc/rc.d/addswap projects/multi-fibv6/head/etc/rc.d/amd projects/multi-fibv6/head/etc/rc.d/apmd projects/multi-fibv6/head/etc/rc.d/cleanvar projects/multi-fibv6/head/etc/rc.d/devfs projects/multi-fibv6/head/etc/rc.d/keyserv projects/multi-fibv6/head/etc/rc.d/lockd projects/multi-fibv6/head/etc/rc.d/mountd projects/multi-fibv6/head/etc/rc.d/nfsd projects/multi-fibv6/head/etc/rc.d/routing projects/multi-fibv6/head/etc/rc.d/statd projects/multi-fibv6/head/etc/rc.d/var projects/multi-fibv6/head/etc/rc.d/watchdogd projects/multi-fibv6/head/etc/rc.d/ypbind projects/multi-fibv6/head/etc/rc.d/yppasswdd projects/multi-fibv6/head/etc/rc.d/ypserv projects/multi-fibv6/head/etc/rc.d/ypset projects/multi-fibv6/head/etc/rc.d/ypupdated projects/multi-fibv6/head/etc/rc.d/ypxfrd projects/multi-fibv6/head/etc/rc.resume projects/multi-fibv6/head/etc/rc.subr projects/multi-fibv6/head/etc/rc.suspend projects/multi-fibv6/head/gnu/usr.bin/cc/cc_tools/auto-host.h projects/multi-fibv6/head/include/rpc/Makefile projects/multi-fibv6/head/include/rpc/svc.h projects/multi-fibv6/head/include/rpcsvc/Makefile projects/multi-fibv6/head/lib/clang/Makefile projects/multi-fibv6/head/lib/clang/libllvmanalysis/Makefile projects/multi-fibv6/head/lib/clang/libllvmipa/Makefile projects/multi-fibv6/head/lib/clang/libllvmipo/Makefile projects/multi-fibv6/head/lib/clang/libllvmmc/Makefile projects/multi-fibv6/head/lib/clang/libllvmscalaropts/Makefile projects/multi-fibv6/head/lib/clang/libllvmsupport/Makefile projects/multi-fibv6/head/lib/clang/libllvmtransformutils/Makefile projects/multi-fibv6/head/lib/clang/libllvmx86disassembler/Makefile projects/multi-fibv6/head/lib/libc/arm/gen/Makefile.inc projects/multi-fibv6/head/lib/libc/db/man/hash.3 projects/multi-fibv6/head/lib/libc/gen/arc4random.3 projects/multi-fibv6/head/lib/libc/gen/directory.3 projects/multi-fibv6/head/lib/libc/gen/getutxent.3 projects/multi-fibv6/head/lib/libc/gen/getutxent.c projects/multi-fibv6/head/lib/libc/gen/sysctl.3 projects/multi-fibv6/head/lib/libc/locale/btowc.3 projects/multi-fibv6/head/lib/libc/net/eui64.3 projects/multi-fibv6/head/lib/libc/net/getifaddrs.c projects/multi-fibv6/head/lib/libc/net/nsdispatch.3 projects/multi-fibv6/head/lib/libc/powerpc/SYS.h projects/multi-fibv6/head/lib/libc/powerpc/gen/setjmp.S projects/multi-fibv6/head/lib/libc/powerpc64/SYS.h projects/multi-fibv6/head/lib/libc/powerpc64/gen/setjmp.S projects/multi-fibv6/head/lib/libc/rpc/Makefile.inc projects/multi-fibv6/head/lib/libc/rpc/rpc.3 projects/multi-fibv6/head/lib/libc/rpc/rpc_clnt_create.3 projects/multi-fibv6/head/lib/libc/string/strerror.3 projects/multi-fibv6/head/lib/libc/sys/getdirentries.2 projects/multi-fibv6/head/lib/libc/sys/jail.2 projects/multi-fibv6/head/lib/libc/sys/kqueue.2 projects/multi-fibv6/head/lib/libc/sys/nfssvc.2 projects/multi-fibv6/head/lib/libc/yp/Makefile.inc projects/multi-fibv6/head/lib/libcam/cam.3 projects/multi-fibv6/head/lib/libcam/cam_cdbparse.3 projects/multi-fibv6/head/lib/libdevstat/devstat.3 projects/multi-fibv6/head/lib/libipsec/pfkey.c projects/multi-fibv6/head/lib/libprocstat/common_kvm.c projects/multi-fibv6/head/lib/libradius/libradius.3 projects/multi-fibv6/head/lib/librpcsvc/Makefile projects/multi-fibv6/head/lib/libthr/arch/arm/arm/pthread_md.c projects/multi-fibv6/head/lib/libthr/arch/arm/include/pthread_md.h projects/multi-fibv6/head/lib/libthr/arch/mips/include/pthread_md.h projects/multi-fibv6/head/lib/libthr/arch/mips/mips/pthread_md.c projects/multi-fibv6/head/lib/libthr/thread/thr_list.c projects/multi-fibv6/head/lib/libthr/thread/thr_private.h projects/multi-fibv6/head/lib/libutil/login_class.c projects/multi-fibv6/head/lib/libutil/pidfile.3 projects/multi-fibv6/head/lib/libutil/pidfile.c projects/multi-fibv6/head/lib/libutil/pw_util.c projects/multi-fibv6/head/lib/libypclnt/Makefile projects/multi-fibv6/head/libexec/rtld-elf/arm/reloc.c projects/multi-fibv6/head/libexec/rtld-elf/arm/rtld_machdep.h projects/multi-fibv6/head/libexec/rtld-elf/mips/reloc.c projects/multi-fibv6/head/libexec/rtld-elf/mips/rtld_machdep.h projects/multi-fibv6/head/libexec/rtld-elf/rtld.c projects/multi-fibv6/head/libexec/ypxfr/Makefile projects/multi-fibv6/head/release/picobsd/tinyware/passwd/Makefile projects/multi-fibv6/head/release/rc.local projects/multi-fibv6/head/rescue/rescue/Makefile projects/multi-fibv6/head/sbin/bsdlabel/bsdlabel.8 projects/multi-fibv6/head/sbin/fsck_ffs/fsck_ffs.8 projects/multi-fibv6/head/sbin/fsck_ffs/setup.c projects/multi-fibv6/head/sbin/fsdb/fsdbutil.c projects/multi-fibv6/head/sbin/hastd/parse.y projects/multi-fibv6/head/sbin/hastd/primary.c projects/multi-fibv6/head/sbin/hastd/rangelock.c projects/multi-fibv6/head/sbin/ifconfig/Makefile projects/multi-fibv6/head/sbin/ifconfig/ifconfig.c projects/multi-fibv6/head/sbin/init/init.8 projects/multi-fibv6/head/sbin/init/init.c projects/multi-fibv6/head/sbin/ipfw/ipfw.8 projects/multi-fibv6/head/sbin/ipfw/ipfw2.c projects/multi-fibv6/head/sbin/newfs_msdos/newfs_msdos.8 projects/multi-fibv6/head/sbin/reboot/nextboot.sh projects/multi-fibv6/head/sbin/route/route.c projects/multi-fibv6/head/share/man/man3/Makefile projects/multi-fibv6/head/share/man/man4/ada.4 projects/multi-fibv6/head/share/man/man4/agp.4 projects/multi-fibv6/head/share/man/man4/cd.4 projects/multi-fibv6/head/share/man/man4/da.4 projects/multi-fibv6/head/share/man/man4/ed.4 projects/multi-fibv6/head/share/man/man4/icmp6.4 projects/multi-fibv6/head/share/man/man4/ip6.4 projects/multi-fibv6/head/share/man/man4/isci.4 (contents, props changed) projects/multi-fibv6/head/share/man/man4/lmc.4 projects/multi-fibv6/head/share/man/man4/mem.4 projects/multi-fibv6/head/share/man/man4/mps.4 projects/multi-fibv6/head/share/man/man4/mtio.4 projects/multi-fibv6/head/share/man/man4/natm.4 projects/multi-fibv6/head/share/man/man4/net80211.4 projects/multi-fibv6/head/share/man/man4/ng_async.4 projects/multi-fibv6/head/share/man/man4/ng_bridge.4 projects/multi-fibv6/head/share/man/man4/ng_btsocket.4 projects/multi-fibv6/head/share/man/man4/ng_car.4 projects/multi-fibv6/head/share/man/man4/ng_ccatm.4 projects/multi-fibv6/head/share/man/man4/ng_cisco.4 projects/multi-fibv6/head/share/man/man4/ng_etf.4 projects/multi-fibv6/head/share/man/man4/ng_hci.4 projects/multi-fibv6/head/share/man/man4/ng_l2cap.4 projects/multi-fibv6/head/share/man/man4/ng_l2tp.4 projects/multi-fibv6/head/share/man/man4/ng_mppc.4 projects/multi-fibv6/head/share/man/man4/ng_netflow.4 projects/multi-fibv6/head/share/man/man4/ng_one2many.4 projects/multi-fibv6/head/share/man/man4/ng_ppp.4 projects/multi-fibv6/head/share/man/man4/ng_pppoe.4 projects/multi-fibv6/head/share/man/man4/ng_pptpgre.4 projects/multi-fibv6/head/share/man/man4/ppi.4 projects/multi-fibv6/head/share/man/man4/sbp.4 projects/multi-fibv6/head/share/man/man4/sdhci.4 projects/multi-fibv6/head/share/man/man4/sfxge.4 projects/multi-fibv6/head/share/man/man4/tcp.4 projects/multi-fibv6/head/share/man/man4/u3g.4 projects/multi-fibv6/head/share/man/man4/usb_quirk.4 projects/multi-fibv6/head/share/man/man5/devfs.5 projects/multi-fibv6/head/share/man/man5/fs.5 projects/multi-fibv6/head/share/man/man5/periodic.conf.5 projects/multi-fibv6/head/share/man/man5/portindex.5 projects/multi-fibv6/head/share/man/man5/rc.conf.5 projects/multi-fibv6/head/share/man/man5/src.conf.5 projects/multi-fibv6/head/share/man/man7/hier.7 projects/multi-fibv6/head/share/man/man7/ports.7 projects/multi-fibv6/head/share/man/man7/security.7 projects/multi-fibv6/head/share/man/man9/DEVICE_PROBE.9 projects/multi-fibv6/head/share/man/man9/MD5.9 projects/multi-fibv6/head/share/man/man9/bios.9 projects/multi-fibv6/head/share/man/man9/bus_space.9 projects/multi-fibv6/head/share/man/man9/crypto.9 projects/multi-fibv6/head/share/man/man9/device_set_flags.9 projects/multi-fibv6/head/share/man/man9/devstat.9 projects/multi-fibv6/head/share/man/man9/devtoname.9 projects/multi-fibv6/head/share/man/man9/eventtimers.9 projects/multi-fibv6/head/share/man/man9/get_cyclecount.9 projects/multi-fibv6/head/share/man/man9/mbchain.9 projects/multi-fibv6/head/share/man/man9/mbuf_tags.9 projects/multi-fibv6/head/share/man/man9/mdchain.9 projects/multi-fibv6/head/share/man/man9/netisr.9 projects/multi-fibv6/head/share/man/man9/random.9 projects/multi-fibv6/head/share/man/man9/rijndael.9 projects/multi-fibv6/head/share/man/man9/zone.9 projects/multi-fibv6/head/share/misc/committers-ports.dot projects/multi-fibv6/head/share/mk/bsd.kmod.mk projects/multi-fibv6/head/share/mk/bsd.own.mk projects/multi-fibv6/head/sys/amd64/acpica/acpi_switch.S projects/multi-fibv6/head/sys/amd64/acpica/acpi_wakecode.S projects/multi-fibv6/head/sys/amd64/acpica/acpi_wakeup.c projects/multi-fibv6/head/sys/amd64/amd64/apic_vector.S projects/multi-fibv6/head/sys/amd64/amd64/machdep.c projects/multi-fibv6/head/sys/amd64/amd64/mp_machdep.c projects/multi-fibv6/head/sys/amd64/amd64/vm_machdep.c projects/multi-fibv6/head/sys/boot/ficl/fileaccess.c projects/multi-fibv6/head/sys/boot/ficl/i386/sysdep.h projects/multi-fibv6/head/sys/boot/pc98/loader/Makefile projects/multi-fibv6/head/sys/boot/powerpc/boot1.chrp/Makefile projects/multi-fibv6/head/sys/boot/powerpc/boot1.chrp/boot1.c projects/multi-fibv6/head/sys/cam/ctl/ctl_frontend_cam_sim.c projects/multi-fibv6/head/sys/cam/scsi/scsi_xpt.c projects/multi-fibv6/head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c projects/multi-fibv6/head/sys/compat/freebsd32/freebsd32_signal.h projects/multi-fibv6/head/sys/compat/linux/linux_stats.c projects/multi-fibv6/head/sys/compat/linux/linux_util.c projects/multi-fibv6/head/sys/compat/linux/linux_util.h projects/multi-fibv6/head/sys/conf/NOTES projects/multi-fibv6/head/sys/conf/files projects/multi-fibv6/head/sys/conf/files.powerpc projects/multi-fibv6/head/sys/conf/newvers.sh projects/multi-fibv6/head/sys/contrib/dev/acpica/acpica_prep.sh projects/multi-fibv6/head/sys/contrib/dev/acpica/changes.txt (contents, props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/compiler/aslrestype2s.c projects/multi-fibv6/head/sys/contrib/dev/acpica/compiler/aslstubs.c projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acconfig.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acdebug.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acevents.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acexcep.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acglobal.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/achware.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acmacros.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acpiosxf.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/acpixf.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/actables.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/actbl.h projects/multi-fibv6/head/sys/contrib/dev/acpica/include/actypes.h projects/multi-fibv6/head/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c projects/multi-fibv6/head/sys/dev/aac/aac.c projects/multi-fibv6/head/sys/dev/acpica/Osd/OsdMemory.c projects/multi-fibv6/head/sys/dev/acpica/Osd/OsdSynch.c projects/multi-fibv6/head/sys/dev/acpica/Osd/OsdTable.c projects/multi-fibv6/head/sys/dev/acpica/acpi.c projects/multi-fibv6/head/sys/dev/acpica/acpi_ec.c projects/multi-fibv6/head/sys/dev/acpica/acpi_hpet.c projects/multi-fibv6/head/sys/dev/acpica/acpi_timer.c projects/multi-fibv6/head/sys/dev/acpica/acpivar.h projects/multi-fibv6/head/sys/dev/ata/ata-queue.c projects/multi-fibv6/head/sys/dev/ath/ath_dfs/null/dfs_null.c projects/multi-fibv6/head/sys/dev/ath/ath_hal/ah.h projects/multi-fibv6/head/sys/dev/ath/ath_hal/ar5416/ar5416.h projects/multi-fibv6/head/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/multi-fibv6/head/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c projects/multi-fibv6/head/sys/dev/ath/if_ath.c projects/multi-fibv6/head/sys/dev/ath/if_athvar.h projects/multi-fibv6/head/sys/dev/bge/if_bge.c projects/multi-fibv6/head/sys/dev/cxgb/cxgb_adapter.h projects/multi-fibv6/head/sys/dev/cxgb/cxgb_main.c projects/multi-fibv6/head/sys/dev/cxgb/cxgb_sge.c projects/multi-fibv6/head/sys/dev/cxgbe/adapter.h projects/multi-fibv6/head/sys/dev/cxgbe/common/t4_hw.c projects/multi-fibv6/head/sys/dev/cxgbe/t4_l2t.c projects/multi-fibv6/head/sys/dev/cxgbe/t4_l2t.h projects/multi-fibv6/head/sys/dev/cxgbe/t4_main.c projects/multi-fibv6/head/sys/dev/e1000/if_em.c projects/multi-fibv6/head/sys/dev/e1000/if_igb.c projects/multi-fibv6/head/sys/dev/e1000/if_lem.c projects/multi-fibv6/head/sys/dev/fb/vesa.c projects/multi-fibv6/head/sys/dev/fb/vesa.h projects/multi-fibv6/head/sys/dev/isci/isci.h (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/isci_io_request.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/isci_remote_device.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_abort_task_set.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_controller.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_request.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_controller.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_controller_state_handlers.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_domain.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_io_request.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_ready_substates.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_io_request.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_remote_device.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_io_request.c (contents, props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_task_request.c (contents, props changed) projects/multi-fibv6/head/sys/dev/iscsi/initiator/isc_sm.c projects/multi-fibv6/head/sys/dev/ixgbe/ixgbe.c projects/multi-fibv6/head/sys/dev/mps/mps.c projects/multi-fibv6/head/sys/dev/mps/mps_pci.c projects/multi-fibv6/head/sys/dev/mps/mps_sas.c projects/multi-fibv6/head/sys/dev/mps/mps_sas.h projects/multi-fibv6/head/sys/dev/mps/mps_sas_lsi.c projects/multi-fibv6/head/sys/dev/mps/mps_user.c projects/multi-fibv6/head/sys/dev/mps/mpsvar.h projects/multi-fibv6/head/sys/dev/mpt/mpilib/mpi_type.h projects/multi-fibv6/head/sys/dev/mpt/mpt.c projects/multi-fibv6/head/sys/dev/mpt/mpt.h projects/multi-fibv6/head/sys/dev/mpt/mpt_cam.c projects/multi-fibv6/head/sys/dev/mpt/mpt_pci.c projects/multi-fibv6/head/sys/dev/mpt/mpt_reg.h projects/multi-fibv6/head/sys/dev/netmap/if_em_netmap.h projects/multi-fibv6/head/sys/dev/netmap/if_igb_netmap.h projects/multi-fibv6/head/sys/dev/netmap/if_lem_netmap.h projects/multi-fibv6/head/sys/dev/netmap/if_re_netmap.h projects/multi-fibv6/head/sys/dev/netmap/ixgbe_netmap.h projects/multi-fibv6/head/sys/dev/netmap/netmap.c projects/multi-fibv6/head/sys/dev/netmap/netmap_kern.h projects/multi-fibv6/head/sys/dev/pci/pci.c projects/multi-fibv6/head/sys/dev/re/if_re.c projects/multi-fibv6/head/sys/dev/sdhci/sdhci.c projects/multi-fibv6/head/sys/dev/sdhci/sdhci.h projects/multi-fibv6/head/sys/dev/sound/pci/hda/hdacc.c projects/multi-fibv6/head/sys/dev/sound/pcm/mixer.c projects/multi-fibv6/head/sys/dev/sound/pcm/sound.c projects/multi-fibv6/head/sys/dev/usb/serial/u3g.c projects/multi-fibv6/head/sys/dev/usb/usb_dev.c projects/multi-fibv6/head/sys/dev/usb/usbdevs projects/multi-fibv6/head/sys/dev/vge/if_vge.c projects/multi-fibv6/head/sys/dev/wtap/if_wtap.c projects/multi-fibv6/head/sys/dev/wtap/if_wtap_module.c projects/multi-fibv6/head/sys/dev/xen/blkback/blkback.c projects/multi-fibv6/head/sys/dev/xen/blkfront/blkfront.c projects/multi-fibv6/head/sys/dev/xen/blkfront/block.h projects/multi-fibv6/head/sys/fs/devfs/devfs.h projects/multi-fibv6/head/sys/fs/devfs/devfs_devs.c projects/multi-fibv6/head/sys/fs/devfs/devfs_rule.c projects/multi-fibv6/head/sys/fs/devfs/devfs_vfsops.c projects/multi-fibv6/head/sys/fs/ext2fs/ext2_dinode.h projects/multi-fibv6/head/sys/fs/ext2fs/ext2fs.h projects/multi-fibv6/head/sys/fs/ext2fs/inode.h projects/multi-fibv6/head/sys/fs/nfs/nfs_commonport.c projects/multi-fibv6/head/sys/fs/nfsclient/nfs_clstate.c projects/multi-fibv6/head/sys/fs/nfsclient/nfs_clvnops.c projects/multi-fibv6/head/sys/fs/nfsserver/nfs_nfsdport.c projects/multi-fibv6/head/sys/fs/nullfs/null_vfsops.c projects/multi-fibv6/head/sys/fs/nwfs/nwfs_vnops.c projects/multi-fibv6/head/sys/fs/smbfs/smbfs_vnops.c projects/multi-fibv6/head/sys/fs/tmpfs/tmpfs_vnops.c projects/multi-fibv6/head/sys/geom/journal/g_journal.c projects/multi-fibv6/head/sys/geom/part/g_part.c projects/multi-fibv6/head/sys/geom/part/g_part_apm.c projects/multi-fibv6/head/sys/geom/part/g_part_ebr.c projects/multi-fibv6/head/sys/geom/part/g_part_mbr.c projects/multi-fibv6/head/sys/ia64/ia64/vm_machdep.c projects/multi-fibv6/head/sys/kern/kern_conf.c projects/multi-fibv6/head/sys/kern/kern_fork.c projects/multi-fibv6/head/sys/kern/kern_jail.c projects/multi-fibv6/head/sys/kern/kern_kthread.c projects/multi-fibv6/head/sys/kern/kern_tc.c projects/multi-fibv6/head/sys/kern/subr_mchain.c projects/multi-fibv6/head/sys/kern/subr_msgbuf.c projects/multi-fibv6/head/sys/kern/subr_syscall.c projects/multi-fibv6/head/sys/kern/sys_process.c projects/multi-fibv6/head/sys/kern/sysv_shm.c projects/multi-fibv6/head/sys/kern/tty.c projects/multi-fibv6/head/sys/kern/tty_info.c projects/multi-fibv6/head/sys/kern/tty_ttydisc.c projects/multi-fibv6/head/sys/kern/vfs_aio.c projects/multi-fibv6/head/sys/kern/vfs_cache.c projects/multi-fibv6/head/sys/kern/vfs_cluster.c projects/multi-fibv6/head/sys/kern/vfs_mount.c projects/multi-fibv6/head/sys/kern/vfs_subr.c projects/multi-fibv6/head/sys/kern/vfs_syscalls.c projects/multi-fibv6/head/sys/mips/include/elf.h projects/multi-fibv6/head/sys/mips/include/mips_opcode.h projects/multi-fibv6/head/sys/mips/mips/locore.S projects/multi-fibv6/head/sys/mips/mips/trap.c projects/multi-fibv6/head/sys/mips/mips/vm_machdep.c projects/multi-fibv6/head/sys/modules/Makefile projects/multi-fibv6/head/sys/modules/acpi/acpi/Makefile projects/multi-fibv6/head/sys/modules/drm/Makefile projects/multi-fibv6/head/sys/modules/ipdivert/Makefile projects/multi-fibv6/head/sys/modules/isci/Makefile (contents, props changed) projects/multi-fibv6/head/sys/modules/kgssapi/Makefile projects/multi-fibv6/head/sys/modules/kgssapi_krb5/Makefile projects/multi-fibv6/head/sys/modules/sound/driver/Makefile projects/multi-fibv6/head/sys/modules/usb/Makefile projects/multi-fibv6/head/sys/modules/wi/Makefile projects/multi-fibv6/head/sys/modules/wlan/Makefile projects/multi-fibv6/head/sys/net/if.c projects/multi-fibv6/head/sys/net/if.h projects/multi-fibv6/head/sys/net/if_bridge.c projects/multi-fibv6/head/sys/net/if_var.h projects/multi-fibv6/head/sys/net/netmap.h projects/multi-fibv6/head/sys/net/netmap_user.h projects/multi-fibv6/head/sys/net/rtsock.c projects/multi-fibv6/head/sys/net/zlib.h projects/multi-fibv6/head/sys/net80211/ieee80211.h projects/multi-fibv6/head/sys/net80211/ieee80211_mesh.c projects/multi-fibv6/head/sys/net80211/ieee80211_mesh.h projects/multi-fibv6/head/sys/netgraph/netgraph.h projects/multi-fibv6/head/sys/netgraph/ng_base.c projects/multi-fibv6/head/sys/netgraph/ng_cisco.c projects/multi-fibv6/head/sys/netgraph/ng_cisco.h projects/multi-fibv6/head/sys/netgraph/ng_device.c projects/multi-fibv6/head/sys/netgraph/ng_socket.c projects/multi-fibv6/head/sys/netinet/ip_carp.c projects/multi-fibv6/head/sys/netinet/ipfw/ip_fw2.c projects/multi-fibv6/head/sys/netinet/ipfw/ip_fw_sockopt.c projects/multi-fibv6/head/sys/netinet/sctp_output.c projects/multi-fibv6/head/sys/netinet/sctp_structs.h projects/multi-fibv6/head/sys/netinet/tcp.h projects/multi-fibv6/head/sys/netinet/tcp_input.c projects/multi-fibv6/head/sys/netinet/tcp_output.c projects/multi-fibv6/head/sys/netinet/tcp_seq.h projects/multi-fibv6/head/sys/netinet/tcp_syncache.c projects/multi-fibv6/head/sys/netinet/tcp_timer.c projects/multi-fibv6/head/sys/netinet/tcp_timer.h projects/multi-fibv6/head/sys/netinet/tcp_timewait.c projects/multi-fibv6/head/sys/netinet/tcp_usrreq.c projects/multi-fibv6/head/sys/netinet/tcp_var.h projects/multi-fibv6/head/sys/nfsclient/nfs_vnops.c projects/multi-fibv6/head/sys/pc98/conf/GENERIC projects/multi-fibv6/head/sys/powerpc/aim/swtch64.S projects/multi-fibv6/head/sys/powerpc/include/asm.h projects/multi-fibv6/head/sys/powerpc/ofw/ofw_pcib_pci.c projects/multi-fibv6/head/sys/powerpc/ofw/ofw_syscons.c projects/multi-fibv6/head/sys/powerpc/powermac/cpcht.c projects/multi-fibv6/head/sys/powerpc/powermac/grackle.c projects/multi-fibv6/head/sys/powerpc/powermac/gracklevar.h projects/multi-fibv6/head/sys/powerpc/powermac/smusat.c projects/multi-fibv6/head/sys/powerpc/powermac/uninorthpci.c projects/multi-fibv6/head/sys/powerpc/powermac/uninorthvar.h projects/multi-fibv6/head/sys/powerpc/ps3/ps3_syscons.c projects/multi-fibv6/head/sys/security/mac_biba/mac_biba.c projects/multi-fibv6/head/sys/security/mac_lomac/mac_lomac.c projects/multi-fibv6/head/sys/security/mac_mls/mac_mls.c projects/multi-fibv6/head/sys/sys/conf.h projects/multi-fibv6/head/sys/sys/diskmbr.h projects/multi-fibv6/head/sys/sys/elf_common.h projects/multi-fibv6/head/sys/sys/jail.h projects/multi-fibv6/head/sys/sys/msgbuf.h projects/multi-fibv6/head/sys/sys/param.h projects/multi-fibv6/head/sys/sys/proc.h projects/multi-fibv6/head/sys/sys/ptrace.h projects/multi-fibv6/head/sys/sys/socket.h projects/multi-fibv6/head/sys/sys/ttycom.h projects/multi-fibv6/head/sys/sys/ttydefaults.h projects/multi-fibv6/head/sys/sys/vnode.h projects/multi-fibv6/head/sys/ufs/ffs/ffs_softdep.c projects/multi-fibv6/head/sys/ufs/ffs/ffs_vfsops.c projects/multi-fibv6/head/sys/ufs/ffs/ffs_vnops.c projects/multi-fibv6/head/sys/ufs/ufs/inode.h projects/multi-fibv6/head/sys/ufs/ufs/ufs_acl.c projects/multi-fibv6/head/sys/ufs/ufs/ufs_vnops.c projects/multi-fibv6/head/sys/vm/swap_pager.c projects/multi-fibv6/head/sys/vm/vm_map.c projects/multi-fibv6/head/sys/vm/vm_map.h projects/multi-fibv6/head/sys/vm/vm_mmap.c projects/multi-fibv6/head/sys/xen/interface/io/blkif.h projects/multi-fibv6/head/sys/xen/xenbus/xenbusvar.h projects/multi-fibv6/head/tools/build/mk/OptionalObsoleteFiles.inc projects/multi-fibv6/head/tools/build/options/WITHOUT_UTMPX projects/multi-fibv6/head/tools/regression/usr.bin/make/execution/joberr/expected.stdout.1 projects/multi-fibv6/head/tools/tools/ath/athradar/athradar.c projects/multi-fibv6/head/tools/tools/netmap/pkt-gen.c projects/multi-fibv6/head/usr.bin/calendar/calendars/calendar.freebsd projects/multi-fibv6/head/usr.bin/chpass/util.c projects/multi-fibv6/head/usr.bin/clang/Makefile projects/multi-fibv6/head/usr.bin/elfdump/elfdump.c projects/multi-fibv6/head/usr.bin/fstat/fstat.c projects/multi-fibv6/head/usr.bin/gencat/gencat.c projects/multi-fibv6/head/usr.bin/login/login_fbtab.c projects/multi-fibv6/head/usr.bin/m4/lib/ohash_interval.3 projects/multi-fibv6/head/usr.bin/make/job.c projects/multi-fibv6/head/usr.bin/rpcgen/rpc_main.c projects/multi-fibv6/head/usr.bin/rpcgen/rpcgen.1 projects/multi-fibv6/head/usr.bin/systat/icmp.c projects/multi-fibv6/head/usr.bin/systat/ifstat.c projects/multi-fibv6/head/usr.bin/systat/iostat.c projects/multi-fibv6/head/usr.bin/systat/ip.c projects/multi-fibv6/head/usr.bin/systat/netcmds.c projects/multi-fibv6/head/usr.bin/systat/netstat.c projects/multi-fibv6/head/usr.bin/systat/pigs.c projects/multi-fibv6/head/usr.bin/systat/tcp.c projects/multi-fibv6/head/usr.bin/touch/touch.1 projects/multi-fibv6/head/usr.bin/touch/touch.c projects/multi-fibv6/head/usr.bin/who/who.1 projects/multi-fibv6/head/usr.bin/who/who.c projects/multi-fibv6/head/usr.bin/write/write.1 projects/multi-fibv6/head/usr.bin/write/write.c projects/multi-fibv6/head/usr.sbin/IPXrouted/tables.c projects/multi-fibv6/head/usr.sbin/Makefile projects/multi-fibv6/head/usr.sbin/acpi/Makefile.inc projects/multi-fibv6/head/usr.sbin/acpi/acpidb/Makefile projects/multi-fibv6/head/usr.sbin/acpi/iasl/Makefile projects/multi-fibv6/head/usr.sbin/amd/Makefile.inc projects/multi-fibv6/head/usr.sbin/boot0cfg/boot0cfg.8 projects/multi-fibv6/head/usr.sbin/bootparamd/bootparamd/Makefile projects/multi-fibv6/head/usr.sbin/bootparamd/callbootd/Makefile projects/multi-fibv6/head/usr.sbin/bsnmpd/modules/snmp_netgraph/snmp_netgraph.3 projects/multi-fibv6/head/usr.sbin/gssd/Makefile projects/multi-fibv6/head/usr.sbin/jail/jail.8 projects/multi-fibv6/head/usr.sbin/keyserv/Makefile projects/multi-fibv6/head/usr.sbin/lpr/lpc/cmds.c projects/multi-fibv6/head/usr.sbin/periodic/periodic.sh projects/multi-fibv6/head/usr.sbin/pkg_install/create/perform.c projects/multi-fibv6/head/usr.sbin/pw/cpdir.c projects/multi-fibv6/head/usr.sbin/rpc.lockd/Makefile projects/multi-fibv6/head/usr.sbin/rpc.statd/Makefile projects/multi-fibv6/head/usr.sbin/rpc.yppasswdd/Makefile projects/multi-fibv6/head/usr.sbin/rpc.ypupdated/Makefile projects/multi-fibv6/head/usr.sbin/rpc.ypxfrd/Makefile projects/multi-fibv6/head/usr.sbin/tzsetup/tzsetup.c projects/multi-fibv6/head/usr.sbin/usbdump/usbdump.8 projects/multi-fibv6/head/usr.sbin/usbdump/usbdump.c projects/multi-fibv6/head/usr.sbin/vipw/vipw.8 projects/multi-fibv6/head/usr.sbin/wpa/hostapd/hostapd.8 projects/multi-fibv6/head/usr.sbin/yppush/Makefile projects/multi-fibv6/head/usr.sbin/ypserv/Makefile Directory Properties: projects/multi-fibv6/head/ (props changed) projects/multi-fibv6/head/cddl/contrib/opensolaris/ (props changed) projects/multi-fibv6/head/contrib/gcc/ (props changed) projects/multi-fibv6/head/contrib/llvm/ (props changed) projects/multi-fibv6/head/crypto/openssh/ (props changed) projects/multi-fibv6/head/gnu/usr.bin/cc/cc_tools/ (props changed) projects/multi-fibv6/head/lib/libc/ (props changed) projects/multi-fibv6/head/lib/libutil/ (props changed) projects/multi-fibv6/head/sbin/ (props changed) projects/multi-fibv6/head/sbin/ipfw/ (props changed) projects/multi-fibv6/head/share/man/man4/ (props changed) projects/multi-fibv6/head/sys/ (props changed) projects/multi-fibv6/head/sys/boot/ (props changed) projects/multi-fibv6/head/sys/boot/powerpc/boot1.chrp/ (props changed) projects/multi-fibv6/head/sys/cddl/contrib/opensolaris/ (props changed) projects/multi-fibv6/head/sys/conf/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/common/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/compiler/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/debugger/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/disassembler/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/dispatcher/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/events/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/executer/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/hardware/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/namespace/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/parser/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/resources/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/tables/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/utilities/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/include/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/os_specific/ (props changed) projects/multi-fibv6/head/sys/dev/isci/README (props changed) projects/multi-fibv6/head/sys/dev/isci/environment.h (props changed) projects/multi-fibv6/head/sys/dev/isci/isci.c (props changed) projects/multi-fibv6/head/sys/dev/isci/isci_controller.c (props changed) projects/multi-fibv6/head/sys/dev/isci/isci_domain.c (props changed) projects/multi-fibv6/head/sys/dev/isci/isci_interrupt.c (props changed) projects/multi-fibv6/head/sys/dev/isci/isci_logger.c (props changed) projects/multi-fibv6/head/sys/dev/isci/isci_oem_parameters.c (props changed) projects/multi-fibv6/head/sys/dev/isci/isci_sysctl.c (props changed) projects/multi-fibv6/head/sys/dev/isci/isci_task_request.c (props changed) projects/multi-fibv6/head/sys/dev/isci/isci_timer.c (props changed) projects/multi-fibv6/head/sys/dev/isci/sci_environment.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/intel_ata.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/intel_pci.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/intel_sas.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/intel_sat.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/intel_sata.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/intel_scsi.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_abort_task_set.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_atapi.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_atapi.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_callbacks.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_design.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_device.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_device.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_inquiry.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_inquiry.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_log_sense.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_log_sense.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_lun_reset.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_lun_reset.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_pages.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_pages.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_select.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_select.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense_10.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense_10.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense_6.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_mode_sense_6.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_move.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_move.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_passthrough.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_passthrough.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_read.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_read.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_read_buffer.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_read_buffer.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_read_capacity.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_read_capacity.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_reassign_blocks.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_reassign_blocks.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_report_luns.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_report_luns.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_request_sense.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_request_sense.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_start_stop_unit.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_start_stop_unit.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_synchronize_cache.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_synchronize_cache.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_test_unit_ready.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_test_unit_ready.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_translator_sequence.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_types.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_unmap.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_unmap.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_util.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_util.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_verify.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_verify.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_write.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_write.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_and_verify.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_and_verify.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_buffer.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_buffer.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_long.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sati_write_long.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_abstract_list.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_abstract_list.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_controller.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_controller.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_domain.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_domain.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_iterator.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_iterator.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_library.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_library.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_logger.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_logger.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_memory_descriptor_list.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_memory_descriptor_list.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_memory_descriptor_list_decorator.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_object.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_object.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_observer.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_observer.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_phy.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_phy.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_port.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_port.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_remote_device.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_remote_device.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_request.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine_logger.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine_logger.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine_observer.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_state_machine_observer.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_subject.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_base_subject.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_controller.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_controller_constants.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_fast_list.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_iterator.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_library.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_logger.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_memory_descriptor_list.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_memory_descriptor_list_decorator.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_object.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_overview.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_pool.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_simple_list.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_status.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_types.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_util.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/sci_util.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_config_parameters.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_controller.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_io_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_library.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_logger.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_overview.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_phy.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_port.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_remote_device.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_controller.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_controller_registers.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_library.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_library.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_logger.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_pci.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_pci.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_phy.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_phy.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_phy_registers.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port_configuration_agent.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port_configuration_agent.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_port_registers.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_device.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_device.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_node_context.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_node_context.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_node_table.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_remote_node_table.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_request.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_sgpio.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_smp_remote_device.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_smp_request.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_smp_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_ssp_request.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_packet_request.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_packet_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_pio_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_remote_device.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_stp_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_unsolicited_frame_control.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sds_unsolicited_frame_control.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_sgpio.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_task_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scic_user_callback.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_config_parameters.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_controller.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_domain.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_io_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_library.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_logger.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_overview.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_remote_device.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_constants.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_controller.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_controller_states.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_design.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_domain.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_domain_state_handlers.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_domain_states.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_high_priority_request_queue.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_high_priority_request_queue.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_internal_io_request.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_internal_io_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_io_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_io_request_state_handlers.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_io_request_states.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_library.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_library.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_logger.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_ready_substate_handlers.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_starting_substate_handlers.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_starting_substates.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_state_handlers.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_remote_device_states.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_request.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_sati_binding.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_activity_clear_affiliation.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_io_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_phy.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_phy.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_smp_remote_device.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_io_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_remote_device.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_remote_device.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_stp_task_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_task_request.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_task_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_task_request_state_handlers.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_task_request_states.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_sas_timer.c (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_task_request.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scif_user_callback.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scu_bios_definitions.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scu_completion_codes.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scu_constants.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scu_event_codes.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scu_registers.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scu_remote_node_context.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scu_task_context.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scu_unsolicited_frame.h (props changed) projects/multi-fibv6/head/sys/dev/isci/scil/scu_viit_data.h (props changed) projects/multi-fibv6/head/sys/dev/isci/types.h (props changed) projects/multi-fibv6/head/usr.bin/calendar/ (props changed) Modified: projects/multi-fibv6/head/Makefile ============================================================================== --- projects/multi-fibv6/head/Makefile Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/Makefile Fri Feb 17 00:27:48 2012 (r231846) @@ -24,7 +24,7 @@ # check-old-dirs - List obsolete directories. # check-old-files - List obsolete files. # check-old-libs - List obsolete libraries. -# delete-old - Delete obsolete directories/files/libraries. +# delete-old - Delete obsolete directories/files. # delete-old-dirs - Delete obsolete directories. # delete-old-files - Delete obsolete files. # delete-old-libs - Delete obsolete libraries. Modified: projects/multi-fibv6/head/UPDATING ============================================================================== --- projects/multi-fibv6/head/UPDATING Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/UPDATING Fri Feb 17 00:27:48 2012 (r231846) @@ -22,6 +22,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 machines to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20120211: + The getifaddrs upgrade path broken with 20111215 has been restored. + If you have upgraded in between 20111215 and 20120209 you need to + recompile libc again with your kernel. You still need to recompile + world to be able to configure CARP but this restriction already + comes from 20111215. + 20120114: The set_rcvar() function has been removed from /etc/rc.subr. All base and ports rc.d scripts have been updated, so if you have a Modified: projects/multi-fibv6/head/bin/sh/eval.c ============================================================================== --- projects/multi-fibv6/head/bin/sh/eval.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/bin/sh/eval.c Fri Feb 17 00:27:48 2012 (r231846) @@ -921,6 +921,15 @@ evalcommand(union node *cmd, int flags, if (pipe(pip) < 0) error("Pipe call failed: %s", strerror(errno)); } + if (cmdentry.cmdtype == CMDNORMAL && + cmd->ncmd.redirect == NULL && + varlist.list == NULL && + (mode == FORK_FG || mode == FORK_NOJOB) && + !disvforkset() && !iflag && !mflag) { + vforkexecshell(jp, argv, environment(), path, + cmdentry.u.index, flags & EV_BACKCMD ? pip : NULL); + goto parent; + } if (forkshell(jp, cmd, mode) != 0) goto parent; /* at end of routine */ if (flags & EV_BACKCMD) { Modified: projects/multi-fibv6/head/bin/sh/exec.c ============================================================================== --- projects/multi-fibv6/head/bin/sh/exec.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/bin/sh/exec.c Fri Feb 17 00:27:48 2012 (r231846) @@ -231,7 +231,9 @@ hashcmd(int argc __unused, char **argv _ int verbose; struct cmdentry entry; char *name; + int errors; + errors = 0; verbose = 0; while ((c = nextopt("rv")) != '\0') { if (c == 'r') { @@ -254,19 +256,21 @@ hashcmd(int argc __unused, char **argv _ && cmdp->cmdtype == CMDNORMAL) delete_cmd_entry(); find_command(name, &entry, DO_ERR, pathval()); - if (verbose) { - if (entry.cmdtype != CMDUNKNOWN) { /* if no error msg */ - cmdp = cmdlookup(name, 0); - if (cmdp != NULL) - printentry(cmdp, verbose); - else - outfmt(out2, "%s: not found\n", name); + if (entry.cmdtype == CMDUNKNOWN) + errors = 1; + else if (verbose) { + cmdp = cmdlookup(name, 0); + if (cmdp != NULL) + printentry(cmdp, verbose); + else { + outfmt(out2, "%s: not found\n", name); + errors = 1; } flushall(); } argptr++; } - return 0; + return errors; } Modified: projects/multi-fibv6/head/bin/sh/jobs.c ============================================================================== --- projects/multi-fibv6/head/bin/sh/jobs.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/bin/sh/jobs.c Fri Feb 17 00:27:48 2012 (r231846) @@ -57,6 +57,7 @@ __FBSDID("$FreeBSD$"); #undef CEOF /* syntax.h redefines this */ #endif #include "redir.h" +#include "exec.h" #include "show.h" #include "main.h" #include "parser.h" @@ -885,6 +886,54 @@ forkshell(struct job *jp, union node *n, } +pid_t +vforkexecshell(struct job *jp, char **argv, char **envp, const char *path, int idx, int pip[2]) +{ + pid_t pid; + struct jmploc jmploc; + struct jmploc *savehandler; + + TRACE(("vforkexecshell(%%%td, %p, %d) called\n", jp - jobtab, (void *)n, + mode)); + INTOFF; + flushall(); + savehandler = handler; + pid = vfork(); + if (pid == -1) { + TRACE(("Vfork failed, errno=%d\n", errno)); + INTON; + error("Cannot fork: %s", strerror(errno)); + } + if (pid == 0) { + TRACE(("Child shell %d\n", (int)getpid())); + if (setjmp(jmploc.loc)) + _exit(exception == EXEXEC ? exerrno : 2); + if (pip != NULL) { + close(pip[0]); + if (pip[1] != 1) { + dup2(pip[1], 1); + close(pip[1]); + } + } + handler = &jmploc; + shellexec(argv, envp, path, idx); + } + handler = savehandler; + if (jp) { + struct procstat *ps = &jp->ps[jp->nprocs++]; + ps->pid = pid; + ps->status = -1; + ps->cmd = nullstr; + jp->foreground = 1; +#if JOBS + setcurjob(jp); +#endif + } + INTON; + TRACE(("In parent shell: child = %d\n", (int)pid)); + return pid; +} + /* * Wait for job to finish. Modified: projects/multi-fibv6/head/bin/sh/jobs.h ============================================================================== --- projects/multi-fibv6/head/bin/sh/jobs.h Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/bin/sh/jobs.h Fri Feb 17 00:27:48 2012 (r231846) @@ -91,6 +91,7 @@ void setjobctl(int); void showjobs(int, int); struct job *makejob(union node *, int); pid_t forkshell(struct job *, union node *, int); +pid_t vforkexecshell(struct job *, char **, char **, const char *, int, int []); int waitforjob(struct job *, int *); int stoppedjobs(void); int backgndpidset(void); Modified: projects/multi-fibv6/head/bin/sh/var.c ============================================================================== --- projects/multi-fibv6/head/bin/sh/var.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/bin/sh/var.c Fri Feb 17 00:27:48 2012 (r231846) @@ -94,6 +94,7 @@ struct var vps2; struct var vps4; struct var vvers; static struct var voptind; +struct var vdisvfork; int forcelocal; @@ -125,6 +126,8 @@ static const struct varinit varinit[] = #endif { &voptind, 0, "OPTIND=1", getoptsreset }, + { &vdisvfork, VUNSET, "SH_DISABLE_VFORK=", + NULL }, { NULL, 0, NULL, NULL } }; @@ -600,7 +603,7 @@ showvarscmd(int argc __unused, char **ar } } - INTON; + INTOFF; vars = ckmalloc(n * sizeof(*vars)); i = 0; for (vpp = vartab; vpp < vartab + VTABSIZE; vpp++) { @@ -625,7 +628,7 @@ showvarscmd(int argc __unused, char **ar out1c('\n'); } ckfree(vars); - INTOFF; + INTON; return 0; } Modified: projects/multi-fibv6/head/bin/sh/var.h ============================================================================== --- projects/multi-fibv6/head/bin/sh/var.h Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/bin/sh/var.h Fri Feb 17 00:27:48 2012 (r231846) @@ -79,6 +79,7 @@ extern struct var vppid; extern struct var vps1; extern struct var vps2; extern struct var vps4; +extern struct var vdisvfork; #ifndef NO_HISTORY extern struct var vhistsize; extern struct var vterm; @@ -109,6 +110,7 @@ extern int initial_localeisutf8; #endif #define mpathset() ((vmpath.flags & VUNSET) == 0) +#define disvforkset() ((vdisvfork.flags & VUNSET) == 0) void initvar(void); void setvar(const char *, const char *, int); Modified: projects/multi-fibv6/head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c ============================================================================== --- projects/multi-fibv6/head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Fri Feb 17 00:27:48 2012 (r231846) @@ -590,7 +590,7 @@ zfs_do_clone(int argc, char **argv) zfs_handle_t *zhp = NULL; boolean_t parents = B_FALSE; nvlist_t *props; - int ret; + int ret = 0; int c; if (nvlist_alloc(&props, NV_UNIQUE_NAME, 0) != 0) @@ -1052,7 +1052,7 @@ destroy_print_cb(zfs_handle_t *zhp, void static int destroy_print_snapshots(zfs_handle_t *fs_zhp, destroy_cbdata_t *cb) { - int err; + int err = 0; assert(cb->cb_firstsnap == NULL); assert(cb->cb_prevsnap == NULL); err = zfs_iter_snapshots_sorted(fs_zhp, destroy_print_cb, cb); @@ -1130,7 +1130,7 @@ destroy_clones(destroy_cbdata_t *cb) ZFS_TYPE_SNAPSHOT); if (zhp != NULL) { boolean_t defer = cb->cb_defer_destroy; - int err; + int err = 0; /* * We can't defer destroy non-snapshots, so set it to @@ -1207,7 +1207,7 @@ zfs_do_destroy(int argc, char **argv) at = strchr(argv[0], '@'); if (at != NULL) { - int err; + int err = 0; /* Build the list of snaps to destroy in cb_nvl. */ if (nvlist_alloc(&cb.cb_nvl, NV_UNIQUE_NAME, 0) != 0) @@ -1474,7 +1474,7 @@ zfs_do_get(int argc, char **argv) zprop_get_cbdata_t cb = { 0 }; int i, c, flags = ZFS_ITER_ARGS_CAN_BE_PATHS; char *value, *fields; - int ret; + int ret = 0; int limit = 0; zprop_list_t fake_name = { 0 }; @@ -1711,7 +1711,7 @@ zfs_do_inherit(int argc, char **argv) zfs_prop_t prop; inherit_cbdata_t cb = { 0 }; char *propname; - int ret; + int ret = 0; int flags = 0; boolean_t received = B_FALSE; @@ -1917,7 +1917,7 @@ zfs_do_upgrade(int argc, char **argv) { boolean_t all = B_FALSE; boolean_t showversions = B_FALSE; - int ret; + int ret = 0; upgrade_cbdata_t cb = { 0 }; char c; int flags = ZFS_ITER_ARGS_CAN_BE_PATHS; @@ -2206,7 +2206,7 @@ userspace_cb(void *arg, const char *doma uid_t id; uint64_t classes; #ifdef sun - int err; + int err = 0; directory_error_t e; #endif @@ -2562,7 +2562,7 @@ zfs_do_userspace(int argc, char **argv) boolean_t prtnum = B_FALSE; boolean_t parseable = B_FALSE; boolean_t sid2posix = B_FALSE; - int error; + int error = 0; int c; zfs_sort_column_t *default_sortcol = NULL; zfs_sort_column_t *sortcol = NULL; @@ -2925,7 +2925,7 @@ zfs_do_list(int argc, char **argv) list_cbdata_t cb = { 0 }; char *value; int limit = 0; - int ret; + int ret = 0; zfs_sort_column_t *sortcol = NULL; int flags = ZFS_ITER_PROP_LISTSNAPS | ZFS_ITER_ARGS_CAN_BE_PATHS; @@ -3062,7 +3062,9 @@ zfs_do_rename(int argc, char **argv) { zfs_handle_t *zhp; renameflags_t flags = { 0 }; - int c, ret, types; + int c; + int ret = 0; + int types; boolean_t parents = B_FALSE; /* check options */ @@ -3155,7 +3157,7 @@ static int zfs_do_promote(int argc, char **argv) { zfs_handle_t *zhp; - int ret; + int ret = 0; /* check options */ if (argc > 1 && argv[1][0] == '-') { @@ -3276,7 +3278,7 @@ rollback_check(zfs_handle_t *zhp, void * static int zfs_do_rollback(int argc, char **argv) { - int ret; + int ret = 0; int c; boolean_t force = B_FALSE; rollback_cbdata_t cb = { 0 }; @@ -3394,7 +3396,7 @@ static int zfs_do_set(int argc, char **argv) { set_cbdata_t cb; - int ret; + int ret = 0; /* check for options */ if (argc > 1 && argv[1][0] == '-') { @@ -3448,7 +3450,7 @@ static int zfs_do_snapshot(int argc, char **argv) { boolean_t recursive = B_FALSE; - int ret; + int ret = 0; char c; nvlist_t *props; @@ -5286,7 +5288,7 @@ zfs_do_holds(int argc, char **argv) holds_cbdata_t cb = { 0 }; int limit = 0; - int ret; + int ret = 0; int flags = 0; /* check options */ @@ -5863,7 +5865,7 @@ static int unshare_unmount_path(int op, char *path, int flags, boolean_t is_manual) { zfs_handle_t *zhp; - int ret; + int ret = 0; struct stat64 statbuf; struct extmnttab entry; const char *cmdname = (op == OP_SHARE) ? "unshare" : "unmount"; @@ -6331,7 +6333,7 @@ manual_mount(int argc, char **argv) zfs_handle_t *zhp; char mountpoint[ZFS_MAXPROPLEN]; char mntopts[MNT_LINE_MAX] = { '\0' }; - int ret; + int ret = 0; int c; int flags = 0; char *dataset, *path; @@ -6481,7 +6483,7 @@ zfs_do_diff(int argc, char **argv) char *tosnap = NULL; char *fromsnap = NULL; char *atp, *copy; - int err; + int err = 0; int c; while ((c = getopt(argc, argv, "FHt")) != -1) { @@ -6551,7 +6553,7 @@ zfs_do_diff(int argc, char **argv) int main(int argc, char **argv) { - int ret; + int ret = 0; int i; char *progname; char *cmdname; Modified: projects/multi-fibv6/head/contrib/gcc/gcc.c ============================================================================== --- projects/multi-fibv6/head/contrib/gcc/gcc.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/contrib/gcc/gcc.c Fri Feb 17 00:27:48 2012 (r231846) @@ -2696,6 +2696,17 @@ find_a_file (const struct path_prefix *p return xstrdup (DEFAULT_LINKER); #endif +#ifdef FREEBSD_NATIVE + if (! strcmp(name, "include")) + { +#ifdef CROSS_INCLUDE_DIR + return xstrdup(CROSS_INCLUDE_DIR); +#else + return xstrdup(STANDARD_INCLUDE_DIR); +#endif + } +#endif + /* Determine the filename to execute (special case for absolute paths). */ if (IS_ABSOLUTE_PATH (name)) Modified: projects/multi-fibv6/head/crypto/openssh/auth2.c ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/auth2.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/auth2.c Fri Feb 17 00:27:48 2012 (r231846) @@ -223,8 +223,8 @@ input_userauth_request(int type, u_int32 login_cap_t *lc; const char *from_host, *from_ip; - from_host = get_canonical_hostname(options.use_dns); - from_ip = get_remote_ipaddr(); + from_host = get_canonical_hostname(options.use_dns); + from_ip = get_remote_ipaddr(); #endif if (authctxt == NULL) @@ -272,23 +272,23 @@ input_userauth_request(int type, u_int32 } #ifdef HAVE_LOGIN_CAP - if (authctxt->pw != NULL) { - lc = login_getpwclass(authctxt->pw); - if (lc == NULL) - lc = login_getclassbyname(NULL, authctxt->pw); - if (!auth_hostok(lc, from_host, from_ip)) { - logit("Denied connection for %.200s from %.200s [%.200s].", - authctxt->pw->pw_name, from_host, from_ip); - packet_disconnect("Sorry, you are not allowed to connect."); - } - if (!auth_timeok(lc, time(NULL))) { - logit("LOGIN %.200s REFUSED (TIME) FROM %.200s", - authctxt->pw->pw_name, from_host); - packet_disconnect("Logins not available right now."); - } - login_close(lc); - lc = NULL; - } + if (authctxt->pw != NULL) { + lc = login_getpwclass(authctxt->pw); + if (lc == NULL) + lc = login_getclassbyname(NULL, authctxt->pw); + if (!auth_hostok(lc, from_host, from_ip)) { + logit("Denied connection for %.200s from %.200s [%.200s].", + authctxt->pw->pw_name, from_host, from_ip); + packet_disconnect("Sorry, you are not allowed to connect."); + } + if (!auth_timeok(lc, time(NULL))) { + logit("LOGIN %.200s REFUSED (TIME) FROM %.200s", + authctxt->pw->pw_name, from_host); + packet_disconnect("Logins not available right now."); + } + login_close(lc); + lc = NULL; + } #endif /* HAVE_LOGIN_CAP */ /* reset state */ Modified: projects/multi-fibv6/head/crypto/openssh/channels.c ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/channels.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/channels.c Fri Feb 17 00:27:48 2012 (r231846) @@ -824,7 +824,7 @@ channel_tcpwinsz(void) u_int maxlen; /* If we are not on a socket return 128KB. */ - if (!packet_connection_is_on_socket()) + if (!packet_connection_is_on_socket()) return (128 * 1024); tcpwinsz = 0; @@ -854,7 +854,7 @@ channel_pre_open(Channel *c, fd_set *rea limit = MIN(compat20 ? c->remote_window : packet_get_maxsize(), 2 * c->tcpwinsz); - + if (c->istate == CHAN_INPUT_OPEN && limit > 0 && buffer_len(&c->input) < limit && @@ -2687,10 +2687,10 @@ channel_set_af(int af) IPv4or6 = af; } -void +void channel_set_hpn(int disabled, u_int buf_size) { - hpn_disabled = disabled; + hpn_disabled = disabled; buffer_size = buf_size; debug("HPN Disabled: %d, HPN Buffer Size: %d", hpn_disabled, buffer_size); @@ -2856,10 +2856,10 @@ channel_setup_fwd_listener(int type, con c = channel_new("port listener", type, sock, sock, -1, CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, 0, "port listener", 1); - else - c = channel_new("port listener", type, sock, sock, -1, - buffer_size, CHAN_TCP_PACKET_DEFAULT, - 0, "port listener", 1); + else + c = channel_new("port listener", type, sock, sock, -1, + buffer_size, CHAN_TCP_PACKET_DEFAULT, + 0, "port listener", 1); c->path = xstrdup(host); c->host_port = port_to_connect; c->listening_port = listen_port; Modified: projects/multi-fibv6/head/crypto/openssh/channels.h ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/channels.h Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/channels.h Fri Feb 17 00:27:48 2012 (r231846) @@ -126,7 +126,7 @@ struct Channel { u_int local_window_max; u_int local_consumed; u_int local_maxpacket; - u_int tcpwinsz; + u_int tcpwinsz; int dynamic_window; int extended_usage; int single_connection; @@ -165,13 +165,10 @@ struct Channel { /* default window/packet sizes for tcp/x11-fwd-channel */ #define CHAN_SES_PACKET_DEFAULT (32*1024) #define CHAN_SES_WINDOW_DEFAULT (64*CHAN_SES_PACKET_DEFAULT) - #define CHAN_TCP_PACKET_DEFAULT (32*1024) #define CHAN_TCP_WINDOW_DEFAULT (64*CHAN_TCP_PACKET_DEFAULT) - #define CHAN_X11_PACKET_DEFAULT (16*1024) #define CHAN_X11_WINDOW_DEFAULT (4*CHAN_X11_PACKET_DEFAULT) - #define CHAN_HPN_MIN_WINDOW_DEFAULT (2*1024*1024) /* possible input states */ @@ -302,6 +299,7 @@ void chan_write_failed(Channel *); void chan_obuf_empty(Channel *); /* hpn handler */ -void channel_set_hpn(int, u_int); + +void channel_set_hpn(int, u_int); #endif Modified: projects/multi-fibv6/head/crypto/openssh/kex.c ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/kex.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/kex.c Fri Feb 17 00:27:48 2012 (r231846) @@ -457,13 +457,13 @@ kex_choose_conf(Kex *kex) #ifdef NONE_CIPHER_ENABLED debug("REQUESTED ENC.NAME is '%s'", newkeys->enc.name); if (strcmp(newkeys->enc.name, "none") == 0) { - debug("Requesting NONE. Authflag is %d", auth_flag); + debug("Requesting NONE. Authflag is %d", auth_flag); if (auth_flag == 1) debug("None requested post authentication."); else fatal("Pre-authentication none cipher requests " "are not allowed."); - } + } #endif debug("kex: %s %s %s %s", ctos ? "client->server" : "server->client", Modified: projects/multi-fibv6/head/crypto/openssh/loginrec.c ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/loginrec.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/loginrec.c Fri Feb 17 00:27:48 2012 (r231846) @@ -146,7 +146,6 @@ */ #include "includes.h" -__RCSID("$FreeBSD$"); #include #include @@ -516,10 +515,6 @@ getlast_entry(struct logininfo *li) return (utmpx_get_entry(li)); #endif -#if 1 - return (utmpx_get_entry(li)); -#endif - #if defined(DISABLE_LASTLOG) /* On some systems we shouldn't even try to obtain last login * time, e.g. AIX */ Modified: projects/multi-fibv6/head/crypto/openssh/readconf.c ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/readconf.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/readconf.c Fri Feb 17 00:27:48 2012 (r231846) @@ -264,6 +264,7 @@ static struct { { "noneswitch", oNoneSwitch }, #endif { "versionaddendum", oVersionAddendum }, + { NULL, oBadOption } }; @@ -1092,9 +1093,9 @@ parse_int: case oNoneEnabled: intptr = &options->none_enabled; goto parse_flag; - + /* - * We check to see if the command comes from the command line or not. + * We check to see if the command comes from the command line or not. * If it does then enable it otherwise fail. NONE must never be a * default configuration. */ @@ -1110,7 +1111,7 @@ parse_int: "from the command line", filename); error("Continuing..."); return 0; - } + } #endif case oVersionAddendum: @@ -1458,7 +1459,7 @@ fill_default_options(Options * options) /* options->host_key_alias should not be set by default */ /* options->preferred_authentications will be set in ssh */ if (options->hpn_disabled == -1) - options->hpn_disabled = 0; + options->hpn_disabled = 0; if (options->hpn_buffer_size > -1) { u_int maxlen; @@ -1478,7 +1479,7 @@ fill_default_options(Options * options) } if (options->tcp_rcv_buf == 0) options->tcp_rcv_buf = 1; - if (options->tcp_rcv_buf > -1) + if (options->tcp_rcv_buf > -1) options->tcp_rcv_buf *= 1024; if (options->tcp_rcv_buf_poll == -1) options->tcp_rcv_buf_poll = 1; Modified: projects/multi-fibv6/head/crypto/openssh/readconf.h ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/readconf.h Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/readconf.h Fri Feb 17 00:27:48 2012 (r231846) @@ -133,6 +133,7 @@ typedef struct { int visual_host_key; int use_roaming; + int request_tty; int hpn_disabled; /* Switch to disable HPN buffer management. */ Modified: projects/multi-fibv6/head/crypto/openssh/servconf.c ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/servconf.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/servconf.c Fri Feb 17 00:27:48 2012 (r231846) @@ -166,7 +166,7 @@ fill_default_server_options(ServerOption _PATH_HOST_KEY_FILE; if (options->protocol & SSH_PROTO_2) { options->host_key_files[options->num_host_key_files++] = - _PATH_HOST_RSA_KEY_FILE; + _PATH_HOST_RSA_KEY_FILE; options->host_key_files[options->num_host_key_files++] = _PATH_HOST_DSA_KEY_FILE; #ifdef OPENSSL_HAS_ECC @@ -286,7 +286,7 @@ fill_default_server_options(ServerOption options->ip_qos_interactive = IPTOS_LOWDELAY; if (options->ip_qos_bulk == -1) options->ip_qos_bulk = IPTOS_THROUGHPUT; - if (options->hpn_disabled == -1) + if (options->hpn_disabled == -1) options->hpn_disabled = 0; if (options->hpn_buffer_size == -1) { /* Modified: projects/multi-fibv6/head/crypto/openssh/sftp.1 ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/sftp.1 Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/sftp.1 Fri Feb 17 00:27:48 2012 (r231846) @@ -246,7 +246,7 @@ diagnostic messages from Specify how many requests may be outstanding at any one time. Increasing this may slightly improve file transfer speed but will increase memory usage. -The default is 256 outstanding requests providing for 8MB +The default is 256 outstanding requests providing for 8MB of outstanding data with a 32KB buffer. .It Fl r Recursively copy entire directories when uploading and downloading. Modified: projects/multi-fibv6/head/crypto/openssh/ssh.c ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/ssh.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/ssh.c Fri Feb 17 00:27:48 2012 (r231846) @@ -1461,6 +1461,7 @@ ssh_session2_open(void) c->dynamic_window = 1; debug("Enabled Dynamic Window Scaling\n"); } + debug3("ssh_session2_open: channel_new: %d", c->self); channel_send_open(c->self); Modified: projects/multi-fibv6/head/crypto/openssh/sshd.c ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/sshd.c Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/sshd.c Fri Feb 17 00:27:48 2012 (r231846) @@ -1916,11 +1916,11 @@ main(int ac, char **av) #ifdef __FreeBSD__ /* * Initialize the resolver. This may not happen automatically - * before privsep chroot(). + * before privsep chroot(). */ if ((_res.options & RES_INIT) == 0) { - debug("res_init()"); - res_init(); + debug("res_init()"); + res_init(); } #ifdef GSSAPI /* Modified: projects/multi-fibv6/head/crypto/openssh/sshd_config.5 ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/sshd_config.5 Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/sshd_config.5 Fri Feb 17 00:27:48 2012 (r231846) @@ -499,7 +499,7 @@ or .Pp .Pa /etc/hosts.equiv and -.Pa /etc/ssh/shosts.equiv +.Pa /etc/ssh/shosts.equiv are still used. The default is .Dq yes . Modified: projects/multi-fibv6/head/crypto/openssh/version.h ============================================================================== --- projects/multi-fibv6/head/crypto/openssh/version.h Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/crypto/openssh/version.h Fri Feb 17 00:27:48 2012 (r231846) @@ -2,11 +2,11 @@ /* $FreeBSD$ */ #ifndef SSH_VERSION -#define SSH_VERSION_BASE "OpenSSH_5.9p1" -#define SSH_VERSION_ADDENDUM "FreeBSD-20111001" +#define SSH_VERSION_BASE "OpenSSH_5.9p1" +#define SSH_VERSION_ADDENDUM "FreeBSD-20111001" #define SSH_VERSION_HPN "_hpn13v11" #define SSH_VERSION SSH_VERSION_BASE SSH_VERSION_HPN " " SSH_VERSION_ADDENDUM -#define SSH_RELEASE (ssh_version_get()) +#define SSH_RELEASE (ssh_version_get()) const char *ssh_version_get(void); void ssh_version_set_addendum(const char *); Modified: projects/multi-fibv6/head/etc/Makefile ============================================================================== --- projects/multi-fibv6/head/etc/Makefile Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/Makefile Fri Feb 17 00:27:48 2012 (r231846) @@ -7,18 +7,48 @@ SUBDIR= sendmail .endif -BIN1= auth.conf \ - crontab devd.conf devfs.conf \ - ddb.conf dhclient.conf disktab fbtab \ - ftpusers gettytab group \ - hosts hosts.allow hosts.equiv \ - inetd.conf libalias.conf login.access login.conf mac.conf motd \ - netconfig network.subr networks newsyslog.conf nsswitch.conf \ - phones profile protocols \ - rc rc.bsdextended rc.firewall rc.initdiskless \ - rc.sendmail rc.shutdown \ - rc.subr remote rpc services shells \ - sysctl.conf syslog.conf termcap.small +BIN1= auth.conf +BIN1+= crontab +BIN1+= devd.conf +BIN1+= devfs.conf +BIN1+= ddb.conf +BIN1+= dhclient.conf +BIN1+= disktab +BIN1+= fbtab +BIN1+= ftpusers +BIN1+= gettytab +BIN1+= group +BIN1+= hosts +BIN1+= hosts.allow +BIN1+= hosts.equiv +BIN1+= inetd.conf +BIN1+= libalias.conf +BIN1+= login.access +BIN1+= login.conf +BIN1+= mac.conf +BIN1+= motd +BIN1+= netconfig +BIN1+= network.subr +BIN1+= networks +BIN1+= newsyslog.conf +BIN1+= nsswitch.conf +BIN1+= phones +BIN1+= profile +BIN1+= protocols +BIN1+= rc +BIN1+= rc.bsdextended +BIN1+= rc.firewall +BIN1+= rc.initdiskless +BIN1+= rc.sendmail +BIN1+= rc.shutdown +BIN1+= rc.subr +BIN1+= remote +BIN1+= rpc +BIN1+= services +BIN1+= shells +BIN1+= sysctl.conf +BIN1+= syslog.conf +BIN1+= termcap.small .if exists(${.CURDIR}/etc.${MACHINE}/ttys) BIN1+= etc.${MACHINE}/ttys Modified: projects/multi-fibv6/head/etc/defaults/periodic.conf ============================================================================== --- projects/multi-fibv6/head/etc/defaults/periodic.conf Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/defaults/periodic.conf Fri Feb 17 00:27:48 2012 (r231846) @@ -96,6 +96,7 @@ daily_status_disks_df_flags="-l -h" # d # 404.status-zfs daily_status_zfs_enable="NO" # Check ZFS +daily_status_zfs_zpool_list_enable="YES" # List ZFS pools # 405.status-ata_raid daily_status_ata_raid_enable="NO" # Check ATA raid status Modified: projects/multi-fibv6/head/etc/defaults/rc.conf ============================================================================== --- projects/multi-fibv6/head/etc/defaults/rc.conf Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/defaults/rc.conf Fri Feb 17 00:27:48 2012 (r231846) @@ -29,6 +29,8 @@ early_late_divider="FILESYSTEMS" # Scrip # stages of the boot process. Make sure you know # the ramifications if you change this. # See rc.conf(5) for more details. +always_force_depends="NO" # Set to check that indicated dependencies are + # running during boot (can increase boot time). swapfile="NO" # Set to name of swapfile if aux swapfile desired. apm_enable="NO" # Set to YES to enable APM BIOS functions (or NO). @@ -648,6 +650,7 @@ devfs_rulesets="/etc/defaults/devfs.rule devfs_system_ruleset="" # The name (NOT number) of a ruleset to apply to /dev devfs_set_rulesets="" # A list of /mount/dev=ruleset_name settings to # apply (must be mounted already, i.e. fstab(5)) +devfs_load_rulesets="NO" # Enable to always load the default rulesets performance_cx_lowest="HIGH" # Online CPU idle state performance_cpu_freq="NONE" # Online CPU frequency economy_cx_lowest="HIGH" # Offline CPU idle state Modified: projects/multi-fibv6/head/etc/devd/usb.conf ============================================================================== --- projects/multi-fibv6/head/etc/devd/usb.conf Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/devd/usb.conf Fri Feb 17 00:27:48 2012 (r231846) @@ -157,7 +157,7 @@ nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0403"; - match "product" "(0x6001|0x6004|0x6010|0x6011|0x8372|0x9e90|0xcc48|0xcc49|0xcc4a|0xd678|0xe6c8|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xee18|0xf608|0xf60b|0xf850|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfc08|0xfc09|0xfc0b|0xfc0c|0xfc0d|0xfc82)"; + match "product" "(0x6001|0x6004|0x6010|0x6011|0x8372|0x9e90|0xa6d0|0xa6d0|0xcc48|0xcc49|0xcc4a|0xd678|0xe6c8|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xee18|0xf608|0xf60b|0xf850|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfc08|0xfc09|0xfc0b|0xfc0c|0xfc0d|0xfc82)"; action "kldload uftdi"; }; @@ -293,7 +293,7 @@ nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0411"; - match "product" "(0x0148|0x0150|0x015d|0x016f)"; + match "product" "(0x0148|0x0150|0x015d|0x016f|0x01a2)"; action "kldload if_run"; }; @@ -1021,7 +1021,7 @@ nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05c6"; - match "product" "(0x6000|0x6613)"; + match "product" "(0x1000|0x6000|0x6613)"; action "kldload u3g"; }; @@ -1301,7 +1301,7 @@ nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0789"; - match "product" "(0x0162|0x0163|0x0164)"; + match "product" "(0x0162|0x0163|0x0164|0x0166)"; action "kldload if_run"; }; @@ -2093,7 +2093,7 @@ nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0b95"; - match "product" "(0x1720|0x1780|0x7720|0x772a|0x772b)"; + match "product" "(0x1720|0x1780|0x7720|0x772a|0x772b|0x7e2b)"; action "kldload if_axe"; }; @@ -4205,6 +4205,15 @@ nomatch 32 { nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; + match "intclass" "0x02"; + match "intsubclass" "0x02"; + match "intprotocol" "0xff"; + action "kldload umodem"; +}; + +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; match "intclass" "0x03"; match "intsubclass" "0x01"; match "intprotocol" "0x01"; @@ -4327,5 +4336,5 @@ nomatch 32 { action "kldload umass"; }; -# 1645 USB entries processed +# 1652 USB entries processed Modified: projects/multi-fibv6/head/etc/periodic/daily/404.status-zfs ============================================================================== --- projects/multi-fibv6/head/etc/periodic/daily/404.status-zfs Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/periodic/daily/404.status-zfs Fri Feb 17 00:27:48 2012 (r231846) @@ -16,12 +16,21 @@ case "$daily_status_zfs_enable" in echo echo 'Checking status of zfs pools:' - out=`zpool status -x` - echo "$out" + case "$daily_status_zfs_zpool_list_enable" in + [Yy][Ee][Ss]) + lout=`zpool list` + echo "$lout" + echo + ;; + *) + ;; + esac + sout=`zpool status -x` + echo "$sout" # zpool status -x always exits with 0, so we have to interpret its # output to see what's going on. - if [ "$out" = "all pools are healthy" \ - -o "$out" = "no pools available" ]; then + if [ "$sout" = "all pools are healthy" \ + -o "$sout" = "no pools available" ]; then rc=0 else rc=1 Modified: projects/multi-fibv6/head/etc/rc.d/LOGIN ============================================================================== --- projects/multi-fibv6/head/etc/rc.d/LOGIN Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/rc.d/LOGIN Fri Feb 17 00:27:48 2012 (r231846) @@ -4,7 +4,7 @@ # # PROVIDE: LOGIN -# REQUIRE: DAEMON +# REQUIRE: DAEMON utx # This is a dummy dependency to ensure user services such as xdm, # inetd, cron and kerberos are started after everything else, in case Modified: projects/multi-fibv6/head/etc/rc.d/Makefile ============================================================================== --- projects/multi-fibv6/head/etc/rc.d/Makefile Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/rc.d/Makefile Fri Feb 17 00:27:48 2012 (r231846) @@ -144,6 +144,7 @@ FILES= DAEMON \ tmp \ ${_ubthidhci} \ ugidfw \ + ${_utx} \ var \ virecover \ watchdogd \ @@ -177,6 +178,10 @@ _nscd= nscd _ubthidhci= ubthidhci .endif +.if ${MK_UTMPX} != "no" +_utx= utx +.endif + FILESDIR= /etc/rc.d FILESMODE= ${BINMODE} Modified: projects/multi-fibv6/head/etc/rc.d/SERVERS ============================================================================== --- projects/multi-fibv6/head/etc/rc.d/SERVERS Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/rc.d/SERVERS Fri Feb 17 00:27:48 2012 (r231846) @@ -4,7 +4,7 @@ # # PROVIDE: SERVERS -# REQUIRE: mountcritremote abi ldconfig savecore +# REQUIRE: mountcritremote abi ldconfig savecore watchdogd # This is a dummy dependency, for early-start servers relying on # some basic configuration. Modified: projects/multi-fibv6/head/etc/rc.d/addswap ============================================================================== --- projects/multi-fibv6/head/etc/rc.d/addswap Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/rc.d/addswap Fri Feb 17 00:27:48 2012 (r231846) @@ -6,7 +6,7 @@ # # PROVIDE: addswap -# REQUIRE: FILESYSTEMS +# REQUIRE: FILESYSTEMS kld # KEYWORD: nojail . /etc/rc.subr Modified: projects/multi-fibv6/head/etc/rc.d/amd ============================================================================== --- projects/multi-fibv6/head/etc/rc.d/amd Thu Feb 16 23:05:09 2012 (r231845) +++ projects/multi-fibv6/head/etc/rc.d/amd Fri Feb 17 00:27:48 2012 (r231846) @@ -19,15 +19,8 @@ extra_commands="reload" amd_precmd() { - if ! checkyesno nfs_client_enable; then - force_depend nfsclient || return 1 - fi - - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Fri Feb 17 03:01:29 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C833D10656E1; Fri, 17 Feb 2012 03:01:29 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B6B008FC15; Fri, 17 Feb 2012 03:01:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1H31TrB046745; Fri, 17 Feb 2012 03:01:29 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1H31TaU046744; Fri, 17 Feb 2012 03:01:29 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202170301.q1H31TaU046744@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Fri, 17 Feb 2012 03:01:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231853 - in projects/multi-fibv6/head: . contrib/top share/mk sys/contrib/dev/acpica sys/i386/conf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Feb 2012 03:01:29 -0000 Author: bz Date: Fri Feb 17 03:01:29 2012 New Revision: 231853 URL: http://svn.freebsd.org/changeset/base/231853 Log: Record-only the commit of r231852 (--reintegrate commit) blocking it from being merged again into the branch with a possible next IFC. Sponsored by: Cisco Systems, Inc. Modified: Directory Properties: projects/multi-fibv6/head/ (props changed) projects/multi-fibv6/head/MAINTAINERS (props changed) projects/multi-fibv6/head/cddl/contrib/opensolaris/ (props changed) projects/multi-fibv6/head/contrib/bind9/ (props changed) projects/multi-fibv6/head/contrib/binutils/ (props changed) projects/multi-fibv6/head/contrib/bzip2/ (props changed) projects/multi-fibv6/head/contrib/com_err/ (props changed) projects/multi-fibv6/head/contrib/compiler-rt/ (props changed) projects/multi-fibv6/head/contrib/dialog/ (props changed) projects/multi-fibv6/head/contrib/ee/ (props changed) projects/multi-fibv6/head/contrib/expat/ (props changed) projects/multi-fibv6/head/contrib/file/ (props changed) projects/multi-fibv6/head/contrib/gcc/ (props changed) projects/multi-fibv6/head/contrib/gdb/ (props changed) projects/multi-fibv6/head/contrib/gdtoa/ (props changed) projects/multi-fibv6/head/contrib/gnu-sort/ (props changed) projects/multi-fibv6/head/contrib/groff/ (props changed) projects/multi-fibv6/head/contrib/less/ (props changed) projects/multi-fibv6/head/contrib/libarchive/ (props changed) projects/multi-fibv6/head/contrib/libarchive/cpio/ (props changed) projects/multi-fibv6/head/contrib/libarchive/libarchive/ (props changed) projects/multi-fibv6/head/contrib/libarchive/libarchive_fe/ (props changed) projects/multi-fibv6/head/contrib/libarchive/tar/ (props changed) projects/multi-fibv6/head/contrib/libcxxrt/ (props changed) projects/multi-fibv6/head/contrib/libpcap/ (props changed) projects/multi-fibv6/head/contrib/libstdc++/ (props changed) projects/multi-fibv6/head/contrib/llvm/ (props changed) projects/multi-fibv6/head/contrib/llvm/tools/clang/ (props changed) projects/multi-fibv6/head/contrib/ncurses/ (props changed) projects/multi-fibv6/head/contrib/netcat/ (props changed) projects/multi-fibv6/head/contrib/ntp/ (props changed) projects/multi-fibv6/head/contrib/one-true-awk/ (props changed) projects/multi-fibv6/head/contrib/openbsm/ (props changed) projects/multi-fibv6/head/contrib/openpam/ (props changed) projects/multi-fibv6/head/contrib/openresolv/ (props changed) projects/multi-fibv6/head/contrib/pf/ (props changed) projects/multi-fibv6/head/contrib/sendmail/ (props changed) projects/multi-fibv6/head/contrib/tcpdump/ (props changed) projects/multi-fibv6/head/contrib/tcsh/ (props changed) projects/multi-fibv6/head/contrib/tnftp/ (props changed) projects/multi-fibv6/head/contrib/top/ (props changed) projects/multi-fibv6/head/contrib/top/install-sh (props changed) projects/multi-fibv6/head/contrib/tzcode/stdtime/ (props changed) projects/multi-fibv6/head/contrib/tzcode/zic/ (props changed) projects/multi-fibv6/head/contrib/tzdata/ (props changed) projects/multi-fibv6/head/contrib/wpa/ (props changed) projects/multi-fibv6/head/contrib/xz/ (props changed) projects/multi-fibv6/head/crypto/heimdal/ (props changed) projects/multi-fibv6/head/crypto/openssh/ (props changed) projects/multi-fibv6/head/crypto/openssl/ (props changed) projects/multi-fibv6/head/gnu/lib/ (props changed) projects/multi-fibv6/head/gnu/usr.bin/binutils/ (props changed) projects/multi-fibv6/head/gnu/usr.bin/cc/cc_tools/ (props changed) projects/multi-fibv6/head/gnu/usr.bin/gdb/ (props changed) projects/multi-fibv6/head/lib/libc/ (props changed) projects/multi-fibv6/head/lib/libc/stdtime/ (props changed) projects/multi-fibv6/head/lib/libutil/ (props changed) projects/multi-fibv6/head/lib/libz/ (props changed) projects/multi-fibv6/head/sbin/ (props changed) projects/multi-fibv6/head/sbin/ipfw/ (props changed) projects/multi-fibv6/head/share/man/man4/ (props changed) projects/multi-fibv6/head/share/mk/bsd.arch.inc.mk (props changed) projects/multi-fibv6/head/share/zoneinfo/ (props changed) projects/multi-fibv6/head/sys/ (props changed) projects/multi-fibv6/head/sys/amd64/include/xen/ (props changed) projects/multi-fibv6/head/sys/boot/ (props changed) projects/multi-fibv6/head/sys/boot/i386/efi/ (props changed) projects/multi-fibv6/head/sys/boot/ia64/efi/ (props changed) projects/multi-fibv6/head/sys/boot/ia64/ski/ (props changed) projects/multi-fibv6/head/sys/boot/powerpc/boot1.chrp/ (props changed) projects/multi-fibv6/head/sys/boot/powerpc/ofw/ (props changed) projects/multi-fibv6/head/sys/cddl/contrib/opensolaris/ (props changed) projects/multi-fibv6/head/sys/conf/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/changes.txt (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/common/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/compiler/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/debugger/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/disassembler/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/dispatcher/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/events/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/executer/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/hardware/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/namespace/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/parser/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/resources/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/tables/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/components/utilities/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/include/ (props changed) projects/multi-fibv6/head/sys/contrib/dev/acpica/os_specific/ (props changed) projects/multi-fibv6/head/sys/contrib/octeon-sdk/ (props changed) projects/multi-fibv6/head/sys/contrib/pf/ (props changed) projects/multi-fibv6/head/sys/contrib/x86emu/ (props changed) projects/multi-fibv6/head/sys/i386/conf/XENHVM (props changed) projects/multi-fibv6/head/usr.bin/calendar/ (props changed) projects/multi-fibv6/head/usr.bin/csup/ (props changed) projects/multi-fibv6/head/usr.bin/procstat/ (props changed) projects/multi-fibv6/head/usr.sbin/ndiscvt/ (props changed) projects/multi-fibv6/head/usr.sbin/rtadvctl/ (props changed) projects/multi-fibv6/head/usr.sbin/rtadvd/ (props changed) projects/multi-fibv6/head/usr.sbin/rtsold/ (props changed) projects/multi-fibv6/head/usr.sbin/zic/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Fri Feb 17 13:42:52 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 988141065670; Fri, 17 Feb 2012 13:42:52 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7CDE28FC1D; Fri, 17 Feb 2012 13:42:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1HDgqXK080664; Fri, 17 Feb 2012 13:42:52 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1HDgpOd080590; Fri, 17 Feb 2012 13:42:51 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202171342.q1HDgpOd080590@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Fri, 17 Feb 2012 13:42:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231877 - in projects/multi-fibv6/8: . etc etc/defaults etc/periodic/daily etc/rc.d gnu/usr.bin/groff/tmac include/rpc include/rpcsvc lib/libc/gen lib/libc/rpc lib/libc/yp lib/libelf li... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Feb 2012 13:42:52 -0000 Author: bz Date: Fri Feb 17 13:42:50 2012 New Revision: 231877 URL: http://svn.freebsd.org/changeset/base/231877 Log: IF8 to 8.3-PRERELEASE. Adjust multi-FIB relevant changes in startup scripts after the merge of r231803. Sponsored by: Cisco Systems, Inc. Added: projects/multi-fibv6/8/share/man/man4/isci.4 - copied unchanged from r231871, stable/8/share/man/man4/isci.4 projects/multi-fibv6/8/share/man/man4/netmap.4 - copied unchanged from r231871, stable/8/share/man/man4/netmap.4 projects/multi-fibv6/8/share/man/man4/xnb.4 - copied unchanged from r231871, stable/8/share/man/man4/xnb.4 projects/multi-fibv6/8/sys/dev/isci/ - copied from r231871, stable/8/sys/dev/isci/ projects/multi-fibv6/8/sys/dev/netmap/ - copied from r231871, stable/8/sys/dev/netmap/ projects/multi-fibv6/8/sys/dev/oce/ - copied from r231871, stable/8/sys/dev/oce/ projects/multi-fibv6/8/sys/dev/xen/netback/netback_unit_tests.c - copied unchanged from r231871, stable/8/sys/dev/xen/netback/netback_unit_tests.c projects/multi-fibv6/8/sys/libkern/strnlen.c - copied unchanged from r231871, stable/8/sys/libkern/strnlen.c projects/multi-fibv6/8/sys/modules/isci/ - copied from r231871, stable/8/sys/modules/isci/ projects/multi-fibv6/8/sys/modules/oce/ - copied from r231871, stable/8/sys/modules/oce/ projects/multi-fibv6/8/sys/net/netmap.h - copied unchanged from r231871, stable/8/sys/net/netmap.h projects/multi-fibv6/8/sys/net/netmap_user.h - copied unchanged from r231871, stable/8/sys/net/netmap_user.h projects/multi-fibv6/8/tools/tools/netmap/ - copied from r231871, stable/8/tools/tools/netmap/ - copied from r231871, stable/8/usr.sbin/rtadvctl/ projects/multi-fibv6/8/usr.sbin/rtadvd/control.c - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control.c projects/multi-fibv6/8/usr.sbin/rtadvd/control.h - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control.h projects/multi-fibv6/8/usr.sbin/rtadvd/control_client.c - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control_client.c projects/multi-fibv6/8/usr.sbin/rtadvd/control_client.h - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control_client.h projects/multi-fibv6/8/usr.sbin/rtadvd/control_server.c - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control_server.c projects/multi-fibv6/8/usr.sbin/rtadvd/control_server.h - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/control_server.h projects/multi-fibv6/8/usr.sbin/rtadvd/timer_subr.c - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/timer_subr.c projects/multi-fibv6/8/usr.sbin/rtadvd/timer_subr.h - copied unchanged from r231871, stable/8/usr.sbin/rtadvd/timer_subr.h Directory Properties: projects/multi-fibv6/8/usr.sbin/rtadvctl/ (props changed) Deleted: projects/multi-fibv6/8/usr.sbin/rtadvd/dump.c projects/multi-fibv6/8/usr.sbin/rtadvd/dump.h Modified: projects/multi-fibv6/8/MAINTAINERS (contents, props changed) projects/multi-fibv6/8/etc/defaults/periodic.conf projects/multi-fibv6/8/etc/defaults/rc.conf projects/multi-fibv6/8/etc/periodic/daily/404.status-zfs projects/multi-fibv6/8/etc/rc.d/SERVERS projects/multi-fibv6/8/etc/rc.d/accounting projects/multi-fibv6/8/etc/rc.d/addswap projects/multi-fibv6/8/etc/rc.d/amd projects/multi-fibv6/8/etc/rc.d/apm projects/multi-fibv6/8/etc/rc.d/apmd projects/multi-fibv6/8/etc/rc.d/bootparams projects/multi-fibv6/8/etc/rc.d/bsnmpd projects/multi-fibv6/8/etc/rc.d/bthidd projects/multi-fibv6/8/etc/rc.d/cleanvar projects/multi-fibv6/8/etc/rc.d/cleartmp projects/multi-fibv6/8/etc/rc.d/cron projects/multi-fibv6/8/etc/rc.d/ddb projects/multi-fibv6/8/etc/rc.d/devd projects/multi-fibv6/8/etc/rc.d/devfs projects/multi-fibv6/8/etc/rc.d/dhclient projects/multi-fibv6/8/etc/rc.d/dmesg projects/multi-fibv6/8/etc/rc.d/ftp-proxy projects/multi-fibv6/8/etc/rc.d/ftpd projects/multi-fibv6/8/etc/rc.d/gptboot projects/multi-fibv6/8/etc/rc.d/hastd projects/multi-fibv6/8/etc/rc.d/hcsecd projects/multi-fibv6/8/etc/rc.d/hostapd projects/multi-fibv6/8/etc/rc.d/inetd projects/multi-fibv6/8/etc/rc.d/ip6addrctl projects/multi-fibv6/8/etc/rc.d/ipfilter projects/multi-fibv6/8/etc/rc.d/ipfs projects/multi-fibv6/8/etc/rc.d/ipmon projects/multi-fibv6/8/etc/rc.d/ipnat projects/multi-fibv6/8/etc/rc.d/ipsec projects/multi-fibv6/8/etc/rc.d/ipxrouted projects/multi-fibv6/8/etc/rc.d/jail projects/multi-fibv6/8/etc/rc.d/keyserv projects/multi-fibv6/8/etc/rc.d/lockd projects/multi-fibv6/8/etc/rc.d/lpd projects/multi-fibv6/8/etc/rc.d/mountd projects/multi-fibv6/8/etc/rc.d/moused projects/multi-fibv6/8/etc/rc.d/mroute6d projects/multi-fibv6/8/etc/rc.d/mrouted projects/multi-fibv6/8/etc/rc.d/natd projects/multi-fibv6/8/etc/rc.d/netwait projects/multi-fibv6/8/etc/rc.d/network_ipv6 projects/multi-fibv6/8/etc/rc.d/newsyslog projects/multi-fibv6/8/etc/rc.d/nfscbd projects/multi-fibv6/8/etc/rc.d/nfsd projects/multi-fibv6/8/etc/rc.d/nfsuserd projects/multi-fibv6/8/etc/rc.d/nscd projects/multi-fibv6/8/etc/rc.d/ntpd projects/multi-fibv6/8/etc/rc.d/ntpdate projects/multi-fibv6/8/etc/rc.d/pf projects/multi-fibv6/8/etc/rc.d/pflog projects/multi-fibv6/8/etc/rc.d/pfsync projects/multi-fibv6/8/etc/rc.d/powerd projects/multi-fibv6/8/etc/rc.d/ppp projects/multi-fibv6/8/etc/rc.d/pppoed projects/multi-fibv6/8/etc/rc.d/quota projects/multi-fibv6/8/etc/rc.d/rarpd projects/multi-fibv6/8/etc/rc.d/rfcomm_pppd_server projects/multi-fibv6/8/etc/rc.d/route6d projects/multi-fibv6/8/etc/rc.d/routed projects/multi-fibv6/8/etc/rc.d/routing projects/multi-fibv6/8/etc/rc.d/rpcbind projects/multi-fibv6/8/etc/rc.d/rtadvd projects/multi-fibv6/8/etc/rc.d/rtsold projects/multi-fibv6/8/etc/rc.d/rwho projects/multi-fibv6/8/etc/rc.d/sdpd projects/multi-fibv6/8/etc/rc.d/sendmail projects/multi-fibv6/8/etc/rc.d/sshd projects/multi-fibv6/8/etc/rc.d/statd projects/multi-fibv6/8/etc/rc.d/syslogd projects/multi-fibv6/8/etc/rc.d/timed projects/multi-fibv6/8/etc/rc.d/ubthidhci projects/multi-fibv6/8/etc/rc.d/var projects/multi-fibv6/8/etc/rc.d/virecover projects/multi-fibv6/8/etc/rc.d/watchdogd projects/multi-fibv6/8/etc/rc.d/ypbind projects/multi-fibv6/8/etc/rc.d/yppasswdd projects/multi-fibv6/8/etc/rc.d/ypserv projects/multi-fibv6/8/etc/rc.d/ypset projects/multi-fibv6/8/etc/rc.d/ypupdated projects/multi-fibv6/8/etc/rc.d/ypxfrd projects/multi-fibv6/8/etc/rc.subr projects/multi-fibv6/8/gnu/usr.bin/groff/tmac/mdoc.local projects/multi-fibv6/8/include/rpc/Makefile projects/multi-fibv6/8/include/rpcsvc/Makefile projects/multi-fibv6/8/lib/libc/gen/sysctl.3 projects/multi-fibv6/8/lib/libc/rpc/Makefile.inc projects/multi-fibv6/8/lib/libc/yp/Makefile.inc projects/multi-fibv6/8/lib/libelf/elf_data.c projects/multi-fibv6/8/lib/libelf/elf_getdata.3 projects/multi-fibv6/8/lib/libipsec/pfkey.c projects/multi-fibv6/8/lib/librpcsvc/Makefile projects/multi-fibv6/8/lib/libypclnt/Makefile projects/multi-fibv6/8/libexec/ypxfr/Makefile projects/multi-fibv6/8/release/Makefile projects/multi-fibv6/8/release/picobsd/tinyware/passwd/Makefile projects/multi-fibv6/8/sbin/hastd/rangelock.c projects/multi-fibv6/8/sbin/ifconfig/ifconfig.c projects/multi-fibv6/8/share/man/man4/Makefile projects/multi-fibv6/8/share/man/man4/ada.4 projects/multi-fibv6/8/share/man/man4/bge.4 projects/multi-fibv6/8/share/man/man4/cd.4 projects/multi-fibv6/8/share/man/man4/da.4 projects/multi-fibv6/8/share/man/man4/lmc.4 projects/multi-fibv6/8/share/man/man4/sbp.4 projects/multi-fibv6/8/share/man/man4/u3g.4 projects/multi-fibv6/8/share/man/man4/usb_quirk.4 projects/multi-fibv6/8/share/man/man5/periodic.conf.5 projects/multi-fibv6/8/share/man/man5/portindex.5 projects/multi-fibv6/8/share/man/man5/rc.conf.5 projects/multi-fibv6/8/share/man/man7/security.7 projects/multi-fibv6/8/share/man/man8/rc.subr.8 projects/multi-fibv6/8/share/man/man9/DEVICE_PROBE.9 projects/multi-fibv6/8/sys/amd64/conf/GENERIC projects/multi-fibv6/8/sys/amd64/conf/NOTES projects/multi-fibv6/8/sys/amd64/conf/XENHVM projects/multi-fibv6/8/sys/conf/NOTES projects/multi-fibv6/8/sys/conf/files projects/multi-fibv6/8/sys/conf/files.amd64 projects/multi-fibv6/8/sys/conf/files.i386 projects/multi-fibv6/8/sys/conf/newvers.sh projects/multi-fibv6/8/sys/conf/options projects/multi-fibv6/8/sys/conf/options.amd64 projects/multi-fibv6/8/sys/conf/options.i386 projects/multi-fibv6/8/sys/dev/acpica/acpi.c projects/multi-fibv6/8/sys/dev/ata/ata-queue.c projects/multi-fibv6/8/sys/dev/bge/if_bge.c projects/multi-fibv6/8/sys/dev/bge/if_bgereg.h projects/multi-fibv6/8/sys/dev/esp/ncr53c9x.c projects/multi-fibv6/8/sys/dev/et/if_et.c projects/multi-fibv6/8/sys/dev/mps/mps.c projects/multi-fibv6/8/sys/dev/mps/mps_pci.c projects/multi-fibv6/8/sys/dev/mps/mps_sas.c projects/multi-fibv6/8/sys/dev/mps/mps_sas.h projects/multi-fibv6/8/sys/dev/mps/mps_sas_lsi.c projects/multi-fibv6/8/sys/dev/mps/mps_user.c projects/multi-fibv6/8/sys/dev/mps/mpsvar.h projects/multi-fibv6/8/sys/dev/re/if_re.c projects/multi-fibv6/8/sys/dev/sound/pcm/sound.c projects/multi-fibv6/8/sys/dev/twa/tw_osl.h projects/multi-fibv6/8/sys/dev/xen/balloon/balloon.c projects/multi-fibv6/8/sys/dev/xen/blkback/blkback.c projects/multi-fibv6/8/sys/dev/xen/blkfront/blkfront.c projects/multi-fibv6/8/sys/dev/xen/blkfront/block.h projects/multi-fibv6/8/sys/dev/xen/console/console.c projects/multi-fibv6/8/sys/dev/xen/control/control.c projects/multi-fibv6/8/sys/dev/xen/netback/netback.c projects/multi-fibv6/8/sys/dev/xen/netfront/netfront.c projects/multi-fibv6/8/sys/dev/xen/xenpci/evtchn.c projects/multi-fibv6/8/sys/fs/nfsserver/nfs_nfsdport.c projects/multi-fibv6/8/sys/fs/tmpfs/tmpfs_vnops.c projects/multi-fibv6/8/sys/i386/conf/GENERIC projects/multi-fibv6/8/sys/i386/conf/NOTES projects/multi-fibv6/8/sys/i386/include/pcpu.h projects/multi-fibv6/8/sys/i386/include/pmap.h projects/multi-fibv6/8/sys/i386/include/xen/hypercall.h projects/multi-fibv6/8/sys/i386/include/xen/xen-os.h projects/multi-fibv6/8/sys/i386/include/xen/xenpmap.h projects/multi-fibv6/8/sys/i386/include/xen/xenvar.h projects/multi-fibv6/8/sys/i386/xen/xen_machdep.c projects/multi-fibv6/8/sys/kern/kern_subr.c projects/multi-fibv6/8/sys/kern/subr_scanf.c projects/multi-fibv6/8/sys/kern/uipc_mbuf.c projects/multi-fibv6/8/sys/modules/Makefile projects/multi-fibv6/8/sys/modules/kgssapi/Makefile projects/multi-fibv6/8/sys/modules/kgssapi_krb5/Makefile projects/multi-fibv6/8/sys/net/if.h projects/multi-fibv6/8/sys/net/if_var.h projects/multi-fibv6/8/sys/net/route.c projects/multi-fibv6/8/sys/net/rtsock.c projects/multi-fibv6/8/sys/netgraph/netgraph.h projects/multi-fibv6/8/sys/netgraph/ng_base.c projects/multi-fibv6/8/sys/netgraph/ng_cisco.c projects/multi-fibv6/8/sys/netgraph/ng_cisco.h projects/multi-fibv6/8/sys/netgraph/ng_socket.c projects/multi-fibv6/8/sys/netgraph/ng_socketvar.h projects/multi-fibv6/8/sys/netinet/icmp6.h projects/multi-fibv6/8/sys/netinet/in.c projects/multi-fibv6/8/sys/netinet6/nd6.h projects/multi-fibv6/8/sys/netinet6/nd6_rtr.c projects/multi-fibv6/8/sys/nfsserver/nfs_serv.c projects/multi-fibv6/8/sys/pc98/conf/GENERIC projects/multi-fibv6/8/sys/sys/eventhandler.h projects/multi-fibv6/8/sys/sys/libkern.h projects/multi-fibv6/8/sys/sys/param.h projects/multi-fibv6/8/sys/sys/socket.h projects/multi-fibv6/8/sys/xen/interface/io/netif.h projects/multi-fibv6/8/sys/xen/interface/io/xenbus.h projects/multi-fibv6/8/sys/xen/xenbus/xenbus.c projects/multi-fibv6/8/sys/xen/xenbus/xenbus_if.m projects/multi-fibv6/8/sys/xen/xenbus/xenbusb.c projects/multi-fibv6/8/sys/xen/xenbus/xenbusb.h projects/multi-fibv6/8/sys/xen/xenbus/xenbusb_back.c projects/multi-fibv6/8/sys/xen/xenbus/xenbusb_front.c projects/multi-fibv6/8/sys/xen/xenbus/xenbusb_if.m projects/multi-fibv6/8/sys/xen/xenbus/xenbusvar.h projects/multi-fibv6/8/sys/xen/xenstore/xenstore.c projects/multi-fibv6/8/sys/xen/xenstore/xenstorevar.h projects/multi-fibv6/8/usr.bin/sockstat/sockstat.1 projects/multi-fibv6/8/usr.bin/sockstat/sockstat.c projects/multi-fibv6/8/usr.sbin/Makefile (contents, props changed) projects/multi-fibv6/8/usr.sbin/amd/Makefile.inc projects/multi-fibv6/8/usr.sbin/bootparamd/bootparamd/Makefile projects/multi-fibv6/8/usr.sbin/bootparamd/callbootd/Makefile projects/multi-fibv6/8/usr.sbin/gssd/Makefile projects/multi-fibv6/8/usr.sbin/keyserv/Makefile projects/multi-fibv6/8/usr.sbin/rpc.lockd/Makefile projects/multi-fibv6/8/usr.sbin/rpc.statd/Makefile projects/multi-fibv6/8/usr.sbin/rpc.yppasswdd/Makefile projects/multi-fibv6/8/usr.sbin/rpc.ypupdated/Makefile projects/multi-fibv6/8/usr.sbin/rpc.ypxfrd/Makefile projects/multi-fibv6/8/usr.sbin/rtadvd/Makefile projects/multi-fibv6/8/usr.sbin/rtadvd/advcap.c projects/multi-fibv6/8/usr.sbin/rtadvd/config.c projects/multi-fibv6/8/usr.sbin/rtadvd/config.h projects/multi-fibv6/8/usr.sbin/rtadvd/if.c projects/multi-fibv6/8/usr.sbin/rtadvd/if.h projects/multi-fibv6/8/usr.sbin/rtadvd/pathnames.h projects/multi-fibv6/8/usr.sbin/rtadvd/rrenum.c projects/multi-fibv6/8/usr.sbin/rtadvd/rrenum.h projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.8 projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.c projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.conf projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.conf.5 projects/multi-fibv6/8/usr.sbin/rtadvd/rtadvd.h projects/multi-fibv6/8/usr.sbin/rtadvd/timer.c projects/multi-fibv6/8/usr.sbin/rtadvd/timer.h projects/multi-fibv6/8/usr.sbin/yppush/Makefile projects/multi-fibv6/8/usr.sbin/ypserv/Makefile Directory Properties: projects/multi-fibv6/8/ (props changed) projects/multi-fibv6/8/etc/ (props changed) projects/multi-fibv6/8/gnu/ (props changed) projects/multi-fibv6/8/gnu/usr.bin/ (props changed) projects/multi-fibv6/8/gnu/usr.bin/groff/ (props changed) projects/multi-fibv6/8/include/ (props changed) projects/multi-fibv6/8/lib/ (props changed) projects/multi-fibv6/8/lib/libc/ (props changed) projects/multi-fibv6/8/lib/libelf/ (props changed) projects/multi-fibv6/8/lib/libipsec/ (props changed) projects/multi-fibv6/8/lib/librpcsvc/ (props changed) projects/multi-fibv6/8/lib/libypclnt/ (props changed) projects/multi-fibv6/8/libexec/ (props changed) projects/multi-fibv6/8/libexec/ypxfr/ (props changed) projects/multi-fibv6/8/release/ (props changed) projects/multi-fibv6/8/release/picobsd/ (props changed) projects/multi-fibv6/8/release/picobsd/tinyware/passwd/ (props changed) projects/multi-fibv6/8/sbin/ (props changed) projects/multi-fibv6/8/sbin/hastd/ (props changed) projects/multi-fibv6/8/sbin/ifconfig/ (props changed) projects/multi-fibv6/8/share/ (props changed) projects/multi-fibv6/8/share/man/ (props changed) projects/multi-fibv6/8/share/man/man4/ (props changed) projects/multi-fibv6/8/share/man/man5/ (props changed) projects/multi-fibv6/8/share/man/man7/ (props changed) projects/multi-fibv6/8/share/man/man8/ (props changed) projects/multi-fibv6/8/share/man/man9/ (props changed) projects/multi-fibv6/8/sys/ (props changed) projects/multi-fibv6/8/sys/amd64/include/xen/ (props changed) projects/multi-fibv6/8/sys/boot/ (props changed) projects/multi-fibv6/8/sys/cddl/contrib/opensolaris/ (props changed) projects/multi-fibv6/8/sys/contrib/dev/acpica/ (props changed) projects/multi-fibv6/8/sys/contrib/pf/ (props changed) projects/multi-fibv6/8/sys/dev/e1000/ (props changed) projects/multi-fibv6/8/tools/ (props changed) projects/multi-fibv6/8/tools/tools/ (props changed) projects/multi-fibv6/8/usr.bin/ (props changed) projects/multi-fibv6/8/usr.bin/sockstat/ (props changed) projects/multi-fibv6/8/usr.sbin/ (props changed) projects/multi-fibv6/8/usr.sbin/amd/ (props changed) projects/multi-fibv6/8/usr.sbin/bootparamd/ (props changed) projects/multi-fibv6/8/usr.sbin/gssd/ (props changed) projects/multi-fibv6/8/usr.sbin/keyserv/ (props changed) projects/multi-fibv6/8/usr.sbin/rpc.lockd/ (props changed) projects/multi-fibv6/8/usr.sbin/rpc.statd/ (props changed) projects/multi-fibv6/8/usr.sbin/rpc.yppasswdd/ (props changed) projects/multi-fibv6/8/usr.sbin/rpc.ypupdated/ (props changed) projects/multi-fibv6/8/usr.sbin/rpc.ypxfrd/ (props changed) projects/multi-fibv6/8/usr.sbin/rtadvd/ (props changed) projects/multi-fibv6/8/usr.sbin/yppush/ (props changed) projects/multi-fibv6/8/usr.sbin/ypserv/ (props changed) Modified: projects/multi-fibv6/8/MAINTAINERS ============================================================================== --- projects/multi-fibv6/8/MAINTAINERS Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/MAINTAINERS Fri Feb 17 13:42:50 2012 (r231877) @@ -124,6 +124,7 @@ usr.bin/bluetooth emax Pre-commit review usr.sbin/bluetooth emax Pre-commit review preferred. gnu/usr.bin/send-pr bugmaster Pre-commit review requested. ncurses rafan Heads-up appreciated, try not to break it. +isci(4) jimharris Pre-commit review requested. Following are the entries from the Makefiles, and a few other sources. Please remove stale entries from both their origin, and this file. Modified: projects/multi-fibv6/8/etc/defaults/periodic.conf ============================================================================== --- projects/multi-fibv6/8/etc/defaults/periodic.conf Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/defaults/periodic.conf Fri Feb 17 13:42:50 2012 (r231877) @@ -96,6 +96,7 @@ daily_status_disks_df_flags="-l -h" # d # 404.status-zfs daily_status_zfs_enable="NO" # Check ZFS +daily_status_zfs_zpool_list_enable="YES" # List ZFS pools # 405.status-ata_raid daily_status_ata_raid_enable="NO" # Check ATA raid status Modified: projects/multi-fibv6/8/etc/defaults/rc.conf ============================================================================== --- projects/multi-fibv6/8/etc/defaults/rc.conf Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/defaults/rc.conf Fri Feb 17 13:42:50 2012 (r231877) @@ -29,6 +29,8 @@ early_late_divider="FILESYSTEMS" # Scrip # stages of the boot process. Make sure you know # the ramifications if you change this. # See rc.conf(5) for more details. +always_force_depends="NO" # Set to check that indicated dependencies are + # running during boot (can increase boot time). swapfile="NO" # Set to name of swapfile if aux swapfile desired. apm_enable="NO" # Set to YES to enable APM BIOS functions (or NO). @@ -634,6 +636,7 @@ devfs_rulesets="/etc/defaults/devfs.rule devfs_system_ruleset="" # The name (NOT number) of a ruleset to apply to /dev devfs_set_rulesets="" # A list of /mount/dev=ruleset_name settings to # apply (must be mounted already, i.e. fstab(5)) +devfs_load_rulesets="NO" # Enable to always load the default rulesets performance_cx_lowest="HIGH" # Online CPU idle state performance_cpu_freq="NONE" # Online CPU frequency economy_cx_lowest="HIGH" # Offline CPU idle state Modified: projects/multi-fibv6/8/etc/periodic/daily/404.status-zfs ============================================================================== --- projects/multi-fibv6/8/etc/periodic/daily/404.status-zfs Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/periodic/daily/404.status-zfs Fri Feb 17 13:42:50 2012 (r231877) @@ -16,12 +16,21 @@ case "$daily_status_zfs_enable" in echo echo 'Checking status of zfs pools:' - out=`zpool status -x` - echo "$out" + case "$daily_status_zfs_zpool_list_enable" in + [Yy][Ee][Ss]) + lout=`zpool list` + echo "$lout" + echo + ;; + *) + ;; + esac + sout=`zpool status -x` + echo "$sout" # zpool status -x always exits with 0, so we have to interpret its # output to see what's going on. - if [ "$out" = "all pools are healthy" \ - -o "$out" = "no pools available" ]; then + if [ "$sout" = "all pools are healthy" \ + -o "$sout" = "no pools available" ]; then rc=0 else rc=1 Modified: projects/multi-fibv6/8/etc/rc.d/SERVERS ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/SERVERS Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/SERVERS Fri Feb 17 13:42:50 2012 (r231877) @@ -4,7 +4,7 @@ # # PROVIDE: SERVERS -# REQUIRE: mountcritremote abi ldconfig savecore +# REQUIRE: mountcritremote abi ldconfig savecore watchdogd # This is a dummy dependency, for early-start servers relying on # some basic configuration. Modified: projects/multi-fibv6/8/etc/rc.d/accounting ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/accounting Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/accounting Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="accounting" -rcvar=`set_rcvar` +rcvar="accounting_enable" accounting_command="/usr/sbin/accton" accounting_file="/var/account/acct" Modified: projects/multi-fibv6/8/etc/rc.d/addswap ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/addswap Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/addswap Fri Feb 17 13:42:50 2012 (r231877) @@ -6,7 +6,7 @@ # # PROVIDE: addswap -# REQUIRE: FILESYSTEMS +# REQUIRE: FILESYSTEMS kld # KEYWORD: nojail . /etc/rc.subr Modified: projects/multi-fibv6/8/etc/rc.d/amd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/amd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/amd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="amd" -rcvar=`set_rcvar` +rcvar="amd_enable" command="/usr/sbin/${name}" start_precmd="amd_precmd" command_args="&" @@ -19,15 +19,8 @@ extra_commands="reload" amd_precmd() { - if ! checkyesno nfs_client_enable; then - force_depend nfsclient || return 1 - fi - - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + force_depend nfsclient nfs_client || return 1 + force_depend rpcbind || return 1 case ${amd_map_program} in [Nn][Oo] | '') @@ -49,7 +42,6 @@ amd_precmd() command_args="> /var/run/amd.pid 2> /dev/null" ;; esac - return 0 } load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/apm ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/apm Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/apm Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="apm" -rcvar=`set_rcvar` +rcvar="apm_enable" start_precmd="apm_precmd" command="/usr/sbin/${name}" start_cmd="${command} -e enable" Modified: projects/multi-fibv6/8/etc/rc.d/apmd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/apmd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/apmd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="apmd" -rcvar=`set_rcvar` +rcvar="apmd_enable" command="/usr/sbin/${name}" start_precmd="apmd_prestart" @@ -19,24 +19,18 @@ apmd_prestart() { case `${SYSCTL_N} hw.machine_arch` in i386) - # Enable apm if it is not already enabled - if ! checkyesno apm_enable && \ - ! /etc/rc.d/apm forcestatus 1>/dev/null 2>&1 - then - force_depend apm || return 1 - fi + force_depend apm || return 1 # Warn user about acpi apm compatibility support which # does not work with apmd. if [ ! -e /dev/apmctl ]; then - warn "/dev/apmctl not found; kernel is missing apm(4)" + warn "/dev/apmctl not found; kernel is missing apm(4)" fi ;; *) return 1 ;; esac - return 0 } load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/bootparams ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/bootparams Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/bootparams Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="bootparamd" -rcvar=`set_rcvar` +rcvar="bootparamd_enable" required_files="/etc/bootparams" command="/usr/sbin/${name}" Modified: projects/multi-fibv6/8/etc/rc.d/bsnmpd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/bsnmpd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/bsnmpd Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="bsnmpd" -rcvar=`set_rcvar` +rcvar="bsnmpd_enable" command="/usr/sbin/${name}" pidfile="/var/run/snmpd.pid" Modified: projects/multi-fibv6/8/etc/rc.d/bthidd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/bthidd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/bthidd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,9 +11,9 @@ . /etc/rc.subr name="bthidd" +rcvar="bthidd_enable" command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" -rcvar=`set_rcvar` start_precmd="bthidd_prestart" bthidd_prestart() Modified: projects/multi-fibv6/8/etc/rc.d/cleanvar ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/cleanvar Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/cleanvar Fri Feb 17 13:42:50 2012 (r231877) @@ -9,7 +9,7 @@ . /etc/rc.subr name="cleanvar" -rcvar=`set_rcvar` +rcvar="cleanvar_enable" start_precmd="${name}_prestart" start_cmd="${name}_start" Modified: projects/multi-fibv6/8/etc/rc.d/cleartmp ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/cleartmp Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/cleartmp Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ name="cleartmp" # Disguise rcvar for the start method to run irrespective of its setting. -rcvar1=`set_rcvar clear_tmp` +rcvar1="clear_tmp_enable" start_cmd="${name}_start" stop_cmd=":" Modified: projects/multi-fibv6/8/etc/rc.d/cron ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/cron Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/cron Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="cron" -rcvar="`set_rcvar`" +rcvar="cron_enable" command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" Modified: projects/multi-fibv6/8/etc/rc.d/ddb ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ddb Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ddb Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="ddb" -rcvar=`set_rcvar` +rcvar="ddb_enable" command="/sbin/${name}" start_precmd="ddb_prestart" stop_cmd=":" Modified: projects/multi-fibv6/8/etc/rc.d/devd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/devd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/devd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="devd" -rcvar=`set_rcvar` +rcvar="devd_enable" command="/sbin/${name}" start_precmd=${name}_prestart Modified: projects/multi-fibv6/8/etc/rc.d/devfs ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/devfs Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/devfs Fri Feb 17 13:42:50 2012 (r231877) @@ -16,7 +16,8 @@ stop_cmd=':' devfs_start() { - if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ]; then + if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ] || + checkyesno devfs_load_rulesets; then devfs_init_rulesets if [ -n "$devfs_system_ruleset" ]; then devfs_set_ruleset $devfs_system_ruleset /dev Modified: projects/multi-fibv6/8/etc/rc.d/dhclient ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/dhclient Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/dhclient Fri Feb 17 13:42:50 2012 (r231877) @@ -22,7 +22,14 @@ stop_precmd="dhclient_pre_check" dhclient_pre_check() { if [ -z "${rc_force}" ] && ! dhcpif $ifn; then - err 1 "'$ifn' is not a DHCP-enabled interface" + local msg + msg="'$ifn' is not a DHCP-enabled interface" + if [ -z "${rc_quiet}" ]; then + echo "$msg" + else + debug "$msg" + fi + exit 1 fi } Modified: projects/multi-fibv6/8/etc/rc.d/dmesg ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/dmesg Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/dmesg Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="dmesg" -rcvar=`set_rcvar` +rcvar="dmesg_enable" dmesg_file="/var/run/dmesg.boot" start_cmd="do_dmesg" stop_cmd=":" Modified: projects/multi-fibv6/8/etc/rc.d/ftp-proxy ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ftp-proxy Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ftp-proxy Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="ftpproxy" -rcvar=`set_rcvar` +rcvar="ftpproxy_enable" command="/usr/sbin/ftp-proxy" load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/ftpd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ftpd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ftpd Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="ftpd" -rcvar=`set_rcvar` +rcvar="ftpd_enable" command="/usr/libexec/${name}" pidfile="/var/run/${name}.pid" start_precmd=ftpd_prestart Modified: projects/multi-fibv6/8/etc/rc.d/gptboot ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/gptboot Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/gptboot Fri Feb 17 13:42:50 2012 (r231877) @@ -34,7 +34,7 @@ . /etc/rc.subr name="gptboot" -rcvar=`set_rcvar` +rcvar="gptboot_enable" start_cmd="gptboot_report" gptboot_report() Modified: projects/multi-fibv6/8/etc/rc.d/hastd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/hastd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/hastd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="hastd" -rcvar=`set_rcvar` +rcvar="hastd_enable" pidfile="/var/run/${name}.pid" command="/sbin/${name}" hastctl="/sbin/hastctl" Modified: projects/multi-fibv6/8/etc/rc.d/hcsecd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/hcsecd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/hcsecd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,9 +11,9 @@ . /etc/rc.subr name="hcsecd" +rcvar="hcsecd_enable" command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" -rcvar=`set_rcvar` required_modules="ng_btsocket" load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/hostapd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/hostapd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/hostapd Fri Feb 17 13:42:50 2012 (r231877) @@ -10,8 +10,8 @@ . /etc/rc.subr name="hostapd" +rcvar="hostapd_enable" command="/usr/sbin/${name}" -rcvar=`set_rcvar` conf_file="/etc/${name}.conf" pidfile="/var/run/${name}.pid" Modified: projects/multi-fibv6/8/etc/rc.d/inetd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/inetd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/inetd Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="inetd" -rcvar=`set_rcvar` +rcvar="inetd_enable" command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" required_files="/etc/${name}.conf" Modified: projects/multi-fibv6/8/etc/rc.d/ip6addrctl ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ip6addrctl Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ip6addrctl Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="ip6addrctl" -rcvar=`set_rcvar` +rcvar="ip6addrctl_enable" start_cmd="ip6addrctl_start" stop_cmd="ip6addrctl_stop" extra_commands="status prefer_ipv6 prefer_ipv4" Modified: projects/multi-fibv6/8/etc/rc.d/ipfilter ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ipfilter Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ipfilter Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="ipfilter" -rcvar=`set_rcvar` +rcvar="ipfilter_enable" load_rc_config $name stop_precmd="test -f ${ipfilter_rules} -o -f ${ipv6_ipfilter_rules}" Modified: projects/multi-fibv6/8/etc/rc.d/ipfs ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ipfs Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ipfs Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="ipfs" -rcvar=`set_rcvar` +rcvar="ipfs_enable" start_cmd="ipfs_start" stop_cmd="ipfs_stop" start_precmd="ipfs_prestart" Modified: projects/multi-fibv6/8/etc/rc.d/ipmon ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ipmon Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ipmon Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="ipmon" -rcvar=`set_rcvar` +rcvar="ipmon_enable" command="/sbin/${name}" start_precmd="ipmon_precmd" Modified: projects/multi-fibv6/8/etc/rc.d/ipnat ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ipnat Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ipnat Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="ipnat" -rcvar=`set_rcvar` +rcvar="ipnat_enable" load_rc_config $name start_cmd="ipnat_start" stop_cmd="${ipnat_program} -F -C" Modified: projects/multi-fibv6/8/etc/rc.d/ipsec ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ipsec Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ipsec Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="ipsec" -rcvar=`set_rcvar` +rcvar="ipsec_enable" start_precmd="ipsec_prestart" start_cmd="ipsec_start" stop_precmd="test -f $ipsec_file" Modified: projects/multi-fibv6/8/etc/rc.d/ipxrouted ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ipxrouted Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ipxrouted Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="ipxrouted" -rcvar=`set_rcvar` +rcvar="ipxrouted_enable" command="/usr/sbin/IPXrouted" command_args="> /dev/null 2>&1" Modified: projects/multi-fibv6/8/etc/rc.d/jail ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/jail Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/jail Fri Feb 17 13:42:50 2012 (r231877) @@ -17,7 +17,7 @@ . /etc/rc.subr name="jail" -rcvar=`set_rcvar` +rcvar="jail_enable" start_cmd="jail_start" stop_cmd="jail_stop" Modified: projects/multi-fibv6/8/etc/rc.d/keyserv ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/keyserv Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/keyserv Fri Feb 17 13:42:50 2012 (r231877) @@ -13,19 +13,13 @@ . /etc/rc.subr name="keyserv" -rcvar=`set_rcvar` +rcvar="keyserv_enable" command="/usr/sbin/${name}" start_precmd="keyserv_prestart" keyserv_prestart() { - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - - return 0 + force_depend rpcbind || return 1 } load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/lockd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/lockd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/lockd Fri Feb 17 13:42:50 2012 (r231877) @@ -15,28 +15,16 @@ name="lockd" rcvar=rpc_lockd_enable command="/usr/sbin/rpc.${name}" start_precmd='lockd_precmd' -stop_precmd='checkyesno nfs_server_enable || checkyesno nfs_client_enable' -status_precmd=$stop_precmd # Make sure that we are either an NFS client or server, and that we get # the correct flags from rc.conf(5). # lockd_precmd() { - local ret - ret=0 - - if ! checkyesno nfs_server_enable && ! checkyesno nfs_client_enable - then - ret=1 - fi - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || ret=1 - fi + force_depend rpcbind || return 1 + force_depend statd rpc_statd || return 1 + rc_flags=${rpc_lockd_flags} - return ${ret} } load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/lpd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/lpd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/lpd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="lpd" -rcvar=`set_rcvar` +rcvar="lpd_enable" command="/usr/sbin/${name}" required_files="/etc/printcap" start_precmd="chkprintcap" Modified: projects/multi-fibv6/8/etc/rc.d/mountd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/mountd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/mountd Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="mountd" -rcvar=`set_rcvar` +rcvar="mountd_enable" command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" required_files="/etc/exports" @@ -19,11 +19,7 @@ extra_commands="reload" mountd_precmd() { - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi + force_depend rpcbind || return 1 # mountd flags will differ depending on rc.conf settings # @@ -49,8 +45,8 @@ mountd_precmd() fi rm -f /var/db/mountdtab - ( umask 022 ; > /var/db/mountdtab ) - return 0 + ( umask 022 ; > /var/db/mountdtab ) || + err 1 'Cannot create /var/db/mountdtab' } load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/moused ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/moused Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/moused Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="moused" -rcvar=`set_rcvar` +rcvar="moused_enable" command="/usr/sbin/${name}" start_cmd="moused_start" pidprefix="/var/run/moused" @@ -23,7 +23,7 @@ load_rc_config $name # if [ -n "$2" ]; then eval moused_$2_enable=\${moused_$2_enable-${moused_nondefault_enable}} - rcvar=`set_rcvar moused_$2` + rcvar="moused_${2}_enable" pidfile="${pidprefix}.$2.pid" pidarg="-I $pidfile" fi Modified: projects/multi-fibv6/8/etc/rc.d/mroute6d ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/mroute6d Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/mroute6d Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="mroute6d" -rcvar=`set_rcvar` +rcvar="mroute6d_enable" command="/usr/local/sbin/pim6dd" load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/mrouted ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/mrouted Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/mrouted Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="mrouted" -rcvar=`set_rcvar` +rcvar="mrouted_enable" command="/usr/local/sbin/${name}" pidfile="/var/run/${name}.pid" required_files="/etc/${name}.conf" Modified: projects/multi-fibv6/8/etc/rc.d/natd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/natd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/natd Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/network.subr name="natd" -rcvar=`set_rcvar` +rcvar="natd_enable" command="/sbin/${name}" pidfile="/var/run/${name}.pid" start_precmd="natd_precmd" Modified: projects/multi-fibv6/8/etc/rc.d/netwait ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/netwait Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/netwait Fri Feb 17 13:42:50 2012 (r231877) @@ -14,7 +14,7 @@ . /etc/rc.subr name="netwait" -rcvar=`set_rcvar` +rcvar="netwait_enable" start_cmd="${name}_start" stop_cmd=":" Modified: projects/multi-fibv6/8/etc/rc.d/network_ipv6 ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/network_ipv6 Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/network_ipv6 Fri Feb 17 13:42:50 2012 (r231877) @@ -36,26 +36,11 @@ . /etc/network.subr name="network_ipv6" -rcvar=`set_rcvar ipv6` +rcvar="ipv6_enable" start_cmd="network_ipv6_start" network_ipv6_start() { - local fibs i - - # Get the number of FIBs supported. - fibs=`sysctl -n net.fibs` - : ${fibs:=1} - - # disallow "internal" addresses to appear on the wire - i=0 - while test ${i} -lt ${fibs}; do - setfib -F ${i} route add -inet6 \ - ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject - setfib -F ${i} route add -inet6 \ - ::0.0.0.0 -prefixlen 96 ::1 -reject - i=$((i + 1)) - done case ${ipv6_network_interfaces} in [Aa][Uu][Tt][Oo]) Modified: projects/multi-fibv6/8/etc/rc.d/newsyslog ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/newsyslog Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/newsyslog Fri Feb 17 13:42:50 2012 (r231877) @@ -9,7 +9,7 @@ . /etc/rc.subr name="newsyslog" -rcvar=`set_rcvar` +rcvar="newsyslog_enable" required_files="/etc/newsyslog.conf" command="/usr/sbin/${name}" start_cmd="newsyslog_start" Modified: projects/multi-fibv6/8/etc/rc.d/nfscbd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/nfscbd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/nfscbd Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="nfscbd" -rcvar=`set_rcvar` +rcvar="nfscbd_enable" command="/usr/sbin/${name}" sig_stop="USR1" Modified: projects/multi-fibv6/8/etc/rc.d/nfsd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/nfsd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/nfsd Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="nfsd" -rcvar=`set_rcvar nfs_server` +rcvar="nfs_server_enable" command="/usr/sbin/${name}" load_rc_config $name @@ -43,18 +43,8 @@ nfsd_precmd() fi fi - if ! checkyesno rpcbind_enable && \ - ! /etc/rc.d/rpcbind forcestatus 1>/dev/null 2>&1 - then - force_depend rpcbind || return 1 - fi - - if ! checkyesno mountd_enable && \ - ! /etc/rc.d/mountd forcestatus 1>/dev/null 2>&1 - then - force_depend mountd || return 1 - fi - return 0 + force_depend rpcbind || return 1 + force_depend mountd || return 1 } run_rc_command "$1" Modified: projects/multi-fibv6/8/etc/rc.d/nfsuserd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/nfsuserd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/nfsuserd Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="nfsuserd" -rcvar=`set_rcvar` +rcvar="nfsuserd_enable" command="/usr/sbin/${name}" sig_stop="USR1" Modified: projects/multi-fibv6/8/etc/rc.d/nscd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/nscd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/nscd Fri Feb 17 13:42:50 2012 (r231877) @@ -19,7 +19,7 @@ . /etc/rc.subr name="nscd" -rcvar=`set_rcvar` +rcvar="nscd_enable" command=/usr/sbin/nscd extra_commands="flush" Modified: projects/multi-fibv6/8/etc/rc.d/ntpd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ntpd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ntpd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="ntpd" -rcvar=`set_rcvar` +rcvar="ntpd_enable" command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" start_precmd="ntpd_precmd" Modified: projects/multi-fibv6/8/etc/rc.d/ntpdate ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ntpdate Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ntpdate Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="ntpdate" -rcvar=`set_rcvar` +rcvar="ntpdate_enable" stop_cmd=":" start_cmd="ntpdate_start" Modified: projects/multi-fibv6/8/etc/rc.d/pf ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/pf Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/pf Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="pf" -rcvar=`set_rcvar` +rcvar="pf_enable" load_rc_config $name start_cmd="pf_start" stop_cmd="pf_stop" Modified: projects/multi-fibv6/8/etc/rc.d/pflog ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/pflog Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/pflog Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="pflog" -rcvar=`set_rcvar` +rcvar="pflog_enable" command="/sbin/pflogd" pidfile="/var/run/pflogd.pid" start_precmd="pflog_prestart" Modified: projects/multi-fibv6/8/etc/rc.d/pfsync ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/pfsync Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/pfsync Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="pfsync" -rcvar=`set_rcvar` +rcvar="pfsync_enable" start_precmd="pfsync_prestart" start_cmd="pfsync_start" stop_cmd="pfsync_stop" Modified: projects/multi-fibv6/8/etc/rc.d/powerd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/powerd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/powerd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="powerd" -rcvar=`set_rcvar` +rcvar="powerd_enable" command="/usr/sbin/${name}" stop_postcmd=powerd_poststop Modified: projects/multi-fibv6/8/etc/rc.d/ppp ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/ppp Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/ppp Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="ppp" -rcvar=`set_rcvar` +rcvar="ppp_enable" command="/usr/sbin/${name}" start_cmd="ppp_start" stop_cmd="ppp_stop" Modified: projects/multi-fibv6/8/etc/rc.d/pppoed ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/pppoed Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/pppoed Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="pppoed" -rcvar="`set_rcvar`" +rcvar="pppoed_enable" start_cmd="pppoed_start" # XXX stop_cmd will not be straightforward stop_cmd=":" Modified: projects/multi-fibv6/8/etc/rc.d/quota ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/quota Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/quota Fri Feb 17 13:42:50 2012 (r231877) @@ -13,7 +13,7 @@ . /etc/rc.subr name="quota" -rcvar=`set_rcvar` +rcvar="quota_enable" load_rc_config $name start_cmd="quota_start" stop_cmd="/usr/sbin/quotaoff ${quotaoff_flags}" Modified: projects/multi-fibv6/8/etc/rc.d/rarpd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/rarpd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/rarpd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="rarpd" -rcvar=`set_rcvar` +rcvar="rarpd_enable" command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" required_files="/etc/ethers" Modified: projects/multi-fibv6/8/etc/rc.d/rfcomm_pppd_server ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/rfcomm_pppd_server Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/rfcomm_pppd_server Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="rfcomm_pppd_server" -rcvar=`set_rcvar` +rcvar="rfcomm_pppd_server_enable" command="/usr/sbin/rfcomm_pppd" start_cmd="rfcomm_pppd_server_start" stop_cmd="rfcomm_pppd_server_stop" Modified: projects/multi-fibv6/8/etc/rc.d/route6d ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/route6d Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/route6d Fri Feb 17 13:42:50 2012 (r231877) @@ -10,6 +10,7 @@ . /etc/rc.subr name="route6d" +rcvar="ipv6_router_enable" # XXX - Executable may be in a different location. The $name variable # is different from the variable in rc.conf(5) so the @@ -18,7 +19,6 @@ name="route6d" # load_rc_config $name -rcvar="ipv6_router_enable" command="${ipv6_router:-/usr/sbin/${name}}" eval ${name}_flags=\"${ipv6_router_flags}\" Modified: projects/multi-fibv6/8/etc/rc.d/routed ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/routed Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/routed Fri Feb 17 13:42:50 2012 (r231877) @@ -10,13 +10,13 @@ . /etc/rc.subr name="routed" +rcvar="router_enable" # XXX - Executable may be in a different location. The $name variable # is different from the variable in rc.conf(5) so the # subroutines in rc.subr won't catch it. # load_rc_config $name -rcvar="router_enable" command="${router:-/sbin/${name}}" eval ${name}_flags=\"${router_flags}\" run_rc_command "$1" Modified: projects/multi-fibv6/8/etc/rc.d/routing ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/routing Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/routing Fri Feb 17 13:42:50 2012 (r231877) @@ -57,6 +57,26 @@ static_start() atmconfig natm add ${route_args} done fi + + # Disallow "internal" addresses to appear on the wire if inet6 + # is enabled. + if afexists inet6; then + local fibs i + + # Get the number of FIBs supported. + fibs=`sysctl -n net.fibs` + : ${fibs:=1} + + # disallow "internal" addresses to appear on the wire + i=0 + while test ${i} -lt ${fibs}; do + setfib -F ${i} route add -inet6 \ + ::ffff:0.0.0.0 -prefixlen 96 ::1 -reject + setfib -F ${i} route add -inet6 \ + ::0.0.0.0 -prefixlen 96 ::1 -reject + i=$((i + 1)) + done + fi } _ropts_initdone= Modified: projects/multi-fibv6/8/etc/rc.d/rpcbind ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/rpcbind Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/rpcbind Fri Feb 17 13:42:50 2012 (r231877) @@ -10,7 +10,7 @@ . /etc/rc.subr name="rpcbind" -rcvar=`set_rcvar` +rcvar="rpcbind_enable" command="/usr/sbin/${name}" stop_postcmd='/bin/rm -f /var/run/rpcbind.*' Modified: projects/multi-fibv6/8/etc/rc.d/rtadvd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/rtadvd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/rtadvd Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="rtadvd" -rcvar=`set_rcvar` +rcvar="rtadvd_enable" command="/usr/sbin/${name}" start_precmd="rtadvd_precmd" Modified: projects/multi-fibv6/8/etc/rc.d/rtsold ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/rtsold Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/rtsold Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="rtsold" -rcvar=`set_rcvar` +rcvar="rtsold_enable" command="/usr/sbin/${name}" pidfile="/var/run/${name}.pid" start_postcmd="rtsold_poststart" Modified: projects/multi-fibv6/8/etc/rc.d/rwho ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/rwho Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/rwho Fri Feb 17 13:42:50 2012 (r231877) @@ -11,7 +11,7 @@ . /etc/rc.subr name="rwhod" -rcvar="`set_rcvar`" +rcvar="rwhod_enable" command="/usr/sbin/${name}" load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/sdpd ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/sdpd Fri Feb 17 13:26:29 2012 (r231876) +++ projects/multi-fibv6/8/etc/rc.d/sdpd Fri Feb 17 13:42:50 2012 (r231877) @@ -12,7 +12,7 @@ name="sdpd" command="/usr/sbin/${name}" -rcvar=`set_rcvar` +rcvar="sdpd_enable" required_modules="ng_btsocket" load_rc_config $name Modified: projects/multi-fibv6/8/etc/rc.d/sendmail ============================================================================== --- projects/multi-fibv6/8/etc/rc.d/sendmail Fri Feb 17 13:26:29 2012 (r231876) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Fri Feb 17 13:45:34 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DC8741065672; Fri, 17 Feb 2012 13:45:34 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AFCD18FC12; Fri, 17 Feb 2012 13:45:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1HDjYxV080805; Fri, 17 Feb 2012 13:45:34 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1HDjYCa080804; Fri, 17 Feb 2012 13:45:34 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201202171345.q1HDjYCa080804@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Fri, 17 Feb 2012 13:45:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231878 - projects/multi-fibv6/7 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Feb 2012 13:45:34 -0000 Author: bz Date: Fri Feb 17 13:45:34 2012 New Revision: 231878 URL: http://svn.freebsd.org/changeset/base/231878 Log: Create a working branch to prepare the merge of multi-FIB IPv6 support to stable/7. Sponsored by: Cisco Systems, Inc. Added: - copied from r231877, stable/7/ Directory Properties: projects/multi-fibv6/7/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Sat Feb 18 00:35:24 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 535DA10657D0; Sat, 18 Feb 2012 00:35:24 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4293B8FC14; Sat, 18 Feb 2012 00:35:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1I0ZORQ003190; Sat, 18 Feb 2012 00:35:24 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1I0ZO5b003188; Sat, 18 Feb 2012 00:35:24 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201202180035.q1I0ZO5b003188@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sat, 18 Feb 2012 00:35:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231886 - projects/armv6/sys/arm/ti/omap4 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Feb 2012 00:35:24 -0000 Author: gonzo Date: Sat Feb 18 00:35:23 2012 New Revision: 231886 URL: http://svn.freebsd.org/changeset/base/231886 Log: - Reorder check for clok details to be NULL so they actually work - Add I2C timers Modified: projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c Modified: projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c ============================================================================== --- projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c Fri Feb 17 23:47:16 2012 (r231885) +++ projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c Sat Feb 18 00:35:23 2012 (r231886) @@ -325,6 +325,12 @@ struct omap_clock_dev omap_clk_devmap[] /* sDMA */ OMAP4_GENERIC_CLOCK_DEV(SDMA_CLK), + /* I2C */ + OMAP4_GENERIC_CLOCK_DEV(I2C1_CLK), + OMAP4_GENERIC_CLOCK_DEV(I2C2_CLK), + OMAP4_GENERIC_CLOCK_DEV(I2C3_CLK), + OMAP4_GENERIC_CLOCK_DEV(I2C4_CLK), + { INVALID_CLK_IDENT, NULL, NULL, NULL, NULL } }; @@ -420,7 +426,17 @@ static struct omap4_clk_details g_omap4_ /* sDMA block */ OMAP4_GENERIC_CLOCK_DETAILS(SDMA_CLK, -1, CM2_INSTANCE_MEM_REGION, (CORE_CM2_OFFSET + 0x320), CLKCTRL_MODULEMODE_AUTO), - + + /* I2C modules */ + OMAP4_GENERIC_CLOCK_DETAILS(I2C1_CLK, -1, CM2_INSTANCE_MEM_REGION, + (L4PER_CM2_OFFSET + 0x0A0), CLKCTRL_MODULEMODE_ENABLE), + OMAP4_GENERIC_CLOCK_DETAILS(I2C2_CLK, -1, CM2_INSTANCE_MEM_REGION, + (L4PER_CM2_OFFSET + 0x0A8), CLKCTRL_MODULEMODE_ENABLE), + OMAP4_GENERIC_CLOCK_DETAILS(I2C3_CLK, -1, CM2_INSTANCE_MEM_REGION, + (L4PER_CM2_OFFSET + 0x0B0), CLKCTRL_MODULEMODE_ENABLE), + OMAP4_GENERIC_CLOCK_DETAILS(I2C4_CLK, -1, CM2_INSTANCE_MEM_REGION, + (L4PER_CM2_OFFSET + 0x0B8), CLKCTRL_MODULEMODE_ENABLE), + { INVALID_CLK_IDENT, 0, 0, 0, 0 }, }; @@ -487,11 +503,12 @@ omap4_clk_generic_activate(struct omap_c return ENXIO; clk_details = omap4_clk_details(clkdev->id); - clk_mem_res = sc->sc_res[clk_details->mem_region]; if (clk_details == NULL) return (ENXIO); + clk_mem_res = sc->sc_res[clk_details->mem_region]; + if (clk_mem_res == NULL) return (EINVAL); @@ -550,11 +567,12 @@ omap4_clk_generic_deactivate(struct omap return ENXIO; clk_details = omap4_clk_details(clkdev->id); - clk_mem_res = sc->sc_res[clk_details->mem_region]; if (clk_details == NULL) return (ENXIO); + clk_mem_res = sc->sc_res[clk_details->mem_region]; + if (clk_mem_res == NULL) return (EINVAL); @@ -617,10 +635,12 @@ omap4_clk_generic_accessible(struct omap return ENXIO; clk_details = omap4_clk_details(clkdev->id); - clk_mem_res = sc->sc_res[clk_details->mem_region]; if (clk_details == NULL) return (ENXIO); + + clk_mem_res = sc->sc_res[clk_details->mem_region]; + if (clk_mem_res == NULL) return (EINVAL); @@ -691,10 +711,12 @@ omap4_clk_gptimer_set_source(struct omap return ENXIO; clk_details = omap4_clk_details(clkdev->id); - clk_mem_res = sc->sc_res[clk_details->mem_region]; if (clk_details == NULL) return (ENXIO); + + clk_mem_res = sc->sc_res[clk_details->mem_region]; + if (clk_mem_res == NULL) return (EINVAL); @@ -732,10 +754,12 @@ omap4_clk_gptimer_get_source_freq(struct return ENXIO; clk_details = omap4_clk_details(clkdev->id); - clk_mem_res = sc->sc_res[clk_details->mem_region]; if (clk_details == NULL) return (ENXIO); + + clk_mem_res = sc->sc_res[clk_details->mem_region]; + if (clk_mem_res == NULL) return (EINVAL); @@ -778,10 +802,12 @@ omap4_clk_hsmmc_set_source(struct omap_c return ENXIO; clk_details = omap4_clk_details(clkdev->id); - clk_mem_res = sc->sc_res[clk_details->mem_region]; if (clk_details == NULL) return (ENXIO); + + clk_mem_res = sc->sc_res[clk_details->mem_region]; + if (clk_mem_res == NULL) return (EINVAL); @@ -836,10 +862,12 @@ omap4_clk_hsmmc_get_source_freq(struct o return ENXIO; clk_details = omap4_clk_details(clkdev->id); - clk_mem_res = sc->sc_res[clk_details->mem_region]; if (clk_details == NULL) return (ENXIO); + + clk_mem_res = sc->sc_res[clk_details->mem_region]; + if (clk_mem_res == NULL) return (EINVAL); From owner-svn-src-projects@FreeBSD.ORG Sat Feb 18 00:54:30 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F917106566C; Sat, 18 Feb 2012 00:54:30 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5DC7F8FC23; Sat, 18 Feb 2012 00:54:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1I0sU1Q003979; Sat, 18 Feb 2012 00:54:30 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1I0sUQE003974; Sat, 18 Feb 2012 00:54:30 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201202180054.q1I0sUQE003974@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sat, 18 Feb 2012 00:54:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231890 - in projects/armv6/sys/arm: conf ti ti/omap4 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Feb 2012 00:54:30 -0000 Author: gonzo Date: Sat Feb 18 00:54:30 2012 New Revision: 231890 URL: http://svn.freebsd.org/changeset/base/231890 Log: Add I2C controller driver slightly modified by me. Changes include: - Dropping support for OMAP3. It looks like revision detectin logic is incomplete/wrong and I do not have omap3 device for tests so I just dropped it to avoid imprssion thap omap3 code works. Possible fix points are marked with XXXOMAP3 markers - FDT support - Minor clean-up Added: projects/armv6/sys/arm/ti/omap_i2c.c projects/armv6/sys/arm/ti/omap_i2c.h Modified: projects/armv6/sys/arm/conf/PANDABOARD projects/armv6/sys/arm/ti/omap4/files.omap4 Modified: projects/armv6/sys/arm/conf/PANDABOARD ============================================================================== --- projects/armv6/sys/arm/conf/PANDABOARD Sat Feb 18 00:49:09 2012 (r231889) +++ projects/armv6/sys/arm/conf/PANDABOARD Sat Feb 18 00:54:30 2012 (r231890) @@ -75,9 +75,9 @@ device mmc # mmc/sd bus device mmcsd # mmc/sd flash cards # I2C support -#device iicbus -#device iic -#device omap3_i2c +device iicbus +device iic +device omap_i2c device loop device ether Modified: projects/armv6/sys/arm/ti/omap4/files.omap4 ============================================================================== --- projects/armv6/sys/arm/ti/omap4/files.omap4 Sat Feb 18 00:49:09 2012 (r231889) +++ projects/armv6/sys/arm/ti/omap4/files.omap4 Sat Feb 18 00:54:30 2012 (r231890) @@ -21,6 +21,7 @@ arm/ti/ti_machdep.c standard arm/ti/omap_gpio.c optional gpio arm/ti/usb/omap_ehci.c optional usb ehci +arm/ti/omap_i2c.c optional omap_i2c arm/ti/omap4/omap4_prcm_clks.c standard arm/ti/omap4/omap4_scm_padconf.c standard Added: projects/armv6/sys/arm/ti/omap_i2c.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/omap_i2c.c Sat Feb 18 00:54:30 2012 (r231890) @@ -0,0 +1,1139 @@ +/*- + * Copyright (c) 2011 + * Ben Gray . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/** + * Driver for the I2C module on the TI OMAP SoC. + * + * This driver is heavily based on the TWI driver for the AT91 (at91_twi.c). + * + * CAUTION: The I2Ci registers are limited to 16 bit and 8 bit data accesses, + * 32 bit data access is not allowed and can corrupt register content. + * + * This driver currently doesn't use DMA for the transfer, although I hope to + * incorporate that sometime in the future. The idea being that for transaction + * larger than a certain size the DMA engine is used, for anything less the + * normal interrupt/fifo driven option is used. + * + * + * WARNING: This driver uses mtx_sleep and interrupts to perform transactions, + * which means you can't do a transaction during startup before the interrupts + * have been enabled. Hint - the freebsd function config_intrhook_establish(). + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include "iicbus_if.h" + +/** + * I2C device driver context, a pointer to this is stored in the device + * driver structure. + */ +struct omap_i2c_softc +{ + device_t sc_dev; + struct resource* sc_irq_res; + struct resource* sc_mem_res; + device_t sc_iicbus; + + void* sc_irq_h; + + struct mtx sc_mtx; + + volatile uint16_t sc_stat_flags; /* contains the status flags last IRQ */ + + uint16_t sc_i2c_addr; + uint16_t sc_rev; +}; + +#define OMAP_I2C_REV1 0x003C /* OMAP3 */ +#define OMAP_I2C_REV2 0x000A /* OMAP4 */ + +/** + * Locking macros used throughout the driver + */ +#define OMAP_I2C_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) +#define OMAP_I2C_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx) +#define OMAP_I2C_LOCK_INIT(_sc) \ + mtx_init(&_sc->sc_mtx, device_get_nameunit(_sc->sc_dev), \ + "omap_i2c", MTX_DEF) +#define OMAP_I2C_LOCK_DESTROY(_sc) mtx_destroy(&_sc->sc_mtx); +#define OMAP_I2C_ASSERT_LOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_OWNED); +#define OMAP_I2C_ASSERT_UNLOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_NOTOWNED); + +#ifdef DEBUG +#define omap_i2c_dbg(_sc, fmt, args...) \ + device_printf((_sc)->sc_dev, fmt, ##args) +#else +#define omap_i2c_dbg(_sc, fmt, args...) +#endif + +static devclass_t omap_i2c_devclass; + +/* bus entry points */ + +static int omap_i2c_probe(device_t dev); +static int omap_i2c_attach(device_t dev); +static int omap_i2c_detach(device_t dev); +static void omap_i2c_intr(void *); + +/* helper routines */ +static int omap_i2c_activate(device_t dev); +static void omap_i2c_deactivate(device_t dev); + +/** + * omap_i2c_read_2 - reads a 16-bit value from one of the I2C registers + * @sc: I2C device context + * @off: the byte offset within the register bank to read from. + * + * + * LOCKING: + * No locking required + * + * RETURNS: + * 16-bit value read from the register. + */ +static inline uint16_t +omap_i2c_read_2(struct omap_i2c_softc *sc, bus_size_t off) +{ + return bus_read_2(sc->sc_mem_res, off); +} + +/** + * omap_i2c_write_2 - writes a 16-bit value to one of the I2C registers + * @sc: I2C device context + * @off: the byte offset within the register bank to read from. + * @val: the value to write into the register + * + * LOCKING: + * No locking required + * + * RETURNS: + * 16-bit value read from the register. + */ +static inline void +omap_i2c_write_2(struct omap_i2c_softc *sc, bus_size_t off, uint16_t val) +{ + bus_write_2(sc->sc_mem_res, off, val); +} + +/** + * omap_i2c_read_reg - reads a 16-bit value from one of the I2C registers + * take into account revision-dependent register offset + * @sc: I2C device context + * @off: the byte offset within the register bank to read from. + * + * + * LOCKING: + * No locking required + * + * RETURNS: + * 16-bit value read from the register. + */ +static inline uint16_t +omap_i2c_read_reg(struct omap_i2c_softc *sc, bus_size_t off) +{ + /* XXXOMAP3: FIXME add registers mapping here */ + return bus_read_2(sc->sc_mem_res, off); +} + +/** + * omap_i2c_write_reg - writes a 16-bit value to one of the I2C registers + * take into account revision-dependent register offset + * @sc: I2C device context + * @off: the byte offset within the register bank to read from. + * @val: the value to write into the register + * + * LOCKING: + * No locking required + * + * RETURNS: + * 16-bit value read from the register. + */ +static inline void +omap_i2c_write_reg(struct omap_i2c_softc *sc, bus_size_t off, uint16_t val) +{ + /* XXXOMAP3: FIXME add registers mapping here */ + bus_write_2(sc->sc_mem_res, off, val); +} + +/** + * omap_i2c_set_intr_enable - writes the interrupt enable register + * @sc: I2C device context + * @ie: bitmask of the interrupts to enable + * + * This function is needed as writing the I2C_IE register on the OMAP4 devices + * doesn't seem to actually enable the interrupt, rather you have to write + * through the I2C_IRQENABLE_CLR and I2C_IRQENABLE_SET registers. + * + * LOCKING: + * No locking required + * + * RETURNS: + * Nothing. + */ +static inline void +omap_i2c_set_intr_enable(struct omap_i2c_softc *sc, uint16_t ie) +{ + /* XXXOMAP3: FIXME */ + omap_i2c_write_2(sc, I2C_REG_IRQENABLE_CLR, 0xffff); + if (ie) + omap_i2c_write_2(sc, I2C_REG_IRQENABLE_SET, ie); +} + +/** + * omap_i2c_reset - attach function for the driver + * @dev: i2c device handle + * + * + * + * LOCKING: + * Called from timer context + * + * RETURNS: + * EH_HANDLED or EH_NOT_HANDLED + */ +static int +omap_i2c_reset(device_t dev, u_char speed, u_char addr, u_char *oldaddr) +{ + struct omap_i2c_softc *sc = device_get_softc(dev); + uint16_t psc_reg, scll_reg, sclh_reg, con_reg; + + OMAP_I2C_LOCK(sc); + + if (oldaddr) + *oldaddr = sc->sc_i2c_addr; + sc->sc_i2c_addr = addr; + + /* The header file doesn't actual tell you what speeds should be used for + * the 3 possible settings, so I'm going to go with the usual: + * + * IIC_SLOW => 100kbps + * IIC_FAST => 400kbps + * IIC_FASTEST => 3.4Mbps + * + * I2Ci_INTERNAL_CLK = I2Ci_FCLK / (PSC + 1) + * I2Ci_INTERNAL_CLK = 96MHZ / (PSC + 1) + */ + switch (speed) { + case IIC_FASTEST: + psc_reg = 0x0004; + scll_reg = 0x0811; + sclh_reg = 0x0a13; + break; + + case IIC_FAST: + psc_reg = 0x0009; + scll_reg = 0x0005; + sclh_reg = 0x0007; + break; + + case IIC_SLOW: + case IIC_UNKNOWN: + default: + psc_reg = 0x0017; + scll_reg = 0x000D; + sclh_reg = 0x000F; + break; + } + + /* First disable the controller while changing the clocks */ + con_reg = omap_i2c_read_reg(sc, I2C_REG_CON); + omap_i2c_write_reg(sc, I2C_REG_CON, 0x0000); + + /* Program the prescaler */ + omap_i2c_write_reg(sc, I2C_REG_PSC, psc_reg); + + /* Set the bitrate */ + omap_i2c_write_reg(sc, I2C_REG_SCLL, scll_reg); + omap_i2c_write_reg(sc, I2C_REG_SCLH, sclh_reg); + + /* Set the remote slave address */ + omap_i2c_write_reg(sc, I2C_REG_SA, addr); + + /* Enable the I2C module again */ + con_reg = I2C_CON_I2C_EN; + con_reg |= (speed == IIC_FASTEST) ? I2C_CON_OPMODE_HS : I2C_CON_OPMODE_STD; + omap_i2c_write_reg(sc, I2C_REG_CON, con_reg); + + OMAP_I2C_UNLOCK(sc); + + return 0; +} + +/** + * omap_i2c_intr - interrupt handler for the I2C module + * @dev: i2c device handle + * + * + * + * LOCKING: + * Called from timer context + * + * RETURNS: + * EH_HANDLED or EH_NOT_HANDLED + */ +static void +omap_i2c_intr(void *arg) +{ + struct omap_i2c_softc *sc = (struct omap_i2c_softc*) arg; + uint16_t status; + + status = omap_i2c_read_reg(sc, I2C_REG_STAT); + if (status == 0) + return; + + OMAP_I2C_LOCK(sc); + + /* save the flags */ + sc->sc_stat_flags |= status; + + /* clear the status flags */ + omap_i2c_write_reg(sc, I2C_REG_STAT, status); + + /* wakeup the process the started the transaction */ + wakeup(sc); + + OMAP_I2C_UNLOCK(sc); + + return; +} + +/** + * omap_i2c_wait - waits for the specific event to occur + * @sc: i2c driver context + * @flags: the event(s) to wait on, this is a bitmask of the I2C_STAT_??? flags + * @statp: if not null will contain the status flags upon return + * @timo: the number of ticks to wait + * + * + * + * LOCKING: + * The driver context must be locked before calling this function. Internally + * the function sleeps, releasing the lock as it does so, however the lock is + * always retaken before this function returns. + * + * RETURNS: + * 0 if the event(s) were tripped within timeout period + * EBUSY if timedout waiting for the events + * ENXIO if a NACK event was received + */ +static int +omap_i2c_wait(struct omap_i2c_softc *sc, uint16_t flags, uint16_t *statp, int timo) +{ + int waittime = timo; + int start_ticks = ticks; + int rc; + + OMAP_I2C_ASSERT_LOCKED(sc); + + /* check if the condition has already occured, the interrupt routine will + * clear the status flags. + */ + if ((sc->sc_stat_flags & flags) == 0) { + + /* condition(s) haven't occured so sleep on the IRQ */ + while (waittime > 0) { + + rc = mtx_sleep(sc, &sc->sc_mtx, 0, "I2Cwait", waittime); + if (rc == EWOULDBLOCK) { + /* timed-out, simply break out of the loop */ + break; + } else { + /* IRQ has been tripped, but need to sanity check we have the + * right events in the status flag. + */ + if ((sc->sc_stat_flags & flags) != 0) + break; + + /* event hasn't been tripped so wait some more */ + waittime -= (ticks - start_ticks); + start_ticks = ticks; + } + } + } + + /* copy the actual status bits */ + if (statp != NULL) + *statp = sc->sc_stat_flags; + + /* return the status found */ + if ((sc->sc_stat_flags & flags) != 0) + rc = 0; + else + rc = EBUSY; + + /* clear the flags set by the interrupt handler */ + sc->sc_stat_flags = 0; + + return (rc); +} + +/** + * omap_i2c_wait_for_free_bus - waits for the bus to become free + * @sc: i2c driver context + * @timo: the time to wait for the bus to become free + * + * + * + * LOCKING: + * The driver context must be locked before calling this function. Internally + * the function sleeps, releasing the lock as it does so, however the lock is + * always taken before this function returns. + * + * RETURNS: + * 0 if the event(s) were tripped within timeout period + * EBUSY if timedout waiting for the events + * ENXIO if a NACK event was received + */ +static int +omap_i2c_wait_for_free_bus(struct omap_i2c_softc *sc, int timo) +{ + /* check if the bus is free, BB bit = 0 */ + if ((omap_i2c_read_reg(sc, I2C_REG_STAT) & I2C_STAT_BB) == 0) + return 0; + + /* enable bus free interrupts */ + omap_i2c_set_intr_enable(sc, I2C_IE_BF); + + /* wait for the bus free interrupt to be tripped */ + return omap_i2c_wait(sc, I2C_STAT_BF, NULL, timo); +} + +/** + * omap_i2c_read_bytes - attempts to perform a read operation + * @sc: i2c driver context + * @buf: buffer to hold the received bytes + * @len: the number of bytes to read + * + * This function assumes the slave address is already set + * + * LOCKING: + * The context lock should be held before calling this function + * + * RETURNS: + * 0 on function succeeded + * EINVAL if invalid message is passed as an arg + */ +static int +omap_i2c_read_bytes(struct omap_i2c_softc *sc, uint8_t *buf, uint16_t len) +{ + int timo = (hz / 4); + int err = 0; + uint16_t con_reg; + uint16_t events; + uint16_t status; + uint32_t amount = 0; + uint32_t sofar = 0; + uint32_t i; + + /* wait for the bus to become free */ + err = omap_i2c_wait_for_free_bus(sc, timo); + if (err != 0) { + device_printf(sc->sc_dev, "bus never freed\n"); + return (err); + } + + /* set the events to wait for */ + events = I2C_IE_RDR | /* Receive draining interrupt */ + I2C_IE_RRDY | /* Receive Data Ready interrupt */ + I2C_IE_ARDY | /* Register Access Ready interrupt */ + I2C_IE_NACK | /* No Acknowledgment interrupt */ + I2C_IE_AL; + + /* enable interrupts for the events we want */ + omap_i2c_set_intr_enable(sc, events); + + /* write the number of bytes to read */ + omap_i2c_write_reg(sc, I2C_REG_CNT, len); + + /* clear the write bit and initiate the read transaction. Setting the STT + * (start) bit initiates the transfer. + */ + con_reg = omap_i2c_read_reg(sc, I2C_REG_CON); + con_reg &= ~I2C_CON_TRX; + con_reg |= I2C_CON_MST | I2C_CON_STT | I2C_CON_STP; + omap_i2c_write_reg(sc, I2C_REG_CON, con_reg); + + /* reading loop */ + while (1) { + + /* wait for an event */ + err = omap_i2c_wait(sc, events, &status, timo); + if (err != 0) { + break; + } + + /* check for the error conditions */ + if (status & I2C_STAT_NACK) { + /* no ACK from slave */ + omap_i2c_dbg(sc, "NACK\n"); + err = ENXIO; + break; + } + if (status & I2C_STAT_AL) { + /* arbitration lost */ + omap_i2c_dbg(sc, "Arbitration lost\n"); + err = ENXIO; + break; + } + + /* check if we have finished */ + if (status & I2C_STAT_ARDY) { + /* register access ready - transaction complete basically */ + omap_i2c_dbg(sc, "ARDY transaction complete\n"); + err = 0; + break; + } + + /* read some data */ + if (status & I2C_STAT_RDR) { + /* Receive draining interrupt - last data received */ + omap_i2c_dbg(sc, "Receive draining interrupt\n"); + + /* get the number of bytes in the FIFO */ + amount = omap_i2c_read_reg(sc, I2C_REG_BUFSTAT); + amount >>= 8; + amount &= 0x3f; + } + else if (status & I2C_STAT_RRDY) { + /* Receive data ready interrupt - enough data received */ + omap_i2c_dbg(sc, "Receive data ready interrupt\n"); + + /* get the number of bytes in the FIFO */ + amount = omap_i2c_read_reg(sc, I2C_REG_BUF); + amount >>= 8; + amount &= 0x3f; + amount += 1; + } + + /* sanity check we haven't overwritten the array */ + if ((sofar + amount) > len) { + omap_i2c_dbg(sc, "to many bytes to read\n"); + amount = (len - sofar); + } + + /* read the bytes from the fifo */ + for (i = 0; i < amount; i++) { + buf[sofar++] = (uint8_t)(omap_i2c_read_reg(sc, I2C_REG_DATA) & 0xff); + } + + /* attempt to clear the receive ready bits */ + omap_i2c_write_reg(sc, I2C_REG_STAT, I2C_STAT_RDR | I2C_STAT_RRDY); + } + + /* reset the registers regardless if there was an error or not */ + omap_i2c_set_intr_enable(sc, 0x0000); + omap_i2c_write_reg(sc, I2C_REG_CON, I2C_CON_I2C_EN | I2C_CON_MST | I2C_CON_STP); + + return (err); +} + +/** + * omap_i2c_write_bytes - attempts to perform a read operation + * @sc: i2c driver context + * @buf: buffer containing the bytes to write + * @len: the number of bytes to write + * + * This function assumes the slave address is already set + * + * LOCKING: + * The context lock should be held before calling this function + * + * RETURNS: + * 0 on function succeeded + * EINVAL if invalid message is passed as an arg + */ +static int +omap_i2c_write_bytes(struct omap_i2c_softc *sc, const uint8_t *buf, uint16_t len) +{ + int timo = (hz / 4); + int err = 0; + uint16_t con_reg; + uint16_t events; + uint16_t status; + uint32_t amount = 0; + uint32_t sofar = 0; + uint32_t i; + + /* wait for the bus to become free */ + err = omap_i2c_wait_for_free_bus(sc, timo); + if (err != 0) + return (err); + + /* set the events to wait for */ + events = I2C_IE_XDR | /* Transmit draining interrupt */ + I2C_IE_XRDY | /* Transmit Data Ready interrupt */ + I2C_IE_ARDY | /* Register Access Ready interrupt */ + I2C_IE_NACK | /* No Acknowledgment interrupt */ + I2C_IE_AL; + + /* enable interrupts for the events we want*/ + omap_i2c_set_intr_enable(sc, events); + + /* write the number of bytes to write */ + omap_i2c_write_reg(sc, I2C_REG_CNT, len); + + /* set the write bit and initiate the write transaction. Setting the STT + * (start) bit initiates the transfer. + */ + con_reg = omap_i2c_read_reg(sc, I2C_REG_CON); + con_reg |= I2C_CON_TRX | I2C_CON_MST | I2C_CON_STT | I2C_CON_STP; + omap_i2c_write_reg(sc, I2C_REG_CON, con_reg); + + /* writing loop */ + while (1) { + + /* wait for an event */ + err = omap_i2c_wait(sc, events, &status, timo); + if (err != 0) { + break; + } + + /* check for the error conditions */ + if (status & I2C_STAT_NACK) { + /* no ACK from slave */ + omap_i2c_dbg(sc, "NACK\n"); + err = ENXIO; + break; + } + if (status & I2C_STAT_AL) { + /* arbitration lost */ + omap_i2c_dbg(sc, "Arbitration lost\n"); + err = ENXIO; + break; + } + + /* check if we have finished */ + if (status & I2C_STAT_ARDY) { + /* register access ready - transaction complete basically */ + omap_i2c_dbg(sc, "ARDY transaction complete\n"); + err = 0; + break; + } + + /* read some data */ + if (status & I2C_STAT_XDR) { + /* Receive draining interrupt - last data received */ + omap_i2c_dbg(sc, "Transmit draining interrupt\n"); + + /* get the number of bytes in the FIFO */ + amount = omap_i2c_read_reg(sc, I2C_REG_BUFSTAT); + amount &= 0x3f; + } + else if (status & I2C_STAT_XRDY) { + /* Receive data ready interrupt - enough data received */ + omap_i2c_dbg(sc, "Transmit data ready interrupt\n"); + + /* get the number of bytes in the FIFO */ + amount = omap_i2c_read_reg(sc, I2C_REG_BUF); + amount &= 0x3f; + amount += 1; + } + + /* sanity check we haven't overwritten the array */ + if ((sofar + amount) > len) { + omap_i2c_dbg(sc, "to many bytes to write\n"); + amount = (len - sofar); + } + + /* write the bytes from the fifo */ + for (i = 0; i < amount; i++) { + omap_i2c_write_reg(sc, I2C_REG_DATA, buf[sofar++]); + } + + /* attempt to clear the transmit ready bits */ + omap_i2c_write_reg(sc, I2C_REG_STAT, I2C_STAT_XDR | I2C_STAT_XRDY); + } + + /* reset the registers regardless if there was an error or not */ + omap_i2c_set_intr_enable(sc, 0x0000); + omap_i2c_write_reg(sc, I2C_REG_CON, I2C_CON_I2C_EN | I2C_CON_MST | I2C_CON_STP); + + return (err); +} + +/** + * omap_i2c_transfer - called to perform the transfer + * @dev: i2c device handle + * @msgs: the messages to send/receive + * @nmsgs: the number of messages in the msgs array + * + * + * LOCKING: + * Internally locked + * + * RETURNS: + * 0 on function succeeded + * EINVAL if invalid message is passed as an arg + */ +static int +omap_i2c_transfer(device_t dev, struct iic_msg *msgs, uint32_t nmsgs) +{ + struct omap_i2c_softc *sc = device_get_softc(dev); + int err = 0; + uint32_t i; + uint16_t len; + uint8_t *buf; + + OMAP_I2C_LOCK(sc); + + for (i = 0; i < nmsgs; i++) { + + len = msgs[i].len; + buf = msgs[i].buf; + + /* zero byte transfers aren't allowed */ + if (len == 0 || buf == NULL) { + err = EINVAL; + goto out; + } + + /* set the slave address */ + omap_i2c_write_reg(sc, I2C_REG_SA, msgs[i].slave); + + /* perform the read or write */ + if (msgs[i].flags & IIC_M_RD) { + err = omap_i2c_read_bytes(sc, buf, len); + } else { + err = omap_i2c_write_bytes(sc, buf, len); + } + + } + +out: + OMAP_I2C_UNLOCK(sc); + + return (err); +} + +/** + * omap_i2c_callback - not sure about this one + * @dev: i2c device handle + * + * + * + * LOCKING: + * Called from timer context + * + * RETURNS: + * EH_HANDLED or EH_NOT_HANDLED + */ +static int +omap_i2c_callback(device_t dev, int index, caddr_t data) +{ + int error = 0; + + switch (index) { + case IIC_REQUEST_BUS: + break; + + case IIC_RELEASE_BUS: + break; + + default: + error = EINVAL; + } + + return (error); +} + +/** + * omap_i2c_activate - initialises and activates an I2C bus + * @dev: i2c device handle + * @num: the number of the I2C controller to activate; 1, 2 or 3 + * + * + * LOCKING: + * Assumed called in an atomic context. + * + * RETURNS: + * nothing + */ +static int +omap_i2c_activate(device_t dev) +{ + struct omap_i2c_softc *sc = (struct omap_i2c_softc*) device_get_softc(dev); + unsigned int timeout = 0; + uint16_t con_reg; + int err; + clk_ident_t clk; + + /* + * The following sequence is taken from the OMAP3530 technical reference + * + * 1. Enable the functional and interface clocks (see Section 18.3.1.1.1). + */ + clk = I2C1_CLK + device_get_unit(dev); + err = omap_prcm_clk_enable(clk); + if (err) + return (err); + + /* There seems to be a bug in the I2C reset mechanism, for some reason you + * need to disable the I2C module before issuing the reset and then enable + * it again after to detect the reset done. + * + * I found this out by looking at the Linux driver implementation, thanks + * linux guys! + */ + + /* Disable the I2C controller */ + omap_i2c_write_reg(sc, I2C_REG_CON, 0x0000); + + /* Issue a softreset to the controller */ + /* XXXOMAP3: FIXME */ + bus_write_2(sc->sc_mem_res, I2C_REG_SYSC, 0x0002); + + /* Re-enable the module and then check for the reset done */ + omap_i2c_write_reg(sc, I2C_REG_CON, I2C_CON_I2C_EN); + + while ((omap_i2c_read_reg(sc, I2C_REG_SYSS) & 0x01) == 0x00) { + if (timeout++ > 100) { + return (EBUSY); + } + DELAY(100); + } + + /* Disable the I2C controller once again, now that the reset has finished */ + omap_i2c_write_reg(sc, I2C_REG_CON, 0x0000); + + /* 2. Program the prescaler to obtain an approximately 12-MHz internal + * sampling clock (I2Ci_INTERNAL_CLK) by programming the corresponding + * value in the I2Ci.I2C_PSC[3:0] PSC field. + * This value depends on the frequency of the functional clock (I2Ci_FCLK). + * Because this frequency is 96MHz, the I2Ci.I2C_PSC[7:0] PSC field value + * is 0x7. + */ + + /* Program the prescaler to obtain an approximately 12-MHz internal + * sampling clock. + */ + omap_i2c_write_reg(sc, I2C_REG_PSC, 0x0017); + + /* 3. Program the I2Ci.I2C_SCLL[7:0] SCLL and I2Ci.I2C_SCLH[7:0] SCLH fields + * to obtain a bit rate of 100K bps or 400K bps. These values depend on + * the internal sampling clock frequency (see Table 18-12). + */ + + /* Set the bitrate to 100kbps */ + omap_i2c_write_reg(sc, I2C_REG_SCLL, 0x000d); + omap_i2c_write_reg(sc, I2C_REG_SCLH, 0x000f); + + /* 4. (Optional) Program the I2Ci.I2C_SCLL[15:8] HSSCLL and + * I2Ci.I2C_SCLH[15:8] HSSCLH fields to obtain a bit rate of 400K bps or + * 3.4M bps (for the second phase of HS mode). These values depend on the + * internal sampling clock frequency (see Table 18-12). + * + * 5. (Optional) If a bit rate of 3.4M bps is used and the bus line + * capacitance exceeds 45 pF, program the CONTROL.CONTROL_DEVCONF1[12] + * I2C1HSMASTER bit for I2C1, the CONTROL.CONTROL_DEVCONF1[13] + * I2C2HSMASTER bit for I2C2, or the CONTROL.CONTROL_DEVCONF1[14] + * I2C3HSMASTER bit for I2C3. + */ + + /* 6. Configure the Own Address of the I2C controller by storing it in the + * I2Ci.I2C_OA0 register. Up to four Own Addresses can be programmed in + * the I2Ci.I2C_OAi registers (with I = 0, 1, 2, 3) for each I2C + * controller. + * + * Note: For a 10-bit address, set the corresponding expand Own Address bit + * in the I2Ci.I2C_CON register. + */ + + /* Driver currently always in single master mode so ignore this step */ + + /* 7. Set the TX threshold (in transmitter mode) and the RX threshold (in + * receiver mode) by setting the I2Ci.I2C_BUF[5:0]XTRSH field to (TX + * threshold - 1) and the I2Ci.I2C_BUF[13:8]RTRSH field to (RX threshold + * - 1), where the TX and RX thresholds are greater than or equal to 1. + */ + + /* Set the FIFO buffer threshold, note I2C1 & I2C2 have 8 byte FIFO, whereas + * I2C3 has 64 bytes. Threshold set to 5 for now. + */ + omap_i2c_write_reg(sc, I2C_REG_BUF, 0x0404); + + /* + * 8. Take the I2C controller out of reset by setting the I2Ci.I2C_CON[15] + * I2C_EN bit to 1. + */ + omap_i2c_write_reg(sc, I2C_REG_CON, I2C_CON_I2C_EN | I2C_CON_OPMODE_STD); + + /* + * To initialize the I2C controller, perform the following steps: + * + * 1. Configure the I2Ci.I2C_CON register: + * · For master or slave mode, set the I2Ci.I2C_CON[10] MST bit (0: slave, + * 1: master). + * · For transmitter or receiver mode, set the I2Ci.I2C_CON[9] TRX bit + * (0: receiver, 1: transmitter). + */ + con_reg = omap_i2c_read_reg(sc, I2C_REG_CON); + con_reg |= I2C_CON_MST; + omap_i2c_write_reg(sc, I2C_REG_CON, con_reg); + + /* 2. If using an interrupt to transmit/receive data, set to 1 the + * corresponding bit in the I2Ci.I2C_IE register (the I2Ci.I2C_IE[4] + * XRDY_IE bit for the transmit interrupt, the I2Ci.I2C_IE[3] RRDY bit + * for the receive interrupt). + */ + omap_i2c_set_intr_enable(sc, I2C_IE_XRDY | I2C_IE_RRDY); + + /* 3. If using DMA to receive/transmit data, set to 1 the corresponding bit + * in the I2Ci.I2C_BUF register (the I2Ci.I2C_BUF[15] RDMA_EN bit for the + * receive DMA channel, the I2Ci.I2C_BUF[7] XDMA_EN bit for the transmit + * DMA channel). + */ + + /* not using DMA for now, so ignore this */ + + return (0); +} + +/** + * omap_i2c_deactivate - deactivates the controller and releases resources + * @dev: i2c device handle + * + * + * + * LOCKING: + * Assumed called in an atomic context. + * + * RETURNS: + * nothing + */ +static void +omap_i2c_deactivate(device_t dev) +{ + struct omap_i2c_softc *sc = device_get_softc(dev); + clk_ident_t clk; + + /* Disable the controller - cancel all transactions */ + omap_i2c_write_reg(sc, I2C_REG_CON, 0x0000); + + /* Release the interrupt handler */ + if (sc->sc_irq_h) { + bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_irq_h); + sc->sc_irq_h = 0; + } + + bus_generic_detach(sc->sc_dev); + + /* Unmap the I2C controller registers */ + if (sc->sc_mem_res != 0) { + bus_release_resource(dev, SYS_RES_MEMORY, rman_get_rid(sc->sc_irq_res), *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sat Feb 18 00:57:11 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 648FF106566C; Sat, 18 Feb 2012 00:57:11 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 547768FC18; Sat, 18 Feb 2012 00:57:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1I0vBss004150; Sat, 18 Feb 2012 00:57:11 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1I0vBLh004148; Sat, 18 Feb 2012 00:57:11 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201202180057.q1I0vBLh004148@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sat, 18 Feb 2012 00:57:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231892 - projects/armv6/sys/boot/fdt/dts X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Feb 2012 00:57:11 -0000 Author: gonzo Date: Sat Feb 18 00:57:11 2012 New Revision: 231892 URL: http://svn.freebsd.org/changeset/base/231892 Log: Add I2C1 device Modified: projects/armv6/sys/boot/fdt/dts/pandaboard.dts Modified: projects/armv6/sys/boot/fdt/dts/pandaboard.dts ============================================================================== --- projects/armv6/sys/boot/fdt/dts/pandaboard.dts Sat Feb 18 00:55:54 2012 (r231891) +++ projects/armv6/sys/boot/fdt/dts/pandaboard.dts Sat Feb 18 00:57:11 2012 (r231892) @@ -145,6 +145,14 @@ interrupts = <109>; interrupt-parent = <&GIC>; }; + + I2C1: i2c@x48070000 { + compatible = "ti,omap_i2c"; + reg =< 0x48070000 0x100 >; + interrupts = <88>; + interrupt-parent = <&GIC>; + + }; }; chosen { From owner-svn-src-projects@FreeBSD.ORG Sat Feb 18 12:19:15 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C1F341065670; Sat, 18 Feb 2012 12:19:15 +0000 (UTC) (envelope-from dmarion@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A9E608FC18; Sat, 18 Feb 2012 12:19:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1ICJFYI030037; Sat, 18 Feb 2012 12:19:15 GMT (envelope-from dmarion@svn.freebsd.org) Received: (from dmarion@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1ICJFWr030031; Sat, 18 Feb 2012 12:19:15 GMT (envelope-from dmarion@svn.freebsd.org) Message-Id: <201202181219.q1ICJFWr030031@svn.freebsd.org> From: Damjan Marion Date: Sat, 18 Feb 2012 12:19:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r231894 - in projects/armv6/sys: arm/ti arm/ti/am335x arm/ti/omap4 arm/ti/usb boot/fdt/dts X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Feb 2012 12:19:15 -0000 Author: dmarion Date: Sat Feb 18 12:19:15 2012 New Revision: 231894 URL: http://svn.freebsd.org/changeset/base/231894 Log: Reorganize SCM and GPIO driver so it can be reused by other TI SoCs and add AM335x support. Approved by: cognet (mentor) Added: projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c projects/armv6/sys/arm/ti/ti_scm.c projects/armv6/sys/arm/ti/ti_scm.h Deleted: projects/armv6/sys/arm/ti/omap_scm.c projects/armv6/sys/arm/ti/omap_scm.h Modified: projects/armv6/sys/arm/ti/am335x/files.am335x projects/armv6/sys/arm/ti/omap4/files.omap4 projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c projects/armv6/sys/arm/ti/omap4/omap4_scm_padconf.c projects/armv6/sys/arm/ti/omap_gpio.c projects/armv6/sys/arm/ti/usb/omap_ehci.c projects/armv6/sys/boot/fdt/dts/beaglebone.dts projects/armv6/sys/boot/fdt/dts/pandaboard.dts Added: projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c Sat Feb 18 12:19:15 2012 (r231894) @@ -0,0 +1,317 @@ +/*- + * Copyright (c) 2012 Damjan Marion + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#define _PIN(r, b, gp, gm, m0, m1, m2, m3, m4, m5, m6, m7) \ + { .reg_off = r, \ + .gpio_pin = gp, \ + .gpio_mode = gm, \ + .ballname = b, \ + .muxmodes[0] = m0, \ + .muxmodes[1] = m1, \ + .muxmodes[2] = m2, \ + .muxmodes[3] = m3, \ + .muxmodes[4] = m4, \ + .muxmodes[5] = m5, \ + .muxmodes[6] = m6, \ + .muxmodes[7] = m7, \ + } + +#define RXACTIVE (0x01 << 5) /* Input enable value for the Pad */ +#define PULLTYPESEL (0x01 << 4) /* Pad pullup/pulldown type selection */ +#define PULLUDEN (0x01 << 3) /* Pullup/pulldown enabled */ + +const struct ti_scm_padstate ti_padstate_devmap[] = { + {"output", 0 }, + {"output_pullup", PULLTYPESEL }, + {"input", RXACTIVE }, + {"input_pulldown", RXACTIVE | PULLUDEN }, + {"input_pullup", RXACTIVE | PULLUDEN | PULLTYPESEL }, + {"input_pullup_inact", RXACTIVE | PULLTYPESEL }, + { .state = NULL } +}; + +const struct ti_scm_padconf ti_padconf_devmap[] = { + _PIN(0x800, "GPMC_AD0", 32, 7,"gpmc_ad0", "mmc1_dat0", NULL, NULL, NULL, NULL, NULL, "gpio1_0"), + _PIN(0x804, "GPMC_AD1", 33, 7,"gpmc_ad1", "mmc1_dat1", NULL, NULL, NULL, NULL, NULL, "gpio1_1"), + _PIN(0x808, "GPMC_AD2", 34, 7,"gpmc_ad2", "mmc1_dat2", NULL, NULL, NULL, NULL, NULL, "gpio1_2"), + _PIN(0x80C, "GPMC_AD3", 35, 7,"gpmc_ad3", "mmc1_dat3", NULL, NULL, NULL, NULL, NULL, "gpio1_3"), + _PIN(0x810, "GPMC_AD4", 36, 7,"gpmc_ad4", "mmc1_dat4", NULL, NULL, NULL, NULL, NULL, "gpio1_4"), + _PIN(0x814, "GPMC_AD5", 37, 7,"gpmc_ad5", "mmc1_dat5", NULL, NULL, NULL, NULL, NULL, "gpio1_5"), + _PIN(0x818, "GPMC_AD6", 38, 7,"gpmc_ad6", "mmc1_dat6", NULL, NULL, NULL, NULL, NULL, "gpio1_6"), + _PIN(0x81C, "GPMC_AD7", 39, 7,"gpmc_ad7", "mmc1_dat7", NULL, NULL, NULL, NULL, NULL, "gpio1_7"), +#if 0 /* Incomplete Entries - fill with data from table 2-7 in datasheet */ + _PIN(0x820, "gpmc_ad8", 0, 0, "gpmc_ad8", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x824, "gpmc_ad9", 0, 0, "gpmc_ad9", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x828, "gpmc_ad10", 0, 0, "gpmc_ad10", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x82C, "gpmc_ad11", 0, 0, "gpmc_ad11", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x830, "gpmc_ad12", 0, 0, "gpmc_ad12", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x834, "gpmc_ad13", 0, 0, "gpmc_ad13", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x838, "gpmc_ad14", 0, 0, "gpmc_ad14", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x83C, "gpmc_ad15", 0, 0, "gpmc_ad15", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x840, "gpmc_a0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x844, "gpmc_a1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x848, "gpmc_a2", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x84C, "gpmc_a3", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x850, "gpmc_a4", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x854, "gpmc_a5", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x858, "gpmc_a6", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x85C, "gpmc_a7", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x860, "gpmc_a8", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x864, "gpmc_a9", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x868, "gpmc_a10", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x86C, "gpmc_a11", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x870, "gpmc_wait0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x874, "gpmc_wpn", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x878, "gpmc_be1n", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x87c, "gpmc_csn0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x880, "gpmc_csn1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x884, "gpmc_csn2", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x888, "gpmc_csn3", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x88c, "gpmc_clk", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x890, "gpmc_advn_ale", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x894, "gpmc_oen_ren", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x898, "gpmc_wen", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x89c, "gpmc_be0n_cle", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8a0, "lcd_data0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8a4, "lcd_data1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8a8, "lcd_data2", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8ac, "lcd_data3", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8b0, "lcd_data4", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8b4, "lcd_data5", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8b8, "lcd_data6", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8bc, "lcd_data7", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8c0, "lcd_data8", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8c4, "lcd_data9", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8c8, "lcd_data10", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8cc, "lcd_data11", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8d0, "lcd_data12", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8d4, "lcd_data13", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8d8, "lcd_data14", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8dc, "lcd_data15", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8e0, "lcd_vsync", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8e4, "lcd_hsync", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8e8, "lcd_pclk", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8ec, "lcd_ac_bias_en", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8f0, "mmc0_dat3", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8f4, "mmc0_dat2", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8f8, "mmc0_dat1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x8fc, "mmc0_dat0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x900, "mmc0_clk", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x904, "mmc0_cmd", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +#endif + _PIN(0x908, "MII1_COL", 96, 7, "gmii1_col", "rmii2_refclk", "spi1_sclk", "uart5_rxd", "mcasp1_axr2", "mmc2_dat3", "mcasp0_axr2", "gpio3_0"), + _PIN(0x90c, "MII1_CRS", 97, 7, "gmii1_crs", "rmii1_crs_dv", "spi1_d0", "I2C1_SDA", "mcasp1_aclkx", "uart5_ctsn", "uart2_rxd", "gpio3_1"), + _PIN(0x910, "MII1_RX_ER", 98, 7, "gmii1_rxerr", "rmii1_rxerr", "spi1_d1", "I2C1_SCL", "mcasp1_fsx", "uart5_rtsn", "uart2_txd", "gpio3_2"), + _PIN(0x914, "MII1_TX_EN", 99, 7, "gmii1_txen", "rmii1_txen", "rgmii1_tctl", "timer4", "mcasp1_axr0", "eQEP0_index", "mmc2_cmd", "gpio3_3"), + _PIN(0x918, "MII1_RX_DV", 100, 7, "gmii1_rxdv", "cd_memory_clk", "rgmii1_rctl", "uart5_txd", "mcasp1_aclkx", "mmc2_dat0", "mcasp0_aclkr", "gpio3_4"), + _PIN(0x91c, "MII1_TXD3", 16, 7, "gmii1_txd3", "dcan0_tx", "rgmii1_td3", "uart4_rxd", "mcasp1_fsx", "mmc2_dat1", "mcasp0_fsr", "gpio0_16"), + _PIN(0x920, "MII1_TXD2", 17, 7, "gmii1_txd2", "dcan0_rx", "rgmii1_td2", "uart4_txd", "mcasp1_axr0", "mmc2_dat2", "mcasp0_ahclkx", "gpio0_17"), + _PIN(0x924, "MII1_TXD1", 21, 7, "gmii1_txd1", "rmii1_txd1", "rgmii1_td1", "mcasp1_fsr", "mcasp1_axr1", "eQEP0A_in", "mmc1_cmd", "gpio0_21"), + _PIN(0x928, "MII1_TXD0", 28, 7, "gmii1_txd0", "rmii1_txd0", "rgmii1_td0", "mcasp1_axr2", "mcasp1_aclkr", "eQEP0B_in", "mmc1_clk", "gpio0_28"), + _PIN(0x92c, "MII1_TX_CLK", 105, 7, "gmii1_txclk", "uart2_rxd", "rgmii1_tclk", "mmc0_dat7", "mmc1_dat0", "uart1_dcdn", "mcasp0_aclkx", "gpio3_9"), + _PIN(0x930, "MII1_RX_CLK", 106, 7, "gmii1_rxclk", "uart2_txd", "rgmii1_rclk", "mmc0_dat6", "mmc1_dat1", "uart1_dsrn", "mcasp0_fsx", "gpio3_10"), + _PIN(0x934, "MII1_RXD3", 82, 7, "gmii1_rxd3", "uart3_rxd", "rgmii1_rd3", "mmc0_dat5", "mmc1_dat2", "uart1_dtrn", "mcasp0_axr0", "gpio2_18"), + _PIN(0x938, "MII1_RXD2", 83, 7, "gmii1_rxd2", "uart3_txd", "rgmii1_rd2", "mmc0_dat4", "mmc1_dat3", "uart1_rin", "mcasp0_axr1", "gpio2_19"), + _PIN(0x93c, "MII1_RXD1", 84, 7, "gmii1_rxd1", "rmii1_rxd1", "rgmii1_rd1", "mcasp1_axr3", "mcasp1_fsr", "eQEP0_strobe", "mmc2_clk", "gpio2_20"), + _PIN(0x940, "MII1_RXD0", 85, 7, "gmii1_rxd0", "rmii1_rxd0", "rgmii1_rd0", "mcasp1_ahclkx", "mcasp1_ahclkr", "mcasp1_aclkr", "mcasp0_axr3", "gpio2_21"), + _PIN(0x944, "RMII1_REF_CLK", 29, 7, "rmii1_refclk", "xdma_event_intr2", "spi1_cs0", "uart5_txd", "mcasp1_axr3", "mmc0_pow", "mcasp1_ahclkx", "gpio0_29"), + _PIN(0x948, "MDIO", 0, 7, "mdio_data", "timer6", "uart5_rxd", "uart3_ctsn", "mmc0_sdcd","mmc1_cmd", "mmc2_cmd","gpio0_0"), + _PIN(0x94c, "MDC", 1, 7, "mdio_clk", "timer5", "uart5_txd", "uart3_rtsn", "mmc0_sdwp", "mmc1_clk", "mmc2_clk", "gpio0_1"), +#if 0 /* Incomplete Entries - fill with data from table 2-7 in datasheet */ + _PIN(0x950, "spi0_sclk", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x954, "spi0_d0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x958, "spi0_d1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x95c, "spi0_cs0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x960, "spi0_cs1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x964, "ecap0_in_pwm0_out",0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x968, "uart0_ctsn", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x96c, "uart0_rtsn", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x970, "uart0_rxd", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x974, "uart0_txd", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x978, "uart1_ctsn", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x97c, "uart1_rtsn", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x980, "uart1_rxd", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x984, "uart1_txd", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x988, "i2c0_sda", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x98c, "i2c0_scl", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x990, "mcasp0_aclkx", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x994, "mcasp0_fsx", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x998, "mcasp0_axr0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x99c, "mcasp0_ahclkr", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9a0, "mcasp0_aclkr", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9a4, "mcasp0_fsr", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9a8, "mcasp0_axr1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9ac, "mcasp0_ahclkx", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9b0, "xdma_event_intr0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9b4, "xdma_event_intr1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9b8, "nresetin_out", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9bc, "porz", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9c0, "nnmi", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9c4, "osc0_in", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9c8, "osc0_out", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9cc, "osc0_vss", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9d0, "tms", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9d4, "tdi", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9d8, "tdo", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9dc, "tck", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9e0, "ntrst", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9e4, "emu0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9e8, "emu1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9ec, "osc1_in", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9f0, "osc1_out", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9f4, "osc1_vss", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9f8, "rtc_porz", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0x9fc, "pmic_power_en", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa00, "ext_wakeup", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa04, "enz_kaldo_1p8v", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa08, "usb0_dm", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa0c, "usb0_dp", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa10, "usb0_ce", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa14, "usb0_id", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa18, "usb0_vbus", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa1c, "usb0_drvvbus", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa20, "usb1_dm", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa24, "usb1_dp", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa28, "usb1_ce", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa2c, "usb1_id", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa30, "usb1_vbus", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa34, "usb1_drvvbus", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa38, "ddr_resetn", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa3c, "ddr_csn0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa40, "ddr_cke", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa44, "ddr_ck", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa48, "ddr_nck", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa4c, "ddr_casn", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa50, "ddr_rasn", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa54, "ddr_wen", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa58, "ddr_ba0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa5c, "ddr_ba1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa60, "ddr_ba2", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa64, "ddr_a0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa68, "ddr_a1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa6c, "ddr_a2", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa70, "ddr_a3", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa74, "ddr_a4", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa78, "ddr_a5", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa7c, "ddr_a6", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa80, "ddr_a7", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa84, "ddr_a8", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa88, "ddr_a9", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa8c, "ddr_a10", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa90, "ddr_a11", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa94, "ddr_a12", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa98, "ddr_a13", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xa9c, "ddr_a14", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xaa0, "ddr_a15", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xaa4, "ddr_odt", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xaa8, "ddr_d0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xaac, "ddr_d1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xab0, "ddr_d2", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xab4, "ddr_d3", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xab8, "ddr_d4", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xabc, "ddr_d5", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xac0, "ddr_d6", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xac4, "ddr_d7", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xac8, "ddr_d8", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xacc, "ddr_d9", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xad0, "ddr_d10", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xad4, "ddr_d11", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xad8, "ddr_d12", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xadc, "ddr_d13", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xae0, "ddr_d14", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xae4, "ddr_d15", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xae8, "ddr_dqm0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xaec, "ddr_dqm1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xaf0, "ddr_dqs0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xaf4, "ddr_dqsn0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xaf8, "ddr_dqs1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xafc, "ddr_dqsn1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb00, "ddr_vref", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb04, "ddr_vtp", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb08, "ddr_strben0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb0c, "ddr_strben1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb2c, "ain0", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb28, "ain1", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb24, "ain2", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb20, "ain3", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb1c, "ain4", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb18, "ain5", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb14, "ain6", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb10, "ain7", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb30, "vrefp", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb34, "vrefn", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb38, "avdd", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb3c, "avss", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb40, "iforce", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb44, "vsense", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PIN(0xb48, "testout", 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +#endif + { .ballname = NULL }, +}; + +const struct ti_scm_device ti_scm_dev = { + .padconf_muxmode_mask = 0x7, + .padconf_sate_mask = 0x78, + .padstate = (struct ti_scm_padstate *) &ti_padstate_devmap, + .padconf = (struct ti_scm_padconf *) &ti_padconf_devmap, +}; + +int +ti_scm_padconf_set_gpioflags(uint32_t gpio, uint32_t flags) +{ + /* TODO */ + return (EINVAL); +} + +void +ti_scm_padconf_get_gpioflags(uint32_t gpio, uint32_t *flags) +{ + /* TODO */ +} + Modified: projects/armv6/sys/arm/ti/am335x/files.am335x ============================================================================== --- projects/armv6/sys/arm/ti/am335x/files.am335x Sat Feb 18 09:18:06 2012 (r231893) +++ projects/armv6/sys/arm/ti/am335x/files.am335x Sat Feb 18 12:19:15 2012 (r231894) @@ -12,9 +12,11 @@ arm/arm/irq_dispatch.S standard arm/ti/ti_machdep.c standard arm/ti/aintc.c standard +arm/ti/ti_scm.c standard arm/ti/am335x/am335x_prcm.c standard arm/ti/am335x/am335x_dmtimer.c standard arm/ti/am335x/if_cpsw.c standard +arm/ti/am335x/am335x_scm_padconf.c standard dev/uart/uart_dev_ns8250.c optional uart Modified: projects/armv6/sys/arm/ti/omap4/files.omap4 ============================================================================== --- projects/armv6/sys/arm/ti/omap4/files.omap4 Sat Feb 18 09:18:06 2012 (r231893) +++ projects/armv6/sys/arm/ti/omap4/files.omap4 Sat Feb 18 12:19:15 2012 (r231894) @@ -15,7 +15,7 @@ arm/ti/common.c standard arm/ti/gic.c standard arm/ti/mp_timer.c standard arm/ti/omap_prcm.c standard -arm/ti/omap_scm.c standard +arm/ti/ti_scm.c standard arm/ti/ti_cpuid.c standard arm/ti/ti_machdep.c standard Modified: projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c ============================================================================== --- projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c Sat Feb 18 09:18:06 2012 (r231893) +++ projects/armv6/sys/arm/ti/omap4/omap4_prcm_clks.c Sat Feb 18 12:19:15 2012 (r231894) @@ -175,7 +175,7 @@ __FBSDID("$FreeBSD$"); #define CLKCTRL_IDLEST_IDLE 0x00020000UL #define CLKCTRL_IDLEST_DISABLED 0x00030000UL -static struct resource_spec omap_scm_res_spec[] = { +static struct resource_spec omap4_scm_res_spec[] = { { SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Control memory window */ { SYS_RES_MEMORY, 1, RF_ACTIVE }, /* Control memory window */ { SYS_RES_MEMORY, 2, RF_ACTIVE }, /* Control memory window */ @@ -1388,7 +1388,7 @@ omap4_prcm_attach(device_t dev) { struct omap4_prcm_softc *sc = device_get_softc(dev); - if (bus_alloc_resources(dev, omap_scm_res_spec, sc->sc_res)) { + if (bus_alloc_resources(dev, omap4_scm_res_spec, sc->sc_res)) { device_printf(dev, "could not allocate resources\n"); return (ENXIO); } Modified: projects/armv6/sys/arm/ti/omap4/omap4_scm_padconf.c ============================================================================== --- projects/armv6/sys/arm/ti/omap4/omap4_scm_padconf.c Sat Feb 18 09:18:06 2012 (r231893) +++ projects/armv6/sys/arm/ti/omap4/omap4_scm_padconf.c Sat Feb 18 12:19:15 2012 (r231894) @@ -45,9 +45,10 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include -#include +#include #include #include @@ -58,7 +59,7 @@ __FBSDID("$FreeBSD$"); * * How This is Suppose to Work * =========================== - * - There is a top level omap_scm module (System Control Module) that is + * - There is a top level ti_scm module (System Control Module) that is * the interface for all omap drivers, which can use it to change the mux * settings for individual pins. (That said, typically the pin mux settings * are set to defaults by the 'hints' and then not altered by the driver). @@ -69,7 +70,54 @@ __FBSDID("$FreeBSD$"); * */ -#define _OMAP_PINDEF(r, b, gp, gm, m0, m1, m2, m3, m4, m5, m6, m7) \ +#define CONTROL_PADCONF_WAKEUP_EVENT (1UL << 15) +#define CONTROL_PADCONF_WAKEUP_ENABLE (1UL << 14) +#define CONTROL_PADCONF_OFF_PULL_UP (1UL << 13) +#define CONTROL_PADCONF_OFF_PULL_ENABLE (1UL << 12) +#define CONTROL_PADCONF_OFF_OUT_HIGH (1UL << 11) +#define CONTROL_PADCONF_OFF_OUT_ENABLE (1UL << 10) +#define CONTROL_PADCONF_OFF_ENABLE (1UL << 9) +#define CONTROL_PADCONF_INPUT_ENABLE (1UL << 8) +#define CONTROL_PADCONF_PULL_UP (1UL << 4) +#define CONTROL_PADCONF_PULL_ENABLE (1UL << 3) +#define CONTROL_PADCONF_MUXMODE_MASK (0x7) + +#define CONTROL_PADCONF_SATE_MASK ( CONTROL_PADCONF_WAKEUP_EVENT \ + | CONTROL_PADCONF_WAKEUP_ENABLE \ + | CONTROL_PADCONF_OFF_PULL_UP \ + | CONTROL_PADCONF_OFF_PULL_ENABLE \ + | CONTROL_PADCONF_OFF_OUT_HIGH \ + | CONTROL_PADCONF_OFF_OUT_ENABLE \ + | CONTROL_PADCONF_OFF_ENABLE \ + | CONTROL_PADCONF_INPUT_ENABLE \ + | CONTROL_PADCONF_PULL_UP \ + | CONTROL_PADCONF_PULL_ENABLE ) + +/* Active pin states */ +#define PADCONF_PIN_OUTPUT 0 +#define PADCONF_PIN_INPUT CONTROL_PADCONF_INPUT_ENABLE +#define PADCONF_PIN_INPUT_PULLUP ( CONTROL_PADCONF_INPUT_ENABLE \ + | CONTROL_PADCONF_PULL_ENABLE \ + | CONTROL_PADCONF_PULL_UP) +#define PADCONF_PIN_INPUT_PULLDOWN ( CONTROL_PADCONF_INPUT_ENABLE \ + | CONTROL_PADCONF_PULL_ENABLE ) + +/* Off mode states */ +#define PADCONF_PIN_OFF_NONE 0 +#define PADCONF_PIN_OFF_OUTPUT_HIGH ( CONTROL_PADCONF_OFF_ENABLE \ + | CONTROL_PADCONF_OFF_OUT_ENABLE \ + | CONTROL_PADCONF_OFF_OUT_HIGH) +#define PADCONF_PIN_OFF_OUTPUT_LOW ( CONTROL_PADCONF_OFF_ENABLE \ + | CONTROL_PADCONF_OFF_OUT_ENABLE) +#define PADCONF_PIN_OFF_INPUT_PULLUP ( CONTROL_PADCONF_OFF_ENABLE \ + | CONTROL_PADCONF_OFF_PULL_ENABLE \ + | CONTROL_PADCONF_OFF_PULL_UP) +#define PADCONF_PIN_OFF_INPUT_PULLDOWN ( CONTROL_PADCONF_OFF_ENABLE \ + | CONTROL_PADCONF_OFF_PULL_ENABLE) +#define PADCONF_PIN_OFF_WAKEUPENABLE CONTROL_PADCONF_WAKEUP_ENABLE + + +#define _PINDEF(r, b, gp, gm, m0, m1, m2, m3, m4, m5, m6, m7) \ { .reg_off = r, \ .gpio_pin = gp, \ .gpio_mode = gm, \ @@ -84,212 +132,274 @@ __FBSDID("$FreeBSD$"); .muxmodes[7] = m7, \ } +const struct ti_scm_padstate ti_padstate_devmap[] = { + {"output", PADCONF_PIN_OUTPUT}, + {"input", PADCONF_PIN_INPUT}, + {"input_pullup", PADCONF_PIN_INPUT_PULLUP}, + {"input_pulldown", PADCONF_PIN_INPUT_PULLDOWN}, + { .state = NULL } +}; + /* * Table 18-10, p. 3470 */ -const struct omap_scm_padconf omap_padconf_devmap[] = { - _OMAP_PINDEF(0x0040, "c12", 0, 0, "gpmc_ad0", "sdmmc2_dat0", NULL, NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0042, "d12", 0, 0, "gpmc_ad1", "sdmmc2_dat1", NULL, NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0044, "c13", 0, 0, "gpmc_ad2", "sdmmc2_dat2", NULL, NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0046, "d13", 0, 0, "gpmc_ad3", "sdmmc2_dat3", NULL, NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0048, "c15", 0, 0, "gpmc_ad4", "sdmmc2_dat4", "sdmmc2_dir_dat0", NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x004a, "d15", 0, 0, "gpmc_ad5", "sdmmc2_dat5", "sdmmc2_dir_dat1", NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x004c, "a16", 0, 0, "gpmc_ad6", "sdmmc2_dat6", "sdmmc2_dir_cmd", NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x004e, "b16", 0, 0, "gpmc_ad7", "sdmmc2_dat7", "sdmmc2_clk_fdbk", NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0050, "c16", 32, 3, "gpmc_ad8", "kpd_row0", "c2c_data15", "gpio_32", NULL, "sdmmc1_dat0", NULL, NULL), - _OMAP_PINDEF(0x0052, "d16", 33, 3, "gpmc_ad9", "kpd_row1", "c2c_data14", "gpio_33", NULL, "sdmmc1_dat1", NULL, NULL), - _OMAP_PINDEF(0x0054, "c17", 34, 3, "gpmc_ad10", "kpd_row2", "c2c_data13", "gpio_34", NULL, "sdmmc1_dat2", NULL, NULL), - _OMAP_PINDEF(0x0056, "d17", 35, 3, "gpmc_ad11", "kpd_row3", "c2c_data12", "gpio_35", NULL, "sdmmc1_dat3", NULL, NULL), - _OMAP_PINDEF(0x0058, "c18", 36, 3, "gpmc_ad12", "kpd_col0", "c2c_data11", "gpio_36", NULL, "sdmmc1_dat4", NULL, NULL), - _OMAP_PINDEF(0x005a, "d18", 37, 3, "gpmc_ad13", "kpd_col1", "c2c_data10", "gpio_37", NULL, "sdmmc1_dat5", NULL, NULL), - _OMAP_PINDEF(0x005c, "c19", 38, 3, "gpmc_ad14", "kpd_col2", "c2c_data9", "gpio_38", NULL, "sdmmc1_dat6", NULL, NULL), - _OMAP_PINDEF(0x005e, "d19", 39, 3, "gpmc_ad15", "kpd_col3", "c2c_data8", "gpio_39", NULL, "sdmmc1_dat7", NULL, NULL), - _OMAP_PINDEF(0x0060, "b17", 40, 3, "gpmc_a16", "kpd_row4", "c2c_datain0", "gpio_40", "venc_656_data0", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0062, "a18", 41, 3, "gpmc_a17", "kpd_row5", "c2c_datain1", "gpio_41", "venc_656_data1", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0064, "b18", 42, 3, "gpmc_a18", "kpd_row6", "c2c_datain2", "gpio_42", "venc_656_data2", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0066, "a19", 43, 3, "gpmc_a19", "kpd_row7", "c2c_datain3", "gpio_43", "venc_656_data3", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0068, "b19", 44, 3, "gpmc_a20", "kpd_col4", "c2c_datain4", "gpio_44", "venc_656_data4", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x006a, "b20", 45, 3, "gpmc_a21", "kpd_col5", "c2c_datain5", "gpio_45", "venc_656_data5", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x006c, "a21", 46, 3, "gpmc_a22", "kpd_col6", "c2c_datain6", "gpio_46", "venc_656_data6", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x006e, "b21", 47, 3, "gpmc_a23", "kpd_col7", "c2c_datain7", "gpio_47", "venc_656_data7", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0070, "c20", 48, 3, "gpmc_a24", "kpd_col8", "c2c_clkout0", "gpio_48", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0072, "d20", 49, 3, "gpmc_a25", NULL, "c2c_clkout1", "gpio_49", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0074, "b25", 50, 3, "gpmc_ncs0", NULL, NULL, "gpio_50", "sys_ndmareq0", NULL, NULL, NULL), - _OMAP_PINDEF(0x0076, "c21", 51, 3, "gpmc_ncs1", NULL, "c2c_dataout6", "gpio_51", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0078, "d21", 52, 3, "gpmc_ncs2", "kpd_row8", "c2c_dataout7", "gpio_52", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x007a, "c22", 53, 3, "gpmc_ncs3", "gpmc_dir", "c2c_dataout4", "gpio_53", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x007c, "c25", 54, 3, "gpmc_nwp", "dsi1_te0", NULL, "gpio_54", "sys_ndmareq1", NULL, NULL, NULL), - _OMAP_PINDEF(0x007e, "b22", 55, 3, "gpmc_clk", NULL, NULL, "gpio_55", "sys_ndmareq2", "sdmmc1_cmd", NULL, NULL), - _OMAP_PINDEF(0x0080, "d25", 56, 3, "gpmc_nadv_ale", "dsi1_te1", NULL, "gpio_56", "sys_ndmareq3", "sdmmc1_clk", NULL, NULL), - _OMAP_PINDEF(0x0082, "b11", 0, 0, "gpmc_noe", "sdmmc2_clk", NULL, NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0084, "b12", 0, 0, "gpmc_nwe", "sdmmc2_cmd", NULL, NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0086, "c23", 59, 3, "gpmc_nbe0_cle", "dsi2_te0", NULL, "gpio_59", NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0088, "d22", 60, 3, "gpmc_nbe1", NULL, "c2c_dataout5", "gpio_60", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x008a, "b26", 61, 3, "gpmc_wait0", "dsi2_te1", NULL, "gpio_61", NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x008c, "b23", 62, 3, "gpmc_wait1", NULL, "c2c_dataout2", "gpio_62", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x008e, "d23", 100, 3, "gpmc_wait2", "usbc1_icusb_txen", "c2c_dataout3", "gpio_100", "sys_ndmareq0", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0090, "a24", 101, 3, "gpmc_ncs4", "dsi1_te0", "c2c_clkin0", "gpio_101", "sys_ndmareq1", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0092, "b24", 102, 3, "gpmc_ncs5", "dsi1_te1", "c2c_clkin1", "gpio_102", "sys_ndmareq2", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0094, "c24", 103, 3, "gpmc_ncs6", "dsi2_te0", "c2c_dataout0", "gpio_103", "sys_ndmareq3", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0096, "d24", 104, 3, "gpmc_ncs7", "dsi2_te1", "c2c_dataout1", "gpio_104", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0098, "b9", 63, 3, "hdmi_hpd", NULL, NULL, "gpio_63", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x009a, "b10", 64, 3, "hdmi_cec", NULL, NULL, "gpio_64", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x009c, "a8", 65, 3, "hdmi_ddc_scl", NULL, NULL, "gpio_65", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x009e, "b8", 66, 3, "hdmi_ddc_sda", NULL, NULL, "gpio_66", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00a0, "r26", 0, 0, "csi21_dx0", NULL, NULL, "gpi_67", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00a2, "r25", 0, 0, "csi21_dy0", NULL, NULL, "gpi_68", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00a4, "t26", 0, 0, "csi21_dx1", NULL, NULL, "gpi_69", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00a6, "t25", 0, 0, "csi21_dy1", NULL, NULL, "gpi_70", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00a8, "u26", 0, 0, "csi21_dx2", NULL, NULL, "gpi_71", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00aa, "u25", 0, 0, "csi21_dy2", NULL, NULL, "gpi_72", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00ac, "v26", 0, 0, "csi21_dx3", NULL, NULL, "gpi_73", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00ae, "v25", 0, 0, "csi21_dy3", NULL, NULL, "gpi_74", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00b0, "w26", 0, 0, "csi21_dx4", NULL, NULL, "gpi_75", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00b2, "w25", 0, 0, "csi21_dy4", NULL, NULL, "gpi_76", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00b4, "m26", 0, 0, "csi22_dx0", NULL, NULL, "gpi_77", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00b6, "m25", 0, 0, "csi22_dy0", NULL, NULL, "gpi_78", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00b8, "n26", 0, 0, "csi22_dx1", NULL, NULL, "gpi_79", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00ba, "n25", 0, 0, "csi22_dy1", NULL, NULL, "gpi_80", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00bc, "t27", 81, 3, "cam_shutter", NULL, NULL, "gpio_81", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00be, "u27", 82, 3, "cam_strobe", NULL, NULL, "gpio_82", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00c0, "v27", 83, 3, "cam_globalreset", NULL, NULL, "gpio_83", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00c2, "ae18", 84, 3, "usbb1_ulpitll_clk", "hsi1_cawake", NULL, "gpio_84", "usbb1_ulpiphy_clk", NULL, "hw_dbg20", "safe_mode"), - _OMAP_PINDEF(0x00c4, "ag19", 85, 3, "usbb1_ulpitll_stp", "hsi1_cadata", "mcbsp4_clkr", "gpio_85", "usbb1_ulpiphy_stp", "usbb1_mm_rxdp", "hw_dbg21", "safe_mode"), - _OMAP_PINDEF(0x00c6, "af19", 86, 3, "usbb1_ulpitll_dir", "hsi1_caflag", "mcbsp4_fsr", "gpio_86", "usbb1_ulpiphy_dir", NULL, "hw_dbg22", "safe_mode"), - _OMAP_PINDEF(0x00c8, "ae19", 87, 3, "usbb1_ulpitll_nxt", "hsi1_acready", "mcbsp4_fsx", "gpio_87", "usbb1_ulpiphy_nxt", "usbb1_mm_rxdm", "hw_dbg23", "safe_mode"), - _OMAP_PINDEF(0x00ca, "af18", 88, 3, "usbb1_ulpitll_dat0", "hsi1_acwake", "mcbsp4_clkx", "gpio_88", "usbb1_ulpiphy_dat0", "usbb1_mm_txen", "hw_dbg24", "safe_mode"), - _OMAP_PINDEF(0x00cc, "ag18", 89, 3, "usbb1_ulpitll_dat1", "hsi1_acdata", "mcbsp4_dx", "gpio_89", "usbb1_ulpiphy_dat1", "usbb1_mm_txdat", "hw_dbg25", "safe_mode"), - _OMAP_PINDEF(0x00ce, "ae17", 90, 3, "usbb1_ulpitll_dat2", "hsi1_acflag", "mcbsp4_dr", "gpio_90", "usbb1_ulpiphy_dat2", "usbb1_mm_txse0", "hw_dbg26", "safe_mode"), - _OMAP_PINDEF(0x00d0, "af17", 91, 3, "usbb1_ulpitll_dat3", "hsi1_caready", NULL, "gpio_91", "usbb1_ulpiphy_dat3", "usbb1_mm_rxrcv", "hw_dbg27", "safe_mode"), - _OMAP_PINDEF(0x00d2, "ah17", 92, 3, "usbb1_ulpitll_dat4", "dmtimer8_pwm_evt", "abe_mcbsp3_dr", "gpio_92", "usbb1_ulpiphy_dat4", NULL, "hw_dbg28", "safe_mode"), - _OMAP_PINDEF(0x00d4, "ae16", 93, 3, "usbb1_ulpitll_dat5", "dmtimer9_pwm_evt", "abe_mcbsp3_dx", "gpio_93", "usbb1_ulpiphy_dat5", NULL, "hw_dbg29", "safe_mode"), - _OMAP_PINDEF(0x00d6, "af16", 94, 3, "usbb1_ulpitll_dat6", "dmtimer10_pwm_evt", "abe_mcbsp3_clkx", "gpio_94", "usbb1_ulpiphy_dat6", "abe_dmic_din3", "hw_dbg30", "safe_mode"), - _OMAP_PINDEF(0x00d8, "ag16", 95, 3, "usbb1_ulpitll_dat7", "dmtimer11_pwm_evt", "abe_mcbsp3_fsx", "gpio_95", "usbb1_ulpiphy_dat7", "abe_dmic_clk3", "hw_dbg31", "safe_mode"), - _OMAP_PINDEF(0x00da, "af14", 96, 3, "usbb1_hsic_data", NULL, NULL, "gpio_96", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00dc, "ae14", 97, 3, "usbb1_hsic_strobe", NULL, NULL, "gpio_97", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00de, "h2", 98, 3, "usbc1_icusb_dp", NULL, NULL, "gpio_98", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00e0, "h3", 99, 3, "usbc1_icusb_dm", NULL, NULL, "gpio_99", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00e2, "d2", 100, 3, "sdmmc1_clk", NULL, "dpm_emu19", "gpio_100", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00e4, "e3", 101, 3, "sdmmc1_cmd", NULL, "uart1_rx", "gpio_101", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00e6, "e4", 102, 3, "sdmmc1_dat0", NULL, "dpm_emu18", "gpio_102", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00e8, "e2", 103, 3, "sdmmc1_dat1", NULL, "dpm_emu17", "gpio_103", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00ea, "e1", 104, 3, "sdmmc1_dat2", NULL, "dpm_emu16", "gpio_104", "jtag_tms_tmsc", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00ec, "f4", 105, 3, "sdmmc1_dat3", NULL, "dpm_emu15", "gpio_105", "jtag_tck", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00ee, "f3", 106, 3, "sdmmc1_dat4", NULL, NULL, "gpio_106", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00f0, "f1", 107, 3, "sdmmc1_dat5", NULL, NULL, "gpio_107", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00f2, "g4", 108, 3, "sdmmc1_dat6", NULL, NULL, "gpio_108", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00f4, "g3", 109, 3, "sdmmc1_dat7", NULL, NULL, "gpio_109", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00f6, "ad27", 110, 3, "abe_mcbsp2_clkx", "mcspi2_clk", "abe_mcasp_ahclkx", "gpio_110", "usbb2_mm_rxdm", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00f8, "ad26", 111, 3, "abe_mcbsp2_dr", "mcspi2_somi", "abe_mcasp_axr", "gpio_111", "usbb2_mm_rxdp", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00fa, "ad25", 112, 3, "abe_mcbsp2_dx", "mcspi2_simo", "abe_mcasp_amute", "gpio_112", "usbb2_mm_rxrcv", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00fc, "ac28", 113, 3, "abe_mcbsp2_fsx", "mcspi2_cs0", "abe_mcasp_afsx", "gpio_113", "usbb2_mm_txen", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x00fe, "ac26", 114, 3, "abe_mcbsp1_clkx", "abe_slimbus1_clock", NULL, "gpio_114", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0100, "ac25", 115, 3, "abe_mcbsp1_dr", "abe_slimbus1_data", NULL, "gpio_115", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0102, "ab25", 116, 3, "abe_mcbsp1_dx", "sdmmc3_dat2", "abe_mcasp_aclkx", "gpio_116", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0104, "ac27", 117, 3, "abe_mcbsp1_fsx", "sdmmc3_dat3", "abe_mcasp_amutein", "gpio_117", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0106, "ag25", 0, 0, "abe_pdm_ul_data", "abe_mcbsp3_dr", NULL, NULL, NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0108, "af25", 0, 0, "abe_pdm_dl_data", "abe_mcbsp3_dx", NULL, NULL, NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x010a, "ae25", 0, 0, "abe_pdm_frame", "abe_mcbsp3_clkx", NULL, NULL, NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x010c, "af26", 0, 0, "abe_pdm_lb_clk", "abe_mcbsp3_fsx", NULL, NULL, NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x010e, "ah26", 118, 3, "abe_clks", NULL, NULL, "gpio_118", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0110, "ae24", 119, 3, "abe_dmic_clk1", NULL, NULL, "gpio_119", "usbb2_mm_txse0", "uart4_cts", NULL, "safe_mode"), - _OMAP_PINDEF(0x0112, "af24", 120, 3, "abe_dmic_din1", NULL, NULL, "gpio_120", "usbb2_mm_txdat", "uart4_rts", NULL, "safe_mode"), - _OMAP_PINDEF(0x0114, "ag24", 121, 3, "abe_dmic_din2", "slimbus2_clock", "abe_mcasp_axr", "gpio_121", NULL, "dmtimer11_pwm_evt", NULL, "safe_mode"), - _OMAP_PINDEF(0x0116, "ah24", 122, 3, "abe_dmic_din3", "slimbus2_data", "abe_dmic_clk2", "gpio_122", NULL, "dmtimer9_pwm_evt", NULL, "safe_mode"), - _OMAP_PINDEF(0x0118, "ab26", 123, 3, "uart2_cts", "sdmmc3_clk", NULL, "gpio_123", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x011a, "ab27", 124, 3, "uart2_rts", "sdmmc3_cmd", NULL, "gpio_124", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x011c, "aa25", 125, 3, "uart2_rx", "sdmmc3_dat0", NULL, "gpio_125", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x011e, "aa26", 126, 3, "uart2_tx", "sdmmc3_dat1", NULL, "gpio_126", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0120, "aa27", 127, 3, "hdq_sio", "i2c3_sccb", "i2c2_sccb", "gpio_127", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0122, "ae28", 0, 0, "i2c1_scl", NULL, NULL, NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0124, "ae26", 0, 0, "i2c1_sda", NULL, NULL, NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0126, "c26", 128, 3, "i2c2_scl", "uart1_rx", NULL, "gpio_128", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0128, "d26", 129, 3, "i2c2_sda", "uart1_tx", NULL, "gpio_129", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x012a, "w27", 130, 3, "i2c3_scl", NULL, NULL, "gpio_130", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x012c, "y27", 131, 3, "i2c3_sda", NULL, NULL, "gpio_131", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x012e, "ag21", 132, 3, "i2c4_scl", NULL, NULL, "gpio_132", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0130, "ah22", 133, 3, "i2c4_sda", NULL, NULL, "gpio_133", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0132, "af22", 134, 3, "mcspi1_clk", NULL, NULL, "gpio_134", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0134, "ae22", 135, 3, "mcspi1_somi", NULL, NULL, "gpio_135", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0136, "ag22", 136, 3, "mcspi1_simo", NULL, NULL, "gpio_136", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0138, "ae23", 137, 3, "mcspi1_cs0", NULL, NULL, "gpio_137", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x013a, "af23", 138, 3, "mcspi1_cs1", "uart1_rx", NULL, "gpio_138", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x013c, "ag23", 139, 3, "mcspi1_cs2", "uart1_cts", "slimbus2_clock", "gpio_139", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x013e, "ah23", 140, 3, "mcspi1_cs3", "uart1_rts", "slimbus2_data", "gpio_140", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0140, "f27", 141, 3, "uart3_cts_rctx", "uart1_tx", NULL, "gpio_141", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0142, "f28", 142, 3, "uart3_rts_sd", NULL, NULL, "gpio_142", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0144, "g27", 143, 3, "uart3_rx_irrx", "dmtimer8_pwm_evt", NULL, "gpio_143", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0146, "g28", 144, 3, "uart3_tx_irtx", "dmtimer9_pwm_evt", NULL, "gpio_144", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0148, "ae5", 145, 3, "sdmmc5_clk", "mcspi2_clk", "usbc1_icusb_dp", "gpio_145", NULL, "sdmmc2_clk", NULL, "safe_mode"), - _OMAP_PINDEF(0x014a, "af5", 146, 3, "sdmmc5_cmd", "mcspi2_simo", "usbc1_icusb_dm", "gpio_146", NULL, "sdmmc2_cmd", NULL, "safe_mode"), - _OMAP_PINDEF(0x014c, "ae4", 147, 3, "sdmmc5_dat0", "mcspi2_somi", "usbc1_icusb_rcv", "gpio_147", NULL, "sdmmc2_dat0", NULL, "safe_mode"), - _OMAP_PINDEF(0x014e, "af4", 148, 3, "sdmmc5_dat1", NULL, "usbc1_icusb_txen", "gpio_148", NULL, "sdmmc2_dat1", NULL, "safe_mode"), - _OMAP_PINDEF(0x0150, "ag3", 149, 3, "sdmmc5_dat2", "mcspi2_cs1", NULL, "gpio_149", NULL, "sdmmc2_dat2", NULL, "safe_mode"), - _OMAP_PINDEF(0x0152, "af3", 150, 3, "sdmmc5_dat3", "mcspi2_cs0", NULL, "gpio_150", NULL, "sdmmc2_dat3", NULL, "safe_mode"), - _OMAP_PINDEF(0x0154, "ae21", 151, 3, "mcspi4_clk", "sdmmc4_clk", "kpd_col6", "gpio_151", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0156, "af20", 152, 3, "mcspi4_simo", "sdmmc4_cmd", "kpd_col7", "gpio_152", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0158, "af21", 153, 3, "mcspi4_somi", "sdmmc4_dat0", "kpd_row6", "gpio_153", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x015a, "ae20", 154, 3, "mcspi4_cs0", "sdmmc4_dat3", "kpd_row7", "gpio_154", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x015c, "ag20", 155, 3, "uart4_rx", "sdmmc4_dat2", "kpd_row8", "gpio_155", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x015e, "ah19", 156, 3, "uart4_tx", "sdmmc4_dat1", "kpd_col8", "gpio_156", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0160, "ag12", 157, 3, "usbb2_ulpitll_clk", "usbb2_ulpiphy_clk", "sdmmc4_cmd", "gpio_157", "hsi2_cawake", NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0162, "af12", 158, 3, "usbb2_ulpitll_stp", "usbb2_ulpiphy_stp", "sdmmc4_clk", "gpio_158", "hsi2_cadata", "dispc2_data23", NULL, "safe_mode"), - _OMAP_PINDEF(0x0164, "ae12", 159, 3, "usbb2_ulpitll_dir", "usbb2_ulpiphy_dir", "sdmmc4_dat0", "gpio_159", "hsi2_caflag", "dispc2_data22", NULL, "safe_mode"), - _OMAP_PINDEF(0x0166, "ag13", 160, 3, "usbb2_ulpitll_nxt", "usbb2_ulpiphy_nxt", "sdmmc4_dat1", "gpio_160", "hsi2_acready", "dispc2_data21", NULL, "safe_mode"), - _OMAP_PINDEF(0x0168, "ae11", 161, 3, "usbb2_ulpitll_dat0", "usbb2_ulpiphy_dat0", "sdmmc4_dat2", "gpio_161", "hsi2_acwake", "dispc2_data20", "usbb2_mm_txen", "safe_mode"), - _OMAP_PINDEF(0x016a, "af11", 162, 3, "usbb2_ulpitll_dat1", "usbb2_ulpiphy_dat1", "sdmmc4_dat3", "gpio_162", "hsi2_acdata", "dispc2_data19", "usbb2_mm_txdat", "safe_mode"), - _OMAP_PINDEF(0x016c, "ag11", 163, 3, "usbb2_ulpitll_dat2", "usbb2_ulpiphy_dat2", "sdmmc3_dat2", "gpio_163", "hsi2_acflag", "dispc2_data18", "usbb2_mm_txse0", "safe_mode"), - _OMAP_PINDEF(0x016e, "ah11", 164, 3, "usbb2_ulpitll_dat3", "usbb2_ulpiphy_dat3", "sdmmc3_dat1", "gpio_164", "hsi2_caready", "dispc2_data15", "rfbi_data15", "safe_mode"), - _OMAP_PINDEF(0x0170, "ae10", 165, 3, "usbb2_ulpitll_dat4", "usbb2_ulpiphy_dat4", "sdmmc3_dat0", "gpio_165", "mcspi3_somi", "dispc2_data14", "rfbi_data14", "safe_mode"), - _OMAP_PINDEF(0x0172, "af10", 166, 3, "usbb2_ulpitll_dat5", "usbb2_ulpiphy_dat5", "sdmmc3_dat3", "gpio_166", "mcspi3_cs0", "dispc2_data13", "rfbi_data13", "safe_mode"), - _OMAP_PINDEF(0x0174, "ag10", 167, 3, "usbb2_ulpitll_dat6", "usbb2_ulpiphy_dat6", "sdmmc3_cmd", "gpio_167", "mcspi3_simo", "dispc2_data12", "rfbi_data12", "safe_mode"), - _OMAP_PINDEF(0x0176, "ae9", 168, 3, "usbb2_ulpitll_dat7", "usbb2_ulpiphy_dat7", "sdmmc3_clk", "gpio_168", "mcspi3_clk", "dispc2_data11", "rfbi_data11", "safe_mode"), - _OMAP_PINDEF(0x0178, "af13", 169, 3, "usbb2_hsic_data", NULL, NULL, "gpio_169", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x017a, "ae13", 170, 3, "usbb2_hsic_strobe", NULL, NULL, "gpio_170", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x017c, "g26", 171, 3, "kpd_col3", "kpd_col0", NULL, "gpio_171", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x017e, "g25", 172, 3, "kpd_col4", "kpd_col1", NULL, "gpio_172", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0180, "h26", 173, 3, "kpd_col5", "kpd_col2", NULL, "gpio_173", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0182, "h25", 174, 3, "kpd_col0", "kpd_col3", NULL, "gpio_174", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0184, "j27", 0, 0, "kpd_col1", "kpd_col4", NULL, "gpio_0", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0186, "h27", 1, 3, "kpd_col2", "kpd_col5", NULL, "gpio_1", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0188, "j26", 175, 3, "kpd_row3", "kpd_row0", NULL, "gpio_175", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x018a, "j25", 176, 3, "kpd_row4", "kpd_row1", NULL, "gpio_176", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x018c, "k26", 177, 3, "kpd_row5", "kpd_row2", NULL, "gpio_177", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x018e, "k25", 178, 3, "kpd_row0", "kpd_row3", NULL, "gpio_178", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0190, "l27", 2, 3, "kpd_row1", "kpd_row4", NULL, "gpio_2", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0192, "k27", 3, 3, "kpd_row2", "kpd_row5", NULL, "gpio_3", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0194, "c3", 0, 0, "usba0_otg_ce", NULL, NULL, NULL, NULL, NULL, NULL, NULL), - _OMAP_PINDEF(0x0196, "b5", 0, 0, "usba0_otg_dp", "uart3_rx_irrx", "uart2_rx", NULL, NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x0198, "b4", 0, 0, "usba0_otg_dm", "uart3_tx_irtx", "uart2_tx", NULL, NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x019a, "aa28", 181, 3, "fref_clk1_out", NULL, NULL, "gpio_181", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x019c, "y28", 182, 3, "fref_clk2_out", NULL, NULL, "gpio_182", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x019e, "ae6", 0, 0, "sys_nirq1", NULL, NULL, NULL, NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x01a0, "af6", 183, 3, "sys_nirq2", NULL, NULL, "gpio_183", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x01a2, "f26", 184, 3, "sys_boot0", NULL, NULL, "gpio_184", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x01a4, "e27", 185, 3, "sys_boot1", NULL, NULL, "gpio_185", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x01a6, "e26", 186, 3, "sys_boot2", NULL, NULL, "gpio_186", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x01a8, "e25", 187, 3, "sys_boot3", NULL, NULL, "gpio_187", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x01aa, "d28", 188, 3, "sys_boot4", NULL, NULL, "gpio_188", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x01ac, "d27", 189, 3, "sys_boot5", NULL, NULL, "gpio_189", NULL, NULL, NULL, "safe_mode"), - _OMAP_PINDEF(0x01ae, "m2", 11, 3, "dpm_emu0", NULL, NULL, "gpio_11", NULL, NULL, "hw_dbg0", "safe_mode"), - _OMAP_PINDEF(0x01b0, "n2", 12, 3, "dpm_emu1", NULL, NULL, "gpio_12", NULL, NULL, "hw_dbg1", "safe_mode"), - _OMAP_PINDEF(0x01b2, "p2", 13, 3, "dpm_emu2", "usba0_ulpiphy_clk", NULL, "gpio_13", NULL, "dispc2_fid", "hw_dbg2", "safe_mode"), - _OMAP_PINDEF(0x01b4, "v1", 14, 3, "dpm_emu3", "usba0_ulpiphy_stp", NULL, "gpio_14", "rfbi_data10", "dispc2_data10", "hw_dbg3", "safe_mode"), - _OMAP_PINDEF(0x01b6, "v2", 15, 3, "dpm_emu4", "usba0_ulpiphy_dir", NULL, "gpio_15", "rfbi_data9", "dispc2_data9", "hw_dbg4", "safe_mode"), - _OMAP_PINDEF(0x01b8, "w1", 16, 3, "dpm_emu5", "usba0_ulpiphy_nxt", NULL, "gpio_16", "rfbi_te_vsync0", "dispc2_data16", "hw_dbg5", "safe_mode"), - _OMAP_PINDEF(0x01ba, "w2", 17, 3, "dpm_emu6", "usba0_ulpiphy_dat0", "uart3_tx_irtx", "gpio_17", "rfbi_hsync0", "dispc2_data17", "hw_dbg6", "safe_mode"), - _OMAP_PINDEF(0x01bc, "w3", 18, 3, "dpm_emu7", "usba0_ulpiphy_dat1", "uart3_rx_irrx", "gpio_18", "rfbi_cs0", "dispc2_hsync", "hw_dbg7", "safe_mode"), - _OMAP_PINDEF(0x01be, "w4", 19, 3, "dpm_emu8", "usba0_ulpiphy_dat2", "uart3_rts_sd", "gpio_19", "rfbi_re", "dispc2_pclk", "hw_dbg8", "safe_mode"), - _OMAP_PINDEF(0x01c0, "y2", 20, 3, "dpm_emu9", "usba0_ulpiphy_dat3", "uart3_cts_rctx", "gpio_20", "rfbi_we", "dispc2_vsync", "hw_dbg9", "safe_mode"), - _OMAP_PINDEF(0x01c2, "y3", 21, 3, "dpm_emu10", "usba0_ulpiphy_dat4", NULL, "gpio_21", "rfbi_a0", "dispc2_de", "hw_dbg10", "safe_mode"), - _OMAP_PINDEF(0x01c4, "y4", 22, 3, "dpm_emu11", "usba0_ulpiphy_dat5", NULL, "gpio_22", "rfbi_data8", "dispc2_data8", "hw_dbg11", "safe_mode"), - _OMAP_PINDEF(0x01c6, "aa1", 23, 3, "dpm_emu12", "usba0_ulpiphy_dat6", NULL, "gpio_23", "rfbi_data7", "dispc2_data7", "hw_dbg12", "safe_mode"), - _OMAP_PINDEF(0x01c8, "aa2", 24, 3, "dpm_emu13", "usba0_ulpiphy_dat7", NULL, "gpio_24", "rfbi_data6", "dispc2_data6", "hw_dbg13", "safe_mode"), - _OMAP_PINDEF(0x01ca, "aa3", 25, 3, "dpm_emu14", "sys_drm_msecure", "uart1_rx", "gpio_25", "rfbi_data5", "dispc2_data5", "hw_dbg14", "safe_mode"), - _OMAP_PINDEF(0x01cc, "aa4", 26, 3, "dpm_emu15", "sys_secure_indicator", NULL, "gpio_26", "rfbi_data4", "dispc2_data4", "hw_dbg15", "safe_mode"), - _OMAP_PINDEF(0x01ce, "ab2", 27, 3, "dpm_emu16", "dmtimer8_pwm_evt", "dsi1_te0", "gpio_27", "rfbi_data3", "dispc2_data3", "hw_dbg16", "safe_mode"), - _OMAP_PINDEF(0x01d0, "ab3", 28, 3, "dpm_emu17", "dmtimer9_pwm_evt", "dsi1_te1", "gpio_28", "rfbi_data2", "dispc2_data2", "hw_dbg17", "safe_mode"), - _OMAP_PINDEF(0x01d2, "ab4", 190, 3, "dpm_emu18", "dmtimer10_pwm_evt", "dsi2_te0", "gpio_190", "rfbi_data1", "dispc2_data1", "hw_dbg18", "safe_mode"), - _OMAP_PINDEF(0x01d4, "ac4", 191, 3, "dpm_emu19", "dmtimer11_pwm_evt", "dsi2_te1", "gpio_191", "rfbi_data0", "dispc2_data0", "hw_dbg19", "safe_mode"), +const struct ti_scm_padconf ti_padconf_devmap[] = { + _PINDEF(0x0040, "c12", 0, 0, "gpmc_ad0", "sdmmc2_dat0", NULL, NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0042, "d12", 0, 0, "gpmc_ad1", "sdmmc2_dat1", NULL, NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0044, "c13", 0, 0, "gpmc_ad2", "sdmmc2_dat2", NULL, NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0046, "d13", 0, 0, "gpmc_ad3", "sdmmc2_dat3", NULL, NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0048, "c15", 0, 0, "gpmc_ad4", "sdmmc2_dat4", "sdmmc2_dir_dat0", NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x004a, "d15", 0, 0, "gpmc_ad5", "sdmmc2_dat5", "sdmmc2_dir_dat1", NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x004c, "a16", 0, 0, "gpmc_ad6", "sdmmc2_dat6", "sdmmc2_dir_cmd", NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x004e, "b16", 0, 0, "gpmc_ad7", "sdmmc2_dat7", "sdmmc2_clk_fdbk", NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0050, "c16", 32, 3, "gpmc_ad8", "kpd_row0", "c2c_data15", "gpio_32", NULL, "sdmmc1_dat0", NULL, NULL), + _PINDEF(0x0052, "d16", 33, 3, "gpmc_ad9", "kpd_row1", "c2c_data14", "gpio_33", NULL, "sdmmc1_dat1", NULL, NULL), + _PINDEF(0x0054, "c17", 34, 3, "gpmc_ad10", "kpd_row2", "c2c_data13", "gpio_34", NULL, "sdmmc1_dat2", NULL, NULL), + _PINDEF(0x0056, "d17", 35, 3, "gpmc_ad11", "kpd_row3", "c2c_data12", "gpio_35", NULL, "sdmmc1_dat3", NULL, NULL), + _PINDEF(0x0058, "c18", 36, 3, "gpmc_ad12", "kpd_col0", "c2c_data11", "gpio_36", NULL, "sdmmc1_dat4", NULL, NULL), + _PINDEF(0x005a, "d18", 37, 3, "gpmc_ad13", "kpd_col1", "c2c_data10", "gpio_37", NULL, "sdmmc1_dat5", NULL, NULL), + _PINDEF(0x005c, "c19", 38, 3, "gpmc_ad14", "kpd_col2", "c2c_data9", "gpio_38", NULL, "sdmmc1_dat6", NULL, NULL), + _PINDEF(0x005e, "d19", 39, 3, "gpmc_ad15", "kpd_col3", "c2c_data8", "gpio_39", NULL, "sdmmc1_dat7", NULL, NULL), + _PINDEF(0x0060, "b17", 40, 3, "gpmc_a16", "kpd_row4", "c2c_datain0", "gpio_40", "venc_656_data0", NULL, NULL, "safe_mode"), + _PINDEF(0x0062, "a18", 41, 3, "gpmc_a17", "kpd_row5", "c2c_datain1", "gpio_41", "venc_656_data1", NULL, NULL, "safe_mode"), + _PINDEF(0x0064, "b18", 42, 3, "gpmc_a18", "kpd_row6", "c2c_datain2", "gpio_42", "venc_656_data2", NULL, NULL, "safe_mode"), + _PINDEF(0x0066, "a19", 43, 3, "gpmc_a19", "kpd_row7", "c2c_datain3", "gpio_43", "venc_656_data3", NULL, NULL, "safe_mode"), + _PINDEF(0x0068, "b19", 44, 3, "gpmc_a20", "kpd_col4", "c2c_datain4", "gpio_44", "venc_656_data4", NULL, NULL, "safe_mode"), + _PINDEF(0x006a, "b20", 45, 3, "gpmc_a21", "kpd_col5", "c2c_datain5", "gpio_45", "venc_656_data5", NULL, NULL, "safe_mode"), + _PINDEF(0x006c, "a21", 46, 3, "gpmc_a22", "kpd_col6", "c2c_datain6", "gpio_46", "venc_656_data6", NULL, NULL, "safe_mode"), + _PINDEF(0x006e, "b21", 47, 3, "gpmc_a23", "kpd_col7", "c2c_datain7", "gpio_47", "venc_656_data7", NULL, NULL, "safe_mode"), + _PINDEF(0x0070, "c20", 48, 3, "gpmc_a24", "kpd_col8", "c2c_clkout0", "gpio_48", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0072, "d20", 49, 3, "gpmc_a25", NULL, "c2c_clkout1", "gpio_49", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0074, "b25", 50, 3, "gpmc_ncs0", NULL, NULL, "gpio_50", "sys_ndmareq0", NULL, NULL, NULL), + _PINDEF(0x0076, "c21", 51, 3, "gpmc_ncs1", NULL, "c2c_dataout6", "gpio_51", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0078, "d21", 52, 3, "gpmc_ncs2", "kpd_row8", "c2c_dataout7", "gpio_52", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x007a, "c22", 53, 3, "gpmc_ncs3", "gpmc_dir", "c2c_dataout4", "gpio_53", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x007c, "c25", 54, 3, "gpmc_nwp", "dsi1_te0", NULL, "gpio_54", "sys_ndmareq1", NULL, NULL, NULL), + _PINDEF(0x007e, "b22", 55, 3, "gpmc_clk", NULL, NULL, "gpio_55", "sys_ndmareq2", "sdmmc1_cmd", NULL, NULL), + _PINDEF(0x0080, "d25", 56, 3, "gpmc_nadv_ale", "dsi1_te1", NULL, "gpio_56", "sys_ndmareq3", "sdmmc1_clk", NULL, NULL), + _PINDEF(0x0082, "b11", 0, 0, "gpmc_noe", "sdmmc2_clk", NULL, NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0084, "b12", 0, 0, "gpmc_nwe", "sdmmc2_cmd", NULL, NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0086, "c23", 59, 3, "gpmc_nbe0_cle", "dsi2_te0", NULL, "gpio_59", NULL, NULL, NULL, NULL), + _PINDEF(0x0088, "d22", 60, 3, "gpmc_nbe1", NULL, "c2c_dataout5", "gpio_60", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x008a, "b26", 61, 3, "gpmc_wait0", "dsi2_te1", NULL, "gpio_61", NULL, NULL, NULL, NULL), + _PINDEF(0x008c, "b23", 62, 3, "gpmc_wait1", NULL, "c2c_dataout2", "gpio_62", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x008e, "d23", 100, 3, "gpmc_wait2", "usbc1_icusb_txen", "c2c_dataout3", "gpio_100", "sys_ndmareq0", NULL, NULL, "safe_mode"), + _PINDEF(0x0090, "a24", 101, 3, "gpmc_ncs4", "dsi1_te0", "c2c_clkin0", "gpio_101", "sys_ndmareq1", NULL, NULL, "safe_mode"), + _PINDEF(0x0092, "b24", 102, 3, "gpmc_ncs5", "dsi1_te1", "c2c_clkin1", "gpio_102", "sys_ndmareq2", NULL, NULL, "safe_mode"), + _PINDEF(0x0094, "c24", 103, 3, "gpmc_ncs6", "dsi2_te0", "c2c_dataout0", "gpio_103", "sys_ndmareq3", NULL, NULL, "safe_mode"), + _PINDEF(0x0096, "d24", 104, 3, "gpmc_ncs7", "dsi2_te1", "c2c_dataout1", "gpio_104", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0098, "b9", 63, 3, "hdmi_hpd", NULL, NULL, "gpio_63", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x009a, "b10", 64, 3, "hdmi_cec", NULL, NULL, "gpio_64", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x009c, "a8", 65, 3, "hdmi_ddc_scl", NULL, NULL, "gpio_65", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x009e, "b8", 66, 3, "hdmi_ddc_sda", NULL, NULL, "gpio_66", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00a0, "r26", 0, 0, "csi21_dx0", NULL, NULL, "gpi_67", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00a2, "r25", 0, 0, "csi21_dy0", NULL, NULL, "gpi_68", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00a4, "t26", 0, 0, "csi21_dx1", NULL, NULL, "gpi_69", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00a6, "t25", 0, 0, "csi21_dy1", NULL, NULL, "gpi_70", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00a8, "u26", 0, 0, "csi21_dx2", NULL, NULL, "gpi_71", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00aa, "u25", 0, 0, "csi21_dy2", NULL, NULL, "gpi_72", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00ac, "v26", 0, 0, "csi21_dx3", NULL, NULL, "gpi_73", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00ae, "v25", 0, 0, "csi21_dy3", NULL, NULL, "gpi_74", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00b0, "w26", 0, 0, "csi21_dx4", NULL, NULL, "gpi_75", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00b2, "w25", 0, 0, "csi21_dy4", NULL, NULL, "gpi_76", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00b4, "m26", 0, 0, "csi22_dx0", NULL, NULL, "gpi_77", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00b6, "m25", 0, 0, "csi22_dy0", NULL, NULL, "gpi_78", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00b8, "n26", 0, 0, "csi22_dx1", NULL, NULL, "gpi_79", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00ba, "n25", 0, 0, "csi22_dy1", NULL, NULL, "gpi_80", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00bc, "t27", 81, 3, "cam_shutter", NULL, NULL, "gpio_81", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00be, "u27", 82, 3, "cam_strobe", NULL, NULL, "gpio_82", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00c0, "v27", 83, 3, "cam_globalreset", NULL, NULL, "gpio_83", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00c2, "ae18", 84, 3, "usbb1_ulpitll_clk", "hsi1_cawake", NULL, "gpio_84", "usbb1_ulpiphy_clk", NULL, "hw_dbg20", "safe_mode"), + _PINDEF(0x00c4, "ag19", 85, 3, "usbb1_ulpitll_stp", "hsi1_cadata", "mcbsp4_clkr", "gpio_85", "usbb1_ulpiphy_stp", "usbb1_mm_rxdp", "hw_dbg21", "safe_mode"), + _PINDEF(0x00c6, "af19", 86, 3, "usbb1_ulpitll_dir", "hsi1_caflag", "mcbsp4_fsr", "gpio_86", "usbb1_ulpiphy_dir", NULL, "hw_dbg22", "safe_mode"), + _PINDEF(0x00c8, "ae19", 87, 3, "usbb1_ulpitll_nxt", "hsi1_acready", "mcbsp4_fsx", "gpio_87", "usbb1_ulpiphy_nxt", "usbb1_mm_rxdm", "hw_dbg23", "safe_mode"), + _PINDEF(0x00ca, "af18", 88, 3, "usbb1_ulpitll_dat0", "hsi1_acwake", "mcbsp4_clkx", "gpio_88", "usbb1_ulpiphy_dat0", "usbb1_mm_txen", "hw_dbg24", "safe_mode"), + _PINDEF(0x00cc, "ag18", 89, 3, "usbb1_ulpitll_dat1", "hsi1_acdata", "mcbsp4_dx", "gpio_89", "usbb1_ulpiphy_dat1", "usbb1_mm_txdat", "hw_dbg25", "safe_mode"), + _PINDEF(0x00ce, "ae17", 90, 3, "usbb1_ulpitll_dat2", "hsi1_acflag", "mcbsp4_dr", "gpio_90", "usbb1_ulpiphy_dat2", "usbb1_mm_txse0", "hw_dbg26", "safe_mode"), + _PINDEF(0x00d0, "af17", 91, 3, "usbb1_ulpitll_dat3", "hsi1_caready", NULL, "gpio_91", "usbb1_ulpiphy_dat3", "usbb1_mm_rxrcv", "hw_dbg27", "safe_mode"), + _PINDEF(0x00d2, "ah17", 92, 3, "usbb1_ulpitll_dat4", "dmtimer8_pwm_evt", "abe_mcbsp3_dr", "gpio_92", "usbb1_ulpiphy_dat4", NULL, "hw_dbg28", "safe_mode"), + _PINDEF(0x00d4, "ae16", 93, 3, "usbb1_ulpitll_dat5", "dmtimer9_pwm_evt", "abe_mcbsp3_dx", "gpio_93", "usbb1_ulpiphy_dat5", NULL, "hw_dbg29", "safe_mode"), + _PINDEF(0x00d6, "af16", 94, 3, "usbb1_ulpitll_dat6", "dmtimer10_pwm_evt", "abe_mcbsp3_clkx", "gpio_94", "usbb1_ulpiphy_dat6", "abe_dmic_din3", "hw_dbg30", "safe_mode"), + _PINDEF(0x00d8, "ag16", 95, 3, "usbb1_ulpitll_dat7", "dmtimer11_pwm_evt", "abe_mcbsp3_fsx", "gpio_95", "usbb1_ulpiphy_dat7", "abe_dmic_clk3", "hw_dbg31", "safe_mode"), + _PINDEF(0x00da, "af14", 96, 3, "usbb1_hsic_data", NULL, NULL, "gpio_96", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00dc, "ae14", 97, 3, "usbb1_hsic_strobe", NULL, NULL, "gpio_97", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00de, "h2", 98, 3, "usbc1_icusb_dp", NULL, NULL, "gpio_98", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00e0, "h3", 99, 3, "usbc1_icusb_dm", NULL, NULL, "gpio_99", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00e2, "d2", 100, 3, "sdmmc1_clk", NULL, "dpm_emu19", "gpio_100", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00e4, "e3", 101, 3, "sdmmc1_cmd", NULL, "uart1_rx", "gpio_101", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00e6, "e4", 102, 3, "sdmmc1_dat0", NULL, "dpm_emu18", "gpio_102", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00e8, "e2", 103, 3, "sdmmc1_dat1", NULL, "dpm_emu17", "gpio_103", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00ea, "e1", 104, 3, "sdmmc1_dat2", NULL, "dpm_emu16", "gpio_104", "jtag_tms_tmsc", NULL, NULL, "safe_mode"), + _PINDEF(0x00ec, "f4", 105, 3, "sdmmc1_dat3", NULL, "dpm_emu15", "gpio_105", "jtag_tck", NULL, NULL, "safe_mode"), + _PINDEF(0x00ee, "f3", 106, 3, "sdmmc1_dat4", NULL, NULL, "gpio_106", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00f0, "f1", 107, 3, "sdmmc1_dat5", NULL, NULL, "gpio_107", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00f2, "g4", 108, 3, "sdmmc1_dat6", NULL, NULL, "gpio_108", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00f4, "g3", 109, 3, "sdmmc1_dat7", NULL, NULL, "gpio_109", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x00f6, "ad27", 110, 3, "abe_mcbsp2_clkx", "mcspi2_clk", "abe_mcasp_ahclkx", "gpio_110", "usbb2_mm_rxdm", NULL, NULL, "safe_mode"), + _PINDEF(0x00f8, "ad26", 111, 3, "abe_mcbsp2_dr", "mcspi2_somi", "abe_mcasp_axr", "gpio_111", "usbb2_mm_rxdp", NULL, NULL, "safe_mode"), + _PINDEF(0x00fa, "ad25", 112, 3, "abe_mcbsp2_dx", "mcspi2_simo", "abe_mcasp_amute", "gpio_112", "usbb2_mm_rxrcv", NULL, NULL, "safe_mode"), + _PINDEF(0x00fc, "ac28", 113, 3, "abe_mcbsp2_fsx", "mcspi2_cs0", "abe_mcasp_afsx", "gpio_113", "usbb2_mm_txen", NULL, NULL, "safe_mode"), + _PINDEF(0x00fe, "ac26", 114, 3, "abe_mcbsp1_clkx", "abe_slimbus1_clock", NULL, "gpio_114", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0100, "ac25", 115, 3, "abe_mcbsp1_dr", "abe_slimbus1_data", NULL, "gpio_115", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0102, "ab25", 116, 3, "abe_mcbsp1_dx", "sdmmc3_dat2", "abe_mcasp_aclkx", "gpio_116", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0104, "ac27", 117, 3, "abe_mcbsp1_fsx", "sdmmc3_dat3", "abe_mcasp_amutein", "gpio_117", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0106, "ag25", 0, 0, "abe_pdm_ul_data", "abe_mcbsp3_dr", NULL, NULL, NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0108, "af25", 0, 0, "abe_pdm_dl_data", "abe_mcbsp3_dx", NULL, NULL, NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x010a, "ae25", 0, 0, "abe_pdm_frame", "abe_mcbsp3_clkx", NULL, NULL, NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x010c, "af26", 0, 0, "abe_pdm_lb_clk", "abe_mcbsp3_fsx", NULL, NULL, NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x010e, "ah26", 118, 3, "abe_clks", NULL, NULL, "gpio_118", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0110, "ae24", 119, 3, "abe_dmic_clk1", NULL, NULL, "gpio_119", "usbb2_mm_txse0", "uart4_cts", NULL, "safe_mode"), + _PINDEF(0x0112, "af24", 120, 3, "abe_dmic_din1", NULL, NULL, "gpio_120", "usbb2_mm_txdat", "uart4_rts", NULL, "safe_mode"), + _PINDEF(0x0114, "ag24", 121, 3, "abe_dmic_din2", "slimbus2_clock", "abe_mcasp_axr", "gpio_121", NULL, "dmtimer11_pwm_evt", NULL, "safe_mode"), + _PINDEF(0x0116, "ah24", 122, 3, "abe_dmic_din3", "slimbus2_data", "abe_dmic_clk2", "gpio_122", NULL, "dmtimer9_pwm_evt", NULL, "safe_mode"), + _PINDEF(0x0118, "ab26", 123, 3, "uart2_cts", "sdmmc3_clk", NULL, "gpio_123", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x011a, "ab27", 124, 3, "uart2_rts", "sdmmc3_cmd", NULL, "gpio_124", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x011c, "aa25", 125, 3, "uart2_rx", "sdmmc3_dat0", NULL, "gpio_125", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x011e, "aa26", 126, 3, "uart2_tx", "sdmmc3_dat1", NULL, "gpio_126", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0120, "aa27", 127, 3, "hdq_sio", "i2c3_sccb", "i2c2_sccb", "gpio_127", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0122, "ae28", 0, 0, "i2c1_scl", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0124, "ae26", 0, 0, "i2c1_sda", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0126, "c26", 128, 3, "i2c2_scl", "uart1_rx", NULL, "gpio_128", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0128, "d26", 129, 3, "i2c2_sda", "uart1_tx", NULL, "gpio_129", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x012a, "w27", 130, 3, "i2c3_scl", NULL, NULL, "gpio_130", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x012c, "y27", 131, 3, "i2c3_sda", NULL, NULL, "gpio_131", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x012e, "ag21", 132, 3, "i2c4_scl", NULL, NULL, "gpio_132", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0130, "ah22", 133, 3, "i2c4_sda", NULL, NULL, "gpio_133", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0132, "af22", 134, 3, "mcspi1_clk", NULL, NULL, "gpio_134", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0134, "ae22", 135, 3, "mcspi1_somi", NULL, NULL, "gpio_135", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0136, "ag22", 136, 3, "mcspi1_simo", NULL, NULL, "gpio_136", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0138, "ae23", 137, 3, "mcspi1_cs0", NULL, NULL, "gpio_137", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x013a, "af23", 138, 3, "mcspi1_cs1", "uart1_rx", NULL, "gpio_138", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x013c, "ag23", 139, 3, "mcspi1_cs2", "uart1_cts", "slimbus2_clock", "gpio_139", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x013e, "ah23", 140, 3, "mcspi1_cs3", "uart1_rts", "slimbus2_data", "gpio_140", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0140, "f27", 141, 3, "uart3_cts_rctx", "uart1_tx", NULL, "gpio_141", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0142, "f28", 142, 3, "uart3_rts_sd", NULL, NULL, "gpio_142", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0144, "g27", 143, 3, "uart3_rx_irrx", "dmtimer8_pwm_evt", NULL, "gpio_143", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0146, "g28", 144, 3, "uart3_tx_irtx", "dmtimer9_pwm_evt", NULL, "gpio_144", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0148, "ae5", 145, 3, "sdmmc5_clk", "mcspi2_clk", "usbc1_icusb_dp", "gpio_145", NULL, "sdmmc2_clk", NULL, "safe_mode"), + _PINDEF(0x014a, "af5", 146, 3, "sdmmc5_cmd", "mcspi2_simo", "usbc1_icusb_dm", "gpio_146", NULL, "sdmmc2_cmd", NULL, "safe_mode"), + _PINDEF(0x014c, "ae4", 147, 3, "sdmmc5_dat0", "mcspi2_somi", "usbc1_icusb_rcv", "gpio_147", NULL, "sdmmc2_dat0", NULL, "safe_mode"), + _PINDEF(0x014e, "af4", 148, 3, "sdmmc5_dat1", NULL, "usbc1_icusb_txen", "gpio_148", NULL, "sdmmc2_dat1", NULL, "safe_mode"), + _PINDEF(0x0150, "ag3", 149, 3, "sdmmc5_dat2", "mcspi2_cs1", NULL, "gpio_149", NULL, "sdmmc2_dat2", NULL, "safe_mode"), + _PINDEF(0x0152, "af3", 150, 3, "sdmmc5_dat3", "mcspi2_cs0", NULL, "gpio_150", NULL, "sdmmc2_dat3", NULL, "safe_mode"), + _PINDEF(0x0154, "ae21", 151, 3, "mcspi4_clk", "sdmmc4_clk", "kpd_col6", "gpio_151", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0156, "af20", 152, 3, "mcspi4_simo", "sdmmc4_cmd", "kpd_col7", "gpio_152", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0158, "af21", 153, 3, "mcspi4_somi", "sdmmc4_dat0", "kpd_row6", "gpio_153", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x015a, "ae20", 154, 3, "mcspi4_cs0", "sdmmc4_dat3", "kpd_row7", "gpio_154", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x015c, "ag20", 155, 3, "uart4_rx", "sdmmc4_dat2", "kpd_row8", "gpio_155", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x015e, "ah19", 156, 3, "uart4_tx", "sdmmc4_dat1", "kpd_col8", "gpio_156", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0160, "ag12", 157, 3, "usbb2_ulpitll_clk", "usbb2_ulpiphy_clk", "sdmmc4_cmd", "gpio_157", "hsi2_cawake", NULL, NULL, "safe_mode"), + _PINDEF(0x0162, "af12", 158, 3, "usbb2_ulpitll_stp", "usbb2_ulpiphy_stp", "sdmmc4_clk", "gpio_158", "hsi2_cadata", "dispc2_data23", NULL, "safe_mode"), + _PINDEF(0x0164, "ae12", 159, 3, "usbb2_ulpitll_dir", "usbb2_ulpiphy_dir", "sdmmc4_dat0", "gpio_159", "hsi2_caflag", "dispc2_data22", NULL, "safe_mode"), + _PINDEF(0x0166, "ag13", 160, 3, "usbb2_ulpitll_nxt", "usbb2_ulpiphy_nxt", "sdmmc4_dat1", "gpio_160", "hsi2_acready", "dispc2_data21", NULL, "safe_mode"), + _PINDEF(0x0168, "ae11", 161, 3, "usbb2_ulpitll_dat0", "usbb2_ulpiphy_dat0", "sdmmc4_dat2", "gpio_161", "hsi2_acwake", "dispc2_data20", "usbb2_mm_txen", "safe_mode"), + _PINDEF(0x016a, "af11", 162, 3, "usbb2_ulpitll_dat1", "usbb2_ulpiphy_dat1", "sdmmc4_dat3", "gpio_162", "hsi2_acdata", "dispc2_data19", "usbb2_mm_txdat", "safe_mode"), + _PINDEF(0x016c, "ag11", 163, 3, "usbb2_ulpitll_dat2", "usbb2_ulpiphy_dat2", "sdmmc3_dat2", "gpio_163", "hsi2_acflag", "dispc2_data18", "usbb2_mm_txse0", "safe_mode"), + _PINDEF(0x016e, "ah11", 164, 3, "usbb2_ulpitll_dat3", "usbb2_ulpiphy_dat3", "sdmmc3_dat1", "gpio_164", "hsi2_caready", "dispc2_data15", "rfbi_data15", "safe_mode"), + _PINDEF(0x0170, "ae10", 165, 3, "usbb2_ulpitll_dat4", "usbb2_ulpiphy_dat4", "sdmmc3_dat0", "gpio_165", "mcspi3_somi", "dispc2_data14", "rfbi_data14", "safe_mode"), + _PINDEF(0x0172, "af10", 166, 3, "usbb2_ulpitll_dat5", "usbb2_ulpiphy_dat5", "sdmmc3_dat3", "gpio_166", "mcspi3_cs0", "dispc2_data13", "rfbi_data13", "safe_mode"), + _PINDEF(0x0174, "ag10", 167, 3, "usbb2_ulpitll_dat6", "usbb2_ulpiphy_dat6", "sdmmc3_cmd", "gpio_167", "mcspi3_simo", "dispc2_data12", "rfbi_data12", "safe_mode"), + _PINDEF(0x0176, "ae9", 168, 3, "usbb2_ulpitll_dat7", "usbb2_ulpiphy_dat7", "sdmmc3_clk", "gpio_168", "mcspi3_clk", "dispc2_data11", "rfbi_data11", "safe_mode"), + _PINDEF(0x0178, "af13", 169, 3, "usbb2_hsic_data", NULL, NULL, "gpio_169", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x017a, "ae13", 170, 3, "usbb2_hsic_strobe", NULL, NULL, "gpio_170", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x017c, "g26", 171, 3, "kpd_col3", "kpd_col0", NULL, "gpio_171", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x017e, "g25", 172, 3, "kpd_col4", "kpd_col1", NULL, "gpio_172", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0180, "h26", 173, 3, "kpd_col5", "kpd_col2", NULL, "gpio_173", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0182, "h25", 174, 3, "kpd_col0", "kpd_col3", NULL, "gpio_174", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0184, "j27", 0, 0, "kpd_col1", "kpd_col4", NULL, "gpio_0", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0186, "h27", 1, 3, "kpd_col2", "kpd_col5", NULL, "gpio_1", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0188, "j26", 175, 3, "kpd_row3", "kpd_row0", NULL, "gpio_175", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x018a, "j25", 176, 3, "kpd_row4", "kpd_row1", NULL, "gpio_176", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x018c, "k26", 177, 3, "kpd_row5", "kpd_row2", NULL, "gpio_177", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x018e, "k25", 178, 3, "kpd_row0", "kpd_row3", NULL, "gpio_178", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0190, "l27", 2, 3, "kpd_row1", "kpd_row4", NULL, "gpio_2", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0192, "k27", 3, 3, "kpd_row2", "kpd_row5", NULL, "gpio_3", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0194, "c3", 0, 0, "usba0_otg_ce", NULL, NULL, NULL, NULL, NULL, NULL, NULL), + _PINDEF(0x0196, "b5", 0, 0, "usba0_otg_dp", "uart3_rx_irrx", "uart2_rx", NULL, NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x0198, "b4", 0, 0, "usba0_otg_dm", "uart3_tx_irtx", "uart2_tx", NULL, NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x019a, "aa28", 181, 3, "fref_clk1_out", NULL, NULL, "gpio_181", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x019c, "y28", 182, 3, "fref_clk2_out", NULL, NULL, "gpio_182", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x019e, "ae6", 0, 0, "sys_nirq1", NULL, NULL, NULL, NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x01a0, "af6", 183, 3, "sys_nirq2", NULL, NULL, "gpio_183", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x01a2, "f26", 184, 3, "sys_boot0", NULL, NULL, "gpio_184", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x01a4, "e27", 185, 3, "sys_boot1", NULL, NULL, "gpio_185", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x01a6, "e26", 186, 3, "sys_boot2", NULL, NULL, "gpio_186", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x01a8, "e25", 187, 3, "sys_boot3", NULL, NULL, "gpio_187", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x01aa, "d28", 188, 3, "sys_boot4", NULL, NULL, "gpio_188", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x01ac, "d27", 189, 3, "sys_boot5", NULL, NULL, "gpio_189", NULL, NULL, NULL, "safe_mode"), + _PINDEF(0x01ae, "m2", 11, 3, "dpm_emu0", NULL, NULL, "gpio_11", NULL, NULL, "hw_dbg0", "safe_mode"), + _PINDEF(0x01b0, "n2", 12, 3, "dpm_emu1", NULL, NULL, "gpio_12", NULL, NULL, "hw_dbg1", "safe_mode"), + _PINDEF(0x01b2, "p2", 13, 3, "dpm_emu2", "usba0_ulpiphy_clk", NULL, "gpio_13", NULL, "dispc2_fid", "hw_dbg2", "safe_mode"), + _PINDEF(0x01b4, "v1", 14, 3, "dpm_emu3", "usba0_ulpiphy_stp", NULL, "gpio_14", "rfbi_data10", "dispc2_data10", "hw_dbg3", "safe_mode"), + _PINDEF(0x01b6, "v2", 15, 3, "dpm_emu4", "usba0_ulpiphy_dir", NULL, "gpio_15", "rfbi_data9", "dispc2_data9", "hw_dbg4", "safe_mode"), + _PINDEF(0x01b8, "w1", 16, 3, "dpm_emu5", "usba0_ulpiphy_nxt", NULL, "gpio_16", "rfbi_te_vsync0", "dispc2_data16", "hw_dbg5", "safe_mode"), + _PINDEF(0x01ba, "w2", 17, 3, "dpm_emu6", "usba0_ulpiphy_dat0", "uart3_tx_irtx", "gpio_17", "rfbi_hsync0", "dispc2_data17", "hw_dbg6", "safe_mode"), + _PINDEF(0x01bc, "w3", 18, 3, "dpm_emu7", "usba0_ulpiphy_dat1", "uart3_rx_irrx", "gpio_18", "rfbi_cs0", "dispc2_hsync", "hw_dbg7", "safe_mode"), + _PINDEF(0x01be, "w4", 19, 3, "dpm_emu8", "usba0_ulpiphy_dat2", "uart3_rts_sd", "gpio_19", "rfbi_re", "dispc2_pclk", "hw_dbg8", "safe_mode"), + _PINDEF(0x01c0, "y2", 20, 3, "dpm_emu9", "usba0_ulpiphy_dat3", "uart3_cts_rctx", "gpio_20", "rfbi_we", "dispc2_vsync", "hw_dbg9", "safe_mode"), + _PINDEF(0x01c2, "y3", 21, 3, "dpm_emu10", "usba0_ulpiphy_dat4", NULL, "gpio_21", "rfbi_a0", "dispc2_de", "hw_dbg10", "safe_mode"), + _PINDEF(0x01c4, "y4", 22, 3, "dpm_emu11", "usba0_ulpiphy_dat5", NULL, "gpio_22", "rfbi_data8", "dispc2_data8", "hw_dbg11", "safe_mode"), + _PINDEF(0x01c6, "aa1", 23, 3, "dpm_emu12", "usba0_ulpiphy_dat6", NULL, "gpio_23", "rfbi_data7", "dispc2_data7", "hw_dbg12", "safe_mode"), + _PINDEF(0x01c8, "aa2", 24, 3, "dpm_emu13", "usba0_ulpiphy_dat7", NULL, "gpio_24", "rfbi_data6", "dispc2_data6", "hw_dbg13", "safe_mode"), + _PINDEF(0x01ca, "aa3", 25, 3, "dpm_emu14", "sys_drm_msecure", "uart1_rx", "gpio_25", "rfbi_data5", "dispc2_data5", "hw_dbg14", "safe_mode"), + _PINDEF(0x01cc, "aa4", 26, 3, "dpm_emu15", "sys_secure_indicator", NULL, "gpio_26", "rfbi_data4", "dispc2_data4", "hw_dbg15", "safe_mode"), + _PINDEF(0x01ce, "ab2", 27, 3, "dpm_emu16", "dmtimer8_pwm_evt", "dsi1_te0", "gpio_27", "rfbi_data3", "dispc2_data3", "hw_dbg16", "safe_mode"), + _PINDEF(0x01d0, "ab3", 28, 3, "dpm_emu17", "dmtimer9_pwm_evt", "dsi1_te1", "gpio_28", "rfbi_data2", "dispc2_data2", "hw_dbg17", "safe_mode"), + _PINDEF(0x01d2, "ab4", 190, 3, "dpm_emu18", "dmtimer10_pwm_evt", "dsi2_te0", "gpio_190", "rfbi_data1", "dispc2_data1", "hw_dbg18", "safe_mode"), + _PINDEF(0x01d4, "ac4", 191, 3, "dpm_emu19", "dmtimer11_pwm_evt", "dsi2_te1", "gpio_191", "rfbi_data0", "dispc2_data0", "hw_dbg19", "safe_mode"), { .ballname = NULL }, }; + +const struct ti_scm_device ti_scm_dev = { + .padconf_muxmode_mask = CONTROL_PADCONF_MUXMODE_MASK, + .padconf_sate_mask = CONTROL_PADCONF_SATE_MASK, + .padstate = (struct ti_scm_padstate *) &ti_padstate_devmap, + .padconf = (struct ti_scm_padconf *) &ti_padconf_devmap, +}; + +int +ti_scm_padconf_set_gpioflags(uint32_t gpio, uint32_t flags) +{ + unsigned int state = 0; + /* First the SCM driver needs to be told to put the pad into GPIO mode */ + if (flags & GPIO_PIN_OUTPUT) + state = PADCONF_PIN_OUTPUT; + else if (flags & GPIO_PIN_INPUT) { + if (flags & GPIO_PIN_PULLUP) + state = PADCONF_PIN_INPUT_PULLUP; + else if (flags & GPIO_PIN_PULLDOWN) + state = PADCONF_PIN_INPUT_PULLDOWN; + else + state = PADCONF_PIN_INPUT; + } + return ti_scm_padconf_set_gpiomode(gpio, state); +} + +void +ti_scm_padconf_get_gpioflags(uint32_t gpio, uint32_t *flags) +{ + unsigned int state; + /* Get the current pin state */ + if (ti_scm_padconf_get_gpiomode(gpio, &state) != 0) + *flags = 0; + else { + switch (state) { + case PADCONF_PIN_OUTPUT: + *flags = GPIO_PIN_OUTPUT; + break; + case PADCONF_PIN_INPUT: + *flags = GPIO_PIN_INPUT; + break; + case PADCONF_PIN_INPUT_PULLUP: + *flags = GPIO_PIN_INPUT | GPIO_PIN_PULLUP; + break; + case PADCONF_PIN_INPUT_PULLDOWN: + *flags = GPIO_PIN_INPUT | GPIO_PIN_PULLDOWN; + break; + default: + *flags = 0; + break; + } + } +} + Modified: projects/armv6/sys/arm/ti/omap_gpio.c ============================================================================== --- projects/armv6/sys/arm/ti/omap_gpio.c Sat Feb 18 09:18:06 2012 (r231893) +++ projects/armv6/sys/arm/ti/omap_gpio.c Sat Feb 18 12:19:15 2012 (r231894) @@ -56,7 +56,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include @@ -356,7 +356,6 @@ omap_gpio_pin_getflags(device_t dev, uin { struct omap_gpio_softc *sc = device_get_softc(dev); uint32_t bank = (pin / PINS_PER_BANK); - unsigned int state; OMAP_GPIO_LOCK(sc); @@ -367,30 +366,10 @@ omap_gpio_pin_getflags(device_t dev, uin } /* Get the current pin state */ - if (omap_scm_padconf_get_gpiomode(pin, &state) != 0) - *flags = 0; - else { - switch (state) { - case PADCONF_PIN_OUTPUT: - *flags = GPIO_PIN_OUTPUT; - break; - case PADCONF_PIN_INPUT: - *flags = GPIO_PIN_INPUT; - break; - case PADCONF_PIN_INPUT_PULLUP: - *flags = GPIO_PIN_INPUT | GPIO_PIN_PULLUP; - break; - case PADCONF_PIN_INPUT_PULLDOWN: - *flags = GPIO_PIN_INPUT | GPIO_PIN_PULLDOWN; - break; - default: - *flags = 0; - break; - } - } + ti_scm_padconf_get_gpioflags(pin, flags); OMAP_GPIO_UNLOCK(sc); - + return (0); } @@ -455,7 +434,6 @@ static int omap_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) { struct omap_gpio_softc *sc = device_get_softc(dev); - unsigned int state = 0; uint32_t bank = (pin / PINS_PER_BANK); uint32_t mask = (1UL << (pin % PINS_PER_BANK)); uint32_t reg_off; @@ -480,25 +458,12 @@ omap_gpio_pin_setflags(device_t dev, uin return (EINVAL); } - /* First the SCM driver needs to be told to put the pad into GPIO mode */ - if (flags & GPIO_PIN_OUTPUT) - state = PADCONF_PIN_OUTPUT; - else if (flags & GPIO_PIN_INPUT) { - if (flags & GPIO_PIN_PULLUP) - state = PADCONF_PIN_INPUT_PULLUP; - else if (flags & GPIO_PIN_PULLDOWN) - state = PADCONF_PIN_INPUT_PULLDOWN; - else - state = PADCONF_PIN_INPUT; - } - /* Set the GPIO mode and state */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***