source: svn/newcon3bcm2_21bu/magnum/portinginterface/ape/7552/bape_reg_priv.h

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 7.5 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2006-2012, Broadcom Corporation
3 *     All Rights Reserved
4 *     Confidential Property of Broadcom Corporation
5 *
6 *  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7 *  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8 *  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9 *
10 * $brcm_Workfile: bape_reg_priv.h $
11 * $brcm_Revision: Hydra_Software_Devel/3 $
12 * $brcm_Date: 2/2/12 5:42p $
13 *
14 * Module Description: APE Register Routines
15 *
16 * Revision History:
17 *
18 * $brcm_Log: /magnum/portinginterface/ape/7422/bape_reg_priv.h $
19 *
20 * Hydra_Software_Devel/3   2/2/12 5:42p gskerl
21 * SW7429-18: Added BAPE_Reg_P_ReadField() and BAPE_Reg_P_ReadField_isr().
22 *
23 * Hydra_Software_Devel/2   1/13/12 3:31p gskerl
24 * SW7429-18: Added BAPE_ wrappers for BCHP_ field macros in order to
25 * provide macro expansion for arguments.
26 *
27 * Hydra_Software_Devel/1   11/14/11 3:14p gskerl
28 * SW7429-18: Merging 7429 changes back to main branch.
29 *
30 * Hydra_Software_Devel/SW7429-18/3   11/7/11 2:03p gskerl
31 * SW7429-18: Fixed parentheses in BAPE_Reg_P_Update() and
32 * BAPE_Reg_P_Update_isr()
33 *
34 * Hydra_Software_Devel/SW7429-18/2   10/25/11 5:33p jgarrett
35 * SW7429-18: Adding _isr version of InitFieldList
36 *
37 * Hydra_Software_Devel/SW7429-18/1   10/21/11 6:40p jgarrett
38 * SW7429-18: Initial compileable version for 7429
39 *
40 ***************************************************************************/
41#ifndef BAPE_REG_PRIV_H_
42#define BAPE_REG_PRIV_H_
43
44#include "breg_mem.h"
45
46/* Compute Array Register Address */
47#define BAPE_Reg_P_GetArrayAddress(ArrayName, ArrayIndex) (BDBG_ASSERT((ArrayIndex)<=BCHP_##ArrayName##_ARRAY_END),(BCHP_##ArrayName##_ARRAY_BASE)+((ArrayIndex)*((BCHP_##ArrayName##_ARRAY_ELEMENT_SIZE)/8)))
48
49/* Read/Write registers */
50#define BAPE_Reg_P_Read(hApe, regAddr) (BREG_Read32((hApe)->regHandle, (regAddr)))
51#define BAPE_Reg_P_Write(hApe, regAddr, regVal) (BREG_Write32((hApe)->regHandle, (regAddr), (regVal)))
52
53#define BAPE_Reg_P_Read_isr(hApe, regAddr) (BREG_Read32_isr((hApe)->regHandle, (regAddr)))
54#define BAPE_Reg_P_Write_isr(hApe, regAddr, regVal) (BREG_Write32_isr((hApe)->regHandle, (regAddr), (regVal)))
55
56#define BAPE_Reg_P_ReadField(hApe, regAddr, regName, fieldName)        BCHP_GET_FIELD_DATA(BAPE_Reg_P_Read    (hApe, regAddr),regName,fieldName)
57#define BAPE_Reg_P_ReadField_isr(hApe, regAddr, regName, fieldName)    BCHP_GET_FIELD_DATA(BAPE_Reg_P_Read_isr(hApe, regAddr),regName,fieldName)
58
59/* Update registers based on address, mask, value */
60#define BAPE_Reg_P_Update(hApe, regAddr, regMask, regVal) (BREG_Write32((hApe)->regHandle, (regAddr), (BREG_Read32((hApe)->regHandle, (regAddr)) & ~(regMask)) | (regVal)))
61#define BAPE_Reg_P_UpdateAtomic(hApe, regAddr, regMask, regVal) (BREG_AtomicUpdate32((hApe)->regHandle, regAddr, regMask, regVal))
62
63#define BAPE_Reg_P_Update_isr(hApe, regAddr, regMask, regVal) (BREG_Write32_isr((hApe)->regHandle, (regAddr), (BREG_Read32((hApe)->regHandle, (regAddr)) & ~(regMask)) | (regVal)))
64#define BAPE_Reg_P_UpdateAtomic_isr(hApe, regAddr, regMask, regVal) (BREG_AtomicUpdate32_isr((hApe)->regHandle, regAddr, regMask, regVal))
65
66/* Update single field of a register */
67#define BAPE_Reg_P_UpdateField(hApe, regAddr, regName, fieldName, fieldData) (BAPE_Reg_P_Update(hApe, regAddr, BCHP_MASK(regName, fieldName), BCHP_FIELD_DATA(regName, fieldName, fieldData)))
68#define BAPE_Reg_P_UpdateFieldAtomic(hApe, regAddr, regName, fieldName, fieldData) (BAPE_Reg_P_AtomicUpdate(hApe, regAddr, BCHP_MASK(regName, fieldName), BCHP_FIELD_DATA(regName, fieldName, fieldData)))
69
70#define BAPE_Reg_P_UpdateField_isr(hApe, regAddr, regName, fieldName, fieldData) (BAPE_Reg_P_Update_isr(hApe, regAddr, BCHP_MASK(regName, fieldName), BCHP_FIELD_DATA(regName, fieldName, fieldData)))
71#define BAPE_Reg_P_UpdateFieldAtomic_isr(hApe, regAddr, regName, fieldName, fieldData) (BAPE_Reg_P_AtomicUpdate_isr(hApe, regAddr, BCHP_MASK(regName, fieldName), BCHP_FIELD_DATA(regName, fieldName, fieldData)))
72
73/* Update single enum field of a register */
74#define BAPE_Reg_P_UpdateEnum(hApe, regAddr, regName, fieldName, fieldEnumVal) (BAPE_Reg_P_Update(hApe, regAddr, BCHP_MASK(regName, fieldName), BCHP_FIELD_ENUM(regName, fieldName, fieldEnumVal)))
75#define BAPE_Reg_P_UpdateEnumAtomic(hApe, regAddr, regName, fieldName, fieldEnumVal) (BAPE_Reg_P_AtomicUpdate(hApe, regAddr, BCHP_MASK(regName, fieldName), BCHP_FIELD_ENUM(regName, fieldName, fieldEnumVal)))
76
77#define BAPE_Reg_P_UpdateEnum_isr(hApe, regAddr, regName, fieldName, fieldEnumVal) (BAPE_Reg_P_Update_isr(hApe, regAddr, BCHP_MASK(regName, fieldName), BCHP_FIELD_ENUM(regName, fieldName, fieldEnumVal)))
78#define BAPE_Reg_P_UpdateEnumAtomic_isr(hApe, regAddr, regName, fieldName, fieldEnumVal) (BAPE_Reg_P_AtomicUpdate_isr(hApe, regAddr, BCHP_MASK(regName, fieldName), BCHP_FIELD_ENUM(regName, fieldName, fieldEnumVal)))
79
80/* Create some wrapper macros for the BCHP_ field macros.
81   This is needed to allow for macro-expansion of arguments.
82   Currently, BCHP_FIELD_ENUM, BCHP_MASK, and BCHP_SHIFT do NOT
83   macro-expand their arguments.  */
84#define BAPE_P_FIELD_ENUM(Register,Field,Name) \
85        BCHP_FIELD_ENUM(Register,Field,Name)
86
87#define BAPE_P_BCHP_MASK(Register,Field) \
88        BCHP_MASK(Register,Field)
89
90#define BAPE_P_BCHP_SHIFT(Register,Field) \
91        BCHP_SHIFT(Register,Field)
92
93#define BAPE_P_BCHP_ENUM_private(Register,Field,Name) \
94        BCHP_##Register##_##Field##_##Name
95
96#define BAPE_P_BCHP_ENUM(Register,Field,Name)  \
97        BAPE_P_BCHP_ENUM_private(Register,Field,Name)      /* Using wrapper macro to provide macro-expansion of args */
98
99
100/* Field List */
101BDBG_OBJECT_ID_DECLARE(BAPE_Reg_P_FieldList);
102typedef struct BAPE_Reg_P_FieldList
103{
104    BDBG_OBJECT(BAPE_Reg_P_FieldList)
105    uint32_t mask, value;
106    BAPE_Handle hApe;
107}BAPE_Reg_P_FieldList;
108
109/* Initialize Field List */
110#define BAPE_Reg_P_InitFieldList(ApeHandle, FieldList) do { BDBG_OBJECT_SET(FieldList, BAPE_Reg_P_FieldList); (FieldList)->mask=0; (FieldList)->value=0; (FieldList)->hApe=(ApeHandle); } while(0)
111#define BAPE_Reg_P_InitFieldList_isr BAPE_Reg_P_InitFieldList
112
113/* Add Value to field list */
114#define BAPE_Reg_P_AddMaskValueToFieldList_isr BAPE_Reg_P_AddMaskValueToFieldList
115void BAPE_Reg_P_AddMaskValueToFieldList(BAPE_Reg_P_FieldList *pFieldList, uint32_t mask, uint32_t value);
116
117#define BAPE_Reg_P_AddToFieldList(FieldList, RegName, FieldName, FieldData) BAPE_Reg_P_AddMaskValueToFieldList(FieldList, BCHP_MASK(RegName, FieldName), BCHP_FIELD_DATA(RegName, FieldName, FieldData))
118#define BAPE_Reg_P_AddEnumToFieldList(FieldList, RegName, FieldName, FieldEnum) BAPE_Reg_P_AddMaskValueToFieldList(FieldList, BCHP_MASK(RegName, FieldName), BCHP_FIELD_ENUM(RegName, FieldName, FieldEnum))
119
120#define BAPE_Reg_P_AddToFieldList_isr(FieldList, RegName, FieldName, FieldData) BAPE_Reg_P_AddMaskValueToFieldList_isr(FieldList, BCHP_MASK(RegName, FieldName), BCHP_FIELD_DATA(RegName, FieldName, FieldData))
121#define BAPE_Reg_P_AddEnumToFieldList_isr(FieldList, RegName, FieldName, FieldEnum) BAPE_Reg_P_AddMaskValueToFieldList_isr(FieldList, BCHP_MASK(RegName, FieldName), BCHP_FIELD_ENUM(RegName, FieldName, FieldEnum))
122
123/* Apply field list to a register */
124void BAPE_Reg_P_ApplyFieldList(BAPE_Reg_P_FieldList *pFieldList, uint32_t address);
125void BAPE_Reg_P_ApplyFieldListAtomic(BAPE_Reg_P_FieldList *pFieldList, uint32_t address);
126
127void BAPE_Reg_P_ApplyFieldList_isr(BAPE_Reg_P_FieldList *pFieldList, uint32_t address);
128void BAPE_Reg_P_ApplyFieldListAtomic_isr(BAPE_Reg_P_FieldList *pFieldList, uint32_t address);
129
130#endif /* !defined BAPE_REG_PRIV_H_ */
Note: See TracBrowser for help on using the repository browser.