ASoC: WL1273 FM radio: Fix breakage with MFD API changes

These changes are needed to keep up with the changes in the
MFD core and V4L2 parts of the wl1273 FM radio driver.

Use function pointers instead of exported functions for I2C IO.
Also move all preprocessor constants from the wl1273.h to
include/linux/mfd/wl1273-core.h.

Signed-off-by: Matti J. Aaltonen <matti.j.aaltonen@nokia.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

authored by Matti J. Aaltonen and committed by Mark Brown 228dd545 18b022eb

+13 -89
+1 -1
sound/soc/codecs/Kconfig
··· 44 select SND_SOC_TWL6040 if TWL4030_CORE 45 select SND_SOC_UDA134X 46 select SND_SOC_UDA1380 if I2C 47 - select SND_SOC_WL1273 if WL1273_CORE 48 select SND_SOC_WM2000 if I2C 49 select SND_SOC_WM8350 if MFD_WM8350 50 select SND_SOC_WM8400 if MFD_WM8400
··· 44 select SND_SOC_TWL6040 if TWL4030_CORE 45 select SND_SOC_UDA134X 46 select SND_SOC_UDA1380 if I2C 47 + select SND_SOC_WL1273 if RADIO_WL1273 48 select SND_SOC_WM2000 if I2C 49 select SND_SOC_WM8350 if MFD_WM8350 50 select SND_SOC_WM8400 if MFD_WM8400
+12 -17
sound/soc/codecs/wl1273.c
··· 42 static int snd_wl1273_fm_set_i2s_mode(struct wl1273_core *core, 43 int rate, int width) 44 { 45 - struct device *dev = &core->i2c_dev->dev; 46 int r = 0; 47 u16 mode; 48 ··· 123 dev_dbg(dev, "mode: 0x%04x\n", mode); 124 125 if (core->i2s_mode != mode) { 126 - r = wl1273_fm_write_cmd(core, WL1273_I2S_MODE_CONFIG_SET, mode); 127 if (r) 128 goto out; 129 130 core->i2s_mode = mode; 131 - r = wl1273_fm_write_cmd(core, WL1273_AUDIO_ENABLE, 132 - WL1273_AUDIO_ENABLE_I2S); 133 if (r) 134 goto out; 135 } ··· 142 static int snd_wl1273_fm_set_channel_number(struct wl1273_core *core, 143 int channel_number) 144 { 145 - struct i2c_client *client = core->i2c_dev; 146 - struct device *dev = &client->dev; 147 int r = 0; 148 149 dev_dbg(dev, "%s\n", __func__); ··· 153 goto out; 154 155 if (channel_number == 1 && core->mode == WL1273_MODE_RX) 156 - r = wl1273_fm_write_cmd(core, WL1273_MOST_MODE_SET, 157 - WL1273_RX_MONO); 158 else if (channel_number == 1 && core->mode == WL1273_MODE_TX) 159 - r = wl1273_fm_write_cmd(core, WL1273_MONO_SET, 160 - WL1273_TX_MONO); 161 else if (channel_number == 2 && core->mode == WL1273_MODE_RX) 162 - r = wl1273_fm_write_cmd(core, WL1273_MOST_MODE_SET, 163 - WL1273_RX_STEREO); 164 else if (channel_number == 2 && core->mode == WL1273_MODE_TX) 165 - r = wl1273_fm_write_cmd(core, WL1273_MONO_SET, 166 - WL1273_TX_STEREO); 167 else 168 r = -EINVAL; 169 out: ··· 232 if (wl1273->core->audio_mode == val) 233 return 0; 234 235 - r = wl1273_fm_set_audio(wl1273->core, val); 236 if (r < 0) 237 return r; 238 ··· 267 268 dev_dbg(codec->dev, "%s: enter.\n", __func__); 269 270 - r = wl1273_fm_set_volume(wl1273->core, 271 - ucontrol->value.integer.value[0]); 272 if (r) 273 return r; 274
··· 42 static int snd_wl1273_fm_set_i2s_mode(struct wl1273_core *core, 43 int rate, int width) 44 { 45 + struct device *dev = &core->client->dev; 46 int r = 0; 47 u16 mode; 48 ··· 123 dev_dbg(dev, "mode: 0x%04x\n", mode); 124 125 if (core->i2s_mode != mode) { 126 + r = core->write(core, WL1273_I2S_MODE_CONFIG_SET, mode); 127 if (r) 128 goto out; 129 130 core->i2s_mode = mode; 131 + r = core->write(core, WL1273_AUDIO_ENABLE, 132 + WL1273_AUDIO_ENABLE_I2S); 133 if (r) 134 goto out; 135 } ··· 142 static int snd_wl1273_fm_set_channel_number(struct wl1273_core *core, 143 int channel_number) 144 { 145 + struct device *dev = &core->client->dev; 146 int r = 0; 147 148 dev_dbg(dev, "%s\n", __func__); ··· 154 goto out; 155 156 if (channel_number == 1 && core->mode == WL1273_MODE_RX) 157 + r = core->write(core, WL1273_MOST_MODE_SET, WL1273_RX_MONO); 158 else if (channel_number == 1 && core->mode == WL1273_MODE_TX) 159 + r = core->write(core, WL1273_MONO_SET, WL1273_TX_MONO); 160 else if (channel_number == 2 && core->mode == WL1273_MODE_RX) 161 + r = core->write(core, WL1273_MOST_MODE_SET, WL1273_RX_STEREO); 162 else if (channel_number == 2 && core->mode == WL1273_MODE_TX) 163 + r = core->write(core, WL1273_MONO_SET, WL1273_TX_STEREO); 164 else 165 r = -EINVAL; 166 out: ··· 237 if (wl1273->core->audio_mode == val) 238 return 0; 239 240 + r = wl1273->core->set_audio(wl1273->core, val); 241 if (r < 0) 242 return r; 243 ··· 272 273 dev_dbg(codec->dev, "%s: enter.\n", __func__); 274 275 + r = wl1273->core->set_volume(wl1273->core, 276 + ucontrol->value.integer.value[0]); 277 if (r) 278 return r; 279
-71
sound/soc/codecs/wl1273.h
··· 25 #ifndef __WL1273_CODEC_H__ 26 #define __WL1273_CODEC_H__ 27 28 - /* I2S protocol, left channel first, data width 16 bits */ 29 - #define WL1273_PCM_DEF_MODE 0x00 30 - 31 - /* Rx */ 32 - #define WL1273_AUDIO_ENABLE_I2S (1 << 0) 33 - #define WL1273_AUDIO_ENABLE_ANALOG (1 << 1) 34 - 35 - /* Tx */ 36 - #define WL1273_AUDIO_IO_SET_ANALOG 0 37 - #define WL1273_AUDIO_IO_SET_I2S 1 38 - 39 - #define WL1273_POWER_SET_OFF 0 40 - #define WL1273_POWER_SET_FM (1 << 0) 41 - #define WL1273_POWER_SET_RDS (1 << 1) 42 - #define WL1273_POWER_SET_RETENTION (1 << 4) 43 - 44 - #define WL1273_PUPD_SET_OFF 0x00 45 - #define WL1273_PUPD_SET_ON 0x01 46 - #define WL1273_PUPD_SET_RETENTION 0x10 47 - 48 - /* I2S mode */ 49 - #define WL1273_IS2_WIDTH_32 0x0 50 - #define WL1273_IS2_WIDTH_40 0x1 51 - #define WL1273_IS2_WIDTH_22_23 0x2 52 - #define WL1273_IS2_WIDTH_23_22 0x3 53 - #define WL1273_IS2_WIDTH_48 0x4 54 - #define WL1273_IS2_WIDTH_50 0x5 55 - #define WL1273_IS2_WIDTH_60 0x6 56 - #define WL1273_IS2_WIDTH_64 0x7 57 - #define WL1273_IS2_WIDTH_80 0x8 58 - #define WL1273_IS2_WIDTH_96 0x9 59 - #define WL1273_IS2_WIDTH_128 0xa 60 - #define WL1273_IS2_WIDTH 0xf 61 - 62 - #define WL1273_IS2_FORMAT_STD (0x0 << 4) 63 - #define WL1273_IS2_FORMAT_LEFT (0x1 << 4) 64 - #define WL1273_IS2_FORMAT_RIGHT (0x2 << 4) 65 - #define WL1273_IS2_FORMAT_USER (0x3 << 4) 66 - 67 - #define WL1273_IS2_MASTER (0x0 << 6) 68 - #define WL1273_IS2_SLAVEW (0x1 << 6) 69 - 70 - #define WL1273_IS2_TRI_AFTER_SENDING (0x0 << 7) 71 - #define WL1273_IS2_TRI_ALWAYS_ACTIVE (0x1 << 7) 72 - 73 - #define WL1273_IS2_SDOWS_RR (0x0 << 8) 74 - #define WL1273_IS2_SDOWS_RF (0x1 << 8) 75 - #define WL1273_IS2_SDOWS_FR (0x2 << 8) 76 - #define WL1273_IS2_SDOWS_FF (0x3 << 8) 77 - 78 - #define WL1273_IS2_TRI_OPT (0x0 << 10) 79 - #define WL1273_IS2_TRI_ALWAYS (0x1 << 10) 80 - 81 - #define WL1273_IS2_RATE_48K (0x0 << 12) 82 - #define WL1273_IS2_RATE_44_1K (0x1 << 12) 83 - #define WL1273_IS2_RATE_32K (0x2 << 12) 84 - #define WL1273_IS2_RATE_22_05K (0x4 << 12) 85 - #define WL1273_IS2_RATE_16K (0x5 << 12) 86 - #define WL1273_IS2_RATE_12K (0x8 << 12) 87 - #define WL1273_IS2_RATE_11_025 (0x9 << 12) 88 - #define WL1273_IS2_RATE_8K (0xa << 12) 89 - #define WL1273_IS2_RATE (0xf << 12) 90 - 91 - #define WL1273_I2S_DEF_MODE (WL1273_IS2_WIDTH_32 | \ 92 - WL1273_IS2_FORMAT_STD | \ 93 - WL1273_IS2_MASTER | \ 94 - WL1273_IS2_TRI_AFTER_SENDING | \ 95 - WL1273_IS2_SDOWS_RR | \ 96 - WL1273_IS2_TRI_OPT | \ 97 - WL1273_IS2_RATE_48K) 98 - 99 int wl1273_get_format(struct snd_soc_codec *codec, unsigned int *fmt); 100 101 #endif /* End of __WL1273_CODEC_H__ */
··· 25 #ifndef __WL1273_CODEC_H__ 26 #define __WL1273_CODEC_H__ 27 28 int wl1273_get_format(struct snd_soc_codec *codec, unsigned int *fmt); 29 30 #endif /* End of __WL1273_CODEC_H__ */