1*d83cc019SAndroid Build Coastguard Worker /* 2*d83cc019SAndroid Build Coastguard Worker * Copyright � 2006 Intel Corporation 3*d83cc019SAndroid Build Coastguard Worker * 4*d83cc019SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*d83cc019SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 6*d83cc019SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 7*d83cc019SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*d83cc019SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 9*d83cc019SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 10*d83cc019SAndroid Build Coastguard Worker * 11*d83cc019SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 12*d83cc019SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 13*d83cc019SAndroid Build Coastguard Worker * Software. 14*d83cc019SAndroid Build Coastguard Worker * 15*d83cc019SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16*d83cc019SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*d83cc019SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*d83cc019SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19*d83cc019SAndroid Build Coastguard Worker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20*d83cc019SAndroid Build Coastguard Worker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21*d83cc019SAndroid Build Coastguard Worker * SOFTWARE. 22*d83cc019SAndroid Build Coastguard Worker * 23*d83cc019SAndroid Build Coastguard Worker * Authors: 24*d83cc019SAndroid Build Coastguard Worker * Eric Anholt <[email protected]> 25*d83cc019SAndroid Build Coastguard Worker * 26*d83cc019SAndroid Build Coastguard Worker */ 27*d83cc019SAndroid Build Coastguard Worker 28*d83cc019SAndroid Build Coastguard Worker #ifndef _INTEL_BIOS_H_ 29*d83cc019SAndroid Build Coastguard Worker #define _INTEL_BIOS_H_ 30*d83cc019SAndroid Build Coastguard Worker 31*d83cc019SAndroid Build Coastguard Worker #include <stdint.h> 32*d83cc019SAndroid Build Coastguard Worker 33*d83cc019SAndroid Build Coastguard Worker #define DEVICE_HANDLE_CRT 0x01 34*d83cc019SAndroid Build Coastguard Worker #define DEVICE_HANDLE_EFP1 0x04 35*d83cc019SAndroid Build Coastguard Worker #define DEVICE_HANDLE_EFP2 0x40 36*d83cc019SAndroid Build Coastguard Worker #define DEVICE_HANDLE_EFP3 0x20 37*d83cc019SAndroid Build Coastguard Worker #define DEVICE_HANDLE_EFP4 0x10 38*d83cc019SAndroid Build Coastguard Worker #define DEVICE_HANDLE_LPF1 0x08 39*d83cc019SAndroid Build Coastguard Worker #define DEVICE_HANDLE_LFP2 0x80 40*d83cc019SAndroid Build Coastguard Worker 41*d83cc019SAndroid Build Coastguard Worker #define DEVICE_TYPE_DP_DVI 0x68d6 42*d83cc019SAndroid Build Coastguard Worker #define DEVICE_TYPE_DVI 0x68d2 43*d83cc019SAndroid Build Coastguard Worker #define DEVICE_TYPE_MIPI 0x7cc2 44*d83cc019SAndroid Build Coastguard Worker 45*d83cc019SAndroid Build Coastguard Worker struct bdb_legacy_child_devices { 46*d83cc019SAndroid Build Coastguard Worker uint8_t child_dev_size; 47*d83cc019SAndroid Build Coastguard Worker uint8_t devices[0]; /* presumably 7 * 33 */ 48*d83cc019SAndroid Build Coastguard Worker } __attribute__ ((packed)); 49*d83cc019SAndroid Build Coastguard Worker 50*d83cc019SAndroid Build Coastguard Worker #define BDB_DRIVER_NO_LVDS 0 51*d83cc019SAndroid Build Coastguard Worker #define BDB_DRIVER_INT_LVDS 1 52*d83cc019SAndroid Build Coastguard Worker #define BDB_DRIVER_SDVO_LVDS 2 53*d83cc019SAndroid Build Coastguard Worker #define BDB_DRIVER_EDP 3 54*d83cc019SAndroid Build Coastguard Worker 55*d83cc019SAndroid Build Coastguard Worker struct edp_power_seq { 56*d83cc019SAndroid Build Coastguard Worker uint16_t t3; 57*d83cc019SAndroid Build Coastguard Worker uint16_t t7; 58*d83cc019SAndroid Build Coastguard Worker uint16_t t9; 59*d83cc019SAndroid Build Coastguard Worker uint16_t t10; 60*d83cc019SAndroid Build Coastguard Worker uint16_t t12; 61*d83cc019SAndroid Build Coastguard Worker } __attribute__ ((packed)); 62*d83cc019SAndroid Build Coastguard Worker 63*d83cc019SAndroid Build Coastguard Worker /* Block 52 contains MiPi Panel info 64*d83cc019SAndroid Build Coastguard Worker * 6 such enteries will there. Index into correct 65*d83cc019SAndroid Build Coastguard Worker * entery is based on the panel_index in #40 LFP 66*d83cc019SAndroid Build Coastguard Worker */ 67*d83cc019SAndroid Build Coastguard Worker #define MAX_MIPI_CONFIGURATIONS 6 68*d83cc019SAndroid Build Coastguard Worker struct mipi_config { 69*d83cc019SAndroid Build Coastguard Worker uint16_t panel_id; 70*d83cc019SAndroid Build Coastguard Worker 71*d83cc019SAndroid Build Coastguard Worker /* General Params */ 72*d83cc019SAndroid Build Coastguard Worker uint32_t dithering:1; 73*d83cc019SAndroid Build Coastguard Worker uint32_t rsvd1:1; 74*d83cc019SAndroid Build Coastguard Worker uint32_t panel_type:1; 75*d83cc019SAndroid Build Coastguard Worker uint32_t panel_arch_type:2; 76*d83cc019SAndroid Build Coastguard Worker uint32_t cmd_mode:1; 77*d83cc019SAndroid Build Coastguard Worker uint32_t vtm:2; 78*d83cc019SAndroid Build Coastguard Worker uint32_t cabc:1; 79*d83cc019SAndroid Build Coastguard Worker uint32_t pwm_blc:1; 80*d83cc019SAndroid Build Coastguard Worker 81*d83cc019SAndroid Build Coastguard Worker /* Bit 13:10 82*d83cc019SAndroid Build Coastguard Worker * 000 - Reserved, 001 - RGB565, 002 - RGB666, 83*d83cc019SAndroid Build Coastguard Worker * 011 - RGB666Loosely packed, 100 - RGB888, 84*d83cc019SAndroid Build Coastguard Worker * others - rsvd 85*d83cc019SAndroid Build Coastguard Worker */ 86*d83cc019SAndroid Build Coastguard Worker uint32_t videomode_color_format:4; 87*d83cc019SAndroid Build Coastguard Worker 88*d83cc019SAndroid Build Coastguard Worker /* Bit 15:14 89*d83cc019SAndroid Build Coastguard Worker * 0 - No rotation, 1 - 90 degree 90*d83cc019SAndroid Build Coastguard Worker * 2 - 180 degree, 3 - 270 degree 91*d83cc019SAndroid Build Coastguard Worker */ 92*d83cc019SAndroid Build Coastguard Worker uint32_t rotation:2; 93*d83cc019SAndroid Build Coastguard Worker uint32_t bta:1; 94*d83cc019SAndroid Build Coastguard Worker uint32_t rsvd2:15; 95*d83cc019SAndroid Build Coastguard Worker 96*d83cc019SAndroid Build Coastguard Worker /* 2 byte Port Description */ 97*d83cc019SAndroid Build Coastguard Worker uint16_t dual_link:2; 98*d83cc019SAndroid Build Coastguard Worker uint16_t lane_cnt:2; 99*d83cc019SAndroid Build Coastguard Worker uint16_t pixel_overlap:3; 100*d83cc019SAndroid Build Coastguard Worker uint16_t rsvd3:9; 101*d83cc019SAndroid Build Coastguard Worker 102*d83cc019SAndroid Build Coastguard Worker /* 2 byte DSI COntroller params */ 103*d83cc019SAndroid Build Coastguard Worker /* 0 - Using DSI PHY, 1 - TE usage */ 104*d83cc019SAndroid Build Coastguard Worker uint16_t dsi_usage:1; 105*d83cc019SAndroid Build Coastguard Worker uint16_t rsvd4:15; 106*d83cc019SAndroid Build Coastguard Worker 107*d83cc019SAndroid Build Coastguard Worker uint8_t rsvd5[5]; 108*d83cc019SAndroid Build Coastguard Worker uint32_t dsi_ddr_clk; 109*d83cc019SAndroid Build Coastguard Worker uint32_t bridge_ref_clk; 110*d83cc019SAndroid Build Coastguard Worker 111*d83cc019SAndroid Build Coastguard Worker uint8_t byte_clk_sel:2; 112*d83cc019SAndroid Build Coastguard Worker uint8_t rsvd6:6; 113*d83cc019SAndroid Build Coastguard Worker 114*d83cc019SAndroid Build Coastguard Worker /* DPHY Flags */ 115*d83cc019SAndroid Build Coastguard Worker uint16_t dphy_param_valid:1; 116*d83cc019SAndroid Build Coastguard Worker uint16_t eot_disabled:1; 117*d83cc019SAndroid Build Coastguard Worker uint16_t clk_stop:1; 118*d83cc019SAndroid Build Coastguard Worker uint16_t rsvd7:13; 119*d83cc019SAndroid Build Coastguard Worker 120*d83cc019SAndroid Build Coastguard Worker uint32_t hs_tx_timeout; 121*d83cc019SAndroid Build Coastguard Worker uint32_t lp_rx_timeout; 122*d83cc019SAndroid Build Coastguard Worker uint32_t turn_around_timeout; 123*d83cc019SAndroid Build Coastguard Worker uint32_t device_reset_timer; 124*d83cc019SAndroid Build Coastguard Worker uint32_t master_init_timer; 125*d83cc019SAndroid Build Coastguard Worker uint32_t dbi_bw_timer; 126*d83cc019SAndroid Build Coastguard Worker uint32_t lp_byte_clk_val; 127*d83cc019SAndroid Build Coastguard Worker 128*d83cc019SAndroid Build Coastguard Worker /* 4 byte Dphy Params */ 129*d83cc019SAndroid Build Coastguard Worker uint32_t prepare_cnt:6; 130*d83cc019SAndroid Build Coastguard Worker uint32_t rsvd8:2; 131*d83cc019SAndroid Build Coastguard Worker uint32_t clk_zero_cnt:8; 132*d83cc019SAndroid Build Coastguard Worker uint32_t trail_cnt:5; 133*d83cc019SAndroid Build Coastguard Worker uint32_t rsvd9:3; 134*d83cc019SAndroid Build Coastguard Worker uint32_t exit_zero_cnt:6; 135*d83cc019SAndroid Build Coastguard Worker uint32_t rsvd10:2; 136*d83cc019SAndroid Build Coastguard Worker 137*d83cc019SAndroid Build Coastguard Worker uint32_t clk_lane_switch_cnt; 138*d83cc019SAndroid Build Coastguard Worker uint32_t hl_switch_cnt; 139*d83cc019SAndroid Build Coastguard Worker 140*d83cc019SAndroid Build Coastguard Worker uint32_t rsvd11[6]; 141*d83cc019SAndroid Build Coastguard Worker 142*d83cc019SAndroid Build Coastguard Worker /* timings based on dphy spec */ 143*d83cc019SAndroid Build Coastguard Worker uint8_t tclk_miss; 144*d83cc019SAndroid Build Coastguard Worker uint8_t tclk_post; 145*d83cc019SAndroid Build Coastguard Worker uint8_t rsvd12; 146*d83cc019SAndroid Build Coastguard Worker uint8_t tclk_pre; 147*d83cc019SAndroid Build Coastguard Worker uint8_t tclk_prepare; 148*d83cc019SAndroid Build Coastguard Worker uint8_t tclk_settle; 149*d83cc019SAndroid Build Coastguard Worker uint8_t tclk_term_enable; 150*d83cc019SAndroid Build Coastguard Worker uint8_t tclk_trail; 151*d83cc019SAndroid Build Coastguard Worker uint16_t tclk_prepare_clkzero; 152*d83cc019SAndroid Build Coastguard Worker uint8_t rsvd13; 153*d83cc019SAndroid Build Coastguard Worker uint8_t td_term_enable; 154*d83cc019SAndroid Build Coastguard Worker uint8_t teot; 155*d83cc019SAndroid Build Coastguard Worker uint8_t ths_exit; 156*d83cc019SAndroid Build Coastguard Worker uint8_t ths_prepare; 157*d83cc019SAndroid Build Coastguard Worker uint16_t ths_prepare_hszero; 158*d83cc019SAndroid Build Coastguard Worker uint8_t rsvd14; 159*d83cc019SAndroid Build Coastguard Worker uint8_t ths_settle; 160*d83cc019SAndroid Build Coastguard Worker uint8_t ths_skip; 161*d83cc019SAndroid Build Coastguard Worker uint8_t ths_trail; 162*d83cc019SAndroid Build Coastguard Worker uint8_t tinit; 163*d83cc019SAndroid Build Coastguard Worker uint8_t tlpx; 164*d83cc019SAndroid Build Coastguard Worker uint8_t rsvd15[3]; 165*d83cc019SAndroid Build Coastguard Worker 166*d83cc019SAndroid Build Coastguard Worker /* GPIOs */ 167*d83cc019SAndroid Build Coastguard Worker uint8_t panel_enable; 168*d83cc019SAndroid Build Coastguard Worker uint8_t bl_enable; 169*d83cc019SAndroid Build Coastguard Worker uint8_t pwm_enable; 170*d83cc019SAndroid Build Coastguard Worker uint8_t reset_r_n; 171*d83cc019SAndroid Build Coastguard Worker uint8_t pwr_down_r; 172*d83cc019SAndroid Build Coastguard Worker uint8_t stdby_r_n; 173*d83cc019SAndroid Build Coastguard Worker 174*d83cc019SAndroid Build Coastguard Worker } __attribute__ ((packed)); 175*d83cc019SAndroid Build Coastguard Worker 176*d83cc019SAndroid Build Coastguard Worker /* Block 52 contains MiPi configuration block 177*d83cc019SAndroid Build Coastguard Worker * 6 * bdb_mipi_config, followed by 6 pps data 178*d83cc019SAndroid Build Coastguard Worker * block below 179*d83cc019SAndroid Build Coastguard Worker */ 180*d83cc019SAndroid Build Coastguard Worker struct mipi_pps_data { 181*d83cc019SAndroid Build Coastguard Worker uint16_t panel_on_delay; 182*d83cc019SAndroid Build Coastguard Worker uint16_t bl_enable_delay; 183*d83cc019SAndroid Build Coastguard Worker uint16_t bl_disable_delay; 184*d83cc019SAndroid Build Coastguard Worker uint16_t panel_off_delay; 185*d83cc019SAndroid Build Coastguard Worker uint16_t panel_power_cycle_delay; 186*d83cc019SAndroid Build Coastguard Worker } __attribute__ ((packed)); 187*d83cc019SAndroid Build Coastguard Worker 188*d83cc019SAndroid Build Coastguard Worker /* MIPI Sequence Block definitions */ 189*d83cc019SAndroid Build Coastguard Worker enum mipi_seq { 190*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_END = 0, 191*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_ASSERT_RESET, 192*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_INIT_OTP, 193*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_DISPLAY_ON, 194*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_DISPLAY_OFF, 195*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_DEASSERT_RESET, 196*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_BACKLIGHT_ON, /* sequence block v2+ */ 197*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_BACKLIGHT_OFF, /* sequence block v2+ */ 198*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_TEAR_ON, /* sequence block v2+ */ 199*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_TEAR_OFF, /* sequence block v3+ */ 200*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_POWER_ON, /* sequence block v3+ */ 201*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_POWER_OFF, /* sequence block v3+ */ 202*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_MAX 203*d83cc019SAndroid Build Coastguard Worker }; 204*d83cc019SAndroid Build Coastguard Worker 205*d83cc019SAndroid Build Coastguard Worker enum mipi_seq_element { 206*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_ELEM_END = 0, 207*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_ELEM_SEND_PKT, 208*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_ELEM_DELAY, 209*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_ELEM_GPIO, 210*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_ELEM_I2C, /* sequence block v2+ */ 211*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_ELEM_SPI, /* sequence block v3+ */ 212*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_ELEM_PMIC, /* sequence block v3+ */ 213*d83cc019SAndroid Build Coastguard Worker MIPI_SEQ_ELEM_MAX 214*d83cc019SAndroid Build Coastguard Worker }; 215*d83cc019SAndroid Build Coastguard Worker 216*d83cc019SAndroid Build Coastguard Worker #endif /* _INTEL_BIOS_H_ */ 217