summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2009-09-17 07:26:08 +0000
committerDave Chapman <dave@dchapman.com>2009-09-17 07:26:08 +0000
commit8dae933293223e28648ec72ac818ab2a98ee2482 (patch)
tree78f056b1eb6ebc7db6fa3563faaad71032c02a72 /firmware
parentf10450e44e7efdd3f4d795a795486ced1326ce75 (diff)
downloadrockbox-8dae933293223e28648ec72ac818ab2a98ee2482.tar.gz
rockbox-8dae933293223e28648ec72ac818ab2a98ee2482.zip
Add an app.lds and some stub functions for the Nano 2G - this isn't enough to make rockbox.bin compile, but it's a step towards it (more commits coming soon).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22714 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/target/arm/s5l8700/app.lds150
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/audio-nano2g.c59
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c56
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c65
-rw-r--r--firmware/target/arm/s5l8700/usb-s5l8700.c47
5 files changed, 377 insertions, 0 deletions
diff --git a/firmware/target/arm/s5l8700/app.lds b/firmware/target/arm/s5l8700/app.lds
new file mode 100644
index 0000000000..812bce8cbb
--- /dev/null
+++ b/firmware/target/arm/s5l8700/app.lds
@@ -0,0 +1,150 @@
1#include "config.h"
2#include "cpu.h"
3
4ENTRY(start)
5
6OUTPUT_FORMAT(elf32-littlearm)
7OUTPUT_ARCH(arm)
8STARTUP(target/arm/s5l8700/crt0.o)
9
10#define PLUGINSIZE PLUGIN_BUFFER_SIZE
11#define CODECSIZE CODEC_SIZE
12
13#ifdef DEBUG
14#define STUBOFFSET 0x10000
15#else
16#define STUBOFFSET 0
17#endif
18
19
20#define IRAMORIG 0x0
21#define DRAMORIG 0x08000000
22
23/* End of the audio buffer, where the codec buffer starts */
24#define ENDAUDIOADDR (DRAMORIG + DRAMSIZE)
25
26#define DRAM_SIZE (MEMORYSIZE * 0x100000)
27
28#define DRAMSIZE (DRAM_SIZE - STUBOFFSET - PLUGINSIZE - CODECSIZE)
29#define CODECORIG (ENDAUDIOADDR)
30#define IRAMSIZE (0x20000)
31
32/* Where the codec buffer ends, and the plugin buffer starts */
33#define ENDADDR (ENDAUDIOADDR + CODECSIZE)
34
35MEMORY
36{
37 IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
38 DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
39}
40
41SECTIONS
42{
43 loadaddress = DRAMORIG;
44
45 .intvect : {
46 _intvectstart = . ;
47 *(.intvect)
48 _intvectend = _newstart ;
49 } >IRAM AT> DRAM
50 _intvectcopy = LOADADDR(.intvect) ;
51
52 .text :
53 {
54 _loadaddress = .;
55 _textstart = .;
56 *(.init.text)
57 *(.text)
58 *(.text*)
59 *(.glue_7)
60 *(.glue_7t)
61 . = ALIGN(0x4);
62 } > DRAM
63
64 .rodata :
65 {
66 *(.rodata*)
67 . = ALIGN(0x4);
68 } > DRAM
69
70 .data :
71 {
72 *(.data*)
73 . = ALIGN(0x4);
74 } > DRAM
75
76 /DISCARD/ :
77 {
78 *(.eh_frame)
79 }
80
81 .iram :
82 {
83 _iramstart = .;
84 *(.icode)
85 *(.irodata)
86 *(.idata)
87 . = ALIGN(0x4);
88 _iramend = .;
89 } > IRAM AT> DRAM
90 _iramcopy = LOADADDR(.iram) ;
91
92 .ibss (NOLOAD) :
93 {
94 _iedata = .;
95 *(.qharray)
96 *(.ibss)
97 . = ALIGN(0x4);
98 _iend = .;
99 } > IRAM
100
101 .stack (NOLOAD) :
102 {
103 *(.stack)
104 stackbegin = .;
105 _stackbegin = .;
106 . += 0x2000;
107 stackend = .;
108 _stackend = .;
109 _irqstackbegin = .;
110 . += 0x400;
111 _irqstackend = .;
112 _fiqstackbegin = .;
113 . += 0x400;
114 _fiqstackend = .;
115 } > IRAM
116
117 .bss (NOLOAD) :
118 {
119 _edata = .;
120 *(.bss*)
121 *(COMMON)
122 . = ALIGN(0x4);
123 _end = .;
124 } > DRAM
125
126 .audiobuf (NOLOAD) :
127 {
128 . = ALIGN(4);
129 _audiobuffer = .;
130 audiobuffer = .;
131 } > DRAM
132
133 .audiobufend ENDAUDIOADDR (NOLOAD) :
134 {
135 audiobufend = .;
136 _audiobufend = .;
137 } > DRAM
138
139 .codec CODECORIG (NOLOAD) :
140 {
141 codecbuf = .;
142 _codecbuf = .;
143 } > DRAM
144
145 .plugin ENDADDR (NOLOAD) :
146 {
147 _pluginbuf = .;
148 pluginbuf = .;
149 }
150}
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/audio-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/audio-nano2g.c
new file mode 100644
index 0000000000..fb37cf2378
--- /dev/null
+++ b/firmware/target/arm/s5l8700/ipodnano2g/audio-nano2g.c
@@ -0,0 +1,59 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2006 by Michael Sevakis
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#include "system.h"
22#include "cpu.h"
23#include "audio.h"
24#include "sound.h"
25
26void audio_set_output_source(int source)
27{
28 if ((unsigned)source >= AUDIO_NUM_SOURCES)
29 source = AUDIO_SRC_PLAYBACK;
30} /* audio_set_output_source */
31
32void audio_input_mux(int source, unsigned flags)
33{
34 (void)flags;
35 /* Prevent pops from unneeded switching */
36 static int last_source = AUDIO_SRC_PLAYBACK;
37
38 switch (source)
39 {
40 default: /* playback - no recording */
41 source = AUDIO_SRC_PLAYBACK;
42 case AUDIO_SRC_PLAYBACK:
43 if (source != last_source)
44 {
45 audiohw_set_monitor(false);
46 audiohw_disable_recording();
47 }
48 break;
49 case AUDIO_SRC_LINEIN: /* recording only */
50 if (source != last_source)
51 {
52 audiohw_set_monitor(false);
53 audiohw_enable_recording(false); /* source line */
54 }
55 break;
56 } /* end switch */
57
58 last_source = source;
59} /* audio_input_mux */
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
new file mode 100644
index 0000000000..aa3367b941
--- /dev/null
+++ b/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
@@ -0,0 +1,56 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright © 2009 Bertrik Sikken
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#include <stdbool.h>
22#include "config.h"
23#include "inttypes.h"
24#include "s5l8700.h"
25#include "power.h"
26
27/* Power handling for S5L8700 based Meizu players
28
29 The M3 and M6 players appear to use the same pins for power, USB detection
30 and charging status.
31*/
32
33void power_off(void)
34{
35 /* TODO */
36 while(1);
37}
38
39void power_init(void)
40{
41 /* TODO */
42}
43
44#if CONFIG_CHARGING
45unsigned int power_input_status(void)
46{
47 /* TODO */
48 return POWER_INPUT_NONE;
49}
50
51bool charging_state(void)
52{
53 /* TODO */
54 return false;
55}
56#endif /* CONFIG_CHARGING */
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c
new file mode 100644
index 0000000000..508995c436
--- /dev/null
+++ b/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c
@@ -0,0 +1,65 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright © 2008 Rafaël Carré
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
22#include "config.h"
23#include "adc.h"
24#include "adc-target.h"
25#include "powermgmt.h"
26
27const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
28{
29 /* TODO: this is just an initial guess */
30 3400
31};
32
33const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
34{
35 /* TODO: this is just an initial guess */
36 3300
37};
38
39/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
40const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
41{
42 /* TODO: simple uncalibrated curve, linear except for first 10% */
43 { 3300, 3390, 3480, 3570, 3660, 3750, 3840, 3930, 4020, 4110, 4200 }
44};
45
46#if CONFIG_CHARGING
47/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */
48const unsigned short percent_to_volt_charge[11] =
49{
50 /* TODO: simple uncalibrated curve, linear except for first 10% */
51 3300, 3390, 3480, 3570, 3660, 3750, 3840, 3930, 4020, 4110, 4200
52};
53#endif /* CONFIG_CHARGING */
54
55/* ADC should read 0x3ff=5.12V */
56#define BATTERY_SCALE_FACTOR 5125
57/* full-scale ADC readout (2^10) in millivolt */
58
59
60/* Returns battery voltage from ADC [millivolts] */
61unsigned int battery_adc_voltage(void)
62{
63 return 4000;
64}
65
diff --git a/firmware/target/arm/s5l8700/usb-s5l8700.c b/firmware/target/arm/s5l8700/usb-s5l8700.c
new file mode 100644
index 0000000000..6ad4dcea95
--- /dev/null
+++ b/firmware/target/arm/s5l8700/usb-s5l8700.c
@@ -0,0 +1,47 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: usb-fw-pp502x.c 21932 2009-07-17 22:07:06Z roolku $
9 *
10 * Copyright (C) 2009 by ?????
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#include "config.h"
22#include "usb.h"
23
24void usb_init_device(void)
25{
26}
27
28void usb_enable(bool on)
29{
30 (void)on;
31}
32
33void usb_attach(void)
34{
35
36}
37
38static bool usb_pin_state(void)
39{
40 return false;
41}
42
43/* detect host or charger (INSERTED or EXTRACTED) */
44int usb_detect(void)
45{
46 return usb_pin_state() ? USB_INSERTED : USB_EXTRACTED;
47}