1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (c) 2020 Rockchip Electronics Co. Ltd. 4 * 5 * Author: Dingxian Wen <shawn.wen@rock-chips.com> 6 */ 7 8 #ifndef __RK628_CSI_H 9 #define __RK628_CSI_H 10 11 #include "rk628.h" 12 13 #define CSITX_BASE 0x00040000 14 #define CSITX_CONFIG_DONE (CSITX_BASE + 0x0000) 15 #define CONFIG_DONE_IMD BIT(4) 16 #define CONFIG_DONE BIT(0) 17 #define CSITX_CSITX_EN (CSITX_BASE + 0x0004) 18 #define VOP_YU_SWAP_MASK BIT(14) 19 #define VOP_YU_SWAP(x) UPDATE(x, 14, 14) 20 #define VOP_UV_SWAP_MASK BIT(13) 21 #define VOP_UV_SWAP(x) UPDATE(x, 13, 13) 22 #define VOP_YUV422_EN_MASK BIT(12) 23 #define VOP_YUV422_EN(x) UPDATE(x, 12, 12) 24 #define VOP_P2_EN_MASK BIT(8) 25 #define VOP_P2_EN(x) UPDATE(x, 8, 8) 26 #define LANE_NUM_MASK GENMASK(5, 4) 27 #define LANE_NUM(x) UPDATE(x, 5, 4) 28 #define DPHY_EN_MASK BIT(2) 29 #define DPHY_EN(x) UPDATE(x, 2, 2) 30 #define CSITX_EN_MASK BIT(0) 31 #define CSITX_EN(x) UPDATE(x, 0, 0) 32 #define CSITX_CSITX_VERSION (CSITX_BASE + 0x0008) 33 #define CSITX_SYS_CTRL0_IMD (CSITX_BASE + 0x0010) 34 #define CSITX_SYS_CTRL1 (CSITX_BASE + 0x0014) 35 #define BYPASS_SELECT_MASK BIT(0) 36 #define BYPASS_SELECT(x) UPDATE(x, 0, 0) 37 #define CSITX_SYS_CTRL2 (CSITX_BASE + 0x0018) 38 #define VOP_WHOLE_FRM_EN BIT(5) 39 #define VSYNC_ENABLE BIT(0) 40 #define CSITX_SYS_CTRL3_IMD (CSITX_BASE + 0x001c) 41 #define CONT_MODE_CLK_CLR_MASK BIT(8) 42 #define CONT_MODE_CLK_CLR(x) UPDATE(x, 8, 8) 43 #define CONT_MODE_CLK_SET_MASK BIT(4) 44 #define CONT_MODE_CLK_SET(x) UPDATE(x, 4, 4) 45 #define NON_CONTINUOUS_MODE_MASK BIT(0) 46 #define NON_CONTINUOUS_MODE(x) UPDATE(x, 0, 0) 47 #define CSITX_TIMING_HPW_PADDING_NUM (CSITX_BASE + 0x0030) 48 #define CSITX_VOP_PATH_CTRL (CSITX_BASE + 0x0040) 49 #define VOP_WC_USERDEFINE_MASK GENMASK(31, 16) 50 #define VOP_WC_USERDEFINE(x) UPDATE(x, 31, 16) 51 #define VOP_DT_USERDEFINE_MASK GENMASK(13, 8) 52 #define VOP_DT_USERDEFINE(x) UPDATE(x, 13, 8) 53 #define VOP_PIXEL_FORMAT_MASK GENMASK(7, 4) 54 #define VOP_PIXEL_FORMAT(x) UPDATE(x, 7, 4) 55 #define VOP_WC_USERDEFINE_EN_MASK BIT(3) 56 #define VOP_WC_USERDEFINE_EN(x) UPDATE(x, 3, 3) 57 #define VOP_DT_USERDEFINE_EN_MASK BIT(1) 58 #define VOP_DT_USERDEFINE_EN(x) UPDATE(x, 1, 1) 59 #define VOP_PATH_EN_MASK BIT(0) 60 #define VOP_PATH_EN(x) UPDATE(x, 0, 0) 61 #define CSITX_VOP_PATH_PKT_CTRL (CSITX_BASE + 0x0050) 62 #define CSITX_CSITX_STATUS0 (CSITX_BASE + 0x0070) 63 #define CSITX_CSITX_STATUS1 (CSITX_BASE + 0x0074) 64 #define STOPSTATE_LANE3 BIT(7) 65 #define STOPSTATE_LANE2 BIT(6) 66 #define STOPSTATE_LANE1 BIT(5) 67 #define STOPSTATE_LANE0 BIT(4) 68 #define STOPSTATE_CLK BIT(1) 69 #define DPHY_PLL_LOCK BIT(0) 70 #define CSITX_ERR_INTR_EN_IMD (CSITX_BASE + 0x0090) 71 #define CSITX_ERR_INTR_CLR_IMD (CSITX_BASE + 0x0094) 72 #define CSITX_ERR_INTR_STATUS_IMD (CSITX_BASE + 0x0098) 73 #define CSITX_ERR_INTR_RAW_STATUS_IMD (CSITX_BASE + 0x009c) 74 #define CSITX_LPDT_DATA_IMD (CSITX_BASE + 0x00a8) 75 #define CSITX_DPHY_CTRL (CSITX_BASE + 0x00b0) 76 #define CSI_DPHY_EN_MASK GENMASK(7, 3) 77 #define CSI_DPHY_EN(x) UPDATE(x, 7, 3) 78 #define DPHY_ENABLECLK BIT(3) 79 #define CSI_MAX_REGISTER CSITX_DPHY_CTRL 80 81 #endif 82