diff options
author | Cástor Muñoz <cmvidal@gmail.com> | 2016-02-05 01:12:02 +0100 |
---|---|---|
committer | Cástor Muñoz <cmvidal@gmail.com> | 2016-05-25 10:59:44 +0200 |
commit | e863f9a0ce8d968b085252c3b093b17ca07b65dd (patch) | |
tree | 04eedd67fc1dc82ed7e6fc533639171456fde788 /firmware/target/arm | |
parent | 9c032ba61aeb35625d20bf718c9394e092f88316 (diff) | |
download | rockbox-e863f9a0ce8d968b085252c3b093b17ca07b65dd.tar.gz rockbox-e863f9a0ce8d968b085252c3b093b17ca07b65dd.zip |
iPod Classic: piezo support for bootloader
Low level functions that do not depend on Rockbox kernel,
intended to be used by the bootloader, dualboot-installer,
RB drivers or other .dfu tools.
Change-Id: If80214d26e505265ace19d9704f1e1300f98b2f4
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c | 28 | ||||
-rw-r--r-- | firmware/target/arm/s5l8702/ipod6g/piezo.h | 8 |
2 files changed, 36 insertions, 0 deletions
diff --git a/firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c b/firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c index f3c00e34c5..06735673be 100644 --- a/firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c +++ b/firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c | |||
@@ -95,3 +95,31 @@ void piezo_button_beep(bool beep, bool force) | |||
95 | piezo_start(40, 4); | 95 | piezo_start(40, 4); |
96 | } | 96 | } |
97 | } | 97 | } |
98 | |||
99 | #ifdef BOOTLOADER | ||
100 | void piezo_tone(uint32_t period /*uS*/, int32_t duration /*ms*/) | ||
101 | { | ||
102 | int32_t stop = USEC_TIMER + duration*1000; | ||
103 | uint32_t level = 0; | ||
104 | |||
105 | while ((int32_t)USEC_TIMER - stop < 0) | ||
106 | { | ||
107 | level ^= 1; | ||
108 | GPIOCMD = 0x0060e | level; | ||
109 | udelay(period >> 1); | ||
110 | } | ||
111 | |||
112 | GPIOCMD = 0x0060e; | ||
113 | } | ||
114 | |||
115 | void piezo_seq(uint16_t *seq) | ||
116 | { | ||
117 | uint16_t period; | ||
118 | |||
119 | while ((period = *seq++) != 0) | ||
120 | { | ||
121 | piezo_tone(period, *seq++); | ||
122 | udelay(*seq++ * 1000); | ||
123 | } | ||
124 | } | ||
125 | #endif | ||
diff --git a/firmware/target/arm/s5l8702/ipod6g/piezo.h b/firmware/target/arm/s5l8702/ipod6g/piezo.h index 987d4ffdda..063b8231a6 100644 --- a/firmware/target/arm/s5l8702/ipod6g/piezo.h +++ b/firmware/target/arm/s5l8702/ipod6g/piezo.h | |||
@@ -18,9 +18,17 @@ | |||
18 | * KIND, either express or implied. | 18 | * KIND, either express or implied. |
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #ifndef __PIEZO_H__ | ||
22 | #define __PIEZO_H__ | ||
21 | 23 | ||
22 | void piezo_init(void); | 24 | void piezo_init(void); |
23 | void piezo_stop(void); | 25 | void piezo_stop(void); |
24 | void piezo_clear(void); | 26 | void piezo_clear(void); |
25 | bool piezo_busy(void); | 27 | bool piezo_busy(void); |
26 | void piezo_button_beep(bool beep, bool force); | 28 | void piezo_button_beep(bool beep, bool force); |
29 | |||
30 | #ifdef BOOTLOADER | ||
31 | void piezo_seq(uint16_t *seq); | ||
32 | #endif | ||
33 | |||
34 | #endif /* __PIEZO_H__ */ | ||