/* SPDX-License-Identifier: GPL-2.0 * * CS35L41 ALSA HDA audio driver * * Copyright 2021 Cirrus Logic, Inc. * * Author: Lucas Tanure */ #ifndef __CS35L41_HDA_H__ #define __CS35L41_HDA_H__ #include #include #include #include enum cs35l41_hda_spk_pos { CS35l41_LEFT, CS35l41_RIGHT, }; enum cs35l41_hda_gpio_function { CS35L41_NOT_USED, CS35l41_VSPK_SWITCH, CS35L41_INTERRUPT, CS35l41_SYNC, }; struct cs35l41_hda_reg_sequence { const struct reg_sequence *probe; unsigned int num_probe; const struct reg_sequence *open; unsigned int num_open; const struct reg_sequence *prepare; unsigned int num_prepare; const struct reg_sequence *cleanup; unsigned int num_cleanup; const struct reg_sequence *close; unsigned int num_close; }; struct cs35l41_hda_hw_config { unsigned int spk_pos; unsigned int gpio1_func; unsigned int gpio2_func; int bst_ind; int bst_ipk; int bst_cap; }; struct cs35l41_hda { struct device *dev; struct regmap *regmap; struct gpio_desc *reset_gpio; const struct cs35l41_hda_reg_sequence *reg_seq; int irq; int index; /* Don't put the AMP in reset of VSPK can not be turned off */ bool vspk_always_on; }; int cs35l41_hda_probe(struct device *dev, const char *device_name, int id, int irq, struct regmap *regmap); void cs35l41_hda_remove(struct device *dev); #endif /*__CS35L41_HDA_H__*/