1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* drivers/gpu/drm/exynos/regs-fimc.h 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (c) 2012 Samsung Electronics Co., Ltd. 5*4882a593Smuzhiyun * http://www.samsung.com/ 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Register definition file for Samsung Camera Interface (FIMC) driver 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef EXYNOS_REGS_FIMC_H 11*4882a593Smuzhiyun #define EXYNOS_REGS_FIMC_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* 14*4882a593Smuzhiyun * Register part 15*4882a593Smuzhiyun */ 16*4882a593Smuzhiyun /* Input source format */ 17*4882a593Smuzhiyun #define EXYNOS_CISRCFMT (0x00) 18*4882a593Smuzhiyun /* Window offset */ 19*4882a593Smuzhiyun #define EXYNOS_CIWDOFST (0x04) 20*4882a593Smuzhiyun /* Global control */ 21*4882a593Smuzhiyun #define EXYNOS_CIGCTRL (0x08) 22*4882a593Smuzhiyun /* Window offset 2 */ 23*4882a593Smuzhiyun #define EXYNOS_CIWDOFST2 (0x14) 24*4882a593Smuzhiyun /* Y 1st frame start address for output DMA */ 25*4882a593Smuzhiyun #define EXYNOS_CIOYSA1 (0x18) 26*4882a593Smuzhiyun /* Y 2nd frame start address for output DMA */ 27*4882a593Smuzhiyun #define EXYNOS_CIOYSA2 (0x1c) 28*4882a593Smuzhiyun /* Y 3rd frame start address for output DMA */ 29*4882a593Smuzhiyun #define EXYNOS_CIOYSA3 (0x20) 30*4882a593Smuzhiyun /* Y 4th frame start address for output DMA */ 31*4882a593Smuzhiyun #define EXYNOS_CIOYSA4 (0x24) 32*4882a593Smuzhiyun /* Cb 1st frame start address for output DMA */ 33*4882a593Smuzhiyun #define EXYNOS_CIOCBSA1 (0x28) 34*4882a593Smuzhiyun /* Cb 2nd frame start address for output DMA */ 35*4882a593Smuzhiyun #define EXYNOS_CIOCBSA2 (0x2c) 36*4882a593Smuzhiyun /* Cb 3rd frame start address for output DMA */ 37*4882a593Smuzhiyun #define EXYNOS_CIOCBSA3 (0x30) 38*4882a593Smuzhiyun /* Cb 4th frame start address for output DMA */ 39*4882a593Smuzhiyun #define EXYNOS_CIOCBSA4 (0x34) 40*4882a593Smuzhiyun /* Cr 1st frame start address for output DMA */ 41*4882a593Smuzhiyun #define EXYNOS_CIOCRSA1 (0x38) 42*4882a593Smuzhiyun /* Cr 2nd frame start address for output DMA */ 43*4882a593Smuzhiyun #define EXYNOS_CIOCRSA2 (0x3c) 44*4882a593Smuzhiyun /* Cr 3rd frame start address for output DMA */ 45*4882a593Smuzhiyun #define EXYNOS_CIOCRSA3 (0x40) 46*4882a593Smuzhiyun /* Cr 4th frame start address for output DMA */ 47*4882a593Smuzhiyun #define EXYNOS_CIOCRSA4 (0x44) 48*4882a593Smuzhiyun /* Target image format */ 49*4882a593Smuzhiyun #define EXYNOS_CITRGFMT (0x48) 50*4882a593Smuzhiyun /* Output DMA control */ 51*4882a593Smuzhiyun #define EXYNOS_CIOCTRL (0x4c) 52*4882a593Smuzhiyun /* Pre-scaler control 1 */ 53*4882a593Smuzhiyun #define EXYNOS_CISCPRERATIO (0x50) 54*4882a593Smuzhiyun /* Pre-scaler control 2 */ 55*4882a593Smuzhiyun #define EXYNOS_CISCPREDST (0x54) 56*4882a593Smuzhiyun /* Main scaler control */ 57*4882a593Smuzhiyun #define EXYNOS_CISCCTRL (0x58) 58*4882a593Smuzhiyun /* Target area */ 59*4882a593Smuzhiyun #define EXYNOS_CITAREA (0x5c) 60*4882a593Smuzhiyun /* Status */ 61*4882a593Smuzhiyun #define EXYNOS_CISTATUS (0x64) 62*4882a593Smuzhiyun /* Status2 */ 63*4882a593Smuzhiyun #define EXYNOS_CISTATUS2 (0x68) 64*4882a593Smuzhiyun /* Image capture enable command */ 65*4882a593Smuzhiyun #define EXYNOS_CIIMGCPT (0xc0) 66*4882a593Smuzhiyun /* Capture sequence */ 67*4882a593Smuzhiyun #define EXYNOS_CICPTSEQ (0xc4) 68*4882a593Smuzhiyun /* Image effects */ 69*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF (0xd0) 70*4882a593Smuzhiyun /* Y frame start address for input DMA */ 71*4882a593Smuzhiyun #define EXYNOS_CIIYSA0 (0xd4) 72*4882a593Smuzhiyun /* Cb frame start address for input DMA */ 73*4882a593Smuzhiyun #define EXYNOS_CIICBSA0 (0xd8) 74*4882a593Smuzhiyun /* Cr frame start address for input DMA */ 75*4882a593Smuzhiyun #define EXYNOS_CIICRSA0 (0xdc) 76*4882a593Smuzhiyun /* Input DMA Y Line Skip */ 77*4882a593Smuzhiyun #define EXYNOS_CIILINESKIP_Y (0xec) 78*4882a593Smuzhiyun /* Input DMA Cb Line Skip */ 79*4882a593Smuzhiyun #define EXYNOS_CIILINESKIP_CB (0xf0) 80*4882a593Smuzhiyun /* Input DMA Cr Line Skip */ 81*4882a593Smuzhiyun #define EXYNOS_CIILINESKIP_CR (0xf4) 82*4882a593Smuzhiyun /* Real input DMA image size */ 83*4882a593Smuzhiyun #define EXYNOS_CIREAL_ISIZE (0xf8) 84*4882a593Smuzhiyun /* Input DMA control */ 85*4882a593Smuzhiyun #define EXYNOS_MSCTRL (0xfc) 86*4882a593Smuzhiyun /* Y frame start address for input DMA */ 87*4882a593Smuzhiyun #define EXYNOS_CIIYSA1 (0x144) 88*4882a593Smuzhiyun /* Cb frame start address for input DMA */ 89*4882a593Smuzhiyun #define EXYNOS_CIICBSA1 (0x148) 90*4882a593Smuzhiyun /* Cr frame start address for input DMA */ 91*4882a593Smuzhiyun #define EXYNOS_CIICRSA1 (0x14c) 92*4882a593Smuzhiyun /* Output DMA Y offset */ 93*4882a593Smuzhiyun #define EXYNOS_CIOYOFF (0x168) 94*4882a593Smuzhiyun /* Output DMA CB offset */ 95*4882a593Smuzhiyun #define EXYNOS_CIOCBOFF (0x16c) 96*4882a593Smuzhiyun /* Output DMA CR offset */ 97*4882a593Smuzhiyun #define EXYNOS_CIOCROFF (0x170) 98*4882a593Smuzhiyun /* Input DMA Y offset */ 99*4882a593Smuzhiyun #define EXYNOS_CIIYOFF (0x174) 100*4882a593Smuzhiyun /* Input DMA CB offset */ 101*4882a593Smuzhiyun #define EXYNOS_CIICBOFF (0x178) 102*4882a593Smuzhiyun /* Input DMA CR offset */ 103*4882a593Smuzhiyun #define EXYNOS_CIICROFF (0x17c) 104*4882a593Smuzhiyun /* Input DMA original image size */ 105*4882a593Smuzhiyun #define EXYNOS_ORGISIZE (0x180) 106*4882a593Smuzhiyun /* Output DMA original image size */ 107*4882a593Smuzhiyun #define EXYNOS_ORGOSIZE (0x184) 108*4882a593Smuzhiyun /* Real output DMA image size */ 109*4882a593Smuzhiyun #define EXYNOS_CIEXTEN (0x188) 110*4882a593Smuzhiyun /* DMA parameter */ 111*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM (0x18c) 112*4882a593Smuzhiyun /* MIPI CSI image format */ 113*4882a593Smuzhiyun #define EXYNOS_CSIIMGFMT (0x194) 114*4882a593Smuzhiyun /* FIMC Clock Source Select */ 115*4882a593Smuzhiyun #define EXYNOS_MISC_FIMC (0x198) 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /* Add for FIMC v5.1 */ 118*4882a593Smuzhiyun /* Output Frame Buffer Sequence */ 119*4882a593Smuzhiyun #define EXYNOS_CIFCNTSEQ (0x1fc) 120*4882a593Smuzhiyun /* Y 5th frame start address for output DMA */ 121*4882a593Smuzhiyun #define EXYNOS_CIOYSA5 (0x200) 122*4882a593Smuzhiyun /* Y 6th frame start address for output DMA */ 123*4882a593Smuzhiyun #define EXYNOS_CIOYSA6 (0x204) 124*4882a593Smuzhiyun /* Y 7th frame start address for output DMA */ 125*4882a593Smuzhiyun #define EXYNOS_CIOYSA7 (0x208) 126*4882a593Smuzhiyun /* Y 8th frame start address for output DMA */ 127*4882a593Smuzhiyun #define EXYNOS_CIOYSA8 (0x20c) 128*4882a593Smuzhiyun /* Y 9th frame start address for output DMA */ 129*4882a593Smuzhiyun #define EXYNOS_CIOYSA9 (0x210) 130*4882a593Smuzhiyun /* Y 10th frame start address for output DMA */ 131*4882a593Smuzhiyun #define EXYNOS_CIOYSA10 (0x214) 132*4882a593Smuzhiyun /* Y 11th frame start address for output DMA */ 133*4882a593Smuzhiyun #define EXYNOS_CIOYSA11 (0x218) 134*4882a593Smuzhiyun /* Y 12th frame start address for output DMA */ 135*4882a593Smuzhiyun #define EXYNOS_CIOYSA12 (0x21c) 136*4882a593Smuzhiyun /* Y 13th frame start address for output DMA */ 137*4882a593Smuzhiyun #define EXYNOS_CIOYSA13 (0x220) 138*4882a593Smuzhiyun /* Y 14th frame start address for output DMA */ 139*4882a593Smuzhiyun #define EXYNOS_CIOYSA14 (0x224) 140*4882a593Smuzhiyun /* Y 15th frame start address for output DMA */ 141*4882a593Smuzhiyun #define EXYNOS_CIOYSA15 (0x228) 142*4882a593Smuzhiyun /* Y 16th frame start address for output DMA */ 143*4882a593Smuzhiyun #define EXYNOS_CIOYSA16 (0x22c) 144*4882a593Smuzhiyun /* Y 17th frame start address for output DMA */ 145*4882a593Smuzhiyun #define EXYNOS_CIOYSA17 (0x230) 146*4882a593Smuzhiyun /* Y 18th frame start address for output DMA */ 147*4882a593Smuzhiyun #define EXYNOS_CIOYSA18 (0x234) 148*4882a593Smuzhiyun /* Y 19th frame start address for output DMA */ 149*4882a593Smuzhiyun #define EXYNOS_CIOYSA19 (0x238) 150*4882a593Smuzhiyun /* Y 20th frame start address for output DMA */ 151*4882a593Smuzhiyun #define EXYNOS_CIOYSA20 (0x23c) 152*4882a593Smuzhiyun /* Y 21th frame start address for output DMA */ 153*4882a593Smuzhiyun #define EXYNOS_CIOYSA21 (0x240) 154*4882a593Smuzhiyun /* Y 22th frame start address for output DMA */ 155*4882a593Smuzhiyun #define EXYNOS_CIOYSA22 (0x244) 156*4882a593Smuzhiyun /* Y 23th frame start address for output DMA */ 157*4882a593Smuzhiyun #define EXYNOS_CIOYSA23 (0x248) 158*4882a593Smuzhiyun /* Y 24th frame start address for output DMA */ 159*4882a593Smuzhiyun #define EXYNOS_CIOYSA24 (0x24c) 160*4882a593Smuzhiyun /* Y 25th frame start address for output DMA */ 161*4882a593Smuzhiyun #define EXYNOS_CIOYSA25 (0x250) 162*4882a593Smuzhiyun /* Y 26th frame start address for output DMA */ 163*4882a593Smuzhiyun #define EXYNOS_CIOYSA26 (0x254) 164*4882a593Smuzhiyun /* Y 27th frame start address for output DMA */ 165*4882a593Smuzhiyun #define EXYNOS_CIOYSA27 (0x258) 166*4882a593Smuzhiyun /* Y 28th frame start address for output DMA */ 167*4882a593Smuzhiyun #define EXYNOS_CIOYSA28 (0x25c) 168*4882a593Smuzhiyun /* Y 29th frame start address for output DMA */ 169*4882a593Smuzhiyun #define EXYNOS_CIOYSA29 (0x260) 170*4882a593Smuzhiyun /* Y 30th frame start address for output DMA */ 171*4882a593Smuzhiyun #define EXYNOS_CIOYSA30 (0x264) 172*4882a593Smuzhiyun /* Y 31th frame start address for output DMA */ 173*4882a593Smuzhiyun #define EXYNOS_CIOYSA31 (0x268) 174*4882a593Smuzhiyun /* Y 32th frame start address for output DMA */ 175*4882a593Smuzhiyun #define EXYNOS_CIOYSA32 (0x26c) 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun /* CB 5th frame start address for output DMA */ 178*4882a593Smuzhiyun #define EXYNOS_CIOCBSA5 (0x270) 179*4882a593Smuzhiyun /* CB 6th frame start address for output DMA */ 180*4882a593Smuzhiyun #define EXYNOS_CIOCBSA6 (0x274) 181*4882a593Smuzhiyun /* CB 7th frame start address for output DMA */ 182*4882a593Smuzhiyun #define EXYNOS_CIOCBSA7 (0x278) 183*4882a593Smuzhiyun /* CB 8th frame start address for output DMA */ 184*4882a593Smuzhiyun #define EXYNOS_CIOCBSA8 (0x27c) 185*4882a593Smuzhiyun /* CB 9th frame start address for output DMA */ 186*4882a593Smuzhiyun #define EXYNOS_CIOCBSA9 (0x280) 187*4882a593Smuzhiyun /* CB 10th frame start address for output DMA */ 188*4882a593Smuzhiyun #define EXYNOS_CIOCBSA10 (0x284) 189*4882a593Smuzhiyun /* CB 11th frame start address for output DMA */ 190*4882a593Smuzhiyun #define EXYNOS_CIOCBSA11 (0x288) 191*4882a593Smuzhiyun /* CB 12th frame start address for output DMA */ 192*4882a593Smuzhiyun #define EXYNOS_CIOCBSA12 (0x28c) 193*4882a593Smuzhiyun /* CB 13th frame start address for output DMA */ 194*4882a593Smuzhiyun #define EXYNOS_CIOCBSA13 (0x290) 195*4882a593Smuzhiyun /* CB 14th frame start address for output DMA */ 196*4882a593Smuzhiyun #define EXYNOS_CIOCBSA14 (0x294) 197*4882a593Smuzhiyun /* CB 15th frame start address for output DMA */ 198*4882a593Smuzhiyun #define EXYNOS_CIOCBSA15 (0x298) 199*4882a593Smuzhiyun /* CB 16th frame start address for output DMA */ 200*4882a593Smuzhiyun #define EXYNOS_CIOCBSA16 (0x29c) 201*4882a593Smuzhiyun /* CB 17th frame start address for output DMA */ 202*4882a593Smuzhiyun #define EXYNOS_CIOCBSA17 (0x2a0) 203*4882a593Smuzhiyun /* CB 18th frame start address for output DMA */ 204*4882a593Smuzhiyun #define EXYNOS_CIOCBSA18 (0x2a4) 205*4882a593Smuzhiyun /* CB 19th frame start address for output DMA */ 206*4882a593Smuzhiyun #define EXYNOS_CIOCBSA19 (0x2a8) 207*4882a593Smuzhiyun /* CB 20th frame start address for output DMA */ 208*4882a593Smuzhiyun #define EXYNOS_CIOCBSA20 (0x2ac) 209*4882a593Smuzhiyun /* CB 21th frame start address for output DMA */ 210*4882a593Smuzhiyun #define EXYNOS_CIOCBSA21 (0x2b0) 211*4882a593Smuzhiyun /* CB 22th frame start address for output DMA */ 212*4882a593Smuzhiyun #define EXYNOS_CIOCBSA22 (0x2b4) 213*4882a593Smuzhiyun /* CB 23th frame start address for output DMA */ 214*4882a593Smuzhiyun #define EXYNOS_CIOCBSA23 (0x2b8) 215*4882a593Smuzhiyun /* CB 24th frame start address for output DMA */ 216*4882a593Smuzhiyun #define EXYNOS_CIOCBSA24 (0x2bc) 217*4882a593Smuzhiyun /* CB 25th frame start address for output DMA */ 218*4882a593Smuzhiyun #define EXYNOS_CIOCBSA25 (0x2c0) 219*4882a593Smuzhiyun /* CB 26th frame start address for output DMA */ 220*4882a593Smuzhiyun #define EXYNOS_CIOCBSA26 (0x2c4) 221*4882a593Smuzhiyun /* CB 27th frame start address for output DMA */ 222*4882a593Smuzhiyun #define EXYNOS_CIOCBSA27 (0x2c8) 223*4882a593Smuzhiyun /* CB 28th frame start address for output DMA */ 224*4882a593Smuzhiyun #define EXYNOS_CIOCBSA28 (0x2cc) 225*4882a593Smuzhiyun /* CB 29th frame start address for output DMA */ 226*4882a593Smuzhiyun #define EXYNOS_CIOCBSA29 (0x2d0) 227*4882a593Smuzhiyun /* CB 30th frame start address for output DMA */ 228*4882a593Smuzhiyun #define EXYNOS_CIOCBSA30 (0x2d4) 229*4882a593Smuzhiyun /* CB 31th frame start address for output DMA */ 230*4882a593Smuzhiyun #define EXYNOS_CIOCBSA31 (0x2d8) 231*4882a593Smuzhiyun /* CB 32th frame start address for output DMA */ 232*4882a593Smuzhiyun #define EXYNOS_CIOCBSA32 (0x2dc) 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun /* CR 5th frame start address for output DMA */ 235*4882a593Smuzhiyun #define EXYNOS_CIOCRSA5 (0x2e0) 236*4882a593Smuzhiyun /* CR 6th frame start address for output DMA */ 237*4882a593Smuzhiyun #define EXYNOS_CIOCRSA6 (0x2e4) 238*4882a593Smuzhiyun /* CR 7th frame start address for output DMA */ 239*4882a593Smuzhiyun #define EXYNOS_CIOCRSA7 (0x2e8) 240*4882a593Smuzhiyun /* CR 8th frame start address for output DMA */ 241*4882a593Smuzhiyun #define EXYNOS_CIOCRSA8 (0x2ec) 242*4882a593Smuzhiyun /* CR 9th frame start address for output DMA */ 243*4882a593Smuzhiyun #define EXYNOS_CIOCRSA9 (0x2f0) 244*4882a593Smuzhiyun /* CR 10th frame start address for output DMA */ 245*4882a593Smuzhiyun #define EXYNOS_CIOCRSA10 (0x2f4) 246*4882a593Smuzhiyun /* CR 11th frame start address for output DMA */ 247*4882a593Smuzhiyun #define EXYNOS_CIOCRSA11 (0x2f8) 248*4882a593Smuzhiyun /* CR 12th frame start address for output DMA */ 249*4882a593Smuzhiyun #define EXYNOS_CIOCRSA12 (0x2fc) 250*4882a593Smuzhiyun /* CR 13th frame start address for output DMA */ 251*4882a593Smuzhiyun #define EXYNOS_CIOCRSA13 (0x300) 252*4882a593Smuzhiyun /* CR 14th frame start address for output DMA */ 253*4882a593Smuzhiyun #define EXYNOS_CIOCRSA14 (0x304) 254*4882a593Smuzhiyun /* CR 15th frame start address for output DMA */ 255*4882a593Smuzhiyun #define EXYNOS_CIOCRSA15 (0x308) 256*4882a593Smuzhiyun /* CR 16th frame start address for output DMA */ 257*4882a593Smuzhiyun #define EXYNOS_CIOCRSA16 (0x30c) 258*4882a593Smuzhiyun /* CR 17th frame start address for output DMA */ 259*4882a593Smuzhiyun #define EXYNOS_CIOCRSA17 (0x310) 260*4882a593Smuzhiyun /* CR 18th frame start address for output DMA */ 261*4882a593Smuzhiyun #define EXYNOS_CIOCRSA18 (0x314) 262*4882a593Smuzhiyun /* CR 19th frame start address for output DMA */ 263*4882a593Smuzhiyun #define EXYNOS_CIOCRSA19 (0x318) 264*4882a593Smuzhiyun /* CR 20th frame start address for output DMA */ 265*4882a593Smuzhiyun #define EXYNOS_CIOCRSA20 (0x31c) 266*4882a593Smuzhiyun /* CR 21th frame start address for output DMA */ 267*4882a593Smuzhiyun #define EXYNOS_CIOCRSA21 (0x320) 268*4882a593Smuzhiyun /* CR 22th frame start address for output DMA */ 269*4882a593Smuzhiyun #define EXYNOS_CIOCRSA22 (0x324) 270*4882a593Smuzhiyun /* CR 23th frame start address for output DMA */ 271*4882a593Smuzhiyun #define EXYNOS_CIOCRSA23 (0x328) 272*4882a593Smuzhiyun /* CR 24th frame start address for output DMA */ 273*4882a593Smuzhiyun #define EXYNOS_CIOCRSA24 (0x32c) 274*4882a593Smuzhiyun /* CR 25th frame start address for output DMA */ 275*4882a593Smuzhiyun #define EXYNOS_CIOCRSA25 (0x330) 276*4882a593Smuzhiyun /* CR 26th frame start address for output DMA */ 277*4882a593Smuzhiyun #define EXYNOS_CIOCRSA26 (0x334) 278*4882a593Smuzhiyun /* CR 27th frame start address for output DMA */ 279*4882a593Smuzhiyun #define EXYNOS_CIOCRSA27 (0x338) 280*4882a593Smuzhiyun /* CR 28th frame start address for output DMA */ 281*4882a593Smuzhiyun #define EXYNOS_CIOCRSA28 (0x33c) 282*4882a593Smuzhiyun /* CR 29th frame start address for output DMA */ 283*4882a593Smuzhiyun #define EXYNOS_CIOCRSA29 (0x340) 284*4882a593Smuzhiyun /* CR 30th frame start address for output DMA */ 285*4882a593Smuzhiyun #define EXYNOS_CIOCRSA30 (0x344) 286*4882a593Smuzhiyun /* CR 31th frame start address for output DMA */ 287*4882a593Smuzhiyun #define EXYNOS_CIOCRSA31 (0x348) 288*4882a593Smuzhiyun /* CR 32th frame start address for output DMA */ 289*4882a593Smuzhiyun #define EXYNOS_CIOCRSA32 (0x34c) 290*4882a593Smuzhiyun 291*4882a593Smuzhiyun /* 292*4882a593Smuzhiyun * Macro part 293*4882a593Smuzhiyun */ 294*4882a593Smuzhiyun /* frame start address 1 ~ 4, 5 ~ 32 */ 295*4882a593Smuzhiyun /* Number of Default PingPong Memory */ 296*4882a593Smuzhiyun #define DEF_PP 4 297*4882a593Smuzhiyun #define EXYNOS_CIOYSA(__x) \ 298*4882a593Smuzhiyun (((__x) < DEF_PP) ? \ 299*4882a593Smuzhiyun (EXYNOS_CIOYSA1 + (__x) * 4) : \ 300*4882a593Smuzhiyun (EXYNOS_CIOYSA5 + ((__x) - DEF_PP) * 4)) 301*4882a593Smuzhiyun #define EXYNOS_CIOCBSA(__x) \ 302*4882a593Smuzhiyun (((__x) < DEF_PP) ? \ 303*4882a593Smuzhiyun (EXYNOS_CIOCBSA1 + (__x) * 4) : \ 304*4882a593Smuzhiyun (EXYNOS_CIOCBSA5 + ((__x) - DEF_PP) * 4)) 305*4882a593Smuzhiyun #define EXYNOS_CIOCRSA(__x) \ 306*4882a593Smuzhiyun (((__x) < DEF_PP) ? \ 307*4882a593Smuzhiyun (EXYNOS_CIOCRSA1 + (__x) * 4) : \ 308*4882a593Smuzhiyun (EXYNOS_CIOCRSA5 + ((__x) - DEF_PP) * 4)) 309*4882a593Smuzhiyun /* Number of Default PingPong Memory */ 310*4882a593Smuzhiyun #define DEF_IPP 1 311*4882a593Smuzhiyun #define EXYNOS_CIIYSA(__x) \ 312*4882a593Smuzhiyun (((__x) < DEF_IPP) ? \ 313*4882a593Smuzhiyun (EXYNOS_CIIYSA0) : (EXYNOS_CIIYSA1)) 314*4882a593Smuzhiyun #define EXYNOS_CIICBSA(__x) \ 315*4882a593Smuzhiyun (((__x) < DEF_IPP) ? \ 316*4882a593Smuzhiyun (EXYNOS_CIICBSA0) : (EXYNOS_CIICBSA1)) 317*4882a593Smuzhiyun #define EXYNOS_CIICRSA(__x) \ 318*4882a593Smuzhiyun (((__x) < DEF_IPP) ? \ 319*4882a593Smuzhiyun (EXYNOS_CIICRSA0) : (EXYNOS_CIICRSA1)) 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_SOURCEHSIZE(x) ((x) << 16) 322*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_SOURCEVSIZE(x) ((x) << 0) 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_WINHOROFST(x) ((x) << 16) 325*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_WINVEROFST(x) ((x) << 0) 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun #define EXYNOS_CIWDOFST2_WINHOROFST2(x) ((x) << 16) 328*4882a593Smuzhiyun #define EXYNOS_CIWDOFST2_WINVEROFST2(x) ((x) << 0) 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_TARGETHSIZE(x) (((x) & 0x1fff) << 16) 331*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_TARGETVSIZE(x) (((x) & 0x1fff) << 0) 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun #define EXYNOS_CISCPRERATIO_SHFACTOR(x) ((x) << 28) 334*4882a593Smuzhiyun #define EXYNOS_CISCPRERATIO_PREHORRATIO(x) ((x) << 16) 335*4882a593Smuzhiyun #define EXYNOS_CISCPRERATIO_PREVERRATIO(x) ((x) << 0) 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun #define EXYNOS_CISCPREDST_PREDSTWIDTH(x) ((x) << 16) 338*4882a593Smuzhiyun #define EXYNOS_CISCPREDST_PREDSTHEIGHT(x) ((x) << 0) 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_MAINHORRATIO(x) ((x) << 16) 341*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_MAINVERRATIO(x) ((x) << 0) 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun #define EXYNOS_CITAREA_TARGET_AREA(x) ((x) << 0) 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun #define EXYNOS_CISTATUS_GET_FRAME_COUNT(x) (((x) >> 26) & 0x3) 346*4882a593Smuzhiyun #define EXYNOS_CISTATUS_GET_FRAME_END(x) (((x) >> 17) & 0x1) 347*4882a593Smuzhiyun #define EXYNOS_CISTATUS_GET_LAST_CAPTURE_END(x) (((x) >> 16) & 0x1) 348*4882a593Smuzhiyun #define EXYNOS_CISTATUS_GET_LCD_STATUS(x) (((x) >> 9) & 0x1) 349*4882a593Smuzhiyun #define EXYNOS_CISTATUS_GET_ENVID_STATUS(x) (((x) >> 8) & 0x1) 350*4882a593Smuzhiyun 351*4882a593Smuzhiyun #define EXYNOS_CISTATUS2_GET_FRAMECOUNT_BEFORE(x) (((x) >> 7) & 0x3f) 352*4882a593Smuzhiyun #define EXYNOS_CISTATUS2_GET_FRAMECOUNT_PRESENT(x) ((x) & 0x3f) 353*4882a593Smuzhiyun 354*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_FIN(x) ((x & 0x7) << 26) 355*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_PAT_CB(x) ((x) << 13) 356*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_PAT_CR(x) ((x) << 0) 357*4882a593Smuzhiyun 358*4882a593Smuzhiyun #define EXYNOS_CIILINESKIP(x) (((x) & 0xf) << 24) 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun #define EXYNOS_CIREAL_ISIZE_HEIGHT(x) ((x) << 16) 361*4882a593Smuzhiyun #define EXYNOS_CIREAL_ISIZE_WIDTH(x) ((x) << 0) 362*4882a593Smuzhiyun 363*4882a593Smuzhiyun #define EXYNOS_MSCTRL_SUCCESSIVE_COUNT(x) ((x) << 24) 364*4882a593Smuzhiyun #define EXYNOS_MSCTRL_GET_INDMA_STATUS(x) ((x) & 0x1) 365*4882a593Smuzhiyun 366*4882a593Smuzhiyun #define EXYNOS_CIOYOFF_VERTICAL(x) ((x) << 16) 367*4882a593Smuzhiyun #define EXYNOS_CIOYOFF_HORIZONTAL(x) ((x) << 0) 368*4882a593Smuzhiyun 369*4882a593Smuzhiyun #define EXYNOS_CIOCBOFF_VERTICAL(x) ((x) << 16) 370*4882a593Smuzhiyun #define EXYNOS_CIOCBOFF_HORIZONTAL(x) ((x) << 0) 371*4882a593Smuzhiyun 372*4882a593Smuzhiyun #define EXYNOS_CIOCROFF_VERTICAL(x) ((x) << 16) 373*4882a593Smuzhiyun #define EXYNOS_CIOCROFF_HORIZONTAL(x) ((x) << 0) 374*4882a593Smuzhiyun 375*4882a593Smuzhiyun #define EXYNOS_CIIYOFF_VERTICAL(x) ((x) << 16) 376*4882a593Smuzhiyun #define EXYNOS_CIIYOFF_HORIZONTAL(x) ((x) << 0) 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun #define EXYNOS_CIICBOFF_VERTICAL(x) ((x) << 16) 379*4882a593Smuzhiyun #define EXYNOS_CIICBOFF_HORIZONTAL(x) ((x) << 0) 380*4882a593Smuzhiyun 381*4882a593Smuzhiyun #define EXYNOS_CIICROFF_VERTICAL(x) ((x) << 16) 382*4882a593Smuzhiyun #define EXYNOS_CIICROFF_HORIZONTAL(x) ((x) << 0) 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun #define EXYNOS_ORGISIZE_VERTICAL(x) ((x) << 16) 385*4882a593Smuzhiyun #define EXYNOS_ORGISIZE_HORIZONTAL(x) ((x) << 0) 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun #define EXYNOS_ORGOSIZE_VERTICAL(x) ((x) << 16) 388*4882a593Smuzhiyun #define EXYNOS_ORGOSIZE_HORIZONTAL(x) ((x) << 0) 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun #define EXYNOS_CIEXTEN_TARGETH_EXT(x) ((((x) & 0x2000) >> 13) << 26) 391*4882a593Smuzhiyun #define EXYNOS_CIEXTEN_TARGETV_EXT(x) ((((x) & 0x2000) >> 13) << 24) 392*4882a593Smuzhiyun #define EXYNOS_CIEXTEN_MAINHORRATIO_EXT(x) (((x) & 0x3F) << 10) 393*4882a593Smuzhiyun #define EXYNOS_CIEXTEN_MAINVERRATIO_EXT(x) ((x) & 0x3F) 394*4882a593Smuzhiyun 395*4882a593Smuzhiyun /* 396*4882a593Smuzhiyun * Bit definition part 397*4882a593Smuzhiyun */ 398*4882a593Smuzhiyun /* Source format register */ 399*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_ITU601_8BIT (1 << 31) 400*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_ITU656_8BIT (0 << 31) 401*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_ITU601_16BIT (1 << 29) 402*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_ORDER422_YCBYCR (0 << 14) 403*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_ORDER422_YCRYCB (1 << 14) 404*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_ORDER422_CBYCRY (2 << 14) 405*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_ORDER422_CRYCBY (3 << 14) 406*4882a593Smuzhiyun /* ITU601 16bit only */ 407*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_ORDER422_Y4CBCRCBCR (0 << 14) 408*4882a593Smuzhiyun /* ITU601 16bit only */ 409*4882a593Smuzhiyun #define EXYNOS_CISRCFMT_ORDER422_Y4CRCBCRCB (1 << 14) 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun /* Window offset register */ 412*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_WINOFSEN (1 << 31) 413*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_CLROVFIY (1 << 30) 414*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_CLROVRLB (1 << 29) 415*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_WINHOROFST_MASK (0x7ff << 16) 416*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_CLROVFICB (1 << 15) 417*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_CLROVFICR (1 << 14) 418*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_WINVEROFST_MASK (0xfff << 0) 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun /* Global control register */ 421*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SWRST (1 << 31) 422*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_CAMRST_A (1 << 30) 423*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELCAM_ITU_B (0 << 29) 424*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELCAM_ITU_A (1 << 29) 425*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELCAM_ITU_MASK (1 << 29) 426*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_TESTPATTERN_NORMAL (0 << 27) 427*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_TESTPATTERN_COLOR_BAR (1 << 27) 428*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_TESTPATTERN_HOR_INC (2 << 27) 429*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_TESTPATTERN_VER_INC (3 << 27) 430*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_TESTPATTERN_MASK (3 << 27) 431*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_TESTPATTERN_SHIFT (27) 432*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_INVPOLPCLK (1 << 26) 433*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_INVPOLVSYNC (1 << 25) 434*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_INVPOLHREF (1 << 24) 435*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_IRQ_OVFEN (1 << 22) 436*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_HREF_MASK (1 << 21) 437*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_IRQ_EDGE (0 << 20) 438*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_IRQ_LEVEL (1 << 20) 439*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_IRQ_CLR (1 << 19) 440*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_IRQ_END_DISABLE (1 << 18) 441*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_IRQ_DISABLE (0 << 16) 442*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_IRQ_ENABLE (1 << 16) 443*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SHADOW_DISABLE (1 << 12) 444*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_CAM_JPEG (1 << 8) 445*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELCAM_MIPI_B (0 << 7) 446*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELCAM_MIPI_A (1 << 7) 447*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELCAM_MIPI_MASK (1 << 7) 448*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELWB_CAMIF_CAMERA (0 << 6) 449*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELWB_CAMIF_WRITEBACK (1 << 6) 450*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELWRITEBACK_MASK (1 << 10) 451*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELWRITEBACK_A (1 << 10) 452*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELWRITEBACK_B (0 << 10) 453*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELWB_CAMIF_MASK (1 << 6) 454*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_CSC_ITU601 (0 << 5) 455*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_CSC_ITU709 (1 << 5) 456*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_CSC_MASK (1 << 5) 457*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_INVPOLHSYNC (1 << 4) 458*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELCAM_FIMC_ITU (0 << 3) 459*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELCAM_FIMC_MIPI (1 << 3) 460*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_SELCAM_FIMC_MASK (1 << 3) 461*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_PROGRESSIVE (0 << 0) 462*4882a593Smuzhiyun #define EXYNOS_CIGCTRL_INTERLACE (1 << 0) 463*4882a593Smuzhiyun 464*4882a593Smuzhiyun /* Window offset2 register */ 465*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_WINHOROFST2_MASK (0xfff << 16) 466*4882a593Smuzhiyun #define EXYNOS_CIWDOFST_WINVEROFST2_MASK (0xfff << 16) 467*4882a593Smuzhiyun 468*4882a593Smuzhiyun /* Target format register */ 469*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_INROT90_CLOCKWISE (1 << 31) 470*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_OUTFORMAT_YCBCR420 (0 << 29) 471*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_OUTFORMAT_YCBCR422 (1 << 29) 472*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_OUTFORMAT_YCBCR422_1PLANE (2 << 29) 473*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_OUTFORMAT_RGB (3 << 29) 474*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_OUTFORMAT_MASK (3 << 29) 475*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_FLIP_SHIFT (14) 476*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_FLIP_NORMAL (0 << 14) 477*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_FLIP_X_MIRROR (1 << 14) 478*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_FLIP_Y_MIRROR (2 << 14) 479*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_FLIP_180 (3 << 14) 480*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_FLIP_MASK (3 << 14) 481*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_OUTROT90_CLOCKWISE (1 << 13) 482*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_TARGETV_MASK (0x1fff << 0) 483*4882a593Smuzhiyun #define EXYNOS_CITRGFMT_TARGETH_MASK (0x1fff << 16) 484*4882a593Smuzhiyun 485*4882a593Smuzhiyun /* Output DMA control register */ 486*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_WEAVE_OUT (1 << 31) 487*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_WEAVE_MASK (1 << 31) 488*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_LASTENDEN (1 << 30) 489*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER2P_LSB_CBCR (0 << 24) 490*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER2P_LSB_CRCB (1 << 24) 491*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER2P_MSB_CRCB (2 << 24) 492*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER2P_MSB_CBCR (3 << 24) 493*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER2P_SHIFT (24) 494*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER2P_MASK (3 << 24) 495*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_YCBCR_3PLANE (0 << 3) 496*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_YCBCR_2PLANE (1 << 3) 497*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_YCBCR_PLANE_MASK (1 << 3) 498*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_LASTIRQ_ENABLE (1 << 2) 499*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ALPHA_OUT (0xff << 4) 500*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER422_YCBYCR (0 << 0) 501*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER422_YCRYCB (1 << 0) 502*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER422_CBYCRY (2 << 0) 503*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER422_CRYCBY (3 << 0) 504*4882a593Smuzhiyun #define EXYNOS_CIOCTRL_ORDER422_MASK (3 << 0) 505*4882a593Smuzhiyun 506*4882a593Smuzhiyun /* Main scaler control register */ 507*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_SCALERBYPASS (1 << 31) 508*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_SCALEUP_H (1 << 30) 509*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_SCALEUP_V (1 << 29) 510*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_CSCR2Y_NARROW (0 << 28) 511*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_CSCR2Y_WIDE (1 << 28) 512*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_CSCY2R_NARROW (0 << 27) 513*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_CSCY2R_WIDE (1 << 27) 514*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_LCDPATHEN_FIFO (1 << 26) 515*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_PROGRESSIVE (0 << 25) 516*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_INTERLACE (1 << 25) 517*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_SCAN_MASK (1 << 25) 518*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_SCALERSTART (1 << 15) 519*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_INRGB_FMT_RGB565 (0 << 13) 520*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_INRGB_FMT_RGB666 (1 << 13) 521*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_INRGB_FMT_RGB888 (2 << 13) 522*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_INRGB_FMT_RGB_MASK (3 << 13) 523*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_OUTRGB_FMT_RGB565 (0 << 11) 524*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_OUTRGB_FMT_RGB666 (1 << 11) 525*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_OUTRGB_FMT_RGB888 (2 << 11) 526*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_OUTRGB_FMT_RGB_MASK (3 << 11) 527*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_EXTRGB_NORMAL (0 << 10) 528*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_EXTRGB_EXTENSION (1 << 10) 529*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_ONE2ONE (1 << 9) 530*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_MAIN_V_RATIO_MASK (0x1ff << 0) 531*4882a593Smuzhiyun #define EXYNOS_CISCCTRL_MAIN_H_RATIO_MASK (0x1ff << 16) 532*4882a593Smuzhiyun 533*4882a593Smuzhiyun /* Status register */ 534*4882a593Smuzhiyun #define EXYNOS_CISTATUS_OVFIY (1 << 31) 535*4882a593Smuzhiyun #define EXYNOS_CISTATUS_OVFICB (1 << 30) 536*4882a593Smuzhiyun #define EXYNOS_CISTATUS_OVFICR (1 << 29) 537*4882a593Smuzhiyun #define EXYNOS_CISTATUS_VSYNC (1 << 28) 538*4882a593Smuzhiyun #define EXYNOS_CISTATUS_SCALERSTART (1 << 26) 539*4882a593Smuzhiyun #define EXYNOS_CISTATUS_WINOFSTEN (1 << 25) 540*4882a593Smuzhiyun #define EXYNOS_CISTATUS_IMGCPTEN (1 << 22) 541*4882a593Smuzhiyun #define EXYNOS_CISTATUS_IMGCPTENSC (1 << 21) 542*4882a593Smuzhiyun #define EXYNOS_CISTATUS_VSYNC_A (1 << 20) 543*4882a593Smuzhiyun #define EXYNOS_CISTATUS_VSYNC_B (1 << 19) 544*4882a593Smuzhiyun #define EXYNOS_CISTATUS_OVRLB (1 << 18) 545*4882a593Smuzhiyun #define EXYNOS_CISTATUS_FRAMEEND (1 << 17) 546*4882a593Smuzhiyun #define EXYNOS_CISTATUS_LASTCAPTUREEND (1 << 16) 547*4882a593Smuzhiyun #define EXYNOS_CISTATUS_VVALID_A (1 << 15) 548*4882a593Smuzhiyun #define EXYNOS_CISTATUS_VVALID_B (1 << 14) 549*4882a593Smuzhiyun 550*4882a593Smuzhiyun /* Image capture enable register */ 551*4882a593Smuzhiyun #define EXYNOS_CIIMGCPT_IMGCPTEN (1 << 31) 552*4882a593Smuzhiyun #define EXYNOS_CIIMGCPT_IMGCPTEN_SC (1 << 30) 553*4882a593Smuzhiyun #define EXYNOS_CIIMGCPT_CPT_FREN_ENABLE (1 << 25) 554*4882a593Smuzhiyun #define EXYNOS_CIIMGCPT_CPT_FRMOD_EN (0 << 18) 555*4882a593Smuzhiyun #define EXYNOS_CIIMGCPT_CPT_FRMOD_CNT (1 << 18) 556*4882a593Smuzhiyun 557*4882a593Smuzhiyun /* Image effects register */ 558*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_IE_DISABLE (0 << 30) 559*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_IE_ENABLE (1 << 30) 560*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_IE_SC_BEFORE (0 << 29) 561*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_IE_SC_AFTER (1 << 29) 562*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_FIN_BYPASS (0 << 26) 563*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_FIN_ARBITRARY (1 << 26) 564*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_FIN_NEGATIVE (2 << 26) 565*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_FIN_ARTFREEZE (3 << 26) 566*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_FIN_EMBOSSING (4 << 26) 567*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_FIN_SILHOUETTE (5 << 26) 568*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_FIN_MASK (7 << 26) 569*4882a593Smuzhiyun #define EXYNOS_CIIMGEFF_PAT_CBCR_MASK ((0xff << 13) | (0xff << 0)) 570*4882a593Smuzhiyun 571*4882a593Smuzhiyun /* Real input DMA size register */ 572*4882a593Smuzhiyun #define EXYNOS_CIREAL_ISIZE_AUTOLOAD_ENABLE (1 << 31) 573*4882a593Smuzhiyun #define EXYNOS_CIREAL_ISIZE_ADDR_CH_DISABLE (1 << 30) 574*4882a593Smuzhiyun #define EXYNOS_CIREAL_ISIZE_HEIGHT_MASK (0x3FFF << 16) 575*4882a593Smuzhiyun #define EXYNOS_CIREAL_ISIZE_WIDTH_MASK (0x3FFF << 0) 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun /* Input DMA control register */ 578*4882a593Smuzhiyun #define EXYNOS_MSCTRL_FIELD_MASK (1 << 31) 579*4882a593Smuzhiyun #define EXYNOS_MSCTRL_FIELD_WEAVE (1 << 31) 580*4882a593Smuzhiyun #define EXYNOS_MSCTRL_FIELD_NORMAL (0 << 31) 581*4882a593Smuzhiyun #define EXYNOS_MSCTRL_BURST_CNT (24) 582*4882a593Smuzhiyun #define EXYNOS_MSCTRL_BURST_CNT_MASK (0xf << 24) 583*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER2P_LSB_CBCR (0 << 16) 584*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER2P_LSB_CRCB (1 << 16) 585*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER2P_MSB_CRCB (2 << 16) 586*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER2P_MSB_CBCR (3 << 16) 587*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER2P_SHIFT (16) 588*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER2P_SHIFT_MASK (0x3 << 16) 589*4882a593Smuzhiyun #define EXYNOS_MSCTRL_C_INT_IN_3PLANE (0 << 15) 590*4882a593Smuzhiyun #define EXYNOS_MSCTRL_C_INT_IN_2PLANE (1 << 15) 591*4882a593Smuzhiyun #define EXYNOS_MSCTRL_FLIP_SHIFT (13) 592*4882a593Smuzhiyun #define EXYNOS_MSCTRL_FLIP_NORMAL (0 << 13) 593*4882a593Smuzhiyun #define EXYNOS_MSCTRL_FLIP_X_MIRROR (1 << 13) 594*4882a593Smuzhiyun #define EXYNOS_MSCTRL_FLIP_Y_MIRROR (2 << 13) 595*4882a593Smuzhiyun #define EXYNOS_MSCTRL_FLIP_180 (3 << 13) 596*4882a593Smuzhiyun #define EXYNOS_MSCTRL_FLIP_MASK (3 << 13) 597*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER422_CRYCBY (0 << 4) 598*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER422_YCRYCB (1 << 4) 599*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER422_CBYCRY (2 << 4) 600*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ORDER422_YCBYCR (3 << 4) 601*4882a593Smuzhiyun #define EXYNOS_MSCTRL_INPUT_EXTCAM (0 << 3) 602*4882a593Smuzhiyun #define EXYNOS_MSCTRL_INPUT_MEMORY (1 << 3) 603*4882a593Smuzhiyun #define EXYNOS_MSCTRL_INPUT_MASK (1 << 3) 604*4882a593Smuzhiyun #define EXYNOS_MSCTRL_INFORMAT_YCBCR420 (0 << 1) 605*4882a593Smuzhiyun #define EXYNOS_MSCTRL_INFORMAT_YCBCR422 (1 << 1) 606*4882a593Smuzhiyun #define EXYNOS_MSCTRL_INFORMAT_YCBCR422_1PLANE (2 << 1) 607*4882a593Smuzhiyun #define EXYNOS_MSCTRL_INFORMAT_RGB (3 << 1) 608*4882a593Smuzhiyun #define EXYNOS_MSCTRL_ENVID (1 << 0) 609*4882a593Smuzhiyun 610*4882a593Smuzhiyun /* DMA parameter register */ 611*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_MODE_LINEAR (0 << 29) 612*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_MODE_CONFTILE (1 << 29) 613*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_MODE_16X16 (2 << 29) 614*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_MODE_64X32 (3 << 29) 615*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_MODE_MASK (3 << 29) 616*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_HSIZE_64 (0 << 24) 617*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_HSIZE_128 (1 << 24) 618*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_HSIZE_256 (2 << 24) 619*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_HSIZE_512 (3 << 24) 620*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_HSIZE_1024 (4 << 24) 621*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_HSIZE_2048 (5 << 24) 622*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_HSIZE_4096 (6 << 24) 623*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_VSIZE_1 (0 << 20) 624*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_VSIZE_2 (1 << 20) 625*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_VSIZE_4 (2 << 20) 626*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_VSIZE_8 (3 << 20) 627*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_VSIZE_16 (4 << 20) 628*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_R_TILE_VSIZE_32 (5 << 20) 629*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_MODE_LINEAR (0 << 13) 630*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_MODE_CONFTILE (1 << 13) 631*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_MODE_16X16 (2 << 13) 632*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_MODE_64X32 (3 << 13) 633*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_MODE_MASK (3 << 13) 634*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_HSIZE_64 (0 << 8) 635*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_HSIZE_128 (1 << 8) 636*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_HSIZE_256 (2 << 8) 637*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_HSIZE_512 (3 << 8) 638*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_HSIZE_1024 (4 << 8) 639*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_HSIZE_2048 (5 << 8) 640*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_HSIZE_4096 (6 << 8) 641*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_VSIZE_1 (0 << 4) 642*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_VSIZE_2 (1 << 4) 643*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_VSIZE_4 (2 << 4) 644*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_VSIZE_8 (3 << 4) 645*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_VSIZE_16 (4 << 4) 646*4882a593Smuzhiyun #define EXYNOS_CIDMAPARAM_W_TILE_VSIZE_32 (5 << 4) 647*4882a593Smuzhiyun 648*4882a593Smuzhiyun /* Gathering Extension register */ 649*4882a593Smuzhiyun #define EXYNOS_CIEXTEN_TARGETH_EXT_MASK (1 << 26) 650*4882a593Smuzhiyun #define EXYNOS_CIEXTEN_TARGETV_EXT_MASK (1 << 24) 651*4882a593Smuzhiyun #define EXYNOS_CIEXTEN_MAINHORRATIO_EXT_MASK (0x3F << 10) 652*4882a593Smuzhiyun #define EXYNOS_CIEXTEN_MAINVERRATIO_EXT_MASK (0x3F) 653*4882a593Smuzhiyun #define EXYNOS_CIEXTEN_YUV444_OUT (1 << 22) 654*4882a593Smuzhiyun 655*4882a593Smuzhiyun /* FIMC Clock Source Select register */ 656*4882a593Smuzhiyun #define EXYNOS_CLKSRC_HCLK (0 << 1) 657*4882a593Smuzhiyun #define EXYNOS_CLKSRC_HCLK_MASK (1 << 1) 658*4882a593Smuzhiyun #define EXYNOS_CLKSRC_SCLK (1 << 1) 659*4882a593Smuzhiyun 660*4882a593Smuzhiyun /* SYSREG for FIMC writeback */ 661*4882a593Smuzhiyun #define SYSREG_CAMERA_BLK (0x0218) 662*4882a593Smuzhiyun #define SYSREG_FIMD0WB_DEST_MASK (0x3 << 23) 663*4882a593Smuzhiyun #define SYSREG_FIMD0WB_DEST_SHIFT 23 664*4882a593Smuzhiyun 665*4882a593Smuzhiyun #endif /* EXYNOS_REGS_FIMC_H */ 666