diff mbox series

[2/7] meson: ao-cec: use new cec_notifier_find_hdmi_dev helper

Message ID 20190408110401.3345-3-hverkuil-cisco@xs4all.nl (mailing list archive)
State New, archived
Headers show
Series cec: introduce cec_notifier_find_hdmi_dev helper | expand

Commit Message

Hans Verkuil April 8, 2019, 11:03 a.m. UTC
The meson CEC driver increased the HDMI device refcount when
it shouldn't. Use the new helper function to ensure that that
doesn't happen and to simplify the driver code.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
---
 drivers/media/platform/meson/ao-cec.c | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

Comments

Neil Armstrong April 8, 2019, 12:01 p.m. UTC | #1
On 08/04/2019 13:03, Hans Verkuil wrote:
> The meson CEC driver increased the HDMI device refcount when
> it shouldn't. Use the new helper function to ensure that that
> doesn't happen and to simplify the driver code.
> 
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> ---
>  drivers/media/platform/meson/ao-cec.c | 16 +++++-----------
>  1 file changed, 5 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/media/platform/meson/ao-cec.c b/drivers/media/platform/meson/ao-cec.c
> index cd4be38ab5ac..c8b374741a7c 100644
> --- a/drivers/media/platform/meson/ao-cec.c
> +++ b/drivers/media/platform/meson/ao-cec.c
> @@ -601,20 +601,14 @@ static const struct cec_adap_ops meson_ao_cec_ops = {
>  static int meson_ao_cec_probe(struct platform_device *pdev)
>  {
>  	struct meson_ao_cec_device *ao_cec;
> -	struct platform_device *hdmi_dev;
> -	struct device_node *np;
> +	struct device *hdmi_dev;
>  	struct resource *res;
>  	int ret, irq;
>  
> -	np = of_parse_phandle(pdev->dev.of_node, "hdmi-phandle", 0);
> -	if (!np) {
> -		dev_err(&pdev->dev, "Failed to find hdmi node\n");
> -		return -ENODEV;
> -	}
> +	hdmi_dev = cec_notifier_find_hdmi_dev(&pdev->dev);
>  
> -	hdmi_dev = of_find_device_by_node(np);
> -	if (hdmi_dev == NULL)
> -		return -EPROBE_DEFER;
> +	if (IS_ERR(hdmi_dev))
> +		return PTR_ERR(hdmi_dev);
>  
>  	ao_cec = devm_kzalloc(&pdev->dev, sizeof(*ao_cec), GFP_KERNEL);
>  	if (!ao_cec)
> @@ -622,7 +616,7 @@ static int meson_ao_cec_probe(struct platform_device *pdev)
>  
>  	spin_lock_init(&ao_cec->cec_reg_lock);
>  
> -	ao_cec->notify = cec_notifier_get(&hdmi_dev->dev);
> +	ao_cec->notify = cec_notifier_get(hdmi_dev);
>  	if (!ao_cec->notify)
>  		return -ENOMEM;
>  
> 

Acked-by: Neil Armstrong <narmstrong@baylibre.com>

Thanks,
Neil
diff mbox series

Patch

diff --git a/drivers/media/platform/meson/ao-cec.c b/drivers/media/platform/meson/ao-cec.c
index cd4be38ab5ac..c8b374741a7c 100644
--- a/drivers/media/platform/meson/ao-cec.c
+++ b/drivers/media/platform/meson/ao-cec.c
@@ -601,20 +601,14 @@  static const struct cec_adap_ops meson_ao_cec_ops = {
 static int meson_ao_cec_probe(struct platform_device *pdev)
 {
 	struct meson_ao_cec_device *ao_cec;
-	struct platform_device *hdmi_dev;
-	struct device_node *np;
+	struct device *hdmi_dev;
 	struct resource *res;
 	int ret, irq;
 
-	np = of_parse_phandle(pdev->dev.of_node, "hdmi-phandle", 0);
-	if (!np) {
-		dev_err(&pdev->dev, "Failed to find hdmi node\n");
-		return -ENODEV;
-	}
+	hdmi_dev = cec_notifier_find_hdmi_dev(&pdev->dev);
 
-	hdmi_dev = of_find_device_by_node(np);
-	if (hdmi_dev == NULL)
-		return -EPROBE_DEFER;
+	if (IS_ERR(hdmi_dev))
+		return PTR_ERR(hdmi_dev);
 
 	ao_cec = devm_kzalloc(&pdev->dev, sizeof(*ao_cec), GFP_KERNEL);
 	if (!ao_cec)
@@ -622,7 +616,7 @@  static int meson_ao_cec_probe(struct platform_device *pdev)
 
 	spin_lock_init(&ao_cec->cec_reg_lock);
 
-	ao_cec->notify = cec_notifier_get(&hdmi_dev->dev);
+	ao_cec->notify = cec_notifier_get(hdmi_dev);
 	if (!ao_cec->notify)
 		return -ENOMEM;