From 612588a886965706e9593626c277e561c1932249 Mon Sep 17 00:00:00 2001 From: Peter Hurley Date: Tue, 29 Jan 2013 09:10:30 -0500 Subject: [PATCH 16/22] staging/fwserial: Fix endian issue in unit directory Reported-by: YOSHIFUJI Hideaki Acked-by: YOSHIFUJI Hideaki Signed-off-by: Peter Hurley Acked-by: Stefan Richter Signed-off-by: Greg Kroah-Hartman --- drivers/staging/fwserial/fwserial.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/staging/fwserial/fwserial.c b/drivers/staging/fwserial/fwserial.c index fe9a688..cad9e98 100644 --- a/drivers/staging/fwserial/fwserial.c +++ b/drivers/staging/fwserial/fwserial.c @@ -2559,26 +2559,25 @@ static struct fw_driver fwserial_driver = { /* XXX: config ROM definitons could be improved with semi-automated offset * and length calculation */ +#define FW_ROM_LEN(quads) ((quads) << 16) #define FW_ROM_DESCRIPTOR(ofs) (((CSR_LEAF | CSR_DESCRIPTOR) << 24) | (ofs)) struct fwserial_unit_directory_data { - u16 crc; - u16 len; + u32 len_crc; u32 unit_specifier; u32 unit_sw_version; u32 unit_addr_offset; u32 desc1_ofs; - u16 desc1_crc; - u16 desc1_len; + u32 desc1_len_crc; u32 desc1_data[5]; } __packed; static struct fwserial_unit_directory_data fwserial_unit_directory_data = { - .len = 4, + .len_crc = FW_ROM_LEN(4), .unit_specifier = FW_UNIT_SPECIFIER(LINUX_VENDOR_ID), .unit_sw_version = FW_UNIT_VERSION(FWSERIAL_VERSION), .desc1_ofs = FW_ROM_DESCRIPTOR(1), - .desc1_len = 5, + .desc1_len_crc = FW_ROM_LEN(5), .desc1_data = { 0x00000000, /* type = text */ 0x00000000, /* enc = ASCII, lang EN */ -- 1.7.12.4