46 lines · c
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_H8#define _MESON_AXG_TDM_FORMATTER_H9 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 */46