diff options
Diffstat (limited to 'sound/pci/rme32.c')
-rw-r--r-- | sound/pci/rme32.c | 65 |
1 files changed, 27 insertions, 38 deletions
diff --git a/sound/pci/rme32.c b/sound/pci/rme32.c index 456be39e8e4a..cd313af6ebcf 100644 --- a/sound/pci/rme32.c +++ b/sound/pci/rme32.c | |||
@@ -192,20 +192,6 @@ MODULE_SUPPORTED_DEVICE("{{RME,Digi32}," "{RME,Digi32/8}," "{RME,Digi32 PRO}}"); | |||
192 | #define RME32_PRO_REVISION_WITH_8414 150 | 192 | #define RME32_PRO_REVISION_WITH_8414 150 |
193 | 193 | ||
194 | 194 | ||
195 | /* PCI vendor/device ID's */ | ||
196 | #ifndef PCI_VENDOR_ID_XILINX_RME | ||
197 | # define PCI_VENDOR_ID_XILINX_RME 0xea60 | ||
198 | #endif | ||
199 | #ifndef PCI_DEVICE_ID_DIGI32 | ||
200 | # define PCI_DEVICE_ID_DIGI32 0x9896 | ||
201 | #endif | ||
202 | #ifndef PCI_DEVICE_ID_DIGI32_PRO | ||
203 | # define PCI_DEVICE_ID_DIGI32_PRO 0x9897 | ||
204 | #endif | ||
205 | #ifndef PCI_DEVICE_ID_DIGI32_8 | ||
206 | # define PCI_DEVICE_ID_DIGI32_8 0x9898 | ||
207 | #endif | ||
208 | |||
209 | typedef struct snd_rme32 { | 195 | typedef struct snd_rme32 { |
210 | spinlock_t lock; | 196 | spinlock_t lock; |
211 | int irq; | 197 | int irq; |
@@ -242,11 +228,11 @@ typedef struct snd_rme32 { | |||
242 | } rme32_t; | 228 | } rme32_t; |
243 | 229 | ||
244 | static struct pci_device_id snd_rme32_ids[] = { | 230 | static struct pci_device_id snd_rme32_ids[] = { |
245 | {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_DIGI32, | 231 | {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_RME_DIGI32, |
246 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,}, | 232 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,}, |
247 | {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_DIGI32_8, | 233 | {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_RME_DIGI32_8, |
248 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,}, | 234 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,}, |
249 | {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_DIGI32_PRO, | 235 | {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_RME_DIGI32_PRO, |
250 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,}, | 236 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,}, |
251 | {0,} | 237 | {0,} |
252 | }; | 238 | }; |
@@ -254,7 +240,7 @@ static struct pci_device_id snd_rme32_ids[] = { | |||
254 | MODULE_DEVICE_TABLE(pci, snd_rme32_ids); | 240 | MODULE_DEVICE_TABLE(pci, snd_rme32_ids); |
255 | 241 | ||
256 | #define RME32_ISWORKING(rme32) ((rme32)->wcreg & RME32_WCR_START) | 242 | #define RME32_ISWORKING(rme32) ((rme32)->wcreg & RME32_WCR_START) |
257 | #define RME32_PRO_WITH_8414(rme32) ((rme32)->pci->device == PCI_DEVICE_ID_DIGI32_PRO && (rme32)->rev == RME32_PRO_REVISION_WITH_8414) | 243 | #define RME32_PRO_WITH_8414(rme32) ((rme32)->pci->device == PCI_DEVICE_ID_RME_DIGI32_PRO && (rme32)->rev == RME32_PRO_REVISION_WITH_8414) |
258 | 244 | ||
259 | static int snd_rme32_playback_prepare(snd_pcm_substream_t * substream); | 245 | static int snd_rme32_playback_prepare(snd_pcm_substream_t * substream); |
260 | 246 | ||
@@ -541,21 +527,21 @@ static int snd_rme32_playback_setrate(rme32_t * rme32, int rate) | |||
541 | RME32_WCR_FREQ_1; | 527 | RME32_WCR_FREQ_1; |
542 | break; | 528 | break; |
543 | case 64000: | 529 | case 64000: |
544 | if (rme32->pci->device != PCI_DEVICE_ID_DIGI32_PRO) | 530 | if (rme32->pci->device != PCI_DEVICE_ID_RME_DIGI32_PRO) |
545 | return -EINVAL; | 531 | return -EINVAL; |
546 | rme32->wcreg |= RME32_WCR_DS_BM; | 532 | rme32->wcreg |= RME32_WCR_DS_BM; |
547 | rme32->wcreg = (rme32->wcreg | RME32_WCR_FREQ_0) & | 533 | rme32->wcreg = (rme32->wcreg | RME32_WCR_FREQ_0) & |
548 | ~RME32_WCR_FREQ_1; | 534 | ~RME32_WCR_FREQ_1; |
549 | break; | 535 | break; |
550 | case 88200: | 536 | case 88200: |
551 | if (rme32->pci->device != PCI_DEVICE_ID_DIGI32_PRO) | 537 | if (rme32->pci->device != PCI_DEVICE_ID_RME_DIGI32_PRO) |
552 | return -EINVAL; | 538 | return -EINVAL; |
553 | rme32->wcreg |= RME32_WCR_DS_BM; | 539 | rme32->wcreg |= RME32_WCR_DS_BM; |
554 | rme32->wcreg = (rme32->wcreg | RME32_WCR_FREQ_1) & | 540 | rme32->wcreg = (rme32->wcreg | RME32_WCR_FREQ_1) & |
555 | ~RME32_WCR_FREQ_0; | 541 | ~RME32_WCR_FREQ_0; |
556 | break; | 542 | break; |
557 | case 96000: | 543 | case 96000: |
558 | if (rme32->pci->device != PCI_DEVICE_ID_DIGI32_PRO) | 544 | if (rme32->pci->device != PCI_DEVICE_ID_RME_DIGI32_PRO) |
559 | return -EINVAL; | 545 | return -EINVAL; |
560 | rme32->wcreg |= RME32_WCR_DS_BM; | 546 | rme32->wcreg |= RME32_WCR_DS_BM; |
561 | rme32->wcreg = (rme32->wcreg | RME32_WCR_FREQ_0) | | 547 | rme32->wcreg = (rme32->wcreg | RME32_WCR_FREQ_0) | |
@@ -692,7 +678,8 @@ snd_rme32_playback_hw_params(snd_pcm_substream_t * substream, | |||
692 | if (err < 0) | 678 | if (err < 0) |
693 | return err; | 679 | return err; |
694 | } else { | 680 | } else { |
695 | runtime->dma_area = (void *)(rme32->iobase + RME32_IO_DATA_BUFFER); | 681 | runtime->dma_area = (void __force *)(rme32->iobase + |
682 | RME32_IO_DATA_BUFFER); | ||
696 | runtime->dma_addr = rme32->port + RME32_IO_DATA_BUFFER; | 683 | runtime->dma_addr = rme32->port + RME32_IO_DATA_BUFFER; |
697 | runtime->dma_bytes = RME32_BUFFER_SIZE; | 684 | runtime->dma_bytes = RME32_BUFFER_SIZE; |
698 | } | 685 | } |
@@ -746,7 +733,8 @@ snd_rme32_capture_hw_params(snd_pcm_substream_t * substream, | |||
746 | if (err < 0) | 733 | if (err < 0) |
747 | return err; | 734 | return err; |
748 | } else { | 735 | } else { |
749 | runtime->dma_area = (void *)rme32->iobase + RME32_IO_DATA_BUFFER; | 736 | runtime->dma_area = (void __force *)rme32->iobase + |
737 | RME32_IO_DATA_BUFFER; | ||
750 | runtime->dma_addr = rme32->port + RME32_IO_DATA_BUFFER; | 738 | runtime->dma_addr = rme32->port + RME32_IO_DATA_BUFFER; |
751 | runtime->dma_bytes = RME32_BUFFER_SIZE; | 739 | runtime->dma_bytes = RME32_BUFFER_SIZE; |
752 | } | 740 | } |
@@ -893,7 +881,7 @@ static int snd_rme32_playback_spdif_open(snd_pcm_substream_t * substream) | |||
893 | runtime->hw = snd_rme32_spdif_fd_info; | 881 | runtime->hw = snd_rme32_spdif_fd_info; |
894 | else | 882 | else |
895 | runtime->hw = snd_rme32_spdif_info; | 883 | runtime->hw = snd_rme32_spdif_info; |
896 | if (rme32->pci->device == PCI_DEVICE_ID_DIGI32_PRO) { | 884 | if (rme32->pci->device == PCI_DEVICE_ID_RME_DIGI32_PRO) { |
897 | runtime->hw.rates |= SNDRV_PCM_RATE_64000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000; | 885 | runtime->hw.rates |= SNDRV_PCM_RATE_64000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000; |
898 | runtime->hw.rate_max = 96000; | 886 | runtime->hw.rate_max = 96000; |
899 | } | 887 | } |
@@ -1420,8 +1408,8 @@ static int __devinit snd_rme32_create(rme32_t * rme32) | |||
1420 | } | 1408 | } |
1421 | 1409 | ||
1422 | /* set up ALSA pcm device for ADAT */ | 1410 | /* set up ALSA pcm device for ADAT */ |
1423 | if ((pci->device == PCI_DEVICE_ID_DIGI32) || | 1411 | if ((pci->device == PCI_DEVICE_ID_RME_DIGI32) || |
1424 | (pci->device == PCI_DEVICE_ID_DIGI32_PRO)) { | 1412 | (pci->device == PCI_DEVICE_ID_RME_DIGI32_PRO)) { |
1425 | /* ADAT is not available on DIGI32 and DIGI32 Pro */ | 1413 | /* ADAT is not available on DIGI32 and DIGI32 Pro */ |
1426 | rme32->adat_pcm = NULL; | 1414 | rme32->adat_pcm = NULL; |
1427 | } | 1415 | } |
@@ -1651,11 +1639,11 @@ snd_rme32_info_inputtype_control(snd_kcontrol_t * kcontrol, | |||
1651 | uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; | 1639 | uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; |
1652 | uinfo->count = 1; | 1640 | uinfo->count = 1; |
1653 | switch (rme32->pci->device) { | 1641 | switch (rme32->pci->device) { |
1654 | case PCI_DEVICE_ID_DIGI32: | 1642 | case PCI_DEVICE_ID_RME_DIGI32: |
1655 | case PCI_DEVICE_ID_DIGI32_8: | 1643 | case PCI_DEVICE_ID_RME_DIGI32_8: |
1656 | uinfo->value.enumerated.items = 3; | 1644 | uinfo->value.enumerated.items = 3; |
1657 | break; | 1645 | break; |
1658 | case PCI_DEVICE_ID_DIGI32_PRO: | 1646 | case PCI_DEVICE_ID_RME_DIGI32_PRO: |
1659 | uinfo->value.enumerated.items = 4; | 1647 | uinfo->value.enumerated.items = 4; |
1660 | break; | 1648 | break; |
1661 | default: | 1649 | default: |
@@ -1682,11 +1670,11 @@ snd_rme32_get_inputtype_control(snd_kcontrol_t * kcontrol, | |||
1682 | ucontrol->value.enumerated.item[0] = snd_rme32_getinputtype(rme32); | 1670 | ucontrol->value.enumerated.item[0] = snd_rme32_getinputtype(rme32); |
1683 | 1671 | ||
1684 | switch (rme32->pci->device) { | 1672 | switch (rme32->pci->device) { |
1685 | case PCI_DEVICE_ID_DIGI32: | 1673 | case PCI_DEVICE_ID_RME_DIGI32: |
1686 | case PCI_DEVICE_ID_DIGI32_8: | 1674 | case PCI_DEVICE_ID_RME_DIGI32_8: |
1687 | items = 3; | 1675 | items = 3; |
1688 | break; | 1676 | break; |
1689 | case PCI_DEVICE_ID_DIGI32_PRO: | 1677 | case PCI_DEVICE_ID_RME_DIGI32_PRO: |
1690 | items = 4; | 1678 | items = 4; |
1691 | break; | 1679 | break; |
1692 | default: | 1680 | default: |
@@ -1709,11 +1697,11 @@ snd_rme32_put_inputtype_control(snd_kcontrol_t * kcontrol, | |||
1709 | int change, items = 3; | 1697 | int change, items = 3; |
1710 | 1698 | ||
1711 | switch (rme32->pci->device) { | 1699 | switch (rme32->pci->device) { |
1712 | case PCI_DEVICE_ID_DIGI32: | 1700 | case PCI_DEVICE_ID_RME_DIGI32: |
1713 | case PCI_DEVICE_ID_DIGI32_8: | 1701 | case PCI_DEVICE_ID_RME_DIGI32_8: |
1714 | items = 3; | 1702 | items = 3; |
1715 | break; | 1703 | break; |
1716 | case PCI_DEVICE_ID_DIGI32_PRO: | 1704 | case PCI_DEVICE_ID_RME_DIGI32_PRO: |
1717 | items = 4; | 1705 | items = 4; |
1718 | break; | 1706 | break; |
1719 | default: | 1707 | default: |
@@ -1994,13 +1982,13 @@ snd_rme32_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) | |||
1994 | 1982 | ||
1995 | strcpy(card->driver, "Digi32"); | 1983 | strcpy(card->driver, "Digi32"); |
1996 | switch (rme32->pci->device) { | 1984 | switch (rme32->pci->device) { |
1997 | case PCI_DEVICE_ID_DIGI32: | 1985 | case PCI_DEVICE_ID_RME_DIGI32: |
1998 | strcpy(card->shortname, "RME Digi32"); | 1986 | strcpy(card->shortname, "RME Digi32"); |
1999 | break; | 1987 | break; |
2000 | case PCI_DEVICE_ID_DIGI32_8: | 1988 | case PCI_DEVICE_ID_RME_DIGI32_8: |
2001 | strcpy(card->shortname, "RME Digi32/8"); | 1989 | strcpy(card->shortname, "RME Digi32/8"); |
2002 | break; | 1990 | break; |
2003 | case PCI_DEVICE_ID_DIGI32_PRO: | 1991 | case PCI_DEVICE_ID_RME_DIGI32_PRO: |
2004 | strcpy(card->shortname, "RME Digi32 PRO"); | 1992 | strcpy(card->shortname, "RME Digi32 PRO"); |
2005 | break; | 1993 | break; |
2006 | } | 1994 | } |
@@ -2024,6 +2012,7 @@ static void __devexit snd_rme32_remove(struct pci_dev *pci) | |||
2024 | 2012 | ||
2025 | static struct pci_driver driver = { | 2013 | static struct pci_driver driver = { |
2026 | .name = "RME Digi32", | 2014 | .name = "RME Digi32", |
2015 | .owner = THIS_MODULE, | ||
2027 | .id_table = snd_rme32_ids, | 2016 | .id_table = snd_rme32_ids, |
2028 | .probe = snd_rme32_probe, | 2017 | .probe = snd_rme32_probe, |
2029 | .remove = __devexit_p(snd_rme32_remove), | 2018 | .remove = __devexit_p(snd_rme32_remove), |