16 #define hw_class__afioa
25 #define _hwa_setup__afioa(o,a) \
26 _hwa_setup_map( hwa ); \
27 _hwa_setup_r( o, mapr )
29 #define _hwa_init__afioa(o,a) \
30 _hwa_init_r( o, mapr, 0x00000000 )
32 #define _hwa_commit__afioa(o,a) \
33 _hwa_commit_map( hwa ); \
34 _hwa_commit_r( o, mapr )
38 HW_INLINE
void _hwa_setup_map( hwa_t *
hwa )
41 hwa->map.counter2_remap = -1 ;
42 hwa->map.counter2_etr = 0 ;
43 hwa->map.counter2_channel1 = 0 ;
44 hwa->map.counter2_channel2 = 0 ;
45 hwa->map.counter2_channel3 = 0 ;
46 hwa->map.counter2_channel4 = 0 ;
50 HW_INLINE
void _hwa_commit_map( hwa_t *
hwa )
60 if (
hwa->map.counter2_etr != 0 ) {
67 HWA_E(HW_EM_OMAP((counter2,etr))) ;
71 if (
hwa->map.counter2_channel1 != 0 ) {
74 else if (
hwa->map.counter2_channel1 ==
HW_ADDRESS((porta,15)) )
78 HWA_E(HW_EM_OMAP((counter2,channel1)));
82 if (
hwa->map.counter2_channel2 != 0 ) {
83 if (
hwa->map.counter2_channel2 ==
HW_ADDRESS((porta,1)) && remap0 == -1 )
85 else if (
hwa->map.counter2_channel2 ==
HW_ADDRESS((portb,3)) && remap0 == -1 )
89 HWA_E(HW_EM_OMAP((counter2,channel2)));
93 if (
hwa->map.counter2_channel3 != 0 ) {
96 else if (
hwa->map.counter2_channel3 ==
HW_ADDRESS((portb,10)) )
100 HWA_E(HW_EM_OMAP((counter2,channel3)));
104 if (
hwa->map.counter2_channel4 != 0 ) {
105 if (
hwa->map.counter2_channel4 ==
HW_ADDRESS((porta,3)) && remap1 == -1 )
107 else if (
hwa->map.counter2_channel4 ==
HW_ADDRESS((portb,11)) && remap1 == -1 )
111 HWA_E(HW_EM_OMAP((counter2,channel4)));
115 if (
hwa->map.error )
118 if ( remap0 != -1 || remap1 != -1 ) {
119 if ( remap0 == -1 ) remap0 = 0 ;
120 if ( remap1 == -1 ) remap1 = 0 ;
121 uint8_t remap = (remap1*2 + remap0) & 3 ;
123 if (
hwa->map.counter2_remap != -1 &&
hwa->map.counter2_remap != remap )
124 HWA_E(HW_EM_OMAP(counter2));
126 hwa->map.counter2_remap = remap ;