summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2021-08-14 14:05:32 +0100
committerAidan MacDonald <amachronic@protonmail.com>2021-08-14 14:13:54 +0100
commit786d06742a379df667b0fd14df0b2dbc045f312c (patch)
tree4b07eb4e9028c48a0a62663c3ce6ea0d7a62b11c
parent62260aa7057f322f7f99062a6a3bd7534ea0047d (diff)
downloadrockbox-786d06742a379df667b0fd14df0b2dbc045f312c.tar.gz
rockbox-786d06742a379df667b0fd14df0b2dbc045f312c.zip
Remove Samsung YP-Z5 port
It has only a couple GB of onboard flash storage with no storage driver in Rockbox. It hasn't seen any meaningful development since its initial commit, it's not on the build farm, and the bootloader build is broken by other refactoring. Change-Id: Idd9e3c46fac9b96f416ce444182f97a50770e747
-rw-r--r--apps/SOURCES2
-rw-r--r--apps/keymaps/keymap-ypz5.c406
-rw-r--r--firmware/SOURCES11
-rw-r--r--firmware/export/config.h4
-rw-r--r--firmware/export/config/samsungypz5.h204
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/audio-target.h31
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/backlight-target.h28
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/backlight-ypz5.c149
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/button-target.h59
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/button-ypz5.c273
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/debug-ypz5.c29
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/fmradio-target.h31
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/ftl-target.h39
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/lcd-target.h25
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/lcd-ypz5.c295
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/powermgmt-target.h37
-rw-r--r--firmware/target/arm/imx233/samsung-ypz5/powermgmt-ypz5.c48
-rw-r--r--firmware/target/arm/imx233/touchscreen-imx233.c27
-rwxr-xr-xtools/configure21
-rw-r--r--tools/scramble.c4
20 files changed, 2 insertions, 1721 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index 6fdaea3ca8..1628524805 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -272,8 +272,6 @@ keymaps/keymap-ma.c
272keymaps/keymap-nwz.c 272keymaps/keymap-nwz.c
273#elif CONFIG_KEYPAD == SONY_NWZA860_PAD 273#elif CONFIG_KEYPAD == SONY_NWZA860_PAD
274keymaps/keymap-nwza860.c 274keymaps/keymap-nwza860.c
275#elif CONFIG_KEYPAD == SAMSUNG_YPZ5_PAD
276keymaps/keymap-ypz5.c
277#elif CONFIG_KEYPAD == IHIFI_PAD 275#elif CONFIG_KEYPAD == IHIFI_PAD
278keymaps/keymap-ihifi.c 276keymaps/keymap-ihifi.c
279#elif CONFIG_KEYPAD == IHIFI_770_PAD 277#elif CONFIG_KEYPAD == IHIFI_770_PAD
diff --git a/apps/keymaps/keymap-ypz5.c b/apps/keymaps/keymap-ypz5.c
deleted file mode 100644
index edeebbac3f..0000000000
--- a/apps/keymaps/keymap-ypz5.c
+++ /dev/null
@@ -1,406 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2013 Lorenzo Miori
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/* Button Code Definitions for the Creative Zen Vision target */
23/* Copied from ZVM target for now... */
24#include <stdio.h>
25#include <string.h>
26#include <stdlib.h>
27
28#include "config.h"
29#include "action.h"
30#include "button.h"
31#include "settings.h"
32
33/*
34 * The format of the list is as follows
35 * { Action Code, Button code, Prereq button code }
36 * if there's no need to check the previous button's value, use BUTTON_NONE
37 * Insert LAST_ITEM_IN_LIST at the end of each mapping
38 */
39
40/* CONTEXT_CUSTOM's used in this file...
41
42CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
43CONTEXT_CUSTOM|CONTEXT_SETTINGS = the direction keys for the eq/col picker screens
44 i.e where up/down is inc/dec
45 CONTEXT_SETTINGS = up/down is prev/next, l/r is inc/dec
46
47*/
48
49static const struct button_mapping button_context_standard[] = {
50 { ACTION_STD_PREV, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
51 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
52 { ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
53 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
54
55 { ACTION_STD_PREV, BUTTON_FF|BUTTON_REL, BUTTON_NONE },
56 { ACTION_STD_PREVREPEAT, BUTTON_FF|BUTTON_REPEAT, BUTTON_NONE },
57 { ACTION_STD_NEXT, BUTTON_REW|BUTTON_REL, BUTTON_NONE },
58 { ACTION_STD_NEXTREPEAT, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE },
59
60 { ACTION_STD_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
61
62 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
63
64 //{ ACTION_STD_QUICKSCREEN, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
65 { ACTION_STD_MENU, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE },
66
67 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
68// { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
69
70 LAST_ITEM_IN_LIST
71}; /* button_context_standard */
72
73
74static const struct button_mapping button_context_wps[] = {
75 { ACTION_WPS_PLAY, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
76 //{ ACTION_WPS_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
77
78 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
79 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
80
81 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
82 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
83 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
84 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
85
86 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
87 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
88 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
89 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
90
91 //{ ACTION_WPS_PITCHSCREEN, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
92
93 { ACTION_WPS_QUICKSCREEN, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
94 { ACTION_WPS_MENU, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
95 { ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE },
96 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
97
98 { ACTION_WPS_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
99 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_BACK },
100 LAST_ITEM_IN_LIST
101}; /* button_context_wps */
102
103static const struct button_mapping button_context_list[] = {
104#ifdef HAVE_VOLUME_IN_LIST
105 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
106 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
107 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
108 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
109#endif
110 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
111}; /* button_context_list */
112
113static const struct button_mapping button_context_tree[] = {
114 //{ ACTION_TREE_WPS, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
115 //{ ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE },
116 //{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
117 //{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
118 //{ ACTION_TREE_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
119
120 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
121}; /* button_context_tree */
122
123static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
124 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
125 { ACTION_STD_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
126 { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
127 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
128 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
129 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
130 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
131 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
132};
133
134static const struct button_mapping button_context_settings[] = {
135 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
136 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
137 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
138 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
139 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
140 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
141 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
142 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
143 { ACTION_SETTINGS_RESET, BUTTON_POWER, BUTTON_NONE },
144 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
145}; /* button_context_settings */
146
147static const struct button_mapping button_context_settings_right_is_inc[] = {
148 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
149 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
150 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
151 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
152 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
153 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
154 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
155 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
156 { ACTION_SETTINGS_RESET, BUTTON_BACK, BUTTON_NONE },
157 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
158}; /* button_context_settingsgraphical */
159
160static const struct button_mapping button_context_yesno[] = {
161 { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
162 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
163}; /* button_context_settings_yesno */
164
165static const struct button_mapping button_context_colorchooser[] = {
166 { ACTION_STD_OK, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
167 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
168}; /* button_context_colorchooser */
169
170static const struct button_mapping button_context_eq[] = {
171 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
172 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
173}; /* button_context_eq */
174
175/** Bookmark Screen **/
176static const struct button_mapping button_context_bmark[] = {
177 { ACTION_BMS_DELETE, BUTTON_BACK, BUTTON_NONE },
178 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
179}; /* button_context_bmark */
180
181static const struct button_mapping button_context_time[] = {
182 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
183}; /* button_context_time */
184
185static const struct button_mapping button_context_quickscreen[] = {
186 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
187 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
188 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
189 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
190 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
191 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
192 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
193 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
194 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
195 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
196}; /* button_context_quickscreen */
197
198static const struct button_mapping button_context_pitchscreen[] = {
199
200 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
201}; /* button_context_pitchcreen */
202
203static const struct button_mapping button_context_keyboard[] = {
204 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
205 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
206 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
207 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
208 { ACTION_KBD_CURSOR_RIGHT, BUTTON_POWER, BUTTON_NONE },
209 { ACTION_KBD_CURSOR_RIGHT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
210 { ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
211 { ACTION_KBD_PAGE_FLIP, BUTTON_BACK|BUTTON_BACK, BUTTON_NONE },
212 { ACTION_KBD_DONE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
213 { ACTION_KBD_ABORT, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
214 { ACTION_KBD_BACKSPACE, BUTTON_BACK, BUTTON_NONE },
215 { ACTION_KBD_BACKSPACE, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE },
216 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
217 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
218 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
219 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
220 { ACTION_KBD_MORSE_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
221 LAST_ITEM_IN_LIST
222}; /* button_context_keyboard */
223
224/** FM Radio Screen **/
225#if CONFIG_TUNER
226static const struct button_mapping button_context_radio[] = {
227 { ACTION_FM_MENU, BUTTON_SELECT | BUTTON_REPEAT, BUTTON_SELECT },
228 { ACTION_FM_MODE, BUTTON_SELECT, BUTTON_SELECT },
229// { ACTION_FM_PRESET, BUTTON_STOP, BUTTON_NONE },
230 { ACTION_FM_PLAY, BUTTON_POWER | BUTTON_REL, BUTTON_NONE },
231 { ACTION_FM_STOP, BUTTON_POWER | BUTTON_REPEAT, BUTTON_NONE },
232 { ACTION_FM_EXIT, BUTTON_BACK, BUTTON_NONE },
233
234 //{ ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE },
235 //{ ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
236 //{ ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
237 //{ ACTION_SETTINGS_DECREPEAT,BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
238
239 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
240}; /* button_context_radio */
241#endif
242
243#ifdef HAVE_RECORDING
244static const struct button_mapping button_context_recscreen[] = {
245
246 { ACTION_REC_PAUSE, BUTTON_SELECT, BUTTON_NONE },
247 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
248 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
249 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
250 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
251
252 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
253}; /* button_context_recscreen */
254#endif
255
256#ifdef USB_ENABLE_HID
257static const struct button_mapping button_context_usb_hid[] = {
258 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
259 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
260
261 LAST_ITEM_IN_LIST
262}; /* button_context_usb_hid */
263
264static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
265
266 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
267 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
268 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE },
269 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
270 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
271 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
272 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
273 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_REW|BUTTON_REL, BUTTON_REW },
274 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_FF|BUTTON_REL, BUTTON_FF },
275
276 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
277}; /* button_context_usb_hid_mode_multimedia */
278
279
280static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
281 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
282 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
283 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
284 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
285 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
286 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
287 //{ ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT },
288 //{ ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT },
289 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP, BUTTON_NONE },
290 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
291 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN, BUTTON_NONE },
292 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
293 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT, BUTTON_SELECT },
294 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
295
296 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
297}; /* button_context_usb_hid_mode_presentation */
298
299static const struct button_mapping button_context_usb_hid_mode_browser[] = {
300 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_UP, BUTTON_NONE },
301 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
302 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN, BUTTON_NONE },
303 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
304 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_VOL_UP, BUTTON_NONE },
305 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
306 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_VOL_DOWN, BUTTON_NONE },
307 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
308 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
309 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
310 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
311 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
312 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
313 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
314 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
315
316 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
317}; /* button_context_usb_hid_mode_browser */
318
319#ifdef HAVE_USB_HID_MOUSE
320static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
321 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE },
322 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
323 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE },
324 { ACTION_USB_HID_MOUSE_DOWN_REP, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
325 { ACTION_USB_HID_MOUSE_LEFT, BUTTON_LEFT, BUTTON_NONE },
326 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
327 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
328 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
329 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_SELECT, BUTTON_NONE },
330 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
331 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT, BUTTON_POWER, BUTTON_NONE },
332 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT_REL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
333
334 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_FF, BUTTON_NONE },
335 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_FF|BUTTON_REPEAT, BUTTON_NONE },
336 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_REW, BUTTON_NONE },
337 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE },
338
339 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
340}; /* button_context_usb_hid_mode_mouse */
341#endif
342#endif
343
344const struct button_mapping* get_context_mapping(int context)
345{
346 switch (context)
347 {
348 case CONTEXT_STD:
349 return button_context_standard;
350 case CONTEXT_WPS:
351 return button_context_wps;
352 case CONTEXT_LIST:
353 return button_context_list;
354 case CONTEXT_MAINMENU:
355 case CONTEXT_TREE:
356 return button_context_listtree_scroll_without_combo;
357 case CONTEXT_CUSTOM|CONTEXT_TREE:
358 return button_context_tree;
359#if CONFIG_TUNER
360 case CONTEXT_FM:
361 return button_context_radio;
362#endif
363 case CONTEXT_SETTINGS:
364 return button_context_settings;
365 case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
366 return button_context_settings_right_is_inc;
367 case CONTEXT_SETTINGS_COLOURCHOOSER:
368 return button_context_colorchooser;
369 case CONTEXT_SETTINGS_EQ:
370 return button_context_eq;
371 case CONTEXT_SETTINGS_TIME:
372 return button_context_time;
373 case CONTEXT_YESNOSCREEN:
374 return button_context_yesno;
375 case CONTEXT_BOOKMARKSCREEN:
376 return button_context_bmark;
377 case CONTEXT_QUICKSCREEN:
378 return button_context_quickscreen;
379 case CONTEXT_PITCHSCREEN:
380 return button_context_pitchscreen;
381 case CONTEXT_KEYBOARD:
382 case CONTEXT_MORSE_INPUT:
383 return button_context_keyboard;
384#ifdef HAVE_RECORDING
385 case CONTEXT_SETTINGS_RECTRIGGER:
386 return button_context_settings_right_is_inc;
387 case CONTEXT_RECSCREEN:
388 return button_context_recscreen;
389#endif
390#ifdef USB_ENABLE_HID
391 case CONTEXT_USB_HID:
392 return button_context_usb_hid;
393 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
394 return button_context_usb_hid_mode_multimedia;
395 case CONTEXT_USB_HID_MODE_PRESENTATION:
396 return button_context_usb_hid_mode_presentation;
397 case CONTEXT_USB_HID_MODE_BROWSER:
398 return button_context_usb_hid_mode_browser;
399#ifdef HAVE_USB_HID_MOUSE
400 case CONTEXT_USB_HID_MODE_MOUSE:
401 return button_context_usb_hid_mode_mouse;
402#endif
403#endif
404 }
405 return button_context_standard;
406}
diff --git a/firmware/SOURCES b/firmware/SOURCES
index 8d7232f206..e2f7e26f84 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -1450,17 +1450,6 @@ target/arm/imx233/sansa-fuzeplus/debug-fuzeplus.c
1450target/arm/imx233/sansa-fuzeplus/powermgmt-fuzeplus.c 1450target/arm/imx233/sansa-fuzeplus/powermgmt-fuzeplus.c
1451#endif 1451#endif
1452 1452
1453#ifdef SAMSUNG_YPZ5
1454target/arm/imx233/samsung-ypz5/backlight-ypz5.c
1455target/arm/imx233/samsung-ypz5/lcd-ypz5.c
1456target/arm/imx233/samsung-ypz5/button-ypz5.c
1457target/arm/imx233/samsung-ypz5/debug-ypz5.c
1458target/arm/imx233/samsung-ypz5/powermgmt-ypz5.c
1459#ifndef BOOTLOADER
1460target/arm/imx233/fmradio-imx233.c
1461#endif
1462#endif
1463
1464#ifdef SANSA_CLIPZIP 1453#ifdef SANSA_CLIPZIP
1465target/arm/as3525/sansa-clipzip/lcd-clipzip.c 1454target/arm/as3525/sansa-clipzip/lcd-clipzip.c
1466target/arm/as3525/sansa-clipzip/button-clipzip.c 1455target/arm/as3525/sansa-clipzip/button-clipzip.c
diff --git a/firmware/export/config.h b/firmware/export/config.h
index 702b821856..383677865f 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -145,7 +145,6 @@
145#define MA_PAD 56 145#define MA_PAD 56
146#define SONY_NWZ_PAD 57 146#define SONY_NWZ_PAD 57
147#define CREATIVE_ZEN_PAD 58 147#define CREATIVE_ZEN_PAD 58
148#define SAMSUNG_YPZ5_PAD 59
149#define IHIFI_PAD 60 148#define IHIFI_PAD 60
150#define SAMSUNG_YPR1_PAD 61 149#define SAMSUNG_YPR1_PAD 61
151#define SAMSUNG_YH92X_PAD 62 150#define SAMSUNG_YH92X_PAD 62
@@ -264,7 +263,6 @@
264#define LCD_CREATIVEZENMOZAIC 56 /* as used by the Creative ZEN Mozaic (FGD0801) */ 263#define LCD_CREATIVEZENMOZAIC 56 /* as used by the Creative ZEN Mozaic (FGD0801) */
265#define LCD_ILI9342C 57 /* another type of lcd used by HiFi E.T MA9/MA8 */ 264#define LCD_ILI9342C 57 /* another type of lcd used by HiFi E.T MA9/MA8 */
266#define LCD_CREATIVEZENV 58 /* as used by the Creative Zen V (Plus) */ 265#define LCD_CREATIVEZENV 58 /* as used by the Creative Zen V (Plus) */
267#define LCD_SAMSUNGYPZ5 59 /* as used by Samsung YP-Z5 */
268#define LCD_IHIFI 60 /* as used by IHIFI 760/960 */ 266#define LCD_IHIFI 60 /* as used by IHIFI 760/960 */
269#define LCD_CREATIVEZENXFISTYLE 61 /* as used by Creative Zen X-Fi Style */ 267#define LCD_CREATIVEZENXFISTYLE 61 /* as used by Creative Zen X-Fi Style */
270#define LCD_SAMSUNGYPR1 62 /* as used by Samsung YP-R1 */ 268#define LCD_SAMSUNGYPR1 62 /* as used by Samsung YP-R1 */
@@ -543,8 +541,6 @@ Lyre prototype 1 */
543#include "config/sonynwze370.h" 541#include "config/sonynwze370.h"
544#elif defined(SONY_NWZE360) 542#elif defined(SONY_NWZE360)
545#include "config/sonynwze360.h" 543#include "config/sonynwze360.h"
546#elif defined(SAMSUNG_YPZ5)
547#include "config/samsungypz5.h"
548#elif defined(IHIFI760) 544#elif defined(IHIFI760)
549#include "config/ihifi760.h" 545#include "config/ihifi760.h"
550#elif defined(IHIFI770) 546#elif defined(IHIFI770)
diff --git a/firmware/export/config/samsungypz5.h b/firmware/export/config/samsungypz5.h
deleted file mode 100644
index 2af62c1cbe..0000000000
--- a/firmware/export/config/samsungypz5.h
+++ /dev/null
@@ -1,204 +0,0 @@
1/*
2 * This config file is for the Samsung YP-Z5
3 */
4#define IMX233_SUBTARGET 3600
5#define IMX233_PACKAGE IMX233_BGA169
6#define IMX233_PARTITIONS IMX233_FREESCALE
7
8/* For Rolo and boot loader */
9#define MODEL_NUMBER 84
10#define MODEL_NAME "Samsung YP-Z5"
11/* Define if boot data from bootloader has been enabled for the target */
12#define HAVE_BOOTDATA
13
14#define HW_SAMPR_CAPS SAMPR_CAP_ALL_48
15
16/* define this if you have recording possibility */
17#define HAVE_RECORDING
18
19#define REC_SAMPR_CAPS SAMPR_CAP_ALL_48
20
21/* Default recording levels */
22#define DEFAULT_REC_MIC_GAIN 23
23#define DEFAULT_REC_LEFT_GAIN 23
24#define DEFAULT_REC_RIGHT_GAIN 23
25
26/* Define bitmask of input sources - recordable bitmask can be defined
27 explicitly if different */
28#define HAVE_FMRADIO_IN
29#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_FMRADIO)
30
31
32
33/* define this if you have a colour LCD */
34#define HAVE_LCD_COLOR
35
36#ifndef BOOTLOADER
37#define HAVE_ALBUMART
38
39/* define this to enable bitmap scaling */
40#define HAVE_BMP_SCALING
41
42/* define this to enable JPEG decoding */
43#define HAVE_JPEG
44
45/* Define this if a programmable hotkey is mapped */
46#define HAVE_HOTKEY
47
48/* define this if you have access to the quickscreen */
49#define HAVE_QUICKSCREEN
50
51/* define this if you would like tagcache to build on this target */
52#define HAVE_TAGCACHE
53
54/* define this if the target has volume keys which can be used in the lists */
55#define HAVE_VOLUME_IN_LIST
56
57/* define this if you have LCD enable function */
58//#define HAVE_LCD_ENABLE
59
60/* Define this if your LCD can be put to sleep. HAVE_LCD_ENABLE
61 should be defined as well.
62#define HAVE_LCD_SLEEP
63#define HAVE_LCD_SLEEP_SETTING
64*/
65
66/* define this if you can flip your LCD
67#define HAVE_LCD_FLIP
68*/
69
70/* define this if you can invert the colours on your LCD
71#define HAVE_LCD_INVERT
72*/
73
74/* define this if you have a real-time clock */
75#define CONFIG_RTC RTC_IMX233
76
77/* define this if you have a real-time clock with alarm facilities */
78#define HAVE_RTC_ALARM
79
80#endif /* !BOOTLOADER */
81
82/* define this if you have an i.MX23 codec */
83#define HAVE_IMX233_CODEC
84
85#define CONFIG_TUNER TEA5767
86#define CONFIG_TUNER_XTAL 32768
87
88/* There is no hardware tone control */
89#define HAVE_SW_TONE_CONTROLS
90
91#define CONFIG_KEYPAD SAMSUNG_YPZ5_PAD
92#define HAVE_TOUCHPAD_IMX233
93
94/* Define this to enable morse code input */
95#define HAVE_MORSE_INPUT
96
97
98
99
100/* LCD dimensions */
101#define LCD_WIDTH 128
102#define LCD_HEIGHT 160
103/* sqrt(128^2 + 160^2) / 1.8 = 113.8 */
104#define LCD_DPI 114
105#define LCD_DEPTH 16 /* 65536 colours */
106#define LCD_PIXELFORMAT RGB565 /* rgb565 */
107
108/* Define this if you have a software controlled poweroff */
109#define HAVE_SW_POWEROFF
110
111/* Some devices seem to be FAT16 formatted */
112#define HAVE_FAT16SUPPORT
113
114/* The number of bytes reserved for loadable codecs */
115#define CODEC_SIZE 0x100000
116
117/* The number of bytes reserved for loadable plugins */
118#define PLUGIN_BUFFER_SIZE 0x80000
119
120#define AB_REPEAT_ENABLE
121
122/* Define this for LCD backlight available */
123#define HAVE_BACKLIGHT
124#define HAVE_BACKLIGHT_BRIGHTNESS
125
126/* Main LCD backlight brightness range and defaults */
127#define MIN_BRIGHTNESS_SETTING 1
128#define MAX_BRIGHTNESS_SETTING 18
129#define DEFAULT_BRIGHTNESS_SETTING 5
130
131/* Which backlight fading type? */
132#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
133
134/* define this if you have a flash memory storage */
135//#define HAVE_FLASH_STORAGE
136
137#define CONFIG_STORAGE (STORAGE_RAMDISK)
138//#define CONFIG_NAND NAND_IMX233
139//#define NUM_DRIVES 0
140
141/* Extra threads: touchpad and rds */
142//#define TARGET_EXTRA_THREADS 2
143
144/* todo */
145#define BATTERY_CAPACITY_DEFAULT 550 /* default battery capacity */
146#define BATTERY_CAPACITY_MIN 550 /* min. capacity selectable */
147#define BATTERY_CAPACITY_MAX 550 /* max. capacity selectable */
148#define BATTERY_CAPACITY_INC 0 /* capacity increment */
149#define BATTERY_TYPES_COUNT 1 /* only one type */
150
151#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
152
153/* Charging implemented in a target-specific algorithm */
154#define CONFIG_CHARGING CHARGING_TARGET
155
156/* define this if the unit can be powered or charged via USB */
157#define HAVE_USB_POWER
158
159/* Define this if you have an IMX233*/
160#define CONFIG_CPU IMX233
161
162/* Define this if you want to use the IMX233 i2c interface */
163#define CONFIG_I2C I2C_IMX233
164
165/* define current usage levels (based on battery bench) */
166#define CURRENT_NORMAL 35
167#define CURRENT_BACKLIGHT 30
168#define CURRENT_RECORD CURRENT_NORMAL
169
170/* maximum charging current */
171#define CURRENT_MAX_CHG 200
172
173/* Define this to the CPU frequency */
174#define CPU_FREQ 454000000
175
176/* Type of LCD */
177#define CONFIG_LCD LCD_SAMSUNGYPZ5
178
179/* Offset ( in the firmware file's header ) to the file CRC and data. These are
180 only used when loading the old format rockbox.e200 file */
181#define FIRMWARE_OFFSET_FILE_CRC 0x0
182#define FIRMWARE_OFFSET_FILE_DATA 0x8
183
184/* USB On-the-go */
185#define CONFIG_USBOTG USBOTG_ARC
186
187/* enable these for the experimental usb stack */
188#define HAVE_USBSTACK
189#define USB_VENDOR_ID 0x04e8
190#define USB_PRODUCT_ID 0x5041
191#define HAVE_USB_HID_MOUSE
192#define HAVE_BOOTLOADER_USB_MODE
193
194/* Define this if you have adjustable CPU frequency */
195//#define HAVE_ADJUSTABLE_CPU_FREQ
196
197/* Virtual LED (icon) */
198#define CONFIG_LED LED_VIRTUAL
199
200#define BOOTFILE_EXT "samsung"
201#define BOOTFILE "rockbox." BOOTFILE_EXT
202#define BOOTDIR "/.rockbox"
203
204#define INCLUDE_TIMEOUT_API
diff --git a/firmware/target/arm/imx233/samsung-ypz5/audio-target.h b/firmware/target/arm/imx233/samsung-ypz5/audio-target.h
deleted file mode 100644
index c0bee26e45..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/audio-target.h
+++ /dev/null
@@ -1,31 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2013 by Lorenzo Miori
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 __audio_target__
22#define __audio_target__
23
24/* MUTE_ON toggles a transistor that in turns toggles a mosfet... */
25#define IMX233_AUDIO_HP_GATE_BANK 1
26#define IMX233_AUDIO_HP_GATE_PIN 22
27#define IMX233_AUDIO_HP_GATE_INVERTED
28
29#define IMX233_AUDIO_COUPLING_MODE ACM_CAP
30
31#endif /* __audio_target__ */
diff --git a/firmware/target/arm/imx233/samsung-ypz5/backlight-target.h b/firmware/target/arm/imx233/samsung-ypz5/backlight-target.h
deleted file mode 100644
index e26f83811d..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/backlight-target.h
+++ /dev/null
@@ -1,28 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2013 by Lorenzo Miori
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20#ifndef BACKLIGHT_TARGET_H
21#define BACKLIGHT_TARGET_H
22
23bool backlight_hw_init(void);
24void backlight_hw_on(void);
25void backlight_hw_off(void);
26void backlight_hw_brightness(int brightness);
27
28#endif /* BACKLIGHT_TARGET_H */
diff --git a/firmware/target/arm/imx233/samsung-ypz5/backlight-ypz5.c b/firmware/target/arm/imx233/samsung-ypz5/backlight-ypz5.c
deleted file mode 100644
index b02c3a1d16..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/backlight-ypz5.c
+++ /dev/null
@@ -1,149 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2013 by Lorenzo Miori
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "config.h"
22#include "system.h"
23#include "lcd.h"
24#include "backlight.h"
25#include "backlight-target.h"
26#include "pinctrl-imx233.h"
27
28/**
29 * AAT3151 Backlight Controller
30 */
31
32/* Timings */
33#define TIME_OFF 500
34#define TIME_LOW 50
35#define TIME_HI 50
36#define TIME_LAT 500
37
38/* Number of raising edges to select the particular register */
39#define D1_D4_CURRENT_E 17
40#define D1_D3_CURRENT_E 18
41#define D4_CURRENT_E 19
42#define MAX_CURRENT_E 20
43#define LOW_CURRENT_E 21
44
45/* The actual register address / number */
46#define D1_D4_CURRENT 1
47#define D1_D3_CURRENT 2
48#define D4_CURRENT 3
49#define MAX_CURRENT 4
50#define LOW_CURRENT 5
51
52/* Valid values for LOW_CURRENT register */
53#define MAX_CURRENT_20 1
54#define MAX_CURRENT_30 2
55#define MAX_CURRENT_15 3
56#define MAX_CURRENT_LOW_CURRENT 4
57
58static int current_level = -1;
59
60static void create_raising_edges(int num)
61{
62 while (num--)
63 {
64 /* Setting a register takes a sufficient small amount of time,
65 * in the order of 50 ns. Thus the necessary 2 delays TIME_LOW/TIME_HI
66 * are not strictly necessary */
67 imx233_pinctrl_set_gpio(3, 13, false);
68 imx233_pinctrl_set_gpio(3, 13, true);
69 }
70}
71
72static void aat3151_write(int addr, int data)
73{
74 create_raising_edges(16 + addr);
75 udelay(TIME_LAT);
76 create_raising_edges(data);
77 udelay(TIME_LAT);
78}
79
80void backlight_hw_brightness(int level)
81{
82 /* Don't try to reset backlight if not necessary
83 * Moreover this helps to avoid flickering when
84 * being in some screens like USB mode and
85 * pressing some keys / touchpad...
86 */
87 if (current_level == level) return;
88
89 /* Check for limits and adjust in case */
90 level = MIN(MAX_BRIGHTNESS_SETTING, MAX(0, level));
91
92 if (level == 0)
93 {
94 /* Set pin low for a sufficient time, puts the device into low-power consumption state
95 * In other words backlight goes off
96 */
97 imx233_pinctrl_set_gpio(3, 13, false);
98 udelay(TIME_OFF);
99 }
100 else
101 {
102 if (level > 3) {
103 /* This enables 16 levels of backlight */
104 aat3151_write(MAX_CURRENT, MAX_CURRENT_15);
105 /* Set the value according Table 1 in datasheet
106 * For MAX_CURRENT_15, the scale is from 0 mA to 15 mA in 16 steps
107 */
108 aat3151_write(D1_D3_CURRENT, 19 - level);
109 }
110 else {
111 /* This enables other 4 levels of backlight */
112 aat3151_write(MAX_CURRENT, MAX_CURRENT_LOW_CURRENT);
113 /* Set the value according Table 1 in datasheet
114 * For LOW_CURRENT, there is no "real" scale. We have scattered values.
115 * We are interested in the last 3 -> 0.5 mA; 1 mA; 2 mA
116 */
117 aat3151_write(LOW_CURRENT, 13 + level);
118 }
119 }
120 current_level = level;
121}
122
123bool backlight_hw_init(void)
124{
125 imx233_pinctrl_acquire(3, 13, "backlight");
126 imx233_pinctrl_set_function(3, 13, PINCTRL_FUNCTION_GPIO);
127 imx233_pinctrl_set_drive(3, 13, PINCTRL_DRIVE_4mA);
128 imx233_pinctrl_enable_gpio(3, 13, true);
129 imx233_pinctrl_set_gpio(3, 13, false);
130 return true;
131}
132
133void backlight_hw_on(void)
134{
135#ifdef HAVE_LCD_ENABLE
136 lcd_enable(true); /* power on lcd + visible display */
137#endif
138 /* restore the previous backlight level */
139 backlight_hw_brightness(backlight_brightness);
140}
141
142void backlight_hw_off(void)
143{
144 /* there is no real on/off but we can set to 0 brightness */
145 backlight_hw_brightness(0);
146#ifdef HAVE_LCD_ENABLE
147 lcd_enable(false); /* power off visible display */
148#endif
149}
diff --git a/firmware/target/arm/imx233/samsung-ypz5/button-target.h b/firmware/target/arm/imx233/samsung-ypz5/button-target.h
deleted file mode 100644
index 2f94f5fb31..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/button-target.h
+++ /dev/null
@@ -1,59 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2013 by Lorenzo Miori
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 _BUTTON_TARGET_H_
22#define _BUTTON_TARGET_H_
23
24#include <stdbool.h>
25
26#define HAS_BUTTON_HOLD
27#define IMX233_BUTTON_LRADC_CHANNEL 0
28#define IMX233_BUTTON_LRADC_HOLD_DET BLH_GPIO
29#define BLH_GPIO_BANK 0
30#define BLH_GPIO_PIN 13
31
32#define IMX233_BUTTON_LRADC_CHANNEL 0
33
34/* Main unit's buttons */
35#define BUTTON_POWER 0x00000001
36#define BUTTON_VOL_UP 0x00000002
37#define BUTTON_VOL_DOWN 0x00000004
38/* Directional buttons by touchpad */
39#define BUTTON_LEFT 0x00000008
40#define BUTTON_UP 0x00000010
41#define BUTTON_RIGHT 0x00000020
42#define BUTTON_DOWN 0x00000040
43#define BUTTON_SELECT 0x00000080
44#define BUTTON_BACK 0x00000100
45#define BUTTON_REW 0x00000200
46#define BUTTON_FF 0x00000400
47
48
49#define BUTTON_MAIN (BUTTON_VOL_UP | BUTTON_VOL_DOWN | BUTTON_POWER | BUTTON_LEFT | \
50 BUTTON_UP | BUTTON_RIGHT | BUTTON_DOWN | BUTTON_SELECT | \
51 BUTTON_BACK | BUTTON_REW | BUTTON_FF)
52
53/* Software power-off */
54#define POWEROFF_BUTTON BUTTON_POWER
55#define POWEROFF_COUNT 10
56
57bool button_debug_screen(void);
58
59#endif /* _BUTTON_TARGET_H_ */
diff --git a/firmware/target/arm/imx233/samsung-ypz5/button-ypz5.c b/firmware/target/arm/imx233/samsung-ypz5/button-ypz5.c
deleted file mode 100644
index 91fe059c31..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/button-ypz5.c
+++ /dev/null
@@ -1,273 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2013 by Lorenzo Miori
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#include "system.h"
22#include "lcd.h"
23#include "string.h"
24#include "kernel.h"
25#include "pinctrl-imx233.h"
26#include "power-imx233.h"
27#include "button-lradc-imx233.h"
28#include "button-target.h"
29#include "button-imx233.h"
30
31#ifndef BOOTLOADER
32#include "touchscreen.h"
33#include "touchscreen-imx233.h"
34#include "button.h"
35#include "font.h"
36#include "action.h"
37#endif
38
39#define CHAN 0 /* ADC channel for the buttons */
40#define I_VDDIO 0 /* Mock button to define the relative voltage to compute voltage from ADC steps */
41
42struct imx233_button_map_t imx233_button_map[] =
43{
44 [I_VDDIO] = IMX233_BUTTON_(VDDIO, VDDIO(3760), "vddio"), /* we need VDDIO for relative */
45 IMX233_BUTTON_(HOLD, GPIO(0, 13), "hold"),
46 IMX233_BUTTON(POWER, PSWITCH(1), "power"),
47 IMX233_BUTTON(SELECT, PSWITCH(3), "select"),
48 IMX233_BUTTON(VOL_UP, LRADC_REL(CHAN, 485, I_VDDIO), "vol up"),
49 IMX233_BUTTON(VOL_DOWN, LRADC_REL(CHAN, 975, I_VDDIO), "vol down"),
50 IMX233_BUTTON(BACK, LRADC_REL(CHAN, 1521, I_VDDIO), "back"),
51 IMX233_BUTTON(FF, LRADC_REL(CHAN, 2000, I_VDDIO), "ff"),
52 IMX233_BUTTON(REW, LRADC_REL(CHAN, 2480, I_VDDIO), "rew"),
53 IMX233_BUTTON_(END, END(), "")
54};
55
56#ifndef BOOTLOADER
57static int last_x = 0;
58static int last_y = 0;
59static bool touching = false;
60#endif /* BOOTLOADER */
61
62#ifndef BOOTLOADER
63
64/* Touchpad extra pin initialization
65 * Strange facts:
66 * 1. In the fully working sample I have, it seems that pins
67 * must be all set to low
68 * 2. In the other sample without LCD, it seems (by measurement) that
69 * not all the pins are set to low! Actually, I still need to see if
70 * touchpad works in this other sample.
71*/
72void touchpad_pin_setup(void)
73{
74 /* TX+ */
75 imx233_pinctrl_acquire(0, 25, "touchpad X+ power low");
76 imx233_pinctrl_set_function(0, 25, PINCTRL_FUNCTION_GPIO);
77 imx233_pinctrl_set_drive(0, 25, PINCTRL_DRIVE_4mA);
78 imx233_pinctrl_enable_gpio(0, 25, true);
79
80 /* TY+ */
81 imx233_pinctrl_acquire(0, 26, "touchpad Y+ power high");
82 imx233_pinctrl_set_function(0, 26, PINCTRL_FUNCTION_GPIO);
83 imx233_pinctrl_set_drive(0, 26, PINCTRL_DRIVE_4mA);
84 imx233_pinctrl_enable_gpio(0, 26, true);
85
86 /* TY- */
87 imx233_pinctrl_acquire(1, 21, "touchpad Y- power low");
88 imx233_pinctrl_set_function(1, 21, PINCTRL_FUNCTION_GPIO);
89 imx233_pinctrl_set_drive(1, 21, PINCTRL_DRIVE_4mA);
90 imx233_pinctrl_enable_gpio(1, 21, true);
91
92 /* TX- */
93 imx233_pinctrl_acquire(3, 15, "touchpad X- power high");
94 imx233_pinctrl_set_function(3, 15, PINCTRL_FUNCTION_GPIO);
95 imx233_pinctrl_set_drive(3, 15, PINCTRL_DRIVE_4mA);
96 imx233_pinctrl_enable_gpio(3, 15, true);
97
98}
99#endif /* BOOTLOADER */
100
101void button_init_device(void)
102{
103 /* init button subsystem */
104 imx233_button_init();
105#ifndef BOOTLOADER
106 touchpad_pin_setup();
107 /* Now that is powered up, proceed with touchpad initialization */
108 imx233_touchscreen_init();
109 imx233_touchscreen_enable(true);
110#endif /* BOOTLOADER */
111}
112
113/* X, Y, RadiusX, RadiusY */
114#define TOUCH_UP 2400, 1050, 650, 250
115#define TOUCH_DOWN 2057, 3320, 500, 350
116#define TOUCH_LEFT 3581, 2297, 300, 350
117#define TOUCH_RIGHT 1000, 2100, 400, 700
118#define TOUCH_CENTER 2682, 2167, 335, 276
119
120bool coord_in_radius(int x, int y, int cx, int cy, int rx, int ry)
121{
122 return ((x >= cx - rx && x <= cx + rx) && (y >= cy - ry && y <= cy + ry));
123}
124
125int button_read_device(void)
126{
127 int res = 0;
128
129#ifndef BOOTLOADER
130 /* handle the touchpad events */
131 touching = imx233_touchscreen_get_touch(&last_x, &last_y);
132 if(touching)
133 {
134 if (coord_in_radius(last_x, last_y, TOUCH_LEFT))
135 {
136 res |= BUTTON_LEFT;
137 }
138 else if (coord_in_radius(last_x, last_y, TOUCH_RIGHT))
139 {
140 res |= BUTTON_RIGHT;
141 }
142 else if (coord_in_radius(last_x, last_y, TOUCH_DOWN))
143 {
144 res |= BUTTON_DOWN;
145 }
146 else if (coord_in_radius(last_x, last_y, TOUCH_UP))
147 {
148 res |= BUTTON_UP;
149 }
150 }
151#endif /* BOOTLOADER */
152 /* handle the generic events */
153 return imx233_button_read(res);
154}
155
156#ifndef BOOTLOADER
157
158#define MAX_ENTRIES 100
159#define VIEWPORT_HEIGHT 100
160#define VIEWPORT_WIDTH 100
161#define MAX_X 3700
162#define MAX_Y 3700
163#define ADAPT_TO_VIEWPORT(cx, cy, rx, ry) ((float)(cx) / MAX_X) * VIEWPORT_WIDTH, \
164 ((float)(cy) / MAX_Y) * VIEWPORT_HEIGHT, \
165 ((float)(rx) / MAX_X) * VIEWPORT_WIDTH, \
166 ((float)(ry) / MAX_Y) * VIEWPORT_HEIGHT
167static void draw_calibration_rect(int cx, int cy, int rx, int ry)
168{
169 if (coord_in_radius(last_x, last_y, cx, cy, rx, ry))
170 lcd_set_drawinfo(DRMODE_SOLID, LCD_RGBPACK(0xff, 0xff, 0xff), LCD_BLACK);
171 else
172 lcd_set_drawinfo(DRMODE_SOLID, LCD_RGBPACK(0xff, 0, 0), LCD_BLACK);
173 lcd_drawrect(ADAPT_TO_VIEWPORT(cx - rx, cy - ry, 2 * rx, 2 * ry));
174}
175
176bool button_debug_screen(void)
177{
178 int last = 0;
179 struct point_t
180 {
181 int x;
182 int y;
183 };
184 struct point_t last_entries[MAX_ENTRIES];
185 struct viewport report_vp;
186
187 memset(&report_vp, 0, sizeof(report_vp));
188 report_vp.x = (LCD_WIDTH - VIEWPORT_WIDTH) / 2;
189 report_vp.y = (LCD_HEIGHT - VIEWPORT_HEIGHT) / 2;
190 report_vp.width = VIEWPORT_WIDTH;
191 report_vp.height = VIEWPORT_HEIGHT;
192
193 lcd_setfont(FONT_SYSFIXED);
194 lcd_clear_display();
195
196 while(1)
197 {
198 int button = get_action(CONTEXT_STD, HZ / 10);
199 switch(button)
200 {
201 case ACTION_STD_OK:
202 case ACTION_STD_MENU:
203 lcd_set_viewport(NULL);
204 lcd_setfont(FONT_UI);
205 lcd_clear_display();
206 return true;
207 case ACTION_STD_CANCEL:
208 lcd_set_viewport(NULL);
209 lcd_setfont(FONT_UI);
210 lcd_clear_display();
211 return false;
212 }
213
214 lcd_set_viewport(NULL);
215 lcd_putsf(0, 1, "(%d,%d) %s", last_x, last_y, touching ? "touching!" : "");
216 lcd_putsf(0, 0, "Type %s", imx233_pinctrl_get_gpio(0, 31) ? "CAP" : "REG");
217 lcd_set_viewport(&report_vp);
218 lcd_set_drawinfo(DRMODE_SOLID, LCD_RGBPACK(0, 0, 0xff), LCD_BLACK);
219 lcd_drawrect(0, 0, 100, 100);
220 float percent_x = ((float)(last_x) / MAX_X);
221 float percent_y = ((float)(last_y) / MAX_Y);
222 if (touching)
223 {
224 lcd_set_viewport(NULL);
225 if (last < MAX_ENTRIES)
226 {
227 last_entries[last].x = last_x;
228 last_entries[last].y = last_y;
229 last++;
230 lcd_putsf(0, 17, "Recording: %d captures left", MAX_ENTRIES - last);
231 }
232 else
233 {
234 int min_x = 9999;
235 int min_y = 9999;
236 int max_x = -1;
237 int max_y = -1;
238 int median_x = 0;
239 int median_y = 0;
240 for (int i = 0; i < MAX_ENTRIES; i++)
241 {
242 min_x = MIN(min_x, last_entries[i].x);
243 min_y = MIN(min_y, last_entries[i].y);
244 max_x = MAX(max_x, last_entries[i].x);
245 max_y = MAX(max_y, last_entries[i].y);
246 median_x += last_entries[i].x;
247 median_y += last_entries[i].y;
248 }
249 median_x /= MAX_ENTRIES;
250 median_y /= MAX_ENTRIES;
251 lcd_putsf(0, 17, "center(%d,%d)", median_x, median_y);
252 lcd_putsf(0, 18, "radius(%d,%d)", median_x / 2, median_y / 2);
253 }
254 lcd_set_viewport(&report_vp);
255 lcd_set_drawinfo(DRMODE_SOLID, LCD_RGBPACK(0xff, 0x8c, 0), LCD_BLACK);
256 lcd_fillrect(VIEWPORT_WIDTH * percent_x, VIEWPORT_HEIGHT * percent_y, 2, 2);
257 }
258
259 /* Draw current calibration settings */
260 lcd_set_viewport(&report_vp);
261 draw_calibration_rect(TOUCH_UP);
262 draw_calibration_rect(TOUCH_DOWN);
263 draw_calibration_rect(TOUCH_CENTER);
264 draw_calibration_rect(TOUCH_LEFT);
265 draw_calibration_rect(TOUCH_RIGHT);
266
267 lcd_update();
268 yield();
269 }
270
271 return true;
272}
273#endif
diff --git a/firmware/target/arm/imx233/samsung-ypz5/debug-ypz5.c b/firmware/target/arm/imx233/samsung-ypz5/debug-ypz5.c
deleted file mode 100644
index c125eac973..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/debug-ypz5.c
+++ /dev/null
@@ -1,29 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2013 by Amaury Pouly
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 "system.h"
23#include "button-target.h"
24#include "lcd-target.h"
25
26bool dbg_hw_target_info(void)
27{
28 return button_debug_screen() && lcd_debug_screen();
29}
diff --git a/firmware/target/arm/imx233/samsung-ypz5/fmradio-target.h b/firmware/target/arm/imx233/samsung-ypz5/fmradio-target.h
deleted file mode 100644
index 66bceb4071..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/fmradio-target.h
+++ /dev/null
@@ -1,31 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2013 by Amaury Pouly
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 _FMRADIO_TARGET_H_
22#define _FMRADIO_TARGET_H_
23
24#define IMX233_FMRADIO_I2C FMI_HW
25
26#define IMX233_FMRADIO_POWER FMP_GPIO
27#define FMP_GPIO_BANK 0
28#define FMP_GPIO_PIN 10
29#define FMP_GPIO_DELAY (HZ / 5)
30
31#endif /* _FMRADIO_TARGET_H_ */
diff --git a/firmware/target/arm/imx233/samsung-ypz5/ftl-target.h b/firmware/target/arm/imx233/samsung-ypz5/ftl-target.h
deleted file mode 100644
index cb943e34f2..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/ftl-target.h
+++ /dev/null
@@ -1,39 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2009 by Michael Sparmann
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 __FTL_TARGET_H__
23#define __FTL_TARGET_H__
24
25#include "config.h"
26#include "inttypes.h"
27
28#ifdef BOOTLOADER
29/* Bootloaders don't need write access */
30#define FTL_READONLY
31#endif
32
33uint32_t ftl_init(void);
34uint32_t ftl_read(uint32_t sector, uint32_t count, void* buffer);
35uint32_t ftl_write(uint32_t sector, uint32_t count, const void* buffer);
36uint32_t ftl_sync(void);
37
38
39#endif
diff --git a/firmware/target/arm/imx233/samsung-ypz5/lcd-target.h b/firmware/target/arm/imx233/samsung-ypz5/lcd-target.h
deleted file mode 100644
index 9993b7d731..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/lcd-target.h
+++ /dev/null
@@ -1,25 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (c) 2013 by Amaury Pouly
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20#ifndef LCD_TARGET_H
21#define LCD_TARGET_H
22
23bool lcd_debug_screen(void);
24
25#endif /* LCD_TARGET_H */
diff --git a/firmware/target/arm/imx233/samsung-ypz5/lcd-ypz5.c b/firmware/target/arm/imx233/samsung-ypz5/lcd-ypz5.c
deleted file mode 100644
index 99fe0b2aef..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/lcd-ypz5.c
+++ /dev/null
@@ -1,295 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (c) 2013 by Lorenzo Miori
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20#include <sys/types.h> /* off_t */
21#include <string.h>
22#include "cpu.h"
23#include "system.h"
24#include "backlight-target.h"
25#include "lcd.h"
26#include "lcdif-imx233.h"
27#include "clkctrl-imx233.h"
28#include "pinctrl-imx233.h"
29#include "dcp-imx233.h"
30#include "logf.h"
31#ifndef BOOTLOADER
32#include "button.h"
33#include "font.h"
34#include "action.h"
35#endif
36#include "dma-imx233.h"
37#include "kernel.h"
38
39#include "regs/lcdif.h"
40
41/**
42 * NOTE
43 * We don't know exact LCD models nor we have datasheets for them
44 * Register function are partly guessed from the values, others are guessed from other LCD
45 * drivers and others have been confirmed studying their values
46 */
47
48static enum lcd_type_t
49{
50 LCD_TYPE_ZERO = 0,
51 LCD_TYPE_ONE = 1
52} lcd_type = LCD_TYPE_ZERO;
53
54static void lcd_write_reg(uint16_t reg, uint16_t data)
55{
56 imx233_lcdif_pio_send(false, 1, &reg);
57 if(reg != 0x22)
58 imx233_lcdif_pio_send(true, 1, &data);
59}
60
61/*
62 * The two LCD types require different initialization sequences
63 */
64void lcd_init_seq(void)
65{
66 switch (lcd_type)
67 {
68 case LCD_TYPE_ZERO:
69 {
70 lcd_write_reg(0x11, 0x1f1e);
71 lcd_write_reg(0x38, 0xf0f);
72 lcd_write_reg(0x12, 0x1101);
73 lcd_write_reg(0x13, 0x808);
74 lcd_write_reg(0x14, 0x3119);
75 lcd_write_reg(0x10, 0x1a10);
76 udelay(0xc350);
77 lcd_write_reg(0x13, 0x83b);
78 udelay(0x30d40);
79 lcd_write_reg(1, 0x90c); /* Display mode */
80 lcd_write_reg(2, 0x200);
81 lcd_write_reg(3, 0x1030);
82 lcd_write_reg(7, 5);
83 lcd_write_reg(8, 0x503);
84 lcd_write_reg(11, 0);
85 lcd_write_reg(12, 0);
86 /* Gamma control */
87 lcd_write_reg(0x30, 0x606);
88 lcd_write_reg(0x31, 0x606);
89 lcd_write_reg(0x32, 0x305);
90 lcd_write_reg(0x33, 2);
91 lcd_write_reg(0x34, 0x503);
92 lcd_write_reg(0x35, 0x606);
93 lcd_write_reg(0x36, 0x606);
94 lcd_write_reg(0x37, 0x200);
95
96 lcd_write_reg(0x11, 0x1f1e);
97 lcd_write_reg(0x38, 0xf0f);
98 /* Set initial LCD limits and RAM settings */
99 lcd_write_reg(0x40, 0); //BPP ?
100 lcd_write_reg(0x42, 0x9f00);
101 lcd_write_reg(0x43, 0);
102 lcd_write_reg(0x44, 0x7f00); /* Horizontal initial refresh zone [0 - 127] */
103 lcd_write_reg(0x45, 0x9f00); /* Vertical initial refresh zone [0 - 159] */
104
105 lcd_write_reg(14, 0x13);
106 lcd_write_reg(0xa9, 0x14);
107 lcd_write_reg(0xa7, 0x30);
108 lcd_write_reg(0xa8, 0x124);
109 lcd_write_reg(0x6f, 0x1d00);
110 lcd_write_reg(0x70, 3);
111 lcd_write_reg(7, 1);
112 lcd_write_reg(0x10, 0x1a10);
113 udelay(0x9c40);
114 lcd_write_reg(7, 0x21);
115 lcd_write_reg(7, 0x23);
116 udelay(0x9c40);
117 lcd_write_reg(7, 0x37); /* Seems to be "power on" */
118 break;
119 }
120 case LCD_TYPE_ONE:
121 {
122 lcd_write_reg(0, 1);
123 udelay(0x2710);
124 lcd_write_reg(0x11, 0x171b);
125 lcd_write_reg(0x12, 0);
126 lcd_write_reg(0x13, 0x80d);
127 lcd_write_reg(0x14, 0x18);
128 lcd_write_reg(0x10, 0x1a10);
129 udelay(0xc350);
130 lcd_write_reg(0x13, 0x81d);
131 udelay(0xc350);
132 lcd_write_reg(1, 0x90c); /* Display mode */
133 lcd_write_reg(2, 0x200);
134 lcd_write_reg(3, 0x1030);
135 lcd_write_reg(7, 5);
136 lcd_write_reg(8, 0x30a);
137 lcd_write_reg(11, 4);
138 lcd_write_reg(12, 0);
139 /* Gamma control */
140 lcd_write_reg(0x30, 0x300);
141 lcd_write_reg(0x31, 0);
142 lcd_write_reg(0x32, 0);
143 lcd_write_reg(0x33, 0x404);
144 lcd_write_reg(0x34, 0x707);
145 lcd_write_reg(0x35, 0x700);
146 lcd_write_reg(0x36, 0x703);
147 lcd_write_reg(0x37, 4);
148
149 lcd_write_reg(0x38, 0);
150 /* Set initial LCD limits and RAM settings */
151 lcd_write_reg(0x40, 0);
152 lcd_write_reg(0x42, 0x9f00); /* LCD Display Start Address Register 0 */
153 lcd_write_reg(0x43, 0); /* LCD Display Start Address Register 1 */
154 lcd_write_reg(0x44, 0x7f00); /* Horizontal initial refresh zone [0 - 127] */
155 lcd_write_reg(0x45, 0x9f00); /* Vertical initial refresh zone [0 - 159] */
156
157 lcd_write_reg(7, 1);
158 udelay(0x2710);
159 lcd_write_reg(7, 0x21);
160 lcd_write_reg(7, 0x23);
161 udelay(0x2710);
162 lcd_write_reg(7, 0x1037);
163 udelay(0x2710);
164 lcd_write_reg(7, 0x35);
165 lcd_write_reg(7, 0x36);
166 lcd_write_reg(7, 0x37);
167 udelay(10000);
168 break;
169 }
170 default:
171 break;
172 }
173}
174
175static void send_update_rect(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
176{
177 /* Set horizontal refresh zone */
178 lcd_write_reg(0x44, (x | (y + w - 1) << 0x8));
179 /* Set vertical refresh zone */
180 lcd_write_reg(0x45, (y | (y + h - 1) << 0x8));
181 lcd_write_reg(0x21, x | y << 8);
182 /* Set register index to 0x22 to write screen data. 0 is mock value */
183 lcd_write_reg(0x22, 0);
184}
185
186static void setup_lcd_pins(void)
187{
188 imx233_lcdif_setup_system_pins(16);
189 /* lcd_rd */
190 imx233_pinctrl_acquire(0, 9, "lcd rd");
191 imx233_pinctrl_set_function(0, 9, PINCTRL_FUNCTION_GPIO);
192 imx233_pinctrl_set_gpio(0, 9, false);
193 /*
194 * This pin is important to know the LCD type
195 * There are two types that require two different initialization sequences
196 */
197 /* lcd_tp */
198 imx233_pinctrl_acquire(3, 12, "lcd type");
199 imx233_pinctrl_set_function(3, 12, PINCTRL_FUNCTION_GPIO);
200 imx233_pinctrl_enable_gpio(3, 12, false);
201 /* Sense LCD Type */
202 lcd_type = imx233_pinctrl_get_gpio(3, 12) ? LCD_TYPE_ONE : LCD_TYPE_ZERO;
203}
204
205static void setup_parameters(void)
206{
207 imx233_lcdif_init();
208 imx233_lcdif_enable(true);
209 imx233_lcdif_set_word_length(16);
210 imx233_lcdif_set_data_swizzle(false);
211 imx233_lcdif_set_timings(2, 1, 1, 1);
212 BF_WR(LCDIF_CTRL, MODE86_V(8080_MODE));
213
214 imx233_lcdif_reset_lcd(true);
215 udelay(50);
216 imx233_lcdif_reset_lcd(false);
217 udelay(10);
218 imx233_lcdif_reset_lcd(true);
219}
220
221void lcd_init_device(void)
222{
223 /* Setup interface pins */
224 setup_lcd_pins();
225 /* Set LCD parameters */
226 setup_parameters();
227 /* Send initialization sequence to LCD */
228 lcd_init_seq();
229}
230
231struct lcdif_cmd_t
232{
233 struct apb_dma_command_t dma;
234 uint32_t ctrl0;
235 uint32_t pad[4];
236} __attribute__((packed)) CACHEALIGN_ATTR;
237
238struct lcdif_cmd_t lcdif_dma;
239void lcd_update(void)
240{
241 unsigned size = LCD_WIDTH * LCD_HEIGHT * sizeof(fb_data);
242
243 send_update_rect(0,0,LCD_WIDTH,LCD_HEIGHT);
244 /* We can safely do the transfer in a single shot, since 160 * 128 * 2 < 65k,
245 * the maximum transfer size!
246 */
247 lcdif_dma.dma.cmd |= BF_OR(APB_CHx_CMD, CMDWORDS(1), XFER_COUNT(size), COMMAND(2));
248 lcdif_dma.ctrl0 = HW_LCDIF_CTRL & ~BM_LCDIF_CTRL_COUNT;
249 lcdif_dma.ctrl0 |= BF_OR(LCDIF_CTRL, COUNT(size/2), DATA_SELECT(1));
250 lcdif_dma.dma.buffer = FBADDR(0,0);
251 lcdif_dma.dma.cmd |= BM_APB_CHx_CMD_SEMAPHORE;
252
253 imx233_dma_start_command(APB_LCDIF, &lcdif_dma.dma);
254 imx233_dma_wait_completion(APB_LCDIF, HZ);
255}
256
257void lcd_update_rect(int x, int y, int w, int h)
258{
259 (void)x;
260 (void)y;
261 (void)w;
262 (void)h;
263 lcd_update();
264}
265
266#ifndef BOOTLOADER
267bool lcd_debug_screen(void)
268{
269 lcd_setfont(FONT_SYSFIXED);
270
271 while(1)
272 {
273 int button = get_action(CONTEXT_STD, HZ / 10);
274 switch(button)
275 {
276 case ACTION_STD_NEXT:
277 case ACTION_STD_PREV:
278 case ACTION_STD_OK:
279 case ACTION_STD_MENU:
280 lcd_setfont(FONT_UI);
281 return true;
282 case ACTION_STD_CANCEL:
283 lcd_setfont(FONT_UI);
284 return false;
285 }
286
287 lcd_clear_display();
288 lcd_putsf(0, 0, "LCD type: %d", lcd_type);
289 lcd_update();
290 yield();
291 }
292
293 return true;
294}
295#endif
diff --git a/firmware/target/arm/imx233/samsung-ypz5/powermgmt-target.h b/firmware/target/arm/imx233/samsung-ypz5/powermgmt-target.h
deleted file mode 100644
index 5d32bc5e9c..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/powermgmt-target.h
+++ /dev/null
@@ -1,37 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2013 by Amaury Pouly
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 POWERMGMT_TARGET_H
22#define POWERMGMT_TARGET_H
23
24#include "config.h"
25#include "powermgmt-imx233.h"
26
27#define IMX233_CHARGE_CURRENT 100
28#define IMX233_STOP_CURRENT 10
29#define IMX233_TOPOFF_TIMEOUT (30 * 60 * HZ)
30#define IMX233_CHARGING_TIMEOUT (4 * 3600 * HZ)
31#define IMX233_DIE_TEMP_HIGH 71
32#define IMX233_DIE_TEMP_LOW 56
33#define IMX233_BATT_TEMP_SENSOR 0
34#define IMX233_BATT_TEMP_HIGH 1100
35#define IMX233_BATT_TEMP_LOW 220
36
37#endif /* POWERMGMT_TARGET_H */
diff --git a/firmware/target/arm/imx233/samsung-ypz5/powermgmt-ypz5.c b/firmware/target/arm/imx233/samsung-ypz5/powermgmt-ypz5.c
deleted file mode 100644
index 9d9ed7de99..0000000000
--- a/firmware/target/arm/imx233/samsung-ypz5/powermgmt-ypz5.c
+++ /dev/null
@@ -1,48 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2013 by Amaury Pouly
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 "powermgmt-target.h"
23#include "power-imx233.h"
24
25
26const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
27{
28 3400
29};
30
31const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
32{
33 3300
34};
35
36/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
37const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
38{
39 /* Sansa Fuze+ Li Ion 600mAH figured from discharge curve */
40 { 3100, 3650, 3720, 3750, 3780, 3820, 3880, 4000, 4040, 4125, 4230 },
41};
42
43/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */
44const unsigned short percent_to_volt_charge[11] =
45{
46 /* Sansa Fuze+ Li Ion 600mAH figured from charge curve */
47 3480, 3790, 3845, 3880, 3900, 3935, 4005, 4070, 4150, 4250, 4335
48};
diff --git a/firmware/target/arm/imx233/touchscreen-imx233.c b/firmware/target/arm/imx233/touchscreen-imx233.c
index f98dc9b738..561b2c750a 100644
--- a/firmware/target/arm/imx233/touchscreen-imx233.c
+++ b/firmware/target/arm/imx233/touchscreen-imx233.c
@@ -23,9 +23,6 @@
23#include "kernel.h" 23#include "kernel.h"
24#include "touchscreen-imx233.h" 24#include "touchscreen-imx233.h"
25#include "stdlib.h" 25#include "stdlib.h"
26#ifdef SAMSUNG_YPZ5
27#include "pinctrl-imx233.h"
28#endif
29 26
30/* Description: 27/* Description:
31 * the driver basically has 2 modes: 28 * the driver basically has 2 modes:
@@ -82,24 +79,6 @@ static void touch_channel_irq(int chan)
82 process(); 79 process();
83} 80}
84 81
85#ifdef SAMSUNG_YPZ5
86/* On this target we need to manually setup pulldown pins,
87 * using specific GPIO lines
88 */
89static void pulldown_setup(bool xminus_enable, bool yminus_enable,
90 bool xplus_enable, bool yplus_enable)
91{
92 /* TX+ */
93 imx233_pinctrl_set_gpio(0, 25, xplus_enable);
94 /* TX- */
95 imx233_pinctrl_set_gpio(3, 15, xminus_enable);
96 /* TY+ */
97 imx233_pinctrl_set_gpio(0, 26, yplus_enable);
98 /* TY- */
99 imx233_pinctrl_set_gpio(1, 21, yminus_enable);
100}
101#endif
102
103static void kick_measure(bool pull_x, bool pull_y, bool detect, int src) 82static void kick_measure(bool pull_x, bool pull_y, bool detect, int src)
104{ 83{
105#if IMX233_SUBTARGET < 3700 84#if IMX233_SUBTARGET < 3700
@@ -116,9 +95,6 @@ static void kick_measure(bool pull_x, bool pull_y, bool detect, int src)
116 imx233_icoll_enable_interrupt(INT_SRC_LRADC_CHx(touch_chan), true); 95 imx233_icoll_enable_interrupt(INT_SRC_LRADC_CHx(touch_chan), true);
117 imx233_lradc_enable_channel_irq(touch_chan, true); 96 imx233_lradc_enable_channel_irq(touch_chan, true);
118 /* setup measurement: x- pull down and x+ pull up */ 97 /* setup measurement: x- pull down and x+ pull up */
119#ifdef SAMSUNG_YPZ5
120 pulldown_setup(pull_x, pull_y, pull_x, pull_y);
121#endif
122 imx233_lradc_setup_touch(pull_x, pull_y, pull_x, pull_y, detect); 98 imx233_lradc_setup_touch(pull_x, pull_y, pull_x, pull_y, detect);
123 imx233_lradc_enable_touch_detect_irq(false); 99 imx233_lradc_enable_touch_detect_irq(false);
124 imx233_lradc_enable_channel_irq(touch_chan, true); 100 imx233_lradc_enable_channel_irq(touch_chan, true);
@@ -138,9 +114,6 @@ static void enter_state(enum touch_state_t state)
138 switch(state) 114 switch(state)
139 { 115 {
140 case TOUCH_STATE_WAIT: 116 case TOUCH_STATE_WAIT:
141#ifdef SAMSUNG_YPZ5
142 pulldown_setup(false, false, false, false);
143#endif
144 imx233_lradc_setup_touch(false, false, false, false, true); 117 imx233_lradc_setup_touch(false, false, false, false, true);
145 imx233_lradc_enable_touch_detect_irq(true); 118 imx233_lradc_enable_touch_detect_irq(true);
146 break; 119 break;
diff --git a/tools/configure b/tools/configure
index eb3a971366..91e7bb27be 100755
--- a/tools/configure
+++ b/tools/configure
@@ -1571,7 +1571,7 @@ cat <<EOF
1571 141) YH-920 63) Sansa Fuze v2 1571 141) YH-920 63) Sansa Fuze v2
1572 142) YH-925 ==Tatung== 64) Sansa Fuze+ 1572 142) YH-925 ==Tatung== 64) Sansa Fuze+
1573 143) YP-S3 150) Elio TPJ-1022 65) Sansa Clip Zip 1573 143) YP-S3 150) Elio TPJ-1022 65) Sansa Clip Zip
1574 144) YP-Z5 66) Sansa Connect 1574 66) Sansa Connect
1575 ==Packard Bell== 1575 ==Packard Bell==
1576 ==Application== 160) Vibe 500 1576 ==Application== 160) Vibe 500
1577 200) SDL 1577 200) SDL
@@ -3085,25 +3085,6 @@ fi
3085 t_model="yps3" 3085 t_model="yps3"
3086 ;; 3086 ;;
3087 3087
3088 144|samsungypz5)
3089 target_id=90
3090 modelname="samsungypz5"
3091 target="SAMSUNG_YPZ5"
3092 memory=16
3093 bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
3094 bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
3095 tool="$rootdir/tools/scramble -add=ypz5"
3096 output="rockbox.samsung"
3097 bootoutput="bootloader-ypz5.samsung"
3098 appextra="gui:recorder:radio"
3099 plugins=""
3100 toolset=$scramblebitmaptools
3101 t_cpu="arm"
3102 t_manufacturer="imx233"
3103 t_model="samsung-ypz5"
3104 arm926ejscc
3105 ;;
3106
3107 160|vibe500) 3088 160|vibe500)
3108 target_id=67 3089 target_id=67
3109 modelname="vibe500" 3090 modelname="vibe500"
diff --git a/tools/scramble.c b/tools/scramble.c
index ec79cb8ca2..fbefb60eec 100644
--- a/tools/scramble.c
+++ b/tools/scramble.c
@@ -106,7 +106,7 @@ void usage(void)
106 "\t m2v4, fuze, c2v2, clv2, y820, y920, y925, x747,\n" 106 "\t m2v4, fuze, c2v2, clv2, y820, y920, y925, x747,\n"
107 "\t 747p, x777, nn2g, m244, cli+, fuz2, hd20, hd30,\n" 107 "\t 747p, x777, nn2g, m244, cli+, fuz2, hd20, hd30,\n"
108 "\t ip6g, rk27, clzp, zxf2, zxf3, fuz+, e370, e360,\n" 108 "\t ip6g, rk27, clzp, zxf2, zxf3, fuz+, e370, e360,\n"
109 "\t zxfi, zmoz, zen, zenv, ypz5, zxfs, e450, e460,\n" 109 "\t zxfi, zmoz, zen, zenv, zxfs, e450, e460,\n"
110 "\t e470, e580, a10, a20, a860, s750, e350, xdx3)\n"); 110 "\t e470, e580, a10, a20, a860, s750, e350, xdx3)\n");
111 printf("\nNo option results in nothing being done.\n"); 111 printf("\nNo option results in nothing being done.\n");
112 112
@@ -295,8 +295,6 @@ int main (int argc, char** argv)
295 modelnum = 82; 295 modelnum = 82;
296 else if (!strcmp(&argv[1][5], "zxf3")) /* Creative Zen X-Fi3 */ 296 else if (!strcmp(&argv[1][5], "zxf3")) /* Creative Zen X-Fi3 */
297 modelnum = 83; 297 modelnum = 83;
298 else if (!strcmp(&argv[1][5], "ypz5")) /* Samsung YP-Z5 */
299 modelnum = 84;
300 else if (!strcmp(&argv[1][5], "zenv")) /* Creative Zen V */ 298 else if (!strcmp(&argv[1][5], "zenv")) /* Creative Zen V */
301 modelnum = 85; 299 modelnum = 85;
302 else if (!strcmp(&argv[1][5], "zxfi")) /* Creative ZEN X-Fi */ 300 else if (!strcmp(&argv[1][5], "zxfi")) /* Creative ZEN X-Fi */