2 * Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved.
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
14 #include <linux/slab.h>
15 #include "gdm_endian.h"
17 void gdm_set_endian(struct gdm_endian
*ed
, u8 dev_endian
)
19 u8 a
[2] = {0x12, 0x34};
23 if (dev_endian
== ENDIANNESS_BIG
)
24 ed
->dev_ed
= ENDIANNESS_BIG
;
26 ed
->dev_ed
= ENDIANNESS_LITTLE
;
31 ed
->host_ed
= ENDIANNESS_LITTLE
;
33 ed
->host_ed
= ENDIANNESS_BIG
;
37 u16
gdm_cpu_to_dev16(struct gdm_endian
*ed
, u16 x
)
39 if (ed
->dev_ed
== ed
->host_ed
)
42 return Endian16_Swap(x
);
45 u16
gdm_dev16_to_cpu(struct gdm_endian
*ed
, u16 x
)
47 if (ed
->dev_ed
== ed
->host_ed
)
50 return Endian16_Swap(x
);
53 u32
gdm_cpu_to_dev32(struct gdm_endian
*ed
, u32 x
)
55 if (ed
->dev_ed
== ed
->host_ed
)
58 return Endian32_Swap(x
);
61 u32
gdm_dev32_to_cpu(struct gdm_endian
*ed
, u32 x
)
63 if (ed
->dev_ed
== ed
->host_ed
)
66 return Endian32_Swap(x
);