annotate src/cs/drivers/drv_core/armio/armio.c @ 216:2be687f4476c default tip

l1_init.c: sync with Tourmaline: L1 recovery ABB init fix
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 31 Oct 2022 01:23:14 +0000
parents ba3693cbd40e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * ARMIO.C
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * Control diagnostic bits
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 * Reference : GCS207
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include "l1sw.cfg"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include "swconfig.cfg"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #ifdef BLUETOOTH_INCLUDED
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include "btemobile.cfg"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 #if (OP_L1_STANDALONE == 1)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 #include "l1_macro.h"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 #include "l1_confg.h"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 #include "board.cfg"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 #include "chipset.cfg"
166
7409b22cac61 fc-target.cfg config header renamed to more sensible fc-target.h
Mychaela Falconia <falcon@freecalypso.org>
parents: 163
diff changeset
23 #include "fc-target.h"
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 #if (OP_L1_STANDALONE == 0)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 #include "main/sys_types.h"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 #else
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 #include "sys_types.h"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 #include "memif/mem.h"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 #include "inth/iq.h"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 #include "armio/armio.h"
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 #include "abb/abb.h" // for AI_Power function : to be removed, use ABB_Power_Off in abb.c file instead !!!
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37
203
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
38 #ifdef CONFIG_TANGO_MODEM
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
39 #include "ffs/ffs_api.h"
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
40
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
41 SYS_UWORD8 AI_Tango_pinmux[4];
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
42 #endif
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
43
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 #if (CHIPSET != 12)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 * AI_EnableBit
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 * Enable ARMIO input/output bit (see CLKM module specification)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 void AI_EnableBit(int bit)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 *((volatile SYS_UWORD16 *) CLKM_IO_CNTL) |= (1<<bit);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 * AI_DisableBit
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 * Disable ARMIO input/output bit (see CLKM module specification)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 void AI_DisableBit(int bit)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 *((volatile SYS_UWORD16 *) CLKM_IO_CNTL) &= ~(1<<bit);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 #endif /* CHIPSET != 12 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 * AI_SetBit
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 * Switch-on one bit
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 void AI_SetBit(int bit)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 *((volatile SYS_UWORD16 *) ARMIO_OUT) |= (1<<bit);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 * AI_ResetBit
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 * Switch-off one bit
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 void AI_ResetBit(int bit)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 *((volatile SYS_UWORD16 *) ARMIO_OUT) &= ~(1<<bit);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 * AI_ConfigBitAsOutput
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 * Set this bit as an output
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 void AI_ConfigBitAsOutput(int bit)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 *((volatile SYS_UWORD16 *) ARMIO_IO_CNTL) &= ~(1<<bit);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 * AI_ConfigBitAsInput
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 * Set this bit as an input
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 void AI_ConfigBitAsInput(int bit)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 *((volatile SYS_UWORD16 *) ARMIO_IO_CNTL) |= (1<<bit);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 * AI_ReadBit
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 * Read value in register
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 SYS_BOOL AI_ReadBit(int bit)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 if ((*((volatile SYS_UWORD16 *) ARMIO_IN)) & (1<<bit))
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 return (1);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 else
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 return (0);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 * AI_Power
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 * Switch-on or off the board
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 * Parameters : SYS_UWORD8 power: 1 to power-on (maintain power)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 * 0 to power-off
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 #if (OP_L1_STANDALONE == 0)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 void AI_Power(SYS_UWORD8 power)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 if (power == 0)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 ABB_Power_Off();
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 * AI_ResetIoConfig
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 * Reset all default IO configurations
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 void AI_ResetIoConfig(void)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 *((volatile SYS_UWORD16 *) ARMIO_IO_CNTL) = 0xFFFF; // all bits are inputs
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 #if (CHIPSET != 12)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 *((volatile SYS_UWORD16 *) CLKM_IO_CNTL) = 0; // default config
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 #endif /* CHIPSET != 12 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 * AI_ClockEnable
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 * Enable ARMIO clock module
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 void AI_ClockEnable(void)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 *((volatile SYS_UWORD16 *) ARMIO_CNTL_REG) |= ARMIO_CLOCKEN; // set to 1 bit 5
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 * AI_InitIOConfig
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 * Configure all GPIOs at initialization in order to optimize the power consumption
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 * of the C-Sample :
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 * - select IOs 8,9,10,11,12 and 13 on the pins instead of MCSI and MCUEN signals.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 * - configure these IOs in output high.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 * - configure the IOs 0 (Vibrator LED) and 1 (LCD_A0) in output low.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 void AI_InitIOConfig(void)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 // reset the IOs config
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179 AI_ResetIoConfig();
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 // CLKM_IO_CNTL register configuration :
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 // select IOs 6,8,9,10,11,12 and 13 on the pins instead of MCSI and MCUEN signals.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 AI_EnableBit(0); /* FreeCalypso addition */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 AI_EnableBit(2);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 AI_EnableBit(4);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 #ifdef CONFIG_TARGET_PIRELLI
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 AI_EnableBit(1);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189 AI_EnableBit(3);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 /* Bits 5,6,7,8 are used to output I/O 9,10,11,12 or MCSI pins */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 /* If Bluetooth, IO should be disabled, outputting MCSI used for Bluetooth voice */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 * FreeCalypso change: we don't have BT, our new criterion is
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 * whether or not a given board is wired for MCSI.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 */
179
2a9935250c95 src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 171
diff changeset
198 #if defined(CONFIG_MCSI_MODEM) || defined(CONFIG_TARGET_PIRELLI)
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 AI_DisableBit(5);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 AI_DisableBit(6);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 AI_DisableBit(7);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 AI_DisableBit(8);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 #else
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 AI_EnableBit(5);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 AI_EnableBit(6);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 AI_EnableBit(7);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 AI_EnableBit(8);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 AI_EnableBit(9);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 // ARMIO_OUT register configuration :
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 // set IOs 8,9,10,11,12 and 13 as high
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 // set IOs 0 to 7 as low
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
216 #ifdef CONFIG_TARGET_C11X
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
217 /* C11x GPIO configuration mimics what the original fw sets */
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
218
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
219 /* GPIO out all zeros */
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
220 *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x0000;
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
221
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
222 /* setting of GPIOs as outputs: register setting from the original fw */
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
223 *((volatile SYS_UWORD16 *) ARMIO_IO_CNTL) = 0x2209;
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
224
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
225 #elif defined(CONFIG_TARGET_C139)
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 /* C139 GPIO configuration mimics what the original fw sets */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 /* GPIO out all zeros - the LCD backlight is OFF */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229 *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x0000;
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
231 /* setting of GPIOs as outputs: register setting from the original fw */
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232 *((volatile SYS_UWORD16 *) ARMIO_IO_CNTL) = 0x2A09;
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
233
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
234 #elif defined(CONFIG_TARGET_C155)
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
235 /* C155 GPIO config based on the available schematics */
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
236
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
237 /* GPIO out all zeros - the LCD backlight is OFF */
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238 *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x0000;
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
240 AI_ConfigBitAsOutput(1); /* LCD backlight control */
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
241 AI_ConfigBitAsOutput(2); /* headset jack switch */
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
242 AI_ConfigBitAsOutput(3); /* LCDA0 (?) */
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
243 AI_ConfigBitAsOutput(8); /* MUSIC_A0 */
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
244 AI_ConfigBitAsOutput(12); /* MUSIC_ON */
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
245
156
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
246 #elif defined(CONFIG_TARGET_J100)
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
247 /*
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
248 * GPIO config on this target is based on the disassembly of
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
249 * Init_Target() and AI_InitIOConfig() functions in the official fw.
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
250 */
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
251
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
252 /* GPIO out all zeros - the LCD backlight is OFF */
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
253 *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x0000;
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
254
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
255 /* setting of GPIOs as outputs: register setting from the original fw */
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
256 *((volatile SYS_UWORD16 *) ARMIO_IO_CNTL) = 0x2A59;
b0a18d9f99f4 armio.c: SE J100 target support
Mychaela Falconia <falcon@freecalypso.org>
parents: 117
diff changeset
257
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
258 #elif defined(CONFIG_TARGET_PIRELLI)
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
259
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
260 *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x0000;
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
261
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
262 AI_ConfigBitAsOutput(1);
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
263 AI_ConfigBitAsOutput(4);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264 AI_ConfigBitAsOutput(7);
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
265
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
266 #else /* classic TI/Openmoko/FreeCalypso targets */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267 // set IOs 1 and 8 to 13 as high
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
268 // set IOs 0 and 2 to 7 as low
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
269 // On D-Sample GPIO 1 must be set to high to enable the audio amplifier,
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
270 // but on Openmoko's modem it is the interrupt to the AP.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271 // On the FCDEV3B it also controls the audio amplifier.
171
3a8c90814d1a armio.c: GTM900 support from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 166
diff changeset
272 // On the GTM900 GPIOs 0 and 1 are RI and DSR outputs, respectively.
3a8c90814d1a armio.c: GTM900 support from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 166
diff changeset
273 // For targets other than GTM900, we enable the audio amplifier
3a8c90814d1a armio.c: GTM900 support from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 166
diff changeset
274 // if we are in an MMI!=0 build - for ACI builds use the AT@SPKR command.
3a8c90814d1a armio.c: GTM900 support from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 166
diff changeset
275 #ifdef CONFIG_TARGET_GTM900
203
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
276 *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x3F05;
179
2a9935250c95 src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 171
diff changeset
277 #elif (MMI != 0) || defined(CONFIG_GPIO1_HIGH)
203
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
278 *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x3F06;
171
3a8c90814d1a armio.c: GTM900 support from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 166
diff changeset
279 #else
203
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
280 *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x3F04;
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
281 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
282
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
283 // ARMIO_CNTL_REG register configuration :
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
284 // set IOs 1,2,5,7,9,14 and 15 as ouputs.
203
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
285 // all others are FreeCalypso additions
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
286 #if defined(CONFIG_GPIO046_OUTPUTS) || defined(CONFIG_TARGET_GTM900)
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
287 AI_ConfigBitAsOutput(0);
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
288 #endif
203
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
289 #ifndef CONFIG_TANGO_MODEM /* we do dynamic config on Tango instead */
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
290 AI_ConfigBitAsOutput(1);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
291 #ifndef CONFIG_TARGET_LEONARDO /* GPIO 2 is an input on Leonardo! */
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
292 AI_ConfigBitAsOutput(2);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
293 #endif
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
294 #ifdef CONFIG_GPIO3_OUTPUT
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
295 AI_ConfigBitAsOutput(3);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
296 #endif
179
2a9935250c95 src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 171
diff changeset
297 #endif
203
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
298 #ifdef CONFIG_GPIO046_OUTPUTS
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
299 AI_ConfigBitAsOutput(4);
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
300 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
301 AI_ConfigBitAsOutput(5);
203
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
302 #ifdef CONFIG_GPIO046_OUTPUTS
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
303 AI_ConfigBitAsOutput(6);
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
304 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
305 AI_ConfigBitAsOutput(7);
179
2a9935250c95 src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 171
diff changeset
306 #if 1 /* FreeCalypso addition for all targets */
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
307 AI_ConfigBitAsOutput(8);
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
308 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
309 AI_ConfigBitAsOutput(9);
187
d05fb947b50d src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 179
diff changeset
310 #ifdef CONFIG_MCSI_UNUSED
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
311 AI_ConfigBitAsOutput(10);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
312 AI_ConfigBitAsOutput(11);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
313 AI_ConfigBitAsOutput(12);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
314 #endif
179
2a9935250c95 src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 171
diff changeset
315 #if 1 /* FreeCalypso addition for all targets */
117
e67bbb9b1fb9 src/cs sync with Magnetite: C155 support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
316 AI_ConfigBitAsOutput(13);
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
317 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
318 AI_ConfigBitAsOutput(14);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
319 AI_ConfigBitAsOutput(15);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
320 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
321 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
322
203
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
323 #ifdef CONFIG_TANGO_MODEM
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
324 void AI_Init_Tango_pinmux(void)
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
325 {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
326 ffs_file_read("/etc/tango-pinmux", AI_Tango_pinmux, 4);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
327 /* apply this config */
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
328 if (AI_Tango_pinmux[0] & 0x80) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
329 if (AI_Tango_pinmux[0] & 1)
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
330 AI_SetBit(1);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
331 else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
332 AI_ResetBit(1);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
333 AI_ConfigBitAsOutput(1);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
334 }
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
335 /* GPIO2 config */
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
336 if (AI_Tango_pinmux[1] & 0x02) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
337 if (AI_Tango_pinmux[1] & 0x01)
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
338 AI_SetBit(2);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
339 else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
340 AI_ResetBit(2);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
341 AI_ConfigBitAsOutput(2);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
342 }
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
343 /* GPIO3 config */
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
344 if (AI_Tango_pinmux[1] & 0x20) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
345 if (AI_Tango_pinmux[1] & 0x10)
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
346 AI_SetBit(3);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
347 else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
348 AI_ResetBit(3);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
349 AI_ConfigBitAsOutput(3);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
350 }
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
351 /* RESET_OUT/IO7 config */
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
352 if (AI_Tango_pinmux[2] & 0x08) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
353 AI_EnableBit(3);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
354 if (AI_Tango_pinmux[2] & 0x02) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
355 if (AI_Tango_pinmux[2] & 0x01)
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
356 AI_SetBit(7);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
357 else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
358 AI_ResetBit(7);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
359 } else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
360 AI_ConfigBitAsInput(7);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
361 }
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
362 /* MCSI/GPIO config */
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
363 if (AI_Tango_pinmux[2] & 0x80) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
364 if (AI_Tango_pinmux[3] & 0x10) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
365 if (AI_Tango_pinmux[3] & 0x01)
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
366 AI_SetBit(9);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
367 else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
368 AI_ResetBit(9);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
369 } else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
370 AI_ConfigBitAsInput(9);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
371 AI_EnableBit(5);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
372 AI_EnableBit(6);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
373 AI_EnableBit(7);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
374 AI_EnableBit(8);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
375 if (AI_Tango_pinmux[3] & 0x20) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
376 if (AI_Tango_pinmux[3] & 0x02)
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
377 AI_SetBit(10);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
378 else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
379 AI_ResetBit(10);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
380 AI_ConfigBitAsOutput(10);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
381 }
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
382 if (AI_Tango_pinmux[3] & 0x40) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
383 if (AI_Tango_pinmux[3] & 0x04)
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
384 AI_SetBit(11);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
385 else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
386 AI_ResetBit(11);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
387 AI_ConfigBitAsOutput(11);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
388 }
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
389 if (AI_Tango_pinmux[3] & 0x80) {
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
390 if (AI_Tango_pinmux[3] & 0x08)
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
391 AI_SetBit(12);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
392 else
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
393 AI_ResetBit(12);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
394 AI_ConfigBitAsOutput(12);
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
395 }
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
396 }
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
397 }
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
398 #endif
ba3693cbd40e src/cs: sync with Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents: 187
diff changeset
399
0
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
400 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
401 * AI_SelectIOForIT
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
402 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
403 * Select which IO will be used to generate an interrupt.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
404 * 'Edge' specifies if interrup must be detected on falling or rising edge.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
405 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
406 * Warning: parameters are not checked.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
407 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
408
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
409 void AI_SelectIOForIT (SYS_UWORD16 Pin, SYS_UWORD16 Edge)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
410 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
411 #if (CHIPSET == 12)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
412 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
413 * Update INTERRUPT_LEVEL_REG with Edge configuration on Pin selection
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
414 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
415 GPIO_INTERRUPT_LEVEL_REG = (Edge & 0x0001) << Pin;
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
416
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
417 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
418 * Update INTERRUPT_MASK_REG to enable interrupt generation on Pin selection
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
419 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
420 GPIO_INTERRUPT_MASK_REG = 1 << Pin;
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
421 #else
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
422 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
423 * Bit SET_GPIO_EVENT_MODE (bit 0) is set to enable the GPIO event mode.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
424 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
425
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
426 *((volatile SYS_UWORD16 *) ARMIO_GPIO_EVENT_MODE) = (Pin << 1) + (Edge << 5) + 1;
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
427 #endif
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
428 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
429
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
430 #if (CHIPSET != 12)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
431 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
432 * AI_CheckITSource
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
433 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
434 * Check if the interrupt specified by 'Source' is active or not.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
435 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
436 * Output: 0: IT is not active
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
437 * 1: IT is active
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
438 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
439 * Warning: parameters are not checked.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
440 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
441 * Warning: If the keypad and GPIO interrupts may occur the GPIO interrupt
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
442 * must be checked first because the GPIO status bit is reset when
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
443 * the register is read.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
444 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
445
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
446 int AI_CheckITSource (SYS_UWORD16 Source)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
447 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
448 return (*((volatile SYS_UWORD16 *) ARMIO_KBD_GPIO_INT) & Source ? 1 : 0);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
449 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
450
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
451 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
452 * AI_UnmaskIT
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
453 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
454 * Unmask the IT specified by 'Source' (keyboard or GPIO).
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
455 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
456 * Warning: parameters are not checked.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
457 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
458
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
459 void AI_UnmaskIT (SYS_UWORD16 Source)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
460 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
461 *((volatile SYS_UWORD16 *) ARMIO_KBD_GPIO_MASKIT) &= ~Source;
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
462 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
463
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
464 /*
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
465 * AI_MaskIT
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
466 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
467 * Mask the IT specified by 'Source' (keyboard or GPIO).
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
468 *
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
469 * Warning: parameters are not checked.
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
470 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
471
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
472 void AI_MaskIT (SYS_UWORD16 Source)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
473 {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
474 *((volatile SYS_UWORD16 *) ARMIO_KBD_GPIO_MASKIT) |= Source;
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
475 }
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
476 #endif /* CHIPSET != 12 */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
477
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
478 #if (CHIPSET == 12)
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
479
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
480 void AI_MaskIT(SYS_UWORD16 d_io_number) {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
481 GPIO_INTERRUPT_MASK_REG |= (1 << d_io_number);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
482 } /* f_gpio_mask_it() */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
483
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
484 void AI_UnmaskIT(SYS_UWORD16 d_io_number) {
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
485 GPIO_INTERRUPT_MASK_REG &= ~(1 << d_io_number);
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
486 } /* f_gpio_unmask_it() */
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
487
b6a5e36de839 src/cs: initial import from Magnetite
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
488 #endif