<p>Patrick Georgi <strong>merged</strong> this change.</p><p><a href="https://review.coreboot.org/c/coreboot/+/29924">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  build bot (Jenkins): Verified
  Nico Huber: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">nb/intel/gm45: Make fetching the blc_pwm freq its own function<br><br>Also check the EDID string using strcmp instead of strncmp.<br><br>Change-Id: I9ad364f84f3658be98ce7ad3a6f0f0fe3247fc41<br>Signed-off-by: Arthur Heymans <arthur@aheymans.xyz><br>Reviewed-on: https://review.coreboot.org/c/29924<br>Tested-by: build bot (Jenkins) <no-reply@coreboot.org><br>Reviewed-by: Nico Huber <nico.h@gmx.de><br>---<br>M src/northbridge/intel/gm45/gma.c<br>1 file changed, 36 insertions(+), 25 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/northbridge/intel/gm45/gma.c b/src/northbridge/intel/gm45/gma.c</span><br><span>index b86e2b3..64b6a57 100644</span><br><span>--- a/src/northbridge/intel/gm45/gma.c</span><br><span>+++ b/src/northbridge/intel/gm45/gma.c</span><br><span>@@ -668,6 +668,39 @@</span><br><span>             return (blc_mod << 16) | blc_mod;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static u16 get_blc_pwm_freq_value(const char *edid_ascii_string)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ static u16 blc_pwm_freq;</span><br><span style="color: hsl(120, 100%, 40%);">+      const struct blc_pwm_t *blc_pwm;</span><br><span style="color: hsl(120, 100%, 40%);">+      int i;</span><br><span style="color: hsl(120, 100%, 40%);">+        int blc_array_len;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if (blc_pwm_freq > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+              return blc_pwm_freq;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        blc_array_len = get_blc_values(&blc_pwm);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Find EDID string and pwm freq in lookup table */</span><br><span style="color: hsl(120, 100%, 40%);">+   for (i = 0; i < blc_array_len; i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (!strcmp(blc_pwm[i].ascii_string, edid_ascii_string)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    blc_pwm_freq = blc_pwm[i].pwm_freq;</span><br><span style="color: hsl(120, 100%, 40%);">+                   printk(BIOS_DEBUG, "Found EDID string: %s in lookup table, pwm: %dHz\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                           blc_pwm[i].ascii_string, blc_pwm_freq);</span><br><span style="color: hsl(120, 100%, 40%);">+                        break;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if (i == blc_array_len)</span><br><span style="color: hsl(120, 100%, 40%);">+               printk(BIOS_NOTICE, "Your panels EDID `%s` wasn't found in the"</span><br><span style="color: hsl(120, 100%, 40%);">+                "lookup table.\n You may have issues with your panels"</span><br><span style="color: hsl(120, 100%, 40%);">+                      "backlight.\n If you want to help improving coreboot"</span><br><span style="color: hsl(120, 100%, 40%);">+                       "please report: this EDID string\n and the result"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "of `intel_read read BLC_PWM_CTL`"</span><br><span style="color: hsl(120, 100%, 40%);">+                  "(from intel-gpu-tools)\n while running vendor BIOS\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                     edid_ascii_string);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  return blc_pwm_freq;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void gma_pm_init_post_vbios(struct device *const dev,</span><br><span>                            const char *edid_ascii_string)</span><br><span> {</span><br><span>@@ -675,9 +708,7 @@</span><br><span> </span><br><span>        u32 reg32;</span><br><span>   u8 reg8;</span><br><span style="color: hsl(0, 100%, 40%);">-        const struct blc_pwm_t *blc_pwm;</span><br><span style="color: hsl(0, 100%, 40%);">-        int blc_array_len, i;</span><br><span style="color: hsl(0, 100%, 40%);">-   u16 pwm_freq = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     u16 pwm_freq;</span><br><span> </span><br><span>    /* Setup Panel Power On Delays */</span><br><span>    reg32 = gtt_read(PP_ON_DELAYS);</span><br><span>@@ -708,30 +739,10 @@</span><br><span>      reg8 = 100;</span><br><span>  if (conf->duty_cycle != 0)</span><br><span>                reg8 = conf->duty_cycle;</span><br><span style="color: hsl(0, 100%, 40%);">-     blc_array_len = get_blc_values(&blc_pwm);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (conf->default_pwm_freq != 0)</span><br><span style="color: hsl(120, 100%, 40%);">+   pwm_freq = get_blc_pwm_freq_value(edid_ascii_string);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (pwm_freq == 0 && conf->default_pwm_freq != 0)</span><br><span>                 pwm_freq = conf->default_pwm_freq;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       /* Find EDID string and pwm freq in lookup table */</span><br><span style="color: hsl(0, 100%, 40%);">-     for (i = 0; i < blc_array_len; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-                if (!strncmp(blc_pwm[i].ascii_string, edid_ascii_string,</span><br><span style="color: hsl(0, 100%, 40%);">-                                strlen(blc_pwm[i].ascii_string))) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     pwm_freq = blc_pwm[i].pwm_freq;</span><br><span style="color: hsl(0, 100%, 40%);">-                 printk(BIOS_DEBUG, "Found EDID string: %s in lookup table, pwm: %dHz\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                              blc_pwm[i].ascii_string, pwm_freq);</span><br><span style="color: hsl(0, 100%, 40%);">-                     break;</span><br><span style="color: hsl(0, 100%, 40%);">-          }</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       if (i == blc_array_len)</span><br><span style="color: hsl(0, 100%, 40%);">-         printk(BIOS_NOTICE, "Your panels EDID `%s` wasn't found in the"</span><br><span style="color: hsl(0, 100%, 40%);">-                   "lookup table.\n You may have issues with your panels"</span><br><span style="color: hsl(0, 100%, 40%);">-                        "backlight.\n If you want to help improving coreboot"</span><br><span style="color: hsl(0, 100%, 40%);">-                 "please report: this EDID string\n and the result"</span><br><span style="color: hsl(0, 100%, 40%);">-                    "of `intel_read read BLC_PWM_CTL`"</span><br><span style="color: hsl(0, 100%, 40%);">-                    "(from intel-gpu-tools)\n while running vendor BIOS\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                       edid_ascii_string);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (pwm_freq == 0)</span><br><span>           gtt_write(BLC_PWM_CTL, 0x06100610);</span><br><span>  else</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/c/coreboot/+/29924">change 29924</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/c/coreboot/+/29924"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I9ad364f84f3658be98ce7ad3a6f0f0fe3247fc41 </div>
<div style="display:none"> Gerrit-Change-Number: 29924 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Arthur Heymans <arthur@aheymans.xyz> </div>
<div style="display:none"> Gerrit-Reviewer: Arthur Heymans <arthur@aheymans.xyz> </div>
<div style="display:none"> Gerrit-Reviewer: Nico Huber <nico.h@gmx.de> </div>
<div style="display:none"> Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com> </div>
<div style="display:none"> Gerrit-Reviewer: Patrick Rudolph <siro@das-labor.org> </div>
<div style="display:none"> Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>