1*77b55e8cSThomas Abraham /* 2*77b55e8cSThomas Abraham * (C) Copyright 2012 Samsung Electronics 3*77b55e8cSThomas Abraham * Donghwa Lee <dh09.lee@samsung.com> 4*77b55e8cSThomas Abraham * 5*77b55e8cSThomas Abraham * SPDX-License-Identifier: GPL-2.0+ 6*77b55e8cSThomas Abraham */ 7*77b55e8cSThomas Abraham 8*77b55e8cSThomas Abraham #ifndef __ASM_ARM_ARCH_FB_H_ 9*77b55e8cSThomas Abraham #define __ASM_ARM_ARCH_FB_H_ 10*77b55e8cSThomas Abraham 11*77b55e8cSThomas Abraham #ifndef __ASSEMBLY__ 12*77b55e8cSThomas Abraham struct exynos_fb { 13*77b55e8cSThomas Abraham unsigned int vidcon0; 14*77b55e8cSThomas Abraham unsigned int vidcon1; 15*77b55e8cSThomas Abraham unsigned int vidcon2; 16*77b55e8cSThomas Abraham unsigned int vidcon3; 17*77b55e8cSThomas Abraham unsigned int vidtcon0; 18*77b55e8cSThomas Abraham unsigned int vidtcon1; 19*77b55e8cSThomas Abraham unsigned int vidtcon2; 20*77b55e8cSThomas Abraham unsigned int vidtcon3; 21*77b55e8cSThomas Abraham unsigned int wincon0; 22*77b55e8cSThomas Abraham unsigned int wincon1; 23*77b55e8cSThomas Abraham unsigned int wincon2; 24*77b55e8cSThomas Abraham unsigned int wincon3; 25*77b55e8cSThomas Abraham unsigned int wincon4; 26*77b55e8cSThomas Abraham 27*77b55e8cSThomas Abraham unsigned int winshmap; 28*77b55e8cSThomas Abraham unsigned int res1; 29*77b55e8cSThomas Abraham 30*77b55e8cSThomas Abraham unsigned int winchmap2; 31*77b55e8cSThomas Abraham unsigned int vidosd0a; 32*77b55e8cSThomas Abraham unsigned int vidosd0b; 33*77b55e8cSThomas Abraham unsigned int vidosd0c; 34*77b55e8cSThomas Abraham unsigned int res2; 35*77b55e8cSThomas Abraham 36*77b55e8cSThomas Abraham unsigned int vidosd1a; 37*77b55e8cSThomas Abraham unsigned int vidosd1b; 38*77b55e8cSThomas Abraham unsigned int vidosd1c; 39*77b55e8cSThomas Abraham unsigned int vidosd1d; 40*77b55e8cSThomas Abraham 41*77b55e8cSThomas Abraham unsigned int vidosd2a; 42*77b55e8cSThomas Abraham unsigned int vidosd2b; 43*77b55e8cSThomas Abraham unsigned int vidosd2c; 44*77b55e8cSThomas Abraham unsigned int vidosd2d; 45*77b55e8cSThomas Abraham 46*77b55e8cSThomas Abraham unsigned int vidosd3a; 47*77b55e8cSThomas Abraham unsigned int vidosd3b; 48*77b55e8cSThomas Abraham unsigned int vidosd3c; 49*77b55e8cSThomas Abraham unsigned int res3; 50*77b55e8cSThomas Abraham 51*77b55e8cSThomas Abraham unsigned int vidosd4a; 52*77b55e8cSThomas Abraham unsigned int vidosd4b; 53*77b55e8cSThomas Abraham unsigned int vidosd4c; 54*77b55e8cSThomas Abraham unsigned int res4[5]; 55*77b55e8cSThomas Abraham 56*77b55e8cSThomas Abraham unsigned int vidw00add0b0; 57*77b55e8cSThomas Abraham unsigned int vidw00add0b1; 58*77b55e8cSThomas Abraham unsigned int vidw01add0b0; 59*77b55e8cSThomas Abraham unsigned int vidw01add0b1; 60*77b55e8cSThomas Abraham 61*77b55e8cSThomas Abraham unsigned int vidw02add0b0; 62*77b55e8cSThomas Abraham unsigned int vidw02add0b1; 63*77b55e8cSThomas Abraham unsigned int vidw03add0b0; 64*77b55e8cSThomas Abraham unsigned int vidw03add0b1; 65*77b55e8cSThomas Abraham unsigned int vidw04add0b0; 66*77b55e8cSThomas Abraham unsigned int vidw04add0b1; 67*77b55e8cSThomas Abraham unsigned int res5[2]; 68*77b55e8cSThomas Abraham 69*77b55e8cSThomas Abraham unsigned int vidw00add1b0; 70*77b55e8cSThomas Abraham unsigned int vidw00add1b1; 71*77b55e8cSThomas Abraham unsigned int vidw01add1b0; 72*77b55e8cSThomas Abraham unsigned int vidw01add1b1; 73*77b55e8cSThomas Abraham 74*77b55e8cSThomas Abraham unsigned int vidw02add1b0; 75*77b55e8cSThomas Abraham unsigned int vidw02add1b1; 76*77b55e8cSThomas Abraham unsigned int vidw03add1b0; 77*77b55e8cSThomas Abraham unsigned int vidw03add1b1; 78*77b55e8cSThomas Abraham 79*77b55e8cSThomas Abraham unsigned int vidw04add1b0; 80*77b55e8cSThomas Abraham unsigned int vidw04add1b1; 81*77b55e8cSThomas Abraham unsigned int res7[2]; 82*77b55e8cSThomas Abraham 83*77b55e8cSThomas Abraham unsigned int vidw00add2; 84*77b55e8cSThomas Abraham unsigned int vidw01add2; 85*77b55e8cSThomas Abraham unsigned int vidw02add2; 86*77b55e8cSThomas Abraham unsigned int vidw03add2; 87*77b55e8cSThomas Abraham unsigned int vidw04add2; 88*77b55e8cSThomas Abraham unsigned int res8[7]; 89*77b55e8cSThomas Abraham 90*77b55e8cSThomas Abraham unsigned int vidintcon0; 91*77b55e8cSThomas Abraham unsigned int vidintcon1; 92*77b55e8cSThomas Abraham unsigned int res9[1]; 93*77b55e8cSThomas Abraham 94*77b55e8cSThomas Abraham unsigned int w1keycon0; 95*77b55e8cSThomas Abraham unsigned int w1keycon1; 96*77b55e8cSThomas Abraham unsigned int w2keycon0; 97*77b55e8cSThomas Abraham unsigned int w2keycon1; 98*77b55e8cSThomas Abraham unsigned int w3keycon0; 99*77b55e8cSThomas Abraham unsigned int w3keycon1; 100*77b55e8cSThomas Abraham unsigned int w4keycon0; 101*77b55e8cSThomas Abraham unsigned int w4keycon1; 102*77b55e8cSThomas Abraham 103*77b55e8cSThomas Abraham unsigned int w1keyalpha; 104*77b55e8cSThomas Abraham unsigned int w2keyalpha; 105*77b55e8cSThomas Abraham unsigned int w3keyalpha; 106*77b55e8cSThomas Abraham unsigned int w4keyalpha; 107*77b55e8cSThomas Abraham 108*77b55e8cSThomas Abraham unsigned int dithmode; 109*77b55e8cSThomas Abraham unsigned int res10[2]; 110*77b55e8cSThomas Abraham 111*77b55e8cSThomas Abraham unsigned int win0map; 112*77b55e8cSThomas Abraham unsigned int win1map; 113*77b55e8cSThomas Abraham unsigned int win2map; 114*77b55e8cSThomas Abraham unsigned int win3map; 115*77b55e8cSThomas Abraham unsigned int win4map; 116*77b55e8cSThomas Abraham unsigned int res11[1]; 117*77b55e8cSThomas Abraham 118*77b55e8cSThomas Abraham unsigned int wpalcon_h; 119*77b55e8cSThomas Abraham unsigned int wpalcon_l; 120*77b55e8cSThomas Abraham 121*77b55e8cSThomas Abraham unsigned int trigcon; 122*77b55e8cSThomas Abraham unsigned int res12[2]; 123*77b55e8cSThomas Abraham 124*77b55e8cSThomas Abraham unsigned int i80ifcona0; 125*77b55e8cSThomas Abraham unsigned int i80ifcona1; 126*77b55e8cSThomas Abraham unsigned int i80ifconb0; 127*77b55e8cSThomas Abraham unsigned int i80ifconb1; 128*77b55e8cSThomas Abraham 129*77b55e8cSThomas Abraham unsigned int colorgaincon; 130*77b55e8cSThomas Abraham unsigned int res13[2]; 131*77b55e8cSThomas Abraham 132*77b55e8cSThomas Abraham unsigned int ldi_cmdcon0; 133*77b55e8cSThomas Abraham unsigned int ldi_cmdcon1; 134*77b55e8cSThomas Abraham unsigned int res14[1]; 135*77b55e8cSThomas Abraham 136*77b55e8cSThomas Abraham /* To be updated */ 137*77b55e8cSThomas Abraham 138*77b55e8cSThomas Abraham unsigned char res15[156]; 139*77b55e8cSThomas Abraham unsigned int dualrgb; 140*77b55e8cSThomas Abraham unsigned char res16[16]; 141*77b55e8cSThomas Abraham unsigned int dp_mie_clkcon; 142*77b55e8cSThomas Abraham }; 143*77b55e8cSThomas Abraham #endif 144*77b55e8cSThomas Abraham 145*77b55e8cSThomas Abraham /* LCD IF register offset */ 146*77b55e8cSThomas Abraham #define EXYNOS4_LCD_IF_BASE_OFFSET 0x0 147*77b55e8cSThomas Abraham #define EXYNOS5_LCD_IF_BASE_OFFSET 0x20000 148*77b55e8cSThomas Abraham exynos_fimd_get_base_offset(void)149*77b55e8cSThomas Abrahamstatic inline unsigned int exynos_fimd_get_base_offset(void) 150*77b55e8cSThomas Abraham { 151*77b55e8cSThomas Abraham if (cpu_is_exynos5()) 152*77b55e8cSThomas Abraham return EXYNOS5_LCD_IF_BASE_OFFSET; 153*77b55e8cSThomas Abraham else 154*77b55e8cSThomas Abraham return EXYNOS4_LCD_IF_BASE_OFFSET; 155*77b55e8cSThomas Abraham } 156*77b55e8cSThomas Abraham 157*77b55e8cSThomas Abraham /* 158*77b55e8cSThomas Abraham * Register offsets 159*77b55e8cSThomas Abraham */ 160*77b55e8cSThomas Abraham #define EXYNOS_WINCON(x) (x * 0x04) 161*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD(x) (x * 0x10) 162*77b55e8cSThomas Abraham #define EXYNOS_BUFFER_OFFSET(x) (x * 0x08) 163*77b55e8cSThomas Abraham #define EXYNOS_BUFFER_SIZE(x) (x * 0x04) 164*77b55e8cSThomas Abraham 165*77b55e8cSThomas Abraham /* 166*77b55e8cSThomas Abraham * Bit Definitions 167*77b55e8cSThomas Abraham */ 168*77b55e8cSThomas Abraham 169*77b55e8cSThomas Abraham /* VIDCON0 */ 170*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_DSI_DISABLE (0 << 30) 171*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_DSI_ENABLE (1 << 30) 172*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_SCAN_PROGRESSIVE (0 << 29) 173*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_SCAN_INTERLACE (1 << 29) 174*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_SCAN_MASK (1 << 29) 175*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VIDOUT_RGB (0 << 26) 176*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VIDOUT_ITU (1 << 26) 177*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VIDOUT_I80LDI0 (2 << 26) 178*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VIDOUT_I80LDI1 (3 << 26) 179*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VIDOUT_WB_RGB (4 << 26) 180*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VIDOUT_WB_I80LDI0 (6 << 26) 181*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VIDOUT_WB_I80LDI1 (7 << 26) 182*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VIDOUT_MASK (7 << 26) 183*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_PNRMODE_RGB_P (0 << 17) 184*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_PNRMODE_BGR_P (1 << 17) 185*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_PNRMODE_RGB_S (2 << 17) 186*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_PNRMODE_BGR_S (3 << 17) 187*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_PNRMODE_MASK (3 << 17) 188*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_PNRMODE_SHIFT (17) 189*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKVALUP_ALWAYS (0 << 16) 190*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKVALUP_START_FRAME (1 << 16) 191*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKVALUP_MASK (1 << 16) 192*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKVAL_F(x) (((x) & 0xff) << 6) 193*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VCLKEN_NORMAL (0 << 5) 194*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VCLKEN_FREERUN (1 << 5) 195*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_VCLKEN_MASK (1 << 5) 196*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKDIR_DIRECTED (0 << 4) 197*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKDIR_DIVIDED (1 << 4) 198*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKDIR_MASK (1 << 4) 199*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKSEL_HCLK (0 << 2) 200*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKSEL_SCLK (1 << 2) 201*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_CLKSEL_MASK (1 << 2) 202*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_ENVID_ENABLE (1 << 1) 203*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_ENVID_DISABLE (0 << 1) 204*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_ENVID_F_ENABLE (1 << 0) 205*77b55e8cSThomas Abraham #define EXYNOS_VIDCON0_ENVID_F_DISABLE (0 << 0) 206*77b55e8cSThomas Abraham 207*77b55e8cSThomas Abraham /* VIDCON1 */ 208*77b55e8cSThomas Abraham #define EXYNOS_VIDCON1_IVCLK_FALLING_EDGE (0 << 7) 209*77b55e8cSThomas Abraham #define EXYNOS_VIDCON1_IVCLK_RISING_EDGE (1 << 7) 210*77b55e8cSThomas Abraham #define EXYNOS_VIDCON1_IHSYNC_NORMAL (0 << 6) 211*77b55e8cSThomas Abraham #define EXYNOS_VIDCON1_IHSYNC_INVERT (1 << 6) 212*77b55e8cSThomas Abraham #define EXYNOS_VIDCON1_IVSYNC_NORMAL (0 << 5) 213*77b55e8cSThomas Abraham #define EXYNOS_VIDCON1_IVSYNC_INVERT (1 << 5) 214*77b55e8cSThomas Abraham #define EXYNOS_VIDCON1_IVDEN_NORMAL (0 << 4) 215*77b55e8cSThomas Abraham #define EXYNOS_VIDCON1_IVDEN_INVERT (1 << 4) 216*77b55e8cSThomas Abraham 217*77b55e8cSThomas Abraham /* VIDCON2 */ 218*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_EN601_DISABLE (0 << 23) 219*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_EN601_ENABLE (1 << 23) 220*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_EN601_MASK (1 << 23) 221*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_WB_DISABLE (0 << 15) 222*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_WB_ENABLE (1 << 15) 223*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_WB_MASK (1 << 15) 224*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_TVFORMATSEL_HW (0 << 14) 225*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_TVFORMATSEL_SW (1 << 14) 226*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_TVFORMATSEL_MASK (1 << 14) 227*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_TVFORMATSEL_YUV422 (1 << 12) 228*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_TVFORMATSEL_YUV444 (2 << 12) 229*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_TVFORMATSEL_YUV_MASK (3 << 12) 230*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_ORGYUV_YCBCR (0 << 8) 231*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_ORGYUV_CBCRY (1 << 8) 232*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_ORGYUV_MASK (1 << 8) 233*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_YUVORD_CBCR (0 << 7) 234*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_YUVORD_CRCB (1 << 7) 235*77b55e8cSThomas Abraham #define EXYNOS_VIDCON2_YUVORD_MASK (1 << 7) 236*77b55e8cSThomas Abraham 237*77b55e8cSThomas Abraham /* PRTCON */ 238*77b55e8cSThomas Abraham #define EXYNOS_PRTCON_UPDATABLE (0 << 11) 239*77b55e8cSThomas Abraham #define EXYNOS_PRTCON_PROTECT (1 << 11) 240*77b55e8cSThomas Abraham 241*77b55e8cSThomas Abraham /* VIDTCON0 */ 242*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON0_VBPDE(x) (((x) & 0xff) << 24) 243*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON0_VBPD(x) (((x) & 0xff) << 16) 244*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON0_VFPD(x) (((x) & 0xff) << 8) 245*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON0_VSPW(x) (((x) & 0xff) << 0) 246*77b55e8cSThomas Abraham 247*77b55e8cSThomas Abraham /* VIDTCON1 */ 248*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON1_VFPDE(x) (((x) & 0xff) << 24) 249*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON1_HBPD(x) (((x) & 0xff) << 16) 250*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON1_HFPD(x) (((x) & 0xff) << 8) 251*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON1_HSPW(x) (((x) & 0xff) << 0) 252*77b55e8cSThomas Abraham 253*77b55e8cSThomas Abraham /* VIDTCON2 */ 254*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON2_LINEVAL(x) (((x) & 0x7ff) << 11) 255*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON2_HOZVAL(x) (((x) & 0x7ff) << 0) 256*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON2_LINEVAL_E(x) ((((x) & 0x800) >> 11) << 23) 257*77b55e8cSThomas Abraham #define EXYNOS_VIDTCON2_HOZVAL_E(x) ((((x) & 0x800) >> 11) << 22) 258*77b55e8cSThomas Abraham 259*77b55e8cSThomas Abraham /* Window 0~4 Control - WINCONx */ 260*77b55e8cSThomas Abraham #define EXYNOS_WINCON_DATAPATH_DMA (0 << 22) 261*77b55e8cSThomas Abraham #define EXYNOS_WINCON_DATAPATH_LOCAL (1 << 22) 262*77b55e8cSThomas Abraham #define EXYNOS_WINCON_DATAPATH_MASK (1 << 22) 263*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BUFSEL_0 (0 << 20) 264*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BUFSEL_1 (1 << 20) 265*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BUFSEL_MASK (1 << 20) 266*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BUFSEL_SHIFT (20) 267*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BUFAUTO_DISABLE (0 << 19) 268*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BUFAUTO_ENABLE (1 << 19) 269*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BUFAUTO_MASK (1 << 19) 270*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BITSWP_DISABLE (0 << 18) 271*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BITSWP_ENABLE (1 << 18) 272*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BITSWP_SHIFT (18) 273*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BYTESWP_DISABLE (0 << 17) 274*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BYTESWP_ENABLE (1 << 17) 275*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BYTESWP_SHIFT (17) 276*77b55e8cSThomas Abraham #define EXYNOS_WINCON_HAWSWP_DISABLE (0 << 16) 277*77b55e8cSThomas Abraham #define EXYNOS_WINCON_HAWSWP_ENABLE (1 << 16) 278*77b55e8cSThomas Abraham #define EXYNOS_WINCON_HAWSWP_SHIFT (16) 279*77b55e8cSThomas Abraham #define EXYNOS_WINCON_WSWP_DISABLE (0 << 15) 280*77b55e8cSThomas Abraham #define EXYNOS_WINCON_WSWP_ENABLE (1 << 15) 281*77b55e8cSThomas Abraham #define EXYNOS_WINCON_WSWP_SHIFT (15) 282*77b55e8cSThomas Abraham #define EXYNOS_WINCON_INRGB_RGB (0 << 13) 283*77b55e8cSThomas Abraham #define EXYNOS_WINCON_INRGB_YUV (1 << 13) 284*77b55e8cSThomas Abraham #define EXYNOS_WINCON_INRGB_MASK (1 << 13) 285*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BURSTLEN_16WORD (0 << 9) 286*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BURSTLEN_8WORD (1 << 9) 287*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BURSTLEN_4WORD (2 << 9) 288*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BURSTLEN_MASK (3 << 9) 289*77b55e8cSThomas Abraham #define EXYNOS_WINCON_ALPHA_MULTI_DISABLE (0 << 7) 290*77b55e8cSThomas Abraham #define EXYNOS_WINCON_ALPHA_MULTI_ENABLE (1 << 7) 291*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BLD_PLANE (0 << 6) 292*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BLD_PIXEL (1 << 6) 293*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BLD_MASK (1 << 6) 294*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_1BPP (0 << 2) 295*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_2BPP (1 << 2) 296*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_4BPP (2 << 2) 297*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_8BPP_PAL (3 << 2) 298*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_8BPP (4 << 2) 299*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_16BPP_565 (5 << 2) 300*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_16BPP_A555 (6 << 2) 301*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_18BPP_666 (8 << 2) 302*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_18BPP_A665 (9 << 2) 303*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_24BPP_888 (0xb << 2) 304*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_24BPP_A887 (0xc << 2) 305*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_32BPP (0xd << 2) 306*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_16BPP_A444 (0xe << 2) 307*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_15BPP_555 (0xf << 2) 308*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_MASK (0xf << 2) 309*77b55e8cSThomas Abraham #define EXYNOS_WINCON_BPPMODE_SHIFT (2) 310*77b55e8cSThomas Abraham #define EXYNOS_WINCON_ALPHA0_SEL (0 << 1) 311*77b55e8cSThomas Abraham #define EXYNOS_WINCON_ALPHA1_SEL (1 << 1) 312*77b55e8cSThomas Abraham #define EXYNOS_WINCON_ALPHA_SEL_MASK (1 << 1) 313*77b55e8cSThomas Abraham #define EXYNOS_WINCON_ENWIN_DISABLE (0 << 0) 314*77b55e8cSThomas Abraham #define EXYNOS_WINCON_ENWIN_ENABLE (1 << 0) 315*77b55e8cSThomas Abraham 316*77b55e8cSThomas Abraham /* WINCON1 special */ 317*77b55e8cSThomas Abraham #define EXYNOS_WINCON1_VP_DISABLE (0 << 24) 318*77b55e8cSThomas Abraham #define EXYNOS_WINCON1_VP_ENABLE (1 << 24) 319*77b55e8cSThomas Abraham #define EXYNOS_WINCON1_LOCALSEL_FIMC1 (0 << 23) 320*77b55e8cSThomas Abraham #define EXYNOS_WINCON1_LOCALSEL_VP (1 << 23) 321*77b55e8cSThomas Abraham #define EXYNOS_WINCON1_LOCALSEL_MASK (1 << 23) 322*77b55e8cSThomas Abraham 323*77b55e8cSThomas Abraham /* WINSHMAP */ 324*77b55e8cSThomas Abraham #define EXYNOS_WINSHMAP_PROTECT(x) (((x) & 0x1f) << 10) 325*77b55e8cSThomas Abraham #define EXYNOS_WINSHMAP_CH_ENABLE(x) (1 << (x)) 326*77b55e8cSThomas Abraham #define EXYNOS_WINSHMAP_CH_DISABLE(x) (1 << (x)) 327*77b55e8cSThomas Abraham #define EXYNOS_WINSHMAP_LOCAL_ENABLE(x) (0x20 << (x)) 328*77b55e8cSThomas Abraham #define EXYNOS_WINSHMAP_LOCAL_DISABLE(x) (0x20 << (x)) 329*77b55e8cSThomas Abraham 330*77b55e8cSThomas Abraham /* VIDOSDxA, VIDOSDxB */ 331*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_LEFT_X(x) (((x) & 0x7ff) << 11) 332*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_TOP_Y(x) (((x) & 0x7ff) << 0) 333*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_RIGHT_X(x) (((x) & 0x7ff) << 11) 334*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_BOTTOM_Y(x) (((x) & 0x7ff) << 0) 335*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_RIGHT_X_E(x) (((x) & 0x1) << 23) 336*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_BOTTOM_Y_E(x) (((x) & 0x1) << 22) 337*77b55e8cSThomas Abraham 338*77b55e8cSThomas Abraham /* VIDOSD0C, VIDOSDxD */ 339*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_SIZE(x) (((x) & 0xffffff) << 0) 340*77b55e8cSThomas Abraham 341*77b55e8cSThomas Abraham /* VIDOSDxC (1~4) */ 342*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_ALPHA0_R(x) (((x) & 0xf) << 20) 343*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_ALPHA0_G(x) (((x) & 0xf) << 16) 344*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_ALPHA0_B(x) (((x) & 0xf) << 12) 345*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_ALPHA1_R(x) (((x) & 0xf) << 8) 346*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_ALPHA1_G(x) (((x) & 0xf) << 4) 347*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_ALPHA1_B(x) (((x) & 0xf) << 0) 348*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_ALPHA0_SHIFT (12) 349*77b55e8cSThomas Abraham #define EXYNOS_VIDOSD_ALPHA1_SHIFT (0) 350*77b55e8cSThomas Abraham 351*77b55e8cSThomas Abraham /* Start Address */ 352*77b55e8cSThomas Abraham #define EXYNOS_VIDADDR_START_VBANK(x) (((x) & 0xff) << 24) 353*77b55e8cSThomas Abraham #define EXYNOS_VIDADDR_START_VBASEU(x) (((x) & 0xffffff) << 0) 354*77b55e8cSThomas Abraham 355*77b55e8cSThomas Abraham /* End Address */ 356*77b55e8cSThomas Abraham #define EXYNOS_VIDADDR_END_VBASEL(x) (((x) & 0xffffff) << 0) 357*77b55e8cSThomas Abraham 358*77b55e8cSThomas Abraham /* Buffer Size */ 359*77b55e8cSThomas Abraham #define EXYNOS_VIDADDR_OFFSIZE(x) (((x) & 0x1fff) << 13) 360*77b55e8cSThomas Abraham #define EXYNOS_VIDADDR_PAGEWIDTH(x) (((x) & 0x1fff) << 0) 361*77b55e8cSThomas Abraham #define EXYNOS_VIDADDR_OFFSIZE_E(x) ((((x) & 0x2000) >> 13) << 27) 362*77b55e8cSThomas Abraham #define EXYNOS_VIDADDR_PAGEWIDTH_E(x) ((((x) & 0x2000) >> 13) << 26) 363*77b55e8cSThomas Abraham 364*77b55e8cSThomas Abraham /* WIN Color Map */ 365*77b55e8cSThomas Abraham #define EXYNOS_WINMAP_COLOR(x) ((x) & 0xffffff) 366*77b55e8cSThomas Abraham 367*77b55e8cSThomas Abraham /* VIDINTCON0 */ 368*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_SYSMAINCON_DISABLE (0 << 19) 369*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_SYSMAINCON_ENABLE (1 << 19) 370*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_SYSSUBCON_DISABLE (0 << 18) 371*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_SYSSUBCON_ENABLE (1 << 18) 372*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_SYSIFDONE_DISABLE (0 << 17) 373*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_SYSIFDONE_ENABLE (1 << 17) 374*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FRAMESEL0_BACK (0 << 15) 375*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FRAMESEL0_VSYNC (1 << 15) 376*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FRAMESEL0_ACTIVE (2 << 15) 377*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FRAMESEL0_FRONT (3 << 15) 378*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FRAMESEL0_MASK (3 << 15) 379*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FRAMESEL1_NONE (0 << 13) 380*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FRAMESEL1_BACK (1 << 13) 381*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FRAMESEL1_VSYNC (2 << 13) 382*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FRAMESEL1_FRONT (3 << 13) 383*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_INTFRMEN_DISABLE (0 << 12) 384*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_INTFRMEN_ENABLE (1 << 12) 385*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOSEL_WIN4 (1 << 11) 386*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOSEL_WIN3 (1 << 10) 387*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOSEL_WIN2 (1 << 9) 388*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOSEL_WIN1 (1 << 6) 389*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOSEL_WIN0 (1 << 5) 390*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOSEL_ALL (0x73 << 5) 391*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOSEL_MASK (0x73 << 5) 392*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOLEVEL_25 (0 << 2) 393*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOLEVEL_50 (1 << 2) 394*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOLEVEL_75 (2 << 2) 395*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOLEVEL_EMPTY (3 << 2) 396*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOLEVEL_FULL (4 << 2) 397*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_FIFOLEVEL_MASK (7 << 2) 398*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_INTFIFO_DISABLE (0 << 1) 399*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_INTFIFO_ENABLE (1 << 1) 400*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_INT_DISABLE (0 << 0) 401*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_INT_ENABLE (1 << 0) 402*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON0_INT_MASK (1 << 0) 403*77b55e8cSThomas Abraham 404*77b55e8cSThomas Abraham /* VIDINTCON1 */ 405*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON1_INTVPPEND (1 << 5) 406*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON1_INTI80PEND (1 << 2) 407*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON1_INTFRMPEND (1 << 1) 408*77b55e8cSThomas Abraham #define EXYNOS_VIDINTCON1_INTFIFOPEND (1 << 0) 409*77b55e8cSThomas Abraham 410*77b55e8cSThomas Abraham /* WINMAP */ 411*77b55e8cSThomas Abraham #define EXYNOS_WINMAP_ENABLE (1 << 24) 412*77b55e8cSThomas Abraham 413*77b55e8cSThomas Abraham /* WxKEYCON0 (1~4) */ 414*77b55e8cSThomas Abraham #define EXYNOS_KEYCON0_KEYBLEN_DISABLE (0 << 26) 415*77b55e8cSThomas Abraham #define EXYNOS_KEYCON0_KEYBLEN_ENABLE (1 << 26) 416*77b55e8cSThomas Abraham #define EXYNOS_KEYCON0_KEY_DISABLE (0 << 25) 417*77b55e8cSThomas Abraham #define EXYNOS_KEYCON0_KEY_ENABLE (1 << 25) 418*77b55e8cSThomas Abraham #define EXYNOS_KEYCON0_DIRCON_MATCH_FG (0 << 24) 419*77b55e8cSThomas Abraham #define EXYNOS_KEYCON0_DIRCON_MATCH_BG (1 << 24) 420*77b55e8cSThomas Abraham #define EXYNOS_KEYCON0_COMPKEY(x) (((x) & 0xffffff) << 0) 421*77b55e8cSThomas Abraham 422*77b55e8cSThomas Abraham /* WxKEYCON1 (1~4) */ 423*77b55e8cSThomas Abraham #define EXYNOS_KEYCON1_COLVAL(x) (((x) & 0xffffff) << 0) 424*77b55e8cSThomas Abraham 425*77b55e8cSThomas Abraham /* DUALRGB */ 426*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_BYPASS_SINGLE (0x00 << 0) 427*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_BYPASS_DUAL (0x01 << 0) 428*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_MIE_DUAL (0x10 << 0) 429*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_MIE_SINGLE (0x11 << 0) 430*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_LINESPLIT (0x0 << 2) 431*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_FRAMESPLIT (0x1 << 2) 432*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_SUB_CNT(x) ((x & 0xfff) << 4) 433*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_VDEN_EN_DISABLE (0x0 << 16) 434*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_VDEN_EN_ENABLE (0x1 << 16) 435*77b55e8cSThomas Abraham #define EXYNOS_DUALRGB_MAIN_CNT(x) ((x & 0xfff) << 18) 436*77b55e8cSThomas Abraham 437*77b55e8cSThomas Abraham /* I80IFCONA0 and I80IFCONA1 */ 438*77b55e8cSThomas Abraham #define EXYNOS_LCD_CS_SETUP(x) (((x) & 0xf) << 16) 439*77b55e8cSThomas Abraham #define EXYNOS_LCD_WR_SETUP(x) (((x) & 0xf) << 12) 440*77b55e8cSThomas Abraham #define EXYNOS_LCD_WR_ACT(x) (((x) & 0xf) << 8) 441*77b55e8cSThomas Abraham #define EXYNOS_LCD_WR_HOLD(x) (((x) & 0xf) << 4) 442*77b55e8cSThomas Abraham #define EXYNOS_RSPOL_LOW (0 << 2) 443*77b55e8cSThomas Abraham #define EXYNOS_RSPOL_HIGH (1 << 2) 444*77b55e8cSThomas Abraham #define EXYNOS_I80IFEN_DISABLE (0 << 0) 445*77b55e8cSThomas Abraham #define EXYNOS_I80IFEN_ENABLE (1 << 0) 446*77b55e8cSThomas Abraham 447*77b55e8cSThomas Abraham /* TRIGCON */ 448*77b55e8cSThomas Abraham #define EXYNOS_I80SOFT_TRIG_EN (1 << 0) 449*77b55e8cSThomas Abraham #define EXYNOS_I80START_TRIG (1 << 1) 450*77b55e8cSThomas Abraham #define EXYNOS_I80STATUS_TRIG_DONE (1 << 2) 451*77b55e8cSThomas Abraham 452*77b55e8cSThomas Abraham /* DP_MIE_CLKCON */ 453*77b55e8cSThomas Abraham #define EXYNOS_DP_MIE_DISABLE (0 << 0) 454*77b55e8cSThomas Abraham #define EXYNOS_DP_CLK_ENABLE (1 << 1) 455*77b55e8cSThomas Abraham #define EXYNOS_MIE_CLK_ENABLE (3 << 0) 456*77b55e8cSThomas Abraham 457*77b55e8cSThomas Abraham #endif /* _REGS_FB_H */ 458