hc
2024-05-10 61598093bbdd283a7edc367d900f223070ead8d2
kernel/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c
....@@ -34,6 +34,14 @@
3434 return audio->read(hdmi, offset);
3535 }
3636
37
+static inline void hdmi_update_bits(struct dw_hdmi_i2s_audio_data *audio,
38
+ u8 data, u8 mask, unsigned int reg)
39
+{
40
+ struct dw_hdmi *hdmi = audio->hdmi;
41
+
42
+ audio->mod(hdmi, data, mask, reg);
43
+}
44
+
3745 static int dw_hdmi_i2s_hw_params(struct device *dev, void *data,
3846 struct hdmi_codec_daifmt *fmt,
3947 struct hdmi_codec_params *hparms)
....@@ -52,7 +60,8 @@
5260 }
5361
5462 /* Reset the FIFOs before applying new params */
55
- hdmi_write(audio, HDMI_AUD_CONF0_SW_RESET, HDMI_AUD_CONF0);
63
+ hdmi_update_bits(audio, HDMI_AUD_CONF0_SW_RESET,
64
+ HDMI_AUD_CONF0_SW_RESET, HDMI_AUD_CONF0);
5665 hdmi_write(audio, (u8)~HDMI_MC_SWRSTZ_I2SSWRST_REQ, HDMI_MC_SWRSTZ);
5766
5867 inputclkfs = HDMI_AUD_INPUTCLKFS_64FS;
....@@ -132,6 +141,13 @@
132141 return 0;
133142 }
134143
144
+static int dw_hdmi_i2s_prepare(struct device *dev, void *data,
145
+ struct hdmi_codec_daifmt *fmt,
146
+ struct hdmi_codec_params *hparms)
147
+{
148
+ return dw_hdmi_i2s_hw_params(dev, data, fmt, hparms);
149
+}
150
+
135151 static int dw_hdmi_i2s_audio_startup(struct device *dev, void *data)
136152 {
137153 struct dw_hdmi_i2s_audio_data *audio = data;
....@@ -198,6 +214,7 @@
198214
199215 static struct hdmi_codec_ops dw_hdmi_i2s_ops = {
200216 .hw_params = dw_hdmi_i2s_hw_params,
217
+ .prepare = dw_hdmi_i2s_prepare,
201218 .audio_startup = dw_hdmi_i2s_audio_startup,
202219 .audio_shutdown = dw_hdmi_i2s_audio_shutdown,
203220 .get_eld = dw_hdmi_i2s_get_eld,