Message ID | 1425176927-1784-1-git-send-email-ykk@rock-chips.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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
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 > > > >
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 --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; }
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(-)