lpcspifi: Fix byte order bug71/1771/3
authorAndreas Fritiofson <andreas.fritiofson@gmail.com>
Thu, 31 Oct 2013 22:21:50 +0000 (31 23:21 +0100)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Tue, 5 Nov 2013 09:39:43 +0000 (5 09:39 +0000)
Found by grepping for pointer casts.

Change-Id: I42ef3ebcce9fc6391154888b48601ede8377c34e
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/1771
Tested-by: jenkins
Reviewed-by: Jens Bauer <jens@gpio.dk>
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
src/flash/nor/lpcspifi.c

index dc964b9..0400dd7 100644 (file)
@@ -774,6 +774,7 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id)
        uint32_t ssp_base = lpcspifi_info->ssp_base;
        uint32_t io_base = lpcspifi_info->io_base;
        uint32_t value;
+       uint8_t id_buf[3];
        int retval;
 
        if (target->state != TARGET_HALTED) {
@@ -808,7 +809,7 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id)
        if (retval == ERROR_OK)
                retval = ssp_read_reg(target, ssp_base, SSP_DATA, &value);
        if (retval == ERROR_OK)
-               ((uint8_t *)id)[0] = value;
+               id_buf[0] = value;
 
        /* Dummy write to clock in data */
        if (retval == ERROR_OK)
@@ -818,7 +819,7 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id)
        if (retval == ERROR_OK)
                retval = ssp_read_reg(target, ssp_base, SSP_DATA, &value);
        if (retval == ERROR_OK)
-               ((uint8_t *)id)[1] = value;
+               id_buf[1] = value;
 
        /* Dummy write to clock in data */
        if (retval == ERROR_OK)
@@ -828,10 +829,12 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id)
        if (retval == ERROR_OK)
                retval = ssp_read_reg(target, ssp_base, SSP_DATA, &value);
        if (retval == ERROR_OK)
-               ((uint8_t *)id)[2] = value;
+               id_buf[2] = value;
 
        if (retval == ERROR_OK)
                retval = ssp_setcs(target, io_base, 1);
+       if (retval == ERROR_OK)
+               *id = id_buf[2] << 16 | id_buf[1] << 8 | id_buf[0];
 
        return retval;
 }