From: Neal Andrew Crook Date: Thu, 19 May 2016 18:44:11 +0000 (+0100) Subject: Tidy up SD driver - delete dead code and change names to make it look more X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=b94378edebd9d14b44165da1a02a12c59c6b5a2c;p=FUZIX.git Tidy up SD driver - delete dead code and change names to make it look more like the common one. --- diff --git a/Kernel/platform-multicomp09/devsdc.c b/Kernel/platform-multicomp09/devsdc.c index a5994a5d..29dd59fc 100644 --- a/Kernel/platform-multicomp09/devsdc.c +++ b/Kernel/platform-multicomp09/devsdc.c @@ -29,45 +29,44 @@ #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"); } diff --git a/Kernel/platform-multicomp09/devsdc.h b/Kernel/platform-multicomp09/devsdc.h index b0f1e838..7a848d66 100644 --- a/Kernel/platform-multicomp09/devsdc.h +++ b/Kernel/platform-multicomp09/devsdc.h @@ -1,4 +1,4 @@ -void devsdc_read( char *addr ); -void devsdc_write( char *addr ); +void devsd_read( char *addr ); +void devsd_write( char *addr ); diff --git a/Kernel/platform-multicomp09/sdc.s b/Kernel/platform-multicomp09/sdc.s index 9183aea3..878ebc8e 100644 --- a/Kernel/platform-multicomp09/sdc.s +++ b/Kernel/platform-multicomp09/sdc.s @@ -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