1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Support for Intel Camera Imaging ISP subsystem. 4 * Copyright (c) 2015, Intel Corporation. 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms and conditions of the GNU General Public License, 8 * version 2, as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 13 * more details. 14 */ 15 16#ifndef _isp_acquisition_defs_h 17#define _isp_acquisition_defs_h 18 19#define _ISP_ACQUISITION_REG_ALIGN 4 /* assuming 32 bit control bus width */ 20#define _ISP_ACQUISITION_BYTES_PER_ELEM 4 21 22/* --------------------------------------------------*/ 23 24#define NOF_ACQ_IRQS 1 25 26/* --------------------------------------------------*/ 27/* FSM */ 28/* --------------------------------------------------*/ 29#define MEM2STREAM_FSM_STATE_BITS 2 30#define ACQ_SYNCHRONIZER_FSM_STATE_BITS 2 31 32/* --------------------------------------------------*/ 33/* REGISTER INFO */ 34/* --------------------------------------------------*/ 35 36#define NOF_ACQ_REGS 12 37 38// Register id's of MMIO slave accessible registers 39#define ACQ_START_ADDR_REG_ID 0 40#define ACQ_MEM_REGION_SIZE_REG_ID 1 41#define ACQ_NUM_MEM_REGIONS_REG_ID 2 42#define ACQ_INIT_REG_ID 3 43#define ACQ_RECEIVED_SHORT_PACKETS_REG_ID 4 44#define ACQ_RECEIVED_LONG_PACKETS_REG_ID 5 45#define ACQ_LAST_COMMAND_REG_ID 6 46#define ACQ_NEXT_COMMAND_REG_ID 7 47#define ACQ_LAST_ACKNOWLEDGE_REG_ID 8 48#define ACQ_NEXT_ACKNOWLEDGE_REG_ID 9 49#define ACQ_FSM_STATE_INFO_REG_ID 10 50#define ACQ_INT_CNTR_INFO_REG_ID 11 51 52// Register width 53#define ACQ_START_ADDR_REG_WIDTH 9 54#define ACQ_MEM_REGION_SIZE_REG_WIDTH 9 55#define ACQ_NUM_MEM_REGIONS_REG_WIDTH 9 56#define ACQ_INIT_REG_WIDTH 3 57#define ACQ_RECEIVED_SHORT_PACKETS_REG_WIDTH 32 58#define ACQ_RECEIVED_LONG_PACKETS_REG_WIDTH 32 59#define ACQ_LAST_COMMAND_REG_WIDTH 32 60#define ACQ_NEXT_COMMAND_REG_WIDTH 32 61#define ACQ_LAST_ACKNOWLEDGE_REG_WIDTH 32 62#define ACQ_NEXT_ACKNOWLEDGE_REG_WIDTH 32 63#define ACQ_FSM_STATE_INFO_REG_WIDTH ((MEM2STREAM_FSM_STATE_BITS * 3) + (ACQ_SYNCHRONIZER_FSM_STATE_BITS * 3)) 64#define ACQ_INT_CNTR_INFO_REG_WIDTH 32 65 66/* register reset value */ 67#define ACQ_START_ADDR_REG_RSTVAL 0 68#define ACQ_MEM_REGION_SIZE_REG_RSTVAL 128 69#define ACQ_NUM_MEM_REGIONS_REG_RSTVAL 3 70#define ACQ_INIT_REG_RSTVAL 0 71#define ACQ_RECEIVED_SHORT_PACKETS_REG_RSTVAL 0 72#define ACQ_RECEIVED_LONG_PACKETS_REG_RSTVAL 0 73#define ACQ_LAST_COMMAND_REG_RSTVAL 0 74#define ACQ_NEXT_COMMAND_REG_RSTVAL 0 75#define ACQ_LAST_ACKNOWLEDGE_REG_RSTVAL 0 76#define ACQ_NEXT_ACKNOWLEDGE_REG_RSTVAL 0 77#define ACQ_FSM_STATE_INFO_REG_RSTVAL 0 78#define ACQ_INT_CNTR_INFO_REG_RSTVAL 0 79 80/* bit definitions */ 81#define ACQ_INIT_RST_REG_BIT 0 82#define ACQ_INIT_RESYNC_BIT 2 83#define ACQ_INIT_RST_IDX ACQ_INIT_RST_REG_BIT 84#define ACQ_INIT_RST_BITS 1 85#define ACQ_INIT_RESYNC_IDX ACQ_INIT_RESYNC_BIT 86#define ACQ_INIT_RESYNC_BITS 1 87 88/* --------------------------------------------------*/ 89/* TOKEN INFO */ 90/* --------------------------------------------------*/ 91#define ACQ_TOKEN_ID_LSB 0 92#define ACQ_TOKEN_ID_MSB 3 93#define ACQ_TOKEN_WIDTH (ACQ_TOKEN_ID_MSB - ACQ_TOKEN_ID_LSB + 1) // 4 94#define ACQ_TOKEN_ID_IDX 0 95#define ACQ_TOKEN_ID_BITS ACQ_TOKEN_WIDTH 96#define ACQ_INIT_CMD_INIT_IDX 4 97#define ACQ_INIT_CMD_INIT_BITS 3 98#define ACQ_CMD_START_ADDR_IDX 4 99#define ACQ_CMD_START_ADDR_BITS 9 100#define ACQ_CMD_NOFWORDS_IDX 13 101#define ACQ_CMD_NOFWORDS_BITS 9 102#define ACQ_MEM_REGION_ID_IDX 22 103#define ACQ_MEM_REGION_ID_BITS 9 104#define ACQ_PACKET_LENGTH_TOKEN_MSB 21 105#define ACQ_PACKET_LENGTH_TOKEN_LSB 13 106#define ACQ_PACKET_DATA_FORMAT_ID_TOKEN_MSB 9 107#define ACQ_PACKET_DATA_FORMAT_ID_TOKEN_LSB 4 108#define ACQ_PACKET_CH_ID_TOKEN_MSB 11 109#define ACQ_PACKET_CH_ID_TOKEN_LSB 10 110#define ACQ_PACKET_MEM_REGION_ID_TOKEN_MSB 12 /* only for capt_end_of_packet_written */ 111#define ACQ_PACKET_MEM_REGION_ID_TOKEN_LSB 4 /* only for capt_end_of_packet_written */ 112 113/* Command tokens IDs */ 114#define ACQ_READ_REGION_AUTO_INCR_TOKEN_ID 0 //0000b 115#define ACQ_READ_REGION_TOKEN_ID 1 //0001b 116#define ACQ_READ_REGION_SOP_TOKEN_ID 2 //0010b 117#define ACQ_INIT_TOKEN_ID 8 //1000b 118 119/* Acknowledge token IDs */ 120#define ACQ_READ_REGION_ACK_TOKEN_ID 0 //0000b 121#define ACQ_END_OF_PACKET_TOKEN_ID 4 //0100b 122#define ACQ_END_OF_REGION_TOKEN_ID 5 //0101b 123#define ACQ_SOP_MISMATCH_TOKEN_ID 6 //0110b 124#define ACQ_UNDEF_PH_TOKEN_ID 7 //0111b 125 126#define ACQ_TOKEN_MEMREGIONID_MSB 30 127#define ACQ_TOKEN_MEMREGIONID_LSB 22 128#define ACQ_TOKEN_NOFWORDS_MSB 21 129#define ACQ_TOKEN_NOFWORDS_LSB 13 130#define ACQ_TOKEN_STARTADDR_MSB 12 131#define ACQ_TOKEN_STARTADDR_LSB 4 132 133/* --------------------------------------------------*/ 134/* MIPI */ 135/* --------------------------------------------------*/ 136 137#define WORD_COUNT_WIDTH 16 138#define PKT_CODE_WIDTH 6 139#define CHN_NO_WIDTH 2 140#define ERROR_INFO_WIDTH 8 141 142#define LONG_PKTCODE_MAX 63 143#define LONG_PKTCODE_MIN 16 144#define SHORT_PKTCODE_MAX 15 145 146#define EOF_CODE 1 147 148/* --------------------------------------------------*/ 149/* Packet Info */ 150/* --------------------------------------------------*/ 151#define ACQ_START_OF_FRAME 0 152#define ACQ_END_OF_FRAME 1 153#define ACQ_START_OF_LINE 2 154#define ACQ_END_OF_LINE 3 155#define ACQ_LINE_PAYLOAD 4 156#define ACQ_GEN_SH_PKT 5 157 158/* bit definition */ 159#define ACQ_PKT_TYPE_IDX 16 160#define ACQ_PKT_TYPE_BITS 6 161#define ACQ_PKT_SOP_IDX 32 162#define ACQ_WORD_CNT_IDX 0 163#define ACQ_WORD_CNT_BITS 16 164#define ACQ_PKT_INFO_IDX 16 165#define ACQ_PKT_INFO_BITS 8 166#define ACQ_HEADER_DATA_IDX 0 167#define ACQ_HEADER_DATA_BITS 16 168#define ACQ_ACK_TOKEN_ID_IDX ACQ_TOKEN_ID_IDX 169#define ACQ_ACK_TOKEN_ID_BITS ACQ_TOKEN_ID_BITS 170#define ACQ_ACK_NOFWORDS_IDX 13 171#define ACQ_ACK_NOFWORDS_BITS 9 172#define ACQ_ACK_PKT_LEN_IDX 4 173#define ACQ_ACK_PKT_LEN_BITS 16 174 175/* --------------------------------------------------*/ 176/* Packet Data Type */ 177/* --------------------------------------------------*/ 178 179#define ACQ_YUV420_8_DATA 24 /* 01 1000 YUV420 8-bit */ 180#define ACQ_YUV420_10_DATA 25 /* 01 1001 YUV420 10-bit */ 181#define ACQ_YUV420_8L_DATA 26 /* 01 1010 YUV420 8-bit legacy */ 182#define ACQ_YUV422_8_DATA 30 /* 01 1110 YUV422 8-bit */ 183#define ACQ_YUV422_10_DATA 31 /* 01 1111 YUV422 10-bit */ 184#define ACQ_RGB444_DATA 32 /* 10 0000 RGB444 */ 185#define ACQ_RGB555_DATA 33 /* 10 0001 RGB555 */ 186#define ACQ_RGB565_DATA 34 /* 10 0010 RGB565 */ 187#define ACQ_RGB666_DATA 35 /* 10 0011 RGB666 */ 188#define ACQ_RGB888_DATA 36 /* 10 0100 RGB888 */ 189#define ACQ_RAW6_DATA 40 /* 10 1000 RAW6 */ 190#define ACQ_RAW7_DATA 41 /* 10 1001 RAW7 */ 191#define ACQ_RAW8_DATA 42 /* 10 1010 RAW8 */ 192#define ACQ_RAW10_DATA 43 /* 10 1011 RAW10 */ 193#define ACQ_RAW12_DATA 44 /* 10 1100 RAW12 */ 194#define ACQ_RAW14_DATA 45 /* 10 1101 RAW14 */ 195#define ACQ_USR_DEF_1_DATA 48 /* 11 0000 JPEG [User Defined 8-bit Data Type 1] */ 196#define ACQ_USR_DEF_2_DATA 49 /* 11 0001 User Defined 8-bit Data Type 2 */ 197#define ACQ_USR_DEF_3_DATA 50 /* 11 0010 User Defined 8-bit Data Type 3 */ 198#define ACQ_USR_DEF_4_DATA 51 /* 11 0011 User Defined 8-bit Data Type 4 */ 199#define ACQ_USR_DEF_5_DATA 52 /* 11 0100 User Defined 8-bit Data Type 5 */ 200#define ACQ_USR_DEF_6_DATA 53 /* 11 0101 User Defined 8-bit Data Type 6 */ 201#define ACQ_USR_DEF_7_DATA 54 /* 11 0110 User Defined 8-bit Data Type 7 */ 202#define ACQ_USR_DEF_8_DATA 55 /* 11 0111 User Defined 8-bit Data Type 8 */ 203#define ACQ_Emb_DATA 18 /* 01 0010 embedded eight bit non image data */ 204#define ACQ_SOF_DATA 0 /* 00 0000 frame start */ 205#define ACQ_EOF_DATA 1 /* 00 0001 frame end */ 206#define ACQ_SOL_DATA 2 /* 00 0010 line start */ 207#define ACQ_EOL_DATA 3 /* 00 0011 line end */ 208#define ACQ_GEN_SH1_DATA 8 /* 00 1000 Generic Short Packet Code 1 */ 209#define ACQ_GEN_SH2_DATA 9 /* 00 1001 Generic Short Packet Code 2 */ 210#define ACQ_GEN_SH3_DATA 10 /* 00 1010 Generic Short Packet Code 3 */ 211#define ACQ_GEN_SH4_DATA 11 /* 00 1011 Generic Short Packet Code 4 */ 212#define ACQ_GEN_SH5_DATA 12 /* 00 1100 Generic Short Packet Code 5 */ 213#define ACQ_GEN_SH6_DATA 13 /* 00 1101 Generic Short Packet Code 6 */ 214#define ACQ_GEN_SH7_DATA 14 /* 00 1110 Generic Short Packet Code 7 */ 215#define ACQ_GEN_SH8_DATA 15 /* 00 1111 Generic Short Packet Code 8 */ 216#define ACQ_YUV420_8_CSPS_DATA 28 /* 01 1100 YUV420 8-bit (Chroma Shifted Pixel Sampling) */ 217#define ACQ_YUV420_10_CSPS_DATA 29 /* 01 1101 YUV420 10-bit (Chroma Shifted Pixel Sampling) */ 218#define ACQ_RESERVED_DATA_TYPE_MIN 56 219#define ACQ_RESERVED_DATA_TYPE_MAX 63 220#define ACQ_GEN_LONG_RESERVED_DATA_TYPE_MIN 19 221#define ACQ_GEN_LONG_RESERVED_DATA_TYPE_MAX 23 222#define ACQ_YUV_RESERVED_DATA_TYPE 27 223#define ACQ_RGB_RESERVED_DATA_TYPE_MIN 37 224#define ACQ_RGB_RESERVED_DATA_TYPE_MAX 39 225#define ACQ_RAW_RESERVED_DATA_TYPE_MIN 46 226#define ACQ_RAW_RESERVED_DATA_TYPE_MAX 47 227 228/* --------------------------------------------------*/ 229 230#endif /* _isp_acquisition_defs_h */ 231