unleashed-firmware/lib/drivers/lp5562_reg.h
hedger 380ec2ac46
Added -Wundef to compiler options (#3815)
* fbt: added -Wundef to compiler options; libs: various small fixes for missing defines; desktop: proper access to current RTOS config
* apps: fixes for FURI_DEBUG handling
* rpc: unified definition checks
* Cleanup various defines use
* Cleanup configs and move SVCall ISR priority configuration to furi_hal_interrupts

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-08-01 01:38:20 +09:00

98 lines
2.1 KiB
C

#pragma once
#if defined(BITS_BIG_ENDIAN) && BITS_BIG_ENDIAN == 1
#error Bit structures defined in this file are not portable to BE
#endif
#define LP5562_ADDRESS 0x60
#define LP5562_I2C_TIMEOUT 50
#define LP5562_CHANNEL_RED_CURRENT_REGISTER 0x07
#define LP5562_CHANNEL_GREEN_CURRENT_REGISTER 0x06
#define LP5562_CHANNEL_BLUE_CURRENT_REGISTER 0x05
#define LP5562_CHANNEL_WHITE_CURRENT_REGISTER 0x0F
#define LP5562_CHANNEL_RED_VALUE_REGISTER 0x04
#define LP5562_CHANNEL_GREEN_VALUE_REGISTER 0x03
#define LP5562_CHANNEL_BLUE_VALUE_REGISTER 0x02
#define LP5562_CHANNEL_WHITE_VALUE_REGISTER 0x0E
typedef enum {
EngExecHold = 0b00,
EngExecStep = 0b01,
EngExecRun = 0b10,
EngExecPC = 0b11,
} EngExec;
typedef struct {
EngExec ENG3_EXEC : 2;
EngExec ENG2_EXEC : 2;
EngExec ENG1_EXEC : 2;
bool CHIP_EN : 1;
bool LOG_EN : 1;
} Reg00_Enable;
typedef enum {
EngModeDisable = 0b00,
EngModeLoad = 0b01,
EngModeRun = 0b10,
EngModeDirect = 0b11,
} EngMode;
typedef struct {
EngMode ENG3_MODE : 2;
EngMode ENG2_MODE : 2;
EngMode ENG1_MODE : 2;
uint8_t reserved : 2;
} Reg01_OpMode;
typedef struct {
bool INT_CLK_EN : 1;
bool CLK_DET_EN : 1;
uint8_t reserved0 : 3;
bool PS_EN : 1;
bool PWM_HF : 1;
uint8_t reserved1 : 1;
} Reg08_Config;
typedef struct {
uint8_t pc : 3;
uint8_t reserved : 5;
} Reg09_Engine1PC;
typedef struct {
uint8_t pc : 3;
uint8_t reserved : 5;
} Reg0A_Engine2PC;
typedef struct {
uint8_t pc : 3;
uint8_t reserved : 5;
} Reg0B_Engine3PC;
typedef struct {
bool ENG3_INT : 1;
bool ENG2_INT : 1;
bool ENG1_INT : 1;
bool EXT_CLK_USED : 1;
uint8_t reserved : 5;
} Reg0C_Status;
typedef struct {
uint8_t value;
} Reg0D_Reset;
typedef enum {
EngSelectI2C = 0b00,
EngSelectEngine1 = 0b01,
EngSelectEngine2 = 0b10,
EngSelectEngine3 = 0b11,
} EngSelect;
typedef struct {
EngSelect blue : 2;
EngSelect green : 2;
EngSelect red : 2;
EngSelect white : 2;
} Reg70_LedMap;