1*0d6140beSAndroid Build Coastguard Worker /* 2*0d6140beSAndroid Build Coastguard Worker * This file is part of the flashrom project. 3*0d6140beSAndroid Build Coastguard Worker * 4*0d6140beSAndroid Build Coastguard Worker * Copyright (c) 2010 Matthias Wenzel <bios at mazzoo dot de> 5*0d6140beSAndroid Build Coastguard Worker * Copyright (c) 2011 Stefan Tauner 6*0d6140beSAndroid Build Coastguard Worker * 7*0d6140beSAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or modify 8*0d6140beSAndroid Build Coastguard Worker * it under the terms of the GNU General Public License as published by 9*0d6140beSAndroid Build Coastguard Worker * the Free Software Foundation; either version 2 of the License, or 10*0d6140beSAndroid Build Coastguard Worker * (at your option) any later version. 11*0d6140beSAndroid Build Coastguard Worker * 12*0d6140beSAndroid Build Coastguard Worker * This program is distributed in the hope that it will be useful, 13*0d6140beSAndroid Build Coastguard Worker * but WITHOUT ANY WARRANTY; without even the implied warranty of 14*0d6140beSAndroid Build Coastguard Worker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*0d6140beSAndroid Build Coastguard Worker * GNU General Public License for more details. 16*0d6140beSAndroid Build Coastguard Worker */ 17*0d6140beSAndroid Build Coastguard Worker 18*0d6140beSAndroid Build Coastguard Worker #ifndef __ICH_DESCRIPTORS_H__ 19*0d6140beSAndroid Build Coastguard Worker #define __ICH_DESCRIPTORS_H__ 1 20*0d6140beSAndroid Build Coastguard Worker 21*0d6140beSAndroid Build Coastguard Worker #include <sys/types.h> 22*0d6140beSAndroid Build Coastguard Worker #include <stdint.h> 23*0d6140beSAndroid Build Coastguard Worker #include <stdbool.h> 24*0d6140beSAndroid Build Coastguard Worker #include "programmer.h" /* for enum ich_chipset */ 25*0d6140beSAndroid Build Coastguard Worker 26*0d6140beSAndroid Build Coastguard Worker /* FIXME: Replace with generic return codes */ 27*0d6140beSAndroid Build Coastguard Worker #define ICH_RET_OK 0 28*0d6140beSAndroid Build Coastguard Worker #define ICH_RET_ERR -1 29*0d6140beSAndroid Build Coastguard Worker #define ICH_RET_WARN -2 30*0d6140beSAndroid Build Coastguard Worker #define ICH_RET_PARAM -3 31*0d6140beSAndroid Build Coastguard Worker #define ICH_RET_OOB -4 32*0d6140beSAndroid Build Coastguard Worker 33*0d6140beSAndroid Build Coastguard Worker #define ICH9_REG_FDOC 0xB0 /* 32 Bits Flash Descriptor Observability Control */ 34*0d6140beSAndroid Build Coastguard Worker #define PCH100_REG_FDOC 0xB4 /* New offset from Sunrise Point on */ 35*0d6140beSAndroid Build Coastguard Worker /* 0-1: reserved */ 36*0d6140beSAndroid Build Coastguard Worker #define FDOC_FDSI_OFF 2 /* 2-11: Flash Descriptor Section Index */ 37*0d6140beSAndroid Build Coastguard Worker #define FDOC_FDSI (0x3f << FDOC_FDSI_OFF) 38*0d6140beSAndroid Build Coastguard Worker #define FDOC_FDSS_OFF 12 /* 12-14: Flash Descriptor Section Select */ 39*0d6140beSAndroid Build Coastguard Worker #define FDOC_FDSS (0x3 << FDOC_FDSS_OFF) 40*0d6140beSAndroid Build Coastguard Worker /* 15-31: reserved */ 41*0d6140beSAndroid Build Coastguard Worker 42*0d6140beSAndroid Build Coastguard Worker #define ICH9_REG_FDOD 0xB4 /* 32 Bits Flash Descriptor Observability Data */ 43*0d6140beSAndroid Build Coastguard Worker #define PCH100_REG_FDOD 0xB8 /* New offset from Sunrise Point on */ 44*0d6140beSAndroid Build Coastguard Worker 45*0d6140beSAndroid Build Coastguard Worker /* Field locations and semantics for LVSCC, UVSCC and related words in the flash 46*0d6140beSAndroid Build Coastguard Worker * descriptor are equal therefore they all share the same macros below. */ 47*0d6140beSAndroid Build Coastguard Worker #define VSCC_BES_OFF 0 /* 0-1: Block/Sector Erase Size */ 48*0d6140beSAndroid Build Coastguard Worker #define VSCC_BES (0x3 << VSCC_BES_OFF) 49*0d6140beSAndroid Build Coastguard Worker #define VSCC_WG_OFF 2 /* 2: Write Granularity */ 50*0d6140beSAndroid Build Coastguard Worker #define VSCC_WG (0x1 << VSCC_WG_OFF) 51*0d6140beSAndroid Build Coastguard Worker #define VSCC_WSR_OFF 3 /* 3: Write Status Required */ 52*0d6140beSAndroid Build Coastguard Worker #define VSCC_WSR (0x1 << VSCC_WSR_OFF) 53*0d6140beSAndroid Build Coastguard Worker #define VSCC_WEWS_OFF 4 /* 4: Write Enable on Write Status */ 54*0d6140beSAndroid Build Coastguard Worker #define VSCC_WEWS (0x1 << VSCC_WEWS_OFF) 55*0d6140beSAndroid Build Coastguard Worker /* 5-7: reserved */ 56*0d6140beSAndroid Build Coastguard Worker #define VSCC_EO_OFF 8 /* 8-15: Erase Opcode */ 57*0d6140beSAndroid Build Coastguard Worker #define VSCC_EO (0xff << VSCC_EO_OFF) 58*0d6140beSAndroid Build Coastguard Worker /* 16-22: reserved */ 59*0d6140beSAndroid Build Coastguard Worker #define VSCC_VCL_OFF 23 /* 23: Vendor Component Lock */ 60*0d6140beSAndroid Build Coastguard Worker #define VSCC_VCL (0x1 << VSCC_VCL_OFF) 61*0d6140beSAndroid Build Coastguard Worker /* 24-31: reserved */ 62*0d6140beSAndroid Build Coastguard Worker 63*0d6140beSAndroid Build Coastguard Worker #define ICH_FREG_BASE(flreg) (((flreg) << 12) & 0x07fff000) 64*0d6140beSAndroid Build Coastguard Worker #define ICH_FREG_LIMIT(flreg) ((((flreg) >> 4) & 0x07fff000) | 0x00000fff) 65*0d6140beSAndroid Build Coastguard Worker 66*0d6140beSAndroid Build Coastguard Worker void prettyprint_ich_reg_vscc(uint32_t reg_val, int verbosity, bool print_vcl); 67*0d6140beSAndroid Build Coastguard Worker 68*0d6140beSAndroid Build Coastguard Worker struct ich_desc_content { 69*0d6140beSAndroid Build Coastguard Worker uint32_t FLVALSIG; /* 0x00 */ 70*0d6140beSAndroid Build Coastguard Worker union { /* 0x04 */ 71*0d6140beSAndroid Build Coastguard Worker uint32_t FLMAP0; 72*0d6140beSAndroid Build Coastguard Worker struct { 73*0d6140beSAndroid Build Coastguard Worker uint32_t FCBA :8, /* Flash Component Base Address */ 74*0d6140beSAndroid Build Coastguard Worker NC :2, /* Number Of Components */ 75*0d6140beSAndroid Build Coastguard Worker :6, 76*0d6140beSAndroid Build Coastguard Worker FRBA :8, /* Flash Region Base Address */ 77*0d6140beSAndroid Build Coastguard Worker NR :3, /* Number Of Regions (reserved from Skylake on) */ 78*0d6140beSAndroid Build Coastguard Worker :5; 79*0d6140beSAndroid Build Coastguard Worker }; 80*0d6140beSAndroid Build Coastguard Worker }; 81*0d6140beSAndroid Build Coastguard Worker union { /* 0x08 */ 82*0d6140beSAndroid Build Coastguard Worker uint32_t FLMAP1; 83*0d6140beSAndroid Build Coastguard Worker struct { 84*0d6140beSAndroid Build Coastguard Worker uint32_t FMBA :8, /* Flash Master Base Address */ 85*0d6140beSAndroid Build Coastguard Worker NM :3, /* Number Of Masters */ 86*0d6140beSAndroid Build Coastguard Worker :5, 87*0d6140beSAndroid Build Coastguard Worker FISBA :8, /* Flash ICH Strap Base Address */ 88*0d6140beSAndroid Build Coastguard Worker ISL :8; /* ICH Strap Length */ 89*0d6140beSAndroid Build Coastguard Worker }; 90*0d6140beSAndroid Build Coastguard Worker }; 91*0d6140beSAndroid Build Coastguard Worker union { /* 0x0c */ 92*0d6140beSAndroid Build Coastguard Worker uint32_t FLMAP2; 93*0d6140beSAndroid Build Coastguard Worker struct { 94*0d6140beSAndroid Build Coastguard Worker uint32_t FMSBA :8, /* Flash (G)MCH Strap Base Addr. */ 95*0d6140beSAndroid Build Coastguard Worker MSL :8, /* MCH Strap Length */ 96*0d6140beSAndroid Build Coastguard Worker ICCRIBA :8, /* ICC Reg. Init Base Addr. (new since Sandy Bridge) */ 97*0d6140beSAndroid Build Coastguard Worker RIL :8; /* Register Init Length (new since Hawell) */ 98*0d6140beSAndroid Build Coastguard Worker }; 99*0d6140beSAndroid Build Coastguard Worker struct { /* new since Tiger Point */ 100*0d6140beSAndroid Build Coastguard Worker uint32_t :2, 101*0d6140beSAndroid Build Coastguard Worker CSSO :10, /* CPU Soft Strap Offset from PMC Base */ 102*0d6140beSAndroid Build Coastguard Worker :4, 103*0d6140beSAndroid Build Coastguard Worker CSSL :8, /* CPU Soft Strap Length */ 104*0d6140beSAndroid Build Coastguard Worker :8; 105*0d6140beSAndroid Build Coastguard Worker }; 106*0d6140beSAndroid Build Coastguard Worker }; 107*0d6140beSAndroid Build Coastguard Worker }; 108*0d6140beSAndroid Build Coastguard Worker 109*0d6140beSAndroid Build Coastguard Worker struct ich_desc_component { 110*0d6140beSAndroid Build Coastguard Worker union { /* 0x00 */ 111*0d6140beSAndroid Build Coastguard Worker uint32_t FLCOMP; /* Flash Components Register */ 112*0d6140beSAndroid Build Coastguard Worker /* FLCOMP encoding on various generations: 113*0d6140beSAndroid Build Coastguard Worker * 114*0d6140beSAndroid Build Coastguard Worker * Chipset/Generation max_speed dual_output density 115*0d6140beSAndroid Build Coastguard Worker * [MHz] bits max. bits 116*0d6140beSAndroid Build Coastguard Worker * ICH8: 33 N/A 5 0:2, 3:5 117*0d6140beSAndroid Build Coastguard Worker * ICH9: 33 N/A 5 0:2, 3:5 118*0d6140beSAndroid Build Coastguard Worker * ICH10: 33 N/A 5 0:2, 3:5 119*0d6140beSAndroid Build Coastguard Worker * Ibex Peak/5: 50 N/A 5 0:2, 3:5 120*0d6140beSAndroid Build Coastguard Worker * Cougar Point/6: 50 30 5 0:2, 3:5 121*0d6140beSAndroid Build Coastguard Worker * Patsburg: 50 30 5 0:2, 3:5 122*0d6140beSAndroid Build Coastguard Worker * Panther Point/7 50 30 5 0:2, 3:5 123*0d6140beSAndroid Build Coastguard Worker * Lynx Point/8: 50 30 7 0:3, 4:7 124*0d6140beSAndroid Build Coastguard Worker * Wildcat Point/9: 50 30 (multi I/O) 7 0:3, 4:7 125*0d6140beSAndroid Build Coastguard Worker * Sunrise Point/100: 48 30 7 0:3, 4:7 126*0d6140beSAndroid Build Coastguard Worker */ 127*0d6140beSAndroid Build Coastguard Worker struct { 128*0d6140beSAndroid Build Coastguard Worker uint32_t :17, 129*0d6140beSAndroid Build Coastguard Worker freq_read :3, 130*0d6140beSAndroid Build Coastguard Worker fastread :1, 131*0d6140beSAndroid Build Coastguard Worker freq_fastread :3, 132*0d6140beSAndroid Build Coastguard Worker freq_write :3, 133*0d6140beSAndroid Build Coastguard Worker freq_read_id :3, 134*0d6140beSAndroid Build Coastguard Worker dual_output :1, /* new since Cougar Point/6 */ 135*0d6140beSAndroid Build Coastguard Worker :1; 136*0d6140beSAndroid Build Coastguard Worker } modes; 137*0d6140beSAndroid Build Coastguard Worker struct { 138*0d6140beSAndroid Build Coastguard Worker uint32_t comp1_density :3, 139*0d6140beSAndroid Build Coastguard Worker comp2_density :3, 140*0d6140beSAndroid Build Coastguard Worker :26; 141*0d6140beSAndroid Build Coastguard Worker } dens_old; 142*0d6140beSAndroid Build Coastguard Worker struct { 143*0d6140beSAndroid Build Coastguard Worker uint32_t comp1_density :4, /* new since Lynx Point/8 */ 144*0d6140beSAndroid Build Coastguard Worker comp2_density :4, 145*0d6140beSAndroid Build Coastguard Worker :24; 146*0d6140beSAndroid Build Coastguard Worker } dens_new; 147*0d6140beSAndroid Build Coastguard Worker }; 148*0d6140beSAndroid Build Coastguard Worker union { /* 0x04 */ 149*0d6140beSAndroid Build Coastguard Worker uint32_t FLILL; /* Flash Invalid Instructions Register */ 150*0d6140beSAndroid Build Coastguard Worker struct { 151*0d6140beSAndroid Build Coastguard Worker uint32_t invalid_instr0 :8, 152*0d6140beSAndroid Build Coastguard Worker invalid_instr1 :8, 153*0d6140beSAndroid Build Coastguard Worker invalid_instr2 :8, 154*0d6140beSAndroid Build Coastguard Worker invalid_instr3 :8; 155*0d6140beSAndroid Build Coastguard Worker }; 156*0d6140beSAndroid Build Coastguard Worker }; 157*0d6140beSAndroid Build Coastguard Worker union { /* 0x08 */ 158*0d6140beSAndroid Build Coastguard Worker uint32_t FLPB; /* Flash Partition Boundary Register, until Panther Point/7 */ 159*0d6140beSAndroid Build Coastguard Worker struct { 160*0d6140beSAndroid Build Coastguard Worker uint32_t FPBA :13, /* Flash Partition Boundary Addr */ 161*0d6140beSAndroid Build Coastguard Worker :19; 162*0d6140beSAndroid Build Coastguard Worker }; 163*0d6140beSAndroid Build Coastguard Worker uint32_t FLILL1; /* Flash Invalid Instructions Register, new since Sunrise Point/100 */ 164*0d6140beSAndroid Build Coastguard Worker struct { 165*0d6140beSAndroid Build Coastguard Worker uint32_t invalid_instr4 :8, 166*0d6140beSAndroid Build Coastguard Worker invalid_instr5 :8, 167*0d6140beSAndroid Build Coastguard Worker invalid_instr6 :8, 168*0d6140beSAndroid Build Coastguard Worker invalid_instr7 :8; 169*0d6140beSAndroid Build Coastguard Worker }; 170*0d6140beSAndroid Build Coastguard Worker }; 171*0d6140beSAndroid Build Coastguard Worker }; 172*0d6140beSAndroid Build Coastguard Worker 173*0d6140beSAndroid Build Coastguard Worker #define MAX_NUM_FLREGS 16 174*0d6140beSAndroid Build Coastguard Worker struct ich_desc_region { 175*0d6140beSAndroid Build Coastguard Worker /* 176*0d6140beSAndroid Build Coastguard Worker * Number of entries and width differ on various generations: 177*0d6140beSAndroid Build Coastguard Worker * 178*0d6140beSAndroid Build Coastguard Worker * Chipset/Generation #FLREGs width (bits) 179*0d6140beSAndroid Build Coastguard Worker * ICH8 .. Panther Point/7 5 13 180*0d6140beSAndroid Build Coastguard Worker * Lynx Point/8 .. Wildcat Point/9 7 15 181*0d6140beSAndroid Build Coastguard Worker * Sunrise Point/100 .. 200 Series 10 15 182*0d6140beSAndroid Build Coastguard Worker * Lewisburg/100 .. 16 15 183*0d6140beSAndroid Build Coastguard Worker * Cannon Point/300 .. 16 15 184*0d6140beSAndroid Build Coastguard Worker */ 185*0d6140beSAndroid Build Coastguard Worker union { 186*0d6140beSAndroid Build Coastguard Worker uint32_t FLREGs[MAX_NUM_FLREGS]; /* Flash Descriptor Regions */ 187*0d6140beSAndroid Build Coastguard Worker 188*0d6140beSAndroid Build Coastguard Worker /* only used for bit-field check */ 189*0d6140beSAndroid Build Coastguard Worker struct { 190*0d6140beSAndroid Build Coastguard Worker uint32_t base :13, 191*0d6140beSAndroid Build Coastguard Worker :3, 192*0d6140beSAndroid Build Coastguard Worker limit :13, 193*0d6140beSAndroid Build Coastguard Worker :3; 194*0d6140beSAndroid Build Coastguard Worker } old_reg[MAX_NUM_FLREGS]; 195*0d6140beSAndroid Build Coastguard Worker }; 196*0d6140beSAndroid Build Coastguard Worker }; 197*0d6140beSAndroid Build Coastguard Worker 198*0d6140beSAndroid Build Coastguard Worker #define MAX_NUM_MASTERS 6 /* 5 prior to C620/Lewisburg PCH */ 199*0d6140beSAndroid Build Coastguard Worker struct ich_desc_master { 200*0d6140beSAndroid Build Coastguard Worker union { 201*0d6140beSAndroid Build Coastguard Worker uint32_t FLMSTRs[MAX_NUM_MASTERS]; /* Flash Masters */ 202*0d6140beSAndroid Build Coastguard Worker /* For pre-Skylake platforms */ 203*0d6140beSAndroid Build Coastguard Worker struct { 204*0d6140beSAndroid Build Coastguard Worker uint32_t BIOS_req_ID :16, 205*0d6140beSAndroid Build Coastguard Worker BIOS_descr_r :1, 206*0d6140beSAndroid Build Coastguard Worker BIOS_BIOS_r :1, 207*0d6140beSAndroid Build Coastguard Worker BIOS_ME_r :1, 208*0d6140beSAndroid Build Coastguard Worker BIOS_GbE_r :1, 209*0d6140beSAndroid Build Coastguard Worker BIOS_plat_r :1, 210*0d6140beSAndroid Build Coastguard Worker :3, 211*0d6140beSAndroid Build Coastguard Worker BIOS_descr_w :1, 212*0d6140beSAndroid Build Coastguard Worker BIOS_BIOS_w :1, 213*0d6140beSAndroid Build Coastguard Worker BIOS_ME_w :1, 214*0d6140beSAndroid Build Coastguard Worker BIOS_GbE_w :1, 215*0d6140beSAndroid Build Coastguard Worker BIOS_plat_w :1, 216*0d6140beSAndroid Build Coastguard Worker :3; 217*0d6140beSAndroid Build Coastguard Worker uint32_t ME_req_ID :16, 218*0d6140beSAndroid Build Coastguard Worker ME_descr_r :1, 219*0d6140beSAndroid Build Coastguard Worker ME_BIOS_r :1, 220*0d6140beSAndroid Build Coastguard Worker ME_ME_r :1, 221*0d6140beSAndroid Build Coastguard Worker ME_GbE_r :1, 222*0d6140beSAndroid Build Coastguard Worker ME_plat_r :1, 223*0d6140beSAndroid Build Coastguard Worker :3, 224*0d6140beSAndroid Build Coastguard Worker ME_descr_w :1, 225*0d6140beSAndroid Build Coastguard Worker ME_BIOS_w :1, 226*0d6140beSAndroid Build Coastguard Worker ME_ME_w :1, 227*0d6140beSAndroid Build Coastguard Worker ME_GbE_w :1, 228*0d6140beSAndroid Build Coastguard Worker ME_plat_w :1, 229*0d6140beSAndroid Build Coastguard Worker :3; 230*0d6140beSAndroid Build Coastguard Worker uint32_t GbE_req_ID :16, 231*0d6140beSAndroid Build Coastguard Worker GbE_descr_r :1, 232*0d6140beSAndroid Build Coastguard Worker GbE_BIOS_r :1, 233*0d6140beSAndroid Build Coastguard Worker GbE_ME_r :1, 234*0d6140beSAndroid Build Coastguard Worker GbE_GbE_r :1, 235*0d6140beSAndroid Build Coastguard Worker GbE_plat_r :1, 236*0d6140beSAndroid Build Coastguard Worker :3, 237*0d6140beSAndroid Build Coastguard Worker GbE_descr_w :1, 238*0d6140beSAndroid Build Coastguard Worker GbE_BIOS_w :1, 239*0d6140beSAndroid Build Coastguard Worker GbE_ME_w :1, 240*0d6140beSAndroid Build Coastguard Worker GbE_GbE_w :1, 241*0d6140beSAndroid Build Coastguard Worker GbE_plat_w :1, 242*0d6140beSAndroid Build Coastguard Worker :3; 243*0d6140beSAndroid Build Coastguard Worker }; 244*0d6140beSAndroid Build Coastguard Worker /* From Skylake on */ 245*0d6140beSAndroid Build Coastguard Worker struct { 246*0d6140beSAndroid Build Coastguard Worker uint32_t ext_read :4, 247*0d6140beSAndroid Build Coastguard Worker ext_write :4, 248*0d6140beSAndroid Build Coastguard Worker read :12, 249*0d6140beSAndroid Build Coastguard Worker write :12; 250*0d6140beSAndroid Build Coastguard Worker } mstr[MAX_NUM_MASTERS]; 251*0d6140beSAndroid Build Coastguard Worker }; 252*0d6140beSAndroid Build Coastguard Worker }; 253*0d6140beSAndroid Build Coastguard Worker 254*0d6140beSAndroid Build Coastguard Worker struct ich_desc_north_strap { 255*0d6140beSAndroid Build Coastguard Worker union { 256*0d6140beSAndroid Build Coastguard Worker uint32_t STRPs[1]; /* current maximum: ich8 */ 257*0d6140beSAndroid Build Coastguard Worker struct { /* ich8 */ 258*0d6140beSAndroid Build Coastguard Worker struct { /* STRP2 (in the datasheet) */ 259*0d6140beSAndroid Build Coastguard Worker uint32_t MDB :1, 260*0d6140beSAndroid Build Coastguard Worker :31; 261*0d6140beSAndroid Build Coastguard Worker }; 262*0d6140beSAndroid Build Coastguard Worker } ich8; 263*0d6140beSAndroid Build Coastguard Worker }; 264*0d6140beSAndroid Build Coastguard Worker }; 265*0d6140beSAndroid Build Coastguard Worker 266*0d6140beSAndroid Build Coastguard Worker struct ich_desc_south_strap { 267*0d6140beSAndroid Build Coastguard Worker union { 268*0d6140beSAndroid Build Coastguard Worker uint32_t STRPs[23]; /* current maximum: gemini lake */ 269*0d6140beSAndroid Build Coastguard Worker struct { /* ich8 */ 270*0d6140beSAndroid Build Coastguard Worker struct { /* STRP1 */ 271*0d6140beSAndroid Build Coastguard Worker uint32_t ME_DISABLE :1, 272*0d6140beSAndroid Build Coastguard Worker :6, 273*0d6140beSAndroid Build Coastguard Worker TCOMODE :1, 274*0d6140beSAndroid Build Coastguard Worker ASD :7, 275*0d6140beSAndroid Build Coastguard Worker BMCMODE :1, 276*0d6140beSAndroid Build Coastguard Worker :3, 277*0d6140beSAndroid Build Coastguard Worker GLAN_PCIE_SEL :1, 278*0d6140beSAndroid Build Coastguard Worker GPIO12_SEL :2, 279*0d6140beSAndroid Build Coastguard Worker SPICS1_LANPHYPC_SEL :1, 280*0d6140beSAndroid Build Coastguard Worker MESM2SEL :1, 281*0d6140beSAndroid Build Coastguard Worker :1, 282*0d6140beSAndroid Build Coastguard Worker ASD2 :7; 283*0d6140beSAndroid Build Coastguard Worker }; 284*0d6140beSAndroid Build Coastguard Worker } ich8; 285*0d6140beSAndroid Build Coastguard Worker struct { /* ibex peak */ 286*0d6140beSAndroid Build Coastguard Worker struct { /* STRP0 */ 287*0d6140beSAndroid Build Coastguard Worker uint32_t :1, 288*0d6140beSAndroid Build Coastguard Worker cs_ss2 :1, 289*0d6140beSAndroid Build Coastguard Worker :5, 290*0d6140beSAndroid Build Coastguard Worker SMB_EN :1, 291*0d6140beSAndroid Build Coastguard Worker SML0_EN :1, 292*0d6140beSAndroid Build Coastguard Worker SML1_EN :1, 293*0d6140beSAndroid Build Coastguard Worker SML1FRQ :2, 294*0d6140beSAndroid Build Coastguard Worker SMB0FRQ :2, 295*0d6140beSAndroid Build Coastguard Worker SML0FRQ :2, 296*0d6140beSAndroid Build Coastguard Worker :4, 297*0d6140beSAndroid Build Coastguard Worker LANPHYPC_GP12_SEL :1, 298*0d6140beSAndroid Build Coastguard Worker cs_ss1 :1, 299*0d6140beSAndroid Build Coastguard Worker :2, 300*0d6140beSAndroid Build Coastguard Worker DMI_REQID_DIS :1, 301*0d6140beSAndroid Build Coastguard Worker :4, 302*0d6140beSAndroid Build Coastguard Worker BBBS :2, 303*0d6140beSAndroid Build Coastguard Worker :1; 304*0d6140beSAndroid Build Coastguard Worker }; 305*0d6140beSAndroid Build Coastguard Worker struct { /* STRP1 */ 306*0d6140beSAndroid Build Coastguard Worker uint32_t cs_ss3 :4, 307*0d6140beSAndroid Build Coastguard Worker :28; 308*0d6140beSAndroid Build Coastguard Worker }; 309*0d6140beSAndroid Build Coastguard Worker struct { /* STRP2 */ 310*0d6140beSAndroid Build Coastguard Worker uint32_t :8, 311*0d6140beSAndroid Build Coastguard Worker MESMASDEN :1, 312*0d6140beSAndroid Build Coastguard Worker MESMASDA :7, 313*0d6140beSAndroid Build Coastguard Worker :8, 314*0d6140beSAndroid Build Coastguard Worker MESMI2CEN :1, 315*0d6140beSAndroid Build Coastguard Worker MESMI2CA :7; 316*0d6140beSAndroid Build Coastguard Worker }; 317*0d6140beSAndroid Build Coastguard Worker struct { /* STRP3 */ 318*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 319*0d6140beSAndroid Build Coastguard Worker }; 320*0d6140beSAndroid Build Coastguard Worker struct { /* STRP4 */ 321*0d6140beSAndroid Build Coastguard Worker uint32_t PHYCON :2, 322*0d6140beSAndroid Build Coastguard Worker :6, 323*0d6140beSAndroid Build Coastguard Worker GBEMAC_SMBUS_ADDR_EN :1, 324*0d6140beSAndroid Build Coastguard Worker GBEMAC_SMBUS_ADDR :7, 325*0d6140beSAndroid Build Coastguard Worker :1, 326*0d6140beSAndroid Build Coastguard Worker GBEPHY_SMBUS_ADDR :7, 327*0d6140beSAndroid Build Coastguard Worker :8; 328*0d6140beSAndroid Build Coastguard Worker }; 329*0d6140beSAndroid Build Coastguard Worker struct { /* STRP5 */ 330*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 331*0d6140beSAndroid Build Coastguard Worker }; 332*0d6140beSAndroid Build Coastguard Worker struct { /* STRP6 */ 333*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 334*0d6140beSAndroid Build Coastguard Worker }; 335*0d6140beSAndroid Build Coastguard Worker struct { /* STRP7 */ 336*0d6140beSAndroid Build Coastguard Worker uint32_t MESMA2UDID_VENDOR :16, 337*0d6140beSAndroid Build Coastguard Worker MESMA2UDID_DEVICE :16; 338*0d6140beSAndroid Build Coastguard Worker }; 339*0d6140beSAndroid Build Coastguard Worker struct { /* STRP8 */ 340*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 341*0d6140beSAndroid Build Coastguard Worker }; 342*0d6140beSAndroid Build Coastguard Worker struct { /* STRP9 */ 343*0d6140beSAndroid Build Coastguard Worker uint32_t PCIEPCS1 :2, 344*0d6140beSAndroid Build Coastguard Worker PCIEPCS2 :2, 345*0d6140beSAndroid Build Coastguard Worker PCIELR1 :1, 346*0d6140beSAndroid Build Coastguard Worker PCIELR2 :1, 347*0d6140beSAndroid Build Coastguard Worker DMILR :1, 348*0d6140beSAndroid Build Coastguard Worker :1, 349*0d6140beSAndroid Build Coastguard Worker PHY_PCIEPORTSEL :3, 350*0d6140beSAndroid Build Coastguard Worker PHY_PCIE_EN :1, 351*0d6140beSAndroid Build Coastguard Worker :20; 352*0d6140beSAndroid Build Coastguard Worker }; 353*0d6140beSAndroid Build Coastguard Worker struct { /* STRP10 */ 354*0d6140beSAndroid Build Coastguard Worker uint32_t :1, 355*0d6140beSAndroid Build Coastguard Worker ME_BOOT_FLASH :1, 356*0d6140beSAndroid Build Coastguard Worker cs_ss5 :1, 357*0d6140beSAndroid Build Coastguard Worker VE_EN :1, 358*0d6140beSAndroid Build Coastguard Worker :4, 359*0d6140beSAndroid Build Coastguard Worker MMDDE :1, 360*0d6140beSAndroid Build Coastguard Worker MMADDR :7, 361*0d6140beSAndroid Build Coastguard Worker cs_ss7 :1, 362*0d6140beSAndroid Build Coastguard Worker :1, 363*0d6140beSAndroid Build Coastguard Worker ICC_SEL :3, 364*0d6140beSAndroid Build Coastguard Worker MER_CL1 :1, 365*0d6140beSAndroid Build Coastguard Worker :10; 366*0d6140beSAndroid Build Coastguard Worker }; 367*0d6140beSAndroid Build Coastguard Worker struct { /* STRP11 */ 368*0d6140beSAndroid Build Coastguard Worker uint32_t SML1GPAEN :1, 369*0d6140beSAndroid Build Coastguard Worker SML1GPA :7, 370*0d6140beSAndroid Build Coastguard Worker :16, 371*0d6140beSAndroid Build Coastguard Worker SML1I2CAEN :1, 372*0d6140beSAndroid Build Coastguard Worker SML1I2CA :7; 373*0d6140beSAndroid Build Coastguard Worker }; 374*0d6140beSAndroid Build Coastguard Worker struct { /* STRP12 */ 375*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 376*0d6140beSAndroid Build Coastguard Worker }; 377*0d6140beSAndroid Build Coastguard Worker struct { /* STRP13 */ 378*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 379*0d6140beSAndroid Build Coastguard Worker }; 380*0d6140beSAndroid Build Coastguard Worker struct { /* STRP14 */ 381*0d6140beSAndroid Build Coastguard Worker uint32_t :8, 382*0d6140beSAndroid Build Coastguard Worker VE_EN2 :1, 383*0d6140beSAndroid Build Coastguard Worker :5, 384*0d6140beSAndroid Build Coastguard Worker VE_BOOT_FLASH :1, 385*0d6140beSAndroid Build Coastguard Worker :1, 386*0d6140beSAndroid Build Coastguard Worker BW_SSD :1, 387*0d6140beSAndroid Build Coastguard Worker NVMHCI_EN :1, 388*0d6140beSAndroid Build Coastguard Worker :14; 389*0d6140beSAndroid Build Coastguard Worker }; 390*0d6140beSAndroid Build Coastguard Worker struct { /* STRP15 */ 391*0d6140beSAndroid Build Coastguard Worker uint32_t :3, 392*0d6140beSAndroid Build Coastguard Worker cs_ss6 :2, 393*0d6140beSAndroid Build Coastguard Worker :1, 394*0d6140beSAndroid Build Coastguard Worker IWL_EN :1, 395*0d6140beSAndroid Build Coastguard Worker :1, 396*0d6140beSAndroid Build Coastguard Worker t209min :2, 397*0d6140beSAndroid Build Coastguard Worker :22; 398*0d6140beSAndroid Build Coastguard Worker }; 399*0d6140beSAndroid Build Coastguard Worker } ibex; 400*0d6140beSAndroid Build Coastguard Worker struct { /* cougar point */ 401*0d6140beSAndroid Build Coastguard Worker struct { /* STRP0 */ 402*0d6140beSAndroid Build Coastguard Worker uint32_t :1, 403*0d6140beSAndroid Build Coastguard Worker cs_ss1 :1, 404*0d6140beSAndroid Build Coastguard Worker :5, 405*0d6140beSAndroid Build Coastguard Worker SMB_EN :1, 406*0d6140beSAndroid Build Coastguard Worker SML0_EN :1, 407*0d6140beSAndroid Build Coastguard Worker SML1_EN :1, 408*0d6140beSAndroid Build Coastguard Worker SML1FRQ :2, 409*0d6140beSAndroid Build Coastguard Worker SMB0FRQ :2, 410*0d6140beSAndroid Build Coastguard Worker SML0FRQ :2, 411*0d6140beSAndroid Build Coastguard Worker :4, 412*0d6140beSAndroid Build Coastguard Worker LANPHYPC_GP12_SEL :1, 413*0d6140beSAndroid Build Coastguard Worker LINKSEC_DIS :1, 414*0d6140beSAndroid Build Coastguard Worker :2, 415*0d6140beSAndroid Build Coastguard Worker DMI_REQID_DIS :1, 416*0d6140beSAndroid Build Coastguard Worker :4, 417*0d6140beSAndroid Build Coastguard Worker BBBS :2, 418*0d6140beSAndroid Build Coastguard Worker :1; 419*0d6140beSAndroid Build Coastguard Worker }; 420*0d6140beSAndroid Build Coastguard Worker struct { /* STRP1 */ 421*0d6140beSAndroid Build Coastguard Worker uint32_t cs_ss3 :4, 422*0d6140beSAndroid Build Coastguard Worker :4, 423*0d6140beSAndroid Build Coastguard Worker cs_ss2 :1, 424*0d6140beSAndroid Build Coastguard Worker :28; 425*0d6140beSAndroid Build Coastguard Worker }; 426*0d6140beSAndroid Build Coastguard Worker struct { /* STRP2 */ 427*0d6140beSAndroid Build Coastguard Worker uint32_t :8, 428*0d6140beSAndroid Build Coastguard Worker MESMASDEN :1, 429*0d6140beSAndroid Build Coastguard Worker MESMASDA :7, 430*0d6140beSAndroid Build Coastguard Worker MESMMCTPAEN :1, 431*0d6140beSAndroid Build Coastguard Worker MESMMCTPA :7, 432*0d6140beSAndroid Build Coastguard Worker MESMI2CEN :1, 433*0d6140beSAndroid Build Coastguard Worker MESMI2CA :7; 434*0d6140beSAndroid Build Coastguard Worker }; 435*0d6140beSAndroid Build Coastguard Worker struct { /* STRP3 */ 436*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 437*0d6140beSAndroid Build Coastguard Worker }; 438*0d6140beSAndroid Build Coastguard Worker struct { /* STRP4 */ 439*0d6140beSAndroid Build Coastguard Worker uint32_t PHYCON :2, 440*0d6140beSAndroid Build Coastguard Worker :6, 441*0d6140beSAndroid Build Coastguard Worker GBEMAC_SMBUS_ADDR_EN :1, 442*0d6140beSAndroid Build Coastguard Worker GBEMAC_SMBUS_ADDR :7, 443*0d6140beSAndroid Build Coastguard Worker :1, 444*0d6140beSAndroid Build Coastguard Worker GBEPHY_SMBUS_ADDR :7, 445*0d6140beSAndroid Build Coastguard Worker :8; 446*0d6140beSAndroid Build Coastguard Worker }; 447*0d6140beSAndroid Build Coastguard Worker struct { /* STRP5 */ 448*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 449*0d6140beSAndroid Build Coastguard Worker }; 450*0d6140beSAndroid Build Coastguard Worker struct { /* STRP6 */ 451*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 452*0d6140beSAndroid Build Coastguard Worker }; 453*0d6140beSAndroid Build Coastguard Worker struct { /* STRP7 */ 454*0d6140beSAndroid Build Coastguard Worker uint32_t MESMA2UDID_VENDOR :16, 455*0d6140beSAndroid Build Coastguard Worker MESMA2UDID_DEVICE :16; 456*0d6140beSAndroid Build Coastguard Worker }; 457*0d6140beSAndroid Build Coastguard Worker struct { /* STRP8 */ 458*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 459*0d6140beSAndroid Build Coastguard Worker }; 460*0d6140beSAndroid Build Coastguard Worker struct { /* STRP9 */ 461*0d6140beSAndroid Build Coastguard Worker uint32_t PCIEPCS1 :2, 462*0d6140beSAndroid Build Coastguard Worker PCIEPCS2 :2, 463*0d6140beSAndroid Build Coastguard Worker PCIELR1 :1, 464*0d6140beSAndroid Build Coastguard Worker PCIELR2 :1, 465*0d6140beSAndroid Build Coastguard Worker DMILR :1, 466*0d6140beSAndroid Build Coastguard Worker cs_ss4 :1, 467*0d6140beSAndroid Build Coastguard Worker PHY_PCIEPORTSEL :3, 468*0d6140beSAndroid Build Coastguard Worker PHY_PCIE_EN :1, 469*0d6140beSAndroid Build Coastguard Worker :2, 470*0d6140beSAndroid Build Coastguard Worker SUB_DECODE_EN :1, 471*0d6140beSAndroid Build Coastguard Worker :7, 472*0d6140beSAndroid Build Coastguard Worker PCHHOT_SML1ALERT_SEL :1, 473*0d6140beSAndroid Build Coastguard Worker :9; 474*0d6140beSAndroid Build Coastguard Worker }; 475*0d6140beSAndroid Build Coastguard Worker struct { /* STRP10 */ 476*0d6140beSAndroid Build Coastguard Worker uint32_t :1, 477*0d6140beSAndroid Build Coastguard Worker ME_BOOT_FLASH :1, 478*0d6140beSAndroid Build Coastguard Worker :6, 479*0d6140beSAndroid Build Coastguard Worker MDSMBE_EN :1, 480*0d6140beSAndroid Build Coastguard Worker MDSMBE_ADD :7, 481*0d6140beSAndroid Build Coastguard Worker :2, 482*0d6140beSAndroid Build Coastguard Worker ICC_SEL :3, 483*0d6140beSAndroid Build Coastguard Worker MER_CL1 :1, 484*0d6140beSAndroid Build Coastguard Worker ICC_PRO_SEL :1, 485*0d6140beSAndroid Build Coastguard Worker Deep_SX_EN :1, 486*0d6140beSAndroid Build Coastguard Worker ME_DBG_LAN :1, 487*0d6140beSAndroid Build Coastguard Worker :7; 488*0d6140beSAndroid Build Coastguard Worker }; 489*0d6140beSAndroid Build Coastguard Worker struct { /* STRP11 */ 490*0d6140beSAndroid Build Coastguard Worker uint32_t SML1GPAEN :1, 491*0d6140beSAndroid Build Coastguard Worker SML1GPA :7, 492*0d6140beSAndroid Build Coastguard Worker :16, 493*0d6140beSAndroid Build Coastguard Worker SML1I2CAEN :1, 494*0d6140beSAndroid Build Coastguard Worker SML1I2CA :7; 495*0d6140beSAndroid Build Coastguard Worker }; 496*0d6140beSAndroid Build Coastguard Worker struct { /* STRP12 */ 497*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 498*0d6140beSAndroid Build Coastguard Worker }; 499*0d6140beSAndroid Build Coastguard Worker struct { /* STRP13 */ 500*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 501*0d6140beSAndroid Build Coastguard Worker }; 502*0d6140beSAndroid Build Coastguard Worker struct { /* STRP14 */ 503*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 504*0d6140beSAndroid Build Coastguard Worker }; 505*0d6140beSAndroid Build Coastguard Worker struct { /* STRP15 */ 506*0d6140beSAndroid Build Coastguard Worker uint32_t cs_ss6 :6, 507*0d6140beSAndroid Build Coastguard Worker IWL_EN :1, 508*0d6140beSAndroid Build Coastguard Worker cs_ss5 :2, 509*0d6140beSAndroid Build Coastguard Worker :4, 510*0d6140beSAndroid Build Coastguard Worker SMLINK1_THERM_SEL :1, 511*0d6140beSAndroid Build Coastguard Worker SLP_LAN_GP29_SEL :1, 512*0d6140beSAndroid Build Coastguard Worker :16; 513*0d6140beSAndroid Build Coastguard Worker }; 514*0d6140beSAndroid Build Coastguard Worker struct { /* STRP16 */ 515*0d6140beSAndroid Build Coastguard Worker uint32_t :32; 516*0d6140beSAndroid Build Coastguard Worker }; 517*0d6140beSAndroid Build Coastguard Worker struct { /* STRP17 */ 518*0d6140beSAndroid Build Coastguard Worker uint32_t ICML :1, 519*0d6140beSAndroid Build Coastguard Worker cs_ss7 :1, 520*0d6140beSAndroid Build Coastguard Worker :30; 521*0d6140beSAndroid Build Coastguard Worker }; 522*0d6140beSAndroid Build Coastguard Worker } cougar; 523*0d6140beSAndroid Build Coastguard Worker }; 524*0d6140beSAndroid Build Coastguard Worker }; 525*0d6140beSAndroid Build Coastguard Worker 526*0d6140beSAndroid Build Coastguard Worker struct ich_desc_upper_map { 527*0d6140beSAndroid Build Coastguard Worker union { 528*0d6140beSAndroid Build Coastguard Worker uint32_t FLUMAP1; /* Flash Upper Map 1 */ 529*0d6140beSAndroid Build Coastguard Worker struct { 530*0d6140beSAndroid Build Coastguard Worker uint32_t VTBA :8, /* ME VSCC Table Base Address */ 531*0d6140beSAndroid Build Coastguard Worker VTL :8, /* ME VSCC Table Length */ 532*0d6140beSAndroid Build Coastguard Worker :8, 533*0d6140beSAndroid Build Coastguard Worker MDTBA :8; /* MIP Descr. Table Base Addr. (new since Cannon Point/300) */ 534*0d6140beSAndroid Build Coastguard Worker }; 535*0d6140beSAndroid Build Coastguard Worker }; 536*0d6140beSAndroid Build Coastguard Worker struct { 537*0d6140beSAndroid Build Coastguard Worker union { /* JEDEC-ID Register */ 538*0d6140beSAndroid Build Coastguard Worker uint32_t JID; 539*0d6140beSAndroid Build Coastguard Worker struct { 540*0d6140beSAndroid Build Coastguard Worker uint32_t vid :8, /* Vendor ID */ 541*0d6140beSAndroid Build Coastguard Worker cid0 :8, /* Component ID 0 */ 542*0d6140beSAndroid Build Coastguard Worker cid1 :8, /* Component ID 1 */ 543*0d6140beSAndroid Build Coastguard Worker :8; 544*0d6140beSAndroid Build Coastguard Worker }; 545*0d6140beSAndroid Build Coastguard Worker }; 546*0d6140beSAndroid Build Coastguard Worker union { /* Vendor Specific Component Capabilities */ 547*0d6140beSAndroid Build Coastguard Worker uint32_t VSCC; 548*0d6140beSAndroid Build Coastguard Worker struct { 549*0d6140beSAndroid Build Coastguard Worker uint32_t ubes :2, /* Upper Block/Sector Erase Size */ 550*0d6140beSAndroid Build Coastguard Worker uwg :1, /* Upper Write Granularity */ 551*0d6140beSAndroid Build Coastguard Worker uwsr :1, /* Upper Write Status Required */ 552*0d6140beSAndroid Build Coastguard Worker uwews :1, /* Upper Write Enable on Write Status */ 553*0d6140beSAndroid Build Coastguard Worker :3, 554*0d6140beSAndroid Build Coastguard Worker ueo :8, /* Upper Erase Opcode */ 555*0d6140beSAndroid Build Coastguard Worker lbes :2, /* Lower Block/Sector Erase Size */ 556*0d6140beSAndroid Build Coastguard Worker lwg :1, /* Lower Write Granularity */ 557*0d6140beSAndroid Build Coastguard Worker lwsr :1, /* Lower Write Status Required */ 558*0d6140beSAndroid Build Coastguard Worker lwews :1, /* Lower Write Enable on Write Status */ 559*0d6140beSAndroid Build Coastguard Worker :3, 560*0d6140beSAndroid Build Coastguard Worker leo :16; /* Lower Erase Opcode */ 561*0d6140beSAndroid Build Coastguard Worker }; 562*0d6140beSAndroid Build Coastguard Worker }; 563*0d6140beSAndroid Build Coastguard Worker } vscc_table[128]; 564*0d6140beSAndroid Build Coastguard Worker }; 565*0d6140beSAndroid Build Coastguard Worker 566*0d6140beSAndroid Build Coastguard Worker struct ich_descriptors { 567*0d6140beSAndroid Build Coastguard Worker struct ich_desc_content content; 568*0d6140beSAndroid Build Coastguard Worker struct ich_desc_component component; 569*0d6140beSAndroid Build Coastguard Worker struct ich_desc_region region; 570*0d6140beSAndroid Build Coastguard Worker struct ich_desc_master master; 571*0d6140beSAndroid Build Coastguard Worker struct ich_desc_north_strap north; 572*0d6140beSAndroid Build Coastguard Worker struct ich_desc_south_strap south; 573*0d6140beSAndroid Build Coastguard Worker struct ich_desc_upper_map upper; 574*0d6140beSAndroid Build Coastguard Worker }; 575*0d6140beSAndroid Build Coastguard Worker 576*0d6140beSAndroid Build Coastguard Worker ssize_t ich_number_of_regions(enum ich_chipset cs, const struct ich_desc_content *content); 577*0d6140beSAndroid Build Coastguard Worker ssize_t ich_number_of_masters(enum ich_chipset cs, const struct ich_desc_content *content); 578*0d6140beSAndroid Build Coastguard Worker 579*0d6140beSAndroid Build Coastguard Worker void prettyprint_ich_chipset(enum ich_chipset cs); 580*0d6140beSAndroid Build Coastguard Worker void prettyprint_ich_descriptors(enum ich_chipset cs, const struct ich_descriptors *desc); 581*0d6140beSAndroid Build Coastguard Worker 582*0d6140beSAndroid Build Coastguard Worker void prettyprint_ich_descriptor_content(enum ich_chipset cs, const struct ich_desc_content *content); 583*0d6140beSAndroid Build Coastguard Worker void prettyprint_ich_descriptor_component(enum ich_chipset cs, const struct ich_descriptors *desc); 584*0d6140beSAndroid Build Coastguard Worker void prettyprint_ich_descriptor_region(enum ich_chipset cs, const struct ich_descriptors *desc); 585*0d6140beSAndroid Build Coastguard Worker void prettyprint_ich_descriptor_master(enum ich_chipset cs, const struct ich_descriptors *desc); 586*0d6140beSAndroid Build Coastguard Worker 587*0d6140beSAndroid Build Coastguard Worker void prettyprint_ich_descriptor_upper_map(const struct ich_desc_upper_map *umap); 588*0d6140beSAndroid Build Coastguard Worker void prettyprint_ich_descriptor_straps(enum ich_chipset cs, const struct ich_descriptors *desc); 589*0d6140beSAndroid Build Coastguard Worker int read_ich_descriptors_from_dump(const uint32_t *dump, size_t len, enum ich_chipset *cs, struct ich_descriptors *desc); 590*0d6140beSAndroid Build Coastguard Worker 591*0d6140beSAndroid Build Coastguard Worker int read_ich_descriptors_via_fdo(enum ich_chipset cs, void *spibar, struct ich_descriptors *desc); 592*0d6140beSAndroid Build Coastguard Worker int getFCBA_component_density(enum ich_chipset cs, const struct ich_descriptors *desc, uint8_t idx); 593*0d6140beSAndroid Build Coastguard Worker 594*0d6140beSAndroid Build Coastguard Worker int layout_from_ich_descriptors(struct flashrom_layout **, const void *dump, size_t len); 595*0d6140beSAndroid Build Coastguard Worker 596*0d6140beSAndroid Build Coastguard Worker #endif /* __ICH_DESCRIPTORS_H__ */ 597