diff options
| -rw-r--r-- | sound/soc/davinci/davinci-i2s.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/sound/soc/davinci/davinci-i2s.c b/sound/soc/davinci/davinci-i2s.c index ffdb9439d3d8..b1ea52fc83c7 100644 --- a/sound/soc/davinci/davinci-i2s.c +++ b/sound/soc/davinci/davinci-i2s.c | |||
| @@ -24,6 +24,26 @@ | |||
| 24 | 24 | ||
| 25 | #include "davinci-pcm.h" | 25 | #include "davinci-pcm.h" |
| 26 | 26 | ||
| 27 | |||
| 28 | /* | ||
| 29 | * NOTE: terminology here is confusing. | ||
| 30 | * | ||
| 31 | * - This driver supports the "Audio Serial Port" (ASP), | ||
| 32 | * found on dm6446, dm355, and other DaVinci chips. | ||
| 33 | * | ||
| 34 | * - But it labels it a "Multi-channel Buffered Serial Port" | ||
| 35 | * (McBSP) as on older chips like the dm642 ... which was | ||
| 36 | * backward-compatible, possibly explaining that confusion. | ||
| 37 | * | ||
| 38 | * - OMAP chips have a controller called McBSP, which is | ||
| 39 | * incompatible with the DaVinci flavor of McBSP. | ||
| 40 | * | ||
| 41 | * - Newer DaVinci chips have a controller called McASP, | ||
| 42 | * incompatible with ASP and with either McBSP. | ||
| 43 | * | ||
| 44 | * In short: this uses ASP to implement I2S, not McBSP. | ||
| 45 | * And it won't be the only DaVinci implemention of I2S. | ||
| 46 | */ | ||
| 27 | #define DAVINCI_MCBSP_DRR_REG 0x00 | 47 | #define DAVINCI_MCBSP_DRR_REG 0x00 |
| 28 | #define DAVINCI_MCBSP_DXR_REG 0x04 | 48 | #define DAVINCI_MCBSP_DXR_REG 0x04 |
| 29 | #define DAVINCI_MCBSP_SPCR_REG 0x08 | 49 | #define DAVINCI_MCBSP_SPCR_REG 0x08 |
| @@ -421,7 +441,7 @@ static int davinci_i2s_probe(struct platform_device *pdev, | |||
| 421 | { | 441 | { |
| 422 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); | 442 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); |
| 423 | struct snd_soc_card *card = socdev->card; | 443 | struct snd_soc_card *card = socdev->card; |
| 424 | struct snd_soc_dai *cpu_dai = card->dai_link[pdev->id].cpu_dai; | 444 | struct snd_soc_dai *cpu_dai = card->dai_link->cpu_dai; |
| 425 | struct davinci_mcbsp_dev *dev; | 445 | struct davinci_mcbsp_dev *dev; |
| 426 | struct resource *mem, *ioarea; | 446 | struct resource *mem, *ioarea; |
| 427 | struct evm_snd_platform_data *pdata; | 447 | struct evm_snd_platform_data *pdata; |
| @@ -448,7 +468,7 @@ static int davinci_i2s_probe(struct platform_device *pdev, | |||
| 448 | 468 | ||
| 449 | cpu_dai->private_data = dev; | 469 | cpu_dai->private_data = dev; |
| 450 | 470 | ||
| 451 | dev->clk = clk_get(&pdev->dev, "McBSPCLK"); | 471 | dev->clk = clk_get(&pdev->dev, NULL); |
| 452 | if (IS_ERR(dev->clk)) { | 472 | if (IS_ERR(dev->clk)) { |
| 453 | ret = -ENODEV; | 473 | ret = -ENODEV; |
| 454 | goto err_free_mem; | 474 | goto err_free_mem; |
| @@ -483,7 +503,7 @@ static void davinci_i2s_remove(struct platform_device *pdev, | |||
| 483 | { | 503 | { |
| 484 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); | 504 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); |
| 485 | struct snd_soc_card *card = socdev->card; | 505 | struct snd_soc_card *card = socdev->card; |
| 486 | struct snd_soc_dai *cpu_dai = card->dai_link[pdev->id].cpu_dai; | 506 | struct snd_soc_dai *cpu_dai = card->dai_link->cpu_dai; |
| 487 | struct davinci_mcbsp_dev *dev = cpu_dai->private_data; | 507 | struct davinci_mcbsp_dev *dev = cpu_dai->private_data; |
| 488 | struct resource *mem; | 508 | struct resource *mem; |
| 489 | 509 | ||
