source: svn/trunk/newcon3bcm2_21bu/magnum/portinginterface/cec/7552/bcec_priv.c

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 16.4 KB
Line 
1/***************************************************************************
2 *         (c)2007-2011 Broadcom Corporation
3 *
4 * This program is the proprietary software of Broadcom Corporation and/or its licensors,
5 * and may only be used, duplicated, modified or distributed pursuant to the terms and
6 * conditions of a separate, written license agreement executed between you and Broadcom
7 * (an "Authorized License").   Except as set forth in an Authorized License, Broadcom grants
8 * no license (express or implied), right to use, or waiver of any kind with respect to the
9 * Software, and Broadcom expressly reserves all rights in and to the Software and all
10 * intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU
11 * HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY
12 * NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE.
13 *
14 * Except as expressly set forth in the Authorized License,
15 *
16 * 1.      This program, including its structure, sequence and organization, constitutes the valuable trade
17 * secrets of Broadcom, and you shall use all reasonable efforts to protect the confidentiality thereof,
18 * and to use this information only in connection with your use of Broadcom integrated circuit products.
19 *
20 *      2.         TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
21 * AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
22 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
23 * THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES
24 * OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE,
25 * LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION
26 * OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF
27 * USE OR PERFORMANCE OF THE SOFTWARE.
28 *
29 * 3.      TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ITS
30 * LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR
31 * EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO YOUR
32 * USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF
33 * THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT
34 * ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE
35 * LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF
36 * ANY LIMITED REMEDY.
37 *
38 * $brcm_Workfile: bcec_priv.c $
39 * $brcm_Revision: Hydra_Software_Devel/6 $
40 * $brcm_Date: 3/21/12 10:35a $
41 *
42 * Module Description:
43 *
44 * Revision History:
45 *
46 * $brcm_Log: /magnum/portinginterface/cec/7425/bcec_priv.c $
47 *
48 * Hydra_Software_Devel/6   3/21/12 10:35a vle
49 * SW7425-2617: Fix bogus debug message that might lead to oops in kernel
50 * mode.
51 *
52 * Hydra_Software_Devel/5   3/12/12 6:04p vle
53 * SW7425-2601: Fix build error in some cases.
54 *
55 * Hydra_Software_Devel/4   3/1/12 1:20p vle
56 * SW7425-2289: Additional update to make sure only AutoOn CEC is active
57 *
58 * Hydra_Software_Devel/3   2/24/12 4:06p vle
59 * SW7425-2289: Merge to mainline
60 *
61 * Hydra_Software_Devel/SW7425-2289/1   2/22/12 6:11p vle
62 * SW7425-2289: Add support for CEC AutoOn
63 *
64 * Hydra_Software_Devel/2   2/17/12 3:44p vle
65 * SW7425-2279: Merge to mainline
66 *
67 * Hydra_Software_Devel/SW7425-2279/4   2/16/12 4:55p vle
68 * SW7425-2279: Additional updates after 2nd review. Still need to rework
69 * Standby/Resume function to use CEC autoOn feature.
70 *
71 * Hydra_Software_Devel/SW7425-2279/3   2/13/12 3:33p vle
72 * SW7420-682: Merge to SW7425-2279 branch
73 *
74 * Hydra_Software_Devel/SW7425-2279/2   2/9/12 3:35p vle
75 * SW7425-2279: Update BCEC PI implementations. Use separate events for
76 * transmit and receive.
77 *
78 * Hydra_Software_Devel/SW7425-2279/1   1/30/12 7:14p vle
79 * SW7425-2279: Fix incorrect return of received CEC message
80 *
81 * Hydra_Software_Devel/SW7420-682/1   2/3/12 6:42p vle
82 * SW7420-682: First attempt at enable Auto-on CEC. Code hasn't gone
83 * through testing.
84 *
85 * Hydra_Software_Devel/1   11/22/11 6:23p vle
86 * SW7425-1140: Add BCEC PI support
87 *
88 * Hydra_Software_Devel/SW7425-1140/2   11/22/11 3:50p rgreen
89 * SW7425-1140: Add macros for debug support
90 *
91 * Hydra_Software_Devel/SW7425-1140/1   11/16/11 12:13p vle
92 * SW7425-1140: Add CEC PI support for 7425
93 *
94 ***************************************************************************/
95
96/***************************************
97*** THIS IS for 40nm B0 (rev2)
98***************************************/
99
100#include "bstd.h"
101#include "bdbg.h"
102#include "bavc_hdmi.h"
103
104#include "bcec.h"
105#include "bcec_priv.h"
106#include "bcec_config.h"
107
108
109BDBG_MODULE(BCEC_PRIV) ;
110
111
112/******************************************************************************
113void BCEC_P_HandleInterrupt_isr
114Summary: Handle interrupts for CEC core.
115*******************************************************************************/
116void BCEC_P_HandleInterrupt_isr(
117        void *pParam1,                                          /* [in] Device handle */
118        int parm2                                                       /* [in] */
119)
120{
121        uint32_t Register ;
122        BCEC_Handle hCEC ;
123       
124#if BCEC_CONFIG_DEBUG_INTERRUPTS
125        static const char *MsgStatus[] = {"NoACK", "ACK"} ;
126        static const char *EomStatus[] = {"No", "Yes"} ;
127#endif
128       
129        hCEC = (BCEC_Handle) pParam1 ;
130        BDBG_OBJECT_ASSERT(hCEC, BCEC_P_Handle) ;
131
132        /*
133        -- Interrupts to be handled
134        00 CEC_INTR_SENT
135        01 CEC_INTR_RECEIVED
136        */
137
138        switch (parm2)
139        {
140        case BCEC_MAKE_INTR_ENUM(SENT) :                                           /* 00 */ 
141
142                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_CNTRL_1) ;
143                hCEC->lastTransmitMessageStatus.uiStatus =
144                        BCHP_GET_FIELD_DATA(Register, REGNAME_CEC_CNTRL_1, TX_STATUS_GOOD) ;
145
146                hCEC->lastTransmitMessageStatus.uiMessageLength =
147                        BCHP_GET_FIELD_DATA(Register, REGNAME_CEC_CNTRL_1, MESSAGE_LENGTH) ;
148                       
149                hCEC->lastTransmitMessageStatus.uiEOM = 
150                        BCHP_GET_FIELD_DATA(Register, REGNAME_CEC_CNTRL_1, TX_EOM) ;
151               
152#if BCEC_CONFIG_DEBUG_INTERRUPTS
153                BDBG_WRN(("Message SENT Interrupt (0x%x)!", parm2));
154                BDBG_WRN(("Transmitted Length: %d; Xmit Status: %s ", 
155                                                hCEC->lastTransmitMessageStatus.uiMessageLength, 
156                                                MsgStatus[hCEC->lastTransmitMessageStatus.uiStatus])) ;
157#endif                                   
158
159                /* Set CEC Sent Event */
160                BKNI_SetEvent(hCEC->BCEC_EventCec_Transmitted);
161                break;
162
163               
164        case BCEC_MAKE_INTR_ENUM(RECEIVED) :
165
166                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_CNTRL_1) ;
167                hCEC->lastReceivedMessageStatus.uiStatus = 
168                        BCHP_GET_FIELD_DATA(Register, REGNAME_CEC_CNTRL_1, RX_STATUS_GOOD) ;
169                               
170                hCEC->lastReceivedMessageStatus.uiEOM = 
171                        BCHP_GET_FIELD_DATA(Register, REGNAME_CEC_CNTRL_1, RX_EOM) ;
172               
173                        /* number of rx CEC words that came in */
174                hCEC->lastReceivedMessageStatus.uiMessageLength = 
175                        BCHP_GET_FIELD_DATA(Register, REGNAME_CEC_CNTRL_1, REC_WRD_CNT) ;
176                       
177#if BCEC_CONFIG_DEBUG_INTERRUPTS
178                BDBG_WRN(("Message RECEIVED interrupt (0x%x)!", parm2));
179                BDBG_WRN(("Received %d Bytes, EOM status: %s", 
180                        hCEC->lastReceivedMessageStatus.uiMessageLength, 
181                        EomStatus[hCEC->lastReceivedMessageStatus.uiEOM])) ;
182#endif                         
183       
184                /* Set CEC Received Event */
185                BKNI_SetEvent(hCEC->BCEC_EventCec_Received) ;
186                break ;
187
188        default :
189                BDBG_ERR(("BCEC Unknown Interrupt ID=0x%x !", parm2 ));
190                break;
191        }
192
193        return;
194}
195
196
197/* Enable CEC AutoOn feature */
198void BCEC_P_EnableAutoOn(BCEC_Handle hCEC, bool enable)
199{
200        uint32_t Register;
201       
202
203        if (enable)
204        {
205                BDBG_MSG(("Enable Auto-On CEC function"));
206               
207                /* Toggle to clear last AutoCEC Event */
208                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CNTRL) ;
209                Register |= BCHP_MASK_DVP(AUTO_CEC_CNTRL, CLEAR_AUTO_CEC_XACTION_MATCH)
210                                | BCHP_MASK_DVP(AUTO_CEC_CNTRL, CLEAR_SET_AUTOCEC_RUN)
211                                | BCHP_MASK_DVP(AUTO_CEC_CNTRL, CLEAR_WAKE_REASON);                     
212                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CNTRL, Register) ;  /* Wr 1 */
213
214                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_CNTRL, CLEAR_AUTO_CEC_XACTION_MATCH)
215                                | BCHP_MASK_DVP(AUTO_CEC_CNTRL, CLEAR_SET_AUTOCEC_RUN)
216                                | BCHP_MASK_DVP(AUTO_CEC_CNTRL, CLEAR_WAKE_REASON));
217                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CNTRL, Register) ;  /* Wr 0 */                     
218
219                /* Clear HOTPLUG and "CEC Address Match" wake up events */             
220                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_CEC_ENERGYSTAR_CNTRL) ;
221                Register |= BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, HOTPLUG_CLR_INTERRUPT_DET)
222                                | BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, HOTPLUG_ACTIVITY_CLEAR)
223                                | BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, CEC_CLR_LOW_INTERRUPT_DET)               
224                                | BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, CEC_CLR_INTERRUPT_DET)           
225                                | BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, CEC_ACTIVITY_CLEAR);
226                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_CEC_ENERGYSTAR_CNTRL, Register) ;  /* Wr 1 */
227
228                Register &= ~(BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, HOTPLUG_CLR_INTERRUPT_DET)
229                                | BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, HOTPLUG_ACTIVITY_CLEAR)
230                                | BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, CEC_CLR_LOW_INTERRUPT_DET)               
231                                | BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, CEC_CLR_INTERRUPT_DET)           
232                                | BCHP_MASK_DVP(CEC_ENERGYSTAR_CNTRL, CEC_ACTIVITY_CLEAR));
233                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_CEC_ENERGYSTAR_CNTRL, Register) ;  /* Wr 0 */               
234
235                /* MASK "CEC address match" to prevent it from waking up the chip.
236                If this event is enabled, any CEC messages with the address matched the CEC_ADDR field in
237                AON_HDMI_TX.CEC_CNTRL.CEC_ADDR will cause the chip to wake up. That is not desired behavior */
238                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_CEC_ENERGYSTAR_CFG2) ;
239                Register |= BCHP_MASK_DVP(CEC_ENERGYSTAR_CFG2, CEC_MASK_IRQ)
240                                | BCHP_MASK_DVP(CEC_ENERGYSTAR_CFG2, CEC_MASK_LOW_IRQ);
241                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_CEC_ENERGYSTAR_CFG2, Register) ;  /* Wr 1 */
242
243               
244                /* Enable Auto CEC */
245                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CFG) ;
246                Register |= BCHP_MASK_DVP(AUTO_CEC_CFG, SELECT_CEC_TX)
247                                | BCHP_MASK_DVP(AUTO_CEC_CFG, AUTO_CEC_EN)
248                                | BCHP_MASK_DVP(AUTO_CEC_CFG, AUTO_CLEAR_CEC_INTR_DET);
249                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CFG, Register) ;  /* Wr 1 */               
250
251                /* Need to toggle AUTO_CLEAR_CEC_INTR_DET */
252                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CFG) ;
253                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_CFG, AUTO_CLEAR_CEC_INTR_DET));
254                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CFG, Register) ;  /* Wr 0 */               
255
256
257                /*********************************************************
258                  * Configure/enable specific CEC messages to wake up the device          *
259                  * The chip will only wake up if one of these CEC messages are   *
260                  * received                                                                                              *
261                  *********************************************************/
262               
263                /* Configure Check Power Status - Opcode 0x8F.
264                        The hardware will automatically response to request of current
265                        power status. The chip will not be      waken up when this CEC message is received
266                *********/
267                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_POWER_STATUS_CFG) ;
268                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_POWER_STATUS_CFG, POWER_STAT_EN)
269                                | BCHP_MASK_DVP(AUTO_CEC_POWER_STATUS_CFG, POWER_STAT_REARM)
270                                | BCHP_MASK_DVP(AUTO_CEC_POWER_STATUS_CFG, POWER_STAT_SENSITIVITY));
271                Register |= BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_POWER_STATUS_CFG, POWER_STAT_EN, 1)
272                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_POWER_STATUS_CFG, POWER_STAT_REARM, 1)
273                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_POWER_STATUS_CFG, POWER_STAT_SENSITIVITY, 7);
274                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_POWER_STATUS_CFG, Register) ;
275               
276
277                /* enable <ImageViewOn> - Opcode 0x04 and <TextViewOn> messages - Opcode 0x0D */
278                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_0) ;
279                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_0, TEXT_VIEW_EN)
280                                | BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_0, TEXT_VIEW_SENSITIVITY)
281                                | BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_0, IMAGE_VIEW_EN)
282                                | BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_0, IMAGE_VIEW_SENSITIVITY));
283                Register |= BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_0, TEXT_VIEW_EN, 1)
284                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_0, TEXT_VIEW_SENSITIVITY, 7)
285                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_0, IMAGE_VIEW_EN, 1)
286                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_0, IMAGE_VIEW_SENSITIVITY, 7);
287                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_0, Register) ;
288
289
290                /* enable <ActiveSouce> message - Opcode 82*/
291                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_1) ;
292                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_1, ACTIVE_SOURCE_EN)
293                                | BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_1, ACTIVE_SOURCE_SENSITIVITY));
294                Register |= BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_1, ACTIVE_SOURCE_EN, 1)
295                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_1, ACTIVE_SOURCE_SENSITIVITY, 7);
296                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_1, Register) ;
297
298
299                /* enable UserPowerOn and UserPowerToggle messages - opcode 44 */
300                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_3) ;
301                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_3, USER_POWER_ON_EN)
302                                | BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_3, USER_POWER_ON_SENSITIVITY)
303                                | BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_3, USER_POWER_TOGGLE_EN)
304                                | BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_3, USER_POWER_TOGGLE_SENSITIVITY));
305                Register |= BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_3, USER_POWER_ON_EN, 1)
306                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_3, USER_POWER_ON_SENSITIVITY, 7)
307                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_3, USER_POWER_TOGGLE_EN, 1)
308                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_3, USER_POWER_TOGGLE_SENSITIVITY, 7);
309                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_3, Register) ;
310
311                /* Rearm WAKE1 configurations to enable rechecking on the above CEC messages */
312                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_0) ;
313                Register |= BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE1_CFG_0, WAKE1_REARM);
314                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE1_CFG_0, Register) ;  /* Wr 1 */                 
315
316
317                /* enable <PlayForward> - Opcode 0x41 message */
318                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_0) ;
319                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE2_CFG_0, PLAY_FORWARD_EN)
320                                | BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE2_CFG_0, PLAY_FORWARD_SENSITIVITY));
321                Register |= BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_0, PLAY_FORWARD_EN, 1)
322                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_0, PLAY_FORWARD_SENSITIVITY, 7);
323                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_0, Register) ;
324
325
326                /* enable <DeckControlEject> message - Opcode 0x42 */   
327                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_1) ;
328                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE2_CFG_1, EJECT_EN)
329                                | BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE2_CFG_1, EJECT_SENSITIVITY));
330                Register |= BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_1, EJECT_EN, 1)
331                                | BCHP_FIELD_DATA(REGNAME_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_1, EJECT_SENSITIVITY, 7);
332                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_1, Register) ;
333
334               
335                /* Rearm WAKE2 configurations to enable rechecking */
336                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_0) ;
337                Register |= BCHP_MASK_DVP(AUTO_CEC_CHECK_WAKE2_CFG_0, WAKE2_REARM);
338                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CHECK_WAKE2_CFG_0, Register) ;  /* Wr 1 */                 
339               
340        }
341        else
342        {
343                BDBG_MSG(("Disable Auto-On CEC function"));
344               
345                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CFG) ;
346                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_CFG, SELECT_CEC_TX)
347                                | BCHP_MASK_DVP(AUTO_CEC_CFG, AUTO_CEC_EN));                                                                    /* Wr 0 */
348                Register |= BCHP_MASK_DVP(AUTO_CEC_CFG, AUTO_CLEAR_CEC_INTR_DET);                                               /* Wr 1 */
349                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CFG, Register) ;           
350
351                /* Need to toggle AUTO_CLEAR_CEC_INTR_DET */
352                Register = BREG_Read32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CFG) ;
353                Register &= ~(BCHP_MASK_DVP(AUTO_CEC_CFG, AUTO_CLEAR_CEC_INTR_DET));                                     /* Wr 0 */
354                BREG_Write32(hCEC->stDependencies.hRegister, REGADDR_CEC_TX_AUTO_CEC_CFG, Register) ;     
355        }
356               
357        return;
358}
359
360
Note: See TracBrowser for help on using the repository browser.