From nobody Mon Feb 9 09:33:09 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD364359719 for ; Mon, 19 Jan 2026 12:08:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768824540; cv=none; b=ZNBEqa7oCt+7oNfP6NHzTVQpYce7GLg2d6MkynxRpPUlhbPMdl3kivmz2y+M1bHE0xXzmwZL57gJkm31T+BfFpCKTICMOLzxmuVN9eKNby/iwNYNiv2l8HRfsw9L2mCOHJBCbvJ/f90eKD3i+3dNjpCAREHuN+wu9nNu3YWlbkw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768824540; c=relaxed/simple; bh=pykdip+kkXufUlfCYLkhdMwhxg3VFd8rMtL8HJrLcEc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dx4YHDpzLdipfz1dPUKMKUnwzKLssSj9nRutBGOr7+qqf+zk4pRfb72FMdibwby5tZhd4lp7BAlOHmj5VImqcLZXV/LCDhVhgZagYJaSw9hLB68PDalDn487vGL1pl/bAid+7iOpppSzZ8m89/YDdiPYG8NsbdZjGMAmpaMIQcE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=xHXRgmFz; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="xHXRgmFz" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-432d28870ddso2281696f8f.3 for ; Mon, 19 Jan 2026 04:08:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768824535; x=1769429335; 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=3sT+McEH0mapvqHwCrxtH/EF4dLPev+0QCK1+TJXdyk=; b=xHXRgmFzETIZcWa5HE5EhJ5+64tJAbKQ1twr0y6aBerc+Q8BlfPEXBIuFX0+Ymjrdp UxShKe5lO0/H3Ywpx7CgUji4gE1uZptjSpklLZ0jfNSTUUtHvfoadlkcPk5utLg4WvXy ARqmyVZmz62hB+vF2R90WZa8LtXc3N2X0eKyfs3W3REKDKom1RSqVQxCwzsWBF3pvSbD XZnv4KzedK3tILV0LtQPHgN+Pm/egNWikLilPURTQi9tc9NeX2TGt3UkDuxWtFwaNqId 325DeLOS5MKKr/i9LoEjwrbYZFjAjmk16ujzKG5rzLpb6XBSA1DJnYzy0Y1XignAS2jw aKlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768824535; x=1769429335; 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=3sT+McEH0mapvqHwCrxtH/EF4dLPev+0QCK1+TJXdyk=; b=XjzNXYK6z/oYFWhPzeNz0FtIOo+xQrTHSjmFiRER74BnIkFDSt90e3f5H0dHMAiO3p bOTAoKIZaCfwWHgSZ4RfdJJiqzcAyYrU+v+GXOSLSzjHQlDIEicUT97xFxquTPBLRKYy WNb6YyxSNKAOAfNE8yoczbiEUeVInN5pUSyQAiR9j5rCDIF19eA6rjTkXKOTCSJ7oMl1 xOsQoZTAEvqRIm0XBdOtVIqlRg+DQ4ogdohVebv6lIznCmkLNf+wML1EIR7nJiqA3lp7 urVJ97+8ovDfXO409ziJHBr165JQFpmeBnFCw8KRw1YF3Dfwfjc9KGYyn6wH6W6uzBW8 q1ng== X-Forwarded-Encrypted: i=1; AJvYcCUFPtFD70obwsYr00LcgXkQJMM7O8alvuOZfidqK1YN4Udgqan3wXONm9ov0idTY63DsgpMUngR0FvIWcE=@vger.kernel.org X-Gm-Message-State: AOJu0YzghHk4XwomRG1dOJz721sJI3qjr1DP818nTfq0ZuPnOTyDeWHm M6xmYkswHDUBVLV+X5Hujn4e9X70evhiSfUhu7KHeVALgr+AIYF3HkGCiC44g0EmeGI= X-Gm-Gg: AZuq6aLq19G2WWI+rDPm0SMII484qUsU5NYZjoqHZlQBFeYjlNi4V3WeRyrtAPPJX1w lO6b0GmBHHTlDTLiInDhvYRKtMqymSpTqPpRFHcg+G871/BG+SpCLuHw0oUTeJXaTHq84n7cbUB dlsiUXcbVSRCbI0tNgW4dFd0VvCJgiDilGcZATlr3cqBFRvjkLhAx57iyr7jYNuYx1GfE/T9Xdp q87Rs9MibCTczuxABNJP+EpJdETG6bK9d+CTn0kCbDRA5D0MzTO9quRo9kAoYNiXJMSqSK4A9uU sY+XKak0O/uOBkQQQlGJgEUtXvQhhAWXJLnjsdbI5sLwQAEPGREI3PG6rSE4wQnESc5dfWLw4he NI1Yuo032GiQnVaz9++OnQjBvAb01o6PYC0/kAWnd+ZEl0eei0+G6bWsOZlSSTsH2lj521GMnHP masrMwneOEfvhgFQBg7/vBWF2P7CccY8+kfTP5fmRhDOz9LVOcthrYwuTISrbGoSA0/FwIRQ== X-Received: by 2002:a05:6000:2505:b0:432:5b81:49c with SMTP id ffacd0b85a97d-43569bd463bmr11645564f8f.55.1768824534827; Mon, 19 Jan 2026 04:08:54 -0800 (PST) Received: from ta2.c.googlers.com (164.102.240.35.bc.googleusercontent.com. [35.240.102.164]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356997e664sm20698421f8f.30.2026.01.19.04.08.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 04:08:54 -0800 (PST) From: Tudor Ambarus Date: Mon, 19 Jan 2026 12:08:49 +0000 Subject: [PATCH v2 3/7] firmware: samsung: acpm: Add devm_acpm_get_by_phandle helper 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: <20260119-acpm-tmu-v2-3-e02a834f04c6@linaro.org> References: <20260119-acpm-tmu-v2-0-e02a834f04c6@linaro.org> In-Reply-To: <20260119-acpm-tmu-v2-0-e02a834f04c6@linaro.org> To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krzysztof Kozlowski , Alim Akhtar , Bartlomiej Zolnierkiewicz , Kees Cook , "Gustavo A. R. Silva" , Peter Griffin , =?utf-8?q?Andr=C3=A9_Draszik?= Cc: willmcvicker@google.com, jyescas@google.com, shin.son@samsung.com, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-hardening@vger.kernel.org, Tudor Ambarus X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768824532; l=2702; i=tudor.ambarus@linaro.org; s=20241212; h=from:subject:message-id; bh=pykdip+kkXufUlfCYLkhdMwhxg3VFd8rMtL8HJrLcEc=; b=mq6tHfgFD5v+dBnv9e/9P/zH0n4O+kG2DeWw28a7k1Ie25bdm6byhx1O/Jsmir3D59rhSmRB2 PCtjiH30SmtCASeMud922mbZVmChdLaD2MzvcIIs6KDlOrDaN2jrrTO X-Developer-Key: i=tudor.ambarus@linaro.org; a=ed25519; pk=uQzE0NXo3dIjeowMTOPCpIiPHEz12IA/MbyzrZVh9WI= Introduce devm_acpm_get_by_phandle() to standardize how consumer drivers acquire a handle to the ACPM IPC interface. Enforce the use of the "samsung,acpm-ipc" property name across the SoC and simplify the boilerplate code in client drivers. Signed-off-by: Tudor Ambarus --- drivers/firmware/samsung/exynos-acpm.c | 23 ++++++++++++++++++= ++++ .../linux/firmware/samsung/exynos-acpm-protocol.h | 6 ++++++ 2 files changed, 29 insertions(+) diff --git a/drivers/firmware/samsung/exynos-acpm.c b/drivers/firmware/sams= ung/exynos-acpm.c index cc045370f4b0dc6ccea99e3c2d6f86a43b2e9671..cf849ba23f09d8b1e7f91734a0a= 1cc064f7407c7 100644 --- a/drivers/firmware/samsung/exynos-acpm.c +++ b/drivers/firmware/samsung/exynos-acpm.c @@ -776,6 +776,29 @@ const struct acpm_handle *devm_acpm_get_by_node(struct= device *dev, } EXPORT_SYMBOL_GPL(devm_acpm_get_by_node); =20 +/** + * devm_acpm_get_by_phandle - Resource managed lookup of the standardized + * "samsung,acpm-ipc" handle. + * @dev: consumer device + * + * Returns a pointer to the acpm_handle on success, or an ERR_PTR on failu= re. + */ +const struct acpm_handle *devm_acpm_get_by_phandle(struct device *dev) +{ + const struct acpm_handle *handle; + struct device_node *np; + + np =3D of_parse_phandle(dev->of_node, "samsung,acpm-ipc", 0); + if (!np) + return ERR_PTR(-ENODEV); + + handle =3D devm_acpm_get_by_node(dev, np); + of_node_put(np); + + return handle; +} +EXPORT_SYMBOL_GPL(devm_acpm_get_by_phandle); + static const struct acpm_match_data acpm_gs101 =3D { .initdata_base =3D ACPM_GS101_INITDATA_BASE, .acpm_clk_dev_name =3D "gs101-acpm-clk", diff --git a/include/linux/firmware/samsung/exynos-acpm-protocol.h b/includ= e/linux/firmware/samsung/exynos-acpm-protocol.h index 43d41e11ad2eb985e27a918ce3f9e9ac15a194ee..9485cdc1d91e86f9a9a8fc00722= f3313e3000c6a 100644 --- a/include/linux/firmware/samsung/exynos-acpm-protocol.h +++ b/include/linux/firmware/samsung/exynos-acpm-protocol.h @@ -82,6 +82,7 @@ struct device; #if IS_ENABLED(CONFIG_EXYNOS_ACPM_PROTOCOL) const struct acpm_handle *devm_acpm_get_by_node(struct device *dev, struct device_node *np); +const struct acpm_handle *devm_acpm_get_by_phandle(struct device *dev); #else =20 static inline const struct acpm_handle *devm_acpm_get_by_node(struct devic= e *dev, @@ -89,6 +90,11 @@ static inline const struct acpm_handle *devm_acpm_get_by= _node(struct device *dev { return NULL; } + +static inline const struct acpm_handle *devm_acpm_get_by_phandle(struct de= vice *dev) +{ + return NULL; +} #endif =20 #endif /* __EXYNOS_ACPM_PROTOCOL_H */ --=20 2.52.0.457.g6b5491de43-goog