diff options
author | Peter Hurley <peter@hurleysoftware.com> | 2013-01-29 09:10:30 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-01-29 23:31:34 -0500 |
commit | 612588a886965706e9593626c277e561c1932249 (patch) | |
tree | 4d9377ffb2618d27c37e394df0dc8a444d331465 | |
parent | ef34dd184d58824f1cde7402afa8ba2a957029d9 (diff) |
staging/fwserial: Fix endian issue in unit directory
Reported-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Acked-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/fwserial/fwserial.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/staging/fwserial/fwserial.c b/drivers/staging/fwserial/fwserial.c index fe9a68854452..cad9e98e0e6a 100644 --- a/drivers/staging/fwserial/fwserial.c +++ b/drivers/staging/fwserial/fwserial.c | |||
@@ -2559,26 +2559,25 @@ static struct fw_driver fwserial_driver = { | |||
2559 | /* XXX: config ROM definitons could be improved with semi-automated offset | 2559 | /* XXX: config ROM definitons could be improved with semi-automated offset |
2560 | * and length calculation | 2560 | * and length calculation |
2561 | */ | 2561 | */ |
2562 | #define FW_ROM_LEN(quads) ((quads) << 16) | ||
2562 | #define FW_ROM_DESCRIPTOR(ofs) (((CSR_LEAF | CSR_DESCRIPTOR) << 24) | (ofs)) | 2563 | #define FW_ROM_DESCRIPTOR(ofs) (((CSR_LEAF | CSR_DESCRIPTOR) << 24) | (ofs)) |
2563 | 2564 | ||
2564 | struct fwserial_unit_directory_data { | 2565 | struct fwserial_unit_directory_data { |
2565 | u16 crc; | 2566 | u32 len_crc; |
2566 | u16 len; | ||
2567 | u32 unit_specifier; | 2567 | u32 unit_specifier; |
2568 | u32 unit_sw_version; | 2568 | u32 unit_sw_version; |
2569 | u32 unit_addr_offset; | 2569 | u32 unit_addr_offset; |
2570 | u32 desc1_ofs; | 2570 | u32 desc1_ofs; |
2571 | u16 desc1_crc; | 2571 | u32 desc1_len_crc; |
2572 | u16 desc1_len; | ||
2573 | u32 desc1_data[5]; | 2572 | u32 desc1_data[5]; |
2574 | } __packed; | 2573 | } __packed; |
2575 | 2574 | ||
2576 | static struct fwserial_unit_directory_data fwserial_unit_directory_data = { | 2575 | static struct fwserial_unit_directory_data fwserial_unit_directory_data = { |
2577 | .len = 4, | 2576 | .len_crc = FW_ROM_LEN(4), |
2578 | .unit_specifier = FW_UNIT_SPECIFIER(LINUX_VENDOR_ID), | 2577 | .unit_specifier = FW_UNIT_SPECIFIER(LINUX_VENDOR_ID), |
2579 | .unit_sw_version = FW_UNIT_VERSION(FWSERIAL_VERSION), | 2578 | .unit_sw_version = FW_UNIT_VERSION(FWSERIAL_VERSION), |
2580 | .desc1_ofs = FW_ROM_DESCRIPTOR(1), | 2579 | .desc1_ofs = FW_ROM_DESCRIPTOR(1), |
2581 | .desc1_len = 5, | 2580 | .desc1_len_crc = FW_ROM_LEN(5), |
2582 | .desc1_data = { | 2581 | .desc1_data = { |
2583 | 0x00000000, /* type = text */ | 2582 | 0x00000000, /* type = text */ |
2584 | 0x00000000, /* enc = ASCII, lang EN */ | 2583 | 0x00000000, /* enc = ASCII, lang EN */ |