From nobody Fri Dec 19 01:28:46 2025 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 AA86C2BE642 for ; Wed, 17 Dec 2025 05:57:00 +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=1765951022; cv=none; b=tx7wv8eJgaRSsIvjVkKpnREfh+c5YF7F4AmBx6F2k6h1HqjzD40tUXS7truI7VPNJxGdgMg6JYJAuz2viWO/laNEZgpu2vExq9ump7ay6h3LodEekMzFW0OgX4iLWQ30NWzBgZDs8Lw4pvLf8EUQIBy7c96Cicdj8lW3AY8aa/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765951022; c=relaxed/simple; bh=8Vbqll0QwNYxbBm6ysjRNYuz16IcW5WI3ZZ2Fv91yq8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MDv3EsuTjgt29mgfwkCfbXWWoD1+PglR2DQYbSaVLhfmhU+6ymJaNkwJwMvMvW/7mhiYEKOsPVQTvpW0ngvgwKW3CghdZZpqcfyEWdUeSVRQz+KWx54nMh1AvVrioEFAxZaFy3Sc9T5+Z+sOLoBrFYGS53bs86vbm2wAPm4Zx60= 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=jVIA5Em8; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cWfQ9WTD; 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="jVIA5Em8"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cWfQ9WTD" 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 5BH3wLCU1903871 for ; Wed, 17 Dec 2025 05:56:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=CX7M1+NGmbQ DNXLJxOsHzhvk67PnXvKhGYQPuDvt1xQ=; b=jVIA5Em8v5HPN7L6b5M76tJoKCe p1Zc2CbWVTJWIWD444pneEpDrPwNuS5bQAkr7hBP3sRTS25PYiyxcHCU9kAGna43 eBlnZLKaBLYeveWZsF+uGdS3CNQhT+2ltpZToLDKmD71BnJX0bKGn8DDI0cV85OV jY1SzCXKWAuqsJDKFGu0YwY1xI+WGS3XYJ34jRgQgZ9ThDNmMcoTe6Atyrjdj6/3 iKsdyiz711wOnpLlWPpeAGN8vKY+18ZPdeNxqBShrhEmG5ltA/iEUAYSbbLd2TWB ABJxeh42HDTKWgq5IN9iWmueajKlBJrPdXvejgihivRqpBUbE0c2JT2ZC7w== 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 4b3n330a9n-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 17 Dec 2025 05:56:59 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b609c0f6522so9857841a12.3 for ; Tue, 16 Dec 2025 21:56:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1765951019; x=1766555819; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CX7M1+NGmbQDNXLJxOsHzhvk67PnXvKhGYQPuDvt1xQ=; b=cWfQ9WTD1H13UyBoagQOugpimPsPccHH3aAcPZeJr1I/nLDXdZbXA2TYzoub+kZhyX Yuu3upTqCObk7BhPDEXGxxD60hNr08vLxWJioP9U/4MP8qDpU59K18Nx2RWc/2KoM8V9 lYMeBEAJFMEw+5ePzMvfCuvg0JV2Y/ZyuUSg6JLqyYm5XagUONXBey6BxeFv4ofY8FYp +BbaLdNIIOWEMvyn8gRWw9Vqh041SsdAhDPUcBQNKeKxelHM+ISK6cMn5UvqOZcBGdqs 87lBaDJHd34Ja7uJ57xJIm7rQ9VX09fIH4NlnzL4BSwV9cFqeeKV0JcqHU3QMXAW+Lo5 MWVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765951019; x=1766555819; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CX7M1+NGmbQDNXLJxOsHzhvk67PnXvKhGYQPuDvt1xQ=; b=ij9kd7by279d+9PXZyzw0zmiStoGZFT0OORoBmY3nfRFE+KJqhC+dGIR4LqVATetyA /KB8KM8jtRCI+vNOqlVvu/yMzg1u33zeimLTcIpB/n9a6JzinW6EMORBGTsH9G3m2F60 FF/nS9+1DJT1Jn4lJTWXU2+/lt3r6PRwb43rlh86vY0dYc9lC6tqrAijhZSQTlYazVOb 4a+y9917NFGch5Ff9NcRf0lCyLskjDCxMHJUlTyKY5i/Fz6vTPqbFlYX0EDrQcN5GuZ7 Muhh6HmtwHbSfntaw5RC0Wy8hA4qJBDPaJKNS86Vl+paXeyYRqUWfnm9MWexs14AE5a4 Q95A== X-Forwarded-Encrypted: i=1; AJvYcCXGPqOzFzNlroHywCK6mJUP7D8EdCGrb8JG2jWsi8z2iyhCtCWhyBR9K2kDCe8EfZV5QOwLpI5AMjV7NgQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwcOM232wvQMBQj0I10w2yiuvfE4qDcPjNeBl7ZTbO2jtpD2yTB dyBp7TdqYKANo3xzh9ntR/EglVvs3MK5J5aDeMenmt6Gk9l6lRdyVDebd4llRCn+TjhVTVEmUWp fp3RrhY03GCeBh93ntDEbxBzLtNDWT3nLM2RTGvo8zkWDEyz09ztQf3EkS6zzdo+gPAs= X-Gm-Gg: AY/fxX6foKPU0eWMpDBgSbguY2HKoCWuUaW7u+xg7FdeeqW5t5Ez3nC9+YStEzZJP39 W+Vwh9sKiD9pOFvF4QKUB0PR0LHJcgJN4k3/Zh2WGSkBfYI3ejVSRymncRSokrxyqfj13Ym1hu0 XAOreV2PxEmDevEKyRKBavBZQlXsB17djZbAnkdu+36WT+S61wJAJ8t0DUydc/f/XDS+5CDCyim LoyxizLM2zP0VimO5FHP6IfpsFrqDs/+3oyQQAoL6Z9AGkcaaiQH89bCtXRH9NivA7z/QITkZXo FtROXU1wJEHsJDSuUieHb87lofC+9/S5oVJJXsAXNyHjwm/s35u3BbY7W1H+WmA8qkjBY9LxTQB XvItfC2WoCKoJORAPo1eBHg0x7ZE0JYOID7nlIR5mDWE+LLzxt9m00Ce1fJVPn+C9B4UcM4pf X-Received: by 2002:a05:701a:ca88:b0:119:e569:f620 with SMTP id a92af1059eb24-11f34bfac4cmr13755193c88.25.1765951018460; Tue, 16 Dec 2025 21:56:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IGra67942FylfimAmVNsmQR51oIWmtuGmIxSZ51H4fFiEPFYilIfELlV/t/CZn6bcXnaGrjxg== X-Received: by 2002:a05:701a:ca88:b0:119:e569:f620 with SMTP id a92af1059eb24-11f34bfac4cmr13755177c88.25.1765951017891; Tue, 16 Dec 2025 21:56:57 -0800 (PST) Received: from hu-amelende-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11f2e30497fsm60166484c88.15.2025.12.16.21.56.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Dec 2025 21:56:57 -0800 (PST) From: Anjelique Melendez To: andersson@kernel.org, konradybcio@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/2] soc: qcom: pmic_glink: Add charger PDR service path and service name to client data Date: Tue, 16 Dec 2025 21:56:55 -0800 Message-Id: <20251217055655.638594-3-anjelique.melendez@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251217055655.638594-1-anjelique.melendez@oss.qualcomm.com> References: <20251217055655.638594-1-anjelique.melendez@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjE3MDA0NSBTYWx0ZWRfX6xBVObl3mfsC U2A9pNAXXraTLBeH14c2247iaRxeFoc/tWJAvRhmL1Z+hBWuAxsTGvrXy1N3IL6zcf6JOqv6IpK HUSnNJHXye0ahjxXSqUmhQzHyU2nxov+mxWbbBBSKb5Oy7eUSVmr1UqfibWn90TT5+Z1HkX/vvc QTCf02kokpNh5Au9ddHpaAs/f1r8KXV5OJI09fgECZpQ76kwRntNb34cunhQujYICWqEAiKrxME AWu9sXXHh0sGtHGGB9LCpveYe2/7sEZJDIiHajUqIQCgsFwBmYArNT6wHr4B5tG+df5IzxYyCfd 1aBR4o+dJqSMan7fUWUqoPT7E+AE5RTca5l4G6/Ix5UJxjYfww5BlUzFhjRTbO6iqLK5lHHsq6y V5H7qKkW50584YbqTk+TzkQBuA2ypw== X-Proofpoint-GUID: b86gt_B2EF1zDkLPTIM8eAzG94wPUZ9U X-Proofpoint-ORIG-GUID: b86gt_B2EF1zDkLPTIM8eAzG94wPUZ9U X-Authority-Analysis: v=2.4 cv=U82fzOru c=1 sm=1 tr=0 ts=6942462b cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=wP3pNCr1ah4A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=qLYHXgdTuLTpAkILo5MA:9 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-16_03,2025-12-16_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 impostorscore=0 malwarescore=0 priorityscore=1501 adultscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512170045 Content-Type: text/plain; charset="utf-8" Currently, the charger PD service path and service name are hard coded however these paths are not guaranteed to be the same between PMICs. For example, on Kaanapali and Glymur, Charger FW runs on SOCCP(another subsyste= m) which does not have any specific charger PDs defined. Define charger PDR service path and service name as client data so that each PMIC generation can properly define these paths. While at it, add the qcom,kaanapali-pmic-glink compatible string. Signed-off-by: Anjelique Melendez Reviewed-by: Konrad Dybcio --- drivers/soc/qcom/pmic_glink.c | 65 ++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/drivers/soc/qcom/pmic_glink.c b/drivers/soc/qcom/pmic_glink.c index 627f96ca322e..3ea8fec3b32b 100644 --- a/drivers/soc/qcom/pmic_glink.c +++ b/drivers/soc/qcom/pmic_glink.c @@ -23,13 +23,19 @@ enum { PMIC_GLINK_CLIENT_UCSI, }; =20 +struct pmic_glink_data { + unsigned long client_mask; + const char *charger_pdr_service_name; + const char *charger_pdr_service_path; +}; + struct pmic_glink { struct device *dev; struct pdr_handle *pdr; =20 struct rpmsg_endpoint *ept; =20 - unsigned long client_mask; + const struct pmic_glink_data *data; =20 struct auxiliary_device altmode_aux; struct auxiliary_device ps_aux; @@ -292,7 +298,6 @@ static struct rpmsg_driver pmic_glink_rpmsg_driver =3D { =20 static int pmic_glink_probe(struct platform_device *pdev) { - const unsigned long *match_data; struct pdr_service *service; struct pmic_glink *pg; int ret; @@ -309,12 +314,10 @@ static int pmic_glink_probe(struct platform_device *p= dev) spin_lock_init(&pg->client_lock); mutex_init(&pg->state_lock); =20 - match_data =3D (unsigned long *)of_device_get_match_data(&pdev->dev); - if (!match_data) + pg->data =3D of_device_get_match_data(&pdev->dev); + if (!pg->data) return -EINVAL; =20 - pg->client_mask =3D *match_data; - pg->pdr =3D pdr_handle_alloc(pmic_glink_pdr_callback, pg); if (IS_ERR(pg->pdr)) { ret =3D dev_err_probe(&pdev->dev, PTR_ERR(pg->pdr), @@ -322,27 +325,30 @@ static int pmic_glink_probe(struct platform_device *p= dev) return ret; } =20 - if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI)) { + if (pg->data->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI)) { ret =3D pmic_glink_add_aux_device(pg, &pg->ucsi_aux, "ucsi"); if (ret) goto out_release_pdr_handle; } - if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_ALTMODE)) { + if (pg->data->client_mask & BIT(PMIC_GLINK_CLIENT_ALTMODE)) { ret =3D pmic_glink_add_aux_device(pg, &pg->altmode_aux, "altmode"); if (ret) goto out_release_ucsi_aux; } - if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_BATT)) { + if (pg->data->client_mask & BIT(PMIC_GLINK_CLIENT_BATT)) { ret =3D pmic_glink_add_aux_device(pg, &pg->ps_aux, "power-supply"); if (ret) goto out_release_altmode_aux; } =20 - service =3D pdr_add_lookup(pg->pdr, "tms/servreg", "msm/adsp/charger_pd"); - if (IS_ERR(service)) { - ret =3D dev_err_probe(&pdev->dev, PTR_ERR(service), - "failed adding pdr lookup for charger_pd\n"); - goto out_release_aux_devices; + if (pg->data->charger_pdr_service_name && pg->data->charger_pdr_service_p= ath) { + service =3D pdr_add_lookup(pg->pdr, pg->data->charger_pdr_service_name, + pg->data->charger_pdr_service_path); + if (IS_ERR(service)) { + ret =3D dev_err_probe(&pdev->dev, PTR_ERR(service), + "failed adding pdr lookup for charger_pd\n"); + goto out_release_aux_devices; + } } =20 mutex_lock(&__pmic_glink_lock); @@ -352,13 +358,13 @@ static int pmic_glink_probe(struct platform_device *p= dev) return 0; =20 out_release_aux_devices: - if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_BATT)) + if (pg->data->client_mask & BIT(PMIC_GLINK_CLIENT_BATT)) pmic_glink_del_aux_device(pg, &pg->ps_aux); out_release_altmode_aux: - if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_ALTMODE)) + if (pg->data->client_mask & BIT(PMIC_GLINK_CLIENT_ALTMODE)) pmic_glink_del_aux_device(pg, &pg->altmode_aux); out_release_ucsi_aux: - if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI)) + if (pg->data->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI)) pmic_glink_del_aux_device(pg, &pg->ucsi_aux); out_release_pdr_handle: pdr_handle_release(pg->pdr); @@ -372,23 +378,34 @@ static void pmic_glink_remove(struct platform_device = *pdev) =20 pdr_handle_release(pg->pdr); =20 - if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_BATT)) + if (pg->data->client_mask & BIT(PMIC_GLINK_CLIENT_BATT)) pmic_glink_del_aux_device(pg, &pg->ps_aux); - if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_ALTMODE)) + if (pg->data->client_mask & BIT(PMIC_GLINK_CLIENT_ALTMODE)) pmic_glink_del_aux_device(pg, &pg->altmode_aux); - if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI)) + if (pg->data->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI)) pmic_glink_del_aux_device(pg, &pg->ucsi_aux); =20 guard(mutex)(&__pmic_glink_lock); __pmic_glink =3D NULL; } =20 -static const unsigned long pmic_glink_sm8450_client_mask =3D BIT(PMIC_GLIN= K_CLIENT_BATT) | - BIT(PMIC_GLINK_CLIENT_ALTMODE) | - BIT(PMIC_GLINK_CLIENT_UCSI); +static const struct pmic_glink_data pmic_glink_kaanapali_data =3D { + .client_mask =3D BIT(PMIC_GLINK_CLIENT_BATT) | + BIT(PMIC_GLINK_CLIENT_ALTMODE) | + BIT(PMIC_GLINK_CLIENT_UCSI), +}; + +static const struct pmic_glink_data pmic_glink_sm8450_data =3D { + .client_mask =3D BIT(PMIC_GLINK_CLIENT_BATT) | + BIT(PMIC_GLINK_CLIENT_ALTMODE) | + BIT(PMIC_GLINK_CLIENT_UCSI), + .charger_pdr_service_name =3D "tms/servreg", + .charger_pdr_service_path =3D "msm/adsp/charger_pd", +}; =20 static const struct of_device_id pmic_glink_of_match[] =3D { - { .compatible =3D "qcom,pmic-glink", .data =3D &pmic_glink_sm8450_client_= mask }, + { .compatible =3D "qcom,kaanapali-pmic-glink", .data =3D &pmic_glink_kaan= apali_data }, + { .compatible =3D "qcom,pmic-glink", .data =3D &pmic_glink_sm8450_data }, {} }; MODULE_DEVICE_TABLE(of, pmic_glink_of_match); --=20 2.34.1