[PATCH] drm: sti: remove gpio for HDMI hot plug detection
Benjamin Gaignard
benjamin.gaignard at linaro.org
Thu Oct 9 08:48:09 PDT 2014
We have test with and without gpio and we haven't seen any difference.
To be honest I prefer simplify the bindings which is already complex
and so remove gpio.
But I will in mind your advice if one day I have debounce issues.
Regards,
Benjamin
2014-10-09 14:10 GMT+02:00 Rob Clark <robdclark at gmail.com>:
> On Thu, Oct 9, 2014 at 4:42 AM, Benjamin Gaignard
> <benjamin.gaignard at linaro.org> wrote:
>> gpio used for HDMI hot plug detection is useless,
>> HDMI_STI register contains an hot plug detection status bit.
>> Fix binding documentation.
>
> Random thought, but depending on how much you trust your hw designers
> you may want to at least leave the DT entry as optional? I've started
> out before completely trusting the hdmi block's debounced hpd signal,
> but eventually giving up and using raw gpio, or combination of gpio +
> debounced hdmi signal for reliability..
>
> BR,
> -R
>
>> Signed-off-by: Benjamin Gaignard <benjamin.gaignard at linaro.org>
>> ---
>> Documentation/devicetree/bindings/gpu/st,stih4xx.txt | 2 --
>> drivers/gpu/drm/sti/sti_hdmi.c | 11 ++---------
>> drivers/gpu/drm/sti/sti_hdmi.h | 5 +++--
>> 3 files changed, 5 insertions(+), 13 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/gpu/st,stih4xx.txt b/Documentation/devicetree/bindings/gpu/st,stih4xx.txt
>> index 8885d9e..32cfc7b 100644
>> --- a/Documentation/devicetree/bindings/gpu/st,stih4xx.txt
>> +++ b/Documentation/devicetree/bindings/gpu/st,stih4xx.txt
>> @@ -68,7 +68,6 @@ STMicroelectronics stih4xx platforms
>> number of clocks may depend of the SoC type.
>> - clock-names: names of the clocks listed in clocks property in the same
>> order.
>> - - hdmi,hpd-gpio: gpio id to detect if an hdmi cable is plugged or not.
>> - ddc: phandle of an I2C controller used for DDC EDID probing
>>
>> sti-hda:
>> @@ -174,7 +173,6 @@ Example:
>> interrupt-names = "irq";
>> clock-names = "pix", "tmds", "phy", "audio";
>> clocks = <&clockgen_c_vcc CLK_S_PIX_HDMI>, <&clockgen_c_vcc CLK_S_TMDS_HDMI>, <&clockgen_c_vcc CLK_S_HDMI_REJECT_PLL>, <&clockgen_b1 CLK_S_PCM_0>;
>> - hdmi,hpd-gpio = <&PIO2 5>;
>> };
>>
>> sti-hda at fe85a000 {
>> diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
>> index 7673189..09f39c5 100644
>> --- a/drivers/gpu/drm/sti/sti_hdmi.c
>> +++ b/drivers/gpu/drm/sti/sti_hdmi.c
>> @@ -130,8 +130,7 @@ static irqreturn_t hdmi_irq_thread(int irq, void *arg)
>>
>> /* Hot plug/unplug IRQ */
>> if (hdmi->irq_status & HDMI_INT_HOT_PLUG) {
>> - /* read gpio to get the status */
>> - hdmi->hpd = gpio_get_value(hdmi->hpd_gpio);
>> + hdmi->hpd = readl(hdmi->regs + HDMI_STA) & HDMI_STA_HOT_PLUG;
>> if (hdmi->drm_dev)
>> drm_helper_hpd_irq_event(hdmi->drm_dev);
>> }
>> @@ -767,13 +766,7 @@ static int sti_hdmi_probe(struct platform_device *pdev)
>> return PTR_ERR(hdmi->clk_audio);
>> }
>>
>> - hdmi->hpd_gpio = of_get_named_gpio(np, "hdmi,hpd-gpio", 0);
>> - if (hdmi->hpd_gpio < 0) {
>> - DRM_ERROR("Failed to get hdmi hpd-gpio\n");
>> - return -EIO;
>> - }
>> -
>> - hdmi->hpd = gpio_get_value(hdmi->hpd_gpio);
>> + hdmi->hpd = readl(hdmi->regs + HDMI_STA) & HDMI_STA_HOT_PLUG;
>>
>> init_waitqueue_head(&hdmi->wait_event);
>>
>> diff --git a/drivers/gpu/drm/sti/sti_hdmi.h b/drivers/gpu/drm/sti/sti_hdmi.h
>> index d00a3e0..3d22390 100644
>> --- a/drivers/gpu/drm/sti/sti_hdmi.h
>> +++ b/drivers/gpu/drm/sti/sti_hdmi.h
>> @@ -14,6 +14,9 @@
>> #define HDMI_STA 0x0010
>> #define HDMI_STA_DLL_LCK BIT(5)
>>
>> +#define HDMI_STA_HOT_PLUG_SHIFT 4
>> +#define HDMI_STA_HOT_PLUG (1 << HDMI_STA_HOT_PLUG_SHIFT)
>> +
>> struct sti_hdmi;
>>
>> struct hdmi_phy_ops {
>> @@ -37,7 +40,6 @@ struct hdmi_phy_ops {
>> * @irq_status: interrupt status register
>> * @phy_ops: phy start/stop operations
>> * @enabled: true if hdmi is enabled else false
>> - * @hpd_gpio: hdmi hot plug detect gpio number
>> * @hpd: hot plug detect status
>> * @wait_event: wait event
>> * @event_received: wait event status
>> @@ -57,7 +59,6 @@ struct sti_hdmi {
>> u32 irq_status;
>> struct hdmi_phy_ops *phy_ops;
>> bool enabled;
>> - int hpd_gpio;
>> bool hpd;
>> wait_queue_head_t wait_event;
>> bool event_received;
>> --
>> 1.9.1
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Benjamin Gaignard
Graphic Working Group
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
More information about the dri-devel
mailing list