summaryrefslogtreecommitdiff
path: root/firmware/sound.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/sound.c')
-rw-r--r--firmware/sound.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/firmware/sound.c b/firmware/sound.c
index cd772f5e9f..a36c244d1b 100644
--- a/firmware/sound.c
+++ b/firmware/sound.c
@@ -31,7 +31,7 @@
31#include "dac.h" 31#include "dac.h"
32#include "system.h" 32#include "system.h"
33#include "hwcompat.h" 33#include "hwcompat.h"
34#if CONFIG_HWCODEC == MASNONE 34#if CONFIG_CODEC == SWCODEC
35#include "pcm_playback.h" 35#include "pcm_playback.h"
36#endif 36#endif
37#endif 37#endif
@@ -40,7 +40,7 @@
40extern bool audio_is_initialized; 40extern bool audio_is_initialized;
41#endif 41#endif
42 42
43#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 43#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
44extern unsigned long shadow_io_control_main; 44extern unsigned long shadow_io_control_main;
45extern unsigned shadow_codec_reg0; 45extern unsigned shadow_codec_reg0;
46#endif 46#endif
@@ -116,7 +116,7 @@ static const int steps[] =
116static const int minval[] = 116static const int minval[] =
117{ 117{
118 0, /* Volume */ 118 0, /* Volume */
119#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 119#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
120 -12, /* Bass */ 120 -12, /* Bass */
121 -12, /* Treble */ 121 -12, /* Treble */
122#elif defined(HAVE_UDA1380) 122#elif defined(HAVE_UDA1380)
@@ -145,7 +145,7 @@ static const int minval[] =
145static const int maxval[] = 145static const int maxval[] =
146{ 146{
147 100, /* Volume */ 147 100, /* Volume */
148#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 148#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
149 12, /* Bass */ 149 12, /* Bass */
150 12, /* Treble */ 150 12, /* Treble */
151#elif defined(HAVE_UDA1380) 151#elif defined(HAVE_UDA1380)
@@ -174,7 +174,7 @@ static const int maxval[] =
174static const int defaultval[] = 174static const int defaultval[] =
175{ 175{
176 70, /* Volume */ 176 70, /* Volume */
177#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 177#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
178 6, /* Bass */ 178 6, /* Bass */
179 6, /* Treble */ 179 6, /* Treble */
180#elif defined(HAVE_UDA1380) 180#elif defined(HAVE_UDA1380)
@@ -231,7 +231,7 @@ int sound_default(int setting)
231} 231}
232 232
233#ifndef SIMULATOR 233#ifndef SIMULATOR
234#if CONFIG_HWCODEC == MAS3507D /* volume/balance/treble/bass interdependency */ 234#if CONFIG_CODEC == MAS3507D /* volume/balance/treble/bass interdependency */
235#define VOLUME_MIN -780 235#define VOLUME_MIN -780
236#define VOLUME_MAX 180 236#define VOLUME_MAX 180
237 237
@@ -351,7 +351,7 @@ static int tenthdb2master(int db) {
351} 351}
352#endif 352#endif
353 353
354#if (CONFIG_HWCODEC == MAS3507D) || defined HAVE_UDA1380 354#if (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380
355 /* volume/balance/treble/bass interdependency main part */ 355 /* volume/balance/treble/bass interdependency main part */
356#define VOLUME_RANGE (VOLUME_MAX - VOLUME_MIN) 356#define VOLUME_RANGE (VOLUME_MAX - VOLUME_MIN)
357 357
@@ -371,7 +371,7 @@ static void set_prescaled_volume(void)
371 prescale = 0; /* no need to prescale if we don't boost 371 prescale = 0; /* no need to prescale if we don't boost
372 bass or treble */ 372 bass or treble */
373 373
374#if CONFIG_HWCODEC == MAS3507D 374#if CONFIG_CODEC == MAS3507D
375 mas_writereg(MAS_REG_KPRESCALE, prescale_table[prescale/10]); 375 mas_writereg(MAS_REG_KPRESCALE, prescale_table[prescale/10]);
376#else /* UDA1380 */ 376#else /* UDA1380 */
377 uda1380_set_mixer_vol(prescale*2/5, prescale*2/5); 377 uda1380_set_mixer_vol(prescale*2/5, prescale*2/5);
@@ -397,13 +397,13 @@ static void set_prescaled_volume(void)
397 r = VOLUME_MIN; 397 r = VOLUME_MIN;
398 } 398 }
399 399
400#if CONFIG_HWCODEC == MAS3507D 400#if CONFIG_CODEC == MAS3507D
401 dac_volume(tenthdb2reg(l), tenthdb2reg(r), false); 401 dac_volume(tenthdb2reg(l), tenthdb2reg(r), false);
402#else /* UDA1380 */ 402#else /* UDA1380 */
403 uda1380_set_master_vol(tenthdb2master(l), tenthdb2master(r)); 403 uda1380_set_master_vol(tenthdb2master(l), tenthdb2master(r));
404#endif 404#endif
405} 405}
406#endif /* (CONFIG_HWCODEC == MAS3507D) || defined HAVE_UDA1380 */ 406#endif /* (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 */
407#endif /* !SIMULATOR */ 407#endif /* !SIMULATOR */
408 408
409int channel_configuration = SOUND_CHAN_STEREO; 409int channel_configuration = SOUND_CHAN_STEREO;
@@ -475,12 +475,12 @@ static void set_channel_config(void)
475 break; 475 break;
476 } 476 }
477 477
478#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 478#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
479 mas_writemem(MAS_BANK_D0, MAS_D0_OUT_LL, &val_ll, 1); /* LL */ 479 mas_writemem(MAS_BANK_D0, MAS_D0_OUT_LL, &val_ll, 1); /* LL */
480 mas_writemem(MAS_BANK_D0, MAS_D0_OUT_LR, &val_lr, 1); /* LR */ 480 mas_writemem(MAS_BANK_D0, MAS_D0_OUT_LR, &val_lr, 1); /* LR */
481 mas_writemem(MAS_BANK_D0, MAS_D0_OUT_RL, &val_rl, 1); /* RL */ 481 mas_writemem(MAS_BANK_D0, MAS_D0_OUT_RL, &val_rl, 1); /* RL */
482 mas_writemem(MAS_BANK_D0, MAS_D0_OUT_RR, &val_rr, 1); /* RR */ 482 mas_writemem(MAS_BANK_D0, MAS_D0_OUT_RR, &val_rr, 1); /* RR */
483#elif CONFIG_HWCODEC == MAS3507D 483#elif CONFIG_CODEC == MAS3507D
484 mas_writemem(MAS_BANK_D1, 0x7f8, &val_ll, 1); /* LL */ 484 mas_writemem(MAS_BANK_D1, 0x7f8, &val_ll, 1); /* LL */
485 mas_writemem(MAS_BANK_D1, 0x7f9, &val_lr, 1); /* LR */ 485 mas_writemem(MAS_BANK_D1, 0x7f9, &val_lr, 1); /* LR */
486 mas_writemem(MAS_BANK_D1, 0x7fa, &val_rl, 1); /* RL */ 486 mas_writemem(MAS_BANK_D1, 0x7fa, &val_rl, 1); /* RL */
@@ -489,7 +489,7 @@ static void set_channel_config(void)
489} 489}
490#endif /* !SIMULATOR */ 490#endif /* !SIMULATOR */
491 491
492#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 492#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
493unsigned long mdb_shape_shadow = 0; 493unsigned long mdb_shape_shadow = 0;
494unsigned long loudness_shadow = 0; 494unsigned long loudness_shadow = 0;
495#endif 495#endif
@@ -499,7 +499,7 @@ void sound_set(int setting, int value)
499#ifdef SIMULATOR 499#ifdef SIMULATOR
500 setting = value; 500 setting = value;
501#else 501#else
502#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 502#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
503 int tmp; 503 int tmp;
504#endif 504#endif
505 505
@@ -509,30 +509,30 @@ void sound_set(int setting, int value)
509 switch(setting) 509 switch(setting)
510 { 510 {
511 case SOUND_VOLUME: 511 case SOUND_VOLUME:
512#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 512#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
513 tmp = 0x7f00 * value / 100; 513 tmp = 0x7f00 * value / 100;
514 mas_codec_writereg(0x10, tmp & 0xff00); 514 mas_codec_writereg(0x10, tmp & 0xff00);
515#elif (CONFIG_HWCODEC == MAS3507D) || defined HAVE_UDA1380 515#elif (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380
516 current_volume = VOLUME_MIN + (value * VOLUME_RANGE / 100); 516 current_volume = VOLUME_MIN + (value * VOLUME_RANGE / 100);
517 set_prescaled_volume(); /* tenth of dB */ 517 set_prescaled_volume(); /* tenth of dB */
518#endif 518#endif
519 break; 519 break;
520 520
521 case SOUND_BALANCE: 521 case SOUND_BALANCE:
522#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 522#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
523 tmp = ((value * 127 / 100) & 0xff) << 8; 523 tmp = ((value * 127 / 100) & 0xff) << 8;
524 mas_codec_writereg(0x11, tmp & 0xff00); 524 mas_codec_writereg(0x11, tmp & 0xff00);
525#elif CONFIG_HWCODEC == MAS3507D || defined HAVE_UDA1380 525#elif CONFIG_CODEC == MAS3507D || defined HAVE_UDA1380
526 current_balance = value * VOLUME_RANGE / 100; /* tenth of dB */ 526 current_balance = value * VOLUME_RANGE / 100; /* tenth of dB */
527 set_prescaled_volume(); 527 set_prescaled_volume();
528#endif 528#endif
529 break; 529 break;
530 530
531 case SOUND_BASS: 531 case SOUND_BASS:
532#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 532#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
533 tmp = ((value * 8) & 0xff) << 8; 533 tmp = ((value * 8) & 0xff) << 8;
534 mas_codec_writereg(0x14, tmp & 0xff00); 534 mas_codec_writereg(0x14, tmp & 0xff00);
535#elif CONFIG_HWCODEC == MAS3507D 535#elif CONFIG_CODEC == MAS3507D
536 mas_writereg(MAS_REG_KBASS, bass_table[value+15]); 536 mas_writereg(MAS_REG_KBASS, bass_table[value+15]);
537 current_bass = value * 10; 537 current_bass = value * 10;
538 set_prescaled_volume(); 538 set_prescaled_volume();
@@ -544,10 +544,10 @@ void sound_set(int setting, int value)
544 break; 544 break;
545 545
546 case SOUND_TREBLE: 546 case SOUND_TREBLE:
547#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 547#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
548 tmp = ((value * 8) & 0xff) << 8; 548 tmp = ((value * 8) & 0xff) << 8;
549 mas_codec_writereg(0x15, tmp & 0xff00); 549 mas_codec_writereg(0x15, tmp & 0xff00);
550#elif CONFIG_HWCODEC == MAS3507D 550#elif CONFIG_CODEC == MAS3507D
551 mas_writereg(MAS_REG_KTREBLE, treble_table[value+15]); 551 mas_writereg(MAS_REG_KTREBLE, treble_table[value+15]);
552 current_treble = value * 10; 552 current_treble = value * 10;
553 set_prescaled_volume(); 553 set_prescaled_volume();
@@ -558,7 +558,7 @@ void sound_set(int setting, int value)
558#endif 558#endif
559 break; 559 break;
560 560
561#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 561#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
562 case SOUND_LOUDNESS: 562 case SOUND_LOUDNESS:
563 loudness_shadow = (loudness_shadow & 0x04) | 563 loudness_shadow = (loudness_shadow & 0x04) |
564 (MAX(MIN(value * 4, 0x44), 0) << 8); 564 (MAX(MIN(value * 4, 0x44), 0) << 8);
@@ -635,7 +635,7 @@ void sound_set(int setting, int value)
635 635
636int sound_val2phys(int setting, int value) 636int sound_val2phys(int setting, int value)
637{ 637{
638#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 638#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
639 int result = 0; 639 int result = 0;
640 640
641 switch(setting) 641 switch(setting)
@@ -660,7 +660,7 @@ int sound_val2phys(int setting, int value)
660#endif 660#endif
661} 661}
662 662
663#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F) 663#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
664/* This function works by telling the decoder that we have another 664/* This function works by telling the decoder that we have another
665 crystal frequency than we actually have. It will adjust its internal 665 crystal frequency than we actually have. It will adjust its internal
666 parameters and the result is that the audio is played at another pitch. 666 parameters and the result is that the audio is played at another pitch.