diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/SOURCES | 2 | ||||
-rw-r--r-- | firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c | 28 | ||||
-rw-r--r-- | firmware/target/arm/s5l8702/ipod6g/piezo.h | 8 |
3 files changed, 37 insertions, 1 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES index 70729bcfa3..2cace81c8b 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES | |||
@@ -1608,6 +1608,7 @@ target/arm/s5l8702/dma-s5l8702.c | |||
1608 | target/arm/s5l8702/clocking-s5l8702.c | 1608 | target/arm/s5l8702/clocking-s5l8702.c |
1609 | target/arm/s5l8702/ipod6g/lcd-ipod6g.c | 1609 | target/arm/s5l8702/ipod6g/lcd-ipod6g.c |
1610 | target/arm/s5l8702/ipod6g/lcd-asm-ipod6g.S | 1610 | target/arm/s5l8702/ipod6g/lcd-asm-ipod6g.S |
1611 | target/arm/s5l8702/ipod6g/piezo-ipod6g.c | ||
1611 | #if 0 //TODO | 1612 | #if 0 //TODO |
1612 | target/arm/s5l8702/postmortemstub.S | 1613 | target/arm/s5l8702/postmortemstub.S |
1613 | #endif | 1614 | #endif |
@@ -1625,7 +1626,6 @@ target/arm/s5l8702/debug-s5l8702.c | |||
1625 | target/arm/s5l8702/pcm-s5l8702.c | 1626 | target/arm/s5l8702/pcm-s5l8702.c |
1626 | target/arm/s5l8702/ipod6g/audio-ipod6g.c | 1627 | target/arm/s5l8702/ipod6g/audio-ipod6g.c |
1627 | target/arm/s5l8702/ipod6g/adc-ipod6g.c | 1628 | target/arm/s5l8702/ipod6g/adc-ipod6g.c |
1628 | target/arm/s5l8702/ipod6g/piezo-ipod6g.c | ||
1629 | #endif | 1629 | #endif |
1630 | #endif | 1630 | #endif |
1631 | 1631 | ||
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__ */ | ||