Tidy up SD driver - delete dead code and change names to make it look more
authorNeal Andrew Crook <neal@pippaluk.org.uk>
Thu, 19 May 2016 18:44:11 +0000 (19:44 +0100)
committerNeal Andrew Crook <neal@pippaluk.org.uk>
Thu, 19 May 2016 18:44:11 +0000 (19:44 +0100)
like the common one.

Kernel/platform-multicomp09/devsdc.c
Kernel/platform-multicomp09/devsdc.h
Kernel/platform-multicomp09/sdc.s

index a5994a5..29dd59f 100644 (file)
 #define SDLBA1  (0xffdb)
 #define SDLBA2  (0xffdc)
 
-#define SDC_IDLE_STAT (0x80)
+#define SD_IDLE_STAT (0x80)
 
-#define SDC_WR_CMD (0x01)
-#define SDC_RD_CMD (0x00)
+#define SD_WR_CMD (0x01)
+#define SD_RD_CMD (0x00)
 
 
-#define sdc_reg_ctl  *((volatile uint8_t *)SDCTL)
-#define sdc_reg_data *((volatile uint8_t *)SDDATA)
-#define sdc_reg_lba0 *((volatile uint8_t *)SDLBA0)
-#define sdc_reg_lba1 *((volatile uint8_t *)SDLBA1)
-#define sdc_reg_lba2 *((volatile uint8_t *)SDLBA2)
+#define sd_reg_ctl  *((volatile uint8_t *)SDCTL)
+#define sd_reg_data *((volatile uint8_t *)SDDATA)
+#define sd_reg_lba0 *((volatile uint8_t *)SDLBA0)
+#define sd_reg_lba1 *((volatile uint8_t *)SDLBA1)
+#define sd_reg_lba2 *((volatile uint8_t *)SDLBA2)
 
 
 /* a "simple" internal function pointer to which transfer
    routine to use.
 */
-typedef void (*sdc_transfer_function_t)( void *addr);
+typedef void (*sd_transfer_function_t)( void *addr);
 
 
 /* blkdev method: flush drive */
-int devsdc_flush( void )
+int devsd_flush( void )
 {
        return 0;
 }
 
-/* [NAC HACK 2016Apr26] devsd version is called devsd_transfer_sector */
 
 /* blkdev method: transfer sectors */
-uint8_t devsdc_transfer(void)
+uint8_t devsd_transfer_sector(void)
 {
        uint8_t *ptr;                  /* points to 32 bit lba in blk op */
-       sdc_transfer_function_t fptr;  /* holds which xfer routine we want */
+       sd_transfer_function_t fptr;   /* holds which xfer routine we want */
         int i;
         uint8_t tmp;
 
        /* wait for drive to go non-busy after previous command
           (if any)
        */
-       while (sdc_reg_ctl != SDC_IDLE_STAT) {
+       while (sd_reg_ctl != SD_IDLE_STAT) {
        }
 
        /* [NAC HACK 2016May11] should not need this but real hardware seems
@@ -75,7 +74,7 @@ uint8_t devsdc_transfer(void)
           without it and with seemingly equivalent code
        */
        for (i=0; i<1000; i++) {
-               tmp = sdc_reg_ctl;
+               tmp = sd_reg_ctl;
        }
 
        /* load up block address. It's stored as a 32-bit value but we
@@ -83,19 +82,19 @@ uint8_t devsdc_transfer(void)
           24-bit address range
        */
        ptr=((uint8_t *)(&blk_op.lba))+1;
-       sdc_reg_lba2 = ptr[0]; /* MS byte of 24-bit block address */
-       sdc_reg_lba1 = ptr[1];
-       sdc_reg_lba0 = ptr[2];
+       sd_reg_lba2 = ptr[0]; /* MS byte of 24-bit block address */
+       sd_reg_lba1 = ptr[1];
+       sd_reg_lba0 = ptr[2];
 
 
        /* send the command and set up the subroutine pointer */
        if( blk_op.is_read ){
-               sdc_reg_ctl = SDC_RD_CMD;
-               fptr = devsdc_read;
+               sd_reg_ctl = SD_RD_CMD;
+               fptr = devsd_read;
        }
        else{
-               sdc_reg_ctl = SDC_WR_CMD;
-               fptr = devsdc_write;
+               sd_reg_ctl = SD_WR_CMD;
+               fptr = devsd_write;
        }
 
        /* do the low-level data transfer (512 bytes) */
@@ -106,43 +105,33 @@ uint8_t devsdc_transfer(void)
 }
 
 __attribute__((section(".discard")))
-/* Returns true if SDC hardware seems to exist */
-bool devsdc_exist()
+/* Returns true if SD hardware seems to exist */
+bool devsd_exist()
 {
-       /* Only way to boot is through SDC so it must
+       /* Only way to boot is through SD so it must
           exist!
        */
        return 1;
 }
 
 __attribute__((section(".discard")))
-/* Call this to initialize SDC/blkdev interface */
+/* Call this to initialize SD/blkdev interface */
 void devsd_init()
 {
        blkdev_t *blk;
 
-       kputs("SDC: ");
-       if( devsdc_exist() ){
-               /* register first drive */
+       kputs("SD: ");
+       if( devsd_exist() ){
+               /* there is only 1 drive. Register it. */
                blk=blkdev_alloc();
                blk->driver_data = 0 ;
-               blk->transfer = devsdc_transfer;
-               blk->flush = devsdc_flush;
+               blk->transfer = devsd_transfer_sector;
+               blk->flush = devsd_flush;
                blk->drive_lba_count=-1;
                blk->drive_lba_count=32764; /* [NAC HACK 2016Apr26]  hack!! */
-
-               /* by inspection of dev/devsd_discard.c, vital piece missing from this code:
-                  blkdev_scan(blk, 0)  - from dev/blkdev.c
-               */
                blkdev_scan(blk, 0);
 
-               /* register second drive */
-               /*              blk=blkdev_alloc();
-               blk->driver_data = 1 ;
-               blk->transfer = devsdc_transfer;
-               blk->flush = devsdc_flush;
-               blk->drive_lba_count=-1; */
-               kputs("Ok.\n");
+               kputs("ok.\n");
        }
        else kprintf("Not Found.\n");
 }
index b0f1e83..7a848d6 100644 (file)
@@ -1,4 +1,4 @@
 
 
-void devsdc_read( char *addr );
-void devsdc_write( char *addr );
+void devsd_read( char *addr );
+void devsd_write( char *addr );
index 9183aea..878ebc8 100644 (file)
@@ -1,13 +1,13 @@
 ;;;
-;;;  Multicomp SDC Driver
+;;;  multicomp09 SD Driver
 ;;;
 
 ;;; imported
        .globl blk_op           ; blk operation arguments
 
 ;;; exported
-       .globl _devsdc_write
-       .globl _devsdc_read
+       .globl _devsd_write
+       .globl _devsd_read
 
 
 ;;; multicomp09 hw registers
@@ -26,7 +26,7 @@ SDLBA2         equ $FFDC      ; not used here
 ;;; entry: x=data source
 ;;; can corrupt: a, b, cc, x
 ;;; must preserve: y, u
-_devsdc_write
+_devsd_write
        pshs    y
        ldy     #512            ; 512 bytes
 WrBiz  lda     SDCTL
@@ -46,7 +46,7 @@ WrBiz lda     SDCTL
 ;;; entry: x=data destination
 ;;; can corrupt: a, b, cc, x
 ;;; must preserve: y, u
-_devsdc_read
+_devsd_read
        pshs    y
        ldy     #512            ; 512 bytes
 RdBiz  lda     SDCTL