envctrl.c (133589) | envctrl.c (146966) |
---|---|
1/*- 2 * Copyright (c) 2004 Joerg Wunsch 3 * 4 * derived from sys/i386/isa/pcf.c which is: 5 * 6 * Copyright (c) 1998 Nicolas Souchu, Marc Bouget 7 * All rights reserved. 8 * --- 14 unchanged lines hidden (view full) --- 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 */ 30#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2004 Joerg Wunsch 3 * 4 * derived from sys/i386/isa/pcf.c which is: 5 * 6 * Copyright (c) 1998 Nicolas Souchu, Marc Bouget 7 * All rights reserved. 8 * --- 14 unchanged lines hidden (view full) --- 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 */ 30#include <sys/cdefs.h> |
31__FBSDID("$FreeBSD: head/sys/dev/pcf/envctrl.c 133589 2004-08-12 17:41:33Z marius $"); | 31__FBSDID("$FreeBSD: head/sys/dev/pcf/envctrl.c 146966 2005-06-04 20:29:28Z marius $"); |
32 33/* 34 * Device specific driver for the SUNW,envctrl device found on some 35 * UltraSPARC Sun systems. This device is a Philips PCF8584 sitting 36 * on the Ebus2. 37 */ 38 39#include <sys/param.h> --- 65 unchanged lines hidden (view full) --- 105{ 106 struct pcf_softc *sc; 107 int rv = ENXIO; 108 109 sc = DEVTOSOFTC(dev); 110 bzero(sc, sizeof(struct pcf_softc)); 111 112 /* IO port is mandatory */ | 32 33/* 34 * Device specific driver for the SUNW,envctrl device found on some 35 * UltraSPARC Sun systems. This device is a Philips PCF8584 sitting 36 * on the Ebus2. 37 */ 38 39#include <sys/param.h> --- 65 unchanged lines hidden (view full) --- 105{ 106 struct pcf_softc *sc; 107 int rv = ENXIO; 108 109 sc = DEVTOSOFTC(dev); 110 bzero(sc, sizeof(struct pcf_softc)); 111 112 /* IO port is mandatory */ |
113 sc->res_ioport = bus_alloc_resource_any(dev, SYS_RES_IOPORT, | 113 sc->res_ioport = bus_alloc_resource_any(dev, SYS_RES_MEMORY, |
114 &sc->rid_ioport, RF_ACTIVE); 115 if (sc->res_ioport == 0) { 116 device_printf(dev, "cannot reserve I/O port range\n"); 117 goto error; 118 } 119 sc->bt_ioport = rman_get_bustag(sc->res_ioport); 120 sc->bh_ioport = rman_get_bushandle(sc->res_ioport); 121 --- 30 unchanged lines hidden (view full) --- 152error: 153 if (sc->res_irq != 0) { 154 bus_deactivate_resource(dev, SYS_RES_IRQ, sc->rid_irq, 155 sc->res_irq); 156 bus_release_resource(dev, SYS_RES_IRQ, sc->rid_irq, 157 sc->res_irq); 158 } 159 if (sc->res_ioport != 0) { | 114 &sc->rid_ioport, RF_ACTIVE); 115 if (sc->res_ioport == 0) { 116 device_printf(dev, "cannot reserve I/O port range\n"); 117 goto error; 118 } 119 sc->bt_ioport = rman_get_bustag(sc->res_ioport); 120 sc->bh_ioport = rman_get_bushandle(sc->res_ioport); 121 --- 30 unchanged lines hidden (view full) --- 152error: 153 if (sc->res_irq != 0) { 154 bus_deactivate_resource(dev, SYS_RES_IRQ, sc->rid_irq, 155 sc->res_irq); 156 bus_release_resource(dev, SYS_RES_IRQ, sc->rid_irq, 157 sc->res_irq); 158 } 159 if (sc->res_ioport != 0) { |
160 bus_deactivate_resource(dev, SYS_RES_IOPORT, sc->rid_ioport, | 160 bus_deactivate_resource(dev, SYS_RES_MEMORY, sc->rid_ioport, |
161 sc->res_ioport); | 161 sc->res_ioport); |
162 bus_release_resource(dev, SYS_RES_IOPORT, sc->rid_ioport, | 162 bus_release_resource(dev, SYS_RES_MEMORY, sc->rid_ioport, |
163 sc->res_ioport); 164 } 165 return (rv); 166} 167 168static int 169envctrl_detach(device_t dev) 170{ --- 10 unchanged lines hidden (view full) --- 181 182 if (sc->res_irq != 0) { 183 BUS_TEARDOWN_INTR(device_get_parent(dev), dev, sc->res_irq, 184 sc->intr_cookie); 185 bus_deactivate_resource(dev, SYS_RES_IRQ, sc->rid_irq, sc->res_irq); 186 bus_release_resource(dev, SYS_RES_IRQ, sc->rid_irq, sc->res_irq); 187 } 188 | 163 sc->res_ioport); 164 } 165 return (rv); 166} 167 168static int 169envctrl_detach(device_t dev) 170{ --- 10 unchanged lines hidden (view full) --- 181 182 if (sc->res_irq != 0) { 183 BUS_TEARDOWN_INTR(device_get_parent(dev), dev, sc->res_irq, 184 sc->intr_cookie); 185 bus_deactivate_resource(dev, SYS_RES_IRQ, sc->rid_irq, sc->res_irq); 186 bus_release_resource(dev, SYS_RES_IRQ, sc->rid_irq, sc->res_irq); 187 } 188 |
189 bus_deactivate_resource(dev, SYS_RES_IOPORT, sc->rid_ioport, sc->res_ioport); 190 bus_release_resource(dev, SYS_RES_IOPORT, sc->rid_ioport, sc->res_ioport); | 189 bus_deactivate_resource(dev, SYS_RES_MEMORY, sc->rid_ioport, sc->res_ioport); 190 bus_release_resource(dev, SYS_RES_MEMORY, sc->rid_ioport, sc->res_ioport); |
191 192 return (0); 193} 194 195DRIVER_MODULE(envctrl, ebus, envctrl_driver, envctrl_devclass, 0, 0); 196MODULE_DEPEND(envctrl, iicbus, PCF_MINVER, PCF_PREFVER, PCF_MAXVER); 197MODULE_VERSION(envctrl, PCF_MODVER); | 191 192 return (0); 193} 194 195DRIVER_MODULE(envctrl, ebus, envctrl_driver, envctrl_devclass, 0, 0); 196MODULE_DEPEND(envctrl, iicbus, PCF_MINVER, PCF_PREFVER, PCF_MAXVER); 197MODULE_VERSION(envctrl, PCF_MODVER); |