cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sun6i_csi_reg.h (7228B)


      1/* SPDX-License-Identifier: GPL-2.0+ */
      2/*
      3 * Copyright (c) 2011-2018 Magewell Electronics Co., Ltd. (Nanjing)
      4 * All rights reserved.
      5 * Author: Yong Deng <yong.deng@magewell.com>
      6 */
      7
      8#ifndef __SUN6I_CSI_REG_H__
      9#define __SUN6I_CSI_REG_H__
     10
     11#include <linux/kernel.h>
     12
     13#define CSI_EN_REG			0x0
     14#define CSI_EN_VER_EN				BIT(30)
     15#define CSI_EN_CSI_EN				BIT(0)
     16
     17#define CSI_IF_CFG_REG			0x4
     18#define CSI_IF_CFG_SRC_TYPE_MASK		BIT(21)
     19#define CSI_IF_CFG_SRC_TYPE_PROGRESSED		((0 << 21) & CSI_IF_CFG_SRC_TYPE_MASK)
     20#define CSI_IF_CFG_SRC_TYPE_INTERLACED		((1 << 21) & CSI_IF_CFG_SRC_TYPE_MASK)
     21#define CSI_IF_CFG_FPS_DS_EN			BIT(20)
     22#define CSI_IF_CFG_FIELD_MASK			BIT(19)
     23#define CSI_IF_CFG_FIELD_NEGATIVE		((0 << 19) & CSI_IF_CFG_FIELD_MASK)
     24#define CSI_IF_CFG_FIELD_POSITIVE		((1 << 19) & CSI_IF_CFG_FIELD_MASK)
     25#define CSI_IF_CFG_VREF_POL_MASK		BIT(18)
     26#define CSI_IF_CFG_VREF_POL_NEGATIVE		((0 << 18) & CSI_IF_CFG_VREF_POL_MASK)
     27#define CSI_IF_CFG_VREF_POL_POSITIVE		((1 << 18) & CSI_IF_CFG_VREF_POL_MASK)
     28#define CSI_IF_CFG_HREF_POL_MASK		BIT(17)
     29#define CSI_IF_CFG_HREF_POL_NEGATIVE		((0 << 17) & CSI_IF_CFG_HREF_POL_MASK)
     30#define CSI_IF_CFG_HREF_POL_POSITIVE		((1 << 17) & CSI_IF_CFG_HREF_POL_MASK)
     31#define CSI_IF_CFG_CLK_POL_MASK			BIT(16)
     32#define CSI_IF_CFG_CLK_POL_RISING_EDGE		((0 << 16) & CSI_IF_CFG_CLK_POL_MASK)
     33#define CSI_IF_CFG_CLK_POL_FALLING_EDGE		((1 << 16) & CSI_IF_CFG_CLK_POL_MASK)
     34#define CSI_IF_CFG_IF_DATA_WIDTH_MASK		GENMASK(10, 8)
     35#define CSI_IF_CFG_IF_DATA_WIDTH_8BIT		((0 << 8) & CSI_IF_CFG_IF_DATA_WIDTH_MASK)
     36#define CSI_IF_CFG_IF_DATA_WIDTH_10BIT		((1 << 8) & CSI_IF_CFG_IF_DATA_WIDTH_MASK)
     37#define CSI_IF_CFG_IF_DATA_WIDTH_12BIT		((2 << 8) & CSI_IF_CFG_IF_DATA_WIDTH_MASK)
     38#define CSI_IF_CFG_MIPI_IF_MASK			BIT(7)
     39#define CSI_IF_CFG_MIPI_IF_CSI			(0 << 7)
     40#define CSI_IF_CFG_MIPI_IF_MIPI			BIT(7)
     41#define CSI_IF_CFG_CSI_IF_MASK			GENMASK(4, 0)
     42#define CSI_IF_CFG_CSI_IF_YUV422_INTLV		((0 << 0) & CSI_IF_CFG_CSI_IF_MASK)
     43#define CSI_IF_CFG_CSI_IF_YUV422_16BIT		((1 << 0) & CSI_IF_CFG_CSI_IF_MASK)
     44#define CSI_IF_CFG_CSI_IF_BT656			((4 << 0) & CSI_IF_CFG_CSI_IF_MASK)
     45#define CSI_IF_CFG_CSI_IF_BT1120		((5 << 0) & CSI_IF_CFG_CSI_IF_MASK)
     46
     47#define CSI_CAP_REG			0x8
     48#define CSI_CAP_CH0_CAP_MASK_MASK		GENMASK(5, 2)
     49#define CSI_CAP_CH0_CAP_MASK(count)		(((count) << 2) & CSI_CAP_CH0_CAP_MASK_MASK)
     50#define CSI_CAP_CH0_VCAP_ON			BIT(1)
     51#define CSI_CAP_CH0_SCAP_ON			BIT(0)
     52
     53#define CSI_SYNC_CNT_REG		0xc
     54#define CSI_FIFO_THRS_REG		0x10
     55#define CSI_BT656_HEAD_CFG_REG		0x14
     56#define CSI_PTN_LEN_REG			0x30
     57#define CSI_PTN_ADDR_REG		0x34
     58#define CSI_VER_REG			0x3c
     59
     60#define CSI_CH_CFG_REG			0x44
     61#define CSI_CH_CFG_INPUT_FMT_MASK		GENMASK(23, 20)
     62#define CSI_CH_CFG_INPUT_FMT(fmt)		(((fmt) << 20) & CSI_CH_CFG_INPUT_FMT_MASK)
     63#define CSI_CH_CFG_OUTPUT_FMT_MASK		GENMASK(19, 16)
     64#define CSI_CH_CFG_OUTPUT_FMT(fmt)		(((fmt) << 16) & CSI_CH_CFG_OUTPUT_FMT_MASK)
     65#define CSI_CH_CFG_VFLIP_EN			BIT(13)
     66#define CSI_CH_CFG_HFLIP_EN			BIT(12)
     67#define CSI_CH_CFG_FIELD_SEL_MASK		GENMASK(11, 10)
     68#define CSI_CH_CFG_FIELD_SEL_FIELD0		((0 << 10) & CSI_CH_CFG_FIELD_SEL_MASK)
     69#define CSI_CH_CFG_FIELD_SEL_FIELD1		((1 << 10) & CSI_CH_CFG_FIELD_SEL_MASK)
     70#define CSI_CH_CFG_FIELD_SEL_BOTH		((2 << 10) & CSI_CH_CFG_FIELD_SEL_MASK)
     71#define CSI_CH_CFG_INPUT_SEQ_MASK		GENMASK(9, 8)
     72#define CSI_CH_CFG_INPUT_SEQ(seq)		(((seq) << 8) & CSI_CH_CFG_INPUT_SEQ_MASK)
     73
     74#define CSI_CH_SCALE_REG		0x4c
     75#define CSI_CH_SCALE_QUART_EN			BIT(0)
     76
     77#define CSI_CH_F0_BUFA_REG		0x50
     78
     79#define CSI_CH_F1_BUFA_REG		0x58
     80
     81#define CSI_CH_F2_BUFA_REG		0x60
     82
     83#define CSI_CH_STA_REG			0x6c
     84#define CSI_CH_STA_FIELD_STA_MASK		BIT(2)
     85#define CSI_CH_STA_FIELD_STA_FIELD0		((0 << 2) & CSI_CH_STA_FIELD_STA_MASK)
     86#define CSI_CH_STA_FIELD_STA_FIELD1		((1 << 2) & CSI_CH_STA_FIELD_STA_MASK)
     87#define CSI_CH_STA_VCAP_STA			BIT(1)
     88#define CSI_CH_STA_SCAP_STA			BIT(0)
     89
     90#define CSI_CH_INT_EN_REG		0x70
     91#define CSI_CH_INT_EN_VS_INT_EN			BIT(7)
     92#define CSI_CH_INT_EN_HB_OF_INT_EN		BIT(6)
     93#define CSI_CH_INT_EN_MUL_ERR_INT_EN		BIT(5)
     94#define CSI_CH_INT_EN_FIFO2_OF_INT_EN		BIT(4)
     95#define CSI_CH_INT_EN_FIFO1_OF_INT_EN		BIT(3)
     96#define CSI_CH_INT_EN_FIFO0_OF_INT_EN		BIT(2)
     97#define CSI_CH_INT_EN_FD_INT_EN			BIT(1)
     98#define CSI_CH_INT_EN_CD_INT_EN			BIT(0)
     99
    100#define CSI_CH_INT_STA_REG		0x74
    101#define CSI_CH_INT_STA_VS_PD			BIT(7)
    102#define CSI_CH_INT_STA_HB_OF_PD			BIT(6)
    103#define CSI_CH_INT_STA_MUL_ERR_PD		BIT(5)
    104#define CSI_CH_INT_STA_FIFO2_OF_PD		BIT(4)
    105#define CSI_CH_INT_STA_FIFO1_OF_PD		BIT(3)
    106#define CSI_CH_INT_STA_FIFO0_OF_PD		BIT(2)
    107#define CSI_CH_INT_STA_FD_PD			BIT(1)
    108#define CSI_CH_INT_STA_CD_PD			BIT(0)
    109
    110#define CSI_CH_FLD1_VSIZE_REG		0x78
    111
    112#define CSI_CH_HSIZE_REG		0x80
    113#define CSI_CH_HSIZE_HOR_LEN_MASK		GENMASK(28, 16)
    114#define CSI_CH_HSIZE_HOR_LEN(len)		(((len) << 16) & CSI_CH_HSIZE_HOR_LEN_MASK)
    115#define CSI_CH_HSIZE_HOR_START_MASK		GENMASK(12, 0)
    116#define CSI_CH_HSIZE_HOR_START(start)		(((start) << 0) & CSI_CH_HSIZE_HOR_START_MASK)
    117
    118#define CSI_CH_VSIZE_REG		0x84
    119#define CSI_CH_VSIZE_VER_LEN_MASK		GENMASK(28, 16)
    120#define CSI_CH_VSIZE_VER_LEN(len)		(((len) << 16) & CSI_CH_VSIZE_VER_LEN_MASK)
    121#define CSI_CH_VSIZE_VER_START_MASK		GENMASK(12, 0)
    122#define CSI_CH_VSIZE_VER_START(start)		(((start) << 0) & CSI_CH_VSIZE_VER_START_MASK)
    123
    124#define CSI_CH_BUF_LEN_REG		0x88
    125#define CSI_CH_BUF_LEN_BUF_LEN_C_MASK		GENMASK(29, 16)
    126#define CSI_CH_BUF_LEN_BUF_LEN_C(len)		(((len) << 16) & CSI_CH_BUF_LEN_BUF_LEN_C_MASK)
    127#define CSI_CH_BUF_LEN_BUF_LEN_Y_MASK		GENMASK(13, 0)
    128#define CSI_CH_BUF_LEN_BUF_LEN_Y(len)		(((len) << 0) & CSI_CH_BUF_LEN_BUF_LEN_Y_MASK)
    129
    130#define CSI_CH_FLIP_SIZE_REG		0x8c
    131#define CSI_CH_FLIP_SIZE_VER_LEN_MASK		GENMASK(28, 16)
    132#define CSI_CH_FLIP_SIZE_VER_LEN(len)		(((len) << 16) & CSI_CH_FLIP_SIZE_VER_LEN_MASK)
    133#define CSI_CH_FLIP_SIZE_VALID_LEN_MASK		GENMASK(12, 0)
    134#define CSI_CH_FLIP_SIZE_VALID_LEN(len)		(((len) << 0) & CSI_CH_FLIP_SIZE_VALID_LEN_MASK)
    135
    136#define CSI_CH_FRM_CLK_CNT_REG		0x90
    137#define CSI_CH_ACC_ITNL_CLK_CNT_REG	0x94
    138#define CSI_CH_FIFO_STAT_REG		0x98
    139#define CSI_CH_PCLK_STAT_REG		0x9c
    140
    141/*
    142 * csi input data format
    143 */
    144enum csi_input_fmt {
    145	CSI_INPUT_FORMAT_RAW		= 0,
    146	CSI_INPUT_FORMAT_YUV422		= 3,
    147	CSI_INPUT_FORMAT_YUV420		= 4,
    148};
    149
    150/*
    151 * csi output data format
    152 */
    153enum csi_output_fmt {
    154	/* only when input format is RAW */
    155	CSI_FIELD_RAW_8			= 0,
    156	CSI_FIELD_RAW_10		= 1,
    157	CSI_FIELD_RAW_12		= 2,
    158	CSI_FIELD_RGB565		= 4,
    159	CSI_FIELD_RGB888		= 5,
    160	CSI_FIELD_PRGB888		= 6,
    161	CSI_FRAME_RAW_8			= 8,
    162	CSI_FRAME_RAW_10		= 9,
    163	CSI_FRAME_RAW_12		= 10,
    164	CSI_FRAME_RGB565		= 12,
    165	CSI_FRAME_RGB888		= 13,
    166	CSI_FRAME_PRGB888		= 14,
    167
    168	/* only when input format is YUV422 */
    169	CSI_FIELD_PLANAR_YUV422		= 0,
    170	CSI_FIELD_PLANAR_YUV420		= 1,
    171	CSI_FRAME_PLANAR_YUV420		= 2,
    172	CSI_FRAME_PLANAR_YUV422		= 3,
    173	CSI_FIELD_UV_CB_YUV422		= 4,
    174	CSI_FIELD_UV_CB_YUV420		= 5,
    175	CSI_FRAME_UV_CB_YUV420		= 6,
    176	CSI_FRAME_UV_CB_YUV422		= 7,
    177	CSI_FIELD_MB_YUV422		= 8,
    178	CSI_FIELD_MB_YUV420		= 9,
    179	CSI_FRAME_MB_YUV420		= 10,
    180	CSI_FRAME_MB_YUV422		= 11,
    181	CSI_FIELD_UV_CB_YUV422_10	= 12,
    182	CSI_FIELD_UV_CB_YUV420_10	= 13,
    183};
    184
    185/*
    186 * csi YUV input data sequence
    187 */
    188enum csi_input_seq {
    189	/* only when input format is YUV422 */
    190	CSI_INPUT_SEQ_YUYV = 0,
    191	CSI_INPUT_SEQ_YVYU,
    192	CSI_INPUT_SEQ_UYVY,
    193	CSI_INPUT_SEQ_VYUY,
    194};
    195
    196#endif /* __SUN6I_CSI_REG_H__ */