struct hdmi_vmode video_mode;
};
+struct hdmi_phy_reg_config {
+ /* HDMI PHY register config for pass HCT */
+ u16 reg_vlev;
+ u16 reg_cksymtx;
+};
+
struct mxc_hdmi {
struct platform_device *pdev;
struct platform_device *core_pdev;
struct fb_videomode previous_mode;
struct fb_videomode previous_non_vga_mode;
bool requesting_vga_for_initialization;
+
+ struct hdmi_phy_reg_config phy_config;
};
struct i2c_client *hdmi_i2c;
hdmi_phy_i2c_write(hdmi, 0x800d, 0x09); /* CKSYMTXCTRL */
/* TX/CK LVL 10 */
hdmi_phy_i2c_write(hdmi, 0x01ad, 0x0E); /* VLEVCTRL */
+
+ /* Board specific setting for PHY register 0x09, 0x0e to pass HCT */
+ if (hdmi->phy_config.reg_cksymtx != 0)
+ hdmi_phy_i2c_write(hdmi, hdmi->phy_config.reg_cksymtx, 0x09);
+
+ if (hdmi->phy_config.reg_vlev != 0)
+ hdmi_phy_i2c_write(hdmi, hdmi->phy_config.reg_vlev, 0x0E);
+
/* REMOVE CLK TERM */
hdmi_phy_i2c_write(hdmi, 0x8000, 0x05); /* CKCALCTRL */
if (plat->init)
plat->init(mxc_hdmi_ipu_id, mxc_hdmi_disp_id);
+ /* Specific phy config */
+ hdmi->phy_config.reg_cksymtx = plat->phy_reg_cksymtx;
+ hdmi->phy_config.reg_vlev = plat->phy_reg_vlev;
+
hdmi->hdmi_isfr_clk = clk_get(&hdmi->pdev->dev, "hdmi_isfr_clk");
if (IS_ERR(hdmi->hdmi_isfr_clk)) {
ret = PTR_ERR(hdmi->hdmi_isfr_clk);
*
* Maintainer: Kumar Gala <galak@kernel.crashing.org>
*
- * Copyright 2004-2012 Freescale Semiconductor, Inc.
+ * Copyright 2004-2013 Freescale Semiconductor, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
void (*put_pins) (void);
void (*enable_pins) (void);
void (*disable_pins) (void);
+ /* HDMI PHY register config for pass HCT */
+ u16 phy_reg_vlev;
+ u16 phy_reg_cksymtx;
};
struct fsl_mxc_hdmi_core_platform_data {