linux/sound/soc/codecs/cs35l41.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0
   2 *
   3 * cs35l41.h -- CS35L41 ALSA SoC audio driver
   4 *
   5 * Copyright 2017-2021 Cirrus Logic, Inc.
   6 *
   7 * Author: David Rhodes <david.rhodes@cirrus.com>
   8 */
   9
  10#ifndef __CS35L41_H__
  11#define __CS35L41_H__
  12
  13#include <linux/gpio/consumer.h>
  14#include <linux/regulator/consumer.h>
  15#include <linux/firmware.h>
  16#include <sound/core.h>
  17#include <sound/cs35l41.h>
  18
  19#include "wm_adsp.h"
  20
  21#define CS35L41_RX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
  22#define CS35L41_TX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
  23
  24extern const struct dev_pm_ops cs35l41_pm_ops;
  25
  26enum cs35l41_cspl_mbox_status {
  27        CSPL_MBOX_STS_RUNNING = 0,
  28        CSPL_MBOX_STS_PAUSED = 1,
  29        CSPL_MBOX_STS_RDY_FOR_REINIT = 2,
  30};
  31
  32enum cs35l41_cspl_mbox_cmd {
  33        CSPL_MBOX_CMD_NONE = 0,
  34        CSPL_MBOX_CMD_PAUSE = 1,
  35        CSPL_MBOX_CMD_RESUME = 2,
  36        CSPL_MBOX_CMD_REINIT = 3,
  37        CSPL_MBOX_CMD_STOP_PRE_REINIT = 4,
  38        CSPL_MBOX_CMD_HIBERNATE = 5,
  39        CSPL_MBOX_CMD_OUT_OF_HIBERNATE = 6,
  40        CSPL_MBOX_CMD_UNKNOWN_CMD = -1,
  41        CSPL_MBOX_CMD_INVALID_SEQUENCE = -2,
  42};
  43
  44struct cs35l41_private {
  45        struct wm_adsp dsp; /* needs to be first member */
  46        struct snd_soc_codec *codec;
  47        struct cs35l41_platform_data pdata;
  48        struct device *dev;
  49        struct regmap *regmap;
  50        struct regulator_bulk_data supplies[CS35L41_NUM_SUPPLIES];
  51        int irq;
  52        /* GPIO for /RST */
  53        struct gpio_desc *reset_gpio;
  54};
  55
  56int cs35l41_probe(struct cs35l41_private *cs35l41,
  57                  struct cs35l41_platform_data *pdata);
  58void cs35l41_remove(struct cs35l41_private *cs35l41);
  59
  60#endif /*__CS35L41_H__*/
  61