// // Copyright 2023 Wenting Zhang // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // #pragma once /* BOARD REVISION CONFIGURATION */ // Eariler revisions are not supported #define BOARD_REV_R0P6 //#define BOARD_REV_R0P7 /* SCREEN CONFIGURATION */ // #define SCREEN_6_0_INCH // #define SCREEN_7_8_INCH // #define SCREEN_9_7_INCH // #define SCREEN_10_1_INCH // #define SCREEN_10_3_INCH // #define SCREEN_10_8_INCH // #define SCREEN_11_3_INCH #define SCREEN_13_3_INCH // #define SCREEN_600_800 // #define SCREEN_800_600 // #define SCREEN_1024_758 // #define SCREEN_1200_825 // #define SCREEN_1448_1072 #define SCREEN_1600_1200 // #define SCREEN_1872_1404 // #define SCREEN_1920_1080 // #define SCREEN_2200_1650 // #define SCREEN_2232_1680 //#define SCREEN_2400_1034 #define SCREEN_MONO // #define SCREEN_DES_COLOR /* SET BASED ON PREVIOUS DEFINES, DO NOT MODIFY */ #if defined(BOARD_REV_R0P6) #define POWER_GPIO #define INPUT_PTN3460 #define HAS_TYPEC #define TYPEC_MB_ORI_INV 1 #define TYPEC_AUX_ORI_INV 1 #define I2C_SDA 0 #define I2C_SCL 1 #define TCPC_I2C i2c0 #define FPGA_CS 12 #define FPGA_MOSI 13 #define FPGA_MISO 14 #define FPGA_SCLK 15 #define FPGA_PROG 17 #define FPGA_DONE 18 #define FPGA_SUSP 19 #define PTN3460_I2C (i2c0) #define PTN3460_HPD_PIN (8) #define PTN3460_PDN_PIN (9) #define PTN3460_VALID_PIN (2) #elif defined(BOARD_REV_R0P7) #define POWER_GPIO #define POWER_GPIO_VCOM_MEASURE #define INPUT_ADV7611 #define INPUT_PTN3460 #define HAS_TYPEC #define HAS_BUTTON #define TYPEC_MB_ORI_INV 0 #define TYPEC_AUX_ORI_INV 1 #define I2C_SDA 2 #define I2C_SCL 3 #define TCPC_I2C i2c1 #define FPGA_CS 13 #define FPGA_MOSI 15 #define FPGA_MISO 12 #define FPGA_SCLK 14 #define FPGA_PROG 17 #define FPGA_DONE 18 #define FPGA_SUSP 19 #define PTN3460_I2C (i2c1) #define PTN3460_HPD_PIN (7) #define PTN3460_PDN_PIN (9) #define PTN3460_VALID_PIN (4) #else #error "Unknown board revision" #endif // Used in EDID #define SCREEN_ASPECT_16_10 0x00 #define SCREEN_ASPECT_4_3 0x40 #define SCREEN_ASPECT_5_4 0x80 #define SCREEN_ASPECT_16_9 0xC0 // Screen dimension in mm #if defined(SCREEN_6_0_INCH) #define SCREEN_SIZE_X 122 #define SCREEN_SIZE_Y 91 #define SCREEN_ASPECT SCREEN_ASPECT_4_3 #elif defined(SCREEN_7_8_INCH) #define SCREEN_SIZE_X 158 #define SCREEN_SIZE_Y 119 #define SCREEN_ASPECT SCREEN_ASPECT_4_3 #elif defined(SCREEN_9_7_INCH) #define SCREEN_SIZE_X 203 #define SCREEN_SIZE_Y 139 #define SCREEN_ASPECT SCREEN_ASPECT_4_3 #elif defined(SCREEN_10_1_INCH) #define SCREEN_SIZE_X 203 #define SCREEN_SIZE_Y 152 #define SCREEN_ASPECT SCREEN_ASPECT_4_3 #elif defined(SCREEN_10_3_INCH) #define SCREEN_SIZE_X 209 #define SCREEN_SIZE_Y 157 #define SCREEN_ASPECT SCREEN_ASPECT_4_3 #elif defined(SCREEN_10_8_INCH) #define SCREEN_SIZE_X 239 #define SCREEN_SIZE_Y 134 #define SCREEN_ASPECT SCREEN_ASPECT_16_9 #elif defined(SCREEN_13_3_INCH) #define SCREEN_SIZE_X 270 #define SCREEN_SIZE_Y 203 #define SCREEN_ASPECT SCREEN_ASPECT_4_3 #elif defined(SCREEN_11_3_INCH) #define SCREEN_SIZE_X 264 #define SCREEN_SIZE_Y 114 #define SCREEN_ASPECT SCREEN_ASPECT_16_9 #else #error "Unknown screen size" #endif // Screen timing #if defined(SCREEN_600_800) // 600x800 @ 60 #define SCREEN_CLK 61000 #define SCREEN_HACT 600 #define SCREEN_VACT 800 #define SCREEN_HBLK 600 #define SCREEN_HFP 64 #define SCREEN_HSYNC 192 #define SCREEN_VBLK 48 #define SCREEN_VFP 1 #define SCREEN_VSYNC 3 #elif defined(SCREEN_800_600) // 800x600 @ 60, 40MHz DMT #define SCREEN_CLK 40000 #define SCREEN_HACT 800 #define SCREEN_VACT 600 #define SCREEN_HBLK 256 #define SCREEN_HFP 40 #define SCREEN_HSYNC 128 #define SCREEN_VBLK 28 #define SCREEN_VFP 1 #define SCREEN_VSYNC 4 #elif defined(SCREEN_1024_758) // 1024x758 @ 60, 62.5MHz CVT #define SCREEN_CLK 62500 #define SCREEN_HACT 1024 #define SCREEN_VACT 758 #define SCREEN_HBLK 304 #define SCREEN_HFP 48 #define SCREEN_HSYNC 104 #define SCREEN_VBLK 29 #define SCREEN_VFP 3 #define SCREEN_VSYNC 10 #define TCON_HACT 256 #define TCON_HBP 2 #define TCON_HSYNC 2 #define TCON_HFP 72 #define TCON_VACT 758 #define TCON_VBP 3 #define TCON_VSYNC 1 #define TCON_VFP 12 #elif defined(SCREEN_1200_825) // 1200x832 @ 60, 80.5MHz CVT #define SCREEN_CLK 81000 #define SCREEN_HACT 1200 #define SCREEN_VACT 832 #define SCREEN_HBLK 368 #define SCREEN_HFP 64 #define SCREEN_HSYNC 120 #define SCREEN_VBLK 32 #define SCREEN_VFP 3 #define SCREEN_VSYNC 10 #define TCON_HACT 300 #define TCON_HBP 10 #define TCON_HSYNC 20 #define TCON_HFP 62 #define TCON_VACT 832 #define TCON_VBP 3 #define TCON_VSYNC 1 #define TCON_VFP 20 #elif defined(SCREEN_1448_1072) // 1448x1072 @ 60, 128.5MHz CVT #define SCREEN_CLK 128500 #define SCREEN_HACT 1448 #define SCREEN_VACT 1072 #define SCREEN_HBLK 480 #define SCREEN_HFP 88 #define SCREEN_HSYNC 152 #define SCREEN_VBLK 40 #define SCREEN_VFP 3 #define SCREEN_VSYNC 10 #elif defined(SCREEN_1600_1200) // 1600x1200 @ 60, 162MHz DMT // #define SCREEN_CLK 162000 // #define SCREEN_HACT 1600 // #define SCREEN_VACT 1200 // #define SCREEN_HBLK 560 // #define SCREEN_HFP 64 // #define SCREEN_HSYNC 192 // #define SCREEN_VBLK 50 // #define SCREEN_VFP 1 // #define SCREEN_VSYNC 3 // 1600x1200 @ 60, 130.25MHz CVT-RB // #define SCREEN_CLK 130250 // #define SCREEN_HACT 1600 // #define SCREEN_VACT 1200 // #define SCREEN_HBLK 160 // #define SCREEN_HFP 48 // #define SCREEN_HSYNC 32 // #define SCREEN_VBLK 35 // #define SCREEN_VFP 3 // #define SCREEN_VSYNC 4 // 1600x1200 @ 60, 124.488MHz CVT-RB-v2 #define SCREEN_CLK 124488 #define SCREEN_HACT 1600 #define SCREEN_VACT 1200 #define SCREEN_HBLK 80 #define SCREEN_HFP 8 #define SCREEN_HSYNC 32 #define SCREEN_VBLK 35 #define SCREEN_VFP 21 #define SCREEN_VSYNC 8 #define TCON_HACT 400 #define TCON_HBP 10 #define TCON_HSYNC 10 #define TCON_HFP 120 #define TCON_VACT 1200 #define TCON_VBP 2 #define TCON_VSYNC 1 #define TCON_VFP 45 #elif defined(SCREEN_1872_1404) // 1872x1404 @ 60, 162MHz Custom #define SCREEN_CLK 162000 #define SCREEN_HACT 1872 #define SCREEN_VACT 1404 #define SCREEN_HBLK 38 #define SCREEN_HFP 6 #define SCREEN_HSYNC 10 #define SCREEN_VBLK 10 #define SCREEN_VFP 1 #define SCREEN_VSYNC 3 #elif defined(SCREEN_1920_1080) // 1920x1080 @ 60, 148.5MHz CEA-861/DMT #define SCREEN_CLK 148500 #define SCREEN_HACT 1920 #define SCREEN_VACT 1080 #define SCREEN_HBLK 280 #define SCREEN_HFP 88 #define SCREEN_HSYNC 44 #define SCREEN_VBLK 45 #define SCREEN_VFP 4 #define SCREEN_VSYNC 5 #elif defined(SCREEN_2200_1650) // 2200x1650 @ 60, 224MHz Custom #define SCREEN_CLK 224000 #define SCREEN_HACT 2200 #define SCREEN_VACT 1650 #define SCREEN_HBLK 36 #define SCREEN_HFP 6 #define SCREEN_HSYNC 10 #define SCREEN_VBLK 20 #define SCREEN_VFP 1 #define SCREEN_VSYNC 5 #elif defined(SCREEN_2232_1680) // 2232x1680 @ 50, 198.25MHz Custom #define SCREEN_CLK 178000 #define SCREEN_HACT 2232 #define SCREEN_VACT 1680 #define SCREEN_HBLK 80 #define SCREEN_HFP 8 #define SCREEN_HSYNC 32 #define SCREEN_VBLK 35 #define SCREEN_VFP 21 #define SCREEN_VSYNC 8 #elif defined(SCREEN_2400_1034) // 2400x1034 #define SCREEN_CLK 159000 #define SCREEN_HACT 2400 #define SCREEN_VACT 1034 #define SCREEN_HBLK 80 #define SCREEN_HFP 8 #define SCREEN_HSYNC 32 #define SCREEN_VBLK 35 #define SCREEN_VFP 21 #define SCREEN_VSYNC 8 #endif