| 751 | | /* Control of sampling rate is the same for both G2 and G3 devices */ |
|---|
| 752 | | switch ( samplingFrequency ) { |
|---|
| 753 | | case -1: |
|---|
| 754 | | break; |
|---|
| 755 | | case 44100: |
|---|
| 756 | | new_rate = MOTU_RATE_BASE_44100 | MOTU_RATE_MULTIPLIER_1X; |
|---|
| 757 | | break; |
|---|
| 758 | | case 48000: |
|---|
| 759 | | new_rate = MOTU_RATE_BASE_48000 | MOTU_RATE_MULTIPLIER_1X; |
|---|
| 760 | | break; |
|---|
| 761 | | case 88200: |
|---|
| 762 | | new_rate = MOTU_RATE_BASE_44100 | MOTU_RATE_MULTIPLIER_2X; |
|---|
| 763 | | break; |
|---|
| 764 | | case 96000: |
|---|
| 765 | | new_rate = MOTU_RATE_BASE_48000 | MOTU_RATE_MULTIPLIER_2X; |
|---|
| 766 | | break; |
|---|
| 767 | | case 176400: |
|---|
| 768 | | new_rate = MOTU_RATE_BASE_44100 | MOTU_RATE_MULTIPLIER_4X; |
|---|
| 769 | | cancel_adat = true; // current ADAT protocol doesn't support sample rate > 96000 |
|---|
| 770 | | break; |
|---|
| 771 | | case 192000: |
|---|
| 772 | | new_rate = MOTU_RATE_BASE_48000 | MOTU_RATE_MULTIPLIER_4X; |
|---|
| 773 | | cancel_adat = true; |
|---|
| 774 | | break; |
|---|
| 775 | | default: |
|---|
| 776 | | supported=false; |
|---|
| | 752 | /* The method of controlling the sampling rate is the same for G2/G3 |
|---|
| | 753 | * devices but the actual bits used in the rate control register differ. |
|---|
| | 754 | */ |
|---|
| | 755 | if (device_gen == MOTU_DEVICE_G2) { |
|---|
| | 756 | rate_mask = MOTU_RATE_BASE_MASK | MOTU_RATE_MULTIPLIER_MASK; |
|---|
| | 757 | switch ( samplingFrequency ) { |
|---|
| | 758 | case -1: break; |
|---|
| | 759 | case 44100: new_rate = MOTU_RATE_BASE_44100 | MOTU_RATE_MULTIPLIER_1X; break; |
|---|
| | 760 | case 48000: new_rate = MOTU_RATE_BASE_48000 | MOTU_RATE_MULTIPLIER_1X; break; |
|---|
| | 761 | case 88200: new_rate = MOTU_RATE_BASE_44100 | MOTU_RATE_MULTIPLIER_2X; break; |
|---|
| | 762 | case 96000: new_rate = MOTU_RATE_BASE_48000 | MOTU_RATE_MULTIPLIER_2X; break; |
|---|
| | 763 | case 176400: new_rate = MOTU_RATE_BASE_44100 | MOTU_RATE_MULTIPLIER_4X; break; |
|---|
| | 764 | case 192000: new_rate = MOTU_RATE_BASE_48000 | MOTU_RATE_MULTIPLIER_4X; break; |
|---|
| | 765 | default: |
|---|
| | 766 | supported=false; |
|---|
| | 767 | } |
|---|
| | 768 | } else |
|---|
| | 769 | if (device_gen == MOTU_DEVICE_G3) { |
|---|
| | 770 | rate_mask = MOTU_G3_RATE_BASE_MASK | MOTU_G3_RATE_MULTIPLIER_MASK; |
|---|
| | 771 | switch ( samplingFrequency ) { |
|---|
| | 772 | case -1: break; |
|---|
| | 773 | case 44100: new_rate = MOTU_G3_RATE_BASE_44100 | MOTU_G3_RATE_MULTIPLIER_1X; break; |
|---|
| | 774 | case 48000: new_rate = MOTU_G3_RATE_BASE_48000 | MOTU_G3_RATE_MULTIPLIER_1X; break; |
|---|
| | 775 | case 88200: new_rate = MOTU_G3_RATE_BASE_44100 | MOTU_G3_RATE_MULTIPLIER_2X; break; |
|---|
| | 776 | case 96000: new_rate = MOTU_G3_RATE_BASE_48000 | MOTU_G3_RATE_MULTIPLIER_2X; break; |
|---|
| | 777 | case 176400: new_rate = MOTU_G3_RATE_BASE_44100 | MOTU_G3_RATE_MULTIPLIER_4X; break; |
|---|
| | 778 | case 192000: new_rate = MOTU_G3_RATE_BASE_48000 | MOTU_G3_RATE_MULTIPLIER_4X; break; |
|---|
| | 779 | default: |
|---|
| | 780 | supported=false; |
|---|
| | 781 | } |
|---|
| | 782 | } |
|---|
| | 783 | /* ADAT output is only possible for sample rates up to 96 kHz. For |
|---|
| | 784 | * anything higher, force the ADAT channels off. |
|---|
| | 785 | */ |
|---|
| | 786 | if (samplingFrequency > 96000) { |
|---|
| | 787 | cancel_adat = true; |
|---|