tizen 2.4 release
[kernel/u-boot-tm1.git] / board / altera / common / sevenseg.h
1 /*
2  * (C) Copyright 2003, Li-Pro.Net <www.li-pro.net>
3  * Stephan Linz <linz@li-pro.net>
4  *
5  * See file CREDITS for list of people who contributed to this
6  * project.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of
11  * the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  * MA 02111-1307 USA
22  *
23  * common/sevenseg.h
24  *
25  * NIOS PIO based seven segment led support functions
26  */
27
28 #ifndef __DK1S10_SEVENSEG_H__
29 #define __DK1S10_SEVENSEG_H__
30
31 #ifdef  CONFIG_SEVENSEG
32
33 /*
34  *  15                    8 7      0
35  * |-----------------------|--------|
36  * |   controll value      |  value |
37  * ----------------------------------
38  */
39 #define SEVENSEG_RAW            (int)(0)        /* write out byte value (hex) */
40 #define SEVENSEG_OFF            (int)( 1 << 8)  /* display switch off */
41 #define SEVENSEG_SET_DPL        (int)( 2 << 8)  /* set dp low  nibble */
42 #define SEVENSEG_SET_DPH        (int)( 3 << 8)  /* set dp high nibble */
43 #define SEVENSEG_RES_DPL        (int)( 4 << 8)  /* reset dp low  nibble */
44 #define SEVENSEG_RES_DPH        (int)( 5 << 8)  /* reset dp high nibble */
45 #define SEVENSEG_TOG_DPL        (int)( 6 << 8)  /* toggle dp low  nibble */
46 #define SEVENSEG_TOG_DPH        (int)( 7 << 8)  /* toggle dp high nibble */
47 #define SEVENSEG_LO             (int)( 8 << 8)  /* write out low nibble only */
48 #define SEVENSEG_HI             (int)( 9 << 8)  /* write out high nibble only */
49 #define SEVENSEG_STR            (int)(10 << 8)  /* write out a string */
50
51 #define SEVENSEG_MASK_VAL       (0xff)          /* only used by SEVENSEG_RAW */
52 #define SEVENSEG_MASK_CTRL      (~SEVENSEG_MASK_VAL)
53
54 #ifdef  SEVENSEG_DIGIT_HI_LO_EQUAL
55
56 #define SEVENSEG_DIGITS_0       (       SEVENSEG_DIGIT_A        \
57                                 |       SEVENSEG_DIGIT_B        \
58                                 |       SEVENSEG_DIGIT_C        \
59                                 |       SEVENSEG_DIGIT_D        \
60                                 |       SEVENSEG_DIGIT_E        \
61                                 |       SEVENSEG_DIGIT_F        )
62 #define SEVENSEG_DIGITS_1       (       SEVENSEG_DIGIT_B        \
63                                 |       SEVENSEG_DIGIT_C        )
64 #define SEVENSEG_DIGITS_2       (       SEVENSEG_DIGIT_A        \
65                                 |       SEVENSEG_DIGIT_B        \
66                                 |       SEVENSEG_DIGIT_D        \
67                                 |       SEVENSEG_DIGIT_E        \
68                                 |       SEVENSEG_DIGIT_G        )
69 #define SEVENSEG_DIGITS_3       (       SEVENSEG_DIGIT_A        \
70                                 |       SEVENSEG_DIGIT_B        \
71                                 |       SEVENSEG_DIGIT_C        \
72                                 |       SEVENSEG_DIGIT_D        \
73                                 |       SEVENSEG_DIGIT_G        )
74 #define SEVENSEG_DIGITS_4       (       SEVENSEG_DIGIT_B        \
75                                 |       SEVENSEG_DIGIT_C        \
76                                 |       SEVENSEG_DIGIT_F        \
77                                 |       SEVENSEG_DIGIT_G        )
78 #define SEVENSEG_DIGITS_5       (       SEVENSEG_DIGIT_A        \
79                                 |       SEVENSEG_DIGIT_C        \
80                                 |       SEVENSEG_DIGIT_D        \
81                                 |       SEVENSEG_DIGIT_F        \
82                                 |       SEVENSEG_DIGIT_G        )
83 #define SEVENSEG_DIGITS_6       (       SEVENSEG_DIGIT_A        \
84                                 |       SEVENSEG_DIGIT_C        \
85                                 |       SEVENSEG_DIGIT_D        \
86                                 |       SEVENSEG_DIGIT_E        \
87                                 |       SEVENSEG_DIGIT_F        \
88                                 |       SEVENSEG_DIGIT_G        )
89 #define SEVENSEG_DIGITS_7       (       SEVENSEG_DIGIT_A        \
90                                 |       SEVENSEG_DIGIT_B        \
91                                 |       SEVENSEG_DIGIT_C        )
92 #define SEVENSEG_DIGITS_8       (       SEVENSEG_DIGIT_A        \
93                                 |       SEVENSEG_DIGIT_B        \
94                                 |       SEVENSEG_DIGIT_C        \
95                                 |       SEVENSEG_DIGIT_D        \
96                                 |       SEVENSEG_DIGIT_E        \
97                                 |       SEVENSEG_DIGIT_F        \
98                                 |       SEVENSEG_DIGIT_G        )
99 #define SEVENSEG_DIGITS_9       (       SEVENSEG_DIGIT_A        \
100                                 |       SEVENSEG_DIGIT_B        \
101                                 |       SEVENSEG_DIGIT_C        \
102                                 |       SEVENSEG_DIGIT_D        \
103                                 |       SEVENSEG_DIGIT_F        \
104                                 |       SEVENSEG_DIGIT_G        )
105 #define SEVENSEG_DIGITS_A       (       SEVENSEG_DIGIT_A        \
106                                 |       SEVENSEG_DIGIT_B        \
107                                 |       SEVENSEG_DIGIT_C        \
108                                 |       SEVENSEG_DIGIT_E        \
109                                 |       SEVENSEG_DIGIT_F        \
110                                 |       SEVENSEG_DIGIT_G        )
111 #define SEVENSEG_DIGITS_B       (       SEVENSEG_DIGIT_C        \
112                                 |       SEVENSEG_DIGIT_D        \
113                                 |       SEVENSEG_DIGIT_E        \
114                                 |       SEVENSEG_DIGIT_F        \
115                                 |       SEVENSEG_DIGIT_G        )
116 #define SEVENSEG_DIGITS_C       (       SEVENSEG_DIGIT_D        \
117                                 |       SEVENSEG_DIGIT_E        \
118                                 |       SEVENSEG_DIGIT_G        )
119 #define SEVENSEG_DIGITS_D       (       SEVENSEG_DIGIT_B        \
120                                 |       SEVENSEG_DIGIT_C        \
121                                 |       SEVENSEG_DIGIT_D        \
122                                 |       SEVENSEG_DIGIT_E        \
123                                 |       SEVENSEG_DIGIT_G        )
124 #define SEVENSEG_DIGITS_E       (       SEVENSEG_DIGIT_A        \
125                                 |       SEVENSEG_DIGIT_D        \
126                                 |       SEVENSEG_DIGIT_E        \
127                                 |       SEVENSEG_DIGIT_F        \
128                                 |       SEVENSEG_DIGIT_G        )
129 #define SEVENSEG_DIGITS_F       (       SEVENSEG_DIGIT_A        \
130                                 |       SEVENSEG_DIGIT_E        \
131                                 |       SEVENSEG_DIGIT_F        \
132                                 |       SEVENSEG_DIGIT_G        )
133
134 #else   /* !SEVENSEG_DIGIT_HI_LO_EQUAL */
135 #error SEVENSEG: different pin asssignments not supported
136 #endif
137
138 void sevenseg_set(int value);
139
140 #endif  /* CONFIG_SEVENSEG */
141
142 #endif  /* __DK1S10_SEVENSEG_H__ */