1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* linux/drivers/media/platform/s5p-jpeg/jpeg-regs.h 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Register definition file for Samsung JPEG codec driver 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (c) 2011-2014 Samsung Electronics Co., Ltd. 7*4882a593Smuzhiyun * http://www.samsung.com 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * Author: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com> 10*4882a593Smuzhiyun * Author: Jacek Anaszewski <j.anaszewski@samsung.com> 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #ifndef JPEG_REGS_H_ 14*4882a593Smuzhiyun #define JPEG_REGS_H_ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* Register and bit definitions for S5PC210 */ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun /* JPEG mode register */ 19*4882a593Smuzhiyun #define S5P_JPGMOD 0x00 20*4882a593Smuzhiyun #define S5P_PROC_MODE_MASK (0x1 << 3) 21*4882a593Smuzhiyun #define S5P_PROC_MODE_DECOMPR (0x1 << 3) 22*4882a593Smuzhiyun #define S5P_PROC_MODE_COMPR (0x0 << 3) 23*4882a593Smuzhiyun #define S5P_SUBSAMPLING_MODE_MASK 0x7 24*4882a593Smuzhiyun #define S5P_SUBSAMPLING_MODE_444 (0x0 << 0) 25*4882a593Smuzhiyun #define S5P_SUBSAMPLING_MODE_422 (0x1 << 0) 26*4882a593Smuzhiyun #define S5P_SUBSAMPLING_MODE_420 (0x2 << 0) 27*4882a593Smuzhiyun #define S5P_SUBSAMPLING_MODE_GRAY (0x3 << 0) 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun /* JPEG operation status register */ 30*4882a593Smuzhiyun #define S5P_JPGOPR 0x04 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /* Quantization tables*/ 33*4882a593Smuzhiyun #define S5P_JPG_QTBL 0x08 34*4882a593Smuzhiyun #define S5P_QT_NUMt_SHIFT(t) (((t) - 1) << 1) 35*4882a593Smuzhiyun #define S5P_QT_NUMt_MASK(t) (0x3 << S5P_QT_NUMt_SHIFT(t)) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun /* Huffman tables */ 38*4882a593Smuzhiyun #define S5P_JPG_HTBL 0x0c 39*4882a593Smuzhiyun #define S5P_HT_NUMt_AC_SHIFT(t) (((t) << 1) - 1) 40*4882a593Smuzhiyun #define S5P_HT_NUMt_AC_MASK(t) (0x1 << S5P_HT_NUMt_AC_SHIFT(t)) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #define S5P_HT_NUMt_DC_SHIFT(t) (((t) - 1) << 1) 43*4882a593Smuzhiyun #define S5P_HT_NUMt_DC_MASK(t) (0x1 << S5P_HT_NUMt_DC_SHIFT(t)) 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun /* JPEG restart interval register upper byte */ 46*4882a593Smuzhiyun #define S5P_JPGDRI_U 0x10 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /* JPEG restart interval register lower byte */ 49*4882a593Smuzhiyun #define S5P_JPGDRI_L 0x14 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun /* JPEG vertical resolution register upper byte */ 52*4882a593Smuzhiyun #define S5P_JPGY_U 0x18 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun /* JPEG vertical resolution register lower byte */ 55*4882a593Smuzhiyun #define S5P_JPGY_L 0x1c 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun /* JPEG horizontal resolution register upper byte */ 58*4882a593Smuzhiyun #define S5P_JPGX_U 0x20 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun /* JPEG horizontal resolution register lower byte */ 61*4882a593Smuzhiyun #define S5P_JPGX_L 0x24 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun /* JPEG byte count register upper byte */ 64*4882a593Smuzhiyun #define S5P_JPGCNT_U 0x28 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun /* JPEG byte count register middle byte */ 67*4882a593Smuzhiyun #define S5P_JPGCNT_M 0x2c 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun /* JPEG byte count register lower byte */ 70*4882a593Smuzhiyun #define S5P_JPGCNT_L 0x30 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun /* JPEG interrupt setting register */ 73*4882a593Smuzhiyun #define S5P_JPGINTSE 0x34 74*4882a593Smuzhiyun #define S5P_RSTm_INT_EN_MASK (0x1 << 7) 75*4882a593Smuzhiyun #define S5P_RSTm_INT_EN (0x1 << 7) 76*4882a593Smuzhiyun #define S5P_DATA_NUM_INT_EN_MASK (0x1 << 6) 77*4882a593Smuzhiyun #define S5P_DATA_NUM_INT_EN (0x1 << 6) 78*4882a593Smuzhiyun #define S5P_FINAL_MCU_NUM_INT_EN_MASK (0x1 << 5) 79*4882a593Smuzhiyun #define S5P_FINAL_MCU_NUM_INT_EN (0x1 << 5) 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun /* JPEG interrupt status register */ 82*4882a593Smuzhiyun #define S5P_JPGINTST 0x38 83*4882a593Smuzhiyun #define S5P_RESULT_STAT_SHIFT 6 84*4882a593Smuzhiyun #define S5P_RESULT_STAT_MASK (0x1 << S5P_RESULT_STAT_SHIFT) 85*4882a593Smuzhiyun #define S5P_STREAM_STAT_SHIFT 5 86*4882a593Smuzhiyun #define S5P_STREAM_STAT_MASK (0x1 << S5P_STREAM_STAT_SHIFT) 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun /* JPEG command register */ 89*4882a593Smuzhiyun #define S5P_JPGCOM 0x4c 90*4882a593Smuzhiyun #define S5P_INT_RELEASE (0x1 << 2) 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun /* Raw image data r/w address register */ 93*4882a593Smuzhiyun #define S5P_JPG_IMGADR 0x50 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun /* JPEG file r/w address register */ 96*4882a593Smuzhiyun #define S5P_JPG_JPGADR 0x58 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun /* Coefficient for RGB-to-YCbCr converter register */ 99*4882a593Smuzhiyun #define S5P_JPG_COEF(n) (0x5c + (((n) - 1) << 2)) 100*4882a593Smuzhiyun #define S5P_COEFn_SHIFT(j) ((3 - (j)) << 3) 101*4882a593Smuzhiyun #define S5P_COEFn_MASK(j) (0xff << S5P_COEFn_SHIFT(j)) 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun /* JPEG color mode register */ 104*4882a593Smuzhiyun #define S5P_JPGCMOD 0x68 105*4882a593Smuzhiyun #define S5P_MOD_SEL_MASK (0x7 << 5) 106*4882a593Smuzhiyun #define S5P_MOD_SEL_422 (0x1 << 5) 107*4882a593Smuzhiyun #define S5P_MOD_SEL_565 (0x2 << 5) 108*4882a593Smuzhiyun #define S5P_MODE_Y16_MASK (0x1 << 1) 109*4882a593Smuzhiyun #define S5P_MODE_Y16 (0x1 << 1) 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun /* JPEG clock control register */ 112*4882a593Smuzhiyun #define S5P_JPGCLKCON 0x6c 113*4882a593Smuzhiyun #define S5P_CLK_DOWN_READY (0x1 << 1) 114*4882a593Smuzhiyun #define S5P_POWER_ON (0x1 << 0) 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun /* JPEG start register */ 117*4882a593Smuzhiyun #define S5P_JSTART 0x70 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun /* JPEG SW reset register */ 120*4882a593Smuzhiyun #define S5P_JPG_SW_RESET 0x78 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun /* JPEG timer setting register */ 123*4882a593Smuzhiyun #define S5P_JPG_TIMER_SE 0x7c 124*4882a593Smuzhiyun #define S5P_TIMER_INT_EN_MASK (0x1UL << 31) 125*4882a593Smuzhiyun #define S5P_TIMER_INT_EN (0x1UL << 31) 126*4882a593Smuzhiyun #define S5P_TIMER_INIT_MASK 0x7fffffff 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun /* JPEG timer status register */ 129*4882a593Smuzhiyun #define S5P_JPG_TIMER_ST 0x80 130*4882a593Smuzhiyun #define S5P_TIMER_INT_STAT_SHIFT 31 131*4882a593Smuzhiyun #define S5P_TIMER_INT_STAT_MASK (0x1UL << S5P_TIMER_INT_STAT_SHIFT) 132*4882a593Smuzhiyun #define S5P_TIMER_CNT_SHIFT 0 133*4882a593Smuzhiyun #define S5P_TIMER_CNT_MASK 0x7fffffff 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun /* JPEG decompression output format register */ 136*4882a593Smuzhiyun #define S5P_JPG_OUTFORM 0x88 137*4882a593Smuzhiyun #define S5P_DEC_OUT_FORMAT_MASK (0x1 << 0) 138*4882a593Smuzhiyun #define S5P_DEC_OUT_FORMAT_422 (0x0 << 0) 139*4882a593Smuzhiyun #define S5P_DEC_OUT_FORMAT_420 (0x1 << 0) 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun /* JPEG version register */ 142*4882a593Smuzhiyun #define S5P_JPG_VERSION 0x8c 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun /* JPEG compressed stream size interrupt setting register */ 145*4882a593Smuzhiyun #define S5P_JPG_ENC_STREAM_INTSE 0x98 146*4882a593Smuzhiyun #define S5P_ENC_STREAM_INT_MASK (0x1 << 24) 147*4882a593Smuzhiyun #define S5P_ENC_STREAM_INT_EN (0x1 << 24) 148*4882a593Smuzhiyun #define S5P_ENC_STREAM_BOUND_MASK 0xffffff 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun /* JPEG compressed stream size interrupt status register */ 151*4882a593Smuzhiyun #define S5P_JPG_ENC_STREAM_INTST 0x9c 152*4882a593Smuzhiyun #define S5P_ENC_STREAM_INT_STAT_MASK 0x1 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun /* JPEG quantizer table register */ 155*4882a593Smuzhiyun #define S5P_JPG_QTBL_CONTENT(n) (0x400 + (n) * 0x100) 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun /* JPEG DC Huffman table register */ 158*4882a593Smuzhiyun #define S5P_JPG_HDCTBL(n) (0x800 + (n) * 0x400) 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun /* JPEG DC Huffman table register */ 161*4882a593Smuzhiyun #define S5P_JPG_HDCTBLG(n) (0x840 + (n) * 0x400) 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun /* JPEG AC Huffman table register */ 164*4882a593Smuzhiyun #define S5P_JPG_HACTBL(n) (0x880 + (n) * 0x400) 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun /* JPEG AC Huffman table register */ 167*4882a593Smuzhiyun #define S5P_JPG_HACTBLG(n) (0x8c0 + (n) * 0x400) 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun /* Register and bit definitions for Exynos 4x12 */ 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun /* JPEG Codec Control Registers */ 173*4882a593Smuzhiyun #define EXYNOS4_JPEG_CNTL_REG 0x00 174*4882a593Smuzhiyun #define EXYNOS4_INT_EN_REG 0x04 175*4882a593Smuzhiyun #define EXYNOS4_INT_TIMER_COUNT_REG 0x08 176*4882a593Smuzhiyun #define EXYNOS4_INT_STATUS_REG 0x0c 177*4882a593Smuzhiyun #define EXYNOS4_OUT_MEM_BASE_REG 0x10 178*4882a593Smuzhiyun #define EXYNOS4_JPEG_IMG_SIZE_REG 0x14 179*4882a593Smuzhiyun #define EXYNOS4_IMG_BA_PLANE_1_REG 0x18 180*4882a593Smuzhiyun #define EXYNOS4_IMG_SO_PLANE_1_REG 0x1c 181*4882a593Smuzhiyun #define EXYNOS4_IMG_PO_PLANE_1_REG 0x20 182*4882a593Smuzhiyun #define EXYNOS4_IMG_BA_PLANE_2_REG 0x24 183*4882a593Smuzhiyun #define EXYNOS4_IMG_SO_PLANE_2_REG 0x28 184*4882a593Smuzhiyun #define EXYNOS4_IMG_PO_PLANE_2_REG 0x2c 185*4882a593Smuzhiyun #define EXYNOS4_IMG_BA_PLANE_3_REG 0x30 186*4882a593Smuzhiyun #define EXYNOS4_IMG_SO_PLANE_3_REG 0x34 187*4882a593Smuzhiyun #define EXYNOS4_IMG_PO_PLANE_3_REG 0x38 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun #define EXYNOS4_TBL_SEL_REG 0x3c 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun #define EXYNOS4_IMG_FMT_REG 0x40 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun #define EXYNOS4_BITSTREAM_SIZE_REG 0x44 194*4882a593Smuzhiyun #define EXYNOS4_PADDING_REG 0x48 195*4882a593Smuzhiyun #define EXYNOS4_HUFF_CNT_REG 0x4c 196*4882a593Smuzhiyun #define EXYNOS4_FIFO_STATUS_REG 0x50 197*4882a593Smuzhiyun #define EXYNOS4_DECODE_XY_SIZE_REG 0x54 198*4882a593Smuzhiyun #define EXYNOS4_DECODE_IMG_FMT_REG 0x58 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun #define EXYNOS4_QUAN_TBL_ENTRY_REG 0x100 201*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_ENTRY_REG 0x200 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun /****************************************************************/ 205*4882a593Smuzhiyun /* Bit definition part */ 206*4882a593Smuzhiyun /****************************************************************/ 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun /* JPEG CNTL Register bit */ 209*4882a593Smuzhiyun #define EXYNOS4_ENC_DEC_MODE_MASK (0xfffffffc << 0) 210*4882a593Smuzhiyun #define EXYNOS4_DEC_MODE (1 << 0) 211*4882a593Smuzhiyun #define EXYNOS4_ENC_MODE (1 << 1) 212*4882a593Smuzhiyun #define EXYNOS4_AUTO_RST_MARKER (1 << 2) 213*4882a593Smuzhiyun #define EXYNOS4_RST_INTERVAL_SHIFT 3 214*4882a593Smuzhiyun #define EXYNOS4_RST_INTERVAL(x) (((x) & 0xffff) \ 215*4882a593Smuzhiyun << EXYNOS4_RST_INTERVAL_SHIFT) 216*4882a593Smuzhiyun #define EXYNOS4_HUF_TBL_EN (1 << 19) 217*4882a593Smuzhiyun #define EXYNOS4_HOR_SCALING_SHIFT 20 218*4882a593Smuzhiyun #define EXYNOS4_HOR_SCALING_MASK (3 << EXYNOS4_HOR_SCALING_SHIFT) 219*4882a593Smuzhiyun #define EXYNOS4_HOR_SCALING(x) (((x) & 0x3) \ 220*4882a593Smuzhiyun << EXYNOS4_HOR_SCALING_SHIFT) 221*4882a593Smuzhiyun #define EXYNOS4_VER_SCALING_SHIFT 22 222*4882a593Smuzhiyun #define EXYNOS4_VER_SCALING_MASK (3 << EXYNOS4_VER_SCALING_SHIFT) 223*4882a593Smuzhiyun #define EXYNOS4_VER_SCALING(x) (((x) & 0x3) \ 224*4882a593Smuzhiyun << EXYNOS4_VER_SCALING_SHIFT) 225*4882a593Smuzhiyun #define EXYNOS4_PADDING (1 << 27) 226*4882a593Smuzhiyun #define EXYNOS4_SYS_INT_EN (1 << 28) 227*4882a593Smuzhiyun #define EXYNOS4_SOFT_RESET_HI (1 << 29) 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun /* JPEG INT Register bit */ 230*4882a593Smuzhiyun #define EXYNOS4_INT_EN_MASK (0x1f << 0) 231*4882a593Smuzhiyun #define EXYNOS5433_INT_EN_MASK (0x1ff << 0) 232*4882a593Smuzhiyun #define EXYNOS4_PROT_ERR_INT_EN (1 << 0) 233*4882a593Smuzhiyun #define EXYNOS4_IMG_COMPLETION_INT_EN (1 << 1) 234*4882a593Smuzhiyun #define EXYNOS4_DEC_INVALID_FORMAT_EN (1 << 2) 235*4882a593Smuzhiyun #define EXYNOS4_MULTI_SCAN_ERROR_EN (1 << 3) 236*4882a593Smuzhiyun #define EXYNOS4_FRAME_ERR_EN (1 << 4) 237*4882a593Smuzhiyun #define EXYNOS4_INT_EN_ALL (0x1f << 0) 238*4882a593Smuzhiyun #define EXYNOS5433_INT_EN_ALL (0x1b6 << 0) 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun #define EXYNOS4_MOD_REG_PROC_ENC (0 << 3) 241*4882a593Smuzhiyun #define EXYNOS4_MOD_REG_PROC_DEC (1 << 3) 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun #define EXYNOS4_MOD_REG_SUBSAMPLE_444 (0 << 0) 244*4882a593Smuzhiyun #define EXYNOS4_MOD_REG_SUBSAMPLE_422 (1 << 0) 245*4882a593Smuzhiyun #define EXYNOS4_MOD_REG_SUBSAMPLE_420 (2 << 0) 246*4882a593Smuzhiyun #define EXYNOS4_MOD_REG_SUBSAMPLE_GRAY (3 << 0) 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun /* JPEG IMAGE SIZE Register bit */ 250*4882a593Smuzhiyun #define EXYNOS4_X_SIZE_SHIFT 0 251*4882a593Smuzhiyun #define EXYNOS4_X_SIZE_MASK (0xffff << EXYNOS4_X_SIZE_SHIFT) 252*4882a593Smuzhiyun #define EXYNOS4_X_SIZE(x) (((x) & 0xffff) << EXYNOS4_X_SIZE_SHIFT) 253*4882a593Smuzhiyun #define EXYNOS4_Y_SIZE_SHIFT 16 254*4882a593Smuzhiyun #define EXYNOS4_Y_SIZE_MASK (0xffff << EXYNOS4_Y_SIZE_SHIFT) 255*4882a593Smuzhiyun #define EXYNOS4_Y_SIZE(x) (((x) & 0xffff) << EXYNOS4_Y_SIZE_SHIFT) 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /* JPEG IMAGE FORMAT Register bit */ 258*4882a593Smuzhiyun #define EXYNOS4_ENC_IN_FMT_MASK 0xffff0000 259*4882a593Smuzhiyun #define EXYNOS4_ENC_GRAY_IMG (0 << 0) 260*4882a593Smuzhiyun #define EXYNOS4_ENC_RGB_IMG (1 << 0) 261*4882a593Smuzhiyun #define EXYNOS4_ENC_YUV_444_IMG (2 << 0) 262*4882a593Smuzhiyun #define EXYNOS4_ENC_YUV_422_IMG (3 << 0) 263*4882a593Smuzhiyun #define EXYNOS4_ENC_YUV_440_IMG (4 << 0) 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun #define EXYNOS4_DEC_GRAY_IMG (0 << 0) 266*4882a593Smuzhiyun #define EXYNOS4_DEC_RGB_IMG (1 << 0) 267*4882a593Smuzhiyun #define EXYNOS4_DEC_YUV_444_IMG (2 << 0) 268*4882a593Smuzhiyun #define EXYNOS4_DEC_YUV_422_IMG (3 << 0) 269*4882a593Smuzhiyun #define EXYNOS4_DEC_YUV_420_IMG (4 << 0) 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun #define EXYNOS4_GRAY_IMG_IP_SHIFT 3 272*4882a593Smuzhiyun #define EXYNOS4_GRAY_IMG_IP_MASK (7 << EXYNOS4_GRAY_IMG_IP_SHIFT) 273*4882a593Smuzhiyun #define EXYNOS4_GRAY_IMG_IP (4 << EXYNOS4_GRAY_IMG_IP_SHIFT) 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun #define EXYNOS4_RGB_IP_SHIFT 6 276*4882a593Smuzhiyun #define EXYNOS4_RGB_IP_MASK (7 << EXYNOS4_RGB_IP_SHIFT) 277*4882a593Smuzhiyun #define EXYNOS4_RGB_IP_RGB_16BIT_IMG (4 << EXYNOS4_RGB_IP_SHIFT) 278*4882a593Smuzhiyun #define EXYNOS4_RGB_IP_RGB_32BIT_IMG (5 << EXYNOS4_RGB_IP_SHIFT) 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun #define EXYNOS4_YUV_444_IP_SHIFT 9 281*4882a593Smuzhiyun #define EXYNOS4_YUV_444_IP_MASK (7 << EXYNOS4_YUV_444_IP_SHIFT) 282*4882a593Smuzhiyun #define EXYNOS4_YUV_444_IP_YUV_444_2P_IMG (4 << EXYNOS4_YUV_444_IP_SHIFT) 283*4882a593Smuzhiyun #define EXYNOS4_YUV_444_IP_YUV_444_3P_IMG (5 << EXYNOS4_YUV_444_IP_SHIFT) 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun #define EXYNOS4_YUV_422_IP_SHIFT 12 286*4882a593Smuzhiyun #define EXYNOS4_YUV_422_IP_MASK (7 << EXYNOS4_YUV_422_IP_SHIFT) 287*4882a593Smuzhiyun #define EXYNOS4_YUV_422_IP_YUV_422_1P_IMG (4 << EXYNOS4_YUV_422_IP_SHIFT) 288*4882a593Smuzhiyun #define EXYNOS4_YUV_422_IP_YUV_422_2P_IMG (5 << EXYNOS4_YUV_422_IP_SHIFT) 289*4882a593Smuzhiyun #define EXYNOS4_YUV_422_IP_YUV_422_3P_IMG (6 << EXYNOS4_YUV_422_IP_SHIFT) 290*4882a593Smuzhiyun 291*4882a593Smuzhiyun #define EXYNOS4_YUV_420_IP_SHIFT 15 292*4882a593Smuzhiyun #define EXYNOS4_YUV_420_IP_MASK (7 << EXYNOS4_YUV_420_IP_SHIFT) 293*4882a593Smuzhiyun #define EXYNOS4_YUV_420_IP_YUV_420_2P_IMG (4 << EXYNOS4_YUV_420_IP_SHIFT) 294*4882a593Smuzhiyun #define EXYNOS4_YUV_420_IP_YUV_420_3P_IMG (5 << EXYNOS4_YUV_420_IP_SHIFT) 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun #define EXYNOS4_ENC_FMT_SHIFT 24 297*4882a593Smuzhiyun #define EXYNOS4_ENC_FMT_MASK (3 << EXYNOS4_ENC_FMT_SHIFT) 298*4882a593Smuzhiyun #define EXYNOS5433_ENC_FMT_MASK (7 << EXYNOS4_ENC_FMT_SHIFT) 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun #define EXYNOS4_ENC_FMT_GRAY (0 << EXYNOS4_ENC_FMT_SHIFT) 301*4882a593Smuzhiyun #define EXYNOS4_ENC_FMT_YUV_444 (1 << EXYNOS4_ENC_FMT_SHIFT) 302*4882a593Smuzhiyun #define EXYNOS4_ENC_FMT_YUV_422 (2 << EXYNOS4_ENC_FMT_SHIFT) 303*4882a593Smuzhiyun #define EXYNOS4_ENC_FMT_YUV_420 (3 << EXYNOS4_ENC_FMT_SHIFT) 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun #define EXYNOS4_JPEG_DECODED_IMG_FMT_MASK 0x03 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun #define EXYNOS4_SWAP_CHROMA_CRCB (1 << 26) 308*4882a593Smuzhiyun #define EXYNOS4_SWAP_CHROMA_CBCR (0 << 26) 309*4882a593Smuzhiyun #define EXYNOS5433_SWAP_CHROMA_CRCB (1 << 27) 310*4882a593Smuzhiyun #define EXYNOS5433_SWAP_CHROMA_CBCR (0 << 27) 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun /* JPEG HUFF count Register bit */ 313*4882a593Smuzhiyun #define EXYNOS4_HUFF_COUNT_MASK 0xffff 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun /* JPEG Decoded_img_x_y_size Register bit */ 316*4882a593Smuzhiyun #define EXYNOS4_DECODED_SIZE_MASK 0x0000ffff 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun /* JPEG Decoded image format Register bit */ 319*4882a593Smuzhiyun #define EXYNOS4_DECODED_IMG_FMT_MASK 0x3 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun /* JPEG TBL SEL Register bit */ 322*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP(c, n) ((n) << (((c) - 1) << 1)) 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP1_0 EXYNOS4_Q_TBL_COMP(1, 0) 325*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP1_1 EXYNOS4_Q_TBL_COMP(1, 1) 326*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP1_2 EXYNOS4_Q_TBL_COMP(1, 2) 327*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP1_3 EXYNOS4_Q_TBL_COMP(1, 3) 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP2_0 EXYNOS4_Q_TBL_COMP(2, 0) 330*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP2_1 EXYNOS4_Q_TBL_COMP(2, 1) 331*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP2_2 EXYNOS4_Q_TBL_COMP(2, 2) 332*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP2_3 EXYNOS4_Q_TBL_COMP(2, 3) 333*4882a593Smuzhiyun 334*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP3_0 EXYNOS4_Q_TBL_COMP(3, 0) 335*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP3_1 EXYNOS4_Q_TBL_COMP(3, 1) 336*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP3_2 EXYNOS4_Q_TBL_COMP(3, 2) 337*4882a593Smuzhiyun #define EXYNOS4_Q_TBL_COMP3_3 EXYNOS4_Q_TBL_COMP(3, 3) 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP(c, n) ((n) << ((((c) - 1) << 1) + 6)) 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP1_AC_0_DC_0 \ 342*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(1, 0) 343*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP1_AC_0_DC_1 \ 344*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(1, 1) 345*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP1_AC_1_DC_0 \ 346*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(1, 2) 347*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP1_AC_1_DC_1 \ 348*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(1, 3) 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP2_AC_0_DC_0 \ 351*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(2, 0) 352*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP2_AC_0_DC_1 \ 353*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(2, 1) 354*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP2_AC_1_DC_0 \ 355*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(2, 2) 356*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP2_AC_1_DC_1 \ 357*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(2, 3) 358*4882a593Smuzhiyun 359*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP3_AC_0_DC_0 \ 360*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(3, 0) 361*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP3_AC_0_DC_1 \ 362*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(3, 1) 363*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP3_AC_1_DC_0 \ 364*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(3, 2) 365*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_COMP3_AC_1_DC_1 \ 366*4882a593Smuzhiyun EXYNOS4_HUFF_TBL_COMP(3, 3) 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun #define EXYNOS4_NF_SHIFT 16 369*4882a593Smuzhiyun #define EXYNOS4_NF_MASK 0xff 370*4882a593Smuzhiyun #define EXYNOS4_NF(x) \ 371*4882a593Smuzhiyun (((x) & EXYNOS4_NF_MASK) << EXYNOS4_NF_SHIFT) 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun /* JPEG quantizer table register */ 374*4882a593Smuzhiyun #define EXYNOS4_QTBL_CONTENT(n) (0x100 + (n) * 0x40) 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun /* JPEG DC luminance (code length) Huffman table register */ 377*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_HDCLL 0x200 378*4882a593Smuzhiyun 379*4882a593Smuzhiyun /* JPEG DC luminance (values) Huffman table register */ 380*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_HDCLV 0x210 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun /* JPEG DC chrominance (code length) Huffman table register */ 383*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_HDCCL 0x220 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun /* JPEG DC chrominance (values) Huffman table register */ 386*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_HDCCV 0x230 387*4882a593Smuzhiyun 388*4882a593Smuzhiyun /* JPEG AC luminance (code length) Huffman table register */ 389*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_HACLL 0x240 390*4882a593Smuzhiyun 391*4882a593Smuzhiyun /* JPEG AC luminance (values) Huffman table register */ 392*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_HACLV 0x250 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun /* JPEG AC chrominance (code length) Huffman table register */ 395*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_HACCL 0x300 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun /* JPEG AC chrominance (values) Huffman table register */ 398*4882a593Smuzhiyun #define EXYNOS4_HUFF_TBL_HACCV 0x310 399*4882a593Smuzhiyun 400*4882a593Smuzhiyun /* Register and bit definitions for Exynos 3250 */ 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun /* JPEG mode register */ 403*4882a593Smuzhiyun #define EXYNOS3250_JPGMOD 0x00 404*4882a593Smuzhiyun #define EXYNOS3250_PROC_MODE_MASK (0x1 << 3) 405*4882a593Smuzhiyun #define EXYNOS3250_PROC_MODE_DECOMPR (0x1 << 3) 406*4882a593Smuzhiyun #define EXYNOS3250_PROC_MODE_COMPR (0x0 << 3) 407*4882a593Smuzhiyun #define EXYNOS3250_SUBSAMPLING_MODE_MASK (0x7 << 0) 408*4882a593Smuzhiyun #define EXYNOS3250_SUBSAMPLING_MODE_444 (0x0 << 0) 409*4882a593Smuzhiyun #define EXYNOS3250_SUBSAMPLING_MODE_422 (0x1 << 0) 410*4882a593Smuzhiyun #define EXYNOS3250_SUBSAMPLING_MODE_420 (0x2 << 0) 411*4882a593Smuzhiyun #define EXYNOS3250_SUBSAMPLING_MODE_411 (0x6 << 0) 412*4882a593Smuzhiyun #define EXYNOS3250_SUBSAMPLING_MODE_GRAY (0x3 << 0) 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun /* JPEG operation status register */ 415*4882a593Smuzhiyun #define EXYNOS3250_JPGOPR 0x04 416*4882a593Smuzhiyun #define EXYNOS3250_JPGOPR_MASK 0x01 417*4882a593Smuzhiyun 418*4882a593Smuzhiyun /* Quantization and Huffman tables register */ 419*4882a593Smuzhiyun #define EXYNOS3250_QHTBL 0x08 420*4882a593Smuzhiyun #define EXYNOS3250_QT_NUM_SHIFT(t) ((((t) - 1) << 1) + 8) 421*4882a593Smuzhiyun #define EXYNOS3250_QT_NUM_MASK(t) (0x3 << EXYNOS3250_QT_NUM_SHIFT(t)) 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun /* Huffman tables */ 424*4882a593Smuzhiyun #define EXYNOS3250_HT_NUM_AC_SHIFT(t) (((t) << 1) - 1) 425*4882a593Smuzhiyun #define EXYNOS3250_HT_NUM_AC_MASK(t) (0x1 << EXYNOS3250_HT_NUM_AC_SHIFT(t)) 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun #define EXYNOS3250_HT_NUM_DC_SHIFT(t) (((t) - 1) << 1) 428*4882a593Smuzhiyun #define EXYNOS3250_HT_NUM_DC_MASK(t) (0x1 << EXYNOS3250_HT_NUM_DC_SHIFT(t)) 429*4882a593Smuzhiyun 430*4882a593Smuzhiyun /* JPEG restart interval register */ 431*4882a593Smuzhiyun #define EXYNOS3250_JPGDRI 0x0c 432*4882a593Smuzhiyun #define EXYNOS3250_JPGDRI_MASK 0xffff 433*4882a593Smuzhiyun 434*4882a593Smuzhiyun /* JPEG vertical resolution register */ 435*4882a593Smuzhiyun #define EXYNOS3250_JPGY 0x10 436*4882a593Smuzhiyun #define EXYNOS3250_JPGY_MASK 0xffff 437*4882a593Smuzhiyun 438*4882a593Smuzhiyun /* JPEG horizontal resolution register */ 439*4882a593Smuzhiyun #define EXYNOS3250_JPGX 0x14 440*4882a593Smuzhiyun #define EXYNOS3250_JPGX_MASK 0xffff 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun /* JPEG byte count register */ 443*4882a593Smuzhiyun #define EXYNOS3250_JPGCNT 0x18 444*4882a593Smuzhiyun #define EXYNOS3250_JPGCNT_MASK 0xffffff 445*4882a593Smuzhiyun 446*4882a593Smuzhiyun /* JPEG interrupt mask register */ 447*4882a593Smuzhiyun #define EXYNOS3250_JPGINTSE 0x1c 448*4882a593Smuzhiyun #define EXYNOS3250_JPEG_DONE_EN (1 << 11) 449*4882a593Smuzhiyun #define EXYNOS3250_WDMA_DONE_EN (1 << 10) 450*4882a593Smuzhiyun #define EXYNOS3250_RDMA_DONE_EN (1 << 9) 451*4882a593Smuzhiyun #define EXYNOS3250_ENC_STREAM_INT_EN (1 << 8) 452*4882a593Smuzhiyun #define EXYNOS3250_CORE_DONE_EN (1 << 5) 453*4882a593Smuzhiyun #define EXYNOS3250_ERR_INT_EN (1 << 4) 454*4882a593Smuzhiyun #define EXYNOS3250_HEAD_INT_EN (1 << 3) 455*4882a593Smuzhiyun 456*4882a593Smuzhiyun /* JPEG interrupt status register */ 457*4882a593Smuzhiyun #define EXYNOS3250_JPGINTST 0x20 458*4882a593Smuzhiyun #define EXYNOS3250_JPEG_DONE (1 << 11) 459*4882a593Smuzhiyun #define EXYNOS3250_WDMA_DONE (1 << 10) 460*4882a593Smuzhiyun #define EXYNOS3250_RDMA_DONE (1 << 9) 461*4882a593Smuzhiyun #define EXYNOS3250_ENC_STREAM_STAT (1 << 8) 462*4882a593Smuzhiyun #define EXYNOS3250_RESULT_STAT (1 << 5) 463*4882a593Smuzhiyun #define EXYNOS3250_STREAM_STAT (1 << 4) 464*4882a593Smuzhiyun #define EXYNOS3250_HEADER_STAT (1 << 3) 465*4882a593Smuzhiyun 466*4882a593Smuzhiyun /* 467*4882a593Smuzhiyun * Base address of the luma component DMA buffer 468*4882a593Smuzhiyun * of the raw input or output image. 469*4882a593Smuzhiyun */ 470*4882a593Smuzhiyun #define EXYNOS3250_LUMA_BASE 0x100 471*4882a593Smuzhiyun #define EXYNOS3250_SRC_TILE_EN_MASK 0x100 472*4882a593Smuzhiyun 473*4882a593Smuzhiyun /* Stride of source or destination luma raw image buffer */ 474*4882a593Smuzhiyun #define EXYNOS3250_LUMA_STRIDE 0x104 475*4882a593Smuzhiyun 476*4882a593Smuzhiyun /* Horizontal/vertical offset of active region in luma raw image buffer */ 477*4882a593Smuzhiyun #define EXYNOS3250_LUMA_XY_OFFSET 0x108 478*4882a593Smuzhiyun #define EXYNOS3250_LUMA_YY_OFFSET_SHIFT 18 479*4882a593Smuzhiyun #define EXYNOS3250_LUMA_YY_OFFSET_MASK (0x1fff << EXYNOS3250_LUMA_YY_OFFSET_SHIFT) 480*4882a593Smuzhiyun #define EXYNOS3250_LUMA_YX_OFFSET_SHIFT 2 481*4882a593Smuzhiyun #define EXYNOS3250_LUMA_YX_OFFSET_MASK (0x1fff << EXYNOS3250_LUMA_YX_OFFSET_SHIFT) 482*4882a593Smuzhiyun 483*4882a593Smuzhiyun /* 484*4882a593Smuzhiyun * Base address of the chroma(Cb) component DMA buffer 485*4882a593Smuzhiyun * of the raw input or output image. 486*4882a593Smuzhiyun */ 487*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_BASE 0x10c 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun /* Stride of source or destination chroma(Cb) raw image buffer */ 490*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_STRIDE 0x110 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun /* Horizontal/vertical offset of active region in chroma(Cb) raw image buffer */ 493*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_XY_OFFSET 0x114 494*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_YY_OFFSET_SHIFT 18 495*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_YY_OFFSET_MASK (0x1fff << EXYNOS3250_CHROMA_YY_OFFSET_SHIFT) 496*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_YX_OFFSET_SHIFT 2 497*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_YX_OFFSET_MASK (0x1fff << EXYNOS3250_CHROMA_YX_OFFSET_SHIFT) 498*4882a593Smuzhiyun 499*4882a593Smuzhiyun /* 500*4882a593Smuzhiyun * Base address of the chroma(Cr) component DMA buffer 501*4882a593Smuzhiyun * of the raw input or output image. 502*4882a593Smuzhiyun */ 503*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_CR_BASE 0x118 504*4882a593Smuzhiyun 505*4882a593Smuzhiyun /* Stride of source or destination chroma(Cr) raw image buffer */ 506*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_CR_STRIDE 0x11c 507*4882a593Smuzhiyun 508*4882a593Smuzhiyun /* Horizontal/vertical offset of active region in chroma(Cb) raw image buffer */ 509*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_CR_XY_OFFSET 0x120 510*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_CR_YY_OFFSET_SHIFT 18 511*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_CR_YY_OFFSET_MASK (0x1fff << EXYNOS3250_CHROMA_CR_YY_OFFSET_SHIFT) 512*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_CR_YX_OFFSET_SHIFT 2 513*4882a593Smuzhiyun #define EXYNOS3250_CHROMA_CR_YX_OFFSET_MASK (0x1fff << EXYNOS3250_CHROMA_CR_YX_OFFSET_SHIFT) 514*4882a593Smuzhiyun 515*4882a593Smuzhiyun /* Raw image data r/w address register */ 516*4882a593Smuzhiyun #define EXYNOS3250_JPG_IMGADR 0x50 517*4882a593Smuzhiyun 518*4882a593Smuzhiyun /* Source or destination JPEG file DMA buffer address */ 519*4882a593Smuzhiyun #define EXYNOS3250_JPG_JPGADR 0x124 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun /* Coefficients for RGB-to-YCbCr converter register */ 522*4882a593Smuzhiyun #define EXYNOS3250_JPG_COEF(n) (0x128 + (((n) - 1) << 2)) 523*4882a593Smuzhiyun #define EXYNOS3250_COEF_SHIFT(j) ((3 - (j)) << 3) 524*4882a593Smuzhiyun #define EXYNOS3250_COEF_MASK(j) (0xff << EXYNOS3250_COEF_SHIFT(j)) 525*4882a593Smuzhiyun 526*4882a593Smuzhiyun /* Raw input format setting */ 527*4882a593Smuzhiyun #define EXYNOS3250_JPGCMOD 0x134 528*4882a593Smuzhiyun #define EXYNOS3250_SRC_TILE_EN (0x1 << 10) 529*4882a593Smuzhiyun #define EXYNOS3250_SRC_NV_MASK (0x1 << 9) 530*4882a593Smuzhiyun #define EXYNOS3250_SRC_NV12 (0x0 << 9) 531*4882a593Smuzhiyun #define EXYNOS3250_SRC_NV21 (0x1 << 9) 532*4882a593Smuzhiyun #define EXYNOS3250_SRC_BIG_ENDIAN_MASK (0x1 << 8) 533*4882a593Smuzhiyun #define EXYNOS3250_SRC_BIG_ENDIAN (0x1 << 8) 534*4882a593Smuzhiyun #define EXYNOS3250_MODE_SEL_MASK (0x7 << 5) 535*4882a593Smuzhiyun #define EXYNOS3250_MODE_SEL_420_2P (0x0 << 5) 536*4882a593Smuzhiyun #define EXYNOS3250_MODE_SEL_422_1P_LUM_CHR (0x1 << 5) 537*4882a593Smuzhiyun #define EXYNOS3250_MODE_SEL_RGB565 (0x2 << 5) 538*4882a593Smuzhiyun #define EXYNOS3250_MODE_SEL_422_1P_CHR_LUM (0x3 << 5) 539*4882a593Smuzhiyun #define EXYNOS3250_MODE_SEL_ARGB8888 (0x4 << 5) 540*4882a593Smuzhiyun #define EXYNOS3250_MODE_SEL_420_3P (0x5 << 5) 541*4882a593Smuzhiyun #define EXYNOS3250_SRC_SWAP_RGB (0x1 << 3) 542*4882a593Smuzhiyun #define EXYNOS3250_SRC_SWAP_UV (0x1 << 2) 543*4882a593Smuzhiyun #define EXYNOS3250_MODE_Y16_MASK (0x1 << 1) 544*4882a593Smuzhiyun #define EXYNOS3250_MODE_Y16 (0x1 << 1) 545*4882a593Smuzhiyun #define EXYNOS3250_HALF_EN_MASK (0x1 << 0) 546*4882a593Smuzhiyun #define EXYNOS3250_HALF_EN (0x1 << 0) 547*4882a593Smuzhiyun 548*4882a593Smuzhiyun /* Power on/off and clock down control */ 549*4882a593Smuzhiyun #define EXYNOS3250_JPGCLKCON 0x138 550*4882a593Smuzhiyun #define EXYNOS3250_CLK_DOWN_READY (0x1 << 1) 551*4882a593Smuzhiyun #define EXYNOS3250_POWER_ON (0x1 << 0) 552*4882a593Smuzhiyun 553*4882a593Smuzhiyun /* Start compression or decompression */ 554*4882a593Smuzhiyun #define EXYNOS3250_JSTART 0x13c 555*4882a593Smuzhiyun 556*4882a593Smuzhiyun /* Restart decompression after header analysis */ 557*4882a593Smuzhiyun #define EXYNOS3250_JRSTART 0x140 558*4882a593Smuzhiyun 559*4882a593Smuzhiyun /* JPEG SW reset register */ 560*4882a593Smuzhiyun #define EXYNOS3250_SW_RESET 0x144 561*4882a593Smuzhiyun 562*4882a593Smuzhiyun /* JPEG timer setting register */ 563*4882a593Smuzhiyun #define EXYNOS3250_TIMER_SE 0x148 564*4882a593Smuzhiyun #define EXYNOS3250_TIMER_INT_EN_SHIFT 31 565*4882a593Smuzhiyun #define EXYNOS3250_TIMER_INT_EN (1UL << EXYNOS3250_TIMER_INT_EN_SHIFT) 566*4882a593Smuzhiyun #define EXYNOS3250_TIMER_INIT_MASK 0x7fffffff 567*4882a593Smuzhiyun 568*4882a593Smuzhiyun /* JPEG timer status register */ 569*4882a593Smuzhiyun #define EXYNOS3250_TIMER_ST 0x14c 570*4882a593Smuzhiyun #define EXYNOS3250_TIMER_INT_STAT_SHIFT 31 571*4882a593Smuzhiyun #define EXYNOS3250_TIMER_INT_STAT (1UL << EXYNOS3250_TIMER_INT_STAT_SHIFT) 572*4882a593Smuzhiyun #define EXYNOS3250_TIMER_CNT_SHIFT 0 573*4882a593Smuzhiyun #define EXYNOS3250_TIMER_CNT_MASK 0x7fffffff 574*4882a593Smuzhiyun 575*4882a593Smuzhiyun /* Command status register */ 576*4882a593Smuzhiyun #define EXYNOS3250_COMSTAT 0x150 577*4882a593Smuzhiyun #define EXYNOS3250_CUR_PROC_MODE (0x1 << 1) 578*4882a593Smuzhiyun #define EXYNOS3250_CUR_COM_MODE (0x1 << 0) 579*4882a593Smuzhiyun 580*4882a593Smuzhiyun /* JPEG decompression output format register */ 581*4882a593Smuzhiyun #define EXYNOS3250_OUTFORM 0x154 582*4882a593Smuzhiyun #define EXYNOS3250_OUT_ALPHA_MASK (0xff << 24) 583*4882a593Smuzhiyun #define EXYNOS3250_OUT_TILE_EN (0x1 << 10) 584*4882a593Smuzhiyun #define EXYNOS3250_OUT_NV_MASK (0x1 << 9) 585*4882a593Smuzhiyun #define EXYNOS3250_OUT_NV12 (0x0 << 9) 586*4882a593Smuzhiyun #define EXYNOS3250_OUT_NV21 (0x1 << 9) 587*4882a593Smuzhiyun #define EXYNOS3250_OUT_BIG_ENDIAN_MASK (0x1 << 8) 588*4882a593Smuzhiyun #define EXYNOS3250_OUT_BIG_ENDIAN (0x1 << 8) 589*4882a593Smuzhiyun #define EXYNOS3250_OUT_SWAP_RGB (0x1 << 7) 590*4882a593Smuzhiyun #define EXYNOS3250_OUT_SWAP_UV (0x1 << 6) 591*4882a593Smuzhiyun #define EXYNOS3250_OUT_FMT_MASK (0x7 << 0) 592*4882a593Smuzhiyun #define EXYNOS3250_OUT_FMT_420_2P (0x0 << 0) 593*4882a593Smuzhiyun #define EXYNOS3250_OUT_FMT_422_1P_LUM_CHR (0x1 << 0) 594*4882a593Smuzhiyun #define EXYNOS3250_OUT_FMT_422_1P_CHR_LUM (0x3 << 0) 595*4882a593Smuzhiyun #define EXYNOS3250_OUT_FMT_420_3P (0x4 << 0) 596*4882a593Smuzhiyun #define EXYNOS3250_OUT_FMT_RGB565 (0x5 << 0) 597*4882a593Smuzhiyun #define EXYNOS3250_OUT_FMT_ARGB8888 (0x6 << 0) 598*4882a593Smuzhiyun 599*4882a593Smuzhiyun /* Input JPEG stream byte size for decompression */ 600*4882a593Smuzhiyun #define EXYNOS3250_DEC_STREAM_SIZE 0x158 601*4882a593Smuzhiyun #define EXYNOS3250_DEC_STREAM_MASK 0x1fffffff 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun /* The upper bound of the byte size of output compressed stream */ 604*4882a593Smuzhiyun #define EXYNOS3250_ENC_STREAM_BOUND 0x15c 605*4882a593Smuzhiyun #define EXYNOS3250_ENC_STREAM_BOUND_MASK 0xffffc0 606*4882a593Smuzhiyun 607*4882a593Smuzhiyun /* Scale-down ratio when decoding */ 608*4882a593Smuzhiyun #define EXYNOS3250_DEC_SCALING_RATIO 0x160 609*4882a593Smuzhiyun #define EXYNOS3250_DEC_SCALE_FACTOR_MASK 0x3 610*4882a593Smuzhiyun #define EXYNOS3250_DEC_SCALE_FACTOR_8_8 0x0 611*4882a593Smuzhiyun #define EXYNOS3250_DEC_SCALE_FACTOR_4_8 0x1 612*4882a593Smuzhiyun #define EXYNOS3250_DEC_SCALE_FACTOR_2_8 0x2 613*4882a593Smuzhiyun #define EXYNOS3250_DEC_SCALE_FACTOR_1_8 0x3 614*4882a593Smuzhiyun 615*4882a593Smuzhiyun /* Error check */ 616*4882a593Smuzhiyun #define EXYNOS3250_CRC_RESULT 0x164 617*4882a593Smuzhiyun 618*4882a593Smuzhiyun /* RDMA and WDMA operation status register */ 619*4882a593Smuzhiyun #define EXYNOS3250_DMA_OPER_STATUS 0x168 620*4882a593Smuzhiyun #define EXYNOS3250_WDMA_OPER_STATUS (0x1 << 1) 621*4882a593Smuzhiyun #define EXYNOS3250_RDMA_OPER_STATUS (0x1 << 0) 622*4882a593Smuzhiyun 623*4882a593Smuzhiyun /* DMA issue gathering number and issue number settings */ 624*4882a593Smuzhiyun #define EXYNOS3250_DMA_ISSUE_NUM 0x16c 625*4882a593Smuzhiyun #define EXYNOS3250_WDMA_ISSUE_NUM_SHIFT 16 626*4882a593Smuzhiyun #define EXYNOS3250_WDMA_ISSUE_NUM_MASK (0x7 << EXYNOS3250_WDMA_ISSUE_NUM_SHIFT) 627*4882a593Smuzhiyun #define EXYNOS3250_RDMA_ISSUE_NUM_SHIFT 8 628*4882a593Smuzhiyun #define EXYNOS3250_RDMA_ISSUE_NUM_MASK (0x7 << EXYNOS3250_RDMA_ISSUE_NUM_SHIFT) 629*4882a593Smuzhiyun #define EXYNOS3250_ISSUE_GATHER_NUM_SHIFT 0 630*4882a593Smuzhiyun #define EXYNOS3250_ISSUE_GATHER_NUM_MASK (0x7 << EXYNOS3250_ISSUE_GATHER_NUM_SHIFT) 631*4882a593Smuzhiyun #define EXYNOS3250_DMA_MO_COUNT 0x7 632*4882a593Smuzhiyun 633*4882a593Smuzhiyun /* Version register */ 634*4882a593Smuzhiyun #define EXYNOS3250_VERSION 0x1fc 635*4882a593Smuzhiyun 636*4882a593Smuzhiyun /* RGB <-> YUV conversion coefficients */ 637*4882a593Smuzhiyun #define EXYNOS3250_JPEG_ENC_COEF1 0x01352e1e 638*4882a593Smuzhiyun #define EXYNOS3250_JPEG_ENC_COEF2 0x00b0ae83 639*4882a593Smuzhiyun #define EXYNOS3250_JPEG_ENC_COEF3 0x020cdc13 640*4882a593Smuzhiyun 641*4882a593Smuzhiyun #define EXYNOS3250_JPEG_DEC_COEF1 0x04a80199 642*4882a593Smuzhiyun #define EXYNOS3250_JPEG_DEC_COEF2 0x04a9a064 643*4882a593Smuzhiyun #define EXYNOS3250_JPEG_DEC_COEF3 0x04a80102 644*4882a593Smuzhiyun 645*4882a593Smuzhiyun #endif /* JPEG_REGS_H_ */ 646*4882a593Smuzhiyun 647