[U-Boot-Users] [PATCH] Fix bugs in cmd_ide.c and cmd_scsi.c
    Denis Peter 
    d.peter at mpl.ch
       
    Thu Mar 29 13:59:37 CEST 2007
    
    
  
Hello Wolfgang,
At 12:33 29.03.2007, you wrote:
>Dear Denis,
>
>in message <OF61C9A6C9.C4DFEC4B-ONC12572AD.002E7D48 at mpl.loc> you wrote:
>> 
>> Fix bugs in cmd_ide.c and scsi_cmd.c.
>
>I tried to apply this patch but IO cannot because it has been mangled
>by your mailer - it wraps long lines.
I'm sorry, here the patch with correct mailer settings (hopefully)
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 <d.peter at mpl.ch>
 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;
        }
    
    
More information about the U-Boot
mailing list