# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # Info on flash descriptor (page 845 onwards): # # http://www.intel.co.uk/content/dam/doc/datasheet/io-controller-hub-9-datasheet.pdf # Flash Descriptor SPEC for GM45/ICH9M { # Signature for descriptor mode "fd_signature" : 32, # Flash map registers "flmap0_fcba" : 8, "flmap0_nc" : 2, "flmap0_reserved0" : 6, "flmap0_frba" : 8, "flmap0_nr" : 3, "flmap0_reserved1" : 5, "flmap1_fmba" : 8, "flmap1_nm" : 3, "flmap1_reserved" : 5, "flmap1_fisba" : 8, "flmap1_isl" : 8, "flmap2_fmsba" : 8, "flmap2_msl" : 8, "flmap2_reserved" : 16, # Component section "flcomp_density1" : 3, "flcomp_density2" : 3, "flcomp_reserved0" : 2, "flcomp_reserved1" : 8, "flcomp_reserved2" : 1, "flcomp_readclockfreq" : 3, "flcomp_fastreadsupp" : 1, "flcomp_fastreadfreq" : 3, "flcomp_w_eraseclkfreq" : 3, "flcomp_r_statclkfreq" : 3, "flcomp_reserved3" : 2, "flill" : 32, "flbp" : 32, "comp_padding"[36] : 8, # Region section "flreg0_base" : 13, "flreg0_reserved0" : 3, "flreg0_limit" : 13, "flreg0_reserved1" : 3, "flreg1_base" : 13, "flreg1_reserved0" : 3, "flreg1_limit" : 13, "flreg1_reserved1" : 3, "flreg2_base" : 13, "flreg2_reserved0" : 3, "flreg2_limit" : 13, "flreg2_reserved1" : 3, "flreg3_base" : 13, "flreg3_reserved0" : 3, "flreg3_limit" : 13, "flreg3_reserved1" : 3, "flreg4_base" : 13, "flreg4_reserved0" : 3, "flreg4_limit" : 13, "flreg4_reserved1" : 3, "flreg_padding"[12] : 8, # Master access section # 1: Host CPU/BIOS "flmstr1_requesterid" : 16, "flmstr1_r_fd" : 1, "flmstr1_r_bios" : 1, "flmstr1_r_me" : 1, "flmstr1_r_gbe" : 1, "flmstr1_r_pd" : 1, "flmstr1_r_reserved" : 3, "flmstr1_w_fd" : 1, "flmstr1_w_bios" : 1, "flmstr1_w_me" : 1, "flmstr1_w_gbe" : 1, "flmstr1_w_pd" : 1, "flmstr1_w_reserved" : 3, # 2: ME "flmstr2_requesterid" : 16, "flmstr2_r_fd" : 1, "flmstr2_r_bios" : 1, "flmstr2_r_me" : 1, "flmstr2_r_gbe" : 1, "flmstr2_r_pd" : 1, "flmstr2_r_reserved" : 3, "flmstr2_w_fd" : 1, "flmstr2_w_bios" : 1, "flmstr2_w_me" : 1, "flmstr2_w_gbe" : 1, "flmstr2_w_pd" : 1, "flmstr2_w_reserved" : 3, # 3: GbE "flmstr3_requesterid" : 16, "flmstr3_r_fd" : 1, "flmstr3_r_bios" : 1, "flmstr3_r_me" : 1, "flmstr3_r_gbe" : 1, "flmstr3_r_pd" : 1, "flmstr3_r_reserved" : 3, "flmstr3_w_fd" : 1, "flmstr3_w_bios" : 1, "flmstr3_w_me" : 1, "flmstr3_w_gbe" : 1, "flmstr3_w_pd" : 1, "flmstr3_w_reserved" : 3, "flmstr_padding"[148] : 8, # ICHSTRAP0 "ich0_medisable" : 1, "ich0_reserved0" : 6, "ich0_tcomode" : 1, "ich0_mesmbusaddr" : 7, "ich0_bmcmode" : 1, "ich0_trippointsel" : 1, "ich0_reserved1" : 2, "ich0_integratedgbe" : 1, "ich0_lanphy" : 1, "ich0_reserved2" : 3, "ich0_dmireqiddisable" : 1, "ich0_me2smbusaddr" : 7, # ICHSTRAP1 "ich1_dynclk_nmlink" : 1, "ich1_dynclk_smlink" : 1, "ich1_dynclk_mesmbus" : 1, "ich1_dynclk_sst" : 1, "ich1_reserved0" : 4, "ich1_nmlink_npostreqs" : 1, "ich1_reserved1" : 7, "ich1_reserved2" : 16, "ichstrap_padding"[248] : 8, # MCHSTRAP0 "mch0_medisable" : 1, "mch0_mebootfromflash" : 1, "mch0_tpmdisable" : 1, "mch0_reserved0" : 3, "mch0_spifingerprinton" : 1, # Alternate disable - allows ME to perform chipset # init functions but disables FW apps such as AMT "mch0_mealtdisable" : 1, "mch0_reserved1" : 8, "mch0_reserved2" : 16, "mchstrap_padding"[3292]: 8, # ME VSCC Table "mevscc_jid0" : 32, "mevscc_vscc0" : 32, "mevscc_jid1" : 32, "mevscc_vscc1" : 32, "mevscc_jid2" : 32, "mevscc_vscc2" : 32, "mevscc_padding"[4] : 8, # Descriptor Map 2 Record "mevscc_tablebase" : 8, "mevscc_tablelength" : 8, "mevscc_reserved" : 16, # OEM section "oem_magic"[8] : 8, "oem_padding"[248] : 8 }