]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
firmware: arm_scmi: Skip scmi mbox channel setup for addtional devices
authorSudeep Holla <sudeep.holla@arm.com>
Wed, 6 Nov 2019 11:32:05 +0000 (11:32 +0000)
committerSudeep Holla <sudeep.holla@arm.com>
Tue, 24 Dec 2019 11:35:49 +0000 (11:35 +0000)
Now that the scmi bus supports adding multiple devices per protocol,
and since scmi_create_protocol_device calls scmi_mbox_chan_setup,
we must avoid allocating and initialising the mbox channel if it is
already initialised.

Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_scmi/driver.c

index dee7ce3bd8156cd356bbd40b1dad56fdae2bbad3..2952fcd8dd8a438e5e0394b4f2f3ebed3686e876 100644 (file)
@@ -735,6 +735,11 @@ static int scmi_mbox_chan_setup(struct scmi_info *info, struct device *dev,
        idx = tx ? 0 : 1;
        idr = tx ? &info->tx_idr : &info->rx_idr;
 
+       /* check if already allocated, used for multiple device per protocol */
+       cinfo = idr_find(idr, prot_id);
+       if (cinfo)
+               return 0;
+
        if (scmi_mailbox_check(np, idx)) {
                cinfo = idr_find(idr, SCMI_PROTOCOL_BASE);
                if (unlikely(!cinfo)) /* Possible only if platform has no Rx */