| .. | .. |
|---|
| 34 | 34 | return audio->read(hdmi, offset); |
|---|
| 35 | 35 | } |
|---|
| 36 | 36 | |
|---|
| 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 | + |
|---|
| 37 | 45 | static int dw_hdmi_i2s_hw_params(struct device *dev, void *data, |
|---|
| 38 | 46 | struct hdmi_codec_daifmt *fmt, |
|---|
| 39 | 47 | struct hdmi_codec_params *hparms) |
|---|
| .. | .. |
|---|
| 52 | 60 | } |
|---|
| 53 | 61 | |
|---|
| 54 | 62 | /* 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); |
|---|
| 56 | 65 | hdmi_write(audio, (u8)~HDMI_MC_SWRSTZ_I2SSWRST_REQ, HDMI_MC_SWRSTZ); |
|---|
| 57 | 66 | |
|---|
| 58 | 67 | inputclkfs = HDMI_AUD_INPUTCLKFS_64FS; |
|---|
| .. | .. |
|---|
| 132 | 141 | return 0; |
|---|
| 133 | 142 | } |
|---|
| 134 | 143 | |
|---|
| 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 | + |
|---|
| 135 | 151 | static int dw_hdmi_i2s_audio_startup(struct device *dev, void *data) |
|---|
| 136 | 152 | { |
|---|
| 137 | 153 | struct dw_hdmi_i2s_audio_data *audio = data; |
|---|
| .. | .. |
|---|
| 198 | 214 | |
|---|
| 199 | 215 | static struct hdmi_codec_ops dw_hdmi_i2s_ops = { |
|---|
| 200 | 216 | .hw_params = dw_hdmi_i2s_hw_params, |
|---|
| 217 | + .prepare = dw_hdmi_i2s_prepare, |
|---|
| 201 | 218 | .audio_startup = dw_hdmi_i2s_audio_startup, |
|---|
| 202 | 219 | .audio_shutdown = dw_hdmi_i2s_audio_shutdown, |
|---|
| 203 | 220 | .get_eld = dw_hdmi_i2s_get_eld, |
|---|