annotate src/cs/drivers/drv_app/buzzer/vibrator.c @ 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
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
289
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This C module is a FreeCalypso addition: it implements hardware vibrator
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * control as appropriate for different hw targets.
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include "main/sys_types.h"
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include "memif/mem.h"
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include "armio/armio.h"
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include "buzzer.h"
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include "vibrator.h"
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include "abb/abb.h"
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include "board.cfg"
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include "fc-target.h"
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 /* flag tells L1 to suppress deep sleep */
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 SYS_BOOL HW_vibrator_is_on;
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 void HW_vibrator_on(SYS_UWORD8 level)
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 {
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 HW_vibrator_is_on = 1;
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 #ifdef CONFIG_TARGET_PIRELLI
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 /* vibrator is controlled via BU output */
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 BZ_Tone(0);
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 BZ_Volume(level >> 2);
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 BZ_Enable();
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 #elif defined(CONFIG_TARGET_COMPAL)
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 /* vibrator is controlled via Iota AUX DAC */
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 ABB_Write_Register_on_page(PAGE0, TOGBR1, 0x20);
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 ABB_Write_Register_on_page(PAGE0, AUXDAC, (level << 2) | 3);
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 #endif
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 }
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 void HW_vibrator_off(void)
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 {
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 #ifdef CONFIG_TARGET_PIRELLI
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 BZ_Disable();
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 #elif defined(CONFIG_TARGET_COMPAL)
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 ABB_Write_Register_on_page(PAGE0, AUXDAC, 0);
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 ABB_Write_Register_on_page(PAGE0, TOGBR1, 0x10);
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 #endif
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 HW_vibrator_is_on = 0;
4d203ef0eb4b implement vibrator on/off control driver
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 }