From nobody Sun Oct 5 10:51:14 2025 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 812131F561D; Tue, 5 Aug 2025 12:25:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754396740; cv=none; b=keI/fSXooRA6kJxooAFXQNDqXHoDFPD68lGaCZs/NoaQUc/Y0V/V7nid+CuQ2NTXrkaDKEa7dSphiDo6oP1b4zgeKKBdi7CMoBZpoQhpzq4Bk3MzdFVf32HKqmLO1xbppDElpj0R4nWEbhiDYELkiTjr/rAqfSa5p7bXXtEwvOM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754396740; c=relaxed/simple; bh=5D4tOJ/Ukpjgu6zPYUi8fs/FkDLpoRImbHSAcLahtb4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pFD2wPTwwkGcX1AB0/Etod7S0adouktv8hDHmU7CzJUvbh6mJdDuhR4tXl8vFaZ2LVHLitdi8/V1f1bs2QJq1SEw+cYFLtB55ZrJVnJ3CnZRSIYjH6WU0PdQSu8VDUCnUaoahZn80c+lZWzDp2ELVffZHQVeXyHxr81k7GPQmfw= 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=G0pRY7Uf; arc=none smtp.client-ip=209.85.221.52 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="G0pRY7Uf" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-3b7910123a0so5410739f8f.1; Tue, 05 Aug 2025 05:25:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754396736; x=1755001536; 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=I5Ep8m0VKAwV5mXrgq4DZR9sXOgq4tSE6SfXbq4E5+g=; b=G0pRY7UfJqmA8iMMxACHiC6ECsk1//BhzvOdm/2bYxJ2UfchpQQZCGTcFTHO8Hi5ji G4Aqrom4zreTFNKzNsY7cgmxkLFMG/eooeHVm5hI9+oCyfvulw95ZYRy9fuLSLCfk6rM SJ2/wch6OUlFEN2m564w0WEkoT3riSY1hexTplqlPxjwmoLV3exdn1H6elgaZdJaCUqd BxVaLtvtu1yXBUb/xGRWWSRy/TvXtoTPJq1zqvKPZ7Iby0t83V7hBK4CMdEU+HSkxYmJ v29zVD68ZToPhds3/p44xw+OE+U+rmnWLtrnXeAxNVKje96IoosPM0MhYXB8lYgoPd8Q GV/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754396736; x=1755001536; 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=I5Ep8m0VKAwV5mXrgq4DZR9sXOgq4tSE6SfXbq4E5+g=; b=NIL/eJBu3iMx8AKuwfb4XZBdMsgNS+aGs0lxIfhtmR8tpYuzCbYOC+IWkq+ZJjL6tX bdmYb6pqXbtRZMu32huCkBeUtg9qSg00bnVDGEPg9bzwmEGqDQ95728jE6+cy1i/XPjr DDH60Mvfziv4ugE3NCEOQAPeJtxX/mcN3iQvpLx+afE/ZtTk6AdYjkKvNKieB829W+jk sOSzfI7TcXKVvlBzBFhEP54u1/4Ht1dyCKKFoOX8keGO6hKBM2aTRXTlhkBEytYYpBr7 Ah+zuCWfjfbYZ6QEs7w1WiA6ppxKw72Hpide/3WZRcvEJju9N0z/IDHFV8Ef5dHbu8na Co0A== X-Forwarded-Encrypted: i=1; AJvYcCU+ewSQR7IG6m4huvUCA+9xH8UaoqsLQj1pKs04MxL+4/ADpu5ngWmHwwUsfMnxXKGN72N4hWhGEG81iJXY@vger.kernel.org, AJvYcCWQfqcHfbbJn6l0Y2AK6rdryJ3499AHt+qCw3VxOD+Nua/Pslkkib03/E/FvqSZqgRgSFgMjL+//Cjk@vger.kernel.org, AJvYcCXje5NRy2xIFsejR7YdvFX1x/CjpktVjuyfYw9TLZxjW4CcB8ys2ib3uYGnSg0wMWkxEcQJOpV3RllHTLssY4OIyRQ=@vger.kernel.org X-Gm-Message-State: AOJu0YywAdnWymTBaMrarFvR61LlUC5txhWeriN0KGuNDP1VJ0ylwens PDIjmUmCQhuxi7SNzSA+RFp+O+M6ESPMesgckfBpJaeFbPCaR3soSPbH X-Gm-Gg: ASbGncuvHpWU6g+3nmPtbzsTcQLhYGmlIWIWFKZgqFtl1XzEK5z6RAwONqnlRetFDx+ N9ZgRgjoytfa7pH4Y1sRioptD+CF2fgXt1KBA2iN2m7bvOj4u1uaUWuG/IaFpWfTzcvRk+u45NX fMxCXOZOyPNi08eBhZL0cgwA2iQKI8iAebqmOHf9Jo0UqxnO5ilQ/RjXV/7dSJpHqlueV0nPShL ALyxDRKOBk/sjVbUG3gK1saOa9G2nHbKTYyrNuDUaTuxb/7dLt+1N4T3/LUO+RujfgfN86Djpjo W4btCo2JTvx8FdReIW5UuW3myeWvCT1qxvozECaOdLNngnYZt5n1Ivk8g9CPJf8Eo4hF9DkLTph ZpBLV8XRS3ujb6zAxzY8zSjUXztIOx0QUlvRYVGzEoaJmYxQBcLxdxCu0jH39Z3APtSoVkwfVQw == X-Google-Smtp-Source: AGHT+IH/BxE0hPVHk64qSFzfFDBSwRmjvC2GF0gHc1dmVlCBwJCvHU1LVAoN9rANd8IFap/CwdRMcw== X-Received: by 2002:a05:6000:2013:b0:3b7:8146:463c with SMTP id ffacd0b85a97d-3b8d94cf0bbmr9070989f8f.59.1754396735746; Tue, 05 Aug 2025 05:25:35 -0700 (PDT) Received: from iku.Home (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c48a05bsm19153986f8f.69.2025.08.05.05.25.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 05:25:34 -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 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 1/5] dt-bindings: phy: renesas,usb2-phy: Add RZ/T2H and RZ/N2H support Date: Tue, 5 Aug 2025 13:25:25 +0100 Message-ID: <20250805122529.2566580-2-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250805122529.2566580-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250805122529.2566580-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 --- .../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 10:51:14 2025 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 0611E27056A; Tue, 5 Aug 2025 12:25:38 +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=1754396741; cv=none; b=YPHbYo+n5XbKL34HML910Cyk7Mj2XD5N2Kwt4JBYGur/yLsOWIJI9EAX0bJ+6eR4lNONQoeHpXSoHPbBlRwpoROeOLEHlX1Sm1iZhACoxksWlcMquY9HwCtAvazjZiD9xy5vXY7AUUXdG7/8YPTyOIqnLMSsjDp1mvg0NApclfM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754396741; c=relaxed/simple; bh=8jqfJMURhnOJNGrQTjrsVkA3SQPdiykUmdmgG4JsmIk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QOBR9eaVPSYeCUBOZjT9gGUbz+h7SHmLviDKf0jZxosKFc5RVEJyoh0PEBMzES6NtbkLCV6Aw4eoPXm5Hmw2l64eonimfpmqUpKRvKdUI7WjcW5ta+5IJ6sgzNwwfx2PNNsPwgcGTp5bFZdRKNdY9Q1sLiU9sQkW1vRMvnKRcb0= 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=QuYYUlCG; arc=none smtp.client-ip=209.85.221.44 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="QuYYUlCG" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-3b7825e2775so4714468f8f.2; Tue, 05 Aug 2025 05:25:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754396737; x=1755001537; 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=gPoAix/bRF53Va2EIT5HaYLDIWPycCrapatLpJoZNqQ=; b=QuYYUlCGbc7GJYDBo3ZQr88U4guAZhg7qZ/sguNKCu6HpscFPcAUVFgMkopU39E2aL PoTTPmQusdV1eWuhyuFI4FeHz4UJFaRXsWvyRf4zpQrEx7gRkfsLAtbCL/3LWoyitiBY qb2ZaUZuH6DLDFAm26c3uiTnX9mna2XGmcRhbZVAy/0yUs/IIq6kCIXdSaTwV+odGhxQ 79vJDkuRQeZDcZOhvShmtDmyHk6u7AknHOR+XSpY/7qoZS0WHfgXi8cPeSSkeLpu9rBQ Iy9qy5ETy4+biFchgv84ckJfJD3MoyALkRHl3S8qJvgVc5KJwk8eRUCIzYPITD4ALNDF QXOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754396737; x=1755001537; 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=gPoAix/bRF53Va2EIT5HaYLDIWPycCrapatLpJoZNqQ=; b=QP7BIoNXPV3jQNczs0c2WXOQ6XHQAVHvdMqI15k62PZBSNi/XhT013KVzU5lu+36dY 4JHw7I79F6IKIEwKWsJBbnYqFfhad2auKcy54NehjK6fG0YrGOTvmrpsWu8HLs8lFdn8 E3s4qWfLazqMuLJERZ6WRfxHQimcq9+IzMaSuqCLiwa9LZeS0bdurX0K62nrf6Ebd+8V wCN5e9V3iwYUOiA6ZcTHwcu8HUQWcIK4kvHmInIxm+8Yz63xcZNw7PeEuFa7nDtjMZvD 7RDwKH2veZyHiPgM2K4SFqnyiQW49wn3OgV2MpdlKE8DlOPllfbDsVT37xKQxNK+uTEk M80A== X-Forwarded-Encrypted: i=1; AJvYcCU8FIaXrUXY1GtUyJWCGbGIxplq2kqxSZEPNxGavBuFZ3/QPnZfga9suVVZD9UG1W7c51cbJxnqb1ph@vger.kernel.org, AJvYcCUHpzS0t0j3J+iFKLYkzYajKOSL9ygeiM9+9H7oQ9sJyk573pqyfE1yeqnLGZxgE/xvm6fDDDMXHcQlm8EQV/rIcVM=@vger.kernel.org, AJvYcCXYgeUZScvDv8GwQe0XQxg0SdzEimOtHdQgTTcv453kZe9RCzJhfYzyjvsU+3sDQwwav4gocg6ZTQRklWg1@vger.kernel.org X-Gm-Message-State: AOJu0YxGPefyN4tV4ru3leUC4GIIHrbnzZQvB2uP2UABhDTYbWV1VZgW ZtC8ViCrzgimrnA9JV+Fw72YFGMQ7MbE0b76R87GGOTB2KGMYALFPr1VrLTlkgX5 X-Gm-Gg: ASbGncu7f8ojJgTyVpncAxWTZ+7IxSYudmDCr2yzZyopVeaYm+95VgaJs12B02xRWtX 0v8vCQ4XDoW4yrFUrkIGU2RKialLHzeurHzuREHn3L2Ki9Yot9LqndOn8IJx2jEC6eni37Ty+LW pIIwn/balBhTFfiTgGpCbN5GOvbr5LwrS4/nnG9Eo7YaB4Wb/dTp0RYh34nOglTicWYQ+mHlCfe 9nQoNpTQQkMLkpF/pi18OoRD0r71LzOL1Ax9UDzc0OJlCoICJBFNbkboqJ5qK9LjQ97p56bwiBq JSHalsyx0jHM3IfKxHv+fetjk2aNg5gadcncQhOwSkr+CMow3zAbV3/qtmhqr9JDWtPhtnN0YW4 smnwW3Afve8qfs0yeNMAMtkwSaKKPr74pzCRQIVE3UDMiU84BinQrBfPKKXKgcWjsKAahSmBRYs yvoCGxZKlp X-Google-Smtp-Source: AGHT+IFSdsPuCN/qny8RYo8+ZZ+mjH0Fd3pV2IufyMr8jv2+EhjfpeBL35jepSfukzO4fESmn28k9Q== X-Received: by 2002:a05:6000:2508:b0:3b7:8412:4540 with SMTP id ffacd0b85a97d-3b8d94bb098mr8756244f8f.27.1754396737154; Tue, 05 Aug 2025 05:25:37 -0700 (PDT) Received: from iku.Home (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c48a05bsm19153986f8f.69.2025.08.05.05.25.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 05:25:36 -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 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 2/5] phy: renesas: rcar-gen3-usb2: Store drvdata pointer in channel Date: Tue, 5 Aug 2025 13:25:26 +0100 Message-ID: <20250805122529.2566580-3-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250805122529.2566580-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250805122529.2566580-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 fields. Update all references to use channel->drvdata->flags, removing the redundant soc_no_adp_ctrl and utmi_ctrl members from the channel structure. Signed-off-by: Lad Prabhakar --- drivers/phy/renesas/phy-rcar-gen3-usb2.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas= /phy-rcar-gen3-usb2.c index 47beb94cd424..cfa9667c7680 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 *drvdata; 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->drvdata->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->drvdata->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->drvdata->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->drvdata->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 @@ -778,6 +777,7 @@ static int rcar_gen3_phy_usb2_probe(struct platform_dev= ice *pdev) ret =3D -EINVAL; goto error; } + channel->drvdata =3D phy_data; =20 platform_set_drvdata(pdev, channel); channel->dev =3D dev; @@ -788,12 +788,9 @@ static int rcar_gen3_phy_usb2_probe(struct platform_de= vice *pdev) goto error; } =20 - channel->soc_no_adp_ctrl =3D phy_data->no_adp_ctrl; if (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, @@ -808,7 +805,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->drvdata->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 10:51:14 2025 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 67203271440; Tue, 5 Aug 2025 12:25:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754396742; cv=none; b=Zsc1JgR7/TiUaAbJoS3GTyNhkq9bYgMuTv+j9832pwTjTx7jnG6ktM/p5vFkI+M+oiZrs9U6qM72TD9TyYpY4hPz+x9UkOAcHlAm4fiBcLasZ2wGfKfCnrFqpk1v4EBo/04W44cq1PhSHyIQAdqkUakTfvSi3cMk7Bf1iVbPBSk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754396742; c=relaxed/simple; bh=NLOHCTqafirMK+HBsdlNTDWqDA9OlJ1lSqjRufLlNW0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IoT9rlg2xihonb53fGwyZedN2jsJFcAaKvVV2HIyhIzHF17PmvirPpp1dTaVTrBCAyp7Vrp3NLONZnj7R6ooVpAUh0VrIbz+YY6QTvZXrSvs538jgJKOnS7Iwsfgrf9iw1W4/TuG/+JUcWyNMw8/Umi7BW/6HJUlTZVCSSDmFHE= 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=Snl/jvIe; arc=none smtp.client-ip=209.85.221.54 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="Snl/jvIe" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-3b7961cf660so4307738f8f.1; Tue, 05 Aug 2025 05:25:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754396739; x=1755001539; 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=o1nM+ZKQrBb+Htee3aK8Av9Uv/f3aSiUUxHDlz6amBA=; b=Snl/jvIeDqJv/vC9GMyXz5aIb6MjnKaTazIwfLgkP5auUUO9RVzRpFMptUsicOhL9q TdEjataQ4D3StFw+x35YmligIvYMgTzAPRfbiGxNgeXW3PQyGjfrMNqWksz6QpSYenlB g+ra20HLzekZOJWkPmJEtmxWtbs/K0/LVTiIXz12AH0DKFzHEj5vyi1LkR2bMh5SscrL MHUyr7jQtqyr8StTuWBm86fb7PH533hIKqFcc5U/ExcFv8mDsqunaFNiBG2tO/jkMQFU CmC7i/PMTo2w/PfA9tuYZoq6Ba+/tJ0dpRhUYbKFffOiBnfJP7xRHQAZMF2F8xNZ7Rcg wQUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754396739; x=1755001539; 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=o1nM+ZKQrBb+Htee3aK8Av9Uv/f3aSiUUxHDlz6amBA=; b=MBywM7BnxYvhL+7LX7Ci1get10hzAza6gvnAkElGd/FJ/2Tou1lcekYhjElzbwOIqm Khb3gX5qZUMcKTwu5sKwfMoUKl3aICL31mP+D7Pw23LR6tgH3L7HzoRykmQ8izkt821e xzqJ0i+0IAYSOayERBKr+vG+AHrLTsgtlrk6tJuV95y+k90C++lXwoTKpAv/fSNyHaKs 0nAfDJkzdSjnjKHarTq2n9DPykidJf//yOXit2G7WuzvAjMtwTrrxpg5PO3YB2pwkX0J xHni7XNBgZf3zsIpwYNm4xQpvSKn/pOwYV+qOw2XS4gJSSU2emlcZVghJoe8PnshnXUL XRoA== X-Forwarded-Encrypted: i=1; AJvYcCVHxnxg+HtowYfC+9OjXc68OOjPE+k3u4Y7GljVkm2q0N//NcRWFIIVynWN1vQRZX9Rs9GNNWv5eSZk@vger.kernel.org, AJvYcCVzHNQaIV2Dx/M3MmDQw5CwvCaYhQT3r/R80pOenxacrFKZvZmWnTULlK7Q5jsQQzxBcvLdAfCJ1y5mq340@vger.kernel.org, AJvYcCXPJ5xirrmgJQkm5WPwC4TGKMzlnBOqbxLiLIIcbigKsGx+A5zEQmIMQNuN5rFR2qvRzhXc/aE4/yaaY3x1lcgbgVA=@vger.kernel.org X-Gm-Message-State: AOJu0YzPohOC9bj39YLZUuAi6pcrR+F+i344qyo8KhvO8+P3/Vbsu1Pu Jh+elCtktQ5XDmCZ9XiFxoTZW7AmLpgCORIn8Ua7EFiet//fNN15VUpo X-Gm-Gg: ASbGnctQckxmeVmGoj30PKatMaU3kuoLAHNVjXW+8lsei2eF8A1JbmlTQ+f2C5smr5Y fAxHVGywXzfyZyJ5l7Qj3QKRNmwAB4JWCrDfGPllhErAQKspEK+IrFjdwB6TthVJBNbMlrOYTwi 84Pmc3mu1xxgMxt6GIC6otlrUrefdIDm4GPGBq+eTLWiMfLhrjTlZLu6k5MrSA8YPIbMqQLZG/j A+u60D/FnqDoLIgRa9qHUFL7jY3J+0FbeGTMXUDYFvNY/MG40Ft41XDAkPk8KTxpmNe9K5OIpkZ IzXYKyxGdUcGbQsxW6s0jyo1/Es3iVcD43o8DTyMyCauaJ3AKaRNBjfEtr86/GSUjkkh24REA5G JLq5jBXU0UyVSjEq3w2j1fVdErD4UDZ2qFPo73rXqrpa3kPSll+qSHnDX93Y5467UCRb/SJxZFg == X-Google-Smtp-Source: AGHT+IHc5Icm1SVZv69DweZwMA+oPfcG9+hBe7KOaiBLVovbZ2Nqsy9UgfyhAA8WbXjZU5OUGPlLOQ== X-Received: by 2002:a05:6000:2912:b0:3b7:9d87:97ad with SMTP id ffacd0b85a97d-3b8d94bc889mr10154634f8f.37.1754396738587; Tue, 05 Aug 2025 05:25:38 -0700 (PDT) Received: from iku.Home (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c48a05bsm19153986f8f.69.2025.08.05.05.25.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 05:25:37 -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 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 3/5] phy: renesas: rcar-gen3-usb2: Allow SoC-specific OBINT bits via phy_data Date: Tue, 5 Aug 2025 13:25:27 +0100 Message-ID: <20250805122529.2566580-4-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250805122529.2566580-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250805122529.2566580-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 --- 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 cfa9667c7680..ea387941c6f7 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->drvdata->obint_enable_bits; else - val &=3D ~ch->obint_enable_bits; + val &=3D ~ch->drvdata->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->drvdata->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->drvdata->obint_enable_bits) { dev_vdbg(dev, "%s: %08x\n", __func__, status); - writel(ch->obint_enable_bits, usb2_base + USB2_OBINTSTA); + writel(ch->drvdata->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 { @@ -748,7 +753,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; @@ -788,9 +792,6 @@ static int rcar_gen3_phy_usb2_probe(struct platform_dev= ice *pdev) goto error; } =20 - if (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 10:51:14 2025 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (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 11BCE272E6B; Tue, 5 Aug 2025 12:25:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754396743; cv=none; b=J/IOnOunZFgaBlBuTwoZmPF3tq6TfhJsgpNsbAeUOLQddJTZGrgQtKWIcbuCHJWcnaBBWBmk2VSROFzmXHo+bxB3CkOj1UKkbqU1s8S/guROuULEVw96NVqrirI7jaBNn1+BlVWxhlloclo+bRKbkpSBkQhL/rlFuKo6hV1UiRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754396743; c=relaxed/simple; bh=1O5zHXh+S/UCKpaxUVHMa73GyulfpyJS1lSJBM2D5zM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IKM0VpsiiatqGieIAlPNXWI/hP1ppuIJeF+NMcTF6hfqeZe90ygmqT5MGP0Qd0SS2IxUQBdW9Iuz7FSY18ZkN1nqDCpMXg+YQOTQgnC9T4PlvlLk/rMSmlfCjeYE8EE1i8NSfQbzSVSSy+g/hXcrhs02kWRfYgILiL6hjo99nok= 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=Zd4xb3qh; arc=none smtp.client-ip=209.85.221.45 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="Zd4xb3qh" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-3b782cca9a0so3136791f8f.1; Tue, 05 Aug 2025 05:25:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754396740; x=1755001540; 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=lThia6UNIC5cwjXIaCqLK6IgfhMNO2J2y+mXQI59//E=; b=Zd4xb3qh4FfkeaJSch5XPeXYzJI/Q9QDGofW47xpEOf+Gmoom5Z4Y5gySlhg7ZTubw y6u5VjsCww/ejgQk5SZTcSJKWONVgIdljWEQ44zo++ykWjBWcv/DB6gmyH6Rdz+5Hcno xQg0IlzniZ2yeyLzv/Tj2bE2smukTAP9LhNdPVRVVtpVFcIZMZClQvs53meWI3JlSL2y hD8pQ8EVMC/UhIWNquAIzLZIwHxwCMVaVJNB5CYxCAqXhe57R75Har39fL2r7jSflEnR j2FILI6j4nXFsyX59Bjsr48jOWZLNJZmRROk51+n9QUWwmcW9dp7T8csUf7rzVBfxWYa BvMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754396740; x=1755001540; 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=lThia6UNIC5cwjXIaCqLK6IgfhMNO2J2y+mXQI59//E=; b=Pv91BDdY+nJs7TwWYHvhmaVMqLvGb8/o0BKTEM+SB3dETmbTHppZuP+3jb48OpjHKg JKvjDf1ZNpMXfJ4W2k8Af92Kw62RThUPo6EsR5Y3yyjCKg7+1eGhnAhBRIGWj+gm4soH UaXagLvLhm+ulnZzaXrxAxPbYZwvDpzKDLHZYqYQjKBxz4mNLMzlRWPg0puOXh7zL0R7 brBrT9fDhUz9SzW5wBUxTrVy8USvAeFldDuwfcnxlVYR8CA2J/n7rXL0SXdMnQEjhBS3 X+vS0i9hNNDJUkVLIrqLABksB5Qp1V+kRWYLmDRtuFSHD/BRJF/xgLywzvX1jJ65n4ob EdGQ== X-Forwarded-Encrypted: i=1; AJvYcCUoxrWEBZs8nrWP+F0I0D21q2xJbKkx0I2ZsDd7bUdyBI2kZQyBKxYVVQJkKUw0DigqUh289WoctgdA8vrG@vger.kernel.org, AJvYcCVwK56+nEpn8L7tykD+LxTktD1IPsMnvW7Urq7VoIbStcgv23poROf1er3vYppPmNL7I9mAyxlDSEVky/EtonBY0ag=@vger.kernel.org, AJvYcCX0TDP3D5DubfzLjBTXhyi3w6WaVfdoemLgc4nnDpDYSAcf5aYl4HwjiAZO7TYT1gEfSenxOErd5lTd@vger.kernel.org X-Gm-Message-State: AOJu0YydwjJAY4EdyhNbQFBvm7S82PJglyFUFh0t0+x7tGytiK4OOXPn jk3yXrhFqWveE+np1kM14oNjoIh6Li4audhHS4orNZvLwzi6AHCnmOiQ X-Gm-Gg: ASbGncu1PSSIkJImx980KB5YOhoRwnPfQfb9civfGZtVFkiipXoGUOYscG4JcFjsfcJ PsQ+AmO0bk+VdbeCG/B0B+HTVLzC1IDXVUutmbBP4x+ZXjk36mr8S9BO7zkjFQhkuxIHAXHaGFD SbG+Z+JDRHVpLewcEy+sFvm+SZJKDRsjwF3YOU8FJra0DE5aWRIjCq99OG8t3EQ2RAtlxtNraUZ GoHVpLNdw2oQvP7eRUMgrkfBMwI9qJU+7HSBrwbOcAOvu5k8+y2usDnzaNu2zEc8lGPd6h2WoY5 HMwS3DvX0rnzKTt1lx7sqK1iC1zJhqfz1eLcqiz9M1rZcmaCkF/RnlExVO0oK7CMiZHZxTZjY14 9QYffikWaHSIgxBjPeK+HcDQeWnbZNczCxmYfk2X2fqe5YNfvk3Mqk5J9Xx5qP6jj9LoOh7ie5A == X-Google-Smtp-Source: AGHT+IGXxBUU9vuUvHTKoYKPkNOeZohJuXOS7PEmwNsW0gcCJ8QGrpLu3vrLX/3S0AcGf/z2nw5m1g== X-Received: by 2002:a05:6000:1445:b0:3b7:8ddc:87a1 with SMTP id ffacd0b85a97d-3b8d946502cmr8692011f8f.4.1754396740034; Tue, 05 Aug 2025 05:25:40 -0700 (PDT) Received: from iku.Home (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c48a05bsm19153986f8f.69.2025.08.05.05.25.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 05:25:39 -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 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 4/5] phy: renesas: rcar-gen3-usb2: Add support for RZ/T2H SoC Date: Tue, 5 Aug 2025 13:25:28 +0100 Message-ID: <20250805122529.2566580-5-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250805122529.2566580-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250805122529.2566580-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 --- drivers/phy/renesas/phy-rcar-gen3-usb2.c | 85 ++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 7 deletions(-) diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas= /phy-rcar-gen3-usb2.c index ea387941c6f7..bc841982a19a 100644 --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -69,13 +69,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 +95,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 +146,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 +210,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->drvdata->no_adp_ctrl) { + if (ch->drvdata->no_adp_ctrl || ch->drvdata->vblvl_ctrl) { if (ch->vbus) regulator_hardware_enable(ch->vbus, vbus); =20 @@ -284,6 +293,21 @@ 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->drvdata->vblvl_ctrl) { + bool vbus_valid =3D false; + bool device =3D false; + + device =3D !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_IDDIG); + vbus_valid =3D !!(readl(ch->base + USB2_ADPCTRL) & USB2_ADPCTRL_VBUSVALI= D); + + if (device && vbus_valid) + return true; + else if (!device && vbus_valid) + return false; + + return !(device && !vbus_valid); + } + if (!ch->uses_otg_pins) return (ch->dr_mode =3D=3D USB_DR_MODE_HOST) ? false : true; =20 @@ -419,11 +443,20 @@ static void rcar_gen3_init_otg(struct rcar_gen3_chan = *ch) writel(val, usb2_base + USB2_LINECTRL1); =20 if (!ch->drvdata->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->drvdata->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 +466,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->drvdata->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 +500,12 @@ static irqreturn_t rcar_gen3_phy_usb2_irq(int irq, voi= d *_ch) status =3D readl(usb2_base + USB2_OBINTSTA); if (status & ch->drvdata->obint_enable_bits) { dev_vdbg(dev, "%s: %08x\n", __func__, status); - writel(ch->drvdata->obint_enable_bits, usb2_base + USB2_OBINTSTA); + if (ch->drvdata->vblvl_ctrl) + writel(USB2_OBINTSTA_CLEAR, usb2_base + USB2_OBINTSTA); + else + writel(ch->drvdata->obint_enable_bits, usb2_base + USB2_OBINTSTA); rcar_gen3_device_recognition(ch); + rcar_gen3_configure_vblvl_ctrl(ch); ret =3D IRQ_HANDLED; } } @@ -484,6 +538,13 @@ static int rcar_gen3_phy_usb2_init(struct phy *p) if (rphy->int_enable_bits) rcar_gen3_init_otg(channel); =20 + if (channel->drvdata->vblvl_ctrl) { + /* SIDDQ mode release */ + writel(readl(usb2_base + USB2_VBCTRL) | USB2_VBCTRL_SIDDQREL, + usb2_base + USB2_VBCTRL); + udelay(250); + } + if (channel->drvdata->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 +674,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 +712,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 10:51:14 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.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 28EF72741D6; Tue, 5 Aug 2025 12:25:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754396745; cv=none; b=NkvFt77XEuVtHQ8A1y6O5saXO+4CRuxHk0kHXsyh+F2fngW+G1j+b5G3Iyq6femXOcp2F7rmwzR5Zg2h+qtg5kdy1NLFm8aIfmh4lrikjh7lCMENvTVEzGH16XrXzxwjvaixVLTxejWaHeMKy+wekvibCBb2I8SkKel/H0YQKdo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754396745; c=relaxed/simple; bh=/1UVdeIxiArBDaXt113w0qdj6KH4xU6g1TwRI2I2qB0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SNNpx+4HVbj15QUXex4o+Wqs+LL9PsW0nNiWKgfI6fpTRo5C6nQ/RfDpEy+jurhsltOlVPrk3fgFSIN7LjVD6lTyp0OkoiSIa0kmkGsFX1SaU3OQpSJgLY5r2q49484/MMO5BhVY7xpeCjQXdxZkMPEqGyNpSggyHVFi4w7xkts= 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=BuAYuYFZ; arc=none smtp.client-ip=209.85.128.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="BuAYuYFZ" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-455fdfb5d04so29766455e9.2; Tue, 05 Aug 2025 05:25:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754396741; x=1755001541; 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=mSDq+Hn2dE0wUvavZKQ03gFbBr/qOvzFs7wRJoGmD5I=; b=BuAYuYFZmAFuaBlOPNClltz78va2tWelDI82XE5oBVJT6Q3lZ3M62qxediPNwLO7Qy Guw9nkNd5MLSeH5t9hl4MkknVW3x54vXWdde7k8tbDKoxHWuDSGqIUcAALHSKfqGd55u T+7JkWLk4W66O9ImsW7YNlJIF/HfFY/vDZvj9P5eJ+sK4bZtflSIfIP+F+FKCTj3LHdE FlO3ChMrI9WOMSS/szsqpJpk9dToRsdvW42CM9W5Xscmc6tOfjrGn3aeuc8EVwATzxc2 vwdungVa9N7/iNNvlEmkr3UlgU+kJf74KfgufaeSEhSJ36xwcYUyh8BbfmmF5uWZO2RB cIEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754396741; x=1755001541; 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=mSDq+Hn2dE0wUvavZKQ03gFbBr/qOvzFs7wRJoGmD5I=; b=qY/Mphq9yhZ5fFeml71ked9XdoHBsgEqyGaC2ZCLRxrK9GxOD93z+I5uY7z6MK4B8A OfauTqzVsg6wY1L33xOwKClHBZx4UpLK00BAIRAmWWCyOLOqMgKyRhUtZo60/J0PD0cU Ey2pmh5YbiFTUhcW24unyjKJkPSNv9X2voAwvxfZ4GtoPS55EDDxGVE+K+7uJ4T0Dyte sUIg1cbBUDZfrSLmM5EbN7dlmc7UVjkUGMYbarckGI9zYxQEQJSK3uzu8rEpY8GsYAiB 5KBBLMHoeEUK7UdgX2SYr3HlVJsZ2T/LCcZj605GQ9vcGi33ffKs73VLUv5gbIo31kzx btAg== X-Forwarded-Encrypted: i=1; AJvYcCUv4uOZYde+k5B7P+K/eXFWaE3f2gk88Gg0xiyg72S6dsaZ4snlCB03jGYIWex7NA+STIpQWLxgooiV@vger.kernel.org, AJvYcCXTjg6QigCC6/4SLeH9djvZmjQuakEBohXUggh00wfA35AwHyCqwi63oLwd6LBHGnxp/Um2zw4IXXu/c9HFydO6OxE=@vger.kernel.org, AJvYcCXXU/kj6wYwHEYLifuAMr/nIiPWD+xJNsVe0TsKClGnNDZlOWdN7NA6sOayj7ctFRs7IehFsWk2x6Z73TcH@vger.kernel.org X-Gm-Message-State: AOJu0YzYLZaqLhrONOrlYv3L6hvtY0lzOA5idNgy4theA3OiJITdl/Ct WOr1ismzDsmN7hXZt/WlmZmhT4ShKgmZqNIatUDH+gUAXV3gXr6WOJtOH89adxHg X-Gm-Gg: ASbGncvecm6KNbj3J1QKQ8hKuwEqroJtktAAm/Eqc2oBZ8HSAh6O+5TuLUQnRWzp2dn eXawOxboVcBot/kaCh05iNA+setgBO5n+fM0BiBNDpZqg3mmAau9b91xdn56g/i7HYCYieKNUGd uYbUSEjd5srWSOPsQyYApSnSRYPZiwci6iHvXxpJGL4M3r+rKP6uUyafz3BUIM8d3AY/fwE7DhR 1WI9Grzf/pGOw/46u0i+RruFUuC4zX8MY86K/6Bw65LDwdQT1fYeGYQg/H/rvFupSPqn9NA4k/P 1IZgsmkmFrzRTh7UNw3e00GBAWOsA7CdTL7rQYBdJbpRd8QfQ9sr0jIR5ii2oy1yhuiVBWHzgfh uw/mfwUuhzaniEA+H4YprNQoI5HGJfvrelbulTKVYXw/t0n96vpXDRwz9qla3Yc71lJiYETo7pw == X-Google-Smtp-Source: AGHT+IEy0zA+ghxMfTtdoc1SPyYprPnGLBo5MjQWsC90kxL/dA+l2LKxoz8yb8Dy7AGzGDkZvD9z2Q== X-Received: by 2002:a05:6000:24c8:b0:3b7:99cb:16f6 with SMTP id ffacd0b85a97d-3b8d94ce483mr9806106f8f.53.1754396741365; Tue, 05 Aug 2025 05:25:41 -0700 (PDT) Received: from iku.Home (97e54365.skybroadband.com. [151.229.67.101]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b79c48a05bsm19153986f8f.69.2025.08.05.05.25.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Aug 2025 05:25:40 -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 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 5/5] phy: renesas: rcar-gen3-usb2: Move debug print after register value is updated Date: Tue, 5 Aug 2025 13:25:29 +0100 Message-ID: <20250805122529.2566580-6-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250805122529.2566580-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250805122529.2566580-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 --- 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 bc841982a19a..86689d0cf74a 100644 --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -209,7 +209,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->drvdata->no_adp_ctrl || ch->drvdata->vblvl_ctrl) { if (ch->vbus) regulator_hardware_enable(ch->vbus, vbus); @@ -223,6 +222,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