diff options
| author | Mark Brown <broonie@kernel.org> | 2023-07-24 18:42:26 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2023-07-24 18:42:26 +0100 |
| commit | 85d12eda2382cd5b93eed720b5a08f39d42cfef4 (patch) | |
| tree | 84c5ae564846b265f403a582a8c4f083ed7fb132 /include | |
| parent | f54e3474507427bf272bcc79c7c248c7f55d45b4 (diff) | |
| parent | 73cfbfa9caea8eda54b4c6e49a9555533660aa1e (diff) | |
ALSA: hda: Adding support for CS35L56 on HDA
Merge series from Richard Fitzgerald <rf@opensource.cirrus.com>:
This set of patches adds support for using the CS35L56 boosted smart
amplifier on HDA systems. In these systems the CS35L56 audio is
routed through a HDA-to-I2S bridge codec.
This doesn't include the changes to the Realtek driver to actually hook
up the CS35L56 driver, because we don't yet have the QUIRK IDs to
associate it with. But we want to publish the driver now so that it is
available for bringing up hardware with the CS35L56.
The first 9 patches are moving code out of the ASoC driver and into the
shared library so that it can be shared with the HDA driver.
Patch #10 fixes missing #includes in the HDA headers so that the CS35L56
driver doesn't have to #include headers that it doesn't use.
Diffstat (limited to 'include')
| -rw-r--r-- | include/sound/cs35l56.h | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/include/sound/cs35l56.h b/include/sound/cs35l56.h index ec672daa36cf..3950322bf3cb 100644 --- a/include/sound/cs35l56.h +++ b/include/sound/cs35l56.h @@ -252,15 +252,40 @@ #define CS35L56_NUM_BULK_SUPPLIES 3 #define CS35L56_NUM_DSP_REGIONS 5 +struct cs35l56_base { + struct device *dev; + struct regmap *regmap; + int irq; + struct mutex irq_lock; + u8 rev; + bool init_done; + bool fw_patched; + bool secured; + bool can_hibernate; + struct gpio_desc *reset_gpio; +}; + extern struct regmap_config cs35l56_regmap_i2c; extern struct regmap_config cs35l56_regmap_spi; extern struct regmap_config cs35l56_regmap_sdw; -extern const struct cs_dsp_region cs35l56_dsp1_regions[CS35L56_NUM_DSP_REGIONS]; extern const char * const cs35l56_tx_input_texts[CS35L56_NUM_INPUT_SRC]; extern const unsigned int cs35l56_tx_input_values[CS35L56_NUM_INPUT_SRC]; -int cs35l56_set_patch(struct regmap *regmap); +int cs35l56_set_patch(struct cs35l56_base *cs35l56_base); +int cs35l56_mbox_send(struct cs35l56_base *cs35l56_base, unsigned int command); +int cs35l56_firmware_shutdown(struct cs35l56_base *cs35l56_base); +int cs35l56_wait_for_firmware_boot(struct cs35l56_base *cs35l56_base); +void cs35l56_wait_control_port_ready(void); +void cs35l56_wait_min_reset_pulse(void); +void cs35l56_system_reset(struct cs35l56_base *cs35l56_base, bool is_soundwire); +int cs35l56_irq_request(struct cs35l56_base *cs35l56_base, int irq); +irqreturn_t cs35l56_irq(int irq, void *data); +int cs35l56_is_fw_reload_needed(struct cs35l56_base *cs35l56_base); +int cs35l56_runtime_suspend_common(struct cs35l56_base *cs35l56_base); +int cs35l56_runtime_resume_common(struct cs35l56_base *cs35l56_base, bool is_soundwire); +void cs35l56_init_cs_dsp(struct cs35l56_base *cs35l56_base, struct cs_dsp *cs_dsp); +int cs35l56_hw_init(struct cs35l56_base *cs35l56_base); int cs35l56_get_bclk_freq_id(unsigned int freq); void cs35l56_fill_supply_names(struct regulator_bulk_data *data); |
