* [U-Boot] [PATCH] imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
@ 2013-07-22 20:33 Robert Winkler
2013-07-23 21:43 ` Eric Nelson
0 siblings, 1 reply; 4+ messages in thread
From: Robert Winkler @ 2013-07-22 20:33 UTC (permalink / raw)
To: u-boot
DVI monitors show up as the RX_SENSE bits in the
HDMI_PHY_STAT0 register, ie F0 so we really want to check
against F2 to support both HDMI and DVI.
Signed-off-by: Robert Winkler <robert.winkler@boundarydevices.com>
---
arch/arm/imx-common/cmd_hdmidet.c | 3 +--
arch/arm/include/asm/arch-mx6/mxc_hdmi.h | 3 +++
board/boundary/nitrogen6x/nitrogen6x.c | 2 +-
board/freescale/mx6qsabrelite/mx6qsabrelite.c | 2 +-
4 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/arch/arm/imx-common/cmd_hdmidet.c b/arch/arm/imx-common/cmd_hdmidet.c
index 794bf50..ce0b26e 100644
--- a/arch/arm/imx-common/cmd_hdmidet.c
+++ b/arch/arm/imx-common/cmd_hdmidet.c
@@ -27,8 +27,7 @@
static int do_hdmidet(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
- u8 reg = readb(&hdmi->phy_stat0) & HDMI_PHY_HPD;
- return (reg&HDMI_PHY_HPD) ? 0 : 1;
+ return (readb(&hdmi->phy_stat0) & HDMI_DVI_STAT) ? 0 : 1;
}
U_BOOT_CMD(hdmidet, 1, 1, do_hdmidet,
diff --git a/arch/arm/include/asm/arch-mx6/mxc_hdmi.h b/arch/arm/include/asm/arch-mx6/mxc_hdmi.h
index 9dccb3f..1b55b05 100644
--- a/arch/arm/include/asm/arch-mx6/mxc_hdmi.h
+++ b/arch/arm/include/asm/arch-mx6/mxc_hdmi.h
@@ -896,6 +896,9 @@ enum {
HDMI_PHY_HPD = 0x02,
HDMI_PHY_TX_PHY_LOCK = 0x01,
+/* Convenience macro RX_SENSE | HPD */
+ HDMI_DVI_STAT = 0xF2,
+
/* PHY_I2CM_SLAVE_ADDR field values */
HDMI_PHY_I2CM_SLAVE_ADDR_PHY_GEN2 = 0x69,
HDMI_PHY_I2CM_SLAVE_ADDR_HEAC_PHY = 0x49,
diff --git a/board/boundary/nitrogen6x/nitrogen6x.c b/board/boundary/nitrogen6x/nitrogen6x.c
index 8f0f9b8..bb09a6a 100644
--- a/board/boundary/nitrogen6x/nitrogen6x.c
+++ b/board/boundary/nitrogen6x/nitrogen6x.c
@@ -477,7 +477,7 @@ struct display_info_t {
static int detect_hdmi(struct display_info_t const *dev)
{
struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
- return readb(&hdmi->phy_stat0) & HDMI_PHY_HPD;
+ return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
}
static void enable_hdmi(struct display_info_t const *dev)
diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
index 862bc30..559b082 100644
--- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
+++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
@@ -449,7 +449,7 @@ struct display_info_t {
static int detect_hdmi(struct display_info_t const *dev)
{
struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
- return readb(&hdmi->phy_stat0) & HDMI_PHY_HPD;
+ return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
}
static void enable_hdmi(struct display_info_t const *dev)
--
1.8.3.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
2013-07-22 20:33 [U-Boot] [PATCH] imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors Robert Winkler
@ 2013-07-23 21:43 ` Eric Nelson
2013-07-23 21:46 ` Fabio Estevam
0 siblings, 1 reply; 4+ messages in thread
From: Eric Nelson @ 2013-07-23 21:43 UTC (permalink / raw)
To: u-boot
Hi all,
On 07/22/2013 01:33 PM, Robert Winkler wrote:
>
> DVI monitors show up as the RX_SENSE bits in the
> HDMI_PHY_STAT0 register, ie F0 so we really want to check
> against F2 to support both HDMI and DVI.
>
A little background is probably appropriate for this patch.
Since "the beginning" of usage of the SABRE Lite and Nitrogen6x
boards, DVI detection has been somewhat broken.
Some (most) DVI monitors don't produce the "HPD" bit in
the PHY_STAT0 register, but do show proper toggling of the
RX_SENSE0..3 bits.
Creating a new the bit-mask to include all five bits and
modifying the 'hdmidet' command and internal detection
routines allows these monitors to function properly in U-Boot.
A related patch to our kernels allows things to work under
Linux:
https://github.com/boundarydevices/linux-imx6/commit/7d8752905c118af9063738a533227de0b2f6ecd4
> Signed-off-by: Robert Winkler <robert.winkler@boundarydevices.com>
> ---
> arch/arm/imx-common/cmd_hdmidet.c | 3 +--
> arch/arm/include/asm/arch-mx6/mxc_hdmi.h | 3 +++
> board/boundary/nitrogen6x/nitrogen6x.c | 2 +-
> board/freescale/mx6qsabrelite/mx6qsabrelite.c | 2 +-
> 4 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/imx-common/cmd_hdmidet.c b/arch/arm/imx-common/cmd_hdmidet.c
> index 794bf50..ce0b26e 100644
> --- a/arch/arm/imx-common/cmd_hdmidet.c
> +++ b/arch/arm/imx-common/cmd_hdmidet.c
> @@ -27,8 +27,7 @@
> static int do_hdmidet(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> {
> struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
> - u8 reg = readb(&hdmi->phy_stat0) & HDMI_PHY_HPD;
> - return (reg&HDMI_PHY_HPD) ? 0 : 1;
> + return (readb(&hdmi->phy_stat0) & HDMI_DVI_STAT) ? 0 : 1;
> }
>
> U_BOOT_CMD(hdmidet, 1, 1, do_hdmidet,
> diff --git a/arch/arm/include/asm/arch-mx6/mxc_hdmi.h b/arch/arm/include/asm/arch-mx6/mxc_hdmi.h
> index 9dccb3f..1b55b05 100644
> --- a/arch/arm/include/asm/arch-mx6/mxc_hdmi.h
> +++ b/arch/arm/include/asm/arch-mx6/mxc_hdmi.h
> @@ -896,6 +896,9 @@ enum {
> HDMI_PHY_HPD = 0x02,
> HDMI_PHY_TX_PHY_LOCK = 0x01,
>
> +/* Convenience macro RX_SENSE | HPD */
> + HDMI_DVI_STAT = 0xF2,
> +
> /* PHY_I2CM_SLAVE_ADDR field values */
> HDMI_PHY_I2CM_SLAVE_ADDR_PHY_GEN2 = 0x69,
> HDMI_PHY_I2CM_SLAVE_ADDR_HEAC_PHY = 0x49,
FWIW, we've figured out that the root cause of this is
current-limiting by DVI monitors interacts with a
resistor (R251) that acts as a voltage divider on
the HPD signal on our boards.
We've tested this patch against SABRE SDB boards as
well as SABRE Lite and Nitrogen6X.
Regards,
Eric
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
2013-07-23 21:43 ` Eric Nelson
@ 2013-07-23 21:46 ` Fabio Estevam
2013-07-23 22:12 ` Eric Nelson
0 siblings, 1 reply; 4+ messages in thread
From: Fabio Estevam @ 2013-07-23 21:46 UTC (permalink / raw)
To: u-boot
Hi Eric,
On Tue, Jul 23, 2013 at 6:43 PM, Eric Nelson
<eric.nelson@boundarydevices.com> wrote:
> A little background is probably appropriate for this patch.
>
> Since "the beginning" of usage of the SABRE Lite and Nitrogen6x
> boards, DVI detection has been somewhat broken.
>
> Some (most) DVI monitors don't produce the "HPD" bit in
> the PHY_STAT0 register, but do show proper toggling of the
> RX_SENSE0..3 bits.
>
> Creating a new the bit-mask to include all five bits and
> modifying the 'hdmidet' command and internal detection
> routines allows these monitors to function properly in U-Boot.
>
> A related patch to our kernels allows things to work under
> Linux:
>
> https://github.com/boundarydevices/linux-imx6/commit/7d8752905c118af9063738a533227de0b2f6ecd4
Thanks for the excellent explanation and for finding the root cause!
It would be really nice if Robert could send a v2 adding your text
into the commit log.
Regards,
Fabio Estevam
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
2013-07-23 21:46 ` Fabio Estevam
@ 2013-07-23 22:12 ` Eric Nelson
0 siblings, 0 replies; 4+ messages in thread
From: Eric Nelson @ 2013-07-23 22:12 UTC (permalink / raw)
To: u-boot
Hi Fabio,
On 07/23/2013 02:46 PM, Fabio Estevam wrote:
> Hi Eric,
>
> On Tue, Jul 23, 2013 at 6:43 PM, Eric Nelson
> <eric.nelson@boundarydevices.com> wrote:
>
>> A little background is probably appropriate for this patch.
>>
>> Since "the beginning" of usage of the SABRE Lite and Nitrogen6x
>> boards, DVI detection has been somewhat broken.
>>
>> Some (most) DVI monitors don't produce the "HPD" bit in
>> the PHY_STAT0 register, but do show proper toggling of the
>> RX_SENSE0..3 bits.
>>
>> Creating a new the bit-mask to include all five bits and
>> modifying the 'hdmidet' command and internal detection
>> routines allows these monitors to function properly in U-Boot.
>>
>> A related patch to our kernels allows things to work under
>> Linux:
>>
>> https://github.com/boundarydevices/linux-imx6/commit/7d8752905c118af9063738a533227de0b2f6ecd4
>
> Thanks for the excellent explanation and for finding the root cause!
>
> It would be really nice if Robert could send a v2 adding your text
> into the commit log.
>
Seems to be already done.
Also note that this patch will be smaller with a V3 of your patch
collapsing SABRE Lite into the nitrogen6x/ tree (nudge nudge)...
Regards,
Eric
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-07-23 22:12 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-22 20:33 [U-Boot] [PATCH] imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors Robert Winkler
2013-07-23 21:43 ` Eric Nelson
2013-07-23 21:46 ` Fabio Estevam
2013-07-23 22:12 ` Eric Nelson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox