]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Some code cleanup for GCC 4.x
authorWolfgang Denk <wd@pollux.denx.de>
Sat, 11 Mar 2006 21:53:33 +0000 (22:53 +0100)
committerWolfgang Denk <wd@pollux.denx.de>
Sat, 11 Mar 2006 21:53:33 +0000 (22:53 +0100)
24 files changed:
CHANGELOG
board/at91rm9200dk/at45.c
board/at91rm9200dk/flash.c
board/cmc_pu2/load_sernum_ethaddr.c
board/delta/nand.c
board/lart/flash.c
board/lpd7a40x/flash.c
board/netstar/crcek
board/netstar/eeprom
board/netstar/flash.c
board/netstar/nand.c
board/shannon/flash.c
common/env_nand.c
cpu/arm920t/at91rm9200/i2c.c
drivers/dataflash.c
drivers/lan91c96.c
drivers/lan91c96.h
drivers/nand/nand_base.c
drivers/smc91111.c
drivers/smc91111.h
include/asm-arm/arch-arm720t/s3c4510b.h
lib_arm/armlinux.c
lib_arm/board.c
rtc/rs5c372.c

index df48e47af4864941907a16fc653d1a1cdbb26c78..964e2b1f55b732c198fd18ab8b5bff3fb6370dd3 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,8 @@
 Changes since U-Boot 1.1.4:
 ======================================================================
 
+* Some code cleanup for GCC 4.x
+
 * Fixes to support environment in NAND flash;
   enable NAND flash based environment for delta board.
 
index 3c0013216436433d439c67101fdbe4e549987b89..f886fe482010caaa507875a62963f25c188aec5e 100644 (file)
@@ -593,7 +593,7 @@ int AT91F_DataFlashRead(
                if (AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY) != DATAFLASH_OK)
                        return -1;
 
-               if (AT91F_DataFlashContinuousRead (pDataFlash, addr, buffer, SizeToRead) != DATAFLASH_OK)
+               if (AT91F_DataFlashContinuousRead (pDataFlash, addr, (uchar *)buffer, SizeToRead) != DATAFLASH_OK)
                        return -1;
 
                size -= SizeToRead;
index f6228ef03e4511de21daec2b6a62c72c4220a299..0513d61d73f2df9d211c39bbf0e2b481e85aef57 100644 (file)
@@ -393,8 +393,7 @@ outahere:
  * Copy memory to flash
  */
 
