mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
drm/rockchip: inno_hdmi: Remove tmds rate from structure
The tmds_rate field in the inno_hdmi structure is used mostly to configure the internal i2c controller divider through a call to the inno_hdmi_i2c_init() function. We can simply make that rate an argument to that function, which also removes a workaround to initialize the divider at probe time when we don't have a mode yet. Signed-off-by: Maxime Ripard <mripard@kernel.org> Tested-by: Alex Bee <knaerzche@gmail.com> 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-13-knaerzche@gmail.com
This commit is contained in:
parent
139771b823
commit
5f92474844
|
|
@ -55,8 +55,6 @@ struct inno_hdmi {
|
|||
struct inno_hdmi_i2c *i2c;
|
||||
struct i2c_adapter *ddc;
|
||||
|
||||
unsigned int tmds_rate;
|
||||
|
||||
struct hdmi_data_info hdmi_data;
|
||||
};
|
||||
|
||||
|
|
@ -133,11 +131,11 @@ static inline void hdmi_modb(struct inno_hdmi *hdmi, u16 offset,
|
|||
hdmi_writeb(hdmi, offset, temp);
|
||||
}
|
||||
|
||||
static void inno_hdmi_i2c_init(struct inno_hdmi *hdmi)
|
||||
static void inno_hdmi_i2c_init(struct inno_hdmi *hdmi, unsigned long long rate)
|
||||
{
|
||||
int ddc_bus_freq;
|
||||
unsigned long long ddc_bus_freq = rate >> 2;
|
||||
|
||||
ddc_bus_freq = (hdmi->tmds_rate >> 2) / HDMI_SCL_RATE;
|
||||
do_div(ddc_bus_freq, HDMI_SCL_RATE);
|
||||
|
||||
hdmi_writeb(hdmi, DDC_BUS_FREQ_L, ddc_bus_freq & 0xFF);
|
||||
hdmi_writeb(hdmi, DDC_BUS_FREQ_H, (ddc_bus_freq >> 8) & 0xFF);
|
||||
|
|
@ -420,8 +418,7 @@ static int inno_hdmi_setup(struct inno_hdmi *hdmi,
|
|||
* DCLK_LCDC, so we need to init the TMDS rate to mode pixel
|
||||
* clock rate, and reconfigure the DDC clock.
|
||||
*/
|
||||
hdmi->tmds_rate = mode->clock * 1000;
|
||||
inno_hdmi_i2c_init(hdmi);
|
||||
inno_hdmi_i2c_init(hdmi, mode->clock * 1000);
|
||||
|
||||
/* Unmute video and audio output */
|
||||
hdmi_modb(hdmi, HDMI_AV_MUTE, m_AUDIO_MUTE | m_VIDEO_BLACK,
|
||||
|
|
@ -799,8 +796,7 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
|
|||
* PCLK_HDMI, so we need to init the TMDS rate to PCLK rate,
|
||||
* and reconfigure the DDC clock.
|
||||
*/
|
||||
hdmi->tmds_rate = clk_get_rate(hdmi->pclk);
|
||||
inno_hdmi_i2c_init(hdmi);
|
||||
inno_hdmi_i2c_init(hdmi, clk_get_rate(hdmi->pclk));
|
||||
|
||||
ret = inno_hdmi_register(drm, hdmi);
|
||||
if (ret)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user