aboutsummaryrefslogtreecommitdiff
path: root/drivers/sensors/adns9800.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/sensors/adns9800.c')
-rw-r--r--drivers/sensors/adns9800.c11
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) {