linux/sound/soc/meson/axg-tdm-formatter.h
<<
>>
Prefs
   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 */
  46