summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/SOURCES14
-rw-r--r--firmware/export/config.h3
-rw-r--r--firmware/export/config/sansaclipzip.h202
-rw-r--r--firmware/target/arm/as3525/fmradio-i2c-as3525.c3
-rw-r--r--firmware/target/arm/as3525/memory-init.S3
-rw-r--r--firmware/target/arm/as3525/powermgmt-target.h9
-rw-r--r--firmware/target/arm/as3525/sansa-clipzip/backlight-clipzip.c42
-rw-r--r--firmware/target/arm/as3525/sansa-clipzip/backlight-target.h30
-rw-r--r--firmware/target/arm/as3525/sansa-clipzip/button-clipzip.c103
-rw-r--r--firmware/target/arm/as3525/sansa-clipzip/button-target.h55
-rw-r--r--firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c103
11 files changed, 565 insertions, 2 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES
index 21917de72d..f685ed7dc7 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -1475,6 +1475,20 @@ target/arm/imx233/sansa-fuzeplus/power-fuzeplus.c
1475#endif /* SIMULATOR */ 1475#endif /* SIMULATOR */
1476#endif 1476#endif
1477 1477
1478#ifdef SANSA_CLIPZIP
1479#ifndef SIMULATOR
1480target/arm/as3525/sansa-clipzip/lcd-clipzip.c
1481target/arm/as3525/sansa-clipzip/button-clipzip.c
1482target/arm/as3525/sansa-clipzip/backlight-clipzip.c
1483#ifndef BOOTLOADER
1484target/arm/powermgmt-ascodec.c
1485target/arm/as3525/sansa-clipzip/powermgmt-clipzip.c
1486//target/arm/as3525/sansa-clipzip/lcd-as-clip-plus.S
1487target/arm/as3525/tuner-as3525v2.c
1488#endif /* !BOOTLOADER */
1489#endif /* !SIMULATOR */
1490#endif /* SANSA_CLIPZIP */
1491
1478#ifdef IAUDIO_7 1492#ifdef IAUDIO_7
1479#ifndef SIMULATOR 1493#ifndef SIMULATOR
1480drivers/nand_id.c 1494drivers/nand_id.c
diff --git a/firmware/export/config.h b/firmware/export/config.h
index 036354180c..57e6bb8a59 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -224,6 +224,7 @@
224#define LCD_IPOD6G 40 /* as used by the iPod Nano 2nd Generation */ 224#define LCD_IPOD6G 40 /* as used by the iPod Nano 2nd Generation */
225#define LCD_FUZEPLUS 41 225#define LCD_FUZEPLUS 41
226#define LCD_SPFD5420A 42 /* rk27xx */ 226#define LCD_SPFD5420A 42 /* rk27xx */
227#define LCD_CLIPZIP 43 /* as used by the Sandisk Sansa Clip Zip */
227 228
228/* LCD_PIXELFORMAT */ 229/* LCD_PIXELFORMAT */
229#define HORIZONTAL_PACKING 1 230#define HORIZONTAL_PACKING 1
@@ -430,6 +431,8 @@ Lyre prototype 1 */
430#include "config/sansafuzev2.h" 431#include "config/sansafuzev2.h"
431#elif defined(SANSA_FUZEPLUS) 432#elif defined(SANSA_FUZEPLUS)
432#include "config/sansafuzeplus.h" 433#include "config/sansafuzeplus.h"
434#elif defined(SANSA_CLIPZIP)
435#include "config/sansaclipzip.h"
433#elif defined(SANSA_C200V2) 436#elif defined(SANSA_C200V2)
434#include "config/sansac200v2.h" 437#include "config/sansac200v2.h"
435#elif defined(SANSA_VIEW) 438#elif defined(SANSA_VIEW)
diff --git a/firmware/export/config/sansaclipzip.h b/firmware/export/config/sansaclipzip.h
new file mode 100644
index 0000000000..749439c668
--- /dev/null
+++ b/firmware/export/config/sansaclipzip.h
@@ -0,0 +1,202 @@
1/*
2 * This config file is for the Sandisk Sansa Clip Zip
3 */
4#define TARGET_TREE /* this target is using the target tree system */
5
6/* For Rolo and boot loader */
7#define MODEL_NUMBER 79
8#define MODEL_NAME "Sandisk Sansa Zip"
9#define FIRMWARE_OFFSET_FILE_DATA 8
10#define FIRMWARE_OFFSET_FILE_CRC 0
11
12
13#ifndef BOOTLOADER
14#define HAVE_MULTIDRIVE
15#define NUM_DRIVES 2
16#define HAVE_HOTSWAP
17#endif
18
19#define HW_SAMPR_CAPS SAMPR_CAP_ALL
20
21/* define this if you have recording possibility */
22#define HAVE_RECORDING
23
24#define REC_SAMPR_CAPS SAMPR_CAP_ALL
25
26/* Define bitmask of input sources - recordable bitmask can be defined
27 explicitly if different */
28#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_FMRADIO)
29
30/* define this if you have a bitmap LCD display */
31#define HAVE_LCD_BITMAP
32/* define this if you have a colour LCD */
33#define HAVE_LCD_COLOR
34
35/* define this if you have access to the quickscreen */
36#define HAVE_QUICKSCREEN
37
38/* define this if you have access to the pitchscreen */
39#define HAVE_PITCHSCREEN
40
41/* define this if you would like tagcache to build on this target */
42#define HAVE_TAGCACHE
43
44/* LCD dimensions */
45#define LCD_WIDTH 96
46#define LCD_HEIGHT 96
47#define LCD_DEPTH 16 /* 65536 colours */
48#define LCD_PIXELFORMAT RGB565SWAPPED /* rgb565 swapped */
49
50/* define this if you have LCD enable function */
51//#define HAVE_LCD_ENABLE
52
53#ifndef BOOTLOADER
54/* Define this if your LCD can be put to sleep.
55 * HAVE_LCD_ENABLE should be defined as well. */
56//#define HAVE_LCD_SLEEP
57//#define HAVE_LCD_SLEEP_SETTING
58#endif
59
60/* define this if you can flip your LCD */
61#define HAVE_LCD_FLIP
62
63/* define this if you can invert the pixels */
64#define HAVE_LCD_INVERT
65
66/* Define this if your LCD can set contrast */
67#define HAVE_LCD_CONTRAST
68
69#define MIN_CONTRAST_SETTING 0
70#define MAX_CONTRAST_SETTING 50
71#define DEFAULT_CONTRAST_SETTING 30
72
73#define IRAM_LCDFRAMEBUFFER IDATA_ATTR /* put the lcd frame buffer in IRAM */
74
75#define CONFIG_KEYPAD SANSA_CLIP_PAD
76
77/* define this if the target has volume keys which can be used in the lists */
78#define HAVE_VOLUME_IN_LIST
79
80/* Define this if you do software codec */
81#define CONFIG_CODEC SWCODEC
82/* There is no hardware tone control */
83#define HAVE_SW_TONE_CONTROLS
84
85/* AS3514 or newer */
86#define HAVE_AS3514
87#define HAVE_AS3543
88
89#ifndef BOOTLOADER
90/* define this if you have a real-time clock */
91#define CONFIG_RTC RTC_AS3514
92
93/* Define if the device can wake from an RTC alarm */
94#define HAVE_RTC_ALARM
95#endif
96
97/* Define this if you have a software controlled poweroff */
98#define HAVE_SW_POWEROFF
99
100#define HAVE_FAT16SUPPORT
101
102/* The number of bytes reserved for loadable codecs */
103#define CODEC_SIZE (0x100000-0x8000)
104
105/* The number of bytes reserved for loadable plugins */
106#define PLUGIN_BUFFER_SIZE 0x80000
107
108#define AB_REPEAT_ENABLE
109
110/* FM Tuner */
111#define CONFIG_TUNER SI4700 /* in fact SI4702 */
112//#define HAVE_TUNER_PWR_CTRL
113
114/* Define this for LCD backlight available */
115#define HAVE_BACKLIGHT
116
117/* define this if you have a flash memory storage */
118#define HAVE_FLASH_STORAGE
119
120/* define this if the flash memory uses the SecureDigital Memory Card protocol */
121#define CONFIG_STORAGE STORAGE_SD
122
123#define BATTERY_CAPACITY_DEFAULT 290 /* default battery capacity */
124#define BATTERY_CAPACITY_MIN 290 /* min. capacity selectable */
125#define BATTERY_CAPACITY_MAX 290 /* max. capacity selectable */
126#define BATTERY_CAPACITY_INC 0 /* capacity increment */
127#define BATTERY_TYPES_COUNT 1 /* only one type */
128
129/* Charging implemented in a target-specific algorithm */
130#define CONFIG_CHARGING CHARGING_TARGET
131
132/* define this if the unit can be powered or charged via USB */
133#define HAVE_USB_POWER
134
135/** Non-simulator section **/
136#ifndef SIMULATOR
137
138/* Define this if you have a AMS AS3525v2 SoC */
139#define CONFIG_CPU AS3525v2
140
141/* Define this if you want to use the AS3525 i2c interface */
142#define CONFIG_I2C I2C_AS3525
143
144/* define this if the hardware can be powered off while charging */
145/* Sansa can't be powered off while charging */
146/* #define HAVE_POWEROFF_WHILE_CHARGING */
147
148/* define current usage levels (based on battery bench) */
149#define CURRENT_NORMAL 19 /* TODO copied from clipplus */
150#define CURRENT_BACKLIGHT 15 /* TODO copied from clipplus */
151#define CURRENT_RECORD CURRENT_NORMAL /* TODO */
152
153/* maximum charging current */
154#define CURRENT_MAX_CHG 150
155
156/* Define this to the CPU frequency */
157#define CPU_FREQ 240000000
158
159/* Type of LCD */
160#define CONFIG_LCD LCD_CLIPZIP
161
162/* USB On-the-go */
163#define CONFIG_USBOTG USBOTG_AS3525v2
164
165/* enable these for the experimental usb stack */
166#define HAVE_USBSTACK
167#define USB_HANDLED_BY_OF
168//#define USE_ROCKBOX_USB
169#define USB_VENDOR_ID 0x0781 /* TODO */
170#define USB_PRODUCT_ID 0x74d1 /* TODO */
171
172
173/* Virtual LED (icon) */
174#define CONFIG_LED LED_VIRTUAL
175
176/* Define this if you have adjustable CPU frequency */
177//#define HAVE_ADJUSTABLE_CPU_FREQ
178
179#define BOOTFILE_EXT "sansa"
180#define BOOTFILE "rockbox." BOOTFILE_EXT
181#define BOOTDIR "/.rockbox"
182
183#define ICODE_ATTR_TREMOR_NOT_MDCT
184
185#define INCLUDE_TIMEOUT_API
186
187#endif /* SIMULATOR */
188
189/** Port-specific settings **/
190
191/* Main LCD backlight brightness range and defaults */
192#define MIN_BRIGHTNESS_SETTING 1 /* TODO */
193#define MAX_BRIGHTNESS_SETTING 12 /* TODO */
194#define DEFAULT_BRIGHTNESS_SETTING 6 /* TODO */
195
196/* Default recording levels */
197#define DEFAULT_REC_MIC_GAIN 23
198#define DEFAULT_REC_LEFT_GAIN 23
199#define DEFAULT_REC_RIGHT_GAIN 23
200
201/* Define this if a programmable hotkey is mapped */
202//#define HAVE_HOTKEY
diff --git a/firmware/target/arm/as3525/fmradio-i2c-as3525.c b/firmware/target/arm/as3525/fmradio-i2c-as3525.c
index 70287c38b8..1dbf2fde24 100644
--- a/firmware/target/arm/as3525/fmradio-i2c-as3525.c
+++ b/firmware/target/arm/as3525/fmradio-i2c-as3525.c
@@ -40,7 +40,8 @@
40#define I2C_SCL_PIN 4 40#define I2C_SCL_PIN 4
41#define I2C_SDA_PIN 5 41#define I2C_SDA_PIN 5
42 42
43#elif defined(SANSA_CLIPV2) || defined(SANSA_CLIPPLUS) 43#elif defined(SANSA_CLIPV2) || defined(SANSA_CLIPPLUS) \
44 || defined(SANSA_CLIPZIP)
44#define I2C_SCL_GPIO(x) GPIOB_PIN(x) 45#define I2C_SCL_GPIO(x) GPIOB_PIN(x)
45#define I2C_SDA_GPIO(x) GPIOB_PIN(x) 46#define I2C_SDA_GPIO(x) GPIOB_PIN(x)
46#define I2C_SCL_GPIO_DIR GPIOB_DIR 47#define I2C_SCL_GPIO_DIR GPIOB_DIR
diff --git a/firmware/target/arm/as3525/memory-init.S b/firmware/target/arm/as3525/memory-init.S
index e45e28a608..49b05463e7 100644
--- a/firmware/target/arm/as3525/memory-init.S
+++ b/firmware/target/arm/as3525/memory-init.S
@@ -30,7 +30,8 @@
30#define MEMORY_MODEL 0x21 30#define MEMORY_MODEL 0x21
31 31
32#elif defined(SANSA_E200V2) || defined(SANSA_FUZE) || defined(SANSA_CLIPV2) \ 32#elif defined(SANSA_E200V2) || defined(SANSA_FUZE) || defined(SANSA_CLIPV2) \
33 || defined(SANSA_CLIPPLUS) || defined(SANSA_FUZEV2) 33 || defined(SANSA_CLIPPLUS) || defined(SANSA_FUZEV2) \
34 || defined(SANSA_CLIPZIP)
34/* 16 bits external bus, high performance SDRAM, 64 Mbits = 8 Mbytes */ 35/* 16 bits external bus, high performance SDRAM, 64 Mbits = 8 Mbytes */
35#define MEMORY_MODEL 0x5 36#define MEMORY_MODEL 0x5
36 37
diff --git a/firmware/target/arm/as3525/powermgmt-target.h b/firmware/target/arm/as3525/powermgmt-target.h
index fd13ec6c7f..f2762f3e47 100644
--- a/firmware/target/arm/as3525/powermgmt-target.h
+++ b/firmware/target/arm/as3525/powermgmt-target.h
@@ -78,6 +78,15 @@
78#define BATT_CHG_I CHG_I_200MA 78#define BATT_CHG_I CHG_I_200MA
79#define CHARGER_TOTAL_TIMER (4*3600*2) 79#define CHARGER_TOTAL_TIMER (4*3600*2)
80 80
81#elif defined(SANSA_CLIPZIP)
82
83/* Check if topped-off and monitor voltage while plugged. */
84#define BATT_FULL_VOLTAGE 4160
85#define BATT_VAUTO_RECHARGE 4100
86#define BATT_CHG_V CHG_V_4_20V
87#define BATT_CHG_I CHG_I_150MA
88#define CHARGER_TOTAL_TIMER (4*3600*2) /* about 1.5 * capacity / current */
89
81#elif defined(SANSA_C200V2) 90#elif defined(SANSA_C200V2)
82 91
83/* Check if topped-off and monitor voltage while plugged. */ 92/* Check if topped-off and monitor voltage while plugged. */
diff --git a/firmware/target/arm/as3525/sansa-clipzip/backlight-clipzip.c b/firmware/target/arm/as3525/sansa-clipzip/backlight-clipzip.c
new file mode 100644
index 0000000000..a592715c90
--- /dev/null
+++ b/firmware/target/arm/as3525/sansa-clipzip/backlight-clipzip.c
@@ -0,0 +1,42 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright © 2011 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
22#include "backlight-target.h"
23#include "lcd.h"
24#include "as3525v2.h"
25#include "ascodec-target.h"
26
27void _backlight_init()
28{
29 /* GPIO B2 controls backlight */
30 GPIOB_DIR |= (1 << 2);
31}
32
33void _backlight_on(void)
34{
35 /* TODO */
36}
37
38void _backlight_off(void)
39{
40 /* TODO */
41}
42
diff --git a/firmware/target/arm/as3525/sansa-clipzip/backlight-target.h b/firmware/target/arm/as3525/sansa-clipzip/backlight-target.h
new file mode 100644
index 0000000000..e19334b5c5
--- /dev/null
+++ b/firmware/target/arm/as3525/sansa-clipzip/backlight-target.h
@@ -0,0 +1,30 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright © 2011 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#ifndef BACKLIGHT_TARGET_H
22#define BACKLIGHT_TARGET_H
23
24void _backlight_init(void);
25void _backlight_on(void);
26void _backlight_off(void);
27
28#define _backlight_panic_on() _backlight_on()
29
30#endif
diff --git a/firmware/target/arm/as3525/sansa-clipzip/button-clipzip.c b/firmware/target/arm/as3525/sansa-clipzip/button-clipzip.c
new file mode 100644
index 0000000000..104c227378
--- /dev/null
+++ b/firmware/target/arm/as3525/sansa-clipzip/button-clipzip.c
@@ -0,0 +1,103 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2008 François Dinel
11 * Copyright © 2008-2009 Rafaël Carré
12 *
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version 2
16 * of the License, or (at your option) any later version.
17 *
18 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 * KIND, either express or implied.
20 *
21 ****************************************************************************/
22
23#include "config.h"
24
25#include "button-target.h"
26#include "as3525v2.h"
27#include "kernel.h"
28#include "system-target.h"
29
30void button_init_device(void)
31{
32 /* GPIO A6, A7 and D6 are direct button inputs */
33 GPIOA_DIR &= ~(1 << 6);
34 GPIOA_DIR &= ~(1 << 7);
35 GPIOD_DIR &= ~(1 << 6);
36
37 /* GPIO C1, C2, C3, C4, C5 are used in a column/row key scan matrix */
38 GPIOC_DIR |= ((1 << 1) | (1 << 2));
39 GPIOC_DIR &= ~((1 << 3) | (1 << 4) | (1 << 5));
40}
41
42/* TODO:
43 Instead of using udelay to wait for buttons to settle, we could use a
44 simple state machine to alternate between key matrix rows (like we do on
45 the clip) and this way avoid burning cycles in the udelay.
46
47 TODO:
48 Figure out the real mappings from GPIOs to buttons.
49 The current mapping is just an educated guess.
50*/
51int button_read_device(void)
52{
53 int buttons = 0;
54
55 /* power */
56 if (GPIOD_PIN(6)) {
57 buttons |= BUTTON_POWER;
58 }
59
60 /* volume */
61 if (GPIOA_PIN(6)) {
62 buttons |= BUTTON_VOL_DOWN;
63 }
64 if (GPIOA_PIN(7)) {
65 buttons |= BUTTON_VOL_UP;
66 }
67
68 /* key matrix buttons, first row */
69 GPIOC_PIN(1) = (1 << 1);
70 GPIOC_PIN(2) = 0;
71 udelay(500);
72
73 if (GPIOC_PIN(3)) {
74 buttons |= BUTTON_LEFT;
75 }
76 if (GPIOC_PIN(4)) {
77 buttons |= BUTTON_SELECT;
78 }
79 if (GPIOC_PIN(5)) {
80 buttons |= BUTTON_RIGHT;
81 }
82
83 /* key matrix buttons, second row */
84 GPIOC_PIN(1) = 0;
85 GPIOC_PIN(2) = (1 << 2);
86 udelay(500);
87
88 if (GPIOC_PIN(3)) {
89 buttons |= BUTTON_UP;
90 }
91 if (GPIOC_PIN(4)) {
92 buttons |= BUTTON_HOME;
93 }
94 if (GPIOC_PIN(5)) {
95 buttons |= BUTTON_DOWN;
96 }
97
98 /* deselect scan rows */
99 GPIOC_PIN(2) = 0;
100
101 return buttons;
102}
103
diff --git a/firmware/target/arm/as3525/sansa-clipzip/button-target.h b/firmware/target/arm/as3525/sansa-clipzip/button-target.h
new file mode 100644
index 0000000000..8a93d45daa
--- /dev/null
+++ b/firmware/target/arm/as3525/sansa-clipzip/button-target.h
@@ -0,0 +1,55 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2008 François Dinel
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#ifndef _BUTTON_TARGET_H_
23#define _BUTTON_TARGET_H_
24
25#include "config.h"
26
27void button_init_device(void);
28int button_read_device(void);
29
30/* Main unit's buttons */
31#define BUTTON_HOME 0x00000001
32
33#define BUTTON_VOL_UP 0x00000002
34#define BUTTON_VOL_DOWN 0x00000004
35
36#define BUTTON_UP 0x00000008
37#define BUTTON_DOWN 0x00000010
38#define BUTTON_LEFT 0x00000020
39#define BUTTON_RIGHT 0x00000040
40
41#define BUTTON_SELECT 0x00000080
42
43#define BUTTON_POWER 0x00000100
44
45#define BUTTON_MAIN (BUTTON_HOME|BUTTON_VOL_UP|BUTTON_VOL_DOWN\
46 |BUTTON_UP|BUTTON_DOWN|BUTTON_LEFT|BUTTON_RIGHT\
47 |BUTTON_SELECT|BUTTON_POWER)
48
49#define BUTTON_REMOTE 0
50
51/* Software power-off */
52#define POWEROFF_BUTTON BUTTON_POWER
53#define POWEROFF_COUNT 10
54
55#endif /* _BUTTON_TARGET_H_ */
diff --git a/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c b/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c
new file mode 100644
index 0000000000..8efbdf77b9
--- /dev/null
+++ b/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c
@@ -0,0 +1,103 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2008 François Dinel
11 * Copyright (C) 2008-2009 Rafaël Carré
12 *
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version 2
16 * of the License, or (at your option) any later version.
17 *
18 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 * KIND, either express or implied.
20 *
21 ****************************************************************************/
22#include "config.h"
23
24#include "lcd.h"
25#include "lcd-clip.h"
26#include "system.h"
27#include "cpu.h"
28
29static int display_type;
30
31int lcd_hw_init(void)
32{
33 bitset32(&CGU_PERI, CGU_SSP_CLOCK_ENABLE);
34
35 SSP_CPSR = AS3525_SSP_PRESCALER; /* OF = 0x10 */
36 SSP_CR0 = (1<<7) | (1<<6) | 7; /* Motorola SPI frame format, 8 bits */
37 SSP_CR1 = (1<<3) | (1<<1); /* SSP Operation enabled */
38 SSP_IMSC = 0; /* No interrupts */
39
40 /* configure GPIO B2 (display D/C#) as output */
41 GPIOB_DIR |= (1<<2);
42
43 /* configure GPIO B3 (display type detect) as input */
44 GPIOB_DIR &= ~(1<<3);
45
46 /* set GPIO A5 (display RESET# ?) */
47 GPIOA_DIR |= (1<<5);
48 GPIOA_PIN(5) = (1<<5);
49
50 /* detect display type on GPIO B3 */
51 return GPIOB_PIN(3) ? 1 : 0;
52}
53
54void lcd_write_command(int byte)
55{
56 while(SSP_SR & (1<<4)) /* BSY flag */
57 ;
58
59 /* LCD command mode */
60 GPIOB_PIN(2) = 0;
61
62 SSP_DATA = byte;
63 while(SSP_SR & (1<<4)) /* BSY flag */
64 ;
65}
66
67void lcd_write_data(const fb_data* p_bytes, int count)
68{
69 /* LCD data mode */
70 GPIOB_PIN(2) = (1<<2);
71
72 while (count--)
73 {
74 while(!(SSP_SR & (1<<1))) /* wait until transmit FIFO is not full */
75 ;
76
77 SSP_DATA = *p_bytes++;
78 }
79}
80
81void lcd_update(void)
82{
83 /* TODO */
84}
85
86void lcd_init_device(void)
87{
88 /* TODO */
89 display_type = lcd_hw_init();
90}
91
92/* Update a fraction of the display. */
93void lcd_update_rect(int x, int y, int width, int height)
94{
95 (void) x;
96 (void) y;
97 (void) width;
98 (void) height;
99
100 /* TODO not implemented yet, do a full update instead */
101 lcd_update();
102}
103