diff options
Diffstat (limited to 'drivers/hid')
-rw-r--r-- | drivers/hid/hid-core.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index f4ee1afe488f..9c8157fb6d75 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
@@ -753,8 +753,7 @@ static __inline__ __u32 extract(__u8 *report, unsigned offset, unsigned n) | |||
753 | 753 | ||
754 | report += offset >> 3; /* adjust byte index */ | 754 | report += offset >> 3; /* adjust byte index */ |
755 | offset &= 7; /* now only need bit offset into one byte */ | 755 | offset &= 7; /* now only need bit offset into one byte */ |
756 | x = get_unaligned((u64 *) report); | 756 | x = le64_to_cpu(get_unaligned((__le64 *) report)); |
757 | x = le64_to_cpu(x); | ||
758 | x = (x >> offset) & ((1ULL << n) - 1); /* extract bit field */ | 757 | x = (x >> offset) & ((1ULL << n) - 1); /* extract bit field */ |
759 | return (u32) x; | 758 | return (u32) x; |
760 | } | 759 | } |
@@ -769,7 +768,7 @@ static __inline__ __u32 extract(__u8 *report, unsigned offset, unsigned n) | |||
769 | */ | 768 | */ |
770 | static __inline__ void implement(__u8 *report, unsigned offset, unsigned n, __u32 value) | 769 | static __inline__ void implement(__u8 *report, unsigned offset, unsigned n, __u32 value) |
771 | { | 770 | { |
772 | u64 x; | 771 | __le64 x; |
773 | u64 m = (1ULL << n) - 1; | 772 | u64 m = (1ULL << n) - 1; |
774 | 773 | ||
775 | WARN_ON(n > 32); | 774 | WARN_ON(n > 32); |
@@ -780,10 +779,10 @@ static __inline__ void implement(__u8 *report, unsigned offset, unsigned n, __u3 | |||
780 | report += offset >> 3; | 779 | report += offset >> 3; |
781 | offset &= 7; | 780 | offset &= 7; |
782 | 781 | ||
783 | x = get_unaligned((u64 *)report); | 782 | x = get_unaligned((__le64 *)report); |
784 | x &= cpu_to_le64(~(m << offset)); | 783 | x &= cpu_to_le64(~(m << offset)); |
785 | x |= cpu_to_le64(((u64) value) << offset); | 784 | x |= cpu_to_le64(((u64) value) << offset); |
786 | put_unaligned(x, (u64 *) report); | 785 | put_unaligned(x, (__le64 *) report); |
787 | } | 786 | } |
788 | 787 | ||
789 | /* | 788 | /* |