# HG changeset patch # User asl # Date 1088759099 0 # Node ID 961151dc048ef90b7f4de118eddabf6f01c9c4c7 # Parent b1d2762b2eecfc88922dcc0ef67d2e11daf75437 * src/v85x_edb_v850_disk.c: Updated to work with the new DISK_CHANNEL macro definition and fixed read and write calls to honor the len parameter. diff --git a/packages/devs/disk/v85x/edb_v850/current/ChangeLog b/packages/devs/disk/v85x/edb_v850/current/ChangeLog --- a/packages/devs/disk/v85x/edb_v850/current/ChangeLog +++ b/packages/devs/disk/v85x/edb_v850/current/ChangeLog @@ -1,3 +1,9 @@ +2004-07-02 Savin Zlobec + + * src/v85x_edb_v850_disk.c: + Updated to work with the new DISK_CHANNEL macro definition + and fixed read and write calls to honor the len parameter. + 2004-01-15 Nick Garnett * src/v85x_edb_v850_disk.c: Removed block_pos arguments from read diff --git a/packages/devs/disk/v85x/edb_v850/current/src/v85x_edb_v850_disk.c b/packages/devs/disk/v85x/edb_v850/current/src/v85x_edb_v850_disk.c --- a/packages/devs/disk/v85x/edb_v850/current/src/v85x_edb_v850_disk.c +++ b/packages/devs/disk/v85x/edb_v850/current/src/v85x_edb_v850_disk.c @@ -149,10 +149,11 @@ static DISK_FUNS(cf_disk_funs, static cf_disk_info_t cf_disk_info##_number_ = { \ base: (volatile cyg_uint16 *)_base_, \ }; \ -static DISK_CHANNEL(cf_disk_channel##_number_, \ - cf_disk_funs, \ - cf_disk_info##_number_, \ - _mbr_supp_ \ +DISK_CHANNEL(cf_disk_channel##_number_, \ + cf_disk_funs, \ + cf_disk_info##_number_, \ + _mbr_supp_, \ + 4 \ ); \ BLOCK_DEVTAB_ENTRY(cf_disk_io##_number_, \ _name_, \ @@ -239,7 +240,7 @@ read_data(volatile cyg_uint16 *base, { cyg_uint16 data; HAL_READ_UINT16(base + 4, data); - *bufp++ = data; + if (i < len) *bufp++ = data; } CF_HW_BUSY_WAIT(); @@ -259,7 +260,8 @@ write_data(volatile cyg_uint16 *base, { cyg_uint16 data; - data = *bufp++; + if (i < len) data = *bufp++; + else data = 0x0000; HAL_WRITE_UINT16(base + 4, data); } @@ -307,7 +309,7 @@ cf_disk_init(struct cyg_devtab_entry *ta D(("CF(%p) error (%x)\n", info->base, get_error(info->base))); return false; } - read_data(info->base, id_buf, sizeof(cf_ata_identify_data_t), 0); + read_data(info->base, id_buf, sizeof(cf_ata_identify_data_t)); ata_id = (cf_ata_identify_data_t *)id_buf;