FreeCalypso > hg > fc-tourmaline
view src/cs/drivers/drv_app/buzzer/pwt.c @ 304:58c7961bd0b0 default tip
TCH tap: extend DL sniffing feature to support CSD modes
Our debug feature for TCH DL sniffing reads the content of the DSP's
a_dd_0 buffer (or a_dd_1 for TCH/H subchannel 1) at appropriate times
and forwards captured bits to the host. This feature was originally
implemented for TCH/FS, TCH/EFS and TCH/HS - now extend it to cover
TCH/F data modes too.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 25 Nov 2024 23:33:27 +0000 |
parents | a72feaed133a |
children |
line wrap: on
line source
/* * This C module is a FreeCalypso addition: it implements hw driver functions * for Calypso buzzer output in PWT mode. */ #include "main/sys_types.h" #include "pwt.h" #include "fc-target.h" #define ASIC_CONF_REG (*(volatile SYS_UWORD16 *) 0xFFFEF008) #define PWT_MODE_MASK 0x0020 #define PWT_FRC_REG (*(volatile SYS_UWORD8 *) 0xFFFE8800) #define PWT_VCR_REG (*(volatile SYS_UWORD8 *) 0xFFFE8801) #define PWT_GCR_REG (*(volatile SYS_UWORD8 *) 0xFFFE8802) /* flag tells L1 to suppress deep sleep */ SYS_BOOL PWT_tone_is_on; void PWT_block_on(void) { #ifdef TARGET_HAS_BUZZER ASIC_CONF_REG |= PWT_MODE_MASK; PWT_GCR_REG = 0x01; #endif } void PWT_block_off(void) { #ifdef TARGET_HAS_BUZZER ASIC_CONF_REG &= ~PWT_MODE_MASK; PWT_GCR_REG = 0; #endif } void PWT_play_tone(SYS_UWORD8 note, SYS_UWORD8 volume) { #ifdef TARGET_HAS_BUZZER PWT_FRC_REG = note; PWT_VCR_REG = (volume << 1) | 1; PWT_tone_is_on = 1; #endif } void PWT_stop_tone(void) { #ifdef TARGET_HAS_BUZZER PWT_VCR_REG = 0; PWT_tone_is_on = 0; #endif }