diff mbox

[v4,02/15] drm: bridge/dw_hdmi: wrap irq control in fucntions

Message ID 1425176927-1784-1-git-send-email-ykk@rock-chips.com (mailing list archive)
State New, archived
Headers show

Commit Message

Yakir Yang March 1, 2015, 2:28 a.m. UTC
Wrap irq control in functions, and then we can call in
dw_hdmi_bind/dw_hdmi_unbind/dw_hdmi_resume/dw_hdmi_suspend
functions.

Signed-off-by: Yakir Yang <ykk@rock-chips.com>
---
Changes in v4: None
Changes in v3:
- Wrap irq control in fucntions

Changes in v2: None

 drivers/gpu/drm/bridge/dw_hdmi.c | 75 ++++++++++++++++++++--------------------
 1 file changed, 37 insertions(+), 38 deletions(-)

Comments

Philipp Zabel March 12, 2015, 10:24 a.m. UTC | #1
Hi Yakir,

Am Samstag, den 28.02.2015, 21:28 -0500 schrieb Yakir Yang:
> Wrap irq control in functions, and then we can call in
> dw_hdmi_bind/dw_hdmi_unbind/dw_hdmi_resume/dw_hdmi_suspend
> functions.
> 
> Signed-off-by: Yakir Yang <ykk@rock-chips.com>
[...]
> @@ -1702,17 +1722,8 @@ EXPORT_SYMBOL_GPL(dw_hdmi_unbind);
>  int dw_hdmi_suspend(struct device *dev)
>  {
>  	struct dw_hdmi *hdmi = dev_get_drvdata(dev);
> -	u8 ih_mute;
> -
> -	/* Disable all interrupts */
> -	hdmi_writeb(hdmi, ~0, HDMI_IH_MUTE_PHY_STAT0);
> -
> -	 /* Disable top level interrupt bits in HDMI block */
> -	ih_mute = hdmi_readb(hdmi, HDMI_IH_MUTE) |
> -		  HDMI_IH_MUTE_MUTE_WAKEUP_INTERRUPT |
> -		  HDMI_IH_MUTE_MUTE_ALL_INTERRUPT;
>  
> -	hdmi_writeb(hdmi, ih_mute, HDMI_IH_MUTE);
> +	hdmi_mute_interrupts(hdmi);
>  
>  	return 0;
>  }
> @@ -1722,19 +1733,7 @@ int dw_hdmi_resume(struct device *dev)
>  {
>  	struct dw_hdmi *hdmi = dev_get_drvdata(dev);
>  
> -	/*
> -	 * Configure registers related to HDMI interrupt
> -	 * generation before registering IRQ.
> -	 */
> -	hdmi_writeb(hdmi, HDMI_PHY_HPD, HDMI_PHY_POL0);
> -
> -	/* Clear Hotplug interrupts */
> -	hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0);
> -
> -	dw_hdmi_fb_registered(hdmi);
> -
> -	/* Unmute interrupts */
> -	hdmi_writeb(hdmi, ~HDMI_IH_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);
> +	hdmi_unmute_interrupts(hdmi);
>  
>  	return 0;
>  }

Here you remove code added in the previous patch.
It would be better to just apply patch 2 first and then rebase patch 1
on top of it.

regards
Philipp
Yakir Yang March 12, 2015, 2:31 p.m. UTC | #2
Hi Philipp,

On 2015?03?12? 18:24, Philipp Zabel wrote:
> Hi Yakir,
>
> Am Samstag, den 28.02.2015, 21:28 -0500 schrieb Yakir Yang:
>> Wrap irq control in functions, and then we can call in
>> dw_hdmi_bind/dw_hdmi_unbind/dw_hdmi_resume/dw_hdmi_suspend
>> functions.
>>
>> Signed-off-by: Yakir Yang <ykk@rock-chips.com>
> [...]
Sorry, I can not understand this comment. could you please talk more 
detail about this one.

