Add clk_request handler to check if a valid clock is requested,
Here clk_free handler is added for debug purpose which will display
details of clock passed to clk_free.

Signed-off-by: Sagar Shrikant Kadam <sagar.ka...@sifive.com>
Reviewed-by: Pragnesh Patel <pragnesh.pa...@sifive.com>
---
 drivers/clk/sifive/fu540-prci.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/clk/sifive/fu540-prci.c b/drivers/clk/sifive/fu540-prci.c
index 67e21b6..bf50ea2 100644
--- a/drivers/clk/sifive/fu540-prci.c
+++ b/drivers/clk/sifive/fu540-prci.c
@@ -581,6 +581,25 @@ static ulong sifive_fu540_prci_set_rate(struct clk *clk, 
ulong rate)
        return rate;
 }
 
+static int sifive_fu540_prci_clk_request(struct clk *clk)
+{
+       debug("%s(clk=%p) (dev=%p, id=%lu)\n", __func__, clk, clk->dev,
+             clk->id);
+
+       if (clk->id >= ARRAY_SIZE(__prci_init_clocks))
+               return -EINVAL;
+
+       return 0;
+}
+
+static int sifive_fu540_prci_clk_free(struct clk *clk)
+{
+       debug("%s(clk=%p) (dev=%p, id=%lu)\n", __func__, clk, clk->dev,
+             clk->id);
+
+       return 0;
+}
+
 static int sifive_fu540_prci_probe(struct udevice *dev)
 {
        int i, err;
@@ -612,6 +631,8 @@ static int sifive_fu540_prci_probe(struct udevice *dev)
 static struct clk_ops sifive_fu540_prci_ops = {
        .set_rate = sifive_fu540_prci_set_rate,
        .get_rate = sifive_fu540_prci_get_rate,
+       .request  = sifive_fu540_prci_clk_request,
+       .rfree    = sifive_fu540_prci_clk_free,
 };
 
 static const struct udevice_id sifive_fu540_prci_ids[] = {
-- 
2.7.4

Reply via email to