diff options
Diffstat (limited to 'drivers/sensors/adns9800.c')
-rw-r--r-- | drivers/sensors/adns9800.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/sensors/adns9800.c b/drivers/sensors/adns9800.c index 0dbc528351..f5958dd350 100644 --- a/drivers/sensors/adns9800.c +++ b/drivers/sensors/adns9800.c @@ -115,7 +115,14 @@ uint8_t adns9800_read(uint8_t reg_addr) { return data; } -void adns9800_init(void) { +bool __attribute__((weak)) adns9800_check_signature(void) { + if (adns9800_read(REG_Product_ID) != 0x33) { + return false; + } + return true; +} + +bool adns9800_init(void) { gpio_set_pin_output(ADNS9800_CS_PIN); spi_init(); @@ -178,6 +185,8 @@ void adns9800_init(void) { adns9800_write(REG_LASER_CTRL0, laser_ctrl0 & 0xf0); adns9800_set_cpi(ADNS9800_CPI); + + return adns9800_check_signature(); } config_adns9800_t adns9800_get_config(void) { |