lkml.org 
[lkml]   [2021]   [Jun]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 09/16] firmware: arm_scmi: Add optional link_supplier() transport op
    Date
    From: Peter Hilber <peter.hilber@opensynergy.com>

    For the scmi-virtio transport, it might not be possible to refer to the
    proper virtio device at device tree build time. Therefore, add an op
    which will allow scmi-virtio to dynamically link to the proper virtio
    device during probe.

    Signed-off-by: Peter Hilber <peter.hilber@opensynergy.com>
    ---
    drivers/firmware/arm_scmi/common.h | 2 ++
    drivers/firmware/arm_scmi/driver.c | 6 ++++++
    2 files changed, 8 insertions(+)

    diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
    index 6b8d388fcf74..a31194b3000a 100644
    --- a/drivers/firmware/arm_scmi/common.h
    +++ b/drivers/firmware/arm_scmi/common.h
    @@ -316,6 +316,7 @@ struct scmi_chan_info {
    /**
    * struct scmi_transport_ops - Structure representing a SCMI transport ops
    *
    + * @link_supplier: Optional callback to add link to a supplier device
    * @chan_available: Callback to check if channel is available or not
    * @chan_setup: Callback to allocate and setup a channel
    * @chan_free: Callback to free a channel
    @@ -330,6 +331,7 @@ struct scmi_chan_info {
    * @poll_done: Callback to poll transfer status
    */
    struct scmi_transport_ops {
    + int (*link_supplier)(struct device *dev);
    bool (*chan_available)(struct device *dev, int idx);
    int (*chan_setup)(struct scmi_chan_info *cinfo, struct device *dev,
    bool tx);
    diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
    index 041a9e008cbf..69fa97250d98 100644
    --- a/drivers/firmware/arm_scmi/driver.c
    +++ b/drivers/firmware/arm_scmi/driver.c
    @@ -1757,6 +1757,12 @@ static int scmi_probe(struct platform_device *pdev)
    handle->devm_protocol_get = scmi_devm_protocol_get;
    handle->devm_protocol_put = scmi_devm_protocol_put;

    + if (desc->ops->link_supplier) {
    + ret = desc->ops->link_supplier(dev);
    + if (ret)
    + return ret;
    + }
    +
    ret = scmi_txrx_setup(info, dev, SCMI_PROTOCOL_BASE);
    if (ret)
    return ret;
    --
    2.17.1
    \
     
     \ /
      Last update: 2021-06-11 19:01    [W:4.105 / U:0.704 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site