• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef MIPI_RX_HI2121_H
17 #define MIPI_RX_HI2121_H
18 
19 #include "mipi_csi_core.h"
20 
21 #define MIPI_RX_MAX_PHY_NUM                    1
22 #define MIPI_RX_MAX_EXT_DATA_TYPE_BIT_WIDTH    16
23 #define MIPI_RX_MIN_EXT_DATA_TYPE_BIT_WIDTH    8
24 
25 #define MIPI_CIL_INT_MASK   0x00003f3f
26 #define MIPI_CTRL_INT_MASK  0x00030003
27 #define LVDS_CTRL_INT_MASK  0x0f110000 /* lvds_vsync_msk and lane0~3_sync_err_msk ignore, not err int */
28 #define MIPI_FRAME_INT_MASK 0x000f0000
29 #define MIPI_PKT_INT1_MASK  0x0001000f
30 #define MIPI_PKT_INT2_MASK  0x000f000f
31 #define ALIGN0_INT_MASK     0x0000001f
32 
33 PhyErrIntCnt *MipiRxHalGetPhyErrIntCnt(unsigned int phyId);
34 MipiErrIntCnt *MipiRxHalGetMipiErrInt(unsigned int phyId);
35 LvdsErrIntCnt *MipiRxHalGetLvdsErrIntCnt(unsigned int phyId);
36 AlignErrIntCnt *MipiRxHalGetAlignErrIntCnt(unsigned int phyId);
37 
38 /* sensor function */
39 void SensorDrvEnableClock(uint8_t snsClkSource);
40 void SensorDrvDisableClock(uint8_t snsClkSource);
41 
42 void SensorDrvReset(uint8_t snsResetSource);
43 void SensorDrvUnreset(uint8_t snsResetSource);
44 
45 /* MipiRx function */
46 void MipiRxDrvSetWorkMode(uint8_t devno, InputMode inputMode);
47 void MipiRxDrvSetMipiImageRect(uint8_t devno, const ImgRect *pImgRect);
48 void MipiRxDrvSetMipiCropEn(uint8_t devno, int enable);
49 void MipiRxDrvSetDiDt(uint8_t devno, DataType inputDataType);
50 void MipiRxDrvSetMipiYuvDt(uint8_t devno, DataType inputDataType);
51 void MipiRxDrvSetMipiWdrUserDt(uint8_t devno, DataType inputDataType,
52     const short dataType[WDR_VC_NUM]);
53 void MipiRxDrvSetMipiDolId(uint8_t devno, DataType inputDataType, const short dolId[]);
54 void MipiRxDrvSetMipiWdrMode(uint8_t devno, MipiWdrMode wdrMode);
55 unsigned int MipiRxDrvGetPhyData(int phyId, int laneId);
56 unsigned int MipiRxDrvGetPhyMipiLinkData(int phyId, int laneId);
57 unsigned int MipiRxDrvGetPhyLvdsLinkData(int phyId, int laneId);
58 
59 void MipiRxDrvSetDataRate(uint8_t devno, MipiDataRate dataRate);
60 void MipiRxDrvSetLinkLaneId(uint8_t devno, InputMode inputMode, const short *pLaneId,
61     unsigned int laneBitmap, LaneDivideMode mode);
62 void MipiRxDrvSetMemCken(uint8_t devno, int enable);
63 void MipiRxDrvSetClrCken(uint8_t devno, int enable);
64 void MipiRxDrvSetLaneNum(uint8_t devno, unsigned int laneNum);
65 void MipiRxDrvSetPhyConfig(InputMode inputMode, unsigned int laneBitmap);
66 void MipiRxDrvSetPhyCmvmode(InputMode inputMode, PhyCmvMode cmvMode, unsigned int laneBitmap);
67 
68 void MipiRxDrvSetPhyEn(unsigned int laneBitmap);
69 void MipiRxDrvSetCmosEn(unsigned int phyId, int enable);
70 void MipiRxDrvSetLaneEn(unsigned int laneBitmap);
71 void MipiRxDrvSetPhyCilEn(unsigned int laneBitmap, int enable);
72 void MipiRxDrvSetPhyCfgMode(InputMode inputMode, unsigned int laneBitmap);
73 void MipiRxDrvSetPhyCfgEn(unsigned int laneBitmap, int enable);
74 void MipiRxSetPhyRgLp0ModeEn(unsigned int phyId, int enable);
75 void MipiRxSetPhyRgLp1ModeEn(unsigned int phyId, int enable);
76 void MipiRxDrvSetExtDataType(const ExtDataType* dataType, DataType inputDataType);
77 
78 void MipiRxDrvSetLvdsImageRect(uint8_t devno, const ImgRect *pImgRect, short totalLaneNum);
79 void MipiRxDrvSetLvdsCropEn(uint8_t devno, int enable);
80 
81 int MipiRxDrvSetLvdsWdrMode(uint8_t devno, WdrMode wdrMode,
82     const LvdsVsyncAttr *vsyncAttr, const LvdsFidAttr *fidAttr);
83 void MipiRxDrvSetLvdsCtrlMode(uint8_t devno, LvdsSyncMode syncMode,
84     DataType inputDataType, LvdsBitEndian dataEndian, LvdsBitEndian syncCodeEndian);
85 
86 void MipiRxDrvSetLvdsDataRate(uint8_t devno, MipiDataRate dataRate);
87 
88 void MipiRxDrvSetDolLineInformation(uint8_t devno, WdrMode wdrMode);
89 void MipiRxDrvSetLvdsSyncCode(uint8_t devno, unsigned int laneCnt,
90     const short laneId[LVDS_LANE_NUM], const unsigned short syncCode[][WDR_VC_NUM][SYNC_CODE_NUM]);
91 
92 void MipiRxDrvSetLvdsNxtSyncCode(uint8_t devno, unsigned int laneCnt,
93     const short laneId[LVDS_LANE_NUM], const unsigned short syncCode[][WDR_VC_NUM][SYNC_CODE_NUM]);
94 
95 void MipiRxDrvSetPhySyncConfig(const LvdsDevAttr *pAttr, unsigned int laneBitmap,
96     const unsigned short nxtSyncCode[][WDR_VC_NUM][SYNC_CODE_NUM]);
97 
98 int MipiRxDrvIsLaneValid(uint8_t devno, short laneId, LaneDivideMode mode);
99 void MipiRxDrvSetHsMode(LaneDivideMode laneDivideMode);
100 
101 void MipiRxDrvGetMipiImgsizeStatis(uint8_t devno, short vc, ImgSize *pSize);
102 void MipiRxDrvGetLvdsImgsizeStatis(uint8_t devno, short vc, ImgSize *pSize);
103 void MipiRxDrvGetLvdsLaneImgsizeStatis(uint8_t devno, short lane, ImgSize *pSize);
104 
105 void MipiRxDrvSetMipiIntMask(uint8_t devno);
106 void MipiRxDrvSetLvdsCtrlIntMask(uint8_t devno, unsigned int mask);
107 void MipiRxDrvSetMipiCtrlIntMask(uint8_t devno, unsigned int mask);
108 void MipiRxDrvSetMipiPkt1IntMask(uint8_t devno, unsigned int mask);
109 void MipiRxDrvSetMipiPkt2IntMask(uint8_t devno, unsigned int mask);
110 void MipiRxDrvSetMipiFrameIntMask(uint8_t devno, unsigned int mask);
111 void MipiRxDrvSetAlignIntMask(uint8_t devno, unsigned int mask);
112 
113 void MipiRxDrvEnableClock(uint8_t comboDev);
114 void MipiRxDrvDisableClock(uint8_t comboDev);
115 
116 void MipiRxDrvCoreReset(uint8_t comboDev);
117 void MipiRxDrvCoreUnreset(uint8_t comboDev);
118 
119 int MipiRxDrvInit(void);
120 void MipiRxDrvExit(void);
121 
122 #endif
123