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

Commit 5e200262 authored by Subhash Chandra Bose Naripeddy's avatar Subhash Chandra Bose Naripeddy Committed by Alexy Joseph
Browse files

misc: qcom: qdsp6v2: Support hardware accelerated audio effects



Audio post processing features such as HeadphoneX are supported
only in DSP. To apply post processing for the playback which is
not routed through DSP, effects are applied through hardware
accelerated mode where PCM samples are sent to DSP for effects
processing in write path and captured by userspace through read
path.

Change-Id: I50272b04586770136bc48ba231eef1eac81387c5
Signed-off-by: default avatarSubhash Chandra Bose Naripeddy <snariped@codeaurora.org>
Signed-off-by: default avatarAlexy Joseph <alexyj@codeaurora.org>
parent 256995a0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
obj-$(CONFIG_MSM_QDSP6V2_CODECS) += aac_in.o qcelp_in.o evrc_in.o amrnb_in.o audio_utils.o
obj-$(CONFIG_MSM_QDSP6V2_CODECS) += audio_wma.o audio_wmapro.o audio_aac.o audio_multi_aac.o audio_utils_aio.o
obj-$(CONFIG_MSM_QDSP6V2_CODECS) += q6audio_v2.o q6audio_v2_aio.o
obj-$(CONFIG_MSM_QDSP6V2_CODECS)  += audio_mp3.o audio_amrnb.o audio_amrwb.o audio_amrwbplus.o audio_evrc.o audio_qcelp.o amrwb_in.o
obj-$(CONFIG_MSM_QDSP6V2_CODECS)  += audio_mp3.o audio_amrnb.o audio_amrwb.o audio_amrwbplus.o audio_evrc.o audio_qcelp.o amrwb_in.o audio_hwacc_effects.o
obj-$(CONFIG_MSM_ULTRASOUND) += ultrasound/
+728 −0

File added.

Preview size limit exceeded, changes collapsed.

+39 −3
Original line number Diff line number Diff line
/* include/linux/msm_audio.h
 *
 * Copyright (C) 2008 Google, Inc.
 * Copyright (c) 2012 The Linux Foundation. All rights reserved.
 * Copyright (c) 2012, 2014 The Linux Foundation. All rights reserved.
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
@@ -104,8 +104,17 @@
		struct msm_audio_ion_info)
#define AUDIO_DEREGISTER_ION _IOW(AUDIO_IOCTL_MAGIC, 98, \
		struct msm_audio_ion_info)
#define AUDIO_SET_EFFECTS_CONFIG   _IOW(AUDIO_IOCTL_MAGIC, 99, \
				struct msm_hwacc_effects_config)
#define AUDIO_EFFECTS_SET_BUF_LEN _IOW(AUDIO_IOCTL_MAGIC, 100, \
				struct msm_hwacc_buf_cfg)
#define AUDIO_EFFECTS_GET_BUF_AVAIL _IOW(AUDIO_IOCTL_MAGIC, 101, \
				struct msm_hwacc_buf_avail)
#define AUDIO_EFFECTS_WRITE _IOW(AUDIO_IOCTL_MAGIC, 102, void *)
#define AUDIO_EFFECTS_READ _IOWR(AUDIO_IOCTL_MAGIC, 103, void *)
#define AUDIO_EFFECTS_SET_PP_PARAMS _IOW(AUDIO_IOCTL_MAGIC, 104, void *)

#define	AUDIO_MAX_COMMON_IOCTL_NUM	100
#define	AUDIO_MAX_COMMON_IOCTL_NUM	105


#define HANDSET_MIC			0x01
@@ -140,7 +149,7 @@
#define I2S_TX				0x21

#define ADRC_ENABLE		0x0001
#define EQ_ENABLE		0x0002
#define EQUALIZER_ENABLE	0x0002
#define IIR_ENABLE		0x0004
#define QCONCERT_PLUS_ENABLE	0x0008
#define MBADRC_ENABLE		0x0010
@@ -420,5 +429,32 @@ struct msm_acdb_cmd_device {
	uint32_t     *phys_buf;           /* Physical Address of data */
};

struct msm_hwacc_data_config {
	__u32 buf_size;
	__u32 num_buf;
	__u32 num_channels;
	__u8 channel_map[8];
	__u32 sample_rate;
	__u32 bits_per_sample;
};

struct msm_hwacc_buf_cfg {
	__u32 input_len;
	__u32 output_len;
};

struct msm_hwacc_buf_avail {
	__u32 input_num_avail;
	__u32 output_num_avail;
};

struct msm_hwacc_effects_config {
	struct msm_hwacc_data_config input;
	struct msm_hwacc_data_config output;
	struct msm_hwacc_buf_cfg buf_cfg;
	__u32 meta_mode_enabled;
	__u32 overwrite_topology;
	__s32 topology;
};

#endif