Message ID | 20231215-pinctrl-scmi-v1-1-0fe35e4611f7@nxp.com |
---|---|
State | New |
Headers | show |
Series | firmware: arm_scmi: Add SCMI v3.2 pincontrol protocol basic support | expand |
On Fri, Dec 15, 2023 at 07:56:29PM +0800, Peng Fan (OSS) wrote: > From: Peng Fan <peng.fan@nxp.com> > > When Agent sending data to SCMI server, the Agent driver could check > the size to avoid protocol buffer overflow. So introduce the helper > get_max_msg_size. > > Signed-off-by: Peng Fan <peng.fan@nxp.com> > --- > drivers/firmware/arm_scmi/driver.c | 15 +++++++++++++++ > drivers/firmware/arm_scmi/protocols.h | 1 + > 2 files changed, 16 insertions(+) > > diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c > index a9f70e6e58ac..b4f8f190351b 100644 > --- a/drivers/firmware/arm_scmi/driver.c > +++ b/drivers/firmware/arm_scmi/driver.c > @@ -1481,6 +1481,20 @@ static int scmi_common_extended_name_get(const struct scmi_protocol_handle *ph, > return ret; > } > > +/** > + * scmi_common_get_max_msg_size - Get maximum message size > + * @ph: A protocol handle reference. > + * > + * Return: Maximum message size for the current protocol. > + */ > +static int scmi_common_get_max_msg_size(const struct scmi_protocol_handle *ph) > +{ > + const struct scmi_protocol_instance *pi = ph_to_pi(ph); > + struct scmi_info *info = handle_to_scmi_info(pi->handle); > + > + return info->desc->max_msg_size; > +} > + > /** > * struct scmi_iterator - Iterator descriptor > * @msg: A reference to the message TX buffer; filled by @prepare_message with > @@ -1756,6 +1770,7 @@ static void scmi_common_fastchannel_db_ring(struct scmi_fc_db_info *db) > > static const struct scmi_proto_helpers_ops helpers_ops = { > .extended_name_get = scmi_common_extended_name_get, > + .get_max_msg_size = scmi_common_get_max_msg_size, > .iter_response_init = scmi_iterator_init, > .iter_response_run = scmi_iterator_run, > .fastchannel_init = scmi_common_fastchannel_init, > diff --git a/drivers/firmware/arm_scmi/protocols.h b/drivers/firmware/arm_scmi/protocols.h > index e683c26f24eb..08de8dc064c1 100644 > --- a/drivers/firmware/arm_scmi/protocols.h > +++ b/drivers/firmware/arm_scmi/protocols.h > @@ -270,6 +270,7 @@ struct scmi_proto_helpers_ops { > void __iomem **p_addr, > struct scmi_fc_db_info **p_db); > void (*fastchannel_db_ring)(struct scmi_fc_db_info *db); > + int (*get_max_msg_size)(const struct scmi_protocol_handle *ph); > }; This looks good to me, but please add a comment for this new helper in the comment block above. Other than that: Reviewed-by: Cristian Marussi <cristian.marussi@arm.com> Thanks, Cristian
diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index a9f70e6e58ac..b4f8f190351b 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -1481,6 +1481,20 @@ static int scmi_common_extended_name_get(const struct scmi_protocol_handle *ph, return ret; } +/** + * scmi_common_get_max_msg_size - Get maximum message size + * @ph: A protocol handle reference. + * + * Return: Maximum message size for the current protocol. + */ +static int scmi_common_get_max_msg_size(const struct scmi_protocol_handle *ph) +{ + const struct scmi_protocol_instance *pi = ph_to_pi(ph); + struct scmi_info *info = handle_to_scmi_info(pi->handle); + + return info->desc->max_msg_size; +} + /** * struct scmi_iterator - Iterator descriptor * @msg: A reference to the message TX buffer; filled by @prepare_message with @@ -1756,6 +1770,7 @@ static void scmi_common_fastchannel_db_ring(struct scmi_fc_db_info *db) static const struct scmi_proto_helpers_ops helpers_ops = { .extended_name_get = scmi_common_extended_name_get, + .get_max_msg_size = scmi_common_get_max_msg_size, .iter_response_init = scmi_iterator_init, .iter_response_run = scmi_iterator_run, .fastchannel_init = scmi_common_fastchannel_init, diff --git a/drivers/firmware/arm_scmi/protocols.h b/drivers/firmware/arm_scmi/protocols.h index e683c26f24eb..08de8dc064c1 100644 --- a/drivers/firmware/arm_scmi/protocols.h +++ b/drivers/firmware/arm_scmi/protocols.h @@ -270,6 +270,7 @@ struct scmi_proto_helpers_ops { void __iomem **p_addr, struct scmi_fc_db_info **p_db); void (*fastchannel_db_ring)(struct scmi_fc_db_info *db); + int (*get_max_msg_size)(const struct scmi_protocol_handle *ph); }; /**