From nobody Fri Jul 24 22:54:52 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 192CD3845B3 for ; Wed, 22 Jul 2026 11:27:23 +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=1784719647; cv=none; b=Z8YUG9GxsRqsRsgGBTy4d8q7nmbgQBS7u//O+H1ToBwUfbMUUxTKE5VuFaYU7mXqrimdqVAOCPHti69gjDM3pm3BEn0wGsXsOTHTU1ElOtbpzWRfiwLlBmptNki7AZE+PGV356eKxL9YtmSfomxyiOMeUcmSeauR9HiNxH8Y3Zk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784719647; c=relaxed/simple; bh=kmkGsqLClKltGgmx2ZFGSlei16yqugauZtjl778tICE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=btLiXIsXTaq9adlScM8Bwu9VNiODr6a7fIn5C6o6K0QrMqIvElKhtBlSjttl0O5WzWQQ8uRZc3rQjJpZVDizn7fc/pD2G5fq2ZTRYLEslzTwmqmgR3hPZ/xusLVnVLFTf/ULF5/Sft2Gh5nYrJ6D6aQdM9OuuwCkBvBDSWICsi0= 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=RtLGsSzB; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GryaVWmU; 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="RtLGsSzB"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GryaVWmU" 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 66M8x6OS140605 for ; Wed, 22 Jul 2026 11:27:21 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= 5M1LRmAykOX0G96PBHdB913frohKOxohz72tFSL1lVU=; b=RtLGsSzBYtJlpR2C wNJFdYffjmolVgjmeWSiqF+rDJTYEqvKQtsDLArAMH/jsntJ+3z6NUgsu3/axWaA GHUj2vQTi/d71NsYpoDrb9vOejwkvwg8aDNZ0E8390tRVkbihbpHVf6N2xzwT42B P1I7VW2SgaCidc4aWr3m6KYJfNJ1jfpO/iFd7NF8Ep19qS01E2eVZSqi3sE7AOsy sk8ATHNAKgx7mtu8E2NmWKAKDfBAmGwaLf0DBUhDdUJjle+F3zxJYWUOIm0NrKEs p1eX06jH296WbM7/bTO9+uUGQDxICz6St+fD2YOdgmFpS9yvpMa6sBldjf/HooZF 0NGLvg== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjtn2rma8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 11:27:20 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2ccb6823efcso109777325ad.0 for ; Wed, 22 Jul 2026 04:27:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784719640; x=1785324440; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5M1LRmAykOX0G96PBHdB913frohKOxohz72tFSL1lVU=; b=GryaVWmUqIgOIPR1xYw6Cvp1vqNqSQpm6t7RWaGNZriFwm6RfPZvy3eTz3C81Vut0f 4UF+2MhHhNkUa0khjBqDr5lCTI8KGRqLfLMrjME/WDOOe+g3lnYW6g9yieVgK9UFTbSt tLhCBS7sk7wtQDLPNGEGcXxG5G6aDHvQKQT4RMfnE/cVZ3o1vgwYZ45KFfC4XkJ7RhyR kyJCW5svQ7pI9sqMkJ7P3EL4EPQ57hRztpPuATcFjoDbBfa8Q1mEL1cBFR3dWqz7g33E dVV/45orfzb588WFasTjwHY+/9fm1ARMB8zzhzkJW3jDe/vRJaC14eFSlWwVMfN47RMS H50w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784719640; x=1785324440; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=5M1LRmAykOX0G96PBHdB913frohKOxohz72tFSL1lVU=; b=a2rfvyLOa7tzr9yV6+swQKv1PUC4ZFJeVzLCCV3mLjx+w+adT5JzzNmbtBLvNepfzu uWMQ4S4hGirKs570yn/kuKHita96JLn6b+ZShRWUd74M7SL9fG68mPCLYBUwxtfhJVxM 3Ru4dlA4gWeRwyRByZ2cwZGlZNu1SC3Mf4P5pLZBW5H8hUza6s+mxzrvuO5Rg7cwcJtf Eh7o7XTCqHkldwC1Cfp4uHNs383hjjklPsG0usPFVkbt/sO5AwNpRs9XynGcBgwWN0sd ea1gz+ncNPM1MgEMh5Ay50DjIQA3FXwuFmlTKdG+R252DQGAtCclOFFbbg3y3BUdXxM8 br+g== X-Forwarded-Encrypted: i=1; AHgh+RoNet1q0Klxq/VYPao639F0EA2mJy4Peik91NOXR6uFXDoULieqcYP3riVEJterJIs0H4YrFyhAyIUPr6c=@vger.kernel.org X-Gm-Message-State: AOJu0YxAgloV7xVN/LegYrdLoZCxEztWTjbNGj0IG50SUUm6ofCIag8u ymuRix+sbAY9UeLwhF6EZOyQXr6vx7LaQg1K2Q9blOmeUrmfj3kahYuEKSq+SlrNuTdjotciZbi 3hdh4XtflvGNxzuySguxzuLAe551Tj3HoacMvOUyDpe0slgIVD0kSLIknJITEdTCQNNo= X-Gm-Gg: AR+sD12CbAehukc4qk4AUAfWDTFXvGLVthrFMnKpDG8TXM3FW4eeQOboMlX0znRBKHG rNA/kebby1nsUExvADwP3sYRFmArf5sOG+BJeOXQARuXy9PKw62ajJG8pik43Z//iLHiDc0CZbZ NItk1K+gijb4Y5dyBdb1+hjoycekEcLrVw3V9+1NMxX4wfcFTkr98NkKzxQa5+PXWD/1jd2JEMj IfizY2iS223CtJQsBeLSQblB3L2mwLUhbREveAn/7lABtyVj/JzxJqnP3bohNYuswCQ+awtzCwf vqSrVEwXUFZRSvk9sivbC79UQ4aezDuZbtjxGsxwI9z/yw9buirnIEWCd1uxUNKE3o1LY62nJ82 uhpIn6W5YYLAOcwz9H4c= X-Received: by 2002:a17:903:1b6f:b0:2c6:a172:55a6 with SMTP id d9443c01a7336-2cf3481df5bmr259252555ad.9.1784719639902; Wed, 22 Jul 2026 04:27:19 -0700 (PDT) X-Received: by 2002:a17:903:1b6f:b0:2c6:a172:55a6 with SMTP id d9443c01a7336-2cf3481df5bmr259252265ad.9.1784719639474; Wed, 22 Jul 2026 04:27:19 -0700 (PDT) Received: from [10.213.109.130] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8f2e65f3sm13143995ad.45.2026.07.22.04.27.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 04:27:19 -0700 (PDT) From: Jishnu Prakash Date: Wed, 22 Jul 2026 16:56:37 +0530 Subject: [PATCH v4 1/3] iio: adc: qcom-spmi-adc5-gen3: Remove an unnecessary print 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: <20260722-gen3_adc_tm-v4-1-011981f756c8@oss.qualcomm.com> References: <20260722-gen3_adc_tm-v4-0-011981f756c8@oss.qualcomm.com> In-Reply-To: <20260722-gen3_adc_tm-v4-0-011981f756c8@oss.qualcomm.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Amit Kucheria , Thara Gopinath , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba Cc: linux-arm-msm@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Kamal Wadhwa , David Collins , Anjelique Melendez , Neil Armstrong , Stephan Gerhold , Jishnu Prakash , Andy Shevchenko , Maxwell Doose , Joshua Crofts X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784719625; l=1235; i=jishnu.prakash@oss.qualcomm.com; s=20251014; h=from:subject:message-id; bh=kmkGsqLClKltGgmx2ZFGSlei16yqugauZtjl778tICE=; b=pUrAWjkvl6OeiuBC9hlzdFTTXKMvK7YjJQRMmcM/adHAc5PvrD+RWIO5SFKXzgV7XScvLjgk4 LYh7y6QOF0eChmN8nEkRjkcfntzLNHrP6bz8kmzouKoQ+j9s/wuuALx X-Developer-Key: i=jishnu.prakash@oss.qualcomm.com; a=ed25519; pk=g89pXdLVwRjdTeQ+uX1QzvBO346E3hQAc1N7fcTXgmk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDExMSBTYWx0ZWRfXzULcBrteOnaT 4Av+gQiDwcwfnEyluZbGbi5myuW2dzfMh/7+7K6lbn9fz5RYUu9AQWEclghNCCNdLUzbHaE2ioA 1SK9hf7M0axzDScIeAqf/wy8CtbiloH0NwVuvs0ssEt3x8ZsT3j3XVWVAMID1a5ab2JOTkOjsJ5 TrLx/BraMZBaTJraL3jouIkaiXb+GIn9DYg3+xftVy3lqHQAhuh7qTWdrZNxFLjGLggBL2Rjl20 +zJkQaExbpHN/LamaSIeE15C0lrkT4KSkt2HsqWbWphsfO+3376BUxEWmJhq41dCrBK+gqj1u4G W87t8b8FpU7an9si1MgOjZzv2uJEnapOsDiEYFGxPfNBC738gOU+bGEW/r0E0EZzFca2UNo/2wA mVkmXJtxZPb9NQVTcTR/J5YYp6ftG8/pUD7rjApUFoqYxVkGhzjjA1/a51qzVJw71NuNgfi1hWO CRksWXlYCuEsDYiku+Q== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDExMSBTYWx0ZWRfX1ObdHoaVAAhg v+KMfAzRxNcEuG72fg3jUUwkgH7PEHrXFLPenvnTS190hhoalg0OWiTtjEgwLzVBGV+ipPVjZRn 47eShGNFHuQeL7BNFo2LfG1/+fpGP4w= X-Proofpoint-GUID: dZDqXJ2rAQOoJyU-u8PsN5pA8Wuqi_fS X-Proofpoint-ORIG-GUID: dZDqXJ2rAQOoJyU-u8PsN5pA8Wuqi_fS X-Authority-Analysis: v=2.4 cv=T+28ifKQ c=1 sm=1 tr=0 ts=6a60a918 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=QyXUC8HyAAAA:8 a=VwQbUJbxAAAA:8 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=kIsQgyr_JZXbD0ExW-kA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_03,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 impostorscore=0 malwarescore=0 spamscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220111 devm_request_threaded_irq() internally prints an error message using dev_err_probe() in case of any errors. Remove the error print in the devm_request_threaded_irq() failure path as it is not needed. Suggested-by: Andy Shevchenko Reviewed-by: Andy Shevchenko Reviewed-by: Jonathan Cameron Reviewed-by: Maxwell Doose Reviewed-by: Joshua Crofts Signed-off-by: Jishnu Prakash --- drivers/iio/adc/qcom-spmi-adc5-gen3.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/iio/adc/qcom-spmi-adc5-gen3.c b/drivers/iio/adc/qcom-s= pmi-adc5-gen3.c index c56b650fd8c0..2eaebf6b34e8 100644 --- a/drivers/iio/adc/qcom-spmi-adc5-gen3.c +++ b/drivers/iio/adc/qcom-spmi-adc5-gen3.c @@ -821,9 +821,7 @@ static int adc5_gen3_probe(struct platform_device *pdev) adc->dev_data.base[ADC5_GEN3_VADC_SDAM].irq_name, adc); if (ret) - return dev_err_probe(dev, ret, - "Failed to request SDAM%d irq\n", - ADC5_GEN3_VADC_SDAM); + return ret; =20 ret =3D adc5_get_fw_data(adc); if (ret) --=20 2.43.0 From nobody Fri Jul 24 22:54:52 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 82B0E3E5EF8 for ; Wed, 22 Jul 2026 11:27:29 +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=1784719654; cv=none; b=hgSsmU64CrqUNgVLUpUI2BCqezeaHI+O9fHsV8v7HxbbPeELniDBt+L9Ybe3ly5AHONup+iqWGpAb/wee8PnbVXkZO/jD51TbyNHkbOg6NxWPT93CVgBkmF6gmskbrDwrDZ/Y8FdV9W1T4xtWYQC/Q2dtK/OOHqYM3O/pzFBv68= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784719654; c=relaxed/simple; bh=UbEeQs7YAIM3++NUeuGJ8hkcivfusRQlNMtLU/0bdV8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tM6EW6GwWGB5W2DCnOrYPhRn80mF8YF04LkfhD2dNAS4xnvqYeOiRn9gR3QtXwco3ObyBJxud2Ul3LbthwzNfUuvWZ7jN+AhwZGLNDjiOY0M62TR/XMImYT4oe1BvI42I9KtMK9yfUf2ToJroVUsba2CRUo1gGDpBSfsahCZUk4= 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=Br6+YfOJ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=FHc3bq4z; 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="Br6+YfOJ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="FHc3bq4z" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66M8xLZm412319 for ; Wed, 22 Jul 2026 11:27:27 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= BDu3S6oC3F7Hd75dAxTVWUVcOJ2c0rurN9IOs7Wqvvw=; b=Br6+YfOJSpYFTuce GzdN1ZyluCVNPOHDIbaMtYBzbci8uyklAz+xRWzvrUjVbK0eaxK3LfH8WBaa93+j RkrGk7VfFns/9znM+fGKvqX1jiavGpYSVnuLPSxHjSmJFgG2sCqikQivB1EEvN0d PgYq9dlxcbW1/xieXqVuGvMF1AgToaF5j2KWMut+aB37yAw7x5PDwNgJNQq/gayX F2sHmDjfv3xytP+cXaqz5l/wyYMZiueSuoxx9g0jRckRs6UKVMVR5jeXRXKohfoz q3I/LRkGk6l/Blhtvw3hp4PL1SbssQQNNQ4O8N5Pe5GfxtslDGFJ4oAcoy/6h+ch mWSOXA== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fjpxdhjpy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 11:27:27 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2cea6a46766so193558295ad.0 for ; Wed, 22 Jul 2026 04:27:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784719646; x=1785324446; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BDu3S6oC3F7Hd75dAxTVWUVcOJ2c0rurN9IOs7Wqvvw=; b=FHc3bq4zEMclZoOYhwVrwySUFwvB5r4H95s6IzGwAuRiTiHweFq6wAazxi7cBiI3Mx MAo7BPU/PWA5pTlaieYArVYsSLaYZGtKJpU7aqYoH8ZY6vPJwatYuoPzAsThEyf1ZdpE 6feXAlrJ3BGMsi5zvpM1ntLPY4IE8bVMzf8AD9TySdl3EAHG0YYBrWedQ7ZSYSxAJwBS x2fRYQDJMb5um9ocPZzZI6u7VblppNhXWlZw/SM3RxnhS39otixuYOtSEIMEW52t8FIZ LVsyuFCoQH777mRNrTmdqeTGBYWpZIN2DXziYhFE79314cVDKVIDmBJOmc7d/T68PIqc vGfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784719646; x=1785324446; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=BDu3S6oC3F7Hd75dAxTVWUVcOJ2c0rurN9IOs7Wqvvw=; b=U6BsCixhW67/MTC+mOYlZ5+Mv21mrDmRIeHB0TQz2S99Wj1xgK5dI+yJ+q40Los/vU K6Srie0QyI/J+R4DLhu8W3bKmuxZwBwisBDFimv4b8Sz0WeljKsdLpB6DXP7GkeaxzOZ KPS49SuqQ/Qbg8fk9bk3MLhbgQT3y4dR8joiXJBPxVNuWjadfekzJOUbuFUpvHoDmCyL W7UNd13EFjlTy2MkLxpffEqH6LoHNZg5IMeH5hJa7EJpjVaGZt7jyh3Cw+fEeG1WMk0J 6iLBMiz1y16S873TNbsT5CIpAE3TpVXM5BeE3dHROws/OP7+AAPaBPt1N6iIS4Z82DFf yNDQ== X-Forwarded-Encrypted: i=1; AHgh+RrkaoYSZW3xT9dPa3IocovDCXfPeimcfLk+yG7eCBYRPtcUrSqN+HQpFhwB7ieW6J5OFz3OQfdQOg7nMTg=@vger.kernel.org X-Gm-Message-State: AOJu0YwWKJDU5gcWTipbW4yJpJBTSixydVXfBlMwYpbHS/RpIK0naBfk C3svu9UfQJVW7XnUcuJWFw7XW5nrTUe+f5DqN0p8GkayaqJhX225eWk7mjBDoKynfmgnni27Fq2 JhuxYeNemiqVOfRCCSD+EMCoNuzfSVZiUyuBqtsC75AH8aN2beFvMuUaXoVppszTbDzQ= X-Gm-Gg: AR+sD10v2WFY8J+RKibA1Fhs1F92DhDEMyxtKfs3RqFEtmMR3w/NFJYwdsJcrEHqaCn zEp1sMyfuK+Q0FZLR+xmnF0zDpXdE0eRRJ8xvCxfwSY1NMUpa3S2g9+hLPWoK3hQwWzLYxC3DvG L4vO3q+IHLH1mCf02zgZzV3GfBib3+EeIW/o8aXCpZQIr4WC0oBCKEHajhr9KQ6GiCeyp4+OZ2J kva417YhW6LqQp/szIPdOEUzcxb7+B6wIFTnzqNn7L1LTK6bfznusZ6pPSmCTJnEoxF6wOgJcx2 lexAouQERvWdgPfFhGzd+DCPxB0LKTZcLycPVVsln0LSjE34s44aplKbBIWTyi8JNgtSNuA5WKs DM4sVJul1r6TIYJAbkmQ= X-Received: by 2002:a17:903:3807:b0:2c2:bd7f:ccd4 with SMTP id d9443c01a7336-2cf349175f9mr234051815ad.21.1784719646242; Wed, 22 Jul 2026 04:27:26 -0700 (PDT) X-Received: by 2002:a17:903:3807:b0:2c2:bd7f:ccd4 with SMTP id d9443c01a7336-2cf349175f9mr234051535ad.21.1784719645751; Wed, 22 Jul 2026 04:27:25 -0700 (PDT) Received: from [10.213.109.130] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8f2e65f3sm13143995ad.45.2026.07.22.04.27.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 04:27:25 -0700 (PDT) From: Jishnu Prakash Date: Wed, 22 Jul 2026 16:56:38 +0530 Subject: [PATCH v4 2/3] iio: adc: qcom-spmi-adc5-gen3: Share SDAM0 IRQ with ADC_TM auxiliary driver 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: <20260722-gen3_adc_tm-v4-2-011981f756c8@oss.qualcomm.com> References: <20260722-gen3_adc_tm-v4-0-011981f756c8@oss.qualcomm.com> In-Reply-To: <20260722-gen3_adc_tm-v4-0-011981f756c8@oss.qualcomm.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Amit Kucheria , Thara Gopinath , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba Cc: linux-arm-msm@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Kamal Wadhwa , David Collins , Anjelique Melendez , Neil Armstrong , Stephan Gerhold , Jishnu Prakash X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784719625; l=6189; i=jishnu.prakash@oss.qualcomm.com; s=20251014; h=from:subject:message-id; bh=UbEeQs7YAIM3++NUeuGJ8hkcivfusRQlNMtLU/0bdV8=; b=wtas0JGLTwoQdAPF/HxRM9NifZV21RTKzGYLesFS05+HBUydx5RqzERk3XsN/1ldYTyreEmvL PDMceFttcj2BanWCrzhF9J1Vh88TqjoQo1qq059TBJKzmdLZAMwmmwn X-Developer-Key: i=jishnu.prakash@oss.qualcomm.com; a=ed25519; pk=g89pXdLVwRjdTeQ+uX1QzvBO346E3hQAc1N7fcTXgmk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDExMSBTYWx0ZWRfXz+9kBZCNvuPW 6n6pYbNXtDqwLGPfyRP6yXn1yX5iQrjJ167xQamX5dU1yM97ABH+JZj0YD7LmdfETiF8cilKnie cc710i1L0Q6JYXw2ue3bot469H/85W6qk2v6m65DS1oxT5M8HrO3nQGi//x1EwIR4kH9pd/WTiQ QIjxcfS0R4V574U5EZyNCOwlQw2FlJkc775unlidvndeOOibepgBWhOJDCEQO6Ch501ln/2G9uP iqlgR0xeKGtnrDxZ6ryVCSxf0CcfdQPyoVbw4EvYUzwu2LCzjqNXwNqkCqTAc8JEdHMC0KqSlT5 PdxlFbPYVb27WpVXm4n5rzBHbLIfAeXioOR2XPrleYSLUlRc0yjnsOPFLxLuHDPEXAFJ0UOsZ3p Ua5F3u4Du+djZ+Qssx8cYkwkuRTGxwJ8iNheT2jgIotQgXbot55O3wl+Dte9l4N6/gzfzeNWBns V9en+qU2zPG3Gt7qOYQ== X-Proofpoint-GUID: iGlC_LXvx71eyC_fE6DYT0-yTTL6sZHY X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDExMSBTYWx0ZWRfX9Jz3OSUOmHA+ 1FbKGuHX9aURWk3qlAN8qFHFuwYEK0b7ctMQvRB0cJn1eJ3G6h803EvRJnMTMocoiO5ZIhRE1A6 /3UuZA6wYbXaRs6xhO+wn+rcpghsJzc= X-Authority-Analysis: v=2.4 cv=b7iCJNGx c=1 sm=1 tr=0 ts=6a60a91f cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=g_6YNVtFXVELDihYPjMA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: iGlC_LXvx71eyC_fE6DYT0-yTTL6sZHY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_03,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 suspectscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 impostorscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220111 The SDAM0 IRQ can be triggered for both EOC (end of conversion) events for immediate ADC reads done in this driver and for threshold violation events, based on ADC_TM thresholds configured from the auxiliary ADC_TM driver on TM channels on the first SDAM. At present, this interrupt is handled only in the ISR in the main ADC drive= r. When the ISR is triggered for an ADC_TM event, this driver notifies the ADC= _TM driver by calling a notifier callback exposed from it for this purpose. To simplify the interrupt handling in both drivers, share the interrupt bet= ween the drivers. With this, ADC_TM interrupts on SDAM0 will be handled directly= in the ADC_TM driver, so remove the notifier callback and all TM interrupt handling in the main ADC ISR. Reviewed-by: Jonathan Cameron Signed-off-by: Jishnu Prakash --- drivers/iio/adc/qcom-spmi-adc5-gen3.c | 65 ++++++++---------------= ---- include/linux/iio/adc/qcom-adc5-gen3-common.h | 2 - 2 files changed, 18 insertions(+), 49 deletions(-) diff --git a/drivers/iio/adc/qcom-spmi-adc5-gen3.c b/drivers/iio/adc/qcom-s= pmi-adc5-gen3.c index 2eaebf6b34e8..c68c6c5f6aca 100644 --- a/drivers/iio/adc/qcom-spmi-adc5-gen3.c +++ b/drivers/iio/adc/qcom-spmi-adc5-gen3.c @@ -55,9 +55,6 @@ struct adc5_channel_prop { * requests from multiple clients. * @data: software configuration data. * @n_tm_channels: number of ADC channels used for TM measurements. - * @handler: TM callback to be called for threshold violation interrupt - * on first SDAM. - * @tm_aux: pointer to auxiliary TM device. */ struct adc5_chip { struct device *dev; @@ -69,8 +66,6 @@ struct adc5_chip { struct mutex lock; const struct adc5_data *data; unsigned int n_tm_channels; - void (*handler)(struct auxiliary_device *tm_aux); - struct auxiliary_device *tm_aux; }; =20 int adc5_gen3_read(struct adc5_device_data *adc, unsigned int sdam_index, @@ -286,23 +281,21 @@ static irqreturn_t adc5_gen3_isr(int irq, void *dev_i= d) { struct adc5_chip *adc =3D dev_id; struct device *dev =3D adc->dev; - struct auxiliary_device *adev; u8 status, eoc_status, val; - u8 tm_status[2]; int ret; =20 ret =3D adc5_gen3_read(&adc->dev_data, ADC5_GEN3_VADC_SDAM, ADC5_GEN3_STATUS1, &status, sizeof(status)); if (ret) { dev_err(dev, "adc read status1 failed with %d\n", ret); - return IRQ_HANDLED; + return IRQ_NONE; } =20 ret =3D adc5_gen3_read(&adc->dev_data, ADC5_GEN3_VADC_SDAM, ADC5_GEN3_EOC_STS, &eoc_status, sizeof(eoc_status)); if (ret) { dev_err(dev, "adc read eoc status failed with %d\n", ret); - return IRQ_HANDLED; + return IRQ_NONE; } =20 if (status & ADC5_GEN3_STATUS1_CONV_FAULT) { @@ -315,30 +308,13 @@ static irqreturn_t adc5_gen3_isr(int irq, void *dev_i= d) return IRQ_HANDLED; } =20 - /* CHAN0 is the preconfigured channel for immediate conversion */ - if (eoc_status & ADC5_GEN3_EOC_CHAN_0) - complete(&adc->complete); - - ret =3D adc5_gen3_read(&adc->dev_data, ADC5_GEN3_VADC_SDAM, - ADC5_GEN3_TM_HIGH_STS, tm_status, sizeof(tm_status)); - if (ret) { - dev_err(dev, "adc read TM status failed with %d\n", ret); - return IRQ_HANDLED; - } - - dev_dbg(dev, "Interrupt status:%#x, EOC status:%#x, high:%#x, low:%#x\n", - status, eoc_status, tm_status[0], tm_status[1]); - - if (tm_status[0] || tm_status[1]) { - adev =3D adc->tm_aux; - if (!adev || !adev->dev.driver) { - dev_err(dev, "adc_tm auxiliary device not initialized\n"); - return IRQ_HANDLED; - } + dev_dbg(dev, "Interrupt status:%#x, EOC status:%#x\n", status, eoc_status= ); =20 - adc->handler(adev); - } + /* CHAN0 is the preconfigured channel for immediate conversion */ + if (!(eoc_status & ADC5_GEN3_EOC_CHAN_0)) + return IRQ_NONE; =20 + complete(&adc->complete); return IRQ_HANDLED; } =20 @@ -683,8 +659,6 @@ static int adc5_gen3_add_aux_tm_device(struct adc5_chip= *adc) if (ret) return ret; =20 - adc->tm_aux =3D &aux_device->aux_dev; - return 0; } =20 @@ -740,16 +714,6 @@ int adc5_gen3_therm_code_to_temp(struct device *dev, } EXPORT_SYMBOL_NS_GPL(adc5_gen3_therm_code_to_temp, "QCOM_SPMI_ADC5_GEN3"); =20 -void adc5_gen3_register_tm_event_notifier(struct device *dev, - void (*handler)(struct auxiliary_device *)) -{ - struct iio_dev *indio_dev =3D dev_get_drvdata(dev->parent); - struct adc5_chip *adc =3D iio_priv(indio_dev); - - adc->handler =3D handler; -} -EXPORT_SYMBOL_NS_GPL(adc5_gen3_register_tm_event_notifier, "QCOM_SPMI_ADC5= _GEN3"); - static int adc5_gen3_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; @@ -816,10 +780,17 @@ static int adc5_gen3_probe(struct platform_device *pd= ev) return -ENOMEM; } =20 - ret =3D devm_request_irq(dev, adc->dev_data.base[ADC5_GEN3_VADC_SDAM].irq, - adc5_gen3_isr, 0, - adc->dev_data.base[ADC5_GEN3_VADC_SDAM].irq_name, - adc); + /* + * This interrupt is shared with the ADC_TM auxiliary driver, which + * is threaded and uses IRQF_ONESHOT. Since shared interrupts need + * to agree on IRQF_ONESHOT configuration and there is a kernel + * warning for using IRQF_ONESHOT with non-threaded interrupts, + * make this also a threaded IRQ. + */ + ret =3D devm_request_threaded_irq(dev, adc->dev_data.base[ADC5_GEN3_VADC_= SDAM].irq, + NULL, adc5_gen3_isr, IRQF_ONESHOT | IRQF_SHARED, + adc->dev_data.base[ADC5_GEN3_VADC_SDAM].irq_name, + adc); if (ret) return ret; =20 diff --git a/include/linux/iio/adc/qcom-adc5-gen3-common.h b/include/linux/= iio/adc/qcom-adc5-gen3-common.h index 6303eaa6640b..39cbfcbdb101 100644 --- a/include/linux/iio/adc/qcom-adc5-gen3-common.h +++ b/include/linux/iio/adc/qcom-adc5-gen3-common.h @@ -205,7 +205,5 @@ int adc5_gen3_get_scaled_reading(struct device *dev, int adc5_gen3_therm_code_to_temp(struct device *dev, struct adc5_channel_common_prop *common_props, u16 code, int *val); -void adc5_gen3_register_tm_event_notifier(struct device *dev, - void (*handler)(struct auxiliary_device *)); =20 #endif /* QCOM_ADC5_GEN3_COMMON_H */ --=20 2.43.0 From nobody Fri Jul 24 22:54:52 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 A8A154D90C0 for ; Wed, 22 Jul 2026 11:27:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784719662; cv=none; b=TSChq2x08fw1sWUbxvlEvJtcHk2qduaZ2pXXUAUsVuRvySjQ64Ftv/tNweymuIrhVrIsUXb4f4/M7TGTQUd3JCGzK84J0z2zDJdcaICNYq9TwL2YWVz8GlrtC1ejBDWsOgeTV6ZJRET7DeHiYe5NfpCPMqFt7ZrBmSRtaPJOBVQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784719662; c=relaxed/simple; bh=8PTh6xO5AetcjbNSocXFb0IRhshOh5s3dwlrzmY5C/U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZXAFran3iu86KcQgqtHRG2yJdiEiJZrQEo6tNBUm2dIw9/U7X1Z0c+banyLaY+Y5gXRgpzW5UUxyZC9bLwMNiw4hlSHppMXril+uLjTZADu1xGIYytKRjxhEvqok36yyVGfMuIE13F2LvTRpRBNENxD2fNTivgdVQsdj99aBZE0= 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=WLvdOSzL; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=AexujJ00; 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="WLvdOSzL"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="AexujJ00" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66M8xLQQ412302 for ; Wed, 22 Jul 2026 11:27:34 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= JprL3gX2fZjqZpSxar7ABzntVD7AkmCBzKZjkX2qLb8=; b=WLvdOSzL1vDyDEdi WLGtiF8fDLD4lQb6JFXpcXZBZkeX2jcrAvhhwLChXdjXrd8vCi0q4UNKf+cw5SJ1 gA1wXPF1u6GC5c8SnFP+3W91lS+cSbipNAS2IM0M8j/zSja216qerVabwL8Uotx8 Rqqwkd8ZF9HpgrhtLsL8cDV0eGMZi5nDdznsXfzgCSnLGbVjwOkj18AbagBSgvwk vf343vmaVUO2D0LjI4uydlUoq99KZVUESIORIszzN331ii/xNZl+GIJoMOAWaV5V HQyDxnvjVpwStzSjL1+mmZBqKOdHWtc3wK3OuVLlE1pOj0D8ArAg7/Nejj4v1FTf w3CROw== 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 4fjpxdhjqb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 22 Jul 2026 11:27:33 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cca3673560so214856925ad.1 for ; Wed, 22 Jul 2026 04:27:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784719653; x=1785324453; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JprL3gX2fZjqZpSxar7ABzntVD7AkmCBzKZjkX2qLb8=; b=AexujJ00Bb7tUnMXHGuuZSHESmt/I/+EACqApOEWgs6AKqRl8H9dLKExwdu0WC7EMk f6O+xhY/SasITI4PRpCpl/JTOYDNfCBUlRbaPsPcOy1YGzRnL6a/RqrUSeehT5sSCrND jAfHHu9Rf0YRwQ/zk+u7iXguQQqKiytcbWkElUGjzdaDR/AOv77CH2BBmrvj8s2nq4m+ W4S6FTlJrLhcbwkuPBBwyoYFTZN5oJv7/KQ+W6OCCnv1d5nQ91f2QdpETwSeQmYubIdM CqiM7mG+vUCR0QN3J4kQx0TlkNeFA1YRWfIFbgr8fPteajllAfNeXHE6+I14QKnsPUnQ izPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784719653; x=1785324453; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=JprL3gX2fZjqZpSxar7ABzntVD7AkmCBzKZjkX2qLb8=; b=f+d83f8pRKrg2N+L6cnGeQglugiYPMFQHN6N7oupY4U5afjf4ipa3p38HNV2FgCXb9 kyuWovSreNi7sML+YYy2xzQO7BOr096oe5dUEVxOwkcBUhQH6bwlDUlRr0EpamhWaDC1 jeCMs5rvIcg5QgQNaYxfV2GGXO/JdultyAcAZ5SVlG6HwhlxrD0DqUjKS7mZ1gV4/Nil M2/vo7L+FowxqbTBO4/Kd6A1lCXk6bAHj4Mg7drsPbGOPDUdRpfvh25rkNB3XI6id3JZ B01EOwbP6lbfthaHiWpVBnEmz5qtGwhdJeIQniVVmbSpl5kzHCDZOvxkKgl/cbE/yDZf ZFMA== X-Forwarded-Encrypted: i=1; AHgh+Rp40+v8fARGoWyyssxDDeFczEljAm+Qxnd+zIy9InbcF3/cGajWEs3qUUM3LY/HYw2pAJVBFUJJFGjF+lg=@vger.kernel.org X-Gm-Message-State: AOJu0YzOl+7bk8bwZ3AgTXzqPIBbNtScK/mcsszYgXaTcC2TLqeqPvHN dp9ZMNGMnyqtFW+xTdlIyQQp1vBsmuAcX3eC044egdrRaRzGJTklMgtTVWAmu4U4dhkap2AsTLj trGRbIIaXg+b4XdbYR+xB40IZW8ZTThTzKExuhbm3jO4Vzchnqb8Mffrk3WMshk76KFw= X-Gm-Gg: AR+sD10pJdXhh2F2rurOQy9yRf11ZnlefLsqzbz+e6KC67cmXxhyVEUh99pXMn5TOQu HdIAnYQEsnx5UPIkQM0tiuVxpXicXCQ616LaUqRCsMKULx7KNGZ9eV0uFjFKP7gKx3NxPbIlgCD ESTKL6ZQnNbjUvXjcqP7J+BaMLsYMx7Gc4sM+xwIdI4Viaw+ADwTBRVIhr/meij2KwnsAaGJqi6 aOmOVWpFRjvUxBAenXpCLhY0NhP8iKfIQUMV+OuJGP/aCLDqgaoZB0qZRnBNN7p+YS/XSGtHQGY o4ljtYGYxS8R/O2xlq3XfD818J//Ft6ziLihfI1tbOjS65+HjFDeGjz0uvUkxal1bjCiAAYdu0c bNwTmw7W/tvv3kqcxQOI= X-Received: by 2002:a17:902:e548:b0:2c9:e86e:aa0a with SMTP id d9443c01a7336-2cf34673ed1mr240753535ad.0.1784719652630; Wed, 22 Jul 2026 04:27:32 -0700 (PDT) X-Received: by 2002:a17:902:e548:b0:2c9:e86e:aa0a with SMTP id d9443c01a7336-2cf34673ed1mr240753165ad.0.1784719652115; Wed, 22 Jul 2026 04:27:32 -0700 (PDT) Received: from [10.213.109.130] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8f2e65f3sm13143995ad.45.2026.07.22.04.27.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 04:27:31 -0700 (PDT) From: Jishnu Prakash Date: Wed, 22 Jul 2026 16:56:39 +0530 Subject: [PATCH v4 3/3] thermal: qcom: add support for PMIC5 Gen3 ADC thermal monitoring 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: <20260722-gen3_adc_tm-v4-3-011981f756c8@oss.qualcomm.com> References: <20260722-gen3_adc_tm-v4-0-011981f756c8@oss.qualcomm.com> In-Reply-To: <20260722-gen3_adc_tm-v4-0-011981f756c8@oss.qualcomm.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Amit Kucheria , Thara Gopinath , "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba Cc: linux-arm-msm@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Kamal Wadhwa , David Collins , Anjelique Melendez , Neil Armstrong , Stephan Gerhold , Jishnu Prakash X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784719625; l=16131; i=jishnu.prakash@oss.qualcomm.com; s=20251014; h=from:subject:message-id; bh=8PTh6xO5AetcjbNSocXFb0IRhshOh5s3dwlrzmY5C/U=; b=XvnJM+rPXdF+rxecfrqlRyxFMZRfDpF+WGR5c3JOEkHf+q3mzuGkIm//VP9HmPb5VtKEuotIL eEsIZegogc+BKNaLhDIQj33yRdB4I8HgrYQuWZo7oILYQHNqKMIyKxJ X-Developer-Key: i=jishnu.prakash@oss.qualcomm.com; a=ed25519; pk=g89pXdLVwRjdTeQ+uX1QzvBO346E3hQAc1N7fcTXgmk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDExMSBTYWx0ZWRfX5xuFAzUhdYlM hFy5VlRZy+IjeDICd5qxdGyPqoCu2mRUab2Hz+01dSXZvydhOYS0SZTxWTiVTS2d3tWxSJ0CVsw 9NYNFMUTZIHsl0qlh1o/qPLXTXoxhDPObVq1a8KTI3znrL7+v/ME7QCtK/Le9QEnazVl+64BD2q kz7s74Cdf1cR6jfskvBlGHy5q+sTgfGWcF1gQU0uXfv3+9y21yngnm3DkZPCvuYDdBEIr67p33D NWWOhmYClNR6f3YGwACNJUoVWRbaBu587xlI0Nq6KXID18Usjm+wCXMs0EfoPE/kn+PlcnJUXCF jMK1gxzfWnR/8kr8iXz12XUhbHejrT15Vz5iPkD7IO+cnZcnZIdvDuOaeUP0cIVRFlxJ5pEQR8h YL9Mr1Re4POXzT2+ioujApc3lW2ixlwC7EFOq+U4QoYEGe83rHCLcvDN9oQ42LgD3YD60YC7DlV nP3vpPPaLb3cxcSQNGw== X-Proofpoint-GUID: vChoP4ESqfINvd7IIRPLDrohA-Hv_n1A X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDExMSBTYWx0ZWRfX1iRvzSaBS20j nX61WBNbhMMp/eX7lqkdtgIjxAWjImoqFhCVjWRY7jkyGC1dyoQTaUaBWZOcpbl1iPJxwV7ZJVe AanFP5i5/7u1OCSP8U9jK4RYWg10kDk= X-Authority-Analysis: v=2.4 cv=b7iCJNGx c=1 sm=1 tr=0 ts=6a60a925 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=fT6TmGh72YL20UaLUwMA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: vChoP4ESqfINvd7IIRPLDrohA-Hv_n1A X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-22_03,2026-07-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 suspectscore=0 spamscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 impostorscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607220111 Add support for ADC_TM part of PMIC5 Gen3 in an auxiliary driver under the Gen3 ADC driver. Its functionality is similar to that of PMIC5 Gen2 ADC_TM, which implements the threshold setting and interrupt generating functions, used to support thermal trip points. In Gen3 ADC, the register interface is implemented on one or more SDAM (Shared Direct Access Memory) peripherals instead of dedicated ADC peripherals. Each ADC SDAM has eight channels which can be configured for either immediate reads (main ADC driver's functionality) or ADC_TM reads. By convention, the first channel of the first ADC SDAM is reserved for all immediate reads and remaining channels across all SDAMs are used for ADC_TM functionality. On the first SDAM, the interrupt line and configuration registers are shared between the main ADC and auxiliary ADC_TM drivers. Access to the registers is protected through a mutex shared between the drivers. The ADC_TM driver accesses this mutex and some other functions shared from the main driver (like adc5_gen3_get_scaled_reading() for immediate channel reads in the .get_temp() callback) through APIs exported into a shared namespace. Signed-off-by: Jishnu Prakash --- drivers/thermal/qcom/Kconfig | 9 + drivers/thermal/qcom/Makefile | 1 + drivers/thermal/qcom/qcom-spmi-adc-tm5-gen3.c | 434 ++++++++++++++++++++++= ++++ 3 files changed, 444 insertions(+) diff --git a/drivers/thermal/qcom/Kconfig b/drivers/thermal/qcom/Kconfig index a6bb01082ec6..1acb11e4ac80 100644 --- a/drivers/thermal/qcom/Kconfig +++ b/drivers/thermal/qcom/Kconfig @@ -21,6 +21,15 @@ config QCOM_SPMI_ADC_TM5 Thermal client sets threshold temperature for both warm and cool and gets updated when a threshold is reached. =20 +config QCOM_SPMI_ADC_TM5_GEN3 + tristate "Qualcomm SPMI PMIC Thermal Monitor ADC5 Gen3" + depends on QCOM_SPMI_ADC5_GEN3 + help + This enables the auxiliary thermal driver for the ADC5 Gen3 thermal + monitoring device. It shows up as a thermal zone with multiple trip poi= nts. + Thermal client sets threshold temperature for both warm and cool and + gets updated when a threshold is reached. + config QCOM_SPMI_TEMP_ALARM tristate "Qualcomm SPMI PMIC Temperature Alarm" depends on OF && SPMI && IIO diff --git a/drivers/thermal/qcom/Makefile b/drivers/thermal/qcom/Makefile index 0fa2512042e7..828d9e7bc797 100644 --- a/drivers/thermal/qcom/Makefile +++ b/drivers/thermal/qcom/Makefile @@ -4,5 +4,6 @@ obj-$(CONFIG_QCOM_TSENS) +=3D qcom_tsens.o qcom_tsens-y +=3D tsens.o tsens-v2.o tsens-v1.o tsens-v0_1.o \ tsens-8960.o obj-$(CONFIG_QCOM_SPMI_ADC_TM5) +=3D qcom-spmi-adc-tm5.o +obj-$(CONFIG_QCOM_SPMI_ADC_TM5_GEN3) +=3D qcom-spmi-adc-tm5-gen3.o obj-$(CONFIG_QCOM_SPMI_TEMP_ALARM) +=3D qcom-spmi-temp-alarm.o obj-$(CONFIG_QCOM_LMH) +=3D lmh.o diff --git a/drivers/thermal/qcom/qcom-spmi-adc-tm5-gen3.c b/drivers/therma= l/qcom/qcom-spmi-adc-tm5-gen3.c new file mode 100644 index 000000000000..9cf552d36868 --- /dev/null +++ b/drivers/thermal/qcom/qcom-spmi-adc-tm5-gen3.c @@ -0,0 +1,434 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../thermal_hwmon.h" + +#define ADC_TM5_GEN3_CONFIG_REGS 12 + +struct device; +struct adc_tm5_gen3_chip; + +/** + * struct adc_tm5_gen3_channel_props - ADC_TM channel structure + * @common_props: structure with common ADC channel properties. + * @chip: ADC TM device. + * @tzd: pointer to thermal device corresponding to TM channel. + * @sdam_index: SDAM on which this TM channel lies. + * @timer: time period of recurring TM measurement. + * @tm_chan_index: TM channel number used. + * @high_thr_en: TM high threshold crossing detection enabled. + * @low_thr_en: TM low threshold crossing detection enabled. + */ +struct adc_tm5_gen3_channel_props { + struct adc5_channel_common_prop common_props; + struct adc_tm5_gen3_chip *chip; + struct thermal_zone_device *tzd; + unsigned int sdam_index; + unsigned int timer; + unsigned int tm_chan_index; + bool high_thr_en; + bool low_thr_en; +}; + +/** + * struct adc_tm5_gen3_chip - ADC Thermal Monitoring device structure + * @dev_data: Top-level ADC device data. + * @chan_props: Array of ADC_TM channel structures. + * @dev: SPMI ADC5 Gen3 device. + * @nchannels: number of TM channels allocated + */ +struct adc_tm5_gen3_chip { + struct adc5_device_data *dev_data; + struct adc_tm5_gen3_channel_props *chan_props; + struct device *dev; + unsigned int nchannels; +}; + +DEFINE_GUARD(adc5_gen3, struct adc_tm5_gen3_chip *, + adc5_gen3_mutex_lock(_T->dev), adc5_gen3_mutex_unlock(_T->dev)) + +static int get_sdam_from_irq(struct adc_tm5_gen3_chip *adc_tm5, int irq) +{ + for (int i =3D 0; i < adc_tm5->dev_data->num_sdams; i++) { + if (adc_tm5->dev_data->base[i].irq =3D=3D irq) + return i; + } + return -ENOENT; +} + +static irqreturn_t adctm5_gen3_isr(int irq, void *dev_id) +{ + struct adc_tm5_gen3_chip *adc_tm5 =3D dev_id; + int ret, sdam_num; + u8 tm_status[2]; + u8 status, val; + + sdam_num =3D get_sdam_from_irq(adc_tm5, irq); + if (sdam_num < 0) + return IRQ_NONE; + + ret =3D adc5_gen3_read(adc_tm5->dev_data, sdam_num, ADC5_GEN3_STATUS1, + &status, sizeof(status)); + if (ret) + return IRQ_NONE; + + if (status & ADC5_GEN3_STATUS1_CONV_FAULT) { + val =3D ADC5_GEN3_CONV_ERR_CLR_REQ; + adc5_gen3_status_clear(adc_tm5->dev_data, sdam_num, + ADC5_GEN3_CONV_ERR_CLR, &val, 1); + return IRQ_HANDLED; + } + + ret =3D adc5_gen3_read(adc_tm5->dev_data, sdam_num, ADC5_GEN3_TM_HIGH_STS, + tm_status, sizeof(tm_status)); + if (ret) + return IRQ_NONE; + + if (tm_status[0] || tm_status[1]) + return IRQ_WAKE_THREAD; + + return IRQ_NONE; +} + +static irqreturn_t adctm5_gen3_isr_thread(int irq, void *dev_id) +{ + struct adc_tm5_gen3_chip *adc_tm5 =3D dev_id; + u8 tm_status[2]; + int sdam_index; + + sdam_index =3D get_sdam_from_irq(adc_tm5, irq); + if (sdam_index < 0) + return IRQ_NONE; + + scoped_guard(adc5_gen3, adc_tm5) { + int ret; + + ret =3D adc5_gen3_read(adc_tm5->dev_data, sdam_index, ADC5_GEN3_TM_HIGH_= STS, + tm_status, sizeof(tm_status)); + if (ret) + return IRQ_NONE; + + ret =3D adc5_gen3_status_clear(adc_tm5->dev_data, sdam_index, + ADC5_GEN3_TM_HIGH_STS_CLR, tm_status, + sizeof(tm_status)); + if (ret) + return IRQ_NONE; + } + + for (int i =3D 0; i < adc_tm5->nchannels; i++) { + struct adc_tm5_gen3_channel_props *chan_prop =3D &adc_tm5->chan_props[i]; + int offset =3D chan_prop->tm_chan_index; + bool upper_set, lower_set; + + if (chan_prop->sdam_index !=3D sdam_index) + continue; + + upper_set =3D ((tm_status[0] & BIT(offset)) && chan_prop->high_thr_en); + lower_set =3D ((tm_status[1] & BIT(offset)) && chan_prop->low_thr_en); + + if (!(upper_set || lower_set)) + continue; + + thermal_zone_device_update(chan_prop->tzd, THERMAL_TRIP_VIOLATED); + } + + return IRQ_HANDLED; +} + +static int adc_tm5_gen3_get_temp(struct thermal_zone_device *tz, int *temp) +{ + struct adc_tm5_gen3_channel_props *prop =3D thermal_zone_device_priv(tz); + struct adc_tm5_gen3_chip *adc_tm5; + + if (!prop || !prop->chip) + return -EINVAL; + + adc_tm5 =3D prop->chip; + + return adc5_gen3_get_scaled_reading(adc_tm5->dev, &prop->common_props, te= mp); +} + +static int adc_tm5_gen3_disable_channel(struct adc_tm5_gen3_channel_props = *prop) +{ + struct adc_tm5_gen3_chip *adc_tm5 =3D prop->chip; + int ret; + u8 val; + + prop->high_thr_en =3D false; + prop->low_thr_en =3D false; + + ret =3D adc5_gen3_poll_wait_hs(adc_tm5->dev_data, prop->sdam_index); + if (ret) + return ret; + + val =3D BIT(prop->tm_chan_index); + ret =3D adc5_gen3_write(adc_tm5->dev_data, prop->sdam_index, + ADC5_GEN3_TM_HIGH_STS_CLR, &val, sizeof(val)); + if (ret) + return ret; + + ret =3D adc5_gen3_write(adc_tm5->dev_data, prop->sdam_index, + ADC5_GEN3_TM_LOW_STS_CLR, &val, sizeof(val)); + if (ret) + return ret; + + val =3D MEAS_INT_DISABLE; + ret =3D adc5_gen3_write(adc_tm5->dev_data, prop->sdam_index, + ADC5_GEN3_TIMER_SEL, &val, sizeof(val)); + if (ret) + return ret; + + /* To indicate there is an actual conversion request */ + val =3D ADC5_GEN3_CHAN_CONV_REQ | prop->tm_chan_index; + ret =3D adc5_gen3_write(adc_tm5->dev_data, prop->sdam_index, + ADC5_GEN3_PERPH_CH, &val, sizeof(val)); + if (ret) + return ret; + + val =3D ADC5_GEN3_CONV_REQ_REQ; + return adc5_gen3_write(adc_tm5->dev_data, prop->sdam_index, + ADC5_GEN3_CONV_REQ, &val, sizeof(val)); +} + +static int adc_tm5_gen3_configure(struct adc_tm5_gen3_channel_props *prop, + int low_temp, int high_temp) +{ + struct adc_tm5_gen3_chip *adc_tm5 =3D prop->chip; + u8 buf[ADC_TM5_GEN3_CONFIG_REGS]; + u8 conv_req; + u16 adc_code; + int ret; + + ret =3D adc5_gen3_poll_wait_hs(adc_tm5->dev_data, prop->sdam_index); + if (ret < 0) + return ret; + + ret =3D adc5_gen3_read(adc_tm5->dev_data, prop->sdam_index, + ADC5_GEN3_SID, buf, sizeof(buf)); + if (ret < 0) + return ret; + + /* Write SID */ + buf[0] =3D FIELD_PREP(ADC5_GEN3_SID_MASK, prop->common_props.sid); + + /* Select TM channel and indicate there is an actual conversion request */ + buf[1] =3D ADC5_GEN3_CHAN_CONV_REQ | prop->tm_chan_index; + + buf[2] =3D prop->timer; + + /* Digital param selection */ + adc5_gen3_update_dig_param(&prop->common_props, &buf[3]); + + /* Update fast average sample value */ + buf[4] =3D FIELD_PREP(ADC5_GEN3_FAST_AVG_CTL_SAMPLES_MASK, + prop->common_props.avg_samples) | ADC5_GEN3_FAST_AVG_CTL_EN; + + /* Select ADC channel */ + buf[5] =3D prop->common_props.channel; + + /* Select HW settle delay for channel */ + buf[6] =3D FIELD_PREP(ADC5_GEN3_HW_SETTLE_DELAY_MASK, + prop->common_props.hw_settle_time_us); + + buf[7] =3D 0; + + /* High temperature corresponds to low voltage threshold */ + prop->low_thr_en =3D (high_temp !=3D INT_MAX); + if (prop->low_thr_en) { + adc_code =3D qcom_adc_tm5_gen2_temp_res_scale(high_temp); + put_unaligned_le16(adc_code, &buf[8]); + buf[7] |=3D ADC5_GEN3_LOW_THR_INT_EN; + } + + /* Low temperature corresponds to high voltage threshold */ + prop->high_thr_en =3D (low_temp !=3D -INT_MAX); + if (prop->high_thr_en) { + adc_code =3D qcom_adc_tm5_gen2_temp_res_scale(low_temp); + put_unaligned_le16(adc_code, &buf[10]); + buf[7] |=3D ADC5_GEN3_HIGH_THR_INT_EN; + } + + ret =3D adc5_gen3_write(adc_tm5->dev_data, prop->sdam_index, ADC5_GEN3_SI= D, + buf, sizeof(buf)); + if (ret < 0) + return ret; + + conv_req =3D ADC5_GEN3_CONV_REQ_REQ; + return adc5_gen3_write(adc_tm5->dev_data, prop->sdam_index, + ADC5_GEN3_CONV_REQ, &conv_req, sizeof(conv_req)); +} + +static int adc_tm5_gen3_set_trip_temp(struct thermal_zone_device *tz, + int low_temp, int high_temp) +{ + struct adc_tm5_gen3_channel_props *prop =3D thermal_zone_device_priv(tz); + struct adc_tm5_gen3_chip *adc_tm5; + + if (!prop || !prop->chip) + return -EINVAL; + + adc_tm5 =3D prop->chip; + + dev_dbg(adc_tm5->dev, "channel:%s, low_temp(mdegC):%d, high_temp(mdegC):%= d\n", + prop->common_props.label, low_temp, high_temp); + + guard(adc5_gen3)(adc_tm5); + + return adc_tm5_gen3_configure(prop, low_temp, high_temp); +} + +static const struct thermal_zone_device_ops adc_tm_ops =3D { + .get_temp =3D adc_tm5_gen3_get_temp, + .set_trips =3D adc_tm5_gen3_set_trip_temp, +}; + +static int adc_tm5_register_tzd(struct adc_tm5_gen3_chip *adc_tm5) +{ + struct thermal_zone_device *tzd; + unsigned int channel; + int ret; + + for (int i =3D 0; i < adc_tm5->nchannels; i++) { + channel =3D ADC5_GEN3_V_CHAN(adc_tm5->chan_props[i].common_props); + tzd =3D devm_thermal_of_zone_register(adc_tm5->dev, channel, + &adc_tm5->chan_props[i], + &adc_tm_ops); + if (IS_ERR(tzd)) { + if (PTR_ERR(tzd) =3D=3D -ENODEV) { + dev_dbg(adc_tm5->dev, + "thermal sensor on channel %d is not used\n", + channel); + continue; + } + return PTR_ERR(tzd); + } + adc_tm5->chan_props[i].tzd =3D tzd; + ret =3D devm_thermal_add_hwmon_sysfs(adc_tm5->dev, tzd); + if (ret) + return ret; + } + + return 0; +} + +static void adc5_gen3_disable(void *data) +{ + struct adc_tm5_gen3_chip *adc_tm5 =3D data; + + guard(adc5_gen3)(adc_tm5); + + /* Disable all available TM channels */ + for (int i =3D 0; i < adc_tm5->nchannels; i++) + adc_tm5_gen3_disable_channel(&adc_tm5->chan_props[i]); +} + +static int adc_tm5_probe(struct auxiliary_device *aux_dev, + const struct auxiliary_device_id *id) +{ + struct adc_tm5_gen3_chip *adc_tm5; + struct tm5_aux_dev_wrapper *aux_dev_wrapper; + struct device *dev =3D &aux_dev->dev; + int ret; + + adc_tm5 =3D devm_kzalloc(dev, sizeof(*adc_tm5), GFP_KERNEL); + if (!adc_tm5) + return -ENOMEM; + + aux_dev_wrapper =3D container_of(aux_dev, struct tm5_aux_dev_wrapper, aux= _dev); + + adc_tm5->dev =3D dev; + adc_tm5->dev_data =3D aux_dev_wrapper->dev_data; + adc_tm5->nchannels =3D aux_dev_wrapper->n_tm_channels; + adc_tm5->chan_props =3D devm_kcalloc(dev, aux_dev_wrapper->n_tm_channels, + sizeof(*adc_tm5->chan_props), GFP_KERNEL); + if (!adc_tm5->chan_props) + return -ENOMEM; + + for (int i =3D 0; i < adc_tm5->nchannels; i++) { + /* + * Since the first channel of the first SDAM is reserved for + * immediate ADC conversions, TM channel count must start from + * the channel just after it. The variable tm_count is used to + * calculate SDAM and TM channel index on that SDAM correctly + * for each TM channel. + */ + int tm_count =3D i + 1; + + adc_tm5->chan_props[i].common_props =3D aux_dev_wrapper->tm_props[i]; + adc_tm5->chan_props[i].timer =3D MEAS_INT_1S; + adc_tm5->chan_props[i].sdam_index =3D tm_count / 8; + adc_tm5->chan_props[i].tm_chan_index =3D tm_count % 8; + adc_tm5->chan_props[i].chip =3D adc_tm5; + } + + /* + * ADC_TM channels are enabled in the loop in adc_tm5_register_tzd() as + * part of the set_trips calls during thermal zone registration. This + * action is to disable them all in case of probe failure. + */ + ret =3D devm_add_action(dev, adc5_gen3_disable, adc_tm5); + if (ret) + return ret; + + ret =3D adc_tm5_register_tzd(adc_tm5); + if (ret) + return ret; + + for (int i =3D 0; i < adc_tm5->dev_data->num_sdams; i++) { + u32 irq_flags =3D IRQF_ONESHOT; + + /* + * First SDAM's interrupt is shared between main ADC driver and + * auxiliary TM driver, so its flags must include IRQF_SHARED. + * This is not needed for other SDAMs as they will be used only + * for TM functionality. + */ + if (i =3D=3D 0) + irq_flags |=3D IRQF_SHARED; + + ret =3D devm_request_threaded_irq(dev, + adc_tm5->dev_data->base[i].irq, + adctm5_gen3_isr, + adctm5_gen3_isr_thread, + irq_flags, + adc_tm5->dev_data->base[i].irq_name, + adc_tm5); + if (ret < 0) + return ret; + } + + return 0; +} + +static const struct auxiliary_device_id adctm5_auxiliary_id_table[] =3D { + { .name =3D "qcom_spmi_adc5_gen3.adc5_tm_gen3" }, + { } +}; +MODULE_DEVICE_TABLE(auxiliary, adctm5_auxiliary_id_table); + +static struct auxiliary_driver adctm5gen3_auxiliary_driver =3D { + .id_table =3D adctm5_auxiliary_id_table, + .probe =3D adc_tm5_probe, +}; +module_auxiliary_driver(adctm5gen3_auxiliary_driver); + +MODULE_DESCRIPTION("SPMI PMIC Thermal Monitor ADC driver"); +MODULE_LICENSE("GPL"); +MODULE_IMPORT_NS("QCOM_SPMI_ADC5_GEN3"); --=20 2.43.0