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

Commit b69e5349 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge changes...

Merge changes I23342a6c,Ic1b61d1f,Iee57a5b6,I7f07c667,I5b501b5d,Id3eca8c0,Ifc6327e9,Ib20b71c7,I668e50af,I13e4a053,I2dd07bd9,I142b3590,Iedd78288,I734f5316,Id8880caa,I8e359864,I71bd8f11,I196802e6,I6e3582fa,Ic1f02c34,I180515f2,Ia6d47554,Ic3f7c0e5,Id61c8175,I172558f6,Ia12a28c4,I17e7e1c3,Ieec6b2af,Ib7e10f44,Id8a29ce5,I381f7cdc,I4e8eee3c,I502355af,I0d2c910f,I960b85a2,I3f1b457e,I68ad14d5,I08298303,I3f8af90a,I9fbaaa0c,Icc8ffdad,I6cf8bcc5,I7a7d1887,I2d7d9e34,Idbb18fe4,I595e638d,I8a167e09,I8746d86c,I9f69470f,Ib9631b6e,Ief8817b4,Ie6a6fb1f,I390b9e04,Ifbde76e3 into msm-next

* changes:
  ASoC: core: Fix possible NULL pointer dereference
  ASoC: Add backend user count checking
  soc: avtimer: add support for decimal value MHz clock
  ASoC: Add AV timer changes for MSM targets
  ASoC: Update the widgets power up/down sequence
  ASoC: wcd9xxx: Fix the ANC CnP
  ASoC: soc-pcm: Fix playback shutdown sequence
  ALSA: pcm: fix blocking while loop in snd_pcm_update_hw_ptr0()
  ASoC: jack: Fix buttons enum value
  ASoC: soc-core: export function to find components
  ASoC: pcm: change capture_active to unsigned int
  ASoC: Change info logs to debug
  ASoC: add 352800Hz into the pcm known rates
  ASoC: soc-dapm: Invalidate DAPM path during dapm addition of routes
  ASoC: add sample rate macros upto 384KHz
  ALSA: timer: check if timer->card is null before use
  ASoC: sound: soc: fix incorrect max value
  ASoC: pcm: change playback_active to unsigned int
  ASoC: pcm: Update RX shutdown sequence
  ASoC: core: Fix possible NULL pointer de-reference
  ASoC: dapm: Avoid static route b/w cpu and codec dai
  ASoC: compress: fix unsigned integer overflow check
  ASoC: compare CPU DAI stream name to find BE DAI
  ASoC: soc-core: change debug level for debugfs fail message
  ASoC: Initialize val to avoid access garbage value
  ASoC: Add check for pointer and array index
  ASoC: Cold start latency reduction
  ALSA: compress: Add support to send codec specific data
  SoC: pcm: Add delay_blk feature
  ALSA: core: modify, rename and export create_subdir API
  ALSA: pcm: add support for 384KHz sample rate
  soundwire: add support for device table match
  ALSA: usb-audio: Fix the mixer control range limiting issue
  msm: usbaudio: Add check for NULL before dereferencing
  ASoC: core: Remove sound card state check from read/write
  ASoC: pcm: update the start-up sequence for playback
  ASoC: compress: propagate the error code from the compress framework
  ASoC: msm: qdsp6v2: Cleanup of compress offload drivers
  ALSA: compress: use mutex in drain
  ASoC: compress: revert some code to avoid race condition
  ALSA: Compress - dont use lock for all ioctls
  ALSA: compress: Add snd_compress_free()
  ALSA: compress: Memset timestamp structure to zero.
  ASoC: dapm: Do not process cpu_dai widgets in bias changes
  SoC: msm: Add support for meta data in compressed TX
  ASoC: msm: add support for different compressed formats
  ASoC: dapm: add macro for MICBIAS
  ASoc: msm: Add AMR NB and AMR WB support for Voip
  ALSA: PCM: User control API implementation
  ALSA: pcm: check for integer overflow during multiplication
  ALSA: PCM: volume API implementation
  ASoC: core: Add compat ioctl support for listen driver
  ALSA: core: Handle user defined ioctls
  ALSA: core: Add support to handle compressed audio IOCTLs
parents ddd13569 4576c230
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
* avtimer

Avtimer provides an interface for clients to enable avtimer block
on qdsp6. 64 bit AVtimer exposed by qdsp6 is used for audio and video
stream synchronization during capture and playback usecases.

Required properties:
- reg : physical address and length of avtimer register
- reg-names : AVtimer register name
  Required register resource entries are:
  "avtimer_lsb_addr" : AVtimer lsb physical address
  "avtimer_msb_addr" : AVtimer msb physical address
- compatible : Must be "qcom,avtimer"

