diff options
author | Tom Rini <trini@konsulko.com> | 2022-03-03 14:16:14 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-03-03 14:16:14 -0500 |
commit | 09cb77d22e8b87f02718a2e8f8ec7952f7673622 (patch) | |
tree | b4a584688949e49d22e1daac341666c93b720d87 /drivers/firmware/scmi/scmi_agent-uclass.c | |
parent | 2dfdba4a5a48de33a3cedc908c183b86b6ff7bd5 (diff) | |
parent | 7c33f78983c344c46d46d857fd1d5e2b5b95ad40 (diff) |
Merge branch '2022-03-02-scmi-updates' into next
- A small set of scmi updates
Diffstat (limited to 'drivers/firmware/scmi/scmi_agent-uclass.c')
-rw-r--r-- | drivers/firmware/scmi/scmi_agent-uclass.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/firmware/scmi/scmi_agent-uclass.c b/drivers/firmware/scmi/scmi_agent-uclass.c index 4f5870b4838..3819f2fa993 100644 --- a/drivers/firmware/scmi/scmi_agent-uclass.c +++ b/drivers/firmware/scmi/scmi_agent-uclass.c @@ -116,10 +116,23 @@ static const struct scmi_agent_ops *transport_dev_ops(struct udevice *dev) int devm_scmi_process_msg(struct udevice *dev, struct scmi_msg *msg) { - const struct scmi_agent_ops *ops = transport_dev_ops(dev); + const struct scmi_agent_ops *ops; + struct udevice *parent = dev; + + /* Find related SCMI agent device */ + do { + parent = dev_get_parent(parent); + } while (parent && device_get_uclass_id(parent) != UCLASS_SCMI_AGENT); + + if (!parent) { + dev_err(dev, "Invalid SCMI device, agent not found\n"); + return -ENODEV; + } + + ops = transport_dev_ops(parent); if (ops->process_msg) - return ops->process_msg(dev, msg); + return ops->process_msg(parent, msg); return -EPROTONOSUPPORT; } |