/* * Read address 0 in order to get the SCP reset done completed * Dummy access performed to make sure reset is done
*/
hdmi_read_reg(phy->base, HDMI_TXPHY_TX_CTRL);
/* * In OMAP5+, the HFBITCLK must be divided by 2 before issuing the * HDMI_PHYPWRCMD_LDOON command.
*/ if (phy_feat->bist_ctrl)
REG_FLD_MOD(phy->base, HDMI_TXPHY_BIST_CONTROL, 1, 11, 11);
/* * If the hfbitclk != lfbitclk, it means the lfbitclk was configured * to be used for TMDS.
*/ if (hfbitclk != lfbitclk)
freqout = 0; elseif (hfbitclk / 10 < phy_feat->max_phy)
freqout = 1; else
freqout = 2;
/* * Write to phy address 0 to configure the clock * use HFBITCLK write HDMI_TXPHY_TX_CONTROL_FREQOUT field
*/
REG_FLD_MOD(phy->base, HDMI_TXPHY_TX_CTRL, freqout, 31, 30);
/* Write to phy address 1 to start HDMI line (TXVALID and TMDSCLKEN) */
hdmi_write_reg(phy->base, HDMI_TXPHY_DIGITAL_CTRL, 0xF0000000);
/* Setup max LDO voltage */ if (phy_feat->ldo_voltage)
REG_FLD_MOD(phy->base, HDMI_TXPHY_POWER_CTRL, 0xB, 3, 0);
staticconststruct hdmi_phy_features *hdmi_phy_get_features(void)
{ switch (omapdss_get_version()) { case OMAPDSS_VER_OMAP4430_ES1: case OMAPDSS_VER_OMAP4430_ES2: case OMAPDSS_VER_OMAP4: return &omap44xx_phy_feats;
case OMAPDSS_VER_OMAP5: case OMAPDSS_VER_DRA7xx: return &omap54xx_phy_feats;
default: return NULL;
}
}
int hdmi_phy_init(struct platform_device *pdev, struct hdmi_phy_data *phy)
{
phy_feat = hdmi_phy_get_features(); if (!phy_feat) return -ENODEV;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.