From 56076e15d183f8b994941b70b0d0d81f17afb5c2 Mon Sep 17 00:00:00 2001 From: YOUR_NAME Date: Fri, 22 Oct 2021 10:18:18 +0800 Subject: [PATCH] =?UTF-8?q?mipi=E8=A7=84=E8=8C=83=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: YOUR_NAME --- mipi_csi/mipi_csi_hi35xx.c | 128 +++++++++++++++++++------------------ mipi_csi/mipi_rx_hi2121.c | 13 ++-- mipi_dsi/mipi_tx_hi35xx.c | 87 +++++++++++++------------ 3 files changed, 121 insertions(+), 107 deletions(-) diff --git a/mipi_csi/mipi_csi_hi35xx.c b/mipi_csi/mipi_csi_hi35xx.c index bd8317e..6799c46 100755 --- a/mipi_csi/mipi_csi_hi35xx.c +++ b/mipi_csi/mipi_csi_hi35xx.c @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - + #include "mipi_csi_hi35xx.h" #include "hdf_log.h" #include "mipi_rx_hi2121.h" @@ -24,6 +24,7 @@ extern "C" { #endif #endif /* End of #ifdef __cplusplus */ +#define HDF_LOG_TAG mipi_csi_hi35xx /* macro definition */ #define MIPI_RX_DEV_NAME "mipi_csi_dev" #define MIPI_RX_PROC_NAME "mipi_rx" @@ -89,7 +90,7 @@ static int CheckLane(uint8_t devno, int laneNum, LaneDivideMode curLaneDivideMod if (tempId < -1 || tempId >= COMBO_MAX_LANE_NUM) { HDF_LOGE("%s: laneId[%d] is invalid value %d.", __func__, i, tempId); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (tempId == -1) { @@ -101,19 +102,19 @@ static int CheckLane(uint8_t devno, int laneNum, LaneDivideMode curLaneDivideMod for (j = i + 1; j < laneNum; j++) { if (tempId == pLaneId[j]) { HDF_LOGE("%s: laneId[%d] can't be same value %d as laneId[%d]", __func__, i, tempId, j); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } } laneValid = MipiRxDrvIsLaneValid(devno, tempId, curLaneDivideMode); if (laneValid == 0) { HDF_LOGE("%s: laneId[%d] %d is invalid in hs_mode %d", __func__, i, tempId, curLaneDivideMode); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } } if (allLaneIdInvalidFlag != 0) { HDF_LOGE("%s: all laneId is invalid!", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } return HDF_SUCCESS; } @@ -136,13 +137,13 @@ static int CheckLaneId(struct MipiCsiCntlr *cntlr, uint8_t devno, InputMode inpu OsalSpinLock(&cntlr->ctxLock); curLaneDivideMode = cntlr->ctx.laneDivideMode; OsalSpinUnlock(&cntlr->ctxLock); - if (CheckLane(devno, laneNum, curLaneDivideMode, &laneSum, pLaneId) == HDF_FAILURE) { + if (CheckLane(devno, laneNum, curLaneDivideMode, &laneSum, pLaneId) != HDF_SUCCESS) { HDF_LOGE("%s: laneId is invalid!", __func__); return HDF_FAILURE; } if ((curLaneDivideMode == LANE_DIVIDE_MODE_1) && (laneSum > mode1LaneNum)) { HDF_LOGE("%s: When divide mode is LANE_DIVIDE_MODE_1, valid lane number cannot be greater than 2", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } return HDF_SUCCESS; } @@ -181,41 +182,41 @@ static int MipiCheckCombDevAttr(const ComboDevAttr *pAttr) { if (pAttr->devno >= COMBO_DEV_MAX_NUM) { HDF_LOGE("%s: invalid comboDev number(%d).", __func__, pAttr->devno); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (pAttr->inputMode < INPUT_MODE_MIPI || pAttr->inputMode >= INPUT_MODE_BUTT) { HDF_LOGE("%s: invalid inputMode(%d).", __func__, pAttr->inputMode); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (pAttr->dataRate != MIPI_DATA_RATE_X1) { HDF_LOGE("%s: invalid dataRate(%d).", __func__, pAttr->dataRate); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (pAttr->imgRect.x < 0 || pAttr->imgRect.y < 0) { HDF_LOGE("%s: crop x and y (%d, %d) must be great than 0", __func__, pAttr->imgRect.x, pAttr->imgRect.y); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (pAttr->imgRect.width < COMBO_MIN_WIDTH || pAttr->imgRect.height < COMBO_MIN_HEIGHT) { HDF_LOGE("%s: invalid imgSize(%d, %d), can't be smaller than (%d, %d)", __func__, pAttr->imgRect.width, pAttr->imgRect.height, COMBO_MIN_WIDTH, COMBO_MIN_HEIGHT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } /* width and height align 2 */ if ((pAttr->imgRect.width & (MIPI_WIDTH_ALIGN - 1)) != 0) { HDF_LOGE("%s: imgWidth should be %d bytes align which is %d!", __func__, MIPI_WIDTH_ALIGN, pAttr->imgRect.width); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((pAttr->imgRect.height & (MIPI_HEIGHT_ALIGN - 1)) != 0) { HDF_LOGE("%s: imgHeight should be %d bytes align which is %d!", __func__, MIPI_WIDTH_ALIGN, pAttr->imgRect.height); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } return HDF_SUCCESS; @@ -273,44 +274,44 @@ static int CheckLvdsDevAttr(struct MipiCsiCntlr *cntlr, uint8_t devno, const Lvd if ((pAttr->inputDataType < DATA_TYPE_RAW_8BIT) || (pAttr->inputDataType > DATA_TYPE_RAW_16BIT)) { HDF_LOGE("%s: invalid dataType, must be in [%d, %d]", __func__, DATA_TYPE_RAW_8BIT, DATA_TYPE_RAW_16BIT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((pAttr->wdrMode < HI_WDR_MODE_NONE) || (pAttr->wdrMode >= HI_WDR_MODE_BUTT)) { HDF_LOGE("%s: invalid wdrMode, must be in [%d, %d)", __func__, HI_WDR_MODE_NONE, HI_WDR_MODE_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((pAttr->syncMode < LVDS_SYNC_MODE_SOF) || (pAttr->syncMode >= LVDS_SYNC_MODE_BUTT)) { HDF_LOGE("%s: invalid syncMode, must be in [%d, %d)", __func__, LVDS_SYNC_MODE_SOF, LVDS_SYNC_MODE_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (pAttr->vsyncAttr.syncType < LVDS_VSYNC_NORMAL || pAttr->vsyncAttr.syncType >= LVDS_VSYNC_BUTT) { HDF_LOGE("%s: invalid vsync_code, must be in [%d, %d)", __func__, LVDS_VSYNC_NORMAL, LVDS_VSYNC_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (pAttr->fidAttr.fidType < LVDS_FID_NONE || pAttr->fidAttr.fidType >= LVDS_FID_BUTT) { HDF_LOGE("%s: invalid fidType, must be in [%d, %d)", __func__, LVDS_FID_NONE, LVDS_FID_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (pAttr->fidAttr.outputFil != TRUE && pAttr->fidAttr.outputFil != FALSE) { HDF_LOGE("%s: invalid outputFil, must be HI_TURE or FALSE", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((pAttr->dataEndian < LVDS_ENDIAN_LITTLE) || (pAttr->dataEndian >= LVDS_ENDIAN_BUTT)) { HDF_LOGE("%s: invalid lvds_bit_endian, must be in [%d, %d)", __func__, LVDS_ENDIAN_LITTLE, LVDS_ENDIAN_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((pAttr->syncCodeEndian < LVDS_ENDIAN_LITTLE) || (pAttr->syncCodeEndian >= LVDS_ENDIAN_BUTT)) { HDF_LOGE("%s: invalid lvds_bit_endian, must be in [%d, %d)", __func__, LVDS_ENDIAN_LITTLE, LVDS_ENDIAN_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } ret = CheckLvdsWdrMode(pAttr); @@ -452,7 +453,7 @@ static int MipiSetLvdsDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *pC /* data type & mode */ ret = MipiRxDrvSetLvdsWdrMode(devno, pLvdsAttr->wdrMode, &pLvdsAttr->vsyncAttr, &pLvdsAttr->fidAttr); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: set lvds wdr mode failed!", __func__); return HDF_FAILURE; } @@ -475,18 +476,18 @@ static int CheckMipiDevAttr(struct MipiCsiCntlr *cntlr, uint8_t devno, const Mip if ((pAttr->inputDataType < DATA_TYPE_RAW_8BIT) || (pAttr->inputDataType >= DATA_TYPE_BUTT)) { HDF_LOGE("%s: invalid inputDataType, must be in [%d, %d)", __func__, DATA_TYPE_RAW_8BIT, DATA_TYPE_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((pAttr->wdrMode < HI_MIPI_WDR_MODE_NONE) || (pAttr->wdrMode >= HI_MIPI_WDR_MODE_BUTT)) { HDF_LOGE("%s: invalid wdrMode, must be in [%d, %d)", __func__, HI_MIPI_WDR_MODE_NONE, HI_MIPI_WDR_MODE_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((pAttr->wdrMode != HI_MIPI_WDR_MODE_NONE) && (pAttr->inputDataType >= DATA_TYPE_YUV420_8BIT_NORMAL)) { HDF_LOGE("%s: It do not support wdr mode when inputDataType is yuv format!", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (pAttr->wdrMode == HI_MIPI_WDR_MODE_DT) { @@ -494,13 +495,13 @@ static int CheckMipiDevAttr(struct MipiCsiCntlr *cntlr, uint8_t devno, const Mip /* dataType must be the CSI-2 reserve Type [0x38, 0x3f] */ if (pAttr->dataType[i] < 0x38 || pAttr->dataType[i] > 0x3f) { HDF_LOGE("%s: invalid dataType[%d]: %d, must be in [0x38, 0x3f]", __func__, i, pAttr->dataType[i]); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } } } ret = CheckLaneId(cntlr, devno, INPUT_MODE_MIPI, pAttr->laneId); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: CheckLaneId failed!", __func__); return HDF_FAILURE; } @@ -597,7 +598,7 @@ static int MipiSetMipiDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *pC } ret = CheckMipiDevAttr(cntlr, devno, pMipiAttr); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: CheckMipiDevAttr failed!", __func__); return HDF_FAILURE; } @@ -635,7 +636,7 @@ static int MipiSetCmosDevAttr(const ComboDevAttr *pComboDevAttr) if ((devno > CMOS_MAX_DEV_NUM) || (devno == 0)) { HDF_LOGE("%s: invalid cmos devno(%d)!", __func__, devno); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (devno == 1) { @@ -660,12 +661,12 @@ static int MipiSetCmosDevAttr(const ComboDevAttr *pComboDevAttr) return HDF_SUCCESS; } -static int MipiSetComboDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *pAttr) +static int32_t MipiSetComboDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *pAttr) { - int ret; + int32_t ret; ret = MipiCheckCombDevAttr(pAttr); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: mipi check comboDev attr failed!", __func__); return HDF_FAILURE; } @@ -684,7 +685,7 @@ static int MipiSetComboDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *p case INPUT_MODE_MIPI: { ret = MipiSetMipiDevAttr(cntlr, pAttr); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: mipi set mipi attr failed!", __func__); ret = HDF_FAILURE; } @@ -696,7 +697,7 @@ static int MipiSetComboDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *p case INPUT_MODE_BT656: case INPUT_MODE_BT1120: { ret = MipiSetCmosDevAttr(pAttr); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: mipi set cmos attr failed!", __func__); ret = HDF_FAILURE; } @@ -713,18 +714,18 @@ static int MipiSetComboDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *p return ret; } -static long SetComboDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *argp) +static int32_t SetComboDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *argp) { int32_t ret; errno_t err; + uint8_t devno; if (argp == NULL) { HDF_LOGE("%s: NULL pointer \r", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_OBJECT; } - uint8_t devno = argp->devno; - + devno = argp->devno; OsalSpinLock(&cntlr->ctxLock); cntlr->ctx.devCfged[devno] = true; err = memcpy_s(&cntlr->ctx.comboDevAttr[devno], sizeof(ComboDevAttr), argp, sizeof(ComboDevAttr)); @@ -732,10 +733,12 @@ static long SetComboDevAttr(struct MipiCsiCntlr *cntlr, const ComboDevAttr *argp cntlr->ctx.devCfged[devno] = false; HDF_LOGE("%s: [memcpy_s] failed.", __func__); ret = HDF_FAILURE; + } else { + ret = HDF_SUCCESS; } OsalSpinUnlock(&cntlr->ctxLock); - return HDF_SUCCESS; + return ret; } static int32_t Hi35xxSetComboDevAttr(struct MipiCsiCntlr *cntlr, ComboDevAttr *pAttr) @@ -745,6 +748,8 @@ static int32_t Hi35xxSetComboDevAttr(struct MipiCsiCntlr *cntlr, ComboDevAttr *p ret = MipiSetComboDevAttr(cntlr, pAttr); if (ret == HDF_SUCCESS) { ret = SetComboDevAttr(cntlr, pAttr); + } else { + HDF_LOGE("%s: [MipiSetComboDevAttr] failed.", __func__); } return ret; @@ -761,7 +766,7 @@ static int32_t Hi35xxSetExtDataType(struct MipiCsiCntlr *cntlr, ExtDataType *dat if (devno >= COMBO_DEV_MAX_NUM) { HDF_LOGE("%s: invalid mipi dev number(%d).", __func__, devno); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (!MipiIsDevCfged(cntlr, devno)) { @@ -776,24 +781,24 @@ static int32_t Hi35xxSetExtDataType(struct MipiCsiCntlr *cntlr, ExtDataType *dat if (inputMode != INPUT_MODE_MIPI) { HDF_LOGE("%s: devno: %d, input mode: %d, not support set data type", __func__, devno, inputMode); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (dataType->num > MAX_EXT_DATA_TYPE_NUM) { HDF_LOGE("%s: invalid ext data type num(%d)", __func__, dataType->num); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } for (i = 0; i < dataType->num; i++) { if (dataType->extDataBitWidth[i] < MIPI_RX_MIN_EXT_DATA_TYPE_BIT_WIDTH || dataType->extDataBitWidth[i] > MIPI_RX_MAX_EXT_DATA_TYPE_BIT_WIDTH) { HDF_LOGE("%s: invalid ext data bit width(%d)", __func__, dataType->extDataBitWidth[i]); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (dataType->extDataBitWidth[i] % 2 != 0) { /* 2:even check */ HDF_LOGE("%s: invalid ext data bit width(%d),must be even value", __func__, dataType->extDataBitWidth[i]); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } } @@ -809,18 +814,18 @@ static int32_t Hi35xxSetPhyCmvmode(struct MipiCsiCntlr *cntlr, uint8_t devno, Ph if (devno >= COMBO_DEV_MAX_NUM) { HDF_LOGE("%s: invalid mipi dev number(%d).", __func__, devno); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((cmvMode < PHY_CMV_GE1200MV) || (cmvMode >= PHY_CMV_BUTT)) { HDF_LOGE("%s: invalid common mode voltage mode: %d, must be int [%d, %d)", __func__, cmvMode, PHY_CMV_GE1200MV, PHY_CMV_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (!MipiIsDevCfged(cntlr, devno)) { HDF_LOGE("%s: MIPI device %d has not beed configured", __func__, devno); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } OsalSpinLock(&cntlr->ctxLock); @@ -833,7 +838,7 @@ static int32_t Hi35xxSetPhyCmvmode(struct MipiCsiCntlr *cntlr, uint8_t devno, Ph inputMode != INPUT_MODE_LVDS && inputMode != INPUT_MODE_HISPI) { HDF_LOGE("%s: devno: %d, input mode: %d, not support set common voltage mode", __func__, devno, inputMode); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } MipiRxDrvSetPhyCmvmode(inputMode, cmvMode, laneBitMap); @@ -846,7 +851,7 @@ static int32_t Hi35xxResetSensor(struct MipiCsiCntlr *cntlr, uint8_t snsResetSou (void)cntlr; if (snsResetSource >= SNS_MAX_RST_SOURCE_NUM) { HDF_LOGE("%s: invalid snsResetSource(%d).", __func__, snsResetSource); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } SensorDrvReset(snsResetSource); @@ -859,7 +864,7 @@ static int32_t Hi35xxUnresetSensor(struct MipiCsiCntlr *cntlr, uint8_t snsResetS (void)cntlr; if (snsResetSource >= SNS_MAX_RST_SOURCE_NUM) { HDF_LOGE("%s: invalid snsResetSource(%d).", __func__, snsResetSource); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } SensorDrvUnreset(snsResetSource); @@ -872,7 +877,7 @@ static int32_t Hi35xxResetRx(struct MipiCsiCntlr *cntlr, uint8_t comboDev) (void)cntlr; if (comboDev >= MIPI_RX_MAX_DEV_NUM) { HDF_LOGE("%s: invalid comboDev num(%d).", __func__, comboDev); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } MipiRxDrvCoreReset(comboDev); @@ -885,7 +890,7 @@ static int32_t Hi35xxUnresetRx(struct MipiCsiCntlr *cntlr, uint8_t comboDev) (void)cntlr; if (comboDev >= MIPI_RX_MAX_DEV_NUM) { HDF_LOGE("%s: invalid comboDev num(%d).", __func__, comboDev); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } MipiRxDrvCoreUnreset(comboDev); @@ -914,7 +919,7 @@ static int32_t Hi35xxSetHsMode(struct MipiCsiCntlr *cntlr, LaneDivideMode laneDi (laneDivideMode >= LANE_DIVIDE_MODE_BUTT)) { HDF_LOGE("%s: invalid laneDivideMode(%d), must be in [%d, %d)", __func__, laneDivideMode, LANE_DIVIDE_MODE_0, LANE_DIVIDE_MODE_BUTT); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } MipiRxDrvSetHsMode(laneDivideMode); @@ -934,7 +939,7 @@ static int32_t Hi35xxEnableClock(struct MipiCsiCntlr *cntlr, uint8_t comboDev) (void)cntlr; if (comboDev >= MIPI_RX_MAX_DEV_NUM) { HDF_LOGE("%s: invalid comboDev num(%d).", __func__, comboDev); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } MipiRxDrvEnableClock(comboDev); @@ -947,7 +952,7 @@ static int32_t Hi35xxDisableClock(struct MipiCsiCntlr *cntlr, uint8_t comboDev) (void)cntlr; if (comboDev >= MIPI_RX_MAX_DEV_NUM) { HDF_LOGE("%s: invalid comboDev num(%d).", __func__, comboDev); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } MipiRxDrvDisableClock(comboDev); @@ -960,7 +965,7 @@ static int32_t Hi35xxEnableSensorClock(struct MipiCsiCntlr *cntlr, uint8_t snsCl (void)cntlr; if (snsClkSource >= SNS_MAX_CLK_SOURCE_NUM) { HDF_LOGE("%s: invalid snsClkSource(%d).", __func__, snsClkSource); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } SensorDrvEnableClock(snsClkSource); @@ -973,7 +978,7 @@ static int32_t Hi35xxDisableSensorClock(struct MipiCsiCntlr *cntlr, uint8_t snsC (void)cntlr; if (snsClkSource >= SNS_MAX_CLK_SOURCE_NUM) { HDF_LOGE("%s: invalid snsClkSource(%d).", __func__, snsClkSource); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } SensorDrvDisableClock(snsClkSource); @@ -1165,7 +1170,7 @@ static int32_t Hi35xxMipiCsiInit(struct HdfDeviceObject *device) #endif OsalSpinInit(&g_mipiCsi.ctxLock); - HDF_LOGI("%s: load mipi csi driver 1212 success!", __func__); + HDF_LOGI("%s: load mipi csi driver success!", __func__); return ret; } @@ -1174,6 +1179,7 @@ static void Hi35xxMipiCsiRelease(struct HdfDeviceObject *device) { struct MipiCsiCntlr *cntlr = NULL; + HDF_LOGI("%s: enter!", __func__); if (device == NULL) { HDF_LOGE("%s: device is NULL.", __func__); return; @@ -1192,14 +1198,14 @@ static void Hi35xxMipiCsiRelease(struct HdfDeviceObject *device) MipiCsiUnregisterCntlr(&g_mipiCsi); g_mipiCsi.priv = NULL; - HDF_LOGI("%s: unload mipi csi driver 2121 success!", __func__); + HDF_LOGI("%s: unload mipi csi driver success!", __func__); } struct HdfDriverEntry g_mipiCsiDriverEntry = { .moduleVersion = 1, .Init = Hi35xxMipiCsiInit, .Release = Hi35xxMipiCsiRelease, - .moduleName = "HDF_MIPI_CSI", + .moduleName = "HDF_MIPI_RX", }; HDF_INIT(g_mipiCsiDriverEntry); diff --git a/mipi_csi/mipi_rx_hi2121.c b/mipi_csi/mipi_rx_hi2121.c index 6c1cbc8..aad1efc 100755 --- a/mipi_csi/mipi_rx_hi2121.c +++ b/mipi_csi/mipi_rx_hi2121.c @@ -121,6 +121,7 @@ enum UserDefData { DEF3_DATA }; +#define HDF_LOG_TAG mipi_rx_hi2121 /* macro definition */ #define MIPI_RX_REGS_ADDR 0x113A0000 #define MIPI_RX_REGS_SIZE 0x10000 @@ -1273,7 +1274,7 @@ static int MipiRxHalSetLvdsSofWdr(uint8_t devno, WdrMode wdrMode, lvdsWdr.bits.lvds_wdr_mode = 0x2; } else { HDF_LOGE("%s: not support vsync type: %d", __func__, vsyncAttr->syncType); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } ctrlReg->LVDS_WDR.u32 = lvdsWdr.u32; @@ -1313,7 +1314,7 @@ static int MipiRxHalSetLvdsDolWdr(uint8_t devno, WdrMode wdrMode, } } else { HDF_LOGE("%s: not support fid type: %d", __func__, fidAttr->fidType); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } } else if (vsyncAttr->syncType == LVDS_VSYNC_HCONNECT) { /* @@ -1324,11 +1325,11 @@ static int MipiRxHalSetLvdsDolWdr(uint8_t devno, WdrMode wdrMode, lvdsWdr.bits.lvds_wdr_mode = 0x5; } else { HDF_LOGE("%s: not support fid type: %d", __func__, fidAttr->fidType); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } } else { HDF_LOGE("%s: not support vsync type: %d", __func__, vsyncAttr->syncType); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } ctrlReg->LVDS_WDR.u32 = lvdsWdr.u32; @@ -1374,17 +1375,19 @@ int MipiRxDrvSetLvdsWdrMode(uint8_t devno, WdrMode wdrMode, const LvdsVsyncAttr if (wdrMode == HI_WDR_MODE_BUTT) { HDF_LOGE("%s: not support WDR_MODE: %d", __func__, wdrMode); - return HDF_FAILURE; + return HDF_ERR_NOT_SUPPORT; } ret = MipiRxHalSetLvdsWdrEn(devno, wdrMode); if (ret != HDF_SUCCESS) { + HDF_LOGE("%s: [MipiRxHalSetLvdsWdrEn] failed.", __func__); return ret; } if (wdrMode != HI_WDR_MODE_NONE) { ret = MipiRxHalSetLvdsWdrType(devno, wdrMode, vsyncAttr, fidAttr); if (ret != HDF_SUCCESS) { + HDF_LOGE("%s: [MipiRxHalSetLvdsWdrType] failed.", __func__); return ret; } diff --git a/mipi_dsi/mipi_tx_hi35xx.c b/mipi_dsi/mipi_tx_hi35xx.c index bcab449..226eea6 100644 --- a/mipi_dsi/mipi_tx_hi35xx.c +++ b/mipi_dsi/mipi_tx_hi35xx.c @@ -36,6 +36,11 @@ volatile MipiTxRegsTypeTag *g_mipiTxRegsVa = NULL; unsigned int g_mipiTxIrqNum = MIPI_TX_IRQ; unsigned int g_actualPhyDataRate; static unsigned int g_regMapFlag; +/** + * @brief g_enCfg is the flag that the controller parameters have been set, which is independent of the high + * and low speed modes. The program design requires setting parameters before operating the controller, + * otherwise it will directly return to failure. + */ static bool g_enCfg = false; static void WriteReg32(unsigned long addr, unsigned int value, unsigned int mask) @@ -586,7 +591,7 @@ static int MipiTxWaitCmdFifoEmpty(void) OsalUDelay(1); if (waitCnt > MIPI_TX_READ_TIMEOUT_CNT) { HDF_LOGW("%s: timeout when send cmd buffer.", __func__); - return HDF_FAILURE; + return HDF_ERR_TIMEOUT; } } while (cmdPktStatus.bits.gen_cmd_empty == 0); return HDF_SUCCESS; @@ -604,7 +609,7 @@ static int MipiTxWaitWriteFifoEmpty(void) OsalUDelay(1); if (waitCnt > MIPI_TX_READ_TIMEOUT_CNT) { HDF_LOGW("%s: timeout when send data buffer.", __func__); - return HDF_FAILURE; + return HDF_ERR_TIMEOUT; } } while (cmdPktStatus.bits.gen_pld_w_empty == 0); return HDF_SUCCESS; @@ -624,7 +629,7 @@ static int MipiTxWaitWriteFifoNotFull(void) } if (waitCnt > MIPI_TX_READ_TIMEOUT_CNT) { HDF_LOGW("%s: timeout when wait write fifo not full buffer.", __func__); - return HDF_FAILURE; + return HDF_ERR_TIMEOUT; } waitCnt++; } while (cmdPktStatus.bits.gen_pld_w_full == 1); @@ -687,24 +692,24 @@ static int MipiTxDrvSetCmdInfo(const CmdInfoTag *cmdInfo) if (cmdInfo == NULL) { HDF_LOGE("%s: cmdInfo is NULL.", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_OBJECT; } genHdr.u32 = g_mipiTxRegsVa->GEN_HDR.u32; if (cmdInfo->cmd != NULL) { - if (cmdInfo->cmdSize > 200 || cmdInfo->cmdSize == 0) { /* 200 is max cmd size */ + if ((cmdInfo->cmdSize > 200) || (cmdInfo->cmdSize == 0)) { /* 200 is max cmd size */ HDF_LOGE("%s: set cmd size illegal, size =%u.", __func__, cmdInfo->cmdSize); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } cmd = (unsigned char *)OsalMemCalloc(cmdInfo->cmdSize); if (cmd == NULL) { HDF_LOGE("%s: OsalMemCalloc fail,please check,need %u bytes.", __func__, cmdInfo->cmdSize); - return HDF_FAILURE; + return HDF_ERR_MALLOC_FAIL; } if (LOS_CopyToKernel(cmd, cmdInfo->cmdSize, cmdInfo->cmd, cmdInfo->cmdSize) != 0) { OsalMemFree(cmd); cmd = NULL; HDF_LOGE("%s: [CopyFromUser] failed.", __func__); - return HDF_FAILURE; + return HDF_ERR_IO; } MipiTxDrvSetPayloadData(cmd, cmdInfo->cmdSize); OsalMemFree(cmd); @@ -725,7 +730,7 @@ static int MipiTxDrvSetCmdInfo(const CmdInfoTag *cmdInfo) HDF_LOGE("%s: [MipiTxWaitWriteFifoEmpty] failed.", __func__); return HDF_FAILURE; } - HDF_LOGI("%s: cmdSize = 0x%x, dataType = 0x%x", __func__, cmdInfo->cmdSize, cmdInfo->dataType); + HDF_LOGD("%s: cmdSize = 0x%x, dataType = 0x%x", __func__, cmdInfo->cmdSize, cmdInfo->dataType); return HDF_SUCCESS; } @@ -747,7 +752,7 @@ static int MipiTxWaitReadFifoNotEmpty(void) } if (waitCnt > MIPI_TX_READ_TIMEOUT_CNT) { HDF_LOGW("%s: timeout when read data.", __func__); - return HDF_FAILURE; + return HDF_ERR_TIMEOUT; } waitCnt++; OsalUDelay(1); @@ -772,7 +777,7 @@ static int MipiTxWaitReadFifoEmpty(void) OsalUDelay(1); if (waitCnt > MIPI_TX_READ_TIMEOUT_CNT) { HDF_LOGW("%s: timeout when clear data buffer, the last read data is 0x%x.", __func__, pldData.u32); - return HDF_FAILURE; + return HDF_ERR_TIMEOUT; } } while ((intSt1.bits.gen_pld_rd_err) == 0x0); return HDF_SUCCESS; @@ -788,7 +793,7 @@ static int MipiTxSendShortPacket(unsigned char virtualChannel, genHdr.bits.gen_wc_lsbyte = (dataParam & 0xff); genHdr.bits.gen_wc_msbyte = (dataParam & 0xff00) >> 8; /* height 8 bits */ g_mipiTxRegsVa->GEN_HDR.u32 = genHdr.u32; - if (MipiTxWaitCmdFifoEmpty() != 0) { + if (MipiTxWaitCmdFifoEmpty() != HDF_SUCCESS) { HDF_LOGE("%s: [MipiTxWaitCmdFifoEmpty] failed!", __func__); return HDF_FAILURE; } @@ -801,7 +806,7 @@ static int MipiTxGetReadFifoData(unsigned int getDataSize, unsigned char *dataBu unsigned int i, j; for (i = 0; i < getDataSize / 4; i++) { /* 4byte once */ - if (MipiTxWaitReadFifoNotEmpty() != 0) { + if (MipiTxWaitReadFifoNotEmpty() != HDF_SUCCESS) { HDF_LOGE("%s: [MipiTxWaitReadFifoNotEmpty] failed at first!", __func__); return HDF_FAILURE; } @@ -815,7 +820,7 @@ static int MipiTxGetReadFifoData(unsigned int getDataSize, unsigned char *dataBu j = getDataSize % 4; /* remainder of 4 */ if (j != 0) { - if (MipiTxWaitReadFifoNotEmpty() != 0) { + if (MipiTxWaitReadFifoNotEmpty() != HDF_SUCCESS) { HDF_LOGE("%s: [MipiTxWaitReadFifoNotEmpty] failed at second!", __func__); return HDF_FAILURE; } @@ -852,17 +857,17 @@ static int MipiTxDrvGetCmdInfo(GetCmdInfoTag *getCmdInfo) dataBuf = (unsigned char*)OsalMemAlloc(getCmdInfo->getDataSize); if (dataBuf == NULL) { HDF_LOGE("%s: dataBuf is NULL!", __func__); - return HDF_FAILURE; + return HDF_ERR_MALLOC_FAIL; } - if (MipiTxWaitReadFifoEmpty() != 0) { + if (MipiTxWaitReadFifoEmpty() != HDF_SUCCESS) { HDF_LOGE("%s: [MipiTxWaitReadFifoEmpty] failed!", __func__); goto fail0; } - if (MipiTxSendShortPacket(0, getCmdInfo->dataType, getCmdInfo->dataParam) != 0) { + if (MipiTxSendShortPacket(0, getCmdInfo->dataType, getCmdInfo->dataParam) != HDF_SUCCESS) { HDF_LOGE("%s: [MipiTxSendShortPacket] failed!", __func__); goto fail0; } - if (MipiTxGetReadFifoData(getCmdInfo->getDataSize, dataBuf) != 0) { + if (MipiTxGetReadFifoData(getCmdInfo->getDataSize, dataBuf) != HDF_SUCCESS) { /* fail will block mipi data lane, so need reset */ MipiTxReset(); HDF_LOGE("%s: [MipiTxGetReadFifoData] failed!", __func__); @@ -954,12 +959,12 @@ static int MipiTxDrvInit(int smooth) int32_t ret; ret = MipiTxDrvRegInit(); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: MipiTxDrvRegInit fail!", __func__); - return HDF_FAILURE; + return ret; } MipiTxDrvHwInit(smooth); - return HDF_SUCCESS; + return ret; } static void MipiTxDrvExit(void) @@ -1007,30 +1012,30 @@ static int MipiTxCheckCombDevCfg(const ComboDevCfgTag *devCfg) if (devCfg->devno != 0) { HDF_LOGE("%s: mipi_tx dev devno err!", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } for (i = 0; i < LANE_MAX_NUM; i++) { if ((devCfg->laneId[i] != validLaneId[i]) && (devCfg->laneId[i] != MIPI_TX_DISABLE_LANE_ID)) { HDF_LOGE("%s: mipi_tx dev laneId %d err!", __func__, devCfg->laneId[i]); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } } if ((devCfg->outputMode != OUTPUT_MODE_CSI) && (devCfg->outputMode != OUTPUT_MODE_DSI_VIDEO) && (devCfg->outputMode != OUTPUT_MODE_DSI_CMD)) { HDF_LOGE("%s: mipi_tx dev outputMode %d err!", __func__, devCfg->outputMode); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((devCfg->videoMode != BURST_MODE) && (devCfg->videoMode != NON_BURST_MODE_SYNC_PULSES) && (devCfg->videoMode != NON_BURST_MODE_SYNC_EVENTS)) { HDF_LOGE("%s: mipi_tx dev videoMode %d err!", __func__, devCfg->videoMode); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((devCfg->outputFormat != OUT_FORMAT_RGB_16_BIT) && (devCfg->outputFormat != OUT_FORMAT_RGB_18_BIT) && (devCfg->outputFormat != OUT_FORMAT_RGB_24_BIT) && (devCfg->outputFormat != OUT_FORMAT_YUV420_8_BIT_NORMAL) && (devCfg->outputFormat != OUT_FORMAT_YUV420_8_BIT_LEGACY) && (devCfg->outputFormat != OUT_FORMAT_YUV422_8_BIT)) { HDF_LOGE("%s: mipi_tx dev outputFormat %d err!", __func__, devCfg->outputFormat); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } HDF_LOGI("%s: success!", __func__); @@ -1042,7 +1047,7 @@ static int MipiTxSetComboDevCfg(const ComboDevCfgTag *devCfg) int32_t ret; ret = MipiTxCheckCombDevCfg(devCfg); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: mipi_tx check combo_dev config failed!", __func__); return ret; } @@ -1060,7 +1065,7 @@ static int32_t Hi35xxSetCntlrCfg(struct MipiDsiCntlr *cntlr) if (dev == NULL) { HDF_LOGE("%s: dev is NULL!", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_OBJECT; } return MipiTxSetComboDevCfg(dev); } @@ -1073,13 +1078,13 @@ static int MipiTxCheckSetCmdInfo(const CmdInfoTag *cmdInfo) } if (cmdInfo->devno != 0) { HDF_LOGE("%s: mipi_tx devno %d err!", __func__, cmdInfo->devno); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } /* When cmd is not NULL, cmd_size means the length of cmd or it means cmd and addr */ if (cmdInfo->cmd != NULL) { if (cmdInfo->cmdSize > MIPI_TX_SET_DATA_SIZE) { HDF_LOGE("%s: mipi_tx dev cmd_size %d err!", __func__, cmdInfo->cmdSize); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } } return HDF_SUCCESS; @@ -1090,10 +1095,10 @@ static int MipiTxSetCmd(const CmdInfoTag *cmdInfo) int32_t ret; if (cmdInfo == NULL) { HDF_LOGE("%s: cmdInfo is NULL!", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_OBJECT; } ret = MipiTxCheckSetCmdInfo(cmdInfo); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: mipi_tx check combo_dev config failed!", __func__); return ret; } @@ -1107,7 +1112,7 @@ static int32_t Hi35xxSetCmd(struct MipiDsiCntlr *cntlr, struct DsiCmdDesc *cmd) (void)cntlr; if (cmd == NULL) { HDF_LOGE("%s: cmd is NULL!", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_OBJECT; } cmdInfo.devno = 0; if (cmd->dataLen > 2) { /* 2: use long data type */ @@ -1128,7 +1133,7 @@ static int32_t Hi35xxSetCmd(struct MipiDsiCntlr *cntlr, struct DsiCmdDesc *cmd) cmdInfo.cmd = NULL; } else { HDF_LOGE("%s: dataLen error!", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } return MipiTxSetCmd(&cmdInfo); } @@ -1141,15 +1146,15 @@ static int MipiTxCheckGetCmdInfo(const GetCmdInfoTag *getCmdInfo) } if (getCmdInfo->devno != 0) { HDF_LOGE("%s: mipi_tx dev devno %d err!", __func__, getCmdInfo->devno); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if ((getCmdInfo->getDataSize == 0) || (getCmdInfo->getDataSize > MIPI_TX_GET_DATA_SIZE)) { HDF_LOGE("%s: mipi_tx dev getDataSize %d err!", __func__, getCmdInfo->getDataSize); - return HDF_FAILURE; + return HDF_ERR_INVALID_PARAM; } if (getCmdInfo->getData == NULL) { HDF_LOGE("%s: mipi_tx dev getData is null!", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_OBJECT; } return HDF_SUCCESS; } @@ -1159,7 +1164,7 @@ static int MipiTxGetCmd(GetCmdInfoTag *getCmdInfo) int32_t ret; ret = MipiTxCheckGetCmdInfo(getCmdInfo); - if (ret < 0) { + if (ret != HDF_SUCCESS) { HDF_LOGE("%s: [MipiTxCheckGetCmdInfo] failed!", __func__); return ret; } @@ -1174,7 +1179,7 @@ static int32_t Hi35xxGetCmd(struct MipiDsiCntlr *cntlr, struct DsiCmdDesc *cmd, (void)cntlr; if (cmd == NULL || out == NULL) { HDF_LOGE("%s: cmd or out is NULL!", __func__); - return HDF_FAILURE; + return HDF_ERR_INVALID_OBJECT; } cmdInfo.devno = 0; cmdInfo.dataType = cmd->dataType; @@ -1231,7 +1236,7 @@ static int32_t Hi35xxMipiTxInit(struct HdfDeviceObject *device) HDF_LOGE("%s: [MipiTxDrvInit] failed.", __func__); return ret; } - HDF_LOGI("%s: load mipi_tx driver 1212!", __func__); + HDF_LOGI("%s: load mipi tx driver successfully!", __func__); return ret; } @@ -1253,7 +1258,7 @@ static void Hi35xxMipiTxRelease(struct HdfDeviceObject *device) MipiTxDrvExit(); MipiDsiUnregisterCntlr(&g_mipiTx); g_mipiTx.priv = NULL; - HDF_LOGI("%s: unload mipi_tx driver 1212!", __func__); + HDF_LOGI("%s: unload mipi tx driver successfully!", __func__); } struct HdfDriverEntry g_mipiTxDriverEntry = { -- Gitee