linux/sound/soc/codecs/wcd-clsh-v2.h

/* SPDX-License-Identifier: GPL-2.0 */

#ifndef _WCD_CLSH_V2_H_
#define _WCD_CLSH_V2_H_
#include <sound/soc.h>

enum wcd_clsh_event {};

/*
 * Basic states for Class H state machine.
 * represented as a bit mask within a u8 data type
 * bit 0: EAR mode
 * bit 1: HPH Left mode
 * bit 2: HPH Right mode
 * bit 3: Lineout mode
 */
#define WCD_CLSH_STATE_IDLE
#define WCD_CLSH_STATE_EAR
#define WCD_CLSH_STATE_HPHL
#define WCD_CLSH_STATE_HPHR
#define WCD_CLSH_STATE_LO
#define WCD_CLSH_STATE_AUX
#define WCD_CLSH_STATE_MAX
#define WCD_CLSH_V3_STATE_MAX
#define NUM_CLSH_STATES_V2
#define NUM_CLSH_STATES_V3

enum wcd_clsh_mode {};

enum wcd_codec_version {};
struct wcd_clsh_ctrl;

extern struct wcd_clsh_ctrl *wcd_clsh_ctrl_alloc(
				struct snd_soc_component *comp,
				int version);
extern void wcd_clsh_ctrl_free(struct wcd_clsh_ctrl *ctrl);
extern int wcd_clsh_ctrl_get_state(struct wcd_clsh_ctrl *ctrl);
extern int wcd_clsh_ctrl_set_state(struct wcd_clsh_ctrl *ctrl,
				   enum wcd_clsh_event clsh_event,
				   int nstate,
				   enum wcd_clsh_mode mode);
extern void wcd_clsh_set_hph_mode(struct wcd_clsh_ctrl *ctrl,
				  int mode);

#endif /* _WCD_CLSH_V2_H_ */