Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b2f32cc authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'asoc/topic/intel' into asoc-next

parents b7f08d29 fe09dd8e
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -55,6 +55,7 @@ enum sst_audio_device_id_mrfld {
	PIPE_MEDIA0_IN = 0x8F,
	PIPE_MEDIA0_IN = 0x8F,
	PIPE_MEDIA1_IN = 0x90,
	PIPE_MEDIA1_IN = 0x90,
	PIPE_MEDIA2_IN = 0x91,
	PIPE_MEDIA2_IN = 0x91,
	PIPE_MEDIA3_IN = 0x9C,
	PIPE_RSVD = 0xFF,
	PIPE_RSVD = 0xFF,
};
};


+9 −0
Original line number Original line Diff line number Diff line
@@ -233,6 +233,15 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 };
#define AZX_MLCTL_SPA			(1<<16)
#define AZX_MLCTL_SPA			(1<<16)
#define AZX_MLCTL_CPA			23
#define AZX_MLCTL_CPA			23



/* registers for DMA Resume Capability Structure */
#define AZX_DRSM_CAP_ID			0x5
#define AZX_REG_DRSM_CTL		0x4
/* Base used to calculate the iterating register offset */
#define AZX_DRSM_BASE			0x08
/* Interval used to calculate the iterating register offset */
#define AZX_DRSM_INTERVAL		0x08

/*
/*
 * helpers to read the stream position
 * helpers to read the stream position
 */
 */
+21 −0
Original line number Original line Diff line number Diff line
@@ -12,6 +12,7 @@
 * @spbcap: SPIB capabilities pointer
 * @spbcap: SPIB capabilities pointer
 * @mlcap: MultiLink capabilities pointer
 * @mlcap: MultiLink capabilities pointer
 * @gtscap: gts capabilities pointer
 * @gtscap: gts capabilities pointer
 * @drsmcap: dma resume capabilities pointer
 * @hlink_list: link list of HDA links
 * @hlink_list: link list of HDA links
 */
 */
struct hdac_ext_bus {
struct hdac_ext_bus {
@@ -23,6 +24,7 @@ struct hdac_ext_bus {
	void __iomem *spbcap;
	void __iomem *spbcap;
	void __iomem *mlcap;
	void __iomem *mlcap;
	void __iomem *gtscap;
	void __iomem *gtscap;
	void __iomem *drsmcap;


	struct list_head hlink_list;
	struct list_head hlink_list;
};
};
@@ -72,6 +74,9 @@ enum hdac_ext_stream_type {
 * @pplc_addr: processing pipe link stream pointer
 * @pplc_addr: processing pipe link stream pointer
 * @spib_addr: software position in buffers stream pointer
 * @spib_addr: software position in buffers stream pointer
 * @fifo_addr: software position Max fifos stream pointer
 * @fifo_addr: software position Max fifos stream pointer
 * @dpibr_addr: DMA position in buffer resume pointer
 * @dpib: DMA position in buffer
 * @lpib: Linear position in buffer
 * @decoupled: stream host and link is decoupled
 * @decoupled: stream host and link is decoupled
 * @link_locked: link is locked
 * @link_locked: link is locked
 * @link_prepared: link is prepared
 * @link_prepared: link is prepared
@@ -86,6 +91,10 @@ struct hdac_ext_stream {
	void __iomem *spib_addr;
	void __iomem *spib_addr;
	void __iomem *fifo_addr;
	void __iomem *fifo_addr;


	void __iomem *dpibr_addr;

	u32 dpib;
	u32 lpib;
	bool decoupled:1;
	bool decoupled:1;
	bool link_locked:1;
	bool link_locked:1;
	bool link_prepared;
	bool link_prepared;
@@ -116,6 +125,11 @@ int snd_hdac_ext_stream_set_spib(struct hdac_ext_bus *ebus,
				 struct hdac_ext_stream *stream, u32 value);
				 struct hdac_ext_stream *stream, u32 value);
int snd_hdac_ext_stream_get_spbmaxfifo(struct hdac_ext_bus *ebus,
int snd_hdac_ext_stream_get_spbmaxfifo(struct hdac_ext_bus *ebus,
				 struct hdac_ext_stream *stream);
				 struct hdac_ext_stream *stream);
void snd_hdac_ext_stream_drsm_enable(struct hdac_ext_bus *ebus,
				bool enable, int index);
int snd_hdac_ext_stream_set_dpibr(struct hdac_ext_bus *ebus,
				struct hdac_ext_stream *stream, u32 value);
int snd_hdac_ext_stream_set_lpib(struct hdac_ext_stream *stream, u32 value);


void snd_hdac_ext_link_stream_start(struct hdac_ext_stream *hstream);
void snd_hdac_ext_link_stream_start(struct hdac_ext_stream *hstream);
void snd_hdac_ext_link_stream_clear(struct hdac_ext_stream *hstream);
void snd_hdac_ext_link_stream_clear(struct hdac_ext_stream *hstream);
@@ -133,6 +147,7 @@ struct hdac_ext_link {


int snd_hdac_ext_bus_link_power_up(struct hdac_ext_link *link);
int snd_hdac_ext_bus_link_power_up(struct hdac_ext_link *link);
int snd_hdac_ext_bus_link_power_down(struct hdac_ext_link *link);
int snd_hdac_ext_bus_link_power_down(struct hdac_ext_link *link);
int snd_hdac_ext_bus_link_power_up_all(struct hdac_ext_bus *ebus);
int snd_hdac_ext_bus_link_power_down_all(struct hdac_ext_bus *ebus);
int snd_hdac_ext_bus_link_power_down_all(struct hdac_ext_bus *ebus);
void snd_hdac_ext_link_set_stream_id(struct hdac_ext_link *link,
void snd_hdac_ext_link_set_stream_id(struct hdac_ext_link *link,
				 int stream);
				 int stream);
@@ -186,9 +201,15 @@ struct hdac_ext_device {
	/* codec ops */
	/* codec ops */
	struct hdac_ext_codec_ops ops;
	struct hdac_ext_codec_ops ops;


	struct snd_card *card;
	void *scodec;
	void *private_data;
	void *private_data;
};
};


struct hdac_ext_dma_params {
	u32 format;
	u8 stream_tag;
};
#define to_ehdac_device(dev) (container_of((dev), \
#define to_ehdac_device(dev) (container_of((dev), \
				 struct hdac_ext_device, hdac))
				 struct hdac_ext_device, hdac))
