linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] drm/tegra: Refactor CEC support
@ 2018-12-10 16:34 Thierry Reding
  2018-12-10 16:36 ` Hans Verkuil
  0 siblings, 1 reply; 4+ messages in thread
From: Thierry Reding @ 2018-12-10 16:34 UTC (permalink / raw)
  To: Thierry Reding; +Cc: Hans Verkuil, dri-devel, linux-media, linux-tegra

From: Thierry Reding <treding@nvidia.com>

Most of the CEC support code already lives in the "output" library code.
Move registration and unregistration to the library code as well to make
use of the same code with HDMI on Tegra210 and later via the SOR.

Signed-off-by: Thierry Reding <treding@nvidia.com>
---
 drivers/gpu/drm/tegra/drm.h    |  2 +-
 drivers/gpu/drm/tegra/hdmi.c   |  9 ---------
 drivers/gpu/drm/tegra/output.c | 11 +++++++++--
 3 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h
index 019862a41cb4..dbc9e11b0aec 100644
--- a/drivers/gpu/drm/tegra/drm.h
+++ b/drivers/gpu/drm/tegra/drm.h
@@ -132,7 +132,7 @@ struct tegra_output {
 	struct drm_panel *panel;
 	struct i2c_adapter *ddc;
 	const struct edid *edid;
-	struct cec_notifier *notifier;
+	struct cec_notifier *cec;
 	unsigned int hpd_irq;
 	int hpd_gpio;
 	enum of_gpio_flags hpd_gpio_flags;
diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
index 0082468f703c..d19973945614 100644
--- a/drivers/gpu/drm/tegra/hdmi.c
+++ b/drivers/gpu/drm/tegra/hdmi.c
@@ -22,8 +22,6 @@
 
 #include <sound/hda_verbs.h>
 
-#include <media/cec-notifier.h>
-
 #include "hdmi.h"
 #include "drm.h"
 #include "dc.h"
@@ -1709,10 +1707,6 @@ static int tegra_hdmi_probe(struct platform_device *pdev)
 		return PTR_ERR(hdmi->vdd);
 	}
 
-	hdmi->output.notifier = cec_notifier_get(&pdev->dev);
-	if (hdmi->output.notifier == NULL)
-		return -ENOMEM;
-
 	hdmi->output.dev = &pdev->dev;
 
 	err = tegra_output_probe(&hdmi->output);
@@ -1771,9 +1765,6 @@ static int tegra_hdmi_remove(struct platform_device *pdev)
 
 	tegra_output_remove(&hdmi->output);
 
-	if (hdmi->output.notifier)
-		cec_notifier_put(hdmi->output.notifier);
-
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c
index c662efc7e413..9c2b9dad55c3 100644
--- a/drivers/gpu/drm/tegra/output.c
+++ b/drivers/gpu/drm/tegra/output.c
@@ -36,7 +36,7 @@ int tegra_output_connector_get_modes(struct drm_connector *connector)
 	else if (output->ddc)
 		edid = drm_get_edid(connector, output->ddc);
 
-	cec_notifier_set_phys_addr_from_edid(output->notifier, edid);
+	cec_notifier_set_phys_addr_from_edid(output->cec, edid);
 	drm_connector_update_edid_property(connector, edid);
 
 	if (edid) {
@@ -73,7 +73,7 @@ tegra_output_connector_detect(struct drm_connector *connector, bool force)
 	}
 
 	if (status != connector_status_connected)
-		cec_notifier_phys_addr_invalidate(output->notifier);
+		cec_notifier_phys_addr_invalidate(output->cec);
 
 	return status;
 }
@@ -174,11 +174,18 @@ int tegra_output_probe(struct tegra_output *output)
 		disable_irq(output->hpd_irq);
 	}
 
+	output->cec = cec_notifier_get(output->dev);
+	if (!output->cec)
+		return -ENOMEM;
+
 	return 0;
 }
 
 void tegra_output_remove(struct tegra_output *output)
 {
+	if (output->cec)
+		cec_notifier_put(output->cec);
+
 	if (gpio_is_valid(output->hpd_gpio)) {
 		free_irq(output->hpd_irq, output);
 		gpio_free(output->hpd_gpio);
-- 
2.19.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm/tegra: Refactor CEC support
  2018-12-10 16:34 [PATCH] drm/tegra: Refactor CEC support Thierry Reding
@ 2018-12-10 16:36 ` Hans Verkuil
  2018-12-10 17:07   ` Hans Verkuil
  0 siblings, 1 reply; 4+ messages in thread
From: Hans Verkuil @ 2018-12-10 16:36 UTC (permalink / raw)
  To: Thierry Reding; +Cc: Hans Verkuil, dri-devel, linux-media, linux-tegra

On 12/10/18 5:34 PM, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
> 
> Most of the CEC support code already lives in the "output" library code.
> Move registration and unregistration to the library code as well to make
> use of the same code with HDMI on Tegra210 and later via the SOR.
> 
> Signed-off-by: Thierry Reding <treding@nvidia.com>

Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

Thanks!

	Hans

> ---
>  drivers/gpu/drm/tegra/drm.h    |  2 +-
>  drivers/gpu/drm/tegra/hdmi.c   |  9 ---------
>  drivers/gpu/drm/tegra/output.c | 11 +++++++++--
>  3 files changed, 10 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h
> index 019862a41cb4..dbc9e11b0aec 100644
> --- a/drivers/gpu/drm/tegra/drm.h
> +++ b/drivers/gpu/drm/tegra/drm.h
> @@ -132,7 +132,7 @@ struct tegra_output {
>  	struct drm_panel *panel;
>  	struct i2c_adapter *ddc;
>  	const struct edid *edid;
> -	struct cec_notifier *notifier;
> +	struct cec_notifier *cec;
>  	unsigned int hpd_irq;
>  	int hpd_gpio;
>  	enum of_gpio_flags hpd_gpio_flags;
> diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
> index 0082468f703c..d19973945614 100644
> --- a/drivers/gpu/drm/tegra/hdmi.c
> +++ b/drivers/gpu/drm/tegra/hdmi.c
> @@ -22,8 +22,6 @@
>  
>  #include <sound/hda_verbs.h>
>  
> -#include <media/cec-notifier.h>
> -
>  #include "hdmi.h"
>  #include "drm.h"
>  #include "dc.h"
> @@ -1709,10 +1707,6 @@ static int tegra_hdmi_probe(struct platform_device *pdev)
>  		return PTR_ERR(hdmi->vdd);
>  	}
>  
> -	hdmi->output.notifier = cec_notifier_get(&pdev->dev);
> -	if (hdmi->output.notifier == NULL)
> -		return -ENOMEM;
> -
>  	hdmi->output.dev = &pdev->dev;
>  
>  	err = tegra_output_probe(&hdmi->output);
> @@ -1771,9 +1765,6 @@ static int tegra_hdmi_remove(struct platform_device *pdev)
>  
>  	tegra_output_remove(&hdmi->output);
>  
> -	if (hdmi->output.notifier)
> -		cec_notifier_put(hdmi->output.notifier);
> -
>  	return 0;
>  }
>  
> diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c
> index c662efc7e413..9c2b9dad55c3 100644
> --- a/drivers/gpu/drm/tegra/output.c
> +++ b/drivers/gpu/drm/tegra/output.c
> @@ -36,7 +36,7 @@ int tegra_output_connector_get_modes(struct drm_connector *connector)
>  	else if (output->ddc)
>  		edid = drm_get_edid(connector, output->ddc);
>  
> -	cec_notifier_set_phys_addr_from_edid(output->notifier, edid);
> +	cec_notifier_set_phys_addr_from_edid(output->cec, edid);
>  	drm_connector_update_edid_property(connector, edid);
>  
>  	if (edid) {
> @@ -73,7 +73,7 @@ tegra_output_connector_detect(struct drm_connector *connector, bool force)
>  	}
>  
>  	if (status != connector_status_connected)
> -		cec_notifier_phys_addr_invalidate(output->notifier);
> +		cec_notifier_phys_addr_invalidate(output->cec);
>  
>  	return status;
>  }
> @@ -174,11 +174,18 @@ int tegra_output_probe(struct tegra_output *output)
>  		disable_irq(output->hpd_irq);
>  	}
>  
> +	output->cec = cec_notifier_get(output->dev);
> +	if (!output->cec)
> +		return -ENOMEM;
> +
>  	return 0;
>  }
>  
>  void tegra_output_remove(struct tegra_output *output)
>  {
> +	if (output->cec)
> +		cec_notifier_put(output->cec);
> +
>  	if (gpio_is_valid(output->hpd_gpio)) {
>  		free_irq(output->hpd_irq, output);
>  		gpio_free(output->hpd_gpio);
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm/tegra: Refactor CEC support
  2018-12-10 16:36 ` Hans Verkuil
