diff options
Diffstat (limited to 'firmware')
| -rw-r--r-- | firmware/export/config.h | 24 | ||||
| -rw-r--r-- | firmware/target/arm/archos/av300/ata-av300.c | 56 | ||||
| -rw-r--r-- | firmware/target/arm/archos/av300/ata-target.h | 62 | ||||
| -rw-r--r-- | firmware/target/arm/archos/av300/button-target.h | 49 | ||||
| -rw-r--r-- | firmware/target/arm/archos/av300/power-av300.c | 97 |
5 files changed, 279 insertions, 9 deletions
diff --git a/firmware/export/config.h b/firmware/export/config.h index e37cc3f..20fdc1d 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -37,14 +37,15 @@ #define SWCODEC 1 /* if codec is done by SW */ /* CONFIG_CPU */ -#define SH7034 7034 -#define MCF5249 5249 -#define MCF5250 5250 -#define PP5002 5002 -#define PP5020 5020 -#define PNX0101 101 -#define S3C2440 2440 -#define PP5024 5024 +#define SH7034 7034 +#define MCF5249 5249 +#define MCF5250 5250 +#define PP5002 5002 +#define PP5020 5020 +#define PNX0101 101 +#define S3C2440 2440 +#define PP5024 5024 +#define TMS320DSC25 25 /* CONFIG_KEYPAD */ #define PLAYER_PAD 1 @@ -60,6 +61,7 @@ #define IRIVER_H10_PAD 11 #define SANSA_E200_PAD 12 #define ELIO_TPJ1022_PAD 13 +#define ARCHOS_AV300_PAD 14 /* CONFIG_REMOTE_KEYPAD */ #define H100_REMOTE 1 @@ -99,6 +101,7 @@ #define LCD_H10 13 /* as used by iriver H10 20Gb */ #define LCD_H10_5GB 14 /* as used by iriver H10 5Gb */ #define LCD_TPJ1022 15 /* as used by Tatung Elio TPJ-1022 */ +#define LCD_DSC25 16 /* as used by Archos AV300 */ /* LCD_PIXELFORMAT */ #define HORIZONTAL_PACKING 1 @@ -170,6 +173,8 @@ #include "config-ondiosp.h" #elif defined(ARCHOS_ONDIOFM) #include "config-ondiofm.h" +#elif defined(ARCHOS_AV300) +#include "config-av300.h" #elif defined(IRIVER_H100) #include "config-h100.h" #elif defined(IRIVER_H120) @@ -255,7 +260,8 @@ #endif /* define for all cpus from ARM family */ -#if defined(CPU_PP) || (CONFIG_CPU == PNX0101) || (CONFIG_CPU == S3C2440) +#if defined(CPU_PP) || (CONFIG_CPU == PNX0101) || (CONFIG_CPU == S3C2440) \ + || (CONFIG_CPU == TMS320DSC25) #define CPU_ARM #endif diff --git a/firmware/target/arm/archos/av300/ata-av300.c b/firmware/target/arm/archos/av300/ata-av300.c new file mode 100644 index 0000000..ae7b955 --- /dev/null +++ b/firmware/target/arm/archos/av300/ata-av300.c @@ -0,0 +1,56 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id: ata-pp5020.c 10521 2006-08-11 08:35:27Z bger $ + * + * Target-specific ATA functions for AV3xx (TMS320DSC25) + * + * Based on code from the ArchOpen project - http://www.archopen.org + * Adapted for Rockbox in January 2007 + * + * Original file: + * lib/target/arch_AV3XX/ata.c + * + * AvLo - linav project + * Copyright (c) 2005 by Christophe THOMAS (oxygen77 at free.fr) + * + * 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 <stdbool.h> +#include "system.h" +#include "ata-target.h" + +void ata_reset() +{ + /* arch_ata_reset_HD(void) */ + cpld_set_port_2(CPLD_HD_RESET); + cpld_clear_port_2(CPLD_HD_RESET); +} + +void ata_enable(bool on) +{ + /* TODO: Implement ata_enable() */ + (void)on; +} + +bool ata_is_coldstart() +{ + /* TODO: Implement coldstart variable */ + return true; +} + +void ata_device_init() +{ + /* Set CF/HD selection to HD */ + cpld_select(CPLD_HD_CF,CPLD_SEL_HD); +} diff --git a/firmware/target/arm/archos/av300/ata-target.h b/firmware/target/arm/archos/av300/ata-target.h new file mode 100644 index 0000000..f570ddd --- /dev/null +++ b/firmware/target/arm/archos/av300/ata-target.h @@ -0,0 +1,62 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id: ata-target.h 11655 2006-12-03 22:13:44Z amiconn $ + * + * Copyright (C) 2007 by Dave Chapman + * + * 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. + * + ****************************************************************************/ + +/* Plain C read & write loops */ + +#define ATA_IOBASE 0x02400000 + +#define ATA_DATA (*((volatile unsigned short*)(ATA_IOBASE))) +#define ATA_ERROR (*((volatile unsigned char*)(ATA_IOBASE + 0x080))) +#define ATA_NSECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x100))) +#define ATA_SECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x180))) +#define ATA_LCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x200))) +#define ATA_HCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x280))) +#define ATA_SELECT (*((volatile unsigned char*)(ATA_IOBASE + 0x300))) +#define ATA_CONTROL (*((volatile unsigned char*)(ATA_IOBASE + 0x340))) +#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 0x380))) + +#define STATUS_BSY 0x80 +#define STATUS_RDY 0x40 +#define STATUS_DF 0x20 +#define STATUS_DRQ 0x08 +#define STATUS_ERR 0x01 +#define ERROR_ABRT 0x04 + +#define WRITE_PATTERN1 0xa5 +#define WRITE_PATTERN2 0x5a +#define WRITE_PATTERN3 0xaa +#define WRITE_PATTERN4 0x55 + +#define READ_PATTERN1 0xa5 +#define READ_PATTERN2 0x5a +#define READ_PATTERN3 0xaa +#define READ_PATTERN4 0x55 + +#define READ_PATTERN1_MASK 0xff +#define READ_PATTERN2_MASK 0xff +#define READ_PATTERN3_MASK 0xff +#define READ_PATTERN4_MASK 0xff + +#define SET_REG(reg,val) reg = (val) +#define SET_16BITREG(reg,val) reg = (val) + +void ata_reset(void); +void ata_enable(bool on); +bool ata_is_coldstart(void); +void ata_device_init(void); diff --git a/firmware/target/arm/archos/av300/button-target.h b/firmware/target/arm/archos/av300/button-target.h new file mode 100644 index 0000000..b085626 --- /dev/null +++ b/firmware/target/arm/archos/av300/button-target.h @@ -0,0 +1,49 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id: button-target.h 11967 2007-01-09 23:29:07Z linus $ + * + * Copyright (C) 2007 by Dave Chapman + * + * 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. + * + ****************************************************************************/ + +#ifndef _BUTTON_TARGET_H_ +#define _BUTTON_TARGET_H_ + +#include <stdbool.h> +#include "config.h" + +void button_init_device(void); +int button_read_device(void); + +/* Main unit's buttons */ + +#define BUTTON_ON 0x00000001 +#define BUTTON_OFF 0x00000002 + +#define BUTTON_LEFT 0x00000004 +#define BUTTON_RIGHT 0x00000008 +#define BUTTON_UP 0x00000010 +#define BUTTON_DOWN 0x00000020 + +#define BUTTON_SELECT 0x00000040 + +#define BUTTON_F1 0x00000080 +#define BUTTON_F2 0x00000100 +#define BUTTON_F3 0x00000200 + +#define BUTTON_MAIN (BUTTON_ON|BUTTON_OFF|BUTTON_LEFT|BUTTON_RIGHT\ + |BUTTON_UP|BUTTON_DOWN|BUTTON_SELECT\ + |BUTTON_F1|BUTTON_F2|BUTTON_F3) + +#endif /* _BUTTON_TARGET_H_ */ diff --git a/firmware/target/arm/archos/av300/power-av300.c b/firmware/target/arm/archos/av300/power-av300.c new file mode 100644 index 0000000..cfdce69 --- /dev/null +++ b/firmware/target/arm/archos/av300/power-av300.c @@ -0,0 +1,97 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id: power-x5.c 10967 2006-09-17 09:19:50Z jethead71 $ + * + * Based on code from the ArchOpen project - http://www.archopen.org + * Adapted for Rockbox in January 2007 + * + * Original files: + * lib/target/arch_AV3XX/ata.c + * + * AvLo - linav project + * Copyright (c) 2005 by Christophe THOMAS (oxygen77 at free.fr) + * + * 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 <stdbool.h> +#include "kernel.h" +#include "system.h" +#include "power.h" + +#ifndef SIMULATOR + +void power_init(void) +{ + /* Charger detect */ +} + +bool charger_inserted(void) +{ + return false; +} + +void ide_power_enable(bool on) +{ + if(on) + cpld_set_port_3(CPLD_HD_POWER); /* powering up HD */ + else + cpld_clear_port_3(CPLD_HD_POWER); +} + +bool ide_powered(void) +{ + return false; +} + +void power_off(void) +{ +} + +#else + +bool charger_inserted(void) +{ + return false; +} + +void charger_enable(bool on) +{ + (void)on; +} + +void power_off(void) +{ +} + +void ide_power_enable(bool on) +{ + (void)on; +} + +#endif /* SIMULATOR */ + +static bool powered = false; + +bool radio_powered() +{ + return powered; +} + +bool radio_power(bool status) +{ + bool old_status = powered; + powered = status; + return old_status; +} |