Deleted Added
full compact
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);