]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
imx: nitrogen6x: mx6qsabrelite: Add support for DVI monitors
authorRobert Winkler <robert.winkler@boundarydevices.com>
Tue, 23 Jul 2013 22:07:56 +0000 (15:07 -0700)
committerStefano Babic <sbabic@denx.de>
Sat, 27 Jul 2013 08:52:42 +0000 (10:52 +0200)
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>
Acked-by: Stefano Babic <sbabic@denx.de>
arch/arm/imx-common/cmd_hdmidet.c
arch/arm/include/asm/arch-mx6/mxc_hdmi.h
board/boundary/nitrogen6x/nitrogen6x.c

index 794bf50cb674eb8378298d12c8a5d8572f8a93a1..ce0b26e9736570bb440366f1e139e9c46425fdef 100644 (file)
@@ -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,
index 5cd6aa63598db45267e94037b2820f03ec2b58d2..2d93658434c72b6f3940f20a492daddce73a3350 100644 (file)
@@ -901,6 +901,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,
index 1b8263394419494356008bf4c341b7dded2ee90f..ff033dae71f6ef8586d803c9bccc481a9bc9ed05 100644 (file)
@@ -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 do_enable_hdmi(struct display_info_t const *dev)