mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
bus: fsl-mc: add api to retrieve mc version
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@nxp.com> Acked-by: Laurentiu Tudor <laurentiu.tudor@nxp.com> Reviewed-by: Horia Geantă <horia.geanta@nxp.com> Cc: Chris Healy <cphealy@gmail.com> Cc: Lucas Stach <l.stach@pengutronix.de> Cc: Horia Geantă <horia.geanta@nxp.com> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: Iuliana Prodan <iuliana.prodan@nxp.com> Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-imx@nxp.com Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
551ce72a78
commit
0544cb75bd
@ -26,6 +26,8 @@
|
|||||||
*/
|
*/
|
||||||
#define FSL_MC_DEFAULT_DMA_MASK (~0ULL)
|
#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
|
* struct fsl_mc - Private data of a "fsl,qoriq-mc" platform device
|
||||||
* @root_mc_bus_dev: fsl-mc device representing the root DPRC
|
* @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;
|
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
|
* fsl_mc_bus_match - device to driver matching callback
|
||||||
* @dev: the fsl-mc device to match against
|
* @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,
|
static int mc_get_version(struct fsl_mc_io *mc_io,
|
||||||
u32 cmd_flags,
|
u32 cmd_flags,
|
||||||
struct mc_version *mc_ver_info)
|
struct fsl_mc_version *mc_ver_info)
|
||||||
{
|
{
|
||||||
struct fsl_mc_command cmd = { 0 };
|
struct fsl_mc_command cmd = { 0 };
|
||||||
struct dpmng_rsp_get_version *rsp_params;
|
struct dpmng_rsp_get_version *rsp_params;
|
||||||
@ -363,6 +351,20 @@ static int mc_get_version(struct fsl_mc_io *mc_io,
|
|||||||
return 0;
|
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
|
* 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;
|
int container_id;
|
||||||
phys_addr_t mc_portal_phys_addr;
|
phys_addr_t mc_portal_phys_addr;
|
||||||
u32 mc_portal_size;
|
u32 mc_portal_size;
|
||||||
struct mc_version mc_version;
|
|
||||||
struct resource res;
|
struct resource res;
|
||||||
|
|
||||||
mc = devm_kzalloc(&pdev->dev, sizeof(*mc), GFP_KERNEL);
|
mc = devm_kzalloc(&pdev->dev, sizeof(*mc), GFP_KERNEL);
|
||||||
|
@ -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);
|
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,
|
int __must_check fsl_mc_portal_allocate(struct fsl_mc_device *mc_dev,
|
||||||
u16 mc_io_flags,
|
u16 mc_io_flags,
|
||||||
struct fsl_mc_io **new_mc_io);
|
struct fsl_mc_io **new_mc_io);
|
||||||
|
Loading…
Reference in New Issue
Block a user