Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.10.11.
 1/* SPDX-License-Identifier: (GPL-2.0 OR MIT)
 2 *
 3 * Copyright (c) 2018 Baylibre SAS.
 4 * Author: Jerome Brunet <jbrunet@baylibre.com>
 5 */
 6
 7#ifndef _MESON_AXG_TDM_FORMATTER_H
 8#define _MESON_AXG_TDM_FORMATTER_H
 9
10#include "axg-tdm.h"
11
12struct platform_device;
13struct regmap;
14struct snd_soc_dapm_widget;
15struct snd_kcontrol;
16
17struct axg_tdm_formatter_hw {
18	unsigned int skew_offset;
19};
20
21struct axg_tdm_formatter_ops {
22	struct axg_tdm_stream *(*get_stream)(struct snd_soc_dapm_widget *w);
23	void (*enable)(struct regmap *map);
24	void (*disable)(struct regmap *map);
25	int (*prepare)(struct regmap *map,
26		       const struct axg_tdm_formatter_hw *quirks,
27		       struct axg_tdm_stream *ts);
28};
29
30struct axg_tdm_formatter_driver {
31	const struct snd_soc_component_driver *component_drv;
32	const struct regmap_config *regmap_cfg;
33	const struct axg_tdm_formatter_ops *ops;
34	const struct axg_tdm_formatter_hw *quirks;
35};
36
37int axg_tdm_formatter_set_channel_masks(struct regmap *map,
38					struct axg_tdm_stream *ts,
39					unsigned int offset);
40int axg_tdm_formatter_event(struct snd_soc_dapm_widget *w,
41			    struct snd_kcontrol *control,
42			    int event);
43int axg_tdm_formatter_probe(struct platform_device *pdev);
44
45#endif /* _MESON_AXG_TDM_FORMATTER_H */