Hi Aniket, On 06:02-20241119, Aniket Limaye wrote: > From: Reid Tonking <[email protected]> > > k3_avs driver checks opp_ids when probing and overwrites the voltage > values in vd_data for the respective board. The new k3_avs_check_opp() > can be called from board files to check the efuse data and returns 0 if > valid. > > Also add the same check in k3_avs_program_voltage() to error out if > the efuse data was not valid. > > Signed-off-by: Reid Tonking <[email protected]> > Signed-off-by: Aniket Limaye <[email protected]> > --- [..] > --- > drivers/misc/k3_avs.c | 32 ++++++++++++++++++++++++++++++++ > include/k3-avs.h | 1 + > 2 files changed, 33 insertions(+) > > diff --git a/drivers/misc/k3_avs.c b/drivers/misc/k3_avs.c > index 9d950d034a5..0774e0a4c9e 100644 > --- a/drivers/misc/k3_avs.c > +++ b/drivers/misc/k3_avs.c > @@ -121,6 +121,11 @@ static int k3_avs_program_voltage(struct k3_avs_privdata > *priv, > if (!vd->supply) > return -ENODEV; > > + if (!volt) { > + dev_err(priv->dev, "No efuse found for opp_%d\n", opp_id); > + return -EINVAL; > + } > + > vd->opp = opp_id; > vd->flags |= VD_FLAG_INIT_DONE; > > @@ -192,6 +197,33 @@ static int match_opp(struct vd_data *vd, u32 freq) > return -EINVAL; > } > > +/** > + * k3_check_opp: Check for presence of opp efuse > + * @dev: AVS device > + * @vdd_id: voltage domain ID > + * @opp_id: opp id to check if voltage is present > + * > + * Checks to see if an opp has voltage. k3_avs probe will populate > + * voltage data if efuse is present. Returns 0 if data is valid. > + */ > +int k3_avs_check_opp(struct udevice *dev, int vdd_id, int opp_id) > +{ > + struct k3_avs_privdata *priv = dev_get_priv(dev); > + struct vd_data *vd; > + int volt; > + > + vd = get_vd(priv, vdd_id); > + if (!vd) > + return -EINVAL; > + > + volt = vd->opps[opp_id].volt; > + if (volt) > + return 0; > + > + printf("No efuse found for opp_%d\n", opp_id); > + return -EINVAL; > +} > + > /** > * k3_avs_notify_freq: Notify clock rate change towards AVS subsystem > * @dev_id: Device ID for the clock to be changed > diff --git a/include/k3-avs.h b/include/k3-avs.h > index f6f1031c9cc..5a973e4ed45 100644 > --- a/include/k3-avs.h > +++ b/include/k3-avs.h > @@ -27,5 +27,6 @@ > > int k3_avs_set_opp(struct udevice *dev, int vdd_id, int opp_id); > int k3_avs_notify_freq(int dev_id, int clk_id, u32 freq); > +int k3_avs_check_opp(struct udevice *dev, int vdd_id, int opp_id);
Reviewed-by: Manorit Chawdhry <[email protected]> Regards, Manorit > > #endif > -- > 2.47.0 >

