Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: gdm724x: Remove test for host endian

gdm_endian.c: small changes were done to remove testing for host
endianness and in-driver conversion for byte-ordering.
The linux/kernel.h functions are used now.

gdm_endian.h: removal of code no longer needed with changes
in gdm_endian.c.

Signed-off-by: Jaime Arrocha <jarr@kerneldev.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Jaime Arrocha and committed by
Greg Kroah-Hartman
77e8a501 3f8ded9d

+17 -40
+17 -29
drivers/staging/gdm724x/gdm_endian.c
··· 11 11 * GNU General Public License for more details. 12 12 */ 13 13 14 - #include <linux/slab.h> 14 + #include <linux/kernel.h> 15 15 #include "gdm_endian.h" 16 16 17 17 void gdm_set_endian(struct gdm_endian *ed, u8 dev_endian) 18 18 { 19 - u8 a[2] = {0x12, 0x34}; 20 - u8 b[2] = {0, }; 21 - u16 c = 0x1234; 22 - 23 19 if (dev_endian == ENDIANNESS_BIG) 24 20 ed->dev_ed = ENDIANNESS_BIG; 25 21 else 26 22 ed->dev_ed = ENDIANNESS_LITTLE; 27 - 28 - memcpy(b, &c, 2); 29 - 30 - if (a[0] != b[0]) 31 - ed->host_ed = ENDIANNESS_LITTLE; 32 - else 33 - ed->host_ed = ENDIANNESS_BIG; 34 - 35 23 } 36 24 37 25 u16 gdm_cpu_to_dev16(struct gdm_endian *ed, u16 x) 38 26 { 39 - if (ed->dev_ed == ed->host_ed) 40 - return x; 41 - 42 - return Endian16_Swap(x); 27 + if (ed->dev_ed == ENDIANNESS_LITTLE) 28 + return cpu_to_le16(x); 29 + else 30 + return cpu_to_be16(x); 43 31 } 44 32 45 33 u16 gdm_dev16_to_cpu(struct gdm_endian *ed, u16 x) 46 34 { 47 - if (ed->dev_ed == ed->host_ed) 48 - return x; 49 - 50 - return Endian16_Swap(x); 35 + if (ed->dev_ed == ENDIANNESS_LITTLE) 36 + return le16_to_cpu(x); 37 + else 38 + return be16_to_cpu(x); 51 39 } 52 40 53 41 u32 gdm_cpu_to_dev32(struct gdm_endian *ed, u32 x) 54 42 { 55 - if (ed->dev_ed == ed->host_ed) 56 - return x; 57 - 58 - return Endian32_Swap(x); 43 + if (ed->dev_ed == ENDIANNESS_LITTLE) 44 + return cpu_to_le32(x); 45 + else 46 + return cpu_to_be32(x); 59 47 } 60 48 61 49 u32 gdm_dev32_to_cpu(struct gdm_endian *ed, u32 x) 62 50 { 63 - if (ed->dev_ed == ed->host_ed) 64 - return x; 65 - 66 - return Endian32_Swap(x); 51 + if (ed->dev_ed == ENDIANNESS_LITTLE) 52 + return le32_to_cpu(x); 53 + else 54 + return be32_to_cpu(x); 67 55 }
-11
drivers/staging/gdm724x/gdm_endian.h
··· 16 16 17 17 #include <linux/types.h> 18 18 19 - #define Endian16_Swap(value) \ 20 - ((((u16)((value) & 0x00FF)) << 8) | \ 21 - (((u16)((value) & 0xFF00)) >> 8)) 22 - 23 - #define Endian32_Swap(value) \ 24 - ((((u32)((value) & 0x000000FF)) << 24) | \ 25 - (((u32)((value) & 0x0000FF00)) << 8) | \ 26 - (((u32)((value) & 0x00FF0000)) >> 8) | \ 27 - (((u32)((value) & 0xFF000000)) >> 24)) 28 - 29 19 enum { 30 20 ENDIANNESS_MIN = 0, 31 21 ENDIANNESS_UNKNOWN, ··· 27 37 28 38 struct gdm_endian { 29 39 u8 dev_ed; 30 - u8 host_ed; 31 40 }; 32 41 33 42 void gdm_set_endian(struct gdm_endian *ed, u8 dev_endian);