[PATCH 2/2] drm: sti_hdmi: use of_get_i2c_adapter_by_node interface

Vincent ABRIOU vincent.abriou at st.com
Tue Sep 29 01:03:37 PDT 2015


Hi Vladimir,

Thank you for the patches.
I will integrate them in the next drm/sti pull request that should be sent by next week.

BR
Vincent

> -----Original Message-----
> From: Vladimir Zapolskiy [mailto:vladimir_zapolskiy at mentor.com]
> Sent: lundi 21 septembre 2015 17:51
> To: Benjamin Gaignard; Vincent ABRIOU
> Cc: David Airlie; dri-devel at lists.freedesktop.org
> Subject: [PATCH 2/2] drm: sti_hdmi: use of_get_i2c_adapter_by_node
> interface
> 
> This change is needed to properly lock I2C bus device and driver, which serve
> DDC lines. Without this change I2C bus driver module may gone in runtime
> and this won't be noticed by the driver.
> 
> Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy at mentor.com>
> ---
>  drivers/gpu/drm/sti/sti_hdmi.c | 17 ++++++-----------
>  1 file changed, 6 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
> index c23b580..b892f29a 100644
> --- a/drivers/gpu/drm/sti/sti_hdmi.c
> +++ b/drivers/gpu/drm/sti/sti_hdmi.c
> @@ -792,13 +792,10 @@ static int sti_hdmi_probe(struct platform_device
> *pdev)
> 
>  	ddc = of_parse_phandle(pdev->dev.of_node, "ddc", 0);
>  	if (ddc) {
> -		hdmi->ddc_adapt = of_find_i2c_adapter_by_node(ddc);
> -		if (!hdmi->ddc_adapt) {
> -			of_node_put(ddc);
> -			return -EPROBE_DEFER;
> -		}
> -
> +		hdmi->ddc_adapt = of_get_i2c_adapter_by_node(ddc);
>  		of_node_put(ddc);
> +		if (!hdmi->ddc_adapt)
> +			return -EPROBE_DEFER;
>  	}
> 
>  	hdmi->dev = pdev->dev;
> @@ -887,8 +884,7 @@ static int sti_hdmi_probe(struct platform_device
> *pdev)
>  	return component_add(&pdev->dev, &sti_hdmi_ops);
> 
>   release_adapter:
> -	if (hdmi->ddc_adapt)
> -		put_device(&hdmi->ddc_adapt->dev);
> +	i2c_put_adapter(hdmi->ddc_adapt);
> 
>  	return ret;
>  }
> @@ -897,10 +893,9 @@ static int sti_hdmi_remove(struct platform_device
> *pdev)  {
>  	struct sti_hdmi *hdmi = dev_get_drvdata(&pdev->dev);
> 
> -	if (hdmi->ddc_adapt)
> -		put_device(&hdmi->ddc_adapt->dev);
> -
> +	i2c_put_adapter(hdmi->ddc_adapt);
>  	component_del(&pdev->dev, &sti_hdmi_ops);
> +
>  	return 0;
>  }
> 
> --
> 2.5.0



More information about the dri-devel mailing list