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

Commit 196f4eee authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge tag 'asoc-v4.19-rc4' of...

Merge tag 'asoc-v4.19-rc4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v4.19

This is the usual set of small fixes scatterd around various drivers,
plus one fix for DAPM and a UAPI build fix.  There's not a huge amount
that stands out here relative to anything else.
parents c3b55e2e 75383f8d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -13432,9 +13432,8 @@ F: drivers/i2c/busses/i2c-synquacer.c
F:	Documentation/devicetree/bindings/i2c/i2c-synquacer.txt

SOCIONEXT UNIPHIER SOUND DRIVER
M:	Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
S:	Maintained
S:	Orphan
F:	sound/soc/uniphier/

SOEKRIS NET48XX LED SUPPORT
+1 −0
Original line number Diff line number Diff line
@@ -412,6 +412,7 @@ void snd_hdac_bus_init_cmd_io(struct hdac_bus *bus);
void snd_hdac_bus_stop_cmd_io(struct hdac_bus *bus);
void snd_hdac_bus_enter_link_reset(struct hdac_bus *bus);
void snd_hdac_bus_exit_link_reset(struct hdac_bus *bus);
int snd_hdac_bus_reset_link(struct hdac_bus *bus, bool full_reset);

void snd_hdac_bus_update_rirb(struct hdac_bus *bus);
int snd_hdac_bus_handle_stream_irq(struct hdac_bus *bus, unsigned int status,
+1 −0
Original line number Diff line number Diff line
@@ -407,6 +407,7 @@ int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm,
int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card);
void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card);
int snd_soc_dapm_new_pcm(struct snd_soc_card *card,
			 struct snd_soc_pcm_runtime *rtd,
			 const struct snd_soc_pcm_stream *params,
			 unsigned int num_params,
			 struct snd_soc_dapm_widget *source,
+54 −52
Original line number Diff line number Diff line
@@ -10,6 +10,8 @@
#ifndef __HDA_TPLG_INTERFACE_H__
#define __HDA_TPLG_INTERFACE_H__

#include <linux/types.h>

/*
 * Default types range from 0~12. type can range from 0 to 0xff
 * SST types start at higher to avoid any overlapping in future
@@ -143,10 +145,10 @@ enum skl_module_param_type {
};

struct skl_dfw_algo_data {
	u32 set_params:2;
	u32 rsvd:30;
	u32 param_id;
	u32 max;
	__u32 set_params:2;
	__u32 rsvd:30;
	__u32 param_id;
	__u32 max;
	char params[0];
} __packed;

@@ -163,68 +165,68 @@ enum skl_tuple_type {
/* v4 configuration data */

struct skl_dfw_v4_module_pin {
	u16 module_id;
	u16 instance_id;
	__u16 module_id;
	__u16 instance_id;
} __packed;

struct skl_dfw_v4_module_fmt {
	u32 channels;
	u32 freq;
	u32 bit_depth;
	u32 valid_bit_depth;
	u32 ch_cfg;
	u32 interleaving_style;
	u32 sample_type;
	u32 ch_map;
	__u32 channels;
	__u32 freq;
	__u32 bit_depth;
	__u32 valid_bit_depth;
	__u32 ch_cfg;
	__u32 interleaving_style;
	__u32 sample_type;
	__u32 ch_map;
} __packed;

struct skl_dfw_v4_module_caps {
	u32 set_params:2;
	u32 rsvd:30;
	u32 param_id;
	u32 caps_size;
	u32 caps[HDA_SST_CFG_MAX];
	__u32 set_params:2;
	__u32 rsvd:30;
	__u32 param_id;
	__u32 caps_size;
	__u32 caps[HDA_SST_CFG_MAX];
} __packed;

struct skl_dfw_v4_pipe {
	u8 pipe_id;
	u8 pipe_priority;
	u16 conn_type:4;
	u16 rsvd:4;
	u16 memory_pages:8;
	__u8 pipe_id;
	__u8 pipe_priority;
	__u16 conn_type:4;
	__u16 rsvd:4;
	__u16 memory_pages:8;
} __packed;

struct skl_dfw_v4_module {
	char uuid[SKL_UUID_STR_SZ];

	u16 module_id;
	u16 instance_id;
	u32 max_mcps;
	u32 mem_pages;
	u32 obs;
	u32 ibs;
	u32 vbus_id;

	u32 max_in_queue:8;
	u32 max_out_queue:8;
	u32 time_slot:8;
	u32 core_id:4;
	u32 rsvd1:4;

	u32 module_type:8;
	u32 conn_type:4;
	u32 dev_type:4;
	u32 hw_conn_type:4;
	u32 rsvd2:12;

	u32 params_fixup:8;
	u32 converter:8;
	u32 input_pin_type:1;
	u32 output_pin_type:1;
	u32 is_dynamic_in_pin:1;
	u32 is_dynamic_out_pin:1;
	u32 is_loadable:1;
	u32 rsvd3:11;
	__u16 module_id;
	__u16 instance_id;
	__u32 max_mcps;
	__u32 mem_pages;
	__u32 obs;
	__u32 ibs;
	__u32 vbus_id;

	__u32 max_in_queue:8;
	__u32 max_out_queue:8;
	__u32 time_slot:8;
	__u32 core_id:4;
	__u32 rsvd1:4;

	__u32 module_type:8;
	__u32 conn_type:4;
	__u32 dev_type:4;
	__u32 hw_conn_type:4;
	__u32 rsvd2:12;

	__u32 params_fixup:8;
	__u32 converter:8;
	__u32 input_pin_type:1;
	__u32 output_pin_type:1;
	__u32 is_dynamic_in_pin:1;
	__u32 is_dynamic_out_pin:1;
	__u32 is_loadable:1;
	__u32 rsvd3:11;

	struct skl_dfw_v4_pipe pipe;
	struct skl_dfw_v4_module_fmt in_fmt[MAX_IN_QUEUE];
+10 −5
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ static void azx_clear_corbrp(struct hdac_bus *bus)
 */
void snd_hdac_bus_init_cmd_io(struct hdac_bus *bus)
{
	WARN_ON_ONCE(!bus->rb.area);

	spin_lock_irq(&bus->reg_lock);
	/* CORB set up */
	bus->corb.addr = bus->rb.addr;
@@ -383,7 +385,7 @@ void snd_hdac_bus_exit_link_reset(struct hdac_bus *bus)
EXPORT_SYMBOL_GPL(snd_hdac_bus_exit_link_reset);

/* reset codec link */
static int azx_reset(struct hdac_bus *bus, bool full_reset)
int snd_hdac_bus_reset_link(struct hdac_bus *bus, bool full_reset)
{
	if (!full_reset)
		goto skip_reset;
@@ -408,7 +410,7 @@ static int azx_reset(struct hdac_bus *bus, bool full_reset)
 skip_reset:
	/* check to see if controller is ready */
	if (!snd_hdac_chip_readb(bus, GCTL)) {
		dev_dbg(bus->dev, "azx_reset: controller not ready!\n");
		dev_dbg(bus->dev, "controller not ready!\n");
		return -EBUSY;
	}

@@ -423,6 +425,7 @@ static int azx_reset(struct hdac_bus *bus, bool full_reset)

	return 0;
}
EXPORT_SYMBOL_GPL(snd_hdac_bus_reset_link);

/* enable interrupts */
static void azx_int_enable(struct hdac_bus *bus)
@@ -477,15 +480,17 @@ bool snd_hdac_bus_init_chip(struct hdac_bus *bus, bool full_reset)
		return false;

	/* reset controller */
	azx_reset(bus, full_reset);
	snd_hdac_bus_reset_link(bus, full_reset);

	/* initialize interrupts */
	/* clear interrupts */
	azx_int_clear(bus);
	azx_int_enable(bus);

	/* initialize the codec command I/O */
	snd_hdac_bus_init_cmd_io(bus);

	/* enable interrupts after CORB/RIRB buffers are initialized above */
	azx_int_enable(bus);

	/* program the position buffer */
	if (bus->use_posbuf && bus->posbuf.addr) {
		snd_hdac_chip_writel(bus, DPLBASE, (u32)bus->posbuf.addr);
Loading