/* * arch/arm/mach-w90x900/include/mach/regs-serial.h * * Copyright (c) 2009 Nuvoton technology corporation * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Description: * Nuvoton Display, LCM Register list * Author: Wang Qiang (rurality.linux@gmail.com) 2009/12/11 * */ #ifndef __ASM_ARM_W90X900_REGS_LDM_H #define __ASM_ARM_W90X900_REGS_LDM_H #include <mach/map.h> /* Display Controller Control/Status Register */ #define REG_LCM_DCCS (0x00) #define LCM_DCCS_ENG_RST (1 << 0) #define LCM_DCCS_VA_EN (1 << 1) #define LCM_DCCS_OSD_EN (1 << 2) #define LCM_DCCS_DISP_OUT_EN (1 << 3) #define LCM_DCCS_DISP_INT_EN (1 << 4) #define LCM_DCCS_CMD_ON (1 << 5) #define LCM_DCCS_FIELD_INTR (1 << 6) #define LCM_DCCS_SINGLE (1 << 7) enum LCM_DCCS_VA_SRC { LCM_DCCS_VA_SRC_YUV422 = (0 << 8), LCM_DCCS_VA_SRC_YCBCR422 = (1 << 8), LCM_DCCS_VA_SRC_RGB888 = (2 << 8), LCM_DCCS_VA_SRC_RGB666 = (3 << 8), LCM_DCCS_VA_SRC_RGB565 = (4 << 8), LCM_DCCS_VA_SRC_RGB444LOW = (5 << 8), LCM_DCCS_VA_SRC_RGB444HIGH = (7 << 8) }; /* Display Device Control Register */ #define REG_LCM_DEV_CTRL (0x04) enum LCM_DEV_CTRL_SWAP_YCbCr { LCM_DEV_CTRL_SWAP_UYVY = (0 << 1), LCM_DEV_CTRL_SWAP_YUYV = (1 << 1), LCM_DEV_CTRL_SWAP_VYUY = (2 << 1), LCM_DEV_CTRL_SWAP_YVYU = (3 << 1) }; enum LCM_DEV_CTRL_RGB_SHIFT { LCM_DEV_CTRL_RGB_SHIFT_NOT = (0 << 3), LCM_DEV_CTRL_RGB_SHIFT_ONECYCLE = (1 << 3), LCM_DEV_CTRL_RGB_SHIFT_TWOCYCLE = (2 << 3), LCM_DEV_CTRL_RGB_SHIFT_NOT_DEF = (3 << 3) }; enum LCM_DEV_CTRL_DEVICE { LCM_DEV_CTRL_DEVICE_YUV422 = (0 << 5), LCM_DEV_CTRL_DEVICE_YUV444 = (1 << 5), LCM_DEV_CTRL_DEVICE_UNIPAC = (4 << 5), LCM_DEV_CTRL_DEVICE_SEIKO_EPSON = (5 << 5), LCM_DEV_CTRL_DEVICE_HIGH_COLOR = (6 << 5), LCM_DEV_CTRL_DEVICE_MPU = (7 << 5) }; #define LCM_DEV_CTRL_LCD_DDA (8) #define LCM_DEV_CTRL_YUV2CCIR (16) enum LCM_DEV_CTRL_LCD_SEL { LCM_DEV_CTRL_LCD_SEL_RGB_GBR = (0 << 17), LCM_DEV_CTRL_LCD_SEL_BGR_RBG = (1 << 17), LCM_DEV_CTRL_LCD_SEL_GBR_RGB = (2 << 17), LCM_DEV_CTRL_LCD_SEL_RBG_BGR = (3 << 17) }; enum LCM_DEV_CTRL_FAL_D { LCM_DEV_CTRL_FAL_D_FALLING = (0 << 19), LCM_DEV_CTRL_FAL_D_RISING = (1 << 19), }; enum LCM_DEV_CTRL_H_POL { LCM_DEV_CTRL_H_POL_LOW = (0 << 20), LCM_DEV_CTRL_H_POL_HIGH = (1 << 20), }; enum LCM_DEV_CTRL_V_POL { LCM_DEV_CTRL_V_POL_LOW = (0 << 21), LCM_DEV_CTRL_V_POL_HIGH = (1 << 21), }; enum LCM_DEV_CTRL_VR_LACE { LCM_DEV_CTRL_VR_LACE_NINTERLACE = (0 << 22), LCM_DEV_CTRL_VR_LACE_INTERLACE = (1 << 22), }; enum LCM_DEV_CTRL_LACE { LCM_DEV_CTRL_LACE_NINTERLACE = (0 << 23), LCM_DEV_CTRL_LACE_INTERLACE = (1 << 23), }; enum LCM_DEV_CTRL_RGB_SCALE { LCM_DEV_CTRL_RGB_SCALE_4096 = (0 << 24), LCM_DEV_CTRL_RGB_SCALE_65536 = (1 << 24), LCM_DEV_CTRL_RGB_SCALE_262144 = (2 << 24), LCM_DEV_CTRL_RGB_SCALE_16777216 = (3 << 24), }; enum LCM_DEV_CTRL_DBWORD { LCM_DEV_CTRL_DBWORD_HALFWORD = (0 << 26), LCM_DEV_CTRL_DBWORD_FULLWORD = (1 << 26), }; enum LCM_DEV_CTRL_MPU68 { LCM_DEV_CTRL_MPU68_80_SERIES = (0 << 27), LCM_DEV_CTRL_MPU68_68_SERIES = (1 << 27), }; enum LCM_DEV_CTRL_DE_POL { LCM_DEV_CTRL_DE_POL_HIGH = (0 << 28), LCM_DEV_CTRL_DE_POL_LOW = (1 << 28), }; #define LCM_DEV_CTRL_CMD16 (29) #define LCM_DEV_CTRL_CM16t18 (30) #define LCM_DEV_CTRL_CMD_LOW (31) /* MPU-Interface LCD Write Command */ #define REG_LCM_MPU_CMD (0x08) /* Interrupt Control/Status Register */ #define REG_LCM_INT_CS (0x0c) #define LCM_INT_CS_DISP_F_EN (1 << 0) #define LCM_INT_CS_UNDERRUN_EN (1 << 1) #define LCM_INT_CS_BUS_ERROR_INT (1 << 28) #define LCM_INT_CS_UNDERRUN_INT (1 << 29) #define LCM_INT_CS_DISP_F_STATUS (1 << 30) #define LCM_INT_CS_DISP_F_INT (1 << 31) /* CRTC Display Size Control Register */ #define REG_LCM_CRTC_SIZE (0x10) #define LCM_CRTC_SIZE_VTTVAL(x) ((x) << 16) #define LCM_CRTC_SIZE_HTTVAL(x) ((x) << 0) /* CRTC Display Enable End */ #define REG_LCM_CRTC_DEND (0x14) #define LCM_CRTC_DEND_VDENDVAL(x) ((x) << 16) #define LCM_CRTC_DEND_HDENDVAL(x) ((x) << 0) /* CRTC Internal Horizontal Retrace Control Register */ #define REG_LCM_CRTC_HR (0x18) #define LCM_CRTC_HR_EVAL(x) ((x) << 16) #define LCM_CRTC_HR_SVAL(x) ((x) << 0) /* CRTC Horizontal Sync Control Register */ #define REG_LCM_CRTC_HSYNC (0x1C) #define LCM_CRTC_HSYNC_SHIFTVAL(x) ((x) << 30) #define LCM_CRTC_HSYNC_EVAL(x) ((x) << 16) #define LCM_CRTC_HSYNC_SVAL(x) ((x) << 0) /* CRTC Internal Vertical Retrace Control Register */ #define REG_LCM_CRTC_VR (0x20) #define LCM_CRTC_VR_EVAL(x) ((x) << 16) #define LCM_CRTC_VR_SVAL(x) ((x) << 0) /* Video Stream Frame Buffer-0 Starting Address */ #define REG_LCM_VA_BADDR0 (0x24) /* Video Stream Frame Buffer-1 Starting Address */ #define REG_LCM_VA_BADDR1 (0x28) /* Video Stream Frame Buffer Control Register */ #define REG_LCM_VA_FBCTRL (0x2C) #define LCM_VA_FBCTRL_IO_REGION_HALF (1 << 28) #define LCM_VA_FBCTRL_FIELD_DUAL (1 << 29) #define LCM_VA_FBCTRL_START_BUF (1 << 30) #define LCM_VA_FBCTRL_DB_EN (1 << 31) /* Video Stream Scaling Control Register */ #define REG_LCM_VA_SCALE (0x30) #define LCM_VA_SCALE_XCOPY_INTERPOLATION (0 << 15) #define LCM_VA_SCALE_XCOPY_DUPLICATION (1 << 15) /* Image Stream Active Window Coordinates */ #define REG_LCM_VA_WIN (0x38) /* Image Stream Stuff Pixel */ #define REG_LCM_VA_STUFF (0x3C) /* OSD Window Starting Coordinates */ #define REG_LCM_OSD_WINS (0x40) /* OSD Window Ending Coordinates */ #define REG_LCM_OSD_WINE (0x44) /* OSD Stream Frame Buffer Starting Address */ #define REG_LCM_OSD_BADDR (0x48) /* OSD Stream Frame Buffer Control Register */ #define REG_LCM_OSD_FBCTRL (0x4c) /* OSD Overlay Control Register */ #define REG_LCM_OSD_OVERLAY (0x50) /* OSD Overlay Color-Key Pattern Register */ #define REG_LCM_OSD_CKEY (0x54) /* OSD Overlay Color-Key Mask Register */ #define REG_LCM_OSD_CMASK (0x58) /* OSD Window Skip1 Register */ #define REG_LCM_OSD_SKIP1 (0x5C) /* OSD Window Skip2 Register */ #define REG_LCM_OSD_SKIP2 (0x60) /* OSD horizontal up scaling control register */ #define REG_LCM_OSD_SCALE (0x64) /* MPU Vsync control register */ #define REG_LCM_MPU_VSYNC (0x68) /* Hardware cursor control Register */ #define REG_LCM_HC_CTRL (0x6C) /* Hardware cursot tip point potison on va picture */ #define REG_LCM_HC_POS (0x70) /* Hardware Cursor Window Buffer Control Register */ #define REG_LCM_HC_WBCTRL (0x74) /* Hardware cursor memory base address register */ #define REG_LCM_HC_BADDR (0x78) /* Hardware cursor color ram register mapped to bpp = 0 */ #define REG_LCM_HC_COLOR0 (0x7C) /* Hardware cursor color ram register mapped to bpp = 1 */ #define REG_LCM_HC_COLOR1 (0x80) /* Hardware cursor color ram register mapped to bpp = 2 */ #define REG_LCM_HC_COLOR2 (0x84) /* Hardware cursor color ram register mapped to bpp = 3 */ #define REG_LCM_HC_COLOR3 (0x88) #endif /* __ASM_ARM_W90X900_REGS_LDM_H */