/*
/*
+4 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,9 @@ struct device;
#define SND_SOC_DAPM_SIGGEN(wname) \
#define SND_SOC_DAPM_SIGGEN(wname) \
{	.id = snd_soc_dapm_siggen, .name = wname, .kcontrol_news = NULL, \
{	.id = snd_soc_dapm_siggen, .name = wname, .kcontrol_news = NULL, \
	.num_kcontrols = 0, .reg = SND_SOC_NOPM }
	.num_kcontrols = 0, .reg = SND_SOC_NOPM }
#define SND_SOC_DAPM_SINK(wname) \
{	.id = snd_soc_dapm_sink, .name = wname, .kcontrol_news = NULL, \
	.num_kcontrols = 0, .reg = SND_SOC_NOPM }
#define SND_SOC_DAPM_INPUT(wname) \
#define SND_SOC_DAPM_INPUT(wname) \
{	.id = snd_soc_dapm_input, .name = wname, .kcontrol_news = NULL, \
{	.id = snd_soc_dapm_input, .name = wname, .kcontrol_news = NULL, \
	.num_kcontrols = 0, .reg = SND_SOC_NOPM }
	.num_kcontrols = 0, .reg = SND_SOC_NOPM }
@@ -485,6 +488,7 @@ enum snd_soc_dapm_type {
	snd_soc_dapm_aif_in,		/* audio interface input */
	snd_soc_dapm_aif_in,		/* audio interface input */
	snd_soc_dapm_aif_out,		/* audio interface output */
	snd_soc_dapm_aif_out,		/* audio interface output */
	snd_soc_dapm_siggen,		/* signal generator */
	snd_soc_dapm_siggen,		/* signal generator */
	snd_soc_dapm_sink,
	snd_soc_dapm_dai_in,		/* link to DAI structure */
	snd_soc_dapm_dai_in,		/* link to DAI structure */
	snd_soc_dapm_dai_out,
	snd_soc_dapm_dai_out,
	snd_soc_dapm_dai_link,		/* link between two DAI structures */
	snd_soc_dapm_dai_link,		/* link between two DAI structures */
+4 −1
Original line number Original line Diff line number Diff line
@@ -1106,7 +1106,7 @@ struct snd_soc_card {
	/* CPU <--> Codec DAI links  */
	/* CPU <--> Codec DAI links  */
	struct snd_soc_dai_link *dai_link;
	struct snd_soc_dai_link *dai_link;
	int num_links;
	int num_links;
	struct snd_soc_pcm_runtime *rtd;
	struct list_head rtd_list;
	int num_rtd;
	int num_rtd;


	/* optional codec specific configuration */
	/* optional codec specific configuration */
@@ -1201,6 +1201,9 @@ struct snd_soc_pcm_runtime {
	struct dentry *debugfs_dpcm_root;
	struct dentry *debugfs_dpcm_root;
	struct dentry *debugfs_dpcm_state;
	struct dentry *debugfs_dpcm_state;
#endif
#endif

	unsigned int num; /* 0-based and monotonic increasing */
	struct list_head list; /* rtd list of the soc card */
};
};


/* mixer control */
/* mixer control */
Loading