FreeCalypso > hg > fc-tourmaline
changeset 289:4d203ef0eb4b
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.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 26 Mar 2022 17:03:36 +0000 |
parents | 25d3ee009d19 |
children | 0e5ccb343284 |
files | components/buzzer src/cs/drivers/drv_app/buzzer/vibrator.c src/cs/drivers/drv_app/buzzer/vibrator.h |
diffstat | 3 files changed, 51 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- /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; +}
--- /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);