view src/cs/drivers/drv_app/buzzer/vibrator.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 4d203ef0eb4b
children
line wrap: on
line source

/*
 * This C module is a FreeCalypso addition: it implements hardware vibrator
 * control as appropriate for different hw targets.
 */

#include "main/sys_types.h"
#include "memif/mem.h"
#include "armio/armio.h"
#include "buzzer.h"
#include "vibrator.h"
#include "abb/abb.h"

#include "board.cfg"
#include "fc-target.h"

/* flag tells L1 to suppress deep sleep */
SYS_BOOL HW_vibrator_is_on;

void HW_vibrator_on(SYS_UWORD8 level)
{
    HW_vibrator_is_on = 1;
    #ifdef CONFIG_TARGET_PIRELLI
	/* vibrator is controlled via BU output */
	BZ_Tone(0);
	BZ_Volume(level >> 2);
	BZ_Enable();
    #elif defined(CONFIG_TARGET_COMPAL)
	/* vibrator is controlled via Iota AUX DAC */
	ABB_Write_Register_on_page(PAGE0, TOGBR1, 0x20);
	ABB_Write_Register_on_page(PAGE0, AUXDAC, (level << 2) | 3);
    #endif
}

void HW_vibrator_off(void)
{
    #ifdef CONFIG_TARGET_PIRELLI
	BZ_Disable();
    #elif defined(CONFIG_TARGET_COMPAL)
	ABB_Write_Register_on_page(PAGE0, AUXDAC, 0);
	ABB_Write_Register_on_page(PAGE0, TOGBR1, 0x10);
    #endif
    HW_vibrator_is_on = 0;
}