# HG changeset patch # User Mychaela Falconia # Date 1648314216 0 # Node ID 4d203ef0eb4b564757116031a16aa6a9a39983d6 # Parent 25d3ee009d191177ae5ee13ec8aece663de18524 implement vibrator on/off control driver The piece implemented here is just the HW on/off driver; on top of this driver there will be a VIBR service (to be implemented in RiViera land) that will implement vibration pulse trains. diff -r 25d3ee009d19 -r 4d203ef0eb4b components/buzzer --- a/components/buzzer Sat Nov 13 05:02:57 2021 +0000 +++ b/components/buzzer Sat Mar 26 17:03:36 2022 +0000 @@ -36,3 +36,4 @@ SRCDIR=$SRC/cs/drivers/drv_app/buzzer cfile_plain $SRCDIR/buzzer.c +cfile_plain $SRCDIR/vibrator.c diff -r 25d3ee009d19 -r 4d203ef0eb4b src/cs/drivers/drv_app/buzzer/vibrator.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/drivers/drv_app/buzzer/vibrator.c Sat Mar 26 17:03:36 2022 +0000 @@ -0,0 +1,43 @@ +/* + * 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; +} diff -r 25d3ee009d19 -r 4d203ef0eb4b src/cs/drivers/drv_app/buzzer/vibrator.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/drivers/drv_app/buzzer/vibrator.h Sat Mar 26 17:03:36 2022 +0000 @@ -0,0 +1,7 @@ +/* + * This header file is a FreeCalypso addition: it defines the functional + * interface to the hardware vibrator driver. + */ + +void HW_vibrator_on(SYS_UWORD8 level); +void HW_vibrator_off(void);