From owner-p4-projects@FreeBSD.ORG Wed Jul 18 15:47:10 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A7D5D16A40D; Wed, 18 Jul 2007 15:47:10 +0000 (UTC) X-Original-To: perforce@FreeBSD.org Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 53BAA16A401 for ; Wed, 18 Jul 2007 15:47:10 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 3E9E413C4C1 for ; Wed, 18 Jul 2007 15:47:10 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l6IFlAMO026252 for ; Wed, 18 Jul 2007 15:47:10 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l6IFlAXo026249 for perforce@freebsd.org; Wed, 18 Jul 2007 15:47:10 GMT (envelope-from gonzo@FreeBSD.org) Date: Wed, 18 Jul 2007 15:47:10 GMT Message-Id: <200707181547.l6IFlAXo026249@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 123696 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jul 2007 15:47:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=123696 Change 123696 by gonzo@gonzo_jeeves on 2007/07/18 15:46:10 o Slight refactoring, style(9)-ify Affected files ... .. //depot/projects/mips2/src/sys/mips/mips32/adm5120/admpci.c#2 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/mips32/adm5120/admpci.c#2 (text+ko) ==== @@ -87,7 +87,7 @@ #include #include "pcib_if.h" -#include +#include #ifdef ADMPCI_DEBUG int admpci_debug = 1; @@ -114,8 +114,7 @@ struct admpci_softc { device_t sc_dev; - bus_space_tag_t sc_pciio; - bus_space_tag_t sc_pcimem; + bus_space_tag_t sc_st; /* Access to PCI config registers */ bus_space_handle_t sc_addrh; @@ -129,16 +128,11 @@ uint32_t sc_io; }; -static int admpci_found = 0; - static int admpci_probe(device_t dev) { - if (!admpci_found) - return (0); - - return (ENXIO); + return (0); } static int @@ -147,11 +141,8 @@ int busno = 0; struct admpci_softc *sc = device_get_softc(dev); - admpci_found = 1; sc->sc_dev = dev; sc->sc_busno = busno; - sc->sc_pciio = MIPS_BUS_SPACE_IO; - sc->sc_pcimem = MIPS_BUS_SPACE_MEM; /* Use KSEG1 to access IO ports for it is uncached */ sc->sc_io = MIPS_PHYS_TO_KSEG1(ADM5120_BASE_PCI_IO); @@ -178,23 +169,22 @@ rman_manage_region(&sc->sc_irq_rman, 1, 31) != 0) panic("admpci_attach: failed to set up IRQ rman"); - /* XXXMIPS: FIX THIS UGLINES! */ - sc->sc_addrh = (bus_space_handle_t) - MIPS_PHYS_TO_KSEG1(ADM5120_BASE_PCI_CONFADDR); - sc->sc_datah = - MIPS_PHYS_TO_KSEG1(ADM5120_BASE_PCI_CONFDATA); + if (bus_space_map(sc->sc_st, ADM5120_BASE_PCI_CONFADDR, 4, 0, + &sc->sc_addrh) != 0) { + device_printf(sc->sc_dev, "unable to address space\n"); + panic("bus_space_map failed"); + } + + if (bus_space_map(sc->sc_st, ADM5120_BASE_PCI_CONFDATA, 4, 0, + &sc->sc_datah) != 0) { + device_printf(sc->sc_dev, "unable to address space\n"); + panic("bus_space_map failed"); + } device_add_child(dev, "pci", busno); return (bus_generic_attach(dev)); } -static void -admpci_identify(driver_t *drv, device_t parent) -{ - - BUS_ADD_CHILD(parent, 0, "pcib", 0); -} - static int admpci_maxslots(device_t dev) { @@ -206,7 +196,7 @@ admpci_make_addr(int bus, int slot, int func, int reg) { - return 0x80000000 | (bus << 16) | (slot << 11) | (func << 8) | reg; + return (0x80000000 | (bus << 16) | (slot << 11) | (func << 8) | reg); } static uint32_t @@ -229,8 +219,7 @@ bus_space_write_4(sc->sc_io, sc->sc_addrh, 0, addr); data = bus_space_read_4(sc->sc_io, sc->sc_datah, 0); - switch(reg % 4) - { + switch (reg % 4) { case 3: shift = 24; break; @@ -245,15 +234,14 @@ break; } - switch(bytes) - { + switch (bytes) { case 1: mask = 0xff; data = (data >> shift) & mask; break; case 2: mask = 0xffff; - if(reg % 4 == 0) + if (reg % 4 == 0) data = data & mask; else data = (data >> 16) & mask; @@ -266,7 +254,7 @@ } ADMPCI_DPRINTF("%s: read 0x%x\n", __func__, data); - return data; + return (data); } static void @@ -278,15 +266,13 @@ uint32_t reg_data; uint32_t shift, mask; - KASSERT(bytes == 4, ("%s: bytes is allowed to be 4 only", __func__)); ADMPCI_DPRINTF("%s: sc %p tag (%x, %x, %x) reg %d\n", __func__, (void *)sc, bus, slot, func, reg); - if(bytes != 4) - { + + if (bytes != 4) { reg_data = admpci_read_config(dev, bus, slot, func, reg, 4); - switch(reg % 4) - { + switch (reg % 4) { case 3: shift = 24; break; @@ -301,15 +287,14 @@ break; } - switch(bytes) - { + switch (bytes) { case 1: mask = 0xff; data = (reg_data & ~ (mask << shift)) | (data << shift); break; case 2: mask = 0xffff; - if(reg % 4 == 0) + if (reg % 4 == 0) data = (reg_data & ~mask) | data; else data = (reg_data & ~ (mask << shift)) | @@ -335,16 +320,7 @@ static int admpci_route_interrupt(device_t pcib, device_t dev, int pin) { -#if 0 - int bus; - int device; - int func; - /* struct admpci_softc *sc = device_get_softc(pcib); */ - bus = pci_get_bus(dev); - device = pci_get_slot(dev); - func = pci_get_function(dev); - return (0); -#endif + /* TODO: implement */ return (0); } @@ -352,12 +328,13 @@ gt_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) { struct admpci_softc *sc = device_get_softc(dev); + switch (which) { case PCIB_IVAR_BUS: *result = sc->sc_busno; return (0); - } + return (ENOENT); } @@ -379,26 +356,23 @@ u_long start, u_long end, u_long count, u_int flags) { + return (NULL); +#if 0 struct admpci_softc *sc = device_get_softc(bus); struct resource *rv = NULL; struct rman *rm; - bus_space_tag_t bt = 0; bus_space_handle_t bh = 0; - return (NULL); - switch (type) { case SYS_RES_IRQ: rm = &sc->sc_irq_rman; break; case SYS_RES_MEMORY: rm = &sc->sc_mem_rman; - bt = sc->sc_pcimem; bh = sc->sc_mem; break; case SYS_RES_IOPORT: rm = &sc->sc_io_rman; - bt = sc->sc_pciio; bh = sc->sc_io; break; default: @@ -412,7 +386,7 @@ if (type != SYS_RES_IRQ) { bh += (rman_get_start(rv)); - rman_set_bustag(rv, bt); + rman_set_bustag(rv, sc->sc_st); rman_set_bushandle(rv, bh); if (flags & RF_ACTIVE) { if (bus_activate_resource(child, type, *rid, rv)) { @@ -422,6 +396,7 @@ } } return (rv); +#endif } static int @@ -475,20 +450,20 @@ admpci_set_icus(sc); #endif - return 0; + return (0); } static int admpci_teardown_intr(device_t dev, device_t child, struct resource *res, void *cookie) { + return (intr_event_remove_handler(cookie)); } static device_method_t admpci_methods[] = { /* Device interface */ DEVMETHOD(device_probe, admpci_probe), - DEVMETHOD(device_identify, admpci_identify), DEVMETHOD(device_attach, admpci_attach), DEVMETHOD(device_shutdown, bus_generic_shutdown), DEVMETHOD(device_suspend, bus_generic_suspend), @@ -522,4 +497,4 @@ static devclass_t admpci_devclass; -DRIVER_MODULE(admpci, nexus, admpci_driver, admpci_devclass, 0, 0); +DRIVER_MODULE(admpci, obio, admpci_driver, admpci_devclass, 0, 0);