]> git.ipfire.org Git - thirdparty/u-boot.git/blame - arch/powerpc/include/asm/iopin_8260.h
powerpc, 8xx: remove support for 8xx
[thirdparty/u-boot.git] / arch / powerpc / include / asm / iopin_8260.h
CommitLineData
2dab301c
WD
1/*
2 * MPC8260 I/O port pin manipulation functions
3 */
4
5#ifndef _ASM_IOPIN_8260_H_
6#define _ASM_IOPIN_8260_H_
7
8#include <linux/types.h>
9#include <asm/immap_8260.h>
10
11#ifdef __KERNEL__
12
13typedef
14 struct {
15 u_char port:2; /* port number (A=0, B=1, C=2, D=3) */
16 u_char pin:5; /* port pin (0-31) */
17 u_char flag:1; /* for whatever */
18 }
19iopin_t;
20
21#define IOPIN_PORTA 0
22#define IOPIN_PORTB 1
23#define IOPIN_PORTC 2
24#define IOPIN_PORTD 3
25
44d0677a 26static __inline__ void
2dab301c
WD
27iopin_set_high(iopin_t *iopin)
28{
6d0f6bcf 29 volatile uint *datp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdata;
2dab301c
WD
30 datp[iopin->port * 8] |= (1 << (31 - iopin->pin));
31}
32
44d0677a 33static __inline__ void
2dab301c
WD
34iopin_set_low(iopin_t *iopin)
35{
6d0f6bcf 36 volatile uint *datp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdata;
2dab301c
WD
37 datp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
38}
39
44d0677a 40static __inline__ uint
2dab301c
WD
41iopin_is_high(iopin_t *iopin)
42{
6d0f6bcf 43 volatile uint *datp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdata;
2dab301c
WD
44 return (datp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
45}
46
44d0677a 47static __inline__ uint
2dab301c
WD
48iopin_is_low(iopin_t *iopin)
49{
6d0f6bcf 50 volatile uint *datp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdata;
2dab301c
WD
51 return ((datp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
52}
53
44d0677a 54static __inline__ void
2dab301c
WD
55iopin_set_out(iopin_t *iopin)
56{
6d0f6bcf 57 volatile uint *dirp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdira;
2dab301c
WD
58 dirp[iopin->port * 8] |= (1 << (31 - iopin->pin));
59}
60
44d0677a 61static __inline__ void
2dab301c
WD
62iopin_set_in(iopin_t *iopin)
63{
6d0f6bcf 64 volatile uint *dirp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdira;
2dab301c
WD
65 dirp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
66}
67
44d0677a 68static __inline__ uint
2dab301c
WD
69iopin_is_out(iopin_t *iopin)
70{
6d0f6bcf 71 volatile uint *dirp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdira;
2dab301c
WD
72 return (dirp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
73}
74
44d0677a 75static __inline__ uint
2dab301c
WD
76iopin_is_in(iopin_t *iopin)
77{
6d0f6bcf 78 volatile uint *dirp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdira;
2dab301c
WD
79 return ((dirp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
80}
81
44d0677a 82static __inline__ void
2dab301c
WD
83iopin_set_odr(iopin_t *iopin)
84{
6d0f6bcf 85 volatile uint *odrp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_podra;
2dab301c
WD
86 odrp[iopin->port * 8] |= (1 << (31 - iopin->pin));
87}
88
44d0677a 89static __inline__ void
2dab301c
WD
90iopin_set_act(iopin_t *iopin)
91{
6d0f6bcf 92 volatile uint *odrp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_podra;
2dab301c
WD
93 odrp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
94}
95
44d0677a 96static __inline__ uint
2dab301c
WD
97iopin_is_odr(iopin_t *iopin)
98{
6d0f6bcf 99 volatile uint *odrp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_podra;
2dab301c
WD
100 return (odrp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
101}
102
44d0677a 103static __inline__ uint
2dab301c
WD
104iopin_is_act(iopin_t *iopin)
105{
6d0f6bcf 106 volatile uint *odrp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_podra;
2dab301c
WD
107 return ((odrp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
108}
109
44d0677a 110static __inline__ void
2dab301c
WD
111iopin_set_ded(iopin_t *iopin)
112{
6d0f6bcf 113 volatile uint *parp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_ppara;
2dab301c
WD
114 parp[iopin->port * 8] |= (1 << (31 - iopin->pin));
115}
116
44d0677a 117static __inline__ void
2dab301c
WD
118iopin_set_gen(iopin_t *iopin)
119{
6d0f6bcf 120 volatile uint *parp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_ppara;
2dab301c
WD
121 parp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
122}
123
44d0677a 124static __inline__ uint
2dab301c
WD
125iopin_is_ded(iopin_t *iopin)
126{
6d0f6bcf 127 volatile uint *parp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_ppara;
2dab301c
WD
128 return (parp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
129}
130
44d0677a 131static __inline__ uint
2dab301c
WD
132iopin_is_gen(iopin_t *iopin)
133{
6d0f6bcf 134 volatile uint *parp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_ppara;
2dab301c
WD
135 return ((parp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
136}
137
44d0677a 138static __inline__ void
2dab301c
WD
139iopin_set_opt2(iopin_t *iopin)
140{
6d0f6bcf 141 volatile uint *sorp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_psora;
2dab301c
WD
142 sorp[iopin->port * 8] |= (1 << (31 - iopin->pin));
143}
144
44d0677a 145static __inline__ void
2dab301c
WD
146iopin_set_opt1(iopin_t *iopin)
147{
6d0f6bcf 148 volatile uint *sorp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_psora;
2dab301c
WD
149 sorp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
150}
151
44d0677a 152static __inline__ uint
2dab301c
WD
153iopin_is_opt2(iopin_t *iopin)
154{
6d0f6bcf 155 volatile uint *sorp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_psora;
2dab301c
WD
156 return (sorp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
157}
158
44d0677a 159static __inline__ uint
2dab301c
WD
160iopin_is_opt1(iopin_t *iopin)
161{
6d0f6bcf 162 volatile uint *sorp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_psora;
2dab301c
WD
163 return ((sorp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
164}
165
166#endif /* __KERNEL__ */
167
168#endif /* _ASM_IOPIN_8260_H_ */