On 1/27/2020 1:49 PM, Laurentiu Tudor wrote: > >> -----Original Message----- >> From: Andrei Botila <andrei.botila@xxxxxxx> >> Sent: Monday, January 27, 2020 1:16 PM >> >> Add a new api that returns Management Complex firmware version >> and make the required structure public. The api's first user will be >> the caam driver for setting prediction resistance bits. >> >> Signed-off-by: Andrei Botila <andrei.botila@xxxxxxx> > > Acked-by: Laurentiu Tudor <laurentiu.tudor@xxxxxxx> Reviewed-by: Horia Geantă <horia.geanta@xxxxxxx> We'll need this patch in the crypto subsystem, such that the CAAM HWRNG patch series (currently v7) https://patchwork.kernel.org/project/linux-crypto/list/?series=233763&archive=both&state=* is updated to work with existing (and future) FSL MC f/w versions. CAAM HWRNG series has been in review for quite some time and AFAICT is in pretty good shape. Unfortunately it missed v5.6 merge window. I would like it to go in v5.7, but for this we'll need current patch (a dependency) to go through (or be cherry-picked into) the crypto tree. >> --- >> drivers/bus/fsl-mc/fsl-mc-bus.c | 33 +++++++++++++++++---------------- >> include/linux/fsl/mc.h | 16 ++++++++++++++++ >> 2 files changed, 33 insertions(+), 16 deletions(-) >> >> diff --git a/drivers/bus/fsl-mc/fsl-mc-bus.c b/drivers/bus/fsl-mc/fsl-mc- >> bus.c >> index a07cc19becdb..330c76181604 100644 >> --- a/drivers/bus/fsl-mc/fsl-mc-bus.c >> +++ b/drivers/bus/fsl-mc/fsl-mc-bus.c >> @@ -26,6 +26,8 @@ >> */ >> #define FSL_MC_DEFAULT_DMA_MASK (~0ULL) >> >> +static struct fsl_mc_version mc_version; >> + >> /** >> * struct fsl_mc - Private data of a "fsl,qoriq-mc" platform device >> * @root_mc_bus_dev: fsl-mc device representing the root DPRC >> @@ -54,20 +56,6 @@ struct fsl_mc_addr_translation_range { >> phys_addr_t start_phys_addr; >> }; >> >> -/** >> - * struct mc_version >> - * @major: Major version number: incremented on API compatibility changes >> - * @minor: Minor version number: incremented on API additions (that are >> - * backward compatible); reset when major version is incremented >> - * @revision: Internal revision number: incremented on implementation >> changes >> - * and/or bug fixes that have no impact on API >> - */ >> -struct mc_version { >> - u32 major; >> - u32 minor; >> - u32 revision; >> -}; >> - >> /** >> * fsl_mc_bus_match - device to driver matching callback >> * @dev: the fsl-mc device to match against >> @@ -338,7 +326,7 @@ EXPORT_SYMBOL_GPL(fsl_mc_driver_unregister); >> */ >> static int mc_get_version(struct fsl_mc_io *mc_io, >> u32 cmd_flags, >> - struct mc_version *mc_ver_info) >> + struct fsl_mc_version *mc_ver_info) >> { >> struct fsl_mc_command cmd = { 0 }; >> struct dpmng_rsp_get_version *rsp_params; >> @@ -363,6 +351,20 @@ static int mc_get_version(struct fsl_mc_io *mc_io, >> return 0; >> } >> >> +/** >> + * fsl_mc_get_version - function to retrieve the MC f/w version >> information >> + * >> + * Return: mc version when called after fsl-mc-bus probe; NULL otherwise. >> + */ >> +struct fsl_mc_version *fsl_mc_get_version(void) >> +{ >> + if (mc_version.major) >> + return &mc_version; >> + >> + return NULL; >> +} >> +EXPORT_SYMBOL_GPL(fsl_mc_get_version); >> + >> /** >> * fsl_mc_get_root_dprc - function to traverse to the root dprc >> */ >> @@ -862,7 +864,6 @@ static int fsl_mc_bus_probe(struct platform_device >> *pdev) >> int container_id; >> phys_addr_t mc_portal_phys_addr; >> u32 mc_portal_size; >> - struct mc_version mc_version; >> struct resource res; >> >> mc = devm_kzalloc(&pdev->dev, sizeof(*mc), GFP_KERNEL); >> diff --git a/include/linux/fsl/mc.h b/include/linux/fsl/mc.h >> index 54d9436600c7..2b5f8366dbe1 100644 >> --- a/include/linux/fsl/mc.h >> +++ b/include/linux/fsl/mc.h >> @@ -381,6 +381,22 @@ int __must_check __fsl_mc_driver_register(struct >> fsl_mc_driver *fsl_mc_driver, >> >> void fsl_mc_driver_unregister(struct fsl_mc_driver *driver); >> >> +/** >> + * struct fsl_mc_version >> + * @major: Major version number: incremented on API compatibility changes >> + * @minor: Minor version number: incremented on API additions (that are >> + * backward compatible); reset when major version is incremented >> + * @revision: Internal revision number: incremented on implementation >> changes >> + * and/or bug fixes that have no impact on API >> + */ >> +struct fsl_mc_version { >> + u32 major; >> + u32 minor; >> + u32 revision; >> +}; >> + >> +struct fsl_mc_version *fsl_mc_get_version(void); >> + >> int __must_check fsl_mc_portal_allocate(struct fsl_mc_device *mc_dev, >> u16 mc_io_flags, >> struct fsl_mc_io **new_mc_io); >> -- >> 2.17.1 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >