
Hi Aniket,
On 06:02-20241119, Aniket Limaye wrote:
From: Reid Tonking reidt@ti.com
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 reidt@ti.com Signed-off-by: Aniket Limaye a-limaye@ti.com
[..]
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 m-chawdhry@ti.com
Regards, Manorit
#endif
2.47.0