1/* $OpenBSD: amdisplayreg.h,v 1.5 2019/05/06 03:45:58 mlarkin Exp $ */ 2/* 3 * Copyright (c) 2016 Ian Sutton <ians@openbsd.org> 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18/* AM335x LCDC register offsets */ 19#define LCD_PID 0x00 20#define LCD_CTRL 0x04 21#define LCD_CTRL_CLKDIV (0xFF << 8) 22#define LCD_CTRL_AUTO_UFLOW_RESTART (1 << 1) 23#define LCD_CTRL_MODESEL (1 << 0) 24#define LCD_CTRL_CLKDIV_SHAMT 8 25#define LCD_RASTER_CTRL 0x28 26#define LCD_RASTER_CTRL_TFT24UNPACKED (1 << 26) 27#define LCD_RASTER_CTRL_TFT24 (1 << 25) 28#define LCD_RASTER_CTRL_STN565 (1 << 24) 29#define LCD_RASTER_CTRL_TFTMAP (1 << 23) 30#define LCD_RASTER_CTRL_NIBMODE (1 << 22) 31#define LCD_RASTER_CTRL_PALMODE (3 << 20) 32#define LCD_RASTER_CTRL_REQDLY (0xFF << 12) 33#define LCD_RASTER_CTRL_LCDTFT (1 << 7) 34#define LCD_RASTER_CTRL_LCDEN (1 << 0) 35#define LCD_RASTER_CTRL_PALMODE_SHAMT 20 36#define LCD_RASTER_CTRL_REQDLY_SHAMT 12 37#define LCD_RASTER_TIMING_0 0x2C 38#define LCD_RASTER_TIMING_0_HBP (0xFF << 24) 39#define LCD_RASTER_TIMING_0_HFP (0xFF << 16) 40#define LCD_RASTER_TIMING_0_HSW (0x3F << 10) 41#define LCD_RASTER_TIMING_0_PPLLSB (0x3 << 4) 42#define LCD_RASTER_TIMING_0_PPLMSB (0x1 << 3) 43#define LCD_RASTER_TIMING_0_HBP_SHAMT 24 44#define LCD_RASTER_TIMING_0_HFP_SHAMT 16 45#define LCD_RASTER_TIMING_0_HSW_SHAMT 10 46#define LCD_RASTER_TIMING_0_PPLLSB_SHAMT 4 47#define LCD_RASTER_TIMING_0_PPLMSB_SHAMT 3 48#define LCD_RASTER_TIMING_1 0x30 49#define LCD_RASTER_TIMING_1_VBP (0xFF << 24) 50#define LCD_RASTER_TIMING_1_VFP (0xFF << 16) 51#define LCD_RASTER_TIMING_1_VSW (0x3C << 10) 52#define LCD_RASTER_TIMING_1_LPP (0x3FF << 0) 53#define LCD_RASTER_TIMING_1_VBP_SHAMT 24 54#define LCD_RASTER_TIMING_1_VFP_SHAMT 16 55#define LCD_RASTER_TIMING_1_VSW_SHAMT 10 56#define LCD_RASTER_TIMING_2 0x34 57#define LCD_RASTER_TIMING_2_HSW_HIGHBITS (0xF << 27) 58#define LCD_RASTER_TIMING_2_LPP_B10 (0x1 << 26) 59#define LCD_RASTER_TIMING_2_PHSVS_ON_OFF (0x1 << 25) 60#define LCD_RASTER_TIMING_2_PHSVS_RF (0x1 << 24) 61#define LCD_RASTER_TIMING_2_IEO (0x1 << 23) 62#define LCD_RASTER_TIMING_2_IPC (0x1 << 22) 63#define LCD_RASTER_TIMING_2_IHS (0x1 << 21) 64#define LCD_RASTER_TIMING_2_IVS (0x1 << 20) 65#define LCD_RASTER_TIMING_2_ACBI (0xF << 16) 66#define LCD_RASTER_TIMING_2_ACB (0xFF << 8) 67#define LCD_RASTER_TIMING_2_HBP_HIGHBITS (0x3 << 4) 68#define LCD_RASTER_TIMING_2_HFP_HIGHBITS (0x3 << 0) 69#define LCD_RASTER_TIMING_2_HSW_HIGHBITS_SHAMT 27 70#define LCD_RASTER_TIMING_2_LPP_B10_SHAMT 26 71#define LCD_RASTER_TIMING_2_ACBI_SHAMT 16 72#define LCD_RASTER_TIMING_2_ACB_SHAMT 8 73#define LCD_RASTER_TIMING_2_HPB_HIGHBITS_SHAMT 4 74#define LCD_RASTER_SUBPANEL 0x38 75#define LCD_RASTER_SUBPANEL_SPEN (0x1 << 31) 76#define LCD_RASTER_SUBPANEL_HOLS (0x1 << 29) 77#define LCD_RASTER_SUBPANEL_LPPT (0x2FF << 16) 78#define LCD_RASTER_SUBPANEL_DPDLSB (0xFFFF << 0) 79#define LCD_RASTER_SUBPANEL_LPPT_SHAMT 80#define LCD_RASTER_SUBPANEL_2 0x3C 81#define LCD_RASTER_SUBPANEL2_LPPT_B10 (0x1 << 8) 82#define LCD_RASTER_SUBPANEL2_DPDMSB (0xFF << 0) 83#define LCD_LCDDMA_CTRL 0x40 84#define LCD_LCDDMA_CTRL_DMA_MASTER_PRIO (0x7 << 0x10) 85#define LCD_LCDDMA_CTRL_TH_FIFO_READY (0x7 << 0x08) 86#define LCD_LCDDMA_CTRL_BURST_SIZE (0x7 << 0x04) 87#define LCD_LCDDMA_CTRL_BYTE_SWAP (0x1 << 0x03) 88#define LCD_LCDDMA_CTRL_BIGENDIAN (0x1 << 0x01) 89#define LCD_LCDDMA_CTRL_FRAME_MODE (0x1 << 0x00) 90#define LCD_LCDDMA_CTRL_DMA_MASTER_PRIO_SHAMT 0xFF 91#define LCD_LCDDMA_CTRL_TH_FIFO_READY_SHAMT 0x08 92#define LCD_LCDDMA_CTRL_BURST_SIZE_SHAMT 0x04 93#define LCD_LCDDMA_FB0 0x44 94#define LCD_LCDDMA_FB0_BASE 0xFFFC 95#define LCD_LCDDMA_FB0_BASE_SHAMT 0 96#define LCD_LCDDMA_FB0_CEIL 0x48 97#define LCD_LCDDMA_FB0_CEILING 0xFFFC 98#define LCD_LCDDMA_FB0_CEILING_SHAMT 0 99#define LCD_LCDDMA_FB1 0x4C 100#define LCD_LCDDMA_FB1_BASE 0xFFFC 101#define LCD_LCDDMA_FB1_BASE_SHAMT 0 102#define LCD_LCDDMA_FB1_CEIL 0x50 103#define LCD_LCDDMA_FB1_CEILING 0xFFFC 104#define LCD_LCDDMA_FB1_CEILING_SHAMT 0 105#define LCD_SYSCONFIG 0x54 106#define LCD_SYSCONFIG_STANDBYMODE (2 << 4) 107#define LCD_SYSCONFIG_IDLEMODE (2 << 2) 108#define LCD_SYSCONFIG_STANDBYMODE_SHAMT 4 109#define LCD_SYSCONFIG_IDLEMODE_SHAMT 2 110#define LCD_IRQSTATUS_RAW 0x58 111#define LCD_IRQSTATUS 0x5C 112#define LCD_IRQENABLE_SET 0x60 113#define LCD_IRQENABLE_CLEAR 0x64 114#define LCD_IRQ_END 0x68 115#define LCD_CLKC_ENABLE 0x6C 116#define LCD_CLKC_ENABLE_DMA_CLK_EN (1 << 2) 117#define LCD_CLKC_ENABLE_LIDD_CLK_EN (1 << 1) 118#define LCD_CLKC_ENABLE_CORE_CLK_EN (1 << 0) 119#define LCD_CLKC_RESET 0x70 120#define LCD_CLKC_RESET_MAIN_RST (1 << 3) 121#define LCD_CLKC_RESET_DMA_RST (1 << 2) 122#define LCD_CLKC_RESET_LIDD_RST (1 << 1) 123#define LCD_CLKC_RESET_CORE_RST (1 << 0) 124 125/* AM335x LCDC intr. masks */ 126#define LCD_IRQ_EOF1 (1 << 9) 127#define LCD_IRQ_EOF0 (1 << 8) 128#define LCD_IRQ_PL (1 << 6) 129#define LCD_IRQ_FUF (1 << 5) 130#define LCD_IRQ_ACB (1 << 3) 131#define LCD_IRQ_SYNC (1 << 2) 132#define LCD_IRQ_RR_DONE (1 << 1) 133#define LCD_IRQ_DONE (1 << 0) 134 135/* EDID reading */ 136#define EDID_LENGTH 0x80 137 138/* phandle for pin muxing */ 139#define LCD_FDT_PHANDLE 0x2f 140