0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /**********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 /* TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 /* Property of Texas Instruments -- For Unrestricted Internal Use Only */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 /* Unauthorized reproduction and/or distribution is strictly prohibited. This */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 /* product is protected under copyright law and trade secret law as an */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 /* unpublished work. Created 1987, (C) Copyright 1997 Texas Instruments. All */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 /* rights reserved. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 /* Filename : abb_inth.c */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 /* Description : Functions to manage the ABB device interrupt. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 /* The Serial Port Interface is used to connect the TI */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 /* Analog BaseBand (ABB). */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 /* It is assumed that the ABB is connected as the SPI */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 /* device 0, and ABB interrupt is mapped as external IT. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 /* Author : Pascal PUEL */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 /* Version number : 1.2 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 /* Date and time : 07/02/03 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 /* Previous delta : Creation */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 /**********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 /* 17/12/03 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 /* The original abb_inth.c has been splitted between the actual abb_inth.c */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 /* located in drv_apps directory and abb_inth_core.c located in drv_core */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 /* directory. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 /**********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #include "l1sw.cfg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "chipset.cfg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "swconfig.cfg"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "sys.cfg"
|
602
92dbfa906f66
fc-target.cfg config header renamed to more sensible fc-target.h
Mychaela Falconia <falcon@freecalypso.org>
diff
changeset
|
40 #include "fc-target.h"
|
0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #include "l1_macro.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "l1_confg.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #include <string.h>
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #include "abb/abb_inth.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 #include "nucleus.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 #include "rv/rv_defined_swe.h" // for RVM_PWR_SWE
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 #if (CHIPSET == 12)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 #include "sys_inth.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 #include "inth/iq.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 #include "cust_os.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 #include "l1_signa.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 #include "abb/abb.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 #if defined (OP_WCP)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 #include "ffs/ffs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 #include "ffs/board/ffspcm.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 #include "rvm/rvm_use_id_list.h" // for SPI_USE_ID
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 #include "spi/spi_env.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 #include "spi/spi_process.h" // for ABB_EXT_IRQ_EVT
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 #include "kpd/kpd_power_api.h" // for kpd_power_key_pressed()
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 #include "power/power.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 #ifdef RVM_LCC_SWE
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 #include "lcc/lcc_api.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 #include "lcc/lcc_cfg_i.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 #include "lcc/lcc.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 #include "lcc/lcc_env.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 #endif
|
341
|
78
|
|
79 #ifdef RVM_FCHG_SWE
|
|
80 #include "fchg/fchg_struct.h"
|
|
81 #include "fchg/fchg_messages.h"
|
|
82 #endif
|
|
83
|
0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 /********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 /* Function Name: spi_abb_read_int_reg_callback */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 /* Purpose: Callback function */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 /* Called when an external interrupt has occured and the */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 /* ABB interrupt register has been read. */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 /* */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 /********************************************************************************/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 void spi_abb_read_int_reg_callback(SYS_UWORD16 *read_value)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 SYS_UWORD16 loop_count;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 SYS_UWORD16 status_value;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 xSignalHeaderRec *adc_msg;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 volatile SYS_UWORD8 i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99
|
341
|
100 #if (defined(RVM_LCC_SWE) || defined(RVM_FCHG_SWE))
|
0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 struct pwr_adc_ind_s *addr;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 extern T_PWR_CTRL_BLOCK *pwr_ctrl;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 // check all the possible causes of the ABB IT
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 if (*read_value & PUSHOFF_IT_STS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 /* Push Button from ON to OFF */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 if (SPI_GBL_INFO_PTR->is_gsm_on == TRUE)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 NU_Sleep(SHORT_OFF_KEY_PRESSED);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 // WCP Patch
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 #if (OP_WCP == 1)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 // Backup of GSM FFS is remotely handled by MPU-S
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 // we trigger the backup upon each ON->OFF transition
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 ffs_backup ();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 /* Since this callback function is called from the SPI task
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 it can't be interrupted by another task
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 so we can directly access the SPI through the low-level driver */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 #if ((ANLG_FAM == 1) || (ANLG_FAM == 2))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 status_value = (ABB_Read_Status() & ONREFLT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 #elif (ANLG_FAM == 3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 status_value = (ABB_Read_Register_on_page(PAGE1, VRPCCFG) & PWOND);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 if (status_value == PWR_OFF_KEY_PRESSED)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 /* Inform keypad that key ON/OFF has been pressed */
|
446
bed6d393f3e0
C1xx targets: sensible handling of Compal's power key wiring
Mychaela Falconia <falcon@freecalypso.org>
diff
changeset
|
132 #ifndef CONFIG_TARGET_COMPAL
|
0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 kpd_power_key_pressed();
|
446
bed6d393f3e0
C1xx targets: sensible handling of Compal's power key wiring
Mychaela Falconia <falcon@freecalypso.org>
diff
changeset
|
134 #endif
|
0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 loop_count = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 /* Wait loop for Power-OFF */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 while ((loop_count < OFF_LOOP_COUNT) &&
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 (status_value == PWR_OFF_KEY_PRESSED))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 NU_Sleep(SHORT_OFF_KEY_PRESSED);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 #if ((ANLG_FAM == 1) || (ANLG_FAM == 2))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 status_value = (ABB_Read_Status() & ONREFLT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 #elif (ANLG_FAM == 3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 status_value = (ABB_Read_Register_on_page(PAGE1, VRPCCFG) & PWOND);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 loop_count++;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 if (status_value == PWR_OFF_KEY_PRESSED) /* Power-OFF request detected */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 rvf_send_trace("IQ EXT: Power Off request",25, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, SPI_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 Power_OFF_Button();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 #endif //WCP
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 else /* GSM OFF */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 rvf_send_trace("IQ EXT: Power On request",24, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, SPI_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 Power_ON_Button();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 else if (*read_value & REMOT_IT_STS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 rvf_send_trace("IQ EXT: Power Off remote request",32, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, SPI_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 /* 'Remote Power' from ON to OFF */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 Power_OFF_Remote();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 else if (*read_value & ADCEND_IT_STS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 rvf_send_trace("IQ EXT: ADC End",15, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, SPI_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 /* ADC end of conversion */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 ABB_Read_ADC(&SPI_GBL_INFO_PTR->adc_result[0]);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 adc_msg = os_alloc_sig(sizeof(T_CST_ADC_RESULT));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 if(adc_msg != NULL)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 adc_msg->SignalCode = CST_ADC_RESULT;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 for(i=0;i<MADC_NUMBER_OF_MEAS;i++)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 ((T_CST_ADC_RESULT *)(adc_msg->SigP))->adc_result[i] = SPI_GBL_INFO_PTR->adc_result[i];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 os_send_sig(adc_msg, RRM1_QUEUE);
|
341
|
191 #if (defined(RVM_LCC_SWE) || defined(RVM_FCHG_SWE))
|
0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 // Send ADC measurement to PWR (LCC) task
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 // NOTE that memory is allocated externally in the PWR task
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 if (rvf_get_buf(pwr_ctrl->prim_id, sizeof(struct pwr_adc_ind_s), (void *)&addr) == RVF_RED) {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 rvf_send_trace("rvf_get_buf failed",18, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, LCC_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 /* Unmask External interrupt */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 IQ_Unmask(IQ_EXT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 // rvf_dump_mem();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 return;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 addr->header.msg_id = PWR_ADC_IND;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 addr->header.src_addr_id = SPI_GBL_INFO_PTR->addr_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 addr->header.dest_addr_id = pwr_ctrl->addr_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 addr->header.callback_func = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 // FIXME: memcpy from SPI_GBL_INFO_PTR->adc_result - make sure it has not been de-allocated
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 memcpy(addr->data, SPI_GBL_INFO_PTR->adc_result, 8*2);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 addr->data[9] = ABB_Read_Status();; // Read & assign ITSTATREG status so we save the polling in PWR task!!
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 if (rvf_send_msg(pwr_ctrl->addr_id, addr) != RV_OK) {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 rvf_send_trace("SPI FATAL: Send failed!",23, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, LCC_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214
|
341
|
215 #if (defined(RVM_PWR_SWE) || defined(RVM_LCC_SWE) || defined(RVM_FCHG_SWE))
|
0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 else if (*read_value & CHARGER_IT_STS)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 /* Charger plug IN or OUT */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 #if ((ANLG_FAM == 1) || (ANLG_FAM == 2))
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 status_value = ABB_Read_Status();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 #elif (ANLG_FAM == 3)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 status_value = ABB_Read_Register_on_page(PAGE1, VRPCCFG);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 if (status_value & CHGPRES)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 rvf_send_trace("IQ EXT: Charger Plug",20, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, SPI_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 #ifdef RVM_PWR_SWE
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 PWR_Charger_Plug(); /* charger plugged IN */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 #endif
|
341
|
230 #if (defined(RVM_LCC_SWE) || defined(RVM_FCHG_SWE))
|
0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 // Forward charger plug indication to PWR (LCC) task
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 // NOTE that memory is allocated externally in the PWR task
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 if (rvf_get_buf(pwr_ctrl->prim_id, sizeof(struct pwr_req_s), (void *)&addr) == RVF_RED) {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 rvf_send_trace("rvf_get_buf failed#1",20, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, LCC_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 rvf_dump_mem();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 addr->header.msg_id = PWR_CHARGER_PLUGGED_IND;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 addr->header.src_addr_id = SPI_GBL_INFO_PTR->addr_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 addr->header.dest_addr_id = pwr_ctrl->addr_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 addr->header.callback_func = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 if (rvf_send_msg(pwr_ctrl->addr_id, addr) != RV_OK) {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 rvf_send_trace("SPI FATAL: Send failed!",23, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, LCC_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 rvf_send_trace("IQ EXT: Charger Unplug",22, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, SPI_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 #ifdef RVM_PWR_SWE
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 PWR_Charger_Unplug(); /* charger plugged OUT */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 #endif
|
341
|
253 #if (defined(RVM_LCC_SWE) || defined(RVM_FCHG_SWE))
|
0
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 // Forward charger unplug indication to PWR (LCC) task
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 // NOTE that memory is allocated externally in the PWR task
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 if (rvf_get_buf(pwr_ctrl->prim_id, sizeof(struct pwr_req_s), (void *)&addr) == RVF_RED) {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 rvf_send_trace("rvf_get_buf failed#2",20, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, LCC_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 rvf_dump_mem();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 addr->header.msg_id = PWR_CHARGER_UNPLUGGED_IND;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 addr->header.src_addr_id = SPI_GBL_INFO_PTR->addr_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 addr->header.dest_addr_id = pwr_ctrl->addr_id;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 addr->header.callback_func = NULL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 if (rvf_send_msg(pwr_ctrl->addr_id, addr) != RV_OK) {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 rvf_send_trace("SPI FATAL: Send failed!",23, NULL_PARAM, RV_TRACE_LEVEL_DEBUG_LOW, LCC_USE_ID);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 #endif /* RVM_PWR_SWE || RVM_LCC_SWE */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 /* Unmask External interrupt */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 #if (CHIPSET == 12)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 // Unmask ABB ext interrupt
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 F_INTH_ENABLE_ONE_IT(C_INTH_ABB_IRQ_IT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 // Unmask external (ABB) interrupt
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 IQ_Unmask(IQ_EXT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 }
|