Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Separate mas35xx lowlevel stuff. Move SH specific bits to target tree. FS#11189 by me.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28425 a1c6a512-1295-4272-9138-f99709370657

+450 -362
-1
apps/codecs.c
··· 36 36 #include "kernel.h" 37 37 #include "screens.h" 38 38 #include "misc.h" 39 - #include "mas.h" 40 39 #include "codecs.h" 41 40 #include "lang.h" 42 41 #include "keyboard.h"
-1
apps/debug_menu.c
··· 61 61 #include "rtc.h" 62 62 #include "storage.h" 63 63 #include "fat.h" 64 - #include "mas.h" 65 64 #include "eeprom_24cxx.h" 66 65 #if (CONFIG_STORAGE & STORAGE_MMC) || (CONFIG_STORAGE & STORAGE_SD) 67 66 #include "sdmmc.h"
-1
apps/menus/recording_menu.c
··· 49 49 #endif 50 50 #ifdef HAVE_RECORDING 51 51 #include "peakmeter.h" 52 - #include "mas.h" 53 52 #endif 54 53 #include "splash.h" 55 54 #if CONFIG_CODEC == SWCODEC
+2 -2
apps/mpeg.c
··· 45 45 #include "settings.h" 46 46 #ifndef SIMULATOR 47 47 #include "i2c.h" 48 - #include "mas.h" 48 + #include "mas35xx.h" 49 49 #include "system.h" 50 50 #include "usb.h" 51 51 #include "file.h" ··· 53 53 #endif /* !SIMULATOR */ 54 54 #ifdef HAVE_LCD_BITMAP 55 55 #include "lcd.h" 56 - #endif 56 + #endif /* CONFIG_CODEC != SWCODEC */ 57 57 58 58 #define MPEG_SWAP_CHUNKSIZE 0x2000 59 59 #define MPEG_HIGH_WATER 2 /* We leave 2 bytes empty because otherwise we
+1 -1
apps/plugin.h
··· 77 77 #include "recording.h" 78 78 #endif 79 79 #else 80 - #include "mas.h" 80 + #include "mas35xx.h" 81 81 #endif /* CONFIG_CODEC == SWCODEC */ 82 82 #include "settings.h" 83 83 #include "timer.h"
-1
apps/radio/radio.c
··· 23 23 #include <stdio.h> 24 24 #include <stdbool.h> 25 25 #include <stdlib.h> 26 - #include "mas.h" 27 26 #include "settings.h" 28 27 #include "button.h" 29 28 #include "status.h"
-1
apps/recorder/peakmeter.c
··· 22 22 #if defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC) 23 23 #include <stdlib.h> /* sim uses rand for peakmeter simulation */ 24 24 #endif 25 - #include "mas.h" 26 25 #include "thread.h" 27 26 #include "kernel.h" 28 27 #include "settings.h"
+1
apps/recorder/peakmeter.h
··· 22 22 #define __PEAKMETER_H__ 23 23 24 24 #define PEAK_METER_FPS 20 25 + #define MAX_PEAK 0x8000 25 26 26 27 /*#define PM_DEBUG */ 27 28 #ifdef PM_DEBUG
-1
apps/recorder/recording.c
··· 42 42 #include "pcm_record.h" 43 43 #include "recording.h" 44 44 #include "mp3_playback.h" 45 - #include "mas.h" 46 45 #include "button.h" 47 46 #include "kernel.h" 48 47 #include "settings.h"
+9 -13
firmware/SOURCES
··· 175 175 drivers/button.c 176 176 #if (CONFIG_PLATFORM & PLATFORM_NATIVE) 177 177 #ifdef HAVE_DAC3550A 178 - drivers/dac.c 178 + drivers/audio/dac3550a.c 179 179 #endif 180 180 #ifdef HAVE_SERIAL 181 181 drivers/serial.c ··· 289 289 #endif /* BOOTLOADER */ 290 290 291 291 /* Sound */ 292 - #if CONFIG_CODEC != SWCODEC 293 - mp3_playback.c 294 - #endif /* CONFIG_CODEC != SWCODEC */ 295 292 sound.c 296 293 297 294 #if CONFIG_CODEC == SWCODEC ··· 303 300 enc_base.c 304 301 #endif /* HAVE_RECORDING */ 305 302 #endif /* BOOTLOADER */ 306 - 307 - #else /* !SWCODEC */ 308 - 309 - #ifndef BOOTLOADER 310 - #ifndef SIMULATOR 311 - drivers/mas.c 312 - #endif /* SIMULATOR */ 313 - #endif /* BOOTLOADER */ 314 - 315 303 #endif /* SWCODEC */ 316 304 317 305 /* Audio codec */ ··· 574 562 target/sh/archos/player/power-player.c 575 563 target/sh/archos/player/powermgmt-player.c 576 564 target/sh/archos/player/usb-player.c 565 + target/sh/archos/mascodec-archos.c 566 + target/sh/archos/audio-archos.c 577 567 #endif /* SIMULATOR */ 578 568 #endif /* ARCHOS_PLAYER */ 579 569 ··· 588 578 target/sh/archos/recorder/power-recorder.c 589 579 target/sh/archos/recorder/powermgmt-recorder.c 590 580 target/sh/archos/recorder/usb-recorder.c 581 + target/sh/archos/mascodec-archos.c 582 + target/sh/archos/audio-archos.c 591 583 #endif /* SIMULATOR */ 592 584 #endif /* ARCHOS_RECORDER */ 593 585 ··· 602 594 target/sh/archos/fm_v2/power-fm_v2.c 603 595 target/sh/archos/fm_v2/powermgmt-fm_v2.c 604 596 target/sh/archos/fm_v2/usb-fm_v2.c 597 + target/sh/archos/mascodec-archos.c 598 + target/sh/archos/audio-archos.c 605 599 #endif /* SIMULATOR */ 606 600 #endif /* ARCHOS_FMRECORDER || ARCHOS_RECORDERV2 */ 607 601 ··· 614 608 target/sh/archos/ondio/power-ondio.c 615 609 target/sh/archos/ondio/powermgmt-ondio.c 616 610 target/sh/archos/ondio/usb-ondio.c 611 + target/sh/archos/mascodec-archos.c 612 + target/sh/archos/audio-archos.c 617 613 #if (CONFIG_TUNER & TEA5767) 618 614 target/sh/archos/ondio/fmradio_i2c-ondio.c 619 615 #endif
+94 -5
firmware/drivers/audio/mas35xx.c
··· 23 23 ****************************************************************************/ 24 24 25 25 #include "config.h" 26 + #include "system.h" /* MAX MIN macros */ 26 27 #include "audiohw.h" 27 - #include "mas.h" 28 28 29 29 const struct sound_settings_info audiohw_settings[] = { 30 30 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) ··· 56 56 #endif 57 57 }; 58 58 59 - 60 59 int channel_configuration = SOUND_CHAN_STEREO; 61 60 int stereo_width = 100; 61 + 62 + #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 63 + unsigned long mdb_shape_shadow = 0; 64 + unsigned long loudness_shadow = 0; 65 + unsigned long shadow_io_control_main; 66 + #endif 62 67 63 68 64 69 static void set_channel_config(void) ··· 181 186 } 182 187 183 188 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 184 - void audiohw_set_volume(int val) { 189 + void audiohw_set_volume(int val) 190 + { 185 191 unsigned tmp = ((unsigned)(val + 115) & 0xff) << 8; 186 192 mas_codec_writereg(MAS_REG_VOLUME_CONTROL, tmp); 187 193 } 188 194 189 - void audiohw_set_balance(int val) { 195 + void audiohw_set_loudness(int value) 196 + { 197 + loudness_shadow = (loudness_shadow & 0x04) | 198 + (MAX(MIN(value * 4, 0x44), 0) << 8); 199 + mas_codec_writereg(MAS_REG_KLOUDNESS, loudness_shadow); 200 + } 201 + 202 + void audiohw_set_avc(int value) 203 + { 204 + int tmp; 205 + 206 + static const uint16_t avc_vals[] = 207 + { 208 + (0x1 << 8) | (0x8 << 12), /* 20ms */ 209 + (0x2 << 8) | (0x8 << 12), /* 2s */ 210 + (0x4 << 8) | (0x8 << 12), /* 4s */ 211 + (0x8 << 8) | (0x8 << 12), /* 8s */ 212 + }; 213 + switch (value) { 214 + case 1: 215 + case 2: 216 + case 3: 217 + case 4: 218 + tmp = avc_vals[value -1]; 219 + break; 220 + case -1: /* turn off and then turn on again to decay quickly */ 221 + tmp = mas_codec_readreg(MAS_REG_KAVC); 222 + mas_codec_writereg(MAS_REG_KAVC, 0); 223 + break; 224 + default: /* off */ 225 + tmp = 0; 226 + break; 227 + } 228 + mas_codec_writereg(MAS_REG_KAVC, tmp); 229 + } 230 + 231 + void audiohw_set_mdb_strength(int value) 232 + { 233 + mas_codec_writereg(MAS_REG_KMDB_STR, (value & 0x7f) << 8); 234 + } 235 + 236 + void audiohw_set_mdb_harmonics(int value) 237 + { 238 + int tmp = value * 127 / 100; 239 + mas_codec_writereg(MAS_REG_KMDB_HAR, (tmp & 0x7f) << 8); 240 + } 241 + 242 + void audiohw_set_mdb_center(int value) 243 + { 244 + mas_codec_writereg(MAS_REG_KMDB_FC, (value/10) << 8); 245 + } 246 + 247 + void audiohw_set_mdb_shape(int value) 248 + { 249 + mdb_shape_shadow = (mdb_shape_shadow & 0x02) | ((value/10) << 8); 250 + mas_codec_writereg(MAS_REG_KMDB_SWITCH, mdb_shape_shadow); 251 + } 252 + 253 + void audiohw_set_mdb_enable(int value) 254 + { 255 + mdb_shape_shadow = (mdb_shape_shadow & ~0x02) | (value?2:0); 256 + mas_codec_writereg(MAS_REG_KMDB_SWITCH, mdb_shape_shadow); 257 + } 258 + 259 + void audiohw_set_superbass(int value) 260 + { 261 + loudness_shadow = (loudness_shadow & ~0x04) | (value?4:0); 262 + mas_codec_writereg(MAS_REG_KLOUDNESS, loudness_shadow); 263 + } 264 + 265 + void audiohw_set_balance(int val) 266 + { 190 267 unsigned tmp = ((unsigned)(val * 127 / 100) & 0xff) << 8; 191 268 mas_codec_writereg(MAS_REG_BALANCE, tmp); 192 269 } 193 - #endif 270 + 271 + void audiohw_set_pitch(unsigned long val) 272 + { 273 + mas_writemem(MAS_BANK_D0, MAS_D0_OFREQ_CONTROL, &val, 1); 274 + 275 + /* We must tell the MAS that the frequency has changed. 276 + * This will unfortunately cause a short silence. */ 277 + 278 + mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main, 1); 279 + } 280 + 281 + #endif /* CONFIG_CODEC == MAS3587F || CONFIG_CODEC == MAS3539F */ 282 +
+10 -5
firmware/drivers/dac.c firmware/drivers/audio/dac3550a.c
··· 5 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 7 * \/ \/ \/ \/ \/ 8 - * $Id$ 8 + * $Id: dac.c 17847 2008-06-28 18:10:04Z bagder $ 9 9 * 10 10 * Copyright (C) 2002 by Linus Nielsen Feltzing 11 11 * ··· 22 22 #include "stdbool.h" 23 23 #include "i2c.h" 24 24 #include "debug.h" 25 - #include "dac.h" 26 - 27 - #ifdef HAVE_DAC3550A 25 + #include "dac3550a.h" 28 26 29 27 static bool line_in_enabled = false; 30 28 static bool dac_enabled = false; 31 29 30 + /* convert tenth of dB volume (-780..+180) to dac3550 register value */ 31 + int tenthdb2reg(int db) 32 + { 33 + if (db < -540) /* 3 dB steps */ 34 + return (db + 780) / 30; 35 + else /* 1.5 dB steps */ 36 + return (db + 660) / 15; 37 + } 32 38 33 39 int dac_volume(unsigned int left, unsigned int right, bool deemph) 34 40 { ··· 116 122 i2c_end(); 117 123 } 118 124 119 - #endif
+6 -7
firmware/drivers/dac.h firmware/export/dac3550a.h
··· 5 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 7 * \/ \/ \/ \/ \/ 8 - * $Id$ 8 + * $Id: dac.h 24158 2010-01-03 11:31:14Z Buschel $ 9 9 * 10 10 * Copyright (C) 2002 by Linus Nielsen Feltzing 11 11 * ··· 18 18 * KIND, either express or implied. 19 19 * 20 20 ****************************************************************************/ 21 - #ifndef _DAC_H_ 22 - #define _DAC_H_ 21 + #ifndef _DAC3550A_H_ 22 + #define _DAC3550A_H_ 23 23 24 24 #include "config.h" 25 25 26 - #ifdef HAVE_DAC3550A 27 - 28 26 /* 29 27 DAC I2C defs 30 28 */ ··· 38 36 #define DAC_AVOL 2 39 37 #define DAC_GCFG 3 40 38 39 + /* function prototypes */ 40 + extern int tenthdb2reg(int db); 41 41 extern int dac_volume(unsigned int left, unsigned int right, bool deemph); 42 42 extern void dac_enable(bool enable); 43 43 extern void dac_line_in(bool enable); 44 44 extern void dac_init(void); 45 45 46 - #endif 46 + #endif /* _DAC3550A_H_ */ 47 47 48 - #endif
+2 -2
firmware/drivers/mas.c firmware/target/sh/archos/mascodec-archos.c
··· 5 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 7 * \/ \/ \/ \/ \/ 8 - * $Id$ 8 + * $Id: mas.c 18807 2008-10-14 11:12:20Z zagor $ 9 9 * 10 10 * Copyright (C) 2002 by Linus Nielsen Feltzing 11 11 * ··· 23 23 #include "sh7034.h" 24 24 #include "i2c.h" 25 25 #include "debug.h" 26 - #include "mas.h" 26 + #include "mas35xx.h" 27 27 #include "kernel.h" 28 28 #include "system.h" 29 29 #include "hwcompat.h"
+1 -1
firmware/drivers/tuner/s1a0903x01.c
··· 27 27 #include "tuner.h" /* tuner abstraction interface */ 28 28 #include "fmradio.h" /* physical interface driver */ 29 29 #include "sound.h" 30 - #include "mas.h" 30 + #include "mas35xx.h" 31 31 #include "power.h" 32 32 33 33 #define DEFAULT_IN1 0x100003 /* Mute */
+3
firmware/export/audiohw.h
··· 59 59 #include "as3514.h" 60 60 #elif defined(HAVE_MAS35XX) 61 61 #include "mas35xx.h" 62 + #if defined(HAVE_DAC3550A) 63 + #include "dac3550a.h" 64 + #endif /* HAVE_DAC3550A */ 62 65 #elif defined(HAVE_TSC2100) 63 66 #include "tsc2100.h" 64 67 #elif defined(HAVE_JZ4740_CODEC)
-184
firmware/export/mas.h
··· 1 - /*************************************************************************** 2 - * __________ __ ___. 3 - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4 - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5 - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 - * \/ \/ \/ \/ \/ 8 - * $Id$ 9 - * 10 - * Copyright (C) 2002 by Linus Nielsen Feltzing 11 - * 12 - * This program is free software; you can redistribute it and/or 13 - * modify it under the terms of the GNU General Public License 14 - * as published by the Free Software Foundation; either version 2 15 - * of the License, or (at your option) any later version. 16 - * 17 - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 18 - * KIND, either express or implied. 19 - * 20 - ****************************************************************************/ 21 - #ifndef _MAS_H_ 22 - #define _MAS_H_ 23 - 24 - #define MAS_BANK_D0 0 25 - #define MAS_BANK_D1 1 26 - 27 - #define MAX_PEAK 0x8000 28 - 29 - /* 30 - MAS I2C defs 31 - */ 32 - #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 33 - #define MAS_ADR 0x3c 34 - #define MAS_DEV_WRITE (MAS_ADR | 0x00) 35 - #define MAS_DEV_READ (MAS_ADR | 0x01) 36 - 37 - #elif CONFIG_CODEC == MAS3507D 38 - #define MAS_ADR 0x3a 39 - #define MAS_DEV_WRITE (MAS_ADR | 0x00) 40 - #define MAS_DEV_READ (MAS_ADR | 0x01) 41 - #endif 42 - 43 - /* registers..*/ 44 - #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 45 - #define MAS_DATA_WRITE 0x68 46 - #define MAS_DATA_READ 0x69 47 - #define MAS_CODEC_WRITE 0x6c 48 - #define MAS_CODEC_READ 0x6d 49 - #define MAS_CONTROL 0x6a 50 - #define MAS_DCCF 0x76 51 - #define MAS_DCFR 0x77 52 - 53 - #elif CONFIG_CODEC == MAS3507D 54 - #define MAS_DATA_WRITE 0x68 55 - #define MAS_DATA_READ 0x69 56 - #define MAS_CONTROL 0x6a 57 - #endif 58 - 59 - /* 60 - * MAS register 61 - */ 62 - #define MAS_REG_DCCF 0x8e 63 - #define MAS_REG_MUTE 0xaa 64 - #define MAS_REG_PIODATA 0xc8 65 - #define MAS_REG_StartUpConfig 0xe6 66 - #define MAS_REG_KPRESCALE 0xe7 67 - #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 68 - #define MAS_REG_KMDB_SWITCH 0x21 69 - #define MAS_REG_KMDB_STR 0x22 70 - #define MAS_REG_KMDB_HAR 0x23 71 - #define MAS_REG_KMDB_FC 0x24 72 - #define MAS_REG_KLOUDNESS 0x1e 73 - #define MAS_REG_QPEAK_L 0x0a 74 - #define MAS_REG_QPEAK_R 0x0b 75 - #define MAS_REG_DQPEAK_L 0x0c 76 - #define MAS_REG_DQPEAK_R 0x0d 77 - #define MAS_REG_VOLUME_CONTROL 0x10 78 - #define MAS_REG_BALANCE 0x11 79 - #define MAS_REG_KAVC 0x12 80 - #define MAS_REG_KBASS 0x14 81 - #define MAS_REG_KTREBLE 0x15 82 - 83 - #elif CONFIG_CODEC == MAS3507D 84 - #define MAS_REG_KBASS 0x6b 85 - #define MAS_REG_KTREBLE 0x6f 86 - #endif 87 - 88 - /* 89 - * MAS commands 90 - */ 91 - #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 92 - #define MAS_CMD_READ_ANCILLARY 0x50 93 - #define MAS_CMD_FAST_PRG_DL 0x60 94 - #define MAS_CMD_READ_IC_VER 0x70 95 - #define MAS_CMD_READ_REG 0xa0 96 - #define MAS_CMD_WRITE_REG 0xb0 97 - #define MAS_CMD_READ_D0_MEM 0xc0 98 - #define MAS_CMD_READ_D1_MEM 0xd0 99 - #define MAS_CMD_WRITE_D0_MEM 0xe0 100 - #define MAS_CMD_WRITE_D1_MEM 0xf0 101 - 102 - #elif CONFIG_CODEC == MAS3507D 103 - #define MAS_CMD_READ_ANCILLARY 0x30 104 - #define MAS_CMD_WRITE_REG 0x90 105 - #define MAS_CMD_WRITE_D0_MEM 0xa0 106 - #define MAS_CMD_WRITE_D1_MEM 0xb0 107 - #define MAS_CMD_READ_REG 0xd0 108 - #define MAS_CMD_READ_D0_MEM 0xe0 109 - #define MAS_CMD_READ_D1_MEM 0xf0 110 - #endif 111 - 112 - /* 113 - * MAS D0 memory cells (MAS3587F / MAS3539F) 114 - */ 115 - #if CONFIG_CODEC == MAS3587F 116 - #define MAS_D0_APP_SELECT 0x7f6 117 - #define MAS_D0_APP_RUNNING 0x7f7 118 - #define MAS_D0_ENCODER_CONTROL 0x7f0 119 - #define MAS_D0_IO_CONTROL_MAIN 0x7f1 120 - #define MAS_D0_INTERFACE_CONTROL 0x7f2 121 - #define MAS_D0_OFREQ_CONTROL 0x7f3 122 - #define MAS_D0_OUT_CLK_CONFIG 0x7f4 123 - #define MAS_D0_SPD_OUT_BITS 0x7f8 124 - #define MAS_D0_SOFT_MUTE 0x7f9 125 - #define MAS_D0_OUT_LL 0x7fc 126 - #define MAS_D0_OUT_LR 0x7fd 127 - #define MAS_D0_OUT_RL 0x7fe 128 - #define MAS_D0_OUT_RR 0x7ff 129 - #define MAS_D0_MPEG_FRAME_COUNT 0xfd0 130 - #define MAS_D0_MPEG_STATUS_1 0xfd1 131 - #define MAS_D0_MPEG_STATUS_2 0xfd2 132 - #define MAS_D0_CRC_ERROR_COUNT 0xfd3 133 - 134 - #elif CONFIG_CODEC == MAS3539F 135 - #define MAS_D0_APP_SELECT 0x34b 136 - #define MAS_D0_APP_RUNNING 0x34c 137 - /* no encoder :( */ 138 - #define MAS_D0_IO_CONTROL_MAIN 0x346 139 - #define MAS_D0_INTERFACE_CONTROL 0x347 140 - #define MAS_D0_OFREQ_CONTROL 0x348 141 - #define MAS_D0_OUT_CLK_CONFIG 0x349 142 - #define MAS_D0_SPD_OUT_BITS 0x351 143 - #define MAS_D0_SOFT_MUTE 0x350 144 - #define MAS_D0_OUT_LL 0x354 145 - #define MAS_D0_OUT_LR 0x355 146 - #define MAS_D0_OUT_RL 0x356 147 - #define MAS_D0_OUT_RR 0x357 148 - #define MAS_D0_MPEG_FRAME_COUNT 0xfd0 149 - #define MAS_D0_MPEG_STATUS_1 0xfd1 150 - #define MAS_D0_MPEG_STATUS_2 0xfd2 151 - #define MAS_D0_CRC_ERROR_COUNT 0xfd3 152 - 153 - #elif CONFIG_CODEC == MAS3507D 154 - #define MAS_D0_MPEG_FRAME_COUNT 0x300 155 - #define MAS_D0_MPEG_STATUS_1 0x301 156 - #define MAS_D0_MPEG_STATUS_2 0x302 157 - #define MAS_D0_CRC_ERROR_COUNT 0x303 158 - #define MAS_D0_OUT_LL 0x7f8 159 - #define MAS_D0_OUT_LR 0x7f9 160 - #define MAS_D0_OUT_RL 0x7fa 161 - #define MAS_D0_OUT_RR 0x7fb 162 - 163 - #endif 164 - 165 - int mas_default_read(unsigned short *buf); 166 - int mas_run(unsigned short address); 167 - int mas_readmem(int bank, int addr, unsigned long* dest, int len); 168 - int mas_writemem(int bank, int addr, const unsigned long* src, int len); 169 - int mas_readreg(int reg); 170 - int mas_writereg(int reg, unsigned int val); 171 - void mas_reset(void); 172 - int mas_direct_config_read(unsigned char reg); 173 - int mas_direct_config_write(unsigned char reg, unsigned int val); 174 - int mas_codec_writereg(int reg, unsigned int val); 175 - int mas_codec_readreg(int reg); 176 - unsigned long mas_readver(void); 177 - 178 - #endif 179 - 180 - #if CONFIG_TUNER & S1A0903X01 181 - void mas_store_pllfreq(int freq); 182 - int mas_get_pllfreq(void); 183 - #endif 184 -
+148 -14
firmware/export/mas35xx.h
··· 25 25 #define _MAS35XX_H 26 26 27 27 #include "config.h" 28 + #include "mascodec.h" 28 29 29 - #if CONFIG_CODEC == MAS3507D 30 + #define MAS_BANK_D0 0 31 + #define MAS_BANK_D1 1 30 32 31 - #define VOLUME_MIN -780 32 - #define VOLUME_MAX 180 33 - #define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | PRESCALER_CAP) 33 + /* registers common to all MAS35xx */ 34 + #define MAS_REG_DCCF 0x8e 35 + #define MAS_REG_MUTE 0xaa 36 + #define MAS_REG_PIODATA 0xc8 37 + #define MAS_REG_StartUpConfig 0xe6 38 + #define MAS_REG_KPRESCALE 0xe7 34 39 35 - #else /* CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F */ 40 + #if CONFIG_CODEC == MAS3507D 36 41 37 - /* MAS3587F and MAS3539F handle clipping prevention internally so we do not need 38 - * the prescaler -> CLIPPING_CAP 39 - */ 42 + /* I2C defines */ 43 + #define MAS_ADR 0x3a 44 + #define MAS_DEV_WRITE (MAS_ADR | 0x00) 45 + #define MAS_DEV_READ (MAS_ADR | 0x01) 40 46 41 - #define VOLUME_MIN -400 42 - #define VOLUME_MAX 600 43 - #define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | BALANCE_CAP | CLIPPING_CAP) 47 + /* MAS3507D registers */ 48 + #define MAS_DATA_WRITE 0x68 49 + #define MAS_DATA_READ 0x69 50 + #define MAS_CONTROL 0x6a 44 51 45 - #endif 52 + #define MAS_REG_KBASS 0x6b 53 + #define MAS_REG_KTREBLE 0x6f 46 54 55 + /* MAS3507D commands */ 56 + #define MAS_CMD_READ_ANCILLARY 0x30 57 + #define MAS_CMD_WRITE_REG 0x90 58 + #define MAS_CMD_WRITE_D0_MEM 0xa0 59 + #define MAS_CMD_WRITE_D1_MEM 0xb0 60 + #define MAS_CMD_READ_REG 0xd0 61 + #define MAS_CMD_READ_D0_MEM 0xe0 62 + #define MAS_CMD_READ_D1_MEM 0xf0 47 63 48 - #if CONFIG_CODEC == MAS3507D 64 + /* MAS3507D D0 memmory cells */ 65 + #define MAS_D0_MPEG_FRAME_COUNT 0x300 66 + #define MAS_D0_MPEG_STATUS_1 0x301 67 + #define MAS_D0_MPEG_STATUS_2 0x302 68 + #define MAS_D0_CRC_ERROR_COUNT 0x303 69 + #define MAS_D0_OUT_LL 0x7f8 70 + #define MAS_D0_OUT_LR 0x7f9 71 + #define MAS_D0_OUT_RL 0x7fa 72 + #define MAS_D0_OUT_RR 0x7fb 73 + 74 + #define VOLUME_MIN -780 75 + #define VOLUME_MAX 180 76 + #define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | PRESCALER_CAP) 49 77 50 78 static const unsigned int bass_table[] = 51 79 { ··· 136 164 0xe6800, /* 14dB */ 137 165 0xe9400 /* 15dB */ 138 166 }; 139 - #endif /*CONFIG_CODEC == MAS3507D*/ 167 + 168 + #else /* CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F */ 169 + 170 + /* I2C defines */ 171 + #define MAS_ADR 0x3c 172 + #define MAS_DEV_WRITE (MAS_ADR | 0x00) 173 + #define MAS_DEV_READ (MAS_ADR | 0x01) 174 + 175 + /* MAS3587F/MAS3539F registers */ 176 + #define MAS_DATA_WRITE 0x68 177 + #define MAS_DATA_READ 0x69 178 + #define MAS_CODEC_WRITE 0x6c 179 + #define MAS_CODEC_READ 0x6d 180 + #define MAS_CONTROL 0x6a 181 + #define MAS_DCCF 0x76 182 + #define MAS_DCFR 0x77 183 + 184 + #define MAS_REG_KMDB_SWITCH 0x21 185 + #define MAS_REG_KMDB_STR 0x22 186 + #define MAS_REG_KMDB_HAR 0x23 187 + #define MAS_REG_KMDB_FC 0x24 188 + #define MAS_REG_KLOUDNESS 0x1e 189 + #define MAS_REG_QPEAK_L 0x0a 190 + #define MAS_REG_QPEAK_R 0x0b 191 + #define MAS_REG_DQPEAK_L 0x0c 192 + #define MAS_REG_DQPEAK_R 0x0d 193 + #define MAS_REG_VOLUME_CONTROL 0x10 194 + #define MAS_REG_BALANCE 0x11 195 + #define MAS_REG_KAVC 0x12 196 + #define MAS_REG_KBASS 0x14 197 + #define MAS_REG_KTREBLE 0x15 198 + 199 + /* MAS3587F/MAS3539F commands */ 200 + #define MAS_CMD_READ_ANCILLARY 0x50 201 + #define MAS_CMD_FAST_PRG_DL 0x60 202 + #define MAS_CMD_READ_IC_VER 0x70 203 + #define MAS_CMD_READ_REG 0xa0 204 + #define MAS_CMD_WRITE_REG 0xb0 205 + #define MAS_CMD_READ_D0_MEM 0xc0 206 + #define MAS_CMD_READ_D1_MEM 0xd0 207 + #define MAS_CMD_WRITE_D0_MEM 0xe0 208 + #define MAS_CMD_WRITE_D1_MEM 0xf0 209 + 210 + /* MAS3587F D0 memory cells */ 211 + #if CONFIG_CODEC == MAS3587F 212 + #define MAS_D0_APP_SELECT 0x7f6 213 + #define MAS_D0_APP_RUNNING 0x7f7 214 + #define MAS_D0_ENCODER_CONTROL 0x7f0 215 + #define MAS_D0_IO_CONTROL_MAIN 0x7f1 216 + #define MAS_D0_INTERFACE_CONTROL 0x7f2 217 + #define MAS_D0_OFREQ_CONTROL 0x7f3 218 + #define MAS_D0_OUT_CLK_CONFIG 0x7f4 219 + #define MAS_D0_SPD_OUT_BITS 0x7f8 220 + #define MAS_D0_SOFT_MUTE 0x7f9 221 + #define MAS_D0_OUT_LL 0x7fc 222 + #define MAS_D0_OUT_LR 0x7fd 223 + #define MAS_D0_OUT_RL 0x7fe 224 + #define MAS_D0_OUT_RR 0x7ff 225 + #define MAS_D0_MPEG_FRAME_COUNT 0xfd0 226 + #define MAS_D0_MPEG_STATUS_1 0xfd1 227 + #define MAS_D0_MPEG_STATUS_2 0xfd2 228 + #define MAS_D0_CRC_ERROR_COUNT 0xfd3 229 + 230 + /* MAS3539F D0 memory cells */ 231 + #elif CONFIG_CODEC == MAS3539F 232 + #define MAS_D0_APP_SELECT 0x34b 233 + #define MAS_D0_APP_RUNNING 0x34c 234 + /* no encoder :( */ 235 + #define MAS_D0_IO_CONTROL_MAIN 0x346 236 + #define MAS_D0_INTERFACE_CONTROL 0x347 237 + #define MAS_D0_OFREQ_CONTROL 0x348 238 + #define MAS_D0_OUT_CLK_CONFIG 0x349 239 + #define MAS_D0_SPD_OUT_BITS 0x351 240 + #define MAS_D0_SOFT_MUTE 0x350 241 + #define MAS_D0_OUT_LL 0x354 242 + #define MAS_D0_OUT_LR 0x355 243 + #define MAS_D0_OUT_RL 0x356 244 + #define MAS_D0_OUT_RR 0x357 245 + #define MAS_D0_MPEG_FRAME_COUNT 0xfd0 246 + #define MAS_D0_MPEG_STATUS_1 0xfd1 247 + #define MAS_D0_MPEG_STATUS_2 0xfd2 248 + #define MAS_D0_CRC_ERROR_COUNT 0xfd3 249 + #endif 250 + 251 + /* MAS3587F and MAS3539F handle clipping prevention internally so we do not need 252 + * the prescaler -> CLIPPING_CAP 253 + */ 254 + 255 + #define VOLUME_MIN -400 256 + #define VOLUME_MAX 600 257 + #define AUDIOHW_CAPS (BASS_CAP | TREBLE_CAP | BALANCE_CAP | CLIPPING_CAP) 258 + 259 + #endif /* CONFIG_CODEC */ 260 + 261 + /* Function prototypes */ 262 + #if CONFIG_CODEC == MAS3587F || CONFIG_CODEC == MAS3539F 263 + extern void audiohw_set_loudness(int value); 264 + extern void audiohw_set_avc(int value); 265 + extern void audiohw_set_mdb_strength(int value); 266 + extern void audiohw_set_mdb_harmonics(int value); 267 + extern void audiohw_set_mdb_center(int value); 268 + extern void audiohw_set_mdb_shape(int value); 269 + extern void audiohw_set_mdb_enable(int value); 270 + extern void audiohw_set_superbass(int value); 271 + extern void audiohw_set_balance(int val); 272 + extern void audiohw_set_pitch(unsigned long val); 273 + #endif 140 274 141 275 #endif /* _MAS35XX_H */
+43
firmware/export/mascodec.h
··· 1 + /*************************************************************************** 2 + * __________ __ ___. 3 + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4 + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5 + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 + * \/ \/ \/ \/ \/ 8 + * $Id: mas.h 24154 2010-01-03 10:27:43Z Buschel $ 9 + * 10 + * Copyright (C) 2002 by Linus Nielsen Feltzing 11 + * 12 + * This program is free software; you can redistribute it and/or 13 + * modify it under the terms of the GNU General Public License 14 + * as published by the Free Software Foundation; either version 2 15 + * of the License, or (at your option) any later version. 16 + * 17 + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 18 + * KIND, either express or implied. 19 + * 20 + ****************************************************************************/ 21 + #ifndef _MASCODEC_H_ 22 + #define _MASCODEC_H_ 23 + 24 + int mas_default_read(unsigned short *buf); 25 + int mas_run(unsigned short address); 26 + int mas_readmem(int bank, int addr, unsigned long* dest, int len); 27 + int mas_writemem(int bank, int addr, const unsigned long* src, int len); 28 + int mas_readreg(int reg); 29 + int mas_writereg(int reg, unsigned int val); 30 + void mas_reset(void); 31 + int mas_direct_config_read(unsigned char reg); 32 + int mas_direct_config_write(unsigned char reg, unsigned int val); 33 + int mas_codec_writereg(int reg, unsigned int val); 34 + int mas_codec_readreg(int reg); 35 + unsigned long mas_readver(void); 36 + 37 + #endif 38 + 39 + #if CONFIG_TUNER & S1A0903X01 40 + void mas_store_pllfreq(int freq); 41 + int mas_get_pllfreq(void); 42 + #endif 43 +
-55
firmware/mp3_playback.c firmware/target/sh/archos/audio-archos.c
··· 28 28 #include <kernel.h> 29 29 #include "mp3_playback.h" 30 30 #include "sound.h" 31 - #ifndef SIMULATOR 32 31 #include "i2c.h" 33 - #include "mas.h" 34 - #include "dac.h" 35 32 #include "system.h" 36 - #endif 37 33 #include "audiohw.h" 38 34 39 35 /* hacking into mpeg.c, recording is still there */ ··· 56 52 static bool paused; /* playback is paused */ 57 53 static bool playing; /* We are playing an MP3 stream */ 58 54 59 - #ifndef SIMULATOR 60 55 /* for measuring the play time */ 61 56 static long playstart_tick; 62 57 static long cumulative_ticks; 63 58 64 59 /* the registered callback function to ask for more mp3 data */ 65 60 static void (*callback_for_more)(unsigned char**, size_t*); 66 - #endif /* #ifndef SIMULATOR */ 67 61 68 62 /* list of tracks in memory */ 69 63 #define MAX_ID3_TAGS (1<<4) /* Must be power of 2 */ ··· 76 70 /* dirty calls to mpeg.c */ 77 71 extern void playback_tick(void); 78 72 extern void rec_tick(void); 79 - 80 - #ifndef SIMULATOR 81 73 82 74 unsigned long mas_version_code; 83 75 ··· 132 124 TSTR |= 0x02; /* Start timer 1 */ 133 125 } 134 126 #endif 135 - 136 127 137 128 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 138 129 void demand_irq_enable(bool on) ··· 328 319 DEBUGF("MAS Decoding application started\n"); 329 320 } 330 321 #endif /* #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */ 331 - #endif /* SIMULATOR */ 332 322 333 323 void mp3_init(int volume, int bass, int treble, int balance, int loudness, 334 324 int avc, int channel_config, int stereo_width, ··· 336 326 int mdb_center, int mdb_shape, bool mdb_enable, 337 327 bool superbass) 338 328 { 339 - #ifdef SIMULATOR 340 - (void)volume; 341 - (void)bass; 342 - (void)treble; 343 - (void)balance; 344 - (void)loudness; 345 - (void)avc; 346 - (void)channel_config; 347 - (void)stereo_width; 348 - (void)mdb_strength; 349 - (void)mdb_harmonics; 350 - (void)mdb_center; 351 - (void)mdb_shape; 352 - (void)mdb_enable; 353 - (void)superbass; 354 - audio_is_initialized = true; 355 - #else 356 329 #if CONFIG_CODEC == MAS3507D 357 330 unsigned long val; 358 331 (void)loudness; ··· 469 442 sound_set(SOUND_MDB_ENABLE, mdb_enable); 470 443 sound_set(SOUND_SUPERBASS, superbass); 471 444 #endif 472 - #endif /* !SIMULATOR */ 473 445 474 446 playing = false; 475 447 paused = true; ··· 477 449 478 450 void mp3_shutdown(void) 479 451 { 480 - #ifndef SIMULATOR 481 452 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 482 453 unsigned long val = 1; 483 454 mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &val, 1); /* Mute */ ··· 486 457 #if CONFIG_CODEC == MAS3507D 487 458 dac_volume(0, 0, false); 488 459 #endif 489 - 490 - #endif 491 460 } 492 461 493 462 /* new functions, to be exported to plugin API */ 494 - 495 - #ifndef SIMULATOR 496 463 497 464 void mp3_play_init(void) 498 465 { ··· 594 561 { 595 562 return (unsigned char*)SAR3; 596 563 } 597 - #else /* #ifndef SIMULATOR */ 598 - 599 - void mp3_play_pause(bool play) 600 - { 601 - (void)play; 602 - } 603 - void mp3_play_stop(void) 604 - { 605 - } 606 - 607 - unsigned char* mp3_get_pos(void) 608 - { 609 - return NULL; 610 - } 611 - 612 - void mp3_play_data(const unsigned char* start, int size, 613 - void (*get_more)(unsigned char** start, size_t* size) /* callback fn */ 614 - ) 615 - { 616 - (void)start; (void)size; (void)get_more; 617 - } 618 - #endif
+21 -64
firmware/sound.c
··· 26 26 #include "logf.h" 27 27 #include "system.h" 28 28 #include "i2c.h" 29 - #include "mas.h" 30 29 #if (CONFIG_PLATFORM & PLATFORM_NATIVE) 31 30 #if CONFIG_CPU == PNX0101 32 31 #include "pnx0101.h" 33 - #endif 34 - #include "dac.h" 32 + #endif /* CONFIG_CPU == PNX101 */ 35 33 #if CONFIG_CODEC == SWCODEC 36 34 #include "pcm.h" 37 - #endif 35 + #else /* !CONFIG_CODEC == HWCODEC */ 36 + #include "mas35xx.h" 37 + #include "dac3550a.h" 38 38 #endif 39 + #endif /* !SIMULATOR */ 39 40 40 41 /* TODO 41 42 * find a nice way to handle 1.5db steps -> see wm8751 ifdef in sound_set_bass/treble ··· 162 163 } 163 164 #endif 164 165 165 - #if (CONFIG_CODEC == MAS3507D) && !defined(SIMULATOR) 166 - /* convert tenth of dB volume (-780..+180) to dac3550 register value */ 167 - static int tenthdb2reg(int db) 168 - { 169 - if (db < -540) /* 3 dB steps */ 170 - return (db + 780) / 30; 171 - else /* 1.5 dB steps */ 172 - return (db + 660) / 15; 173 - } 174 - #endif 175 - 176 - 177 166 #if !defined(AUDIOHW_HAVE_CLIPPING) 178 167 /* 179 168 * The prescaler compensates for any kind of boosts, to prevent clipping. ··· 281 270 #endif /* !HAVE_SDL_AUDIO */ 282 271 } 283 272 #endif /* (CONFIG_CODEC == MAS3507D) || defined HAVE_UDA1380 */ 284 - 285 - 286 - #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 287 - static unsigned long mdb_shape_shadow = 0; 288 - static unsigned long loudness_shadow = 0; 289 - #endif 290 273 291 274 void sound_set_volume(int value) 292 275 { ··· 620 603 { 621 604 if(!audio_is_initialized) 622 605 return; 623 - loudness_shadow = (loudness_shadow & 0x04) | 624 - (MAX(MIN(value * 4, 0x44), 0) << 8); 625 - mas_codec_writereg(MAS_REG_KLOUDNESS, loudness_shadow); 606 + 607 + audiohw_set_loudness(value); 626 608 } 627 609 628 610 void sound_set_avc(int value) 629 611 { 630 612 if(!audio_is_initialized) 631 613 return; 632 - int tmp; 633 614 634 - static const uint16_t avc_vals[] = 635 - { 636 - (0x1 << 8) | (0x8 << 12), /* 20ms */ 637 - (0x2 << 8) | (0x8 << 12), /* 2s */ 638 - (0x4 << 8) | (0x8 << 12), /* 4s */ 639 - (0x8 << 8) | (0x8 << 12), /* 8s */ 640 - }; 641 - switch (value) { 642 - case 1: 643 - case 2: 644 - case 3: 645 - case 4: 646 - tmp = avc_vals[value -1]; 647 - break; 648 - case -1: /* turn off and then turn on again to decay quickly */ 649 - tmp = mas_codec_readreg(MAS_REG_KAVC); 650 - mas_codec_writereg(MAS_REG_KAVC, 0); 651 - break; 652 - default: /* off */ 653 - tmp = 0; 654 - break; 655 - } 656 - mas_codec_writereg(MAS_REG_KAVC, tmp); 615 + audiohw_set_avc(value); 657 616 } 658 617 659 618 void sound_set_mdb_strength(int value) 660 619 { 661 620 if(!audio_is_initialized) 662 621 return; 663 - mas_codec_writereg(MAS_REG_KMDB_STR, (value & 0x7f) << 8); 622 + 623 + audiohw_set_mdb_strength(value); 664 624 } 665 625 666 626 void sound_set_mdb_harmonics(int value) 667 627 { 668 628 if(!audio_is_initialized) 669 629 return; 670 - int tmp = value * 127 / 100; 671 - mas_codec_writereg(MAS_REG_KMDB_HAR, (tmp & 0x7f) << 8); 630 + 631 + audiohw_set_mdb_harmonics(value); 672 632 } 673 633 674 634 void sound_set_mdb_center(int value) 675 635 { 676 636 if(!audio_is_initialized) 677 637 return; 678 - mas_codec_writereg(MAS_REG_KMDB_FC, (value/10) << 8); 638 + 639 + audiohw_set_mdb_center(value); 679 640 } 680 641 681 642 void sound_set_mdb_shape(int value) 682 643 { 683 644 if(!audio_is_initialized) 684 645 return; 685 - mdb_shape_shadow = (mdb_shape_shadow & 0x02) | ((value/10) << 8); 686 - mas_codec_writereg(MAS_REG_KMDB_SWITCH, mdb_shape_shadow); 646 + 647 + audiohw_set_mdb_shape(value); 687 648 } 688 649 689 650 void sound_set_mdb_enable(int value) 690 651 { 691 652 if(!audio_is_initialized) 692 653 return; 693 - mdb_shape_shadow = (mdb_shape_shadow & ~0x02) | (value?2:0); 694 - mas_codec_writereg(MAS_REG_KMDB_SWITCH, mdb_shape_shadow); 654 + 655 + audiohw_set_mdb_enable(value); 695 656 } 696 657 697 658 void sound_set_superbass(int value) 698 659 { 699 660 if(!audio_is_initialized) 700 661 return; 701 - loudness_shadow = (loudness_shadow & ~0x04) | (value?4:0); 702 - mas_codec_writereg(MAS_REG_KLOUDNESS, loudness_shadow); 662 + 663 + audiohw_set_superbass(value); 703 664 } 704 665 #endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */ 705 666 ··· 847 808 /* Calculate the new (bogus) frequency */ 848 809 val = 18432 * PITCH_SPEED_100 / pitch; 849 810 850 - mas_writemem(MAS_BANK_D0, MAS_D0_OFREQ_CONTROL, &val, 1); 851 - 852 - /* We must tell the MAS that the frequency has changed. 853 - * This will unfortunately cause a short silence. */ 854 - mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main, 1); 811 + audiohw_set_pitch(val); 855 812 856 813 last_pitch = pitch; 857 814 }
+2 -2
firmware/test/i2c/main.c
··· 46 46 47 47 #include "i2c.h" 48 48 49 - #include "mas.h" 49 + #include "mas35xx.h" 50 50 51 - #include "dac.h" 51 + #include "dac3550a.h" 52 52 53 53 #include "sh7034.h" 54 54
+107 -1
uisimulator/common/stubs.c
··· 40 40 { 41 41 (void)seconds; 42 42 } 43 - #endif 43 + 44 + /* firmware/target/sh/archos/audio-archos.c */ 45 + 46 + /* list of tracks in memory */ 47 + #define MAX_ID3_TAGS (1<<4) /* Must be power of 2 */ 48 + #define MAX_ID3_TAGS_MASK (MAX_ID3_TAGS - 1) 49 + 50 + static bool paused; /* playback is paused */ 51 + static bool playing; /* We are playing an MP3 stream */ 52 + 53 + bool audio_is_initialized = false; 54 + 55 + void mp3_init(int volume, int bass, int treble, int balance, int loudness, 56 + int avc, int channel_config, int stereo_width, 57 + int mdb_strength, int mdb_harmonics, 58 + int mdb_center, int mdb_shape, bool mdb_enable, 59 + bool superbass) 60 + { 61 + (void)volume; 62 + (void)bass; 63 + (void)treble; 64 + (void)balance; 65 + (void)loudness; 66 + (void)avc; 67 + (void)channel_config; 68 + (void)stereo_width; 69 + (void)mdb_strength; 70 + (void)mdb_harmonics; 71 + (void)mdb_center; 72 + (void)mdb_shape; 73 + (void)mdb_enable; 74 + (void)superbass; 75 + audio_is_initialized = true; 76 + 77 + playing = false; 78 + paused = true; 79 + } 80 + 81 + void mp3_play_pause(bool play) 82 + { 83 + (void)play; 84 + } 85 + 86 + void mp3_play_stop(void) 87 + { 88 + } 89 + 90 + unsigned char* mp3_get_pos(void) 91 + { 92 + return NULL; 93 + } 94 + 95 + void mp3_play_data(const unsigned char* start, int size, 96 + void (*get_more)(unsigned char** start, size_t* size) /* callback fn */ 97 + ) 98 + { 99 + (void)start; (void)size; (void)get_more; 100 + } 101 + 102 + /* firmware/drivers/audio/mas35xx.c */ 103 + #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 104 + void audiohw_set_loudness(int value) 105 + { 106 + (void)value; 107 + } 108 + 109 + void audiohw_set_avc(int value) 110 + { 111 + (void)value; 112 + } 113 + 114 + void audiohw_set_mdb_strength(int value) 115 + { 116 + (void)value; 117 + } 118 + 119 + void audiohw_set_mdb_harmonics(int value) 120 + { 121 + (void)value; 122 + } 123 + 124 + void audiohw_set_mdb_center(int value) 125 + { 126 + (void)value; 127 + } 128 + 129 + void audiohw_set_mdb_shape(int value) 130 + { 131 + (void)value; 132 + } 133 + 134 + void audiohw_set_mdb_enable(int value) 135 + { 136 + (void)value; 137 + } 138 + 139 + void audiohw_set_superbass(int value) 140 + { 141 + (void)value; 142 + } 143 + 144 + void audiohw_set_pitch(unsigned long value) 145 + { 146 + (void)value; 147 + } 148 + #endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */ 149 + #endif /* CODEC != SWCODEC */ 44 150 45 151 int fat_startsector(void) 46 152 {