コード例 #1
0
static bus_addr_t
ida_v3_done(struct ida_softc *ida)
{
	bus_addr_t completed;

	completed = ida_inl(ida, R_DONE_FIFO);
	if (completed == -1) {
		return (0);			/* fifo is empty */
	}
	return (completed);
}
コード例 #2
0
static bus_addr_t
ida_v4_done(struct ida_softc *ida)
{
	bus_addr_t completed;

	completed = ida_inl(ida, R_42XX_REPLY);
	if (completed == -1)
		return (0);			/* fifo is empty */
	ida_outl(ida, R_42XX_REPLY, 0);		/* confirm read */
	return (completed);
}
コード例 #3
0
static void
ida_timeout(void *arg)
{
	struct ida_softc *ida;

	ida = (struct ida_softc *)arg;
	device_printf(ida->dev, "%s() qactive %d\n", __func__, ida->qactive);

	if (ida->flags & IDA_INTERRUPTS)
		device_printf(ida->dev, "IDA_INTERRUPTS\n");

	device_printf(ida->dev,	"\t   R_CMD_FIFO: %08x\n"
				"\t  R_DONE_FIFO: %08x\n"
				"\t   R_INT_MASK: %08x\n"
				"\t     R_STATUS: %08x\n"
				"\tR_INT_PENDING: %08x\n",
					ida_inl(ida, R_CMD_FIFO),
					ida_inl(ida, R_DONE_FIFO),
					ida_inl(ida, R_INT_MASK),
					ida_inl(ida, R_STATUS),
					ida_inl(ida, R_INT_PENDING));

	return;
}
コード例 #4
0
static bus_addr_t
ida_v1_done(struct ida_softc *ida)
{
    struct ida_hardware_qcb *hwqcb;
    bus_addr_t completed;
    u_int8_t status;

    if ((ida_inb(ida, R_EISA_SYSTEM_DOORBELL) & EISA_CHANNEL_BUSY) == 0)
        return (0);

    ida_outb(ida, R_EISA_SYSTEM_DOORBELL, EISA_CHANNEL_BUSY);
    completed = ida_inl(ida, R_EISA_COMPLETE_ADDR);
    status = ida_inb(ida, R_EISA_LIST_STATUS);
    ida_outb(ida, R_EISA_LOCAL_DOORBELL, EISA_CHANNEL_CLEAR);

    if (completed != 0) {
        hwqcb = (struct ida_hardware_qcb *)
                ((bus_addr_t)ida->hwqcbs +
                 ((completed & ~3) - ida->hwqcb_busaddr));
        hwqcb->req.error = status;
    }

    return (completed);
}
コード例 #5
0
static int
ida_v2_int_pending(struct ida_softc *ida)
{
    return (ida_inl(ida, R_INT_PENDING));
}
コード例 #6
0
static bus_addr_t
ida_v2_done(struct ida_softc *ida)
{
    return (ida_inl(ida, R_DONE_FIFO));
}
コード例 #7
0
static int
ida_v2_fifo_full(struct ida_softc *ida)
{
    return (ida_inl(ida, R_CMD_FIFO) == 0);
}
コード例 #8
0
static int
ida_v4_fifo_full(struct ida_softc *ida)
{
	return (ida_inl(ida, R_42XX_REQUEST) != 0);
}
コード例 #9
0
static int
ida_v4_int_pending(struct ida_softc *ida)
{
	return (ida_inl(ida, R_42XX_STATUS) & STATUS_42XX_INT_PENDING);
}