From nobody Thu Dec 18 10:01:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E3B331FBE8D; Tue, 11 Feb 2025 11:34:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739273693; cv=none; b=VGZeZRf6XHfU5W0FqJhwcBK1V6SJDm6aetqdfR1r9EN0M+tYwHkXQomOW/iqYtBmYKrdMNOTVpNxeTMsXiVHUmfrOdhylrGPSbi+rXoL22I/OuYNXR6SdXXr0+k4EJQomk/5BQ0M7ZHf6oFiGeTvKp1Pjx7e7QFhjIdizk9J3Jo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739273693; c=relaxed/simple; bh=5pzBhh5ucIWspZaLBo+EfBkAmacG3sAwTXqbbDlvtiE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Dy0SpisWZbclI09aWimGUFKnqtBEog64F9VuGscHxYsPSxucGgbJtICyNQBzlDUvXMGTMbIZcVpAp9Z5a02J+7TH54e02HtGMWJvuN0J9C4B7FQfIW3vcApqk2eAOK/66czN8CaQwbA1IDcA5fdPcj4JTPim3A1SNeJWx5nq5b4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=f6RGs3Mc; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="f6RGs3Mc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1739273690; bh=5pzBhh5ucIWspZaLBo+EfBkAmacG3sAwTXqbbDlvtiE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=f6RGs3Mc4L3rAHcAkOunUw3UdNVFb0TA/7bJoKr5w0tXJ+pp5G8jf7jqCCNISsLFi FLr2Bdq8XB0mGtekEv07kFVa8qD/bcTdK2J2JUeQ+SQC7AUHmq9EwkV1qYLGqy+N6A aey+dAEOcjYyKt182YHH363CIyl28yTgVxHJRQd/4KPWRCjcf7h7hCl1TNlO82yMc2 mlDaWbo8lJI33DsqYwZTP1CTXmjVy6RCPHa9LIfOQbeED4XjvW8zgeSqa+Tzzj2jG5 kQEYMbBqKxBTMV+y97vJ0gMproQLlwB+zzaM44DGft4RCRgt+JSH6Mlrt1YyJhCgnf iuHXKebB87BpQ== Received: from IcarusMOD.eternityproject.eu (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by bali.collaboradmins.com (Postfix) with ESMTPSA id EBA8117E1561; Tue, 11 Feb 2025 12:34:48 +0100 (CET) From: AngeloGioacchino Del Regno To: chunkuang.hu@kernel.org Cc: p.zabel@pengutronix.de, airlied@gmail.com, simona@ffwll.ch, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com, ck.hu@mediatek.com, jitao.shi@mediatek.com, jie.qiu@mediatek.com, junzhi.zhao@mediatek.com, dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@collabora.com, dmitry.baryshkov@linaro.org, lewis.liao@mediatek.com, ives.chenjh@mediatek.com, tommyyl.chen@mediatek.com, jason-jh.lin@mediatek.com Subject: [PATCH v6 20/42] drm/mediatek: mtk_hdmi: Move audio params selection to new function Date: Tue, 11 Feb 2025 12:33:47 +0100 Message-ID: <20250211113409.1517534-21-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250211113409.1517534-1-angelogioacchino.delregno@collabora.com> References: <20250211113409.1517534-1-angelogioacchino.delregno@collabora.com> 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" In preparation for splitting common bits of this driver, move the audio params (codec, sample rate/size, input type, i2s format, etc) selection to a new function called mtk_hdmi_audio_params(). While at it, also rename "hdmi_params" to "aud_params" both to match the mtk_hdmi struct member name and to clarify that those parameters are for HDMI Audio and not for HDMI Video configuration. Reviewed-by: CK Hu Signed-off-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/mediatek/mtk_hdmi.c | 63 ++++++++++++++++------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek= /mtk_hdmi.c index 065750075d7c..5a3e0f4e553d 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -1465,19 +1465,13 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi = *hdmi, * HDMI audio codec callbacks */ =20 -static int mtk_hdmi_audio_hw_params(struct device *dev, void *data, - struct hdmi_codec_daifmt *daifmt, - struct hdmi_codec_params *params) +static int mtk_hdmi_audio_params(struct mtk_hdmi *hdmi, + struct hdmi_codec_daifmt *daifmt, + struct hdmi_codec_params *params) { - struct mtk_hdmi *hdmi =3D dev_get_drvdata(dev); - struct hdmi_audio_param hdmi_params; + struct hdmi_audio_param aud_params =3D { 0 }; unsigned int chan =3D params->cea.channels; =20 - if (!hdmi->audio_enable) { - dev_err(hdmi->dev, "hdmi audio is in disable state!\n"); - return -EINVAL; - } - dev_dbg(hdmi->dev, "%s: %u Hz, %d bit, %d channels\n", __func__, params->sample_rate, params->sample_width, chan); =20 @@ -1486,16 +1480,16 @@ static int mtk_hdmi_audio_hw_params(struct device *= dev, void *data, =20 switch (chan) { case 2: - hdmi_params.aud_input_chan_type =3D HDMI_AUD_CHAN_TYPE_2_0; + aud_params.aud_input_chan_type =3D HDMI_AUD_CHAN_TYPE_2_0; break; case 4: - hdmi_params.aud_input_chan_type =3D HDMI_AUD_CHAN_TYPE_4_0; + aud_params.aud_input_chan_type =3D HDMI_AUD_CHAN_TYPE_4_0; break; case 6: - hdmi_params.aud_input_chan_type =3D HDMI_AUD_CHAN_TYPE_5_1; + aud_params.aud_input_chan_type =3D HDMI_AUD_CHAN_TYPE_5_1; break; case 8: - hdmi_params.aud_input_chan_type =3D HDMI_AUD_CHAN_TYPE_7_1; + aud_params.aud_input_chan_type =3D HDMI_AUD_CHAN_TYPE_7_1; break; default: dev_err(hdmi->dev, "channel[%d] not supported!\n", chan); @@ -1519,31 +1513,44 @@ static int mtk_hdmi_audio_hw_params(struct device *= dev, void *data, =20 switch (daifmt->fmt) { case HDMI_I2S: - hdmi_params.aud_codec =3D HDMI_AUDIO_CODING_TYPE_PCM; - hdmi_params.aud_sample_size =3D HDMI_AUDIO_SAMPLE_SIZE_16; - hdmi_params.aud_input_type =3D HDMI_AUD_INPUT_I2S; - hdmi_params.aud_i2s_fmt =3D HDMI_I2S_MODE_I2S_24BIT; - hdmi_params.aud_mclk =3D HDMI_AUD_MCLK_128FS; + aud_params.aud_codec =3D HDMI_AUDIO_CODING_TYPE_PCM; + aud_params.aud_sample_size =3D HDMI_AUDIO_SAMPLE_SIZE_16; + aud_params.aud_input_type =3D HDMI_AUD_INPUT_I2S; + aud_params.aud_i2s_fmt =3D HDMI_I2S_MODE_I2S_24BIT; + aud_params.aud_mclk =3D HDMI_AUD_MCLK_128FS; break; case HDMI_SPDIF: - hdmi_params.aud_codec =3D HDMI_AUDIO_CODING_TYPE_PCM; - hdmi_params.aud_sample_size =3D HDMI_AUDIO_SAMPLE_SIZE_16; - hdmi_params.aud_input_type =3D HDMI_AUD_INPUT_SPDIF; + aud_params.aud_codec =3D HDMI_AUDIO_CODING_TYPE_PCM; + aud_params.aud_sample_size =3D HDMI_AUDIO_SAMPLE_SIZE_16; + aud_params.aud_input_type =3D HDMI_AUD_INPUT_SPDIF; break; default: dev_err(hdmi->dev, "%s: Invalid DAI format %d\n", __func__, daifmt->fmt); return -EINVAL; } - - memcpy(&hdmi_params.codec_params, params, - sizeof(hdmi_params.codec_params)); - memcpy(&hdmi->aud_param, &hdmi_params, sizeof(hdmi_params)); + memcpy(&aud_params.codec_params, params, sizeof(aud_params.codec_params)); + memcpy(&hdmi->aud_param, &aud_params, sizeof(aud_params)); =20 dev_dbg(hdmi->dev, "codec:%d, input:%d, channel:%d, fs:%d\n", - hdmi_params.aud_codec, hdmi_params.aud_input_type, - hdmi_params.aud_input_chan_type, hdmi_params.codec_params.sample_rate); + aud_params.aud_codec, aud_params.aud_input_type, + aud_params.aud_input_chan_type, aud_params.codec_params.sample_rate); + + return 0; +} + +static int mtk_hdmi_audio_hw_params(struct device *dev, void *data, + struct hdmi_codec_daifmt *daifmt, + struct hdmi_codec_params *params) +{ + struct mtk_hdmi *hdmi =3D dev_get_drvdata(dev); + + if (!hdmi->audio_enable) { + dev_err(hdmi->dev, "hdmi audio is in disable state!\n"); + return -EINVAL; + } =20 + mtk_hdmi_audio_params(hdmi, daifmt, params); mtk_hdmi_aud_output_config(hdmi, &hdmi->mode); =20 return 0; --=20 2.48.1