diff options
| -rw-r--r-- | Documentation/devicetree/bindings/sound/fsl,ssi.txt | 21 | ||||
| -rw-r--r-- | sound/soc/codecs/alc5632.c | 10 | ||||
| -rw-r--r-- | sound/soc/codecs/cs42l52.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/cs42l52.h | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/cs42xx8.c | 11 | ||||
| -rw-r--r-- | sound/soc/codecs/da732x.c | 3 | ||||
| -rw-r--r-- | sound/soc/codecs/max98090.c | 7 | ||||
| -rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 6 | ||||
| -rw-r--r-- | sound/soc/fsl/fsl_sai.c | 93 | ||||
| -rw-r--r-- | sound/soc/fsl/fsl_sai.h | 15 |
10 files changed, 140 insertions, 30 deletions
diff --git a/Documentation/devicetree/bindings/sound/fsl,ssi.txt b/Documentation/devicetree/bindings/sound/fsl,ssi.txt index b93e9a91e30e..3aa4a8f528f4 100644 --- a/Documentation/devicetree/bindings/sound/fsl,ssi.txt +++ b/Documentation/devicetree/bindings/sound/fsl,ssi.txt | |||
| @@ -20,15 +20,6 @@ Required properties: | |||
| 20 | have. | 20 | have. |
| 21 | - interrupt-parent: The phandle for the interrupt controller that | 21 | - interrupt-parent: The phandle for the interrupt controller that |
| 22 | services interrupts for this device. | 22 | services interrupts for this device. |
| 23 | - fsl,mode: The operating mode for the SSI interface. | ||
| 24 | "i2s-slave" - I2S mode, SSI is clock slave | ||
| 25 | "i2s-master" - I2S mode, SSI is clock master | ||
| 26 | "lj-slave" - left-justified mode, SSI is clock slave | ||
| 27 | "lj-master" - l.j. mode, SSI is clock master | ||
| 28 | "rj-slave" - right-justified mode, SSI is clock slave | ||
| 29 | "rj-master" - r.j., SSI is clock master | ||
| 30 | "ac97-slave" - AC97 mode, SSI is clock slave | ||
| 31 | "ac97-master" - AC97 mode, SSI is clock master | ||
| 32 | - fsl,playback-dma: Phandle to a node for the DMA channel to use for | 23 | - fsl,playback-dma: Phandle to a node for the DMA channel to use for |
| 33 | playback of audio. This is typically dictated by SOC | 24 | playback of audio. This is typically dictated by SOC |
| 34 | design. See the notes below. | 25 | design. See the notes below. |
| @@ -47,6 +38,9 @@ Required properties: | |||
| 47 | be connected together, and SRFS and STFS be connected | 38 | be connected together, and SRFS and STFS be connected |
| 48 | together. This would still allow different sample sizes, | 39 | together. This would still allow different sample sizes, |
| 49 | but not different sample rates. | 40 | but not different sample rates. |
| 41 | - clocks: "ipg" - Required clock for the SSI unit | ||
| 42 | "baud" - Required clock for SSI master mode. Otherwise this | ||
| 43 | clock is not used | ||
| 50 | 44 | ||
| 51 | Required are also ac97 link bindings if ac97 is used. See | 45 | Required are also ac97 link bindings if ac97 is used. See |
| 52 | Documentation/devicetree/bindings/sound/soc-ac97link.txt for the necessary | 46 | Documentation/devicetree/bindings/sound/soc-ac97link.txt for the necessary |
| @@ -64,6 +58,15 @@ Optional properties: | |||
| 64 | Documentation/devicetree/bindings/dma/dma.txt. | 58 | Documentation/devicetree/bindings/dma/dma.txt. |
| 65 | - dma-names: Two dmas have to be defined, "tx" and "rx", if fsl,imx-fiq | 59 | - dma-names: Two dmas have to be defined, "tx" and "rx", if fsl,imx-fiq |
| 66 | is not defined. | 60 | is not defined. |
| 61 | - fsl,mode: The operating mode for the SSI interface. | ||
| 62 | "i2s-slave" - I2S mode, SSI is clock slave | ||
| 63 | "i2s-master" - I2S mode, SSI is clock master | ||
| 64 | "lj-slave" - left-justified mode, SSI is clock slave | ||
| 65 | "lj-master" - l.j. mode, SSI is clock master | ||
| 66 | "rj-slave" - right-justified mode, SSI is clock slave | ||
| 67 | "rj-master" - r.j., SSI is clock master | ||
| 68 | "ac97-slave" - AC97 mode, SSI is clock slave | ||
| 69 | "ac97-master" - AC97 mode, SSI is clock master | ||
| 67 | 70 | ||
| 68 | Child 'codec' node required properties: | 71 | Child 'codec' node required properties: |
| 69 | - compatible: Compatible list, contains the name of the codec | 72 | - compatible: Compatible list, contains the name of the codec |
diff --git a/sound/soc/codecs/alc5632.c b/sound/soc/codecs/alc5632.c index ec071a6306ef..85942ca36cbf 100644 --- a/sound/soc/codecs/alc5632.c +++ b/sound/soc/codecs/alc5632.c | |||
| @@ -1061,7 +1061,6 @@ static int alc5632_resume(struct snd_soc_codec *codec) | |||
| 1061 | static int alc5632_probe(struct snd_soc_codec *codec) | 1061 | static int alc5632_probe(struct snd_soc_codec *codec) |
| 1062 | { | 1062 | { |
| 1063 | struct alc5632_priv *alc5632 = snd_soc_codec_get_drvdata(codec); | 1063 | struct alc5632_priv *alc5632 = snd_soc_codec_get_drvdata(codec); |
| 1064 | int ret; | ||
| 1065 | 1064 | ||
| 1066 | /* power on device */ | 1065 | /* power on device */ |
| 1067 | alc5632_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 1066 | alc5632_set_bias_level(codec, SND_SOC_BIAS_STANDBY); |
| @@ -1075,7 +1074,7 @@ static int alc5632_probe(struct snd_soc_codec *codec) | |||
| 1075 | return -EINVAL; | 1074 | return -EINVAL; |
| 1076 | } | 1075 | } |
| 1077 | 1076 | ||
| 1078 | return ret; | 1077 | return 0; |
| 1079 | } | 1078 | } |
| 1080 | 1079 | ||
| 1081 | /* power down chip */ | 1080 | /* power down chip */ |
| @@ -1191,11 +1190,18 @@ static const struct i2c_device_id alc5632_i2c_table[] = { | |||
| 1191 | }; | 1190 | }; |
| 1192 | MODULE_DEVICE_TABLE(i2c, alc5632_i2c_table); | 1191 | MODULE_DEVICE_TABLE(i2c, alc5632_i2c_table); |
| 1193 | 1192 | ||
| 1193 | static const struct of_device_id alc5632_of_match[] = { | ||
| 1194 | { .compatible = "realtek,alc5632", }, | ||
| 1195 | { } | ||
| 1196 | }; | ||
| 1197 | MODULE_DEVICE_TABLE(of, alc5632_of_match); | ||
| 1198 | |||
| 1194 | /* i2c codec control layer */ | 1199 | /* i2c codec control layer */ |
| 1195 | static struct i2c_driver alc5632_i2c_driver = { | 1200 | static struct i2c_driver alc5632_i2c_driver = { |
| 1196 | .driver = { | 1201 | .driver = { |
| 1197 | .name = "alc5632", | 1202 | .name = "alc5632", |
| 1198 | .owner = THIS_MODULE, | 1203 | .owner = THIS_MODULE, |
| 1204 | .of_match_table = of_match_ptr(alc5632_of_match), | ||
| 1199 | }, | 1205 | }, |
| 1200 | .probe = alc5632_i2c_probe, | 1206 | .probe = alc5632_i2c_probe, |
| 1201 | .remove = alc5632_i2c_remove, | 1207 | .remove = alc5632_i2c_remove, |
diff --git a/sound/soc/codecs/cs42l52.c b/sound/soc/codecs/cs42l52.c index f0ca6bee6771..460d35547a68 100644 --- a/sound/soc/codecs/cs42l52.c +++ b/sound/soc/codecs/cs42l52.c | |||
| @@ -1259,7 +1259,7 @@ static int cs42l52_i2c_probe(struct i2c_client *i2c_client, | |||
| 1259 | } | 1259 | } |
| 1260 | 1260 | ||
| 1261 | dev_info(&i2c_client->dev, "Cirrus Logic CS42L52, Revision: %02X\n", | 1261 | dev_info(&i2c_client->dev, "Cirrus Logic CS42L52, Revision: %02X\n", |
| 1262 | reg & 0xFF); | 1262 | reg & CS42L52_CHIP_REV_MASK); |
| 1263 | 1263 | ||
| 1264 | /* Set Platform Data */ | 1264 | /* Set Platform Data */ |
| 1265 | if (cs42l52->pdata.mica_diff_cfg) | 1265 | if (cs42l52->pdata.mica_diff_cfg) |
diff --git a/sound/soc/codecs/cs42l52.h b/sound/soc/codecs/cs42l52.h index 6fb8f00f4191..ac445993e6bf 100644 --- a/sound/soc/codecs/cs42l52.h +++ b/sound/soc/codecs/cs42l52.h | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | #define CS42L52_CHIP_REV_A0 0x00 | 37 | #define CS42L52_CHIP_REV_A0 0x00 |
| 38 | #define CS42L52_CHIP_REV_A1 0x01 | 38 | #define CS42L52_CHIP_REV_A1 0x01 |
| 39 | #define CS42L52_CHIP_REV_B0 0x02 | 39 | #define CS42L52_CHIP_REV_B0 0x02 |
| 40 | #define CS42L52_CHIP_REV_MASK 0x03 | 40 | #define CS42L52_CHIP_REV_MASK 0x07 |
| 41 | 41 | ||
| 42 | #define CS42L52_PWRCTL1 0x02 | 42 | #define CS42L52_PWRCTL1 0x02 |
| 43 | #define CS42L52_PWRCTL1_PDN_ALL 0x9F | 43 | #define CS42L52_PWRCTL1_PDN_ALL 0x9F |
diff --git a/sound/soc/codecs/cs42xx8.c b/sound/soc/codecs/cs42xx8.c index 082299a4e2fa..85020322eee7 100644 --- a/sound/soc/codecs/cs42xx8.c +++ b/sound/soc/codecs/cs42xx8.c | |||
| @@ -495,17 +495,16 @@ int cs42xx8_probe(struct device *dev, struct regmap *regmap) | |||
| 495 | regcache_cache_bypass(cs42xx8->regmap, true); | 495 | regcache_cache_bypass(cs42xx8->regmap, true); |
| 496 | 496 | ||
| 497 | /* Validate the chip ID */ | 497 | /* Validate the chip ID */ |
| 498 | regmap_read(cs42xx8->regmap, CS42XX8_CHIPID, &val); | 498 | ret = regmap_read(cs42xx8->regmap, CS42XX8_CHIPID, &val); |
| 499 | if (val < 0) { | 499 | if (ret < 0) { |
| 500 | dev_err(dev, "failed to get device ID: %x", val); | 500 | dev_err(dev, "failed to get device ID, ret = %d", ret); |
| 501 | ret = -EINVAL; | ||
| 502 | goto err_enable; | 501 | goto err_enable; |
| 503 | } | 502 | } |
| 504 | 503 | ||
| 505 | /* The top four bits of the chip ID should be 0000 */ | 504 | /* The top four bits of the chip ID should be 0000 */ |
| 506 | if ((val & CS42XX8_CHIPID_CHIP_ID_MASK) != 0x00) { | 505 | if (((val & CS42XX8_CHIPID_CHIP_ID_MASK) >> 4) != 0x00) { |
| 507 | dev_err(dev, "unmatched chip ID: %d\n", | 506 | dev_err(dev, "unmatched chip ID: %d\n", |
| 508 | val & CS42XX8_CHIPID_CHIP_ID_MASK); | 507 | (val & CS42XX8_CHIPID_CHIP_ID_MASK) >> 4); |
| 509 | ret = -EINVAL; | 508 | ret = -EINVAL; |
| 510 | goto err_enable; | 509 | goto err_enable; |
| 511 | } | 510 | } |
diff --git a/sound/soc/codecs/da732x.c b/sound/soc/codecs/da732x.c index 7d168ec71cd7..48f3fef68484 100644 --- a/sound/soc/codecs/da732x.c +++ b/sound/soc/codecs/da732x.c | |||
| @@ -1571,7 +1571,8 @@ static int da732x_i2c_probe(struct i2c_client *i2c, | |||
| 1571 | } | 1571 | } |
| 1572 | 1572 | ||
| 1573 | dev_info(&i2c->dev, "Revision: %d.%d\n", | 1573 | dev_info(&i2c->dev, "Revision: %d.%d\n", |
| 1574 | (reg & DA732X_ID_MAJOR_MASK), (reg & DA732X_ID_MINOR_MASK)); | 1574 | (reg & DA732X_ID_MAJOR_MASK) >> 4, |
| 1575 | (reg & DA732X_ID_MINOR_MASK)); | ||
| 1575 | 1576 | ||
| 1576 | ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_da732x, | 1577 | ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_da732x, |
| 1577 | da732x_dai, ARRAY_SIZE(da732x_dai)); | 1578 | da732x_dai, ARRAY_SIZE(da732x_dai)); |
diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c index 98c6e104357c..f7b0b37aa858 100644 --- a/sound/soc/codecs/max98090.c +++ b/sound/soc/codecs/max98090.c | |||
| @@ -2399,11 +2399,18 @@ static const struct i2c_device_id max98090_i2c_id[] = { | |||
| 2399 | }; | 2399 | }; |
| 2400 | MODU | ||
