From nobody Sat Jul 25 02:13:45 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 32490433E74 for ; Mon, 20 Jul 2026 15:08:11 +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=1784560093; cv=none; b=Vy+3/rwNzTPxOEaKEgNQPJKUQOWTXxypX1ryXmcCVy+ZVSCfojSP8gvX6OyH4oVxFM1eOY28CcO+d3y9YBymf9p8WVeANk5a9WmtQo51Ipm+t5LHPsBKJGMXfN75L8/8vaR96ruUVMtLM7aqJPZ9EhHDA2s9pHPIfiqj2j8LMp4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784560093; c=relaxed/simple; bh=NcQxVQ619WGiRGzna8yxBU65SU+YJA8Jivukkll4UC0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MfFP4gFwXWEJwk2TtDOA38F5H01TcZgY+t2pam8b83VxcZQqU3DdV0n21YD+LW5WE7oel1SgYKv5ZM1gFb4SDZEqVRbhX2iGmzmzOLYt06TE1dgGLhpUpU1RpzVpr9pZXZaCANEO4OlV+CnRnjx37XqEOGLPsJ2SywJPgqS5gQg= 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=Y4qFzBSu; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RJL6SBTv; 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="Y4qFzBSu"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RJL6SBTv" 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 66KDqRNC2745327 for ; Mon, 20 Jul 2026 15:08:11 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= QK5PeiJNFZwQCJrkJtf/b3iSLfC/qQj+IwdiMSxf3G8=; b=Y4qFzBSuGOYY7J3q Nn2+P1IVowFeFebLR0VEHmGZ0cNsdqLAfEd9acCGebo6bdCPi6QeVFQRKJX9udsN X2txjBOii3cQ0+1Ik5T+XhMomM+Iz8Z7jILkZGIMmr6/QSA8+PxUDRHURzV/UhLK E9A3E5rujptzTbCPZKvD2bpyAbXmQBUGyhBsGNf9zydIK/HDYBl0lO5+AxzS2r1K OdC3R183gHf8N5lrXU/wLAHXTA2lG2kQb38VR0nz5O6+zqWdU2N07cyqV4qXG3ik 4lxHWmneMmH557WpENNbNaLrC6QmKxGh0bBW8B5XoJpf7ag+kYD0HeHNhWOZeiI0 eFydAA== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fhk2f8vqn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 15:08:10 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38dbe39ce62so4034378a91.0 for ; Mon, 20 Jul 2026 08:08:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784560090; x=1785164890; 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=QK5PeiJNFZwQCJrkJtf/b3iSLfC/qQj+IwdiMSxf3G8=; b=RJL6SBTvC2d/B2lb72bISA0eMZtbuO1Lkt84CjUfJQr9Om86u03Gp/HT9EfXaPCFE7 uqYvhFcvFx1oCGc5H0OBN7iG5A+UeY8NNRcY74PNjonQMFKjJazP9VeffDzf6rfWJ0Ss na1eDh2fw6K46+ow2PoaJ5QRGs+Ul79uVX0INA1qsd5ZFPUaXz9bR1Eg7CMLfZLRt2Ac kxmzVC3ax89owMkqCJW239q4vl7Odf7M31sxFf7Ng+Uhy+nkd2Z8yD8HSuRXR95PEvdZ wqoQtXhZXK7Cq3+NZvaolgpDddaqC9AVajSlf7FlhXtqKkpO16T1Y0g8Ze0cFy2MTKVa tQjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784560090; x=1785164890; 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=QK5PeiJNFZwQCJrkJtf/b3iSLfC/qQj+IwdiMSxf3G8=; b=mPbOvoWFplrTGKRNfZhSNMDB/QNNaCpn+ofS4tQ6eXO5fMPmjY93oziQl/dBwKlEd0 no77LRaA2d9d7J5gy/dgiqlrJ57lC/5o+TUqfRC6I9ym6cCXw+v3JoxMGfvETQdFop4l iceZ9Y+zl3l3mTW2ghJB6l2Txa4hSAtee8mlblfWKBSnSvjajpuuIx0tvomizmwKgWaO LzY7BnRLsH+lS5FOZd0i+DAOSoAblnCk54x5C3Wi3wcgF2BQPaeoxS7UvQY2wN40k0xi 4P7wox04z0vtdJZP/1wZh25I8HW4zXXdiSnPGExMarG7oJusvEwveWsz+hmeuhZU0Il3 Kz4Q== X-Forwarded-Encrypted: i=1; AHgh+RrLXosuNNqzxj4HQD8VeWnvgSy1/J/2IL6SvZu5CAV/7mG/c3juzS9r86S2d1WrBb1DtzV/Oz6qgQHUHhc=@vger.kernel.org X-Gm-Message-State: AOJu0YwTjSZGqVVB+IOi9o83o/4AS7TsjODUf/myW5IWGvRpxsiMYvnk Bpt9zVXUHIASat67yb9gUj48Gl8RNRH/Xk6zkXZUyM8l8Zqy6ZOaJMI2Bfii9TdGbOUuDZGzs+J 1p9xmUK29YUYZoyS5RC6lethbKr+z2xMyVeKsFBEEbF9rdoJXCKlCFSr3PeqwE2rY1BY= X-Gm-Gg: AR+sD13NeCHNS8DPAS06coMgohy5T4nUIBD7iRasEyZ5pEv0/10HR0ndHJFxN7aX7rE /RfhGxHSBjuvSZk+3QJlc9TW5Q416rV1Hl6u2L6BeHl6mDwCUHcKEsD+Ek1KFHtSOmbtAyCII8G 1iHazXi56p95LgHVNv5VHVi7WXxWRHeCowhfEydnaez1V9US8Z6U0DZa2Q0bUapQJNJ0MTyRdRP wanIM78beXvq2WrXiQUXcMAHAOLAlNIAk44EgfSMJngIu3Ey9QzX0JxlAtvJ4iYcSYyi2QF5nY/ faNh4J771kpDlZZKwPT6C9R3DdqjBldfcv2Xsg60Iu6cd+5Ettdt4JeAyLv5E4sM/vAcUl1DKJd WzER+7MbfMMLMTqKmvykf9vvFvH/USahxyg== X-Received: by 2002:a17:90a:c2cd:b0:385:3ab:fecb with SMTP id 98e67ed59e1d1-38e4b4d3dadmr13088845a91.4.1784560089866; Mon, 20 Jul 2026 08:08:09 -0700 (PDT) X-Received: by 2002:a17:90a:c2cd:b0:385:3ab:fecb with SMTP id 98e67ed59e1d1-38e4b4d3dadmr13088779a91.4.1784560089146; Mon, 20 Jul 2026 08:08:09 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38e39e0531asm7856411a91.5.2026.07.20.08.08.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 08:08:08 -0700 (PDT) From: Praveen Talari Date: Mon, 20 Jul 2026 20:37:49 +0530 Subject: [PATCH 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: <20260720-reuse_common_geni_framework_helpers-v1-1-c3330ab9b982@oss.qualcomm.com> References: <20260720-reuse_common_geni_framework_helpers-v1-0-c3330ab9b982@oss.qualcomm.com> In-Reply-To: <20260720-reuse_common_geni_framework_helpers-v1-0-c3330ab9b982@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=1784560081; l=6149; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=NcQxVQ619WGiRGzna8yxBU65SU+YJA8Jivukkll4UC0=; b=0jYAbxDvUcSLEvRo40E9AgVRTxMMmweD8d3G+z1NpWKYGBGSFq3UfYHafSwLj2jVMW5G8RPWj 69aed70CUf1DQvI7h0hEz9OYWy27ZqNYGR9MCOMRj3MUwPVHA4cGYja X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-ORIG-GUID: tr6gzC85jJf84BFpxNx_SlYPhvBmXX36 X-Authority-Analysis: v=2.4 cv=X8xi7mTe c=1 sm=1 tr=0 ts=6a5e39da cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=b2qtf1SUZPxI15QPQQsA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE2NyBTYWx0ZWRfX9ADnLkPPtmB9 BzDXTWo1xyoWMuuDmPtSm1tV/C5oFSsV8Q63EXjZbTcu2XNVcBBFzwNV+CY0KA95e/nFvKOShLa br4gPS3suyj9Xd1OrsFmxTk+09Nc384= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE2NyBTYWx0ZWRfX8n6jsEAq+QZf +d1kcUtxOdNRtdCd0jSWg4Qf7omt3SuV2Ba3RhwVcOxmmbFk2rAlh3q6qxYRhllAM/SqsKHGTmE q3rbTcUmXQ1GiU6mYhtuviQEw9BqWPPuTgxU0GodoeXNcPaYxElES1gIz9xxFRzWk6JG2fTcEIA 69h07RQbriU7HeyEoOm+YzB53HFHZRh4pcPRebpiyRyXK2uuyZ7lPmj6c4nFS+kS9c1CWHRr2GP s/1bOyps+EpFZMMI2PYlDTFncJtx7jdgSv9ULF9gqkOvQk3H/0WApk5knBSWcGp6jUdg9dpSo98 gU4xmHllj5QOpDcpjYCgyH0uVXZ8ToymXrbW1WfcUHRln0f5rPxKCDBhErmHjiKn5yAmPnaokio GO/AgatYUaQmWnX9GSpQJ9nOxhvbqnLexenS3SkaGaz2RpIvn37WnUknMuEUL+hq0+je8A0Ka/j EjnbTPtddqza/WvMrFQ== X-Proofpoint-GUID: tr6gzC85jJf84BFpxNx_SlYPhvBmXX36 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-20_03,2026-07-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 priorityscore=1501 malwarescore=0 adultscore=0 clxscore=1015 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200167 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 67b14fda4ff9..4f34eef15598 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -113,8 +113,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); }; @@ -156,7 +155,6 @@ struct qcom_geni_serial_port { =20 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 @@ -1344,7 +1342,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 @@ -1701,57 +1699,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; -} - static void qcom_geni_serial_pm(struct uart_port *uport, unsigned int new_state, unsigned int old_state) { @@ -1883,7 +1830,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 @@ -1988,7 +1935,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 @@ -2011,7 +1958,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) @@ -2091,7 +2038,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, }; @@ -2099,12 +2046,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 @@ -2112,7 +2054,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, }; @@ -2120,12 +2062,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 Sat Jul 25 02:13:45 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 2AD2F434E21 for ; Mon, 20 Jul 2026 15:08:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784560096; cv=none; b=rM8wixfo1HAloQXTv5eIq8dJl38AQ+fAL+Ee9Xil3yc9GIDaOvnjp7qS8+lvni1dyras/zn8KfT/L1xHEww47Y0oiaIrezv6JRsmq2j2SLvtC7jWVI64rXV4ZcNnsgyDPH7kv/vuH3lL+PpmZCeE6t2OQ3KgGl5RAHhjB5em58U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784560096; c=relaxed/simple; bh=SJjTUHlMNzbHbPh8w/YzLyeDEVKL94o5fz6ILL/JKb0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ak4fnLb8xEPk+G5xRl0yb0l9P83NU+SeC2v6SGIj/RSkUGcHou5UGmuR5dWtgw+UgiW4/at/0dewQoDl1C16EpqWqTDDvKQ7bjmlUEcmuA587VRs3Pvvw9eMLQJZ/fhWPrJy/Mu6cpWLRS99JSxN9RnS9RQ/aD0YMPRVJUUNU6k= 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=P/H2T4UN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=EQhu4NRM; arc=none smtp.client-ip=205.220.168.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="P/H2T4UN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="EQhu4NRM" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66KDqNBH2836897 for ; Mon, 20 Jul 2026 15:08:14 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= gv/Mc9YDpHV0q4uPifKaSiGmnLmBmYxDgZHdP91zT1w=; b=P/H2T4UNdai7dGPg xo2Nz2ouGJ/6JYJmvQvi8o485UHwhToTkOUfB987jlyY8SNwCo8cb5wYr1JfSDX8 BrjsiKOBXmyb+JOunPaWL4jDXcvJ3MYMeFibSbhmjpp36GbspvWkiYz4Dt+urLHG ZGffhTZQ4dSkp3+nBsvyJwh9SFK71H/GpVOAje3zZ9DwtbAoxEMGRLgeM5Jk1xQ4 ehtbTTr21fpQIXtJ780Jg9GlDShRwm5jgeBCdWJG77i9CrszPpE1N8hXv+9ZQvIe FF6NJUd4rOlRYEv2sqbAHxG0Z12sDCm2ZUpuZMFP+TthPbPHY3S7OQQZOjIfoWOO XKL7iA== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fhfvxhv06-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 15:08:14 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38e25e4b41cso6175077a91.0 for ; Mon, 20 Jul 2026 08:08:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784560094; x=1785164894; 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=gv/Mc9YDpHV0q4uPifKaSiGmnLmBmYxDgZHdP91zT1w=; b=EQhu4NRM80w1uiwUb4m61THXqwqjhFPYyb1KEtgvv3qSqFKJozxf/ioLV8NnzzZxct X/e4/S//2uRb3ymr1oXnQSjQ12Oo3fJhPQXzuhWc7GwiTYt2YoooVxJakWrdeBB5FsAV RQDGszdmMjjVPIuk+Se1HE/6hlZm9ZdnCg5rDfOZbghcAdAprOKDXarSwwckD9krYILK 01j2OtAmws0bscs5NRx832ck6V6T3FiZG3mxhFhCiGnEZjdFReuKrarsh8rA3M9zrEpp kaVAz7e5d1FdVznWJ0bhYHXAsUOVJifKb4o4/UDOaAWxZYbPek6dxlv3H8lYWvdI8k7J UKzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784560094; x=1785164894; 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=gv/Mc9YDpHV0q4uPifKaSiGmnLmBmYxDgZHdP91zT1w=; b=lKweHJXK+sBesOYmzhJg7qaD/qHhS2kFEd0HSjlxT/hljlfjaZT9igxfkWP1ICzwK8 FIYNx0lVQIQXkqDTMWS48c8EDw8dyX0PjM/85nitKYPGg3ujXgkMy/pxkH2LJ83KJGed SFb4M5oxEM3MV2AkXb8mgdJY49nxTboX4ROjsImmjG4O8FWtYyxmP4N3/AOgyZcxCHwA hvgSYOkH+E5C3rFbHZhgCQDENepW+mjSiw/G9SX5GcH65MaxSymyuouGvZXiKSGB/D8A LZhvgQRslisB7quN0iw/yVmamiQUpm9rH72FO5CkiIlJKdbyf2DHn7XRE/88McbOeWJk RCqg== X-Forwarded-Encrypted: i=1; AHgh+RrEAyOecnIUaseYbRVm/MHbo+Q+s/ocp6ilwdYBG6d/1uzzrLhqjAAHsPpEzC8faLwuaGIfPJNvjZbnmLg=@vger.kernel.org X-Gm-Message-State: AOJu0Yyv8/Z+MgTDmGWB2lhwx0MxwBTX8GWibL0jDeAWY0jc2xcNLwMf /gItSJGr1kSzP+/UOUB/S2XWZjO6eQi2wnSGzSp68un1WEZgp//JEX8XYS/ZdkfFk8doBLDXYme gUmKS4ApX3STrad67s1Uj4LTDMgf00f4Xv7v0I30aooghw49KUYbBHHauOx89gORwTro= X-Gm-Gg: AR+sD118b3KFuhBsGGS+wUv8wakk6VtKw5LyFJ6NUYT0Rfnu9s+wg7YK0DZ8OyX1LOX LMcbSFrXXyP7i/v7JzsEPoHBineT/NaurshHxOuSfVU0sfXS5sKUrWqBeJsFQS9/vKyzk0us3o8 TOWzuA4zSgGMUWFS9j1FLTsKk2uvKQReswH0kOtd7/ZnSAUdfZWk7BI11w+NmTR3YSZ2cJ5QRoS +odyN15vUS/QN21tEz9aIGZXPjlaexXlq2j0h2MsKILxXr8dLfmrvJvOH4vm9PEUqmFUdu2T6C+ QZCuDxo9qupWwoXP/fbzAjr8P6+Tq/rUWCKtQGlfpa1xUD5BovV9OrIDcWOxszPA/R6+MosZqhL vuqZXQOWRlezewjD2iClcLDe1LU/T8Fj2Ug== X-Received: by 2002:a17:90a:d64d:b0:38e:75f3:ad4d with SMTP id 98e67ed59e1d1-38e75f3c7b8mr6126667a91.7.1784560093470; Mon, 20 Jul 2026 08:08:13 -0700 (PDT) X-Received: by 2002:a17:90a:d64d:b0:38e:75f3:ad4d with SMTP id 98e67ed59e1d1-38e75f3c7b8mr6126607a91.7.1784560092842; Mon, 20 Jul 2026 08:08:12 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38e39e0531asm7856411a91.5.2026.07.20.08.08.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 08:08:12 -0700 (PDT) From: Praveen Talari Date: Mon, 20 Jul 2026 20:37:50 +0530 Subject: [PATCH 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: <20260720-reuse_common_geni_framework_helpers-v1-2-c3330ab9b982@oss.qualcomm.com> References: <20260720-reuse_common_geni_framework_helpers-v1-0-c3330ab9b982@oss.qualcomm.com> In-Reply-To: <20260720-reuse_common_geni_framework_helpers-v1-0-c3330ab9b982@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=1784560081; l=4419; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=SJjTUHlMNzbHbPh8w/YzLyeDEVKL94o5fz6ILL/JKb0=; b=OyhGjbHRDyoNgr0J2oh/rCDVPJa4GFtpCjveUX/ghuyX3X2p7aOqFKHSPRaYsFpiRt/G6SmGP /5ERsA+2iEjBIn49DiaH8yixwQA/xzRuh2Ol2ZcpUE7zaTF8TpK6K7N X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Authority-Analysis: v=2.4 cv=HKLz0Itv c=1 sm=1 tr=0 ts=6a5e39de cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=sJIhbiIXeOZG86cfmoMA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE2NyBTYWx0ZWRfXx7YdAKvdQWxT h3mIf2JWk++evKDnH//mSBo1sXKtObTZ6SNlBC/0NccW/NN/4hK1YKGXWyeEjc9ZC4t5E+utv3g jt/86BbGzE5cAlIFZ031u+wGN8XojVw= X-Proofpoint-GUID: 8K-o-MwyYVP7k3Bhelj0NVxJjm6-ci8f X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE2NyBTYWx0ZWRfX6nnih9iRfkaY P/F/sLa5GUK9kdIwhXsb9N/z/z1WAWlRVGjvJuLlVDL3lk9aAQTTn1CV6qgoqX519AirCpe47gw UJq5CkURLIWk+OR+/caZRT2vjwBE3xWPv2KhkjijduzZoppq4x+1o1efc9iL2rI66wnWiBhXZzt Re1nLjjwh29BCtuKNewNSY+4xRzJqdI9rXh8NGI6NAjKZKWmiLA68ZEAATLoJpgHKj8b0hMv9M2 kP1X4+YR6DYqsvlLbLPe9GdpejIYMWHhqFGdMz+mlpp9m6FUfeJRCHfVeY0/NfAt7dwF/XmQ8YM G/8/d1x4H9y5iFDV/VALm8NVvuE+vasz0eVju1M0ZaESj+pX67SkcCY62W/8ska2oFB0x7kJ4Wb N1xEt0Kk3AcZn3kF5D7Aar4g5pMONFEiIwUR8z/cU9nwHzZk+GAtBhYinlNpYFAf/+3i1rNonpV m+2EyJ8ewT4+4rhflzg== X-Proofpoint-ORIG-GUID: 8K-o-MwyYVP7k3Bhelj0NVxJjm6-ci8f 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-20_03,2026-07-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 clxscore=1015 malwarescore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200167 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 4f34eef15598..17735c940541 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -115,7 +115,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 { @@ -1658,47 +1659,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); -} - static void qcom_geni_serial_pm(struct uart_port *uport, unsigned int new_state, unsigned int old_state) { @@ -1964,25 +1924,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) @@ -2040,7 +2002,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 { @@ -2056,7 +2019,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 Sat Jul 25 02:13:45 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 B8E1043441A for ; Mon, 20 Jul 2026 15:08:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784560100; cv=none; b=cQ9Kxow0TW2+40GnTKANjPvmAczd1Eb1xtXKUEVYXBr5Cm7onughsmDxaH4MqiefJFqQ+9ZW8oRPdJVOGyVaEzx4S/LFx+0rcD0H++sOXvG/376ZTeghJoNYo2h2kya6Dc7iWP61MyQpM8ZBrDoSOFf8r8raH+k9zlWsU7CVq9E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784560100; c=relaxed/simple; bh=cu6/tZOov/VlL5x0rhG1qMaLsBd1zn8WxX+O9dJpTxA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=D/al/wW4K1lpJHMtVhsgHX+wMKXk8wj7EqcM5581Ef+ZgoYkv08mbCBPu0VtWqpVV9LNXnpnE5GKp5/+6gYMM0WmMh6NftCLzhs1bFB8Q3qgSRuyRY1LxgnHV0clCO0uH3Gvv5gX28q57mOogNiaxLCYnt9jD/sb+h6wgCX1M4s= 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=QVKbpgRF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TeOjQK9M; arc=none smtp.client-ip=205.220.168.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="QVKbpgRF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TeOjQK9M" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66KDqWlR2324585 for ; Mon, 20 Jul 2026 15:08:18 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= 2RnIgqvqhSQk5vbShGMyDEqVqFN3Wb7u01FELe38R2M=; b=QVKbpgRFQNWdBBPv O4sqS5EJC/f+AHITCdRNeRH4tOj3eQEHQvSk4qEGSdBah9rsGik8PyKPAcHjzEx+ J+aI/rmOLjagGDF1QiawHHqhLFJccaeKWXufzZ9MfoGu4AJ699k+BDfC6sLlgviy rdm7G6O7ku6lEoBUaj+BPueQnmaafKzwLH2FQZNMn030T9UyaU6fZlH05KfBAei+ JaUCZ3xm4Q9kwmhJpO5STzQtHxFZcQhuEBVdzM75Brgg6tjFP+Q9CW7xfgGVrl2/ 9xeb8ua7WXiRiPYZsV26gRBL4agYKUfwbH7coyUAnawynJ9NI9kDMkkBSN+gT0R9 RatiUA== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fhgs51hma-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 15:08:17 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-cab3e9cd922so5331694a12.0 for ; Mon, 20 Jul 2026 08:08:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784560097; x=1785164897; 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=2RnIgqvqhSQk5vbShGMyDEqVqFN3Wb7u01FELe38R2M=; b=TeOjQK9MAniwiZiE42WTgQd4TmIYfM6r/SCyuNX51a+99MO+jmQKS0eLt1aoas+Wgh KTFb//g5A0F6KDMcbaJiXw3A/knzKcOGws2fbo3+JOb3Pvm7RlTCVS8UnF8KYMll6BRT oF0NpqTTwkog8R7Umj+2dfw7zqqaD0Waf1q030LoY9jIVpusgYFO8fbXsrrNtRRVA4wU 6sBcws7BMM/TPayHrUo75mrAwRgSefCTIY0m3LwGv7v9Qy00ZMvGhKwWJPpFbAN/N07F fmgitlawGmY2aiLej3Tu8HH+cie7sT3a5wxEsEhNqVlWDOVc8ufLKZUoqjr3ccYpIYhV 8meg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784560097; x=1785164897; 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=2RnIgqvqhSQk5vbShGMyDEqVqFN3Wb7u01FELe38R2M=; b=fAAaBAGXDbHvYSuKeRTpVnhtcAP/NTqzmlCFWA3FrOwtV4M2xRVazGj9koxD0n4aVv nP4FB9RqAqzYEpYs8lyfFP3QgYymuPeAMs+KEwItqlDHdpvJ0KoskbKcCspPH0Dr70eu z4njyHp3YwA+5ll+2D7260QVV4oVU1skovr4GBMDkRqqd0lTYwjm7LR6pPEu/ChIZGfk lNn/YxZRUm4Hi5iJZ/d/EkJ51Xho40KxD5U4KHfD9FhXu9mUSkynqva29KGOeA5iAmxO Z1tuaR3ajHKcs1V6BqbMpktbuF0qQNVqbsrUwjEXmGJlvR9oRb+PVWbLrD5pEqtvlpsM 9igg== X-Forwarded-Encrypted: i=1; AHgh+RqM5l5qreAhHigWG564shZ3eEPRfROmYN4OB6w4g4UgKfuIpfelyPDdQvhcmzzNJU+NxnJCJ8sV5xAa5Q0=@vger.kernel.org X-Gm-Message-State: AOJu0YwNaR2H2s8T3GZPcO5VKJZ7uU1DZbsxcoHyavXqm5wL6Q4GXHYc ihCMmkFzahb0jlVb45mVz+4SAfT4ZP/qvcXN/JJ+Eycn2E6hsfOUwgavhtLTrdiRvzBbcyzjz/w gQYVEzdGn6AUnWqjxUOBdttph4wZyC763UmCEyPSoh6qPwyqpyOpE3VPTf86LAoCe8XI= X-Gm-Gg: AR+sD10MWfUDZoOsa7Geb/rleZfQWR+zH7g8LzuPKRi4Xqv3l/8MT81XtPmJVcDMDBi MCYVqOgYqKi4Yb257JHA221wVdKLq9LBzptkuN/uLUGC90wf/CtINawdehO6aWQHWuIiN0V8quY XU1PjRXzOICztQv/+Ax7aDQR6XyCEPLGPqg5s5t9OS5t7yUJMT1SyJRSD1BxepXC3nACcEdLFf2 nmOjPgz+Rfb0UMakQgyC5j2DzAQfhkp86FwvIxA9Hn2W5gkaWAA+VNRbdTu45WaQwpXRUm5e/C8 /IvjxITJR8atZ6+VzQ2LjnhsTIyZFywAJueLYWkygXXU0iOpLHqEVwekE6e6ZikEW7Um4qrm2Ew eHGbNITlCjA6IV5trDO7Ef7OyL8ji74jF5Q== X-Received: by 2002:a17:90b:5866:b0:37e:10d1:c05b with SMTP id 98e67ed59e1d1-38e4b5166e5mr14208337a91.22.1784560097117; Mon, 20 Jul 2026 08:08:17 -0700 (PDT) X-Received: by 2002:a17:90b:5866:b0:37e:10d1:c05b with SMTP id 98e67ed59e1d1-38e4b5166e5mr14208280a91.22.1784560096563; Mon, 20 Jul 2026 08:08:16 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38e39e0531asm7856411a91.5.2026.07.20.08.08.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 08:08:16 -0700 (PDT) From: Praveen Talari Date: Mon, 20 Jul 2026 20:37:51 +0530 Subject: [PATCH 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: <20260720-reuse_common_geni_framework_helpers-v1-3-c3330ab9b982@oss.qualcomm.com> References: <20260720-reuse_common_geni_framework_helpers-v1-0-c3330ab9b982@oss.qualcomm.com> In-Reply-To: <20260720-reuse_common_geni_framework_helpers-v1-0-c3330ab9b982@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=1784560081; l=4995; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=cu6/tZOov/VlL5x0rhG1qMaLsBd1zn8WxX+O9dJpTxA=; b=H/e5f98+wI815MrhifYNeF4YN+tUEMxKZv52ErN07waMuF8XVOKcDdWh1K+5MTGxFOfiYdC92 DkSFRmi2Ij/A60S4wNS10Ghkl2gz5EBjID8G57W0S7wcsk3Qkik2LT4 X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE2NyBTYWx0ZWRfX1zaL6or8OCM6 j7M43g0uGYkFSIok+6V5vJ3tPPK69pdQLVXMxvQaY6RTFPZjts0PmDp0SHxyaen5ZW6Q4pbN2ag KFDdJ3TTWI2UzRiK3K77GLEjknu7i2A= X-Proofpoint-GUID: FEoUTmxLWW8aJcXbxFuOYqZcP4I0UeRC X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE2NyBTYWx0ZWRfX2EmHSwwPXUUh EDOjeEfc00ZwHMjkLf2quVzRt/Basda+tD3xKTZ08SPtIGlIxt0CcQBVNRCdSDTj717KH5CQW2S Eh+GCKlC8ryhQu7LDwRzAScBZxR7mOjWeKdW/wcVvc2cLODWYyMEXBhz29UGsXO5bC4ZTjYUKF6 Z1XpPKkEgZ8rCXQzaQo0sZDD6LbAULHEzk+hLCrDinwlVe/kiq6vlFyg5LI6MM2P7iFySFnfV6A PcvfgVPAzVP5Od8FbOCgr4yPyehJTFKqzpuhBOR6KQyjFP+hstrt6PQSLD2T+pfxN/TPCz8UpD7 SRCaTYDLo/5BwTqR6RGwjtWCBJWqdXVklDYCWPQrc3Lfal//8ol5p/pyTSlaIvQZutEHqkWUs2l 1Du4RaoXzqyIFkTBQkgwXMogokaXuhO5pNwSSF/uqtA39LWhvqMazjOri/mJpIVNCSL6XNGz1h9 yn6mwjWczka2fP5IkJw== X-Authority-Analysis: v=2.4 cv=CpiPtH4D c=1 sm=1 tr=0 ts=6a5e39e1 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=J9hZ59OvjYixzyTJZN0A:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-ORIG-GUID: FEoUTmxLWW8aJcXbxFuOYqZcP4I0UeRC 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-20_03,2026-07-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 phishscore=0 spamscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200167 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 17735c940541..fa86dd18fdee 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -107,14 +107,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); }; @@ -1284,9 +1282,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; @@ -1302,7 +1301,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; } @@ -1340,42 +1339,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) @@ -1394,7 +1357,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 @@ -2010,7 +1973,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 @@ -2027,7 +1990,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