1:
9:
10:
14:
15:
#ifndef _SSCPRM_H_
16:
#define _SSCPRM_H_
17:
18:
19:
#include <stdint.h>
20:
#include "lib_common/AG903_common.h"
21:
22:
#ifdef __cplusplus
23:
extern "C" {
24:
#endif
25:
26:
#define AG903_SSC_SYSINT_CH_NUM (4)
27:
#define AG903_SSC_PINFUNC_REG_NUM (2)
28:
#define AG903_SSC_PIN_SETUP_INDEX_MAX (136)
29:
#define AG903_SSC_GPIOEN_REG_NUM (4)
30:
#define AG903_SSC_GPIOPU_REG_NUM (4)
31:
#define AG903_SSC_GPIOPD_REG_NUM (4)
32:
#define AG903_SSC_DMASEL_REG_NUM (4)
33:
#define AG903_SSC_TICKCNT_CH_NUM (2)
34:
#define AG903_SSC_CVBSDEC_CH_NUM (4)
35:
36:
#define AG903_SSC_PINDIR_INPUT (0)
37:
#define AG903_SSC_PINDIR_OUTPUT (1)
38:
39:
#define AG903_SSC_SSPMODE_FLLDPLX (0)
40:
#define AG903_SSC_SSPMODE_HLFDPLX (1)
41:
42:
#define AG903_SSC_PBHWAIT_HWAIT (0)
43:
#define AG903_SSC_PBHWAIT_BLP0BLGT (1)
44:
45:
#define AG903_SSC_USBMODE_HOST (0)
46:
#define AG903_SSC_USBMODE_DEVICE (1)
47:
48:
49:
50:
#define AG903_SSC_PIN_SETUP_LS3V_POS (7)
51:
#define AG903_SSC_PIN_SETUP_LS3V_MSK (0x1UL<<
AG903_SSC_PIN_SETUP_LS3V_POS)
52:
#define AG903_SSC_PIN_SETUP_DV_POS (5)
53:
#define AG903_SSC_PIN_SETUP_DV_MSK (0x3UL<<
AG903_SSC_PIN_SETUP_DV_POS)
54:
#define AG903_SSC_PIN_SETUP_SR_POS (4)
55:
#define AG903_SSC_PIN_SETUP_SR_MSK (0x1UL<<
AG903_SSC_PIN_SETUP_SR_POS)
56:
#define AG903_SSC_PIN_SETUP_SMT_POS (3)
57:
#define AG903_SSC_PIN_SETUP_SMT_MSK (0x1UL<<
AG903_SSC_PIN_SETUP_SMT_POS)
58:
#define AG903_SSC_PIN_SETUP_LVST_POS (0)
59:
#define AG903_SSC_PIN_SETUP_LVST_MSK (0x7UL<<
AG903_SSC_PIN_SETUP_LVST_POS)
60:
61:
62:
enum _AG903_SSC_WdtIntMode {
63: AG903_SSC_WDTINT_PULSE = 0,
64: AG903_SSC_WDTINT_LEVEL,
65: };
66:
67:
68:
enum _AG903_SSC_PINSETUP_LVST {
69: AG903_SSC_INPUT_DISABLE = 0,
70: AG903_SSC_INPUT_DISABLE_PLDWN,
71: AG903_SSC_INPUT_DISABLE_PLUP,
72: AG903_SSC_INPUT_ENABLE = 4,
73: AG903_SSC_INPUT_ENABLE_PLDWN,
74: AG903_SSC_INPUT_ENABLE_PLUP,
75: AG903_SSC_INPUT_ENABLE_LVKP,
76: };
77:
78:
79:
enum _AG903_SSC_TICK_SOURCE {
80: AG903_SSC_TICKSRC_SYSCLK = 0,
81: AG903_SSC_TICKSRC_INTERNAL,
82: AG903_SSC_TICKSRC_ALT0,
83: AG903_SSC_TICKSRC_ALT1,
84: AG903_SSC_TICKSRC_SSP0MCLK,
85: AG903_SSC_TICKSRC_SSP1MCLK,
86: AG903_SSC_TICKSRC_SSP2MCLK,
87: AG903_SSC_TICKSRC_SSP3MCLK,
88: };
89:
90:
91:
92:
93:
typedef struct _AG903_SSCPrmPinSetup{
94: uint8_t io3v;
95: uint8_t drive;
96: uint8_t sr_slow;
97: uint8_t schmitt;
98: uint8_t lv_set;
99: uint8_t reserve[3];
100: }
AG903_SSCPrmPinSetup;
101:
102:
103:
typedef struct _AG903_SSCPrmCpuRunStatus{
104: uint8_t sev_op;
105: uint8_t wfi_stby;
106: uint8_t wfe_stby;
107: uint8_t reset;
108: uint8_t clk;
109: uint8_t reserve[3];
110: }
AG903_SSCPrmCpuRunStatus;
111:
112:
113:
typedef struct _AG903_SSCPrmDspSetup{
114: uint8_t vsync0;
115: uint8_t field0;
116: uint8_t dot0;
117: uint8_t vsync1;
118: uint8_t field1;
119: uint8_t dot1;
120: uint8_t reserve[2];
121: }
AG903_SSCPrmDspSetup;
122:
123:
124:
typedef struct _AG903_SSCPrmSspSetup{
125: uint8_t mclk_div;
126: uint8_t mclk_dir;
127: uint8_t mode;
128: uint8_t dir;
129: }
AG903_SSCPrmSspSetup;
130:
131:
132:
typedef struct _AG903_SSCPrmTdmParam{
133: uint8_t enable;
134: uint8_t sclk_pol;
135: uint8_t fs_pol;
136: uint8_t fs_txpw;
137: uint8_t fs_dist;
138: uint8_t dir_tx;
139: uint8_t tdm_n;
140: uint8_t sclk_n;
141: }
AG903_SSCPrmTdmParam;
142:
143:
144:
typedef struct _AG903_SSCPrmTdmStatus{
145: uint8_t rx_err;
146: uint8_t tx_stat;
147: uint8_t rx_stat;
148: uint8_t reserve[2];
149: }
AG903_SSCPrmTdmStatus;
150:
151:
152:
typedef struct _AG903_SSCPrmVideoAdcParam{
153: uint8_t acq_clr;
154: uint8_t acq_en;
155: uint8_t dat_en;
156: uint8_t clmp_tmg;
157: uint8_t clmp_lv;
158: uint8_t pga_ctl;
159: uint8_t reserve[2];
160: }
AG903_SSCPrmVideoAdcParam;
161:
162:
163:
void AG903_SSCPrmGetRevesion(uint32_t* rev);
164:
void AG903_SSCPrmGetModeStatus(uint8_t* btmode, uint8_t* bttest, uint8_t* status);
165:
void AG903_SSCPrmClrModeStatus(uint8_t clr);
166:
void AG903_SSCPrmGetIrqStatus(uint32_t* lower, uint32_t* upper);
167:
void AG903_SSCPrmGetIntBusStatus(uint8_t* status);
168:
void AG903_SSCPrmSetIntBusEnable(uint8_t enable);
169:
void AG903_SSCPrmGetIntBusEnable(uint8_t* status);
170:
void AG903_SSCPrmGetSysIntStatus(uint32_t* lower, uint32_t* middle, uint32_t* upper);
171:
void AG903_SSCPrmSetSysIntEnable(uint8_t ch, uint32_t lower, uint32_t middle, uint32_t upper);
172:
void AG903_SSCPrmGetSysIntEnable(uint8_t ch, uint32_t* lower, uint32_t* middle, uint32_t* upper);
173:
void AG903_SSCPrmSetGfxClkDuty(uint8_t clk, uint8_t duty);
174:
void AG903_SSCPrmGetGfxClkDuty(uint8_t* clk, uint8_t* duty);
175:
void AG903_SSCPrmSetGvdClkDuty(uint8_t duty);
176:
void AG903_SSCPrmGetGvdClkDuty(uint8_t* duty);
177:
void AG903_SSCPrmSetWdtIntMode(uint8_t mode);
178:
void AG903_SSCPrmGetWdtIntMode(uint8_t* mode);
179:
void AG903_SSCPrmClrWdtInt(
void);
180:
void AG903_SSCPrmSetWdtOutputMode(uint8_t rst_ini, uint8_t rst_wdt, uint8_t wdt_ena, uint8_t wdt_od);
181:
void AG903_SSCPrmGetWdtOutputMode(uint8_t* rst_ini, uint8_t* rst_wdt, uint8_t* wdt_ena, uint8_t* wdt_od);
182:
void AG903_SSCPrmSetPinFunction(uint8_t reg_no, uint32_t val);
183:
void AG903_SSCPrmGetPinFunction(uint8_t reg_no, uint32_t* val);
184:
void AG903_SSCPrmSetPinSetup(uint8_t tbl_no,
AG903_SSCPrmPinSetup* setup);
185:
void AG903_SSCPrmGetPinSetup(uint8_t tbl_no,
AG903_SSCPrmPinSetup* setup);
186:
void AG903_SSCPrmSetPinGpioEnable(uint8_t reg_no, uint32_t val);
187:
void AG903_SSCPrmGetPinGpioEnable(uint8_t reg_no, uint32_t* val);
188:
void AG903_SSCPrmSetPinGpioPullUp(uint8_t reg_no, uint32_t val);
189:
void AG903_SSCPrmGetPinGpioPullUp(uint8_t reg_no, uint32_t* val);
190:
void AG903_SSCPrmSetPinGpioPullDown(uint8_t reg_no, uint32_t val);
191:
void AG903_SSCPrmGetPinGpioPullDown(uint8_t reg_no, uint32_t* val);
192:
void AG903_SSCPrmSetCpuSetup(uint8_t clk, uint8_t rst, uint8_t vbit);
193:
void AG903_SSCPrmGetCpuSetup(uint8_t* clk, uint8_t* rst, uint8_t* vbit);
194:
void AG903_SSCPrmClrCpuEventOutStatus(
void);
195:
void AG903_SSCPrmGetCpuStatus(
AG903_SSCPrmCpuRunStatus* status);
196:
void AG903_SSCPrmSetCpuAcpSetup(uint32_t acp_addr);
197:
void AG903_SSCPrmGetCpuAcpSetup(uint32_t* acp_addr);
198:
void AG903_SSCPrmSetDmaInterface(uint8_t reg_no, uint32_t val);
199:
void AG903_SSCPrmGetDmaInterface(uint8_t reg_no, uint32_t* val);
200:
void AG903_SSCPrmSetPbdDmaInterface(uint8_t val);
201:
void AG903_SSCPrmGetPbdDmaInterface(uint8_t* val);
202:
void AG903_SSCPrmSetDspPinDir(
AG903_SSCPrmDspSetup* dir);
203:
void AG903_SSCPrmGetDspPinDir(
AG903_SSCPrmDspSetup* dir);
204:
void AG903_SSCPrmSetTickSetup(uint8_t ch, uint8_t clksel, uint32_t div);
205:
void AG903_SSCPrmGetTickSetup(uint8_t ch, uint8_t* clksel, uint32_t* div);
206:
void AG903_SSCPrmSetTimerPinDir(uint8_t tim_dir);
207:
void AG903_SSCPrmGetTimerPinDir(uint8_t* tim_dir);
208:
void AG903_SSCPrmSetSspSetup(uint8_t ch,
AG903_SSCPrmSspSetup* param);
209:
void AG903_SSCPrmGetSspSetup(uint8_t ch,
AG903_SSCPrmSspSetup* param);
210:
void AG903_SSCPrmSetPbdCheckAddr(uint32_t sta_addr, uint32_t end_addr);
211:
void AG903_SSCPrmGetPbdCheckAddr(uint32_t* sta_addr, uint32_t* end_addr);
212:
void AG903_SSCPrmSetPbdAddrCheckEnable(uint8_t enable);
213:
void AG903_SSCPrmGetPbdAddrCheckEnable(uint8_t* enable);
214:
void AG903_SSCPrmGetPbdAddrCheckStatus(uint8_t* status);
215:
void AG903_SSCPrmGetBmuStatus(uint16_t* src_req, uint16_t* src_rdy, uint8_t* snk_req, uint8_t* snk_rdy);
216:
void AG903_SSCPrmSetBmuControl(uint16_t set_src, uint16_t clr_src, uint8_t set_snk, uint8_t clr_snk);
217:
void AG903_SSCPrmGetBmuTriggerStatus(uint16_t* src_req, uint16_t* src_rdy, uint8_t* snk_req, uint8_t* snk_rdy);
218:
void AG903_SSCPrmClrBmuTriggerStatus(uint16_t src_req, uint16_t src_rdy, uint8_t snk_req, uint8_t snk_rdy);
219:
void AG903_SSCPrmSetPortWait(uint16_t wait);
220:
void AG903_SSCPrmGetPortWait(uint16_t* wait);
221:
void AG903_SSCPrmSetPbhMode(uint8_t wait_sel);
222:
void AG903_SSCPrmGetPbhMode(uint8_t* wait_sel);
223:
void AG903_SSCPrmSetTdmSetup(uint8_t ch,
AG903_SSCPrmTdmParam* param);
224:
void AG903_SSCPrmGetTdmSetup(uint8_t ch,
AG903_SSCPrmTdmParam* param,
AG903_SSCPrmTdmStatus* stat);
225:
void AG903_SSCPrmSetUsbPowerSetup(uint8_t mode, uint8_t int_ena, uint8_t prtct_ena);
226:
void AG903_SSCPrmGetUsbPowerSetup(uint8_t* mode, uint8_t* int_ena, uint8_t* prtct_ena);
227:
void AG903_SSCPrmGetUsbPowerStatus(uint8_t* vbus_lv, uint8_t* prtct_lv, uint8_t* prtct_stat);
228:
void AG903_SSCPrmClrUsbPowerStatus(
void);
229:
void AG903_SSCPrmSetSdPowerSetup(uint8_t int_ena, uint8_t prtct_ena);
230:
void AG903_SSCPrmGetSdPowerSetup(uint8_t* int_ena, uint8_t* prtct_ena);
231:
void AG903_SSCPrmGetSdPowerStatus(uint8_t* prtct_lv, uint8_t* prtct_stat);
232:
void AG903_SSCPrmClrSdPowerStatus(
void);
233:
void AG903_SSCPrmSetVideoAdcSetup(
AG903_SSCPrmVideoAdcParam* param);
234:
void AG903_SSCPrmGetVideoAdcSetup(
AG903_SSCPrmVideoAdcParam* param);
235:
void AG903_SSCPrmWriteCmpstVideoDec(uint8_t ch, uint16_t reg, uint16_t data);
236:
void AG903_SSCPrmReadCmpstVideoDec(uint8_t ch, uint16_t reg, uint16_t* data);
237:
void AG903_SSCPrmGetVideoAdcMaxMin(uint8_t ch, uint16_t* max, uint16_t* min);
238:
void AG903_SSCPrmGetSgiStatus(uint32_t* stat);
239:
void AG903_SSCPrmSetSgi(uint32_t set);
240:
void AG903_SSCPrmClrSgi(uint32_t clr);
241:
void AG903_SSCPrmSetCpuJumpAddr(uint32_t addr);
242:
void AG903_SSCPrmGetCpuJumpAddr(uint32_t* addr);
243:
void AG903_SSCPrmSetFreeRunCnt(uint32_t upper, uint32_t lower);
244:
void AG903_SSCPrmGetFreeRunCnt(uint32_t* upper, uint32_t* lower);
245:
246:
#ifdef __cplusplus
247: }
248:
#endif
249:
#endif
250: