<div dir="ltr">Hi,<div><br></div><div>I'm working on a skylake port and I've noticed something with the PADRSTCFG field of the GPIO Pad configuration. If you look at the 100-series datasheet volume 2 (<a href="https://www-ssl.intel.com/content/www/us/en/chipsets/100-series-chipset-datasheet-vol-2.html">https://www-ssl.intel.com/content/www/us/en/chipsets/100-series-chipset-datasheet-vol-2.html</a>). The Pad configuration DW0 for GPP_A, GPP_B, GPP_C, etc.. (page 1179, 1249) up to GPP_I (page 1319) has bits 31:30 (PADRSTCFG) defined like this :</div><div><div>00 = RSMRST#</div><div>01 = Host deep reset.</div><div>10 = PLTRST#</div><div>11 = Reserved</div></div><div><br></div><div>But the Pad configuration DW0 for GPD pads (page 1296) has it defined like this :</div><div><div>00 = DSW_PWROK</div><div>01 = Host deep reset.</div><div>10 = PLTRST#</div><div>11 = RSMRST#</div></div><div><br></div><div>The problem here is that while the DEEP and PLTRST values are the same, the RSMRST value is 0 for GPP gpio pads, and 3 for GPD gpio pads. In the skylake and apollolake gpio_defs.h file, it is defined like this (with different naming for apollolake but same values) :</div><div><div>#define  PADRSTCFG_DSW_PWROK<span class="gmail-Apple-tab-span" style="white-space:pre">   </span>0</div><div>#define  PADRSTCFG_DEEP<span class="gmail-Apple-tab-span" style="white-space:pre">              </span>1</div><div>#define  PADRSTCFG_PLTRST<span class="gmail-Apple-tab-span" style="white-space:pre">    </span>2</div><div>#define  PADRSTCFG_RSMRST<span class="gmail-Apple-tab-span" style="white-space:pre">    </span>3</div></div><div><br></div><div>These defines are only valid for GPD pads, if someone was to use a RSMRST reset config on a GPP pad, they would be setting the pad to a 'reserved' configuration, which could have unexpected behavior. </div><div>There are two possibilities here, either the datasheet is wrong (and PWROK should be 3 so the RSMRST value is consistent for both GPP and GPD), or the datasheet is correct, and in both cases, the value in coreboot is wrong.</div><div><br></div><div>If someone from Intel is reading this list, or if someone here knows someone inside Intel who could confirm whether or not the datasheet has an error, that would be great.</div><div>In the meantime, I would maybe suggest to change the defines to  :</div><div>#define PADRSTCFG_GPD_RSMRST    3</div><div>#define PADRSTCFG_GPP_RSMRST    0</div><div><br></div><div>This would affect both skylake and apollolake, and note that the only skylake+ boards that use RSMRST seem to be the kblrvp in the rvp7 variant which sets it for GPP_A12 and GPP_E3 (which means those two gpios have the wrong setting due to the wrong define).</div><div><br></div><div>What do you think ?</div><div><br></div><div>Thanks,</div><div>Youness.</div></div>