1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright (C) 2013 Red Hat 4 * Author: Rob Clark <robdclark@gmail.com> 5 */ 6 7 #include "hdmi.h" 8 9 static void hdmi_phy_8960_powerup(struct hdmi_phy *phy, 10 unsigned long int pixclock) 11 { 12 DBG("pixclock: %lu", pixclock); 13 14 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG2, 0x00); 15 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG0, 0x1b); 16 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG1, 0xf2); 17 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG4, 0x00); 18 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG5, 0x00); 19 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG6, 0x00); 20 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG7, 0x00); 21 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG8, 0x00); 22 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG9, 0x00); 23 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG10, 0x00); 24 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG11, 0x00); 25 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG3, 0x20); 26 } 27 28 static void hdmi_phy_8960_powerdown(struct hdmi_phy *phy) 29 { 30 DBG(""); 31 32 hdmi_phy_write(phy, REG_HDMI_8960_PHY_REG2, 0x7f); 33 } 34 35 static const char * const hdmi_phy_8960_reg_names[] = { 36 "core-vdda", 37 }; 38 39 static const char * const hdmi_phy_8960_clk_names[] = { 40 "slave_iface", 41 }; 42 43 const struct hdmi_phy_cfg msm_hdmi_phy_8960_cfg = { 44 .type = MSM_HDMI_PHY_8960, 45 .powerup = hdmi_phy_8960_powerup, 46 .powerdown = hdmi_phy_8960_powerdown, 47 .reg_names = hdmi_phy_8960_reg_names, 48 .num_regs = ARRAY_SIZE(hdmi_phy_8960_reg_names), 49 .clk_names = hdmi_phy_8960_clk_names, 50 .num_clks = ARRAY_SIZE(hdmi_phy_8960_clk_names), 51 }; 52