From nobody Fri Oct 3 14:34:19 2025 Received: from pidgin.makrotopia.org (pidgin.makrotopia.org [185.142.180.65]) (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 83E5C25F7A4; Sat, 30 Aug 2025 15:57:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.142.180.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756569438; cv=none; b=bG1OjS9G7d8adO0xir/+qi7dvOKBeTSRdfVTg3LrzaGWhIIH6fKdq0Y90HiDg1WEy6QdJ0GgiA2lfp6hx9umXY1qTuIhrcBh/bELdCteUyZqDYMP7s08I7EkGZqrIwXHVZ8wndE7tbVBxeQkACx/GELnyldmpoJu+q+2uwXOqAk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756569438; c=relaxed/simple; bh=t8c4Dix9ic8NnaYspIRY0NxCgWClvnHjpQgeitk1svE=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=S1cfCYEwprWVC3VP3D10SWCGa7DUf9zi0hUfTO26Hz9B9/zY576Ksz2CpJ2HPMJM5izG7T9PzviADnRPFLXIOyJDrK2fMzBNGLhFthbx5I3YpNWU7c0fCU83GXE/DBZDJ61NlTO4iQn32zM2riudkO4mfg7Eh5uv+01maBPC+Mg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=makrotopia.org; spf=pass smtp.mailfrom=makrotopia.org; arc=none smtp.client-ip=185.142.180.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=makrotopia.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=makrotopia.org Received: from local by pidgin.makrotopia.org with esmtpsa (TLS1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.98.2) (envelope-from ) id 1usNx0-000000007qk-2gkB; Sat, 30 Aug 2025 15:57:10 +0000 Date: Sat, 30 Aug 2025 16:57:07 +0100 From: Daniel Golle To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Matthias Brugger , AngeloGioacchino Del Regno , Daniel Golle , =?iso-8859-1?Q?N=EDcolas_F=2E_R=2E_A=2E?= Prado , Greg Kroah-Hartman , Mason Chang , Arnd Bergmann , Frank Wunderlich , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-stable@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Cc: Chad Monroe Subject: [PATCH linux-stable 6.12 2/3] thermal/drivers/mediatek/lvts_thermal: Add lvts commands and their sizes to driver data Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Mason Chang [ Upstream commit 6203a5e6fd090ed05f6d9b92e33bc7e7679a3dd6 ] Add LVTS commands and their sizes to driver data in preparation for adding different commands. Fixes: 585e92e6a79f ("thermal/drivers/mediatek/lvts_thermal: Add mt7988 sup= port") Signed-off-by: Mason Chang Link: https://lore.kernel.org/r/20250526102659.30225-3-mason-cw.chang@media= tek.com Signed-off-by: Daniel Lezcano Signed-off-by: Daniel Golle --- drivers/thermal/mediatek/lvts_thermal.c | 65 ++++++++++++++++++++----- 1 file changed, 52 insertions(+), 13 deletions(-) diff --git a/drivers/thermal/mediatek/lvts_thermal.c b/drivers/thermal/medi= atek/lvts_thermal.c index c24b76bcd18a..239476152bab 100644 --- a/drivers/thermal/mediatek/lvts_thermal.c +++ b/drivers/thermal/mediatek/lvts_thermal.c @@ -92,17 +92,6 @@ =20 #define LVTS_MINIMUM_THRESHOLD 20000 =20 -static const u32 default_conn_cmds[] =3D { 0xC103FFFF, 0xC502FF55 }; -/* - * Write device mask: 0xC1030000 - */ -static const u32 default_init_cmds[] =3D { - 0xC1030E01, 0xC1030CFC, 0xC1030A8C, 0xC103098D, 0xC10308F1, - 0xC10307A6, 0xC10306B8, 0xC1030500, 0xC1030420, 0xC1030300, - 0xC1030030, 0xC10300F6, 0xC1030050, 0xC1030060, 0xC10300AC, - 0xC10300FC, 0xC103009D, 0xC10300F1, 0xC10300E1 -}; - static int golden_temp =3D LVTS_GOLDEN_TEMP_DEFAULT; static int golden_temp_offset; =20 @@ -132,7 +121,11 @@ struct lvts_ctrl_data { =20 struct lvts_data { const struct lvts_ctrl_data *lvts_ctrl; + const u32 *conn_cmd; + const u32 *init_cmd; int num_lvts_ctrl; + int num_conn_cmd; + int num_init_cmd; int temp_factor; int temp_offset; int gt_calib_bit_offset; @@ -974,9 +967,10 @@ static int lvts_ctrl_set_enable(struct lvts_ctrl *lvts= _ctrl, int enable) =20 static int lvts_ctrl_connect(struct device *dev, struct lvts_ctrl *lvts_ct= rl) { + const struct lvts_data *lvts_data =3D lvts_ctrl->lvts_data; u32 id; =20 - lvts_write_config(lvts_ctrl, default_conn_cmds, ARRAY_SIZE(default_conn_c= mds)); + lvts_write_config(lvts_ctrl, lvts_data->conn_cmd, lvts_data->num_conn_cmd= ); =20 /* * LVTS_ID : Get ID and status of the thermal controller @@ -995,7 +989,9 @@ static int lvts_ctrl_connect(struct device *dev, struct= lvts_ctrl *lvts_ctrl) =20 static int lvts_ctrl_initialize(struct device *dev, struct lvts_ctrl *lvts= _ctrl) { - lvts_write_config(lvts_ctrl, default_init_cmds, ARRAY_SIZE(default_init_c= mds)); + const struct lvts_data *lvts_data =3D lvts_ctrl->lvts_data; + + lvts_write_config(lvts_ctrl, lvts_data->init_cmd, lvts_data->num_init_cmd= ); =20 return 0; } @@ -1424,6 +1420,17 @@ static int lvts_resume(struct device *dev) return 0; } =20 +static const u32 default_conn_cmds[] =3D { 0xC103FFFF, 0xC502FF55 }; +/* + * Write device mask: 0xC1030000 + */ +static const u32 default_init_cmds[] =3D { + 0xC1030E01, 0xC1030CFC, 0xC1030A8C, 0xC103098D, 0xC10308F1, + 0xC10307A6, 0xC10306B8, 0xC1030500, 0xC1030420, 0xC1030300, + 0xC1030030, 0xC10300F6, 0xC1030050, 0xC1030060, 0xC10300AC, + 0xC10300FC, 0xC103009D, 0xC10300F1, 0xC10300E1 +}; + /* * The MT8186 calibration data is stored as packed 3-byte little-endian * values using a weird layout that makes sense only when viewed as a 32-b= it @@ -1718,7 +1725,11 @@ static const struct lvts_ctrl_data mt8195_lvts_ap_da= ta_ctrl[] =3D { =20 static const struct lvts_data mt7988_lvts_ap_data =3D { .lvts_ctrl =3D mt7988_lvts_ap_data_ctrl, + .conn_cmd =3D default_conn_cmds, + .init_cmd =3D default_init_cmds, .num_lvts_ctrl =3D ARRAY_SIZE(mt7988_lvts_ap_data_ctrl), + .num_conn_cmd =3D ARRAY_SIZE(default_conn_cmds), + .num_init_cmd =3D ARRAY_SIZE(default_init_cmds), .temp_factor =3D LVTS_COEFF_A_MT7988, .temp_offset =3D LVTS_COEFF_B_MT7988, .gt_calib_bit_offset =3D 24, @@ -1726,7 +1737,11 @@ static const struct lvts_data mt7988_lvts_ap_data = =3D { =20 static const struct lvts_data mt8186_lvts_data =3D { .lvts_ctrl =3D mt8186_lvts_data_ctrl, + .conn_cmd =3D default_conn_cmds, + .init_cmd =3D default_init_cmds, .num_lvts_ctrl =3D ARRAY_SIZE(mt8186_lvts_data_ctrl), + .num_conn_cmd =3D ARRAY_SIZE(default_conn_cmds), + .num_init_cmd =3D ARRAY_SIZE(default_init_cmds), .temp_factor =3D LVTS_COEFF_A_MT7988, .temp_offset =3D LVTS_COEFF_B_MT7988, .gt_calib_bit_offset =3D 24, @@ -1735,7 +1750,11 @@ static const struct lvts_data mt8186_lvts_data =3D { =20 static const struct lvts_data mt8188_lvts_mcu_data =3D { .lvts_ctrl =3D mt8188_lvts_mcu_data_ctrl, + .conn_cmd =3D default_conn_cmds, + .init_cmd =3D default_init_cmds, .num_lvts_ctrl =3D ARRAY_SIZE(mt8188_lvts_mcu_data_ctrl), + .num_conn_cmd =3D ARRAY_SIZE(default_conn_cmds), + .num_init_cmd =3D ARRAY_SIZE(default_init_cmds), .temp_factor =3D LVTS_COEFF_A_MT8195, .temp_offset =3D LVTS_COEFF_B_MT8195, .gt_calib_bit_offset =3D 20, @@ -1744,7 +1763,11 @@ static const struct lvts_data mt8188_lvts_mcu_data = =3D { =20 static const struct lvts_data mt8188_lvts_ap_data =3D { .lvts_ctrl =3D mt8188_lvts_ap_data_ctrl, + .conn_cmd =3D default_conn_cmds, + .init_cmd =3D default_init_cmds, .num_lvts_ctrl =3D ARRAY_SIZE(mt8188_lvts_ap_data_ctrl), + .num_conn_cmd =3D ARRAY_SIZE(default_conn_cmds), + .num_init_cmd =3D ARRAY_SIZE(default_init_cmds), .temp_factor =3D LVTS_COEFF_A_MT8195, .temp_offset =3D LVTS_COEFF_B_MT8195, .gt_calib_bit_offset =3D 20, @@ -1753,7 +1776,11 @@ static const struct lvts_data mt8188_lvts_ap_data = =3D { =20 static const struct lvts_data mt8192_lvts_mcu_data =3D { .lvts_ctrl =3D mt8192_lvts_mcu_data_ctrl, + .conn_cmd =3D default_conn_cmds, + .init_cmd =3D default_init_cmds, .num_lvts_ctrl =3D ARRAY_SIZE(mt8192_lvts_mcu_data_ctrl), + .num_conn_cmd =3D ARRAY_SIZE(default_conn_cmds), + .num_init_cmd =3D ARRAY_SIZE(default_init_cmds), .temp_factor =3D LVTS_COEFF_A_MT8195, .temp_offset =3D LVTS_COEFF_B_MT8195, .gt_calib_bit_offset =3D 24, @@ -1762,7 +1789,11 @@ static const struct lvts_data mt8192_lvts_mcu_data = =3D { =20 static const struct lvts_data mt8192_lvts_ap_data =3D { .lvts_ctrl =3D mt8192_lvts_ap_data_ctrl, + .conn_cmd =3D default_conn_cmds, + .init_cmd =3D default_init_cmds, .num_lvts_ctrl =3D ARRAY_SIZE(mt8192_lvts_ap_data_ctrl), + .num_conn_cmd =3D ARRAY_SIZE(default_conn_cmds), + .num_init_cmd =3D ARRAY_SIZE(default_init_cmds), .temp_factor =3D LVTS_COEFF_A_MT8195, .temp_offset =3D LVTS_COEFF_B_MT8195, .gt_calib_bit_offset =3D 24, @@ -1771,7 +1802,11 @@ static const struct lvts_data mt8192_lvts_ap_data = =3D { =20 static const struct lvts_data mt8195_lvts_mcu_data =3D { .lvts_ctrl =3D mt8195_lvts_mcu_data_ctrl, + .conn_cmd =3D default_conn_cmds, + .init_cmd =3D default_init_cmds, .num_lvts_ctrl =3D ARRAY_SIZE(mt8195_lvts_mcu_data_ctrl), + .num_conn_cmd =3D ARRAY_SIZE(default_conn_cmds), + .num_init_cmd =3D ARRAY_SIZE(default_init_cmds), .temp_factor =3D LVTS_COEFF_A_MT8195, .temp_offset =3D LVTS_COEFF_B_MT8195, .gt_calib_bit_offset =3D 24, @@ -1780,7 +1815,11 @@ static const struct lvts_data mt8195_lvts_mcu_data = =3D { =20 static const struct lvts_data mt8195_lvts_ap_data =3D { .lvts_ctrl =3D mt8195_lvts_ap_data_ctrl, + .conn_cmd =3D default_conn_cmds, + .init_cmd =3D default_init_cmds, .num_lvts_ctrl =3D ARRAY_SIZE(mt8195_lvts_ap_data_ctrl), + .num_conn_cmd =3D ARRAY_SIZE(default_conn_cmds), + .num_init_cmd =3D ARRAY_SIZE(default_init_cmds), .temp_factor =3D LVTS_COEFF_A_MT8195, .temp_offset =3D LVTS_COEFF_B_MT8195, .gt_calib_bit_offset =3D 24, --=20 2.51.0