qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

pmw3389.h (2878B)


      1 // Copyright 2022 Stefan Kerkmann (KarlK90)
      2 // Copyright 2021 Alabastard (@Alabastard-64)
      3 // Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.com>
      4 // Copyright 2019 Sunjun Kim
      5 // Copyright 2020 Ploopy Corporation
      6 // SPDX-License-Identifier: GPL-2.0-or-later
      7 
      8 #pragma once
      9 
     10 #include <stdint.h>
     11 
     12 #if !defined(PMW33XX_CPI)
     13 #    define PMW33XX_CPI 2000
     14 #endif
     15 
     16 #define PMW33XX_CPI_STEP 50
     17 #define PMW33XX_CPI_MIN 50
     18 #define PMW33XX_CPI_MAX 16000
     19 
     20 // PMW3389 register addresses
     21 // clang-format off
     22 #define REG_Product_ID                 0x00
     23 #define REG_Revision_ID                0x01
     24 #define REG_Motion                     0x02
     25 #define REG_Delta_X_L                  0x03
     26 #define REG_Delta_X_H                  0x04
     27 #define REG_Delta_Y_L                  0x05
     28 #define REG_Delta_Y_H                  0x06
     29 #define REG_SQUAL                      0x07
     30 #define REG_RawData_Sum                0x08
     31 #define REG_Maximum_RawData            0x09
     32 #define REG_Minimum_RawData            0x0a
     33 #define REG_Shutter_Lower              0x0b
     34 #define REG_Shutter_Upper              0x0c
     35 #define REG_Ripple_Control             0x0d
     36 #define REG_Resolution_L               0x0e
     37 #define REG_Resolution_H               0x0f
     38 #define REG_Config2                    0x10
     39 #define REG_Angle_Tune                 0x11
     40 #define REG_Frame_Capture              0x12
     41 #define REG_SROM_Enable                0x13
     42 #define REG_Run_Downshift              0x14
     43 #define REG_Rest1_Rate_Lower           0x15
     44 #define REG_Rest1_Rate_Upper           0x16
     45 #define REG_Rest1_Downshift            0x17
     46 #define REG_Rest2_Rate_Lower           0x18
     47 #define REG_Rest2_Rate_Upper           0x19
     48 #define REG_Rest2_Downshift            0x1a
     49 #define REG_Rest3_Rate_Lower           0x1b
     50 #define REG_Rest3_Rate_Upper           0x1c
     51 #define REG_Observation                0x24
     52 #define REG_Data_Out_Lower             0x25
     53 #define REG_Data_Out_Upper             0x26
     54 #define REG_SROM_ID                    0x2a
     55 #define REG_Min_SQ_Run                 0x2b
     56 #define REG_RawData_Threshold          0x2c
     57 #define REG_Control2                   0x2d
     58 #define REG_Config5_L                  0x2e
     59 #define REG_Config5_H                  0x2f
     60 #define REG_Power_Up_Reset             0X3a
     61 #define REG_Shutdown                   0x3b
     62 #define REG_Inverse_Product_ID         0x3f
     63 #define REG_LiftCutoff_Cal3            0x41
     64 #define REG_Angle_Snap                 0x42
     65 #define REG_LiftCutoff_Cal1            0x4a
     66 #define REG_Motion_Burst               0x50
     67 #define REG_SROM_Load_Burst            0x62
     68 #define REG_Lift_Config                0x63
     69 #define REG_RawData_Burst              0x64
     70 #define REG_LiftCutoff_Cal2            0x65
     71 #define REG_LiftCutoff_Cal_Timeout     0x71
     72 #define REG_LiftCutoff_Cal_Min_Length  0x72
     73 #define REG_PWM_Period_Cnt             0x73
     74 #define REG_PWM_Width_Cnt              0x74
     75 // clang-format on