All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot-Users] [PATCH] Fix bugs in cmd_ide.c and cmd_scsi.c
@ 2007-03-29 11:59 Denis Peter
  2007-03-29 13:23 ` Wolfgang Denk
  0 siblings, 1 reply; 7+ messages in thread
From: Denis Peter @ 2007-03-29 11:59 UTC (permalink / raw)
  To: u-boot

Hello Wolfgang,

At 12:33 29.03.2007, you wrote:
>Dear Denis,
>
>in message <OF61C9A6C9.C4DFEC4B-ONC12572AD.002E7D48@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@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;
        }

^ permalink raw reply related	[flat|nested] 7+ messages in thread
* [U-Boot-Users] [PATCH] Fix bugs in cmd_ide.c and cmd_scsi.c
@ 2007-03-29  8:27 Denis Peter
  2007-03-29 10:33 ` Wolfgang Denk
  0 siblings, 1 reply; 7+ messages in thread
From: Denis Peter @ 2007-03-29  8:27 UTC (permalink / raw)
  To: u-boot

Hello,

At 11:23 28.03.2007, you wrote:
>Hi all,
> >
>...<snip>...
> > -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 <d.peter@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;
         }

^ permalink raw reply related	[flat|nested] 7+ messages in thread
* [U-Boot-Users] [PATCH] Fix bugs in cmd_ide.c and cmd_scsi.c
@ 2007-03-27 14:23 Denis Peter
  2007-03-28  9:23 ` Michael Tasche
  0 siblings, 1 reply; 7+ messages in thread
From: Denis Peter @ 2007-03-27 14:23 UTC (permalink / raw)
  To: u-boot

Fix bugs in diskboot, scsiboot and ide_read

Fix bug introduced by "Fix get_partition_info() parameter error in all
other calls" from 2005-03-04 in cmd_ide.c and cmd_scsi.c, which prevented
to use diskboot or scsiboot form another device than 0.
Fix bug introduced by "Use "void*" not "unsigned long *" for block dev
read_write pointers" introduced on 2007-02-20, which prevented to read
more than one block form IDE.

Signed-off-by: Denis Peter <d.peter@mpl.ch>

---
commit 4816c887ff56b0cc16b142f6fda921683989300e
tree 10339e77b60290529bd0da693af86eca58cac083
parent 44ba464b99001f8bd1c456a1e9d59726252f707a
author Denis Peter <d.peter@mpl.ch> Tue, 27 Mar 2007 16:09:52 +0000
committer Denis Peter <d.peter@mpl.ch> Tue, 27 Mar 2007 16:09:52 +0000

 common/cmd_ide.c  |    6 ++++--
 common/cmd_scsi.c |    2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/common/cmd_ide.c b/common/cmd_ide.c
index 2e185cc..5a1cb45 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 */
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;
 	}

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-04-02 11:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-29 11:59 [U-Boot-Users] [PATCH] Fix bugs in cmd_ide.c and cmd_scsi.c Denis Peter
2007-03-29 13:23 ` Wolfgang Denk
2007-04-02 11:43   ` Denis Peter
  -- strict thread matches above, loose matches on Subject: below --
2007-03-29  8:27 Denis Peter
2007-03-29 10:33 ` Wolfgang Denk
2007-03-27 14:23 Denis Peter
2007-03-28  9:23 ` Michael Tasche

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.