[PATCH v2] fsl-mc: add helper macro to determine if a device is of fsl_mc type

Stuart Yoder stuart.yoder at nxp.com
Mon Jul 11 17:43:58 UTC 2016



> -----Original Message-----
> From: Nipun Gupta [mailto:nipun.gupta at nxp.com]
> Sent: Wednesday, June 29, 2016 12:15 PM
> To: gregkh at linuxfoundation.org; Stuart Yoder <stuart.yoder at nxp.com>
> Cc: devel at driverdev.osuosl.org; linux-kernel at vger.kernel.org; Nipun Gupta <nipun.gupta at nxp.com>; Bharat
> Bhushan <bharat.bhushan at nxp.com>
> Subject: [PATCH v2] fsl-mc: add helper macro to determine if a device is of fsl_mc type
> 
> Add a helper macro to return if a device has a bus type of fsl_mc.
> This makes the bus driver code more readable and provides a way for
> drivers like the SMMU driver to easily check the bus type.
> 
> Signed-off-by: Nipun Gupta <nipun.gupta at nxp.com>
> Signed-off-by: Bharat Bhushan <bharat.bhushan at nxp.com>
> ---
>  drivers/staging/fsl-mc/bus/dprc-driver.c               | 4 ++--
>  drivers/staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c | 2 +-
>  drivers/staging/fsl-mc/bus/mc-allocator.c              | 6 +++---
>  drivers/staging/fsl-mc/bus/mc-bus.c                    | 6 +++---
>  drivers/staging/fsl-mc/include/mc.h                    | 7 +++++++
>  5 files changed, 16 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/staging/fsl-mc/bus/dprc-driver.c b/drivers/staging/fsl-mc/bus/dprc-driver.c
> index 7fc4717..cd6d75a 100644
> --- a/drivers/staging/fsl-mc/bus/dprc-driver.c
> +++ b/drivers/staging/fsl-mc/bus/dprc-driver.c
> @@ -649,7 +649,7 @@ static int dprc_probe(struct fsl_mc_device *mc_dev)
>  		/*
>  		 * This is a child DPRC:
>  		 */
> -		if (WARN_ON(parent_dev->bus != &fsl_mc_bus_type))
> +		if (WARN_ON(!dev_is_fsl_mc(parent_dev)))
>  			return -EINVAL;
> 
>  		if (WARN_ON(mc_dev->obj_desc.region_count == 0))
> @@ -681,7 +681,7 @@ static int dprc_probe(struct fsl_mc_device *mc_dev)
>  		 */
>  		struct irq_domain *mc_msi_domain;
> 
> -		if (WARN_ON(parent_dev->bus == &fsl_mc_bus_type))
> +		if (WARN_ON(dev_is_fsl_mc(parent_dev)))
>  			return -EINVAL;
> 
>  		error = fsl_mc_find_msi_domain(parent_dev,
> diff --git a/drivers/staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c b/drivers/staging/fsl-mc/bus/irq-
> gic-v3-its-fsl-mc-msi.c
> index 720e2b0..d0c20d6 100644
> --- a/drivers/staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c
> +++ b/drivers/staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c
> @@ -35,7 +35,7 @@ static int its_fsl_mc_msi_prepare(struct irq_domain *msi_domain,
>  	struct fsl_mc_device *mc_bus_dev;
>  	struct msi_domain_info *msi_info;
> 
> -	if (WARN_ON(dev->bus != &fsl_mc_bus_type))
> +	if (WARN_ON(!dev_is_fsl_mc(dev)))
>  		return -EINVAL;
> 
>  	mc_bus_dev = to_fsl_mc_device(dev);
> diff --git a/drivers/staging/fsl-mc/bus/mc-allocator.c b/drivers/staging/fsl-mc/bus/mc-allocator.c
> index fb08f22..9216c32 100644
> --- a/drivers/staging/fsl-mc/bus/mc-allocator.c
> +++ b/drivers/staging/fsl-mc/bus/mc-allocator.c
> @@ -281,7 +281,7 @@ int __must_check fsl_mc_portal_allocate(struct fsl_mc_device *mc_dev,
>  	if (mc_dev->flags & FSL_MC_IS_DPRC) {
>  		mc_bus_dev = mc_dev;
>  	} else {
> -		if (WARN_ON(mc_dev->dev.parent->bus != &fsl_mc_bus_type))
> +		if (WARN_ON(!dev_is_fsl_mc(mc_dev->dev.parent)))
>  			return error;
> 
>  		mc_bus_dev = to_fsl_mc_device(mc_dev->dev.parent);
> @@ -420,7 +420,7 @@ int __must_check fsl_mc_object_allocate(struct fsl_mc_device *mc_dev,
>  	if (WARN_ON(mc_dev->flags & FSL_MC_IS_DPRC))
>  		goto error;
> 
> -	if (WARN_ON(mc_dev->dev.parent->bus != &fsl_mc_bus_type))
> +	if (WARN_ON(!dev_is_fsl_mc(mc_dev->dev.parent)))
>  		goto error;
> 
>  	if (WARN_ON(pool_type == FSL_MC_POOL_DPMCP))
> @@ -678,7 +678,7 @@ static int fsl_mc_allocator_probe(struct fsl_mc_device *mc_dev)
>  		return -EINVAL;
> 
>  	mc_bus_dev = to_fsl_mc_device(mc_dev->dev.parent);
> -	if (WARN_ON(mc_bus_dev->dev.bus != &fsl_mc_bus_type))
> +	if (WARN_ON(!dev_is_fsl_mc(&mc_bus_dev->dev)))
>  		return -EINVAL;
> 
>  	mc_bus = to_fsl_mc_bus(mc_bus_dev);
> diff --git a/drivers/staging/fsl-mc/bus/mc-bus.c b/drivers/staging/fsl-mc/bus/mc-bus.c
> index 4053643..098f07c 100644
> --- a/drivers/staging/fsl-mc/bus/mc-bus.c
> +++ b/drivers/staging/fsl-mc/bus/mc-bus.c
> @@ -207,11 +207,11 @@ static void fsl_mc_get_root_dprc(struct device *dev,
>  {
>  	if (WARN_ON(!dev)) {
>  		*root_dprc_dev = NULL;
> -	} else if (WARN_ON(dev->bus != &fsl_mc_bus_type)) {
> +	} else if (WARN_ON(!dev_is_fsl_mc(dev))) {
>  		*root_dprc_dev = NULL;
>  	} else {
>  		*root_dprc_dev = dev;
> -		while ((*root_dprc_dev)->parent->bus == &fsl_mc_bus_type)
> +		while (dev_is_fsl_mc((*root_dprc_dev)->parent))
>  			*root_dprc_dev = (*root_dprc_dev)->parent;
>  	}
>  }
> @@ -405,7 +405,7 @@ int fsl_mc_device_add(struct dprc_obj_desc *obj_desc,
>  	struct fsl_mc_bus *mc_bus = NULL;
>  	struct fsl_mc_device *parent_mc_dev;
> 
> -	if (parent_dev->bus == &fsl_mc_bus_type)
> +	if (dev_is_fsl_mc(parent_dev))
>  		parent_mc_dev = to_fsl_mc_device(parent_dev);
>  	else
>  		parent_mc_dev = NULL;
> diff --git a/drivers/staging/fsl-mc/include/mc.h b/drivers/staging/fsl-mc/include/mc.h
> index ac7c1ce..91213f5 100644
> --- a/drivers/staging/fsl-mc/include/mc.h
> +++ b/drivers/staging/fsl-mc/include/mc.h
> @@ -183,6 +183,13 @@ struct fsl_mc_device {
>  #define to_fsl_mc_device(_dev) \
>  	container_of(_dev, struct fsl_mc_device, dev)
> 
> +#ifdef CONFIG_FSL_MC_BUS
> +#define dev_is_fsl_mc(_dev) ((_dev)->bus == &fsl_mc_bus_type)
> +#else
> +/* If fsl-mc bus is not present device cannot belong to fsl-mc bus */
> +#define dev_is_fsl_mc(_dev) (0)
> +#endif
> +
>  /*
>   * module_fsl_mc_driver() - Helper macro for drivers that don't do
>   * anything special in module init/exit.  This eliminates a lot of
> --
> 1.9.1

Acked-by: Stuart Yoder <stuart.yoder at nxp.com>





More information about the devel mailing list