1
0
Fork 0

Add ability to poweroff ADNS5050 sensor (#24223)

* Add ability to poweroff ADNS5050 sensor

* ploopyco/trackball_nano: Poweroff ADNS5050 on suspend
This commit is contained in:
Colin Kinloch 2024-08-26 21:06:53 +01:00 committed by GitHub
parent df5800b6c4
commit cc3bc2af11
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 25 additions and 0 deletions

View file

@ -45,6 +45,8 @@
#define REG_MOTION_BURST 0x63
// clang-format on
static bool powered_down = false;
void adns5050_init(void) {
// Initialize the ADNS serial pins.
gpio_set_pin_output(ADNS5050_SCLK_PIN);
@ -59,6 +61,8 @@ void adns5050_init(void) {
// this ensures that the adns is actuall ready after reset.
wait_ms(55);
powered_down = false;
// read a burst from the adns and then discard it.
// gets the adns ready for write commands
// (for example, setting the dpi).
@ -163,6 +167,10 @@ report_adns5050_t adns5050_read_burst(void) {
data.dx = 0;
data.dy = 0;
if (powered_down) {
return data;
}
adns5050_serial_write(REG_MOTION_BURST);
// We don't need a minimum tSRAD here. That's because a 4ms wait time is
@ -211,3 +219,10 @@ bool adns5050_check_signature(void) {
return (pid == 0x12 && rid == 0x01 && pid2 == 0x26);
}
void adns5050_power_down(void) {
if (!powered_down) {
powered_down = true;
adns5050_write_reg(REG_MOUSE_CONTROL, 0b10);
}
}