Commit 26351479 authored by Ron Mercer's avatar Ron Mercer Committed by David S. Miller

qlge: bugfix: Fix endian issue when reading flash.

Signed-off-by: default avatarRon Mercer <ron.mercer@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e408b8dc
...@@ -787,12 +787,12 @@ struct mbox_params { ...@@ -787,12 +787,12 @@ struct mbox_params {
struct flash_params { struct flash_params {
u8 dev_id_str[4]; u8 dev_id_str[4];
u16 size; __le16 size;
u16 csum; __le16 csum;
u16 ver; __le16 ver;
u16 sub_dev_id; __le16 sub_dev_id;
u8 mac_addr[6]; u8 mac_addr[6];
u16 res; __le16 res;
}; };
......
...@@ -641,7 +641,7 @@ static void ql_enable_all_completion_interrupts(struct ql_adapter *qdev) ...@@ -641,7 +641,7 @@ static void ql_enable_all_completion_interrupts(struct ql_adapter *qdev)
} }
static int ql_read_flash_word(struct ql_adapter *qdev, int offset, u32 *data) static int ql_read_flash_word(struct ql_adapter *qdev, int offset, __le32 *data)
{ {
int status = 0; int status = 0;
/* wait for reg to come ready */ /* wait for reg to come ready */
...@@ -656,8 +656,11 @@ static int ql_read_flash_word(struct ql_adapter *qdev, int offset, u32 *data) ...@@ -656,8 +656,11 @@ static int ql_read_flash_word(struct ql_adapter *qdev, int offset, u32 *data)
FLASH_ADDR, FLASH_ADDR_RDY, FLASH_ADDR_ERR); FLASH_ADDR, FLASH_ADDR_RDY, FLASH_ADDR_ERR);
if (status) if (status)
goto exit; goto exit;
/* get the data */ /* This data is stored on flash as an array of
*data = ql_read32(qdev, FLASH_DATA); * __le32. Since ql_read32() returns cpu endian
* we need to swap it back.
*/
*data = cpu_to_le32(ql_read32(qdev, FLASH_DATA));
exit: exit:
return status; return status;
} }
...@@ -666,7 +669,7 @@ static int ql_get_flash_params(struct ql_adapter *qdev) ...@@ -666,7 +669,7 @@ static int ql_get_flash_params(struct ql_adapter *qdev)
{ {
int i; int i;
int status; int status;
u32 *p = (u32 *)&qdev->flash; __le32 *p = (__le32 *)&qdev->flash;
if (ql_sem_spinlock(qdev, SEM_FLASH_MASK)) if (ql_sem_spinlock(qdev, SEM_FLASH_MASK))
return -ETIMEDOUT; return -ETIMEDOUT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment