// Copyright 2018 The Fuchsia Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #pragma once // clang-format off #define OVL_STA (0x0000) #define OVL_INTEN (0x0004) #define OVL_INTSTA (0x0008) #define OVL_EN (0x000C) #define OVL_TRIG (0x0010) #define OVL_RST (0x0014) #define OVL_ROI_SIZE (0x0020) #define OVL_DATAPATH_CON (0x0024) #define OVL_ROI_BGCLR (0x0028) #define OVL_SRC_CON (0x002C) #define OVL_Lx_CON(x) (0x0030 + (0x20 * x)) #define OVL_Lx_SRCKEY(x) (0x0034 + (0x20 * x)) #define OVL_Lx_SRC_SIZE(x) (0x0038 + (0x20 * x)) #define OVL_Lx_OFFSET(x) (0x003C + (0x20 * x)) #define OVL_Lx_ADDR(x) (0x0F40 + (0x20 * x)) #define OVL_Lx_PITCH(x) (0x0044 + (0x20 * x)) #define OVL_Lx_TILE(x) (0x0048 + (0x20 * x)) #define OVL_RDMAx_CTRL(x) (0x00C0 + (0x20 * x)) #define OVL_RDMAx_MEM_GMC_SETTING(x) (0x00C8 + (0x20 * x)) #define OVL_RDMAx_MEM_SLOW_CON(x) (0x00CC + (0x20 * x)) #define OVL_RDMAx_FIFO_CTRL(x) (0x00D0 + (0x20 * x)) #define OVL_Lx_Y2R_PARA_R0(x) (0x0134 + (0x20 * x)) #define OVL_Lx_Y2R_PARA_R1(x) (0x0138 + (0x20 * x)) #define OVL_Lx_Y2R_PARA_G0(x) (0x013C + (0x20 * x)) #define OVL_Lx_Y2R_PARA_G1(x) (0x0140 + (0x20 * x)) #define OVL_Lx_Y2R_PARA_B0(x) (0x0144 + (0x20 * x)) #define OVL_Lx_Y2R_PARA_B1(x) (0x0148 + (0x20 * x)) #define OVL_Lx_Y2R_PARA_YUV_A_0(x) (0x014C + (0x20 * x)) #define OVL_Lx_Y2R_PARA_YUV_A_1(x) (0x0150 + (0x20 * x)) #define OVL_Lx_Y2R_PARA_RGB_A_0(x) (0x0154 + (0x20 * x)) #define OVL_Lx_Y2R_PARA_RGB_A_1(x) (0x0158 + (0x20 * x)) #define OVL_DEBUG_MON_SEL (0x01D4) #define OVL_RDMAx_MEM_GMC_S2(x) (0x01E0 + (0x04 * x)) #define OVL_DUMMY_REG (0x0200) #define OVL_SMI_DBG (0x0230) #define OVL_GREQ_LAYER_CNT (0x0234) #define OVL_FLOW_CTRL_DBG (0x0240) #define OVL_ADDCON_DBG (0x0244) #define OVL_RDMAx_DBG(x) (0x024C + (0x04 * x)) #define OVL_Lx_CLR(x) (0x025C + (0x04 * x)) // OVL_INTEN Bit Definitions #define INT_FRAME_COMPLETE (1 << 1) // OVL_FLOW_CTRL_DBG Bit Definitions #define OVL_IDLE (0x1) // OVL_SRC_CON Bit Definitions #define SRC_CON_ENABLE_LAYER(x) (1 << x) // OVL_Lx_CON Bit Definitions #define Lx_CON_BYTE_SWAP (1 << 24) #define Lx_CON_CLRFMT(x) (x << 12) #define Lx_CON_AEN (1 << 8) #define Lx_CON_ALPHA(x) (x << 0) // OVL_Lx_PITCH Bit Definitions #define Lx_PITCH_SRFL_EN (1 << 31) #define Lx_PITCH_DST_ALPHA(x) (x << 20) #define Lx_PITCH_SRC_ALPHA(x) (x << 16) #define Lx_PITCH_PITCH(x) (x << 0) #define NO_SRC_ALPHA (0x0) #define SRC_ALPHA (0x5) #define INV_SRC_ALPHA (0xA) // Color Format based on OVL_Lx_CON Register definition enum { RGB565 = 0, RGB888 = 1, RGBA8888 = 2, BGRA8888 = 2, // same as RGBA8888 ARGB8888 = 3, ABGR8888 = 3, // same as ABGR8888 UVVY = 4, VYUY = 4, // same as UVVY YUYV = 5, YVYU = 5, // same as YUYV UNKNOWN_FORMAT = 0xFFFFFFFF, }; // Color Matrix Table based on OVL_Lx_CON Register definition // TODO(payamm): This is only really needed if we ever support YUV enum { JPEG_TO_RGB = 4, // for YUV space BT601_TO_RGB = 6, BT709_TO_RGB = 7, };