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

Commit f0943013 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "The only bulk changes in this request is ABI updates for ASoC topology
  API.  It's a new API that was introduced in 4.2, and we'd like to
  avoid ABI change after the release, so it's taken now.  As there is no
  real in-tree user for this API, it should be fairly safe.

  Other than that, the usual small fixes are found in various drivers:
  ASoC cs4265, rt5645, intel-sst, firewire, oxygen and HD-audio"

* tag 'sound-4.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ASoC: topology: Add private data type and bump ABI version to 3
  ASoC: topology: Add ops support to byte controls UAPI
  ASoC: topology: Update TLV support so we can support more TLV types
  ASoC: topology: add private data to manifest
  ASoC: topology: Add subsequence in topology
  ALSA: hda - one Dell machine needs the headphone white noise fixup
  ALSA: fireworks/firewire-lib: add support for recent firmware quirk
  Revert "ALSA: fireworks: add support for AudioFire2 quirk"
  ASoC: topology: fix typo in soc_tplg_kcontrol_bind_io()
  ALSA: HDA: Dont check return for snd_hdac_chip_readl
  ALSA: HDA: Fix stream assignment for host in decoupled mode
  ASoC: rt5645: Fix lost pin setting for DMIC1
  ALSA: oxygen: Fix logical-not-parentheses warning
  ASoC: Intel: sst_byt: fix initialize 'NULL device *' issue
  ASoC: Intel: haswell: fix initialize 'NULL device *' issue
  ASoC: cs4265: Fix setting dai format for Left/Right Justified
parents ea8dc1ab 6ac7ada2
Loading
Loading
Loading
Loading
+24 −11
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@
#define SND_SOC_TPLG_NUM_TEXTS		16

/* ABI version */
#define SND_SOC_TPLG_ABI_VERSION	0x2
#define SND_SOC_TPLG_ABI_VERSION	0x3

/* Max size of TLV data */
#define SND_SOC_TPLG_TLV_SIZE		32
@@ -97,7 +97,8 @@
#define SND_SOC_TPLG_TYPE_PCM		7
#define SND_SOC_TPLG_TYPE_MANIFEST	8
#define SND_SOC_TPLG_TYPE_CODEC_LINK	9
#define SND_SOC_TPLG_TYPE_MAX	SND_SOC_TPLG_TYPE_CODEC_LINK
#define SND_SOC_TPLG_TYPE_PDATA		10
#define SND_SOC_TPLG_TYPE_MAX	SND_SOC_TPLG_TYPE_PDATA

