
24 Jan
2025
24 Jan
'25
3:14 p.m.
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 .