linux/sound/pci/hda/patch_si3054.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Universal Interface for Intel High Definition Audio Codec
 *
 * HD audio interface patch for Silicon Labs 3054/5 modem codec
 *
 * Copyright (c) 2005 Sasha Khapyorsky <[email protected]>
 *                    Takashi Iwai <[email protected]>
 */

#include <linux/init.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <sound/core.h>
#include <sound/hda_codec.h>
#include "hda_local.h"

/* si3054 verbs */
#define SI3054_VERB_READ_NODE
#define SI3054_VERB_WRITE_NODE

/* si3054 nodes (registers) */
#define SI3054_EXTENDED_MID
#define SI3054_LINE_RATE
#define SI3054_LINE_LEVEL
#define SI3054_GPIO_CFG
#define SI3054_GPIO_POLARITY
#define SI3054_GPIO_STICKY
#define SI3054_GPIO_WAKEUP
#define SI3054_GPIO_STATUS
#define SI3054_GPIO_CONTROL
#define SI3054_MISC_AFE
#define SI3054_CHIPID
#define SI3054_LINE_CFG1
#define SI3054_LINE_STATUS
#define SI3054_DC_TERMINATION
#define SI3054_LINE_CONFIG
#define SI3054_CALLPROG_ATT
#define SI3054_SQ_CONTROL
#define SI3054_MISC_CONTROL
#define SI3054_RING_CTRL1
#define SI3054_RING_CTRL2

/* extended MID */
#define SI3054_MEI_READY

/* line level */
#define SI3054_ATAG_MASK
#define SI3054_DTAG_MASK

/* GPIO bits */
#define SI3054_GPIO_OH
#define SI3054_GPIO_CID

/* chipid and revisions */
#define SI3054_CHIPID_CODEC_REV_MASK
#define SI3054_CHIPID_DAA_REV_MASK
#define SI3054_CHIPID_INTERNATIONAL
#define SI3054_CHIPID_DAA_ID
#define SI3054_CHIPID_CODEC_ID

/* si3054 codec registers (nodes) access macros */
#define GET_REG(codec,reg)
#define SET_REG(codec,reg,val)
#define SET_REG_CACHE(codec,reg,val)


struct si3054_spec {};


/*
 * Modem mixer
 */

#define PRIVATE_VALUE(reg,mask)
#define PRIVATE_REG(val)
#define PRIVATE_MASK(val)

#define si3054_switch_info

static int si3054_switch_get(struct snd_kcontrol *kcontrol,
		               struct snd_ctl_elem_value *uvalue)
{}

static int si3054_switch_put(struct snd_kcontrol *kcontrol,
		               struct snd_ctl_elem_value *uvalue)
{}

#define SI3054_KCONTROL(kname,reg,mask)
		

static const struct snd_kcontrol_new si3054_modem_mixer[] =;

static int si3054_build_controls(struct hda_codec *codec)
{}


/*
 * PCM callbacks
 */

static int si3054_pcm_prepare(struct hda_pcm_stream *hinfo,
			      struct hda_codec *codec,
			      unsigned int stream_tag,
			      unsigned int format,
			      struct snd_pcm_substream *substream)
{}

static int si3054_pcm_open(struct hda_pcm_stream *hinfo,
			   struct hda_codec *codec,
			    struct snd_pcm_substream *substream)
{}


static const struct hda_pcm_stream si3054_pcm =;


static int si3054_build_pcms(struct hda_codec *codec)
{}


/*
 * Init part
 */

static int si3054_init(struct hda_codec *codec)
{}

static void si3054_free(struct hda_codec *codec)
{}


/*
 */

static const struct hda_codec_ops si3054_patch_ops =;

static int patch_si3054(struct hda_codec *codec)
{}

/*
 * patch entries
 */
static const struct hda_device_id snd_hda_id_si3054[] =;
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_si3054);

MODULE_LICENSE();
MODULE_DESCRIPTION();

static struct hda_codec_driver si3054_driver =;

module_hda_codec_driver();