From f99b05da8812b112d8825f82a7ab665e2be567f2 Mon Sep 17 00:00:00 2001 From: scottl Date: Mon, 9 Jun 2003 21:25:14 +0000 Subject: Track the resource id of the memory port instead of just assuming that it is 0x0. Cardbus-based sio/modem cards can now be ejected without panic'ing. --- sys/dev/sio/sio.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'sys/dev/sio/sio.c') diff --git a/sys/dev/sio/sio.c b/sys/dev/sio/sio.c index 7b11c25..3304078 100644 --- a/sys/dev/sio/sio.c +++ b/sys/dev/sio/sio.c @@ -265,8 +265,9 @@ struct com_s { struct resource *irqres; struct resource *ioportres; - void *cookie; - dev_t devs[6]; + int ioportrid; + void *cookie; + dev_t devs[6]; /* * Data area for output buffers. Someday we should build the output @@ -448,7 +449,8 @@ siodetach(dev) bus_release_resource(dev, SYS_RES_IRQ, 0, com->irqres); } if (com->ioportres) - bus_release_resource(dev, SYS_RES_IOPORT, 0, com->ioportres); + bus_release_resource(dev, SYS_RES_IOPORT, com->ioportrid, + com->ioportres); if (com->tp && (com->tp->t_state & TS_ISOPEN)) { device_printf(dev, "still open, forcing close\n"); (*linesw[com->tp->t_line].l_close)(com->tp, 0); @@ -931,6 +933,7 @@ sioattach(dev, xrid, rclk) bzero(com, sizeof *com); com->unit = unit; com->ioportres = port; + com->ioportrid = rid; com->bst = rman_get_bustag(port); com->bsh = rman_get_bushandle(port); com->cfcr_image = CFCR_8BITS; -- cgit v1.1