From mboxrd@z Thu Jan 1 00:00:00 1970 From: Denis Peter Date: Thu, 29 Mar 2007 10:27:11 +0200 Subject: [U-Boot-Users] [PATCH] Fix bugs in cmd_ide.c and cmd_scsi.c Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello, At 11:23 28.03.2007, you wrote: >Hi all, > > >...... > > -ulong ide_read (int device, lbaint_t blknr, ulong blkcnt, void *buffer) > > +ulong ide_read (int device, lbaint_t blknr, ulong blkcnt, void *vbuffer) > > { > > + ulong *buffer = (ulong *)vbuffer; > > ulong n = 0; > > unsigned char c; > > unsigned char pwrsave=0; /* power save */ > >it seems to me, that the ide_write function will also need this fix. yes, this one has slipped my attention, thank you for pointing this out. Below the modified patch. With best regards, Denis Fix bugs in cmd_ide.c and scsi_cmd.c. These bugs prevented to read/write more than one block from/to IDE drives, and didn't allow to use "diskboot" and "scsiboot" to boot from another device than device 0. Signed-off-by: Denis Peter common/cmd_ide.c | 9 ++++++--- common/cmd_scsi.c | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/common/cmd_ide.c b/common/cmd_ide.c index 2e185cc..ba984c3 100644 --- a/common/cmd_ide.c +++ b/common/cmd_ide.c @@ -423,7 +423,8 @@ int do_diskboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) } part = simple_strtoul(++ep, NULL, 16); } - if (get_partition_info (ide_dev_desc, part, &info)) { + if (get_partition_info (&ide_dev_desc[dev], part, &info)) { + printf ("error reading partinfo\n"); SHOW_BOOT_PROGRESS (-1); return 1; } @@ -1233,8 +1234,9 @@ static void ide_ident (block_dev_desc_t *dev_desc) /* ------------------------------------------------------------------------- */ -ulong ide_read (int device, lbaint_t blknr, ulong blkcnt, void *buffer) +ulong ide_read (int device, lbaint_t blknr, ulong blkcnt, void *vbuffer) { + ulong *buffer = (ulong *)vbuffer; ulong n = 0; unsigned char c; unsigned char pwrsave=0; /* power save */ @@ -1353,8 +1355,9 @@ IDE_READ_E: /* ------------------------------------------------------------------------- */ -ulong ide_write (int device, lbaint_t blknr, ulong blkcnt, void *buffer) +ulong ide_write (int device, lbaint_t blknr, ulong blkcnt, void *vbuffer) { + ulong *buffer = (ulong *)vbuffer; ulong n = 0; unsigned char c; #ifdef CONFIG_LBA48 diff --git a/common/cmd_scsi.c b/common/cmd_scsi.c index da36ed9..00b84fa 100644 --- a/common/cmd_scsi.c +++ b/common/cmd_scsi.c @@ -248,7 +248,7 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) } part = simple_strtoul(++ep, NULL, 16); } - if (get_partition_info (scsi_dev_desc, part, &info)) { + if (get_partition_info (&scsi_dev_desc[dev], part, &info)) { printf("error reading partinfo\n"); return 1; }