From: Jose Abreu <Jose.Abreu@synopsys.com>
To: Neil Armstrong <narmstrong@baylibre.com>,
<dri-devel@lists.freedesktop.org>,
<laurent.pinchart+renesas@ideasonboard.com>,
<architt@codeaurora.org>
Cc: <Jose.Abreu@synopsys.com>, <kieran.bingham@ideasonboard.com>,
<linux-amlogic@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <linux-media@vger.kernel.org>
Subject: Re: [PATCH v3 1/6] drm: bridge: dw-hdmi: Extract PHY interrupt setup to a function
Date: Tue, 7 Mar 2017 17:12:45 +0000 [thread overview]
Message-ID: <0df08831-ecac-e868-0f46-bb38ad0dfe3f@synopsys.com> (raw)
In-Reply-To: <1488904944-14285-2-git-send-email-narmstrong@baylibre.com>
Hi Neil,
On 07-03-2017 16:42, Neil Armstrong wrote:
> From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
>
> In preparation for adding PHY operations to handle RX SENSE and HPD,
> group all the PHY interrupt setup code in a single location and extract
> it to a separate function.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 50 ++++++++++++++-----------------
> 1 file changed, 23 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index 026a0dc..1ed8bc1 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -1496,7 +1496,7 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
> }
>
> /* Wait until we are registered to enable interrupts */
> -static int dw_hdmi_fb_registered(struct dw_hdmi *hdmi)
> +static void dw_hdmi_fb_registered(struct dw_hdmi *hdmi)
> {
> hdmi_writeb(hdmi, HDMI_PHY_I2CM_INT_ADDR_DONE_POL,
> HDMI_PHY_I2CM_INT_ADDR);
> @@ -1504,15 +1504,6 @@ static int dw_hdmi_fb_registered(struct dw_hdmi *hdmi)
> hdmi_writeb(hdmi, HDMI_PHY_I2CM_CTLINT_ADDR_NAC_POL |
> HDMI_PHY_I2CM_CTLINT_ADDR_ARBITRATION_POL,
> HDMI_PHY_I2CM_CTLINT_ADDR);
> -
> - /* enable cable hot plug irq */
> - hdmi_writeb(hdmi, hdmi->phy_mask, HDMI_PHY_MASK0);
> -
> - /* Clear Hotplug interrupts */
> - hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE,
> - HDMI_IH_PHY_STAT0);
> -
> - return 0;
> }
>
> static void initialize_hdmi_ih_mutes(struct dw_hdmi *hdmi)
> @@ -1630,6 +1621,26 @@ static void dw_hdmi_update_phy_mask(struct dw_hdmi *hdmi)
> hdmi_writeb(hdmi, hdmi->phy_mask, HDMI_PHY_MASK0);
> }
>
> +static void dw_hdmi_phy_setup_hpd(struct dw_hdmi *hdmi)
> +{
> + /*
> + * Configure the PHY RX SENSE and HPD interrupts polarities and clear
> + * any pending interrupt.
> + */
> + hdmi_writeb(hdmi, HDMI_PHY_HPD | HDMI_PHY_RX_SENSE, HDMI_PHY_POL0);
> + hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE,
> + HDMI_IH_PHY_STAT0);
> +
> + /* Enable cable hot plug irq. */
> + hdmi_writeb(hdmi, hdmi->phy_mask, HDMI_PHY_MASK0);
> +
> + /* Clear and unmute interrupts. */
> + hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE,
> + HDMI_IH_PHY_STAT0);
> + hdmi_writeb(hdmi, ~(HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE),
> + HDMI_IH_MUTE_PHY_STAT0);
> +}
> +
> static enum drm_connector_status
> dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
> {
> @@ -2141,29 +2152,14 @@ static int dw_hdmi_detect_phy(struct dw_hdmi *hdmi)
> hdmi->ddc = NULL;
> }
>
> - /*
> - * Configure registers related to HDMI interrupt
> - * generation before registering IRQ.
> - */
I've seen the databook and HPD interrupts are enabled per default
(actually I think most of the interrupts are). I'm thinking
whether we could get spurious interrupts because of not
configuring HPD before registering IRQ (probably thats why the
comment was there). How did you test this? I think that if you
insert the cable before loading modules then you can try to
emulate this condition. What do you think?
Best regards,
Jose Miguel Abreu
> - hdmi_writeb(hdmi, HDMI_PHY_HPD | HDMI_PHY_RX_SENSE, HDMI_PHY_POL0);
> -
> - /* Clear Hotplug interrupts */
> - hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE,
> - HDMI_IH_PHY_STAT0);
> -
> hdmi->bridge.driver_private = hdmi;
> hdmi->bridge.funcs = &dw_hdmi_bridge_funcs;
> #ifdef CONFIG_OF
> hdmi->bridge.of_node = pdev->dev.of_node;
> #endif
>
> - ret = dw_hdmi_fb_registered(hdmi);
> - if (ret)
> - goto err_iahb;
> -
> - /* Unmute interrupts */
> - hdmi_writeb(hdmi, ~(HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE),
> - HDMI_IH_MUTE_PHY_STAT0);
> + dw_hdmi_fb_registered(hdmi);
> + dw_hdmi_phy_setup_hpd(hdmi);
>
> memset(&pdevinfo, 0, sizeof(pdevinfo));
> pdevinfo.parent = dev;
next prev parent reply other threads:[~2017-03-07 17:13 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-07 16:42 [PATCH v3 0/6] drm: bridge: dw-hdmi: Add support for Custom PHYs Neil Armstrong
2017-03-07 16:42 ` [PATCH v3 1/6] drm: bridge: dw-hdmi: Extract PHY interrupt setup to a function Neil Armstrong
2017-03-07 17:12 ` Jose Abreu [this message]
2017-03-08 10:25 ` Neil Armstrong
2017-03-07 16:42 ` [PATCH v3 2/6] media: uapi: Add RGB and YUV bus formats for Synopsys HDMI TX Controller Neil Armstrong
2017-03-16 17:06 ` Archit Taneja
2017-03-17 16:10 ` Neil Armstrong
2017-03-20 15:35 ` Hans Verkuil
2017-03-07 16:42 ` [PATCH v3 3/6] documentation: media: Add documentation for new RGB and YUV bus formats Neil Armstrong
2017-03-16 17:01 ` Archit Taneja
2017-03-17 16:11 ` Neil Armstrong
2017-03-20 15:04 ` Hans Verkuil
2017-03-20 14:33 ` Hans Verkuil
2017-03-07 16:42 ` [PATCH v3 4/6] drm: bridge: dw-hdmi: Switch to V4L bus format and encodings Neil Armstrong
2017-03-07 17:35 ` Jose Abreu
2017-03-08 9:35 ` Neil Armstrong
2017-03-08 12:12 ` Neil Armstrong
2017-03-09 14:27 ` Jose Abreu
2017-03-13 11:43 ` Jose Abreu
2017-03-14 8:14 ` Neil Armstrong
2017-03-07 16:42 ` [PATCH v3 5/6] drm: bridge: dw-hdmi: Add Documentation on supported input formats Neil Armstrong
2017-03-16 16:43 ` Archit Taneja
2017-03-07 16:42 ` [PATCH v3 6/6] drm: bridge: dw-hdmi: Move HPD handling to PHY operations Neil Armstrong
2017-03-07 17:19 ` Jose Abreu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0df08831-ecac-e868-0f46-bb38ad0dfe3f@synopsys.com \
--to=jose.abreu@synopsys.com \
--cc=architt@codeaurora.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=kieran.bingham@ideasonboard.com \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=linux-amlogic@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=narmstrong@baylibre.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®