diff options
-rw-r--r-- | firmware/target/arm/philips/sa9200/button-sa9200.c | 17 | ||||
-rw-r--r-- | firmware/target/arm/pp/system-pp502x.c | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/firmware/target/arm/philips/sa9200/button-sa9200.c b/firmware/target/arm/philips/sa9200/button-sa9200.c index bef5be7522..c02d1088dc 100644 --- a/firmware/target/arm/philips/sa9200/button-sa9200.c +++ b/firmware/target/arm/philips/sa9200/button-sa9200.c @@ -29,6 +29,19 @@ static int int_btn = BUTTON_NONE; +/* + * Generate a click sound from the player (not in headphones yet) + * TODO: integrate this with the "key click" option + */ +static void button_click(void) +{ + GPIOF_ENABLE |= 0x08; + GPIOF_OUTPUT_VAL |= 0x08; + GPIOF_OUTPUT_EN |= 0x08; + udelay(1000); + GPIOF_OUTPUT_VAL &= ~0x08; +} + #ifndef BOOTLOADER static bool hold_button_old = false; @@ -135,6 +148,7 @@ bool button_hold(void) */ int button_read_device(void) { + static int btn_old = BUTTON_NONE; int btn = int_btn; bool hold = !(GPIOL_INPUT_VAL & 0x40); @@ -154,6 +168,9 @@ int button_read_device(void) if (!(GPIOF_INPUT_VAL & 0x10)) btn |= BUTTON_VOL_UP; if (!(GPIOF_INPUT_VAL & 0x04)) btn |= BUTTON_VOL_DOWN; + if ((btn != btn_old) && (btn != BUTTON_NONE)) button_click(); + btn_old = btn; + return btn; } diff --git a/firmware/target/arm/pp/system-pp502x.c b/firmware/target/arm/pp/system-pp502x.c index af2e6d7761..697b52cf51 100644 --- a/firmware/target/arm/pp/system-pp502x.c +++ b/firmware/target/arm/pp/system-pp502x.c @@ -489,6 +489,8 @@ void system_init(void) DEV_RS = 0x00000000; DEV_RS2 = 0x00000000; #elif defined(PHILIPS_SA9200) + DEV_INIT1 = 0x00000000; + DEV_INIT2 = 0x40004000; /* reset all allowed devices */ DEV_RS = 0x3ffffef8; DEV_RS2 = 0xffffffff; |