@ 2018-12-10 17:07   ` Hans Verkuil
  2018-12-11  9:22     ` Hans Verkuil
  0 siblings, 1 reply; 4+ messages in thread
From: Hans Verkuil @ 2018-12-10 17:07 UTC (permalink / raw)
  To: Thierry Reding; +Cc: Hans Verkuil, dri-devel, linux-media, linux-tegra

On 12/10/18 5:36 PM, Hans Verkuil wrote:
> On 12/10/18 5:34 PM, Thierry Reding wrote:
>> From: Thierry Reding <treding@nvidia.com>
>>
>> Most of the CEC support code already lives in the "output" library code.
>> Move registration and unregistration to the library code as well to make
>> use of the same code with HDMI on Tegra210 and later via the SOR.
>>
>> Signed-off-by: Thierry Reding <treding@nvidia.com>
> 
> Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

But read my reply to "[PATCH 1/2] media: tegra-cec: Support Tegra186 and Tegra194".
You may want to take a different approach here.

Regards,

	Hans

> 
> Thanks!
> 
> 	Hans
> 
>> ---
>>  drivers/gpu/drm/tegra/drm.h    |  2 +-
>>  drivers/gpu/drm/tegra/hdmi.c   |  9 ---------
>>  drivers/gpu/drm/tegra/output.c | 11 +++++++++--
>>  3 files changed, 10 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/tegra/drm.h b/drivers/gpu/drm/tegra/drm.h
>> index 019862a41cb4..dbc9e11b0aec 100644
>> --- a/drivers/gpu/drm/tegra/drm.h
>> +++ b/drivers/gpu/drm/tegra/drm.h
>> @@ -132,7 +132,7 @@ struct tegra_output {
>>  	struct drm_panel *panel;
>>  	struct i2c_adapter *ddc;
>>  	const struct edid *edid;
>> -	struct cec_notifier *notifier;
>> +	struct cec_notifier *cec;
>>  	unsigned int hpd_irq;
>>  	int hpd_gpio;
>>  	enum of_gpio_flags hpd_gpio_flags;
>> diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c
>> index 0082468f703c..d19973945614 100644
>> --- a/drivers/gpu/drm/tegra/hdmi.c
>> +++ b/drivers/gpu/drm/tegra/hdmi.c
>> @@ -22,8 +22,6 @@
>>  
>>  #include <sound/hda_verbs.h>
>>  
>> -#include <media/cec-notifier.h>
>> -
>>  #include "hdmi.h"
>>  #include "drm.h"
>>  #include "dc.h"
>> @@ -1709,10 +1707,6 @@ static int tegra_hdmi_probe(struct platform_device *pdev)
>>  		return PTR_ERR(hdmi->vdd);
>>  	}
>>  
>> -	hdmi->output.notifier = cec_notifier_get(&pdev->dev);
>> -	if (hdmi->output.notifier == NULL)
>> -		return -ENOMEM;
>> -
>>  	hdmi->output.dev = &pdev->dev;
>>  
>>  	err = tegra_output_probe(&hdmi->output);
>> @@ -1771,9 +1765,6 @@ static int tegra_hdmi_remove(struct platform_device *pdev)
>>  
>>  	tegra_output_remove(&hdmi->output);
>>  
>> -	if (hdmi->output.notifier)
>> -		cec_notifier_put(hdmi->output.notifier);
>> -
>>  	return 0;
>>  }
>>  
>> diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c
>> index c662efc7e413..9c2b9dad55c3 100644
>> --- a/drivers/gpu/drm/tegra/output.c
>> +++ b/drivers/gpu/drm/tegra/output.c
>> @@ -36,7 +36,7 @@ int tegra_output_connector_get_modes(struct drm_connector *connector)
>>  	else if (output->ddc)
>>  		edid = drm_get_edid(connector, output->ddc);
>>  
>> -	cec_notifier_set_phys_addr_from_edid(output->notifier, edid);
>> +	cec_notifier_set_phys_addr_from_edid(output->cec, edid);
>>  	drm_connector_update_edid_property(connector, edid);
>>  
>>  	if (edid) {
>> @@ -73,7 +73,7 @@ tegra_output_connector_detect(struct drm_connector *connector, bool force)
>>  	}
>>  
>>  	if (status != connector_status_connected)
>> -		cec_notifier_phys_addr_invalidate(output->notifier);
>> +		cec_notifier_phys_addr_invalidate(output->cec);
>>  
>>  	return status;
>>  }
>> @@ -174,11 +174,18 @@ int tegra_output_probe(struct tegra_output *output)
>>  		disable_irq(output->hpd_irq);
>>  	}
>>  
>> +	output->cec = cec_notifier_get(output->dev);
>> +	if (!output->cec)
>> +		return -ENOMEM;
>> +
>>  	return 0;
>>  }
>>  
>>  void tegra_output_remove(struct tegra_output *output)
>>  {
>> +	if (output->cec)
>> +		cec_notifier_put(output->cec);
>> +
>>  	if (gpio_is_valid(output->hpd_gpio)) {
>>  		free_irq(output->hpd_irq, output);
>>  		gpio_free(output->hpd_gpio);
>>
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm/tegra: Refactor CEC support
  2018-12-10 17:07   ` Hans Verkuil
@ 2018-12-11  9:22     ` Hans Verkuil
  0 siblings, 0 replies; 4+ messages in thread
From: Hans Verkuil @ 2018-12-11  9:22 UTC (permalink / raw)
  To: Thierry Reding; +Cc: Hans Verkuil, dri-devel, linux-media, linux-tegra

On 12/10/18 6:07 PM, Hans Verkuil wrote:
> On 12/10/18 5:36 PM, Hans Verkuil wrote:
>> On 12/10/18 5:34 PM, Thierry Reding wrote:
>>> From: Thierry Reding <treding@nvidia.com>
>>>
>>> Most of the CEC support code already lives in the "output" library code.
>>> Move registration and unregistration to the library code as well to make
>>> use of the same code with HDMI on Tegra210 and later via the SOR.
>>>
>>> Signed-off-by: Thierry Reding <treding@nvidia.com>
>>
>> Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> 
> But read my reply to "[PATCH 1/2] media: tegra-cec: Support Tegra186 and Tegra194".
> You may want to take a different approach here.

Ignore this last comment, this code is fine.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-12-11  9:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-10 16:34 [PATCH] drm/tegra: Refactor CEC support Thierry Reding
2018-12-10 16:36 ` Hans Verkuil
2018-12-10 17:07   ` Hans Verkuil
2018-12-11  9:22     ` Hans Verkuil

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).