#include <linux/module.h>
#include <linux/slab.h>
#include <linux/platform_device.h>
#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/component.h>
#include <linux/pm_runtime.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
#include <linux/of.h>
#include <linux/soundwire/sdw.h>
#include <linux/soundwire/sdw_type.h>
#include <linux/soundwire/sdw_registers.h>
#include <linux/regmap.h>
#include <sound/soc.h>
#include <sound/soc-dapm.h>
#include "wcd938x.h"
#define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) …
static const struct wcd938x_sdw_ch_info wcd938x_sdw_rx_ch_info[] = …;
static const struct wcd938x_sdw_ch_info wcd938x_sdw_tx_ch_info[] = …;
static struct sdw_dpn_prop wcd938x_dpn_prop[WCD938X_MAX_SWR_PORTS] = …;
struct device *wcd938x_sdw_device_get(struct device_node *np)
{ … }
EXPORT_SYMBOL_GPL(…);
int wcd938x_swr_get_current_bank(struct sdw_slave *sdev)
{ … }
EXPORT_SYMBOL_GPL(…);
int wcd938x_sdw_hw_params(struct wcd938x_sdw_priv *wcd,
struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params,
struct snd_soc_dai *dai)
{ … }
EXPORT_SYMBOL_GPL(…);
int wcd938x_sdw_free(struct wcd938x_sdw_priv *wcd,
struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{ … }
EXPORT_SYMBOL_GPL(…);
int wcd938x_sdw_set_sdw_stream(struct wcd938x_sdw_priv *wcd,
struct snd_soc_dai *dai,
void *stream, int direction)
{ … }
EXPORT_SYMBOL_GPL(…);
static int wcd9380_update_status(struct sdw_slave *slave,
enum sdw_slave_status status)
{ … }
static int wcd9380_bus_config(struct sdw_slave *slave,
struct sdw_bus_params *params)
{ … }
static int wcd9380_interrupt_callback(struct sdw_slave *slave,
struct sdw_slave_intr_status *status)
{ … }
static const struct reg_default wcd938x_defaults[] = …;
static bool wcd938x_rdwr_register(struct device *dev, unsigned int reg)
{ … }
static bool wcd938x_readonly_register(struct device *dev, unsigned int reg)
{ … }
static bool wcd938x_readable_register(struct device *dev, unsigned int reg)
{ … }
static bool wcd938x_writeable_register(struct device *dev, unsigned int reg)
{ … }
static bool wcd938x_volatile_register(struct device *dev, unsigned int reg)
{ … }
static const struct regmap_config wcd938x_regmap_config = …;
static const struct sdw_slave_ops wcd9380_slave_ops = …;
static int wcd938x_sdw_component_bind(struct device *dev,
struct device *master, void *data)
{ … }
static void wcd938x_sdw_component_unbind(struct device *dev,
struct device *master, void *data)
{ … }
static const struct component_ops wcd938x_sdw_component_ops = …;
static int wcd9380_probe(struct sdw_slave *pdev,
const struct sdw_device_id *id)
{ … }
static int wcd9380_remove(struct sdw_slave *pdev)
{ … }
static const struct sdw_device_id wcd9380_slave_id[] = …;
MODULE_DEVICE_TABLE(sdw, wcd9380_slave_id);
static int __maybe_unused wcd938x_sdw_runtime_suspend(struct device *dev)
{ … }
static int __maybe_unused wcd938x_sdw_runtime_resume(struct device *dev)
{ … }
static const struct dev_pm_ops wcd938x_sdw_pm_ops = …;
static struct sdw_driver wcd9380_codec_driver = …;
module_sdw_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;