replace mg_ident_cpy to ata_id_c_string

Signed-off-by: unsik Kim <[email protected]>
---
  doc/README.mflash       |    1 +
  drivers/block/mg_disk.c |   67 ++++++++--------------------------------------
  2 files changed, 13 insertions(+), 55 deletions(-)

diff --git a/doc/README.mflash b/doc/README.mflash
index d0d0f7b..50133b4 100644
--- a/doc/README.mflash
+++ b/doc/README.mflash
@@ -17,6 +17,7 @@ So the rest mflash repersents mflash and gflash altogether.
  2-1. Board configuration
  * Mflash driver support
  #define CONFIG_CMD_MG_DISK
+#define CONFIG_LIBATA

  * Environment variable support (optional)
  #define CONFIG_ENV_IS_IN_MG_DISK
diff --git a/drivers/block/mg_disk.c b/drivers/block/mg_disk.c
index 1f9debe..113aa79 100644
--- a/drivers/block/mg_disk.c
+++ b/drivers/block/mg_disk.c
@@ -85,37 +85,6 @@ static void mg_dump_status (const char *msg, unsigned int 
stat, unsigned err)
        }
  }

-/*
- * copy src to dest, skipping leading and trailing blanks and null
- * terminate the string
- * "len" is the size of available memory including the terminating '\0'
- */
-static void mg_ident_cpy (unsigned char *dst, unsigned char *src,
-               unsigned int len)
-{
-       unsigned char *end, *last;
-
-       last = dst;
-       end  = src + len - 1;
-
-       /* reserve space for '\0' */
-       if (len < 2)
-               goto OUT;
-
-       /* skip leading white space */
-       while ((*src) && (src < end) && (*src == ' '))
-               ++src;
-
-       /* copy string, omitting trailing white space */
-       while ((*src) && (src < end)) {
-               *dst++ = *src;
-               if (*src++ != ' ')
-                       last = dst;
-       }
-OUT:
-       *last = '\0';
-}
-
  static unsigned int mg_wait (u32 expect, u32 msec)
  {
        u8 status;
@@ -158,46 +127,34 @@ static unsigned int mg_wait (u32 expect, u32 msec)

  static int mg_get_disk_id (void)
  {
-       u32 iobuf[(MG_SECTOR_SIZE / sizeof(u32))];
-       hd_driveid_t *iop = (hd_driveid_t *)iobuf;
+       u16 id[(MG_SECTOR_SIZE / sizeof(u16))];
+       hd_driveid_t *iop = (hd_driveid_t *)id;
        u32 i, err, res;
-       u16 *buff = (u16 *)iobuf;

        writeb(MG_CMD_ID, mg_base() + MG_REG_COMMAND);
        err = mg_wait(MG_REG_STATUS_BIT_DATA_REQ, 3000);
        if (err)
                return err;

-       for(i = 0; i < (MG_SECTOR_SIZE / sizeof(u32)) >> 1; i++)
-               buff[i] = readw(mg_base() + MG_BUFF_OFFSET + i * 2);
+       for(i = 0; i < (MG_SECTOR_SIZE / sizeof(u16)); i++)
+               id[i] = readw(mg_base() + MG_BUFF_OFFSET + i * 2);

        writeb(MG_CMD_RD_CONF, mg_base() + MG_REG_COMMAND);
        err = mg_wait(MG_STAT_READY, 3000);
        if (err)
                return err;

+       ata_swap_buf_le16(id, MG_SECTOR_SIZE / sizeof(u16));
+
        if((iop->field_valid & 1) == 0)
                return MG_ERR_TRANSLATION;

-       mg_ident_cpy((unsigned char*)mg_disk_dev.revision, iop->fw_rev,
-                       sizeof(mg_disk_dev.revision));
-       mg_ident_cpy((unsigned char*)mg_disk_dev.vendor, iop->model,
-                       sizeof(mg_disk_dev.vendor));
-       mg_ident_cpy((unsigned char*)mg_disk_dev.product, iop->serial_no,
-                       sizeof(mg_disk_dev.product));
-#ifdef __LITTLE_ENDIAN
-       /*
-        * firmware revision, model, and serial number have Big Endian Byte
-        * order in Word. Convert all three to little endian.
-        *
-        * See CF+ and CompactFlash Specification Revision 2.0:
-        * 6.2.1.6: Identify Drive, Table 39 for more details
-        */
-
-       strswab(mg_disk_dev.revision);
-       strswab(mg_disk_dev.vendor);
-       strswab(mg_disk_dev.product);
-#endif /* __LITTLE_ENDIAN */
+       ata_id_c_string(id, (unsigned char *)mg_disk_dev.revision,
+                       ATA_ID_FW_REV, sizeof(mg_disk_dev.revision));
+       ata_id_c_string(id, (unsigned char *)mg_disk_dev.vendor,
+                       ATA_ID_PROD, sizeof(mg_disk_dev.vendor));
+       ata_id_c_string(id, (unsigned char *)mg_disk_dev.product,
+                       ATA_ID_SERNO, sizeof(mg_disk_dev.product));

  #ifdef __BIG_ENDIAN
        iop->lba_capacity = (iop->lba_capacity << 16) |
-- 
1.5.6.6
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to