Received: by 2002:a05:6358:c692:b0:131:369:b2a3 with SMTP id fe18csp5842631rwb; Tue, 1 Aug 2023 08:36:43 -0700 (PDT) X-Google-Smtp-Source: APBJJlElW4rhvhr2LYTqttWdaghiiJ+Z2KXIkcCafSj+EqhIgk/vPtTw7Wme7CafV9T35s8yVcWU X-Received: by 2002:a17:903:504:b0:1b8:94e9:e7cb with SMTP id jn4-20020a170903050400b001b894e9e7cbmr11679297plb.21.1690904203296; Tue, 01 Aug 2023 08:36:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690904203; cv=none; d=google.com; s=arc-20160816; b=mwhWrv3VcGW7fkXp/aUydA0XgQm2TnZ4A+XCDgQStNL8Kp1ReGFKDR3NSXYbOmcRFu sRYtNX8nXTBi6wakZOe+vguog7s1iTnntbzgJ+/5e1Y6UWNIxeES3y3H3wcpf5TlJ+Ug Dk63Jy4jgNVB3R7zH4pAmjiXedBWfUfp2y8Hx2bYCWM0qEi3BQ76KvXUqexka42eTZBN VV6waGfNx+s45xbMtqb5lvtSfRxbYuhn5jwkpYv9wosyfU9eNhTles7n5R8jqoaUaa3m C+6nGPU+SyrsIZahfQifmKgsgcL2q28dQkLow9ApauGM8yxaOth4S7+svYdhMRZinoZc 7zMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=9LCAsr2bIL8kLMgkEwkdI+MgOLqKLakMLSAWcTBAIPs=; fh=+BFJ/3z5sIRVCiQ82ds+qM3fc0grUnOse7ALIhf0O0Q=; b=BzocGNlBv0tUFxcZHwcnLDUQcwulF4BK/hvtb8ja/l63mw9N0Gihr9s9knK2MziC/B H83D8mkMIBN/CeIgBxXiO+/FbtutRbtmhhWjssIr9uMheRKmnQTEtMQepQncpCJNPbaU SM7V3nnuRjqT77+RuZa5gfln6XBSvGvAfTvQCS5hpGVJrctF1kYTSEhrLjKS54AuN0cl Dprmz19bz9X/fnlsF/B2pfhL/mZpK0h+AUlnFXfLWnG9sGXLkcCP1e/UwVd/OT7suarl yShD5Lr59Gr1AEQZLeJKkAxkFRx1DehOZkKnm0FWGaGQ6qQOsNqBtWspukQGTC/iouW5 AB9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=VwPraxCe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o12-20020a170902d4cc00b001b89613687bsi9772813plg.439.2023.08.01.08.36.29; Tue, 01 Aug 2023 08:36:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=VwPraxCe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232362AbjHAN6l (ORCPT + 99 others); Tue, 1 Aug 2023 09:58:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55232 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230305AbjHAN6k (ORCPT ); Tue, 1 Aug 2023 09:58:40 -0400 Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CFC07DC; Tue, 1 Aug 2023 06:58:38 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4fe1489ced6so9275245e87.0; Tue, 01 Aug 2023 06:58:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690898317; x=1691503117; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=9LCAsr2bIL8kLMgkEwkdI+MgOLqKLakMLSAWcTBAIPs=; b=VwPraxCeRIr2mAW9uLS3E1/rWkUsOFaKUUwtl5DRFP4MAwgK6s8t3MTB+pSty7hiU0 vAbe3m1AJM5QMtYLXqCLXQtDM9GKEKyysMuWgczAMYNGC6kNV7bucErLjdVFC4TSUM3p P9fgJGHDX8mAw16H57HZcG1xNLdIMVZBMBDoU7NBBtSLC8V6RJYR5G2xDvjQJq4ljzAL kACOqBSZewUf3PNLkJtg//OAJKCuvTXRSjsPLj6vPsqsJNzhbpDizI9uwnYcTzbFp/o3 Ga5RHWYQabbaAgpChUI9ZoT52HMfbp9guSuW0o0v7GfpGa+pY8vlrmWeWfbC/kIDH2Lc 3AMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690898317; x=1691503117; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=9LCAsr2bIL8kLMgkEwkdI+MgOLqKLakMLSAWcTBAIPs=; b=H6WGqHj8FabhYS/hjNtYOlMiXVkfFfLzClmx6lKqd91G+bCscCyZtKSDxA2baoYNO+ tUH3oKi0g36h1i3FMDy919hmy8zYrkIjis4Kt1bi78JJdUkkZCQzNOEoLj930TPJ08pV 27hjRZ7hYciKYAXMocGv5o1CfgwaqbaHF2qYKu+1gPP2UZeQL5+b4cPMQihp4bPwCxjZ k+J/wLBvme+2ncvTu1ysJ7IfZXsSFWK8vBMve/28c5yU5ZJU1HBqSNT8KYNVPgNolFR6 ocdEx6RhKu001cF+ui0DX+NvxOUnFs2548qCsx882EYKmDHym0AaQ8xW/PrRGd4ifs3r cctw== X-Gm-Message-State: ABy/qLYZ8t9p+9NVPpOHNkSj4kQ08yCgS0Ev0AuKmnzZF/CNV8RsFAjI ZdvsyDrydGNdcxu/jwvW82a+17GO+UBTsOHPxI0= X-Received: by 2002:a19:6514:0:b0:4fb:845d:9e8f with SMTP id z20-20020a196514000000b004fb845d9e8fmr1871744lfb.53.1690898316655; Tue, 01 Aug 2023 06:58:36 -0700 (PDT) MIME-Version: 1.0 References: <1690265540-25999-1-git-send-email-shengjiu.wang@nxp.com> <1690265540-25999-2-git-send-email-shengjiu.wang@nxp.com> In-Reply-To: <1690265540-25999-2-git-send-email-shengjiu.wang@nxp.com> From: Daniel Baluta Date: Tue, 1 Aug 2023 16:58:24 +0300 Message-ID: Subject: Re: [RFC PATCH v2 1/7] ASoC: fsl_asrc: define functions for memory to memory usage To: Shengjiu Wang Cc: hverkuil@xs4all.nl, sakari.ailus@iki.fi, tfiga@chromium.org, m.szyprowski@samsung.com, mchehab@kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, shengjiu.wang@gmail.com, Xiubo.Lee@gmail.com, festevam@gmail.com, nicoleotsuka@gmail.com, lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, alsa-devel@alsa-project.org, linuxppc-dev@lists.ozlabs.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 > +static int fsl_asrc_m2m_check_format(u8 dir, u32 rate, u32 channels, u32 format) > +{ > + u64 support_format = FSL_ASRC_FORMATS; > + > + if (channels < 1 || channels > 10) > + return -EINVAL; > + > + if (rate < 5512 || rate > 192000) > + return -EINVAL; > + I think we can avoid using magic numbers. Instead we could do: #define FSL_ASRC_MIN_CHANNELS 1 /... #define FSL_ASRC_MAX_RATE 192000 > + if (dir == IN) > + support_format |= SNDRV_PCM_FMTBIT_S8; > + > + if (!(1 << format & support_format)) > + return -EINVAL; > + > + return 0; > +} > + > +/* calculate capture data length according to output data length and sample rate */ > +static int fsl_asrc_m2m_calc_out_len(struct fsl_asrc_pair *pair, int input_buffer_length) > +{ > + unsigned int in_width, out_width; > + unsigned int channels = pair->channels; > + unsigned int in_samples, out_samples; > + unsigned int out_length; > + > + in_width = snd_pcm_format_physical_width(pair->sample_format[IN]) / 8; > + out_width = snd_pcm_format_physical_width(pair->sample_format[OUT]) / 8; > + > + in_samples = input_buffer_length / in_width / channels; > + out_samples = pair->rate[OUT] * in_samples / pair->rate[IN]; > + out_length = (out_samples - ASRC_OUTPUT_LAST_SAMPLE) * out_width * channels; > + > + return out_length; > +} > + > +static int fsl_asrc_m2m_get_maxburst(u8 dir, struct fsl_asrc_pair *pair) > +{ > + struct fsl_asrc *asrc = pair->asrc; > + struct fsl_asrc_priv *asrc_priv = asrc->private; > + int wml = (dir == IN) ? ASRC_M2M_INPUTFIFO_WML : ASRC_M2M_OUTPUTFIFO_WML; > + > + if (!asrc_priv->soc->use_edma) > + return wml * pair->channels; > + else > + return 1; > +} > + > +static int fsl_asrc_m2m_pair_resume(struct fsl_asrc_pair *pair) > +{ > + struct fsl_asrc *asrc = pair->asrc; > + int i; > + > + for (i = 0; i < pair->channels * 4; i++) > + regmap_write(asrc->regmap, REG_ASRDI(pair->index), 0); > + > + return 0; > +} > + > static int fsl_asrc_runtime_resume(struct device *dev); > static int fsl_asrc_runtime_suspend(struct device *dev); There is no implementation for _suspend although you mention it in the commit message. > + * @complete: dma task complete > + * @sample_format: format of m2m > + * @rate: rate of m2m > + * @buf_len: buffer length of m2m > + * @req_pair: flag for request pair For example @complete field is not used in this patch. Maybe add it in the patch that uses it? I think is the same for other fields.