forked from Minki/linux
85c25662d1
Up to now cs35l41_hda_remove() returns zero unconditionally. Make it return void instead which makes it easier to see in the callers that there is no error to handle. Also the return value of i2c and spi remove callbacks is ignored anyway. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: Lucas Tanure <tanureal@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220117220055.120955-1-u.kleine-koenig@pengutronix.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
70 lines
1.4 KiB
C
70 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0
|
|
*
|
|
* CS35L41 ALSA HDA audio driver
|
|
*
|
|
* Copyright 2021 Cirrus Logic, Inc.
|
|
*
|
|
* Author: Lucas Tanure <tanureal@opensource.cirrus.com>
|
|
*/
|
|
|
|
#ifndef __CS35L41_HDA_H__
|
|
#define __CS35L41_HDA_H__
|
|
|
|
#include <linux/regulator/consumer.h>
|
|
#include <linux/gpio/consumer.h>
|
|
#include <linux/device.h>
|
|
#include <sound/cs35l41.h>
|
|
|
|
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__*/
|