imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
Subsystems (2)
PATCH 1/1 imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
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.
--- 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(-)
arch/arm/imx-common/cmd_hdmidet.c +1 -2
@@ -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,
arch/arm/include/asm/arch-mx6/mxc_hdmi.h +3 -0
@@ -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,
board/boundary/nitrogen6x/nitrogen6x.c +1 -1
@@ -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)
board/freescale/mx6qsabrelite/mx6qsabrelite.c +1 -1
@@ -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)
Signature · 1 line
1.8.3.2
PATCH 1/1 imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
Hi all,
Quoted 5 lines · Robert Winkler
DVI monitors show up as the
RX_SENSEbits in theHDMI_PHY_STAT0register, 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
Quoted 27 lines
Signed-off-by Robert Winkler <[email protected]>--- 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(-)arch/arm/imx-common/cmd_hdmidet.c +1
-2@@ -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,arch/arm/include/asm/arch-mx6/mxc_hdmi.h +0
-0
arch/arm/include/asm/arch-mx6/mxc_hdmi.h enum { · line 904
Quoted 9 lines
arch/arm/include/asm/arch-mx6/mxc_hdmi.h +3
-0@@ -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
Fabio Estevam
reviewerPATCH 1/1 imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
Hi Eric,
Quoted 9 lines · Eric Nelson
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_STAT0register, but do show proper toggling of the RX_SENSE0..3 bits.
Quoted 8 lines
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
PATCH 1/1 imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
Hi Fabio,
Quoted 21 lines · Fabio Estevam
Hi Eric,
Quoted 16 lines · Eric Nelson
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_STAT0register, 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:
Quoted 7 lines
Quoted 1 line
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