161e12104SWon Kang /*
261e12104SWon Kang  * Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved.
361e12104SWon Kang  *
461e12104SWon Kang  * This software is licensed under the terms of the GNU General Public
561e12104SWon Kang  * License version 2, as published by the Free Software Foundation, and
661e12104SWon Kang  * may be copied, distributed, and modified under those terms.
761e12104SWon Kang  *
861e12104SWon Kang  * This program is distributed in the hope that it will be useful,
961e12104SWon Kang  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1061e12104SWon Kang  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1161e12104SWon Kang  * GNU General Public License for more details.
1261e12104SWon Kang  */
1361e12104SWon Kang 
1461e12104SWon Kang #ifndef __GDM_ENDIAN_H__
1561e12104SWon Kang #define __GDM_ENDIAN_H__
1661e12104SWon Kang 
1761e12104SWon Kang #include <linux/types.h>
1861e12104SWon Kang 
19457c005aSEric S. Stone /*
20457c005aSEric S. Stone  * For data in "device-endian" byte order (device endianness is model
21457c005aSEric S. Stone  * dependent).  Analogous to __leXX or __beXX.
22457c005aSEric S. Stone  */
23457c005aSEric S. Stone typedef __u32 __bitwise __dev32;
24457c005aSEric S. Stone typedef __u16 __bitwise __dev16;
25457c005aSEric S. Stone 
2661e12104SWon Kang enum {
2761e12104SWon Kang 	ENDIANNESS_MIN = 0,
2861e12104SWon Kang 	ENDIANNESS_UNKNOWN,
2961e12104SWon Kang 	ENDIANNESS_LITTLE,
3061e12104SWon Kang 	ENDIANNESS_BIG,
3161e12104SWon Kang 	ENDIANNESS_MIDDLE,
3261e12104SWon Kang 	ENDIANNESS_MAX
3361e12104SWon Kang };
3461e12104SWon Kang 
3561e12104SWon Kang struct gdm_endian {
3661e12104SWon Kang 	u8 dev_ed;
3761e12104SWon Kang };
3861e12104SWon Kang 
399c02d0dbSWon Kang void gdm_set_endian(struct gdm_endian *ed, u8 dev_endian);
40457c005aSEric S. Stone __dev16 gdm_cpu_to_dev16(struct gdm_endian *ed, u16 x);
41457c005aSEric S. Stone u16 gdm_dev16_to_cpu(struct gdm_endian *ed, __dev16 x);
42457c005aSEric S. Stone __dev32 gdm_cpu_to_dev32(struct gdm_endian *ed, u32 x);
43457c005aSEric S. Stone u32 gdm_dev32_to_cpu(struct gdm_endian *ed, __dev32 x);
4461e12104SWon Kang 
4561e12104SWon Kang #endif /*__GDM_ENDIAN_H__*/
46