1*83d290c5STom Rini /* SPDX-License-Identifier: Intel */ 23a1a18ffSSimon Glass /* 33a1a18ffSSimon Glass * Copyright (C) 2013, Intel Corporation 43a1a18ffSSimon Glass * Copyright (C) 2015 Google, Inc 53a1a18ffSSimon Glass */ 63a1a18ffSSimon Glass 73a1a18ffSSimon Glass #ifndef __FSP_VPD_H 83a1a18ffSSimon Glass #define __FSP_VPD_H 93a1a18ffSSimon Glass 103a1a18ffSSimon Glass struct memory_down_data { 113a1a18ffSSimon Glass uint8_t enable_memory_down; 123a1a18ffSSimon Glass uint8_t dram_speed; 133a1a18ffSSimon Glass uint8_t dram_type; 143a1a18ffSSimon Glass uint8_t dimm_0_enable; 153a1a18ffSSimon Glass uint8_t dimm_1_enable; 163a1a18ffSSimon Glass uint8_t dimm_width; 173a1a18ffSSimon Glass uint8_t dimm_density; 183a1a18ffSSimon Glass uint8_t dimm_bus_width; 193a1a18ffSSimon Glass uint8_t dimm_sides; /* Ranks Per dimm_ */ 203a1a18ffSSimon Glass uint8_t dimm_tcl; /* tCL */ 213a1a18ffSSimon Glass /* tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc. */ 223a1a18ffSSimon Glass uint8_t dimm_trpt_rcd; 233a1a18ffSSimon Glass uint8_t dimm_twr; /* tWR in DRAM clk */ 243a1a18ffSSimon Glass uint8_t dimm_twtr; /* tWTR in DRAM clk */ 253a1a18ffSSimon Glass uint8_t dimm_trrd; /* tRRD in DRAM clk */ 263a1a18ffSSimon Glass uint8_t dimm_trtp; /* tRTP in DRAM clk */ 273a1a18ffSSimon Glass uint8_t dimm_tfaw; /* tFAW in DRAM clk */ 283a1a18ffSSimon Glass }; 293a1a18ffSSimon Glass 303a1a18ffSSimon Glass struct __packed upd_region { 313a1a18ffSSimon Glass uint64_t signature; /* Offset 0x0000 */ 323a1a18ffSSimon Glass uint8_t reserved0[24]; /* Offset 0x0008 */ 333a1a18ffSSimon Glass uint16_t mrc_init_tseg_size; /* Offset 0x0020 */ 343a1a18ffSSimon Glass uint16_t mrc_init_mmio_size; /* Offset 0x0022 */ 353a1a18ffSSimon Glass uint8_t mrc_init_spd_addr1; /* Offset 0x0024 */ 363a1a18ffSSimon Glass uint8_t mrc_init_spd_addr2; /* Offset 0x0025 */ 373a1a18ffSSimon Glass uint8_t emmc_boot_mode; /* Offset 0x0026 */ 383a1a18ffSSimon Glass uint8_t enable_sdio; /* Offset 0x0027 */ 393a1a18ffSSimon Glass uint8_t enable_sdcard; /* Offset 0x0028 */ 403a1a18ffSSimon Glass uint8_t enable_hsuart0; /* Offset 0x0029 */ 413a1a18ffSSimon Glass uint8_t enable_hsuart1; /* Offset 0x002a */ 423a1a18ffSSimon Glass uint8_t enable_spi; /* Offset 0x002b */ 433a1a18ffSSimon Glass uint8_t reserved1; /* Offset 0x002c */ 443a1a18ffSSimon Glass uint8_t enable_sata; /* Offset 0x002d */ 453a1a18ffSSimon Glass uint8_t sata_mode; /* Offset 0x002e */ 463a1a18ffSSimon Glass uint8_t enable_azalia; /* Offset 0x002f */ 47f6859558SBin Meng struct azalia_config *azalia_cfg_ptr; /* Offset 0x0030 */ 483a1a18ffSSimon Glass uint8_t enable_xhci; /* Offset 0x0034 */ 49f8f291b0SBin Meng uint8_t lpe_mode; /* Offset 0x0035 */ 50f8f291b0SBin Meng uint8_t lpss_sio_mode; /* Offset 0x0036 */ 513a1a18ffSSimon Glass uint8_t enable_dma0; /* Offset 0x0037 */ 523a1a18ffSSimon Glass uint8_t enable_dma1; /* Offset 0x0038 */ 533a1a18ffSSimon Glass uint8_t enable_i2_c0; /* Offset 0x0039 */ 543a1a18ffSSimon Glass uint8_t enable_i2_c1; /* Offset 0x003a */ 553a1a18ffSSimon Glass uint8_t enable_i2_c2; /* Offset 0x003b */ 563a1a18ffSSimon Glass uint8_t enable_i2_c3; /* Offset 0x003c */ 573a1a18ffSSimon Glass uint8_t enable_i2_c4; /* Offset 0x003d */ 583a1a18ffSSimon Glass uint8_t enable_i2_c5; /* Offset 0x003e */ 593a1a18ffSSimon Glass uint8_t enable_i2_c6; /* Offset 0x003f */ 603a1a18ffSSimon Glass uint8_t enable_pwm0; /* Offset 0x0040 */ 613a1a18ffSSimon Glass uint8_t enable_pwm1; /* Offset 0x0041 */ 623a1a18ffSSimon Glass uint8_t enable_hsi; /* Offset 0x0042 */ 633a1a18ffSSimon Glass uint8_t igd_dvmt50_pre_alloc; /* Offset 0x0043 */ 643a1a18ffSSimon Glass uint8_t aperture_size; /* Offset 0x0044 */ 653a1a18ffSSimon Glass uint8_t gtt_size; /* Offset 0x0045 */ 666702488cSBin Meng uint8_t reserved2[5]; /* Offset 0x0046 */ 673a1a18ffSSimon Glass uint8_t mrc_debug_msg; /* Offset 0x004b */ 683a1a18ffSSimon Glass uint8_t isp_enable; /* Offset 0x004c */ 69f8f291b0SBin Meng uint8_t scc_mode; /* Offset 0x004d */ 703a1a18ffSSimon Glass uint8_t igd_render_standby; /* Offset 0x004e */ 713a1a18ffSSimon Glass uint8_t txe_uma_enable; /* Offset 0x004f */ 723a1a18ffSSimon Glass uint8_t os_selection; /* Offset 0x0050 */ 733a1a18ffSSimon Glass uint8_t emmc45_ddr50_enabled; /* Offset 0x0051 */ 743a1a18ffSSimon Glass uint8_t emmc45_hs200_enabled; /* Offset 0x0052 */ 753a1a18ffSSimon Glass uint8_t emmc45_retune_timer_value; /* Offset 0x0053 */ 763e79a4abSBin Meng uint8_t enable_igd; /* Offset 0x0054 */ 773e79a4abSBin Meng uint8_t unused_upd_space1[155]; /* Offset 0x0055 */ 783a1a18ffSSimon Glass struct memory_down_data memory_params; /* Offset 0x00f0 */ 793a1a18ffSSimon Glass uint16_t terminator; /* Offset 0x0100 */ 803a1a18ffSSimon Glass }; 813a1a18ffSSimon Glass 823a1a18ffSSimon Glass #define VPD_IMAGE_ID 0x3157454956594C56 /* 'VLYVIEW1' */ 833a1a18ffSSimon Glass 843a1a18ffSSimon Glass struct __packed vpd_region { 853a1a18ffSSimon Glass uint64_t sign; /* Offset 0x0000 */ 863a1a18ffSSimon Glass uint32_t img_rev; /* Offset 0x0008 */ 873a1a18ffSSimon Glass uint32_t upd_offset; /* Offset 0x000c */ 883a1a18ffSSimon Glass uint8_t unused[16]; /* Offset 0x0010 */ 893a1a18ffSSimon Glass uint32_t fsp_res_memlen; /* Offset 0x0020 */ 903a1a18ffSSimon Glass uint8_t platform_type; /* Offset 0x0024 */ 913a1a18ffSSimon Glass uint8_t enable_secure_boot; /* Offset 0x0025 */ 923a1a18ffSSimon Glass }; 933a1a18ffSSimon Glass #endif 94