<div dir="ltr"><div>Dear flashrom list,</div><div><br></div><div>This patch tries to fix comp1/2_density issues </div><div>on Rangeley/Baytrail platforms with "dual flash dev installed".</div><div><br></div><div>Patch is based on r1850, guess it might work as well for r1844 or later rev.</div><div><br></div><div>Signed-off-by: T.H.Wu Type <<a href="mailto:thwu@lunartoday.com">thwu@lunartoday.com</a>></div><div><br></div><div><div>From: "Type T.H.Wu" <<a href="mailto:thwu@lunartoday.com">thwu@lunartoday.com</a>><br></div><div>Date: Wed, 10 Sep 2014 14:20:54 +0800</div><div>Subject: [PATCH] Rangeley/Baytrail comp1/2_density fix</div><div><br></div><div>---</div><div> ich_descriptors.c | 11 +++++------</div><div> ich_descriptors.h |  9 ++++++++-</div><div> 2 files changed, 13 insertions(+), 7 deletions(-)</div><div><br></div><div>diff --git a/ich_descriptors.c b/ich_descriptors.c</div><div>index 1966f66..d041149 100644</div><div>--- a/ich_descriptors.c</div><div>+++ b/ich_descriptors.c</div><div>@@ -127,7 +127,8 @@ static const char *pprint_density(enum ich_chipset cs, const struct ich_descript</div><div> <span class="" style="white-space:pre">   </span>case CHIPSET_ICH10:</div><div> <span class="" style="white-space:pre">      </span>case CHIPSET_5_SERIES_IBEX_PEAK:</div><div> <span class="" style="white-space:pre"> </span>case CHIPSET_6_SERIES_COUGAR_POINT:</div><div>-<span class="" style="white-space:pre">       </span>case CHIPSET_7_SERIES_PANTHER_POINT: {</div><div>+<span class="" style="white-space:pre">    </span>case CHIPSET_7_SERIES_PANTHER_POINT:</div><div>+<span class="" style="white-space:pre">      </span>case CHIPSET_BAYTRAIL: {</div><div> <span class="" style="white-space:pre">         </span>uint8_t size_enc;</div><div> <span class="" style="white-space:pre">                </span>if (idx == 0) {</div><div> <span class="" style="white-space:pre">                  </span>size_enc = desc->component.old.comp1_density;</div><div>@@ -139,7 +140,6 @@ static const char *pprint_density(enum ich_chipset cs, const struct ich_descript</div><div> <span class="" style="white-space:pre">              </span>return size_str[size_enc];</div><div> <span class="" style="white-space:pre">       </span>}</div><div> <span class="" style="white-space:pre">        </span>case CHIPSET_8_SERIES_LYNX_POINT:</div><div>-<span class="" style="white-space:pre"> </span>case CHIPSET_BAYTRAIL:</div><div> <span class="" style="white-space:pre">   </span>case CHIPSET_8_SERIES_LYNX_POINT_LP:</div><div> <span class="" style="white-space:pre">     </span>case CHIPSET_8_SERIES_WELLSBURG:</div><div> <span class="" style="white-space:pre"> </span>case CHIPSET_9_SERIES_WILDCAT_POINT: {</div><div>@@ -216,7 +216,7 @@ void prettyprint_ich_descriptor_component(enum ich_chipset cs, const struct ich_</div><div> <span class="" style="white-space:pre">                        </span>  pprint_freq(cs, desc->component.common.freq_fastread));</div><div> <span class="" style="white-space:pre">    </span>if (cs > CHIPSET_6_SERIES_COUGAR_POINT)</div><div> <span class="" style="white-space:pre">               </span>msg_pdbg2("Dual Output Fast Read Support:  %sabled\n",</div><div>-<span class="" style="white-space:pre">                 </span>  desc->component.new.dual_output ? "dis" : "en");</div><div>+<span class="" style="white-space:pre">                        </span>  (cs == CHIPSET_BAYTRAIL ? desc->component.old.dual_output : desc->component.new.dual_output) ? "dis" : "en");</div><div> <span class="" style="white-space:pre">       </span>if (desc->component.FLILL == 0)</div><div> <span class="" style="white-space:pre">               </span>msg_pdbg2("No forbidden opcodes.\n");</div><div> <span class="" style="white-space:pre">  </span>else {</div><div>@@ -802,7 +802,6 @@ int getFCBA_component_density(enum ich_chipset cs, const struct ich_descriptors</div><div> <span class="" style="white-space:pre">         </span>msg_perr("Only ICH SPI component index 0 or 1 are supported yet.\n");</div><div> <span class="" style="white-space:pre">          </span>return -1;</div><div> <span class="" style="white-space:pre">       </span>}</div><div>-</div><div> <span class="" style="white-space:pre">        </span>if (desc->content.NC == 0 && idx > 0)</div><div> <span class="" style="white-space:pre">              </span>return 0;</div><div> </div><div>@@ -816,6 +815,7 @@ int getFCBA_component_density(enum ich_chipset cs, const struct ich_descriptors</div><div> <span class="" style="white-space:pre">     </span>case CHIPSET_5_SERIES_IBEX_PEAK:</div><div> <span class="" style="white-space:pre"> </span>case CHIPSET_6_SERIES_COUGAR_POINT:</div><div> <span class="" style="white-space:pre">      </span>case CHIPSET_7_SERIES_PANTHER_POINT:</div><div>+<span class="" style="white-space:pre">      </span>case CHIPSET_BAYTRAIL:</div><div> <span class="" style="white-space:pre">           </span>if (idx == 0) {</div><div> <span class="" style="white-space:pre">                  </span>size_enc = desc->component.old.comp1_density;</div><div> <span class="" style="white-space:pre">         </span>} else {</div><div>@@ -824,7 +824,6 @@ int getFCBA_component_density(enum ich_chipset cs, const struct ich_descriptors</div><div> <span class="" style="white-space:pre">               </span>size_max = 5;</div><div> <span class="" style="white-space:pre">            </span>break;</div><div> <span class="" style="white-space:pre">   </span>case CHIPSET_8_SERIES_LYNX_POINT:</div><div>-<span class="" style="white-space:pre"> </span>case CHIPSET_BAYTRAIL:</div><div> <span class="" style="white-space:pre">   </span>case CHIPSET_8_SERIES_LYNX_POINT_LP:</div><div> <span class="" style="white-space:pre">     </span>case CHIPSET_8_SERIES_WELLSBURG:</div><div> <span class="" style="white-space:pre"> </span>case CHIPSET_9_SERIES_WILDCAT_POINT:</div><div>@@ -842,7 +841,7 @@ int getFCBA_component_density(enum ich_chipset cs, const struct ich_descriptors</div><div> <span class="" style="white-space:pre">   </span>}</div><div> </div><div> <span class="" style="white-space:pre">       </span>if (size_enc > size_max) {</div><div>-<span class="" style="white-space:pre">             </span>msg_perr("Density of ICH SPI component with index %d is invalid."</div><div>+<span class="" style="white-space:pre">               </span>msg_perr("Density of ICH SPI component with index %d is invalid.\n"</div><div> <span class="" style="white-space:pre">                    </span> "Encoded density is 0x%x while maximum allowed is 0x%x.\n",</div><div> <span class="" style="white-space:pre">                   </span> idx, size_enc, size_max);</div><div> <span class="" style="white-space:pre">               </span>return -1;</div><div>diff --git a/ich_descriptors.h b/ich_descriptors.h</div><div>index c41f9d9..572ee60 100644</div><div>--- a/ich_descriptors.h</div><div>+++ b/ich_descriptors.h</div><div>@@ -130,7 +130,14 @@ struct ich_desc_component {</div><div> <span class="" style="white-space:pre">                               </span> comp2_density<span class="" style="white-space:pre">    </span>:3,</div><div> <span class="" style="white-space:pre">                                              </span>:11,</div><div> <span class="" style="white-space:pre">                                             </span>:13,</div><div>-<span class="" style="white-space:pre">                                              </span>:2;</div><div>+<span class="" style="white-space:pre">                               </span>/*</div><div>+<span class="" style="white-space:pre">                                </span> * @ Baytrail & Rangeley FLCOMP:</div><div>+<span class="" style="white-space:pre">                              </span> * (1) Comp[1|2]_desnity := [0:2] | [3:5]</div><div>+<span class="" style="white-space:pre">                         </span> *     Max 16MB*2 SPI devices, ie. max value := 101101b</div><div>+<span class="" style="white-space:pre">                         </span> * (2) Daul_output supported as well</div><div>+<span class="" style="white-space:pre">                              </span> */</div><div>+<span class="" style="white-space:pre">                               </span> dual_output<span class="" style="white-space:pre">      </span>:1,</div><div>+<span class="" style="white-space:pre">                                               </span>:1;</div><div> <span class="" style="white-space:pre">              </span>} old;</div><div> <span class="" style="white-space:pre">           </span>struct {</div><div> <span class="" style="white-space:pre">                 </span>uint32_t comp1_density<span class="" style="white-space:pre">    </span>:4, /* new since Lynx Point/8 */</div><div>-- </div><div>1.7.11.7</div><div><br></div></div></div>