[U-Boot-Users] ide support on arm

Wolfgang Denk wd at denx.de
Sun Feb 10 21:23:05 CET 2008


In message <47ADF0C3.7090808 at gandalf.sssup.it> you wrote:
> 
> > I can't find them. Please rebase and resubmit.
...
> this is the patch and how to use it:
> 
> +#define CONFIG_DOS_PARTITION
> +#define CFG_IDE_MAXBUS          1       /* max. 1 IDE bus               */
> +#define CFG_IDE_MAXDEVICE       1       /* max. 2 drives per IDE bus    */
> +
> +#define CFG_ATA_IDE0_OFFSET     (0)
> +
> +#define CFG_ATA_BASE_ADDR       (0x10000000)
> +
> +/* Offset for data I/O                  */
> +#define CFG_ATA_DATA_OFFSET     (0)
> +
> +/* Offset for normal register accesses  */
> +#define CFG_ATA_REG_OFFSET      (0)
> +
> +/* Offset for alternate registers       */
> +#define CFG_ATA_ALT_OFFSET      (0)
> +
> +/* Interval between 
> registers                                                */
> +#define CFG_ATA_STRIDE          (1<<21)
> +#define __io
> +

Sorry, this is not a patch.

> index c38be4f..5b0b738 100644
> --- a/common/cmd_ide.c
> +++ b/common/cmd_ide.c
> @@ -934,7 +934,14 @@ output_data(int dev, ulong *sect_buf, int words)
>  static void
>  output_data(int dev, ulong *sect_buf, int words)
>  {
> +#ifndef __ARM__
>         outsw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words<<1);
> +#else
> +       int i = words;
> +       u16 *buf = (u16 *) sect_buf;
> +       for (i=0; i < (words << 1); i++, buf++)
> +               outw(ATA_CURR_BASE(dev)+ATA_DATA_REG, buf);
> +#endif
>  }
>  #endif /* __PPC__ */
>  
> @@ -992,7 +999,14 @@ input_data(int dev, ulong *sect_buf, int words)
>  static void
>  input_data(int dev, ulong *sect_buf, int words)
>  {
> +#ifndef __ARM__
>         insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words << 1);
> +#else
> +       int i;
> +       volatile u16 *buf = (u16 *) sect_buf;
> +       for(i = 0; i < (words<<1); i++, buf++)
> +               *buf = inw(ATA_CURR_BASE(dev)+ATA_DATA_REG);
> +#endif
>  }
> 
> diff --git a/lib_arm/board.c b/lib_arm/board.c
> index 7e7a282..ddf4d5f 100644
> --- a/lib_arm/board.c
> +++ b/lib_arm/board.c
> @@ -435,6 +435,12 @@ extern void dm644x_eth_set_mac_addr (const u_int8_t 
> *addr);
>         reset_phy();
>  #endif
>  #endif
> +
> +#if defined(CONFIG_CMD_IDE)
> +       puts("IDE:   ");
> +       ide_init();
> +#endif
> +
>         /* main_loop() can return to retry autoboot, if so just run it 
> again. */
>         for (;;) {
>                 main_loop ();
> 

This has coding style violations, your signed-off-by line if missing,
and it was line-wrapped by your mailer.

Sorry, but please retry.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
There's no sense in being precise  when  you  don't  even  know  what
you're talking about.                             -- John von Neumann




More information about the U-Boot mailing list