Optional properties:
- clk-div : Divisor to divide the ticks value to get msec value.
 If the clock is at 27MHz, the ticks value read from AVTimer
 registers will have to be divided by 27, to achieve the msec value.
- clk-mult : Multiplier to multiply the ticks value in order to avoid
 a floating point operation if the clock is of decimal value.
 E.g. To get msec out of ticks from a 19.2MHz clock source, the ticks
 value will have to be divided by 19.2, which will then become a
 floating point operation. However, to avoid using a floating point
 operation, the msec can be calculated by multiplying ticks with 10
 and dividing the result by 192. i.e. msec = (ticks * 10) / 192;

Example:
	qcom,avtimer@90f7000 {
		compatible = "qcom,avtimer";
		reg = <0x90f700c 0x4>,
		      <0x90f7010 0x4>;
		reg-names = "avtimer_lsb_addr", "avtimer_msb_addr";
		qcom,clk-div = <27>;
		qcom,clk-mult = <10>;
	};
+6 −0
Original line number Diff line number Diff line
@@ -183,6 +183,11 @@ partial drain
  EOF is reached and now DSP can start skipping padding delay. Also next write
  data would belong to next track

- set_next_track_param
This routine is called to send to DSP codec specific data of subsequent track
in gapless before first write.


Sequence flow for gapless would be:
- Open
- Get caps / codec caps
@@ -194,6 +199,7 @@ Sequence flow for gapless would be:
- Indicate next track data by sending set_next_track
- Set metadata of the next track
- then call partial_drain to flush most of buffer in DSP
- set codec specific data of subsequent track
- Fill data of the next track
- DSP switches to second track

+10 −0
Original line number Diff line number Diff line
@@ -459,6 +459,16 @@ struct spmi_device_id {
	kernel_ulong_t driver_data;	/* Data private to the driver */
};

/* soundwire */

#define SOUNDWIRE_NAME_SIZE	32
#define SOUNDWIRE_MODULE_PREFIX "swr:"

struct swr_device_id {
	char name[SOUNDWIRE_NAME_SIZE];
	kernel_ulong_t driver_data;	/* Data private to the driver */
};

/* dmi */
enum dmi_field {
	DMI_NONE,
+6 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ struct snd_compr_stream {
	bool metadata_set;
	bool next_track;
	void *private_data;
	struct snd_soc_pcm_runtime *be;
};

/**
@@ -98,6 +99,8 @@ struct snd_compr_stream {
 * @get_params: retrieve the codec parameters, mandatory
 * @set_metadata: Set the metadata values for a stream
 * @get_metadata: retrieves the requested metadata values from stream
 * @set_next_track_param: send codec specific data of subsequent track
 * in gapless
 * @trigger: Trigger operations like start, pause, resume, drain, stop.
 * This callback is mandatory
 * @pointer: Retrieve current h/w pointer information. Mandatory
@@ -120,6 +123,8 @@ struct snd_compr_ops {
			struct snd_compr_metadata *metadata);
	int (*get_metadata)(struct snd_compr_stream *stream,
			struct snd_compr_metadata *metadata);
	int (*set_next_track_param)(struct snd_compr_stream *stream,
			union snd_codec_options *codec_options);
	int (*trigger)(struct snd_compr_stream *stream, int cmd);
	int (*pointer)(struct snd_compr_stream *stream,
			struct snd_compr_tstamp *tstamp);
@@ -167,6 +172,7 @@ int snd_compress_register(struct snd_compr *device);
int snd_compress_deregister(struct snd_compr *device);
int snd_compress_new(struct snd_card *card, int device,
			int type, const char *id, struct snd_compr *compr);
void snd_compress_free(struct snd_card *card, struct snd_compr *compr);

/* dsp driver callback apis
 * For playback: driver should call snd_compress_fragment_elapsed() to let the
+6 −2
Original line number Diff line number Diff line
@@ -161,7 +161,9 @@ static inline void snd_info_set_text_ops(struct snd_info_entry *entry,
}

int snd_info_check_reserved_words(const char *str);

struct snd_info_entry *snd_info_create_subdir(struct module *mod,
					      const char *name,
					      struct snd_info_entry *parent);
#else

#define snd_seq_root NULL
@@ -190,7 +192,9 @@ static inline void snd_info_set_text_ops(struct snd_info_entry *entry __attribut
					 void *private_data,
					 void (*read)(struct snd_info_entry *, struct snd_info_buffer *)) {}
static inline int snd_info_check_reserved_words(const char *str) { return 1; }

static inline struct snd_info_entry *snd_info_create_subdir(
				struct module *mod, const char *name,
				struct snd_info_entry *parent) { return NULL; }
#endif

/*
Loading