> diff --git a/sound/soc/qcom/Kconfig b/sound/soc/qcom/Kconfig > index cc7c1de2f1d9..721ea56b2cb5 100644 > --- a/sound/soc/qcom/Kconfig > +++ b/sound/soc/qcom/Kconfig > @@ -103,6 +103,12 @@ config SND_SOC_QDSP6 > audio drivers. This includes q6asm, q6adm, > q6afe interfaces to DSP using apr. > > +config SND_SOC_QCOM_AUDIOREACH > + tristate "SoC ALSA audio drives for Qualcomm AUDIOREACH" typo: drivers? > +/* container config */ > +struct apm_container_obj { > + struct apm_container_cfg container_cfg; > + /* Capablity ID list */ typo: Capability > + struct apm_prop_data cap_data; > + uint32_t num_capablity_id; > +static void *__audioreach_alloc_pkt(int payload_size, uint32_t opcode, > + uint32_t token, uint32_t src_port, > + uint32_t dest_port, bool has_cmd_hdr) > +{ > + struct apm_cmd_header *cmd_header; > + struct gpr_pkt *pkt; > + void *p; > + int pkt_size = GPR_HDR_SIZE + payload_size; > + > + if (has_cmd_hdr) > + pkt_size += APM_CMD_HDR_SIZE; > + > + p = kzalloc(pkt_size, GFP_ATOMIC); is GFP_ATOMIC required? it's the same question really than my earlier one on spinlock_irqsave, it's rather hard to figure out in what context this code will run. > + if (!p) > + return ERR_PTR(-ENOMEM); > + > + pkt = p; > + pkt->hdr.version = GPR_PKT_VER; > + pkt->hdr.hdr_size = 6; magic number. looks like a missing macro... > + pkt->hdr.pkt_size = pkt_size; > + pkt->hdr.dest_port = dest_port; > + pkt->hdr.src_port = src_port; > + > + pkt->hdr.dest_domain = GPR_DOMAIN_ID_ADSP; > + pkt->hdr.src_domain = GPR_DOMAIN_ID_APPS; > + pkt->hdr.token = token; > + pkt->hdr.opcode = opcode; > + > + if (has_cmd_hdr) { > + p = p + GPR_HDR_SIZE; > + cmd_header = p; > + cmd_header->payload_size = payload_size; > + } > + > + return pkt; > +}