mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-14 02:27:39 -04:00
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
This commit is contained in:
parent
9c032ba61a
commit
e863f9a0ce
3 changed files with 37 additions and 1 deletions
|
@ -1608,6 +1608,7 @@ target/arm/s5l8702/dma-s5l8702.c
|
||||||
target/arm/s5l8702/clocking-s5l8702.c
|
target/arm/s5l8702/clocking-s5l8702.c
|
||||||
target/arm/s5l8702/ipod6g/lcd-ipod6g.c
|
target/arm/s5l8702/ipod6g/lcd-ipod6g.c
|
||||||
target/arm/s5l8702/ipod6g/lcd-asm-ipod6g.S
|
target/arm/s5l8702/ipod6g/lcd-asm-ipod6g.S
|
||||||
|
target/arm/s5l8702/ipod6g/piezo-ipod6g.c
|
||||||
#if 0 //TODO
|
#if 0 //TODO
|
||||||
target/arm/s5l8702/postmortemstub.S
|
target/arm/s5l8702/postmortemstub.S
|
||||||
#endif
|
#endif
|
||||||
|
@ -1625,7 +1626,6 @@ target/arm/s5l8702/debug-s5l8702.c
|
||||||
target/arm/s5l8702/pcm-s5l8702.c
|
target/arm/s5l8702/pcm-s5l8702.c
|
||||||
target/arm/s5l8702/ipod6g/audio-ipod6g.c
|
target/arm/s5l8702/ipod6g/audio-ipod6g.c
|
||||||
target/arm/s5l8702/ipod6g/adc-ipod6g.c
|
target/arm/s5l8702/ipod6g/adc-ipod6g.c
|
||||||
target/arm/s5l8702/ipod6g/piezo-ipod6g.c
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -95,3 +95,31 @@ void piezo_button_beep(bool beep, bool force)
|
||||||
piezo_start(40, 4);
|
piezo_start(40, 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BOOTLOADER
|
||||||
|
void piezo_tone(uint32_t period /*uS*/, int32_t duration /*ms*/)
|
||||||
|
{
|
||||||
|
int32_t stop = USEC_TIMER + duration*1000;
|
||||||
|
uint32_t level = 0;
|
||||||
|
|
||||||
|
while ((int32_t)USEC_TIMER - stop < 0)
|
||||||
|
{
|
||||||
|
level ^= 1;
|
||||||
|
GPIOCMD = 0x0060e | level;
|
||||||
|
udelay(period >> 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
GPIOCMD = 0x0060e;
|
||||||
|
}
|
||||||
|
|
||||||
|
void piezo_seq(uint16_t *seq)
|
||||||
|
{
|
||||||
|
uint16_t period;
|
||||||
|
|
||||||
|
while ((period = *seq++) != 0)
|
||||||
|
{
|
||||||
|
piezo_tone(period, *seq++);
|
||||||
|
udelay(*seq++ * 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -18,9 +18,17 @@
|
||||||
* KIND, either express or implied.
|
* KIND, either express or implied.
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
#ifndef __PIEZO_H__
|
||||||
|
#define __PIEZO_H__
|
||||||
|
|
||||||
void piezo_init(void);
|
void piezo_init(void);
|
||||||
void piezo_stop(void);
|
void piezo_stop(void);
|
||||||
void piezo_clear(void);
|
void piezo_clear(void);
|
||||||
bool piezo_busy(void);
|
bool piezo_busy(void);
|
||||||
void piezo_button_beep(bool beep, bool force);
|
void piezo_button_beep(bool beep, bool force);
|
||||||
|
|
||||||
|
#ifdef BOOTLOADER
|
||||||
|
void piezo_seq(uint16_t *seq);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __PIEZO_H__ */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue