1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Rockchip CIF Driver 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2018 Rockchip Electronics Co., Ltd. 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef _RKCIF_REGS_H 9*4882a593Smuzhiyun #define _RKCIF_REGS_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun struct cif_reg { 12*4882a593Smuzhiyun u32 offset; 13*4882a593Smuzhiyun }; 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #define CIF_REG(_offset) { .offset = (_offset), } 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun enum cif_reg_index { 18*4882a593Smuzhiyun /* dvp registers index */ 19*4882a593Smuzhiyun CIF_REG_DVP_CTRL = 0x0, 20*4882a593Smuzhiyun CIF_REG_DVP_INTEN, 21*4882a593Smuzhiyun CIF_REG_DVP_INTSTAT, 22*4882a593Smuzhiyun CIF_REG_DVP_FOR, 23*4882a593Smuzhiyun CIF_REG_DVP_LINE_NUM_ADDR, 24*4882a593Smuzhiyun CIF_REG_DVP_DMA_IDLE_REQ, 25*4882a593Smuzhiyun CIF_REG_DVP_MULTI_ID, 26*4882a593Smuzhiyun CIF_REG_DVP_FRM0_ADDR_Y, 27*4882a593Smuzhiyun CIF_REG_DVP_FRM0_ADDR_UV, 28*4882a593Smuzhiyun CIF_REG_DVP_FRM1_ADDR_Y, 29*4882a593Smuzhiyun CIF_REG_DVP_FRM1_ADDR_UV, 30*4882a593Smuzhiyun CIF_REG_DVP_VIR_LINE_WIDTH, 31*4882a593Smuzhiyun CIF_REG_DVP_SET_SIZE, 32*4882a593Smuzhiyun CIF_REG_DVP_SCM_ADDR_Y, 33*4882a593Smuzhiyun CIF_REG_DVP_SCM_ADDR_U, 34*4882a593Smuzhiyun CIF_REG_DVP_SCM_ADDR_V, 35*4882a593Smuzhiyun CIF_REG_DVP_WB_UP_FILTER, 36*4882a593Smuzhiyun CIF_REG_DVP_WB_LOW_FILTER, 37*4882a593Smuzhiyun CIF_REG_DVP_WBC_CNT, 38*4882a593Smuzhiyun CIF_REG_DVP_LINE_INT_NUM, 39*4882a593Smuzhiyun CIF_REG_DVP_LINE_CNT, 40*4882a593Smuzhiyun CIF_REG_DVP_CROP, 41*4882a593Smuzhiyun CIF_REG_DVP_SCL_CTRL, 42*4882a593Smuzhiyun CIF_REG_DVP_SCL_DST, 43*4882a593Smuzhiyun CIF_REG_DVP_SCL_FCT, 44*4882a593Smuzhiyun CIF_REG_DVP_SCL_VALID_NUM, 45*4882a593Smuzhiyun CIF_REG_DVP_LINE_LOOP_CTRL, 46*4882a593Smuzhiyun CIF_REG_DVP_PATH_SEL, 47*4882a593Smuzhiyun CIF_REG_DVP_FIFO_ENTRY, 48*4882a593Smuzhiyun CIF_REG_DVP_FRAME_STATUS, 49*4882a593Smuzhiyun CIF_REG_DVP_CUR_DST, 50*4882a593Smuzhiyun CIF_REG_DVP_LAST_LINE, 51*4882a593Smuzhiyun CIF_REG_DVP_LAST_PIX, 52*4882a593Smuzhiyun CIF_REG_DVP_FRM0_ADDR_Y_ID1, 53*4882a593Smuzhiyun CIF_REG_DVP_FRM0_ADDR_UV_ID1, 54*4882a593Smuzhiyun CIF_REG_DVP_FRM1_ADDR_Y_ID1, 55*4882a593Smuzhiyun CIF_REG_DVP_FRM1_ADDR_UV_ID1, 56*4882a593Smuzhiyun CIF_REG_DVP_FRM0_ADDR_Y_ID2, 57*4882a593Smuzhiyun CIF_REG_DVP_FRM0_ADDR_UV_ID2, 58*4882a593Smuzhiyun CIF_REG_DVP_FRM1_ADDR_Y_ID2, 59*4882a593Smuzhiyun CIF_REG_DVP_FRM1_ADDR_UV_ID2, 60*4882a593Smuzhiyun CIF_REG_DVP_FRM0_ADDR_Y_ID3, 61*4882a593Smuzhiyun CIF_REG_DVP_FRM0_ADDR_UV_ID3, 62*4882a593Smuzhiyun CIF_REG_DVP_FRM1_ADDR_Y_ID3, 63*4882a593Smuzhiyun CIF_REG_DVP_FRM1_ADDR_UV_ID3, 64*4882a593Smuzhiyun CIF_REG_DVP_SAV_EAV, 65*4882a593Smuzhiyun CIF_REG_DVP_LINE_CNT1, 66*4882a593Smuzhiyun CIF_REG_DVP_LINE_INT_NUM1, 67*4882a593Smuzhiyun /* mipi & lvds registers index */ 68*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID0_CTRL0, 69*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID0_CTRL1, 70*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID1_CTRL0, 71*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID1_CTRL1, 72*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID2_CTRL0, 73*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID2_CTRL1, 74*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID3_CTRL0, 75*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID3_CTRL1, 76*4882a593Smuzhiyun CIF_REG_MIPI_WATER_LINE, 77*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_CTRL, 78*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_ADDR_Y_ID0, 79*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_ADDR_Y_ID0, 80*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_ADDR_UV_ID0, 81*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_ADDR_UV_ID0, 82*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_VLW_Y_ID0, 83*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_VLW_Y_ID0, 84*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_VLW_UV_ID0, 85*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_VLW_UV_ID0, 86*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_ADDR_Y_ID1, 87*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_ADDR_Y_ID1, 88*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_ADDR_UV_ID1, 89*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_ADDR_UV_ID1, 90*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_VLW_Y_ID1, 91*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_VLW_Y_ID1, 92*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_VLW_UV_ID1, 93*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_VLW_UV_ID1, 94*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_ADDR_Y_ID2, 95*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_ADDR_Y_ID2, 96*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_ADDR_UV_ID2, 97*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_ADDR_UV_ID2, 98*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_VLW_Y_ID2, 99*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_VLW_Y_ID2, 100*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_VLW_UV_ID2, 101*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_VLW_UV_ID2, 102*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_ADDR_Y_ID3, 103*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_ADDR_Y_ID3, 104*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_ADDR_UV_ID3, 105*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_ADDR_UV_ID3, 106*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_VLW_Y_ID3, 107*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_VLW_Y_ID3, 108*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME0_VLW_UV_ID3, 109*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_FRAME1_VLW_UV_ID3, 110*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_INTEN, 111*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_INTSTAT, 112*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_LINE_INT_NUM_ID0_1, 113*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_LINE_INT_NUM_ID2_3, 114*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_LINE_LINE_CNT_ID0_1, 115*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_LINE_LINE_CNT_ID2_3, 116*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID0_CROP_START, 117*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID1_CROP_START, 118*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID2_CROP_START, 119*4882a593Smuzhiyun CIF_REG_MIPI_LVDS_ID3_CROP_START, 120*4882a593Smuzhiyun CIF_REG_MIPI_FRAME_NUM_VC0, 121*4882a593Smuzhiyun CIF_REG_MIPI_FRAME_NUM_VC1, 122*4882a593Smuzhiyun CIF_REG_MIPI_FRAME_NUM_VC2, 123*4882a593Smuzhiyun CIF_REG_MIPI_FRAME_NUM_VC3, 124*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_ACT0_ID0, 125*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_BLK0_ID0, 126*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_ACT1_ID0, 127*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_BLK1_ID0, 128*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_ACT0_ID1, 129*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_BLK0_ID1, 130*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_ACT1_ID1, 131*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_BLK1_ID1, 132*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_ACT0_ID2, 133*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_BLK0_ID2, 134*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_ACT1_ID2, 135*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_BLK1_ID2, 136*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_ACT0_ID3, 137*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_BLK0_ID3, 138*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_ACT1_ID3, 139*4882a593Smuzhiyun CIF_REG_LVDS_SAV_EAV_BLK1_ID3, 140*4882a593Smuzhiyun CIF_REG_MIPI_EFFECT_CODE_ID0, 141*4882a593Smuzhiyun CIF_REG_MIPI_EFFECT_CODE_ID1, 142*4882a593Smuzhiyun CIF_REG_MIPI_EFFECT_CODE_ID2, 143*4882a593Smuzhiyun CIF_REG_MIPI_EFFECT_CODE_ID3, 144*4882a593Smuzhiyun CIF_REG_LVDS_ID0_CTRL0, 145*4882a593Smuzhiyun CIF_REG_LVDS_ID1_CTRL0, 146*4882a593Smuzhiyun CIF_REG_LVDS_ID2_CTRL0, 147*4882a593Smuzhiyun CIF_REG_LVDS_ID3_CTRL0, 148*4882a593Smuzhiyun CIF_REG_MIPI_ON_PAD, 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun CIF_REG_Y_STAT_CONTROL, 151*4882a593Smuzhiyun CIF_REG_Y_STAT_VALUE, 152*4882a593Smuzhiyun CIF_REG_MMU_DTE_ADDR, 153*4882a593Smuzhiyun CIF_REG_MMU_STATUS, 154*4882a593Smuzhiyun CIF_REG_MMU_COMMAND, 155*4882a593Smuzhiyun CIF_REG_MMU_PAGE_FAULT_ADDR, 156*4882a593Smuzhiyun CIF_REG_MMU_ZAP_ONE_LINE, 157*4882a593Smuzhiyun CIF_REG_MMU_INT_RAWSTAT, 158*4882a593Smuzhiyun CIF_REG_MMU_INT_CLEAR, 159*4882a593Smuzhiyun CIF_REG_MMU_INT_MASK, 160*4882a593Smuzhiyun CIF_REG_MMU_INT_STATUS, 161*4882a593Smuzhiyun CIF_REG_MMU_AUTO_GATING, 162*4882a593Smuzhiyun /* reg belowed is in grf */ 163*4882a593Smuzhiyun CIF_REG_GRF_CIFIO_CON, 164*4882a593Smuzhiyun CIF_REG_GRF_CIFIO_CON1, 165*4882a593Smuzhiyun CIF_REG_GRF_CIFIO_VENC, 166*4882a593Smuzhiyun /* reg global control */ 167*4882a593Smuzhiyun CIF_REG_GLB_CTRL, 168*4882a593Smuzhiyun CIF_REG_GLB_INTEN, 169*4882a593Smuzhiyun CIF_REG_GLB_INTST, 170*4882a593Smuzhiyun CIF_REG_SCL_CH_CTRL, 171*4882a593Smuzhiyun CIF_REG_SCL_CTRL, 172*4882a593Smuzhiyun CIF_REG_SCL_FRM0_ADDR_CH0, 173*4882a593Smuzhiyun CIF_REG_SCL_FRM1_ADDR_CH0, 174*4882a593Smuzhiyun CIF_REG_SCL_VLW_CH0, 175*4882a593Smuzhiyun CIF_REG_SCL_FRM0_ADDR_CH1, 176*4882a593Smuzhiyun CIF_REG_SCL_FRM1_ADDR_CH1, 177*4882a593Smuzhiyun CIF_REG_SCL_VLW_CH1, 178*4882a593Smuzhiyun CIF_REG_SCL_FRM0_ADDR_CH2, 179*4882a593Smuzhiyun CIF_REG_SCL_FRM1_ADDR_CH2, 180*4882a593Smuzhiyun CIF_REG_SCL_VLW_CH2, 181*4882a593Smuzhiyun CIF_REG_SCL_FRM0_ADDR_CH3, 182*4882a593Smuzhiyun CIF_REG_SCL_FRM1_ADDR_CH3, 183*4882a593Smuzhiyun CIF_REG_SCL_VLW_CH3, 184*4882a593Smuzhiyun CIF_REG_SCL_BLC_CH0, 185*4882a593Smuzhiyun CIF_REG_SCL_BLC_CH1, 186*4882a593Smuzhiyun CIF_REG_SCL_BLC_CH2, 187*4882a593Smuzhiyun CIF_REG_SCL_BLC_CH3, 188*4882a593Smuzhiyun CIF_REG_TOISP0_CTRL, 189*4882a593Smuzhiyun CIF_REG_TOISP0_SIZE, 190*4882a593Smuzhiyun CIF_REG_TOISP0_CROP, 191*4882a593Smuzhiyun CIF_REG_TOISP1_CTRL, 192*4882a593Smuzhiyun CIF_REG_TOISP1_SIZE, 193*4882a593Smuzhiyun CIF_REG_TOISP1_CROP, 194*4882a593Smuzhiyun CIF_REG_INDEX_MAX 195*4882a593Smuzhiyun }; 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun /* CIF Reg Offset */ 198*4882a593Smuzhiyun #define CIF_CTRL 0x00 199*4882a593Smuzhiyun #define CIF_INTEN 0x04 200*4882a593Smuzhiyun #define CIF_INTSTAT 0x08 201*4882a593Smuzhiyun #define CIF_FOR 0x0c 202*4882a593Smuzhiyun #define CIF_LINE_NUM_ADDR 0x10 203*4882a593Smuzhiyun #define CIF_DMA_IDLE_REQ 0x10 204*4882a593Smuzhiyun #define CIF_FRM0_ADDR_Y 0x14 205*4882a593Smuzhiyun #define CIF_FRM0_ADDR_UV 0x18 206*4882a593Smuzhiyun #define CIF_FRM1_ADDR_Y 0x1c 207*4882a593Smuzhiyun #define CIF_FRM1_ADDR_UV 0x20 208*4882a593Smuzhiyun #define CIF_VIR_LINE_WIDTH 0x24 209*4882a593Smuzhiyun #define CIF_SET_SIZE 0x28 210*4882a593Smuzhiyun #define CIF_SCM_ADDR_Y 0x2c 211*4882a593Smuzhiyun #define CIF_LINE_INT_NUM 0x2c 212*4882a593Smuzhiyun #define CIF_SCM_ADDR_U 0x30 213*4882a593Smuzhiyun #define CIF_LINE_CNT 0x30 214*4882a593Smuzhiyun #define CIF_SCM_ADDR_V 0x34 215*4882a593Smuzhiyun #define CIF_WB_UP_FILTER 0x38 216*4882a593Smuzhiyun #define CIF_WB_LOW_FILTER 0x3c 217*4882a593Smuzhiyun #define CIF_WBC_CNT 0x40 218*4882a593Smuzhiyun #define CIF_CROP 0x44 219*4882a593Smuzhiyun #define RV1126_CIF_CROP 0x34 220*4882a593Smuzhiyun #define RK3568_CIF_FIFO_ENTRY 0x38 221*4882a593Smuzhiyun #define CIF_SCL_CTRL 0x48 222*4882a593Smuzhiyun #define CIF_PATH_SEL 0x48 223*4882a593Smuzhiyun #define CIF_SCL_DST 0x4c 224*4882a593Smuzhiyun #define CIF_SCL_FCT 0x50 225*4882a593Smuzhiyun #define CIF_SCL_VALID_NUM 0x54 226*4882a593Smuzhiyun #define CIF_FIFO_ENTRY 0x54 227*4882a593Smuzhiyun #define CIF_LINE_LOOP_CTR 0x58 228*4882a593Smuzhiyun #define CIF_FRAME_STATUS 0x60 229*4882a593Smuzhiyun #define RV1126_CIF_FRAME_STATUS 0x3c 230*4882a593Smuzhiyun #define CIF_CUR_DST 0x64 231*4882a593Smuzhiyun #define RV1126_CIF_CUR_DST 0x40 232*4882a593Smuzhiyun #define CIF_LAST_LINE 0x68 233*4882a593Smuzhiyun #define RV1126_CIF_LAST_LINE 0x44 234*4882a593Smuzhiyun #define CIF_LAST_PIX 0x6c 235*4882a593Smuzhiyun #define RV1126_CIF_LAST_PIX 0x48 236*4882a593Smuzhiyun #define CIF_MULTI_ID 0x10 237*4882a593Smuzhiyun #define CIF_FRM0_ADDR_Y_ID1 0x50 238*4882a593Smuzhiyun #define CIF_FRM0_ADDR_UV_ID1 0x54 239*4882a593Smuzhiyun #define CIF_FRM1_ADDR_Y_ID1 0x58 240*4882a593Smuzhiyun #define CIF_FRM1_ADDR_UV_ID1 0x5c 241*4882a593Smuzhiyun #define CIF_FRM0_ADDR_Y_ID2 0x60 242*4882a593Smuzhiyun #define CIF_FRM0_ADDR_UV_ID2 0x64 243*4882a593Smuzhiyun #define CIF_FRM1_ADDR_Y_ID2 0x68 244*4882a593Smuzhiyun #define CIF_FRM1_ADDR_UV_ID2 0x6c 245*4882a593Smuzhiyun #define CIF_FRM0_ADDR_Y_ID3 0x70 246*4882a593Smuzhiyun #define CIF_FRM0_ADDR_UV_ID3 0x74 247*4882a593Smuzhiyun #define CIF_FRM1_ADDR_Y_ID3 0x78 248*4882a593Smuzhiyun #define CIF_FRM1_ADDR_UV_ID3 0x7c 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun #define CIF_FETCH_Y_LAST_LINE(val) ((val) & 0x1fff) 251*4882a593Smuzhiyun /* Check if swap y and c in bt1120 mode */ 252*4882a593Smuzhiyun #define CIF_FETCH_IS_Y_FIRST(val) ((val >> 5) & 0x3) 253*4882a593Smuzhiyun #define CIF_RAW_STORED_BIT_WIDTH (16U) 254*4882a593Smuzhiyun #define CIF_RAW_STORED_BIT_WIDTH_RV1126 (8U) 255*4882a593Smuzhiyun #define CIF_YUV_STORED_BIT_WIDTH (8U) 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /* RK1808 & RV1126 CIF CSI & LVDS Registers Offset */ 258*4882a593Smuzhiyun #define CIF_CSI_ID0_CTRL0 0x80 259*4882a593Smuzhiyun #define CIF_CSI_ID0_CTRL1 0x84 260*4882a593Smuzhiyun #define CIF_CSI_ID1_CTRL0 0x88 261*4882a593Smuzhiyun #define CIF_CSI_ID1_CTRL1 0x8c 262*4882a593Smuzhiyun #define CIF_CSI_ID2_CTRL0 0x90 263*4882a593Smuzhiyun #define CIF_CSI_ID2_CTRL1 0x94 264*4882a593Smuzhiyun #define CIF_CSI_ID3_CTRL0 0x98 265*4882a593Smuzhiyun #define CIF_CSI_ID3_CTRL1 0x9c 266*4882a593Smuzhiyun #define CIF_CSI_WATER_LINE 0xa0 267*4882a593Smuzhiyun #define CIF_CSI_MIPI_LVDS_CTRL 0xa0 268*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_Y_ID0 0xa4 269*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_Y_ID0 0xa8 270*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_UV_ID0 0xac 271*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_UV_ID0 0xb0 272*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_Y_ID0 0xb4 273*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_Y_ID0 0xb8 274*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_UV_ID0 0xbc 275*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_UV_ID0 0xc0 276*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_Y_ID1 0xc4 277*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_Y_ID1 0xc8 278*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_UV_ID1 0xcc 279*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_UV_ID1 0xd0 280*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_Y_ID1 0xd4 281*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_Y_ID1 0xd8 282*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_UV_ID1 0xdc 283*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_UV_ID1 0xe0 284*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_Y_ID2 0xe4 285*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_Y_ID2 0xe8 286*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_UV_ID2 0xec 287*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_UV_ID2 0xf0 288*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_Y_ID2 0xf4 289*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_Y_ID2 0xf8 290*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_UV_ID2 0xfc 291*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_UV_ID2 0x100 292*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_Y_ID3 0x104 293*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_Y_ID3 0x108 294*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_UV_ID3 0x10c 295*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_UV_ID3 0x110 296*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_Y_ID3 0x114 297*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_Y_ID3 0x118 298*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_UV_ID3 0x11c 299*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_UV_ID3 0x120 300*4882a593Smuzhiyun #define CIF_CSI_INTEN 0x124 301*4882a593Smuzhiyun #define CIF_CSI_INTSTAT 0x128 302*4882a593Smuzhiyun #define CIF_CSI_LINE_INT_NUM_ID0_1 0x12c 303*4882a593Smuzhiyun #define CIF_CSI_LINE_INT_NUM_ID2_3 0x130 304*4882a593Smuzhiyun #define CIF_CSI_LINE_CNT_ID0_1 0x134 305*4882a593Smuzhiyun #define CIF_CSI_LINE_CNT_ID2_3 0x138 306*4882a593Smuzhiyun #define CIF_CSI_ID0_CROP_START 0x13c 307*4882a593Smuzhiyun #define CIF_CSI_ID1_CROP_START 0x140 308*4882a593Smuzhiyun #define CIF_CSI_ID2_CROP_START 0x144 309*4882a593Smuzhiyun #define CIF_CSI_ID3_CROP_START 0x148 310*4882a593Smuzhiyun #define CIF_CSI_FRAME_NUM_VC0 0x14c 311*4882a593Smuzhiyun #define CIF_CSI_FRAME_NUM_VC1 0x150 312*4882a593Smuzhiyun #define CIF_CSI_FRAME_NUM_VC2 0x154 313*4882a593Smuzhiyun #define CIF_CSI_FRAME_NUM_VC3 0x158 314*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID0 0x150 315*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID0 0x154 316*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID0 0x158 317*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID0 0x15c 318*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID1 0x160 319*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID1 0x164 320*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID1 0x168 321*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID1 0x16c 322*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID2 0x170 323*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID2 0x174 324*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID2 0x178 325*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID2 0x17c 326*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID3 0x180 327*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID3 0x184 328*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID3 0x188 329*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID3 0x18c 330*4882a593Smuzhiyun #define CIF_Y_STAT_CONTROL 0x190 331*4882a593Smuzhiyun #define CIF_Y_STAT_VALUE 0x194 332*4882a593Smuzhiyun #define CIF_MMU_DTE_ADDR 0x800 333*4882a593Smuzhiyun #define CIF_MMU_STATUS 0x804 334*4882a593Smuzhiyun #define CIF_MMU_COMMAND 0x808 335*4882a593Smuzhiyun #define CIF_MMU_PAGE_FAULT_ADDR 0x80c 336*4882a593Smuzhiyun #define CIF_MMU_ZAP_ONE_LINE 0x810 337*4882a593Smuzhiyun #define CIF_MMU_INT_RAWSTAT 0x814 338*4882a593Smuzhiyun #define CIF_MMU_INT_CLEAR 0x818 339*4882a593Smuzhiyun #define CIF_MMU_INT_MASK 0x81c 340*4882a593Smuzhiyun #define CIF_MMU_INT_STATUS 0x820 341*4882a593Smuzhiyun #define CIF_MMU_AUTO_GATING 0x824 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun /* RK3588 DVP Registers Offset */ 344*4882a593Smuzhiyun #define DVP_CTRL 0x10 345*4882a593Smuzhiyun #define DVP_INTEN 0x14 346*4882a593Smuzhiyun #define DVP_INTSTAT 0x18 347*4882a593Smuzhiyun #define DVP_FOR 0x1C 348*4882a593Smuzhiyun #define DVP_MULTI_ID 0x20 349*4882a593Smuzhiyun #define DVP_SAV_EAV 0x24 350*4882a593Smuzhiyun #define DVP_CROP_SIZE 0x28 351*4882a593Smuzhiyun #define DVP_CROP 0x2C 352*4882a593Smuzhiyun #define DVP_FRM0_ADDR_Y_ID0 0x30 353*4882a593Smuzhiyun #define DVP_FRM0_ADDR_UV_ID0 0x34 354*4882a593Smuzhiyun #define DVP_FRM1_ADDR_Y_ID0 0x38 355*4882a593Smuzhiyun #define DVP_FRM1_ADDR_UV_ID0 0x3C 356*4882a593Smuzhiyun #define DVP_FRM0_ADDR_Y_ID1 0x40 357*4882a593Smuzhiyun #define DVP_FRM0_ADDR_UV_ID1 0x44 358*4882a593Smuzhiyun #define DVP_FRM1_ADDR_Y_ID1 0x48 359*4882a593Smuzhiyun #define DVP_FRM1_ADDR_UV_ID1 0x4C 360*4882a593Smuzhiyun #define DVP_FRM0_ADDR_Y_ID2 0x50 361*4882a593Smuzhiyun #define DVP_FRM0_ADDR_UV_ID2 0x54 362*4882a593Smuzhiyun #define DVP_FRM1_ADDR_Y_ID2 0x58 363*4882a593Smuzhiyun #define DVP_FRM1_ADDR_UV_ID2 0x5C 364*4882a593Smuzhiyun #define DVP_FRM0_ADDR_Y_ID3 0x60 365*4882a593Smuzhiyun #define DVP_FRM0_ADDR_UV_ID3 0x64 366*4882a593Smuzhiyun #define DVP_FRM1_ADDR_Y_ID3 0x68 367*4882a593Smuzhiyun #define DVP_FRM1_ADDR_UV_ID3 0x6C 368*4882a593Smuzhiyun #define DVP_VIR_LINE_WIDTH 0x70 369*4882a593Smuzhiyun #define DVP_LINE_INT_NUM_01 0x74 370*4882a593Smuzhiyun #define DVP_LINE_INT_NUM_23 0x78 371*4882a593Smuzhiyun #define DVP_LINE_CNT_01 0x7C 372*4882a593Smuzhiyun #define DVP_LINE_CNT_23 0x80 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun /* RK3588 CSI Registers Offset */ 375*4882a593Smuzhiyun #define CSI_MIPI0_ID0_CTRL0 0x100 376*4882a593Smuzhiyun #define CSI_MIPI0_ID0_CTRL1 0x104 377*4882a593Smuzhiyun #define CSI_MIPI0_ID1_CTRL0 0x108 378*4882a593Smuzhiyun #define CSI_MIPI0_ID1_CTRL1 0x10C 379*4882a593Smuzhiyun #define CSI_MIPI0_ID2_CTRL0 0x110 380*4882a593Smuzhiyun #define CSI_MIPI0_ID2_CTRL1 0x114 381*4882a593Smuzhiyun #define CSI_MIPI0_ID3_CTRL0 0x118 382*4882a593Smuzhiyun #define CSI_MIPI0_ID3_CTRL1 0x11C 383*4882a593Smuzhiyun #define CSI_MIPI0_CTRL 0x120 384*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_Y_ID0 0x124 385*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_Y_ID0 0x128 386*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_UV_ID0 0x12C 387*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_UV_ID0 0x130 388*4882a593Smuzhiyun #define CSI_MIPI0_VLW_ID0 0x134 389*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_Y_ID1 0x138 390*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_Y_ID1 0x13C 391*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_UV_ID1 0x140 392*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_UV_ID1 0x144 393*4882a593Smuzhiyun #define CSI_MIPI0_VLW_ID1 0x148 394*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_Y_ID2 0x14C 395*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_Y_ID2 0x150 396*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_UV_ID2 0x154 397*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_UV_ID2 0x158 398*4882a593Smuzhiyun #define CSI_MIPI0_VLW_ID2 0x15C 399*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_Y_ID3 0x160 400*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_Y_ID3 0x164 401*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_UV_ID3 0x168 402*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_UV_ID3 0x16C 403*4882a593Smuzhiyun #define CSI_MIPI0_VLW_ID3 0x170 404*4882a593Smuzhiyun #define CSI_MIPI0_INTEN 0x174 405*4882a593Smuzhiyun #define CSI_MIPI0_INTSTAT 0x178 406*4882a593Smuzhiyun #define CSI_MIPI0_LINE_INT_NUM_ID0_1 0x17C 407*4882a593Smuzhiyun #define CSI_MIPI0_LINE_INT_NUM_ID2_3 0x180 408*4882a593Smuzhiyun #define CSI_MIPI0_LINE_CNT_ID0_1 0x184 409*4882a593Smuzhiyun #define CSI_MIPI0_LINE_CNT_ID2_3 0x188 410*4882a593Smuzhiyun #define CSI_MIPI0_ID0_CROP_START 0x18C 411*4882a593Smuzhiyun #define CSI_MIPI0_ID1_CROP_START 0x190 412*4882a593Smuzhiyun #define CSI_MIPI0_ID2_CROP_START 0x194 413*4882a593Smuzhiyun #define CSI_MIPI0_ID3_CROP_START 0x198 414*4882a593Smuzhiyun #define CSI_MIPI0_FRAME_NUM_VC0 0x19C 415*4882a593Smuzhiyun #define CSI_MIPI0_FRAME_NUM_VC1 0x1A0 416*4882a593Smuzhiyun #define CSI_MIPI0_FRAME_NUM_VC2 0x1A4 417*4882a593Smuzhiyun #define CSI_MIPI0_FRAME_NUM_VC3 0x1A8 418*4882a593Smuzhiyun #define CSI_MIPI0_EFFECT_CODE_ID0 0x1AC 419*4882a593Smuzhiyun #define CSI_MIPI0_EFFECT_CODE_ID1 0x1B0 420*4882a593Smuzhiyun #define CSI_MIPI0_EFFECT_CODE_ID2 0x1B4 421*4882a593Smuzhiyun #define CSI_MIPI0_EFFECT_CODE_ID3 0x1B8 422*4882a593Smuzhiyun #define CSI_MIPI0_ON_PAD 0x1BC 423*4882a593Smuzhiyun 424*4882a593Smuzhiyun /* RV1106 CONTROL Registers Offset */ 425*4882a593Smuzhiyun #define CIF_LVDS0_ID0_CTRL0 0x1D0 426*4882a593Smuzhiyun #define CIF_LVDS0_ID1_CTRL0 0x1D4 427*4882a593Smuzhiyun #define CIF_LVDS0_ID2_CTRL0 0x1D8 428*4882a593Smuzhiyun #define CIF_LVDS0_ID3_CTRL0 0x1DC 429*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID0_RV1106 0x1E0 430*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID0_RV1106 0x1E4 431*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID0_RV1106 0x1E8 432*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID0_RV1106 0x1EC 433*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID1_RV1106 0x1F0 434*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID1_RV1106 0x1F4 435*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID1_RV1106 0x1F8 436*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID1_RV1106 0x1FC 437*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID2_RV1106 0x200 438*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID2_RV1106 0x204 439*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID2_RV1106 0x208 440*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID2_RV1106 0x20C 441*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID3_RV1106 0x210 442*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID3_RV1106 0x214 443*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID3_RV1106 0x218 444*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID3_RV1106 0x21C 445*4882a593Smuzhiyun 446*4882a593Smuzhiyun /* RK3588 CONTROL Registers Offset */ 447*4882a593Smuzhiyun #define GLB_CTRL 0X000 448*4882a593Smuzhiyun #define GLB_INTEN 0X004 449*4882a593Smuzhiyun #define GLB_INTST 0X008 450*4882a593Smuzhiyun #define SCL_CH_CTRL 0x700 451*4882a593Smuzhiyun #define SCL_CTRL 0x704 452*4882a593Smuzhiyun #define SCL_FRM0_ADDR_CH0 0x708 453*4882a593Smuzhiyun #define SCL_FRM1_ADDR_CH0 0x70C 454*4882a593Smuzhiyun #define SCL_VLW_CH0 0x710 455*4882a593Smuzhiyun #define SCL_FRM0_ADDR_CH1 0x714 456*4882a593Smuzhiyun #define SCL_FRM1_ADDR_CH1 0x718 457*4882a593Smuzhiyun #define SCL_VLW_CH1 0x71C 458*4882a593Smuzhiyun #define SCL_FRM0_ADDR_CH2 0x720 459*4882a593Smuzhiyun #define SCL_FRM1_ADDR_CH2 0x724 460*4882a593Smuzhiyun #define SCL_VLW_CH2 0x728 461*4882a593Smuzhiyun #define SCL_FRM0_ADDR_CH3 0x72C 462*4882a593Smuzhiyun #define SCL_FRM1_ADDR_CH3 0x730 463*4882a593Smuzhiyun #define SCL_VLW_CH3 0x734 464*4882a593Smuzhiyun #define SCL_BLC_CH0 0x738 465*4882a593Smuzhiyun #define SCL_BLC_CH1 0x73C 466*4882a593Smuzhiyun #define SCL_BLC_CH2 0x740 467*4882a593Smuzhiyun #define SCL_BLC_CH3 0x744 468*4882a593Smuzhiyun #define TOISP0_CH_CTRL 0x780 469*4882a593Smuzhiyun #define TOISP0_CROP_SIZE 0x784 470*4882a593Smuzhiyun #define TOISP0_CROP 0x788 471*4882a593Smuzhiyun #define TOISP1_CH_CTRL 0x78C 472*4882a593Smuzhiyun #define TOISP1_CROP_SIZE 0x790 473*4882a593Smuzhiyun #define TOISP1_CROP 0x794 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun /* The key register bit description */ 476*4882a593Smuzhiyun 477*4882a593Smuzhiyun /* CIF_CTRL Reg */ 478*4882a593Smuzhiyun #define DISABLE_CAPTURE (0x0 << 0) 479*4882a593Smuzhiyun #define ENABLE_CAPTURE (0x1 << 0) 480*4882a593Smuzhiyun #define MODE_ONEFRAME (0x0 << 1) 481*4882a593Smuzhiyun #define MODE_PINGPONG (0x1 << 1) 482*4882a593Smuzhiyun #define MODE_LINELOOP (0x2 << 1) 483*4882a593Smuzhiyun #define AXI_BURST_16 (0xF << 12) 484*4882a593Smuzhiyun #define DVP_PRESS_EN (0x1 << 12) 485*4882a593Smuzhiyun #define DVP_HURRY_EN (0x1 << 8) 486*4882a593Smuzhiyun #define DVP_DMA_EN (0x1 << 1) 487*4882a593Smuzhiyun #define DVP_SW_WATER_LINE_75 (0x0 << 5) 488*4882a593Smuzhiyun #define DVP_SW_WATER_LINE_50 (0x1 << 5) 489*4882a593Smuzhiyun #define DVP_SW_WATER_LINE_25 (0x2 << 5) 490*4882a593Smuzhiyun #define DVP_SW_WATER_LINE_00 (0x3 << 5) 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun /* CIF_INTEN */ 493*4882a593Smuzhiyun #define INTEN_DISABLE (0x0 << 0) 494*4882a593Smuzhiyun #define FRAME_END_EN (0x1 << 0) 495*4882a593Smuzhiyun #define BUS_ERR_EN (0x1 << 6) 496*4882a593Smuzhiyun #define SCL_ERR_EN (0x1 << 7) 497*4882a593Smuzhiyun #define PRE_INF_FRAME_END_EN (0x1 << 8) 498*4882a593Smuzhiyun #define PST_INF_FRAME_END_EN (0x1 << 9) 499*4882a593Smuzhiyun #define LINE_INT_EN (0x1 << 10) 500*4882a593Smuzhiyun #define DVP_CHANNEL1_FRM_END_EN (0x1 << 11) 501*4882a593Smuzhiyun #define DVP_CHANNEL2_FRM_END_EN (0x1 << 12) 502*4882a593Smuzhiyun #define DVP_CHANNEL3_FRM_END_EN (0x1 << 13) 503*4882a593Smuzhiyun 504*4882a593Smuzhiyun /* CIF INTSTAT */ 505*4882a593Smuzhiyun #define INTSTAT_CLS (0x3FF) 506*4882a593Smuzhiyun #define FRAME_END (0x01 << 0) 507*4882a593Smuzhiyun #define LINE_ERR (0x01 << 2) 508*4882a593Smuzhiyun #define PIX_ERR (0x01 << 3) 509*4882a593Smuzhiyun #define IFIFO_OVERFLOW (0x01 << 4) 510*4882a593Smuzhiyun #define DFIFO_OVERFLOW (0x01 << 5) 511*4882a593Smuzhiyun #define BUS_ERR (0x01 << 6) 512*4882a593Smuzhiyun #define PRE_INF_FRAME_END (0x01 << 8) 513*4882a593Smuzhiyun #define PST_INF_FRAME_END (0x01 << 9) 514*4882a593Smuzhiyun #define LINE_INT_END (0x01 << 10) 515*4882a593Smuzhiyun #define FRAME_END_CLR (0x01 << 0) 516*4882a593Smuzhiyun #define PRE_INF_FRAME_END_CLR (0x01 << 8) 517*4882a593Smuzhiyun #define PST_INF_FRAME_END_CLR (0x01 << 9) 518*4882a593Smuzhiyun #define INTSTAT_ERR (0xFC) 519*4882a593Smuzhiyun #define INTSTAT_ERR_RK3588 (DVP_SIZE_ERR |\ 520*4882a593Smuzhiyun DVP_FIFO_OVERFLOW |\ 521*4882a593Smuzhiyun DVP_BANDWIDTH_LACK) 522*4882a593Smuzhiyun 523*4882a593Smuzhiyun #define DVP_ALL_OVERFLOW (IFIFO_OVERFLOW | DFIFO_OVERFLOW) 524*4882a593Smuzhiyun 525*4882a593Smuzhiyun #define DVP_FIFO_OVERFLOW (0x01 << 16) 526*4882a593Smuzhiyun #define DVP_BANDWIDTH_LACK (0x01 << 17) 527*4882a593Smuzhiyun 528*4882a593Smuzhiyun #define DVP_SIZE_ERR_ID0 (0x1 << 22) 529*4882a593Smuzhiyun #define DVP_SIZE_ERR_ID1 (0x1 << 23) 530*4882a593Smuzhiyun #define DVP_SIZE_ERR_ID2 (0x1 << 24) 531*4882a593Smuzhiyun #define DVP_SIZE_ERR_ID3 (0x1 << 25) 532*4882a593Smuzhiyun 533*4882a593Smuzhiyun #define DVP_SIZE_ERR (DVP_SIZE_ERR_ID0 |\ 534*4882a593Smuzhiyun DVP_SIZE_ERR_ID1 |\ 535*4882a593Smuzhiyun DVP_SIZE_ERR_ID2 |\ 536*4882a593Smuzhiyun DVP_SIZE_ERR_ID3) 537*4882a593Smuzhiyun 538*4882a593Smuzhiyun #define DVP_SW_PRESS_VALUE(val) (((val) & 0x7) << 13) 539*4882a593Smuzhiyun #define DVP_SW_HURRY_VALUE(val) (((val) & 0x7) << 9) 540*4882a593Smuzhiyun #define DVP_SW_CAP_EN(ID) (2 << ID) 541*4882a593Smuzhiyun #define DVP_SW_DMA_EN(ID) (0x100000 << ID) 542*4882a593Smuzhiyun #define DVP_START_INTSTAT(ID) (0x3 << ((ID) * 2)) 543*4882a593Smuzhiyun 544*4882a593Smuzhiyun #define DVP_DMA_END_INTEN(id) \ 545*4882a593Smuzhiyun ({ \ 546*4882a593Smuzhiyun unsigned int mask; \ 547*4882a593Smuzhiyun switch (id) { \ 548*4882a593Smuzhiyun case 0: \ 549*4882a593Smuzhiyun mask = 0x1 << 0; \ 550*4882a593Smuzhiyun break; \ 551*4882a593Smuzhiyun default: \ 552*4882a593Smuzhiyun mask = 0x1 << (id + 10); \ 553*4882a593Smuzhiyun break; \ 554*4882a593Smuzhiyun } \ 555*4882a593Smuzhiyun mask; \ 556*4882a593Smuzhiyun }) 557*4882a593Smuzhiyun 558*4882a593Smuzhiyun #define DVP_LINE_INTEN (0x01 << 10) 559*4882a593Smuzhiyun 560*4882a593Smuzhiyun #define DVP_DMA_END_INTSTAT(id) \ 561*4882a593Smuzhiyun ({ \ 562*4882a593Smuzhiyun unsigned int mask; \ 563*4882a593Smuzhiyun switch (id) { \ 564*4882a593Smuzhiyun case 0: \ 565*4882a593Smuzhiyun mask = 0x1 << 0; \ 566*4882a593Smuzhiyun break; \ 567*4882a593Smuzhiyun default: \ 568*4882a593Smuzhiyun mask = 0x1 << (id + 10); \ 569*4882a593Smuzhiyun break; \ 570*4882a593Smuzhiyun } \ 571*4882a593Smuzhiyun mask; \ 572*4882a593Smuzhiyun }) 573*4882a593Smuzhiyun 574*4882a593Smuzhiyun #define DVP_PST_INTSTAT PST_INF_FRAME_END 575*4882a593Smuzhiyun #define DVP_LINE_INTSTAT (0x01 << 10) 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun /* FRAME STATUS */ 578*4882a593Smuzhiyun #define FRAME_STAT_CLS 0x00 579*4882a593Smuzhiyun /* write 0 to clear frame 0 */ 580*4882a593Smuzhiyun #define FRM0_STAT_CLS 0xfffffffe 581*4882a593Smuzhiyun #define FRAME_NUM_SHIFT (16U) 582*4882a593Smuzhiyun #define FRAME_NUM_MASK (0xffff << FRAME_NUM_SHIFT) 583*4882a593Smuzhiyun #define CIF_GET_FRAME_ID(val) (((val) & FRAME_NUM_MASK) >> FRAME_NUM_SHIFT) 584*4882a593Smuzhiyun 585*4882a593Smuzhiyun /* CIF FORMAT */ 586*4882a593Smuzhiyun #define VSY_HIGH_ACTIVE (0x01 << 0) 587*4882a593Smuzhiyun #define VSY_LOW_ACTIVE (0x00 << 0) 588*4882a593Smuzhiyun #define HSY_LOW_ACTIVE (0x01 << 1) 589*4882a593Smuzhiyun #define HSY_HIGH_ACTIVE (0x00 << 1) 590*4882a593Smuzhiyun #define INPUT_MODE_YUV (0x00 << 2) 591*4882a593Smuzhiyun #define INPUT_MODE_PAL (0x02 << 2) 592*4882a593Smuzhiyun #define INPUT_MODE_BT656_YUV422 (0x02 << 2) 593*4882a593Smuzhiyun #define INPUT_MODE_NTSC (0x03 << 2) 594*4882a593Smuzhiyun #define INPUT_MODE_BT1120 (0x07 << 2) 595*4882a593Smuzhiyun #define INPUT_MODE_RAW (0x04 << 2) 596*4882a593Smuzhiyun #define INPUT_MODE_JPEG (0x05 << 2) 597*4882a593Smuzhiyun #define INPUT_MODE_SONY_RAW (0x05 << 2) 598*4882a593Smuzhiyun #define INPUT_MODE_MIPI (0x06 << 2) 599*4882a593Smuzhiyun #define YUV_INPUT_ORDER_UYVY (0x00 << 5) 600*4882a593Smuzhiyun #define YUV_INPUT_ORDER_YVYU (0x01 << 5) 601*4882a593Smuzhiyun #define YUV_INPUT_ORDER_VYUY (0x10 << 5) 602*4882a593Smuzhiyun #define YUV_INPUT_ORDER_YUYV (0x03 << 5) 603*4882a593Smuzhiyun #define YUV_INPUT_422 (0x00 << 7) 604*4882a593Smuzhiyun #define YUV_INPUT_420 (0x01 << 7) 605*4882a593Smuzhiyun #define INPUT_420_ORDER_EVEN (0x00 << 8) 606*4882a593Smuzhiyun #define INPUT_420_ORDER_ODD (0x01 << 8) 607*4882a593Smuzhiyun #define CCIR_INPUT_ORDER_ODD (0x00 << 9) 608*4882a593Smuzhiyun #define CCIR_INPUT_ORDER_EVEN (0x01 << 9) 609*4882a593Smuzhiyun #define RAW_DATA_WIDTH_8 (0x00 << 11) 610*4882a593Smuzhiyun #define RAW_DATA_WIDTH_10 (0x01 << 11) 611*4882a593Smuzhiyun #define RAW_DATA_WIDTH_12 (0x02 << 11) 612*4882a593Smuzhiyun #define MIPI_MODE_32BITS_BYPASS (0x00 << 13) 613*4882a593Smuzhiyun #define MIPI_MODE_RGB (0x01 << 13) 614*4882a593Smuzhiyun #define MIPI_MODE_YUV (0x02 << 13) 615*4882a593Smuzhiyun #define YUV_OUTPUT_422 (0x00 << 16) 616*4882a593Smuzhiyun #define YUV_OUTPUT_420 (0x01 << 16) 617*4882a593Smuzhiyun #define OUTPUT_420_ORDER_EVEN (0x00 << 17) 618*4882a593Smuzhiyun #define OUTPUT_420_ORDER_ODD (0x01 << 17) 619*4882a593Smuzhiyun #define RAWD_DATA_LITTLE_ENDIAN (0x00 << 18) 620*4882a593Smuzhiyun #define RAWD_DATA_BIG_ENDIAN (0x01 << 18) 621*4882a593Smuzhiyun #define UV_STORAGE_ORDER_UVUV (0x00 << 19) 622*4882a593Smuzhiyun #define UV_STORAGE_ORDER_VUVU (0x01 << 19) 623*4882a593Smuzhiyun #define BT1120_CLOCK_SINGLE_EDGES (0x00 << 24) 624*4882a593Smuzhiyun #define BT1120_CLOCK_DOUBLE_EDGES (0x01 << 24) 625*4882a593Smuzhiyun #define BT1120_TRANSMIT_INTERFACE (0x00 << 25) 626*4882a593Smuzhiyun #define BT1120_TRANSMIT_PROGRESS (0x01 << 25) 627*4882a593Smuzhiyun #define BT1120_YC_SWAP (0x01 << 26) 628*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_DISABLE (0x00 << 28) 629*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_ENABLE (0x01 << 28) 630*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_SEL_MSB (0x00 << 29) 631*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_SEL_LSB (0x01 << 29) 632*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_MODE_1 (0x00 << 30) 633*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_MODE_2 (0x01 << 30) 634*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_MODE_4 (0x02 << 30) 635*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_0_MASK ~(0x03 << 4) 636*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_1_MASK ~(0x03 << 12) 637*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_2_MASK ~(0x03 << 20) 638*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_3_MASK ~(0x03 << 28) 639*4882a593Smuzhiyun #define CIF_HIGH_ALIGN (0x01 << 18) 640*4882a593Smuzhiyun #define CIF_HIGH_ALIGN_RK3588 (0x01 << 21) 641*4882a593Smuzhiyun #define BT656_DETECT_SAV (0X01 << 13) 642*4882a593Smuzhiyun #define BT656_DETECT_SAV_EAV (0X00 << 13) 643*4882a593Smuzhiyun 644*4882a593Smuzhiyun #define BT1120_CLOCK_SINGLE_EDGES_RK3588 (0x00 << 11) 645*4882a593Smuzhiyun #define BT1120_CLOCK_DOUBLE_EDGES_RK3588 (0x01 << 11) 646*4882a593Smuzhiyun #define TRANSMIT_INTERFACE_RK3588 (0x01 << 9) 647*4882a593Smuzhiyun #define TRANSMIT_PROGRESS_RK3588 (0x00 << 9) 648*4882a593Smuzhiyun #define BT1120_YC_SWAP_RK3588 (0x01 << 12) 649*4882a593Smuzhiyun #define INPUT_BT601_YUV422 (0x00 << 2) 650*4882a593Smuzhiyun #define INPUT_BT601_RAW (0x01 << 2) 651*4882a593Smuzhiyun #define INPUT_BT656_YUV422 (0x02 << 2) 652*4882a593Smuzhiyun #define INPUT_BT1120_YUV422 (0x03 << 2) 653*4882a593Smuzhiyun #define INPUT_SONY_RAW (0x04 << 2) 654*4882a593Smuzhiyun 655*4882a593Smuzhiyun /* CIF_SCL_CTRL */ 656*4882a593Smuzhiyun #define ENABLE_SCL_DOWN (0x01 << 0) 657*4882a593Smuzhiyun #define DISABLE_SCL_DOWN (0x00 << 0) 658*4882a593Smuzhiyun #define ENABLE_SCL_UP (0x01 << 1) 659*4882a593Smuzhiyun #define DISABLE_SCL_UP (0x00 << 1) 660*4882a593Smuzhiyun #define ENABLE_YUV_16BIT_BYPASS (0x01 << 4) 661*4882a593Smuzhiyun #define DISABLE_YUV_16BIT_BYPASS (0x00 << 4) 662*4882a593Smuzhiyun #define ENABLE_RAW_16BIT_BYPASS (0x01 << 5) 663*4882a593Smuzhiyun #define DISABLE_RAW_16BIT_BYPASS (0x00 << 5) 664*4882a593Smuzhiyun #define ENABLE_32BIT_BYPASS (0x01 << 6) 665*4882a593Smuzhiyun #define DISABLE_32BIT_BYPASS (0x00 << 6) 666*4882a593Smuzhiyun 667*4882a593Smuzhiyun /* CIF_FRAME_INTSTAT */ 668*4882a593Smuzhiyun #define CIF_F0_READY (0x01 << 0) 669*4882a593Smuzhiyun #define CIF_F1_READY (0x01 << 1) 670*4882a593Smuzhiyun #define DVP_CHANNEL0_FRM_READ (CIF_F0_READY | CIF_F1_READY) 671*4882a593Smuzhiyun #define DVP_CHANNEL1_F0_READY (0x01 << 4) 672*4882a593Smuzhiyun #define DVP_CHANNEL1_F1_READY (0x01 << 5) 673*4882a593Smuzhiyun #define DVP_CHANNEL1_FRM_READ (DVP_CHANNEL1_F0_READY | DVP_CHANNEL1_F1_READY) 674*4882a593Smuzhiyun #define DVP_CHANNEL2_F0_READY (0x01 << 8) 675*4882a593Smuzhiyun #define DVP_CHANNEL2_F1_READY (0x01 << 9) 676*4882a593Smuzhiyun #define DVP_CHANNEL2_FRM_READ (DVP_CHANNEL2_F0_READY | DVP_CHANNEL2_F1_READY) 677*4882a593Smuzhiyun #define DVP_CHANNEL3_F0_READY (0x01 << 12) 678*4882a593Smuzhiyun #define DVP_CHANNEL3_F1_READY (0x01 << 13) 679*4882a593Smuzhiyun #define DVP_CHANNEL3_FRM_READ (DVP_CHANNEL3_F0_READY | DVP_CHANNEL3_F1_READY) 680*4882a593Smuzhiyun 681*4882a593Smuzhiyun #define DVP_FRAME0_START_ID0 (0x1 << 0) 682*4882a593Smuzhiyun #define DVP_FRAME1_START_ID0 (0x1 << 1) 683*4882a593Smuzhiyun 684*4882a593Smuzhiyun #define DVP_FRAME_END_ID0 (0x1 << 0) 685*4882a593Smuzhiyun #define DVP_FRAME_END_ID1 (0x1 << 11) 686*4882a593Smuzhiyun #define DVP_FRAME_END_ID2 (0x1 << 12) 687*4882a593Smuzhiyun #define DVP_FRAME_END_ID3 (0x1 << 13) 688*4882a593Smuzhiyun 689*4882a593Smuzhiyun #define DVP_FRAME0_END_ID0 (0x1 << 8) 690*4882a593Smuzhiyun #define DVP_FRAME1_END_ID0 (0x1 << 9) 691*4882a593Smuzhiyun #define DVP_ALL_END_ID0 (DVP_FRAME0_END_ID0 | DVP_FRAME1_END_ID0) 692*4882a593Smuzhiyun 693*4882a593Smuzhiyun #define DVP_FRAME0_END_ID1 (0x1 << 10) 694*4882a593Smuzhiyun #define DVP_FRAME1_END_ID1 (0x1 << 11) 695*4882a593Smuzhiyun #define DVP_ALL_END_ID1 (DVP_FRAME0_END_ID1 | DVP_FRAME1_END_ID1) 696*4882a593Smuzhiyun 697*4882a593Smuzhiyun #define DVP_FRAME0_END_ID2 (0x1 << 12) 698*4882a593Smuzhiyun #define DVP_FRAME1_END_ID2 (0x1 << 13) 699*4882a593Smuzhiyun #define DVP_ALL_END_ID2 (DVP_FRAME0_END_ID2 | DVP_FRAME1_END_ID2) 700*4882a593Smuzhiyun 701*4882a593Smuzhiyun #define DVP_FRAME0_END_ID3 (0x1 << 14) 702*4882a593Smuzhiyun #define DVP_FRAME1_END_ID3 (0x1 << 15) 703*4882a593Smuzhiyun #define DVP_ALL_END_ID3 (DVP_FRAME0_END_ID3 | DVP_FRAME1_END_ID3) 704*4882a593Smuzhiyun 705*4882a593Smuzhiyun #define DVP_ALIGN_MSB (0x01 << 21) 706*4882a593Smuzhiyun #define DVP_ALIGN_LSB (0x00 << 21) 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun #define DVP_FRM_STS_ID0(x) (((x) & (0x3 << 0)) >> 0) 709*4882a593Smuzhiyun #define DVP_FRM_STS_ID1(x) (((x) & (0x3 << 4)) >> 4) 710*4882a593Smuzhiyun #define DVP_FRM_STS_ID2(x) (((x) & (0x3 << 8)) >> 8) 711*4882a593Smuzhiyun #define DVP_FRM_STS_ID3(x) (((x) & (0x3 << 12)) >> 12) 712*4882a593Smuzhiyun 713*4882a593Smuzhiyun #define DVP_SW_MULTI_ID(channel, id, bits) \ 714*4882a593Smuzhiyun ({ \ 715*4882a593Smuzhiyun unsigned int mask; \ 716*4882a593Smuzhiyun switch (channel) { \ 717*4882a593Smuzhiyun case 0: \ 718*4882a593Smuzhiyun mask = ((bits) << 4) | ((id) << 0); \ 719*4882a593Smuzhiyun break; \ 720*4882a593Smuzhiyun case 1: \ 721*4882a593Smuzhiyun mask = ((bits) << 12) | ((id) << 8); \ 722*4882a593Smuzhiyun break; \ 723*4882a593Smuzhiyun case 2: \ 724*4882a593Smuzhiyun mask = ((bits) << 20) | ((id) << 16); \ 725*4882a593Smuzhiyun break; \ 726*4882a593Smuzhiyun case 3: \ 727*4882a593Smuzhiyun mask = ((bits) << 28) | ((id) << 24); \ 728*4882a593Smuzhiyun break; \ 729*4882a593Smuzhiyun default: \ 730*4882a593Smuzhiyun mask = ((bits) << 4) | ((id) << 0); \ 731*4882a593Smuzhiyun break; \ 732*4882a593Smuzhiyun } \ 733*4882a593Smuzhiyun mask; \ 734*4882a593Smuzhiyun }) 735*4882a593Smuzhiyun 736*4882a593Smuzhiyun /* CIF CROP */ 737*4882a593Smuzhiyun #define CIF_CROP_Y_SHIFT 16 738*4882a593Smuzhiyun #define CIF_CROP_X_SHIFT 0 739*4882a593Smuzhiyun 740*4882a593Smuzhiyun /* CIF SCALE*/ 741*4882a593Smuzhiyun #define SCALE_END_INTSTAT(ch) (0x3 << ((ch + 1) * 2)) 742*4882a593Smuzhiyun #define SCALE_FIFO_OVERFLOW(ch) (1 << (10 + ch)) 743*4882a593Smuzhiyun #define SCALE_TOISP_AXI0_ERR (1 << 0) 744*4882a593Smuzhiyun #define SCALE_TOISP_AXI1_ERR (1 << 1) 745*4882a593Smuzhiyun #define CIF_SCALE_SW_PRESS_VALUE(val) (((val) & 0x7) << 13) 746*4882a593Smuzhiyun #define CIF_SCALE_SW_PRESS_ENABLE (0x1 << 12) 747*4882a593Smuzhiyun #define CIF_SCALE_SW_HURRY_VALUE(val) (((val) & 0x7) << 5) 748*4882a593Smuzhiyun #define CIF_SCALE_SW_HURRY_ENABLE (0x1 << 4) 749*4882a593Smuzhiyun #define CIF_SCALE_SW_WATER_LINE(val) (val << 1) 750*4882a593Smuzhiyun #define CIF_SCALE_SW_SRC_CH(val, ch) ((val & 0x1f) << (3 + ch * 8)) 751*4882a593Smuzhiyun #define CIF_SCALE_SW_MODE(val, ch) ((val & 0x3) << (1 + ch * 8)) 752*4882a593Smuzhiyun #define CIF_SCALE_EN(ch) (1 << (ch * 8)) 753*4882a593Smuzhiyun #define SW_SCALE_END(intstat, ch) ((intstat >> ((ch + 1) * 2)) & 0x3) 754*4882a593Smuzhiyun #define SCALE_SOFT_RESET(ch) (0x1 << (ch + 16)) 755*4882a593Smuzhiyun 756*4882a593Smuzhiyun /* CIF TOISP*/ 757*4882a593Smuzhiyun #define CIF_TOISP0_FS(ch) (BIT(14) << ch) 758*4882a593Smuzhiyun #define CIF_TOISP1_FS(ch) (BIT(17) << ch) 759*4882a593Smuzhiyun #define CIF_TOISP0_FE(ch) (BIT(20) << ch) 760*4882a593Smuzhiyun #define CIF_TOISP1_FE(ch) (BIT(23) << ch) 761*4882a593Smuzhiyun 762*4882a593Smuzhiyun /* CIF_CSI_ID_CTRL0 */ 763*4882a593Smuzhiyun #define CSI_DISABLE_CAPTURE (0x0 << 0) 764*4882a593Smuzhiyun #define CSI_ENABLE_CAPTURE (0x1 << 0) 765*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW8 (0x0 << 1) 766*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW10 (0x1 << 1) 767*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW12 (0x2 << 1) 768*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RGB888 (0x3 << 1) 769*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV422 (0x4 << 1) 770*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV420SP (0x5 << 1) 771*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV400 (0x6 << 1) 772*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RGB565 (0x7 << 1) 773*4882a593Smuzhiyun #define CSI_DISABLE_COMMAND_MODE (0x0 << 4) 774*4882a593Smuzhiyun #define CSI_ENABLE_COMMAND_MODE (0x1 << 4) 775*4882a593Smuzhiyun #define CSI_DISABLE_CROP (0x0 << 5) 776*4882a593Smuzhiyun #define CSI_ENABLE_CROP (0x1 << 5) 777*4882a593Smuzhiyun #define CSI_DISABLE_CROP_V1 (0x0 << 4) 778*4882a593Smuzhiyun #define CSI_ENABLE_CROP_V1 (0x1 << 4) 779*4882a593Smuzhiyun #define CSI_ENABLE_MIPI_COMPACT (0x1 << 6) 780*4882a593Smuzhiyun #define CSI_YUV_INPUT_ORDER_UYVY (0x0 << 16) 781*4882a593Smuzhiyun #define CSI_YUV_INPUT_ORDER_VYUY (0x1 << 16) 782*4882a593Smuzhiyun #define CSI_YUV_INPUT_ORDER_YUYV (0x2 << 16) 783*4882a593Smuzhiyun #define CSI_YUV_INPUT_ORDER_YVYU (0x3 << 16) 784*4882a593Smuzhiyun #define CSI_HIGH_ALIGN (0x1 << 31) 785*4882a593Smuzhiyun #define CSI_HIGH_ALIGN_RK3588 (0x1 << 27) 786*4882a593Smuzhiyun 787*4882a593Smuzhiyun #define CSI_YUV_OUTPUT_ORDER_UYVY (0x0 << 18) 788*4882a593Smuzhiyun #define CSI_YUV_OUTPUT_ORDER_VYUY (0x1 << 18) 789*4882a593Smuzhiyun #define CSI_YUV_OUTPUT_ORDER_YUYV (0x2 << 18) 790*4882a593Smuzhiyun #define CSI_YUV_OUTPUT_ORDER_YVYU (0x3 << 18) 791*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW_COMPACT (0x0 << 5) 792*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW_UNCOMPACT (0x1 << 5) 793*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV_PACKET (0x2 << 5) 794*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV400_RK3588 (0x3 << 5) 795*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV422SP_RK3588 (0x4 << 5) 796*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV420SP_RK3588 (0x5 << 5) 797*4882a593Smuzhiyun #define CSI_ALIGN_MSB (0x01 << 27) 798*4882a593Smuzhiyun #define CSI_ALIGN_LSB (0x0 << 27) 799*4882a593Smuzhiyun #define CSI_DMA_ENABLE (0x1 << 28) 800*4882a593Smuzhiyun 801*4882a593Smuzhiyun #define CSI_NO_HDR (0X0 << 22) 802*4882a593Smuzhiyun #define CSI_HDR2 (0X1 << 22) 803*4882a593Smuzhiyun #define CSI_HDR3 (0X2 << 22) 804*4882a593Smuzhiyun 805*4882a593Smuzhiyun #define CSI_HDR_MODE_VC (0x0 << 20) 806*4882a593Smuzhiyun #define CSI_HDR_MODE_LINE_CNT (0x1 << 20) 807*4882a593Smuzhiyun #define CSI_HDR_MODE_LINE_INFO (0x2 << 20) 808*4882a593Smuzhiyun #define CSI_HDR_VC_MODE_PROTECT (0x1 << 29) 809*4882a593Smuzhiyun 810*4882a593Smuzhiyun #define LVDS_ENABLE_CAPTURE (0x1 << 16) 811*4882a593Smuzhiyun #define LVDS_MODE(mode) (((mode) & 0x7) << 17) 812*4882a593Smuzhiyun #define LVDS_LANES_ENABLED(lanes) \ 813*4882a593Smuzhiyun ({ \ 814*4882a593Smuzhiyun unsigned int mask; \ 815*4882a593Smuzhiyun switch (lanes) { \ 816*4882a593Smuzhiyun case 1: \ 817*4882a593Smuzhiyun mask = 0x1 << 20; \ 818*4882a593Smuzhiyun break; \ 819*4882a593Smuzhiyun case 2: \ 820*4882a593Smuzhiyun mask = 0x3 << 20; \ 821*4882a593Smuzhiyun break; \ 822*4882a593Smuzhiyun case 3: \ 823*4882a593Smuzhiyun mask = 0x7 << 20; \ 824*4882a593Smuzhiyun break; \ 825*4882a593Smuzhiyun case 4: \ 826*4882a593Smuzhiyun mask = 0xf << 20; \ 827*4882a593Smuzhiyun break; \ 828*4882a593Smuzhiyun default: \ 829*4882a593Smuzhiyun mask = 0x1 << 20; \ 830*4882a593Smuzhiyun break; \ 831*4882a593Smuzhiyun } \ 832*4882a593Smuzhiyun mask; \ 833*4882a593Smuzhiyun }) 834*4882a593Smuzhiyun 835*4882a593Smuzhiyun #define LVDS_MAIN_LANE(index) (((index) & 0x3) << 24) 836*4882a593Smuzhiyun #define LVDS_FID(id) (((id) & 0x3) << 26) 837*4882a593Smuzhiyun #define LVDS_HDR_FRAME_X2 (0x0 << 28) 838*4882a593Smuzhiyun #define LVDS_HDR_FRAME_X3 (0x1 << 28) 839*4882a593Smuzhiyun #define LVDS_COMPACT (0x1 << 29) 840*4882a593Smuzhiyun 841*4882a593Smuzhiyun #define LVDS_ENABLE_CAPTURE_RV1106 (0x1 << 0) 842*4882a593Smuzhiyun #define LVDS_MODE_RV1106(mode) (((mode) & 0x7) << 1) 843*4882a593Smuzhiyun #define LVDS_LANES_ENABLED_RV1106(lanes) \ 844*4882a593Smuzhiyun ({ \ 845*4882a593Smuzhiyun unsigned int mask; \ 846*4882a593Smuzhiyun switch (lanes) { \ 847*4882a593Smuzhiyun case 1: \ 848*4882a593Smuzhiyun mask = 0x1 << 4; \ 849*4882a593Smuzhiyun break; \ 850*4882a593Smuzhiyun case 2: \ 851*4882a593Smuzhiyun mask = 0x3 << 4; \ 852*4882a593Smuzhiyun break; \ 853*4882a593Smuzhiyun case 3: \ 854*4882a593Smuzhiyun mask = 0x7 << 4; \ 855*4882a593Smuzhiyun break; \ 856*4882a593Smuzhiyun case 4: \ 857*4882a593Smuzhiyun mask = 0xf << 4; \ 858*4882a593Smuzhiyun break; \ 859*4882a593Smuzhiyun default: \ 860*4882a593Smuzhiyun mask = 0x1 << 4; \ 861*4882a593Smuzhiyun break; \ 862*4882a593Smuzhiyun } \ 863*4882a593Smuzhiyun mask; \ 864*4882a593Smuzhiyun }) 865*4882a593Smuzhiyun 866*4882a593Smuzhiyun #define LVDS_MAIN_LANE_RV1106(index) (((index) & 0x3) << 8) 867*4882a593Smuzhiyun #define LVDS_FID_RV1106(id) (((id) & 0x3) << 10) 868*4882a593Smuzhiyun #define LVDS_HDR_FRAME_X2_RV1106 (0x0 << 12) 869*4882a593Smuzhiyun #define LVDS_HDR_FRAME_X3_RV1106 (0x1 << 12) 870*4882a593Smuzhiyun #define LVDS_DMAEN_RV1106 (0x1 << 15) 871*4882a593Smuzhiyun 872*4882a593Smuzhiyun /* CIF_CSI_INTEN */ 873*4882a593Smuzhiyun #define CSI_FRAME1_START_INTEN(id) (0x1 << ((id) * 2 + 1)) 874*4882a593Smuzhiyun #define CSI_FRAME0_END_INTEN(id) (0x1 << ((id) * 2 + 8)) 875*4882a593Smuzhiyun #define CSI_FRAME1_END_INTEN(id) (0x1 << ((id) * 2 + 9)) 876*4882a593Smuzhiyun #define CSI_DMA_Y_FIFO_OVERFLOW_INTEN (0x1 << 16) 877*4882a593Smuzhiyun #define CSI_DMA_UV_FIFO_OVERFLOW_INTEN (0x1 << 17) 878*4882a593Smuzhiyun #define CSI_CONFIG_FIFO_OVERFLOW_INTEN (0x1 << 18) 879*4882a593Smuzhiyun #define CSI_BANDWIDTH_LACK_INTEN (0x1 << 19) 880*4882a593Smuzhiyun #define CSI_RX_FIFO_OVERFLOW_INTEN (0x1 << 20) 881*4882a593Smuzhiyun #define CSI_ALL_FRAME_START_INTEN (0xff << 0) 882*4882a593Smuzhiyun #define CSI_ALL_FRAME_END_INTEN (0xff << 8) 883*4882a593Smuzhiyun #define CSI_ALL_ERROR_INTEN (0x1f << 16) 884*4882a593Smuzhiyun #define CSI_ALL_ERROR_INTEN_V1 (0xf0f << 16) 885*4882a593Smuzhiyun 886*4882a593Smuzhiyun #define CSI_START_INTEN(id) (0x3 << ((id) * 2)) 887*4882a593Smuzhiyun #define CSI_DMA_END_INTEN(id) (0x3 << ((id) * 2 + 8)) 888*4882a593Smuzhiyun #define CSI_LINE_INTEN(id) (0x1 << ((id) + 21)) 889*4882a593Smuzhiyun #define CSI_LINE_INTEN_RK3588(id) (0x1 << ((id) + 20)) 890*4882a593Smuzhiyun 891*4882a593Smuzhiyun #define CSI_START_INTSTAT(id) (0x3 << ((id) * 2)) 892*4882a593Smuzhiyun #define CSI_DMA_END_INTSTAT(id) (0x3 << ((id) * 2 + 8)) 893*4882a593Smuzhiyun #define CSI_LINE_INTSTAT(id) (0x1 << ((id) + 21)) 894*4882a593Smuzhiyun #define CSI_LINE_INTSTAT_V1(id) (0x1 << ((id) + 20)) 895*4882a593Smuzhiyun 896*4882a593Smuzhiyun /* CIF_CSI_INTSTAT */ 897*4882a593Smuzhiyun #define CSI_FRAME0_START_ID0 (0x1 << 0) 898*4882a593Smuzhiyun #define CSI_FRAME1_START_ID0 (0x1 << 1) 899*4882a593Smuzhiyun #define CSI_FRAME0_START_ID1 (0x1 << 2) 900*4882a593Smuzhiyun #define CSI_FRAME1_START_ID1 (0x1 << 3) 901*4882a593Smuzhiyun #define CSI_FRAME0_START_ID2 (0x1 << 4) 902*4882a593Smuzhiyun #define CSI_FRAME1_START_ID2 (0x1 << 5) 903*4882a593Smuzhiyun #define CSI_FRAME0_START_ID3 (0x1 << 6) 904*4882a593Smuzhiyun #define CSI_FRAME1_START_ID3 (0x1 << 7) 905*4882a593Smuzhiyun #define CSI_FRAME0_END_ID0 (0x1 << 8) 906*4882a593Smuzhiyun #define CSI_FRAME1_END_ID0 (0x1 << 9) 907*4882a593Smuzhiyun #define CSI_FRAME0_END_ID1 (0x1 << 10) 908*4882a593Smuzhiyun #define CSI_FRAME1_END_ID1 (0x1 << 11) 909*4882a593Smuzhiyun #define CSI_FRAME0_END_ID2 (0x1 << 12) 910*4882a593Smuzhiyun #define CSI_FRAME1_END_ID2 (0x1 << 13) 911*4882a593Smuzhiyun #define CSI_FRAME0_END_ID3 (0x1 << 14) 912*4882a593Smuzhiyun #define CSI_FRAME1_END_ID3 (0x1 << 15) 913*4882a593Smuzhiyun #define CSI_DMA_Y_FIFO_OVERFLOW (0x1 << 16) 914*4882a593Smuzhiyun #define CSI_DMA_UV_FIFO_OVERFLOW (0x1 << 17) 915*4882a593Smuzhiyun #define CSI_CONFIG_FIFO_OVERFLOW (0x1 << 18) 916*4882a593Smuzhiyun #define CSI_BANDWIDTH_LACK (0x1 << 19) 917*4882a593Smuzhiyun #define CSI_RX_FIFO_OVERFLOW (0x1 << 20) 918*4882a593Smuzhiyun #define CSI_LINE_ID0_INTST (0x1 << 21) 919*4882a593Smuzhiyun #define CSI_LINE_ID1_INTST (0x1 << 22) 920*4882a593Smuzhiyun #define CSI_LINE_ID2_INTST (0x1 << 23) 921*4882a593Smuzhiyun #define CSI_LINE_ID3_INTST (0x1 << 24) 922*4882a593Smuzhiyun #define CSI_DMA_LVDS_ID2_FIFO_OVERFLOW (0x1 << 25) 923*4882a593Smuzhiyun #define CSI_DMA_LVDS_ID3_FIFO_OVERFLOW (0x1 << 26) 924*4882a593Smuzhiyun #define CSI_SIZE_ERR_ID0 (0x1 << 24) 925*4882a593Smuzhiyun #define CSI_SIZE_ERR_ID1 (0x1 << 25) 926*4882a593Smuzhiyun #define CSI_SIZE_ERR_ID2 (0x1 << 26) 927*4882a593Smuzhiyun #define CSI_SIZE_ERR_ID3 (0x1 << 27) 928*4882a593Smuzhiyun 929*4882a593Smuzhiyun #define CSI_FRAME_START_ID0 (CSI_FRAME0_START_ID0 |\ 930*4882a593Smuzhiyun CSI_FRAME1_START_ID0) 931*4882a593Smuzhiyun #define CSI_FRAME_START_ID1 (CSI_FRAME0_START_ID1 |\ 932*4882a593Smuzhiyun CSI_FRAME1_START_ID1) 933*4882a593Smuzhiyun #define CSI_FRAME_START_ID2 (CSI_FRAME0_START_ID2 |\ 934*4882a593Smuzhiyun CSI_FRAME1_START_ID2) 935*4882a593Smuzhiyun #define CSI_FRAME_START_ID3 (CSI_FRAME0_START_ID3 |\ 936*4882a593Smuzhiyun CSI_FRAME1_START_ID3) 937*4882a593Smuzhiyun #define CSI_FRAME_END_ID0 (CSI_FRAME0_END_ID0 |\ 938*4882a593Smuzhiyun CSI_FRAME1_END_ID0) 939*4882a593Smuzhiyun #define CSI_FRAME_END_ID1 (CSI_FRAME0_END_ID1 |\ 940*4882a593Smuzhiyun CSI_FRAME1_END_ID1) 941*4882a593Smuzhiyun #define CSI_FRAME_END_ID2 (CSI_FRAME0_END_ID2 |\ 942*4882a593Smuzhiyun CSI_FRAME1_END_ID2) 943*4882a593Smuzhiyun #define CSI_FRAME_END_ID3 (CSI_FRAME0_END_ID3 |\ 944*4882a593Smuzhiyun CSI_FRAME1_END_ID3) 945*4882a593Smuzhiyun #define CSI_FIFO_OVERFLOW (CSI_DMA_Y_FIFO_OVERFLOW |\ 946*4882a593Smuzhiyun CSI_DMA_UV_FIFO_OVERFLOW |\ 947*4882a593Smuzhiyun CSI_CONFIG_FIFO_OVERFLOW |\ 948*4882a593Smuzhiyun CSI_RX_FIFO_OVERFLOW |\ 949*4882a593Smuzhiyun CSI_DMA_LVDS_ID2_FIFO_OVERFLOW |\ 950*4882a593Smuzhiyun CSI_DMA_LVDS_ID3_FIFO_OVERFLOW) 951*4882a593Smuzhiyun 952*4882a593Smuzhiyun /*mask for rk3588*/ 953*4882a593Smuzhiyun #define CSI_RX_FIFO_OVERFLOW_V1 (0x1 << 19) 954*4882a593Smuzhiyun #define CSI_BANDWIDTH_LACK_V1 (0x1 << 18) 955*4882a593Smuzhiyun #define CSI_ALL_ERROR_INTEN_V1 (0xf0f << 16) 956*4882a593Smuzhiyun 957*4882a593Smuzhiyun 958*4882a593Smuzhiyun #define CSI_FIFO_OVERFLOW_V1 (CSI_DMA_Y_FIFO_OVERFLOW |\ 959*4882a593Smuzhiyun CSI_DMA_UV_FIFO_OVERFLOW |\ 960*4882a593Smuzhiyun CSI_RX_FIFO_OVERFLOW_V1) 961*4882a593Smuzhiyun #define CSI_SIZE_ERR (CSI_SIZE_ERR_ID0 |\ 962*4882a593Smuzhiyun CSI_SIZE_ERR_ID1 |\ 963*4882a593Smuzhiyun CSI_SIZE_ERR_ID2 |\ 964*4882a593Smuzhiyun CSI_SIZE_ERR_ID3) 965*4882a593Smuzhiyun 966*4882a593Smuzhiyun /* CIF_MIPI_LVDS_CTRL */ 967*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_DMA_IDLE (0x1 << 16) 968*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_PRESS_VALUE(val) (((val) & 0x3) << 13) 969*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_PRESS_VALUE_RK3588(val) (((val) & 0x7) << 13) 970*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_PRESS_ENABLE (0x1 << 12) 971*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_LVDS_WIDTH_8BITS (0x0 << 9) 972*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_LVDS_WIDTH_10BITS (0x1 << 9) 973*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_LVDS_WIDTH_12BITS (0x2 << 9) 974*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_SEL_LVDS (0x1 << 8) 975*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_SEL_LVDS_RV1106 (0x1 << 3) 976*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_VALUE(val) (((val) & 0x3) << 5) 977*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_VALUE_RK3588(val) (((val) & 0x7) << 5) 978*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_ENABLE (0x1 << 4) 979*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_75 (0x0 << 1) 980*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_50 (0x1 << 1) 981*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_25 (0x2 << 1) 982*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_00 (0x3 << 1) 983*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_ENABLE (0x1 << 0) 984*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_DMA_IDLE_RK1808 (0x1 << 24) 985*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_VALUE_RK1808(val) (((val) & 0x3) << 17) 986*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_ENABLE_RK1808 (0x1 << 16) 987*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_75_RK1808 (0x0 << 0) 988*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_50_RK1808 (0x1 << 0) 989*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_25_RK1808 (0x2 << 0) 990*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_00_RK1808 (0x3 << 0) 991*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_ENABLE_RK1808 (0x1 << 4) 992*4882a593Smuzhiyun 993*4882a593Smuzhiyun /* CSI Host Registers Define */ 994*4882a593Smuzhiyun #define CSIHOST_N_LANES 0x04 995*4882a593Smuzhiyun #define CSIHOST_PHY_RSTZ 0x0c 996*4882a593Smuzhiyun #define CSIHOST_RESETN 0x10 997*4882a593Smuzhiyun #define CSIHOST_ERR1 0x20 998*4882a593Smuzhiyun #define CSIHOST_ERR2 0x24 999*4882a593Smuzhiyun #define CSIHOST_MSK1 0x28 1000*4882a593Smuzhiyun #define CSIHOST_MSK2 0x2c 1001*4882a593Smuzhiyun #define CSIHOST_CONTROL 0x40 1002*4882a593Smuzhiyun 1003*4882a593Smuzhiyun #define SW_CPHY_EN(x) ((x) << 0) 1004*4882a593Smuzhiyun #define SW_DSI_EN(x) ((x) << 4) 1005*4882a593Smuzhiyun #define SW_DATATYPE_FS(x) ((x) << 8) 1006*4882a593Smuzhiyun #define SW_DATATYPE_FE(x) ((x) << 14) 1007*4882a593Smuzhiyun #define SW_DATATYPE_LS(x) ((x) << 20) 1008*4882a593Smuzhiyun #define SW_DATATYPE_LE(x) ((x) << 26) 1009*4882a593Smuzhiyun 1010*4882a593Smuzhiyun #define SW_FRM_END_ID0(x) (((x) & CSI_FRAME_END_ID0) >> 8) 1011*4882a593Smuzhiyun #define SW_FRM_END_ID1(x) (((x) & CSI_FRAME_END_ID1) >> 10) 1012*4882a593Smuzhiyun #define SW_FRM_END_ID2(x) (((x) & CSI_FRAME_END_ID2) >> 12) 1013*4882a593Smuzhiyun #define SW_FRM_END_ID3(x) (((x) & CSI_FRAME_END_ID3) >> 14) 1014*4882a593Smuzhiyun 1015*4882a593Smuzhiyun /*RV1106 SKIP FUNC*/ 1016*4882a593Smuzhiyun #define RKCIF_CAP_SHIFT 0x18 1017*4882a593Smuzhiyun #define RKCIF_SKIP_SHIFT 0X15 1018*4882a593Smuzhiyun #define RKCIF_SKIP_EN(x) (0x1 << (8 + x)) 1019*4882a593Smuzhiyun 1020*4882a593Smuzhiyun /* CIF LVDS SAV EAV Define */ 1021*4882a593Smuzhiyun #define SW_LVDS_EAV_ACT(code) (((code) & 0xfff) << 16) 1022*4882a593Smuzhiyun #define SW_LVDS_SAV_ACT(code) (((code) & 0xfff) << 0) 1023*4882a593Smuzhiyun #define SW_LVDS_EAV_BLK(code) (((code) & 0xfff) << 16) 1024*4882a593Smuzhiyun #define SW_LVDS_SAV_BLK(code) (((code) & 0xfff) << 0) 1025*4882a593Smuzhiyun 1026*4882a593Smuzhiyun /* GRF related with CIF */ 1027*4882a593Smuzhiyun #define CIF_GRF_CIFIO_CON (0x10250) 1028*4882a593Smuzhiyun #define CIF_PCLK_SAMPLING_EDGE_RISING (0x04000400) 1029*4882a593Smuzhiyun #define CIF_PCLK_SAMPLING_EDGE_FALLING (0x04000000) 1030*4882a593Smuzhiyun #define CIF_PCLK_DELAY_ENABLE (0x02000200) 1031*4882a593Smuzhiyun #define CIF_PCLK_DELAY_DISABLE (0x02000000) 1032*4882a593Smuzhiyun #define CIF_SAMPLING_EDGE_DOUBLE (0x01000100) 1033*4882a593Smuzhiyun #define CIF_SAMPLING_EDGE_SINGLE (0x01000000) 1034*4882a593Smuzhiyun #define CIF_PCLK_DELAY_NUM(num) (0x00ff0000 | ((num) & 0xff)) 1035*4882a593Smuzhiyun #define CIF_GRF_VI_CON0 (0x340) 1036*4882a593Smuzhiyun #define CIF_GRF_VI_CON1 (0x344) 1037*4882a593Smuzhiyun #define RK3568_CIF_PCLK_SAMPLING_EDGE_RISING (0x10000000) 1038*4882a593Smuzhiyun #define RK3568_CIF_PCLK_SAMPLING_EDGE_FALLING (0x10001000) 1039*4882a593Smuzhiyun #define RK3568_CIF_PCLK_SINGLE_EDGE (0x02000000) 1040*4882a593Smuzhiyun #define RK3568_CIF_PCLK_DUAL_EDGE (0x02000200) 1041*4882a593Smuzhiyun #define CIF_GRF_SOC_CON2 (0x308) 1042*4882a593Smuzhiyun #define RK3588_CIF_PCLK_SAMPLING_EDGE_RISING (0x00100000) 1043*4882a593Smuzhiyun #define RK3588_CIF_PCLK_SAMPLING_EDGE_FALLING (0x00100010) 1044*4882a593Smuzhiyun #define RK3588_CIF_PCLK_SINGLE_EDGE (0x00200000) 1045*4882a593Smuzhiyun #define RK3588_CIF_PCLK_DUAL_EDGE (0x00200020) 1046*4882a593Smuzhiyun #define RV1106_CIF_GRF_VI_CON (0x50038) 1047*4882a593Smuzhiyun #define RV1106_CIF_GRF_VENC_WRAPPER (0x10008) 1048*4882a593Smuzhiyun #define RV1106_CIF_PCLK_SINGLE_EDGE (0x00040000) 1049*4882a593Smuzhiyun #define RV1106_CIF_PCLK_DUAL_EDGE (0x00040004) 1050*4882a593Smuzhiyun #define RV1106_CIF_PCLK_EDGE_RISING_M0 (0x00020002) 1051*4882a593Smuzhiyun #define RV1106_CIF_PCLK_EDGE_FALLING_M0 (0x00020000) 1052*4882a593Smuzhiyun #define RV1106_CIF_PCLK_EDGE_RISING_M1 (0x00010001) 1053*4882a593Smuzhiyun #define RV1106_CIF_PCLK_EDGE_FALLING_M1 (0x00010000) 1054*4882a593Smuzhiyun #define RV1106_CIF_GRF_SEL_M0 (0x00010000) 1055*4882a593Smuzhiyun #define RV1106_CIF_GRF_SEL_M1 (0x00010001) 1056*4882a593Smuzhiyun 1057*4882a593Smuzhiyun /*toisp*/ 1058*4882a593Smuzhiyun #define TOISP_FS_CH0(index) (0x1 << (14 + index * 3)) 1059*4882a593Smuzhiyun #define TOISP_FS_CH1(index) (0x1 << (15 + index * 3)) 1060*4882a593Smuzhiyun #define TOISP_FS_CH2(index) (0x1 << (16 + index * 3)) 1061*4882a593Smuzhiyun 1062*4882a593Smuzhiyun #define TOISP_END_CH0(index) (0x1 << (20 + index * 3)) 1063*4882a593Smuzhiyun #define TOISP_END_CH1(index) (0x1 << (21 + index * 3)) 1064*4882a593Smuzhiyun #define TOISP_END_CH2(index) (0x1 << (22 + index * 3)) 1065*4882a593Smuzhiyun 1066*4882a593Smuzhiyun #endif 1067