| .. | .. |
|---|
| 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; |
|---|
| .. | .. |
|---|
| 136 | 145 | struct hdmi_codec_daifmt *fmt, |
|---|
| 137 | 146 | struct hdmi_codec_params *hparms) |
|---|
| 138 | 147 | { |
|---|
| 139 | | - struct dw_hdmi_i2s_audio_data *audio = data; |
|---|
| 140 | | - struct dw_hdmi *hdmi = audio->hdmi; |
|---|
| 141 | | - |
|---|
| 142 | | - dw_hdmi_audio_disable(hdmi); |
|---|
| 143 | | - |
|---|
| 144 | | - hdmi_write(audio, HDMI_AUD_CONF0_SW_RESET, HDMI_AUD_CONF0); |
|---|
| 145 | | - hdmi_write(audio, (u8)~HDMI_MC_SWRSTZ_I2SSWRST_REQ, HDMI_MC_SWRSTZ); |
|---|
| 146 | | - |
|---|
| 147 | | - dw_hdmi_audio_enable(hdmi); |
|---|
| 148 | | - |
|---|
| 149 | | - return 0; |
|---|
| 148 | + return dw_hdmi_i2s_hw_params(dev, data, fmt, hparms); |
|---|
| 150 | 149 | } |
|---|
| 151 | 150 | |
|---|
| 152 | 151 | static int dw_hdmi_i2s_audio_startup(struct device *dev, void *data) |
|---|