From nobody Fri Dec 19 22:05:40 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 AFAF823BD13; Tue, 15 Apr 2025 19:51:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744746701; cv=none; b=QLPoqLFONdE/6PnnmSAt1j/v9aSfVYG9/tnhUmBaP5CGyfTxTqSmvfI90nA+xorYpOTf2kDkHgbqVs0e4sTi9mCMwVHQSRsNVSAD0XlUnYOgN8LsWPOGmUkZ/1iLTQOLWkXMABGHRv7UUSnk+m5s4a6gSj8ybHvJWGkNoVPThoM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744746701; c=relaxed/simple; bh=DPb4jzdxAMjcjV5wM7HRySNLR1rqs6le4rxdDv3XTTc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nDKx4+R6AJoAVtXRw6gHdVwDLNp3BODJWsplV2UWX0VCP5lJcB3Yx2iFhEY9ACF5a2pt/jneaTndBWrnedSQ0tx8VvU3WTjeSffVLtPwVbr/qz5OuqxukXp9sNC7vmNz+g9qEWmToIUNG8DT0AJ9r5PBIHzec/V1EqnfeBOtjr0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Od+8tPPm; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Od+8tPPm" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-43d04dc73b7so60381135e9.3; Tue, 15 Apr 2025 12:51:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744746698; x=1745351498; 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=TuMrUsCWur1ZWPl1E2LSe7o6WHdw9/Jq4KxswMsH3Fg=; b=Od+8tPPmQoaciMvdCz+TYi/HQIOuZvePEKe6Kti4qHuRf1igs2WMkQlUWYRF48Y059 96PagOJkQZjEwLUNTh4jPf5XczenfNew3FJXWlTCW22dJNmrHv6T6o8+ujc7EAUWLvyZ 15qUgEzCMszisxlGXN4jGeYM6hWHguMNCgYuApEBlABGJi0yp8YS2abAQX5aU55W01+x jMHeANyRQdAzJ/nLsoetKCbpkClyNL2nhqM3SzotbSC0I3jf63ZWQQrasRcWsC4ZmhWR C7VSpjiAFXe4juakOzaoJd2juxbFRCqYq/WjZYskp+oCv0ZvRhxbHh8qbH40Ah2hmLCb tKYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744746698; x=1745351498; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TuMrUsCWur1ZWPl1E2LSe7o6WHdw9/Jq4KxswMsH3Fg=; b=PEGvFVyUCXPuMjlb45i4fDe3mSQ6V9nq1Wf2g90tsGfxdPSb6LVRQv4YTSQabjk3Zm byD9ZJAztF16nqiDJ5OFs51jssnSozbTcZEvazMHX9tNdFAIaxiaXIaE9TB4+W5BuWIH TdUVHCvloPwA1uxz64cDybV5AfWNwFz2qqFSlftW4kp/U3cWKl61VwdZIFGXkPm93IF6 sSkVBCWPDV07GoZo4B9Z37anv1++ebGtVQKKGbiO6hJVk7ykfK9VS9MVpmP3cD9bRmeF T0TWhCY24UlVPrhYyi/MyKYkNHn5nYGAdXUtWEnoaOxXA1ZJchk/bZKqDMUDSx5m/ATx yD7A== X-Forwarded-Encrypted: i=1; AJvYcCVCenrFJ1wNNcOPiamxfjufTA8dSa3qv2eoturuVzHKW+oOiEpjmsOVA8aQijFpeRIY9F6eQxqrd+Q5@vger.kernel.org, AJvYcCWA9YakHcwQzMl5tbdAw8ZYgwzMaNNbywneOOUtW/TeRb7i2m0vfbXdYIlN0zf4CoqA6u0pZ6VCdjPsxh2W@vger.kernel.org X-Gm-Message-State: AOJu0YwaKylhrR6BoJfTEdKP19C8qYYNn9yl9KOERMESrb+QhmeWs7KN MYi2JFYtBIj7Wbjf9l9hqGznqagN2pTSaAsKJ9UA+9uC2nMg6w3I X-Gm-Gg: ASbGncvWNdnVmKquGQfhYu3Sx7Ex2VTt3fA/bC4CVMxPVc56dEi41CwWaz5gl2LX794 QCgh3dU6kwkXlMCqqd6ur+GoH4ucU9ZVqf+mTdsS3KDxVZ2aS0py3kRPzAJB/yTzXr9cbzrYLmi 9yQ0aNWpmKfjeqfPD5aP4IK3tzWMc7qXfkKwBaaaRC+MdCmp7oALDss5rrfGSjoAWHfDWt6kj8f W3sPmnOYApXkjdqpGwAeZX0BVu6SwsfYvv5UFVJmrFa+Cs9wrk8egEbunA1TM32zMuOMmuXJnN3 1+whzEhRkV9kcWkoNw6ChUBKMaMgzYxaNZgu0G0HAp5vFm7+Hn60eZPuKhPSpwDC X-Google-Smtp-Source: AGHT+IGTi/CZFzbQnYOhXnzcc9zZFSFRIIdAeOspdHxEXUz9C/NASYI9UsjGwUmyShuusC7Cg5z6hw== X-Received: by 2002:a05:600c:5494:b0:43c:fda5:41e9 with SMTP id 5b1f17b1804b1-4405a0d6659mr3383785e9.31.1744746697600; Tue, 15 Apr 2025 12:51:37 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:1883:aa4:a265:bc12]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4404451c67dsm14169335e9.3.2025.04.15.12.51.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Apr 2025 12:51:36 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Philipp Zabel , Geert Uytterhoeven , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Magnus Damm Cc: linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Prabhakar , Biju Das , Fabrizio Castro , Lad Prabhakar , Krzysztof Kozlowski Subject: [PATCH v5 1/3] dt-bindings: reset: Document RZ/V2H(P) USB2PHY reset Date: Tue, 15 Apr 2025 20:51:29 +0100 Message-ID: <20250415195131.281060-2-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250415195131.281060-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250415195131.281060-1-prabhakar.mahadev-lad.rj@bp.renesas.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 Content-Type: text/plain; charset="utf-8" From: Lad Prabhakar Add a device tree binding document for the Renesas RZ/V2H(P) USB2PHY reset controller. This block manages the reset and power-down of the USB 2.0 PHY, which is used in both host and function modes. Signed-off-by: Lad Prabhakar Reviewed-by: Krzysztof Kozlowski --- .../reset/renesas,rzv2h-usb2phy-reset.yaml | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/renesas,rzv2h-u= sb2phy-reset.yaml diff --git a/Documentation/devicetree/bindings/reset/renesas,rzv2h-usb2phy-= reset.yaml b/Documentation/devicetree/bindings/reset/renesas,rzv2h-usb2phy-= reset.yaml new file mode 100644 index 000000000000..c79f61c2373b --- /dev/null +++ b/Documentation/devicetree/bindings/reset/renesas,rzv2h-usb2phy-reset.y= aml @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/renesas,rzv2h-usb2phy-reset.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Renesas RZ/V2H(P) USB2PHY Port reset Control + +maintainers: + - Lad Prabhakar + +description: + The RZ/V2H(P) USB2PHY Control mainly controls Port reset and power down = of the + USB2.0 PHY. + +properties: + compatible: + const: renesas,r9a09g057-usb2phy-reset # RZ/V2H(P) + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + resets: + maxItems: 1 + + power-domains: + maxItems: 1 + + '#reset-cells': + const: 0 + +required: + - compatible + - reg + - clocks + - resets + - power-domains + - '#reset-cells' + +additionalProperties: false + +examples: + - | + #include + + reset-controller@15830000 { + compatible =3D "renesas,r9a09g057-usb2phy-reset"; + reg =3D <0x15830000 0x10000>; + clocks =3D <&cpg CPG_MOD 0xb6>; + resets =3D <&cpg 0xaf>; + power-domains =3D <&cpg>; + #reset-cells =3D <0>; + }; --=20 2.49.0 From nobody Fri Dec 19 22:05:40 2025 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 5C546255E39; Tue, 15 Apr 2025 19:51:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744746704; cv=none; b=cJ4FWtQNU6ojPBhymLpc0ay6eQJfz51uymDYcoWu8WM2q29Qqd3o8AFEj6YjZJXo9I06WX0s1wqV30p5FEWIuzB7QncBg87Zbu08w+tD78nB0gJ+lnHSIJfFOPeQ2wvFDKlsD3YPX7OUI9uDFT1KBtSgwiD7Sc+aOiuvwQ0063s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744746704; c=relaxed/simple; bh=XewMIWvw+OSCqxBs2HEwYzd38vDL9PHrApbs+J7UacI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZJvnT8eSjNKLhuQbfGkrHffU2gmiT/cQwppOCNVlcu9HPgQXJDEhg/A3UwOYISuskR+qi+CeWHBvzJx+iiCu+o26Bng2fyJP/7RONI0tBWZp2LJeJDXujKMOZiTgZAS3gemp2Qo2CeI885loJcKR2el4H4KxgVkMTRbif57umcU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ADNMYLgV; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ADNMYLgV" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-43cfba466b2so62662335e9.3; Tue, 15 Apr 2025 12:51:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744746699; x=1745351499; 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=uJVE7Wi4eP0vQp2LWsD/67qu5LVe/5oWYJYPf5aDop0=; b=ADNMYLgVmJB41WaiK/jJnBi6zU0JubVoMYyooXEQcmX0wBZxbtuvla/MPcsax6HrLB V7G2siX3AGv/hB/z4KRngD1dpqgAHzR4ZLpBUSnPT2Na0YgRpdiWnKjGm1T6oMu2GrdZ Fp1XfDuNo0R5AkFfkSHiQ+B39nH2uGdFPAVm2qWWSAxzSdD6pQlgTwu4irlKR4cHqJBD PIcOhqOBM9hCKNmn0oBOchjpzAJk1ui/Wl9UC5SvrfE+x8ejJasba7CbSXY2nFtOLFfL +rvtoFjbAFm50r9AycIpcBZ3+mZeS1tG9v2hiHYacBneDAOTWEgZFB0h2+8iiAB2klw2 FXDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744746699; x=1745351499; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uJVE7Wi4eP0vQp2LWsD/67qu5LVe/5oWYJYPf5aDop0=; b=d5Wp5uUqmujsdOj78397a5C0xdV50hL69yEFjfcJAgZz7RCHzXjA/9O+/bgveeKbnq /jg/smFlEVkJD/+ABpsjpCeFRdF5QXS7JzdNtp97V5SqWw5E8iSCaL8Gc47YpYcsRqHr YLg/GQdE350AmRutRys5gQD9dfwnbJBW2+TwW4fYFzGgd4sheK5R7eviHlamQ7JIBODE IhX6hEydHik7gem/2yEprwPIFhUVeX/4TsFn1prx2pZE3JAVIvfB7bRobjhYzJDswrGl xnyedR+VXngu20hKRr9wmOFPHLbRloNqfqwT8fcCFQFNbZE0o7nHn7C4dywxck8hMoEP FeXw== X-Forwarded-Encrypted: i=1; AJvYcCU2jHpjn1DtLVbisWPL5iWgnG8LaE8rzaUjZy4gjEN6bLue1B0cey+kTDeCPrCaWNVA5DajxEYEeWMMqad2@vger.kernel.org, AJvYcCWfV2O6Ge1ma2yxjbf4PHVMliDafNAnya6svOoBY4gnwWRj82orFClfp7yEs+TUIA8nGjHPbzJ7Flm5@vger.kernel.org X-Gm-Message-State: AOJu0Yzg4sLbN7bHkMNgBKDQaInGJxtPLnEoNkXU1JUDFVLVPTV60kVp cUKLmYbehf5IlHaMnoBm9QJRhFJi1GlSebXBUwGQqjKX/EKryWN6 X-Gm-Gg: ASbGncufhsDHqxZd1HxsV13mXafGO2gWiuq2wUu34CJjw8BRckGIRtqCjJ0ne3wC5Tk /Q0+aKpviOiTcE7UZH0bdPyNqIj9FGMOp/UFPVykgc14vrYFuBqD3Vj7JCsQAZzDV3fZUWjVTfS DNR9HAddDtmQVYjE0BCqEVdrY+5N7dMd/Em4uu0+y39wddJqU2fpIuGtOMrXBnH8MD+rPXyd2oA xpps5WsYUM6M+67nyTNpNr7RBiriEEbA7FHsovnnRfFyXLw2tH1wPkScIkXxE3MYFi1zsUIoSIR D7elk+n+9Nt1hQqF3TGa0r1/nCDzv+CkDCPAwjtxEujEBHBkGc4tsVSUbZg6+myk X-Google-Smtp-Source: AGHT+IHgw27dk53Q8h3eZVgn1ft0ojQ2vjJ6i8eDLwN63u6KhmSTopXU+TWCeinTuZxmWOhl9XESkA== X-Received: by 2002:a05:600c:1e27:b0:43c:fbe2:df3c with SMTP id 5b1f17b1804b1-4405a0fab42mr2774055e9.26.1744746699096; Tue, 15 Apr 2025 12:51:39 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:1883:aa4:a265:bc12]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4404451c67dsm14169335e9.3.2025.04.15.12.51.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Apr 2025 12:51:38 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Philipp Zabel , Geert Uytterhoeven , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Magnus Damm Cc: linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Prabhakar , Biju Das , Fabrizio Castro , Lad Prabhakar Subject: [PATCH v5 2/3] reset: Add USB2PHY port reset driver for Renesas RZ/V2H(P) Date: Tue, 15 Apr 2025 20:51:30 +0100 Message-ID: <20250415195131.281060-3-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250415195131.281060-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250415195131.281060-1-prabhakar.mahadev-lad.rj@bp.renesas.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 Content-Type: text/plain; charset="utf-8" From: Lad Prabhakar Implement a USB2PHY port reset driver for the Renesas RZ/V2H(P) SoC. Enable control of USB2.0 PHY reset and power-down operations, including assert and deassert functionalities for the PHY. Leverage device tree (OF) data to support future SoCs with similar USB2PHY hardware but varying register configurations. Define initialization values and control register settings to ensure flexibility for upcoming platforms. Signed-off-by: Lad Prabhakar Reviewed-by: Biju Das --- drivers/reset/Kconfig | 7 + drivers/reset/Makefile | 1 + drivers/reset/reset-rzv2h-usb2phy.c | 236 ++++++++++++++++++++++++++++ 3 files changed, 244 insertions(+) create mode 100644 drivers/reset/reset-rzv2h-usb2phy.c diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig index 11ce86c8156b..d85be5899da6 100644 --- a/drivers/reset/Kconfig +++ b/drivers/reset/Kconfig @@ -225,6 +225,13 @@ config RESET_RZG2L_USBPHY_CTRL Support for USBPHY Control found on RZ/G2L family. It mainly controls reset and power down of the USB/PHY. =20 +config RESET_RZV2H_USB2PHY + tristate "Renesas RZ/V2H(P) (and similar SoCs) USB2PHY Reset driver" + depends on ARCH_RENESAS || COMPILE_TEST + help + Support for USB2PHY Port reset Control found on the RZ/V2H(P) SoC + (and similar SoCs). + config RESET_SCMI tristate "Reset driver controlled via ARM SCMI interface" depends on ARM_SCMI_PROTOCOL || COMPILE_TEST diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile index 6322a191e2a8..91e6348e3351 100644 --- a/drivers/reset/Makefile +++ b/drivers/reset/Makefile @@ -31,6 +31,7 @@ obj-$(CONFIG_RESET_QCOM_AOSS) +=3D reset-qcom-aoss.o obj-$(CONFIG_RESET_QCOM_PDC) +=3D reset-qcom-pdc.o obj-$(CONFIG_RESET_RASPBERRYPI) +=3D reset-raspberrypi.o obj-$(CONFIG_RESET_RZG2L_USBPHY_CTRL) +=3D reset-rzg2l-usbphy-ctrl.o +obj-$(CONFIG_RESET_RZV2H_USB2PHY) +=3D reset-rzv2h-usb2phy.o obj-$(CONFIG_RESET_SCMI) +=3D reset-scmi.o obj-$(CONFIG_RESET_SIMPLE) +=3D reset-simple.o obj-$(CONFIG_RESET_SOCFPGA) +=3D reset-socfpga.o diff --git a/drivers/reset/reset-rzv2h-usb2phy.c b/drivers/reset/reset-rzv2= h-usb2phy.c new file mode 100644 index 000000000000..ae643575b067 --- /dev/null +++ b/drivers/reset/reset-rzv2h-usb2phy.c @@ -0,0 +1,236 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Renesas RZ/V2H(P) USB2PHY Port reset control driver + * + * Copyright (C) 2025 Renesas Electronics Corporation + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct rzv2h_usb2phy_regval { + u16 reg; + u16 val; +}; + +struct rzv2h_usb2phy_reset_of_data { + const struct rzv2h_usb2phy_regval *init_vals; + unsigned int init_val_count; + + u16 reset_reg; + u16 reset_assert_val; + u16 reset_deassert_val; + u16 reset_status_bits; + u16 reset_release_val; + + u16 reset2_reg; + u16 reset2_acquire_val; + u16 reset2_release_val; +}; + +struct rzv2h_usb2phy_reset_priv { + const struct rzv2h_usb2phy_reset_of_data *data; + void __iomem *base; + struct device *dev; + struct reset_controller_dev rcdev; + spinlock_t lock; /* protects register accesses */ +}; + +static inline struct rzv2h_usb2phy_reset_priv +*rzv2h_usbphy_rcdev_to_priv(struct reset_controller_dev *rcdev) +{ + return container_of(rcdev, struct rzv2h_usb2phy_reset_priv, rcdev); +} + +/* This function must be called only after pm_runtime_resume_and_get() has= been called */ +static void rzv2h_usbphy_assert_helper(struct rzv2h_usb2phy_reset_priv *pr= iv) +{ + const struct rzv2h_usb2phy_reset_of_data *data =3D priv->data; + + scoped_guard(spinlock, &priv->lock) { + writel(data->reset2_acquire_val, priv->base + data->reset2_reg); + writel(data->reset_assert_val, priv->base + data->reset_reg); + } + + usleep_range(11, 20); +} + +static int rzv2h_usbphy_reset_assert(struct reset_controller_dev *rcdev, + unsigned long id) +{ + struct rzv2h_usb2phy_reset_priv *priv =3D rzv2h_usbphy_rcdev_to_priv(rcde= v); + struct device *dev =3D priv->dev; + int ret; + + ret =3D pm_runtime_resume_and_get(dev); + if (ret) { + dev_err(dev, "pm_runtime_resume_and_get failed\n"); + return ret; + } + + rzv2h_usbphy_assert_helper(priv); + + pm_runtime_put(dev); + + return 0; +} + +static int rzv2h_usbphy_reset_deassert(struct reset_controller_dev *rcdev, + unsigned long id) +{ + struct rzv2h_usb2phy_reset_priv *priv =3D rzv2h_usbphy_rcdev_to_priv(rcde= v); + const struct rzv2h_usb2phy_reset_of_data *data =3D priv->data; + struct device *dev =3D priv->dev; + int ret; + + ret =3D pm_runtime_resume_and_get(dev); + if (ret) { + dev_err(dev, "pm_runtime_resume_and_get failed\n"); + return ret; + } + + scoped_guard(spinlock, &priv->lock) { + writel(data->reset_deassert_val, priv->base + data->reset_reg); + writel(data->reset2_release_val, priv->base + data->reset2_reg); + writel(data->reset_release_val, priv->base + data->reset_reg); + } + + pm_runtime_put(dev); + + return 0; +} + +static int rzv2h_usbphy_reset_status(struct reset_controller_dev *rcdev, + unsigned long id) +{ + struct rzv2h_usb2phy_reset_priv *priv =3D rzv2h_usbphy_rcdev_to_priv(rcde= v); + struct device *dev =3D priv->dev; + int ret; + u32 reg; + + ret =3D pm_runtime_resume_and_get(dev); + if (ret) { + dev_err(dev, "pm_runtime_resume_and_get failed\n"); + return ret; + } + + reg =3D readl(priv->base + priv->data->reset_reg); + + pm_runtime_put(dev); + + return (reg & priv->data->reset_status_bits) =3D=3D priv->data->reset_sta= tus_bits; +} + +static const struct reset_control_ops rzv2h_usbphy_reset_ops =3D { + .assert =3D rzv2h_usbphy_reset_assert, + .deassert =3D rzv2h_usbphy_reset_deassert, + .status =3D rzv2h_usbphy_reset_status, +}; + +static int rzv2h_usb2phy_reset_of_xlate(struct reset_controller_dev *rcdev, + const struct of_phandle_args *reset_spec) +{ + /* No special handling needed, we have only one reset line per device */ + return 0; +} + +static int rzv2h_usb2phy_reset_probe(struct platform_device *pdev) +{ + const struct rzv2h_usb2phy_reset_of_data *data; + struct rzv2h_usb2phy_reset_priv *priv; + struct device *dev =3D &pdev->dev; + struct reset_control *rstc; + int error; + + priv =3D devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + data =3D of_device_get_match_data(dev); + priv->data =3D data; + priv->dev =3D dev; + priv->base =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(priv->base)) + return PTR_ERR(priv->base); + + rstc =3D devm_reset_control_get_shared_deasserted(dev, NULL); + if (IS_ERR(rstc)) + return dev_err_probe(dev, PTR_ERR(rstc), + "failed to get deasserted reset\n"); + + spin_lock_init(&priv->lock); + + error =3D devm_pm_runtime_enable(dev); + if (error) + return dev_err_probe(dev, error, "Failed to enable pm_runtime\n"); + + error =3D pm_runtime_resume_and_get(dev); + if (error) + return dev_err_probe(dev, error, "pm_runtime_resume_and_get failed\n"); + + for (unsigned int i =3D 0; i < data->init_val_count; i++) + writel(data->init_vals[i].val, priv->base + data->init_vals[i].reg); + + /* keep usb2phy in asserted state */ + rzv2h_usbphy_assert_helper(priv); + + pm_runtime_put(dev); + + priv->rcdev.ops =3D &rzv2h_usbphy_reset_ops; + priv->rcdev.of_reset_n_cells =3D 0; + priv->rcdev.nr_resets =3D 1; + priv->rcdev.of_xlate =3D rzv2h_usb2phy_reset_of_xlate; + priv->rcdev.of_node =3D dev->of_node; + priv->rcdev.dev =3D dev; + + return devm_reset_controller_register(dev, &priv->rcdev); +} + +/* + * initialization values required to prepare the PHY to receive + * assert and deassert requests. + */ +static const struct rzv2h_usb2phy_regval rzv2h_init_vals[] =3D { + { .reg =3D 0xc10, .val =3D 0x67c }, + { .reg =3D 0xc14, .val =3D 0x1f }, + { .reg =3D 0x600, .val =3D 0x909 }, +}; + +static const struct rzv2h_usb2phy_reset_of_data rzv2h_reset_of_data =3D { + .init_vals =3D rzv2h_init_vals, + .init_val_count =3D ARRAY_SIZE(rzv2h_init_vals), + .reset_reg =3D 0, + .reset_assert_val =3D 0x206, + .reset_status_bits =3D BIT(2), + .reset_deassert_val =3D 0x200, + .reset_release_val =3D 0x0, + .reset2_reg =3D 0xb04, + .reset2_acquire_val =3D 0x303, + .reset2_release_val =3D 0x3, +}; + +static const struct of_device_id rzv2h_usb2phy_reset_of_match[] =3D { + { .compatible =3D "renesas,r9a09g057-usb2phy-reset", .data =3D &rzv2h_res= et_of_data }, + { /* Sentinel */ } +}; +MODULE_DEVICE_TABLE(of, rzv2h_usb2phy_reset_of_match); + +static struct platform_driver rzv2h_usb2phy_reset_driver =3D { + .driver =3D { + .name =3D "rzv2h_usb2phy_reset", + .of_match_table =3D rzv2h_usb2phy_reset_of_match, + }, + .probe =3D rzv2h_usb2phy_reset_probe, +}; +module_platform_driver(rzv2h_usb2phy_reset_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Lad Prabhakar "); +MODULE_DESCRIPTION("Renesas RZ/V2H(P) USB2PHY Control"); --=20 2.49.0 From nobody Fri Dec 19 22:05:40 2025 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 E2C052550DE; Tue, 15 Apr 2025 19:51:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744746705; cv=none; b=an/IjJC3WjODFd2mqI+IJKSLnQYT1FLVAozDqSwnU7xYe04PSNSrVHFeSqqnG/yFajP2a4rjtnQ8kXqEjMmHurTVx61b3dVcT4gJ/A5apbhHORGVWUB4n4Kh7FOE7lNvvstejEnLWGkhjctbsuZ7SxMJGHtVJQ3kO9K65eO1afI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744746705; c=relaxed/simple; bh=slZmxp++QhIB/d1vWbc5Di4/dmlQ7NU7kBrPsD0giv8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=p5cQgosYNMpPOAZiKXRawSuu+XdDs0xNf+P7SkKLccm7x/E2nz8rcTtY5vjJHAyJPr6MaH74RWl2Bu93Ki8oRFqoIQ5EOdKYkCtlMVKMgoESaRHbGqwrNQGSlN8tY8a24GyzGc3ARaz5KldE3Ga8QwqQKGKuchoJaC0tA04n2jM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hbhJS7k3; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hbhJS7k3" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-43d0618746bso47124435e9.2; Tue, 15 Apr 2025 12:51:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744746701; x=1745351501; 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=NQPAcNlalkLy8oJ9CIcK6WyWW0X8sA33xHew3+Clh4E=; b=hbhJS7k33FfOoVDY7ACb8jK7QRxHaplKZ7kdL7uIsYWXeUPLRLPw9mPDinaCb0j1W7 GbKbgfQmWVHJwMAu62ln81beGCZQ+KmhQejrqIeo+5VgBXQCZIrELJL12aWKBj+tL4mK y2mabz2XbkkbxW4NWaDNjQMqhYHO6ebnhH0kZkJejQaWl6GvMazthikyT5ri3veLgtvf 7GzpwJVfD2t5Ow1kHyKsCrUdy+pNAjmoO9GQX/UFj4iVM4V+zpXcHf5yf7h9LcBBCD+c 6Bf3VXxG3ewte0fOZurw0bSKffMhtQJWTYDNfu+ze/8sPRTTlxWIYrmi57XUAnobWeLw 8BQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744746701; x=1745351501; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NQPAcNlalkLy8oJ9CIcK6WyWW0X8sA33xHew3+Clh4E=; b=AXSBQwH54bVNaTEiDu5bEcNj6i/p+tl4kneu0K0bignwVXC3QMUU6BPQOAHaI8b81H FAZ6JbnPDGkfuF3aKuYkN/g+Wkq+bU6fc+JGZWUvlBW/yoVRO4aGzsYVkNahCnCrdbFs kvd4m7+V4N+nY67ticVjZCElZEGFfRZDrgDmz2/F2Kh1HxbNmu/2HFLICrw6KByEcv6B 04caObgokYvIFE/CLHzwSVIhMHseThi+RrySEfJC4k0AYqOf97IsaZ/bQoGp7Yp6IKbf lnmh4HaQAl3z+N15zcPHLaPacXra2WkgzuA2315SDm0HZnKndZgy8kT1zxQO5hDPvnwi LyAQ== X-Forwarded-Encrypted: i=1; AJvYcCUZpfrq4qWNBfGomg/81qqpUloo9oeiRNnG/talR7QICV9ojmpWsDUXWwHE34QGNdncRfyxjm6e+5sn@vger.kernel.org, AJvYcCVIMXr1KUGeeTIyT0hyGsw2gxEB8QSQ/mtKPm7uNZBhy0Auwzn56zbEW1WxAyhwd9aQsYA4EN5dyV2wGnCy@vger.kernel.org X-Gm-Message-State: AOJu0YxGn2kBBcoos4w3ZVHI6tJmMjCgpovXNQYLiK0InxSzrJ8vdxww lALhaf2tv9c/NbJ563aUCei4G9dOuFl3icY/PWwflD8gVZKSqmK9 X-Gm-Gg: ASbGncvRiAWL10dTswiaWljS63RzzmWDAH4IOeVpuzpq5NEJPFfSOiZwhMXgcwslLbb /V87oz/G4PKbopWi7Mz/UkYaHBayqoylTxhvyRiMrat4k70rIbJOMGtbArrjHkDhB28KEY6z87W +mSuNHEF1c4ZEQ09NboCWgaIqTUR8cutOaU96i6f7uY8Z+rw4/p6B72iFdgVExrU9buj7GxFpOr M7zXZs8DpaKd+87r+ovFmVxGPj4pDI/BHO/rUAVmoDBsAQypxKQ6Bn59IkW0cYblSDpO51TAYyv aWBuSkfjpQeiDKZfL6uxm1b7RtIpI94GKcnrG/0lbwyF5wlyntB4mG4elY99UnXO X-Google-Smtp-Source: AGHT+IE4rAkHboQ7//hlbqk4UZSW6zTq1/RUlX9NCL5z1569iJqvd/G+oaZH/PDtiCoKzjHRBjKUVA== X-Received: by 2002:a05:600c:1c88:b0:43c:f597:d584 with SMTP id 5b1f17b1804b1-4405a104ba9mr2691095e9.29.1744746700723; Tue, 15 Apr 2025 12:51:40 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:1883:aa4:a265:bc12]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4404451c67dsm14169335e9.3.2025.04.15.12.51.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Apr 2025 12:51:39 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Philipp Zabel , Geert Uytterhoeven , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Magnus Damm Cc: linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Prabhakar , Biju Das , Fabrizio Castro , Lad Prabhakar Subject: [PATCH v5 3/3] MAINTAINERS: Add entry for Renesas RZ/V2H(P) USB2PHY Port Reset driver Date: Tue, 15 Apr 2025 20:51:31 +0100 Message-ID: <20250415195131.281060-4-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250415195131.281060-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250415195131.281060-1-prabhakar.mahadev-lad.rj@bp.renesas.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 Content-Type: text/plain; charset="utf-8" From: Lad Prabhakar Add a new MAINTAINERS entry for the Renesas RZ/V2H(P) USB2PHY Port Reset driver. Signed-off-by: Lad Prabhakar --- MAINTAINERS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index b5acf50fc6af..a8d8eabf9ecf 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20684,6 +20684,14 @@ S: Maintained F: Documentation/devicetree/bindings/usb/renesas,rzn1-usbf.yaml F: drivers/usb/gadget/udc/renesas_usbf.c =20 +RENESAS RZ/V2H(P) USB2PHY PORT RESET DRIVER +M: Fabrizio Castro +M: Lad Prabhakar +L: linux-renesas-soc@vger.kernel.org +S: Supported +F: Documentation/devicetree/bindings/reset/renesas,rzv2h-usb2phy-reset.yaml +F: drivers/reset/reset-rzv2h-usb2phy.c + RENESAS RZ/V2M I2C DRIVER M: Fabrizio Castro L: linux-i2c@vger.kernel.org --=20 2.49.0