forked from len0rd/rockbox
More iAudio M3 work. Target build compiles, but same problem regarding plugins as the simulator. Boots to the menu, but it can't be used yet because only main & remote Play button work. USB works.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16660 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
422454c87d
commit
8a6291dd63
12 changed files with 243 additions and 11 deletions
|
|
@ -1002,6 +1002,9 @@ static bool dbg_spdif(void)
|
||||||
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
|
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
|
||||||
# define DEBUG_CANCEL BUTTON_REC
|
# define DEBUG_CANCEL BUTTON_REC
|
||||||
|
|
||||||
|
#elif (CONFIG_KEYPAD == IAUDIO_M3_PAD)
|
||||||
|
# define DEBUG_CANCEL BUTTON_RC_REC
|
||||||
|
|
||||||
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
|
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
|
||||||
# define DEBUG_CANCEL BUTTON_REW
|
# define DEBUG_CANCEL BUTTON_REW
|
||||||
|
|
||||||
|
|
@ -2050,7 +2053,7 @@ static bool dbg_save_roms(void)
|
||||||
fd = creat("/internal_rom_000000-1FFFFF.bin");
|
fd = creat("/internal_rom_000000-1FFFFF.bin");
|
||||||
#elif defined(IRIVER_H300_SERIES)
|
#elif defined(IRIVER_H300_SERIES)
|
||||||
fd = creat("/internal_rom_000000-3FFFFF.bin");
|
fd = creat("/internal_rom_000000-3FFFFF.bin");
|
||||||
#elif defined(IAUDIO_X5) || defined(IAUDIO_M5)
|
#elif defined(IAUDIO_X5) || defined(IAUDIO_M5) || defined(IAUDIO_M3)
|
||||||
fd = creat("/internal_rom_000000-3FFFFF.bin");
|
fd = creat("/internal_rom_000000-3FFFFF.bin");
|
||||||
#endif
|
#endif
|
||||||
if(fd >= 0)
|
if(fd >= 0)
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ OUTPUT_FORMAT(elf32-sh)
|
||||||
#define ARCH_IRIVER
|
#define ARCH_IRIVER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ARCH_IRIVER
|
#if defined(ARCH_IRIVER) || defined(IAUDIO_M3)
|
||||||
#define DRAMORIG 0x31000000
|
#define DRAMORIG 0x31000000
|
||||||
#define IRAMORIG 0x1000c000
|
#define IRAMORIG 0x1000c000
|
||||||
#define IRAMSIZE 0xc000
|
#define IRAMSIZE 0xc000
|
||||||
|
|
|
||||||
|
|
@ -496,13 +496,19 @@ target/coldfire/iaudio/m5/audio-m5.c
|
||||||
#ifdef IAUDIO_M3
|
#ifdef IAUDIO_M3
|
||||||
#ifndef SIMULATOR
|
#ifndef SIMULATOR
|
||||||
target/coldfire/ata-as-coldfire.S
|
target/coldfire/ata-as-coldfire.S
|
||||||
|
target/coldfire/iaudio/m3/adc-m3.c
|
||||||
target/coldfire/iaudio/m3/ata-m3.c
|
target/coldfire/iaudio/m3/ata-m3.c
|
||||||
target/coldfire/iaudio/m3/backlight-m3.c
|
target/coldfire/iaudio/m3/backlight-m3.c
|
||||||
target/coldfire/iaudio/m3/button-m3.c
|
target/coldfire/iaudio/m3/button-m3.c
|
||||||
|
target/coldfire/iaudio/m3/fmradio_i2c-m3.c
|
||||||
target/coldfire/iaudio/m3/lcd-m3.c
|
target/coldfire/iaudio/m3/lcd-m3.c
|
||||||
target/coldfire/iaudio/m3/power-m3.c
|
target/coldfire/iaudio/m3/power-m3.c
|
||||||
target/coldfire/iaudio/m3/system-m3.c
|
target/coldfire/iaudio/m3/system-m3.c
|
||||||
|
target/coldfire/iaudio/m3/usb-m3.c
|
||||||
target/coldfire/iaudio/powermgmt-iaudio.c
|
target/coldfire/iaudio/powermgmt-iaudio.c
|
||||||
|
#ifndef BOOTLOADER
|
||||||
|
target/coldfire/iaudio/m3/audio-m3.c
|
||||||
|
#endif
|
||||||
#endif /* SIMULATOR */
|
#endif /* SIMULATOR */
|
||||||
#endif /* IAUDIO_M3 */
|
#endif /* IAUDIO_M3 */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
/* Define bitmask of input sources - recordable bitmask can be defined
|
/* Define bitmask of input sources - recordable bitmask can be defined
|
||||||
explicitly if different */
|
explicitly if different */
|
||||||
#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN)
|
#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN | SRC_CAP_FMRADIO)
|
||||||
|
|
||||||
/* define the bitmask of hardware sample rates */
|
/* define the bitmask of hardware sample rates */
|
||||||
#define HW_SAMPR_CAPS (SAMPR_CAP_88 | SAMPR_CAP_44 | SAMPR_CAP_22 | SAMPR_CAP_11)
|
#define HW_SAMPR_CAPS (SAMPR_CAP_88 | SAMPR_CAP_44 | SAMPR_CAP_22 | SAMPR_CAP_11)
|
||||||
|
|
@ -72,6 +72,10 @@
|
||||||
/* The number of bytes reserved for loadable plugins */
|
/* The number of bytes reserved for loadable plugins */
|
||||||
#define PLUGIN_BUFFER_SIZE 0x80000
|
#define PLUGIN_BUFFER_SIZE 0x80000
|
||||||
|
|
||||||
|
/* FM Tuner */
|
||||||
|
#define CONFIG_TUNER TEA5767
|
||||||
|
#define CONFIG_TUNER_XTAL 32768
|
||||||
|
|
||||||
#define HAVE_TLV320
|
#define HAVE_TLV320
|
||||||
|
|
||||||
/* TLV320 has no tone controls, so we use the software ones */
|
/* TLV320 has no tone controls, so we use the software ones */
|
||||||
|
|
@ -131,6 +135,9 @@
|
||||||
|
|
||||||
#endif /* SIMULATOR */
|
#endif /* SIMULATOR */
|
||||||
|
|
||||||
|
/* Define this for FM radio input available */
|
||||||
|
#define HAVE_FMRADIO_IN
|
||||||
|
|
||||||
/** Port-specific settings **/
|
/** Port-specific settings **/
|
||||||
|
|
||||||
/* Main LCD contrast range and defaults */
|
/* Main LCD contrast range and defaults */
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,11 @@ INPUT(target/coldfire/crt0.o)
|
||||||
|
|
||||||
#define DRAMORIG 0x31000000 + STUBOFFSET
|
#define DRAMORIG 0x31000000 + STUBOFFSET
|
||||||
#define IRAMORIG 0x10000000
|
#define IRAMORIG 0x10000000
|
||||||
|
#ifdef IAUDIO_M3
|
||||||
|
#define IRAMSIZE 0xc000
|
||||||
|
#else
|
||||||
#define IRAMSIZE 0x10000
|
#define IRAMSIZE 0x10000
|
||||||
|
#endif
|
||||||
|
|
||||||
/* End of the audio buffer, where the codec buffer starts */
|
/* End of the audio buffer, where the codec buffer starts */
|
||||||
#define ENDAUDIOADDR (DRAMORIG + DRAMSIZE)
|
#define ENDAUDIOADDR (DRAMORIG + DRAMSIZE)
|
||||||
|
|
|
||||||
32
firmware/target/coldfire/iaudio/m3/adc-m3.c
Normal file
32
firmware/target/coldfire/iaudio/m3/adc-m3.c
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* __________ __ ___.
|
||||||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
* \/ \/ \/ \/ \/
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 by Jens Arnold
|
||||||
|
*
|
||||||
|
* All files in this archive are subject to the GNU General Public License.
|
||||||
|
* See the file COPYING in the source tree root for full license agreement.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include "cpu.h"
|
||||||
|
#include "system.h"
|
||||||
|
#include "kernel.h"
|
||||||
|
#include "thread.h"
|
||||||
|
#include "adc.h"
|
||||||
|
|
||||||
|
unsigned short adc_scan(int channel)
|
||||||
|
{
|
||||||
|
/* TODO */
|
||||||
|
(void)channel;
|
||||||
|
return 0xff;
|
||||||
|
}
|
||||||
114
firmware/target/coldfire/iaudio/m3/audio-m3.c
Normal file
114
firmware/target/coldfire/iaudio/m3/audio-m3.c
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* __________ __ ___.
|
||||||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
* \/ \/ \/ \/ \/
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 by Michael Sevakis
|
||||||
|
*
|
||||||
|
* All files in this archive are subject to the GNU General Public License.
|
||||||
|
* See the file COPYING in the source tree root for full license agreement.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include "system.h"
|
||||||
|
#include "cpu.h"
|
||||||
|
#include "audio.h"
|
||||||
|
#include "sound.h"
|
||||||
|
|
||||||
|
void audio_set_output_source(int source)
|
||||||
|
{
|
||||||
|
int level = set_irq_level(DMA_IRQ_LEVEL);
|
||||||
|
unsigned long txsrc;
|
||||||
|
|
||||||
|
if ((unsigned)source >= AUDIO_NUM_SOURCES)
|
||||||
|
txsrc = (3 << 8); /* playback, PDOR3 */
|
||||||
|
else
|
||||||
|
txsrc = (4 << 8); /* recording, iis1RcvData */
|
||||||
|
|
||||||
|
IIS1CONFIG = (IIS1CONFIG & ~(7 << 8)) | txsrc;
|
||||||
|
set_irq_level(level);
|
||||||
|
} /* audio_set_output_source */
|
||||||
|
|
||||||
|
void audio_input_mux(int source, unsigned flags)
|
||||||
|
{
|
||||||
|
/* Prevent pops from unneeded switching */
|
||||||
|
static int last_source = AUDIO_SRC_PLAYBACK;
|
||||||
|
static bool last_recording = false;
|
||||||
|
|
||||||
|
bool recording = flags & SRCF_RECORDING;
|
||||||
|
|
||||||
|
switch (source)
|
||||||
|
{
|
||||||
|
default: /* playback - no recording */
|
||||||
|
source = AUDIO_SRC_PLAYBACK;
|
||||||
|
case AUDIO_SRC_PLAYBACK:
|
||||||
|
if (source != last_source)
|
||||||
|
{
|
||||||
|
audiohw_disable_recording();
|
||||||
|
audiohw_set_monitor(false);
|
||||||
|
coldfire_set_dataincontrol(0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AUDIO_SRC_MIC: /* recording only */
|
||||||
|
if (source != last_source)
|
||||||
|
{
|
||||||
|
audiohw_enable_recording(true); /* source mic */
|
||||||
|
/* Int. when 6 samples in FIFO, PDIR2 src = iis1RcvData */
|
||||||
|
coldfire_set_dataincontrol((3 << 14) | (4 << 3));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AUDIO_SRC_LINEIN: /* recording only */
|
||||||
|
if (source != last_source)
|
||||||
|
{
|
||||||
|
audiohw_enable_recording(false); /* source line */
|
||||||
|
/* Int. when 6 samples in FIFO, PDIR2 src = iis1RcvData */
|
||||||
|
coldfire_set_dataincontrol((3 << 14) | (4 << 3));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case AUDIO_SRC_FMRADIO: /* recording and playback */
|
||||||
|
if (!recording)
|
||||||
|
audiohw_set_recvol(23, 23, AUDIO_GAIN_LINEIN);
|
||||||
|
|
||||||
|
/* I2S recording and analog playback */
|
||||||
|
if (source == last_source && recording == last_recording)
|
||||||
|
break;
|
||||||
|
|
||||||
|
last_recording = recording;
|
||||||
|
|
||||||
|
if (recording)
|
||||||
|
{
|
||||||
|
/* Int. when 6 samples in FIFO, PDIR2 src = iis1RcvData */
|
||||||
|
coldfire_set_dataincontrol((3 << 14) | (4 << 3));
|
||||||
|
audiohw_enable_recording(false); /* source line */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
audiohw_disable_recording();
|
||||||
|
audiohw_set_monitor(true); /* analog bypass */
|
||||||
|
coldfire_set_dataincontrol(0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
} /* end switch */
|
||||||
|
|
||||||
|
/* set line multiplexer */
|
||||||
|
if (source == AUDIO_SRC_FMRADIO)
|
||||||
|
and_l(~(1 << 25), &GPIO1_OUT); /* FM radio */
|
||||||
|
else
|
||||||
|
or_l((1 << 25), &GPIO1_OUT); /* Line In */
|
||||||
|
|
||||||
|
or_l((1 << 25), &GPIO1_ENABLE);
|
||||||
|
or_l((1 << 25), &GPIO1_FUNCTION);
|
||||||
|
|
||||||
|
last_source = source;
|
||||||
|
} /* audio_input_mux */
|
||||||
|
|
||||||
|
|
@ -54,12 +54,6 @@ int button_read_device(void)
|
||||||
hold_button_old = hold_button;
|
hold_button_old = hold_button;
|
||||||
hold_button = button_hold();
|
hold_button = button_hold();
|
||||||
|
|
||||||
#ifndef BOOTLOADER
|
|
||||||
/* give BL notice if HB state chaged */
|
|
||||||
if (hold_button != hold_button_old)
|
|
||||||
backlight_hold_changed(hold_button);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!hold_button)
|
if (!hold_button)
|
||||||
{
|
{
|
||||||
#if 0 /* TODO: implement ADC */
|
#if 0 /* TODO: implement ADC */
|
||||||
|
|
@ -83,7 +77,7 @@ int button_read_device(void)
|
||||||
|
|
||||||
#ifndef BOOTLOADER
|
#ifndef BOOTLOADER
|
||||||
if (remote_hold_button != remote_hold_button_old)
|
if (remote_hold_button != remote_hold_button_old)
|
||||||
remote_backlight_hold_changed(remote_hold_button);
|
backlight_hold_changed(remote_hold_button);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!remote_hold_button)
|
if (!remote_hold_button)
|
||||||
|
|
|
||||||
37
firmware/target/coldfire/iaudio/m3/fmradio_i2c-m3.c
Normal file
37
firmware/target/coldfire/iaudio/m3/fmradio_i2c-m3.c
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* __________ __ ___.
|
||||||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
* \/ \/ \/ \/ \/
|
||||||
|
* $Id$
|
||||||
|
* Physical interface of the Philips TEA5767 in iAudio M3
|
||||||
|
*
|
||||||
|
* Copyright (C) 2002 by Linus Nielsen Feltzing
|
||||||
|
*
|
||||||
|
* All files in this archive are subject to the GNU General Public License.
|
||||||
|
* See the file COPYING in the source tree root for full license agreement.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#if (CONFIG_TUNER & TEA5767)
|
||||||
|
|
||||||
|
#include "i2c-coldfire.h"
|
||||||
|
|
||||||
|
int fmradio_i2c_write(unsigned char address, const unsigned char* buf,
|
||||||
|
int count)
|
||||||
|
{
|
||||||
|
return i2c_write(I2C_IFACE_0, address, buf, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
int fmradio_i2c_read(unsigned char address, unsigned char* buf, int count)
|
||||||
|
{
|
||||||
|
return i2c_read(I2C_IFACE_0, address, buf, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -428,6 +428,35 @@ void lcd_init_device(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TODO: implement blit functions */
|
||||||
|
|
||||||
|
/* Performance function that works with an external buffer
|
||||||
|
note that by and bheight are in 8-pixel units! */
|
||||||
|
void lcd_blit(const fb_data *data, int x, int by, int width,
|
||||||
|
int bheight, int stride)
|
||||||
|
{
|
||||||
|
(void)data;
|
||||||
|
(void)x;
|
||||||
|
(void)by;
|
||||||
|
(void)width;
|
||||||
|
(void)bheight;
|
||||||
|
(void)stride;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Performance function that works with an external buffer
|
||||||
|
note that by and bheight are in 8-pixel units! */
|
||||||
|
void lcd_grey_phase_blit(unsigned char *values, unsigned char *phases,
|
||||||
|
int x, int by, int width, int bheight, int stride)
|
||||||
|
{
|
||||||
|
(void)values;
|
||||||
|
(void)phases;
|
||||||
|
(void)x;
|
||||||
|
(void)by;
|
||||||
|
(void)width;
|
||||||
|
(void)bheight;
|
||||||
|
(void)stride;
|
||||||
|
}
|
||||||
|
|
||||||
/* Update the display.
|
/* Update the display.
|
||||||
This must be called after all other LCD functions that change the display. */
|
This must be called after all other LCD functions that change the display. */
|
||||||
void lcd_update(void) ICODE_ATTR;
|
void lcd_update(void) ICODE_ATTR;
|
||||||
|
|
|
||||||
|
|
@ -69,3 +69,9 @@ void power_off(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* SIMULATOR */
|
#endif /* SIMULATOR */
|
||||||
|
|
||||||
|
bool tuner_power(bool status)
|
||||||
|
{
|
||||||
|
(void)status;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ static const unsigned char pcm_freq_parms[HW_NUM_FREQ][3] =
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_CPU == MCF5250 && defined(HAVE_TLV320)
|
#if (CONFIG_CPU == MCF5250 || CONFIG_CPU == MCF5249) && defined(HAVE_TLV320)
|
||||||
static const unsigned char pcm_freq_parms[HW_NUM_FREQ][3] =
|
static const unsigned char pcm_freq_parms[HW_NUM_FREQ][3] =
|
||||||
{
|
{
|
||||||
[HW_FREQ_88] = { 0x0c, 0x01, 0x02 },
|
[HW_FREQ_88] = { 0x0c, 0x01, 0x02 },
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue