summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2005-11-16 23:15:59 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2005-11-16 23:15:59 +0000
commitdf0e5effc550db484ca0d377b9f3547fed27cd66 (patch)
treed54a173927a2091263787f62c9c59fe0c0f57aaa /firmware
parent59825952f3d98d29e03b094642655968d7abcc02 (diff)
downloadrockbox-df0e5effc550db484ca0d377b9f3547fed27cd66.zip
rockbox-df0e5effc550db484ca0d377b9f3547fed27cd66.tar.gz
rockbox-df0e5effc550db484ca0d377b9f3547fed27cd66.tar.bz2
rockbox-df0e5effc550db484ca0d377b9f3547fed27cd66.tar.xz
Cleaned up bootloader linker control file and added the H300 target
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7916 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/backlight.c9
-rw-r--r--firmware/boot.lds39
-rw-r--r--firmware/drivers/ata.c8
-rw-r--r--firmware/drivers/i2c-coldfire.c3
-rw-r--r--firmware/drivers/power.c14
-rw-r--r--firmware/export/config-h100.h2
-rw-r--r--firmware/export/config-h120.h2
-rw-r--r--firmware/pcm_playback.c8
8 files changed, 51 insertions, 34 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c
index fa6a42b..26d0362 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -456,7 +456,14 @@ void backlight_init(void)
#else /* no backlight, empty dummy functions */
-void backlight_init(void) {}
+void backlight_init(void)
+{
+#if defined(IRIVER_H300_SERIES) && defined(BOOTLOADER)
+ or_l(0x00020000, &GPIO1_OUT);
+ or_l(0x00020000, &GPIO1_ENABLE);
+ or_l(0x00020000, &GPIO1_FUNCTION);
+#endif
+}
void backlight_on(void) {}
void backlight_off(void) {}
void backlight_tick(void) {}
diff --git a/firmware/boot.lds b/firmware/boot.lds
index 2d320e2..d785fdc 100644
--- a/firmware/boot.lds
+++ b/firmware/boot.lds
@@ -12,13 +12,7 @@ OUTPUT_FORMAT(elf32-sh)
INPUT(crt0.o)
#endif
-#if MEMORYSIZE >= 32
-#define PLUGINSIZE 0xC0000
-#else
-#define PLUGINSIZE 0x8000
-#endif
-
-#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE
+#define DRAMSIZE (MEMORYSIZE * 0x100000)
#ifdef IRIVER_H100_SERIES
#define DRAMORIG 0x31000000
@@ -26,6 +20,12 @@ INPUT(crt0.o)
#define IRAMSIZE 0x18000
#define FLASHORIG 0x001f0000
#define FLASHSIZE 2M
+#elif defined(IRIVER_H300_SERIES)
+#define DRAMORIG 0x31000000
+#define IRAMORIG 0x10000000
+#define IRAMSIZE 0x18000
+#define FLASHORIG 0x003f0000
+#define FLASHSIZE 4M
#elif CONFIG_CPU == PP5020
#define DRAMORIG 0x10000000
#define IRAMORIG 0x40000000
@@ -40,8 +40,6 @@ INPUT(crt0.o)
#define FLASHSIZE 256K - ROM_START
#endif
-#define ENDADDR (IRAMORIG + IRAMSIZE)
-
#if CONFIG_CPU!=PP5020
MEMORY
{
@@ -141,29 +139,22 @@ SECTIONS
stackend = .;
} > IRAM
+#ifdef IRIVER_H300_SERIES
+ .bss DRAMORIG+0x1000000:
+#else
.bss :
+#endif
{
_edata = .;
*(.ibss)
*(.bss)
*(COMMON)
_end = .;
+#ifdef IRIVER_H300_SERIES
+ } > DRAM
+#else
} > IRAM
+#endif
- .mp3buf :
- {
- . = ALIGN(0x4);
- _mp3buffer = .;
- } > IRAM
-
- .mp3end ENDADDR:
- {
- _mp3end = .;
- } > IRAM
-
- .plugin ENDADDR:
- {
- _pluginbuf = .;
- }
}
#endif
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index 9cc49c1..c0799f3 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -1413,16 +1413,20 @@ int ata_init(void)
or_b(0x02, &PADRH); /* release ATA reset */
PACR2 &= 0xBFFF; /* GPIO function for PA7 (IDE enable) */
#elif CONFIG_CPU == MCF5249
+#ifdef HAVE_ATA_LED_CTRL
/* Enable disk LED & ISD chip power control */
and_l(~0x0000240, &GPIO_OUT);
or_l(0x00000240, &GPIO_ENABLE);
or_l(0x00000200, &GPIO_FUNCTION);
+#endif
/* ATA reset */
- or_l(0x00080000, &GPIO_OUT);
+ and_l(~0x00080000, &GPIO_OUT);
or_l(0x00080000, &GPIO_ENABLE);
or_l(0x00080000, &GPIO_FUNCTION);
-
+ sleep(10);
+ or_l(0x00080000, &GPIO_OUT);
+
/* FYI: The IDECONFIGx registers are set by set_cpu_frequency() */
#elif CONFIG_CPU == PP5020
/* From ipod-ide.c:ipod_ide_register() */
diff --git a/firmware/drivers/i2c-coldfire.c b/firmware/drivers/i2c-coldfire.c
index aecd3a3..0c83c1c 100644
--- a/firmware/drivers/i2c-coldfire.c
+++ b/firmware/drivers/i2c-coldfire.c
@@ -37,6 +37,7 @@ static volatile unsigned char *i2c_get_addr(int device);
void i2c_init(void)
{
+#ifdef IRIVER_H100_SERIES
/* The FM chip has no pullup for SCL, so we have to bit-bang the
I2C for that one. */
or_l(0x00800000, &GPIO1_OUT);
@@ -45,7 +46,7 @@ void i2c_init(void)
or_l(0x00000008, &GPIO_ENABLE);
or_l(0x00800000, &GPIO1_FUNCTION);
or_l(0x00000008, &GPIO_FUNCTION);
-
+#endif
/* I2C Clock divisor = 576 => 119.952 MHz / 2 / 576 = 104.125 kHz */
MFDR = 0x14;
diff --git a/firmware/drivers/power.c b/firmware/drivers/power.c
index 4e5d347..2547c11 100644
--- a/firmware/drivers/power.c
+++ b/firmware/drivers/power.c
@@ -62,23 +62,25 @@ int radio_get_status(void)
void power_init(void)
{
#if CONFIG_CPU == MCF5249
-#if IRIVER_H100_SERIES
- or_l(0x00080000, &GPIO1_OUT);
- or_l(0x00080000, &GPIO1_ENABLE);
- or_l(0x00080000, &GPIO1_FUNCTION);
+#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES)
+// or_l(0x00080000, &GPIO1_OUT);
+// or_l(0x00080000, &GPIO1_ENABLE);
+// or_l(0x00080000, &GPIO1_FUNCTION);
#ifndef BOOTLOADER
/* The boot loader controls the power */
- ide_power_enable(true);
+// ide_power_enable(true);
#endif
+ or_l(0x80000000, &GPIO_OUT);
or_l(0x80000000, &GPIO_ENABLE);
or_l(0x80000000, &GPIO_FUNCTION);
#ifdef HAVE_SPDIF_POWER
spdif_power_enable(false);
#endif
-#elif defined(IRIVER_H300_SERIES)
+#ifdef IRIVER_H300_SERIES
pcf50606_init();
#endif
+#endif
#elif CONFIG_CPU == PP5020
/* TODO: Implement power_init() */
#else
diff --git a/firmware/export/config-h100.h b/firmware/export/config-h100.h
index 19bb99b..35b35e0 100644
--- a/firmware/export/config-h100.h
+++ b/firmware/export/config-h100.h
@@ -91,6 +91,8 @@
#define USB_IRIVERSTYLE
+#define HAVE_ATA_LED_CTRL
+
/* Define this if you have adjustable CPU frequency */
#define HAVE_ADJUSTABLE_CPU_FREQ
diff --git a/firmware/export/config-h120.h b/firmware/export/config-h120.h
index b2c34c5..e6c829a 100644
--- a/firmware/export/config-h120.h
+++ b/firmware/export/config-h120.h
@@ -88,6 +88,8 @@
#define USB_IRIVERSTYLE
+#define HAVE_ATA_LED_CTRL
+
/* Define this if you have adjustable CPU frequency */
#define HAVE_ADJUSTABLE_CPU_FREQ
diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c
index 05c5447..5f87917 100644
--- a/firmware/pcm_playback.c
+++ b/firmware/pcm_playback.c
@@ -77,8 +77,10 @@ static void dma_start(const void *addr, long size)
/* Enable the FIFO and force one write to it */
IIS2CONFIG = IIS_DEFPARM(pcm_freq);
+#ifdef HAVE_SPDIF_OUT
/* Also send the audio to S/PDIF */
EBU1CONFIG = EBU_DEFPARM;
+#endif
DCR0 = DMA_INT | DMA_EEXT | DMA_CS | DMA_SINC | DMA_START;
}
@@ -90,7 +92,9 @@ static void dma_stop(void)
DCR0 = 0;
/* Reset the FIFO */
IIS2CONFIG = IIS_RESET | IIS_DEFPARM(pcm_freq);
+#ifdef HAVE_SPDIF_OUT
EBU1CONFIG = IIS_RESET;
+#endif
next_start = NULL;
next_size = 0;
@@ -220,7 +224,9 @@ void pcm_play_pause(bool play)
//BCR0 = next_size;
/* Enable the FIFO and force one write to it */
IIS2CONFIG = IIS_DEFPARM(pcm_freq);
+#ifdef HAVE_SPDIF_OUT
EBU1CONFIG = EBU_DEFPARM;
+#endif
DCR0 |= DMA_EEXT | DMA_START;
}
else if(!pcm_paused && !play)
@@ -230,7 +236,9 @@ void pcm_play_pause(bool play)
/* Disable DMA peripheral request. */
DCR0 &= ~DMA_EEXT;
IIS2CONFIG = IIS_RESET | IIS_DEFPARM(pcm_freq);
+#ifdef HAVE_SPDIF_OUT
EBU1CONFIG = IIS_RESET;
+#endif
}
pcm_paused = !play;
}