typedef union { int ioport; volatile char *maddr; } bus_space_handle_t;
|
typedef union { int ioport; volatile char *maddr; } bus_space_handle_t;
|
struct scb { unsigned short *hscb; };
|
struct scb { unsigned short *hscb; };
|
struct ahd_softc
|
struct ahd_softc
|
{
|
{
|
int tags[2];
|
int tags[2];
|
bus_space_handle_t bshs[2];
|
bus_space_handle_t bshs[2];
|
int dst_mode;
|
int dst_mode;
|
int src_mode;
|
int src_mode;
|
int flags;
|
int flags;
|
};
|
};
|
void outb(int, int);
|
void outb(int, int);
|
|
|
int foo_inb(struct ahd_softc*);
|
int foo_inb(struct ahd_softc*);
|
int foo_int_int (int, int);
|
int foo_int_int (int, int);
|
int ahd_inb(struct ahd_softc*);
|
int ahd_inb(struct ahd_softc*);
|
int ahd_scb_active_in_fifo (void);
|
int ahd_scb_active_in_fifo (void);
|
|
|
void ahd_flush_qoutfifo (struct ahd_softc *ahd, struct scb *scb)
|
void ahd_flush_qoutfifo (struct ahd_softc *ahd, struct scb *scb)
|
{
|
{
|
int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;
|
int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;
|
int bb, p;
|
int bb, p;
|
|
|
if (ahd->src_mode == 1)
|
if (ahd->src_mode == 1)
|
{ int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;}
|
{ int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;}
|
foo_int_int (ahd->src_mode, ahd->dst_mode);
|
foo_int_int (ahd->src_mode, ahd->dst_mode);
|
p = 1;
|
p = 1;
|
if (ahd->src_mode == 2 && ahd->dst_mode == p)
|
if (ahd->src_mode == 2 && ahd->dst_mode == p)
|
{
|
{
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
}
|
}
|
ahd->src_mode = 1;
|
ahd->src_mode = 1;
|
ahd->dst_mode = 2;
|
ahd->dst_mode = 2;
|
while ((ahd_inb (ahd) & 0x01) != 0)
|
while ((ahd_inb (ahd) & 0x01) != 0)
|
{
|
{
|
p = 1;
|
p = 1;
|
if (ahd->src_mode == 2 && ahd->dst_mode == p)
|
if (ahd->src_mode == 2 && ahd->dst_mode == p)
|
{
|
{
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
}
|
}
|
ahd->src_mode = 1;
|
ahd->src_mode = 1;
|
ahd->dst_mode = 2;
|
ahd->dst_mode = 2;
|
if (ahd_scb_active_in_fifo () == 0)
|
if (ahd_scb_active_in_fifo () == 0)
|
continue;
|
continue;
|
p = 1;
|
p = 1;
|
if (ahd->src_mode == 2 && ahd->dst_mode == p)
|
if (ahd->src_mode == 2 && ahd->dst_mode == p)
|
{
|
{
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
}
|
}
|
ahd->src_mode = 1;
|
ahd->src_mode = 1;
|
ahd->dst_mode = 2;
|
ahd->dst_mode = 2;
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if ((ahd->flags & 1) != 0)
|
if ((ahd->flags & 1) != 0)
|
foo_inb (ahd);
|
foo_inb (ahd);
|
if ((ahd->flags & 1) != 0)
|
if ((ahd->flags & 1) != 0)
|
foo_inb (ahd);
|
foo_inb (ahd);
|
if ((ahd->flags & 1) != 0)
|
if ((ahd->flags & 1) != 0)
|
foo_inb (ahd);
|
foo_inb (ahd);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if ((ahd->flags & 1) != 0)
|
if ((ahd->flags & 1) != 0)
|
foo_inb (ahd);
|
foo_inb (ahd);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
bb = (*(scb->hscb));
|
bb = (*(scb->hscb));
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
bb = (*(scb->hscb));
|
bb = (*(scb->hscb));
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
}
|
}
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
p = 1;
|
p = 1;
|
if (ahd->src_mode == 2 && ahd->dst_mode == p)
|
if (ahd->src_mode == 2 && ahd->dst_mode == p)
|
{
|
{
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
}
|
}
|
ahd->src_mode = 1;
|
ahd->src_mode = 1;
|
ahd->dst_mode = 2;
|
ahd->dst_mode = 2;
|
if (ahd->src_mode == 2 && ahd->dst_mode == dst)
|
if (ahd->src_mode == 2 && ahd->dst_mode == dst)
|
{
|
{
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
|
outb (1, ahd->bshs[0].ioport );
|
outb (1, ahd->bshs[0].ioport );
|
}
|
}
|
ahd->src_mode = 1;
|
ahd->src_mode = 1;
|
ahd->dst_mode = 2;
|
ahd->dst_mode = 2;
|
ahd->flags |= 1;
|
ahd->flags |= 1;
|
}
|
}
|
|
|