]>
Commit | Line | Data |
---|---|---|
8123eee8 WD |
1 | /* |
2 | * MPC85xx I/O port pin manipulation functions | |
3 | */ | |
4 | ||
5 | #ifndef _ASM_IOPIN_85xx_H_ | |
6 | #define _ASM_IOPIN_85xx_H_ | |
7 | ||
8 | #include <linux/types.h> | |
9 | #include <asm/immap_85xx.h> | |
10 | ||
11 | #ifdef __KERNEL__ | |
12 | ||
13 | typedef struct { | |
14 | u_char port:2; /* port number (A=0, B=1, C=2, D=3) */ | |
15 | u_char pin:5; /* port pin (0-31) */ | |
16 | u_char flag:1; /* for whatever */ | |
17 | } iopin_t; | |
18 | ||
19 | #define IOPIN_PORTA 0 | |
20 | #define IOPIN_PORTB 1 | |
21 | #define IOPIN_PORTC 2 | |
22 | #define IOPIN_PORTD 3 | |
23 | ||
24 | extern __inline__ void iopin_set_high (iopin_t * iopin) | |
25 | { | |
6d0f6bcf | 26 | volatile uint *datp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.pdata; |
8123eee8 WD |
27 | datp[iopin->port * 8] |= (1 << (31 - iopin->pin)); |
28 | } | |
29 | ||
30 | extern __inline__ void iopin_set_low (iopin_t * iopin) | |
31 | { | |
6d0f6bcf | 32 | volatile uint *datp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.pdata; |
8123eee8 WD |
33 | datp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); |
34 | } | |
35 | ||
36 | extern __inline__ uint iopin_is_high (iopin_t * iopin) | |
37 | { | |
6d0f6bcf | 38 | volatile uint *datp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.pdata; |
8123eee8 WD |
39 | return (datp[iopin->port * 8] >> (31 - iopin->pin)) & 1; |
40 | } | |
41 | ||
42 | extern __inline__ uint iopin_is_low (iopin_t * iopin) | |
43 | { | |
6d0f6bcf | 44 | volatile uint *datp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.pdata; |
8123eee8 WD |
45 | return ((datp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; |
46 | } | |
47 | ||
48 | extern __inline__ void iopin_set_out (iopin_t * iopin) | |
49 | { | |
6d0f6bcf | 50 | volatile uint *dirp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.pdira; |
8123eee8 WD |
51 | dirp[iopin->port * 8] |= (1 << (31 - iopin->pin)); |
52 | } | |
53 | ||
54 | extern __inline__ void iopin_set_in (iopin_t * iopin) | |
55 | { | |
6d0f6bcf | 56 | volatile uint *dirp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.pdira; |
8123eee8 WD |
57 | dirp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); |
58 | } | |
59 | ||
60 | extern __inline__ uint iopin_is_out (iopin_t * iopin) | |
61 | { | |
6d0f6bcf | 62 | volatile uint *dirp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.pdira; |
8123eee8 WD |
63 | return (dirp[iopin->port * 8] >> (31 - iopin->pin)) & 1; |
64 | } | |
65 | ||
66 | extern __inline__ uint iopin_is_in (iopin_t * iopin) | |
67 | { | |
6d0f6bcf | 68 | volatile uint *dirp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.pdira; |
8123eee8 WD |
69 | return ((dirp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; |
70 | } | |
71 | ||
72 | extern __inline__ void iopin_set_odr (iopin_t * iopin) | |
73 | { | |
6d0f6bcf | 74 | volatile uint *odrp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.podra; |
8123eee8 WD |
75 | odrp[iopin->port * 8] |= (1 << (31 - iopin->pin)); |
76 | } | |
77 | ||
78 | extern __inline__ void iopin_set_act (iopin_t * iopin) | |
79 | { | |
6d0f6bcf | 80 | volatile uint *odrp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.podra; |
8123eee8 WD |
81 | odrp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); |
82 | } | |
83 | ||
84 | extern __inline__ uint iopin_is_odr (iopin_t * iopin) | |
85 | { | |
6d0f6bcf | 86 | volatile uint *odrp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.podra; |
8123eee8 WD |
87 | return (odrp[iopin->port * 8] >> (31 - iopin->pin)) & 1; |
88 | } | |
89 | ||
90 | extern __inline__ uint iopin_is_act (iopin_t * iopin) | |
91 | { | |
6d0f6bcf | 92 | volatile uint *odrp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.podra; |
8123eee8 WD |
93 | return ((odrp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; |
94 | } | |
95 | ||
96 | extern __inline__ void iopin_set_ded (iopin_t * iopin) | |
97 | { | |
6d0f6bcf | 98 | volatile uint *parp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.ppara; |
8123eee8 WD |
99 | parp[iopin->port * 8] |= (1 << (31 - iopin->pin)); |
100 | } | |
101 | ||
102 | extern __inline__ void iopin_set_gen (iopin_t * iopin) | |
103 | { | |
6d0f6bcf | 104 | volatile uint *parp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.ppara; |
8123eee8 WD |
105 | parp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); |
106 | } | |
107 | ||
108 | extern __inline__ uint iopin_is_ded (iopin_t * iopin) | |
109 | { | |
6d0f6bcf | 110 | volatile uint *parp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.ppara; |
8123eee8 WD |
111 | return (parp[iopin->port * 8] >> (31 - iopin->pin)) & 1; |
112 | } | |
113 | ||
114 | extern __inline__ uint iopin_is_gen (iopin_t * iopin) | |
115 | { | |
6d0f6bcf | 116 | volatile uint *parp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.ppara; |
8123eee8 WD |
117 | return ((parp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; |
118 | } | |
119 | ||
120 | extern __inline__ void iopin_set_opt2 (iopin_t * iopin) | |
121 | { | |
6d0f6bcf | 122 | volatile uint *sorp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.psora; |
8123eee8 WD |
123 | sorp[iopin->port * 8] |= (1 << (31 - iopin->pin)); |
124 | } | |
125 | ||
126 | extern __inline__ void iopin_set_opt1 (iopin_t * iopin) | |
127 | { | |
6d0f6bcf | 128 | volatile uint *sorp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.psora; |
8123eee8 WD |
129 | sorp[iopin->port * 8] &= ~(1 << (31 - iopin->pin)); |
130 | } | |
131 | ||
132 | extern __inline__ uint iopin_is_opt2 (iopin_t * iopin) | |
133 | { | |
6d0f6bcf | 134 | volatile uint *sorp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.psora; |
8123eee8 WD |
135 | return (sorp[iopin->port * 8] >> (31 - iopin->pin)) & 1; |
136 | } | |
137 | ||
138 | extern __inline__ uint iopin_is_opt1 (iopin_t * iopin) | |
139 | { | |
6d0f6bcf | 140 | volatile uint *sorp = &((ccsr_cpm_t *) CONFIG_SYS_MPC85xx_CPM_ADDR)->im_cpm_iop.psora; |
8123eee8 WD |
141 | return ((sorp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1; |
142 | } | |
143 | ||
144 | #endif /* __KERNEL__ */ | |
145 | ||
146 | #endif /* _ASM_IOPIN_85xx_H_ */ |