coco3: add ioctl for dw_transaction.
authorBrett Gordon <beretta42@gmail.com>
Fri, 3 Jun 2016 13:07:24 +0000 (09:07 -0400)
committerBrett Gordon <beretta42@gmail.com>
Sun, 12 Jun 2016 16:50:16 +0000 (12:50 -0400)
Kernel/dev/devdw.c
Kernel/dev/devdw.h
Kernel/platform-coco3/devices.c
Library/libs/Makefile.6809

index c83e37a..4ddca24 100644 (file)
@@ -2,6 +2,7 @@
 #include <kdata.h>
 #include <printf.h>
 #include <devdw.h>
+#include <drivewire.h>
 
 #define DW_READ                0
 #define DW_WRITE       1
@@ -106,3 +107,16 @@ int dw_write(uint8_t minor, uint8_t rawflag, uint8_t flag)
     return dw_transfer(minor, false, rawflag);
 }
 
+int dw_ioctl(uint8_t minor, uarg_t request, char *data)
+{
+       struct dw_trans s;
+       used( minor );
+
+       if( request != DRIVEWIREC_TRANS )
+               return -1;
+       if( uget( data, &s, sizeof(struct dw_trans) ) )
+               return -1;
+
+       return dw_transaction( s.sbuf, s.sbufz, s.rbuf, s.rbufz, 1 );
+       
+}
index 3ec0a00..5ef7275 100644 (file)
@@ -5,6 +5,7 @@
 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);
+int dw_ioctl(uint8_t minor, uarg_t request, char *data);
 
 /* low level interface */
 uint8_t dw_reset(void);
index 5923b2d..1d5ae7a 100644 (file)
@@ -29,7 +29,7 @@ struct devsw dev_tab[] =  /* The device driver switch table */
   {  nxio_open,     no_close,    no_rdwr,   no_rdwr,   no_ioctl },
   {  nxio_open,     no_close,    no_rdwr,   no_rdwr,   no_ioctl },
   /* /dev/dw   Drivewire */
-  {  dw_open,       no_close,    dw_read,   dw_write,  no_ioctl },
+  {  dw_open,       no_close,    dw_read,   dw_write,  dw_ioctl },
 };
 
 bool validdev(uint16_t dev)
index 81d3964..878e22c 100644 (file)
@@ -8,7 +8,7 @@ CC_OPT = -c -Os -I../include -I../include/6502
 CC_NOOPT = $(CC_OPT)
 ASM_OPT = -o
 # copied in from kernel tree
-KRN_HEADERS = userstructs.h
+KRN_HEADERS = userstructs.h drivewire.h
 KRN_HEADERS_SRC = $(addprefix ../../Kernel/include/,$(KRN_HEADERS))
 KRN_HEADERS_COPY = $(addprefix ../include/sys/,$(KRN_HEADERS))
 SRC_CRT0 = crt0_$(PLATFORM).s crt0nostdio_$(PLATFORM).s