From nobody Mon Jun 22 02:29: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 A7BE533A6E0 for ; Wed, 17 Jun 2026 04:50:43 +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=1781671847; cv=none; b=VAZsWaW8uDrw4j3jzMLhzoIDIRdcl0RvEYKW3Bx4v3xGlheF+nlQ3k+/zb7B805uThw55yuSGBqXFaapb5hZl944tHHeKkCoeqbWJHjQrwD4rDs2sbkVHRHPWjviGc0MDKhjMC1AxLux2EumsfwYOrUpzuHg3Z1ZLQObYijvntA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781671847; c=relaxed/simple; bh=1U79tpuM4ZCInjzjfpqkfXwFv1yu+UyNvhAWxEVHcg4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UO6gRf4U0JnXXrEEGO1qXWEKy6cWBKyvDxx6Srqpn0pi5x6MIhiroYn5Fuh19QemNxfq3CpcUX6ZVnWFXqJhCVv8FR0w9K1odFL0G+Wd8DsAKILzDZAAhucIVKT9POImiHPM7Aj8qqyKppNy/mzlI67Yawfz6PqctO2+R8BKK04= 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=M5dUP+8t; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dOsMK26w; 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="M5dUP+8t"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dOsMK26w" 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 65GLTYbH605747 for ; Wed, 17 Jun 2026 04:50:42 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= 9Q3orq+Pmz/vzt6D2bgZpv8WUE6yDRouML55RTJqYNk=; b=M5dUP+8tyG7lphOB YqCQRrayp4Yav9sRLoiRRsocpeb/ivDZjRoN4JGVmJ0CeFDPNZNIhT7G3DcmhfVg LlrUDUdq2rPQzU+6xEg2fFc9S9W7NTGpEgiVdsNfA/f/tka4MNldQuy1GcYuN1+v eIcqTuT0X7rB8qPPUbS+lOtxqVx4xrM842WnaI64+bpR0VrkeXGl/pP1fxLMIJvb DxFI+wOeYtLyWgve5dFU3K5GW7vQnBTWY8QIYg+hrEhloOvLcG8xDzySzyv3XUXq /RtonqlQbiXtWwoKurepHpThUH2h+yoGQdLtyI/CrEu+YUC91p+KQM7KHj7mKBpn FLrTwQ== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4euees9d8f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 17 Jun 2026 04:50:42 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-8423f6247c6so5949219b3a.3 for ; Tue, 16 Jun 2026 21:50:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781671841; x=1782276641; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9Q3orq+Pmz/vzt6D2bgZpv8WUE6yDRouML55RTJqYNk=; b=dOsMK26wTcPqJN2nR3J+hAMS08IUSVaAx3ScNAQZ8HncUrkUxaVpjzDwEiPegEVEYx 4EpEHDF8QJnSIYUHY0M866I+8/w4Cw3I+eJDgUvQUWDYRmD8Agdw/K18euK6GN+mVlwK 0S+fHJ5URXjQQbcNWT71Soh0ybErWZrpMLDp6+rKMsYehHlUhAzSmdaEdiqHtU6LCpOG gtmW9vdY7yvFstz6vPWaBIhIL83ws/tkccjICJPABSnsxMEIICLfvQUt/dxwtNVW9VQd goh1EGjCgLny/vJZeCD0Ld7TFjxw5EtcNk8b9Hw+xWmF2/lvUBtGDRgcGpOoNkWrOK0a J0zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781671841; x=1782276641; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=9Q3orq+Pmz/vzt6D2bgZpv8WUE6yDRouML55RTJqYNk=; b=Iq+JmRBBgdBN4EeHkrR4NjkAyCckHMwvVDeFyhvV/r4ChWA/oVpLXLcM0SbUljUoIX Rhd0b5+brLZux8Xbjvd0xbwO2ynOCmWaylH8gTQ03355MALsElV9QEIMWNiyVbEuVxu4 TEWsxCDkqlwaTQ5yMQWtjpt+gopoRbKsBDvyzqPJyxcKGgIMdHPLHHMB86aO19La9WtW 7NlurDI4biLLll1X4PaabiiSVkCk3YsI6MsIo6RJy/tCfONQ5GGI78G4ZWQ16DUxy6qT HDVFyYgGwCn4jXKiwiM5uoPtgVrb202HYj2q3QsL/u42a7x9QcIWwRA0pIEfa30lc1No LM9Q== X-Forwarded-Encrypted: i=1; AFNElJ8Gu5BipQJo8j4yZyOK4Q/OvDu/hgXc7WwmwfIWQa1daqhJAj1AFmBbs/vYIwgkuhitYLCXvNlefReWomE=@vger.kernel.org X-Gm-Message-State: AOJu0YyPsFCAZcGYGZKoL53/arM/jgywdCfx0dKfLHZmxLKKQrykBoVH 3vnrKzi0pI0lmZOy6rzGxNtyjvZ6IVpaiXdPpFukXV3x/pIX8268KfAJnMxnogB4JFFyVCvQxt3 8coYviBT2d4lziYMgfACL4LQfA2WvS9XcDA42O4J0vbrr7epk6GdizRSVODnv/6uMqsI= X-Gm-Gg: Acq92OE1vroRMuwWf1aO4Uw4JJrH9k+nF+cM7qGqas1INcuf2+mz3k6zBfm1BTQ/Ic7 Yy0ClLIPixYV3T4xiKhU1QIQ3/ld6QdLXiGfOKRSGv8+culCefjTqwFgAHKdI0YjpCuNjLzTR+b Hk0QWetnHLq7kYENQ9IohBoagfOnm67UVS6sVEFlGTnc3DPyn7aKjzikcEPI0ifWrMpeR4F19ov AZKX0azdatOtJbc7duqMBLlwm+lBrS138xGcybDkwTvpdJlR6TcMGK98IS9nLM5lChBjp0IXk4B UtSuiLgb9diry4ycQBzJ+YHG+aszP2abIxekGm2J/ElTfEODptJ58IkU4PTidjhwOOeOZmgC3b2 M/IU3wYSc3yl4uXX1HNEjhq8cqxBPLHXpXSK0eGXmr8ks X-Received: by 2002:a05:6a00:3d4b:b0:842:80c5:c425 with SMTP id d2e1a72fcca58-84524569afemr2216750b3a.35.1781671841068; Tue, 16 Jun 2026 21:50:41 -0700 (PDT) X-Received: by 2002:a05:6a00:3d4b:b0:842:80c5:c425 with SMTP id d2e1a72fcca58-84524569afemr2216713b3a.35.1781671840558; Tue, 16 Jun 2026 21:50:40 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8434ac9c016sm14721127b3a.8.2026.06.16.21.50.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 21:50:40 -0700 (PDT) From: Praveen Talari Date: Wed, 17 Jun 2026 10:20:15 +0530 Subject: [PATCH v7 1/6] dt-bindings: i2c: Describe SA8255p 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: <20260617-enable-i2c-on-sa8255p-v7-1-ad736dbeab57@oss.qualcomm.com> References: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> In-Reply-To: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio , Bjorn Andersson , Mukesh Kumar Savaliya , Viken Dadhaniya Cc: Mattijs Korpershoek , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, prasad.sodagudi@oss.qualcomm.com, Krzysztof Kozlowski , Nikunj Kela X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781671828; l=2715; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=1U79tpuM4ZCInjzjfpqkfXwFv1yu+UyNvhAWxEVHcg4=; b=HLl7kNKNz6/ItrAtFz7MOBiAdXKbbVW/7jPVsy66FAMZ+wWyPHvHg1c7/VlT87BZQNfwAL/0Q c3mg+oSzMyMAgrUMFY7HjTGbn8TV+TLeK4+nAdX75T2E3VMV+bmPCHk X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX53E8n2NsAnap f9/7rvN1eCVgvYEhwGW48GVrjR3E3QLmoW/m/SJPUymT3LW/faSHNlGbfTrz+KSogmIwIzRcvPU wx/nNyKeoA1y+eIDMb3PmlkzY47KlSI= X-Proofpoint-ORIG-GUID: 64Pc1ZLhwGxwdOHwPdQNpDxJtyu-Zf03 X-Authority-Analysis: v=2.4 cv=R6oz39RX c=1 sm=1 tr=0 ts=6a3227a2 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=COk6AnOGAAAA:8 a=apMzWF-kzHp83YoYYzAA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 a=sptkURWiP4Gy88Gu7hUp:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: 64Pc1ZLhwGxwdOHwPdQNpDxJtyu-Zf03 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX3aMp1+tQUZDY jb3oSS22hEtcsDTMk7N7NNMCujhbn4wESDOzu0nljWiJWEqzCVJbEXgAIjS6w1AWRbE+2RQWrPU zzzTOjSKlbRHazyZElllju+52h1Q1XWcEEQRbWOp0jDmESFn+U9660VHvf2YanG9yr3flGbNzcg WYvhsyMPSLviZF6EZQOim8Qj0hrhYM8OX65J07deiGgFsiY0s3kJ8ZN4eMNAEMiQ8fcmFGhLh3o r2O14NJ4LsQrQ/vk6WTc49yPKtm7tfE4G8GypqCsonPsHmLLjDXqne9G85cRQUoWrLVYr/27ZSR EtxVr+EVmIsaPppWS3yPbTrPUCbI38SaChxumbfE0Ud8YrspjiOFLLHWzEBdZv8QAQJj6VbIpce 1aNt0SAgtRi9fHWKsL7x1EFDFU0CzMq42lfw3elijasLVHEA0G6Sj6PE4iFSoFupeWoR8a8+u5U DLYooGfa6JTlLXhehsg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-16_05,2026-06-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170041 Add DT bindings for the QUP GENI I2C controller on sa8255p platforms. SA8255p platform abstracts resources such as clocks, interconnect and GPIO pins configuration in Firmware. SCMI power and perf protocol are utilized to request resource configurations. SA8255p platform does not require the Serial Engine (SE) common properties as the SE firmware is loaded and managed by the TrustZone (TZ) secure environment. Reviewed-by: Krzysztof Kozlowski Co-developed-by: Nikunj Kela Signed-off-by: Nikunj Kela Signed-off-by: Praveen Talari Tested-by: Mattijs Korpershoek --- v2->v3: - Added Reviewed-by tag v1->v2: Krzysztof: - Added dma properties in example node - Removed minItems from power-domains property - Added in commit text about common property --- .../bindings/i2c/qcom,sa8255p-geni-i2c.yaml | 64 ++++++++++++++++++= ++++ 1 file changed, 64 insertions(+) diff --git a/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.ya= ml b/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.yaml new file mode 100644 index 000000000000..a61e40b5cbc1 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.yaml @@ -0,0 +1,64 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/i2c/qcom,sa8255p-geni-i2c.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm SA8255p QUP GENI I2C Controller + +maintainers: + - Praveen Talari + +properties: + compatible: + const: qcom,sa8255p-geni-i2c + + reg: + maxItems: 1 + + dmas: + maxItems: 2 + + dma-names: + items: + - const: tx + - const: rx + + interrupts: + maxItems: 1 + + power-domains: + maxItems: 2 + + power-domain-names: + items: + - const: power + - const: perf + +required: + - compatible + - reg + - interrupts + - power-domains + +allOf: + - $ref: /schemas/i2c/i2c-controller.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + #include + + i2c@a90000 { + compatible =3D "qcom,sa8255p-geni-i2c"; + reg =3D <0xa90000 0x4000>; + interrupts =3D ; + dmas =3D <&gpi_dma0 0 0 QCOM_GPI_I2C>, + <&gpi_dma0 1 0 QCOM_GPI_I2C>; + dma-names =3D "tx", "rx"; + power-domains =3D <&scmi0_pd 0>, <&scmi0_dvfs 0>; + power-domain-names =3D "power", "perf"; + }; +... --=20 2.34.1 From nobody Mon Jun 22 02:29: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 12275339858 for ; Wed, 17 Jun 2026 04:50:48 +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=1781671853; cv=none; b=e7bULI5X/IpBfiPSsvoQtMnluxISuca9Y614b4pR8ncg2DGc2UXO12oKkHxbgWIsIobpIkKj3RegokXwkMl3mbzUXjyIACUA1XeKDEmoo47kTotJ+TnVYJeskkNqLl0F/jpC8rHBbO4aFDr+ODkL7o5agztB8A65dsJ0QTmcFJY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781671853; c=relaxed/simple; bh=3TFRixKUSBaNA/9bG5gD8oxXYKkrWW8JQJihdOw28zw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GF+qMHcmJBUllEiBq7E+DMJ4OG4sTM3KINCpxfnrjUyvZiL89V+pVC9clxA2c3vphTPIY3x2oJBQUB2MuqaD6bwn5GL+stfq4RJibh8NAFdB1PgjHO/e1e7vDkaT4pTeQ8DsVpUnT4ku4xMuPO3cl2TCkX2iXGYWcIbbfQCCNjQ= 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=RMhuABL7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=T4Fi9RU6; 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="RMhuABL7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="T4Fi9RU6" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65GLU2to576653 for ; Wed, 17 Jun 2026 04:50:48 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= +RmZNXIxlmOrsR5DVru/ETy3abT9vEaw0KBgzkoo8z8=; b=RMhuABL7bhcRwgTJ VCOGxgL4GvIp3RljE2b71EczD9+7C8zx3JZLBE0AVU6Jwe4bgR9ZSpW+HGDNuOeG q/UVwVkIozD7trFxbokXmknWGX/3/r4Ff8AdKBy+YRuIyIEqm/VzAJv3eIzJchIk h0kTkNr2LaUzOxkCgAMw8R3tANAmP/0aWNEyIWBl27Oi3YyiTedSnIlU0qk/Dwoj qDzkd0lGH5UxLnsjW/5hAL/Ha2VLZd/queyuXkE2sxtvJdwdRS2R0nFxHK/7hZJj 78ecJJ8lqt6L6u1Sj1m4HFpjBXfjBMqqP463EhSrOavbrQ5HXbp1CwTU+n1LzT9D FIPJjw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4euees1cw5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 17 Jun 2026 04:50:47 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2c0c36f1cc0so93058875ad.3 for ; Tue, 16 Jun 2026 21:50:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781671847; x=1782276647; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+RmZNXIxlmOrsR5DVru/ETy3abT9vEaw0KBgzkoo8z8=; b=T4Fi9RU6XjgLg16m1LdjWx/H+p4a+3KxEClD570WvgxxTfwra3gkzytLuunX0B8vfC ScsFcP26PQzBhJELfTvi3frb6xs6le/g0YpJm13Wb+/av16XyV7rj6BIe/V+C/sJm0vY RjYJewjHz2RWlux3LbSB+33xEgEa5lHoFWpGypwkiYgn9mHvAjIxgwfzDU/QmbwlfLRM ZZfDgimn+05+8Xq7ndUTh2Ptq6d+3GF5zJUMW8O/qR3MQNel6YcxldNiJaAIakBgz89a 5+VjZgZYeJ8rhKROAKYrZjvbE3uzgfR6nO5bglaM6MpOqVPY/zm85te4ZkO+Hze3SLhV nHLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781671847; x=1782276647; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+RmZNXIxlmOrsR5DVru/ETy3abT9vEaw0KBgzkoo8z8=; b=JMASS5AAMz7Qb8QNQixQGL3YzPomtKYLcblbq2ZevPVzxlEOSULhGIwB45pW91Biqo 3wuxuSjtBAdbdvhfkBhQIwvDpoh5/VTP5DsCmAYaFfJhlvj+xI1uM5lA6IA4I8CrTXEW cRE1/a0PbN/Z9KmIwD5KAwvzvn/NPFgzx6ItF6wAUzrGkKl5I1WnAeQXsi6lcGtkm/nK OPxAAaTdX1hSIjk9yQLgqzNlKWnFxvjmQRGc0qN/QgQ+g+EQRy1f55m05PiFx1ra4hZM 0UVUsUNq3fPRHJwIZrTby02Dapj0PgZ5jz7FCRvGfBJpuqtrc+klXu19lNRCA/bF7GlD XqDg== X-Forwarded-Encrypted: i=1; AFNElJ8gV5s6+yJXLgGxXaTQxVSHTyMAeHTRcBZkIwuIDwcUEukmhcvuAkTIONSY2HnAOEyojkQdMubPLcE6788=@vger.kernel.org X-Gm-Message-State: AOJu0YxB2EnkOvxcuGVHReFsUbzSFMnoF1EFRL+4Nknd7nH49T8Pj12J eX7mUgBBcffK0MRRGWlqaauKX8KlYHPYTzLeLoIQa9ZLLZbQ7WofmRha2/0JDMyDfxUe9iQTuq7 /ZpyGmbjYT13WPLHVpbf+UZ8LeqnZqaQt9MD+HRd/W6K6f/bJ9AZ3/ZVJ1XkC/A3OBds= X-Gm-Gg: Acq92OGVDJyJ+DNKYlfs88N9+4A7QHjSs5XzihDwnf5XeqN6OsQk/22zUz1I3EesOeR 7LeSYWlUoLnEqK6lbdKABkbW4HK3eIs86xUHA3mgUYhUTNCaCtBFf+5/ZiBmxToclVVeE0UlI47 9FPMzg6u5YqtJ30VQeZCO4Pp5IrTpUJuYFSxfCPAikKbk2j+YAheRK0EnW7bVpio/WHMpu0yM5Y i1OfGGkKAONGqmUi5hmQcW3J8senqZSx75go5eje+v3vOEkEQn9KSTtFGWwWxHs8A3mXULtIJ9g L/DzzpcHQwYn8q5iecOy4bxYowqVqFh4wuKsV1P8qbAx0VKNg6kvoS3qV7O5N6Q77mxbBY0s61b HJd4rsa7n3LYCZ7JH9cxipYeB1O2DvjZ4OnJ8QLkAm1yd X-Received: by 2002:a05:6a21:1645:b0:398:90e5:a9b9 with SMTP id adf61e73a8af0-3b8be9aead5mr2394662637.27.1781671846808; Tue, 16 Jun 2026 21:50:46 -0700 (PDT) X-Received: by 2002:a05:6a21:1645:b0:398:90e5:a9b9 with SMTP id adf61e73a8af0-3b8be9aead5mr2394617637.27.1781671846225; Tue, 16 Jun 2026 21:50:46 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8434ac9c016sm14721127b3a.8.2026.06.16.21.50.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 21:50:45 -0700 (PDT) From: Praveen Talari Date: Wed, 17 Jun 2026 10:20:16 +0530 Subject: [PATCH v7 2/6] i2c: qcom-geni: Isolate serial engine setup 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: <20260617-enable-i2c-on-sa8255p-v7-2-ad736dbeab57@oss.qualcomm.com> References: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> In-Reply-To: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio , Bjorn Andersson , Mukesh Kumar Savaliya , Viken Dadhaniya Cc: Mattijs Korpershoek , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, prasad.sodagudi@oss.qualcomm.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781671828; l=6246; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=3TFRixKUSBaNA/9bG5gD8oxXYKkrWW8JQJihdOw28zw=; b=WdcR8scR/pRQgVu8lExqLTP1FQVJHozxzcMxAscmxHIsB4VjM9N9V2EGjlNdCpuCUceUfMK3o 1LCyWtTVdLZA85UJwpw/YJ4vo7xfmzDXFdGezmbp1IPWn3TQ5+IlGFj X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-ORIG-GUID: cPxrJ5J9V8SMYex6xGssuCtZOUQJkosC X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX/OmufLFD93Yd 4Nj+dhq6IEN8iklAphb9fjP3hfrEWTjLgcsvTgsU/NXpfGYWUpEvnX5M3Usejcy6W+5ke5oZdqz 4bBRXg3WHCc0hEnr6mTu1m4Bz60nneq7vcFAObU52Kpc5ikvxF1syHM7JZcJFWViErVkWgofphF 86EyTUPz1N1y5cQuNT3x1GRFlUKUW2EmkiNsc7JlVUshz0t//RaTWTs7M0xs4uNIPHVss7pk9KU qxW/pMv8sgf/Q1PF6DYuEx3pbEkp23VqijLkAb3Irc8+Il+jj62xKY0ldjnrKPRainos5qg6TDh f0kl0yqqtBXRnVZA6NS9r34cCVSKnguHeBcmVv0mmo5HgcZqUsDCXnWDzRkURNEtO5QW/FlfzG0 JSPKXQODHBnbvcHWD1RO1FWvZ2jFOwWRKOFOogE+wve1JDEtHmwWZJnSFZa7BouZYhRUb+ILGU2 I5axCes552mkUbp16nA== X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX3ZW/HdQwmrfm 9dbAgXt/Io/9kDtTKlG9RuTtmpzeDKMYDPm9w29y5mconczFan6GUsuaOnIntw2cL0H1MMWcsXr pwJXn+hd8lkotpWpChhZBjLzA8D6MUo= X-Authority-Analysis: v=2.4 cv=KeTidwYD c=1 sm=1 tr=0 ts=6a3227a7 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=AmfWAOgrV3IZIKlFI3AA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-GUID: cPxrJ5J9V8SMYex6xGssuCtZOUQJkosC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-16_05,2026-06-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170041 Moving the serial engine setup to geni_i2c_init() API for a cleaner probe function and utilizes the PM runtime API to control resources instead of direct clock-related APIs for better resource management. Enables reusability of the serial engine initialization like hibernation and deep sleep features where hardware context is lost. Acked-by: Viken Dadhaniya Reviewed-by: Konrad Dybcio Reviewed-by: Mukesh Kumar Savaliya Signed-off-by: Praveen Talari Tested-by: Mattijs Korpershoek --- v6->v7: - Added Reviewed-by tag from konrad and mukesh. v4->v5: - Added Reviewed-by tag. v3->v4: viken: - Added Acked-by tag - Removed extra space before invoke of geni_i2c_init(). v1->v2: Bjorn: - Updated commit text. --- drivers/i2c/busses/i2c-qcom-geni.c | 158 ++++++++++++++++++---------------= ---- 1 file changed, 75 insertions(+), 83 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index d2f5055b0b10..3ee0be228d7c 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -990,10 +990,77 @@ static int setup_gpi_dma(struct geni_i2c_dev *gi2c) return ret; } =20 +static int geni_i2c_init(struct geni_i2c_dev *gi2c) +{ + const struct geni_i2c_desc *desc =3D NULL; + u32 proto, tx_depth; + bool fifo_disable; + int ret; + + ret =3D pm_runtime_resume_and_get(gi2c->se.dev); + if (ret < 0) { + dev_err(gi2c->se.dev, "error turning on device :%d\n", ret); + return ret; + } + + proto =3D geni_se_read_proto(&gi2c->se); + if (proto =3D=3D GENI_SE_INVALID_PROTO) { + ret =3D geni_load_se_firmware(&gi2c->se, GENI_SE_I2C); + if (ret) { + dev_err_probe(gi2c->se.dev, ret, "i2c firmware load failed ret: %d\n", = ret); + goto err; + } + } else if (proto !=3D GENI_SE_I2C) { + ret =3D dev_err_probe(gi2c->se.dev, -ENXIO, "Invalid proto %d\n", proto); + goto err; + } + + desc =3D device_get_match_data(gi2c->se.dev); + if (desc && desc->no_dma_support) { + fifo_disable =3D false; + gi2c->no_dma =3D true; + } else { + fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; + } + + if (fifo_disable) { + /* FIFO is disabled, so we can only use GPI DMA */ + gi2c->gpi_mode =3D true; + ret =3D setup_gpi_dma(gi2c); + if (ret) + goto err; + + dev_dbg(gi2c->se.dev, "Using GPI DMA mode for I2C\n"); + } else { + gi2c->gpi_mode =3D false; + tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); + + /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ + if (!tx_depth && desc) + tx_depth =3D desc->tx_fifo_depth; + + if (!tx_depth) { + ret =3D dev_err_probe(gi2c->se.dev, -EINVAL, + "Invalid TX FIFO depth\n"); + goto err; + } + + gi2c->tx_wm =3D tx_depth - 1; + geni_se_init(&gi2c->se, gi2c->tx_wm, tx_depth); + geni_se_config_packing(&gi2c->se, BITS_PER_BYTE, + PACKING_BYTES_PW, true, true, true); + + dev_dbg(gi2c->se.dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); + } + +err: + pm_runtime_put(gi2c->se.dev); + return ret; +} + static int geni_i2c_probe(struct platform_device *pdev) { struct geni_i2c_dev *gi2c; - u32 proto, tx_depth, fifo_disable; int ret; struct device *dev =3D &pdev->dev; const struct geni_i2c_desc *desc =3D NULL; @@ -1073,101 +1140,26 @@ static int geni_i2c_probe(struct platform_device *= pdev) if (ret) return ret; =20 - ret =3D clk_prepare_enable(gi2c->core_clk); - if (ret) - return ret; - - ret =3D geni_se_resources_on(&gi2c->se); - if (ret) { - dev_err_probe(dev, ret, "Error turning on resources\n"); - goto err_clk; - } - proto =3D geni_se_read_proto(&gi2c->se); - if (proto =3D=3D GENI_SE_INVALID_PROTO) { - ret =3D geni_load_se_firmware(&gi2c->se, GENI_SE_I2C); - if (ret) { - dev_err_probe(dev, ret, "i2c firmware load failed ret: %d\n", ret); - goto err_resources; - } - } else if (proto !=3D GENI_SE_I2C) { - ret =3D dev_err_probe(dev, -ENXIO, "Invalid proto %d\n", proto); - goto err_resources; - } - - if (desc && desc->no_dma_support) { - fifo_disable =3D false; - gi2c->no_dma =3D true; - } else { - fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; - } - - if (fifo_disable) { - /* FIFO is disabled, so we can only use GPI DMA */ - gi2c->gpi_mode =3D true; - ret =3D setup_gpi_dma(gi2c); - if (ret) - goto err_resources; - - dev_dbg(dev, "Using GPI DMA mode for I2C\n"); - } else { - gi2c->gpi_mode =3D false; - tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); - - /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ - if (!tx_depth && desc) - tx_depth =3D desc->tx_fifo_depth; - - if (!tx_depth) { - ret =3D dev_err_probe(dev, -EINVAL, - "Invalid TX FIFO depth\n"); - goto err_resources; - } - - gi2c->tx_wm =3D tx_depth - 1; - geni_se_init(&gi2c->se, gi2c->tx_wm, tx_depth); - geni_se_config_packing(&gi2c->se, BITS_PER_BYTE, - PACKING_BYTES_PW, true, true, true); - - dev_dbg(dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); - } - - clk_disable_unprepare(gi2c->core_clk); - ret =3D geni_se_resources_off(&gi2c->se); - if (ret) { - dev_err_probe(dev, ret, "Error turning off resources\n"); - goto err_dma; - } - - ret =3D geni_icc_disable(&gi2c->se); - if (ret) - goto err_dma; - pm_runtime_set_suspended(gi2c->se.dev); pm_runtime_set_autosuspend_delay(gi2c->se.dev, I2C_AUTO_SUSPEND_DELAY); pm_runtime_use_autosuspend(gi2c->se.dev); pm_runtime_enable(gi2c->se.dev); =20 + ret =3D geni_i2c_init(gi2c); + if (ret < 0) { + pm_runtime_disable(gi2c->se.dev); + return ret; + } + ret =3D i2c_add_adapter(&gi2c->adap); if (ret) { dev_err_probe(dev, ret, "Error adding i2c adapter\n"); pm_runtime_disable(gi2c->se.dev); - goto err_dma; + return ret; } =20 dev_dbg(dev, "Geni-I2C adaptor successfully added\n"); =20 - return ret; - -err_resources: - geni_se_resources_off(&gi2c->se); -err_clk: - clk_disable_unprepare(gi2c->core_clk); - - return ret; - -err_dma: - release_gpi_dma(gi2c); - return ret; } =20 --=20 2.34.1 From nobody Mon Jun 22 02:29: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 A193A33DEE5 for ; Wed, 17 Jun 2026 04:50:54 +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=1781671858; cv=none; b=t4T7Hn6lKfF8VKXo9REX5M58CpoM35fEk9ffJ0QdRmtDfVhlWmJpiIIq7e0FQTkGXYkqSDkJpHt2c3zVvXh9571O591SSwL88e0wlIUlEgqZWPFNCkRjUgfi+qzkmWAQJR1pKsC74orgtpcsS8U125WPrYV13LpJU3nNPUBVIgs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781671858; c=relaxed/simple; bh=4KhfG+zDzzEAbJv3mjGlukzOf5eF+5cRrvevXSzCXag=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IfiMqWMFXdjEoEppMdZzScLKHb4XFPgkLBsZ02KlGxO7oL0qLjOGhPbzQH1adOiV/g7bdh5kn787uxGO3AQBWumwYqkaCpaXbuWZtMzwsCbkixihGfoYKT9o3GJqA4ApFOjkaA94XbB8SnpX9SEOfs7knYo3sXAKR0RhvF3/QIs= 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=eQqj/Yvj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dse32bW0; 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="eQqj/Yvj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dse32bW0" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65GLTgJ2575673 for ; Wed, 17 Jun 2026 04:50:53 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= HnaK/CJH28AagYHdX66BizIgavWZBttjkQOL6idtDFk=; b=eQqj/YvjoNzkTrWD mcgto/2Lu5DcD6buDPV7rbzIkZEZYaA0q5D3GNGP/45mGz+0UEtjvem5GC3aQffb jTg1raqmnhsTXqkyEpxjl4dbvRgXPCmSm5PEsqtwIlcMX5YgnPM6bwR81lz7EtJ5 NpNx6sEJkwRtIcFQvNV7J0cBNU3PHW5CrDyUN3RKxW11bZT2tFe7zH8YZhQ8e8MW iYnQ7FAGz4F61D3KTRDiYUQwetexms8hxlPcLA/60Mb7551jKLFFWx4AyuxAb7hQ gyxfavkUhA9Su1WYN7WpCKP/XvvXQ73vR1zGki8Um+SJFq6KCnOo52/JVje4WRB2 kaWZgQ== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4euees1cwf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 17 Jun 2026 04:50:53 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c8581f7723aso2626560a12.0 for ; Tue, 16 Jun 2026 21:50:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781671852; x=1782276652; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=HnaK/CJH28AagYHdX66BizIgavWZBttjkQOL6idtDFk=; b=dse32bW0n12ef8/pk5BxjGkJjNBn8tujAFN1bYh+n8Wyl7/mFZipfPsrNSgGG4aT3Z g+B3hXzipnm+YDlY8WZziI7sicr+AtEeeujjGZNDRhxX4Et5WOfJGNt+v43FVPIGyEyU 61TlcN6B09eZXGh4avq3Cs/N7vzQBn0NBioqpxc7eJuFd8nascalLpt4aLDuBYxRPfFE EqCahivKBUWZ78MHz3XysBOkvcFxKco4m6wHv2Lt4bsaiuNoiip2lYY1deQfAj+yeF4z nBJK1BxVWtbCmrwIFGUVxG7cNtNdTLhUmYIQ28TnFvXOrmcHUF9wFrHaZonWOZxbt6aw B3YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781671852; x=1782276652; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=HnaK/CJH28AagYHdX66BizIgavWZBttjkQOL6idtDFk=; b=aeBOnqWCKGmBiwVIssKkJFAnPvM7Ts0YSClBbIbzFVJFAbBewfam76g2J+cEQIRxY8 LOms/s1MHKMX/0yYeIERW+CTONtc4fZxxZsPczAEN1gBCe5Y650llFGpKGW0nYgaPdre pXxCQ3lWFaKFO3R1DqJPhG0+aHMkB3v3NdNOY438Nahmwhdg0v4xdl6ZfeW+GEMMAjp3 NLXtgQOeFMURJq2A5fNp3PyHv6Im7UTBNtXODLppqYeQJQvEcP3VBEDbDQQhj068/UKA cIexjRbTvH3sHgpK1Qr8GN2ss+djSnJtEB8aUMD2ummkPXeOXqWxl8vangL6JV+qrKRI k/XA== X-Forwarded-Encrypted: i=1; AFNElJ/uht3QE4St2YaBsiVKWLFeJ+fhqWMFprob0gjbOBZSh6N/lGc3a3UfCAtgOVxGLKUnds6Nh1uEGPMW6Sc=@vger.kernel.org X-Gm-Message-State: AOJu0Ywcu8ajKiIq46XcUpx6kcu9j3CW+GgkipDud36PGmcX6uy1VxRn 9ifDKYA6whGc5R0iH5qRMCTD/X6CVN2Vsw845JDL2VY/L1XotN+g2e3MuBUEWt3RWVG3BOiC4Mc 13BkW2xrO7yONznNvfwG1B5BdkbI8tsnKFhDU36W0ku2OmPM1qmEfpe8YwCCrqO8+2RI= X-Gm-Gg: Acq92OG3zlHbBgDj8vdcMhNqmhZ/7JBH5HYIxkrLwLSo/VRypsvyMy6MajgD0mD+5Cb KBcuvgCqale/EvH5UsAFD3HxmCsxtcyO+9BrvFJ10zh1u6HxrjJgtEv40zXWkoXG4/hGEjhqFes wuIwDkx+4YTYs7zFb6x7pK3Pf2m/q6d7cDy9D9Hu/hZJpqGU3Mc/JGZAp3xfwH8pk8NkutdQCK3 qLA3nvBLENnL8v/5VnLSkjrc3r0NwQGF9HijmPgh3putu24ijB/TB7TUeUqBDR+HIce5V2YyGIc umqpCiZlqltpk/VlD0fkA+TJvUe7O2CfBla5BGFIbfohjv9SMiAi+yZ0AtWVbGHyjBxsXY+MYe1 gx5mA4Bx9wfkdvvm/k7bWjeXxYcVET8e8GKb+8FpvFsYC X-Received: by 2002:a05:6a00:92a7:b0:841:dcb5:e6f9 with SMTP id d2e1a72fcca58-84524446262mr2138310b3a.11.1781671852407; Tue, 16 Jun 2026 21:50:52 -0700 (PDT) X-Received: by 2002:a05:6a00:92a7:b0:841:dcb5:e6f9 with SMTP id d2e1a72fcca58-84524446262mr2138280b3a.11.1781671851878; Tue, 16 Jun 2026 21:50:51 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8434ac9c016sm14721127b3a.8.2026.06.16.21.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 21:50:51 -0700 (PDT) From: Praveen Talari Date: Wed, 17 Jun 2026 10:20:17 +0530 Subject: [PATCH v7 3/6] i2c: qcom-geni: Move resource initialization to separate function 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: <20260617-enable-i2c-on-sa8255p-v7-3-ad736dbeab57@oss.qualcomm.com> References: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> In-Reply-To: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio , Bjorn Andersson , Mukesh Kumar Savaliya , Viken Dadhaniya Cc: Mattijs Korpershoek , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, prasad.sodagudi@oss.qualcomm.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781671828; l=5098; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=4KhfG+zDzzEAbJv3mjGlukzOf5eF+5cRrvevXSzCXag=; b=C6mmfEZ0OTEt9RwuBJokw0VsI++siG7nMNvB3A55S+cWa1pRO5DCHxV6sr0iHra5coVOd7yfe 45LQuwKDXqMCG1p3AL6fo6+9EZtFM/a3UAKze92iEFSqRz6+bvXNws/ X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-ORIG-GUID: xJJrO9kYxpQEaZDTJxX8keySd4bw2OAe X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX4NCaztqGwlVs U4E0cyeqzqwLHkuea7ZMIvli1kEU65+cfuvJ4TRi0u/MR59nN5TPdUF/y3EynviTVk+SWyFDjyY ck87V2sKQwIGQic9vlZI4UjNGyfjX+ml7/0r2vsqXofsmh7kx5rc7vPw5wNDgdmthToCDqGM393 BWzAY/0krTYmPoYY2mtWraZ4vLHspy/3DvSAojjAqGLXaj/SgnT13t7bX5e876u6X4wpI90kPQT BV399IVZNCC3VReKkZ6bQegzofv4IWOmUPYVH0qYRqBy/NcvB7XymtZmy7jYuX8sPrLPQYDw0lA lySx0HgID7469zZi1g5NU2CKL1E4+AvTn0OEW+5+41fNptSO8B/ga0HyrNbVyuh/UYo/LnYMUmh kTJmwLSvxrZuISYJcalUiu/N7/O9Ttkf8czA/cNjTBNDNMsZl/+4oDXQIuY/zapbDhbKf98iGA6 Rt8fnvmvWkvghE9qltA== X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX/Pt53+WjILjA cAr8BwzY0ZIMYZwYKEEVmBsxgIUYJBjQEclvewcBnjuMogbVve3fykaeMilRPi9bZaC2vsXD/x4 naEKgS7VH83cGGOkb58YckC8dwFWpLA= X-Authority-Analysis: v=2.4 cv=KeTidwYD c=1 sm=1 tr=0 ts=6a3227ad cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=T4QVXHuY6bPIseVWQ88A:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-GUID: xJJrO9kYxpQEaZDTJxX8keySd4bw2OAe X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-16_05,2026-06-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170041 Refactor the resource initialization in geni_i2c_probe() by introducing a new geni_i2c_resources_init() function and utilizing the common geni_se_resources_init() framework and clock frequency mapping, making the probe function cleaner. Acked-by: Viken Dadhaniya Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari Tested-by: Mattijs Korpershoek --- v4->v5: - Added a Reviewed-by tag. - Removed core clk, has_core_clk and icc_ddr variable. v3->v4: - Added Acked-by tag. v1->v2: - Updated commit text. --- drivers/i2c/busses/i2c-qcom-geni.c | 64 ++++++++++++++--------------------= ---- 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 3ee0be228d7c..a7672b6c2bc0 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -107,7 +107,6 @@ struct geni_i2c_dev { int cur_wr; int cur_rd; spinlock_t lock; - struct clk *core_clk; u32 clk_freq_out; const struct geni_i2c_clk_fld *clk_fld; void *dma_buf; @@ -124,8 +123,6 @@ struct geni_i2c_dev { }; =20 struct geni_i2c_desc { - bool has_core_clk; - char *icc_ddr; bool no_dma_support; unsigned int tx_fifo_depth; }; @@ -1058,6 +1055,23 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) return ret; } =20 +static int geni_i2c_resources_init(struct geni_i2c_dev *gi2c) +{ + int ret; + + ret =3D geni_se_resources_init(&gi2c->se); + if (ret) + return ret; + + ret =3D geni_i2c_clk_map_idx(gi2c); + if (ret) + return dev_err_probe(gi2c->se.dev, ret, "Invalid clk frequency %d Hz\n", + gi2c->clk_freq_out); + + return geni_icc_set_bw_ab(&gi2c->se, GENI_DEFAULT_BW, GENI_DEFAULT_BW, + Bps_to_icc(gi2c->clk_freq_out)); +} + static int geni_i2c_probe(struct platform_device *pdev) { struct geni_i2c_dev *gi2c; @@ -1077,16 +1091,6 @@ static int geni_i2c_probe(struct platform_device *pd= ev) =20 desc =3D device_get_match_data(&pdev->dev); =20 - if (desc && desc->has_core_clk) { - gi2c->core_clk =3D devm_clk_get(dev, "core"); - if (IS_ERR(gi2c->core_clk)) - return PTR_ERR(gi2c->core_clk); - } - - gi2c->se.clk =3D devm_clk_get(dev, "se"); - if (IS_ERR(gi2c->se.clk) && !has_acpi_companion(dev)) - return PTR_ERR(gi2c->se.clk); - ret =3D device_property_read_u32(dev, "clock-frequency", &gi2c->clk_freq_out); if (ret) { @@ -1101,16 +1105,15 @@ static int geni_i2c_probe(struct platform_device *p= dev) if (gi2c->irq < 0) return gi2c->irq; =20 - ret =3D geni_i2c_clk_map_idx(gi2c); - if (ret) - return dev_err_probe(dev, ret, "Invalid clk frequency %d Hz\n", - gi2c->clk_freq_out); - gi2c->adap.algo =3D &geni_i2c_algo; init_completion(&gi2c->done); spin_lock_init(&gi2c->lock); platform_set_drvdata(pdev, gi2c); =20 + ret =3D geni_i2c_resources_init(gi2c); + if (ret) + return ret; + /* Keep interrupts disabled initially to allow for low-power modes */ ret =3D devm_request_irq(dev, gi2c->irq, geni_i2c_irq, IRQF_NO_AUTOEN, dev_name(dev), gi2c); @@ -1123,23 +1126,6 @@ static int geni_i2c_probe(struct platform_device *pd= ev) gi2c->adap.dev.of_node =3D dev->of_node; strscpy(gi2c->adap.name, "Geni-I2C", sizeof(gi2c->adap.name)); =20 - ret =3D geni_icc_get(&gi2c->se, desc ? desc->icc_ddr : "qup-memory"); - if (ret) - return ret; - /* - * Set the bus quota for core and cpu to a reasonable value for - * register access. - * Set quota for DDR based on bus speed. - */ - gi2c->se.icc_paths[GENI_TO_CORE].avg_bw =3D GENI_DEFAULT_BW; - gi2c->se.icc_paths[CPU_TO_GENI].avg_bw =3D GENI_DEFAULT_BW; - if (!desc || desc->icc_ddr) - gi2c->se.icc_paths[GENI_TO_DDR].avg_bw =3D Bps_to_icc(gi2c->clk_freq_out= ); - - ret =3D geni_icc_set_bw(&gi2c->se); - if (ret) - return ret; - pm_runtime_set_suspended(gi2c->se.dev); pm_runtime_set_autosuspend_delay(gi2c->se.dev, I2C_AUTO_SUSPEND_DELAY); pm_runtime_use_autosuspend(gi2c->se.dev); @@ -1192,7 +1178,7 @@ static int __maybe_unused geni_i2c_runtime_suspend(st= ruct device *dev) return ret; } =20 - clk_disable_unprepare(gi2c->core_clk); + clk_disable_unprepare(gi2c->se.core_clk); =20 return geni_icc_disable(&gi2c->se); } @@ -1206,7 +1192,7 @@ static int __maybe_unused geni_i2c_runtime_resume(str= uct device *dev) if (ret) return ret; =20 - ret =3D clk_prepare_enable(gi2c->core_clk); + ret =3D clk_prepare_enable(gi2c->se.core_clk); if (ret) goto out_icc_disable; =20 @@ -1219,7 +1205,7 @@ static int __maybe_unused geni_i2c_runtime_resume(str= uct device *dev) return 0; =20 out_clk_disable: - clk_disable_unprepare(gi2c->core_clk); + clk_disable_unprepare(gi2c->se.core_clk); out_icc_disable: geni_icc_disable(&gi2c->se); =20 @@ -1260,8 +1246,6 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { }; =20 static const struct geni_i2c_desc i2c_master_hub =3D { - .has_core_clk =3D true, - .icc_ddr =3D NULL, .no_dma_support =3D true, .tx_fifo_depth =3D 16, }; --=20 2.34.1 From nobody Mon Jun 22 02:29: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 98840330324 for ; Wed, 17 Jun 2026 04:50:59 +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=1781671865; cv=none; b=XwWEc69ymhbw7SGnWNpO5JPzWeE8iWmlQImaiOKlZd3DvUj92T/ma2+Cp/OKQLeG+xX7V/z67P0zeP2yVtmwVLrMcX73/cGKUSwR0jR0FCbif1LIa4q7RT5QhtZyiag/Q+ddRaEqizh0FC0+g8mbIOZmKNpxd9zNwoO88YLFB7o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781671865; c=relaxed/simple; bh=Ip5DPWIadhU87IAZF/NVvn9ENoIlNryscISD9i7YDLk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DYeECzHvwcnELRerc8iqYZiB2tXiPzAIx7arfTq4E8HlvSkn6OCN6vn3Zg+MgJdb0M6fsKTDWXh7V0s2LCOIVkJ6KkWof6Xiih/8mJrEWOGh5eFmfcudDEYxB9R+oHwOtHaierGZoLxeFPKxkcReTg5W9KaSSooGE8sKaoOu1GU= 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=TAHDBC4e; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=QmA+nW1O; 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="TAHDBC4e"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="QmA+nW1O" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65GLUwgJ2982910 for ; Wed, 17 Jun 2026 04:50:59 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= ck4bkKMC1U3B4z8svFXa4djpj5CpyZ083Y1U4WFotHc=; b=TAHDBC4ekoxbnpvW oH4U2XfEWXCpm/TwwGZSvUp+Vbye6sRMuiXrhDAtCC8EVihVMyQCn/Tb0HzJNk+0 5W/WN7oVKysK7n+lBpMQk0FMHeA3Kz7l2GQYe2gvP4bxXybQwjepSbdr1QP3ISIp 78ccpSsZWqhmwTL/83/rhauK6zQlkTfMJCWVs43M2KNP6if4qPpxDJ8HWIgP3boL THCgNps9d6TWEgBQAasC6dSD4OLKnLaDVxtMVn5bBz8f4DrnhcKBtOvFIDdvnoOt AUNtqKN3sGz/EPlQ7NSAujmQw8tMaFOsquRJ429Nf9suAiaKRNMToim3MQzshLRS X0tUxw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4eueephaud-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 17 Jun 2026 04:50:58 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-8422b544a4bso3688115b3a.3 for ; Tue, 16 Jun 2026 21:50:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781671858; x=1782276658; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ck4bkKMC1U3B4z8svFXa4djpj5CpyZ083Y1U4WFotHc=; b=QmA+nW1O36UzQuexKMEhPn5fj2gc0QbQtZ3zoZsm+2WRAz8ZLhZTOa4az+e46QBXJb SP9+ivXcS4BrJzm0BgAPa2ocGeIbrB+4m7LYKBhwX8iEm7raO4Z8RmIL+Fr2hGH51J2I HISMlGWQiYciDEKs/ZggAwWLuoALEV2x8J8hf+wOqS5hftIm77x62OjucVqvAnyMajI9 8ViL8a/E+ffV0XGh+sL2SFlLAQhU9gkndNYr9aroKgz5hsmJHYZ7P9TQq9H0O5eryNKy kcNWkBj83Uvwm7nySP6h3loxkopI0XOSM2MQz9DuLFywjENYtUUqLBMXArgvqbBWy0++ RHsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781671858; x=1782276658; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ck4bkKMC1U3B4z8svFXa4djpj5CpyZ083Y1U4WFotHc=; b=gewPHWC2BdM+ED+3Tc/bSKG9FSR88b1MNPt1iRoDdC2l63C0DFp84xJbVtT3vOBQzC 2FkUM3UHH1YbBCwfTHUemHJq+5OYk/PuiZ0ZUmycs1EPRvB4waPDyMOyGCkAKRYd2n/k uRwux9pSIl9D1p2a2AWd2bhO9E0qatG9s5owpNvgz1gTnvvcXBzuyCX6xw7H4NB0CJvl xcQh0c+1NRS4rsKabGcEDCazaYcI8v4WJuu+1U3r7LJlu2Ayx0XjJH0SUX7AMJpaqFBk wYPup0cJ+KTZSkpRAESWPWgHY7mor6VaW0rvD9wd1jodpmLFZXomQh1Tt07zGnUlEVlZ qGKw== X-Forwarded-Encrypted: i=1; AFNElJ9kA+/Kdll2F6pIOVOeYXFHNgOdMYXfYWVLAvn1FQ0mSXp/iP6rFjBHrYyyEsPDb7lM7UTLKcylqCjf9Rw=@vger.kernel.org X-Gm-Message-State: AOJu0Yy8iMWuiCHqc0N1JJWl0LOhN9ZU6t5HNbrXM6TeJOqbnfDpBZ3t 5u3z5WVvmMhR+lc1orkAjMhZ7QP7syudoaiqg60zZZMx1EQ4K4lGLeiVoUZYwb/bQTt02yKvTvG N38IRXNuQgUhDae0y5W/uFkruoxJuuyXUxc/Rk966xczgoasr8woMDkVR8v25Fi/fYBc= X-Gm-Gg: Acq92OFjPFyiG4ZeI8ND6gAA6GIYHZDkIxPhGLjxcVJHMdYzoggYq7sZKs4OUMcWcEQ uSVHt2GR2OwyIyZHq6SG/9AmBMgI+Ao1nqb4vth5igbk+Nj98DS+UfhSRWjYXU22ImxnwBWt1Vr yNrFTkHfhn9pQOvKit2EsEDaNJHtuDtwy+YbF93ZOrzhIK66coDkWA38kwnOkJbGx0U1la+iyO6 xPcv1W6oPzZ6hQ6L6zOZC3xGoJxXXAVxgHTkAB3hHZk8YcQMadh/ysddESng4Xj9J9YvgYEdqmY HTfH3xJXXA4Ylom0WCmvYwXqR8e5kX/dfJDP+UVYv154JycrzQzDgBeFYfuHWE7mvHu7b2fYUvB 6mZVB7QGuE5G7Rzc7M8z+2LTmmdGb5TmLCVXC8y/mGBEn X-Received: by 2002:a05:6a00:21ca:b0:82d:556b:7a01 with SMTP id d2e1a72fcca58-8452446e715mr2212373b3a.16.1781671858104; Tue, 16 Jun 2026 21:50:58 -0700 (PDT) X-Received: by 2002:a05:6a00:21ca:b0:82d:556b:7a01 with SMTP id d2e1a72fcca58-8452446e715mr2212333b3a.16.1781671857565; Tue, 16 Jun 2026 21:50:57 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8434ac9c016sm14721127b3a.8.2026.06.16.21.50.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 21:50:57 -0700 (PDT) From: Praveen Talari Date: Wed, 17 Jun 2026 10:20:18 +0530 Subject: [PATCH v7 4/6] i2c: 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: <20260617-enable-i2c-on-sa8255p-v7-4-ad736dbeab57@oss.qualcomm.com> References: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> In-Reply-To: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio , Bjorn Andersson , Mukesh Kumar Savaliya , Viken Dadhaniya Cc: Mattijs Korpershoek , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, prasad.sodagudi@oss.qualcomm.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781671828; l=2520; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=Ip5DPWIadhU87IAZF/NVvn9ENoIlNryscISD9i7YDLk=; b=rU6xiLazapp3L/wx+4cxaDFA+H5CLeERaT71KI9C9ew+AgoAI4If7xgEcKkvDbojuqtLwjCEc ys+8Ou2PQPqDBPV0/GhR7ET6pun1xRlW8T/uLfezLNTt+7CzKheZQYG X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Authority-Analysis: v=2.4 cv=AY+B2XXG c=1 sm=1 tr=0 ts=6a3227b2 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=3PeDo36KSfG0vlEF63sA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-GUID: ygLxn9H86ldVSqc8gpK_v1_hmOTNYkLm X-Proofpoint-ORIG-GUID: ygLxn9H86ldVSqc8gpK_v1_hmOTNYkLm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfXx6uPuRm4d+NI wRqM8Mlbud3RWzXIQTJ5eM+35epFmXZE4gti+1ctH5Lj68OUzUxF8g+Tk7uhAfqct0ry6l4ya18 FJeIsEFwc+tZ07LmX2JbdlreDccxt2VV/neIB21nNuJnXwHFxj6376j/Iy2+1jyWxqSsEEjprEm zKvDfML96Q/G9VzP2Ec+n7IZ5SwMe9Xwc6r9KR6WZXVuklxwq00+Q61aoRXupmSy0sZkyEMUlST rqfkeBNuU3+t8iWHLVh4xI7XrCT2f7vS7VW9OCFED10v7HbhahOqfPzM4DzNkl4RrbTaoMHXcAS vejNq4TrtC6JfQR2XgUuqK1ycaO0Pxj7/NwzyTBcAuWF+njJDC6YTqKtI51WzbM+yxvhV25Z5W7 4vAG1vjJ1Ednyk79b0KfrKyntCzdzauDt+c9iTWZJpML+nTxOzDI8LyzG7N3BKX3l5f5jcNA9O3 PkT96HMOuGJKp8cLRIg== X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX0IYveJtzjtut p2d7a5/QJ91ZIcRDTEGdRXvLmx0P4EYbQqLVLglS/aFyxMIzu/wCfABy9jwXgNO+QC9Px1fBJGl LftESEy3vdExIgy0G4EwnXpVRRuzt1s= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-16_05,2026-06-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 bulkscore=0 suspectscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 phishscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170041 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. Acked-by: Viken Dadhaniya Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari Tested-by: Mattijs Korpershoek --- v5->v6: Konrad: - Updated last return value as "0". - Added Reviewed-by v3->v4: - Added Acked-by tag. v1->v2: Bjorn: - Remove geni_se_resources_state() API. - Used geni_se_resources_activate() and geni_se_resources_deactivate() to enable/disable resources. --- drivers/i2c/busses/i2c-qcom-geni.c | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index a7672b6c2bc0..8f8b74c4e88a 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -1172,15 +1172,14 @@ static int __maybe_unused geni_i2c_runtime_suspend(= struct device *dev) struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 disable_irq(gi2c->irq); - ret =3D geni_se_resources_off(&gi2c->se); + + ret =3D geni_se_resources_deactivate(&gi2c->se); if (ret) { enable_irq(gi2c->irq); return ret; } =20 - clk_disable_unprepare(gi2c->se.core_clk); - - return geni_icc_disable(&gi2c->se); + return 0; } =20 static int __maybe_unused geni_i2c_runtime_resume(struct device *dev) @@ -1188,28 +1187,13 @@ static int __maybe_unused geni_i2c_runtime_resume(s= truct device *dev) int ret; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 - ret =3D geni_icc_enable(&gi2c->se); + ret =3D geni_se_resources_activate(&gi2c->se); if (ret) return ret; =20 - ret =3D clk_prepare_enable(gi2c->se.core_clk); - if (ret) - goto out_icc_disable; - - ret =3D geni_se_resources_on(&gi2c->se); - if (ret) - goto out_clk_disable; - enable_irq(gi2c->irq); =20 return 0; - -out_clk_disable: - clk_disable_unprepare(gi2c->se.core_clk); -out_icc_disable: - geni_icc_disable(&gi2c->se); - - return ret; } =20 static int __maybe_unused geni_i2c_suspend_noirq(struct device *dev) --=20 2.34.1 From nobody Mon Jun 22 02:29: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 28C4333B6DA for ; Wed, 17 Jun 2026 04:51:06 +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=1781671874; cv=none; b=HIUkVoyIuDQeRnYa4kll0vyrUNWHAVFDH7rexinZ7d2WiKYGAQABA03cKcCS5BiX1nqxddTpGtR4kqBCL6MX3gZOo7kMUfcAuwXNXiAxiPSU9ew/kfbKzfgBs9BTjK75fA2VhvP4dXiLTqZVl5DnpXBDjEV1aqPeWBjp+aUBqJs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781671874; c=relaxed/simple; bh=6C0TD1QvcxCa7jF7QmizTETEV86OPeo6DKxWRAkr1Is=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lA4sNtKjInu1Cmh6IZiHGGO9SelU9XB0ml9poFzUCE7KPSORzm7iGEY0eEGXp25mTTgN+3XKlQRT057L3sV7I632nzkAC4g+zTMslBlVMWkOuPAxThhV3tbLlbRJ8oopf7ky2ia3gYPPm/IrDfT1/11/okHaDJ6C1qBgpGnKDMQ= 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=Se0tG82A; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RYXlOq0J; 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="Se0tG82A"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RYXlOq0J" 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 65GLTULV605670 for ; Wed, 17 Jun 2026 04:51:05 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= B6v40pFQBH4BYjWCcXMn9db1MwtRUQXVc2am0DOsj+Q=; b=Se0tG82AUi08JHBv 2YGLeytgzRMuLNdyEAfzSQ4+T9J3Fk2r257sU+mA49ue24ao0Xo10HYG2LIOaLKJ JKQFEPxicZeZieU7JgnOLlaHKId5YgTOn6HuVIMLK/4vujDXIHyomv3wK8HgGKfJ HaxZlzMuC0Ci2mKbSsLo8ciDpShzTVURSjHqyyCWFkn+BQMFnqUvRKI4C5tCX5br zU4EDuyfu3SjGoR0DF4pXPBt3B3VdfC6uQguz96BuMFnGGnx2CgsWKktk+ON1Zj6 oHp4Yynb+qOPttn+3uraOcitW16qdnp72SJXAmPjPRvt/w+6ob+PHIHppco3t+XR Wh/p0w== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4euees9d9v-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 17 Jun 2026 04:51:04 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c85a2f19558so2925996a12.2 for ; Tue, 16 Jun 2026 21:51:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781671864; x=1782276664; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=B6v40pFQBH4BYjWCcXMn9db1MwtRUQXVc2am0DOsj+Q=; b=RYXlOq0JIHWBbsWYONsAlwxEKWv9hEjUdBzb948Qk/IlfcxRxXSoIVA8w7Zkct4J3f 4pMp3DaV2XJEyhBsCRgpgIJC5olC615WY62P1TH//b7iimUoT8lztHvQrLslyEDLcEQA D128O2M3PTf9o2AulKqKH7x+TCyhaXrFiWnwHKFQueJtapAfEKYjlzVSqKW5tqVoPKBt rt8frjrtQMiQAB9ecMHmDL51vfenpYd1ezNsH06SV+fv75VdLrqpE9ahkqlBnLiiZil+ u4tubzyS/ReoQcRc0MY34h0NQ2dQvCYbP60JbyYsPY8carX8ZDlNUfrNZ900/MWU9xT0 8wxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781671864; x=1782276664; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=B6v40pFQBH4BYjWCcXMn9db1MwtRUQXVc2am0DOsj+Q=; b=BOo9nNeV1e6j5E1Z17cym3meDBaLU+mrg+uTwet33sX6iUI2B5zBGI1RhKKCGu4Dth jI8LdyJ9DRpqi8mzGFsLT9mHwxjhokosdmn5q4FwGzrHeFKRHrqsCccH/zpsej2pEnoz hFpdf2mH/qGZHhtxtuisxz605+XTjEcDDyAISYbgdcJxA25oGlCF9wRQbR5rP3OyyQ0q fJR8h3EnbDBFhr+zh4DujPj0Y00dvSlAZ1jIWc/XXc0U4N/ksqnccaP8mNYYo6vX9y1A 4yxW6pWkfKDzaPOMrfk4TeHMKZxDAs8PvalrSsGZ6/SZltjm/9aRqwbXusAikdNTL5tA nPpA== X-Forwarded-Encrypted: i=1; AFNElJ+H0uBhuVXIVd5y6/j4EKHbQ2qox/OtBRRghUGJAKtPEEkRivebznW7hy9PaYplmsKMwXph6boYnAYgb30=@vger.kernel.org X-Gm-Message-State: AOJu0Yw44+uUzXSgK3rDusW7lxgMcITRjdlE2w+OYYM9QVZrOEYqEYPn 8SsTOz70t9tIpMG0G/+VizwkmPolIi2Z3cCwxFPe13SjeIRrFGRQGCL9+j/Ep82xxIC70yTtYrN WPRJLZfPmA/dlziA691Vlcjzcr2tTps4N0OZFsgxX3Rcp52PQpkejC/KPwChPytxA+4w= X-Gm-Gg: Acq92OEOflX4NBQqP+IzujaZP5TQ8QKpSZy9X7xFTcvga398jnHfuv0Blkn2x7kD2I4 17OsbeLKdZSJzhShreajL2wGAeqAK8KnTag8YGZXAzTe4lHPCFdHKW+ZOkzILv/IVwsfwe1wlJy hJ7ASC9FJ54e94MUClkeXJNE98rD+tFGPaZ3uo/fl4Ib4zu4HkpclHcDrvIyPa1mHHIW27NLnA1 63XiBYcbtHWHtMR+AFZ8kPjUCfouPqVZWJUF9YKX5312cOl0eJ78jYuDjO2QiOiSaHt5s8EddKU IegBBfH1fBPf/DFsqwnh8Bw0/FumOQH3AyKwnQgYoaXs30xOy/jQAC83LcB8MJ45bx9Xn074UUx exbLPJSHluRfjOCx2RUXctZbZii22Jg+0O6Dx8/o43tud X-Received: by 2002:a05:6a00:9285:b0:82f:390a:69df with SMTP id d2e1a72fcca58-84524595987mr2100533b3a.35.1781671863817; Tue, 16 Jun 2026 21:51:03 -0700 (PDT) X-Received: by 2002:a05:6a00:9285:b0:82f:390a:69df with SMTP id d2e1a72fcca58-84524595987mr2100492b3a.35.1781671863212; Tue, 16 Jun 2026 21:51:03 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8434ac9c016sm14721127b3a.8.2026.06.16.21.50.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 21:51:02 -0700 (PDT) From: Praveen Talari Date: Wed, 17 Jun 2026 10:20:19 +0530 Subject: [PATCH v7 5/6] i2c: qcom-geni: Store of_device_id data in driver private struct 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: <20260617-enable-i2c-on-sa8255p-v7-5-ad736dbeab57@oss.qualcomm.com> References: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> In-Reply-To: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio , Bjorn Andersson , Mukesh Kumar Savaliya , Viken Dadhaniya Cc: Mattijs Korpershoek , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, prasad.sodagudi@oss.qualcomm.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781671828; l=4444; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=6C0TD1QvcxCa7jF7QmizTETEV86OPeo6DKxWRAkr1Is=; b=aP8magEXnCd/pXP5dnCRJaN3Ja6oeSUNCz9z8SIiANalVyxBU4Z2S2zN3MoGVGv5XQxRcsW3z Agruywkfu8UDrbfJtpAkxefu1G9vsAWrSkY6te/rcrabuv6x3x8QJ2l X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX+uDCWl5GR8Wg 4mpXnMRArRuFDuIU2m7wD1tgL/qOBxBvRexD92uxbBN7DCYfoIogAIUs156LKdpZxGcJ4+BMAjM p4U/aN39n2wA2LlfIzMxsvjWygOUvnw= X-Proofpoint-ORIG-GUID: -9OC8ZtSR2giKXkqsjSkiKjxSyQvHsxU X-Authority-Analysis: v=2.4 cv=R6oz39RX c=1 sm=1 tr=0 ts=6a3227b8 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=L-JS82rCYefCJmJZhRoA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-GUID: -9OC8ZtSR2giKXkqsjSkiKjxSyQvHsxU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX7z0MqRUYiF2X HXRIUQ/h1QY29AB8esMqUTIW09UodKJqL5Rl8CR7tmT03nE3YBuxjO8xlly5vt14lOvgbZTwY8W 9tjv2Jg4Pxl88SDh9gdxZIrQulDPS5d3K3Tr4vVz2GbfYJeGKHGiRqvfJ9o/xbH1jY6PDkhXx5d e0rNrDD2eBqq8MY7uq+zdWeOeWAEPMiH1FidO3CvoTgA/xCrTM+VT4gWMZiNVYvcFcHtpWlSO3b SFY42SPOV8dLhYupylmEsjk9BI4f/Eotmxr4bF5ATEiNx6MVgkAopJsN8vrzSbR1SG682PM6Rx7 kgnWtAhS6v3qOmfdhPVxKyFnctaplhK/+f8qzqrgBEenKrSp5R7NeIScd3LQJFBoPAfVfcOZ7dB B0L2uqdva/+cUgpneS3zRoAgnruNYDJGH//enjZtBx1FGiht/HzBIFSuEXgKQxjTUHfYaZNIvMv p36qT+hIKu+gOeR8/Qw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-16_05,2026-06-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170041 To avoid repeatedly fetching and checking platform data across various functions, store the struct of_device_id data directly in the i2c private structure. This change enhances code maintainability and reduces redundancy. Acked-by: Viken Dadhaniya Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari Tested-by: Mattijs Korpershoek --- v6->v7 - Added Reviewed-by from konrad. v5->v6 Konrad - Updated in geni_i2c_acpi_match() as suggested - Moved geni_i2c_acpi_match below to avoid errors of geni-i2c v4->v5 Konrad - Added a null check after platform data struct. v3->v4 - Added Acked-by tag. Konrad - Removed icc_ddr from platfrom data struct --- drivers/i2c/busses/i2c-qcom-geni.c | 46 ++++++++++++++++++++--------------= ---- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 8f8b74c4e88a..92cccb1cce69 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -77,6 +77,11 @@ enum geni_i2c_err_code { #define XFER_TIMEOUT HZ #define RST_TIMEOUT HZ =20 +struct geni_i2c_desc { + bool no_dma_support; + unsigned int tx_fifo_depth; +}; + #define QCOM_I2C_MIN_NUM_OF_MSGS_MULTI_DESC 2 =20 /** @@ -120,11 +125,7 @@ struct geni_i2c_dev { bool is_tx_multi_desc_xfer; u32 num_msgs; struct geni_i2c_gpi_multi_desc_xfer i2c_multi_desc_config; -}; - -struct geni_i2c_desc { - bool no_dma_support; - unsigned int tx_fifo_depth; + const struct geni_i2c_desc *dev_data; }; =20 struct geni_i2c_err_log { @@ -941,15 +942,6 @@ static const struct i2c_algorithm geni_i2c_algo =3D { .functionality =3D geni_i2c_func, }; =20 -#ifdef CONFIG_ACPI -static const struct acpi_device_id geni_i2c_acpi_match[] =3D { - { "QCOM0220"}, - { "QCOM0411" }, - { } -}; -MODULE_DEVICE_TABLE(acpi, geni_i2c_acpi_match); -#endif - static void release_gpi_dma(struct geni_i2c_dev *gi2c) { if (gi2c->rx_c) @@ -989,7 +981,6 @@ static int setup_gpi_dma(struct geni_i2c_dev *gi2c) =20 static int geni_i2c_init(struct geni_i2c_dev *gi2c) { - const struct geni_i2c_desc *desc =3D NULL; u32 proto, tx_depth; bool fifo_disable; int ret; @@ -1012,8 +1003,7 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) goto err; } =20 - desc =3D device_get_match_data(gi2c->se.dev); - if (desc && desc->no_dma_support) { + if (gi2c->dev_data->no_dma_support) { fifo_disable =3D false; gi2c->no_dma =3D true; } else { @@ -1033,8 +1023,8 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); =20 /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ - if (!tx_depth && desc) - tx_depth =3D desc->tx_fifo_depth; + if (!tx_depth && gi2c->se.core_clk) + tx_depth =3D gi2c->dev_data->tx_fifo_depth; =20 if (!tx_depth) { ret =3D dev_err_probe(gi2c->se.dev, -EINVAL, @@ -1077,7 +1067,6 @@ static int geni_i2c_probe(struct platform_device *pde= v) struct geni_i2c_dev *gi2c; int ret; struct device *dev =3D &pdev->dev; - const struct geni_i2c_desc *desc =3D NULL; =20 gi2c =3D devm_kzalloc(dev, sizeof(*gi2c), GFP_KERNEL); if (!gi2c) @@ -1089,7 +1078,9 @@ static int geni_i2c_probe(struct platform_device *pde= v) if (IS_ERR(gi2c->se.base)) return PTR_ERR(gi2c->se.base); =20 - desc =3D device_get_match_data(&pdev->dev); + gi2c->dev_data =3D device_get_match_data(&pdev->dev); + if (!gi2c->dev_data) + return -EINVAL; =20 ret =3D device_property_read_u32(dev, "clock-frequency", &gi2c->clk_freq_out); @@ -1229,13 +1220,24 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { NULL) }; =20 +static const struct geni_i2c_desc geni_i2c =3D {}; + static const struct geni_i2c_desc i2c_master_hub =3D { .no_dma_support =3D true, .tx_fifo_depth =3D 16, }; =20 +#ifdef CONFIG_ACPI +static const struct acpi_device_id geni_i2c_acpi_match[] =3D { + { "QCOM0220", (kernel_ulong_t)&geni_i2c}, + { "QCOM0411", (kernel_ulong_t)&geni_i2c}, + { } +}; +MODULE_DEVICE_TABLE(acpi, geni_i2c_acpi_match); +#endif + static const struct of_device_id geni_i2c_dt_match[] =3D { - { .compatible =3D "qcom,geni-i2c" }, + { .compatible =3D "qcom,geni-i2c", .data =3D &geni_i2c }, { .compatible =3D "qcom,geni-i2c-master-hub", .data =3D &i2c_master_hub }, {} }; --=20 2.34.1 From nobody Mon Jun 22 02:29: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 D5ED23451CF for ; Wed, 17 Jun 2026 04:51: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=1781671878; cv=none; b=XOlBltQfjJS1+zRZVEj/8x75yg254IQwTFQI15UTl6NcyICzVqGIqOBY1cBWZXH7hXuNg/3Il+NPhWmiscJL1l2+G0aiDP3OuaNCL7/DhTNZOLzDeiE2GdwmnKU0ESPg++6znWjwcTmYkFwnR9IosdYLnd/m47RyJzOArZnthHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781671878; c=relaxed/simple; bh=4n6dn6i/Lbu50iXsvDsgw2Z2Ze680qElqnviOJCdZSg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pn93UpdBS+K7M77rc1874TwUwNJQP6tdARENLgT4+WI28h+Q3OhfbUuPcHgUQS66eORIb4EQE9jHZfSL+xzZOBLKENk9sXZm3nlV5UqzqqT3P4cS127vpTNodSP3qRQMbl3TPbPNJ9YndXdfUSTepY5X76tpkYdJdRcUMx7OwRY= 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=YHm9k3kN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dJb8Tiqo; 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="YHm9k3kN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dJb8Tiqo" 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 65GLTOWO605561 for ; Wed, 17 Jun 2026 04:51:10 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= 6YVvmntp7p1nnGPLLGkWWmVa56JfsmVkcCJ2HQy83Gc=; b=YHm9k3kNWakKHhnE Z4x6wgnmFW5Odg5EaYa+576N4YBrw138wwPFe8HRCahc4cNu7gM6C5ijeekkdetH tibkIATVDK2YDj0iTq/oV376rwS9jo0jzlQt8QTFAvCphy63ogwMw6BBIxD7i60/ CzlNYuC8O5su/4IjkajWN0nkZefg+k35F91Tl7v+JynATmYLQWEwLaeVHUqeisZ0 BMcOCvh4AOKoSpS4r/8pc1PgglGPLcVye5Yq3ANNY9hhOY+B2VW5zBy2R/JWo2lA 6lKKzWHScwRwbTHWSX0oKjjorjFU9ve0Q3ckGVtCBQqbtrQ0WtwB3zECa0tx60GN WZAKsA== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4euees9daa-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 17 Jun 2026 04:51:10 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-8423f24dcedso6506491b3a.1 for ; Tue, 16 Jun 2026 21:51:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781671870; x=1782276670; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=6YVvmntp7p1nnGPLLGkWWmVa56JfsmVkcCJ2HQy83Gc=; b=dJb8Tiqo4og0I8NqCCXs0UhkSxBy3eCVABPgotMIsnzfT9ZDFo/HySBmriZ63lM5WK uK7lIG9urZXNMznpgvay4BHxPDB8soPULOHysDy4PsVlLsp30MuvYHHAxykHOiXQdv35 quXM8MZxLwSsp/48d6bOhSr7QFMnowZkMnjixXAgCFLha4VmXNUf0+6iTvQbhJBEeT3c N2V1QhsjkBp4+kjye021RPHj09L1Wu6jUYpAVr5kTfx2EYZHWTpxcjw1ys7+CwsLdivP QpVX0i7/O38jgp/sJfcu55D5OknIiiGazOhyMNq8A3WScHhGsgfVFO9QK76tPyVAYMgj vesQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781671870; x=1782276670; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=6YVvmntp7p1nnGPLLGkWWmVa56JfsmVkcCJ2HQy83Gc=; b=TVmGKIq2ZMSdw7hOazik8NovmlEHJnetOkzs9MY3mLPV2kBIW+2uRBxVjzVRJ/BD/X kV1ArlKBgNF7GQC+QvDL7Kp2VUf3k3mBRFpH6vwecaiCvNWBaVU9r4WoUkE3xCplzw1g 2G/6HLllgYBBN+JXTnXSlAm4vOlr9ICio7ql70j6yzOCE6SlgLeP71MKDB1eUOjqvNeE j/B42wN3EZvdVGE0XBiQHezuTOcphq6SxL5YcAxgL4WAZLMQuPYTOi/mLXx34+Hf53E0 bWAaKAjFWqqHa8J8ff3KjUuNjzqu7zh3Qn7pgP0EPzAF8dSBAlPQ+9BB7NAKif83bNtp Bwpg== X-Forwarded-Encrypted: i=1; AFNElJ+T120CizJvMskaIu8/IxSf6UNWcsiiUCC24ZZ5jSfFb2gZNxHHPTGJvx/gFkC4EyZhU07Z1EDjpOgQFEE=@vger.kernel.org X-Gm-Message-State: AOJu0Yzqd+3aApQjPVJ7STprpFfo7m5NFMQMhIXZE94S5Qq+KrRcisfa gAbKTKG29iZUs6AwPN33AHor/2zHdmEne/eepQ/mTQDPRVqvgMEepuRsQkiwG21ZgVKJQPa11zD CMSiK4WJgBfSrcbImI6m8QxsfyK79VWcmqg5l9G9aWzzRCKT4Epp51tWjx4HRnvs9+0Y= X-Gm-Gg: Acq92OGfUGgVdA9CbKq6dOrDrRktPw8mXC+pJ3G1/qvZjiCiUxkNWHoW1FPMKUwLCz7 2fi+71cPpHuCZBMKNqfeoVQUEKgOXP5q6TPUDrlVyx1JfzGp421ebPFXwTxpslzvfeiLE9RSsIv A5NdAfzXdAQ1ATxDt5PJM3LOW7aM9YdB5jqv7xJsGt07dt48Fvq80AslwKnNjTltCC9Aovec9Ws 7du1IdgK82hOBfTDcse7Q4oeRnJs8JpjyonYVQVQCrtzigeb3352KluTVtvlgr1XHeEOSwPSxzs wQHQEsK9mCrjIudMCkFpGTPv3UxouWOjQnip8Kh4GcK0GATiPBbrWOMltIvU19IMaHcgIvqUUph PI3TK2/YXU7F0nL8P3SGQPRU7A/Gq6y3v2lcWMpnqJ0MG X-Received: by 2002:aa7:88cd:0:b0:837:db4e:a35d with SMTP id d2e1a72fcca58-84524555db7mr2246704b3a.23.1781671869613; Tue, 16 Jun 2026 21:51:09 -0700 (PDT) X-Received: by 2002:aa7:88cd:0:b0:837:db4e:a35d with SMTP id d2e1a72fcca58-84524555db7mr2246666b3a.23.1781671869060; Tue, 16 Jun 2026 21:51:09 -0700 (PDT) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8434ac9c016sm14721127b3a.8.2026.06.16.21.51.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 21:51:08 -0700 (PDT) From: Praveen Talari Date: Wed, 17 Jun 2026 10:20:20 +0530 Subject: [PATCH v7 6/6] i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms 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: <20260617-enable-i2c-on-sa8255p-v7-6-ad736dbeab57@oss.qualcomm.com> References: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> In-Reply-To: <20260617-enable-i2c-on-sa8255p-v7-0-ad736dbeab57@oss.qualcomm.com> To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio , Bjorn Andersson , Mukesh Kumar Savaliya , Viken Dadhaniya Cc: Mattijs Korpershoek , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, prasad.sodagudi@oss.qualcomm.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781671828; l=5789; i=praveen.talari@oss.qualcomm.com; s=20251114; h=from:subject:message-id; bh=4n6dn6i/Lbu50iXsvDsgw2Z2Ze680qElqnviOJCdZSg=; b=gXxIqPWNVLPpuiR7m1MmYY5CjS9pZ7DlPrDZ4nZW/XzeqwFJ8yzykR5HFK2L8beTLwMUL+0wz 5krujsqnq8GB3+FYDwzmKCW/YQSjLvADOq5mcqmjy4ntgefwCtsihHn X-Developer-Key: i=praveen.talari@oss.qualcomm.com; a=ed25519; pk=NGK/88fjyHXgfhIKwag7+uIytOmyOypvZ/hDFaYPEss= X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfX8/g3zMQbnyrw lTQqdHrREkCBm3S4iITk+vGbs8ErkrsyPSW7zIL7aRnC5CfjxtiOHPcJccetCtUeqEZBqvz1g7C u7LIjUuoWgaZUTEaSC3Weg7GgXgq5wE= X-Proofpoint-ORIG-GUID: LlZdGo5mGU8ZnmWIRSflDwBvvMSjQDrU X-Authority-Analysis: v=2.4 cv=R6oz39RX c=1 sm=1 tr=0 ts=6a3227be cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=zgZzUwpPmSg69XYvEVoA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-GUID: LlZdGo5mGU8ZnmWIRSflDwBvvMSjQDrU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE3MDA0MSBTYWx0ZWRfXyK6hcrAN3u+w nQQmzfacz/TBZ/DMZPl4bt7GmA3cHnRsUv8SdF3cXXDqrB3onCQbtHckgY8NJY+V2eppPuVKGbH hTq9tT2BY2+lHiH2X1gYPJgMmSub/58I+/6J4D56unTtZp/mqeG53xqAE6f6p/gx7A+Bo515lH6 bS2ThPuPbwAh10+UCXIb5gzIruOuJDlQlXiZxkhFFOjd1VkdbBJ6QFyTrX9CxiSUWdrWVbcFtHZ 0GAICDn2L+stu+uPwYBTOfS2lcpkUlaoCNv5FO5eBpBZjQbzI3RiM/RvYj+vtwPCoF6GLegGeav ae7oTwozSuQUSFCQthWJ16m7PLh//YChXTtGHySdsya7xv8a+Nw4xIgeKCsod9Zghiwzk1E5mNx LRjea6hozNQcIyxEK//PFT+rhEsywmhsyvp1Au9c1Mf+XhTuELemdjOpmx0PUMXs5EReLeBEZST Eaubz9azYTXRFePQu+w== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-16_05,2026-06-16_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606170041 The Qualcomm automotive SA8255p SoC relies on firmware to configure platform resources, including clocks, interconnects and TLMM. The driver requests resources operations over SCMI using power and performance protocols. The SCMI power protocol enables or disables resources like clocks, interconnect paths, and TLMM (GPIOs) using runtime PM framework APIs, such as resume/suspend, to control power on/off. The SCMI performance protocol manages I2C frequency, with each frequency rate represented by a performance level. The driver uses geni_se_set_perf_opp() API to request the desired frequency rate.. As part of geni_se_set_perf_opp(), the OPP for the requested frequency is obtained using dev_pm_opp_find_freq_floor() and the performance level is set using dev_pm_opp_set_opp(). Acked-by: Viken Dadhaniya Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari Tested-by: Mattijs Korpershoek --- v6->v7 - Added Reviewed-by from konrad. v3->v4: - Added Acked-by tag. V1->v2: From kernel test robot: - Initialized ret to "0" in resume/suspend callbacks. Bjorn: - Used seperate APIs for the resouces enable/disable. --- drivers/i2c/busses/i2c-qcom-geni.c | 56 ++++++++++++++++++++++++++++------= ---- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 92cccb1cce69..96dbf04138be 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -80,6 +80,10 @@ enum geni_i2c_err_code { struct geni_i2c_desc { bool no_dma_support; unsigned int tx_fifo_depth; + int (*resources_init)(struct geni_se *se); + int (*set_rate)(struct geni_se *se, unsigned long freq); + int (*power_on)(struct geni_se *se); + int (*power_off)(struct geni_se *se); }; =20 #define QCOM_I2C_MIN_NUM_OF_MSGS_MULTI_DESC 2 @@ -200,8 +204,9 @@ static int geni_i2c_clk_map_idx(struct geni_i2c_dev *gi= 2c) return -EINVAL; } =20 -static void qcom_geni_i2c_conf(struct geni_i2c_dev *gi2c) +static int qcom_geni_i2c_conf(struct geni_se *se, unsigned long freq) { + struct geni_i2c_dev *gi2c =3D dev_get_drvdata(se->dev); const struct geni_i2c_clk_fld *itr =3D gi2c->clk_fld; u32 val; =20 @@ -214,6 +219,7 @@ static void qcom_geni_i2c_conf(struct geni_i2c_dev *gi2= c) val |=3D itr->t_low_cnt << LOW_COUNTER_SHFT; val |=3D itr->t_cycle_cnt; writel_relaxed(val, gi2c->se.base + SE_I2C_SCL_COUNTERS); + return 0; } =20 static void geni_i2c_err_misc(struct geni_i2c_dev *gi2c) @@ -919,7 +925,9 @@ static int geni_i2c_xfer(struct i2c_adapter *adap, return ret; } =20 - qcom_geni_i2c_conf(gi2c); + ret =3D gi2c->dev_data->set_rate(&gi2c->se, gi2c->clk_freq_out); + if (ret) + return ret; =20 if (gi2c->gpi_mode) ret =3D geni_i2c_gpi_xfer(gi2c, msgs, num); @@ -1045,8 +1053,9 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) return ret; } =20 -static int geni_i2c_resources_init(struct geni_i2c_dev *gi2c) +static int geni_i2c_resources_init(struct geni_se *se) { + struct geni_i2c_dev *gi2c =3D dev_get_drvdata(se->dev); int ret; =20 ret =3D geni_se_resources_init(&gi2c->se); @@ -1101,7 +1110,7 @@ static int geni_i2c_probe(struct platform_device *pde= v) spin_lock_init(&gi2c->lock); platform_set_drvdata(pdev, gi2c); =20 - ret =3D geni_i2c_resources_init(gi2c); + ret =3D gi2c->dev_data->resources_init(&gi2c->se); if (ret) return ret; =20 @@ -1159,15 +1168,17 @@ static void geni_i2c_shutdown(struct platform_devic= e *pdev) =20 static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev) { - int ret; + int ret =3D 0; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 disable_irq(gi2c->irq); =20 - ret =3D geni_se_resources_deactivate(&gi2c->se); - if (ret) { - enable_irq(gi2c->irq); - return ret; + if (gi2c->dev_data->power_off) { + ret =3D gi2c->dev_data->power_off(&gi2c->se); + if (ret) { + enable_irq(gi2c->irq); + return ret; + } } =20 return 0; @@ -1175,12 +1186,14 @@ static int __maybe_unused geni_i2c_runtime_suspend(= struct device *dev) =20 static int __maybe_unused geni_i2c_runtime_resume(struct device *dev) { - int ret; + int ret =3D 0; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 - ret =3D geni_se_resources_activate(&gi2c->se); - if (ret) - return ret; + if (gi2c->dev_data->power_on) { + ret =3D gi2c->dev_data->power_on(&gi2c->se); + if (ret) + return ret; + } =20 enable_irq(gi2c->irq); =20 @@ -1220,11 +1233,25 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { NULL) }; =20 -static const struct geni_i2c_desc geni_i2c =3D {}; +static const struct geni_i2c_desc geni_i2c =3D { + .resources_init =3D geni_i2c_resources_init, + .set_rate =3D qcom_geni_i2c_conf, + .power_on =3D geni_se_resources_activate, + .power_off =3D geni_se_resources_deactivate, +}; =20 static const struct geni_i2c_desc i2c_master_hub =3D { .no_dma_support =3D true, .tx_fifo_depth =3D 16, + .resources_init =3D geni_i2c_resources_init, + .set_rate =3D qcom_geni_i2c_conf, + .power_on =3D geni_se_resources_activate, + .power_off =3D geni_se_resources_deactivate, +}; + +static const struct geni_i2c_desc sa8255p_geni_i2c =3D { + .resources_init =3D geni_se_domain_attach, + .set_rate =3D geni_se_set_perf_opp, }; =20 #ifdef CONFIG_ACPI @@ -1239,6 +1266,7 @@ MODULE_DEVICE_TABLE(acpi, geni_i2c_acpi_match); static const struct of_device_id geni_i2c_dt_match[] =3D { { .compatible =3D "qcom,geni-i2c", .data =3D &geni_i2c }, { .compatible =3D "qcom,geni-i2c-master-hub", .data =3D &i2c_master_hub }, + { .compatible =3D "qcom,sa8255p-geni-i2c", .data =3D &sa8255p_geni_i2c }, {} }; MODULE_DEVICE_TABLE(of, geni_i2c_dt_match); --=20 2.34.1