3 * Custom IDEAS, Inc. <www.cideas.com>
4 * Jon Diekema <diekema@cideas.com>
6 * See file CREDITS for list of people who contributed to this
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of
12 * the License, or (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
28 #include <asm/cpm_8260.h>
29 #include <configs/sacsng.h>
33 int Daq64xSampling = 0;
36 void Daq_BRG_Reset(uint brg)
38 volatile immap_t *immr = (immap_t *)CFG_IMMR;
39 volatile uint *brg_ptr;
41 brg_ptr = (uint *)&immr->im_brgc1;
44 brg_ptr = (uint *)&immr->im_brgc5;
48 *brg_ptr |= CPM_BRG_RST;
49 *brg_ptr &= ~CPM_BRG_RST;
52 void Daq_BRG_Disable(uint brg)
54 volatile immap_t *immr = (immap_t *)CFG_IMMR;
55 volatile uint *brg_ptr;
57 brg_ptr = (uint *)&immr->im_brgc1;
60 brg_ptr = (uint *)&immr->im_brgc5;
64 *brg_ptr &= ~CPM_BRG_EN;
67 void Daq_BRG_Enable(uint brg)
69 volatile immap_t *immr = (immap_t *)CFG_IMMR;
70 volatile uint *brg_ptr;
72 brg_ptr = (uint *)&immr->im_brgc1;
74 brg_ptr = (uint *)&immr->im_brgc5;
78 *brg_ptr |= CPM_BRG_EN;
81 uint Daq_BRG_Get_Div16(uint brg)
83 volatile immap_t *immr = (immap_t *)CFG_IMMR;
86 brg_ptr = (uint *)&immr->im_brgc1;
88 brg_ptr = (uint *)&immr->im_brgc5;
93 if (*brg_ptr & CPM_BRG_DIV16) {
103 void Daq_BRG_Set_Div16(uint brg, uint div16)
105 volatile immap_t *immr = (immap_t *)CFG_IMMR;
108 brg_ptr = (uint *)&immr->im_brgc1;
110 brg_ptr = (uint *)&immr->im_brgc5;
117 *brg_ptr |= CPM_BRG_DIV16;
121 *brg_ptr &= ~CPM_BRG_DIV16;
125 uint Daq_BRG_Get_Count(uint brg)
127 volatile immap_t *immr = (immap_t *)CFG_IMMR;
131 brg_ptr = (uint *)&immr->im_brgc1;
133 brg_ptr = (uint *)&immr->im_brgc5;
138 /* Get the clock divider
140 * Note: A clock divider of 0 means divide by 1,
141 * therefore we need to add 1 to the count.
143 brg_cnt = (*brg_ptr & CPM_BRG_CD_MASK) >> CPM_BRG_DIV16_SHIFT;
145 if (*brg_ptr & CPM_BRG_DIV16) {
152 void Daq_BRG_Set_Count(uint brg, uint brg_cnt)
154 volatile immap_t *immr = (immap_t *)CFG_IMMR;
157 brg_ptr = (uint *)&immr->im_brgc1;
159 brg_ptr = (uint *)&immr->im_brgc5;
165 * Note: A clock divider of 0 means divide by 1,
166 * therefore we need to subtract 1 from the count.
168 if (brg_cnt > 4096) {
169 /* Prescale = Divide by 16 */
170 *brg_ptr = (*brg_ptr & ~CPM_BRG_CD_MASK) |
171 (((brg_cnt / 16) - 1) << CPM_BRG_DIV16_SHIFT);
172 *brg_ptr |= CPM_BRG_DIV16;
175 /* Prescale = Divide by 1 */
176 *brg_ptr = (*brg_ptr & ~CPM_BRG_CD_MASK) |
177 ((brg_cnt - 1) << CPM_BRG_DIV16_SHIFT);
178 *brg_ptr &= ~CPM_BRG_DIV16;
182 uint Daq_BRG_Get_ExtClk(uint brg)
184 volatile immap_t *immr = (immap_t *)CFG_IMMR;
187 brg_ptr = (uint *)&immr->im_brgc1;
189 brg_ptr = (uint *)&immr->im_brgc5;
194 return ((*brg_ptr & CPM_BRG_EXTC_MASK) >> CPM_BRG_EXTC_SHIFT);
197 char* Daq_BRG_Get_ExtClk_Description(uint brg)
201 extc = Daq_BRG_Get_ExtClk(brg);
242 void Daq_BRG_Set_ExtClk(uint brg, uint extc)
244 volatile immap_t *immr = (immap_t *)CFG_IMMR;
247 brg_ptr = (uint *)&immr->im_brgc1;
249 brg_ptr = (uint *)&immr->im_brgc5;
254 *brg_ptr = (*brg_ptr & ~CPM_BRG_EXTC_MASK) |
255 ((extc << CPM_BRG_EXTC_SHIFT) & CPM_BRG_EXTC_MASK);
258 uint Daq_BRG_Rate(uint brg)
260 DECLARE_GLOBAL_DATA_PTR;
261 volatile immap_t *immr = (immap_t *)CFG_IMMR;
266 brg_ptr = (uint *)&immr->im_brgc1;
269 brg_ptr = (uint *)&immr->im_brgc5;
270 brg_ptr += (brg - 4);
273 brg_cnt = Daq_BRG_Get_Count(brg);
275 switch (Daq_BRG_Get_ExtClk(brg)) {
276 case CPM_BRG_EXTC_CLK3:
277 case CPM_BRG_EXTC_CLK5: {
282 brg_freq = (uint)BRG_INT_CLK / brg_cnt;
288 uint Daq_Get_SampleRate(void)
292 * Read the BRG's to return the actual sample rate.
294 return (Daq_BRG_Rate(MCLK_BRG) / (MCLK_DIVISOR * SCLK_DIVISOR));
297 uint Daq_Set_SampleRate(uint rate, uint force)
300 DECLARE_GLOBAL_DATA_PTR;
301 uint mclk_divisor; /* MCLK divisor */
302 uint rate_curr; /* Current sample rate */
305 * Limit the sample rate to some sensible values.
307 if (Daq64xSampling) {
308 if (rate > MAX_64x_SAMPLE_RATE) {
309 rate = MAX_64x_SAMPLE_RATE;
313 if (rate > MAX_128x_SAMPLE_RATE) {
314 rate = MAX_128x_SAMPLE_RATE;
317 if (rate < MIN_SAMPLE_RATE) {
318 rate = MIN_SAMPLE_RATE;
321 /* Check to see if we are really changing rates */
322 rate_curr = Daq_Get_SampleRate();
323 if ((rate != rate_curr) || force) {
325 * Dynamically adjust MCLK based on the new sample rate.
328 /* Compute the divisors */
329 mclk_divisor = BRG_INT_CLK / (rate * MCLK_DIVISOR * SCLK_DIVISOR);
332 Daq_BRG_Set_Count(MCLK_BRG, mclk_divisor);
335 # ifdef RUN_SCLK_ON_BRG_INT
336 Daq_BRG_Set_Count(SCLK_BRG, mclk_divisor * MCLK_DIVISOR);
338 Daq_BRG_Set_Count(SCLK_BRG, MCLK_DIVISOR);
341 # ifdef RUN_LRCLK_ON_BRG_INT
342 Daq_BRG_Set_Count(LRCLK_BRG,
343 mclk_divisor * MCLK_DIVISOR * SCLK_DIVISOR);
345 Daq_BRG_Set_Count(LRCLK_BRG, SCLK_DIVISOR);
348 /* Read the BRG's to return the actual sample rate. */
349 rate_curr = Daq_Get_SampleRate();
355 void Daq_Init_Clocks(int sample_rate, int sample_64x)
358 volatile ioport_t *iopa = ioport_addr((immap_t *)CFG_IMMR, 0 /* port A */);
360 /* Save off the clocking data */
361 Daq64xSampling = sample_64x;
364 * Limit the sample rate to some sensible values.
366 if (Daq64xSampling) {
367 if (sample_rate > MAX_64x_SAMPLE_RATE) {
368 sample_rate = MAX_64x_SAMPLE_RATE;
372 if (sample_rate > MAX_128x_SAMPLE_RATE) {
373 sample_rate = MAX_128x_SAMPLE_RATE;
376 if (sample_rate < MIN_SAMPLE_RATE) {
377 sample_rate = MIN_SAMPLE_RATE;
381 * Initialize the MCLK/SCLK/LRCLK baud rate generators.
385 Daq_BRG_Set_ExtClk(MCLK_BRG, CPM_BRG_EXTC_BRGCLK);
388 # ifdef RUN_SCLK_ON_BRG_INT
389 Daq_BRG_Set_ExtClk(SCLK_BRG, CPM_BRG_EXTC_BRGCLK);
391 Daq_BRG_Set_ExtClk(SCLK_BRG, CPM_BRG_EXTC_CLK9);
395 # ifdef RUN_LRCLK_ON_BRG_INT
396 Daq_BRG_Set_ExtClk(LRCLK_BRG, CPM_BRG_EXTC_BRGCLK);
398 Daq_BRG_Set_ExtClk(LRCLK_BRG, CPM_BRG_EXTC_CLK5);
401 /* Setup the BRG rates */
402 Daq_Set_SampleRate(sample_rate, TRUE);
404 /* Enable the clock drivers */
405 iopa->pdat &= ~SLRCLK_EN_MASK;
408 void Daq_Stop_Clocks(void)
411 #ifdef TIGHTEN_UP_BRG_TIMING
412 volatile immap_t *immr = (immap_t *)CFG_IMMR;
415 # ifdef TIGHTEN_UP_BRG_TIMING
420 immr->im_brgc1 |= CPM_BRG_RST;
421 immr->im_brgc1 &= ~CPM_BRG_RST;
424 immr->im_brgc2 |= CPM_BRG_RST;
425 immr->im_brgc2 &= ~CPM_BRG_RST;
428 immr->im_brgc3 |= CPM_BRG_RST;
429 immr->im_brgc3 &= ~CPM_BRG_RST;
432 immr->im_brgc4 |= CPM_BRG_RST;
433 immr->im_brgc4 &= ~CPM_BRG_RST;
436 immr->im_brgc5 |= CPM_BRG_RST;
437 immr->im_brgc5 &= ~CPM_BRG_RST;
440 immr->im_brgc6 |= CPM_BRG_RST;
441 immr->im_brgc6 &= ~CPM_BRG_RST;
444 immr->im_brgc7 |= CPM_BRG_RST;
445 immr->im_brgc7 &= ~CPM_BRG_RST;
448 immr->im_brgc8 |= CPM_BRG_RST;
449 immr->im_brgc8 &= ~CPM_BRG_RST;
456 immr->im_brgc1 |= CPM_BRG_RST;
457 immr->im_brgc1 &= ~CPM_BRG_RST;
460 immr->im_brgc2 |= CPM_BRG_RST;
461 immr->im_brgc2 &= ~CPM_BRG_RST;
464 immr->im_brgc3 |= CPM_BRG_RST;
465 immr->im_brgc3 &= ~CPM_BRG_RST;
468 immr->im_brgc4 |= CPM_BRG_RST;
469 immr->im_brgc4 &= ~CPM_BRG_RST;
472 immr->im_brgc5 |= CPM_BRG_RST;
473 immr->im_brgc5 &= ~CPM_BRG_RST;
476 immr->im_brgc6 |= CPM_BRG_RST;
477 immr->im_brgc6 &= ~CPM_BRG_RST;
480 immr->im_brgc7 |= CPM_BRG_RST;
481 immr->im_brgc7 &= ~CPM_BRG_RST;
484 immr->im_brgc8 |= CPM_BRG_RST;
485 immr->im_brgc8 &= ~CPM_BRG_RST;
491 # if (LRCLK_BRG == 0)
492 immr->im_brgc1 |= CPM_BRG_RST;
493 immr->im_brgc1 &= ~CPM_BRG_RST;
495 # if (LRCLK_BRG == 1)
496 immr->im_brgc2 |= CPM_BRG_RST;
497 immr->im_brgc2 &= ~CPM_BRG_RST;
499 # if (LRCLK_BRG == 2)
500 immr->im_brgc3 |= CPM_BRG_RST;
501 immr->im_brgc3 &= ~CPM_BRG_RST;
503 # if (LRCLK_BRG == 3)
504 immr->im_brgc4 |= CPM_BRG_RST;
505 immr->im_brgc4 &= ~CPM_BRG_RST;
507 # if (LRCLK_BRG == 4)
508 immr->im_brgc5 |= CPM_BRG_RST;
509 immr->im_brgc5 &= ~CPM_BRG_RST;
511 # if (LRCLK_BRG == 5)
512 immr->im_brgc6 |= CPM_BRG_RST;
513 immr->im_brgc6 &= ~CPM_BRG_RST;
515 # if (LRCLK_BRG == 6)
516 immr->im_brgc7 |= CPM_BRG_RST;
517 immr->im_brgc7 &= ~CPM_BRG_RST;
519 # if (LRCLK_BRG == 7)
520 immr->im_brgc8 |= CPM_BRG_RST;
521 immr->im_brgc8 &= ~CPM_BRG_RST;
527 Daq_BRG_Reset(MCLK_BRG);
528 Daq_BRG_Reset(SCLK_BRG);
529 Daq_BRG_Reset(LRCLK_BRG);
533 void Daq_Start_Clocks(int sample_rate)
536 #ifdef TIGHTEN_UP_BRG_TIMING
537 volatile immap_t *immr = (immap_t *)CFG_IMMR;
539 uint mclk_brg; /* MCLK BRG value */
540 uint sclk_brg; /* SCLK BRG value */
541 uint lrclk_brg; /* LRCLK BRG value */
542 uint temp_lrclk_brg; /* Temporary LRCLK BRG value */
543 uint real_lrclk_brg; /* Permanent LRCLK BRG value */
544 unsigned long flags; /* Interrupt flags */
545 uint sclk_cnt; /* SCLK count */
546 uint delay_cnt; /* Delay count */
549 # ifdef TIGHTEN_UP_BRG_TIMING
551 * Obtain the enabled MCLK BRG value
554 mclk_brg = (immr->im_brgc1 & ~CPM_BRG_RST) | CPM_BRG_EN;
557 mclk_brg = (immr->im_brgc2 & ~CPM_BRG_RST) | CPM_BRG_EN;
560 mclk_brg = (immr->im_brgc3 & ~CPM_BRG_RST) | CPM_BRG_EN;
563 mclk_brg = (immr->im_brgc4 & ~CPM_BRG_RST) | CPM_BRG_EN;
566 mclk_brg = (immr->im_brgc5 & ~CPM_BRG_RST) | CPM_BRG_EN;
569 mclk_brg = (immr->im_brgc6 & ~CPM_BRG_RST) | CPM_BRG_EN;
572 mclk_brg = (immr->im_brgc7 & ~CPM_BRG_RST) | CPM_BRG_EN;
575 mclk_brg = (immr->im_brgc8 & ~CPM_BRG_RST) | CPM_BRG_EN;
579 * Obtain the enabled SCLK BRG value
582 sclk_brg = (immr->im_brgc1 & ~CPM_BRG_RST) | CPM_BRG_EN;
585 sclk_brg = (immr->im_brgc2 & ~CPM_BRG_RST) | CPM_BRG_EN;
588 sclk_brg = (immr->im_brgc3 & ~CPM_BRG_RST) | CPM_BRG_EN;
591 sclk_brg = (immr->im_brgc4 & ~CPM_BRG_RST) | CPM_BRG_EN;
594 sclk_brg = (immr->im_brgc5 & ~CPM_BRG_RST) | CPM_BRG_EN;
597 sclk_brg = (immr->im_brgc6 & ~CPM_BRG_RST) | CPM_BRG_EN;
600 sclk_brg = (immr->im_brgc7 & ~CPM_BRG_RST) | CPM_BRG_EN;
603 sclk_brg = (immr->im_brgc8 & ~CPM_BRG_RST) | CPM_BRG_EN;
607 * Obtain the enabled LRCLK BRG value
609 # if (LRCLK_BRG == 0)
610 lrclk_brg = (immr->im_brgc1 & ~CPM_BRG_RST) | CPM_BRG_EN;
612 # if (LRCLK_BRG == 1)
613 lrclk_brg = (immr->im_brgc2 & ~CPM_BRG_RST) | CPM_BRG_EN;
615 # if (LRCLK_BRG == 2)
616 lrclk_brg = (immr->im_brgc3 & ~CPM_BRG_RST) | CPM_BRG_EN;
618 # if (LRCLK_BRG == 3)
619 lrclk_brg = (immr->im_brgc4 & ~CPM_BRG_RST) | CPM_BRG_EN;
621 # if (LRCLK_BRG == 4)
622 lrclk_brg = (immr->im_brgc5 & ~CPM_BRG_RST) | CPM_BRG_EN;
624 # if (LRCLK_BRG == 5)
625 lrclk_brg = (immr->im_brgc6 & ~CPM_BRG_RST) | CPM_BRG_EN;
627 # if (LRCLK_BRG == 6)
628 lrclk_brg = (immr->im_brgc7 & ~CPM_BRG_RST) | CPM_BRG_EN;
630 # if (LRCLK_BRG == 7)
631 lrclk_brg = (immr->im_brgc8 & ~CPM_BRG_RST) | CPM_BRG_EN;
634 /* Save off the real LRCLK value */
635 real_lrclk_brg = lrclk_brg;
637 /* Obtain the current SCLK count */
638 sclk_cnt = ((sclk_brg & 0x00001FFE) >> 1) + 1;
640 /* Compute the delay as a function of SCLK count */
641 delay_cnt = ((sclk_cnt / 4) - 2) * 10 + 6;
642 if (sample_rate == 43402) {
646 /* Clear out the count */
647 temp_lrclk_brg = sclk_brg & ~0x00001FFE;
649 /* Insert the count */
650 temp_lrclk_brg |= ((delay_cnt + (sclk_cnt / 2) - 1) << 1) & 0x00001FFE;
656 immr->im_brgc1 = mclk_brg;
659 immr->im_brgc2 = mclk_brg;
662 immr->im_brgc3 = mclk_brg;
665 immr->im_brgc4 = mclk_brg;
668 immr->im_brgc5 = mclk_brg;
671 immr->im_brgc6 = mclk_brg;
674 immr->im_brgc7 = mclk_brg;
677 immr->im_brgc8 = mclk_brg;
684 immr->im_brgc1 = sclk_brg;
687 immr->im_brgc2 = sclk_brg;
690 immr->im_brgc3 = sclk_brg;
693 immr->im_brgc4 = sclk_brg;
696 immr->im_brgc5 = sclk_brg;
699 immr->im_brgc6 = sclk_brg;
702 immr->im_brgc7 = sclk_brg;
705 immr->im_brgc8 = sclk_brg;
709 * Enable LRCLK BRG (1st time - temporary)
711 # if (LRCLK_BRG == 0)
712 immr->im_brgc1 = temp_lrclk_brg;
714 # if (LRCLK_BRG == 1)
715 immr->im_brgc2 = temp_lrclk_brg;
717 # if (LRCLK_BRG == 2)
718 immr->im_brgc3 = temp_lrclk_brg;
720 # if (LRCLK_BRG == 3)
721 immr->im_brgc4 = temp_lrclk_brg;
723 # if (LRCLK_BRG == 4)
724 immr->im_brgc5 = temp_lrclk_brg;
726 # if (LRCLK_BRG == 5)
727 immr->im_brgc6 = temp_lrclk_brg;
729 # if (LRCLK_BRG == 6)
730 immr->im_brgc7 = temp_lrclk_brg;
732 # if (LRCLK_BRG == 7)
733 immr->im_brgc8 = temp_lrclk_brg;
737 * Enable LRCLK BRG (2nd time - permanent)
739 # if (LRCLK_BRG == 0)
740 immr->im_brgc1 = real_lrclk_brg;
742 # if (LRCLK_BRG == 1)
743 immr->im_brgc2 = real_lrclk_brg;
745 # if (LRCLK_BRG == 2)
746 immr->im_brgc3 = real_lrclk_brg;
748 # if (LRCLK_BRG == 3)
749 immr->im_brgc4 = real_lrclk_brg;
751 # if (LRCLK_BRG == 4)
752 immr->im_brgc5 = real_lrclk_brg;
754 # if (LRCLK_BRG == 5)
755 immr->im_brgc6 = real_lrclk_brg;
757 # if (LRCLK_BRG == 6)
758 immr->im_brgc7 = real_lrclk_brg;
760 # if (LRCLK_BRG == 7)
761 immr->im_brgc8 = real_lrclk_brg;
767 Daq_BRG_Enable(LRCLK_BRG);
768 Daq_BRG_Enable(SCLK_BRG);
769 Daq_BRG_Enable(MCLK_BRG);
773 void Daq_Display_Clocks(void)
776 volatile immap_t *immr = (immap_t *)CFG_IMMR;
777 uint mclk_divisor; /* Detected MCLK divisor */
778 uint sclk_divisor; /* Detected SCLK divisor */
781 if (immr->im_brgc4 != 0) {
782 printf("\tbrgc4\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, MCLK\n",
784 (uint)&(immr->im_brgc4),
785 Daq_BRG_Get_Count(3),
786 Daq_BRG_Get_ExtClk(3),
787 Daq_BRG_Get_ExtClk_Description(3));
789 if (immr->im_brgc8 != 0) {
790 printf("\tbrgc8\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, SCLK\n",
792 (uint)&(immr->im_brgc8),
793 Daq_BRG_Get_Count(7),
794 Daq_BRG_Get_ExtClk(7),
795 Daq_BRG_Get_ExtClk_Description(7));
797 if (immr->im_brgc6 != 0) {
798 printf("\tbrgc6\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, LRCLK\n",
800 (uint)&(immr->im_brgc6),
801 Daq_BRG_Get_Count(5),
802 Daq_BRG_Get_ExtClk(5),
803 Daq_BRG_Get_ExtClk_Description(5));
805 if (immr->im_brgc1 != 0) {
806 printf("\tbrgc1\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, SMC1\n",
808 (uint)&(immr->im_brgc1),
809 Daq_BRG_Get_Count(0),
810 Daq_BRG_Get_ExtClk(0),
811 Daq_BRG_Get_ExtClk_Description(0));
813 if (immr->im_brgc2 != 0) {
814 printf("\tbrgc2\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, SMC2\n",
816 (uint)&(immr->im_brgc2),
817 Daq_BRG_Get_Count(1),
818 Daq_BRG_Get_ExtClk(1),
819 Daq_BRG_Get_ExtClk_Description(1));
821 if (immr->im_brgc3 != 0) {
822 printf("\tbrgc3\t0x%08x @ 0x%08x, %5d count, %d extc, %8s, SCC1\n",
824 (uint)&(immr->im_brgc3),
825 Daq_BRG_Get_Count(2),
826 Daq_BRG_Get_ExtClk(2),
827 Daq_BRG_Get_ExtClk_Description(2));
829 if (immr->im_brgc5 != 0) {
830 printf("\tbrgc5\t0x%08x @ 0x%08x, %5d count, %d extc, %8s\n",
832 (uint)&(immr->im_brgc5),
833 Daq_BRG_Get_Count(4),
834 Daq_BRG_Get_ExtClk(4),
835 Daq_BRG_Get_ExtClk_Description(4));
837 if (immr->im_brgc7 != 0) {
838 printf("\tbrgc7\t0x%08x @ 0x%08x, %5d count, %d extc, %8s\n",
840 (uint)&(immr->im_brgc7),
841 Daq_BRG_Get_Count(6),
842 Daq_BRG_Get_ExtClk(6),
843 Daq_BRG_Get_ExtClk_Description(6));
846 # ifdef RUN_SCLK_ON_BRG_INT
847 mclk_divisor = Daq_BRG_Rate(MCLK_BRG) / Daq_BRG_Rate(SCLK_BRG);
849 mclk_divisor = Daq_BRG_Get_Count(SCLK_BRG);
851 # ifdef RUN_LRCLK_ON_BRG_INT
852 sclk_divisor = Daq_BRG_Rate(SCLK_BRG) / Daq_BRG_Rate(LRCLK_BRG);
854 sclk_divisor = Daq_BRG_Get_Count(LRCLK_BRG);
857 printf("\nADC/DAC Clocking (%d/%d):\n", sclk_divisor, mclk_divisor);
858 printf("\tMCLK %8d Hz, or %3dx SCLK, or %3dx LRCLK\n",
859 Daq_BRG_Rate(MCLK_BRG),
861 mclk_divisor * sclk_divisor);
862 # ifdef RUN_SCLK_ON_BRG_INT
863 printf("\tSCLK %8d Hz, or %3dx LRCLK\n",
864 Daq_BRG_Rate(SCLK_BRG),
867 printf("\tSCLK %8d Hz, or %3dx LRCLK\n",
868 Daq_BRG_Rate(MCLK_BRG) / mclk_divisor,
871 # ifdef RUN_LRCLK_ON_BRG_INT
872 printf("\tLRCLK %8d Hz\n",
873 Daq_BRG_Rate(LRCLK_BRG));
875 # ifdef RUN_SCLK_ON_BRG_INT
876 printf("\tLRCLK %8d Hz\n",
877 Daq_BRG_Rate(SCLK_BRG) / sclk_divisor);
879 printf("\tLRCLK %8d Hz\n",
880 Daq_BRG_Rate(MCLK_BRG) / (mclk_divisor * sclk_divisor));