1 /*
2  * Copyright (c) 2025 Croxel Inc.
3  * Copyright (c) 2025 CogniPilot Foundation
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  */
7 
8 #ifndef ZEPHYR_DRIVERS_SENSOR_PAA3905_REG_H_
9 #define ZEPHYR_DRIVERS_SENSOR_PAA3905_REG_H_
10 
11 #define REG_SPI_READ_BIT			0
12 #define REG_SPI_WRITE_BIT			BIT(7)
13 
14 /* Registers */
15 #define REG_PRODUCT_ID				0x00
16 #define REG_MOTION				0x02
17 #define REG_DELTA_X_L				0x03
18 #define REG_DELTA_X_H				0x04
19 #define REG_DELTA_Y_L				0x05
20 #define REG_DELTA_Y_H				0x06
21 #define REG_BURST_READ				0x16
22 #define REG_POWER_UP_RESET			0x3A
23 #define REG_RESOLUTION				0x4E
24 
25 /* Misc. Defines */
26 #define PRODUCT_ID				0xA2
27 #define POWER_UP_RESET_VAL			0x5A
28 
29 #define REG_MOTION_DETECTED(val)		((val) & BIT(7))
30 #define REG_MOTION_CHALLENGING_COND(val)	((val) & BIT(0))
31 
32 #define REG_OBSERVATION_MODE(val)		(((val) & (BIT(7) | BIT(6))) >> 6)
33 #define REG_OBSERVATION_CHIP_OK(val)		(((val) & BIT_MASK(6)) == 0x3F)
34 
35 #define OBSERVATION_MODE_BRIGHT			0
36 #define OBSERVATION_MODE_LOW_LIGHT		1
37 #define OBSERVATION_MODE_SUPER_LOW_LIGHT	2
38 
39 /* Data validation boundaries */
40 #define SQUAL_MIN_BRIGHT			0x19
41 #define SHUTTER_MAX_BRIGHT			0x00FF80
42 
43 #define SQUAL_MIN_LOW_LIGHT			0x46
44 #define SHUTTER_MAX_LOW_LIGHT			0x00FF80
45 
46 #define SQUAL_MIN_SUPER_LOW_LIGHT		0x55
47 #define SHUTTER_MAX_SUPER_LOW_LIGHT		0x025998
48 
49 
50 #endif /* ZEPHYR_DRIVERS_SENSOR_PAA3905_REG_H_ */
51