diff --git a/src/northbridge/intel/gm45/gma.c b/src/northbridge/intel/gm45/gma.c
index b86e2b3..64b6a57 100644
--- a/src/northbridge/intel/gm45/gma.c
+++ b/src/northbridge/intel/gm45/gma.c
@@ -668,6 +668,39 @@
 		return (blc_mod << 16) | blc_mod;
 }
 
+static u16 get_blc_pwm_freq_value(const char *edid_ascii_string)
+{
+	static u16 blc_pwm_freq;
+	const struct blc_pwm_t *blc_pwm;
+	int i;
+	int blc_array_len;
+
+	if (blc_pwm_freq > 0)
+		return blc_pwm_freq;
+
+	blc_array_len = get_blc_values(&blc_pwm);
+	/* Find EDID string and pwm freq in lookup table */
+	for (i = 0; i < blc_array_len; i++) {
+		if (!strcmp(blc_pwm[i].ascii_string, edid_ascii_string)) {
+			blc_pwm_freq = blc_pwm[i].pwm_freq;
+			printk(BIOS_DEBUG, "Found EDID string: %s in lookup table, pwm: %dHz\n",
+			       blc_pwm[i].ascii_string, blc_pwm_freq);
+			break;
+		}
+	}
+
+	if (i == blc_array_len)
+		printk(BIOS_NOTICE, "Your panels EDID `%s` wasn't found in the"
+		       "lookup table.\n You may have issues with your panels"
+		       "backlight.\n If you want to help improving coreboot"
+		       "please report: this EDID string\n and the result"
+		       "of `intel_read read BLC_PWM_CTL`"
+		       "(from intel-gpu-tools)\n while running vendor BIOS\n",
+		       edid_ascii_string);
+
+	return blc_pwm_freq;
+}
+
 static void gma_pm_init_post_vbios(struct device *const dev,
 				const char *edid_ascii_string)
 {
@@ -675,9 +708,7 @@
 
 	u32 reg32;
 	u8 reg8;
-	const struct blc_pwm_t *blc_pwm;
-	int blc_array_len, i;
-	u16 pwm_freq = 0;
+	u16 pwm_freq;
 
 	/* Setup Panel Power On Delays */
 	reg32 = gtt_read(PP_ON_DELAYS);
@@ -708,30 +739,10 @@
 	reg8 = 100;
 	if (conf->duty_cycle != 0)
 		reg8 = conf->duty_cycle;
-	blc_array_len = get_blc_values(&blc_pwm);
-	if (conf->default_pwm_freq != 0)
+	pwm_freq = get_blc_pwm_freq_value(edid_ascii_string);
+	if (pwm_freq == 0 && conf->default_pwm_freq != 0)
 		pwm_freq = conf->default_pwm_freq;
 
-	/* Find EDID string and pwm freq in lookup table */
-	for (i = 0; i < blc_array_len; i++) {
-		if (!strncmp(blc_pwm[i].ascii_string, edid_ascii_string,
-				strlen(blc_pwm[i].ascii_string))) {
-			pwm_freq = blc_pwm[i].pwm_freq;
-			printk(BIOS_DEBUG, "Found EDID string: %s in lookup table, pwm: %dHz\n",
-				blc_pwm[i].ascii_string, pwm_freq);
-			break;
-		}
-	}
-
-	if (i == blc_array_len)
-		printk(BIOS_NOTICE, "Your panels EDID `%s` wasn't found in the"
-			"lookup table.\n You may have issues with your panels"
-			"backlight.\n If you want to help improving coreboot"
-			"please report: this EDID string\n and the result"
-			"of `intel_read read BLC_PWM_CTL`"
-			"(from intel-gpu-tools)\n while running vendor BIOS\n",
-			edid_ascii_string);
-
 	if (pwm_freq == 0)
 		gtt_write(BLC_PWM_CTL, 0x06100610);
 	else
