mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 04:36:13 +02:00
firmware: scmi: support to manage SCMI protocol drivers with a linker-genetated array
U_BOOT_SCMI_PROTO_DRIVER macro is used to add a SCMI protocol driver to scmi_proto_driver list. scmi_proto_driver_get() function can be used to match a SCMI protocol id and its driver. Signed-off-by: Alice Guo <alice.guo@nxp.com>
This commit is contained in:
parent
0c8a89d252
commit
b4f3fab643
@ -352,6 +352,22 @@ static int scmi_fill_base_info(struct udevice *agent, struct udevice *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct driver *scmi_proto_driver_get(unsigned int proto_id)
|
||||
{
|
||||
struct scmi_proto_driver *start, *entry;
|
||||
int n_ents;
|
||||
|
||||
start = ll_entry_start(struct scmi_proto_driver, scmi_proto_driver);
|
||||
n_ents = ll_entry_count(struct scmi_proto_driver, scmi_proto_driver);
|
||||
|
||||
for (entry = start; entry != start + n_ents; entry++) {
|
||||
if (entry->match->proto_id == proto_id)
|
||||
return entry->driver;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* SCMI agent devices binds devices of various uclasses depending on
|
||||
* the FDT description. scmi_bind_protocol() is a generic bind sequence
|
||||
|
||||
@ -115,4 +115,19 @@ struct scmi_agent_ops {
|
||||
struct scmi_msg *msg);
|
||||
};
|
||||
|
||||
struct scmi_proto_match {
|
||||
unsigned int proto_id;
|
||||
};
|
||||
|
||||
struct scmi_proto_driver {
|
||||
struct driver *driver;
|
||||
const struct scmi_proto_match *match;
|
||||
};
|
||||
|
||||
#define U_BOOT_SCMI_PROTO_DRIVER(__name, __match) \
|
||||
ll_entry_declare(struct scmi_proto_driver, __name, scmi_proto_driver) = { \
|
||||
.driver = llsym(struct driver, __name, driver), \
|
||||
.match = __match, \
|
||||
}
|
||||
|
||||
#endif /* _SCMI_TRANSPORT_UCLASS_H */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user