summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorDasky <32983009+daskygit@users.noreply.github.com>2024-06-27 05:10:13 +0100
committerGitHub <noreply@github.com>2024-06-27 05:10:13 +0100
commita7aa58cc8130b9c59bc39f41e33d9387a46b1e8c (patch)
treed3b12e2b95c7802f72e75ad174a51762516feeae /drivers
parent276ecd4693e630b876558f96106f019d83502604 (diff)
Change ADNS9800 and PMW33XX SROM uploads to opt in. (#24001)
Make SROM upload optional
Diffstat (limited to 'drivers')
-rw-r--r--drivers/sensors/adns9800.c11
-rw-r--r--drivers/sensors/pmw33xx_common.c4
2 files changed, 14 insertions, 1 deletions
diff --git a/drivers/sensors/adns9800.c b/drivers/sensors/adns9800.c
index f34529ee90..0ba26a365a 100644
--- a/drivers/sensors/adns9800.c
+++ b/drivers/sensors/adns9800.c
@@ -115,6 +115,7 @@ void adns9800_init(void) {
adns9800_read(REG_Delta_Y_L);
adns9800_read(REG_Delta_Y_H);
+#ifdef ADNS9800_UPLOAD_SROM
// upload firmware
// 3k firmware mode
@@ -145,6 +146,16 @@ void adns9800_init(void) {
spi_stop();
wait_ms(10);
+#else
+ // write reset value to REG_Configuration_IV
+ adns9800_write(REG_Configuration_IV, 0x0);
+
+ // write reset value to REG_SROM_Enable
+ adns9800_write(REG_SROM_Enable, 0x0);
+
+ // wait a frame
+ wait_ms(10);
+#endif
// enable laser
uint8_t laser_ctrl0 = adns9800_read(REG_LASER_CTRL0);
diff --git a/drivers/sensors/pmw33xx_common.c b/drivers/sensors/pmw33xx_common.c
index 82a7ec3297..f1f2d0e865 100644
--- a/drivers/sensors/pmw33xx_common.c
+++ b/drivers/sensors/pmw33xx_common.c
@@ -154,10 +154,12 @@ bool pmw33xx_init(uint8_t sensor) {
pmw33xx_read(sensor, REG_Delta_Y_L);
pmw33xx_read(sensor, REG_Delta_Y_H);
+#ifdef PMW33XX_UPLOAD_SROM
if (!pmw33xx_upload_firmware(sensor)) {
pd_dprintf("PMW33XX (%d): firmware upload failed!\n", sensor);
return false;
}
+#endif
spi_stop();
@@ -200,7 +202,7 @@ pmw33xx_report_t pmw33xx_read_burst(uint8_t sensor) {
spi_write(REG_Motion_Burst);
wait_us(35); // waits for tSRAD_MOTBR
- spi_receive((uint8_t*)&report, sizeof(report));
+ spi_receive((uint8_t *)&report, sizeof(report));
// panic recovery, sometimes burst mode works weird.
if (report.motion.w & 0b111) {