.. | .. |
---|
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) |
---|