~ubuntu-branches/ubuntu/maverick/u-boot-omap3/maverick

« back to all changes in this revision

Viewing changes to include/asm-ppc/iopin_8260.h

  • Committer: Bazaar Package Importer
  • Author(s): Oliver Grawert
  • Date: 2010-03-22 15:06:23 UTC
  • Revision ID: james.westby@ubuntu.com-20100322150623-i21g8rgiyl5dohag
Tags: upstream-2010.3git20100315
ImportĀ upstreamĀ versionĀ 2010.3git20100315

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
13
typedef
 
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
    }
 
19
iopin_t;
 
20
 
 
21
#define IOPIN_PORTA     0
 
22
#define IOPIN_PORTB     1
 
23
#define IOPIN_PORTC     2
 
24
#define IOPIN_PORTD     3
 
25
 
 
26
extern __inline__ void
 
27
iopin_set_high(iopin_t *iopin)
 
28
{
 
29
    volatile uint *datp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdata;
 
30
    datp[iopin->port * 8] |= (1 << (31 - iopin->pin));
 
31
}
 
32
 
 
33
extern __inline__ void
 
34
iopin_set_low(iopin_t *iopin)
 
35
{
 
36
    volatile uint *datp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdata;
 
37
    datp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
 
38
}
 
39
 
 
40
extern __inline__ uint
 
41
iopin_is_high(iopin_t *iopin)
 
42
{
 
43
    volatile uint *datp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdata;
 
44
    return (datp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
 
45
}
 
46
 
 
47
extern __inline__ uint
 
48
iopin_is_low(iopin_t *iopin)
 
49
{
 
50
    volatile uint *datp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdata;
 
51
    return ((datp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
 
52
}
 
53
 
 
54
extern __inline__ void
 
55
iopin_set_out(iopin_t *iopin)
 
56
{
 
57
    volatile uint *dirp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdira;
 
58
    dirp[iopin->port * 8] |= (1 << (31 - iopin->pin));
 
59
}
 
60
 
 
61
extern __inline__ void
 
62
iopin_set_in(iopin_t *iopin)
 
63
{
 
64
    volatile uint *dirp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdira;
 
65
    dirp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
 
66
}
 
67
 
 
68
extern __inline__ uint
 
69
iopin_is_out(iopin_t *iopin)
 
70
{
 
71
    volatile uint *dirp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdira;
 
72
    return (dirp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
 
73
}
 
74
 
 
75
extern __inline__ uint
 
76
iopin_is_in(iopin_t *iopin)
 
77
{
 
78
    volatile uint *dirp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_pdira;
 
79
    return ((dirp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
 
80
}
 
81
 
 
82
extern __inline__ void
 
83
iopin_set_odr(iopin_t *iopin)
 
84
{
 
85
    volatile uint *odrp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_podra;
 
86
    odrp[iopin->port * 8] |= (1 << (31 - iopin->pin));
 
87
}
 
88
 
 
89
extern __inline__ void
 
90
iopin_set_act(iopin_t *iopin)
 
91
{
 
92
    volatile uint *odrp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_podra;
 
93
    odrp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
 
94
}
 
95
 
 
96
extern __inline__ uint
 
97
iopin_is_odr(iopin_t *iopin)
 
98
{
 
99
    volatile uint *odrp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_podra;
 
100
    return (odrp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
 
101
}
 
102
 
 
103
extern __inline__ uint
 
104
iopin_is_act(iopin_t *iopin)
 
105
{
 
106
    volatile uint *odrp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_podra;
 
107
    return ((odrp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
 
108
}
 
109
 
 
110
extern __inline__ void
 
111
iopin_set_ded(iopin_t *iopin)
 
112
{
 
113
    volatile uint *parp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_ppara;
 
114
    parp[iopin->port * 8] |= (1 << (31 - iopin->pin));
 
115
}
 
116
 
 
117
extern __inline__ void
 
118
iopin_set_gen(iopin_t *iopin)
 
119
{
 
120
    volatile uint *parp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_ppara;
 
121
    parp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
 
122
}
 
123
 
 
124
extern __inline__ uint
 
125
iopin_is_ded(iopin_t *iopin)
 
126
{
 
127
    volatile uint *parp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_ppara;
 
128
    return (parp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
 
129
}
 
130
 
 
131
extern __inline__ uint
 
132
iopin_is_gen(iopin_t *iopin)
 
133
{
 
134
    volatile uint *parp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_ppara;
 
135
    return ((parp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
 
136
}
 
137
 
 
138
extern __inline__ void
 
139
iopin_set_opt2(iopin_t *iopin)
 
140
{
 
141
    volatile uint *sorp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_psora;
 
142
    sorp[iopin->port * 8] |= (1 << (31 - iopin->pin));
 
143
}
 
144
 
 
145
extern __inline__ void
 
146
iopin_set_opt1(iopin_t *iopin)
 
147
{
 
148
    volatile uint *sorp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_psora;
 
149
    sorp[iopin->port * 8] &= ~(1 << (31 - iopin->pin));
 
150
}
 
151
 
 
152
extern __inline__ uint
 
153
iopin_is_opt2(iopin_t *iopin)
 
154
{
 
155
    volatile uint *sorp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_psora;
 
156
    return (sorp[iopin->port * 8] >> (31 - iopin->pin)) & 1;
 
157
}
 
158
 
 
159
extern __inline__ uint
 
160
iopin_is_opt1(iopin_t *iopin)
 
161
{
 
162
    volatile uint *sorp = &((immap_t *)CONFIG_SYS_IMMR)->im_ioport.iop_psora;
 
163
    return ((sorp[iopin->port * 8] >> (31 - iopin->pin)) & 1) ^ 1;
 
164
}
 
165
 
 
166
#endif /* __KERNEL__ */
 
167
 
 
168
#endif /* _ASM_IOPIN_8260_H_ */