On 1/15/25 2:28 PM, Alice Guo wrote:

[...]

+static int scmi_clk_get_permissions(struct udevice *dev, int clkid, u32 *perm)
+{
+       u32 version;
+       int ret;
+
+       ret = scmi_generic_protocol_version(dev, SCMI_PROTOCOL_ID_CLOCK, 
&version);
+       if (ret) {
+               debug("get SCMI clock management protocol version failed\n");
+               return ret;
+       }
+
+       if (version >= CLOCK_PROTOCOL_VERSION_3_0) {

if (version < CLOCK_PROTOCOL_VERSION_3_0)
  return -EINVAL;

+               struct scmi_clk_get_permissions_in in = {
+                       .clock_id = clkid,
+               };

[...]

+static int scmi_clk_set_parent(struct clk *clk, struct clk *parent)
+{
+       struct clk_scmi *clkscmi;
+       struct clk *c;
+       int ret;
+
+       if (CONFIG_IS_ENABLED(CLK_CCF)) {

Either do this to reduce indent:

if (!CONFIG_IS_ENABLED(CLK_CCF))
  return -ENOTSUPP;

Or even better, introduce dedicated clock ops structure for the CCF variant with these extra callbacks .

+               ret = clk_get_by_id(clk->id, &c);
+               if (ret)
+                       return ret;
+
+               clkscmi = container_of(c, struct clk_scmi, clk);
+
+               if (clkscmi->ctrl_flags & SUPPORT_CLK_PARENT_CONTROL)
+                       return __scmi_clk_set_parent(clk, parent);
+
+               /* Following Linux drivers/clk/clk-scmi.c, directly return 0 if 
agent has no permission. */
+               debug("SCMI CLOCK: the clock's parent cannot be changed by the 
agent.\n");
+               return 0;
+       }
+
+       return -ENOTSUPP;
+}

[...]

@@ -858,6 +861,27 @@ struct scmi_clk_parent_set_out {
        s32 status;
  };
+/**
+ * @clock_id:  Identifier for the clock device.
+ */
+struct scmi_clk_get_permissions_in {
+       u32 clock_id;
+};
+
+/**
+ * @status:    Negative 32-bit integers are used to return error status codes.
+ * @permissions:       Bit[31] Clock state control, Bit[30] Clock parent 
control,
+ *                                     Bit[29] Clock rate control, Bits[28:0] 
Reserved, must be zero

Please make sure the indent is consistent (it seems there are too many tabs here) and does not overflow 80 characters line length .

Reply via email to