linux/sound/soc/codecs/cs40l50-codec.c

// SPDX-License-Identifier: GPL-2.0
//
// CS40L50 Advanced Haptic Driver with waveform memory,
// integrated DSP, and closed-loop algorithms
//
// Copyright 2024 Cirrus Logic, Inc.
//
// Author: James Ogletree <[email protected]>

#include <linux/bitfield.h>
#include <linux/mfd/cs40l50.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>

#define CS40L50_REFCLK_INPUT
#define CS40L50_ASP_CONTROL2
#define CS40L50_ASP_DATA_CONTROL5

/* PLL Config */
#define CS40L50_PLL_REFCLK_BCLK
#define CS40L50_PLL_REFCLK_MCLK
#define CS40L50_PLL_REEFCLK_MCLK_CFG
#define CS40L50_PLL_REFCLK_LOOP_MASK
#define CS40L50_PLL_REFCLK_OPEN_LOOP
#define CS40L50_PLL_REFCLK_CLOSED_LOOP
#define CS40L50_PLL_REFCLK_LOOP_SHIFT
#define CS40L50_PLL_REFCLK_FREQ_MASK
#define CS40L50_PLL_REFCLK_FREQ_SHIFT
#define CS40L50_PLL_REFCLK_SEL_MASK
#define CS40L50_BCLK_RATIO_DEFAULT

/* ASP Config */
#define CS40L50_ASP_RX_WIDTH_SHIFT
#define CS40L50_ASP_RX_WIDTH_MASK
#define CS40L50_ASP_RX_WL_MASK
#define CS40L50_ASP_FSYNC_INV_MASK
#define CS40L50_ASP_BCLK_INV_MASK
#define CS40L50_ASP_FMT_MASK
#define CS40L50_ASP_FMT_I2S

struct cs40l50_pll_config {};

struct cs40l50_codec {};

static const struct cs40l50_pll_config cs40l50_pll_cfg[] =;

static int cs40l50_get_clk_config(const unsigned int freq, unsigned int *cfg)
{}

static int cs40l50_swap_ext_clk(struct cs40l50_codec *codec, const unsigned int clk_src)
{}

static int cs40l50_clk_en(struct snd_soc_dapm_widget *w,
			  struct snd_kcontrol *kcontrol,
			  int event)
{}

static const struct snd_soc_dapm_widget cs40l50_dapm_widgets[] =;

static const struct snd_soc_dapm_route cs40l50_dapm_routes[] =;

static int cs40l50_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
{}

static int cs40l50_hw_params(struct snd_pcm_substream *substream,
			     struct snd_pcm_hw_params *params,
			     struct snd_soc_dai *dai)
{}

static int cs40l50_set_dai_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio)
{}

static const struct snd_soc_dai_ops cs40l50_dai_ops =;

static struct snd_soc_dai_driver cs40l50_dai[] =;

static int cs40l50_codec_probe(struct snd_soc_component *component)
{}

static const struct snd_soc_component_driver soc_codec_dev_cs40l50 =;

static int cs40l50_codec_driver_probe(struct platform_device *pdev)
{}

static const struct platform_device_id cs40l50_id[] =;
MODULE_DEVICE_TABLE(platform, cs40l50_id);

static struct platform_driver cs40l50_codec_driver =;
module_platform_driver();

MODULE_DESCRIPTION();
MODULE_AUTHOR();
MODULE_LICENSE();