From nobody Fri Oct 2 11:43:46 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 A4915429CDA for ; Sat, 1 Aug 2026 05:48:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785563315; cv=none; b=l4jaZvnzFEv5Lzq3IM4eJRgFskmYtYuNdl3hEzk3DCmqdItQDislRrZIORNOR+CQrSlvwTWDj1stR3RhrNpXXBcgrB9cOdEEr1Ffm4TQrOd48h6iEzAX+ZrvARC72t3Q4pb5O1JhDiMlGoWHJ/fUPI8NOU12grF/OqQ8pEoptnU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785563315; c=relaxed/simple; bh=MgKtl/MZBgsFKwakhQrsDRziDrdSWAQ759cFA3oxkBI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kqxoGG6GEfw+NHbOtUcaVZi84u1u5XFxU8Dk0e/QwrL4VrsPzrjgo6naSV60au0r9vESu6U7FBJfSzSmF2g6ZkzLnx/YPMLvPyFxQccI2/apf7MtdSIN/6o4wcdTgGgFLzxpAJODI+xSqAuUpiG7J1Z3kQnQpcnf0+NMfLeGoug= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Pmxp6feg; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ddMzD/S2; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Pmxp6feg"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ddMzD/S2" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6713Q3wL1919395 for ; Sat, 1 Aug 2026 05:48:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= +kmzGi8WLW3q9cUIfuI3hkdmHctpvMeJjHJVyiabAW4=; b=Pmxp6fegGKUiwUYX yZ0So+b3UDQh+kWQidotB+YfYxmSPQxm+NOdHiSuT2VWDsyrU2/5jUfUls/GB2BQ xDcxfassdJNryqMAKLzbe4kUF31du/PYwGKNIp7hBDLAtuwAa5djvFh/BtsqbDEH 4Wq4h1wmRWxjLso4f+oZhS9bRuWjBIneXF+iDbL5r4LahzlRiovyLzIIamWYxg+f PRMlRzT9757VE4/QJ4oR+tFs8wcQxolXzvia4kzoM1w50lxX9COJnEJQY3MLAQrD 5+7V3jtKkUT25FQiQLKW7hF9b2HPnKCNZ1ABtDQcUNFVs+fc36lcsJYFfDPdGjvk mrSaSQ== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs8vt89aw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 01 Aug 2026 05:48:31 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2cd01a14e81so21287445ad.1 for ; Fri, 31 Jul 2026 22:48:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785563310; x=1786168110; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=+kmzGi8WLW3q9cUIfuI3hkdmHctpvMeJjHJVyiabAW4=; b=ddMzD/S2PsFlIoBpQBA4/TKh6GufikevBnTn7+AU9ulNwVmIv24Ib9LsqVPW3KVlaC VF+7rN/3LrAaOpKcbJF9fkeEfhJASlnkhucsTvwMgDJP/dPY1g27LBbGu70Qwee6dAxH jO45oQfDP9wI9m8mXT1O973tvTgQLH/kCRUsClSySrHbb4at9ohLlNyyDzh9Fm2pYeTl AAdbzgBtK7s+viHZoYccxNWjMAKN//+WoDULfqP4HTJIgiXSHDxMKxj+Lsqe7PZ5NKqe dL31USF1HMHSO1zVej7tt01GkOHL/lljYQ4usjKh4dxYQNEEbCewkspAnViAOlbXqLyV VkOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785563310; x=1786168110; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=+kmzGi8WLW3q9cUIfuI3hkdmHctpvMeJjHJVyiabAW4=; b=OKFenMDQdnL6ZZvbdveSmCINZyPc/APUQBUDUqDQNhJ43VVxUEVeuA68KdDrAn3PhZ H5QdxcPzKQAswiZF8TS1Wmjm+E/vOrLvnz3JXaElnwwW7aZwF3GLvwPMlD/2Flnfea7b 989PqkJ6JTibBGmCTSvWXwDVdHIdBodcOT1QCilvZ8SGxp7xqXnBLQTMucgT7pRKXIjK 8Vum441vXuOKdcgFQezShasqf2fYWhlXSVopRTkZJkAqun+rEb+iFDLHyUXWbReh9qTC QWMyg8K4PTwDlSQMEEEJAPGNbW2F58jSjKQu2QqoRoMN0ci8VmFppVcW2Qd5V673ZElX v88A== X-Forwarded-Encrypted: i=1; AHgh+Rp79pi2CH21uudlU0xRi7adKEAFwO53CtdX4HgzY5ubKhs8b6uAQCyi5KtMNBtUmoVOuQbyR/eVADIZ2ig=@vger.kernel.org X-Gm-Message-State: AOJu0YwbRT6A63ljC796RBiiV53ICQe0rXXQlvfu6cPnk+792rGvEXRR qcSYcbCOrQXaSt0nhFebkTVRPJL7MEhvL2Enf03qdMEf/tR3VMhFnRz+eqdo9cFY3hAZX9LDZP7 FZPeL6zT0aSbaHJuV8HGyJjq/8gCEHrl5llp/gwdmzE0hxu2QbyJOktuSc6DmwVA2F1U= X-Gm-Gg: AR+sD12L/+M7y8UDllA0IsNRG9F+v9Wq24Y7yr81nFdEq8OHZWgEgDhW6VS6VDBL8Wv a8jqDsVm/iUPLy8jqc2eKJxly18Ja5a3onLwBmFkX6THr+cecT3iOl4dQ2U+F5BoMMZ1QGDhD2X gOMLLJWUoWiYRR6/OuVlWuGwzfl8sEORgNkbJ0i/DI7aSKK3qSusSimAUYoUrGU8Y0R1H+OdBZn C5ecJ7PTZraFHUYiUl8foKWznlwAmCClz3itLbM7ksKodbWPiNhrUXsKSkk5YkMK5Qzi6QPr9mj +t+c7eZlfWvNXpI1LWXTJCdLu1+e6Ntvmz0IUDVpZLYOEPeYq2iAzTtn6bp6hF9uNu8L+iIJSX9 LUsYgnXt3bswMkt/WxCEsMBQ0OIFnLph5Zw== X-Received: by 2002:a17:902:f78e:b0:2ca:c68:c554 with SMTP id d9443c01a7336-2d05241f274mr23182105ad.38.1785563310472; Fri, 31 Jul 2026 22:48:30 -0700 (PDT) X-Received: by 2002:a17:902:f78e:b0:2ca:c68:c554 with SMTP id d9443c01a7336-2d05241f274mr23181905ad.38.1785563309957; Fri, 31 Jul 2026 22:48:29 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd4e666sm18305211eec.4.2026.07.31.22.48.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 22:48:29 -0700 (PDT) From: Praveen Talari Date: Sat, 01 Aug 2026 11:18:15 +0530 Subject: [PATCH v2 1/3] serial: qcom-geni: Use common GENI resource initialisation helpers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260801-reuse_common_geni_framework_helpers-v2-1-13753256ef71@oss.qualcomm.com> References: <20260801-reuse_common_geni_framework_helpers-v2-0-13753256ef71@oss.qualcomm.com> In-Reply-To: <20260801-reuse_common_geni_framework_helpers-v2-0-13753256ef71@oss.qualcomm.com> To: Greg Kroah-Hartman , Jiri Slaby , konrad.dybcio@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, chandana.chiluveru@oss.qualcomm.com, mukesh.savaliya@oss.qualcomm.com, Praveen Talari X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785563302; l=6186; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=MgKtl/MZBgsFKwakhQrsDRziDrdSWAQ759cFA3oxkBI=; b=YB81WKLpf2lneMGAuZ33Vaec8Tnf/AEQkHovKF2pKFp6dHnpiSvvTeq2eK91fVg/71UwK7MfC feTUrzVXgIuCkd0EHU74XbjahIvnNKcwZB5eFOK/Wg7f1ytX4hQQh2s X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwODAxMDAzNyBTYWx0ZWRfX+ovJAx7rmpJt ediQS8AMKcKXvMjceMM6nwJVWIXtaWNaxYQQAnrURBOD6fDxIF+dCnZj6mwo8jJeNdSNCGXRCMT wim3dpMKKJsiwOxDvYyo4DpC5W/NevY= X-Proofpoint-ORIG-GUID: 7qmF2ta1xTesExTegs6RafEZS6xX2bYp X-Proofpoint-GUID: 7qmF2ta1xTesExTegs6RafEZS6xX2bYp X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAxMDAzNyBTYWx0ZWRfX8n3URu/TMCXL yRdOj/NsDxiGY0qhStRTmq9r6kCl/kui6nYIm8FBFF8R1OZdb96xEt6GLcVDkyvOFv9yxzw5bMN Ku7ttD4jIjykPrukIq34VO+WlsyYtHNGRlUZSaFAoJmN9fdw85colGirzW/oQLN955U8s4NUzrL xDspG/1Im8Y9ZZvxVDxGwhprc4j+TLc8uxiLRc7si1y7pCvJfTutOdlZNh802e3BtgeMT2jrzTd wvYjxEaFxL++DN4g1Pj56JK8z0zQg1tna1deGohLBvQNdKkZHl1HmRvG9NA7nVcGB4K+8e911uO sqCWeJ+BaI1uxCM2YSHdbgFXRNhgvgJcS6xtFJ3j0h3IxFWvYF6RlTov9mLKDAE34CzhFm76za0 6Wi+Va1VJeHLqRujGUzfYvWtdTn67sRf+dwhxiIRQknfSmV/t5n7araNdPbdnaIOL+w35twWt3j DUNpSW57ZJqtTrm/SkQ== X-Authority-Analysis: v=2.4 cv=fKMJG5ae c=1 sm=1 tr=0 ts=6a6d88af cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=R6AoGHhCE4Cl6DLjkzUA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_07,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 spamscore=0 phishscore=0 clxscore=1015 impostorscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608010037 The UART driver maintains local helpers for resource and power-domain initialisation that duplicate functionality already provided by the common GENI framework. Replace the driver-specific implementations with geni_se_resources_init() and geni_se_domain_attach(), and use the power-domain list stored in struct geni_se. This reduces code duplication and centralises GENI resource management without functional changes. Signed-off-by: Praveen Talari --- drivers/tty/serial/qcom_geni_serial.c | 81 ++++---------------------------= ---- 1 file changed, 9 insertions(+), 72 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index fa4adb543562..c8c4f01d3143 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -115,8 +115,7 @@ static DEFINE_IDA(port_ida); struct qcom_geni_device_data { bool console; enum geni_se_xfer_mode mode; - struct dev_pm_domain_attach_data pd_data; - int (*resources_init)(struct uart_port *uport); + int (*resources_init)(struct geni_se *se); int (*set_rate)(struct uart_port *uport, unsigned int baud); int (*power_state)(struct uart_port *uport, bool state); }; @@ -159,7 +158,6 @@ struct qcom_geni_serial_port { struct irq_work tx_kick; struct qcom_geni_private_data private_data; const struct qcom_geni_device_data *dev_data; - struct dev_pm_domain_list *pd_list; struct notifier_block panic_nb; }; =20 @@ -1500,7 +1498,7 @@ static int geni_serial_set_rate(struct uart_port *upo= rt, unsigned int baud) static int geni_serial_set_level(struct uart_port *uport, unsigned int bau= d) { struct qcom_geni_serial_port *port =3D to_dev_port(uport); - struct device *perf_dev =3D port->pd_list->pd_devs[DOMAIN_IDX_PERF]; + struct device *perf_dev =3D port->se.pd_list->pd_devs[DOMAIN_IDX_PERF]; =20 /* * The performance protocol sets UART communication @@ -1860,57 +1858,6 @@ static int geni_serial_resource_state(struct uart_po= rt *uport, bool power_on) return power_on ? geni_serial_resources_on(uport) : geni_serial_resources= _off(uport); } =20 -static int geni_serial_pwr_init(struct uart_port *uport) -{ - struct qcom_geni_serial_port *port =3D to_dev_port(uport); - int ret; - - ret =3D dev_pm_domain_attach_list(port->se.dev, - &port->dev_data->pd_data, &port->pd_list); - if (ret <=3D 0) - return -EINVAL; - - return 0; -} - -static int geni_serial_resource_init(struct uart_port *uport) -{ - struct qcom_geni_serial_port *port =3D to_dev_port(uport); - int ret; - - port->se.clk =3D devm_clk_get(port->se.dev, "se"); - if (IS_ERR(port->se.clk)) { - ret =3D PTR_ERR(port->se.clk); - dev_err(port->se.dev, "Err getting SE Core clk %d\n", ret); - return ret; - } - - ret =3D geni_icc_get(&port->se, NULL); - if (ret) - return ret; - - port->se.icc_paths[GENI_TO_CORE].avg_bw =3D GENI_DEFAULT_BW; - port->se.icc_paths[CPU_TO_GENI].avg_bw =3D GENI_DEFAULT_BW; - - /* Set BW for register access */ - ret =3D geni_icc_set_bw(&port->se); - if (ret) - return ret; - - ret =3D devm_pm_opp_set_clkname(port->se.dev, "se"); - if (ret) - return ret; - - /* OPP table is optional */ - ret =3D devm_pm_opp_of_add_table(port->se.dev); - if (ret && ret !=3D -ENODEV) { - dev_err(port->se.dev, "invalid OPP table in device tree\n"); - return ret; - } - - return 0; -} - /** * qcom_geni_rs485_config - Configure RS485 settings for the UART port * @uport: Pointer to the UART port structure @@ -2024,7 +1971,7 @@ static int qcom_geni_serial_probe(struct platform_dev= ice *pdev) port->se.dev =3D &pdev->dev; port->se.wrapper =3D dev_get_drvdata(pdev->dev.parent); =20 - ret =3D port->dev_data->resources_init(uport); + ret =3D port->dev_data->resources_init(&port->se); if (ret) return ret; =20 @@ -2137,7 +2084,7 @@ static int qcom_geni_serial_probe(struct platform_dev= ice *pdev) DMA_RX_BUF_SIZE, DMA_FROM_DEVICE); port->rx_dma_addr =3D 0; } - dev_pm_domain_detach_list(port->pd_list); + dev_pm_domain_detach_list(port->se.pd_list); return ret; } =20 @@ -2162,7 +2109,7 @@ static void qcom_geni_serial_remove(struct platform_d= evice *pdev) port->rx_dma_addr =3D 0; } =20 - dev_pm_domain_detach_list(port->pd_list); + dev_pm_domain_detach_list(port->se.pd_list); } =20 static int __maybe_unused qcom_geni_serial_runtime_suspend(struct device *= dev) @@ -2242,7 +2189,7 @@ static int qcom_geni_serial_resume(struct device *dev) static const struct qcom_geni_device_data qcom_geni_console_data =3D { .console =3D true, .mode =3D GENI_SE_FIFO, - .resources_init =3D geni_serial_resource_init, + .resources_init =3D geni_se_resources_init, .set_rate =3D geni_serial_set_rate, .power_state =3D geni_serial_resource_state, }; @@ -2250,12 +2197,7 @@ static const struct qcom_geni_device_data qcom_geni_= console_data =3D { static const struct qcom_geni_device_data sa8255p_qcom_geni_console_data = =3D { .console =3D true, .mode =3D GENI_SE_FIFO, - .pd_data =3D { - .pd_flags =3D PD_FLAG_DEV_LINK_ON, - .pd_names =3D (const char*[]) { "power", "perf" }, - .num_pd_names =3D 2, - }, - .resources_init =3D geni_serial_pwr_init, + .resources_init =3D geni_se_domain_attach, .set_rate =3D geni_serial_set_level, }; #endif @@ -2263,7 +2205,7 @@ static const struct qcom_geni_device_data sa8255p_qco= m_geni_console_data =3D { static const struct qcom_geni_device_data qcom_geni_uart_data =3D { .console =3D false, .mode =3D GENI_SE_DMA, - .resources_init =3D geni_serial_resource_init, + .resources_init =3D geni_se_resources_init, .set_rate =3D geni_serial_set_rate, .power_state =3D geni_serial_resource_state, }; @@ -2271,12 +2213,7 @@ static const struct qcom_geni_device_data qcom_geni_= uart_data =3D { static const struct qcom_geni_device_data sa8255p_qcom_geni_uart_data =3D { .console =3D false, .mode =3D GENI_SE_DMA, - .pd_data =3D { - .pd_flags =3D PD_FLAG_DEV_LINK_ON, - .pd_names =3D (const char*[]) { "power", "perf" }, - .num_pd_names =3D 2, - }, - .resources_init =3D geni_serial_pwr_init, + .resources_init =3D geni_se_domain_attach, .set_rate =3D geni_serial_set_level, }; =20 --=20 2.34.1 From nobody Fri Oct 2 11:43:46 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 022B8429818 for ; Sat, 1 Aug 2026 05:48:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785563318; cv=none; b=LYIxmL0CnRekOSebyOVuHM82Az+NH3VSMynaVyPhnjVm1RWdaXwxSX8XhmNfg7bUh8YzWFJK2V1TVgdF1YbJnFkOpOuHEeQJovczBSW470GoLHXwoXUX4SVLv8D0fCZQPWMfNNBSo8lRg4O3I128i60tsQnvhMeWzIelTWAAc48= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785563318; c=relaxed/simple; bh=tWIJSkw9Kzo/avDWru6gjan4r26W1mpQOWzAfoc3/Nc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Wpa88Mw2ImBtKVlinbJH/ex6gzsGQkpUfRpsBeBKTu6Avpw+Nd6Ma/1Lfi3RfOuKyoJJld8BtGPICYmB6lG0vo6YHqRNLxxDbSwT6ZRf0WmKdwpMzQMTppUNuUZSgfWZO3jHdkJbQbgk/ctiD+J00HtcHNWhoPtMlNTLY4w0lJw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=YIZxUwmQ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jH+kxlrk; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="YIZxUwmQ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jH+kxlrk" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6713O8fV1795663 for ; Sat, 1 Aug 2026 05:48:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= W/x2tCxPihtobiDZezuB+G3GBMdzVmyWSC8+1i1POXc=; b=YIZxUwmQS/i9BPHc WJyRPIbCGaHkWB6vqq/L9urNgoX7fEbiMm8vX8mQRcVE43WEzv1Kv6IcMojjFhmu 26Jdzlq5nyZheCRC9NqCtjcEUsHfA/pTl9vnKfz016tzFz2ELtoSEhFMad9+22Qm YTWyRFQ9a2ZGygJpw9IcwGZfReX5QF3gLAQOi9n7tJGUP8FrugSKcBfrRwQ6YBxw qvviWQL6w4/v6pfUsHQ9acpGoy9/jA1NPVHaf5Fq6gm8jsYQHubp3J4jy0S240QA 8vG+4MMge2kZiNpeTBjhi0eCHuKLu+wWLEFzmT6Ro0IwGrxN/ChSQNPD115zGd/z tKsozA== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs8u988w2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 01 Aug 2026 05:48:35 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2cd01a14e81so21287685ad.1 for ; Fri, 31 Jul 2026 22:48:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785563315; x=1786168115; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=W/x2tCxPihtobiDZezuB+G3GBMdzVmyWSC8+1i1POXc=; b=jH+kxlrkW3mLq4USOWd0JHj9wrRpVWqc7W/N74PsLoQXb9713IuRaNaExQw7JIe92F YrfkV3mbFkgPoJ1hhaQTXOvCoz2JeXWnyuo0UoIzol5TAr3WkgxmonSacRAcx5+r9Kut ASHc3f0srXQVrBZNTMM3VJcYJWyNLgYB/au8c8ELveWwN0xJxdNEt7wMIB7+D+wMRsPN rvohwKP7YmNvASsKqRsFVkg4w20+EbwwYr3hA+sk2mIHngxeEUGK0CWI1UGGHvuYG2R0 0F6O9mPpCFQZ8out3Ana2jU8NY/adfhRmtfnZfD2zk+TbEHyU9pc39CAifnfJg9kscW8 gNng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785563315; x=1786168115; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=W/x2tCxPihtobiDZezuB+G3GBMdzVmyWSC8+1i1POXc=; b=qehsJgaokh+AeUQbP9rDkvpf8dtG6RfTfvcW98HNhRWGMEBtRgFSY907fqE0F2+o8W JbF+wil7I00qXIdfv6lxtiY9LjliVpm+fFu2VT0fqAzz71LnkmoiNUf7UXMioDF50Bg3 y1jZkqdRCobbv/7T4+P9zFblinyy4TiMCW+QGjWNkOXvxj71esnWdCWapQU12QQ5ktRm S7Why3HhuD3xDhvYqBU2Zb9hI5D+GdHnhhfQVDWZeVUUI6NOJR5h5AW3Di4Nql56NJwu 87lhUnKZevWwR+EcdChG03Qed7R3nj8mz6EfNx89KigZbZe7w15k+RW7CuoTpCnj9/Ud xtqg== X-Forwarded-Encrypted: i=1; AHgh+Rplb6qe1ppUupwoSRadB8w3ekG2YAc/M3+L2RIgG8tAuhTQlvNhSRpMlLu2zWoLVgxMdJKtq0wQ8D+NPpM=@vger.kernel.org X-Gm-Message-State: AOJu0YxMTJ+Fcm2ISmu/Dj/e/CpVXwTJpQ0vH86MhJkdM8wpFWTmVhaD MxLVdj8/li1vZ/ehShbkY7iseAqA+zKidE/Vj1r5E0R4Adhuzzfvyksj0DiwAkh5QdhsEBvo03V DwsaJm2541RMn7VyIX8Q1jW7NXNIm2HZV3bvNKrG8jJX+fW0YkkxX22NNlwKUFhhOMJU= X-Gm-Gg: AR+sD12JeB34iHMSqIHNZkqvT/GJ+B3GZAWsEIqyqTht8udNbId2RAoHqRq11cXmlAl niBiSCLtpNgLYSPGtgCf5u5jyPBub1Pp0++mQ/ORiyWLlfIjuhTCWV/mQD+79jT0ac32MKnRX08 cruWQf5VYUk1z0W6rWf30PYntuRDpVxcLSptYgduc+fprshrZ2Phkwp71L2P7c25mfH++U2b+9Q znrk5WHy8/XY0DhZmtxrfFeiyECqD6izCvGPycLjM9MoQj1SzqS2lKU5G3kWRvfzLltYscswhPe 6MN2kyf6+OoauP9H7FAtlMgJq3Uc54ztjEKJMogeK7O9FeJ8ozt4V9J/RJ7zY2ONuIaTLziYc2x beH+Xn4LP5yi2XoopWp7ZS/gcfVrNFJ3C/w== X-Received: by 2002:a17:903:46c6:b0:2c9:a5e9:c26e with SMTP id d9443c01a7336-2d0521ed97emr22909815ad.13.1785563314782; Fri, 31 Jul 2026 22:48:34 -0700 (PDT) X-Received: by 2002:a17:903:46c6:b0:2c9:a5e9:c26e with SMTP id d9443c01a7336-2d0521ed97emr22909625ad.13.1785563314217; Fri, 31 Jul 2026 22:48:34 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd4e666sm18305211eec.4.2026.07.31.22.48.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 22:48:33 -0700 (PDT) From: Praveen Talari Date: Sat, 01 Aug 2026 11:18:16 +0530 Subject: [PATCH v2 2/3] serial: qcom-geni: Use resources helper APIs in runtime PM functions Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260801-reuse_common_geni_framework_helpers-v2-2-13753256ef71@oss.qualcomm.com> References: <20260801-reuse_common_geni_framework_helpers-v2-0-13753256ef71@oss.qualcomm.com> In-Reply-To: <20260801-reuse_common_geni_framework_helpers-v2-0-13753256ef71@oss.qualcomm.com> To: Greg Kroah-Hartman , Jiri Slaby , konrad.dybcio@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, chandana.chiluveru@oss.qualcomm.com, mukesh.savaliya@oss.qualcomm.com, Praveen Talari X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785563302; l=4431; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=tWIJSkw9Kzo/avDWru6gjan4r26W1mpQOWzAfoc3/Nc=; b=eQGu4QihbRU7spnvlrKQMHHMm0XXvVECq4oCQrchgbrIuPBWwkjsOT+DcLkxgh5kmG/eJDZyL fKbi6wC+JMlCdz1rsjnGsBU0bGhtnVBmVakOnTongz2kLsgIMVVJurQ X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-GUID: zX1P8YR_YzNMnV85HsxM5n4iiFfcbgiU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAxMDAzNyBTYWx0ZWRfXxjjUYfmprgdu 9QELlfb1Ur2H70nGl1dDu29lOGDrpkaMhAWbGbAsK0bKRWPTyLHc6QcFRU0u0QpZGx0LgtZ1ojy a8fdE735+r4GKL0gv9PIB7VDgbpkXA4fbxxtwR3w3m7ECXrVkWFJtK8u63QuvRW4gJ/EXiQk0C4 fTTbZ28xLwHvyhUG8RDwHapbL0se+c9NyFjgA7Uq8SUQbm/d4FPWMZqaHChtuKRSyTYXVeKEuph wVtbVWtZrYv4FIoKq7HZ13cnFT0ugx35cGHooE/voex+3f/t2pIUr7CnuwmO9KnE8FWccmOevVx Ejhz8ks4EcktwnPUA0ImT0+PDsIli3md5o3wrBQbMUU/8/Qu7c/uSNsJqm7Gsw4uMSc0d6666cW 1Oy2+hOql3vHgUz8DijiMQwFnkeq7MqXS6wYurDsshdfX066hQF5P1b6chfNDGYnuwJnfwuaNWq BljRDhyRpYAk1dlGpcA== X-Authority-Analysis: v=2.4 cv=LsCiDHdc c=1 sm=1 tr=0 ts=6a6d88b3 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=sJIhbiIXeOZG86cfmoMA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODAxMDAzNyBTYWx0ZWRfX7MJXGNX2Wccm Sr7JK2g6Jj0pMDhc/YVv5spiwgw7dPnDpqje9vlHE6Mj2+1pUazTGFiLY+IFcL8jMgoxzQfpzHT TUx8mjhfp2+Cas/E/ynOp/ECrL31Anw= X-Proofpoint-ORIG-GUID: zX1P8YR_YzNMnV85HsxM5n4iiFfcbgiU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_07,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 phishscore=0 spamscore=0 adultscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 bulkscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608010037 To manage GENI serial engine resources during runtime power management, drivers currently need to call functions for ICC, clock, and SE resource operations in both suspend and resume paths, resulting in code duplication across drivers. The new geni_se_resources_activate() and geni_se_resources_deactivate() helper APIs addresses this issue by providing a streamlined method to enable or disable all resources based, thereby eliminating redundancy across drivers. Signed-off-by: Praveen Talari --- drivers/tty/serial/qcom_geni_serial.c | 72 +++++++++----------------------= ---- 1 file changed, 18 insertions(+), 54 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index c8c4f01d3143..83ba0f5433ef 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -117,7 +117,8 @@ struct qcom_geni_device_data { enum geni_se_xfer_mode mode; int (*resources_init)(struct geni_se *se); int (*set_rate)(struct uart_port *uport, unsigned int baud); - int (*power_state)(struct uart_port *uport, bool state); + int (*power_on)(struct geni_se *se); + int (*power_off)(struct geni_se *se); }; =20 struct qcom_geni_private_data { @@ -1817,47 +1818,6 @@ static struct uart_driver qcom_geni_uart_driver =3D { .nr =3D CONFIG_SERIAL_QCOM_GENI_UART_PORTS, }; =20 -static int geni_serial_resources_on(struct uart_port *uport) -{ - struct qcom_geni_serial_port *port =3D to_dev_port(uport); - int ret; - - ret =3D geni_icc_enable(&port->se); - if (ret) - return ret; - - ret =3D geni_se_resources_on(&port->se); - if (ret) { - geni_icc_disable(&port->se); - return ret; - } - - if (port->clk_rate) - dev_pm_opp_set_rate(uport->dev, port->clk_rate); - - return 0; -} - -static int geni_serial_resources_off(struct uart_port *uport) -{ - struct qcom_geni_serial_port *port =3D to_dev_port(uport); - int ret; - - dev_pm_opp_set_rate(uport->dev, 0); - ret =3D geni_se_resources_off(&port->se); - if (ret) - return ret; - - geni_icc_disable(&port->se); - - return 0; -} - -static int geni_serial_resource_state(struct uart_port *uport, bool power_= on) -{ - return power_on ? geni_serial_resources_on(uport) : geni_serial_resources= _off(uport); -} - /** * qcom_geni_rs485_config - Configure RS485 settings for the UART port * @uport: Pointer to the UART port structure @@ -2115,25 +2075,27 @@ static void qcom_geni_serial_remove(struct platform= _device *pdev) static int __maybe_unused qcom_geni_serial_runtime_suspend(struct device *= dev) { struct qcom_geni_serial_port *port =3D dev_get_drvdata(dev); - struct uart_port *uport =3D &port->uport; - int ret =3D 0; =20 - if (port->dev_data->power_state) - ret =3D port->dev_data->power_state(uport, false); - - return ret; + return port->dev_data->power_off ? + port->dev_data->power_off(&port->se) : 0; } =20 static int __maybe_unused qcom_geni_serial_runtime_resume(struct device *d= ev) { struct qcom_geni_serial_port *port =3D dev_get_drvdata(dev); struct uart_port *uport =3D &port->uport; - int ret =3D 0; + int ret; + + if (port->dev_data->power_on) { + ret =3D port->dev_data->power_on(&port->se); + if (ret) + return ret; + } =20 - if (port->dev_data->power_state) - ret =3D port->dev_data->power_state(uport, true); + if (port->se.has_opp && port->clk_rate) + return dev_pm_opp_set_rate(uport->dev, port->clk_rate); =20 - return ret; + return 0; } =20 static int qcom_geni_serial_suspend(struct device *dev) @@ -2191,7 +2153,8 @@ static const struct qcom_geni_device_data qcom_geni_c= onsole_data =3D { .mode =3D GENI_SE_FIFO, .resources_init =3D geni_se_resources_init, .set_rate =3D geni_serial_set_rate, - .power_state =3D geni_serial_resource_state, + .power_on =3D geni_se_resources_activate, + .power_off =3D geni_se_resources_deactivate, }; =20 static const struct qcom_geni_device_data sa8255p_qcom_geni_console_data = =3D { @@ -2207,7 +2170,8 @@ static const struct qcom_geni_device_data qcom_geni_u= art_data =3D { .mode =3D GENI_SE_DMA, .resources_init =3D geni_se_resources_init, .set_rate =3D geni_serial_set_rate, - .power_state =3D geni_serial_resource_state, + .power_on =3D geni_se_resources_activate, + .power_off =3D geni_se_resources_deactivate, }; =20 static const struct qcom_geni_device_data sa8255p_qcom_geni_uart_data =3D { --=20 2.34.1 From nobody Fri Oct 2 11:43:46 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 8A2D242AF87 for ; Sat, 1 Aug 2026 05:48:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785563323; cv=none; b=EjgL4SApQlC+oZ4mbRS6IZHCLlNI+lWa/tebob13bAvqiUFUBSNZiCfORHlNC0RQzPurW/MoXw1gN4WU3BHgJ/WgdE90CZzOeCpFJh5PJ9/ipmsAVZGM4zFqzUCm20uG6+kVJYdaHNoGHFlzVLM/okZ7GlwvdYgAxniS8qgRC1w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785563323; c=relaxed/simple; bh=s/SpZVFR71r8SdtWW9hrvSUzEPlBLFRIa8WCs8dVUO0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=D881U2QN1OEYgeLMNjwtu6O9TeDmHT0pJ45E6WvXTS6StJCI12EjQpu33Tx4cNq+fOFUlNQ4sHOEOPSfMPkffZlrT+KGMbXVGBcBd66jpnTIJ01tF/5QRC08ddzQACIJ6vF+gzQRmfi23bOkdb65g1KQVN0vd36tMxf9akrbEnU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=BzqWKM1h; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bOeQT8DA; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="BzqWKM1h"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bOeQT8DA" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6713DV5D2065322 for ; Sat, 1 Aug 2026 05:48:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= vz/GnDP1sDXC+PDBe27vaFvPUtMnYs1VOZ2X6B7ojT4=; b=BzqWKM1hPimp2fAO STyB9hkvCtzvIF/e4ZKeXdjo4wZAmWVT7dPf0kif/w0Q801kZ4KnY7uksaOKL0NW xs2Vj//S1s8ig9n1gDxFnXWBHqSm1n1NEtDwjo4108/rFRaowJoBJ8X5wH+DkjbE M6MRhTobd2UVh29ODuNQe2Y7PsFkoF+H9dY1O9951Ck8MArXzwDjZ3eHr5UNC6gX 8Snp3yuw/mShmV2uYmfAIOviH/xJLb4o1lOh8tqCE13g3ZqQB94WSbUyktla8pmn 6lfStYfqNg8EPVEDEaXtuwjtWD0ggzPiicdx9BuaEaStwD+wlUFjaYSEpfbTy23K 4k1mew== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fs8q509h3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 01 Aug 2026 05:48:39 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2cc73f47bdcso29136405ad.3 for ; Fri, 31 Jul 2026 22:48:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785563318; x=1786168118; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vz/GnDP1sDXC+PDBe27vaFvPUtMnYs1VOZ2X6B7ojT4=; b=bOeQT8DAKL6LDtCwhSBkBlxXQLaXKIZumtHJ/Pu5mIopQpMOeNgJoXKmBfnRGLUOqh E+Qq7L8Y9SBROB15swFzZYtWjdMLfdw2AXKYqis6JC4TuT61dDPFps/gVEtcaJRxfIv6 eTWRQJrlBJlGzIipMRkMVcljt4jGSoUVy/JZwhkLP+7pzfOXQCLz2fv1+W9Ge8vBbJQ0 jZQhp4fe1L3dFlPNgMNlfrCrvO9FEd/Eh8i5iKDJ1JisylZZtjOD/8//0cwnWE55clHj rbZ6dM4GAtrtzji5Kr8MdtLwQlNCTydwYY5d5ccZciIAWDdRPrHTnoLQEu7teQ6Jq/TF YQwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785563318; x=1786168118; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=vz/GnDP1sDXC+PDBe27vaFvPUtMnYs1VOZ2X6B7ojT4=; b=pVAZMmBnMtgMRVcaziQsrAZI7pVleaZbFnph1LFZjQHyzOGGMe8tR7tHL7QxHqDecS HmuQZIYDjNMt7uTLxl/bvIa3p/6XCeTkxZSvcf9bHBYTJc/knt0kyyym9ll2YEwBPjEO wB4pldWLWSlbFj7FMRDWb+uwUfeQaSgK5PTnBIpA05KD9yNn4GSLGB6NE87ArnvBM1w3 YIA9HzcJ2HiMFAkLzVaNCM3ZKXuV0RvlyFtuS0i8djisXyD8bWPTP0PKnOH3G7oo8PER oBEiGZw3P9vfQqtJFwm5M9kbNQt4A2I9EGiqd4juHjojpbBIbrPxpZnOep+LAJOsnDff eKMA== X-Forwarded-Encrypted: i=1; AHgh+RoKrDe6flB4x9p0XTsMWJPEWPffvYciCIKEN7XB6fJqiKgHur9yiOQMrjx8rprXmi5djs4+KQ3UGMBx6ws=@vger.kernel.org X-Gm-Message-State: AOJu0YxC2fXSMBkTYIyLef2kDZfAEQp3dlHNNqNrP4M0ft0eObNwggYT 6l8Pt3YqIJSW0r0XeGThFPCLT2cgWpK03sgFG3fVr3wk4A54rNX2HeLVRBo3m+pjA/GQcupC/K7 v8uFEP4iXaj/rIFhk7t0eX7nvBnZRQHFAfRJd/wkvcx6JmRldt7Oi3eqT9m2vMXgWklw= X-Gm-Gg: AR+sD13yMnKf6Gsm9Y8ZAcyP9p6P0KCOD77371s0JNUPw1cK8GAEUJlZoMm4yKpWQ++ jgfRU3WrTYsJuVT6MuplZVQhQVL4OKFEcaJttT3j+DJDe+9qh34UrcnFtiurh9DcpYym9QNq/KY Zv13WOy64nZ7lhCsPSCc2LuaGlAfbELcSTgTaeH+A242HjovV7xEr1r8bWf/qA+7c/6FBOshI7K HgBPlGnehCbqEW7Vbi1hGGq2PaQ34F0Hw26apCSiKUDfNwm8TiixLz8DgRg8ohrBqNBQbJGwBCi eW2oUpVeKa7kaeo//5Dm4L6RpAPeSR2ZrVyEIcLNtdbjTiyVZGHgHdm0dQgZIaTlzc0xDvmYfGF Q6EJsjZ4GKz7p+apePO7IlcrSxw/ul1vSUQ== X-Received: by 2002:a17:903:41c9:b0:2cb:14b3:4cfe with SMTP id d9443c01a7336-2d0524cd9famr23685115ad.45.1785563318527; Fri, 31 Jul 2026 22:48:38 -0700 (PDT) X-Received: by 2002:a17:903:41c9:b0:2cb:14b3:4cfe with SMTP id d9443c01a7336-2d0524cd9famr23684845ad.45.1785563317944; Fri, 31 Jul 2026 22:48:37 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3153dd4e666sm18305211eec.4.2026.07.31.22.48.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Jul 2026 22:48:37 -0700 (PDT) From: Praveen Talari Date: Sat, 01 Aug 2026 11:18:17 +0530 Subject: [PATCH v2 3/3] serial: qcom-geni: Use geni_se_set_perf_level() for baud rate perf level Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260801-reuse_common_geni_framework_helpers-v2-3-13753256ef71@oss.qualcomm.com> References: <20260801-reuse_common_geni_framework_helpers-v2-0-13753256ef71@oss.qualcomm.com> In-Reply-To: <20260801-reuse_common_geni_framework_helpers-v2-0-13753256ef71@oss.qualcomm.com> To: Greg Kroah-Hartman , Jiri Slaby , konrad.dybcio@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, chandana.chiluveru@oss.qualcomm.com, mukesh.savaliya@oss.qualcomm.com, Praveen Talari X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785563302; l=4995; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=s/SpZVFR71r8SdtWW9hrvSUzEPlBLFRIa8WCs8dVUO0=; b=L2NOFZcYhKKwZJdiq2lU6giAl26lNImCJ/fUM2bLBKfMWVhZmBqiYj2KKoRRsxg5sL9+KCWW+ 3eOpzgAmwMjCFf+sWF/PnAPxbD6L5FgnN1w3FUryDixlslb3ibfrsqg X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwODAxMDAzNyBTYWx0ZWRfX9bOk//trFnE4 CjVLKE1sge55STSJLDRsVJsYFm7cwNK9XcYVN0ZEof6S4fRP2EBZMFewdOkyU83HKHj9tNOzLof jN6505D/3oqOdpMQqn4L13ASzUdR/rA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAxMDAzNyBTYWx0ZWRfXxeS4Q4IQQzCJ 4xCFT0S6K4UZLUmXLALouFxwjnGXIAPzYGw0XTl/Nx8RgZp2xzV3Y9qr2HVOLdoaBhuCSvkirhS rxYI5x3rb2svldBRgDpNwsG5dFkYWrw5VK+NCohfhPesmPR9HkBJNXJCi2mx6IbzhmVXVyPjXaO BifgCryqSBKx7e3sngy0m1Zt/2DHlqIUbKc+gILiBX6atlulK6ly2AgpykNfbXyNkTcYLbeh+ga aKecFeubMhHfn3Kc9md0us5Eg3pS3L1xVH6+z0TbQ2i0RamomtYCOZKK8OD7BWIks/63G1xWuOi p4N0dYQgi4bEeGu9lcN7TP4XeJpuPb2wpc93HxejBSsdF1w8XGZstelH7hsSnDYHpSHnPXQV+Xt brWwF+u3VTJqG5SsqjyLDtlGYyIl/tsYkrAcrXY02jPit5Cjt20aHPDeNXmsYfcq1VG+aRes0ik Sdn9EWHhT+IMFHXrCcg== X-Proofpoint-GUID: 5rbWPOEttzrTbXKw5Tn-C9ciYwCNX4r6 X-Authority-Analysis: v=2.4 cv=IYC3n2qa c=1 sm=1 tr=0 ts=6a6d88b7 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=iFx-AcfrQKbmC_lMXXIA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: 5rbWPOEttzrTbXKw5Tn-C9ciYwCNX4r6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_07,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 phishscore=0 suspectscore=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608010037 The driver implements its own helper to select the performance level corresponding to a requested baud rate. The helper duplicates functionality already provided by geni_se_set_perf_level() in the GENI core. Replace the local implementation with the common helper and remove the associated duplicate definitions and code. This consolidates performance-level management in the GENI framework and reduces driver specific code. Signed-off-by: Praveen Talari --- drivers/tty/serial/qcom_geni_serial.c | 53 ++++++-------------------------= ---- 1 file changed, 8 insertions(+), 45 deletions(-) diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qco= m_geni_serial.c index 83ba0f5433ef..c268ebba2ee2 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -109,14 +109,12 @@ #define DMA_RX_BUF_SIZE 2048 =20 static DEFINE_IDA(port_ida); -#define DOMAIN_IDX_POWER 0 -#define DOMAIN_IDX_PERF 1 =20 struct qcom_geni_device_data { bool console; enum geni_se_xfer_mode mode; int (*resources_init)(struct geni_se *se); - int (*set_rate)(struct uart_port *uport, unsigned int baud); + int (*set_rate)(struct geni_se *se, unsigned long baud); int (*power_on)(struct geni_se *se); int (*power_off)(struct geni_se *se); }; @@ -1440,9 +1438,10 @@ static int qcom_geni_serial_startup(struct uart_port= *uport) return 0; } =20 -static int geni_serial_set_rate(struct uart_port *uport, unsigned int baud) +static int geni_serial_set_rate(struct geni_se *se, unsigned long baud) { - struct qcom_geni_serial_port *port =3D to_dev_port(uport); + struct qcom_geni_serial_port *port =3D dev_get_drvdata(se->dev); + struct uart_port *uport =3D &port->uport; unsigned long clk_rate; unsigned int avg_bw_core, clk_idx; unsigned int clk_div; @@ -1458,7 +1457,7 @@ static int geni_serial_set_rate(struct uart_port *upo= rt, unsigned int baud) =20 ret =3D geni_se_clk_freq_match(&port->se, baud * sampling_rate, &clk_idx,= &clk_rate, false); if (ret) { - dev_err(port->se.dev, "Failed to find src clk for baud rate: %d ret: %d\= n", + dev_err(port->se.dev, "Failed to find src clk for baud rate: %lu ret: %d= \n", baud, ret); return ret; } @@ -1496,42 +1495,6 @@ static int geni_serial_set_rate(struct uart_port *up= ort, unsigned int baud) return 0; } =20 -static int geni_serial_set_level(struct uart_port *uport, unsigned int bau= d) -{ - struct qcom_geni_serial_port *port =3D to_dev_port(uport); - struct device *perf_dev =3D port->se.pd_list->pd_devs[DOMAIN_IDX_PERF]; - - /* - * The performance protocol sets UART communication - * speeds by selecting different performance levels - * through the OPP framework. - * - * Supported perf levels for baudrates in firmware are below - * +---------------------+--------------------+ - * | Perf level value | Baudrate values | - * +---------------------+--------------------+ - * | 300 | 300 | - * | 1200 | 1200 | - * | 2400 | 2400 | - * | 4800 | 4800 | - * | 9600 | 9600 | - * | 19200 | 19200 | - * | 38400 | 38400 | - * | 57600 | 57600 | - * | 115200 | 115200 | - * | 230400 | 230400 | - * | 460800 | 460800 | - * | 921600 | 921600 | - * | 2000000 | 2000000 | - * | 3000000 | 3000000 | - * | 3200000 | 3200000 | - * | 4000000 | 4000000 | - * +---------------------+--------------------+ - */ - - return dev_pm_opp_set_level(perf_dev, baud); -} - static void qcom_geni_serial_set_termios(struct uart_port *uport, struct ktermios *termios, const struct ktermios *old) @@ -1550,7 +1513,7 @@ static void qcom_geni_serial_set_termios(struct uart_= port *uport, /* baud rate */ baud =3D uart_get_baud_rate(uport, termios, old, 300, 8000000); =20 - ret =3D port->dev_data->set_rate(uport, baud); + ret =3D port->dev_data->set_rate(&port->se, baud); if (ret) return; =20 @@ -2161,7 +2124,7 @@ static const struct qcom_geni_device_data sa8255p_qco= m_geni_console_data =3D { .console =3D true, .mode =3D GENI_SE_FIFO, .resources_init =3D geni_se_domain_attach, - .set_rate =3D geni_serial_set_level, + .set_rate =3D geni_se_set_perf_level, }; #endif =20 @@ -2178,7 +2141,7 @@ static const struct qcom_geni_device_data sa8255p_qco= m_geni_uart_data =3D { .console =3D false, .mode =3D GENI_SE_DMA, .resources_init =3D geni_se_domain_attach, - .set_rate =3D geni_serial_set_level, + .set_rate =3D geni_se_set_perf_level, }; =20 static const struct dev_pm_ops qcom_geni_serial_pm_ops =3D { --=20 2.34.1