Files
threeeye bc1d038eac REVVL 6 Pro kernel bring-up: full working tree snapshot (2026-09-12)
Squashed backup commit (no shallow-clone history issues) of
xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2 branch, upstream
commit 9eece662e) plus all fixes applied to get everpal_defconfig building
clean against a modern (GCC 15.2.0) toolchain -- see the previous commit
message on the lineage-23.2 branch (also in this repo history is not
available here since this is a squashed snapshot; full incremental history
lives in the local DL380 checkout and the upstream GitHub remote).

Upstream: https://github.com/xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2)
2026-09-12 13:36:46 +00:00

181 lines
4.0 KiB
C

#ifndef __AW87XXX_H__
#define __AW87XXX_H__
#include "aw87xxx_monitor.h"
#define AWINIC_CFG_UPDATE_DELAY
#define AWINIC_CFG_UPDATE_DELAY_TIME (5000)
#define AW_I2C_RETRIES (5)
#define AW_I2C_RETRY_DELAY (2)
#define AW_READ_CHIPID_RETRIES (5)
#define AW_READ_CHIPID_RETRY_DELAY (2)
#define AW87XXX_CFG_NAME_MAX (64)
#define AW87XXX_LOAD_CFG_RETRIES (3)
#define AW87XXX_ADDR_BYTE_LEN (1)
#define AW87XXX_DATA_BYTE_LEN (1)
#define AW87XXX_BIN_TYPE_REG (0)
#define AW87XXX_REG_CHIPID (0x00)
#define AW87XXX_REG_REG_SYSCTRL (0x01)
#define AW87XXX_REG_REG_SYSCTRL_DISABLE (0x01)
#define AW87XXX_REG_NONE_ACCESS (0)
#define AW87XXX_REG_RD_ACCESS (1 << 0)
#define AW87XXX_REG_WR_ACCESS (1 << 1)
#define AW87XXX_CFG_NUM_INIT (0)
#define AW87XXX_ADD_CHAN_NAME_SHIFT (2)
#define AW87XXX_MODE_CFG_NUM_MAX (3)
#define KTHREAD_SYNC_INTERVAL (100)
#define WAIT_DSP_OPEN_TIME (3000)
#define SOFTRESET_ADDR (0x00)
#define SOFTRESET_VALUE (0xaa)
enum aw87xxx_scene_mode {
AW87XXX_OFF_MODE = 0,
AW87XXX_MUSIC_MODE = 1,
AW87XXX_VOICE_MODE = 2,
AW87XXX_FM_MODE = 3,
AW87XXX_RCV_MODE = 4,
AW87XXX_MODE_MAX = 5,
};
enum aw87xxx_chip_type {
AW87XXX_339 = 0,
AW87XXX_359 = 1,
AW87XXX_369 = 2,
AW87XXX_519 = 3,
AW87XXX_559 = 4,
AW87XXX_CHIP_TYPE_MAX = 5,
};
enum aw87xxx_fm_version {
AW87XXX_OLD_FIRMWARE = 0,
AW87XXX_FH_FIRMWARE = 1,
};
enum aw87xxx_chipid {
AW87XXX_CHIPID_39 = 0x39,
AW87XXX_CHIPID_59 = 0x59,
AW87XXX_CHIPID_69 = 0x69,
AW87XXX_CHIPID_5A = 0x5A,
};
enum aw87xxx_cfg_update_flag {
AW87XXX_CFG_NG = 0,
AW87XXX_CFG_WAIT,
AW87XXX_CFG_OK,
};
struct ui_frame_header {
uint32_t check_sum;
uint32_t bin_fh_ver;
uint32_t bin_data_type;
uint32_t bin_data_ver;
uint32_t bin_data_len;
uint32_t ui_ver;
uint32_t chip_name[2];
uint32_t addr_bit_wide;
uint32_t data_bit_wide;
uint32_t i2c_addr;
uint32_t reserved[4];
};
struct aw87xxx_container {
int len;
unsigned char data[];
};
struct aw87xxx_scene_param {
uint8_t scene_mode;
uint8_t update_num;
uint8_t cfg_update_flag;
struct ui_frame_header *frame_header;
struct aw87xxx_container *scene_cnt;
struct aw_bin *bin_file;
};
struct aw87xxx_scene_list {
struct aw87xxx_scene_param aw_off;
struct aw87xxx_scene_param aw_music;
struct aw87xxx_scene_param aw_voice;
struct aw87xxx_scene_param aw_fm;
struct aw87xxx_scene_param aw_rcv;
};
struct aw87xxx_reg_param {
int reg_max;
const unsigned char *reg_access;
};
/********************************************
*
* aw87xxx struct
*
*******************************************/
struct aw87xxx {
bool open_dsp_en;
uint8_t i2c_seq;
uint8_t i2c_addr;
uint8_t chipid;
uint8_t product;
uint8_t hwen_flag;
uint8_t current_mode;
char cfg_name[AW87XXX_MODE_MAX][AW87XXX_CFG_NAME_MAX];
char vmax_cfg_name[AW87XXX_CFG_NAME_MAX];
char chip_name[10];
char bus_num[2];
int reset_gpio;
int32_t pa_channel;
char *name_suffix;
char channel[2];
char *end;
spinlock_t bin_parse_lock;
struct mutex lock;
struct mutex cfg_lock;
struct delayed_work ram_work;
struct i2c_client *i2c_client;
struct device *dev;
struct list_head list;
struct aw87xxx_scene_list aw87xxx_scene_ls;
struct aw87xxx_reg_param reg_param;
struct aw87xxx_monitor monitor;
};
/********************************************
*
* print information control
*
*******************************************/
#define aw_dev_err(dev, format, ...) \
pr_err("[%s]" format, dev_name(dev), ##__VA_ARGS__)
#define aw_dev_info(dev, format, ...) \
pr_info("[%s]" format, dev_name(dev), ##__VA_ARGS__)
#define aw_dev_dbg(dev, format, ...) \
pr_debug("[%s]" format, dev_name(dev), ##__VA_ARGS__)
/******************************************************************
* aw87xxx functions
*******************************************************************/
unsigned char aw87xxx_show_current_mode(int32_t channel);
int aw87xxx_audio_scene_load(uint8_t mode, int32_t channel);
#endif