Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

qlge: bugfix: Fix endian issue when reading flash.

parent e408b8dc
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -787,12 +787,12 @@ struct mbox_params {

struct flash_params {
	u8 dev_id_str[4];
	u16 size;
	u16 csum;
	u16 ver;
	u16 sub_dev_id;
	__le16 size;
	__le16 csum;
	__le16 ver;
	__le16 sub_dev_id;
	u8 mac_addr[6];
	u16 res;
	__le16 res;
};


+7 −4
Original line number Diff line number Diff line
@@ -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;
	/* wait for reg to come ready */
@@ -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);
	if (status)
		goto exit;
	/* get the data */
	*data = ql_read32(qdev, FLASH_DATA);
	 /* This data is stored on flash as an array of
	 * __le32.  Since ql_read32() returns cpu endian
	 * we need to swap it back.
	 */
	*data = cpu_to_le32(ql_read32(qdev, FLASH_DATA));
exit:
	return status;
}
@@ -666,7 +669,7 @@ static int ql_get_flash_params(struct ql_adapter *qdev)
{
	int i;
	int status;
	u32 *p = (u32 *)&qdev->flash;
	__le32 *p = (__le32 *)&qdev->flash;

	if (ql_sem_spinlock(qdev, SEM_FLASH_MASK))
		return -ETIMEDOUT;