From nobody Fri Dec 19 06:31:34 2025 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8BB74233726 for ; Fri, 25 Apr 2025 08:25:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745569561; cv=none; b=eewrZkwFurxiGq5z0o2nO96RJBPfThWhMZQH24X8RBFZ0bMH6O4PBCEJpYGLmVhgUyVNG7p7wEjH3y45IzVtmau+1je/g5v7Ey9TWfIGRybsRiLml+tapJcEythuoj1stm4JeNNRcS+0XfhnFkaf7O+7Z89yRPbJg+kRjb/YvAQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745569561; c=relaxed/simple; bh=GLP5hS6CDk/+L4P/jcgnQZSM93friczxp/UuwcJO1+8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QDJwA2Iz6sNQEecjFZ/8SVHITWz/c4reGqkl3rPD+mSPNLZ6aajceZByATZzjVuagEF7Itaf690BrupXvHc74JW2B+Cfq9pLgbTfymiFYYJ46MrO3tm9FX2+nyp4JFci2DtEjZab7MDKAnMJAtqqXTvklsjfxQQyzVau/dgiq14= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=DqQxPDhl; arc=none smtp.client-ip=209.85.216.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="DqQxPDhl" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-301302a328bso2708169a91.2 for ; Fri, 25 Apr 2025 01:25:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1745569559; x=1746174359; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1QWTCwsCkON7D9p2NqkONHnIokN090rDxDsakY/JET4=; b=DqQxPDhlAD/GLSSLkTkuWg19LqWj39tR6kyTTdf4fLNkxL20wDk9dW+WR/8LfiSdY+ PqRmIT8JceKzXahj824rI4l5FIqkR9bsx3NzGdS+S6FH1+qoaUoYYHwpZ4u3lUr244M/ IqBLUo9GKQsW3c8adu/5O4clZPCa053fvpaVo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745569559; x=1746174359; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1QWTCwsCkON7D9p2NqkONHnIokN090rDxDsakY/JET4=; b=II9YTvcvCLzwTPy5cMqfZQ5emKY62aWkigVb/GaML1FIv3Zz1httQE5upXzuzDZrRl 6to+V32iGgvH9rcgmoEJSe4XelWApD9HN2MbLwu/yBCjwJI+TceO5rpGEv8m9ktCQAdd YFS6BDiEeRe0LDxrY0BYpTBS+UFdqh6vSED/bvyqyOxAUqj+s1Adn4utycbXVSaT81bB LJn8FzXZ+HWIlNvB0qXsRJqY5bJGBQX4YjE3jiWf+tgKMziz2n5CqYP6wIfsdRpXecGZ 8SHTdYHspOcxxKWLPKqNrHOZMDR/Onj6mpPiTvGBQa/ktOz6l6IuC6SMCUtrbkDGnwq2 91sw== X-Forwarded-Encrypted: i=1; AJvYcCUXHAEA4f9Lbs5bxZcUM+JbihIQKJGDkMi4noezjazrNoRE6e2KZYBYQPt5viy6UKt8N60ttKIYg9dtz2I=@vger.kernel.org X-Gm-Message-State: AOJu0YygkAlMIgy/NpwW17I26Qcwp/Z/LUfRzqJKwCFhhexFx6WEYV6P /33lHeU3//yB/K13x6y4zAfwi7Ey03dsxOYo9HJU+DuCXr8yNcfDv/p34aQeeg== X-Gm-Gg: ASbGncubzp+0Wf9O87Dh3hmDcN4P0JXfJm7IbwDILNZKt17ZdinS2b5jPAR4anpE6/r DYSzgx3UhZI/Er2mbAc4rl267Ybb07UdOPdU3PBllukWNSiebGWkoaS5xOxkqzCwoYwYJ4q6+Z0 GhMufGWCtQBibKmaHGm6OSV7/6HwW5QMve/05Ec6dN70iQgwzJu40I3LbDr0++wX3rcHBpQPjbB Du6OYkZbaPzjs6i/o9qiWhZAdvVKZVo8IJnxK7iPQPLAKVftUpNJuZGTFY968ELQUpFBDu8DBFV oZJojU14IJrz/7p7vZJPKXTOJVmjuU6z0P6g6QDetdNcgzEjtLr6TGjBR+E= X-Google-Smtp-Source: AGHT+IFybSCsPFfxF++sK/Z7wtOshvn1WkPymz+jT8LlvhjQX5Y8GqTxdDgqrS2p9gJDnRLpKRkWMA== X-Received: by 2002:a17:90b:3941:b0:2ff:69d4:6fe2 with SMTP id 98e67ed59e1d1-309f7df2d4bmr2675303a91.16.1745569558786; Fri, 25 Apr 2025 01:25:58 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2401:fa00:1:10:4b10:d9aa:98d0:5bb5]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f77417d6sm1019179a91.4.2025.04.25.01.25.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 01:25:58 -0700 (PDT) From: Chen-Yu Tsai To: Liam Girdwood , Mark Brown , Matthias Brugger , AngeloGioacchino Del Regno Cc: Chen-Yu Tsai , Jaroslav Kysela , Takashi Iwai , Jiaxin Yu , linux-sound@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Darren Ye Subject: [PATCH 1/3] ASoC: mediatek: mt8183-afe-pcm: Shorten memif_data table using macros Date: Fri, 25 Apr 2025 16:25:48 +0800 Message-ID: <20250425082551.1467042-2-wenst@chromium.org> X-Mailer: git-send-email 2.49.0.850.g28803427d3-goog In-Reply-To: <20250425082551.1467042-1-wenst@chromium.org> References: <20250425082551.1467042-1-wenst@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The memif_data table describes all the supported PCM channels for the audio frontend. Most of the fields are either the same or can be derived from the interface's name. This results in a very long table (in source code) that can be shortened with macros. Do just that. Some "convenience" macros were added to cover non-existent register fields that would otherwise require multiple layers of macros to handle. Signed-off-by: Chen-Yu Tsai Reviewed-by: AngeloGioacchino Del Regno --- sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 288 +++++---------------- 1 file changed, 63 insertions(+), 225 deletions(-) diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c b/sound/soc/mediate= k/mt8183/mt8183-afe-pcm.c index d63b7fe19fbf..3e2334e9324b 100644 --- a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c +++ b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c @@ -426,232 +426,70 @@ static const struct snd_soc_component_driver mt8183_= afe_pcm_dai_component =3D { .name =3D "mt8183-afe-pcm-dai", }; =20 +#define MT8183_MEMIF_BASE(_id, _en_reg, _fs_reg, _mono_reg) \ + [MT8183_MEMIF_##_id] =3D { \ + .name =3D #_id, \ + .id =3D MT8183_MEMIF_##_id, \ + .reg_ofs_base =3D AFE_##_id##_BASE, \ + .reg_ofs_cur =3D AFE_##_id##_CUR, \ + .reg_ofs_end =3D AFE_##_id##_END, \ + .reg_ofs_base_msb =3D AFE_##_id##_BASE_MSB, \ + .reg_ofs_cur_msb =3D AFE_##_id##_CUR_MSB, \ + .reg_ofs_end_msb =3D AFE_##_id##_END_MSB, \ + .fs_reg =3D (_fs_reg), \ + .fs_shift =3D _id##_MODE_SFT, \ + .fs_maskbit =3D _id##_MODE_MASK, \ + .mono_reg =3D (_mono_reg), \ + .mono_shift =3D _id##_DATA_SFT, \ + .enable_reg =3D (_en_reg), \ + .enable_shift =3D _id##_ON_SFT, \ + .hd_reg =3D AFE_MEMIF_HD_MODE, \ + .hd_align_reg =3D AFE_MEMIF_HDALIGN, \ + .hd_shift =3D _id##_HD_SFT, \ + .hd_align_mshift =3D _id##_HD_ALIGN_SFT, \ + .agent_disable_reg =3D -1, \ + .agent_disable_shift =3D -1, \ + .msb_reg =3D -1, \ + .msb_shift =3D -1, \ + } + +#define MT8183_MEMIF(_id, _fs_reg, _mono_reg) \ + MT8183_MEMIF_BASE(_id, AFE_DAC_CON0, _fs_reg, _mono_reg) + +/* For convenience with macros: missing register fields */ +#define MOD_DAI_DATA_SFT -1 +#define HDMI_MODE_SFT -1 +#define HDMI_MODE_MASK -1 +#define HDMI_DATA_SFT -1 +#define HDMI_ON_SFT -1 + +/* For convenience with macros: register name differences */ +#define AFE_VUL12_BASE AFE_VUL_D2_BASE +#define AFE_VUL12_CUR AFE_VUL_D2_CUR +#define AFE_VUL12_END AFE_VUL_D2_END +#define AFE_VUL12_BASE_MSB AFE_VUL_D2_BASE_MSB +#define AFE_VUL12_CUR_MSB AFE_VUL_D2_CUR_MSB +#define AFE_VUL12_END_MSB AFE_VUL_D2_END_MSB +#define AWB2_HD_ALIGN_SFT AWB2_ALIGN_SFT +#define VUL12_DATA_SFT VUL12_MONO_SFT +#define AFE_HDMI_BASE AFE_HDMI_OUT_BASE +#define AFE_HDMI_CUR AFE_HDMI_OUT_CUR +#define AFE_HDMI_END AFE_HDMI_OUT_END +#define AFE_HDMI_BASE_MSB AFE_HDMI_OUT_BASE_MSB +#define AFE_HDMI_CUR_MSB AFE_HDMI_OUT_CUR_MSB +#define AFE_HDMI_END_MSB AFE_HDMI_OUT_END_MSB + static const struct mtk_base_memif_data memif_data[MT8183_MEMIF_NUM] =3D { - [MT8183_MEMIF_DL1] =3D { - .name =3D "DL1", - .id =3D MT8183_MEMIF_DL1, - .reg_ofs_base =3D AFE_DL1_BASE, - .reg_ofs_cur =3D AFE_DL1_CUR, - .reg_ofs_end =3D AFE_DL1_END, - .reg_ofs_base_msb =3D AFE_DL1_BASE_MSB, - .reg_ofs_cur_msb =3D AFE_DL1_CUR_MSB, - .reg_ofs_end_msb =3D AFE_DL1_END_MSB, - .fs_reg =3D AFE_DAC_CON1, - .fs_shift =3D DL1_MODE_SFT, - .fs_maskbit =3D DL1_MODE_MASK, - .mono_reg =3D AFE_DAC_CON1, - .mono_shift =3D DL1_DATA_SFT, - .enable_reg =3D AFE_DAC_CON0, - .enable_shift =3D DL1_ON_SFT, - .hd_reg =3D AFE_MEMIF_HD_MODE, - .hd_align_reg =3D AFE_MEMIF_HDALIGN, - .hd_shift =3D DL1_HD_SFT, - .hd_align_mshift =3D DL1_HD_ALIGN_SFT, - .agent_disable_reg =3D -1, - .agent_disable_shift =3D -1, - .msb_reg =3D -1, - .msb_shift =3D -1, - }, - [MT8183_MEMIF_DL2] =3D { - .name =3D "DL2", - .id =3D MT8183_MEMIF_DL2, - .reg_ofs_base =3D AFE_DL2_BASE, - .reg_ofs_cur =3D AFE_DL2_CUR, - .reg_ofs_end =3D AFE_DL2_END, - .reg_ofs_base_msb =3D AFE_DL2_BASE_MSB, - .reg_ofs_cur_msb =3D AFE_DL2_CUR_MSB, - .reg_ofs_end_msb =3D AFE_DL2_END_MSB, - .fs_reg =3D AFE_DAC_CON1, - .fs_shift =3D DL2_MODE_SFT, - .fs_maskbit =3D DL2_MODE_MASK, - .mono_reg =3D AFE_DAC_CON1, - .mono_shift =3D DL2_DATA_SFT, - .enable_reg =3D AFE_DAC_CON0, - .enable_shift =3D DL2_ON_SFT, - .hd_reg =3D AFE_MEMIF_HD_MODE, - .hd_align_reg =3D AFE_MEMIF_HDALIGN, - .hd_shift =3D DL2_HD_SFT, - .hd_align_mshift =3D DL2_HD_ALIGN_SFT, - .agent_disable_reg =3D -1, - .agent_disable_shift =3D -1, - .msb_reg =3D -1, - .msb_shift =3D -1, - }, - [MT8183_MEMIF_DL3] =3D { - .name =3D "DL3", - .id =3D MT8183_MEMIF_DL3, - .reg_ofs_base =3D AFE_DL3_BASE, - .reg_ofs_cur =3D AFE_DL3_CUR, - .reg_ofs_end =3D AFE_DL3_END, - .reg_ofs_base_msb =3D AFE_DL3_BASE_MSB, - .reg_ofs_cur_msb =3D AFE_DL3_CUR_MSB, - .reg_ofs_end_msb =3D AFE_DL3_END_MSB, - .fs_reg =3D AFE_DAC_CON2, - .fs_shift =3D DL3_MODE_SFT, - .fs_maskbit =3D DL3_MODE_MASK, - .mono_reg =3D AFE_DAC_CON1, - .mono_shift =3D DL3_DATA_SFT, - .enable_reg =3D AFE_DAC_CON0, - .enable_shift =3D DL3_ON_SFT, - .hd_reg =3D AFE_MEMIF_HD_MODE, - .hd_align_reg =3D AFE_MEMIF_HDALIGN, - .hd_shift =3D DL3_HD_SFT, - .hd_align_mshift =3D DL3_HD_ALIGN_SFT, - .agent_disable_reg =3D -1, - .agent_disable_shift =3D -1, - .msb_reg =3D -1, - .msb_shift =3D -1, - }, - [MT8183_MEMIF_VUL2] =3D { - .name =3D "VUL2", - .id =3D MT8183_MEMIF_VUL2, - .reg_ofs_base =3D AFE_VUL2_BASE, - .reg_ofs_cur =3D AFE_VUL2_CUR, - .reg_ofs_end =3D AFE_VUL2_END, - .reg_ofs_base_msb =3D AFE_VUL2_BASE_MSB, - .reg_ofs_cur_msb =3D AFE_VUL2_CUR_MSB, - .reg_ofs_end_msb =3D AFE_VUL2_END_MSB, - .fs_reg =3D AFE_DAC_CON2, - .fs_shift =3D VUL2_MODE_SFT, - .fs_maskbit =3D VUL2_MODE_MASK, - .mono_reg =3D AFE_DAC_CON2, - .mono_shift =3D VUL2_DATA_SFT, - .enable_reg =3D AFE_DAC_CON0, - .enable_shift =3D VUL2_ON_SFT, - .hd_reg =3D AFE_MEMIF_HD_MODE, - .hd_align_reg =3D AFE_MEMIF_HDALIGN, - .hd_shift =3D VUL2_HD_SFT, - .hd_align_mshift =3D VUL2_HD_ALIGN_SFT, - .agent_disable_reg =3D -1, - .agent_disable_shift =3D -1, - .msb_reg =3D -1, - .msb_shift =3D -1, - }, - [MT8183_MEMIF_AWB] =3D { - .name =3D "AWB", - .id =3D MT8183_MEMIF_AWB, - .reg_ofs_base =3D AFE_AWB_BASE, - .reg_ofs_cur =3D AFE_AWB_CUR, - .reg_ofs_end =3D AFE_AWB_END, - .reg_ofs_base_msb =3D AFE_AWB_BASE_MSB, - .reg_ofs_cur_msb =3D AFE_AWB_CUR_MSB, - .reg_ofs_end_msb =3D AFE_AWB_END_MSB, - .fs_reg =3D AFE_DAC_CON1, - .fs_shift =3D AWB_MODE_SFT, - .fs_maskbit =3D AWB_MODE_MASK, - .mono_reg =3D AFE_DAC_CON1, - .mono_shift =3D AWB_DATA_SFT, - .enable_reg =3D AFE_DAC_CON0, - .enable_shift =3D AWB_ON_SFT, - .hd_reg =3D AFE_MEMIF_HD_MODE, - .hd_align_reg =3D AFE_MEMIF_HDALIGN, - .hd_shift =3D AWB_HD_SFT, - .hd_align_mshift =3D AWB_HD_ALIGN_SFT, - .agent_disable_reg =3D -1, - .agent_disable_shift =3D -1, - .msb_reg =3D -1, - .msb_shift =3D -1, - }, - [MT8183_MEMIF_AWB2] =3D { - .name =3D "AWB2", - .id =3D MT8183_MEMIF_AWB2, - .reg_ofs_base =3D AFE_AWB2_BASE, - .reg_ofs_cur =3D AFE_AWB2_CUR, - .reg_ofs_end =3D AFE_AWB2_END, - .reg_ofs_base_msb =3D AFE_AWB2_BASE_MSB, - .reg_ofs_cur_msb =3D AFE_AWB2_CUR_MSB, - .reg_ofs_end_msb =3D AFE_AWB2_END_MSB, - .fs_reg =3D AFE_DAC_CON2, - .fs_shift =3D AWB2_MODE_SFT, - .fs_maskbit =3D AWB2_MODE_MASK, - .mono_reg =3D AFE_DAC_CON2, - .mono_shift =3D AWB2_DATA_SFT, - .enable_reg =3D AFE_DAC_CON0, - .enable_shift =3D AWB2_ON_SFT, - .hd_reg =3D AFE_MEMIF_HD_MODE, - .hd_align_reg =3D AFE_MEMIF_HDALIGN, - .hd_shift =3D AWB2_HD_SFT, - .hd_align_mshift =3D AWB2_ALIGN_SFT, - .agent_disable_reg =3D -1, - .agent_disable_shift =3D -1, - .msb_reg =3D -1, - .msb_shift =3D -1, - }, - [MT8183_MEMIF_VUL12] =3D { - .name =3D "VUL12", - .id =3D MT8183_MEMIF_VUL12, - .reg_ofs_base =3D AFE_VUL_D2_BASE, - .reg_ofs_cur =3D AFE_VUL_D2_CUR, - .reg_ofs_end =3D AFE_VUL_D2_END, - .reg_ofs_base_msb =3D AFE_VUL_D2_BASE_MSB, - .reg_ofs_cur_msb =3D AFE_VUL_D2_CUR_MSB, - .reg_ofs_end_msb =3D AFE_VUL_D2_END_MSB, - .fs_reg =3D AFE_DAC_CON0, - .fs_shift =3D VUL12_MODE_SFT, - .fs_maskbit =3D VUL12_MODE_MASK, - .mono_reg =3D AFE_DAC_CON0, - .mono_shift =3D VUL12_MONO_SFT, - .enable_reg =3D AFE_DAC_CON0, - .enable_shift =3D VUL12_ON_SFT, - .hd_reg =3D AFE_MEMIF_HD_MODE, - .hd_align_reg =3D AFE_MEMIF_HDALIGN, - .hd_shift =3D VUL12_HD_SFT, - .hd_align_mshift =3D VUL12_HD_ALIGN_SFT, - .agent_disable_reg =3D -1, - .agent_disable_shift =3D -1, - .msb_reg =3D -1, - .msb_shift =3D -1, - }, - [MT8183_MEMIF_MOD_DAI] =3D { - .name =3D "MOD_DAI", - .id =3D MT8183_MEMIF_MOD_DAI, - .reg_ofs_base =3D AFE_MOD_DAI_BASE, - .reg_ofs_cur =3D AFE_MOD_DAI_CUR, - .reg_ofs_end =3D AFE_MOD_DAI_END, - .reg_ofs_base_msb =3D AFE_MOD_DAI_BASE_MSB, - .reg_ofs_cur_msb =3D AFE_MOD_DAI_CUR_MSB, - .reg_ofs_end_msb =3D AFE_MOD_DAI_END_MSB, - .fs_reg =3D AFE_DAC_CON1, - .fs_shift =3D MOD_DAI_MODE_SFT, - .fs_maskbit =3D MOD_DAI_MODE_MASK, - .mono_reg =3D -1, - .mono_shift =3D 0, - .enable_reg =3D AFE_DAC_CON0, - .enable_shift =3D MOD_DAI_ON_SFT, - .hd_reg =3D AFE_MEMIF_HD_MODE, - .hd_align_reg =3D AFE_MEMIF_HDALIGN, - .hd_shift =3D MOD_DAI_HD_SFT, - .hd_align_mshift =3D MOD_DAI_HD_ALIGN_SFT, - .agent_disable_reg =3D -1, - .agent_disable_shift =3D -1, - .msb_reg =3D -1, - .msb_shift =3D -1, - }, - [MT8183_MEMIF_HDMI] =3D { - .name =3D "HDMI", - .id =3D MT8183_MEMIF_HDMI, - .reg_ofs_base =3D AFE_HDMI_OUT_BASE, - .reg_ofs_cur =3D AFE_HDMI_OUT_CUR, - .reg_ofs_end =3D AFE_HDMI_OUT_END, - .reg_ofs_base_msb =3D AFE_HDMI_OUT_BASE_MSB, - .reg_ofs_cur_msb =3D AFE_HDMI_OUT_CUR_MSB, - .reg_ofs_end_msb =3D AFE_HDMI_OUT_END_MSB, - .fs_reg =3D -1, - .fs_shift =3D -1, - .fs_maskbit =3D -1, - .mono_reg =3D -1, - .mono_shift =3D -1, - .enable_reg =3D -1, /* control in tdm for sync start */ - .enable_shift =3D -1, - .hd_reg =3D AFE_MEMIF_HD_MODE, - .hd_align_reg =3D AFE_MEMIF_HDALIGN, - .hd_shift =3D HDMI_HD_SFT, - .hd_align_mshift =3D HDMI_HD_ALIGN_SFT, - .agent_disable_reg =3D -1, - .agent_disable_shift =3D -1, - .msb_reg =3D -1, - .msb_shift =3D -1, - }, + MT8183_MEMIF(DL1, AFE_DAC_CON1, AFE_DAC_CON1), + MT8183_MEMIF(DL2, AFE_DAC_CON1, AFE_DAC_CON1), + MT8183_MEMIF(DL3, AFE_DAC_CON2, AFE_DAC_CON1), + MT8183_MEMIF(VUL2, AFE_DAC_CON2, AFE_DAC_CON2), + MT8183_MEMIF(AWB, AFE_DAC_CON1, AFE_DAC_CON1), + MT8183_MEMIF(AWB2, AFE_DAC_CON2, AFE_DAC_CON2), + MT8183_MEMIF(VUL12, AFE_DAC_CON0, AFE_DAC_CON0), + MT8183_MEMIF(MOD_DAI, AFE_DAC_CON1, -1), + /* enable control in tdm for sync start */ + MT8183_MEMIF_BASE(HDMI, -1, -1, -1), }; =20 static const struct mtk_base_irq_data irq_data[MT8183_IRQ_NUM] =3D { --=20 2.49.0.850.g28803427d3-goog From nobody Fri Dec 19 06:31:34 2025 Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11C6A235345 for ; Fri, 25 Apr 2025 08:26:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745569563; cv=none; b=d3R6xmNpeojqzNDc+OE20P/6OQM5Yo9ekQUs8RNsxs040P/FrXToS3I7x94XsrecsGz4qF5kT3pSZXQ71IyvLhF19p9sqQHuZ/XSJvnNlBso4ltZV+j/HayhMEqBPNkYnKb0yujPViSibnt6g3Rx3K6AtDDKFW7T0WdlChyaoRc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745569563; c=relaxed/simple; bh=d43mG7XLHUOysc4w/HBnmO/fwY95tEB61g+ax9MdlSA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=a+pJUIoerzTlZTqE2q8FfQI8uu7aNUjTtMmMpY0dqVMP65oy0qLUxAVF+2sRQyceHguGe+6j/rbi7tkSHXsq0YSYAHWSnm9C/BFWo7L0k2bQ5xMrz46+zRGTcK/hm4rVKc2YuuAIr4wben46vcsuM77zKTLe2mtOALHJDogFPq0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=HX0PliiB; arc=none smtp.client-ip=209.85.215.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="HX0PliiB" Received: by mail-pg1-f181.google.com with SMTP id 41be03b00d2f7-b03bc416962so1402909a12.0 for ; Fri, 25 Apr 2025 01:26:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1745569561; x=1746174361; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=25qtAe27NbS9Sy8H+gEjhudVwNOOMd+NsbpUa5zlVyE=; b=HX0PliiBGkdiJLvZTgUza6hA3vn2Abf+Sozd+fTi3hdbuzaXwWNfYwjXonUP6+YLeP xMZdScDapIV+CtRLaOj0Ffaj/uY+uaT7jDkxCOr+CFov7VcwQopD5zbAEk+ULQIc8QAa VfnyvD8X5HFlZ1srtDHE92u5U4pZs5cbo68ME= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745569561; x=1746174361; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=25qtAe27NbS9Sy8H+gEjhudVwNOOMd+NsbpUa5zlVyE=; b=DwdVW51pWipGsvHSOi2KNk0hrYvwM2hSuuOmcVXGoNT3Ta/ygbkE7/yP3cFioHr7In q8pmn+KkgIOcKvLlj/dKnTlrMc0+zgrpW4KJM0/w1mrtpt72y9avwGa5i5hBjUBKnWI4 /naM0rf2FJuT1bhaZTew/CBw2L4tZzYI3pqJQFwZVzd41XV7DzSxmaaxxTMDiUMqzqQm 5Mddz2dKdWtY/GoApAfqnlf1B2BGkQEy+jzmtaxeKY6MCO6+MHyzzsl2Asi+jBYjCq7U zjMahlak1l8ijhznwQ7Rf6TIjfd/UgxHtqEwAcXYR0TY8LsjOczyg3agxzgmwewfcTaX +51A== X-Forwarded-Encrypted: i=1; AJvYcCXBp5Y6PVddn8xIsc32KA1/Bqnov0Z1t4CPxnmHbdc5k465dv+FUwnR+1vHDfwktVQwAH/ashR6lbtOmrs=@vger.kernel.org X-Gm-Message-State: AOJu0YwGbwuoNn06B8GAv+WR2hgbcHTXuCgOoe22LFUwfKFTpJt6SS6V 81MR+Tkr9dBxSJ6hjRgZ4Ysn1krh6gqMNq0wh+pGrf4iv9RRqcpprBDrz958rg== X-Gm-Gg: ASbGncsKPaI+onnTVpU26+JCmDRfS4B9C3tSnrDHIOovDlqC8aF6ZCUd+4jVT+MZmL8 LUrxRLEFjJqf0/54YNDJtKeEv8k4EeLtGwV8eHt0sQDGRuRTG8yL0u/2u+2hoCyFjWohC+ovCvy pGFhLeOMLek3KWcJVzrPmz6p/0r00Tgl0mstcujQcZHzLya/Zk3f2Y4576PoWVqyvUJv8PiUQWO N6hDyZXbYXSR2GpvayYiCkWdwLZJc9nJXywr3TlKklJK4FxiWJ0OpyFs+lKJrVH/0D5UP7cuB7i KlcXtAwmABglwbKzm85+K87igggF8EqGybKFIWkVClr29potCWbekbIdhlU= X-Google-Smtp-Source: AGHT+IHRb1TUeUC4eX4OBKdkwz3OlzDchQGfNMxwnYR0yofVxixYxMjC/RCpY9rv5Oen0VtQF6OBhQ== X-Received: by 2002:a17:90b:2c8c:b0:2ee:8e75:4aeb with SMTP id 98e67ed59e1d1-309f7de6abdmr2641119a91.17.1745569561318; Fri, 25 Apr 2025 01:26:01 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2401:fa00:1:10:4b10:d9aa:98d0:5bb5]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f77417d6sm1019179a91.4.2025.04.25.01.25.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 01:26:00 -0700 (PDT) From: Chen-Yu Tsai To: Liam Girdwood , Mark Brown , Matthias Brugger , AngeloGioacchino Del Regno Cc: Chen-Yu Tsai , Jaroslav Kysela , Takashi Iwai , Jiaxin Yu , linux-sound@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Darren Ye Subject: [PATCH 2/3] ASoC: mediatek: mt8183-afe-pcm: Shorten irq_data table using macros Date: Fri, 25 Apr 2025 16:25:49 +0800 Message-ID: <20250425082551.1467042-3-wenst@chromium.org> X-Mailer: git-send-email 2.49.0.850.g28803427d3-goog In-Reply-To: <20250425082551.1467042-1-wenst@chromium.org> References: <20250425082551.1467042-1-wenst@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The irq_data table describes all the supported interrupts for the audio frontend. The parameters are either the same or can be derived from the interrupt number. This results in a very long table (in source code) that can be shortened with macros. Do just that. Signed-off-by: Chen-Yu Tsai Reviewed-by: AngeloGioacchino Del Regno --- sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 176 ++++----------------- 1 file changed, 33 insertions(+), 143 deletions(-) diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c b/sound/soc/mediate= k/mt8183/mt8183-afe-pcm.c index 3e2334e9324b..5e340e77b9d5 100644 --- a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c +++ b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c @@ -492,150 +492,40 @@ static const struct mtk_base_memif_data memif_data[M= T8183_MEMIF_NUM] =3D { MT8183_MEMIF_BASE(HDMI, -1, -1, -1), }; =20 +#define MT8183_AFE_IRQ_BASE(_id, _fs_reg, _fs_shift, _fs_maskbit) \ + [MT8183_IRQ_##_id] =3D { \ + .id =3D MT8183_IRQ_##_id, \ + .irq_cnt_reg =3D AFE_IRQ_MCU_CNT##_id, \ + .irq_cnt_shift =3D 0, \ + .irq_cnt_maskbit =3D 0x3ffff, \ + .irq_fs_reg =3D _fs_reg, \ + .irq_fs_shift =3D _fs_shift, \ + .irq_fs_maskbit =3D _fs_maskbit, \ + .irq_en_reg =3D AFE_IRQ_MCU_CON0, \ + .irq_en_shift =3D IRQ##_id##_MCU_ON_SFT, \ + .irq_clr_reg =3D AFE_IRQ_MCU_CLR, \ + .irq_clr_shift =3D IRQ##_id##_MCU_CLR_SFT, \ + } + +#define MT8183_AFE_IRQ(_id) \ + MT8183_AFE_IRQ_BASE(_id, AFE_IRQ_MCU_CON1 + _id / 8 * 4, \ + IRQ##_id##_MCU_MODE_SFT, \ + IRQ##_id##_MCU_MODE_MASK) + +#define MT8183_AFE_IRQ_NOFS(_id) MT8183_AFE_IRQ_BASE(_id, -1, -1, -1) + static const struct mtk_base_irq_data irq_data[MT8183_IRQ_NUM] =3D { - [MT8183_IRQ_0] =3D { - .id =3D MT8183_IRQ_0, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT0, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON1, - .irq_fs_shift =3D IRQ0_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ0_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ0_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ0_MCU_CLR_SFT, - }, - [MT8183_IRQ_1] =3D { - .id =3D MT8183_IRQ_1, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT1, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON1, - .irq_fs_shift =3D IRQ1_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ1_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ1_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ1_MCU_CLR_SFT, - }, - [MT8183_IRQ_2] =3D { - .id =3D MT8183_IRQ_2, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT2, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON1, - .irq_fs_shift =3D IRQ2_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ2_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ2_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ2_MCU_CLR_SFT, - }, - [MT8183_IRQ_3] =3D { - .id =3D MT8183_IRQ_3, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT3, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON1, - .irq_fs_shift =3D IRQ3_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ3_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ3_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ3_MCU_CLR_SFT, - }, - [MT8183_IRQ_4] =3D { - .id =3D MT8183_IRQ_4, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT4, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON1, - .irq_fs_shift =3D IRQ4_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ4_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ4_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ4_MCU_CLR_SFT, - }, - [MT8183_IRQ_5] =3D { - .id =3D MT8183_IRQ_5, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT5, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON1, - .irq_fs_shift =3D IRQ5_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ5_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ5_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ5_MCU_CLR_SFT, - }, - [MT8183_IRQ_6] =3D { - .id =3D MT8183_IRQ_6, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT6, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON1, - .irq_fs_shift =3D IRQ6_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ6_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ6_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ6_MCU_CLR_SFT, - }, - [MT8183_IRQ_7] =3D { - .id =3D MT8183_IRQ_7, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT7, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON1, - .irq_fs_shift =3D IRQ7_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ7_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ7_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ7_MCU_CLR_SFT, - }, - [MT8183_IRQ_8] =3D { - .id =3D MT8183_IRQ_8, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT8, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D -1, - .irq_fs_shift =3D -1, - .irq_fs_maskbit =3D -1, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ8_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ8_MCU_CLR_SFT, - }, - [MT8183_IRQ_11] =3D { - .id =3D MT8183_IRQ_11, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT11, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON2, - .irq_fs_shift =3D IRQ11_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ11_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ11_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ11_MCU_CLR_SFT, - }, - [MT8183_IRQ_12] =3D { - .id =3D MT8183_IRQ_12, - .irq_cnt_reg =3D AFE_IRQ_MCU_CNT12, - .irq_cnt_shift =3D 0, - .irq_cnt_maskbit =3D 0x3ffff, - .irq_fs_reg =3D AFE_IRQ_MCU_CON2, - .irq_fs_shift =3D IRQ12_MCU_MODE_SFT, - .irq_fs_maskbit =3D IRQ12_MCU_MODE_MASK, - .irq_en_reg =3D AFE_IRQ_MCU_CON0, - .irq_en_shift =3D IRQ12_MCU_ON_SFT, - .irq_clr_reg =3D AFE_IRQ_MCU_CLR, - .irq_clr_shift =3D IRQ12_MCU_CLR_SFT, - }, + MT8183_AFE_IRQ(0), + MT8183_AFE_IRQ(1), + MT8183_AFE_IRQ(2), + MT8183_AFE_IRQ(3), + MT8183_AFE_IRQ(4), + MT8183_AFE_IRQ(5), + MT8183_AFE_IRQ(6), + MT8183_AFE_IRQ(7), + MT8183_AFE_IRQ_NOFS(8), + MT8183_AFE_IRQ(11), + MT8183_AFE_IRQ(12), }; =20 static bool mt8183_is_volatile_reg(struct device *dev, unsigned int reg) --=20 2.49.0.850.g28803427d3-goog From nobody Fri Dec 19 06:31:34 2025 Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ABF282356B2 for ; Fri, 25 Apr 2025 08:26:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745569566; cv=none; b=T9p8/KL5FLXlN44wbcKwk8Nw6nb2KypsVG0ZzHzo0F4ydVsy2YgVF3rwNSjVs/HbJskrA/xJyiY1hGJ2tpIHIjew/jKVLfZLNigh5Nym0A2LA3duTyyt/2O7wPpaUvPLv9V+qS5kr/2M0egFrviS4mQ6/QOMUwkJpEwkiBKs58o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745569566; c=relaxed/simple; bh=sd9Zy3RykMw81bElq6sMYsARq4HQCJuVXQCjD6fXNKE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DrTf4xvmfPIbx3OVrkH2V2fUacmgmDNtT1SJ9YsdtONx+J47fvFCqG5F1t8hBjoUkYosxrrPNfVQV5Zn6D7AJ+4b0aXRh/ZzinkuREQm+Za+Y7o4sOQ2t2J2whulWgs4MIhyxyxCaV/vrNQEaQV6+J6GjnicdPUo548ombGet3M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=LPALg9Zy; arc=none smtp.client-ip=209.85.216.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="LPALg9Zy" Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-303a66af07eso1509298a91.2 for ; Fri, 25 Apr 2025 01:26:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1745569564; x=1746174364; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UIoPxPd/4SKxFzQ2sbT9yyaISz0ZfnDIApKeqMxKAVM=; b=LPALg9ZyJfzZr0rOhmaGx91kJTExQbfQYKmej7aoK4YwQ+4p8gDbRqBqmrCJ+0KYdY fEhauZdgUQecwXzOtVUb+Ikz8Tw+H48x1nTsiRwcamScPKufEQaWw31b7XwuUf8u6Bq8 rnCJWtaGJ2DzxyKC0sa5lQyRtWOSA7qh+xesE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745569564; x=1746174364; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UIoPxPd/4SKxFzQ2sbT9yyaISz0ZfnDIApKeqMxKAVM=; b=XGJyzIFae0d26C3eOS0IW45kxzIu5VZCEGyKHYhHgwBnTpUZPJtDhrH5EBgpFYZVkj tL/0k35vzDnTBuYaRGr4LIO/IRpOHJt26JAuhXIVWzm602w6wCludo0jU7O9Ruxb9OOI v0vK2NaR/+SXM95Oz+k4NbvFKUkmqNuFInaXH+cwlQPzzPkAVLsTyhzxQEP7/shF0mgZ pP6kI6rpNYX4RdcopMThoP9OU1A7zdHNoLMhf86Mk2r827AX5K7dcexJj500vp2U1c3U lAz+884VoSzk+3kh5UhK7b+cYQRyq6MoDC949kOlnlZdWoISnzhbPRyTUeF2qeH7Ggum MBjg== X-Forwarded-Encrypted: i=1; AJvYcCVjfHPXcqwRwha58uP0Cq+tzqT7S3fWnUXtU8aNOIkHaxvkhDNRwOcAQbIBodPQhuhpANiyDplTkffJyHY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx0sVgJkHI4zje3ijeICnEHKG//JGuMYNzsYJ6n2CN0hOzBqqxH E/+Wo2GSDM7egibddr0P97UjrV0Xq4dC0Lau4fdYCR3UDg+MtUwjBkZDf39Qyw== X-Gm-Gg: ASbGnctMn3skMdyPBUwrS1Oeb97D8TzHS3X9Xpvf3waHMIVx7t6OUQVLbI2FYkpX9vJ gTEezTiwMmkeGF4CuDBQSiw/DcnMQTaKbWdIVSrwYePUeeX3Xsh2pXQNOAYJPxEWMPiFT/TABg/ zCXB2yRYdDItWwWms8E0cWVUxxSszs5z5KbJmU5sGVSadDlIm+k2v/3q7abMNKeHzHGqTKFEI2W CuFm4irrhSLQNmx4cF1tTLZY2NyZnTnEArBrXM0Dd4QPML6HxZEHyvulvIXQRZT9ay23RHuHlVD nlCiXm4rjD7l5sIFdAN1I4hba7JRB/ZrjidmzG3StYs57mnOpsJlJpFPJJVIYGg0RR0CDA== X-Google-Smtp-Source: AGHT+IF7ci9aHN2WDhs7A1XDuuym2fXQ0c+JrRPPEzEqgV1pI/nJMNeBjSjR3voxcnyJVTXvDDG1FQ== X-Received: by 2002:a17:90b:35c5:b0:2ee:c6c8:d89f with SMTP id 98e67ed59e1d1-309f7df0012mr2983136a91.14.1745569563829; Fri, 25 Apr 2025 01:26:03 -0700 (PDT) Received: from wenstp920.tpe.corp.google.com ([2401:fa00:1:10:4b10:d9aa:98d0:5bb5]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309f77417d6sm1019179a91.4.2025.04.25.01.26.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 01:26:03 -0700 (PDT) From: Chen-Yu Tsai To: Liam Girdwood , Mark Brown , Matthias Brugger , AngeloGioacchino Del Regno Cc: Chen-Yu Tsai , Jaroslav Kysela , Takashi Iwai , Jiaxin Yu , linux-sound@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Darren Ye Subject: [PATCH 3/3] ASoC: mediatek: mt8183-afe-pcm: shorten mt8183_is_volatile_reg() Date: Fri, 25 Apr 2025 16:25:50 +0800 Message-ID: <20250425082551.1467042-4-wenst@chromium.org> X-Mailer: git-send-email 2.49.0.850.g28803427d3-goog In-Reply-To: <20250425082551.1467042-1-wenst@chromium.org> References: <20250425082551.1467042-1-wenst@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" mt8183_is_volatile_reg() is a large switch-case block that lists out every register that is volatile. Since many pairs of registers have consecutive addresses, the cases can be compressed down with the ellipsis, i.e. GCC extension "case ranges" [1] to cover more addresses in one case, shortening the source code. This is not completely the same, since the addresses are 4-byte aligned, and using the case ranges feature adds all unaligned addresses in between. In practice this doesn't matter since the unaligned addresses are blocked by the regmap core. This also ends up compiling slightly smaller with a reduction of 128 bytes in the text section. [1] https://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html Signed-off-by: Chen-Yu Tsai Reviewed-by: AngeloGioacchino Del Regno --- sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 152 ++++++--------------- 1 file changed, 40 insertions(+), 112 deletions(-) diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c b/sound/soc/mediate= k/mt8183/mt8183-afe-pcm.c index 5e340e77b9d5..c88a6705bf7e 100644 --- a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c +++ b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c @@ -533,86 +533,46 @@ static bool mt8183_is_volatile_reg(struct device *dev= , unsigned int reg) /* these auto-gen reg has read-only bit, so put it as volatile */ /* volatile reg cannot be cached, so cannot be set when power off */ switch (reg) { - case AUDIO_TOP_CON0: /* reg bit controlled by CCF */ - case AUDIO_TOP_CON1: /* reg bit controlled by CCF */ + case AUDIO_TOP_CON0 ... AUDIO_TOP_CON1: /* reg bit controlled by CCF */ case AUDIO_TOP_CON3: - case AFE_DL1_CUR: - case AFE_DL1_END: - case AFE_DL2_CUR: - case AFE_DL2_END: - case AFE_AWB_END: - case AFE_AWB_CUR: - case AFE_VUL_END: - case AFE_VUL_CUR: - case AFE_MEMIF_MON0: - case AFE_MEMIF_MON1: - case AFE_MEMIF_MON2: - case AFE_MEMIF_MON3: - case AFE_MEMIF_MON4: - case AFE_MEMIF_MON5: - case AFE_MEMIF_MON6: - case AFE_MEMIF_MON7: - case AFE_MEMIF_MON8: - case AFE_MEMIF_MON9: - case AFE_ADDA_SRC_DEBUG_MON0: - case AFE_ADDA_SRC_DEBUG_MON1: - case AFE_ADDA_UL_SRC_MON0: - case AFE_ADDA_UL_SRC_MON1: + case AFE_DL1_CUR ... AFE_DL1_END: + case AFE_DL2_CUR ... AFE_DL2_END: + case AFE_AWB_END ... AFE_AWB_CUR: + case AFE_VUL_END ... AFE_VUL_CUR: + case AFE_MEMIF_MON0 ... AFE_MEMIF_MON9: + case AFE_ADDA_SRC_DEBUG_MON0 ... AFE_ADDA_SRC_DEBUG_MON1: + case AFE_ADDA_UL_SRC_MON0 ... AFE_ADDA_UL_SRC_MON1: case AFE_SIDETONE_MON: - case AFE_SIDETONE_CON0: - case AFE_SIDETONE_COEFF: + case AFE_SIDETONE_CON0 ... AFE_SIDETONE_COEFF: case AFE_BUS_MON0: - case AFE_MRGIF_MON0: - case AFE_MRGIF_MON1: - case AFE_MRGIF_MON2: - case AFE_I2S_MON: + case AFE_MRGIF_MON0 ... AFE_I2S_MON: case AFE_DAC_MON: - case AFE_VUL2_END: - case AFE_VUL2_CUR: - case AFE_IRQ0_MCU_CNT_MON: - case AFE_IRQ6_MCU_CNT_MON: - case AFE_MOD_DAI_END: - case AFE_MOD_DAI_CUR: - case AFE_VUL_D2_END: - case AFE_VUL_D2_CUR: - case AFE_DL3_CUR: - case AFE_DL3_END: + case AFE_VUL2_END ... AFE_VUL2_CUR: + case AFE_IRQ0_MCU_CNT_MON ... AFE_IRQ6_MCU_CNT_MON: + case AFE_MOD_DAI_END ... AFE_MOD_DAI_CUR: + case AFE_VUL_D2_END ... AFE_VUL_D2_CUR: + case AFE_DL3_CUR ... AFE_DL3_END: case AFE_HDMI_OUT_CON0: - case AFE_HDMI_OUT_CUR: - case AFE_HDMI_OUT_END: - case AFE_IRQ3_MCU_CNT_MON: - case AFE_IRQ4_MCU_CNT_MON: - case AFE_IRQ_MCU_STATUS: - case AFE_IRQ_MCU_CLR: + case AFE_HDMI_OUT_CUR ... AFE_HDMI_OUT_END: + case AFE_IRQ3_MCU_CNT_MON... AFE_IRQ4_MCU_CNT_MON: + case AFE_IRQ_MCU_STATUS ... AFE_IRQ_MCU_CLR: case AFE_IRQ_MCU_MON2: - case AFE_IRQ1_MCU_CNT_MON: - case AFE_IRQ2_MCU_CNT_MON: - case AFE_IRQ1_MCU_EN_CNT_MON: - case AFE_IRQ5_MCU_CNT_MON: + case AFE_IRQ1_MCU_CNT_MON ... AFE_IRQ5_MCU_CNT_MON: case AFE_IRQ7_MCU_CNT_MON: case AFE_GAIN1_CUR: case AFE_GAIN2_CUR: case AFE_SRAM_DELSEL_CON0: - case AFE_SRAM_DELSEL_CON2: - case AFE_SRAM_DELSEL_CON3: - case AFE_ASRC_2CH_CON12: - case AFE_ASRC_2CH_CON13: + case AFE_SRAM_DELSEL_CON2 ... AFE_SRAM_DELSEL_CON3: + case AFE_ASRC_2CH_CON12 ... AFE_ASRC_2CH_CON13: case PCM_INTF_CON2: - case FPGA_CFG0: - case FPGA_CFG1: - case FPGA_CFG2: - case FPGA_CFG3: - case AUDIO_TOP_DBG_MON0: - case AUDIO_TOP_DBG_MON1: - case AFE_IRQ8_MCU_CNT_MON: - case AFE_IRQ11_MCU_CNT_MON: - case AFE_IRQ12_MCU_CNT_MON: + case FPGA_CFG0 ... FPGA_CFG1: + case FPGA_CFG2 ... FPGA_CFG3: + case AUDIO_TOP_DBG_MON0 ... AUDIO_TOP_DBG_MON1: + case AFE_IRQ8_MCU_CNT_MON ... AFE_IRQ12_MCU_CNT_MON: case AFE_CBIP_MON0: - case AFE_CBIP_SLV_MUX_MON0: - case AFE_CBIP_SLV_DECODER_MON0: + case AFE_CBIP_SLV_MUX_MON0 ... AFE_CBIP_SLV_DECODER_MON0: case AFE_ADDA6_SRC_DEBUG_MON0: - case AFE_ADD6A_UL_SRC_MON0: - case AFE_ADDA6_UL_SRC_MON1: + case AFE_ADD6A_UL_SRC_MON0... AFE_ADDA6_UL_SRC_MON1: case AFE_DL1_CUR_MSB: case AFE_DL2_CUR_MSB: case AFE_AWB_CUR_MSB: @@ -622,55 +582,23 @@ static bool mt8183_is_volatile_reg(struct device *dev= , unsigned int reg) case AFE_VUL_D2_CUR_MSB: case AFE_DL3_CUR_MSB: case AFE_HDMI_OUT_CUR_MSB: - case AFE_AWB2_END: - case AFE_AWB2_CUR: + case AFE_AWB2_END ... AFE_AWB2_CUR: case AFE_AWB2_CUR_MSB: - case AFE_ADDA_DL_SDM_FIFO_MON: - case AFE_ADDA_DL_SRC_LCH_MON: - case AFE_ADDA_DL_SRC_RCH_MON: - case AFE_ADDA_DL_SDM_OUT_MON: - case AFE_CONNSYS_I2S_MON: - case AFE_ASRC_2CH_CON0: - case AFE_ASRC_2CH_CON2: - case AFE_ASRC_2CH_CON3: - case AFE_ASRC_2CH_CON4: - case AFE_ASRC_2CH_CON5: - case AFE_ASRC_2CH_CON7: - case AFE_ASRC_2CH_CON8: - case AFE_MEMIF_MON12: - case AFE_MEMIF_MON13: - case AFE_MEMIF_MON14: - case AFE_MEMIF_MON15: - case AFE_MEMIF_MON16: - case AFE_MEMIF_MON17: - case AFE_MEMIF_MON18: - case AFE_MEMIF_MON19: - case AFE_MEMIF_MON20: - case AFE_MEMIF_MON21: - case AFE_MEMIF_MON22: - case AFE_MEMIF_MON23: - case AFE_MEMIF_MON24: - case AFE_ADDA_MTKAIF_MON0: - case AFE_ADDA_MTKAIF_MON1: + case AFE_ADDA_DL_SDM_FIFO_MON ... AFE_ADDA_DL_SDM_OUT_MON: + case AFE_CONNSYS_I2S_MON ... AFE_ASRC_2CH_CON0: + case AFE_ASRC_2CH_CON2 ... AFE_ASRC_2CH_CON5: + case AFE_ASRC_2CH_CON7 ... AFE_ASRC_2CH_CON8: + case AFE_MEMIF_MON12 ... AFE_MEMIF_MON24: + case AFE_ADDA_MTKAIF_MON0 ... AFE_ADDA_MTKAIF_MON1: case AFE_AUD_PAD_TOP: case AFE_GENERAL1_ASRC_2CH_CON0: - case AFE_GENERAL1_ASRC_2CH_CON2: - case AFE_GENERAL1_ASRC_2CH_CON3: - case AFE_GENERAL1_ASRC_2CH_CON4: - case AFE_GENERAL1_ASRC_2CH_CON5: - case AFE_GENERAL1_ASRC_2CH_CON7: - case AFE_GENERAL1_ASRC_2CH_CON8: - case AFE_GENERAL1_ASRC_2CH_CON12: - case AFE_GENERAL1_ASRC_2CH_CON13: + case AFE_GENERAL1_ASRC_2CH_CON2 ... AFE_GENERAL1_ASRC_2CH_CON5: + case AFE_GENERAL1_ASRC_2CH_CON7 ... AFE_GENERAL1_ASRC_2CH_CON8: + case AFE_GENERAL1_ASRC_2CH_CON12 ... AFE_GENERAL1_ASRC_2CH_CON13: case AFE_GENERAL2_ASRC_2CH_CON0: - case AFE_GENERAL2_ASRC_2CH_CON2: - case AFE_GENERAL2_ASRC_2CH_CON3: - case AFE_GENERAL2_ASRC_2CH_CON4: - case AFE_GENERAL2_ASRC_2CH_CON5: - case AFE_GENERAL2_ASRC_2CH_CON7: - case AFE_GENERAL2_ASRC_2CH_CON8: - case AFE_GENERAL2_ASRC_2CH_CON12: - case AFE_GENERAL2_ASRC_2CH_CON13: + case AFE_GENERAL2_ASRC_2CH_CON2 ... AFE_GENERAL2_ASRC_2CH_CON5: + case AFE_GENERAL2_ASRC_2CH_CON7 ... AFE_GENERAL2_ASRC_2CH_CON8: + case AFE_GENERAL2_ASRC_2CH_CON12 ... AFE_GENERAL2_ASRC_2CH_CON13: return true; default: return false; --=20 2.49.0.850.g28803427d3-goog