/* vendor block IDs - please add new vendor types to end */
#define SND_SOC_TPLG_TYPE_VENDOR_FW	1000
@@ -137,11 +138,19 @@ struct snd_soc_tplg_private {
/*
 * Kcontrol TLV data.
 */
struct snd_soc_tplg_tlv_dbscale {
	__le32 min;
	__le32 step;
	__le32 mute;
} __attribute__((packed));

struct snd_soc_tplg_ctl_tlv {
	__le32 size;	/* in bytes aligned to 4 */
	__le32 numid;	/* control element numeric identification */
	__le32 count;	/* number of elem in data array */
	__le32 size;	/* in bytes of this structure */
	__le32 type;	/* SNDRV_CTL_TLVT_*, type of TLV */
	union {
		__le32 data[SND_SOC_TPLG_TLV_SIZE];
		struct snd_soc_tplg_tlv_dbscale scale;
	};
} __attribute__((packed));

/*
@@ -155,9 +164,11 @@ struct snd_soc_tplg_channel {
} __attribute__((packed));

/*
 * Kcontrol Operations IDs
 * Genericl Operations IDs, for binding Kcontrol or Bytes ext ops
 * Kcontrol ops need get/put/info.
 * Bytes ext ops need get/put.
 */
struct snd_soc_tplg_kcontrol_ops_id {
struct snd_soc_tplg_io_ops {
	__le32 get;
	__le32 put;
	__le32 info;
@@ -171,8 +182,8 @@ struct snd_soc_tplg_ctl_hdr {
	__le32 type;
	char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
	__le32 access;
	struct snd_soc_tplg_kcontrol_ops_id ops;
	__le32 tlv_size;	/* non zero means control has TLV data */
	struct snd_soc_tplg_io_ops ops;
	struct snd_soc_tplg_ctl_tlv tlv;
} __attribute__((packed));

/*
@@ -238,6 +249,7 @@ struct snd_soc_tplg_manifest {
	__le32 graph_elems;	/* number of graph elements */
	__le32 dai_elems;	/* number of DAI elements */
	__le32 dai_link_elems;	/* number of DAI link elements */
	struct snd_soc_tplg_private priv;
} __attribute__((packed));

/*
@@ -259,7 +271,6 @@ struct snd_soc_tplg_mixer_control {
	__le32 invert;
	__le32 num_channels;
	struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN];
	struct snd_soc_tplg_ctl_tlv tlv;
	struct snd_soc_tplg_private priv;
} __attribute__((packed));

@@ -303,6 +314,7 @@ struct snd_soc_tplg_bytes_control {
	__le32 mask;
	__le32 base;
	__le32 num_regs;
	struct snd_soc_tplg_io_ops ext_ops;
	struct snd_soc_tplg_private priv;
} __attribute__((packed));

@@ -347,6 +359,7 @@ struct snd_soc_tplg_dapm_widget {
	__le32 reg;		/* negative reg = no direct dapm */
	__le32 shift;		/* bits to shift */
	__le32 mask;		/* non-shifted mask */
	__le32 subseq;		/* sort within widget type */
	__u32 invert;		/* invert the power bit */
	__u32 ignore_suspend;	/* kept enabled over suspend */
	__u16 event_flags;
+3 −2
Original line number Diff line number Diff line
@@ -740,8 +740,9 @@ static int handle_in_packet(struct amdtp_stream *s,
	    s->data_block_counter != UINT_MAX)
		data_block_counter = s->data_block_counter;

	if (((s->flags & CIP_SKIP_DBC_ZERO_CHECK) && data_block_counter == 0) ||
	    (s->data_block_counter == UINT_MAX)) {
	if (((s->flags & CIP_SKIP_DBC_ZERO_CHECK) &&
	     data_block_counter == s->tx_first_dbc) ||
	    s->data_block_counter == UINT_MAX) {
		lost = false;
	} else if (!(s->flags & CIP_DBC_IS_END_EVENT)) {
		lost = data_block_counter != s->data_block_counter;
+2 −0
Original line number Diff line number Diff line
@@ -157,6 +157,8 @@ struct amdtp_stream {

	/* quirk: fixed interval of dbc between previos/current packets. */
	unsigned int tx_dbc_interval;
	/* quirk: indicate the value of dbc field in a first packet. */
	unsigned int tx_first_dbc;

	bool callbacked;
	wait_queue_head_t callback_wait;
+8 −2
Original line number Diff line number Diff line
@@ -248,10 +248,16 @@ efw_probe(struct fw_unit *unit,
	err = get_hardware_info(efw);
	if (err < 0)
		goto error;
	if (entry->model_id == MODEL_ECHO_AUDIOFIRE_2)
		efw->is_af2 = true;
	/* AudioFire8 (since 2009) and AudioFirePre8 */
	if (entry->model_id == MODEL_ECHO_AUDIOFIRE_9)
		efw->is_af9 = true;
	/* These models uses the same firmware. */
	if (entry->model_id == MODEL_ECHO_AUDIOFIRE_2 ||
	    entry->model_id == MODEL_ECHO_AUDIOFIRE_4 ||
	    entry->model_id == MODEL_ECHO_AUDIOFIRE_9 ||
	    entry->model_id == MODEL_GIBSON_RIP ||
	    entry->model_id == MODEL_GIBSON_GOLDTOP)
		efw->is_fireworks3 = true;

	snd_efw_proc_init(efw);

+1 −1
Original line number Diff line number Diff line
@@ -70,8 +70,8 @@ struct snd_efw {
	bool resp_addr_changable;

	/* for quirks */
	bool is_af2;
	bool is_af9;
	bool is_fireworks3;
	u32 firmware_version;

	unsigned int midi_in_ports;
Loading