From nobody Sun Oct 5 03:38:25 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 0409E1B2186; Fri, 8 Aug 2025 21:52:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689941; cv=none; b=IXigPa0k/TRqpP1RE4tWSddsULSg5E9kPRh10DFgovDCzQqtvI2jdyTVEVMhXYEyfRm25lhRmcQoTva06+bIjrbTIY1NNiWdW/0gwCYyBi9qHS1/Ggp+hlpj6t1b9udIG9j8Gjp5jsSBVDbaWqg0P0kKwEsBXXVUPUF4H4217bQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689941; c=relaxed/simple; bh=OKamttH+kFbLNMDEkG7nHwdBxfowlH1gYrLiVdpzKM8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qDdr5HqOLruxirmO4vbrS2MMpHKc2HWCypeVFmjSyZ4dqiB15SlX9e4nMdjXcxrJoG3Yr0Q79JdXP4b1tQC78v7GDhlfFfiKqPF/WJ6W9yha3rkXzM1XrEYljKOl9KMQ1nrq2cwXUbjp35+4o1TUViGHj7czsu/U5ckgosw4W8I= 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=f8qhwcZX; arc=none smtp.client-ip=209.85.128.50 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="f8qhwcZX" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-45994a72356so19999275e9.0; Fri, 08 Aug 2025 14:52:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754689936; x=1755294736; 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=s+fXikZUZkaaLPmFsKD7HSeeldtesS2bPwhKabpIbz0=; b=f8qhwcZXJCgUusOxN99VYpneoBSePSrBZGKfP5bnt3yX3NvfcLalZIFjAcYjDGxI+O KFaI6qPrycWm7NVMTlUd+SiXskFpbz4WLcuS/NgWLCoUqEippBEQ+rq8kB3VbXAEGwM7 heIO3l5vIYdj3KQjMnXsRoE9lvbK9sD5lsXmyBqKyEf7c1dq48tkkXtyBkrFAVlvfL5M HyNuL7E9gbRTrp1+RHt1weBkxy5VMQ2vWquHwyq0ZEA2T6Z02o2Fqc6SsheUsNkUdlkd CFrsHH7Ep8dSRBWl//gjGJcaxkhUV3lAEEnVVT3gBAJ6qHIvmV93ltpn6Ooawef4Z/tM aefw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754689936; x=1755294736; 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=s+fXikZUZkaaLPmFsKD7HSeeldtesS2bPwhKabpIbz0=; b=rUc0CndvTe7pU6+wHhlOoUgDclEMWQa8oT63llJOYgm01CVFVj2ycL24+Tol7pFgHZ 90p4DiT3Pk9nDBDhnkom/HXhZp03QCOAvQuq6hvn7x4Fu90HEVve56vLSOudWiRUOE1A H6uwRZTcnA7LnCkgmqkSqKSc89jN6mnsdA5ozakYWMJmDuyJguP6XDbGwB7Pw6jugPXm edD9dtGnCogxuXmLV5pS2UuREu620Ry//GIVBN8BoeVseRCZugqvcH3rgNUTtvZ2B0Pw dd4P2oEzgPYJ9V08WGmNf96NRPySc5HfXORHvB1+QwcU+h3U+OjRQkLoqYw/zH3me3TW NALg== X-Forwarded-Encrypted: i=1; AJvYcCV6CV7A6ENHPGYsv3daoRhPPSnDOtrftS/xbDK5qFjN1OsRCcFepvA8E+RbHKH1V3c8iX4cCNrAeBspqcVTVn54BuQ=@vger.kernel.org, AJvYcCVNLrBEgU3hS7iy+Yki3fDc0VOhzXSXVZFNMfmG1fN7s4nqUVUXMeogdQZFVINYfZ/up96JaztStZNh@vger.kernel.org, AJvYcCWaHPMDReQAdDBA+s+4i5AzvGKct6TX8vodI6vXL9E5NXCWHvE3OL9c9FYm6cxx3iECppa2i9z7RZS/7XE+@vger.kernel.org X-Gm-Message-State: AOJu0YzrSdctH4r9/39KEYju2uLsOsS+ZTnhdCXMcYShmD6RLb+ecB1n 6ZRIQIx5NA00xAYMzgcVbygHNQ+uKzs6/C2/fUVQfhsyxpjYLVvXc0Ku X-Gm-Gg: ASbGncvIlZhD+WNoEN14GxiaJ7kf/36Qe3Se+cULzfFWEiy0nma0MQuQ0frbYRwM/TK ZFdaOiwRbbQKI2JMVZznHQRWJVTkXYX/VlN3FLrSCCKVu13JHAizaMI3zCqwX+DiLSr++Sdn5QF HPK0mJLArshLEWhNIRkFmHr/pQgKjzShNx3DrSdp1eh1UKBEJPH3HkkjjMJCxlOGHG0oN5g41Bo FRJtn0pFvnn6pkSaV7OIT9fBiBbykQ0XxJZ21QIAzm/vXyPVi6rbo2KfMwDyuf8j6L//xUMCj8J OXzmm/RJ1IPYAueq8oTNEWYr5JlKMpTo63XPntykuTe4b+Z8txI6ca1d3DzMsKUk1CYi3pwce7P bu4qXRhcctX5Hohm7o/DDyMmAHaZ+PmmNmpcd+N1/vV+TUEVqVw5+Znhq22JoElTtHicrTDyI8V JAuNGyGXg= X-Google-Smtp-Source: AGHT+IGZxYPfZ8f3OOb3dfhUOyySNqL5+mV0PRRqjPLBZBpsNMy6HBq87hUeVascfeL1LTmbENPgmw== X-Received: by 2002:a05:600c:1d19:b0:458:b8b0:6338 with SMTP id 5b1f17b1804b1-459f51bdc4dmr39764275e9.6.1754689936127; Fri, 08 Aug 2025 14:52:16 -0700 (PDT) Received: from iku.example.org (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b8ff860acbsm5326759f8f.51.2025.08.08.14.52.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 14:52:15 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yoshihiro Shimoda , Geert Uytterhoeven , Magnus Damm , Neil Armstrong Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Fabrizio Castro , Lad Prabhakar , Conor Dooley Subject: [PATCH v2 1/5] dt-bindings: phy: renesas,usb2-phy: Add RZ/T2H and RZ/N2H support Date: Fri, 8 Aug 2025 22:52:05 +0100 Message-ID: <20250808215209.3692744-2-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250808215209.3692744-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250808215209.3692744-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 Document the USB2 PHY controller for the Renesas RZ/T2H (r9a09g077) and RZ/N2H (r9a09g087) SoCs. These SoCs share the same PHY block, which is similar to the one on RZ/G2L but differs in clocks, resets, and register bits. To account for these differences, a new compatible string `renesas,usb2-phy-r9a09g077` is introduced. The RZ/N2H SoC uses the same PHY as RZ/T2H, so it reuses the RZ/T2H compatible string as a fallback. Signed-off-by: Lad Prabhakar Acked-by: Conor Dooley Reviewed-by: Geert Uytterhoeven --- v1->v2: - Added Acked-by from Conor. --- .../bindings/phy/renesas,usb2-phy.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Documentation/devicetree/bindings/phy/renesas,usb2-phy.yaml b/= Documentation/devicetree/bindings/phy/renesas,usb2-phy.yaml index f45c5f039ae8..179cb4bfc424 100644 --- a/Documentation/devicetree/bindings/phy/renesas,usb2-phy.yaml +++ b/Documentation/devicetree/bindings/phy/renesas,usb2-phy.yaml @@ -44,6 +44,12 @@ properties: - const: renesas,usb2-phy-r9a09g056 # RZ/V2N - const: renesas,usb2-phy-r9a09g057 =20 + - const: renesas,usb2-phy-r9a09g077 # RZ/T2H + + - items: + - const: renesas,usb2-phy-r9a09g087 # RZ/N2H + - const: renesas,usb2-phy-r9a09g077 + reg: maxItems: 1 =20 @@ -120,6 +126,17 @@ allOf: required: - resets =20 + - if: + properties: + compatible: + contains: + const: renesas,usb2-phy-r9a09g077 + then: + properties: + clocks: + minItems: 2 + resets: false + additionalProperties: false =20 examples: --=20 2.50.1 From nobody Sun Oct 5 03:38:25 2025 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 2BB1128982E; Fri, 8 Aug 2025 21:52:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689943; cv=none; b=u23VVSY/G2yIyCgIKZZzdxKjnQZG4EWoGqq6XKHIzLzjWVYqGyNlBIlgMW3DnaYUrSjb0Zj9gVj5sfbUvftdtT+ncM2Mw0xVhZyV7DRWIye209K+epoZ7rQYz2Oz28QawkPWspk5CkofO4JVlLBoJ3DFEi1sGu3Wz1HZSbIyHYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689943; c=relaxed/simple; bh=REXGt5D3mJoURH0SpSfXpzczNu/MGdZm45OZr/3rCfg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PK3gVT6+Dik55sbg7zFrCMuD8LBXEOswgDQVRDPrLg59Z9PRz6TCaJgTxUdqhUzUvNZksBOmHRPa9yQ4HHZ9rKnCayuMuGcmZeIgRQkVz4/khQd5uwkMel/nPRymHoaLrrMCC80gdDODi/7KWFcBn7w/cw6p0cjlNgfym6qV6Mg= 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=FqgIKLMr; arc=none smtp.client-ip=209.85.221.49 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="FqgIKLMr" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-3b7910123a0so2272441f8f.1; Fri, 08 Aug 2025 14:52:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754689937; x=1755294737; 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=17s9GNw67zEnQfKHaORcRfpjJfC82IfymgU9DuBPbGA=; b=FqgIKLMrev/hgYnAP59fFOYf51E2sOZdN/zkQ+cNK5AIvnqbQMFQTQSCuGYh6K7UDB YKAQP3lO2gsG0pbbk6jyIbSz1l5GT59E0+bSxCvDmi3gzUIl1znc8EbzLTfzY4daXe1p 2q5FvezLNqTNPzAtb7KpCkU2N40Z4PAbOP0DZYRdbEVAem+QBTPJx6Jb8qlrFDbjm81M WePLh3btLldaTh8Wxv3mzA4VTXZ9Ll21S8KuEeMDEc3AGJKcEcdSVdwcLevAqY+QKNrX jFw9IWRXY4gBrc7pqcljDrBOfx0xUbaaGf8ARO4iwh8Jrm/0eWgtTfM2KBVLl3xRo+rm GhgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754689937; x=1755294737; 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=17s9GNw67zEnQfKHaORcRfpjJfC82IfymgU9DuBPbGA=; b=eplAe8JK0vLYTRNFHcHL30lLWrWIxyQ/N4vHdm3Wton63qox0oxhaHIoQePs77r3P9 RMv0TyNuiFW8DxrKovAbvGjkpuNoq3Tjd5p8V4mXfHbQX5q7Kp5jd3eqxhU6fHWWLXnd EjvMXFQ8greC85LE1je01u+8Jg+79w0XT2mQrQUIikmHXO+fghUnH5KwCbrd9yh+mLve 8iSG0jsq9bDwjlZUfpaSQ3Vrdkp1j1RMtcCV7OxxPTX9umcCsqIKmjxJYbFn5/kkt39T 9rAqOtLP/7qcqEVAOH96kuTOSKHipFGoFd4PpR3V5A9kcldnzTySDKz5yS2Srfre6l2E g73g== X-Forwarded-Encrypted: i=1; AJvYcCVYcoSMBH4BDnHrmqW9KYgMFM18ieWyu6o/PQDJjJ9KCHEWVIUo42QByQEr1pQ/xd3cBsr+1frYj8H2@vger.kernel.org, AJvYcCWDTovSTYWbuJd4sWzAWgSH7ZHU7Q7Kp7qxLANjV/7RYrds4rOWIvT4em8/Mu2ovyDWt2ERQCv46sw5qLft@vger.kernel.org, AJvYcCXatevYsd4O7U4odHyD39mLns619YKC5csfXJR/ZIU9nZ8Smu7aTibRvkAChR8FDjIpUZVrfr2MYh2k5FKD/TRv7eI=@vger.kernel.org X-Gm-Message-State: AOJu0YyghsUE8j8EgwRpc8BW6mKoph+bbgzEv6YgulgzB77LyWyfHkLS 0yGcHHn9QdMPeMWhfZr0lRNLNRTcn7i9jJkQdDRe7Y7NDOCjkub1hZtOxrUiIqc3 X-Gm-Gg: ASbGncvwbNCovu+35+V9LqW9feylQvuJrGUdZGQCqnxxdTCee1oow3uXww8+/4GoPf5 dOumVyNZb/IzNhHP2laef9Ud67JsD+RyzqXgt/sCHIXqvVEwz9D4QeYIf8RdGXYjSgcF+6tE7mL LU8+trdFGTN99r+lNMaCCihisOucAIee0ciLWLttFAtICywi0kcGT6/TBv1RqwaNJ2RL7gmGWj9 3eVtCSzw+lDRZoRq5/Oq7IQ5sFbab5vJgv0oGIB0QiD+BcZjoz/vBLcyiIMGVnced9MkK4jZg1d UnfN6vo7uKwVD+os17nJ5JpjvcULDfLeQ/tvowFmRQH1oRGuxZILO0nDUsfwR1PLGmce2QZ/gcA k5qsBjdxhr8ak9uscnOW6Bzs9sNHUnho95bvMRjVlEMgNqIjtwOBpxKhKQPHxyrjpF5tCRfsG8i P3efoCf6Q= X-Google-Smtp-Source: AGHT+IE+GOceRSOAfa45BZqMkJ6Avuh4YRmhkqoYYcxW3cITtpq11lpt+MxCKB09CYAOA9oejvOCMQ== X-Received: by 2002:adf:fc87:0:b0:3b7:9aff:db60 with SMTP id ffacd0b85a97d-3b900b4bcccmr2961520f8f.10.1754689937375; Fri, 08 Aug 2025 14:52:17 -0700 (PDT) Received: from iku.example.org (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b8ff860acbsm5326759f8f.51.2025.08.08.14.52.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 14:52:16 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yoshihiro Shimoda , Geert Uytterhoeven , Magnus Damm , Neil Armstrong Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Fabrizio Castro , Lad Prabhakar Subject: [PATCH v2 2/5] phy: renesas: rcar-gen3-usb2: store drvdata pointer in channel Date: Fri, 8 Aug 2025 22:52:06 +0100 Message-ID: <20250808215209.3692744-3-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250808215209.3692744-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250808215209.3692744-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 Store the SoC-specific driver data pointer (struct rcar_gen3_phy_drv_data) directly in struct rcar_gen3_chan instead of copying individual flags into separate channel members. Obtain the drvdata with of_device_get_match_data() in probe and assign it to channel->phy_data. Update all call sites to reference `channel->phy_data->*` for SoC-specific behaviour (for example no_adp_ctrl and utmi_ctrl). Remove the redundant soc_no_adp_ctrl and utmi_ctrl fields from struct rcar_gen3_chan. This simplifies the probe path, reduces duplication, and makes it easier to extend the driver with additional platform-specific fields in the future. Signed-off-by: Lad Prabhakar --- v1->v2: - Renamed drvdata to phy_data. - Updated commit message to clarify the change. - Dropped local phy_data variable in probe, using channel->phy_data directly. --- drivers/phy/renesas/phy-rcar-gen3-usb2.c | 27 ++++++++++-------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas= /phy-rcar-gen3-usb2.c index 47beb94cd424..7ac56102aed0 100644 --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -122,6 +122,7 @@ struct rcar_gen3_phy { struct rcar_gen3_chan { void __iomem *base; struct device *dev; /* platform_device's device */ + const struct rcar_gen3_phy_drv_data *phy_data; struct extcon_dev *extcon; struct rcar_gen3_phy rphys[NUM_OF_PHYS]; struct regulator *vbus; @@ -133,8 +134,6 @@ struct rcar_gen3_chan { bool extcon_host; bool is_otg_channel; bool uses_otg_pins; - bool soc_no_adp_ctrl; - bool utmi_ctrl; }; =20 struct rcar_gen3_phy_drv_data { @@ -204,7 +203,7 @@ static void rcar_gen3_enable_vbus_ctrl(struct rcar_gen3= _chan *ch, int vbus) u32 val; =20 dev_vdbg(ch->dev, "%s: %08x, %d\n", __func__, val, vbus); - if (ch->soc_no_adp_ctrl) { + if (ch->phy_data->no_adp_ctrl) { if (ch->vbus) regulator_hardware_enable(ch->vbus, vbus); =20 @@ -290,7 +289,7 @@ static bool rcar_gen3_check_id(struct rcar_gen3_chan *c= h) if (!ch->uses_otg_pins) return (ch->dr_mode =3D=3D USB_DR_MODE_HOST) ? false : true; =20 - if (ch->soc_no_adp_ctrl) + if (ch->phy_data->no_adp_ctrl) return !!(readl(ch->base + USB2_LINECTRL1) & USB2_LINECTRL1_USB2_IDMON); =20 return !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_IDDIG); @@ -421,7 +420,7 @@ static void rcar_gen3_init_otg(struct rcar_gen3_chan *c= h) USB2_LINECTRL1_DMRPD_EN | USB2_LINECTRL1_DM_RPD; writel(val, usb2_base + USB2_LINECTRL1); =20 - if (!ch->soc_no_adp_ctrl) { + if (!ch->phy_data->no_adp_ctrl) { val =3D readl(usb2_base + USB2_VBCTRL); val &=3D ~USB2_VBCTRL_OCCLREN; writel(val | USB2_VBCTRL_DRVVBUSSEL, usb2_base + USB2_VBCTRL); @@ -487,7 +486,7 @@ static int rcar_gen3_phy_usb2_init(struct phy *p) if (rphy->int_enable_bits) rcar_gen3_init_otg(channel); =20 - if (channel->utmi_ctrl) { + if (channel->phy_data->utmi_ctrl) { val =3D readl(usb2_base + USB2_REGEN_CG_CTRL) | USB2_REGEN_CG_CTRL_UPHY_= WEN; writel(val, usb2_base + USB2_REGEN_CG_CTRL); =20 @@ -730,7 +729,6 @@ static int rcar_gen3_phy_usb2_init_bus(struct rcar_gen3= _chan *channel) =20 static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev) { - const struct rcar_gen3_phy_drv_data *phy_data; struct device *dev =3D &pdev->dev; struct rcar_gen3_chan *channel; struct phy_provider *provider; @@ -773,8 +771,8 @@ static int rcar_gen3_phy_usb2_probe(struct platform_dev= ice *pdev) */ pm_runtime_enable(dev); =20 - phy_data =3D of_device_get_match_data(dev); - if (!phy_data) { + channel->phy_data =3D of_device_get_match_data(dev); + if (!channel->phy_data) { ret =3D -EINVAL; goto error; } @@ -782,22 +780,19 @@ static int rcar_gen3_phy_usb2_probe(struct platform_d= evice *pdev) platform_set_drvdata(pdev, channel); channel->dev =3D dev; =20 - if (phy_data->init_bus) { + if (channel->phy_data->init_bus) { ret =3D rcar_gen3_phy_usb2_init_bus(channel); if (ret) goto error; } =20 - channel->soc_no_adp_ctrl =3D phy_data->no_adp_ctrl; - if (phy_data->no_adp_ctrl) + if (channel->phy_data->no_adp_ctrl) channel->obint_enable_bits =3D USB2_OBINT_IDCHG_EN; =20 - channel->utmi_ctrl =3D phy_data->utmi_ctrl; - spin_lock_init(&channel->lock); for (i =3D 0; i < NUM_OF_PHYS; i++) { channel->rphys[i].phy =3D devm_phy_create(dev, NULL, - phy_data->phy_usb2_ops); + channel->phy_data->phy_usb2_ops); if (IS_ERR(channel->rphys[i].phy)) { dev_err(dev, "Failed to create USB2 PHY\n"); ret =3D PTR_ERR(channel->rphys[i].phy); @@ -808,7 +803,7 @@ static int rcar_gen3_phy_usb2_probe(struct platform_dev= ice *pdev) phy_set_drvdata(channel->rphys[i].phy, &channel->rphys[i]); } =20 - if (channel->soc_no_adp_ctrl && channel->is_otg_channel) + if (channel->phy_data->no_adp_ctrl && channel->is_otg_channel) channel->vbus =3D devm_regulator_get_exclusive(dev, "vbus"); else channel->vbus =3D devm_regulator_get_optional(dev, "vbus"); --=20 2.50.1 From nobody Sun Oct 5 03:38:25 2025 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 5F59C289832; Fri, 8 Aug 2025 21:52:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689942; cv=none; b=hmb7X44h4v2JQXUJxio9y/smEzYJv6n065o4zbqER3WdAXceIpnabBzSYwyeCni9YkaTklrkyfszeA3Waat7ibqfg1cQRhG0ISywZIoAQgiEYZbjHuBca8Tm+rl9QHIPKHhUiNd7Xrz4Nm320SsiH93mTsZCWITq4eRFo57FjLU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689942; c=relaxed/simple; bh=GfU3HnzDGt8Jz7iKB7PPuh0HE7dixYkQW8lQDV/5u6Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XFIqeBZ3EhvmZgYSdVvJxB2SyEyLezhbFamA/oLVsDwrL/aCYY6axGQBWVcDTG82+NLqaygdp+7TPdY1Q7OqyJfwJodQs5vgtdcjytfz7NuXKCTFepCib4R8m7O3e4Di8ucqPr3M6ONcsrIcNDhMUyRkXASdlqXRwwVCgnGq4w8= 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=U2I0/EKx; arc=none smtp.client-ip=209.85.221.47 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="U2I0/EKx" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-3b782cca9a0so1526683f8f.1; Fri, 08 Aug 2025 14:52:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754689939; x=1755294739; 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=W4eso6q1Ql4hiLYxYhXhY6ZR8ZJDF1IdVnxzdPMfBWU=; b=U2I0/EKxaemGFrDSObzJkj4pjIMKQuty0XCA9gxpd+jsYLToy9c0BbB/LDZwupdj2h tz80cXh4zmJ0A6akL44MuWqjqZDTNo/ziKhxMAn5m6a9rEK6Tw6RVWLUEUIgeemX7OJK VPytiL6TZo80yBYIP/3i1QzBgZe28INy04Bgi5gL74QFQVXU/k8KXp5W5+h3Su4OE3zL +3a2YjHLczhu4PXZqq+Ec84G+5DZZsF5LPkKedUMXLbF83R/qRc7kMoIA7UJCA7mENQY Fed6SS41e/fWjgV/mAl2eIjWNHKa8VtfTxiV4cICAwN2So5/iMG0qW9qr0ayhMW9ESN5 X4Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754689939; x=1755294739; 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=W4eso6q1Ql4hiLYxYhXhY6ZR8ZJDF1IdVnxzdPMfBWU=; b=DRA3Ilk7eSbsuXQem24P3K8mnj02t7yVU8pji8b3vHoobPMBqaOSf2WtHRYMl7cSix lQS9qdKH4ZpbbzdTySamjVgLiVcVI7/dTc5p+957e9bB+IVpf1KPB14+C3cQVCyXYCeX anfQbn04DdMIbrgh8VfYJtJIHjOWW1xIxmyEKp/P/gOoyV4IIP7dm0WYbZaQXkZ02bMf 9AyvS9+//0Nau/XmmavDSBQyXlAQFmgTjyWakzsnXD4oKVH3cKmplaA+NW/Vp601k8Xw TdI05tp7moPpsLnZDO90Tbh0MulSrZVxWlrDFDE8XMOQ1FVKAhMyhi5aRk6+x+pT2dPF gBhg== X-Forwarded-Encrypted: i=1; AJvYcCU5SNK6ncvlRM5SbTFDPVc2Jm/UM+kYm6/3o07sPsFKoDEx3E8724EbI067Ii6TkkRNL6GW5FLi9WQu@vger.kernel.org, AJvYcCW6UWIu43BGxv1CLJwJ65HTvWdnIS1nWO557TpIFo7COVm9x1XhXw8tutJzfUYHxhAo5yTgq1ixC5VZNXIp@vger.kernel.org, AJvYcCXcoL0Jtr4Si0IvXRgMuKGZeMzuvKtR6XvIw69pzF+89CAio8xOHRtGII4QAwZh9Y5HSwJVCnGoQ0eTtu3t3UdA88Q=@vger.kernel.org X-Gm-Message-State: AOJu0YyLqc8yX9rdM/xrSBrCogGRXSFC5/SUicQy73cMTvj296DBxDzP 71kBCcL5iL1+WSIN7RaMyOkeD6CbBAgsr5WSgcYZ7xRr0uLmax5b9sbS X-Gm-Gg: ASbGnctJtDbj4RTwJcpP7YJoOBmxPqusg4BjQ+HvgT9xNQdKz0I0SFaVE5l+/uKYOE8 XnZYcA0uyZMv+u+RVLcXfhMyYNDn5p7rXWIDaJzo98jGNINaJrZ92tds24moO1H/SC68rhCWsWl IBs0iiEa4APLgPqW3juLHltHOUwtvD6JhfYryd9IS2dZausgpuSrNSaA1O0+RowbDSWkiCzG/Wf mildm1QCh4dZcuNtAIT6BYQ04rF/ENzejT3AYQWyD2PMvwA6Jgg3DiafPGqpvb3V/oNsqPCblT6 gwv4xkPkic6tKPfTiOSTSukgz7PeWBjRFf0hFh7gEbSubhmXcIDgG+s9KbxYWCuz+PbGU+DjMmF /Q/NgIW/ZzdvXYwo4a1B5Fxabrcszj338FxMZil5REWVJlh+WuzRwgg9eCe9lgrsiAnlkRbjJi1 WdwdHwGd4= X-Google-Smtp-Source: AGHT+IFwCjDrfEQICalf5NxwHTcZ88cI3WyfLffrmreA57STBVTNRiDMr27sd6w5OkjIo6Mai2gOEg== X-Received: by 2002:a5d:5d0d:0:b0:3b7:fbe3:66bb with SMTP id ffacd0b85a97d-3b900b5551fmr3431850f8f.50.1754689938538; Fri, 08 Aug 2025 14:52:18 -0700 (PDT) Received: from iku.example.org (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b8ff860acbsm5326759f8f.51.2025.08.08.14.52.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 14:52:17 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yoshihiro Shimoda , Geert Uytterhoeven , Magnus Damm , Neil Armstrong Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Fabrizio Castro , Lad Prabhakar Subject: [PATCH v2 3/5] phy: renesas: rcar-gen3-usb2: Allow SoC-specific OBINT bits via phy_data Date: Fri, 8 Aug 2025 22:52:07 +0100 Message-ID: <20250808215209.3692744-4-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250808215209.3692744-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250808215209.3692744-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 Update the PHY driver to support SoC-specific OBINT enable bits by introducing the `obint_enable_bits` field in the `rcar_gen3_phy_drv_data` structure. This allows each SoC to specify bits required. Signed-off-by: Lad Prabhakar Reviewed-by: Neil Armstrong --- v1->v2: - Added Reviewed-by from Neil. --- drivers/phy/renesas/phy-rcar-gen3-usb2.c | 27 ++++++++++++------------ 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas= /phy-rcar-gen3-usb2.c index 7ac56102aed0..a37af7d8f2f4 100644 --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -71,8 +71,7 @@ /* OBINTSTA and OBINTEN */ #define USB2_OBINT_SESSVLDCHG BIT(12) #define USB2_OBINT_IDDIGCHG BIT(11) -#define USB2_OBINT_BITS (USB2_OBINT_SESSVLDCHG | \ - USB2_OBINT_IDDIGCHG) +#define USB2_OBINT_IDCHG_EN BIT(0) /* RZ/G2L specific */ =20 /* VBCTRL */ #define USB2_VBCTRL_OCCLREN BIT(16) @@ -93,7 +92,6 @@ #define USB2_ADPCTRL_DRVVBUS BIT(4) =20 /* RZ/G2L specific */ -#define USB2_OBINT_IDCHG_EN BIT(0) #define USB2_LINECTRL1_USB2_IDMON BIT(0) =20 #define NUM_OF_PHYS 4 @@ -130,7 +128,6 @@ struct rcar_gen3_chan { struct work_struct work; spinlock_t lock; /* protects access to hardware and driver data structure= . */ enum usb_dr_mode dr_mode; - u32 obint_enable_bits; bool extcon_host; bool is_otg_channel; bool uses_otg_pins; @@ -141,6 +138,7 @@ struct rcar_gen3_phy_drv_data { bool no_adp_ctrl; bool init_bus; bool utmi_ctrl; + u32 obint_enable_bits; }; =20 /* @@ -225,9 +223,9 @@ static void rcar_gen3_control_otg_irq(struct rcar_gen3_= chan *ch, int enable) u32 val =3D readl(usb2_base + USB2_OBINTEN); =20 if (ch->uses_otg_pins && enable) - val |=3D ch->obint_enable_bits; + val |=3D ch->phy_data->obint_enable_bits; else - val &=3D ~ch->obint_enable_bits; + val &=3D ~ch->phy_data->obint_enable_bits; writel(val, usb2_base + USB2_OBINTEN); } =20 @@ -430,7 +428,7 @@ static void rcar_gen3_init_otg(struct rcar_gen3_chan *c= h) mdelay(20); =20 writel(0xffffffff, usb2_base + USB2_OBINTSTA); - writel(ch->obint_enable_bits, usb2_base + USB2_OBINTEN); + writel(ch->phy_data->obint_enable_bits, usb2_base + USB2_OBINTEN); =20 rcar_gen3_device_recognition(ch); } @@ -450,9 +448,9 @@ static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void= *_ch) =20 scoped_guard(spinlock, &ch->lock) { status =3D readl(usb2_base + USB2_OBINTSTA); - if (status & ch->obint_enable_bits) { + if (status & ch->phy_data->obint_enable_bits) { dev_vdbg(dev, "%s: %08x\n", __func__, status); - writel(ch->obint_enable_bits, usb2_base + USB2_OBINTSTA); + writel(ch->phy_data->obint_enable_bits, usb2_base + USB2_OBINTSTA); rcar_gen3_device_recognition(ch); ret =3D IRQ_HANDLED; } @@ -591,28 +589,35 @@ static const struct phy_ops rz_g1c_phy_usb2_ops =3D { static const struct rcar_gen3_phy_drv_data rcar_gen3_phy_usb2_data =3D { .phy_usb2_ops =3D &rcar_gen3_phy_usb2_ops, .no_adp_ctrl =3D false, + .obint_enable_bits =3D USB2_OBINT_SESSVLDCHG | + USB2_OBINT_IDDIGCHG, }; =20 static const struct rcar_gen3_phy_drv_data rz_g1c_phy_usb2_data =3D { .phy_usb2_ops =3D &rz_g1c_phy_usb2_ops, .no_adp_ctrl =3D false, + .obint_enable_bits =3D USB2_OBINT_SESSVLDCHG | + USB2_OBINT_IDDIGCHG, }; =20 static const struct rcar_gen3_phy_drv_data rz_g2l_phy_usb2_data =3D { .phy_usb2_ops =3D &rcar_gen3_phy_usb2_ops, .no_adp_ctrl =3D true, + .obint_enable_bits =3D USB2_OBINT_IDCHG_EN, }; =20 static const struct rcar_gen3_phy_drv_data rz_g3s_phy_usb2_data =3D { .phy_usb2_ops =3D &rcar_gen3_phy_usb2_ops, .no_adp_ctrl =3D true, .init_bus =3D true, + .obint_enable_bits =3D USB2_OBINT_IDCHG_EN, }; =20 static const struct rcar_gen3_phy_drv_data rz_v2h_phy_usb2_data =3D { .phy_usb2_ops =3D &rcar_gen3_phy_usb2_ops, .no_adp_ctrl =3D true, .utmi_ctrl =3D true, + .obint_enable_bits =3D USB2_OBINT_IDCHG_EN, }; =20 static const struct of_device_id rcar_gen3_phy_usb2_match_table[] =3D { @@ -747,7 +752,6 @@ static int rcar_gen3_phy_usb2_probe(struct platform_dev= ice *pdev) if (IS_ERR(channel->base)) return PTR_ERR(channel->base); =20 - channel->obint_enable_bits =3D USB2_OBINT_BITS; channel->dr_mode =3D rcar_gen3_get_dr_mode(dev->of_node); if (channel->dr_mode !=3D USB_DR_MODE_UNKNOWN) { channel->is_otg_channel =3D true; @@ -786,9 +790,6 @@ static int rcar_gen3_phy_usb2_probe(struct platform_dev= ice *pdev) goto error; } =20 - if (channel->phy_data->no_adp_ctrl) - channel->obint_enable_bits =3D USB2_OBINT_IDCHG_EN; - spin_lock_init(&channel->lock); for (i =3D 0; i < NUM_OF_PHYS; i++) { channel->rphys[i].phy =3D devm_phy_create(dev, NULL, --=20 2.50.1 From nobody Sun Oct 5 03:38:25 2025 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 BA465289E3B; Fri, 8 Aug 2025 21:52:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689944; cv=none; b=WbLovc1pid4zOxobPr+8n3CHwDCzuJm6SXqD7q4TgfBenWZnjmEuNtPXTMmr3LVTbAjxomdIufenKO/Z1ghel99VGVuJrT5mBxmxjPwewGY2MzkAEAn4QXmZ313pfUJQDxvImfRcN3pIFWSQCB7Gc3qQYn/L5WqwDyo2SimeodY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689944; c=relaxed/simple; bh=pNI/XlqSfjUqvsOyJuFc2HX76DQF/EEpD/pfQ/mbTzM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=haMzcc8Xr/vU82JmcluIpSmwvx4TYBeheLDiVBZb7mrTM4p7Szi3s6doW6LktI3MaMYpVJmKrtWbvMJgk9c8gSWsXIn1ZPstHDCGhHBmmhpI+o/PjZaV4Y98zAB9iCIC0R2u1gEc03TUvGlmMe83ZoOKnBAzmjC1gTpWY6Fvv5g= 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=P3cOIFfQ; arc=none smtp.client-ip=209.85.221.47 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="P3cOIFfQ" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-3b7886bee77so1985788f8f.0; Fri, 08 Aug 2025 14:52:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754689940; x=1755294740; 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=jvS/66ZRcxV6VQy7PbjyUhwNCw/ZPjnx5EiNbfGEtK0=; b=P3cOIFfQOoXx68qicO7npMVbbEYEHXroeaZMB+khzW9PJiZosiK1jj22K6sMs8sOmS DqCaQtv6rSx+oNFA9LMhDfDaZs5mrL6Qt9c61hxMt+R2SbflPf7l+W0JePZdIe5Susds 9RU3elzz9a/tmt3/RfX0yO4pFXJL0U32h2eu2UYW6EgoC5UlBksZfBiD0zBeo6pVaF7x uh/ZfKYysyktKhKFzV6M3eHbqji0xdhUHwzSRYoM5AWqdRmLjI8Gd4Eao0LF3eDwRz81 CA6arzIZAuuyrtDtsZlZzhSVnC8C7dh0PwLiKzPZscHlh0nfDAwkwuEOD+I3Ij8Cu/WZ XUnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754689940; x=1755294740; 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=jvS/66ZRcxV6VQy7PbjyUhwNCw/ZPjnx5EiNbfGEtK0=; b=HqvvlSKFASatEmVfToOHg7TcpNsFe2b0juBRTKxjmJgW2nj/bPFbd7Aiyb5t5vgW52 LdQ3anrU3irezVSXJloJNC0IwpF1BvuW5s8ThedWAIpGoT+5mQTp6FDv+hJtybv+Zw5b TAhmx57QV4PcrFktCIUordFpVbeVIsazobSPjEFzUBp6bH2MZMq0CE2VDDCq7ChQHJYm QADrSSHor75Uyeh9v0ePW41yxijgtn6DW44YWF7i8OtGdBU09heDNurVD+0woCNN91Dc Wwtt+DRst+EGODc95LdnyUXVAS6LqrwQBrEVkqDVGIgPGNLjJvAnlyjIFDRsVlAwtTly yj7w== X-Forwarded-Encrypted: i=1; AJvYcCULneF3ghz8ZOGIpT3nGpEeBl28vhJW08B9wDFqcGdjFAAEEXJeMgzTTdJFgFMw4xYRtsmcG+q4zp8Z@vger.kernel.org, AJvYcCVnESu4ovvmftMzXBWxknQrHHZMlonywahXpREn1DJ+7u0u6fTlHYTedFIbuH3FQdlGkWZLRvTJ+8XEBN3E+sw1cNg=@vger.kernel.org, AJvYcCWwAU4jAfxfuv6MBKwPT7J7oI/BH9rJJZKjsYb/BjXeylCbsLUmTvCLTYy64H+3QuDFQAB6yf3jdHSt7Mnb@vger.kernel.org X-Gm-Message-State: AOJu0Yx43jAJcx2ytaKCqGtnzSzwZ9rmWahNfNMhBWh8QUrCWBuIGuNO gQOOOw0tqzMURM3fk27qAr/unmUw1iLOlB6bc5DOFrMCRMeM036iMFcw X-Gm-Gg: ASbGncstyMkHtywFNF3fdMJNEeSPrpERRqz+vOcxO1FoSqlyAM0nN6M+smHVyNLFTWy 6qBczfkCyqoX+DnG3C6vWT9IWcL97wSF3CPZLNHmWi4Eq0OT8/WUAPbpG4jmbQaV/S5dZx1oXeC 8vrEnLKiIPB5uSg9wwpHMcUoMdjtGYXzvM6shEnB3ldzZUdM1A8jr7DenhHUw/e4X6oAoc3om8K D/cJOzUv2gG2r0imjMp4jD6xJnbEKlnAR4+aza6+m8mGmxccUcFhXs3AZedb22I27JVz+w50TTb 9vKegCzoIl8nC7Ps4fHdXBRo64k/sXVB5vsHfFtzK8ZzaCGvJSDsd5vu9FB994NLDnMwQInbECZ 18W2leziAPwaIkkK6veq0VjYy9WW58thnuD/I0/RaXkopv3Gw01IeOxbgMkrT3YRBZD0UbB0KH8 oniGQJm9Q= X-Google-Smtp-Source: AGHT+IHJn67PJNHb16cZnDnyn2d6g3QZIB/QBXnk6D7396rvjPN7ueSMbBDzSShRVQWt+LdznmCoVw== X-Received: by 2002:a05:6000:1785:b0:3b8:d16a:a4a5 with SMTP id ffacd0b85a97d-3b900905a8amr4343286f8f.0.1754689939795; Fri, 08 Aug 2025 14:52:19 -0700 (PDT) Received: from iku.example.org (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b8ff860acbsm5326759f8f.51.2025.08.08.14.52.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 14:52:18 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yoshihiro Shimoda , Geert Uytterhoeven , Magnus Damm , Neil Armstrong Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Fabrizio Castro , Lad Prabhakar Subject: [PATCH v2 4/5] phy: renesas: rcar-gen3-usb2: Add support for RZ/T2H SoC Date: Fri, 8 Aug 2025 22:52:08 +0100 Message-ID: <20250808215209.3692744-5-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250808215209.3692744-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250808215209.3692744-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 initial support for the Renesas RZ/T2H SoC to the R-Car Gen3 USB2 PHY driver. The RZ/T2H SoC requires configuration of additional hardware-specific bits for proper VBUS level control and OTG operation. Introduce the `vblvl_ctrl` flag in the SoC-specific driver data to enable handling of VBUS level selection logic using `VBCTRL.VBLVL` bits. This is required for managing the VBUS status detection and drive logic based on SoC-specific needs. Signed-off-by: Lad Prabhakar Reviewed-by: Neil Armstrong --- v1->v2: - Included the necessary header files. - Simplified device/host detection in rcar_gen3_check_id() as suggested by Geert. - Added Reviewed-by from Neil. --- drivers/phy/renesas/phy-rcar-gen3-usb2.c | 82 ++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 7 deletions(-) diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas= /phy-rcar-gen3-usb2.c index a37af7d8f2f4..8caef9cb228c 100644 --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -9,6 +9,8 @@ * Copyright (C) 2014 Cogent Embedded, Inc. */ =20 +#include +#include #include #include #include @@ -69,13 +71,20 @@ #define USB2_COMMCTRL_OTG_PERI BIT(31) /* 1 =3D Peripheral mode */ =20 /* OBINTSTA and OBINTEN */ +#define USB2_OBINTSTA_CLEAR GENMASK(31, 0) #define USB2_OBINT_SESSVLDCHG BIT(12) #define USB2_OBINT_IDDIGCHG BIT(11) +#define USB2_OBINT_VBSTAINT BIT(3) #define USB2_OBINT_IDCHG_EN BIT(0) /* RZ/G2L specific */ =20 /* VBCTRL */ +#define USB2_VBCTRL_VBSTA_MASK GENMASK(31, 28) +#define USB2_VBCTRL_VBSTA_DEFAULT 2 +#define USB2_VBCTRL_VBLVL_MASK GENMASK(23, 20) +#define USB2_VBCTRL_VBLVL(m) FIELD_PREP_CONST(USB2_VBCTRL_VBLVL_MASK, (m)) #define USB2_VBCTRL_OCCLREN BIT(16) #define USB2_VBCTRL_DRVVBUSSEL BIT(8) +#define USB2_VBCTRL_SIDDQREL BIT(2) #define USB2_VBCTRL_VBOUT BIT(0) =20 /* LINECTRL1 */ @@ -88,6 +97,7 @@ /* ADPCTRL */ #define USB2_ADPCTRL_OTGSESSVLD BIT(20) #define USB2_ADPCTRL_IDDIG BIT(19) +#define USB2_ADPCTRL_VBUSVALID BIT(18) #define USB2_ADPCTRL_IDPULLUP BIT(5) /* 1 =3D ID sampling is enabled */ #define USB2_ADPCTRL_DRVVBUS BIT(4) =20 @@ -138,6 +148,7 @@ struct rcar_gen3_phy_drv_data { bool no_adp_ctrl; bool init_bus; bool utmi_ctrl; + bool vblvl_ctrl; u32 obint_enable_bits; }; =20 @@ -201,7 +212,7 @@ static void rcar_gen3_enable_vbus_ctrl(struct rcar_gen3= _chan *ch, int vbus) u32 val; =20 dev_vdbg(ch->dev, "%s: %08x, %d\n", __func__, val, vbus); - if (ch->phy_data->no_adp_ctrl) { + if (ch->phy_data->no_adp_ctrl || ch->phy_data->vblvl_ctrl) { if (ch->vbus) regulator_hardware_enable(ch->vbus, vbus); =20 @@ -284,6 +295,16 @@ static void rcar_gen3_init_from_a_peri_to_a_host(struc= t rcar_gen3_chan *ch) =20 static bool rcar_gen3_check_id(struct rcar_gen3_chan *ch) { + if (ch->phy_data->vblvl_ctrl) { + bool vbus_valid; + bool device; + + device =3D !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_IDDIG); + vbus_valid =3D !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_VBUSVALI= D); + + return !(device && !vbus_valid); + } + if (!ch->uses_otg_pins) return (ch->dr_mode =3D=3D USB_DR_MODE_HOST) ? false : true; =20 @@ -419,11 +440,20 @@ static void rcar_gen3_init_otg(struct rcar_gen3_chan = *ch) writel(val, usb2_base + USB2_LINECTRL1); =20 if (!ch->phy_data->no_adp_ctrl) { - val =3D readl(usb2_base + USB2_VBCTRL); - val &=3D ~USB2_VBCTRL_OCCLREN; - writel(val | USB2_VBCTRL_DRVVBUSSEL, usb2_base + USB2_VBCTRL); - val =3D readl(usb2_base + USB2_ADPCTRL); - writel(val | USB2_ADPCTRL_IDPULLUP, usb2_base + USB2_ADPCTRL); + if (ch->phy_data->vblvl_ctrl) { + val =3D readl(usb2_base + USB2_VBCTRL); + val =3D (val & ~USB2_VBCTRL_VBLVL_MASK) | USB2_VBCTRL_VBLVL(2); + writel(val, usb2_base + USB2_VBCTRL); + val =3D readl(usb2_base + USB2_ADPCTRL); + writel(val | USB2_ADPCTRL_IDPULLUP | USB2_ADPCTRL_DRVVBUS, + usb2_base + USB2_ADPCTRL); + } else { + val =3D readl(usb2_base + USB2_VBCTRL); + val &=3D ~USB2_VBCTRL_OCCLREN; + writel(val | USB2_VBCTRL_DRVVBUSSEL, usb2_base + USB2_VBCTRL); + val =3D readl(usb2_base + USB2_ADPCTRL); + writel(val | USB2_ADPCTRL_IDPULLUP, usb2_base + USB2_ADPCTRL); + } } mdelay(20); =20 @@ -433,6 +463,23 @@ static void rcar_gen3_init_otg(struct rcar_gen3_chan *= ch) rcar_gen3_device_recognition(ch); } =20 +static void rcar_gen3_configure_vblvl_ctrl(struct rcar_gen3_chan *ch) +{ + void __iomem *usb2_base =3D ch->base; + u32 val; + + if (!ch->phy_data->vblvl_ctrl) + return; + + val =3D readl(usb2_base + USB2_VBCTRL); + if ((val & USB2_VBCTRL_VBSTA_MASK) =3D=3D + FIELD_PREP_CONST(USB2_VBCTRL_VBSTA_MASK, USB2_VBCTRL_VBSTA_DEFAULT)) + val &=3D ~USB2_VBCTRL_VBLVL_MASK; + else + val |=3D USB2_VBCTRL_VBLVL(USB2_VBCTRL_VBSTA_DEFAULT); + writel(val, usb2_base + USB2_VBCTRL); +} + static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, void *_ch) { struct rcar_gen3_chan *ch =3D _ch; @@ -450,8 +497,12 @@ static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, voi= d *_ch) status =3D readl(usb2_base + USB2_OBINTSTA); if (status & ch->phy_data->obint_enable_bits) { dev_vdbg(dev, "%s: %08x\n", __func__, status); - writel(ch->phy_data->obint_enable_bits, usb2_base + USB2_OBINTSTA); + if (ch->phy_data->vblvl_ctrl) + writel(USB2_OBINTSTA_CLEAR, usb2_base + USB2_OBINTSTA); + else + writel(ch->phy_data->obint_enable_bits, usb2_base + USB2_OBINTSTA); rcar_gen3_device_recognition(ch); + rcar_gen3_configure_vblvl_ctrl(ch); ret =3D IRQ_HANDLED; } } @@ -484,6 +535,13 @@ static int rcar_gen3_phy_usb2_init(struct phy *p) if (rphy->int_enable_bits) rcar_gen3_init_otg(channel); =20 + if (channel->phy_data->vblvl_ctrl) { + /* SIDDQ mode release */ + writel(readl(usb2_base + USB2_VBCTRL) | USB2_VBCTRL_SIDDQREL, + usb2_base + USB2_VBCTRL); + udelay(250); + } + if (channel->phy_data->utmi_ctrl) { val =3D readl(usb2_base + USB2_REGEN_CG_CTRL) | USB2_REGEN_CG_CTRL_UPHY_= WEN; writel(val, usb2_base + USB2_REGEN_CG_CTRL); @@ -613,6 +671,12 @@ static const struct rcar_gen3_phy_drv_data rz_g3s_phy_= usb2_data =3D { .obint_enable_bits =3D USB2_OBINT_IDCHG_EN, }; =20 +static const struct rcar_gen3_phy_drv_data rz_t2h_phy_usb2_data =3D { + .phy_usb2_ops =3D &rcar_gen3_phy_usb2_ops, + .vblvl_ctrl =3D true, + .obint_enable_bits =3D USB2_OBINT_IDCHG_EN | USB2_OBINT_VBSTAINT, +}; + static const struct rcar_gen3_phy_drv_data rz_v2h_phy_usb2_data =3D { .phy_usb2_ops =3D &rcar_gen3_phy_usb2_ops, .no_adp_ctrl =3D true, @@ -645,6 +709,10 @@ static const struct of_device_id rcar_gen3_phy_usb2_ma= tch_table[] =3D { .compatible =3D "renesas,usb2-phy-r9a09g057", .data =3D &rz_v2h_phy_usb2_data, }, + { + .compatible =3D "renesas,usb2-phy-r9a09g077", + .data =3D &rz_t2h_phy_usb2_data, + }, { .compatible =3D "renesas,rzg2l-usb2-phy", .data =3D &rz_g2l_phy_usb2_data, --=20 2.50.1 From nobody Sun Oct 5 03:38:25 2025 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 AB954289E39; Fri, 8 Aug 2025 21:52:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689944; cv=none; b=uC8VZUBrwyvkoGwWPQ3XjdTEI/87i0DetIFZqKLjgUjVTM4o0BZ7reRgJ5UCC0aK3BY6KErRzPN4ZuFcGMyU6ChGdaIA7HGsy6ZlfaxNeS0Gn/xag/G5ExZPEh5ZrlqKO85Pf3x0LFETMjDe2mJ78+Y32OxPnWXET3pyMDzGh2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754689944; c=relaxed/simple; bh=MgRQW6IwPCnaCl/We4GjzTXHJKwd4rAbiwcpcw8mUjo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z1f+ssYhMcFJV6GNPR6X7udJJAkG51qRaIrbY6F3KIdKKwBmnmWhya90VtvRZyPtyGnli5GPCwez1nIIvtWdytBJnrSWw3M4Hd1XbkelaKZ8sP5RAOJ1s50dBM9hXLwF5nMtFB62mVGZDl3Gg7pNFQSAn5m4xiBxQRbOR2YoeNQ= 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=gmL/NxpR; arc=none smtp.client-ip=209.85.221.46 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="gmL/NxpR" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-3b78d13bf10so2591938f8f.1; Fri, 08 Aug 2025 14:52:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754689941; x=1755294741; 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=cmSdf/9CQUvl70IdXMlZn/po6qGixtnt6qlryVPh128=; b=gmL/NxpRX3hP3eUbZ/BF7bAjzKFMvBWLLrZq48q/G5UbEw+p61znkD4CR3XR/stsK8 c56soMm/MOqkSeYe2lLd2+sTAJPt1Y/OKKU7q4Y2JCibdPwty1LctDs6zFXwrZ+mHBPh +c0+z+y+yGyxMFp68WRaGFlWaaCubtZvne/8/Gg89EWmLIRu490VGLLOEe+o2DZSsC41 e2Sj6Xt71jgXOu3aEuVwdQ1OMmCUwKqW8NjEBIIrZckFccVqtmwAagDtsXefSmZxUiI/ qKq83YnHNbb1lkEM1dMJPbuk2NQBERAM2aEJTws2anW4CNDmIq93fEHxjo5H+Rc/k1BJ D99w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754689941; x=1755294741; 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=cmSdf/9CQUvl70IdXMlZn/po6qGixtnt6qlryVPh128=; b=JfoQNJ603wQ53xa42LscOwhECUo51wmNcnfVUAJGOdJ8r75+lvJyodavOk1jXG56Yl h0KYCLr+bYN8LELa/yWAgz52Npaly1wI3hSboWH7rySFIte/jV/na0dD+WXLHYgKnhlh DmkpV5qc0ucb8Bns/5yU963Ayi/CLKnqKv+mj4RMFYu1sB3e7KKB/mJn0Ji7mlq/Yre0 lBuyCdS5zpDQg4nLO+Jlgx/S2sE7mo0dAkqKeuC00rYvYBNK4R/MrbZsSpXDONDFwq4B SoPGLob6kplrIEImv7NnoUwGVHx1Rm8jISGYbHQ3F1TmtVo7uboU+qqcitxcRpgdHskR YeJA== X-Forwarded-Encrypted: i=1; AJvYcCVKEg2XYFr/UunQm7rrvncOKMiNJqYBVT0HTsPDXZJPuKmbeCkL6BU1LfKx9QeqVVKA/RTMQBK3x18x89Knc0B0lqs=@vger.kernel.org, AJvYcCVz/iKWCzZy8/gl8G05XhlRgpnrqtPy0uZ1VTh3WzP4w5cFk7DbTV+6AZArH9DC/pj0rWXS0l97vpGdZ3ce@vger.kernel.org, AJvYcCW+yTTn/aum/C+7q/SjQyCEtEFwaqkozkPt8HgxUNAOxKWe35xQbSnzICHIJ+Lyqe36IRvzovmnHSiO@vger.kernel.org X-Gm-Message-State: AOJu0Yybp61dgY/5vmsg7yZu1ZozU7vLWH6gXxH+qul1zIkagBjheEu7 OU2FkatoigAYeGUqgGJuDWEXGGweCFePDKFQ9aTvqSIXBcMzsQQsuAWP X-Gm-Gg: ASbGncuHU/2oK87Qqpq0yIiYdJL6qYibCHleaRXsHpTnqWVuPS9vlPm2EBlfk0FtmNh sU0vGpsRmjJXjizV8w+KUlTJv6vuwzj0V7RMuSkR6h3dEWRHv+9rDCHlFCkgGdXrKpD2m3puOxI iMGdsEOxxxPA0azUPGoE1R7lpeX96n4YtZWyc/UOaXmL4hpl9/veTAnwKPSMmdSy1OezYA9szwj tYWC3cvnwpSJqdhVicRGamhKN9qCgwMW5r8f16OGGP/jed8TwJtEshlmYffeL6WPF6jWmTAcQBK 8ID94HX0eqxStLz8mDhVypKG88gNPBSrEDc8lSKLgjDL6vJdp4TWHlsy5TW2hfDvBKQV7Kmfnle eGHmzIkFvfqFaX2QX1TuiC+nSYnbOFzxLJQ1E7lFQRNqCIkMQHZlXWlhB2xemcG8h9lqHg2/jM0 jOBI/jkOc= X-Google-Smtp-Source: AGHT+IF/05lCcQEipOrmBWnaTpk2Y7mleC1kcTd4heh6tjbXJbUyTuT7e3mrMhTJPNdy+G7l0l5YmQ== X-Received: by 2002:a05:6000:4283:b0:3b7:8af8:b91d with SMTP id ffacd0b85a97d-3b900b72e05mr4400030f8f.35.1754689940999; Fri, 08 Aug 2025 14:52:20 -0700 (PDT) Received: from iku.example.org (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b8ff860acbsm5326759f8f.51.2025.08.08.14.52.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 14:52:20 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yoshihiro Shimoda , Geert Uytterhoeven , Magnus Damm , Neil Armstrong Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar , Biju Das , Fabrizio Castro , Lad Prabhakar Subject: [PATCH v2 5/5] phy: renesas: rcar-gen3-usb2: Move debug print after register value is updated Date: Fri, 8 Aug 2025 22:52:09 +0100 Message-ID: <20250808215209.3692744-6-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250808215209.3692744-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250808215209.3692744-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 Relocate the debug print in rcar_gen3_enable_vbus_ctrl() to appear after the `val` variable is assigned and updated based on the VBUS state. This ensures that the debug log reflects the actual register value being written, improving debugging accuracy. Signed-off-by: Lad Prabhakar Reviewed-by: Neil Armstrong --- v1->v2: - Added Reviewed-by from Neil. --- drivers/phy/renesas/phy-rcar-gen3-usb2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas= /phy-rcar-gen3-usb2.c index 8caef9cb228c..7b4a6e8b7508 100644 --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -211,7 +211,6 @@ static void rcar_gen3_enable_vbus_ctrl(struct rcar_gen3= _chan *ch, int vbus) u32 vbus_ctrl_val =3D USB2_ADPCTRL_DRVVBUS; u32 val; =20 - dev_vdbg(ch->dev, "%s: %08x, %d\n", __func__, val, vbus); if (ch->phy_data->no_adp_ctrl || ch->phy_data->vblvl_ctrl) { if (ch->vbus) regulator_hardware_enable(ch->vbus, vbus); @@ -225,6 +224,7 @@ static void rcar_gen3_enable_vbus_ctrl(struct rcar_gen3= _chan *ch, int vbus) val |=3D vbus_ctrl_val; else val &=3D ~vbus_ctrl_val; + dev_vdbg(ch->dev, "%s: %08x, %d\n", __func__, val, vbus); writel(val, usb2_base + vbus_ctrl_reg); } =20 --=20 2.50.1