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

Commit 815ad862 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge tag 'asoc-v4.4-rc8' of...

Merge tag 'asoc-v4.4-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next

ASoC: Last updates for v4.5

A bunch more updates for v4.5, mainly driver work:

 - More topology API enhancements from Mengdong Lin working towards
   making everything more component based and being able to specify PCM
   links via topology.
 - Large sets driver updates from Cirrus, Intel (mainly more Skylake
   support) and Renesas.
 - New driver for AMD ACP
 - Rename PCM1792a driver to be generic pcm179x
parents 56f27013 d0021d3b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
Texas Instruments pcm1792a DT bindings
Texas Instruments pcm179x DT bindings

This driver supports the SPI bus.

+41 −0
Original line number Diff line number Diff line
RT5651 audio CODEC

This device supports I2C only.

Required properties:

- compatible : "realtek,rt5651".

- reg : The I2C address of the device.

Optional properties:

- realtek,in2-differential
  Boolean. Indicate MIC2 input are differential, rather than single-ended.

- realtek,dmic-en
  Boolean. true if dmic is used.

Pins on the device (for linking into audio routes) for RT5651:

  * DMIC L1
  * DMIC R1
  * IN1P
  * IN2P
  * IN2N
  * IN3P
  * HPOL
  * HPOR
  * LOUTL
  * LOUTR
  * PDML
  * PDMR

Example:

codec: rt5651@1a {
	compatible = "realtek,rt5651";
	reg = <0x1a>;
	realtek,dmic-en = "true";
	realtek,in2-diff = "false";
};
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ struct i2s_platform_data {
	u32 snd_rates;

	#define DW_I2S_QUIRK_COMP_REG_OFFSET	(1 << 0)
	#define DW_I2S_QUIRK_COMP_PARAM1	(1 << 1)
	unsigned int quirks;
	unsigned int i2s_reg_comp1;
	unsigned int i2s_reg_comp2;
+9 −0
Original line number 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_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
 */
+15 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
 * @spbcap: SPIB capabilities pointer
 * @mlcap: MultiLink capabilities pointer
 * @gtscap: gts capabilities pointer
 * @drsmcap: dma resume capabilities pointer
 * @hlink_list: link list of HDA links
 */
struct hdac_ext_bus {
@@ -23,6 +24,7 @@ struct hdac_ext_bus {
	void __iomem *spbcap;
	void __iomem *mlcap;
	void __iomem *gtscap;
	void __iomem *drsmcap;

	struct list_head hlink_list;
};
@@ -72,6 +74,9 @@ enum hdac_ext_stream_type {
 * @pplc_addr: processing pipe link stream pointer
 * @spib_addr: software position in buffers 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
 * @link_locked: link is locked
 * @link_prepared: link is prepared
@@ -86,6 +91,10 @@ struct hdac_ext_stream {
	void __iomem *spib_addr;
	void __iomem *fifo_addr;

	void __iomem *dpibr_addr;

	u32 dpib;
	u32 lpib;
	bool decoupled:1;
	bool link_locked:1;
	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);
int snd_hdac_ext_stream_get_spbmaxfifo(struct hdac_ext_bus *ebus,
				 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_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_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);
void snd_hdac_ext_link_set_stream_id(struct hdac_ext_link *link,
				 int stream);
Loading