[PATCH v5 2/4] drm/tinydrm: Add devres versions of drm_of_find_backlight

Noralf Trønnes noralf at tronnes.org
Sat Sep 30 13:43:00 UTC 2017


Den 30.09.2017 11.05, skrev Meghana Madhyastha:
> Add devm_drm_of_find_backlight and the corresponding release
> function because some drivers such as tinydrm use devres versions
> of functions for requiring device resources.
>
> Signed-off-by: Meghana Madhyastha <meghana.madhyastha at gmail.com>
> ---
> Changes in v5:
> -None
>
>   drivers/gpu/drm/drm_of.c           | 47 ++++++++++++++++++++++++++++++++++++++
>   drivers/gpu/drm/tinydrm/mi0283qt.c |  2 +-
>   include/drm/drm_of.h               |  1 +
>   3 files changed, 49 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_of.c b/drivers/gpu/drm/drm_of.c
> index d878d3a..cd80dfc 100644
> --- a/drivers/gpu/drm/drm_of.c
> +++ b/drivers/gpu/drm/drm_of.c
> @@ -304,3 +304,50 @@ struct backlight_device *drm_of_find_backlight(struct device *dev)
>   	return backlight;
>   }
>   EXPORT_SYMBOL(drm_of_find_backlight);
> +
> +/**
> + * devm_drm_of_find_backlight_release - Release backlight device
> + * @dev: Device
> + *
> + * This is the release function corresponding to the devm_drm_of_find_backlight.
> + * Each devres entry is associated with a release function.
> + */

No docs on internal functions.

> +static void devm_drm_of_find_backlight_release(void *data)
> +{
> +	put_device(data);
> +}
> +
> +/**
> + * devm_drm_of_find_backlight - Find backlight device in device-tree
> + * devres version of the function
> + * @dev: Device
> + *
> + * This is the devres version of the function drm_of_find_backlight.
> + * Some drivers use devres versions of functions for
> + * requiring device resources.
> + *
> + * Returns:
> + * NULL if there's no backlight property.
> + * Error pointer -EPROBE_DEFER if the DT node is found, but no backlight device
> + * is found.
> + * If the backlight device is found, a pointer to the structure is returned.
> + */
> +struct backlight_device *devm_drm_of_find_backlight(struct device *dev)
> +{
> +	struct backlight_device *backlight;
> +	int ret;
> +
> +	backlight = drm_of_find_backlight(dev);
> +	if (IS_ERR_OR_NULL(backlight))
> +		return backlight;
> +
> +	ret = devm_add_action(dev, devm_drm_of_find_backlight_release,
> +			      &backlight->dev);
> +	if (ret) {
> +		put_device(&backlight->dev);
> +		return ERR_PTR(ret);
> +	}
> +
> +	return backlight;
> +}
> +EXPORT_SYMBOL(devm_drm_of_find_backlight);
> diff --git a/drivers/gpu/drm/tinydrm/mi0283qt.c b/drivers/gpu/drm/tinydrm/mi0283qt.c
> index 5e3d635..d37f658 100644
> --- a/drivers/gpu/drm/tinydrm/mi0283qt.c
> +++ b/drivers/gpu/drm/tinydrm/mi0283qt.c
> @@ -190,7 +190,7 @@ static int mi0283qt_probe(struct spi_device *spi)
>   	if (IS_ERR(mipi->regulator))
>   		return PTR_ERR(mipi->regulator);
>   
> -	mipi->backlight = drm_of_find_backlight(dev);
> +	mipi->backlight = devm_drm_of_find_backlight(dev);
>   	if (IS_ERR(mipi->backlight))
>   		return PTR_ERR(mipi->backlight);
>   
> diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h
> index e8fba5b..b2d6e0c 100644
> --- a/include/drm/drm_of.h
> +++ b/include/drm/drm_of.h
> @@ -30,6 +30,7 @@ int drm_of_find_panel_or_bridge(const struct device_node *np,
>   				struct drm_panel **panel,
>   				struct drm_bridge **bridge);
>   struct backlight_device *drm_of_find_backlight(struct device *dev);
> +struct backlight_device *devm_drm_of_find_backlight(struct device *dev);
>   #else
>   static inline uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
>   						  struct device_node *port)



More information about the dri-devel mailing list