FILE
ipu6-platform-isys-csi2-reg.h
File preview with syntax highlighting.
linux-6.19.14/drivers/media/pci/intel/ipu6/ipu6-platform-isys-csi2-reg.h
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* Copyright (C) 2023--2024 Intel Corporation */ 3 4#ifndef IPU6_PLATFORM_ISYS_CSI2_REG_H 5#define IPU6_PLATFORM_ISYS_CSI2_REG_H 6 7#include <linux/bits.h> 8 9#define CSI_REG_BASE 0x220000 10#define CSI_REG_PORT_BASE(id) (CSI_REG_BASE + (id) * 0x1000) 11 12/* CSI Port Genral Purpose Registers */ 13#define CSI_REG_PORT_GPREG_SRST 0x0 14#define CSI_REG_PORT_GPREG_CSI2_SLV_REG_SRST 0x4 15#define CSI_REG_PORT_GPREG_CSI2_PORT_CONTROL 0x8 16 17/* 18 * Port IRQs mapping events: 19 * IRQ0 - CSI_FE event 20 * IRQ1 - CSI_SYNC 21 * IRQ2 - S2M_SIDS0TO7 22 * IRQ3 - S2M_SIDS8TO15 23 */ 24#define CSI_PORT_REG_BASE_IRQ_CSI 0x80 25#define CSI_PORT_REG_BASE_IRQ_CSI_SYNC 0xA0 26#define CSI_PORT_REG_BASE_IRQ_S2M_SIDS0TOS7 0xC0 27#define CSI_PORT_REG_BASE_IRQ_S2M_SIDS8TOS15 0xE0 28 29#define CSI_PORT_REG_BASE_IRQ_EDGE_OFFSET 0x0 30#define CSI_PORT_REG_BASE_IRQ_MASK_OFFSET 0x4 31#define CSI_PORT_REG_BASE_IRQ_STATUS_OFFSET 0x8 32#define CSI_PORT_REG_BASE_IRQ_CLEAR_OFFSET 0xc 33#define CSI_PORT_REG_BASE_IRQ_ENABLE_OFFSET 0x10 34#define CSI_PORT_REG_BASE_IRQ_LEVEL_NOT_PULSE_OFFSET 0x14 35 36#define IPU6SE_CSI_RX_ERROR_IRQ_MASK GENMASK(18, 0) 37#define IPU6_CSI_RX_ERROR_IRQ_MASK GENMASK(19, 0) 38 39#define CSI_RX_NUM_ERRORS_IN_IRQ 20 40#define CSI_RX_NUM_IRQ 32 41 42#define IPU_CSI_RX_IRQ_FS_VC(chn) (1 << ((chn) * 2)) 43#define IPU_CSI_RX_IRQ_FE_VC(chn) (2 << ((chn) * 2)) 44 45/* PPI2CSI */ 46#define CSI_REG_PPI2CSI_ENABLE 0x200 47#define CSI_REG_PPI2CSI_CONFIG_PPI_INTF 0x204 48#define PPI_INTF_CONFIG_NOF_ENABLED_DLANES_MASK GENMASK(4, 3) 49#define CSI_REG_PPI2CSI_CONFIG_CSI_FEATURE 0x208 50 51enum CSI_PPI2CSI_CTRL { 52 CSI_PPI2CSI_DISABLE = 0, 53 CSI_PPI2CSI_ENABLE = 1, 54}; 55 56/* CSI_FE */ 57#define CSI_REG_CSI_FE_ENABLE 0x280 58#define CSI_REG_CSI_FE_MODE 0x284 59#define CSI_REG_CSI_FE_MUX_CTRL 0x288 60#define CSI_REG_CSI_FE_SYNC_CNTR_SEL 0x290 61 62enum CSI_FE_ENABLE_TYPE { 63 CSI_FE_DISABLE = 0, 64 CSI_FE_ENABLE = 1, 65}; 66 67enum CSI_FE_MODE_TYPE { 68 CSI_FE_DPHY_MODE = 0, 69 CSI_FE_CPHY_MODE = 1, 70}; 71 72enum CSI_FE_INPUT_SELECTOR { 73 CSI_SENSOR_INPUT = 0, 74 CSI_MIPIGEN_INPUT = 1, 75}; 76 77enum CSI_FE_SYNC_CNTR_SEL_TYPE { 78 CSI_CNTR_SENSOR_LINE_ID = BIT(0), 79 CSI_CNTR_INT_LINE_PKT_ID = ~CSI_CNTR_SENSOR_LINE_ID, 80 CSI_CNTR_SENSOR_FRAME_ID = BIT(1), 81 CSI_CNTR_INT_FRAME_PKT_ID = ~CSI_CNTR_SENSOR_FRAME_ID, 82}; 83 84/* CSI HUB General Purpose Registers */ 85#define CSI_REG_HUB_GPREG_SRST (CSI_REG_BASE + 0x18000) 86#define CSI_REG_HUB_GPREG_SLV_REG_SRST (CSI_REG_BASE + 0x18004) 87 88#define CSI_REG_HUB_DRV_ACCESS_PORT(id) (CSI_REG_BASE + 0x18018 + (id) * 4) 89#define CSI_REG_HUB_FW_ACCESS_PORT_OFS 0x17000 90#define CSI_REG_HUB_FW_ACCESS_PORT_V6OFS 0x16000 91#define CSI_REG_HUB_FW_ACCESS_PORT(ofs, id) \ 92 (CSI_REG_BASE + (ofs) + (id) * 4) 93 94enum CSI_PORT_CLK_GATING_SWITCH { 95 CSI_PORT_CLK_GATING_OFF = 0, 96 CSI_PORT_CLK_GATING_ON = 1, 97}; 98 99#define CSI_REG_BASE_HUB_IRQ 0x18200 100 101#define IPU6_REG_ISYS_CSI_TOP_CTRL0_IRQ_EDGE 0x238200 102#define IPU6_REG_ISYS_CSI_TOP_CTRL0_IRQ_MASK 0x238204 103#define IPU6_REG_ISYS_CSI_TOP_CTRL0_IRQ_STATUS 0x238208 104#define IPU6_REG_ISYS_CSI_TOP_CTRL0_IRQ_CLEAR 0x23820c 105#define IPU6_REG_ISYS_CSI_TOP_CTRL0_IRQ_ENABLE 0x238210 106#define IPU6_REG_ISYS_CSI_TOP_CTRL0_IRQ_LEVEL_NOT_PULSE 0x238214 107 108#define IPU6_REG_ISYS_CSI_TOP_CTRL1_IRQ_EDGE 0x238220 109#define IPU6_REG_ISYS_CSI_TOP_CTRL1_IRQ_MASK 0x238224 110#define IPU6_REG_ISYS_CSI_TOP_CTRL1_IRQ_STATUS 0x238228 111#define IPU6_REG_ISYS_CSI_TOP_CTRL1_IRQ_CLEAR 0x23822c 112#define IPU6_REG_ISYS_CSI_TOP_CTRL1_IRQ_ENABLE 0x238230 113#define IPU6_REG_ISYS_CSI_TOP_CTRL1_IRQ_LEVEL_NOT_PULSE 0x238234 114 115/* MTL IPU6V6 irq ctrl0 & ctrl1 */ 116#define IPU6V6_REG_ISYS_CSI_TOP_CTRL0_IRQ_EDGE 0x238700 117#define IPU6V6_REG_ISYS_CSI_TOP_CTRL0_IRQ_MASK 0x238704 118#define IPU6V6_REG_ISYS_CSI_TOP_CTRL0_IRQ_STATUS 0x238708 119#define IPU6V6_REG_ISYS_CSI_TOP_CTRL0_IRQ_CLEAR 0x23870c 120#define IPU6V6_REG_ISYS_CSI_TOP_CTRL0_IRQ_ENABLE 0x238710 121#define IPU6V6_REG_ISYS_CSI_TOP_CTRL0_IRQ_LEVEL_NOT_PULSE 0x238714 122 123#define IPU6V6_REG_ISYS_CSI_TOP_CTRL1_IRQ_EDGE 0x238720 124#define IPU6V6_REG_ISYS_CSI_TOP_CTRL1_IRQ_MASK 0x238724 125#define IPU6V6_REG_ISYS_CSI_TOP_CTRL1_IRQ_STATUS 0x238728 126#define IPU6V6_REG_ISYS_CSI_TOP_CTRL1_IRQ_CLEAR 0x23872c 127#define IPU6V6_REG_ISYS_CSI_TOP_CTRL1_IRQ_ENABLE 0x238730 128#define IPU6V6_REG_ISYS_CSI_TOP_CTRL1_IRQ_LEVEL_NOT_PULSE 0x238734 129 130/* 131 * 3:0 CSI_PORT.irq_out[3:0] CSI_PORT_CTRL0 IRQ outputs (4bits) 132 * [0] CSI_PORT.IRQ_CTRL0_csi 133 * [1] CSI_PORT.IRQ_CTRL1_csi_sync 134 * [2] CSI_PORT.IRQ_CTRL2_s2m_sids0to7 135 * [3] CSI_PORT.IRQ_CTRL3_s2m_sids8to15 136 */ 137#define IPU6_ISYS_UNISPART_IRQ_CSI2(port) \ 138 (0x3 << ((port) * IPU6_CSI_IRQ_NUM_PER_PIPE)) 139 140/* 141 * ipu6se support 2 front ends, 2 port per front end, 4 ports 0..3 142 * sip0 - 0, 1 143 * sip1 - 2, 3 144 * 0 and 2 support 4 data lanes, 1 and 3 support 2 data lanes 145 * all offset are base from isys base address 146 */ 147 148#define CSI2_HUB_GPREG_SIP_SRST(sip) (0x238038 + (sip) * 4) 149#define CSI2_HUB_GPREG_SIP_FB_PORT_CFG(sip) (0x238050 + (sip) * 4) 150 151#define CSI2_HUB_GPREG_DPHY_TIMER_INCR 0x238040 152#define CSI2_HUB_GPREG_HPLL_FREQ 0x238044 153#define CSI2_HUB_GPREG_IS_CLK_RATIO 0x238048 154#define CSI2_HUB_GPREG_HPLL_FREQ_ISCLK_RATE_OVERRIDE 0x23804c 155#define CSI2_HUB_GPREG_PORT_CLKGATING_DISABLE 0x238058 156#define CSI2_HUB_GPREG_SIP0_CSI_RX_A_CONTROL 0x23805c 157#define CSI2_HUB_GPREG_SIP0_CSI_RX_B_CONTROL 0x238088 158#define CSI2_HUB_GPREG_SIP1_CSI_RX_A_CONTROL 0x2380a4 159#define CSI2_HUB_GPREG_SIP1_CSI_RX_B_CONTROL 0x2380d0 160 161#define CSI2_SIP_TOP_CSI_RX_BASE(sip) (0x23805c + (sip) * 0x48) 162#define CSI2_SIP_TOP_CSI_RX_PORT_BASE_0(port) (0x23805c + ((port) / 2) * 0x48) 163#define CSI2_SIP_TOP_CSI_RX_PORT_BASE_1(port) (0x238088 + ((port) / 2) * 0x48) 164 165/* offset from port base */ 166#define CSI2_SIP_TOP_CSI_RX_PORT_CONTROL 0x0 167#define CSI2_SIP_TOP_CSI_RX_DLY_CNT_TERMEN_CLANE 0x4 168#define CSI2_SIP_TOP_CSI_RX_DLY_CNT_SETTLE_CLANE 0x8 169#define CSI2_SIP_TOP_CSI_RX_DLY_CNT_TERMEN_DLANE(lane) (0xc + (lane) * 8) 170#define CSI2_SIP_TOP_CSI_RX_DLY_CNT_SETTLE_DLANE(lane) (0x10 + (lane) * 8) 171 172#endif /* IPU6_ISYS_CSI2_REG_H */
~/
Read-only file preview.