staging: gdm724: adding kernel endianness header
PATCH 1/1 staging: gdm724: adding kernel endianness header
Quoted 1 line
From TODO list: remove test for host endian
Included header to gather information about host endianness. Please let me know if the code addition requires corrections to meet standards.
--- drivers/staging/gdm724x/gdm_endian.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-)
drivers/staging/gdm724x/gdm_endian.c +10 -12
@@ -11,27 +11,25 @@* GNU General Public License for more details. */ -#include <linux/slab.h> +#include <asm/byteorder.h> +#ifdef __LITTLE_ENDIAN +#include <linux/byteorder/little_endian.h> +#define H_ENDIAN ENDIANNESS_LITTLE +#else +#include <linux/byteorder/big_endian.h> +#define H_ENDIAN ENDIANNESS_BIG +#endif +#include "gdm_endian.h" void gdm_set_endian (struct gdm_endian *ed,u8 dev_endian) { -u8 a[2 ] = {0x12 ,0x34 }; -u8 b[2 ] = {0 , }; -u16 c =0x1234 ; -if (dev_endian ==ENDIANNESS_BIG ) ed->dev_ed =ENDIANNESS_BIG ;else ed->dev_ed =ENDIANNESS_LITTLE ; -memcpy (b, &c,2 ); - -if (a[0 ] != b[0 ]) - ed->host_ed =ENDIANNESS_LITTLE ; -else - ed->host_ed =ENDIANNESS_BIG ; - + ed->host_ed =H_ENDIAN ; }u16 gdm_cpu_to_dev16 (struct gdm_endian *ed,u16 x)
Signature · 1 line
1.7.10.4
Quoted 5 lines · Jaime Arrocha
Quoted 1 line
From TODO list: remove test for host endian
Included header to gather information about host endianness. Please let me know if the code addition requires corrections to meet standards.
No. This isn't really an improvement. We need to get rid of ->host_ed entirely. Which is actually easy. Basically change gdm_cpu_to_dev16() and friends to do so something:
u16 gdm_cpu_to_dev16(struct gdm_endian *ed, u16 x)
{
if (ed->dev_ed == ENDIANNESS_LITTLE)
return cpu_to_le16(x);
else
return cpu_to_be16(x);
}regards,
dan carpenter
---- On Sat, 09 May 2015 05:59:40 -0500 Dan Carpenter <[email protected]> wrote ----
Quoted 19 lines · Jaime Arrocha
Quoted 5 lines
Quoted 1 line
From TODO list: remove test for host endian
Included header to gather information about host endianness. Please let me know if the code addition requires corrections to meet standards.
No. This isn't really an improvement. We need to get rid of ->host_ed entirely. Which is actually easy. Basically change
gdm_cpu_to_dev16()and friends to do so something:u16
gdm_cpu_to_dev16(struct gdm_endian *ed, u16 x){ if (ed->dev_ed == ENDIANNESS_LITTLE) return cpu_to_le16(x); else return cpu_to_be16(x); }
Quoted 4 lines
regards,
dan carpenter
You are right, I will dive a little further to find out the use for host_ed and eliminate it. I did read an email from a while ago where one author mentioned that he needed to keep this function.
Also, the kernel already has functions to swap numbers for endianness. Will you rather use those?
Thanks for your feedback,
Jaime