mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
drm/rockchip: inno_hdmi: Split power mode setting
This splits setting the power mode of the controller / phy in two functions. It's done in preparation of setting up the phy based on the pixelclock. No functional changes intended. Signed-off-by: Alex Bee <knaerzche@gmail.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link: https://patchwork.freedesktop.org/patch/msgid/20231222174220.55249-23-knaerzche@gmail.com
This commit is contained in:
parent
71892cee6c
commit
f01e33cb58
|
|
@ -153,38 +153,31 @@ static void inno_hdmi_sys_power(struct inno_hdmi *hdmi, bool enable)
|
|||
hdmi_modb(hdmi, HDMI_SYS_CTRL, m_POWER, v_PWR_OFF);
|
||||
}
|
||||
|
||||
static void inno_hdmi_set_pwr_mode(struct inno_hdmi *hdmi, int mode)
|
||||
static void inno_hdmi_standby(struct inno_hdmi *hdmi)
|
||||
{
|
||||
switch (mode) {
|
||||
case NORMAL:
|
||||
inno_hdmi_sys_power(hdmi, false);
|
||||
inno_hdmi_sys_power(hdmi, false);
|
||||
|
||||
hdmi_writeb(hdmi, HDMI_PHY_PRE_EMPHASIS, 0x6f);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_DRIVER, 0xbb);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_DRIVER, 0x00);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_PRE_EMPHASIS, 0x00);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_CHG_PWR, 0x00);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYS_CTL, 0x15);
|
||||
};
|
||||
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYS_CTL, 0x15);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYS_CTL, 0x14);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYS_CTL, 0x10);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_CHG_PWR, 0x0f);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYNC, 0x00);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYNC, 0x01);
|
||||
static void inno_hdmi_power_up(struct inno_hdmi *hdmi)
|
||||
{
|
||||
inno_hdmi_sys_power(hdmi, false);
|
||||
|
||||
inno_hdmi_sys_power(hdmi, true);
|
||||
break;
|
||||
hdmi_writeb(hdmi, HDMI_PHY_PRE_EMPHASIS, 0x6f);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_DRIVER, 0xbb);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYS_CTL, 0x15);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYS_CTL, 0x14);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYS_CTL, 0x10);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_CHG_PWR, 0x0f);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYNC, 0x00);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYNC, 0x01);
|
||||
|
||||
case LOWER_PWR:
|
||||
inno_hdmi_sys_power(hdmi, false);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_DRIVER, 0x00);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_PRE_EMPHASIS, 0x00);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_CHG_PWR, 0x00);
|
||||
hdmi_writeb(hdmi, HDMI_PHY_SYS_CTL, 0x15);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
DRM_DEV_ERROR(hdmi->dev, "Unknown power mode %d\n", mode);
|
||||
}
|
||||
}
|
||||
inno_hdmi_sys_power(hdmi, true);
|
||||
};
|
||||
|
||||
static void inno_hdmi_reset(struct inno_hdmi *hdmi)
|
||||
{
|
||||
|
|
@ -201,7 +194,7 @@ static void inno_hdmi_reset(struct inno_hdmi *hdmi)
|
|||
val = v_REG_CLK_INV | v_REG_CLK_SOURCE_SYS | v_PWR_ON | v_INT_POL_HIGH;
|
||||
hdmi_modb(hdmi, HDMI_SYS_CTRL, msk, val);
|
||||
|
||||
inno_hdmi_set_pwr_mode(hdmi, LOWER_PWR);
|
||||
inno_hdmi_standby(hdmi);
|
||||
}
|
||||
|
||||
static void inno_hdmi_disable_frame(struct inno_hdmi *hdmi,
|
||||
|
|
@ -440,6 +433,8 @@ static int inno_hdmi_setup(struct inno_hdmi *hdmi,
|
|||
hdmi_modb(hdmi, HDMI_AV_MUTE, m_AUDIO_MUTE | m_VIDEO_BLACK,
|
||||
v_AUDIO_MUTE(0) | v_VIDEO_MUTE(0));
|
||||
|
||||
inno_hdmi_power_up(hdmi);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -459,7 +454,6 @@ static void inno_hdmi_encoder_enable(struct drm_encoder *encoder,
|
|||
return;
|
||||
|
||||
inno_hdmi_setup(hdmi, &crtc_state->adjusted_mode);
|
||||
inno_hdmi_set_pwr_mode(hdmi, NORMAL);
|
||||
}
|
||||
|
||||
static void inno_hdmi_encoder_disable(struct drm_encoder *encoder,
|
||||
|
|
@ -467,7 +461,7 @@ static void inno_hdmi_encoder_disable(struct drm_encoder *encoder,
|
|||
{
|
||||
struct inno_hdmi *hdmi = encoder_to_inno_hdmi(encoder);
|
||||
|
||||
inno_hdmi_set_pwr_mode(hdmi, LOWER_PWR);
|
||||
inno_hdmi_standby(hdmi);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
|||
|
|
@ -10,11 +10,6 @@
|
|||
|
||||
#define DDC_SEGMENT_ADDR 0x30
|
||||
|
||||
enum PWR_MODE {
|
||||
NORMAL,
|
||||
LOWER_PWR,
|
||||
};
|
||||
|
||||
#define HDMI_SCL_RATE (100*1000)
|
||||
#define DDC_BUS_FREQ_L 0x4b
|
||||
#define DDC_BUS_FREQ_H 0x4c
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user