mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
firmware: arm_scmi: Simplify chan_available transport operation
SCMI transport operation .chan_available determines in a transport specific way if an SCMI channel is still available and to be configured. Such information is derived by analyzing bits of device node in a transport specific way, all it needs is a device node to operate up on, not necessarily a full blown device. Simplify the helper to receive in input a reference to a device_node instead of a device carrying a pointer to such device_node. Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> Link: https://lore.kernel.org/r/20221222185049.737625-2-cristian.marussi@arm.com Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
This commit is contained in:
parent
e325285de2
commit
7a75b7afd8
|
|
@ -153,7 +153,7 @@ struct scmi_chan_info {
|
|||
*/
|
||||
struct scmi_transport_ops {
|
||||
int (*link_supplier)(struct device *dev);
|
||||
bool (*chan_available)(struct device *dev, int idx);
|
||||
bool (*chan_available)(struct device_node *of_node, int idx);
|
||||
int (*chan_setup)(struct scmi_chan_info *cinfo, struct device *dev,
|
||||
bool tx);
|
||||
int (*chan_free)(int id, void *p, void *data);
|
||||
|
|
|
|||
|
|
@ -2003,7 +2003,7 @@ static int scmi_chan_setup(struct scmi_info *info, struct device *dev,
|
|||
if (cinfo)
|
||||
return 0;
|
||||
|
||||
if (!info->desc->ops->chan_available(dev, idx)) {
|
||||
if (!info->desc->ops->chan_available(dev->of_node, idx)) {
|
||||
cinfo = idr_find(idr, SCMI_PROTOCOL_BASE);
|
||||
if (unlikely(!cinfo)) /* Possible only if platform has no Rx */
|
||||
return -EINVAL;
|
||||
|
|
|
|||
|
|
@ -46,9 +46,9 @@ static void rx_callback(struct mbox_client *cl, void *m)
|
|||
scmi_rx_callback(smbox->cinfo, shmem_read_header(smbox->shmem), NULL);
|
||||
}
|
||||
|
||||
static bool mailbox_chan_available(struct device *dev, int idx)
|
||||
static bool mailbox_chan_available(struct device_node *of_node, int idx)
|
||||
{
|
||||
return !of_parse_phandle_with_args(dev->of_node, "mboxes",
|
||||
return !of_parse_phandle_with_args(of_node, "mboxes",
|
||||
"#mbox-cells", idx, NULL);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -328,11 +328,11 @@ static int scmi_optee_link_supplier(struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool scmi_optee_chan_available(struct device *dev, int idx)
|
||||
static bool scmi_optee_chan_available(struct device_node *of_node, int idx)
|
||||
{
|
||||
u32 channel_id;
|
||||
|
||||
return !of_property_read_u32_index(dev->of_node, "linaro,optee-channel-id",
|
||||
return !of_property_read_u32_index(of_node, "linaro,optee-channel-id",
|
||||
idx, &channel_id);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -52,9 +52,9 @@ static irqreturn_t smc_msg_done_isr(int irq, void *data)
|
|||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static bool smc_chan_available(struct device *dev, int idx)
|
||||
static bool smc_chan_available(struct device_node *of_node, int idx)
|
||||
{
|
||||
struct device_node *np = of_parse_phandle(dev->of_node, "shmem", 0);
|
||||
struct device_node *np = of_parse_phandle(of_node, "shmem", 0);
|
||||
if (!np)
|
||||
return false;
|
||||
|
||||
|
|
|
|||
|
|
@ -385,7 +385,7 @@ static int virtio_link_supplier(struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool virtio_chan_available(struct device *dev, int idx)
|
||||
static bool virtio_chan_available(struct device_node *of_node, int idx)
|
||||
{
|
||||
struct scmi_vio_channel *channels, *vioch = NULL;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user