Received: by 2002:a05:6602:18e:0:0:0:0 with SMTP id m14csp2438535ioo; Sat, 28 May 2022 13:43:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzoWwmLtTW00SYPz4uj8q+UCbxiNa+CmXa9J7W3sg0tOOcU49ZAwPv3CdFLLcpPQ0fp7uFW X-Received: by 2002:a17:90b:380b:b0:1e0:3c34:af83 with SMTP id mq11-20020a17090b380b00b001e03c34af83mr14972014pjb.236.1653770586705; Sat, 28 May 2022 13:43:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653770586; cv=none; d=google.com; s=arc-20160816; b=mr0O/ol493o+EUFMi4xgcm2IpsTx94BD8Y2U8LMv0YYQiZetm6ptjtakGMt4SajLdR 7O9nyhgAPJ1YcQTunlPTDcwU9e9TsvUOa/tCN7tFt8eOj+5Kf61XxzAE6/zLErcTAU+g 1VeJMoND0nnndnx6CamhwHohC2rDJX6JtmxZMvwEzrUrq8xDVJ0l9rrQ7OBXDklBkBiu uXkqBtNV7EX1t59NRwtLK03E1nL5VFYLT9AwROVLLc00y3YAEe8zrZFVIPCkmPZjzak/ frAY3+F9hmKjrxiZr+IKJa5emiT6ewBIOz+Lo4nvxW6GlonU+hokl6crV4fExpONbwvp cmlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=eSj5zYBwY24mn9xJf93mfFhpP1TsbEug8hBnh0nGbcc=; b=WY7eCN783ueFSAerJnRh1o0d5M749MoemfPkzD3m9UCqPcWJVhzHuMBe04h++XyQWZ /+rJKEMpF9X+d5uxR666aa6UxFS3I4ThLvdDmESEt8jA1SvMqbaXFfs+9Fyx06Pscc3w YyyUrOivpPi7ZNbGbxR7xtYKQ/QU15hvna5dOaEJEfx3SsDMw5NP6nDKkUIuCnFRuXjV oAoCYgdBitj5FCt8wCkm17/R8exsVMbNfpjEbZ48kocs7IlVlFXUi8WOoa9dhVgxYAby JXK/Ytc8CAkQBwEZMi/yt5wgSJyoWrjNNIoC930xNGq0bk1AG7L8fxA80OR8J+EhLD3K TvdQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cirrus.com header.s=PODMain02222019 header.b=j0zzhnXE; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=cirrus.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id n2-20020a654502000000b003faa2598a6asi10681298pgq.402.2022.05.28.13.43.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 May 2022 13:43:06 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@cirrus.com header.s=PODMain02222019 header.b=j0zzhnXE; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=cirrus.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 5F37DEA892; Sat, 28 May 2022 12:44:16 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241545AbiEZJhs (ORCPT + 99 others); Thu, 26 May 2022 05:37:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49634 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239643AbiEZJhr (ORCPT ); Thu, 26 May 2022 05:37:47 -0400 Received: from mx0b-001ae601.pphosted.com (mx0a-001ae601.pphosted.com [67.231.149.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69981101C8 for ; Thu, 26 May 2022 02:37:46 -0700 (PDT) Received: from pps.filterd (m0077473.ppops.net [127.0.0.1]) by mx0a-001ae601.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24Q6j4ns023965; Thu, 26 May 2022 04:37:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cirrus.com; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : in-reply-to; s=PODMain02222019; bh=eSj5zYBwY24mn9xJf93mfFhpP1TsbEug8hBnh0nGbcc=; b=j0zzhnXEsv1m8eSSGYXxYPPtoHyurf0GReMgc+8IjaYONiQkak2mSCUdD18yW4aQui9Z TwpcTdvQCSCCijysz0fhqknAFj8NdDsW9lQ8POktI6T+m66CJQgfSlDeM9H6EYvfw4r/ YR/JeaVQWr+73FqHZK1mCZ5t3QAccHRfbuEWz67Fjy7h+xc4My+6gWlfXsmzw/aKgu7G CnFh2IGxefeCHxuPu+Q3ylTsQurPdY5RF4q8Swm1fl1AAZCNig3c1GGa0SKkFFTQqRAP KS7pRPSegOEM2C2T0K5Ce+meLMDPC4nWjpuFCNGRGpKEI2s+S5WCdF5lziVFxmutwkoG jQ== Received: from ediex01.ad.cirrus.com ([84.19.233.68]) by mx0a-001ae601.pphosted.com (PPS) with ESMTPS id 3g93u4j0ye-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Thu, 26 May 2022 04:37:01 -0500 Received: from EDIEX01.ad.cirrus.com (198.61.84.80) by EDIEX01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 26 May 2022 10:36:59 +0100 Received: from ediswmail.ad.cirrus.com (198.61.86.93) by EDIEX01.ad.cirrus.com (198.61.84.80) with Microsoft SMTP Server id 15.1.2375.24 via Frontend Transport; Thu, 26 May 2022 10:36:59 +0100 Received: from ediswmail.ad.cirrus.com (ediswmail.ad.cirrus.com [198.61.86.93]) by ediswmail.ad.cirrus.com (Postfix) with ESMTP id 8B89D46C; Thu, 26 May 2022 09:36:58 +0000 (UTC) Date: Thu, 26 May 2022 09:36:58 +0000 From: Charles Keepax To: Vitaly Rodionov CC: Jaroslav Kysela , Takashi Iwai , Mark Brown , , , , Stefan Binding Subject: Re: [PATCH v4 02/17] ALSA: hda: hda_cs_dsp_ctl: Add apis to write the controls directly Message-ID: <20220526093658.GQ38351@ediswmail.ad.cirrus.com> References: <20220525131638.5512-1-vitalyr@opensource.cirrus.com> <20220525131638.5512-3-vitalyr@opensource.cirrus.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20220525131638.5512-3-vitalyr@opensource.cirrus.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Proofpoint-ORIG-GUID: ZCILVYNVKLxwKbQshogZsWwivpOiURe4 X-Proofpoint-GUID: ZCILVYNVKLxwKbQshogZsWwivpOiURe4 X-Proofpoint-Spam-Reason: safe X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 25, 2022 at 02:16:23PM +0100, Vitaly Rodionov wrote: > From: Stefan Binding > > DSP controls are exposed as ALSA controls, however, > some of these controls are required to be accessed by > the driver. Add apis which allow read/write of these > controls. The write api will also notify the ALSA control > on value change. > > Signed-off-by: Stefan Binding > Signed-off-by: Vitaly Rodionov > --- > > Changes since v2: > - No change > > sound/pci/hda/hda_cs_dsp_ctl.c | 52 ++++++++++++++++++++++++++++++++++ > sound/pci/hda/hda_cs_dsp_ctl.h | 4 +++ > 2 files changed, 56 insertions(+) > > diff --git a/sound/pci/hda/hda_cs_dsp_ctl.c b/sound/pci/hda/hda_cs_dsp_ctl.c > index 46df48ff2ae1..3b837d000a00 100644 > --- a/sound/pci/hda/hda_cs_dsp_ctl.c > +++ b/sound/pci/hda/hda_cs_dsp_ctl.c > @@ -237,6 +237,58 @@ void hda_cs_dsp_control_remove(struct cs_dsp_coeff_ctl *cs_ctl) > } > EXPORT_SYMBOL_NS_GPL(hda_cs_dsp_control_remove, SND_HDA_CS_DSP_CONTROLS); > > +int hda_cs_dsp_write_ctl(struct cs_dsp *dsp, const char *name, int type, > + unsigned int alg, void *buf, size_t len) > +{ > + struct cs_dsp_coeff_ctl *cs_ctl; > + struct hda_cs_dsp_coeff_ctl *ctl; > + struct snd_kcontrol *kctl; > + int ret; > + > + cs_ctl = cs_dsp_get_ctl(dsp, name, type, alg); > + if (!cs_ctl) > + return -EINVAL; > + > + ctl = cs_ctl->priv; > + > + if (len > cs_ctl->len) > + return -EINVAL; Is it just me or are these length check unnecessary? I realise they are also in the wm_adsp code you are copying, but it looks to me like they are redundant in both cases, cs_dsp_coeff_*_ctrl appears to do a length check itself. > + > + ret = cs_dsp_coeff_write_ctrl(cs_ctl, 0, buf, len); > + if (ret) > + return ret; > + > + if (cs_ctl->flags & WMFW_CTL_FLAG_SYS) > + return 0; > + > + list_for_each_entry(kctl, &ctl->card->controls, list) > + if (!strncmp(kctl->id.name, ctl->name, sizeof(kctl->id.name))) { > + snd_ctl_notify(ctl->card, SNDRV_CTL_EVENT_MASK_VALUE, &kctl->id); > + return 0; > + } > + > + dev_warn(dsp->dev, "Cannot find Control for %s\n", name); > + > + return 0; > +} > +EXPORT_SYMBOL_NS_GPL(hda_cs_dsp_write_ctl, SND_HDA_CS_DSP_CONTROLS); > + > +int hda_cs_dsp_read_ctl(struct cs_dsp *dsp, const char *name, int type, > + unsigned int alg, void *buf, size_t len) > +{ > + struct cs_dsp_coeff_ctl *cs_ctl; > + > + cs_ctl = cs_dsp_get_ctl(dsp, name, type, alg); > + if (!cs_ctl) > + return -EINVAL; > + > + if (len > cs_ctl->len) > + return -EINVAL; ditto. Thanks, Charles