summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c
diff options
context:
space:
mode:
authorCástor Muñoz <cmvidal@gmail.com>2016-02-05 01:12:02 +0100
committerCástor Muñoz <cmvidal@gmail.com>2016-05-25 10:59:44 +0200
commite863f9a0ce8d968b085252c3b093b17ca07b65dd (patch)
tree04eedd67fc1dc82ed7e6fc533639171456fde788 /firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c
parent9c032ba61aeb35625d20bf718c9394e092f88316 (diff)
downloadrockbox-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/s5l8702/ipod6g/piezo-ipod6g.c')
-rw-r--r--firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c28
1 files changed, 28 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
100void 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
115void 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