Thank you very much  :)
>> @@ -1702,17 +1722,8 @@ EXPORT_SYMBOL_GPL(dw_hdmi_unbind);
>>   int dw_hdmi_suspend(struct device *dev)
>>   {
>>   	struct dw_hdmi *hdmi = dev_get_drvdata(dev);
>> -	u8 ih_mute;
>> -
>> -	/* Disable all interrupts */
>> -	hdmi_writeb(hdmi, ~0, HDMI_IH_MUTE_PHY_STAT0);
>> -
>> -	 /* Disable top level interrupt bits in HDMI block */
>> -	ih_mute = hdmi_readb(hdmi, HDMI_IH_MUTE) |
>> -		  HDMI_IH_MUTE_MUTE_WAKEUP_INTERRUPT |
>> -		  HDMI_IH_MUTE_MUTE_ALL_INTERRUPT;
>>   
>> -	hdmi_writeb(hdmi, ih_mute, HDMI_IH_MUTE);
>> +	hdmi_mute_interrupts(hdmi);
>>   
>>   	return 0;
>>   }
>> @@ -1722,19 +1733,7 @@ int dw_hdmi_resume(struct device *dev)
>>   {
>>   	struct dw_hdmi *hdmi = dev_get_drvdata(dev);
>>   
>> -	/*
>> -	 * Configure registers related to HDMI interrupt
>> -	 * generation before registering IRQ.
>> -	 */
>> -	hdmi_writeb(hdmi, HDMI_PHY_HPD, HDMI_PHY_POL0);
>> -
>> -	/* Clear Hotplug interrupts */
>> -	hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0);
>> -
>> -	dw_hdmi_fb_registered(hdmi);
>> -
>> -	/* Unmute interrupts */
>> -	hdmi_writeb(hdmi, ~HDMI_IH_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);
>> +	hdmi_unmute_interrupts(hdmi);
>>   
>>   	return 0;
>>   }
> Here you remove code added in the previous patch.
> It would be better to just apply patch 2 first and then rebase patch 1
> on top of it.

Thanks,  I will reorder patch 1 & patch 2, in next vesion   :)

> regards
> Philipp

regards :)
Yakir
>
>
>
>
Philipp Zabel March 12, 2015, 2:41 p.m. UTC | #3
Hi Yakir,

Am Donnerstag, den 12.03.2015, 22:31 +0800 schrieb yakir:
> Hi Philipp,
> 
> On 2015?03?12? 18:24, Philipp Zabel wrote:
> > Hi Yakir,
> >
> > Am Samstag, den 28.02.2015, 21:28 -0500 schrieb Yakir Yang:
> >> Wrap irq control in functions, and then we can call in
> >> dw_hdmi_bind/dw_hdmi_unbind/dw_hdmi_resume/dw_hdmi_suspend
> >> functions.
> >>
> >> Signed-off-by: Yakir Yang <ykk@rock-chips.com>
> > [...]
> Sorry, I can not understand this comment. could you please talk more 
> detail about this one.
>
> Thank you very much  :)

I use "[...]" as a sign that I removed parts from the quoted email, like
this:

[...]
> > Here you remove code added in the previous patch.
> > It would be better to just apply patch 2 first and then rebase patch 1
> > on top of it.
> 
> Thanks,  I will reorder patch 1 & patch 2, in next vesion   :)

regards
Philipp
diff mbox

Patch

diff --git a/drivers/gpu/drm/bridge/dw_hdmi.c b/drivers/gpu/drm/bridge/dw_hdmi.c
index dc314f5..08f10da 100644
--- a/drivers/gpu/drm/bridge/dw_hdmi.c
+++ b/drivers/gpu/drm/bridge/dw_hdmi.c
@@ -1330,6 +1330,40 @@  static void initialize_hdmi_ih_mutes(struct dw_hdmi *hdmi)
 	hdmi_writeb(hdmi, ih_mute, HDMI_IH_MUTE);
 }
 
