|
@@ -1640,6 +1640,36 @@ int snd_soc_codec_writable_register(struct snd_soc_codec *codec,
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(snd_soc_codec_writable_register);
|
|
|
|
|
|
+int snd_soc_platform_read(struct snd_soc_platform *platform,
|
|
|
+ unsigned int reg)
|
|
|
+{
|
|
|
+ unsigned int ret;
|
|
|
+
|
|
|
+ if (!platform->driver->read) {
|
|
|
+ dev_err(platform->dev, "platform has no read back\n");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = platform->driver->read(platform, reg);
|
|
|
+ dev_dbg(platform->dev, "read %x => %x\n", reg, ret);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(snd_soc_platform_read);
|
|
|
+
|
|
|
+int snd_soc_platform_write(struct snd_soc_platform *platform,
|
|
|
+ unsigned int reg, unsigned int val)
|
|
|
+{
|
|
|
+ if (!platform->driver->write) {
|
|
|
+ dev_err(platform->dev, "platform has no write back\n");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ dev_dbg(platform->dev, "write %x = %x\n", reg, val);
|
|
|
+ return platform->driver->write(platform, reg, val);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(snd_soc_platform_write);
|
|
|
+
|
|
|
/**
|
|
|
* snd_soc_new_ac97_codec - initailise AC97 device
|
|
|
* @codec: audio codec
|