1/* 2 * Copyright 2010 Michael Zucchi. 3 * Distributed under the terms of the MIT License. 4 * 5 */ 6#ifndef _OMAP3_VIDEO_H 7#define _OMAP3_VIDEO_H 8 9/* ********************************************************************** */ 10/* S 1.7.2 Display Subsystem & SDI Registers */ 11 12#define DSS_BASE 0x48050000 13 14#define DSS_SYSCONFIG 0x010 15#define DSS_SYSSTATUS 0x014 16#define DSS_IRQSTATUS 0x018 17#define DSS_CONTROL 0x040 18#define DSS_SDI_CONTROL 0x044 19#define DSS_PLL_CONTROL 0x048 20#define DSS_SDI_STATUS 0x05C 21 22/* SYSCONFIG bits */ 23#define DSS_AUTOIDLE 1 24#define DSS_SOFTRESET 2 25/* SYSSTATUS bits */ 26#define DSS_RESETDONE 1 27/* CONTROL bits */ 28#define DSS_VENC_OUT_SEL (1<<6) /* set s-video */ 29#define DSS_DAC_POWERDN_BGZ (1<<5) 30#define DSS_DAC_DEMEN (1<<4) 31#define DSS_VENC_CLOCK_4X_ENABLE (1<<3) 32#define DSS_VENC_CLOCK_MODE (1<<2) /* set square pixel */ 33#define DSS_DSI_CLK_SWITCH (1<<1) /* select DSI2 PLL FCLK otherwise DSS1 ALWON FCLK */ 34#define DSS_DSS1_CLK_SWITCH (1<<0) /* same */ 35 36/* ********************************************************************** */ 37/* S 1.7.3 Display controller */ 38 39#define DISPC_BASE 0x48050400 40 41#define DISPC_SYSCONFIG 0x010 42#define DISPC_SYSSTATUS 0x014 43#define DISPC_IRQSTATUS 0x018 44#define DISPC_IRQENABLE 0x01C 45#define DISPC_CONTROL 0x040 46#define DISPC_CONFIG 0x044 47#define DISPC_DEFAULT_COLOR0 0x04c 48#define DISPC_DEFAULT_COLOR1 0x050 49#define DISPC_TRANS_COLOR0 0x54 50#define DISPC_TRANS_COLOR1 0x58 51#define DISPC_LINE_STATUS 0x05C 52#define DISPC_LINE_NUMBER 0x060 53#define DISPC_TIMING_H 0x064 54#define DISPC_TIMING_V 0x068 55#define DISPC_POL_FREQ 0x06C 56#define DISPC_DIVISOR 0x070 57#define DISPC_GLOBAL_ALPHA 0x074 58#define DISPC_SIZE_DIG 0x078 59#define DISPC_SIZE_LCD 0x07C 60 61#define DISPC_GFX_BA0 0x080 62#define DISPC_GFX_BA1 0x084 63#define DISPC_GFX_POSITION 0x088 64#define DISPC_GFX_SIZE 0x08C 65#define DISPC_GFX_ATTRIBUTES 0x0A0 66#define DISPC_GFX_FIFO_THRESHOLD 0x0A4 67#define DISPC_GFX_FIFO_SIZE_STATUS 0x0A8 68#define DISPC_GFX_ROW_INC 0x0AC 69#define DISPC_GFX_PIXEL_INC 0x0B0 70#define DISPC_GFX_WINDOW_SKIP 0x0B4 71#define DISPC_GFX_TABLE_BA 0x0B8 72 73#define DISPC_VID1_BA0 0x0BC 74#define DISPC_VID1_BA1 0x0C0 75#define DISPC_VID2_BA0 0x14C 76#define DISPC_VID2_BA1 0x150 77 78#define DISPC_VID1_POSITION 0x0C4 79#define DISPC_VID2_POSITION (0x0C4+0x90) 80#define DISPC_VID1_SIZE 0x0C8 81#define DISPC_VID2_SIZE (0x0C8+0x90) 82#define DISPC_VID1_ATTRIBUTES 0x0CC 83#define DISPC_VID2_ATTRIBUTES (0x0CC+0x90) 84 85#define DISPC_VID1_FIFO_THRESHOLD 0x0D0 86#define DISPC_VID2_FIFO_THRESHOLD (0x0D0+0x90) 87#define DISPC_VID1_FIFO_SIZE_STATUS 0x0D4 88#define DISPC_VID2_FIFO_SIZE_STATUS (0x0D4+0x90) 89#define DISPC_VID1_ROW_INC 0x0D8 90#define DISPC_VID2_ROW_INC (0x0D8+0x90) 91#define DISPC_VID1_PIXEL_INC 0x0DC 92#define DISPC_VID2_PIXEL_INC (0x0DC+0x90) 93/* 94#define DISPC_VIDn_FIR 0x0E0+((n-1)* 95*/ 96#define DISPC_VID1_PICTURE_SIZE 0x0E4 97#define DISPC_VID2_PICTURE_SIZE (0x0E4+0x90) 98/* 99#define DISPC_VIDn_ACCUl 0x0E8 100#define DISPC_VIDn_FIR_COEF_Hi 0x0F0+ 101#define DISPC_VIDn_FIR_COEF_HVi 0x0F4+ 102*/ 103#define DISPC_VID1_CONV_COEF0 0x130 104#define DISPC_VID2_CONV_COEF0 (0x130+0x90) 105#define DISPC_VID1_CONV_COEF1 0x134 106#define DISPC_VID2_CONV_COEF1 (0x134+0x90) 107#define DISPC_VID1_CONV_COEF2 0x138 108#define DISPC_VID2_CONV_COEF2 (0x138+0x90) 109#define DISPC_VID1_CONV_COEF3 0x13C 110#define DISPC_VID2_CONV_COEF3 (0x13C+0x90) 111#define DISPC_VID1_CONV_COEF4 0x140 112#define DISPC_VID2_CONV_COEF4 (0x140+0x90) 113/* 114#define DISPC_DATA_CYCLEk 0x1D4+((k-1)* 115#define DISPC_VIDn_FIR_COEF_Vi 0x1E0+ 116*/ 117#define DISPC_CPR_COEF_R 0x220 118#define DISPC_CPR_COEF_G 0x224 119#define DISPC_CPR_COEF_B 0x228 120#define DISPC_GFX_PRELOAD 0x22C 121#define DISPC_VID1_PRELOAD 0x230 122#define DISPC_VID2_PRELOAD 0x234 123 124/* DISPC_SYSCONFIG bits */ 125#define DISPC_MIDLEMODE_FORCE (0<<12) 126#define DISPC_MIDLEMODE_NEVER (1<<12) 127#define DISPC_MIDLEMODE_SMART (2<<12) 128 129#define DISPC_SIDLEMODE_FORCE (0<<3) 130#define DISPC_SIDLEMODE_NEVER (1<<3) 131#define DISPC_SIDLEMODE_SMART (2<<3) 132 133#define DISPC_ENWAKEUP (1<<2) 134#define DISPC_SOFTRESET (1<<1) 135#define DISPC_AUTOIDLE (1<<0) 136 137/* DISPC_SYSSTATUS bits */ 138#define DISPC_RESETDONE 1 139 140/* TODO: IRQ bits */ 141 142/* DISPC_CONTROL bits (incomplete) */ 143#define DISPC_DITHER_FRAMES_0 (0<<30) 144#define DISPC_DITHER_FRAMES_2 (1<<30) 145#define DISPC_DITHER_FRAMES_4 (2<<30) 146#define DISPC_LCDENABLEPOL (1<<29) 147#define DISPC_LCDENABLESIGNAL (1<<28) 148#define DISPC_PCKFREEENABLE (1<<27) 149#define DISPC_GPOUT1 (1<<16) 150#define DISPC_GPOUT0 (1<<15) 151#define DISPC_GPIN1 (1<<14) 152#define DISPC_GPIN0 (1<<13) 153#define DISPC_OVERLAYOPTIMISATION (1<<12) 154#define DISPC_STALLMODE (1<<11) 155#define DISPC_TFTDATALINES_12 (0<<8) 156#define DISPC_TFTDATALINES_16 (1<<8) 157#define DISPC_TFTDATALINES_18 (2<<8) 158#define DISPC_TFTDATALINES_24 (3<<8) 159#define DISPC_STDITHERENABLE (1<<7) 160#define DISPC_GODIGITAL (1<<6) 161#define DISPC_GOLCD (1<<5) 162#define DISPC_M8B (1<<4) 163#define DISPC_STNTFT (1<<3) 164#define DISPC_MONOCOLOR (1<<2) 165#define DISPC_DIGITALENABLE (1<<1) 166#define DISPC_LCDENABLE (1<<0) 167 168/* DISPC_CONFIG bits */ 169#define DISPC_TVALPHABLENDERENABLE (1<<19) 170#define DISPC_LCDALPHABLENDERENABLE (1<<18) 171#define DISPC_FIFOFILLING (1<<17) 172#define DISPC_FIFOHANDCHECK (1<<16) 173#define DISPC_CPR (1<<15) 174#define DISPC_FIFOMERGE (1<<14) 175#define DISPC_TCKDIGSELECTION (1<<13) 176#define DISPC_TCKDIGENABLE (1<<12) 177#define DISPC_TCKLCDSELECTION (1<<11) 178#define DISPC_TCKLCDENABLE (1<<10) 179#define DISPC_FUNCGATED (1<<9) 180#define DISPC_ACBIASGATED (1<<8) 181#define DISPC_VSYNCGATED (1<<7) 182#define DISPC_HSYNCGATED (1<<6) 183#define DISPC_PIXELCLOCKGATED (1<<5) 184#define DISPC_PIXELDATAGATED (1<<4) 185#define DISPC_PALETTEGAMMATABLE (1<<3) 186#define DISPC_LOADMODE_EVERY (0<<1) 187#define DISPC_LOADMODE_MANUAL (1<<1) 188#define DISPC_LOADMODE_FRAME (2<<1) 189#define DISPC_LOADMODE_FIRST (3<<1) 190#define DISPC_PIXELGATED 1 191 192/* DISPC_TIMING_H bits and masks */ 193#define DISPCB_HBP 20 194#define DISPCB_HFP 8 195#define DISPCB_HSW 0 196#define DISPCM_HBP 0xfff00000 197#define DISPCM_HFP 0x000fff00 198#define DISPCM_HSW 0x000000ff 199 200/* DISPC_TIMING_V bits and masks */ 201#define DISPCB_VBP 20 202#define DISPCB_VFP 8 203#define DISPCB_VSW 0 204#define DISPCM_VBP 0x0ff00000 205#define DISPCM_VFP 0x0000ff00 206#define DISPCM_VSW 0x0000003f 207 208/* DISPC_POL_FREQ bits */ 209#define DISPC_POL_ONOFF (1<<17) 210#define DISPC_POL_RF (1<<16) 211#define DISPC_POL_IEO (1<<15) 212#define DISPC_POL_IPC (1<<14) 213#define DISPC_POL_IHS (1<<13) 214#define DISPC_POL_IVS (1<<12) 215#define DISPCB_POL_ACBI 8 216#define DISPCM_POL_ACBI 0xf00 217#define DISPCB_POL_ACB 0 218#define DISPCM_POL_ACB 0xff 219 220/* DISPC_DIVISOR bits */ 221#define DISPCB_DIVISOR_LCD 16 222#define DISPCB_DIVISOR_PCD 0 223 224/* DISPC_GFX_ATTRIBUTES bits */ 225#define DISPC_GFXSELFREFRESH (1<<15) 226#define DISPC_GFXARBITRATION (1<<14) 227#define DISPC_GFXROTATION_0 (0<<12) 228#define DISPC_GFXROTATION_90 (1<<12) 229#define DISPC_GFXROTATION_180 (2<<12) 230#define DISPC_GFXROTATION_270 (3<<12) 231#define DISPC_GFXFIFOPRELOAD (1<<11) 232#define DISPC_GFXENDIANNESS (1<<10) 233#define DISPC_GFXNIBBLEMODE (1<<9) 234#define DISPC_GFXCHANNELOUT (1<<8) 235#define DISPC_GFXBURSTSIZE_4x32 (0<<6) 236#define DISPC_GFXBURSTSIZE_8x32 (1<<6) 237#define DISPC_GFXBURSTSIZE_16x32 (2<<6) 238#define DISPC_GFXREPLICATIONENABLE (1<<5) 239#define DISPC_GFXFORMAT_BITMAP1 (0<<1) 240#define DISPC_GFXFORMAT_BITMAP2 (1<<1) 241#define DISPC_GFXFORMAT_BITMAP4 (2<<1) 242#define DISPC_GFXFORMAT_BITMAP8 (3<<1) 243#define DISPC_GFXFORMAT_RGB12 (4<<1) 244#define DISPC_GFXFORMAT_ARGB16 (5<<1) 245#define DISPC_GFXFORMAT_RGB16 (6<<1) 246#define DISPC_GFXFORMAT_RGB32 (8<<1) /* 24 bit, 32-bit un - packed */ 247#define DISPC_GFXFORMAT_RGB24 (9<<1) 248#define DISPC_GFXFORMAT_ARGB32 (12<<1) 249#define DISPC_GFXFORMAT_RGBA32 (13<<1) 250#define DISPC_GFXFORMAT_RGBx (14<<1) 251#define DISPC_GFXENABLE 1 252 253/* DISPC_VIDn_ATTRIBUTES bits */ 254#define DISPC_VIDSELFREFRESH (1<<24) 255#define DISPC_VIDARBITRATION (1<<23) 256#define DISPC_VIDLINEBUFFERSPLOT (1<<22) 257#define DISPC_VIDVERTICALTAPS (1<<21) 258#define DISPC_VIDOPTIMISATION (1<<20) 259#define DISPC_VIDFIFOPRELOAD (1<<19) 260#define DISPC_VIDROWREPEATENABLE (1<<18) 261#define DISPC_VIDENDIANNESS (1<<17) 262#define DISPC_VIDCHANNELOUT (1<<16) 263#define DISPC_VIDBURSTSIZE_4x32 (0<<14) 264#define DISPC_VIDBURSTSIZE_8x32 (1<<14) 265#define DISPC_VIDBURSTSIZE_16x32 (2<<14) 266#define DISPC_VIDROTATION_0 (0<<12) 267#define DISPC_VIDROTATION_90 (1<<12) 268#define DISPC_VIDROTATION_180 (2<<12) 269#define DISPC_VIDROTATION_270 (3<<12) 270#define DISPC_VIDFULLRANGE (1<<11) 271#define DISPC_VIDREPLICATIONENABLE (1<<10) 272#define DISPC_VIDCOLORCONVENABLE (1<<9) 273#define DISPC_VIDVRESIZECONF (1<<8) 274#define DISPC_VIDHRESIZECONF (1<<7) 275#define DISPC_VIDRESIZEENABLE_H (1<<5) 276#define DISPC_VIDRESIZEENABLE_V (2<<5) 277#define DISPC_VIDRESIZEENABLE_HV (3<<5) 278// Only VID2 supports the alpha formats 279#define DISPC_VIDFORMAT_RGB12 (4<<1) 280#define DISPC_VIDFORMAT_ARGB16 (5<<1) 281#define DISPC_VIDFORMAT_RGB16 (6<<1) 282#define DISPC_VIDFORMAT_RGB32 (8<<1) /* 24 bit, 32-bit un - packed */ 283#define DISPC_VIDFORMAT_RGB24 (9<<1) 284#define DISPC_VIDFORMAT_YUV2 (10<<1) 285#define DISPC_VIDFORMAT_UYVY (11<<1) 286#define DISPC_VIDFORMAT_ARGB32 (12<<1) 287#define DISPC_VIDFORMAT_RGBA32 (13<<1) 288#define DISPC_VIDFORMAT_RGBx (14<<1) 289#define DISPC_VIDENABLE 1 290 291/* TODO: video attributes, etc */ 292 293/* ********************************************************************** */ 294/* S 1.7.5 Video Encoder Registers */ 295 296#define VENC_BASE 0x48050c00 297 298#define VENC_STATUS 0x04 299#define VENC_F_CONTROL 0x08 300#define VENC_VIDOUT_CTRL 0x10 301#define VENC_SYNC_CTRL 0x14 302#define VENC_LLEN 0x1C 303#define VENC_FLENS 0x20 304#define VENC_HFLTR_CTRL 0x24 305#define VENC_CC_CARR_WSS_CARR 0x28 306#define VENC_C_PHASE 0x2C 307#define VENC_GAIN_U 0x30 308#define VENC_GAIN_V 0x34 309#define VENC_GAIN_Y 0x38 310#define VENC_BLACK_LEVEL 0x3C 311#define VENC_BLANK_LEVEL 0x40 312#define VENC_X_COLOR 0x44 313#define VENC_M_CONTROL 0x48 314#define VENC_BSTAMP_WSS_DATA 0x4C 315#define VENC_S_CARR 0x50 316#define VENC_LINE21 0x54 317#define VENC_LN_SEL 0x58 318#define VENC_L21_WC_CTL 0x5C 319#define VENC_HTRIGGER_VTRIGGER 0x60 320#define VENC_SAVID_EAVID 0x64 321#define VENC_FLEN_FAL 0x68 322#define VENC_LAL_PHASE_RESET 0x6C 323#define VENC_HS_INT_START_STOP_X 0x70 324#define VENC_HS_EXT_START_STOP_X 0x74 325#define VENC_VS_INT_START_X 0x78 326#define VENC_VS_INT_STOP_X_VS_INT_START_Y 0x7C 327#define VENC_VS_INT_STOP_Y_VS_EXT_START_X 0x80 328#define VENC_VS_EXT_STOP_X_VS_EXT_START_Y 0x84 329#define VENC_VS_EXT_STOP_Y 0x88 330#define VENC_AVID_START_STOP_X 0x90 331#define VENC_AVID_START_STOP_Y 0x94 332#define VENC_FID_INT_START_X_FID_INT_START_Y 0xA0 333#define VENC_FID_INT_OFFSET_Y_FID_EXT_START_X 0xA4 334#define VENC_FID_EXT_START_Y_FID_EXT_OFFSET_Y 0xA8 335#define VENC_TVDETGP_INT_START_STOP_X 0xB0 336#define VENC_TVDETGP_INT_START_STOP_Y 0xB4 337#define VENC_GEN_CTRL 0xB8 338#define VENC_OUTPUT_CONTROL 0xC4 339#define VENC_OUTPUT_TEST 0xC8 340 341/* VENC_F_CONTROL bits */ 342#define VENC_RESET (1<<8) 343#define VENC_SVDS_EXTERNAL (0<<6) 344#define VENC_SVDS_COLOURBAR (1<<6) 345#define VENC_SVDS_SOLID (2<<6) 346#define VENC_RGBF (1<<5) 347#define VENC_BCOLOR_BLACK (0<<2) 348#define VENC_BCOLOR_BLUE (1<<2) 349#define VENC_BCOLOR_RED (2<<2) 350#define VENC_BCOLOR_MAGENTA (3<<2) 351#define VENC_BCOLOR_GREEN (4<<2) 352#define VENC_BCOLOR_CYAN (5<<2) 353#define VENC_BCOLOR_YELLOW (6<<2) 354#define VENC_BCOLOR_WHITE (7<<2) 355#define VENC_FMT_24_RGB444 0 356#define VENC_FMT_24_444 1 357#define VENC_FMT_16_422 2 358#define VENC_FMT_8_422 2 359 360/* VENC_VIDOUT_CTRL bits */ 361#define VENC_VIDOUT_54 (0) 362#define VENC_VIDOUT_27 (1) 363 364/* VENC_SYNC_CTRL bits */ 365#define VENC_SYNC_FREE (1<<15) 366#define VENC_SYNC_ESAV (1<<14) 367#define VENC_SYNC_IGNP (1<<13) 368#define VENC_SYNC_NBLNKS (1<<12) 369#define VENC_SYNC_VBLKM_DFL (0<<10) 370#define VENC_SYNC_VBLKM_LAL (1<<10) 371#define VENC_SYNC_HBLKM_DFL (0<<10) 372#define VENC_SYNC_HBLKM_EAV (1<<10) 373#define VENC_SYNC_HBLKM_RANGE (2<<10) 374#define VENC_SYNC_FID_POL (1<<6) 375 376/* VENC_HFLTR_CTRL bits */ 377#define VENC_CINTP_EN (0<<1) 378#define VENC_CINTP_BYPASS_1 (1<<1) 379#define VENC_CINTP_BYPASS_2 (2<<1) 380#define VENC_CINTP_BYPASS (3<<1) 381 382#define VENC_YINTP_EN (0<<0) 383#define VENC_YINTP_BYPASS (1<<0) 384 385/* VENC_CC_CARR_WSS_CARR bits */ 386#define VENCB_FWSS 16 387#define VENCB_FCC 0 388 389/* VENC_X_COLOR bits */ 390#define VENC_XCE (1<<6) 391#define VENC_XCBW_32_8 (0<<3) 392#define VENC_XCBW_26_5 (1<<3) 393#define VENC_XCBW_30_0 (2<<3) 394#define VENC_XCBW_29_2 (3<<3) 395#define VENC_LCD_0_0 0 396#define VENC_LCD_0_5 1 397#define VENC_LCD_1_0 2 398#define VENC_LCD_1_5 3 399#define VENC_LCD_m2_0 4 400#define VENC_LCD_m1_5 5 401#define VENC_LCD_m1_0 6 402#define VENC_LCD_m0_5 7 403 404/* VENC_M_CONTROL bits */ 405#define VENC_M_PALI (1<<7) 406#define VENC_M_PALN (1<<6) 407#define VENC_M_PALPHS (1<<5) 408#define VENC_M_CBW_21_8 (0<<2) 409#define VENC_M_CBW_19_8 (1<<2) 410#define VENC_M_CBW_18_0 (2<<2) 411#define VENC_M_CBW_23_7 (5<<2) 412#define VENC_M_CBW_26_8 (6<<2) 413#define VENC_M_CBW_BYPASS (7<<2) 414#define VENC_M_PAL (1<<1) 415#define VENC_M_NTSC (1<<0) 416 417/* VENC_BSTAMP_WSS_DATA bits */ 418#define VENCB_WSS_DATA (8) 419#define VENC_SQP (1<<7) 420 421/* VENC_S_CARR values - presets assuming Fclkenc = 27Mhz */ 422#define VENC_FSC_R601_NTSC_M 0x21F07C1F 423#define VENC_FSC_R601_PAL_M 0x21E6EFE3 424#define VENC_FSC_R601_PAL_G 0x2A098ACB 425#define VENC_FSC_R601_PAL_Nc 0x21E6EFE3 426 427#endif 428