+static void hdmi_mute_interrupts(struct dw_hdmi *hdmi)
+{
+	u8 ih_mute;
+
+	/* Disable all interrupts */
+	hdmi_writeb(hdmi, ~0, HDMI_IH_MUTE_PHY_STAT0);
+
+	 /* Disable top level interrupt bits in HDMI block */
+	ih_mute = hdmi_readb(hdmi, HDMI_IH_MUTE) |
+		  HDMI_IH_MUTE_MUTE_WAKEUP_INTERRUPT |
+		  HDMI_IH_MUTE_MUTE_ALL_INTERRUPT;
+
+	hdmi_writeb(hdmi, ih_mute, HDMI_IH_MUTE);
+}
+
+static void hdmi_unmute_interrupts(struct dw_hdmi *hdmi)
+{
+	initialize_hdmi_ih_mutes(hdmi);
+
+	/*
+	 * Configure registers related to HDMI interrupt
+	 * generation before registering IRQ.
+	 */
+	hdmi_writeb(hdmi, HDMI_PHY_HPD, HDMI_PHY_POL0);
+
+	/* Clear Hotplug interrupts */
+	hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0);
+
+	dw_hdmi_fb_registered(hdmi);
+
+	/* Unmute interrupts */
+	hdmi_writeb(hdmi, ~HDMI_IH_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);
+}
+
 static void dw_hdmi_poweron(struct dw_hdmi *hdmi)
 {
 	dw_hdmi_setup(hdmi, &hdmi->previous_mode);
@@ -1650,25 +1684,11 @@  int dw_hdmi_bind(struct device *dev, struct device *master,
 	 */
 	hdmi_init_clk_regenerator(hdmi);
 
-	/*
-	 * Configure registers related to HDMI interrupt
-	 * generation before registering IRQ.
-	 */
-	hdmi_writeb(hdmi, HDMI_PHY_HPD, HDMI_PHY_POL0);
-
-	/* Clear Hotplug interrupts */
-	hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0);
-
-	ret = dw_hdmi_fb_registered(hdmi);
-	if (ret)
-		goto err_iahb;
-
 	ret = dw_hdmi_register(drm, hdmi);
 	if (ret)
 		goto err_iahb;
 
-	/* Unmute interrupts */
-	hdmi_writeb(hdmi, ~HDMI_IH_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);
+	hdmi_unmute_interrupts(hdmi);
 
 	dev_set_drvdata(dev, hdmi);
 
@@ -1702,17 +1722,8 @@  EXPORT_SYMBOL_GPL(dw_hdmi_unbind);
 int dw_hdmi_suspend(struct device *dev)
 {
 	struct dw_hdmi *hdmi = dev_get_drvdata(dev);
-	u8 ih_mute;
-
-	/* Disable all interrupts */
-	hdmi_writeb(hdmi, ~0, HDMI_IH_MUTE_PHY_STAT0);
-
-	 /* Disable top level interrupt bits in HDMI block */
-	ih_mute = hdmi_readb(hdmi, HDMI_IH_MUTE) |
-		  HDMI_IH_MUTE_MUTE_WAKEUP_INTERRUPT |
-		  HDMI_IH_MUTE_MUTE_ALL_INTERRUPT;
 
-	hdmi_writeb(hdmi, ih_mute, HDMI_IH_MUTE);
+	hdmi_mute_interrupts(hdmi);
 
 	return 0;
 }
@@ -1722,19 +1733,7 @@  int dw_hdmi_resume(struct device *dev)
 {
 	struct dw_hdmi *hdmi = dev_get_drvdata(dev);
 
-	/*
-	 * Configure registers related to HDMI interrupt
-	 * generation before registering IRQ.
-	 */
-	hdmi_writeb(hdmi, HDMI_PHY_HPD, HDMI_PHY_POL0);
-
-	/* Clear Hotplug interrupts */
-	hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD, HDMI_IH_PHY_STAT0);
-
-	dw_hdmi_fb_registered(hdmi);
-
-	/* Unmute interrupts */
-	hdmi_writeb(hdmi, ~HDMI_IH_PHY_STAT0_HPD, HDMI_IH_MUTE_PHY_STAT0);
+	hdmi_unmute_interrupts(hdmi);
 
 	return 0;
 }