summaryrefslogtreecommitdiff
path: root/firmware/target/arm/archos
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2007-01-14 13:48:09 +0000
committerDave Chapman <dave@dchapman.com>2007-01-14 13:48:09 +0000
commitd64e626387e21dc6a7ab374f17dec1e902cd9779 (patch)
tree6a16bbf5de0becfd6588bff30c11c8ed9fd25c9e /firmware/target/arm/archos
parent72f1027b3edae94ad9962c654519c2cab8566078 (diff)
downloadrockbox-d64e626387e21dc6a7ab374f17dec1e902cd9779.tar.gz
rockbox-d64e626387e21dc6a7ab374f17dec1e902cd9779.zip
Start of work on a port to the Archos 'AV300' (AV320/340/380) - a working UI simulator (but with a dummy background image for now) and the beginnings of the target-specific firmare code. Port is temporarily using a 2bpp LCD buffer format - the AV300 has a 320x240 colour (YCbCr-based) LCD which will need a new framebuffer format and drawing routines, but the LCD is also capable of various paletted bitmap modes, one of which has an identical framebuffer format to the greyscale ipods. Buttons (and hence the button mappings) are identical to the Archos Recorder, with the exception that the PLAY button on the Recorder is replaced by pressing the joystick on the AV300 (which I call BUTTON_SELECT). The initial port will begin by being strictly HWCODEC, but will evolve to be a hybrid SWCODEC/HWCODEC platform - it has a MAS3587F but also a main CPU (54MHz arm7tdmi plus DSP) capable of software decoding of at least some formats.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12008 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/archos')
-rw-r--r--firmware/target/arm/archos/av300/ata-av300.c56
-rw-r--r--firmware/target/arm/archos/av300/ata-target.h62
-rw-r--r--firmware/target/arm/archos/av300/button-target.h49
-rw-r--r--firmware/target/arm/archos/av300/power-av300.c97
4 files changed, 264 insertions, 0 deletions
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 0000000000..ae7b955632
--- /dev/null
+++ b/firmware/target/arm/archos/av300/ata-av300.c
@@ -0,0 +1,56 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: ata-pp5020.c 10521 2006-08-11 08:35:27Z bger $
9 *
10 * Target-specific ATA functions for AV3xx (TMS320DSC25)
11 *
12 * Based on code from the ArchOpen project - http://www.archopen.org
13 * Adapted for Rockbox in January 2007
14 *
15 * Original file:
16 * lib/target/arch_AV3XX/ata.c
17 *
18 * AvLo - linav project
19 * Copyright (c) 2005 by Christophe THOMAS (oxygen77 at free.fr)
20 *
21 * All files in this archive are subject to the GNU General Public License.
22 * See the file COPYING in the source tree root for full license agreement.
23 *
24 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
25 * KIND, either express or implied.
26 *
27 ****************************************************************************/
28
29#include <stdbool.h>
30#include "system.h"
31#include "ata-target.h"
32
33void ata_reset()
34{
35 /* arch_ata_reset_HD(void) */
36 cpld_set_port_2(CPLD_HD_RESET);
37 cpld_clear_port_2(CPLD_HD_RESET);
38}
39
40void ata_enable(bool on)
41{
42 /* TODO: Implement ata_enable() */
43 (void)on;
44}
45
46bool ata_is_coldstart()
47{
48 /* TODO: Implement coldstart variable */
49 return true;
50}
51
52void ata_device_init()
53{
54 /* Set CF/HD selection to HD */
55 cpld_select(CPLD_HD_CF,CPLD_SEL_HD);
56}
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 0000000000..f570ddd4b3
--- /dev/null
+++ b/firmware/target/arm/archos/av300/ata-target.h
@@ -0,0 +1,62 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: ata-target.h 11655 2006-12-03 22:13:44Z amiconn $
9 *
10 * Copyright (C) 2007 by Dave Chapman
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20/* Plain C read & write loops */
21
22#define ATA_IOBASE 0x02400000
23
24#define ATA_DATA (*((volatile unsigned short*)(ATA_IOBASE)))
25#define ATA_ERROR (*((volatile unsigned char*)(ATA_IOBASE + 0x080)))
26#define ATA_NSECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x100)))
27#define ATA_SECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x180)))
28#define ATA_LCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x200)))
29#define ATA_HCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x280)))
30#define ATA_SELECT (*((volatile unsigned char*)(ATA_IOBASE + 0x300)))
31#define ATA_CONTROL (*((volatile unsigned char*)(ATA_IOBASE + 0x340)))
32#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 0x380)))
33
34#define STATUS_BSY 0x80
35#define STATUS_RDY 0x40
36#define STATUS_DF 0x20
37#define STATUS_DRQ 0x08
38#define STATUS_ERR 0x01
39#define ERROR_ABRT 0x04
40
41#define WRITE_PATTERN1 0xa5
42#define WRITE_PATTERN2 0x5a
43#define WRITE_PATTERN3 0xaa
44#define WRITE_PATTERN4 0x55
45
46#define READ_PATTERN1 0xa5
47#define READ_PATTERN2 0x5a
48#define READ_PATTERN3 0xaa
49#define READ_PATTERN4 0x55
50
51#define READ_PATTERN1_MASK 0xff
52#define READ_PATTERN2_MASK 0xff
53#define READ_PATTERN3_MASK 0xff
54#define READ_PATTERN4_MASK 0xff
55
56#define SET_REG(reg,val) reg = (val)
57#define SET_16BITREG(reg,val) reg = (val)
58
59void ata_reset(void);
60void ata_enable(bool on);
61bool ata_is_coldstart(void);
62void 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 0000000000..b08562627b
--- /dev/null
+++ b/firmware/target/arm/archos/av300/button-target.h
@@ -0,0 +1,49 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: button-target.h 11967 2007-01-09 23:29:07Z linus $
9 *
10 * Copyright (C) 2007 by Dave Chapman
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20#ifndef _BUTTON_TARGET_H_
21#define _BUTTON_TARGET_H_
22
23#include <stdbool.h>
24#include "config.h"
25
26void button_init_device(void);
27int button_read_device(void);
28
29/* Main unit's buttons */
30
31#define BUTTON_ON 0x00000001
32#define BUTTON_OFF 0x00000002
33
34#define BUTTON_LEFT 0x00000004
35#define BUTTON_RIGHT 0x00000008
36#define BUTTON_UP 0x00000010
37#define BUTTON_DOWN 0x00000020
38
39#define BUTTON_SELECT 0x00000040
40
41#define BUTTON_F1 0x00000080
42#define BUTTON_F2 0x00000100
43#define BUTTON_F3 0x00000200
44
45#define BUTTON_MAIN (BUTTON_ON|BUTTON_OFF|BUTTON_LEFT|BUTTON_RIGHT\
46 |BUTTON_UP|BUTTON_DOWN|BUTTON_SELECT\
47 |BUTTON_F1|BUTTON_F2|BUTTON_F3)
48
49#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 0000000000..cfdce69b13
--- /dev/null
+++ b/firmware/target/arm/archos/av300/power-av300.c
@@ -0,0 +1,97 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: power-x5.c 10967 2006-09-17 09:19:50Z jethead71 $
9 *
10 * Based on code from the ArchOpen project - http://www.archopen.org
11 * Adapted for Rockbox in January 2007
12 *
13 * Original files:
14 * lib/target/arch_AV3XX/ata.c
15 *
16 * AvLo - linav project
17 * Copyright (c) 2005 by Christophe THOMAS (oxygen77 at free.fr)
18 *
19 * All files in this archive are subject to the GNU General Public License.
20 * See the file COPYING in the source tree root for full license agreement.
21 *
22 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
23 * KIND, either express or implied.
24 *
25 ****************************************************************************/
26#include "config.h"
27#include "cpu.h"
28#include <stdbool.h>
29#include "kernel.h"
30#include "system.h"
31#include "power.h"
32
33#ifndef SIMULATOR
34
35void power_init(void)
36{
37 /* Charger detect */
38}
39
40bool charger_inserted(void)
41{
42 return false;
43}
44
45void ide_power_enable(bool on)
46{
47 if(on)
48 cpld_set_port_3(CPLD_HD_POWER); /* powering up HD */
49 else
50 cpld_clear_port_3(CPLD_HD_POWER);
51}
52
53bool ide_powered(void)
54{
55 return false;
56}
57
58void power_off(void)
59{
60}
61
62#else
63
64bool charger_inserted(void)
65{
66 return false;
67}
68
69void charger_enable(bool on)
70{
71 (void)on;
72}
73
74void power_off(void)
75{
76}
77
78void ide_power_enable(bool on)
79{
80 (void)on;
81}
82
83#endif /* SIMULATOR */
84
85static bool powered = false;
86
87bool radio_powered()
88{
89 return powered;
90}
91
92bool radio_power(bool status)
93{
94 bool old_status = powered;
95 powered = status;
96 return old_status;
97}