diff options
Diffstat (limited to 'sound/pci/rme9652/hdspm.c')
-rw-r--r-- | sound/pci/rme9652/hdspm.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c index 949691a876d3..3f08afc0f0d3 100644 --- a/sound/pci/rme9652/hdspm.c +++ b/sound/pci/rme9652/hdspm.c | |||
@@ -521,6 +521,7 @@ MODULE_SUPPORTED_DEVICE("{{RME HDSPM-MADI}}"); | |||
521 | #define HDSPM_DMA_AREA_KILOBYTES (HDSPM_DMA_AREA_BYTES/1024) | 521 | #define HDSPM_DMA_AREA_KILOBYTES (HDSPM_DMA_AREA_BYTES/1024) |
522 | 522 | ||
523 | /* revisions >= 230 indicate AES32 card */ | 523 | /* revisions >= 230 indicate AES32 card */ |
524 | #define HDSPM_MADI_OLD_REV 207 | ||
524 | #define HDSPM_MADI_REV 210 | 525 | #define HDSPM_MADI_REV 210 |
525 | #define HDSPM_RAYDAT_REV 211 | 526 | #define HDSPM_RAYDAT_REV 211 |
526 | #define HDSPM_AIO_REV 212 | 527 | #define HDSPM_AIO_REV 212 |
@@ -1143,7 +1144,7 @@ static int hdspm_external_sample_rate(struct hdspm *hdspm) | |||
1143 | 1144 | ||
1144 | /* if wordclock has synced freq and wordclock is valid */ | 1145 | /* if wordclock has synced freq and wordclock is valid */ |
1145 | if ((status2 & HDSPM_wcLock) != 0 && | 1146 | if ((status2 & HDSPM_wcLock) != 0 && |
1146 | (status & HDSPM_SelSyncRef0) == 0) { | 1147 | (status2 & HDSPM_SelSyncRef0) == 0) { |
1147 | 1148 | ||
1148 | rate_bits = status2 & HDSPM_wcFreqMask; | 1149 | rate_bits = status2 & HDSPM_wcFreqMask; |
1149 | 1150 | ||
@@ -1639,12 +1640,14 @@ static int snd_hdspm_midi_input_read (struct hdspm_midi *hmidi) | |||
1639 | } | 1640 | } |
1640 | } | 1641 | } |
1641 | hmidi->pending = 0; | 1642 | hmidi->pending = 0; |
1643 | spin_unlock_irqrestore(&hmidi->lock, flags); | ||
1642 | 1644 | ||
1645 | spin_lock_irqsave(&hmidi->hdspm->lock, flags); | ||
1643 | hmidi->hdspm->control_register |= hmidi->ie; | 1646 | hmidi->hdspm->control_register |= hmidi->ie; |
1644 | hdspm_write(hmidi->hdspm, HDSPM_controlRegister, | 1647 | hdspm_write(hmidi->hdspm, HDSPM_controlRegister, |
1645 | hmidi->hdspm->control_register); | 1648 | hmidi->hdspm->control_register); |
1649 | spin_unlock_irqrestore(&hmidi->hdspm->lock, flags); | ||
1646 | 1650 | ||
1647 | spin_unlock_irqrestore (&hmidi->lock, flags); | ||
1648 | return snd_hdspm_midi_output_write (hmidi); | 1651 | return snd_hdspm_midi_output_write (hmidi); |
1649 | } | 1652 | } |
1650 | 1653 | ||
@@ -6377,6 +6380,7 @@ static int __devinit snd_hdspm_create(struct snd_card *card, | |||
6377 | 6380 | ||
6378 | switch (hdspm->firmware_rev) { | 6381 | switch (hdspm->firmware_rev) { |
6379 | case HDSPM_MADI_REV: | 6382 | case HDSPM_MADI_REV: |
6383 | case HDSPM_MADI_OLD_REV: | ||
6380 | hdspm->io_type = MADI; | 6384 | hdspm->io_type = MADI; |
6381 | hdspm->card_name = "RME MADI"; | 6385 | hdspm->card_name = "RME MADI"; |
6382 | hdspm->midiPorts = 3; | 6386 | hdspm->midiPorts = 3; |