Message ID | 20230111074528.29354-15-roger.lu@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Enahance SVS's robustness | expand |
On 11/01/2023 08:45, Roger Lu wrote: > The o_slope value is dependent of the o_slope_sign, refactor code to get > rid of unnecessary if constructs. > > Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com> > Signed-off-by: Roger Lu <roger.lu@mediatek.com> > Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Applied, thanks! > --- > drivers/soc/mediatek/mtk-svs.c | 51 +++++++++++++++------------------- > 1 file changed, 22 insertions(+), 29 deletions(-) > > diff --git a/drivers/soc/mediatek/mtk-svs.c b/drivers/soc/mediatek/mtk-svs.c > index 89117807e85d..8cfbf8ffb138 100644 > --- a/drivers/soc/mediatek/mtk-svs.c > +++ b/drivers/soc/mediatek/mtk-svs.c > @@ -1944,26 +1944,27 @@ static bool svs_mt8183_efuse_parsing(struct svs_platform *svsp) > o_slope_sign = (svsp->tefuse[0] >> 7) & BIT(0); > > ts_id = (svsp->tefuse[1] >> 9) & BIT(0); > - o_slope = (svsp->tefuse[0] >> 26) & GENMASK(5, 0); > - > - if (adc_cali_en_t == 1) { > - if (!ts_id) > - o_slope = 0; > - > - if (adc_ge_t < 265 || adc_ge_t > 758 || > - adc_oe_t < 265 || adc_oe_t > 758 || > - o_vtsmcu[0] < -8 || o_vtsmcu[0] > 484 || > - o_vtsmcu[1] < -8 || o_vtsmcu[1] > 484 || > - o_vtsmcu[2] < -8 || o_vtsmcu[2] > 484 || > - o_vtsmcu[3] < -8 || o_vtsmcu[3] > 484 || > - o_vtsmcu[4] < -8 || o_vtsmcu[4] > 484 || > - o_vtsabb < -8 || o_vtsabb > 484 || > - degc_cali < 1 || degc_cali > 63) { > - dev_err(svsp->dev, "bad thermal efuse, no mon mode\n"); > - goto remove_mt8183_svsb_mon_mode; > - } > + if (!ts_id) { > + o_slope = 1534; > } else { > - dev_err(svsp->dev, "no thermal efuse, no mon mode\n"); > + o_slope = (svsp->tefuse[0] >> 26) & GENMASK(5, 0); > + if (!o_slope_sign) > + o_slope = 1534 + o_slope * 10; > + else > + o_slope = 1534 - o_slope * 10; > + } > + > + if (adc_cali_en_t == 0 || > + adc_ge_t < 265 || adc_ge_t > 758 || > + adc_oe_t < 265 || adc_oe_t > 758 || > + o_vtsmcu[0] < -8 || o_vtsmcu[0] > 484 || > + o_vtsmcu[1] < -8 || o_vtsmcu[1] > 484 || > + o_vtsmcu[2] < -8 || o_vtsmcu[2] > 484 || > + o_vtsmcu[3] < -8 || o_vtsmcu[3] > 484 || > + o_vtsmcu[4] < -8 || o_vtsmcu[4] > 484 || > + o_vtsabb < -8 || o_vtsabb > 484 || > + degc_cali < 1 || degc_cali > 63) { > + dev_err(svsp->dev, "bad thermal efuse, no mon mode\n"); > goto remove_mt8183_svsb_mon_mode; > } > > @@ -1982,11 +1983,7 @@ static bool svs_mt8183_efuse_parsing(struct svs_platform *svsp) > x_roomt[i] = (((format[i] * 10000) / 4096) * 10000) / gain; > > temp0 = (10000 * 100000 / gain) * 15 / 18; > - > - if (!o_slope_sign) > - mts = (temp0 * 10) / (1534 + o_slope * 10); > - else > - mts = (temp0 * 10) / (1534 - o_slope * 10); > + mts = (temp0 * 10) / o_slope; > > for (idx = 0; idx < svsp->bank_max; idx++) { > svsb = &svsp->banks[idx]; > @@ -2013,11 +2010,7 @@ static bool svs_mt8183_efuse_parsing(struct svs_platform *svsp) > temp0 = (degc_cali * 10 / 2); > temp1 = ((10000 * 100000 / 4096 / gain) * > oe + tb_roomt * 10) * 15 / 18; > - > - if (!o_slope_sign) > - temp2 = temp1 * 100 / (1534 + o_slope * 10); > - else > - temp2 = temp1 * 100 / (1534 - o_slope * 10); > + temp2 = temp1 * 100 / o_slope; > > svsb->bts = (temp0 + temp2 - 250) * 4 / 10; > }
diff --git a/drivers/soc/mediatek/mtk-svs.c b/drivers/soc/mediatek/mtk-svs.c index 89117807e85d..8cfbf8ffb138 100644 --- a/drivers/soc/mediatek/mtk-svs.c +++ b/drivers/soc/mediatek/mtk-svs.c @@ -1944,26 +1944,27 @@ static bool svs_mt8183_efuse_parsing(struct svs_platform *svsp) o_slope_sign = (svsp->tefuse[0] >> 7) & BIT(0); ts_id = (svsp->tefuse[1] >> 9) & BIT(0); - o_slope = (svsp->tefuse[0] >> 26) & GENMASK(5, 0); - - if (adc_cali_en_t == 1) { - if (!ts_id) - o_slope = 0; - - if (adc_ge_t < 265 || adc_ge_t > 758 || - adc_oe_t < 265 || adc_oe_t > 758 || - o_vtsmcu[0] < -8 || o_vtsmcu[0] > 484 || - o_vtsmcu[1] < -8 || o_vtsmcu[1] > 484 || - o_vtsmcu[2] < -8 || o_vtsmcu[2] > 484 || - o_vtsmcu[3] < -8 || o_vtsmcu[3] > 484 || - o_vtsmcu[4] < -8 || o_vtsmcu[4] > 484 || - o_vtsabb < -8 || o_vtsabb > 484 || - degc_cali < 1 || degc_cali > 63) { - dev_err(svsp->dev, "bad thermal efuse, no mon mode\n"); - goto remove_mt8183_svsb_mon_mode; - } + if (!ts_id) { + o_slope = 1534; } else { - dev_err(svsp->dev, "no thermal efuse, no mon mode\n"); + o_slope = (svsp->tefuse[0] >> 26) & GENMASK(5, 0); + if (!o_slope_sign) + o_slope = 1534 + o_slope * 10; + else + o_slope = 1534 - o_slope * 10; + } + + if (adc_cali_en_t == 0 || + adc_ge_t < 265 || adc_ge_t > 758 || + adc_oe_t < 265 || adc_oe_t > 758 || + o_vtsmcu[0] < -8 || o_vtsmcu[0] > 484 || + o_vtsmcu[1] < -8 || o_vtsmcu[1] > 484 || + o_vtsmcu[2] < -8 || o_vtsmcu[2] > 484 || + o_vtsmcu[3] < -8 || o_vtsmcu[3] > 484 || + o_vtsmcu[4] < -8 || o_vtsmcu[4] > 484 || + o_vtsabb < -8 || o_vtsabb > 484 || + degc_cali < 1 || degc_cali > 63) { + dev_err(svsp->dev, "bad thermal efuse, no mon mode\n"); goto remove_mt8183_svsb_mon_mode; } @@ -1982,11 +1983,7 @@ static bool svs_mt8183_efuse_parsing(struct svs_platform *svsp) x_roomt[i] = (((format[i] * 10000) / 4096) * 10000) / gain; temp0 = (10000 * 100000 / gain) * 15 / 18; - - if (!o_slope_sign) - mts = (temp0 * 10) / (1534 + o_slope * 10); - else - mts = (temp0 * 10) / (1534 - o_slope * 10); + mts = (temp0 * 10) / o_slope; for (idx = 0; idx < svsp->bank_max; idx++) { svsb = &svsp->banks[idx]; @@ -2013,11 +2010,7 @@ static bool svs_mt8183_efuse_parsing(struct svs_platform *svsp) temp0 = (degc_cali * 10 / 2); temp1 = ((10000 * 100000 / 4096 / gain) * oe + tb_roomt * 10) * 15 / 18; - - if (!o_slope_sign) - temp2 = temp1 * 100 / (1534 + o_slope * 10); - else - temp2 = temp1 * 100 / (1534 - o_slope * 10); + temp2 = temp1 * 100 / o_slope; svsb->bts = (temp0 + temp2 - 250) * 4 / 10; }