Move the specification of EDGE/LEVEL triggered interrupts to
eisa_add_intr() which now takes an additional arguement (one of EISA_TRIGGER_LEVEL or EISA_TRIGGER_EDGE). The flag RR_SHAREABLE has no effect when passed to bus_alloc_resource(dev, SYS_RES_IRQ, ...) in an EISA device context as the eisa_alloc_resource() call (bus_alloc_resource method) now deals with this flag directly, depending on the device ivars. This change does nothing more than move all the 'shared = inb(foo + iobsse)' nonesense to the device probe methods rather than the device attach. Also, print out 'edge' or 'level' in the IRQ announcement message. Reviewed by: dfr
This commit is contained in:
parent
cc5aedfb1a
commit
0d6ab4a16a
@ -32,7 +32,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: adv_eisa.c,v 1.3 1999/04/18 15:50:33 peter Exp $
|
||||
* $Id: adv_eisa.c,v 1.4 1999/05/08 21:59:16 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -130,7 +130,7 @@ adveisaprobe(device_t dev)
|
||||
irq);
|
||||
return ENXIO;
|
||||
}
|
||||
eisa_add_intr(dev, irq + 10);
|
||||
eisa_add_intr(dev, irq + 10, EISA_TRIGGER_LEVEL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -25,7 +25,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ahb.c,v 1.11 1999/05/06 20:16:31 ken Exp $
|
||||
* $Id: ahb.c,v 1.12 1999/05/08 21:59:17 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -206,6 +206,7 @@ ahbprobe(device_t dev)
|
||||
u_int32_t iobase;
|
||||
u_int32_t irq;
|
||||
u_int8_t intdef;
|
||||
int shared;
|
||||
|
||||
desc = ahbmatch(eisa_get_id(dev));
|
||||
if (!desc)
|
||||
@ -247,7 +248,10 @@ ahbprobe(device_t dev)
|
||||
if (irq == 0)
|
||||
return ENXIO;
|
||||
|
||||
eisa_add_intr(dev, irq);
|
||||
shared = (inb(INTDEF + iobase) & INTLEVEL) ?
|
||||
EISA_TRIGGER_LEVEL : EISA_TRIGGER_EDGE;
|
||||
|
||||
eisa_add_intr(dev, irq, shared);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -262,7 +266,7 @@ ahbattach(device_t dev)
|
||||
struct ecb* next_ecb;
|
||||
struct resource *io = 0;
|
||||
struct resource *irq = 0;
|
||||
int shared, rid;
|
||||
int rid;
|
||||
void *ih;
|
||||
|
||||
rid = 0;
|
||||
@ -280,10 +284,9 @@ ahbattach(device_t dev)
|
||||
if (ahbreset(ahb) != 0)
|
||||
goto error_exit;
|
||||
|
||||
shared = (ahb_inb(ahb, INTDEF) & INTLEVEL) ? RF_SHAREABLE : 0;
|
||||
rid = 0;
|
||||
irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, shared | RF_ACTIVE);
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
if (!irq) {
|
||||
device_printf(dev, "Can't allocate interrupt\n");
|
||||
goto error_exit;
|
||||
@ -746,10 +749,14 @@ ahbprocesserror(struct ahb_softc *ahb, struct ecb *ecb, union ccb *ccb)
|
||||
case HS_SCSI_RESET_INCOMING:
|
||||
ccb->ccb_h.status = CAM_SCSI_BUS_RESET;
|
||||
break;
|
||||
case HS_INVALID_ECB_PARAM:
|
||||
printf("ahb%ld: opcode 0x%02x, flag_word1 0x%02x, flag_word2 0x%02x\n",
|
||||
ahb->unit, hecb->opcode, hecb->flag_word1, hecb->flag_word2);
|
||||
ccb->ccb_h.status = CAM_SCSI_BUS_RESET;
|
||||
break;
|
||||
case HS_DUP_TCB_RECEIVED:
|
||||
case HS_INVALID_OPCODE:
|
||||
case HS_INVALID_CMD_LINK:
|
||||
case HS_INVALID_ECB_PARAM:
|
||||
case HS_PROGRAM_CKSUM_ERROR:
|
||||
panic("ahb%ld: Can't happen host status %x occurred",
|
||||
ahb->unit, status->ha_status);
|
||||
|
@ -26,7 +26,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ahc_eisa.c,v 1.9 1999/05/17 21:51:41 gibbs Exp $
|
||||
* $Id: ahc_eisa.c,v 1.10 1999/05/17 21:56:00 gibbs Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -97,6 +97,7 @@ aic7770_probe(device_t dev)
|
||||
u_int32_t irq;
|
||||
u_int8_t intdef;
|
||||
u_int8_t hcntrl;
|
||||
int shared;
|
||||
|
||||
desc = aic7770_match(eisa_get_id(dev));
|
||||
if (!desc)
|
||||
@ -113,6 +114,7 @@ aic7770_probe(device_t dev)
|
||||
|
||||
eisa_add_iospace(dev, iobase, AHC_EISA_IOSIZE, RESVADDR_NONE);
|
||||
intdef = inb(INTDEF + iobase);
|
||||
shared = (intdef & 0x80) ? EISA_TRIGGER_EDGE : EISA_TRIGGER_LEVEL;
|
||||
irq = intdef & 0xf;
|
||||
switch (irq) {
|
||||
case 9:
|
||||
@ -132,7 +134,7 @@ aic7770_probe(device_t dev)
|
||||
if (irq == 0)
|
||||
return ENXIO;
|
||||
|
||||
eisa_add_intr(dev, irq);
|
||||
eisa_add_intr(dev, irq, shared);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -145,7 +147,6 @@ aic7770_attach(device_t dev)
|
||||
struct ahc_softc *ahc;
|
||||
struct resource *io;
|
||||
int error, rid;
|
||||
int shared;
|
||||
|
||||
rid = 0;
|
||||
io = NULL;
|
||||
@ -205,10 +206,9 @@ aic7770_attach(device_t dev)
|
||||
* The IRQMS bit enables level sensitive interrupts. Only allow
|
||||
* IRQ sharing if it's set.
|
||||
*/
|
||||
shared = (ahc->pause & IRQMS) ? RF_SHAREABLE : 0;
|
||||
rid = 0;
|
||||
ahc->irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, shared | RF_ACTIVE);
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
if (ahc->irq == NULL) {
|
||||
device_printf(dev, "Can't allocate interrupt\n");
|
||||
goto bad;
|
||||
|
@ -26,7 +26,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: bt_eisa.c,v 1.6 1999/04/24 06:46:10 peter Exp $
|
||||
* $Id: bt_eisa.c,v 1.7 1999/05/08 21:59:18 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -188,6 +188,7 @@ bt_eisa_probe(device_t dev)
|
||||
u_long iosize;
|
||||
u_int ioconf;
|
||||
int result;
|
||||
int shared;
|
||||
|
||||
desc = bt_match(eisa_get_id(dev));
|
||||
if (!desc)
|
||||
@ -229,6 +230,8 @@ bt_eisa_probe(device_t dev)
|
||||
eisa_get_slot(dev));
|
||||
return (ENXIO);
|
||||
}
|
||||
shared = (inb(iobase + AMI_EISA_IOCONF1) & AMI_IRQ_LEVEL) ?
|
||||
EISA_TRIGGER_LEVEL : EISA_TRIGGER_EDGE;
|
||||
} else {
|
||||
iobase += BT_EISA_SLOT_OFFSET;
|
||||
iosize = BT_EISA_IOSIZE;
|
||||
@ -262,6 +265,8 @@ bt_eisa_probe(device_t dev)
|
||||
eisa_get_slot(dev));
|
||||
return (ENXIO);
|
||||
}
|
||||
shared = (inb(iobase + EISA_IRQ_TYPE) & LEVEL) ?
|
||||
EISA_TRIGGER_LEVEL : EISA_TRIGGER_EDGE;
|
||||
}
|
||||
bt_mark_probed_iop(port);
|
||||
|
||||
@ -277,7 +282,7 @@ bt_eisa_probe(device_t dev)
|
||||
"card at slot 0x%x\n", eisa_get_slot(dev));
|
||||
result = ENXIO;
|
||||
} else {
|
||||
eisa_add_intr(dev, info.irq);
|
||||
eisa_add_intr(dev, info.irq, shared);
|
||||
result = 0;
|
||||
}
|
||||
bt_eisa_release_resources(dev);
|
||||
|
@ -33,7 +33,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id: dpt_eisa.c,v 1.5 1999/04/18 15:50:33 peter Exp $
|
||||
* $Id: dpt_eisa.c,v 1.6 1999/05/08 21:59:19 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -78,6 +78,7 @@ dpt_eisa_probe(device_t dev)
|
||||
u_int32_t io_base;
|
||||
u_int intdef;
|
||||
u_int irq;
|
||||
int shared;
|
||||
|
||||
desc = dpt_eisa_match(eisa_get_id(dev));
|
||||
if (!desc)
|
||||
@ -88,10 +89,14 @@ dpt_eisa_probe(device_t dev)
|
||||
+ DPT_EISA_SLOT_OFFSET;
|
||||
|
||||
eisa_add_iospace(dev, io_base, DPT_EISA_IOSIZE, RESVADDR_NONE);
|
||||
|
||||
outb((DPT_EISA_CFENABLE + io_base), 0xf8);
|
||||
|
||||
intdef = inb(DPT_EISA_INTDEF + io_base);
|
||||
intdef = inb(DPT_EISA_INTDEF + io_base);
|
||||
|
||||
irq = intdef & DPT_EISA_INT_NUM_MASK;
|
||||
shared = (intdef & DPT_EISA_INT_LEVEL)
|
||||
? EISA_TRIGGER_LEVEL : EISA_TRIGGER_EDGE;
|
||||
switch (irq) {
|
||||
case DPT_EISA_INT_NUM_11:
|
||||
irq = 11;
|
||||
@ -103,15 +108,15 @@ dpt_eisa_probe(device_t dev)
|
||||
irq = 14;
|
||||
break;
|
||||
default:
|
||||
printf("dpt at slot %d: illegal irq setting %d\n",
|
||||
device_printf(dev, "dpt at slot %d: illegal irq setting %d\n",
|
||||
eisa_get_slot(dev), irq);
|
||||
irq = 0;
|
||||
break;
|
||||
}
|
||||
if (irq == 0)
|
||||
return ENXIO;
|
||||
return (ENXIO);
|
||||
|
||||
eisa_add_intr(dev, irq);
|
||||
eisa_add_intr(dev, irq, shared);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -123,7 +128,6 @@ dpt_eisa_attach(device_t dev)
|
||||
struct resource *io = 0;
|
||||
struct resource *irq = 0;
|
||||
int unit = device_get_unit(dev);
|
||||
int shared;
|
||||
int s;
|
||||
int rid;
|
||||
void *ih;
|
||||
@ -136,9 +140,6 @@ dpt_eisa_attach(device_t dev)
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
shared = (inb(DPT_EISA_INTDEF + rman_get_start(io))
|
||||
& DPT_EISA_INT_LEVEL) ? RF_SHAREABLE : 0;
|
||||
|
||||
dpt = dpt_alloc(unit, rman_get_bustag(io),
|
||||
rman_get_bushandle(io) + DPT_EISA_EATA_REG_OFFSET);
|
||||
if (dpt == NULL)
|
||||
@ -160,7 +161,7 @@ dpt_eisa_attach(device_t dev)
|
||||
|
||||
rid = 0;
|
||||
irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, shared | RF_ACTIVE);
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
if (!irq) {
|
||||
device_printf(dev, "No irq?!\n");
|
||||
goto bad;
|
||||
|
@ -32,12 +32,14 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id: dpt_eisa.h,v 1.1 1998/03/11 00:30:14 julian Exp $
|
||||
* $Id: dpt_eisa.h,v 1.2 1998/09/15 08:33:35 gibbs Exp $
|
||||
*/
|
||||
|
||||
#define DPT_EISA_SLOT_OFFSET 0xc00
|
||||
#define DPT_EISA_IOSIZE 0x100
|
||||
|
||||
#define DPT_EISA_CFENABLE 0x8f
|
||||
|
||||
#define DPT_EISA_INTDEF 0x90
|
||||
#define DPT_EISA_INT_LEVEL 0x04
|
||||
#define DPT_EISA_INT_NUM_MASK 0x38
|
||||
@ -62,4 +64,3 @@
|
||||
#define DPT_EISA_DPTBC01 0x1214BC01
|
||||
#define DPT_EISA_NEC8200 0x12148200
|
||||
#define DPT_EISA_ATT2408 0x12142408
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: eisaconf.c,v 1.48 1999/07/29 01:02:51 mdodd Exp $
|
||||
* $Id: eisaconf.c,v 1.49 1999/07/30 13:54:00 mdodd Exp $
|
||||
*/
|
||||
|
||||
#include "opt_eisa.h"
|
||||
@ -62,6 +62,7 @@ LIST_HEAD(resvlist, resvaddr);
|
||||
|
||||
struct irq_node {
|
||||
int irq_no;
|
||||
int irq_trigger;
|
||||
void *idesc;
|
||||
TAILQ_ENTRY(irq_node) links;
|
||||
};
|
||||
@ -92,7 +93,7 @@ int num_eisa_slots = EISA_SLOTS;
|
||||
static devclass_t eisa_devclass;
|
||||
|
||||
static void eisa_reg_print (device_t, char *, char *, int *);
|
||||
static int eisa_find_irq(struct eisa_device *e_dev, int rid);
|
||||
static struct irq_node * eisa_find_irq(struct eisa_device *e_dev, int rid);
|
||||
static struct resvaddr * eisa_find_maddr(struct eisa_device *e_dev, int rid);
|
||||
static struct resvaddr * eisa_find_ioaddr(struct eisa_device *e_dev, int rid);
|
||||
|
||||
@ -302,8 +303,9 @@ eisa_print_child(device_t dev, device_t child)
|
||||
}
|
||||
|
||||
rid = 0;
|
||||
while ((irq = eisa_find_irq(e_dev, rid++)) != -1) {
|
||||
snprintf(buf, sizeof(buf), "irq %d", irq);
|
||||
while ((irq = eisa_find_irq(e_dev, rid++)) != NULL) {
|
||||
snprintf(buf, sizeof(buf), "irq %d (%s)", irq->irq_no,
|
||||
(irq->irq_trigger ? "level" : "edge"));
|
||||
eisa_reg_print(child, buf,
|
||||
((rid == 1) ? &separator : NULL), &column);
|
||||
}
|
||||
@ -315,7 +317,7 @@ eisa_print_child(device_t dev, device_t child)
|
||||
return (retval);
|
||||
}
|
||||
|
||||
static int
|
||||
static struct irq_node *
|
||||
eisa_find_irq(struct eisa_device *e_dev, int rid)
|
||||
{
|
||||
int i;
|
||||
@ -327,9 +329,9 @@ eisa_find_irq(struct eisa_device *e_dev, int rid)
|
||||
;
|
||||
|
||||
if (irq)
|
||||
return irq->irq_no;
|
||||
return (irq);
|
||||
else
|
||||
return -1;
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
static struct resvaddr *
|
||||
@ -364,6 +366,7 @@ static int
|
||||
eisa_read_ivar(device_t dev, device_t child, int which, u_long *result)
|
||||
{
|
||||
struct eisa_device *e_dev = device_get_ivars(child);
|
||||
struct irq_node *irq;
|
||||
|
||||
switch (which) {
|
||||
case EISA_IVAR_SLOT:
|
||||
@ -376,7 +379,11 @@ eisa_read_ivar(device_t dev, device_t child, int which, u_long *result)
|
||||
|
||||
case EISA_IVAR_IRQ:
|
||||
/* XXX only first irq */
|
||||
*result = eisa_find_irq(e_dev, 0);
|
||||
if ((irq = eisa_find_irq(e_dev, 0)) != NULL) {
|
||||
*result = irq->irq_no;
|
||||
} else {
|
||||
*result = -1;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -406,11 +413,16 @@ eisa_alloc_resource(device_t dev, device_t child, int type, int *rid,
|
||||
switch (type) {
|
||||
case SYS_RES_IRQ:
|
||||
if (isdefault) {
|
||||
int irq = eisa_find_irq(e_dev, *rid);
|
||||
if (irq == -1)
|
||||
struct irq_node * irq = eisa_find_irq(e_dev, *rid);
|
||||
if (irq == NULL)
|
||||
return 0;
|
||||
start = end = irq;
|
||||
start = end = irq->irq_no;
|
||||
count = 1;
|
||||
if (irq->irq_trigger == EISA_TRIGGER_LEVEL) {
|
||||
flags |= RF_SHAREABLE;
|
||||
} else {
|
||||
flags &= ~RF_SHAREABLE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@ -466,7 +478,7 @@ eisa_release_resource(device_t dev, device_t child, int type, int rid,
|
||||
|
||||
switch (type) {
|
||||
case SYS_RES_IRQ:
|
||||
if (eisa_find_irq(e_dev, rid) == -1)
|
||||
if (eisa_find_irq(e_dev, rid) == NULL)
|
||||
return EINVAL;
|
||||
break;
|
||||
|
||||
@ -496,10 +508,10 @@ eisa_release_resource(device_t dev, device_t child, int type, int rid,
|
||||
}
|
||||
|
||||
int
|
||||
eisa_add_intr(device_t dev, int irq)
|
||||
eisa_add_intr(device_t dev, int irq, int trigger)
|
||||
{
|
||||
struct eisa_device *e_dev = device_get_ivars(dev);
|
||||
struct irq_node *irq_info;
|
||||
struct irq_node *irq_info;
|
||||
|
||||
irq_info = (struct irq_node *)malloc(sizeof(*irq_info), M_DEVBUF,
|
||||
M_NOWAIT);
|
||||
@ -507,6 +519,7 @@ eisa_add_intr(device_t dev, int irq)
|
||||
return (1);
|
||||
|
||||
irq_info->irq_no = irq;
|
||||
irq_info->irq_trigger = trigger;
|
||||
irq_info->idesc = NULL;
|
||||
TAILQ_INSERT_TAIL(&e_dev->ioconf.irqs, irq_info, links);
|
||||
return 0;
|
||||
|
@ -28,7 +28,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: eisaconf.h,v 1.17 1997/09/21 21:35:23 gibbs Exp $
|
||||
* $Id: eisaconf.h,v 1.18 1999/04/18 15:50:33 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef _I386_EISA_EISACONF_H_
|
||||
@ -53,6 +53,9 @@ enum eisa_device_ivars {
|
||||
EISA_IVAR_IRQ
|
||||
};
|
||||
|
||||
#define EISA_TRIGGER_EDGE 0x0
|
||||
#define EISA_TRIGGER_LEVEL 0x1
|
||||
|
||||
/*
|
||||
* Simplified accessors for isa devices
|
||||
*/
|
||||
@ -75,7 +78,7 @@ EISA_ACCESSOR(slot, SLOT, int)
|
||||
EISA_ACCESSOR(id, ID, eisa_id_t)
|
||||
EISA_ACCESSOR(irq, IRQ, eisa_id_t)
|
||||
|
||||
int eisa_add_intr __P((device_t, int));
|
||||
int eisa_add_intr __P((device_t, int, int));
|
||||
|
||||
#define RESVADDR_NONE 0x00
|
||||
#define RESVADDR_BITMASK 0x01 /* size is a mask of reserved
|
||||
|
@ -19,7 +19,7 @@
|
||||
* 4. Modifications may be freely made to this file if the above conditions
|
||||
* are met.
|
||||
*
|
||||
* $Id: 3c5x9.c,v 1.11 1999/04/18 15:50:33 peter Exp $
|
||||
* $Id: 3c5x9.c,v 1.12 1999/05/08 21:59:15 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -160,7 +160,7 @@ ep_eisa_probe(device_t dev)
|
||||
eisa_get_slot(dev));
|
||||
return ENXIO;
|
||||
}
|
||||
eisa_add_intr(dev, irq);
|
||||
eisa_add_intr(dev, irq, EISA_TRIGGER_EDGE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: if_fea.c,v 1.15 1999/07/10 19:46:08 peter Exp $
|
||||
* $Id: if_fea.c,v 1.16 1999/07/31 00:43:48 mdodd Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -148,7 +148,7 @@ pdq_eisa_probe (dev)
|
||||
|
||||
eisa_add_iospace(dev, iobase, 0x200, RESVADDR_NONE);
|
||||
eisa_add_mspace(dev, maddr, msize, RESVADDR_NONE);
|
||||
eisa_add_intr(dev, irq);
|
||||
eisa_add_intr(dev, irq, EISA_TRIGGER_LEVEL);
|
||||
|
||||
return (0);
|
||||
}
|
||||
@ -196,7 +196,7 @@ pdq_eisa_attach (dev)
|
||||
|
||||
rid = 0;
|
||||
irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, RF_SHAREABLE | RF_ACTIVE);
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
|
||||
if (!irq) {
|
||||
device_printf(dev, "No, irq?!\n");
|
||||
|
@ -106,7 +106,8 @@ vx_eisa_probe(device_t dev)
|
||||
eisa_add_iospace(dev, port, VX_IOSIZE, RESVADDR_NONE);
|
||||
|
||||
/* Set irq */
|
||||
eisa_add_intr(dev, inw(iobase + VX_RESOURCE_CONFIG) >> 12);
|
||||
eisa_add_intr(dev, inw(iobase + VX_RESOURCE_CONFIG) >> 12,
|
||||
EISA_TRIGGER_EDGE);
|
||||
|
||||
return (0);
|
||||
}
|
||||
@ -119,7 +120,6 @@ vx_eisa_attach(device_t dev)
|
||||
struct resource *io = 0;
|
||||
struct resource *eisa_io = 0;
|
||||
struct resource *irq = 0;
|
||||
u_char level_intr;
|
||||
int rid;
|
||||
void *ih;
|
||||
|
||||
@ -149,8 +149,6 @@ vx_eisa_attach(device_t dev)
|
||||
|
||||
sc->vx_io_addr = rman_get_start(io);
|
||||
|
||||
level_intr = FALSE;
|
||||
|
||||
rid = 0;
|
||||
irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
|
@ -19,7 +19,7 @@
|
||||
* 4. Modifications may be freely made to this file if the above conditions
|
||||
* are met.
|
||||
*
|
||||
* $Id: 3c5x9.c,v 1.11 1999/04/18 15:50:33 peter Exp $
|
||||
* $Id: 3c5x9.c,v 1.12 1999/05/08 21:59:15 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -160,7 +160,7 @@ ep_eisa_probe(device_t dev)
|
||||
eisa_get_slot(dev));
|
||||
return ENXIO;
|
||||
}
|
||||
eisa_add_intr(dev, irq);
|
||||
eisa_add_intr(dev, irq, EISA_TRIGGER_EDGE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -32,7 +32,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: adv_eisa.c,v 1.3 1999/04/18 15:50:33 peter Exp $
|
||||
* $Id: adv_eisa.c,v 1.4 1999/05/08 21:59:16 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -130,7 +130,7 @@ adveisaprobe(device_t dev)
|
||||
irq);
|
||||
return ENXIO;
|
||||
}
|
||||
eisa_add_intr(dev, irq + 10);
|
||||
eisa_add_intr(dev, irq + 10, EISA_TRIGGER_LEVEL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -25,7 +25,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ahb.c,v 1.11 1999/05/06 20:16:31 ken Exp $
|
||||
* $Id: ahb.c,v 1.12 1999/05/08 21:59:17 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -206,6 +206,7 @@ ahbprobe(device_t dev)
|
||||
u_int32_t iobase;
|
||||
u_int32_t irq;
|
||||
u_int8_t intdef;
|
||||
int shared;
|
||||
|
||||
desc = ahbmatch(eisa_get_id(dev));
|
||||
if (!desc)
|
||||
@ -247,7 +248,10 @@ ahbprobe(device_t dev)
|
||||
if (irq == 0)
|
||||
return ENXIO;
|
||||
|
||||
eisa_add_intr(dev, irq);
|
||||
shared = (inb(INTDEF + iobase) & INTLEVEL) ?
|
||||
EISA_TRIGGER_LEVEL : EISA_TRIGGER_EDGE;
|
||||
|
||||
eisa_add_intr(dev, irq, shared);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -262,7 +266,7 @@ ahbattach(device_t dev)
|
||||
struct ecb* next_ecb;
|
||||
struct resource *io = 0;
|
||||
struct resource *irq = 0;
|
||||
int shared, rid;
|
||||
int rid;
|
||||
void *ih;
|
||||
|
||||
rid = 0;
|
||||
@ -280,10 +284,9 @@ ahbattach(device_t dev)
|
||||
if (ahbreset(ahb) != 0)
|
||||
goto error_exit;
|
||||
|
||||
shared = (ahb_inb(ahb, INTDEF) & INTLEVEL) ? RF_SHAREABLE : 0;
|
||||
rid = 0;
|
||||
irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, shared | RF_ACTIVE);
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
if (!irq) {
|
||||
device_printf(dev, "Can't allocate interrupt\n");
|
||||
goto error_exit;
|
||||
@ -746,10 +749,14 @@ ahbprocesserror(struct ahb_softc *ahb, struct ecb *ecb, union ccb *ccb)
|
||||
case HS_SCSI_RESET_INCOMING:
|
||||
ccb->ccb_h.status = CAM_SCSI_BUS_RESET;
|
||||
break;
|
||||
case HS_INVALID_ECB_PARAM:
|
||||
printf("ahb%ld: opcode 0x%02x, flag_word1 0x%02x, flag_word2 0x%02x\n",
|
||||
ahb->unit, hecb->opcode, hecb->flag_word1, hecb->flag_word2);
|
||||
ccb->ccb_h.status = CAM_SCSI_BUS_RESET;
|
||||
break;
|
||||
case HS_DUP_TCB_RECEIVED:
|
||||
case HS_INVALID_OPCODE:
|
||||
case HS_INVALID_CMD_LINK:
|
||||
case HS_INVALID_ECB_PARAM:
|
||||
case HS_PROGRAM_CKSUM_ERROR:
|
||||
panic("ahb%ld: Can't happen host status %x occurred",
|
||||
ahb->unit, status->ha_status);
|
||||
|
@ -26,7 +26,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ahc_eisa.c,v 1.9 1999/05/17 21:51:41 gibbs Exp $
|
||||
* $Id: ahc_eisa.c,v 1.10 1999/05/17 21:56:00 gibbs Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -97,6 +97,7 @@ aic7770_probe(device_t dev)
|
||||
u_int32_t irq;
|
||||
u_int8_t intdef;
|
||||
u_int8_t hcntrl;
|
||||
int shared;
|
||||
|
||||
desc = aic7770_match(eisa_get_id(dev));
|
||||
if (!desc)
|
||||
@ -113,6 +114,7 @@ aic7770_probe(device_t dev)
|
||||
|
||||
eisa_add_iospace(dev, iobase, AHC_EISA_IOSIZE, RESVADDR_NONE);
|
||||
intdef = inb(INTDEF + iobase);
|
||||
shared = (intdef & 0x80) ? EISA_TRIGGER_EDGE : EISA_TRIGGER_LEVEL;
|
||||
irq = intdef & 0xf;
|
||||
switch (irq) {
|
||||
case 9:
|
||||
@ -132,7 +134,7 @@ aic7770_probe(device_t dev)
|
||||
if (irq == 0)
|
||||
return ENXIO;
|
||||
|
||||
eisa_add_intr(dev, irq);
|
||||
eisa_add_intr(dev, irq, shared);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -145,7 +147,6 @@ aic7770_attach(device_t dev)
|
||||
struct ahc_softc *ahc;
|
||||
struct resource *io;
|
||||
int error, rid;
|
||||
int shared;
|
||||
|
||||
rid = 0;
|
||||
io = NULL;
|
||||
@ -205,10 +206,9 @@ aic7770_attach(device_t dev)
|
||||
* The IRQMS bit enables level sensitive interrupts. Only allow
|
||||
* IRQ sharing if it's set.
|
||||
*/
|
||||
shared = (ahc->pause & IRQMS) ? RF_SHAREABLE : 0;
|
||||
rid = 0;
|
||||
ahc->irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, shared | RF_ACTIVE);
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
if (ahc->irq == NULL) {
|
||||
device_printf(dev, "Can't allocate interrupt\n");
|
||||
goto bad;
|
||||
|
@ -26,7 +26,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: bt_eisa.c,v 1.6 1999/04/24 06:46:10 peter Exp $
|
||||
* $Id: bt_eisa.c,v 1.7 1999/05/08 21:59:18 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -188,6 +188,7 @@ bt_eisa_probe(device_t dev)
|
||||
u_long iosize;
|
||||
u_int ioconf;
|
||||
int result;
|
||||
int shared;
|
||||
|
||||
desc = bt_match(eisa_get_id(dev));
|
||||
if (!desc)
|
||||
@ -229,6 +230,8 @@ bt_eisa_probe(device_t dev)
|
||||
eisa_get_slot(dev));
|
||||
return (ENXIO);
|
||||
}
|
||||
shared = (inb(iobase + AMI_EISA_IOCONF1) & AMI_IRQ_LEVEL) ?
|
||||
EISA_TRIGGER_LEVEL : EISA_TRIGGER_EDGE;
|
||||
} else {
|
||||
iobase += BT_EISA_SLOT_OFFSET;
|
||||
iosize = BT_EISA_IOSIZE;
|
||||
@ -262,6 +265,8 @@ bt_eisa_probe(device_t dev)
|
||||
eisa_get_slot(dev));
|
||||
return (ENXIO);
|
||||
}
|
||||
shared = (inb(iobase + EISA_IRQ_TYPE) & LEVEL) ?
|
||||
EISA_TRIGGER_LEVEL : EISA_TRIGGER_EDGE;
|
||||
}
|
||||
bt_mark_probed_iop(port);
|
||||
|
||||
@ -277,7 +282,7 @@ bt_eisa_probe(device_t dev)
|
||||
"card at slot 0x%x\n", eisa_get_slot(dev));
|
||||
result = ENXIO;
|
||||
} else {
|
||||
eisa_add_intr(dev, info.irq);
|
||||
eisa_add_intr(dev, info.irq, shared);
|
||||
result = 0;
|
||||
}
|
||||
bt_eisa_release_resources(dev);
|
||||
|
@ -33,7 +33,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id: dpt_eisa.c,v 1.5 1999/04/18 15:50:33 peter Exp $
|
||||
* $Id: dpt_eisa.c,v 1.6 1999/05/08 21:59:19 dfr Exp $
|
||||
*/
|
||||
|
||||
#include "eisa.h"
|
||||
@ -78,6 +78,7 @@ dpt_eisa_probe(device_t dev)
|
||||
u_int32_t io_base;
|
||||
u_int intdef;
|
||||
u_int irq;
|
||||
int shared;
|
||||
|
||||
desc = dpt_eisa_match(eisa_get_id(dev));
|
||||
if (!desc)
|
||||
@ -88,10 +89,14 @@ dpt_eisa_probe(device_t dev)
|
||||
+ DPT_EISA_SLOT_OFFSET;
|
||||
|
||||
eisa_add_iospace(dev, io_base, DPT_EISA_IOSIZE, RESVADDR_NONE);
|
||||
|
||||
outb((DPT_EISA_CFENABLE + io_base), 0xf8);
|
||||
|
||||
intdef = inb(DPT_EISA_INTDEF + io_base);
|
||||
intdef = inb(DPT_EISA_INTDEF + io_base);
|
||||
|
||||
irq = intdef & DPT_EISA_INT_NUM_MASK;
|
||||
shared = (intdef & DPT_EISA_INT_LEVEL)
|
||||
? EISA_TRIGGER_LEVEL : EISA_TRIGGER_EDGE;
|
||||
switch (irq) {
|
||||
case DPT_EISA_INT_NUM_11:
|
||||
irq = 11;
|
||||
@ -103,15 +108,15 @@ dpt_eisa_probe(device_t dev)
|
||||
irq = 14;
|
||||
break;
|
||||
default:
|
||||
printf("dpt at slot %d: illegal irq setting %d\n",
|
||||
device_printf(dev, "dpt at slot %d: illegal irq setting %d\n",
|
||||
eisa_get_slot(dev), irq);
|
||||
irq = 0;
|
||||
break;
|
||||
}
|
||||
if (irq == 0)
|
||||
return ENXIO;
|
||||
return (ENXIO);
|
||||
|
||||
eisa_add_intr(dev, irq);
|
||||
eisa_add_intr(dev, irq, shared);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -123,7 +128,6 @@ dpt_eisa_attach(device_t dev)
|
||||
struct resource *io = 0;
|
||||
struct resource *irq = 0;
|
||||
int unit = device_get_unit(dev);
|
||||
int shared;
|
||||
int s;
|
||||
int rid;
|
||||
void *ih;
|
||||
@ -136,9 +140,6 @@ dpt_eisa_attach(device_t dev)
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
shared = (inb(DPT_EISA_INTDEF + rman_get_start(io))
|
||||
& DPT_EISA_INT_LEVEL) ? RF_SHAREABLE : 0;
|
||||
|
||||
dpt = dpt_alloc(unit, rman_get_bustag(io),
|
||||
rman_get_bushandle(io) + DPT_EISA_EATA_REG_OFFSET);
|
||||
if (dpt == NULL)
|
||||
@ -160,7 +161,7 @@ dpt_eisa_attach(device_t dev)
|
||||
|
||||
rid = 0;
|
||||
irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, shared | RF_ACTIVE);
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
if (!irq) {
|
||||
device_printf(dev, "No irq?!\n");
|
||||
goto bad;
|
||||
|
@ -32,12 +32,14 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id: dpt_eisa.h,v 1.1 1998/03/11 00:30:14 julian Exp $
|
||||
* $Id: dpt_eisa.h,v 1.2 1998/09/15 08:33:35 gibbs Exp $
|
||||
*/
|
||||
|
||||
#define DPT_EISA_SLOT_OFFSET 0xc00
|
||||
#define DPT_EISA_IOSIZE 0x100
|
||||
|
||||
#define DPT_EISA_CFENABLE 0x8f
|
||||
|
||||
#define DPT_EISA_INTDEF 0x90
|
||||
#define DPT_EISA_INT_LEVEL 0x04
|
||||
#define DPT_EISA_INT_NUM_MASK 0x38
|
||||
@ -62,4 +64,3 @@
|
||||
#define DPT_EISA_DPTBC01 0x1214BC01
|
||||
#define DPT_EISA_NEC8200 0x12148200
|
||||
#define DPT_EISA_ATT2408 0x12142408
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: eisaconf.c,v 1.48 1999/07/29 01:02:51 mdodd Exp $
|
||||
* $Id: eisaconf.c,v 1.49 1999/07/30 13:54:00 mdodd Exp $
|
||||
*/
|
||||
|
||||
#include "opt_eisa.h"
|
||||
@ -62,6 +62,7 @@ LIST_HEAD(resvlist, resvaddr);
|
||||
|
||||
struct irq_node {
|
||||
int irq_no;
|
||||
int irq_trigger;
|
||||
void *idesc;
|
||||
TAILQ_ENTRY(irq_node) links;
|
||||
};
|
||||
@ -92,7 +93,7 @@ int num_eisa_slots = EISA_SLOTS;
|
||||
static devclass_t eisa_devclass;
|
||||
|
||||
static void eisa_reg_print (device_t, char *, char *, int *);
|
||||
static int eisa_find_irq(struct eisa_device *e_dev, int rid);
|
||||
static struct irq_node * eisa_find_irq(struct eisa_device *e_dev, int rid);
|
||||
static struct resvaddr * eisa_find_maddr(struct eisa_device *e_dev, int rid);
|
||||
static struct resvaddr * eisa_find_ioaddr(struct eisa_device *e_dev, int rid);
|
||||
|
||||
@ -302,8 +303,9 @@ eisa_print_child(device_t dev, device_t child)
|
||||
}
|
||||
|
||||
rid = 0;
|
||||
while ((irq = eisa_find_irq(e_dev, rid++)) != -1) {
|
||||
snprintf(buf, sizeof(buf), "irq %d", irq);
|
||||
while ((irq = eisa_find_irq(e_dev, rid++)) != NULL) {
|
||||
snprintf(buf, sizeof(buf), "irq %d (%s)", irq->irq_no,
|
||||
(irq->irq_trigger ? "level" : "edge"));
|
||||
eisa_reg_print(child, buf,
|
||||
((rid == 1) ? &separator : NULL), &column);
|
||||
}
|
||||
@ -315,7 +317,7 @@ eisa_print_child(device_t dev, device_t child)
|
||||
return (retval);
|
||||
}
|
||||
|
||||
static int
|
||||
static struct irq_node *
|
||||
eisa_find_irq(struct eisa_device *e_dev, int rid)
|
||||
{
|
||||
int i;
|
||||
@ -327,9 +329,9 @@ eisa_find_irq(struct eisa_device *e_dev, int rid)
|
||||
;
|
||||
|
||||
if (irq)
|
||||
return irq->irq_no;
|
||||
return (irq);
|
||||
else
|
||||
return -1;
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
static struct resvaddr *
|
||||
@ -364,6 +366,7 @@ static int
|
||||
eisa_read_ivar(device_t dev, device_t child, int which, u_long *result)
|
||||
{
|
||||
struct eisa_device *e_dev = device_get_ivars(child);
|
||||
struct irq_node *irq;
|
||||
|
||||
switch (which) {
|
||||
case EISA_IVAR_SLOT:
|
||||
@ -376,7 +379,11 @@ eisa_read_ivar(device_t dev, device_t child, int which, u_long *result)
|
||||
|
||||
case EISA_IVAR_IRQ:
|
||||
/* XXX only first irq */
|
||||
*result = eisa_find_irq(e_dev, 0);
|
||||
if ((irq = eisa_find_irq(e_dev, 0)) != NULL) {
|
||||
*result = irq->irq_no;
|
||||
} else {
|
||||
*result = -1;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -406,11 +413,16 @@ eisa_alloc_resource(device_t dev, device_t child, int type, int *rid,
|
||||
switch (type) {
|
||||
case SYS_RES_IRQ:
|
||||
if (isdefault) {
|
||||
int irq = eisa_find_irq(e_dev, *rid);
|
||||
if (irq == -1)
|
||||
struct irq_node * irq = eisa_find_irq(e_dev, *rid);
|
||||
if (irq == NULL)
|
||||
return 0;
|
||||
start = end = irq;
|
||||
start = end = irq->irq_no;
|
||||
count = 1;
|
||||
if (irq->irq_trigger == EISA_TRIGGER_LEVEL) {
|
||||
flags |= RF_SHAREABLE;
|
||||
} else {
|
||||
flags &= ~RF_SHAREABLE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@ -466,7 +478,7 @@ eisa_release_resource(device_t dev, device_t child, int type, int rid,
|
||||
|
||||
switch (type) {
|
||||
case SYS_RES_IRQ:
|
||||
if (eisa_find_irq(e_dev, rid) == -1)
|
||||
if (eisa_find_irq(e_dev, rid) == NULL)
|
||||
return EINVAL;
|
||||
break;
|
||||
|
||||
@ -496,10 +508,10 @@ eisa_release_resource(device_t dev, device_t child, int type, int rid,
|
||||
}
|
||||
|
||||
int
|
||||
eisa_add_intr(device_t dev, int irq)
|
||||
eisa_add_intr(device_t dev, int irq, int trigger)
|
||||
{
|
||||
struct eisa_device *e_dev = device_get_ivars(dev);
|
||||
struct irq_node *irq_info;
|
||||
struct irq_node *irq_info;
|
||||
|
||||
irq_info = (struct irq_node *)malloc(sizeof(*irq_info), M_DEVBUF,
|
||||
M_NOWAIT);
|
||||
@ -507,6 +519,7 @@ eisa_add_intr(device_t dev, int irq)
|
||||
return (1);
|
||||
|
||||
irq_info->irq_no = irq;
|
||||
irq_info->irq_trigger = trigger;
|
||||
irq_info->idesc = NULL;
|
||||
TAILQ_INSERT_TAIL(&e_dev->ioconf.irqs, irq_info, links);
|
||||
return 0;
|
||||
|
@ -28,7 +28,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: eisaconf.h,v 1.17 1997/09/21 21:35:23 gibbs Exp $
|
||||
* $Id: eisaconf.h,v 1.18 1999/04/18 15:50:33 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef _I386_EISA_EISACONF_H_
|
||||
@ -53,6 +53,9 @@ enum eisa_device_ivars {
|
||||
EISA_IVAR_IRQ
|
||||
};
|
||||
|
||||
#define EISA_TRIGGER_EDGE 0x0
|
||||
#define EISA_TRIGGER_LEVEL 0x1
|
||||
|
||||
/*
|
||||
* Simplified accessors for isa devices
|
||||
*/
|
||||
@ -75,7 +78,7 @@ EISA_ACCESSOR(slot, SLOT, int)
|
||||
EISA_ACCESSOR(id, ID, eisa_id_t)
|
||||
EISA_ACCESSOR(irq, IRQ, eisa_id_t)
|
||||
|
||||
int eisa_add_intr __P((device_t, int));
|
||||
int eisa_add_intr __P((device_t, int, int));
|
||||
|
||||
#define RESVADDR_NONE 0x00
|
||||
#define RESVADDR_BITMASK 0x01 /* size is a mask of reserved
|
||||
|
@ -21,7 +21,7 @@
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: if_fea.c,v 1.15 1999/07/10 19:46:08 peter Exp $
|
||||
* $Id: if_fea.c,v 1.16 1999/07/31 00:43:48 mdodd Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -148,7 +148,7 @@ pdq_eisa_probe (dev)
|
||||
|
||||
eisa_add_iospace(dev, iobase, 0x200, RESVADDR_NONE);
|
||||
eisa_add_mspace(dev, maddr, msize, RESVADDR_NONE);
|
||||
eisa_add_intr(dev, irq);
|
||||
eisa_add_intr(dev, irq, EISA_TRIGGER_LEVEL);
|
||||
|
||||
return (0);
|
||||
}
|
||||
@ -196,7 +196,7 @@ pdq_eisa_attach (dev)
|
||||
|
||||
rid = 0;
|
||||
irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, RF_SHAREABLE | RF_ACTIVE);
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
|
||||
if (!irq) {
|
||||
device_printf(dev, "No, irq?!\n");
|
||||
|
@ -106,7 +106,8 @@ vx_eisa_probe(device_t dev)
|
||||
eisa_add_iospace(dev, port, VX_IOSIZE, RESVADDR_NONE);
|
||||
|
||||
/* Set irq */
|
||||
eisa_add_intr(dev, inw(iobase + VX_RESOURCE_CONFIG) >> 12);
|
||||
eisa_add_intr(dev, inw(iobase + VX_RESOURCE_CONFIG) >> 12,
|
||||
EISA_TRIGGER_EDGE);
|
||||
|
||||
return (0);
|
||||
}
|
||||
@ -119,7 +120,6 @@ vx_eisa_attach(device_t dev)
|
||||
struct resource *io = 0;
|
||||
struct resource *eisa_io = 0;
|
||||
struct resource *irq = 0;
|
||||
u_char level_intr;
|
||||
int rid;
|
||||
void *ih;
|
||||
|
||||
@ -149,8 +149,6 @@ vx_eisa_attach(device_t dev)
|
||||
|
||||
sc->vx_io_addr = rman_get_start(io);
|
||||
|
||||
level_intr = FALSE;
|
||||
|
||||
rid = 0;
|
||||
irq = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
|
||||
0, ~0, 1, RF_ACTIVE);
|
||||
|
Loading…
Reference in New Issue
Block a user