staging: fsl-mc: add dprc version check
PATCH 10/14 staging: fsl-mc: add dprc version check
From: Itai Katz <[email protected]>
The dprc driver supports dprc version 5.0 and above. This patch adds the code to check the version.
Signed-off-by Itai Katz <[email protected]>
(Stuart: resolved merge conflicts, split dpseci quirk into separate patch)
Signed-off-by Stuart Yoder <[email protected]>
--- drivers/staging/fsl-mc/bus/dprc-cmd.h | 6 +++--- drivers/staging/fsl-mc/bus/dprc-driver.c | 19 +++++++++++++++++++ drivers/staging/fsl-mc/bus/mc-bus.c | 1 + drivers/staging/fsl-mc/include/mc-private.h | 2 ++ 4 files changed, 25 insertions(+), 3 deletions(-)
drivers/staging/fsl-mc/bus/dprc-cmd.h +3 -3
@@ -40,9 +40,9 @@#ifndef _FSL_DPRC_CMD_H#define _FSL_DPRC_CMD_H -/* DPRC Version */ -#define DPRC_VER_MAJOR 5 -#define DPRC_VER_MINOR 1 +/* Minimal supported DPRC Version */ +#define DPRC_MIN_VER_MAJOR 5 +#define DPRC_MIN_VER_MINOR 0/* Command IDs */ #define DPRC_CMDID_CLOSE 0x800
drivers/staging/fsl-mc/bus/dprc-driver.c +19 -0
@@ -693,6 +693,25 @@ static int dprc_probe(struct fsl_mc_device *mc_dev) goto error_cleanup_msi_domain; } + error =dprc_get_attributes (mc_dev->mc_io,0 , mc_dev->mc_handle, + &mc_bus->dprc_attr); +if (error <0 ) { +dev_err (&mc_dev->dev,"dprc_get_attributes() failed: %d\n" , + error); + goto error_cleanup_open; + } + +if (mc_bus->dprc_attr.version.major <DPRC_MIN_VER_MAJOR || + (mc_bus->dprc_attr.version.major ==DPRC_MIN_VER_MAJOR && + mc_bus->dprc_attr.version.minor <DPRC_MIN_VER_MINOR )) { +dev_err (&mc_dev->dev, +"ERROR: DPRC version %d.%d not supported\n" , + mc_bus->dprc_attr.version.major, + mc_bus->dprc_attr.version.minor); + error = -ENOTSUPP ; + goto error_cleanup_open; + } +mutex_init (&mc_bus->scan_mutex);/*
drivers/staging/fsl-mc/bus/mc-bus.c +1 -0
@@ -745,6 +745,7 @@ static int fsl_mc_bus_probe(struct platform_device *pdev) goto error_cleanup_mc_io; } +memset (&obj_desc,0 ,sizeof (struct dprc_obj_desc )); error =get_dprc_version (mc_io, container_id, &obj_desc.ver_major, &obj_desc.ver_minor);if (error <0 )
drivers/staging/fsl-mc/include/mc-private.h +2 -0
@@ -94,12 +94,14 @@ struct fsl_mc_resource_pool {* from the physical DPRC. * @irq_resources: Pointer to array of IRQ objects for the IRQ pool * @scan_mutex: Serializes bus scanning +* @dprc_attr: DPRC attributes */ struct fsl_mc_bus {struct fsl_mc_device mc_dev;struct fsl_mc_resource_pool resource_pools[FSL_MC_NUM_POOL_TYPES ];struct fsl_mc_device_irq *irq_resources;struct mutex scan_mutex;/* serializes bus scanning */ +struct dprc_attributes dprc_attr; };#define to_fsl_mc_bus (_mc_dev) \
Signature · 1 line
1.7.9.5