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