dragon: use the version of devdw in the dev directory
authorAlan Cox <alan@linux.intel.com>
Mon, 1 Jun 2015 19:49:13 +0000 (20:49 +0100)
committerAlan Cox <alan@linux.intel.com>
Mon, 1 Jun 2015 19:49:13 +0000 (20:49 +0100)
Kernel/platform-dragon/Makefile
Kernel/platform-dragon/devdw.c [deleted file]
Kernel/platform-dragon/devdw.h [deleted file]

index 54431a2..bc85be1 100644 (file)
@@ -1,7 +1,9 @@
 
-CSRCS = devlpr.c devtty.c devfd.c devdw.c
+CSRCS = devlpr.c devtty.c devfd.c
 CSRCS += devices.c main.c libc.c
 
+DSRCS = ../dev/devdw.c
+
 ASRCS = p6809.s crt0.s drivewire.s
 ASRCS += tricks.s commonmem.s usermem_sam.s floppy.s
 
@@ -9,6 +11,8 @@ COBJS = $(CSRCS:.c=$(BINEXT))
 AOBJS = $(ASRCS:.s=$(BINEXT))
 OBJS  = $(COBJS) $(AOBJS)
 
+CROSS_CCOPTS += -I../dev/
+
 JUNK = $(CSRCS:.c=.o) $(ASRCS:.s=.o) \
        d64_1.decb d64_1.rom d64_2.rom cart1.rom cart2.rom
 
@@ -17,6 +21,9 @@ all:  $(OBJS)
 $(COBJS): %$(BINEXT): %.c
        $(CROSS_CC) $(CROSS_CCOPTS) $(CROSS_CC_SEG2) -c $<
 
+$(DOBJS): %$(BINEXT): ../dev/%.c
+       $(CROSS_CC) $(CROSS_CCOPTS) $(CROSS_CC_SEG2) -c $<
+
 $(AOBJS): %$(BINEXT): %.s
        $(CROSS_AS) $(ASOPTS) $< -o $*.o
 
diff --git a/Kernel/platform-dragon/devdw.c b/Kernel/platform-dragon/devdw.c
deleted file mode 100644 (file)
index 0034a7d..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-#include <kernel.h>
-#include <kdata.h>
-#include <printf.h>
-#include <devdw.h>
-
-#define MAX_DW 4       /* can be 255 */
-
-#define DW_READ                0
-#define DW_WRITE       1
-
-static uint8_t dw_tab[MAX_DW];
-
-/*
- *     Block device glue for DriveWire
- *
- *     DriveWire uses 256 byte sector transfers
- */
-
-static int dw_transfer(uint8_t minor, bool is_read, uint8_t rawflag)
-{
-    blkno_t block;
-    uint16_t dptr;
-    int ct = 0;
-    int tries;
-    uint8_t err;
-    uint8_t *driveptr = dw_tab + minor;
-    uint8_t cmd[5];
-    irqflags_t irq;
-
-    if(rawflag)
-        goto bad2;
-
-    dptr = (uint16_t)udata.u_buf->bf_data;
-    block = udata.u_buf->bf_blk;
-
-//    kprintf("Issue command: drive %d\n", minor);
-    /* maybe mimicking floppy driver more than needed? */
-    cmd[0] = is_read ? DW_READ : DW_WRITE;
-    cmd[1] = block >> 7;       /* 2 sectors per block */
-    cmd[2] = (block << 1) & 0xFF;
-    cmd[3] = dptr >> 8;
-    cmd[4] = dptr & 0xFF;
-    *driveptr = minor; /* pass minor (drive number) through here for now */
-        
-    while (ct < 2) {
-        for (tries = 0; tries < 4 ; tries++) {
-            // kprintf("dw_operation on block %d ct %d\n", block, ct);
-            irq = di(); /* for now block interrupts for whole operation */
-            err = dw_operation(cmd, driveptr);
-            irqrestore(irq);
-            if (err == 0)
-                break;
-            if (tries > 1)
-                dw_reset(driveptr);
-        }
-        /* FIXME: should we try the other half and then bail out ? */
-        if (tries == 3)
-            goto bad;
-        cmd[3]++;      /* Move on 256 bytes in the buffer */
-        cmd[2]++;      /* Next sector for 2nd block */
-        ct++;
-    }
-    return 1;
-bad:
-    kprintf("dw%d: error %x\n", minor, err);
-bad2:
-    udata.u_error = EIO;
-    return -1;
-}
-
-/* FIXME: for bit-banger transport (not Becker) we should set up
-   the PIA at some point too */
-
-int dw_open(uint8_t minor, uint16_t flag)
-{
-    if(minor >= MAX_DW) {
-        udata.u_error = ENODEV;
-        return -1;
-    }
-    return 0;
-}
-
-int dw_read(uint8_t minor, uint8_t rawflag, uint8_t flag)
-{
-    return dw_transfer(minor, true, rawflag);
-}
-
-int dw_write(uint8_t minor, uint8_t rawflag, uint8_t flag)
-{
-    return dw_transfer(minor, false, rawflag);
-}
-
diff --git a/Kernel/platform-dragon/devdw.h b/Kernel/platform-dragon/devdw.h
deleted file mode 100644 (file)
index d7b9358..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef __DEVDW_DOT_H__
-#define __DEVDW_DOT_H__
-
-/* public interface */
-int dw_read(uint8_t minor, uint8_t rawflag, uint8_t flag);
-int dw_write(uint8_t minor, uint8_t rawflag, uint8_t flag);
-int dw_open(uint8_t minor, uint16_t flag);
-
-/* low level interface */
-uint8_t dw_reset(uint8_t *drive);
-uint8_t dw_operation(uint8_t *cmd, uint8_t *drive);
-
-#endif /* __DEVDW_DOT_H__ */
-