diff options
author | Cástor Muñoz <cmvidal@gmail.com> | 2014-12-01 03:47:41 +0100 |
---|---|---|
committer | Cástor Muñoz <cmvidal@gmail.com> | 2014-12-08 03:11:34 +0100 |
commit | 9454ad4c9780230667a7f32d2b8b201342509d91 (patch) | |
tree | bf6feb5198149beebba0cacbacd803ca748cae36 /firmware/target/arm/s5l8702 | |
parent | bfb63f801707e281317789c1a63ce745d5bae6e2 (diff) | |
download | rockbox-9454ad4c9780230667a7f32d2b8b201342509d91.tar.gz rockbox-9454ad4c9780230667a7f32d2b8b201342509d91.zip |
iPod Classic: configure piezo GPIO ports
Configures piezo GPIO ports for the lowest power consumption
when not in use.
Change-Id: If80b0c947f197277972fd9319b8ab283cca96d3c
Diffstat (limited to 'firmware/target/arm/s5l8702')
-rw-r--r-- | firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c b/firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c index 6a50ffc43c..f3c00e34c5 100644 --- a/firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c +++ b/firmware/target/arm/s5l8702/ipod6g/piezo-ipod6g.c | |||
@@ -31,10 +31,7 @@ void INT_TIMERA(void) | |||
31 | /* clear interrupt */ | 31 | /* clear interrupt */ |
32 | TACON = TACON; | 32 | TACON = TACON; |
33 | if (!(--duration)) | 33 | if (!(--duration)) |
34 | { | 34 | piezo_stop(); |
35 | beeping = 0; | ||
36 | TACMD = (1 << 1); /* TA_CLR */ | ||
37 | } | ||
38 | } | 35 | } |
39 | 36 | ||
40 | static void piezo_start(unsigned short cycles, unsigned short periods) | 37 | static void piezo_start(unsigned short cycles, unsigned short periods) |
@@ -42,14 +39,16 @@ static void piezo_start(unsigned short cycles, unsigned short periods) | |||
42 | #ifndef SIMULATOR | 39 | #ifndef SIMULATOR |
43 | duration = periods; | 40 | duration = periods; |
44 | beeping = 1; | 41 | beeping = 1; |
45 | /* configure timer for 100 kHz */ | 42 | /* select TA_OUT function on GPIO ports */ |
43 | PCON0 = (PCON0 & 0x00ffffff) | 0x53000000; | ||
44 | /* configure timer for 100 kHz (12 MHz / 4 / 30) */ | ||
46 | TACMD = (1 << 1); /* TA_CLR */ | 45 | TACMD = (1 << 1); /* TA_CLR */ |
47 | TAPRE = 30 - 1; /* prescaler */ /* 12 MHz / 4 / 30 = 100 kHz */ | 46 | TAPRE = 30 - 1; /* prescaler */ |
48 | TACON = (1 << 13) | /* TA_INT1_EN */ | 47 | TACON = (1 << 13) | /* TA_INT1_EN */ |
49 | (0 << 12) | /* TA_INT0_EN */ | 48 | (0 << 12) | /* TA_INT0_EN */ |
50 | (0 << 11) | /* TA_START */ | 49 | (0 << 11) | /* TA_START */ |
51 | (1 << 8) | /* TA_CS = PCLK / 4 */ | 50 | (1 << 8) | /* TA_CS = ECLK / 4 */ |
52 | (1 << 6) | /* UNKNOWN bit */ /* external 12 MHz clock ??? */ | 51 | (1 << 6) | /* select ECLK (12 MHz) */ |
53 | (1 << 4); /* TA_MODE_SEL = PWM mode */ | 52 | (1 << 4); /* TA_MODE_SEL = PWM mode */ |
54 | TADATA0 = cycles; /* set interval period */ | 53 | TADATA0 = cycles; /* set interval period */ |
55 | TADATA1 = cycles << 1; /* set interval period */ | 54 | TADATA1 = cycles << 1; /* set interval period */ |
@@ -60,7 +59,10 @@ static void piezo_start(unsigned short cycles, unsigned short periods) | |||
60 | void piezo_stop(void) | 59 | void piezo_stop(void) |
61 | { | 60 | { |
62 | #ifndef SIMULATOR | 61 | #ifndef SIMULATOR |
62 | beeping = 0; | ||
63 | TACMD = (1 << 1); /* TA_CLR */ | 63 | TACMD = (1 << 1); /* TA_CLR */ |
64 | /* configure GPIO for the lowest power consumption */ | ||
65 | PCON0 = (PCON0 & 0x00ffffff) | 0xee000000; | ||
64 | #endif | 66 | #endif |
65 | } | 67 | } |
66 | 68 | ||
@@ -76,7 +78,7 @@ bool piezo_busy(void) | |||
76 | 78 | ||
77 | void piezo_init(void) | 79 | void piezo_init(void) |
78 | { | 80 | { |
79 | beeping = 0; | 81 | piezo_stop(); |
80 | } | 82 | } |
81 | 83 | ||
82 | void piezo_button_beep(bool beep, bool force) | 84 | void piezo_button_beep(bool beep, bool force) |