Changeset 703 for GPL/trunk/alsa-kernel/pci/rme96.c
- Timestamp:
- Sep 26, 2021, 6:18:40 PM (4 years ago)
- Location:
- GPL/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/trunk
- Property svn:mergeinfo changed
/GPL/branches/uniaud32-next merged: 696-702
- Property svn:mergeinfo changed
-
GPL/trunk/alsa-kernel/pci/rme96.c
r695 r703 667 667 668 668 if (!(rme96->wcreg & RME96_WCR_MASTER) && 669 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && 670 (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0) 671 { 672 /* slave clock */ 673 return rate; 674 } 669 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG) { 670 rate = snd_rme96_capture_getrate(rme96, &dummy); 671 if (rate > 0) { 672 /* slave clock */ 673 return rate; 674 } 675 } 676 675 677 rate = ((rme96->wcreg >> RME96_WCR_BITPOS_FREQ_0) & 1) + 676 678 (((rme96->wcreg >> RME96_WCR_BITPOS_FREQ_1) & 1) << 1); … … 985 987 986 988 spin_lock_irq(&rme96->lock); 989 rate = 0; 987 990 if (!(rme96->wcreg & RME96_WCR_MASTER) && 988 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && 989 (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0)990 {991 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG) 992 rate = snd_rme96_capture_getrate(rme96, &dummy); 993 if (rate > 0) { 991 994 /* slave clock */ 992 995 if ((int)params_rate(params) != rate) { … … 1047 1050 1048 1051 spin_lock_irq(&rme96->lock); 1049 if ((err = snd_rme96_capture_setformat(rme96, params_format(params))) < 0) { 1052 err = snd_rme96_capture_setformat(rme96, params_format(params)); 1053 if (err < 0) { 1050 1054 spin_unlock_irq(&rme96->lock); 1051 1055 return err; 1052 1056 } 1053 1057 if (snd_rme96_getinputtype(rme96) == RME96_INPUT_ANALOG) { 1054 if ((err = snd_rme96_capture_analog_setrate(rme96, 1055 params_rate(params))) < 0) 1056 { 1058 err = snd_rme96_capture_analog_setrate(rme96, params_rate(params)); 1059 if (err < 0) { 1057 1060 spin_unlock_irq(&rme96->lock); 1058 1061 return err; 1059 1062 } 1060 } else if ((rate = snd_rme96_capture_getrate(rme96, &isadat)) > 0) { 1061 if ((int)params_rate(params) != rate) { 1062 spin_unlock_irq(&rme96->lock); 1063 return -EIO; 1064 } 1065 if ((isadat && runtime->hw.channels_min == 2) || 1066 (!isadat && runtime->hw.channels_min == 8)) 1067 { 1068 spin_unlock_irq(&rme96->lock); 1069 return -EIO; 1070 } 1063 } else { 1064 rate = snd_rme96_capture_getrate(rme96, &isadat); 1065 if (rate > 0) { 1066 if ((int)params_rate(params) != rate) { 1067 spin_unlock_irq(&rme96->lock); 1068 return -EIO; 1069 } 1070 if ((isadat && runtime->hw.channels_min == 2) || 1071 (!isadat && runtime->hw.channels_min == 8)) { 1072 spin_unlock_irq(&rme96->lock); 1073 return -EIO; 1074 } 1075 } 1071 1076 } 1072 1077 snd_rme96_setframelog(rme96, params_channels(params), 0); … … 1161 1166 snd_pcm_hw_constraint_single(runtime, SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 1162 1167 RME96_BUFFER_SIZE); 1163 if ((size = rme96->playback_periodsize) != 0 || 1164 (size = rme96->capture_periodsize) != 0) 1168 size = rme96->playback_periodsize; 1169 if (!size) 1170 size = rme96->capture_periodsize; 1171 if (size) 1165 1172 snd_pcm_hw_constraint_single(runtime, 1166 1173 SNDRV_PCM_HW_PARAM_PERIOD_BYTES, … … 1192 1199 runtime->hw = snd_rme96_playback_spdif_info; 1193 1200 if (!(rme96->wcreg & RME96_WCR_MASTER) && 1194 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && 1195 (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0) 1196 { 1197 /* slave clock */ 1198 runtime->hw.rates = snd_pcm_rate_to_rate_bit(rate); 1199 runtime->hw.rate_min = rate; 1200 runtime->hw.rate_max = rate; 1201 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG) { 1202 rate = snd_rme96_capture_getrate(rme96, &dummy); 1203 if (rate > 0) { 1204 /* slave clock */ 1205 runtime->hw.rates = snd_pcm_rate_to_rate_bit(rate); 1206 runtime->hw.rate_min = rate; 1207 runtime->hw.rate_max = rate; 1208 } 1201 1209 } 1202 1210 rme96_set_buffer_size_constraint(rme96, runtime); … … 1218 1226 snd_pcm_set_sync(substream); 1219 1227 runtime->hw = snd_rme96_capture_spdif_info; 1220 if (snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && 1221 (rate = snd_rme96_capture_getrate(rme96, &isadat)) > 0) 1222 1223 if (isadat) { 1224 1225 } 1226 runtime->hw.rates = snd_pcm_rate_to_rate_bit(rate);1227 runtime->hw.rate_min= rate;1228 runtime->hw.rate_max = rate; 1229 1228 if (snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG) { 1229 rate = snd_rme96_capture_getrate(rme96, &isadat); 1230 if (rate > 0) { 1231 if (isadat) 1232 return -EIO; 1233 runtime->hw.rates = snd_pcm_rate_to_rate_bit(rate); 1234 runtime->hw.rate_min = rate; 1235 runtime->hw.rate_max = rate; 1236 } 1237 } 1230 1238 1231 1239 spin_lock_irq(&rme96->lock); … … 1261 1269 runtime->hw = snd_rme96_playback_adat_info; 1262 1270 if (!(rme96->wcreg & RME96_WCR_MASTER) && 1263 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG && 1264 (rate = snd_rme96_capture_getrate(rme96, &dummy)) > 0) 1265 { 1266 /* slave clock */ 1267 runtime->hw.rates = snd_pcm_rate_to_rate_bit(rate); 1268 runtime->hw.rate_min = rate; 1269 runtime->hw.rate_max = rate; 1270 } 1271 snd_rme96_getinputtype(rme96) != RME96_INPUT_ANALOG) { 1272 rate = snd_rme96_capture_getrate(rme96, &dummy); 1273 if (rate > 0) { 1274 /* slave clock */ 1275 runtime->hw.rates = snd_pcm_rate_to_rate_bit(rate); 1276 runtime->hw.rate_min = rate; 1277 runtime->hw.rate_max = rate; 1278 } 1279 } 1280 1271 1281 rme96_set_buffer_size_constraint(rme96, runtime); 1272 1282 return 0; … … 1287 1297 return -EIO; 1288 1298 } 1289 if ((rate = snd_rme96_capture_getrate(rme96, &isadat)) > 0) { 1299 rate = snd_rme96_capture_getrate(rme96, &isadat); 1300 if (rate > 0) { 1290 1301 if (!isadat) { 1291 1302 return -EIO; … … 1604 1615 spin_lock_init(&rme96->lock); 1605 1616 1606 if ((err = pci_enable_device(pci)) < 0) 1617 err = pci_enable_device(pci); 1618 if (err < 0) 1607 1619 return err; 1608 1620 1609 if ((err = pci_request_regions(pci, "RME96")) < 0) 1621 err = pci_request_regions(pci, "RME96"); 1622 if (err < 0) 1610 1623 return err; 1611 1624 rme96->port = pci_resource_start(rme96->pci, 0); … … 1631 1644 1632 1645 /* set up ALSA pcm device for S/PDIF */ 1633 if ((err = snd_pcm_new(rme96->card, "Digi96 IEC958", 0,1634 1, 1, &rme96->spdif_pcm)) < 0)1635 {1646 err = snd_pcm_new(rme96->card, "Digi96 IEC958", 0, 1647 1, 1, &rme96->spdif_pcm); 1648 if (err < 0) 1636 1649 return err; 1637 } 1650 1638 1651 rme96->spdif_pcm->private_data = rme96; 1639 1652 rme96->spdif_pcm->private_free = snd_rme96_free_spdif_pcm; … … 1649 1662 rme96->adat_pcm = NULL; 1650 1663 } else { 1651 if ((err = snd_pcm_new(rme96->card, "Digi96 ADAT", 1,1652 1, 1, &rme96->adat_pcm)) < 0)1653 {1664 err = snd_pcm_new(rme96->card, "Digi96 ADAT", 1, 1665 1, 1, &rme96->adat_pcm); 1666 if (err < 0) 1654 1667 return err; 1655 }1656 1668 rme96->adat_pcm->private_data = rme96; 1657 1669 rme96->adat_pcm->private_free = snd_rme96_free_adat_pcm; … … 1702 1714 1703 1715 /* init switch interface */ 1704 if ((err = snd_rme96_create_switches(rme96->card, rme96)) < 0) { 1716 err = snd_rme96_create_switches(rme96->card, rme96); 1717 if (err < 0) 1705 1718 return err; 1706 }1707 1719 1708 1720 /* init proc interface */ … … 2337 2349 2338 2350 for (idx = 0; idx < 7; idx++) { 2339 if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_rme96_controls[idx], rme96))) < 0) 2351 kctl = snd_ctl_new1(&snd_rme96_controls[idx], rme96); 2352 err = snd_ctl_add(card, kctl); 2353 if (err < 0) 2340 2354 return err; 2341 2355 if (idx == 1) /* IEC958 (S/PDIF) Stream */ … … 2344 2358 2345 2359 if (RME96_HAS_ANALOG_OUT(rme96)) { 2346 for (idx = 7; idx < 10; idx++) 2347 if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_rme96_controls[idx], rme96))) < 0) 2360 for (idx = 7; idx < 10; idx++) { 2361 err = snd_ctl_add(card, snd_ctl_new1(&snd_rme96_controls[idx], rme96)); 2362 if (err < 0) 2348 2363 return err; 2364 } 2349 2365 } 2350 2366
Note:
See TracChangeset
for help on using the changeset viewer.