-volatile static int write_word (flash_info_t * info, ulong dest,
-                                                               ulong data)
+static int write_word (flash_info_t * info, ulong dest, ulong data)
 {
        volatile u16 *addr = (volatile u16 *) dest;
        ulong result;
@@ -409,7 +408,6 @@ volatile static int write_word (flash_info_t * info, ulong dest,
        if ((result & data) != data)
                return ERR_NOT_ERASED;
 
-
        /*
         * Disable interrupts which might cause a timeout
         * here. Remember that our exception vectors are
index 94aa30df96248897e8e93be2cf23d47a3b0a85b0..354566c05df7339b35adb28d7d7e744ea861ae22 100644 (file)
@@ -69,8 +69,8 @@ int i2c_read (unsigned char chip, unsigned int addr, int alen,
 void load_sernum_ethaddr (void)
 {
        struct manufacturer_data data;
-       unsigned char  serial [9];
-       unsigned char  ethaddr[18];
+       char  ethaddr[18];
+       char  serial [9];
        unsigned short chksum;
        unsigned char *p;
        unsigned short i, is, id;
index 50def59090600899cedaf8256c84207e54898aeb..c4df6e57eb7bf2628c3f7a41293c8b75aa04c748 100644 (file)
@@ -229,7 +229,7 @@ static void wait_us(unsigned long us)
        }
 }
 
-static void dfc_clear_nddb()
+static void dfc_clear_nddb(void)
 {
        NDCR &= ~NDCR_ND_RUN;
        wait_us(CFG_NAND_OTHER_TO);
@@ -263,7 +263,7 @@ static unsigned long dfc_wait_event(unsigned long event)
 }
 
 /* we don't always wan't to do this */
-static void dfc_new_cmd()
+static void dfc_new_cmd(void)
 {
        int retry = 0;
        unsigned long status;
@@ -398,7 +398,7 @@ static void dfc_cmdfunc(struct mtd_info *mtd, unsigned command,
        return;
 }
 
-static void dfc_gpio_init()
+static void dfc_gpio_init(void)
 {
        DFC_DEBUG2("Setting up DFC GPIO's.\n");
 
index 5232ed258614153ffd750a410d325f7df627bbb9..28c4531c0232f3818ed3baa7a3732731e0c26091 100644 (file)
@@ -348,7 +348,7 @@ outahere:
  * Copy memory to flash
  */
 
-volatile static int write_word (flash_info_t *info, ulong dest, ulong data)
+static int write_word (flash_info_t *info, ulong dest, ulong data)
 {
     vu_long *addr = (vu_long *)dest;
     ulong result;
index 2dfe37656fc1c112041488f6def5cc3a699ff9ed..d18720e5b20d2a6c6b81f57b54cbee41e2dd4dd4 100644 (file)
@@ -351,8 +351,7 @@ outahere:
  * Copy memory to flash
  */
 
-volatile static int write_word (flash_info_t * info, ulong dest,
-                                                               ulong data)
+static int write_word (flash_info_t * info, ulong dest, ulong data)
 {
        vu_long *addr = (vu_long *) dest;
        ulong result;
index 9593f893c816f4a2db8e3ec8db9eca91d04c2edb..491cceb2ed1cd8bf38ee7531dcee46fcf99bc3e3 100755 (executable)
Binary files a/board/netstar/crcek and b/board/netstar/crcek differ
index c30c98b72ce1d09c84f4e7b821cf1f4dfeac0386..e075eb4efd3c7fea6520d703cfb10274487482a6 100755 (executable)
Binary files a/board/netstar/eeprom and b/board/netstar/eeprom differ
index f555c0c0066e59a5db8042ad314cefae495c6bba..692c4167807c61f71a3d7846c1257105dcff09ed 100644 (file)
@@ -230,7 +230,7 @@ out:
  * Copy memory to flash
  */
 
-volatile static int write_hword(flash_info_t *info, ulong dest, ushort data)
+static int write_hword(flash_info_t *info, ulong dest, ushort data)
 {
        vu_short *addr = (vu_short *) dest;
        ushort result;
index e5b7f3346e1e8a22456eb316f6bf7aceb9417ee3..f470c1a01e05f72f5988188b0222356203e795c4 100644 (file)
@@ -48,10 +48,12 @@ static void netstar_nand_hwcontrol(struct mtd_info *mtd, int cmd)
 /*
  *     chip R/B detection
  */
+/***
 static int netstar_nand_ready(struct mtd_info *mtd)
 {
        return (*(volatile ushort *)GPIO_DATA_INPUT_REG) & 0x02;
 }
+***/
 
 void board_nand_init(struct nand_chip *nand)
 {
index 13c01d8351af6d16306cbef04cb9dd5c9b653f56..475b76b30bdcafee719199c02c917e712f8cbcb8 100644 (file)
@@ -315,7 +315,7 @@ outahere:
  * Copy memory to flash
  */
 
-volatile static int write_word (flash_info_t *info, ulong dest, ulong data)
+static int write_word (flash_info_t *info, ulong dest, ulong data)
 {
     vu_long *addr = (vu_long *)dest;
     ulong result;
index 4ae68c5a23e84892ed1580bffd06d1bafafb0038..dd27f7b629cdaf6ca813f6d19d89e256de0205e5 100644 (file)
@@ -112,7 +112,8 @@ int env_init(void)
  */
 int saveenv(void)
 {
-       int     total, ret = 0;
+       ulong total;
+       int ret = 0;
 
        puts ("Erasing Nand...");
        if (nand_erase(&nand_info[0], CFG_ENV_OFFSET, CFG_ENV_SIZE))
@@ -120,8 +121,7 @@ int saveenv(void)
 
        puts ("Writing to Nand... ");
        total = CFG_ENV_SIZE;
-       ret = nand_write(&nand_info[0], CFG_ENV_OFFSET, &total,
-                       (u_char*) env_ptr);
+       ret = nand_write(&nand_info[0], CFG_ENV_OFFSET, &total, (u_char*)env_ptr);
        if (ret || total != CFG_ENV_SIZE)
                return 1;
 
@@ -138,11 +138,11 @@ int saveenv(void)
 void env_relocate_spec (void)
 {
 #if !defined(ENV_IS_EMBEDDED)
-       int ret, total;
+       ulong total;
+       int ret;
 
        total = CFG_ENV_SIZE;
-       ret = nand_read(&nand_info[0], CFG_ENV_OFFSET, &total,
-                       (u_char*) env_ptr);
+       ret = nand_read(&nand_info[0], CFG_ENV_OFFSET, &total, (u_char*)env_ptr);
        if (ret || total != CFG_ENV_SIZE)
                return use_default();
 
index 2565998e484d7ed0f70a1ad2ee7ce762220990dd..826cea8e2641a7a6dc832bc955943cc403b3558f 100644 (file)
@@ -111,7 +111,7 @@ at91_xfer(unsigned char chip, unsigned int addr, int alen,
 int
 i2c_probe(unsigned char chip)
 {
-       char buffer[1];
+       unsigned char buffer[1];
 
        return at91_xfer(chip, 0, 0, buffer, 1, 1);
 }
@@ -191,7 +191,7 @@ i2c_init(int speed, int slaveaddr)
 
 uchar i2c_reg_read(uchar i2c_addr, uchar reg)
 {
-       char buf;
+       unsigned char buf;
 
        i2c_read(i2c_addr, reg, 1, &buf, 1);
 
index ded039578a488e6e9d184c34335bcd671c5af78a..17eb8597f8c26838f38b64db7c0a7cc20d1c8172 100644 (file)
@@ -174,8 +174,7 @@ void dataflash_print_info (void)
 /* Function Name       : AT91F_DataflashSelect                                         */
 /* Object              : Select the correct device                             */
 /*------------------------------------------------------------------------------*/
-AT91PS_DataFlash AT91F_DataflashSelect (AT91PS_DataFlash pFlash,
-                                                                               unsigned int *addr)
+AT91PS_DataFlash AT91F_DataflashSelect (AT91PS_DataFlash pFlash, unsigned long *addr)
 {
        char addr_valid = 0;
        int i;
@@ -291,7 +290,7 @@ int i,j, area1, area2, addr_valid = 0;
 /*------------------------------------------------------------------------------*/
 int read_dataflash (unsigned long addr, unsigned long size, char *result)
 {
-       int AddrToRead = addr;
+       unsigned long AddrToRead = addr;
        AT91PS_DataFlash pFlash = &DataFlashInst;
 
        pFlash = AT91F_DataflashSelect (pFlash, &AddrToRead);
@@ -313,7 +312,7 @@ int read_dataflash (unsigned long addr, unsigned long size, char *result)
 int write_dataflash (unsigned long addr_dest, unsigned long addr_src,
                     unsigned long size)
 {
-       int AddrToWrite = addr_dest;
+       unsigned long AddrToWrite = addr_dest;
        AT91PS_DataFlash pFlash = &DataFlashInst;
 
        pFlash = AT91F_DataflashSelect (pFlash, &AddrToWrite);
@@ -330,7 +329,7 @@ int write_dataflash (unsigned long addr_dest, unsigned long addr_src,
        if (AddrToWrite == -1)
                return -1;
 
-       return AT91F_DataFlashWrite (pFlash, (char *) addr_src, AddrToWrite, size);
+       return AT91F_DataFlashWrite (pFlash, (uchar *)addr_src, AddrToWrite, size);
 }
 
 
index bb03dae39c40722d0a03cf6001194caef8529d6d..a50c5f0abece39e993eb6454ede10f3363ed07af 100644 (file)
@@ -185,21 +185,21 @@ static int smc_rcv (void);
  . If an EEPROM is present it really should be consulted.
 */
 int smc_get_ethaddr(bd_t *bd);
-int get_rom_mac(char *v_rom_mac);
+int get_rom_mac(unsigned char *v_rom_mac);
 
 /* ------------------------------------------------------------
  * Internal routines
  * ------------------------------------------------------------
  */
 
-static char smc_mac_addr[] = { 0xc0, 0x00, 0x00, 0x1b, 0x62, 0x9c };
+static unsigned char smc_mac_addr[] = { 0xc0, 0x00, 0x00, 0x1b, 0x62, 0x9c };
 
 /*
  * This function must be called before smc_open() if you want to override
  * the default mac address.
  */
 
-void smc_set_mac_addr (const char *addr)
+void smc_set_mac_addr (const unsigned char *addr)
 {
        int i;
 
@@ -883,7 +883,7 @@ int smc_get_ethaddr (bd_t * bd)
        char *s = NULL;
        char *e = NULL;
        char *v_mac, es[] = "11:22:33:44:55:66";
-       uchar s_env_mac[64];
+       char s_env_mac[64];
        uchar v_env_mac[6];
        uchar v_rom_mac[6];
 
@@ -905,7 +905,7 @@ int smc_get_ethaddr (bd_t * bd)
 
        if (!env_present) {     /* if NO env */
                if (rom_valid) {        /* but ROM is valid */
-                       v_mac = v_rom_mac;
+                       v_mac = (char *)v_rom_mac;
                        sprintf (s_env_mac, "%02X:%02X:%02X:%02X:%02X:%02X",
                                 v_mac[0], v_mac[1], v_mac[2], v_mac[3],
                                 v_mac[4], v_mac[5]);
@@ -915,7 +915,7 @@ int smc_get_ethaddr (bd_t * bd)
                        return (-1);
                }
        } else {                /* good env, don't care ROM */
-               v_mac = v_env_mac;      /* always use a good env over a ROM */
+               v_mac = (char *)v_env_mac;      /* always use a good env over a ROM */
        }
 
        if (env_present && rom_valid) { /* if both env and ROM are good */
@@ -935,7 +935,7 @@ int smc_get_ethaddr (bd_t * bd)
                }
        }
        memcpy (bd->bi_enetaddr, v_mac, 6);     /* update global address to match env (allows env changing) */
-       smc_set_mac_addr (v_mac);       /* use old function to update smc default */
+       smc_set_mac_addr ((unsigned char *)v_mac); /* use old function to update smc default */
        PRINTK("Using MAC Address %02X:%02X:%02X:%02X:%02X:%02X\n", v_mac[0], v_mac[1],
                v_mac[2], v_mac[3], v_mac[4], v_mac[5]);
        return (0);
@@ -946,7 +946,7 @@ int smc_get_ethaddr (bd_t * bd)
  * Note, this has omly been tested for the OMAP730 P2.
  */
 
-int get_rom_mac (char *v_rom_mac)
+int get_rom_mac (unsigned char *v_rom_mac)
 {
 #ifdef HARDCODE_MAC    /* used for testing or to supress run time warnings */
        char hw_mac_addr[] = { 0x02, 0x80, 0xad, 0x20, 0x31, 0xb8 };
index b7d7455b9d083ee415fb2f351e12914b38c9e7cb..7d33a821f3c57a3ee147703c46187a09c3b7098a 100644 (file)
@@ -51,7 +51,7 @@
  * in order to override the default mac address.
  */
 
-void smc_set_mac_addr(const char *addr);
+void smc_set_mac_addr(const unsigned char *addr);
 
 
 /* I want some simple types */
index d91d90bfecc6192753294824ff486ce0d471e168..e0b406041fb7cd00b4ebdcabf167c3f838fc433e 100644 (file)
@@ -897,7 +897,7 @@ static int nand_write_page (struct mtd_info *mtd, struct nand_chip *this, int pa
        int     i, status;
        u_char  ecc_code[32];
        int     eccmode = oobsel->useecc ? this->eccmode : NAND_ECC_NONE;
-       int     *oob_config = oobsel->eccpos;
+       uint    *oob_config = oobsel->eccpos;
        int     datidx = 0, eccidx = 0, eccsteps = this->eccsteps;
        int     eccbytes = 0;
 
@@ -1119,7 +1119,8 @@ static int nand_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,
        u_char ecc_calc[32];
        u_char ecc_code[32];
        int eccmode, eccsteps;
-       int     *oob_config, datidx;
+       unsigned *oob_config;
+       int     datidx;
        int     blockcheck = (1 << (this->phys_erase_shift - this->page_shift)) - 1;
        int     eccbytes;
        int     compareecc = 1;
index 060da8ff2aaec74500bd5c400cdea60a42dd8f3c..84e243ddd5282e145b8e7f957ad3b8a305929ba0 100644 (file)
@@ -210,7 +210,7 @@ static int smc_rcv(void);
  . If an EEPROM is present it really should be consulted.
 */
 int smc_get_ethaddr(bd_t *bd);
-int get_rom_mac(char *v_rom_mac);
+int get_rom_mac(uchar *v_rom_mac);
 
 /*
  ------------------------------------------------------------
@@ -276,17 +276,23 @@ static inline void SMC_outb(byte value, dword offset)
 
 static inline void SMC_insw(dword offset, volatile uchar* buf, dword len)
 {
+       volatile word *p = (volatile word *)buf;
+
        while (len-- > 0) {
-               *((word*)buf)++ = SMC_inw(offset);
-               barrier(); *((volatile u32*)(0xc0000000));
+               *p++ = SMC_inw(offset);
+               barrier();
+               *((volatile u32*)(0xc0000000));
        }
 }
 
 static inline void SMC_outsw(dword offset, uchar* buf, dword len)
 {
+       volatile word *p = (volatile word *)buf;
+
        while (len-- > 0) {
-               SMC_outw(*((word*)buf)++, offset);
-               barrier(); *(volatile u32*)(0xc0000000);
+               SMC_outw(*p++, offset);
+               barrier();
+               *(volatile u32*)(0xc0000000);
        }
 }
 #endif  /* CONFIG_SMC_USE_IOFUNCS */
@@ -298,7 +304,7 @@ static char unsigned smc_mac_addr[6] = {0x02, 0x80, 0xad, 0x20, 0x31, 0xb8};
  * the default mac address.
  */
 
-void smc_set_mac_addr(const char *addr) {
+void smc_set_mac_addr(const unsigned char *addr) {
        int i;
 
        for (i=0; i < sizeof(smc_mac_addr); i++){
@@ -1524,7 +1530,8 @@ int smc_get_ethaddr (bd_t * bd)
 {
        int env_size, rom_valid, env_present = 0, reg;
        char *s = NULL, *e, *v_mac, es[] = "11:22:33:44:55:66";
-       uchar s_env_mac[64], v_env_mac[6], v_rom_mac[6];
+       char s_env_mac[64];
+       uchar v_env_mac[6], v_rom_mac[6];
 
        env_size = getenv_r ("ethaddr", s_env_mac, sizeof (s_env_mac));
        if ((env_size > 0) && (env_size < sizeof (es))) {       /* exit if env is bad */
@@ -1547,7 +1554,7 @@ int smc_get_ethaddr (bd_t * bd)
 
        if (!env_present) {     /* if NO env */
                if (rom_valid) {        /* but ROM is valid */
-                       v_mac = v_rom_mac;
+                       v_mac = (char *)v_rom_mac;
                        sprintf (s_env_mac, "%02X:%02X:%02X:%02X:%02X:%02X",
                                 v_mac[0], v_mac[1], v_mac[2], v_mac[3],
                                 v_mac[4], v_mac[5]);
@@ -1557,7 +1564,7 @@ int smc_get_ethaddr (bd_t * bd)
                        return (-1);
                }
        } else {                /* good env, don't care ROM */
-               v_mac = v_env_mac;      /* always use a good env over a ROM */
+               v_mac = (char *)v_env_mac;      /* always use a good env over a ROM */
        }
 
        if (env_present && rom_valid) { /* if both env and ROM are good */
@@ -1577,13 +1584,13 @@ int smc_get_ethaddr (bd_t * bd)
                }
        }
        memcpy (bd->bi_enetaddr, v_mac, 6);     /* update global address to match env (allows env changing) */
-       smc_set_mac_addr (v_mac);       /* use old function to update smc default */
+       smc_set_mac_addr ((uchar *)v_mac);      /* use old function to update smc default */
        PRINTK("Using MAC Address %02X:%02X:%02X:%02X:%02X:%02X\n", v_mac[0], v_mac[1],
                v_mac[2], v_mac[3], v_mac[4], v_mac[5]);
        return (0);
 }
 
-int get_rom_mac (char *v_rom_mac)
+int get_rom_mac (uchar *v_rom_mac)
 {
 #ifdef HARDCODE_MAC    /* used for testing or to supress run time warnings */
        char hw_mac_addr[] = { 0x02, 0x80, 0xad, 0x20, 0x31, 0xb8 };
index cf08582fbf21e8500a4c89644fbf217d260b6641..c3c33672abcf1f95a7e9fd204587ec8fba699326 100644 (file)
@@ -49,7 +49,7 @@
  * in order to override the default mac address.
  */
 
-void smc_set_mac_addr(const char *addr);
+void smc_set_mac_addr (const unsigned char *addr);
 
 
 /* I want some simple types */
index 517b1ada99bbedca8a9bdcbbab16928907895266..73a3b6d856bff813c8e12065e89238705f490e53 100644 (file)
@@ -267,8 +267,6 @@ struct _irq_handler {
        void (*m_func)( void *data);
 };
 
-extern struct _irq_handler IRQ_HANDLER[];
-
 #endif
 
 #endif /* __S3C4510_h */
index ca630b377e7093c9f195b4896bcd8b23429a343d..dba2ff70852f591b3b5fa3d20897b1efd2d8d342 100644 (file)
@@ -124,7 +124,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
                checksum = ntohl (hdr->ih_hcrc);
                hdr->ih_hcrc = 0;
 
-               if (crc32 (0, (char *) data, len) != checksum) {
+               if (crc32 (0, (unsigned char *) data, len) != checksum) {
                        printf ("Bad Header Checksum\n");
                        SHOW_BOOT_PROGRESS (-11);
                        do_reset (cmdtp, flag, argc, argv);
@@ -148,7 +148,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
                        ulong csum = 0;
 
                        printf ("   Verifying Checksum ... ");
-                       csum = crc32 (0, (char *) data, len);
+                       csum = crc32 (0, (unsigned char *) data, len);
                        if (csum != ntohl (hdr->ih_dcrc)) {
                                printf ("Bad Data CRC\n");
                                SHOW_BOOT_PROGRESS (-12);
index c73cf0c38fb7e7abecac64ac87882e9d8ae28249..76639081ed2804e8e31606ad017a57a20c9cc104 100644 (file)
@@ -121,7 +121,7 @@ void *sbrk (ptrdiff_t increment)
 
 static int init_baudrate (void)
 {
-       uchar tmp[64];  /* long enough for environment variables */
+       char tmp[64];   /* long enough for environment variables */
        int i = getenv_r ("baudrate", tmp, sizeof (tmp));
        gd->bd->bi_baudrate = gd->baudrate = (i > 0)
                        ? (int) simple_strtoul (tmp, NULL, 10)
@@ -235,9 +235,11 @@ init_fnc_t *init_sequence[] = {
 
 void start_armboot (void)
 {
-       ulong size;
        init_fnc_t **init_fnc_ptr;
        char *s;
+#ifndef CFG_NO_FLASH
+       ulong size;
+#endif
 #if defined(CONFIG_VFD) || defined(CONFIG_LCD)
        unsigned long addr;
 #endif
@@ -320,7 +322,7 @@ void start_armboot (void)
                int i;
                ulong reg;
                char *s, *e;
-               uchar tmp[64];
+               char tmp[64];
 
                i = getenv_r ("ethaddr", tmp, sizeof (tmp));
                s = (i > 0) ? tmp : NULL;
index 87f38c42bb6a66d8548b4ea0ec1be1a5f2f95c8e..b56808b8baeac76719f40f6d18de53dde6635f15 100644 (file)
@@ -73,7 +73,7 @@ static unsigned bcd2bin (uchar c);
 static int setup_done = 0;
 
 static int
-rs5c372_readram(char *buf, int len)
+rs5c372_readram(unsigned char *buf, int len)
 {
        int ret;
 
@@ -128,7 +128,7 @@ rs5c372_enable(void)
 }
 
 static void
-rs5c372_convert_to_time(struct rtc_time *dt, char *buf)
+rs5c372_convert_to_time(struct rtc_time *dt, unsigned char *buf)
 {
        /* buf[0] is register 15 */
        dt->tm_sec = bcd2bin(buf[1]);