diff options
author | Tai Kuo <taikuo@google.com> | 2022-03-04 15:05:33 +0800 |
---|---|---|
committer | Tai Kuo <taikuo@google.com> | 2022-03-04 09:33:10 +0000 |
commit | d58df7442c6163bd2233ab38814565f5f2d7539c (patch) | |
tree | bdda15e209f632ba97b453fb937bbab3f99ee7e4 /cs40l26/cs40l26.h | |
parent | 4edf770fd08f672a72131cf2fc60b36edd46e773 (diff) | |
download | amplifiers-d58df7442c6163bd2233ab38814565f5f2d7539c.tar.gz |
cs40l26: merge dsp v3.1.7, cs40l26 v4.0.2 and v4.0.3
Branch: v5.10-cirrus-dsp-fw
Tag: cl-dsp-fw-v3.1.7_5.10
Files:
drivers/firmware/cirrus/cl_dsp.c
include/linux/firmware/cirrus/cl_dsp.h
Bug fixes:
- Replace strlcpy() instances with strscpy()
- Improved error reporting for invalid algo. rev
- Minor typo fix
Commits:
0a2a7f7 firmware: cirrus: Fix typo
332111a firmware: cirrus: Improve error reporting for invalid algo. rev.
ec97039 firmware: cirrus: Use strscpy for string copying
---
Branch: v5.10-cs40l26
Tag: cs40l26-v4.0.2_5.10, cs40l26-v4.0.3_5.10
Files:
drivers/input/misc/cs40l26-i2c.c (No changes)
drivers/input/misc/cs40l26-spi.c (No changes)
drivers/input/misc/cs40l26-sysfs.c
drivers/input/misc/cs40l26-tables.c
drivers/input/misc/cs40l26.c
include/linux/mfd/cs40l26.h
sound/soc/codecs/cs40l26.c -> cs40l26-codec.c
Features:
- Allow swapping firmwares of the same type (runtime/calibration)
- Add support for Dynamic Boost Control via sysfs controls
- Extend range of PM timeouts
Bug fixes:
- Fixes bug in which PSEQ list terminator was not being reset between
firmware swaps.
- Appropriately clear GPI mapping after erasing waveform
Commits:
tag: cs40l26-v4.0.3_5.10
0c520ef input: cs40l26: Reset PSEQ END_OF_SCRIPT on fw swap
956d534 input: cs40l26: Check pseq mem before adding op
tag: cs40l26-v4.0.2_5.10
4a9f5e3 input: cs40l26: Update SVC tuning file name size
882895f input: cs40l26: Loosen restriction on firmware swapping
5c7f770 input: cs40l26: Use strscpy for string copying
0700a83 ASoC: cs40l26: Update Handling of SVC for ASP Streaming
cfeac58 input: cs40l26: Add user controls for Dynamic Boost
6068def input: cs40l26: Update PM Transition Timeout Limits
b65b511 input: cs40l26: Fix value to disable gpi triggers
Bug: 222620491
Test: idlcli commands.
Test: Firmware switching and then trigger haptics
Test: Continuous index 0 haptics
Test: Continuous index 9 hatpcis
Signed-off-by: Tai Kuo <taikuo@google.com>
Change-Id: Ic2eaca8fe2cce9ef0c4b03460ddca791ad57d852
Diffstat (limited to 'cs40l26/cs40l26.h')
-rw-r--r-- | cs40l26/cs40l26.h | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/cs40l26/cs40l26.h b/cs40l26/cs40l26.h index c08c3ab..5ac0a19 100644 --- a/cs40l26/cs40l26.h +++ b/cs40l26/cs40l26.h @@ -703,6 +703,7 @@ #define CS40L26_EXT_ALGO_ID 0x0004013C /* power management */ +#define CS40L26_PSEQ_ROM_OFFSET_WORDS_A1 24 #define CS40L26_PSEQ_MAX_WORDS_PER_OP CS40L26_PSEQ_OP_WRITE_FIELD_WORDS #define CS40L26_PSEQ_MAX_WORDS 129 #define CS40L26_PSEQ_NUM_OPS 8 @@ -747,9 +748,8 @@ #define CS40L26_PM_STDBY_TIMEOUT_LOWER_OFFSET 16 #define CS40L26_PM_STDBY_TIMEOUT_UPPER_OFFSET 20 -#define CS40L26_PM_STDBY_TIMEOUT_MS_DEFAULT 5000 -#define CS40L26_PM_TIMEOUT_MS_MIN 100 -#define CS40L26_PM_TIMEOUT_MS_MAX 4880 +#define CS40L26_PM_STDBY_TIMEOUT_MS_DEFAULT 100 +#define CS40L26_PM_TIMEOUT_MS_MAX 10000 #define CS40L26_PM_ACTIVE_TIMEOUT_LOWER_OFFSET 24 #define CS40L26_PM_ACTIVE_TIMEOUT_UPPER_OFFSET 28 #define CS40L26_PM_ACTIVE_TIMEOUT_MS_DEFAULT 250 @@ -837,7 +837,7 @@ #define CS40L26_SVC_TUNING_FILE_PREFIX "cs40l26-svc" #define CS40L26_SVC_TUNING_FILE_PREFIX_LEN 12 #define CS40L26_SVC_TUNING_FILE_NAME "cs40l26-svc.bin" -#define CS40L26_SVC_TUNING_FILE_NAME_LEN 16 +#define CS40L26_SVC_TUNING_FILE_NAME_LEN 17 #define CS40L26_A2H_TUNING_FILE_NAME "cs40l26-a2h.bin" #define CS40L26_A2H_TUNING_FILE_NAME_LEN 16 #define CS40L26_TUNING_FILE_NAME_MAX_LEN 20 @@ -926,6 +926,7 @@ #define CS40L26_GPIO1 1 #define CS40L26_EVENT_MAP_INDEX_MASK GENMASK(8, 0) #define CS40L26_EVENT_MAP_NUM_GPI_REGS 4 +#define CS40L26_EVENT_MAP_GPI_EVENT_DISABLE 0x1FF #define CS40L26_BTN_INDEX_MASK GENMASK(7, 0) #define CS40L26_BTN_BUZZ_MASK BIT(7) @@ -1229,6 +1230,20 @@ #define CS40L26_COMP_EN_REDC_SHIFT 1 #define CS40L26_COMP_EN_F0_SHIFT 0 +/* FW EXT */ +#define CS40L26_SVC_FOR_STREAMING_MASK BIT(0) + +/* DBC */ +#define CS40L26_DBC_ENABLE_MASK BIT(1) +#define CS40L26_DBC_ENABLE_SHIFT 1 +#define CS40L26_DBC_TX_LVL_HOLD_OFF_MS_MAX 1000 +#define CS40L26_DBC_CONTROLS_MAX 0x7FFFFF +#define CS40L26_DBC_ENV_REL_COEF_NAME "DBC_ENV_REL_COEF" +#define CS40L26_DBC_RISE_HEADROOM_NAME "DBC_RISE_HEADROOM" +#define CS40L26_DBC_FALL_HEADROOM_NAME "DBC_FALL_HEADROOM" +#define CS40L26_DBC_TX_LVL_THRESH_FS_NAME "DBC_TX_LVL_THRESH_FS" +#define CS40L26_DBC_TX_LVL_HOLD_OFF_MS_NAME "DBC_TX_LVL_HOLD_OFF_MS" + /* Errata */ #define CS40L26_ERRATA_A1_NUM_WRITES 4 #define CS40L26_ERRATA_A1_EXPL_EN_NUM_WRITES 1 @@ -1253,6 +1268,15 @@ #define CS40L26_SAMPS_TO_MS(n) ((n) / 8) /* enums */ +enum cs40l26_dbc { + CS40L26_DBC_ENV_REL_COEF, /* 0 */ + CS40L26_DBC_RISE_HEADROOM, + CS40L26_DBC_FALL_HEADROOM, + CS40L26_DBC_TX_LVL_THRESH_FS, + CS40L26_DBC_TX_LVL_HOLD_OFF_MS, + CS40L26_DBC_NUM_CONTROLS, /* 5 */ +}; + enum cs40l26_vibe_state { CS40L26_VIBE_STATE_STOPPED, CS40L26_VIBE_STATE_HAPTIC, @@ -1362,6 +1386,7 @@ enum cs40l26_pm_state { /* structs */ struct cs40l26_fw { unsigned int id; + unsigned int rev; unsigned int min_rev; unsigned int num_coeff_files; char **coeff_files; @@ -1504,6 +1529,10 @@ struct cs40l26_pll_sysclk_config { }; /* exported function prototypes */ +int cs40l26_dbc_get(struct cs40l26_private *cs40l26, enum cs40l26_dbc dbc, + unsigned int *val); +int cs40l26_dbc_set(struct cs40l26_private *cs40l26, enum cs40l26_dbc dbc, + const char *buf); int cs40l26_asp_start(struct cs40l26_private *cs40l26); int cs40l26_get_num_waves(struct cs40l26_private *cs40l26, u32 *num_waves); int cs40l26_fw_swap(struct cs40l26_private *cs40l26, u32 id); @@ -1547,10 +1576,12 @@ extern const u8 cs40l26_pseq_op_sizes[CS40L26_PSEQ_NUM_OPS][2]; extern const u32 cs40l26_attn_q21_2_vals[CS40L26_NUM_PCT_MAP_VALUES]; extern const struct reg_sequence cs40l26_a1_errata[CS40L26_ERRATA_A1_NUM_WRITES]; +extern const char * const cs40l26_dbc_names[CS40L26_DBC_NUM_CONTROLS]; /* sysfs */ extern struct attribute_group cs40l26_dev_attr_group; extern struct attribute_group cs40l26_dev_attr_cal_group; +extern struct attribute_group cs40l26_dev_attr_dbc_group; #endif /* __CS40L26_H__ */ |