From nobody Tue Feb 10 14:33:55 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 1D4B3361DCF for ; Wed, 14 Jan 2026 21:18:08 +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=1768425494; cv=none; b=BXmdHZbK5oNEBGGxzFx1KSxyrHgC2eM1QzWqL1bAWf/ZOBBQdPr9e8ryKV7GFKz8qLb292NYSWBVZl212l7QmQY/J1JJ1liE3yB8dLdmOCuooQljVIV/IM9I0ax2LfDoMChgeY86oMBb7T75nUrZwGcMI/IavQLurJupPNwSe5s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768425494; c=relaxed/simple; bh=ecY11OcBKXMq1MGLCiWZ0y7+hdHphUxMDqj2qDFYseQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Qc0WKR0sHQhHaujdbI8a27haVH/vwBEsSmsO9s5EIXveoCBGn8OGDXu5VRZd6UUJDgztnlylGIFHWrGSzteoPP+0ihwXbbg0l32dk2mdJ585DWjUvRMql9sNHFZ6W+gnnJuADL5N/YPEG7Pc0fm/mD3ykUyaiWPYV4jc+8PlWdE= 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=aK8k78L7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NE9agfyQ; 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="aK8k78L7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NE9agfyQ" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60EHeZoP3296325 for ; Wed, 14 Jan 2026 21:18:08 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=WdRL0KAbzlU oIRwhSbOkMecyH3ewE7SUBGAdWwEOO/k=; b=aK8k78L7yu6GCJ7osxivzv9EbSQ 9o4pTHhgDpYUfxyWv7VXF60wwJER+xJeQfDZbFQkUANDj0/pQ2h3hJHOVaN05qJ1 CRuP5Iq70+r8p9hfkvGMCq7eR15MzG1egwjOrc+ZnwKJ3JzBt6G/mkBtq2qLrP+e gycBonO0jlwOkg1zYpXbC0polAFk8Xvd/EKKe7Szxzhk2kNfP3Hq0Bs9uQcov1Fk qgdsU3inE/bTsX3Q31eu7VrRe7EG/XNjsN/L4hIJISxlL6/3wBqoRaijRCQwfkco h3NeHJaRoqK2DoSmy1EUQZJrIr8yrWtubiRhmTNS6szhcDnVqKlMqxAoESg== Received: from mail-dl1-f70.google.com (mail-dl1-f70.google.com [74.125.82.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bp8t2takx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 14 Jan 2026 21:18:07 +0000 (GMT) Received: by mail-dl1-f70.google.com with SMTP id a92af1059eb24-1232dd9a256so1175231c88.1 for ; Wed, 14 Jan 2026 13:18:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768425486; x=1769030286; 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=WdRL0KAbzlUoIRwhSbOkMecyH3ewE7SUBGAdWwEOO/k=; b=NE9agfyQQMOWSBWFKOp630wsO4//GsWtKFZGCjC+LX3tICR2Bh+C04ZsIJS8MMZoQ7 EV+YlhXyXDAlprRLz7l6/BaLXeqgG5BXGdNRk9uU8Jh87uhu4ryvu5uWERZ21EgDh12A IXA5uq1wqM4/mA++6wG23R8A0VGVUBtj4UPpKSu7kO81Joc/YKrc6SL1ieP4ZixVoyeH y4hNuNBaIIDNER/XPIi1OgEKgIu9THBVk9EHT1ALR8iWXzaEYBTOhO5JRIdiU+uSpD9T OsxHBGY/v6EQXYHyCs83KCOv3icRvZhWY2xAshlUoeYGQOobmm35gtcUPJXoDaVI9Hxb mDLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768425486; x=1769030286; 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=WdRL0KAbzlUoIRwhSbOkMecyH3ewE7SUBGAdWwEOO/k=; b=qf4LKTYHpwm9/jMrfKIuT3U5tso4aC4/PUuIm4+d6N/rYEyZLImL4WJ2/4fYnM/hFI cfREcNAqZ5xXPQwlT4J4/VcobY854iem3DMtejx9JFSrgF3Es7dRebfZlLMEJDykasIN xjUkrqL8SyzEUwyRmGf08BsTaehKM/9qO5BH1NpZj1EoDevI+OSeW6OwrT+GzNEZCvCm EbwGC0qfJm+N1irX2H+Lz48+AyhBGKQkVoYg4aydILJuH7OjEOTtHV00acstcLn9v/ho IeaP6xGuEDK4XcavGTdmSt1bZ0Ua7X05C98Y5deDnquMNZd8+Uynr4LG/5PEbnE+4K67 nJnQ== X-Forwarded-Encrypted: i=1; AJvYcCVkMfobRjFLCFHCwo8ue3PXuGHtWVY0W0GvNB7IPLVJx9IcIC0bwFTEioZ2WQC2QmJJg0SSk9zVb4d8nzU=@vger.kernel.org X-Gm-Message-State: AOJu0YwkkoWRvOQdiZOs24QqdNIbRdiIJxURA456psbudJlxb/DOTi8t 7/3iBGDm79RczDAW8IQw1fkP+bfEXe5Y42uTfTOpK8glF+ePnuDkyVeUqGQx+5AxwtG7x0pGOkS IQDGrTpYiP7p1g78r8Yq0AXOWKgBIUe969ECT4HqoWEd5OwHDRneXXpysEphVw7+lU0Y= X-Gm-Gg: AY/fxX7Vh38wR5zZoU9vEPosVu5+CwKJVSZHi9qJTSp1cSpeKWamPNBmDFJbKwaQfuE TbZbnYImCjmwwAzjWWMI7EOxYLwrUDtuBrABtSvo+td04uuLomFotyALLEOe+T1dAG65VaoUL66 zPIGQ34RQVub3TXeq37YjLoFdPCVLFWNweFM42e1+NE9XW09UYPmwjwn4731vZuNVNebXdtL7ce tqVPDScfhLKxtLK1WKH0GzedWGfAGqpk61O8YPvRJDYESJuPUTb6h6kW/MrNZcxKudSdyhRXZWa +bhkg6BYKGOwhkp3fR7sk6fSEAp9NVVaoVyq2XWOYKxLnAamhIwapvqNsAiXp8SCB+MG7U5rRUT 0uN+IY8qqjjr4QOvlKH1zLCzvWs7vnr5oUggmKsTWA+oIFIhbGBJLXKQxyDbrucfP+nnBc1G5 X-Received: by 2002:a05:7022:910:b0:11e:4fc:9b33 with SMTP id a92af1059eb24-1233cfac8c6mr816294c88.1.1768425485895; Wed, 14 Jan 2026 13:18:05 -0800 (PST) X-Received: by 2002:a05:7022:910:b0:11e:4fc:9b33 with SMTP id a92af1059eb24-1233cfac8c6mr816258c88.1.1768425485241; Wed, 14 Jan 2026 13:18:05 -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-121f243421esm32167118c88.2.2026.01.14.13.18.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Jan 2026 13:18:04 -0800 (PST) From: Anjelique Melendez To: andersson@kernel.org, konradybcio@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, heikki.krogerus@linux.intel.com, gregkh@linuxfoundation.org, abel.vesa@linaro.org Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org Subject: [PATCH v4 4/4] soc: qcom: pmic_glink: Add charger PDR service path and service name to client data Date: Wed, 14 Jan 2026 13:17:59 -0800 Message-Id: <20260114211759.2740309-5-anjelique.melendez@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260114211759.2740309-1-anjelique.melendez@oss.qualcomm.com> References: <20260114211759.2740309-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-Authority-Analysis: v=2.4 cv=YPaSCBGx c=1 sm=1 tr=0 ts=69680810 cx=c_pps a=SvEPeNj+VMjHSW//kvnxuw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=X7TptQfD4XCScbvf-kcA:9 a=Kq8ClHjjuc5pcCNDwlU0:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTE0MDE3NCBTYWx0ZWRfX3XkLf1N8vBQ0 mu7AES+yGZoJhUEf61tFRhZnaRwEG+fI+YktHZh5eEK/sftzGDDCF43JCGjfAwsUv31/q/EkQSC Mw0iffyJvHOm+8GO3ndptHZEdULL1zZjg+lQZNYOUnWU+qT3Lctgoh+MAPWqEmhC2hQsZtbvqpG mLqL96Tbmae6j15ravSvq8CpLwTR+so1ZtXbGAjOgKyI8alWjwVsW6+gAdP2npG4eVCfz4UWpa5 gb7GfNCCSaofuAHaZ4ZYvWZ2/MPXoeOa6piUBTKLITUWY6Ol2ECciXKytmvJ92IP1d72OkUjH8b 25U3otQOenSKerM7le9sP3XYbAPCZlbF9x9nZ4R9wrg9BXd6itgZr16VenPxYNfHsfEvz5lvWkh TLR8NHNK8jAGWSOsTydfIEXE1TZFmNsgZx9iyoPnoxOZKSUEVQZzQOh8RqPWWazb6wD1dvsD+x6 osZBnv0gto2c3JtQTXg== X-Proofpoint-GUID: elxS_FcOJMRreTZabEZVuR20DtI_oEzA X-Proofpoint-ORIG-GUID: elxS_FcOJMRreTZabEZVuR20DtI_oEzA 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=2026-01-14_06,2026-01-14_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 impostorscore=0 suspectscore=0 malwarescore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601140174 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 SOCs. 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 qcom,kaanapali-pmic-glink and qcom,glymur-pmic-glink compatible strings. Signed-off-by: Anjelique Melendez Reviewed-by: Dmitry Baryshkov --- drivers/soc/qcom/pmic_glink.c | 66 ++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/drivers/soc/qcom/pmic_glink.c b/drivers/soc/qcom/pmic_glink.c index 627f96ca322e..3042261578aa 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,35 @@ 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_adsp_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", +}; + +static const struct pmic_glink_data pmic_glink_soccp_data =3D { + .client_mask =3D BIT(PMIC_GLINK_CLIENT_BATT) | + BIT(PMIC_GLINK_CLIENT_ALTMODE) | + BIT(PMIC_GLINK_CLIENT_UCSI), +}; =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,glymur-pmic-glink", .data =3D &pmic_glink_soccp_d= ata }, + { .compatible =3D "qcom,kaanapali-pmic-glink", .data =3D &pmic_glink_socc= p_data }, + { .compatible =3D "qcom,pmic-glink", .data =3D &pmic_glink_adsp_data }, {} }; MODULE_DEVICE_TABLE(of, pmic_glink_of_match); --=20 2.34.1