From patchwork Fri Dec 6 16:31:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 13897437 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3AADDE77173 for ; Fri, 6 Dec 2024 16:34:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=BSlKmgnd2PccFwXIMNOFSvrkSG/D4Fw38VNRvFzSfus=; b=lrepIcPRH7pfCV 9nZqpSKyj+r3J4pIjMB3HtfOdESU5cXedAuVQIOfIgRnIyjCAgyOCa2pIpFD2v1YZjZl4/o4nvkj5 S2MGL4BxtDDwc6wNFFEaFzZl9IPGP1WWSpf8E4nyVfy89A+UMN0cRI29+PXY2deJwhwL1j+Fx8qrl kphOjKlmJBsIyVMWzjeD4lLlqzi8pzs6DYz/9sTHlvBL85QmKbKl+mgm7zNDvIWnHDQv+nrOwHpy7 40xphP1SiQ41vaO6UJfHLvSMwIAeW11lf4/k4TDyWXCBop+207McUu4FgsxLqphJdmpeVcEQ/YWVC 81ycSGX6vNR9IRzftZow==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tJbHR-00000002B83-45e8; Fri, 06 Dec 2024 16:34:13 +0000 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tJbEO-00000002ACx-1PO9 for linux-phy@lists.infradead.org; Fri, 06 Dec 2024 16:31:07 +0000 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-5d3d74363cbso328574a12.2 for ; Fri, 06 Dec 2024 08:31:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1733502662; x=1734107462; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=VPcp32i194zjkohuP3ghdoazYclk/zwkpzXjsI6FYvY=; b=cJiC1N3RpzTfC+2WemAML9EZFB1y/XRY+qAyzWojTtaZ41YVLcwyZ6c8aBjNfCD2uO KXI6hAqrHBmIdc3fXyrPJvCcq0ue1iHaBrUgIvaUsjjhLoetJFQjxl7xRAHZG6lLGbwW kM7TVfajl63AxERS1cocTamFrXwXxo6ket83EC6/RRuMZIxhYuwMy0AgjTLtdqbfFg5O X9fuXaZT9dDPecwklBeZk3yx5Wp+w4447bcRs5TjMOoiQRFd7qvqDXsfc42wZg+/oKgf zlNoof3SMannJHHKCVxzST6yCf6pR04cblT/v0UEAU421xwcM8DD5tkp9xY6DajZ0OBn ACDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733502662; x=1734107462; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VPcp32i194zjkohuP3ghdoazYclk/zwkpzXjsI6FYvY=; b=EAJu2iLE9eluqCcMBK0e7lve2MDOb6jbrYm9XUfZ7YTFIdgCvwH0zFSDOBAf5Kz0AA UYWQu2zL1HtAWVv01+w1Zo2aogaJNHOmZvGwVQ1sXXjqSmZtVaySqYQyKyi6zVcrHC+0 +Qbho++sqdU4QkT0IXdTXLgNTBgynjAadgtnO17dhIxpapux9J1vFi3Q7xSxffD2xb++ 4lyUf0bEgeGrEWVCiVbmOKN/UhBR7pg6Mho31o62+5cbtaA8inl9SCfaspOhfqVavmx7 UefCSNkSSqSKmPhLsUn/U+iIMZoC8C1neaYveOEc9VgremdLldaK393y2XuUj1gfvBE9 Z64g== X-Forwarded-Encrypted: i=1; AJvYcCUx3MM4hL2XclUC2FN3h/uthIsg7h4qg2juBi0TjtyTnjyrV4G1xQlcNOdQcpEdlNGvqi2Bt3+E3pA=@lists.infradead.org X-Gm-Message-State: AOJu0YyeRHVaDH5iOiiKOZ9Ve0WizVSnjiCRaJKse/Bqp9RMbz2pj0Vs HpxZaIkzhkRzfWJ3hoFDiRoaVP/vVA2M/aUnCFvX1PAu7UuROR5DXpmPlTo6RJ4= X-Gm-Gg: ASbGncunxp4O0RhxR8+gxrvNohxO7mpPJKSOPDbGx8ozb6Qz9WRyK/JHBQfN4DZUeKh m0Gj+sW3fgyPUMLCIgNcyBS//sVEr6+qr4hPOxxyc9jOdhmhFIUuoCevNbfgPByPvZc8d2dETez ye1cx9IvflO+4C/dCj4lN+ISmu3V3pu4hBUWe7qtNOVieA/slnT0JPxO7ES3k+B8S9p7seOR8cK +i6vs/BoG3ehH9jReb93qGI7mOdA3U0zePOErAuprYscI8E/Y51yGtSJRLTxpj4ipyao62qdKWO bDvp07WMFrMcJdBeEABqGDsl8iKv61GA0g== X-Google-Smtp-Source: AGHT+IEYYMQ/h9d08asabi/0+odqzF/CyOlSqdYyLjSN9hUXcwqfK0GjZYzhh1sXE6LLkhg8iDS+AQ== X-Received: by 2002:a17:907:9145:b0:aa5:1cdf:7c02 with SMTP id a640c23a62f3a-aa639fa52d3mr294338966b.3.1733502662183; Fri, 06 Dec 2024 08:31:02 -0800 (PST) Received: from puffmais.c.googlers.com (64.227.90.34.bc.googleusercontent.com. [34.90.227.64]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa6260e8af8sm257710266b.191.2024.12.06.08.31.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 08:31:01 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Dec 2024 16:31:01 +0000 Subject: [PATCH v4 1/7] dt-bindings: phy: samsung,usb3-drd-phy: add blank lines between DT properties MIME-Version: 1.0 Message-Id: <20241206-gs101-phy-lanes-orientation-phy-v4-1-f5961268b149@linaro.org> References: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> In-Reply-To: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Szyprowski , Sylwester Nawrocki , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Sam Protsenko , Will McVicker , Roy Luo , kernel-team@android.com, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.13.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241206_083104_375384_97301DF6 X-CRM114-Status: UNSURE ( 7.02 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org In [1], Rob pointed out that we should really be separating properties with blank lines in between, which is universal style. Only where properties are booleans, empty lines are not required. Do so. Link: https://lore.kernel.org/all/20240711212359.GA3023490-robh@kernel.org/ [1] Reviewed-by: Peter Griffin Acked-by: Rob Herring (Arm) Signed-off-by: André Draszik --- v3: * update subject line (Rob) * collect tags v2: * collect tags --- .../devicetree/bindings/phy/samsung,usb3-drd-phy.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml b/Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml index 16321cdd4919..1f8b35917b11 100644 --- a/Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml +++ b/Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml @@ -83,14 +83,19 @@ properties: pll-supply: description: Power supply for the USB PLL. + dvdd-usb20-supply: description: DVDD power supply for the USB 2.0 phy. + vddh-usb20-supply: description: VDDh power supply for the USB 2.0 phy. + vdd33-usb20-supply: description: 3.3V power supply for the USB 2.0 phy. + vdda-usbdp-supply: description: VDDa power supply for the USB DP phy. + vddh-usbdp-supply: description: VDDh power supply for the USB DP phy. @@ -117,6 +122,7 @@ allOf: - description: Gate of control interface AXI clock - description: Gate of control interface APB clock - description: Gate of SCL APB clock + clock-names: items: - const: phy @@ -124,10 +130,13 @@ allOf: - const: ctrl_aclk - const: ctrl_pclk - const: scl_pclk + reg: minItems: 3 + reg-names: minItems: 3 + required: - reg-names - pll-supply @@ -149,6 +158,7 @@ allOf: clocks: minItems: 5 maxItems: 5 + clock-names: items: - const: phy @@ -156,8 +166,10 @@ allOf: - const: phy_utmi - const: phy_pipe - const: itp + reg: maxItems: 1 + reg-names: maxItems: 1 @@ -174,12 +186,15 @@ allOf: clocks: minItems: 2 maxItems: 2 + clock-names: items: - const: phy - const: ref + reg: maxItems: 1 + reg-names: maxItems: 1 From patchwork Fri Dec 6 16:31:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 13897439 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2F15FE77173 for ; Fri, 6 Dec 2024 16:35:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=VugotS20M+jRfHmakgF9cuBe+j99kM2ZlUJygH6H75U=; b=kWJ8/DyBygsY2S 3kasxhwLX1eNiwQatStKF3aIfkdqLBXv6JqI0MdxAl06EA65bzPWXAyWgjpBLXm8UpWgBqJClPlPW YYPwEds9z5j79ig/0g5YJ4jPBK+YxgIS3klRTjYXoFoZebtNYrjvFXC0cnLrb2OIu6KpziPsNr7QR Xf9/kb4s63izF8ys86FqqKgBeLQPOry0HxsvhpXWJ1YTTuQ5KmUpunCq53JWCP3U4cS9deM7AFi3/ zoa74gLrqOozHsHtqPUfaAJcYxpq7kJLJIxlSkuKRusy+QKaOI+jRbHX0ZCl2uptKlyMSfXw5xcOS eG5CpyG8fqb0SbIM6h6A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tJbIR-00000002BTP-3zTe; Fri, 06 Dec 2024 16:35:15 +0000 Received: from mail-ej1-x631.google.com ([2a00:1450:4864:20::631]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tJbEO-00000002AD2-2MUt for linux-phy@lists.infradead.org; Fri, 06 Dec 2024 16:31:07 +0000 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-a9f1d76dab1so68311166b.0 for ; Fri, 06 Dec 2024 08:31:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1733502663; x=1734107463; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=PKgkddTbsb36SqzZl1dMALspeUepmvmFxGiaTIa2E3A=; b=f1/Gb1LVDJ2gygESXZ1YGtEpkj2zaIWqbsfaspr3BGU9ZFUPnjEyFS2o4giyvSsqMF Ocjd7zFlzjd4Inr4yC3PQ61oCV1JR2airmMq4W5MlsO0DYOSOI12+KecZLCoddUjfijl VSzGQ9JK9oc2GvfNrBx30xjQ23CZBD33gNJ+OLzwBTQS5fiZE8AuATupbczD1k3gb+J0 mP9BUNGDpNi4lnVol/VkfIIGAOHQPg4ZVBKUrqUYCsreeFgvjDnxH7g8rdou3AJy/fmi xfSEfjBKYzOxSrGzaWJpmifjqK0SAwE/rHsNbC7SjkpwqFIUZSY9a6an5de3K3ZBlclN XWSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733502663; x=1734107463; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PKgkddTbsb36SqzZl1dMALspeUepmvmFxGiaTIa2E3A=; b=n66iZwIbHskqty283U5itTEysF2inyuLRDzLIAF7qA5rzahlPbyb3DaVBJGFIs79zH 0R1VnKlrwAthzvp1im+hgJe4pyAFSlYsWvgwYA5iBqPikTMfC4zhRf0V8bwd6Rrm8e+4 Ved0sxMTlqzCtrzrzV7PVhy2b3AOdpHY91Uzk+1lXFdV7JSxLBL5Tw29Zk5eFwNAtS+b 3ORJWapyxP7MMQn7q0DEjh0arSgXcacz04UmZFuwUB/ybghrfiBgqYRnN78jPT2uADMb ZyHxgo5MsRWiGJDrfrybEGefFtqeIa18L1dhk4sGZh3gbVJ1LcKk1gM8jJaeA+ccSUZK SysQ== X-Forwarded-Encrypted: i=1; AJvYcCXhAs949wdpx12Dnd9G2af5+OH6/8S7jYHerUKpgeMyCjpKj68h+8CPHSt0XdS47nP0eAng40gaw0Y=@lists.infradead.org X-Gm-Message-State: AOJu0YysT/PKWmN3MKQrb8YkumMARwHtTkMrqeZ865L4CgDuPIaoHtoE wsqrfHRArsQni3adile4My6n+HJQWcu8BbcWWpRBdjPJ7wwe4RhnydR/QOVDCrE= X-Gm-Gg: ASbGncuJG1RTAFu17lT/wMdMC8jGn5edCuJEwKK7GdGxVmvFe8cEBaB79UBpd0a/Er0 jtOUBx8TZYz60opGXa91eATLr9Mg/SYOoA2G3vvsY8b3zUnnhdFa9+XqeS0D8Ll3Ku87hW50Y7S JlFiL+mtltV5D+3cb9GOGnmNBXZOAL8QCGrK2UkqwIYFyEQtI4mZQGsTTPG+9F1r/qMgbXXEDma xmGSop5BY1XP+hRifNry4X4LsROOaf0uGnkrnmyw5pFRvQ28dRadKwEajFMRXZeFgTGm8pMz9nx 5tvpYPdVU1VZpC2EqV0oQBTpDA+XcbTXCg== X-Google-Smtp-Source: AGHT+IGRlX7BIbgKcq4E8LlKztNa00vBgQAERS4YEdJ5MYW+4Wqp/mGqY/4IqsX/I0DaInCg04SuNg== X-Received: by 2002:a17:907:7841:b0:aa6:32c0:5d05 with SMTP id a640c23a62f3a-aa639febf00mr320394766b.13.1733502662697; Fri, 06 Dec 2024 08:31:02 -0800 (PST) Received: from puffmais.c.googlers.com (64.227.90.34.bc.googleusercontent.com. [34.90.227.64]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa6260e8af8sm257710266b.191.2024.12.06.08.31.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 08:31:02 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Dec 2024 16:31:02 +0000 Subject: [PATCH v4 2/7] dt-bindings: phy: samsung,usb3-drd-phy: gs101: require Type-C properties MIME-Version: 1.0 Message-Id: <20241206-gs101-phy-lanes-orientation-phy-v4-2-f5961268b149@linaro.org> References: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> In-Reply-To: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Szyprowski , Sylwester Nawrocki , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Sam Protsenko , Will McVicker , Roy Luo , kernel-team@android.com, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.13.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241206_083104_605488_624E092B X-CRM114-Status: GOOD ( 10.89 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org orientation-switch is the standard declaration to inform the Type-C mux layer that a remote-endpoint is capable of processing orientation change messages. The USB PHY on gs101 needs to be configured based on the orientation of the connector. For that the DTS needs a link between the phy's port and a TCPCi, and we'll need to inform the phy driver that it should handle the orientation (register a handler). Update the schema to enforce that by requiring the orientation-switch and port properties on gs101 (only). We disallow orientation-switch on all other supported platforms, since other versions of this phy (or its system integration) don't currently support or even need it. Even though this new required gs101 property is an ABI break, the intention for the driver is to behave as before if it's missing (meaning for gs101 it will work in SS mode in one orientation only). Other platforms are not affected. Reviewed-by: Peter Griffin Signed-off-by: André Draszik Reviewed-by: Rob Herring (Arm) --- v3: * update as per Rob's suggestion (I hope :-) v2: * squash original patches #2 and #3 * actually disallow orientation-switch on !gs101 (not just optional) (Conor) * update commit message to clarify that the intention for the driver is to work with old and new DTS (Conor) * collect tags foo --- Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml b/Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml index 1f8b35917b11..27295acbba76 100644 --- a/Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml +++ b/Documentation/devicetree/bindings/phy/samsung,usb3-drd-phy.yaml @@ -114,6 +114,8 @@ allOf: contains: const: google,gs101-usb31drd-phy then: + $ref: /schemas/usb/usb-switch.yaml# + properties: clocks: items: @@ -139,6 +141,8 @@ allOf: required: - reg-names + - orientation-switch + - port - pll-supply - dvdd-usb20-supply - vddh-usb20-supply @@ -198,7 +202,7 @@ allOf: reg-names: maxItems: 1 -additionalProperties: false +unevaluatedProperties: false examples: - | From patchwork Fri Dec 6 16:31:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 13897438 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 76771E77179 for ; Fri, 6 Dec 2024 16:35:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=aA/MWKcMHvlEvSF2mytGD25q2yXqc/rACkiW3VE4c8U=; b=jkCs7kwiCFKwqc +dGwLuXqSe00twqpVvaTTAFgumVphpCkdXvCXjzNVSj+7aF3SQ3bqnC79cK80ggka64eFHI1Mfi8g ttmZuJ57NrRDlBoMmUlVlCZH4bk+m2HOPDW1RL4Xm628dfU6ex1J0DJwjudRbdJuBveRJh8wATI5O 0Ju4sR4bKhmUMOgT4qIXOA2X07afbhG806l070MgVHZtEbmOnXWf2jhxnxORCGXZurSFPhwz6VXoV aG6iJwerdPQEzaIhtLs2mYNIzxR14XtkEZVpznJ8wOYVj+WxulUNM6PGUcSzblUuqtCftTJU7a1Ns Hh5Ew3wsbPFfLWkWY4Sw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tJbIS-00000002BTt-0wNK; Fri, 06 Dec 2024 16:35:16 +0000 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tJbEP-00000002ADT-28QD for linux-phy@lists.infradead.org; Fri, 06 Dec 2024 16:31:07 +0000 Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-53df119675dso3004403e87.0 for ; Fri, 06 Dec 2024 08:31:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1733502663; x=1734107463; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=H11rnIjZ/6A+y0BhElAhFFU5gZO2NZydl8Xc9FZjLpY=; b=oKT9uGmUWvsupxgmEMebfD8zhvFhR+J7axPfIuTycsrQVY/Jcxt9Henvfhif0bDVfQ lQOeBz6wljqM93nd5YL9+H7oFJfw+y9JxPmORgcr9sCZ6aPceh8wMl6nKf0GO1/GfZOu AWJHs7RTpeZqNy3eQXpC4bDcm+Oo+g07h0aCLVZl8PxQCpLIE6KwNt/51zD1C61dIsA6 AtEoPn2DO4Pe777wD1JtDcmuZpjVRwY4fo3c5sTsfGnRJz/o8YkaiQMb2gG4L23fFMPP BiNxMI40Xe0za4CvXE0hxiTMoDYC8NZtbOEE0WjQKnxPQ4q2QRiEoCiax7LkuO04tY3y 3Yaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733502663; x=1734107463; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H11rnIjZ/6A+y0BhElAhFFU5gZO2NZydl8Xc9FZjLpY=; b=JKeMbsSAqujBR82pqeLHhoVS2XIhL7qjUFXwAdNVUYH48Jj/NLTn/8IbY6qV9B5aMn 98i0GGVSxnE1RcyGffGV+/jX4mxYIAoNwomgMj5UiTZv6LDGxpLQENfet/0D449dE9ye JZZWoIWrw355/sxAMEmfniH62X4R9H2mRpFazfqi2b3DFuO/MSw8TY/fbalV6uTV8D6C W++JaP2O14mwRBlGWvdC0qjIfVhWr2qa7uBF2eGtYv84VqXiAnM944yzQNzHIpRFGPzt NBmNEi5w0EtUNw+XguZ0x+TTawhCfESKPgEdVpsaBs+ADNlmXIDROQykX/B36+ZJkMHZ hpig== X-Forwarded-Encrypted: i=1; AJvYcCUxfeFiyA5+lUhZDnr86O6VMACOLQc7IKNFAmHM9KbIoS8nNDlHUIfN/PQoJ9oh/Pa7CbV9Pp6RyEg=@lists.infradead.org X-Gm-Message-State: AOJu0Yy337iNQQQeaEvXHXuPbr1gUpXZhEZy0/cKbH5ssh+i1ibSrgRq 0CXj9AA3PLZ75QGlaeneWcTmeSFRsen615/jlFfQksmdW0IP7KDvRAWOSapJi5s= X-Gm-Gg: ASbGncsLx3tE60XR3f8Img9xhq88Mg1yPCNuYCirhf9F6pqd8rn8wizJRh3QB7itF9D mR12/l7Oh6EVbmqG9SNG3L0c9qJpZN9rvfd0FQiNjH/7u5Op2Jm6xCfcvh5zP3xqlg/ZtqzUxzn qFwE+Rpv52ZuJiG0nbstSsElM0I6jpm5+86G85uvadbiDtivsHajP5GckFtKEGdRuZZ5/M99vAh IVAJ9pfRUVV2PddGmRbBFfDLk3X9UT4JXh8nGKforEeacn4e2qHDf+7ayrjHfsLhqVx3a2kqiXt NbYjpL4a7dJ0/nG3uvRLBxw+HHy9IFKebw== X-Google-Smtp-Source: AGHT+IExkzoUN1HflnT9opUQAW9MqmmpGeThLHiF2BwdjV6cAu9grD1ih7bZFlXxIc4t4D7GinRxbw== X-Received: by 2002:a05:6512:ad1:b0:539:da76:c77e with SMTP id 2adb3069b0e04-53e2c2ac7fcmr2130253e87.5.1733502663241; Fri, 06 Dec 2024 08:31:03 -0800 (PST) Received: from puffmais.c.googlers.com (64.227.90.34.bc.googleusercontent.com. [34.90.227.64]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa6260e8af8sm257710266b.191.2024.12.06.08.31.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 08:31:02 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Dec 2024 16:31:03 +0000 Subject: [PATCH v4 3/7] phy: exynos5-usbdrd: convert to dev_err_probe MIME-Version: 1.0 Message-Id: <20241206-gs101-phy-lanes-orientation-phy-v4-3-f5961268b149@linaro.org> References: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> In-Reply-To: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Szyprowski , Sylwester Nawrocki , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Sam Protsenko , Will McVicker , Roy Luo , kernel-team@android.com, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= , Krzysztof Kozlowski X-Mailer: b4 0.13.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241206_083105_538429_BA2B2C5F X-CRM114-Status: UNSURE ( 9.93 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org dev_err_probe() exists to simplify code. Reviewed-by: Krzysztof Kozlowski Reviewed-by: Peter Griffin Signed-off-by: André Draszik --- v2: * collect tags --- drivers/phy/samsung/phy-exynos5-usbdrd.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/phy/samsung/phy-exynos5-usbdrd.c b/drivers/phy/samsung/phy-exynos5-usbdrd.c index c421b495eb0f..ceae4b47cece 100644 --- a/drivers/phy/samsung/phy-exynos5-usbdrd.c +++ b/drivers/phy/samsung/phy-exynos5-usbdrd.c @@ -1725,10 +1725,9 @@ static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) reg_pmu = syscon_regmap_lookup_by_phandle(dev->of_node, "samsung,pmu-syscon"); - if (IS_ERR(reg_pmu)) { - dev_err(dev, "Failed to lookup PMU regmap\n"); - return PTR_ERR(reg_pmu); - } + if (IS_ERR(reg_pmu)) + return dev_err_probe(dev, PTR_ERR(reg_pmu), + "Failed to lookup PMU regmap\n"); /* * Exynos5420 SoC has multiple channels for USB 3.0 PHY, with @@ -1759,10 +1758,9 @@ static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) for (i = 0; i < EXYNOS5_DRDPHYS_NUM; i++) { struct phy *phy = devm_phy_create(dev, NULL, drv_data->phy_ops); - if (IS_ERR(phy)) { - dev_err(dev, "Failed to create usbdrd_phy phy\n"); - return PTR_ERR(phy); - } + if (IS_ERR(phy)) + return dev_err_probe(dev, PTR_ERR(phy), + "Failed to create usbdrd_phy phy\n"); phy_drd->phys[i].phy = phy; phy_drd->phys[i].index = i; @@ -1786,10 +1784,9 @@ static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) phy_provider = devm_of_phy_provider_register(dev, exynos5_usbdrd_phy_xlate); - if (IS_ERR(phy_provider)) { - dev_err(phy_drd->dev, "Failed to register phy provider\n"); - return PTR_ERR(phy_provider); - } + if (IS_ERR(phy_provider)) + return dev_err_probe(phy_drd->dev, PTR_ERR(phy_provider), + "Failed to register phy provider\n"); return 0; } From patchwork Fri Dec 6 16:31:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 13897440 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0B1EEE7717D for ; Fri, 6 Dec 2024 16:35:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=DB4yv9J3CDDL6Tlkdlos9Oh5A0f2bdLYqepjVpCzP/c=; b=iFuiiGLWnzRtwk lCG/IZ5SkJcb6GEW8QWCeJAHNqZ74dXsPl6iojGZzE/YEQCd/9UPyxn4y9zoTmRELHX+TLIOmtOdL cHQNrBpj6xn4dxaRXdfiAY3xV3EtMXFr72CS5aKzz1+AkI8D2TEBMwvkKE7CIy2t31rYwJ0dKcbSL yCFl5+n+Gv3RyOUDUbyYXaQzwKF5bH0LF4nJQ43EMKN+NAM+Qjln8n99WDYh85LMuTyuDnzrN+VxE E1gvvF7qrKgeqlhqUyz0sh7IiXtdCaZFf0r1hxqgmL1Ri5HmPMnbTXNPOv+swQ8OU8kt2BNYuySTa kfq47le0V7b9O8YFpncg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tJbIS-00000002BUc-3I2I; Fri, 06 Dec 2024 16:35:16 +0000 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tJbEP-00000002AEJ-3W2U for linux-phy@lists.infradead.org; Fri, 06 Dec 2024 16:31:08 +0000 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-385e1f12c82so1954443f8f.2 for ; Fri, 06 Dec 2024 08:31:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1733502664; x=1734107464; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=XyAJZWh204Jg961AaAOy2+aPUgd1uUQOUoQ33ic9q34=; b=KhcHPotYrU6XRRnuI3kkqTobLkcadO8v33TKusIJzxpX3G9ULAwUb898dRxx3R+4ta cJuuFmDalBnG+PLkyCU5WZQID01YyWKLM9IfPAPjVGxy/JU0akiPeP8/ZCE4byiPZ/J3 9tpD0S6WIqSkwHy6TEtEEVh+2LYgz+rE3lKg+0nta96pcQ8CmIKKRGRthsqA8weDec5V qM6/hmhk5Z8lo663a/GWLXEN2zoBs8Km3uRucH1Vq2b/m/OHDGuTLUk1tKYJkKneECtt AwUcxgl8Ujv9JdlTBxrNFcwV4hIRuNITyjLt/6vXoUQnEdgUIM+IVO5pA6NQReEjgq2f v6YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733502664; x=1734107464; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XyAJZWh204Jg961AaAOy2+aPUgd1uUQOUoQ33ic9q34=; b=k9iNV0O5tYDqSS5ud6cD0Kf8S7pFG5r3Z9jCi4W0aCPbWfsviaP0PxMkWVz/fj2Wrz cFhCHiSYuqQewvSrQ6m/8SHKwDerQPRhAm30Q0AwEBS6q2YhgejTS+KZQWLmhXciv880 hprfjqtRdoWfME8Bvs/sxAUdGo5srG2iGfTslFVhlGu25p0MalyUp6/b+olK0t5cbN1v ZBHABw31QHVLd1pJm+l51em9gC7BfInNCEa7eYQFDv+khrsPez4AFJAWxcYAmh3wcXMX IV50oQlIlFX0o1gJloZjLdDP0ZxMZwvIvQJTfRcNN9hbUVrGANp1ryEDMgkk1xbmUwMn h1jg== X-Forwarded-Encrypted: i=1; AJvYcCWoFmbUj1abHBqwIlBxXomXp8MyOQIIi5QjC2xX8WoxcP3hzOi9AUzq2n4WA71q6sO7pNSKNAACZpQ=@lists.infradead.org X-Gm-Message-State: AOJu0YyPogdwOMwPldNtlc74SrOY/qd+/eoVmYijFCG/QgdMJfml2gdr kmg9eBot5MfOt4RecJ0GhCFoSHqX3FpjhrUje+uPt8n3QlOMK2xXYdp6MOQ6/UQ= X-Gm-Gg: ASbGncthMQW7snlUe0zF6HkmVBEUGhbUx1CX6inCz+/izpBxW0u5o9bdTdqrgmEdx0f IpIJ70cZjJQ569NI2DFYODBwq9vbZREgkkvZspTJW1fCnqNurQ6u60vDFRDWwyFRaNngCsbpWHa nG63z7nDdLUFMesDG0cHmhisCkE6Ebmtp8Kg9bDU0aA6MKG2z8MiyfplmZwIQtRVa5vaIX97uns CIPOlr2/8dUSNbzwPu+L5DhRyaUe8p4F2cnMe+TeYyNkkiLVApdLrquaTvgqRgzCmZyqkn2UCha NQ0f4RKBFRywLp0qF6eAJI0XsImi8KTh4g== X-Google-Smtp-Source: AGHT+IG1rlIGyO/nnPLuP1Na7RwgQmQmvS86new+NKYuNxLnewiatbb2kxtQ1hikVy0uIxEBRnzdMw== X-Received: by 2002:a05:6000:1865:b0:385:ed1e:20fe with SMTP id ffacd0b85a97d-3862b3e649amr3139459f8f.59.1733502663773; Fri, 06 Dec 2024 08:31:03 -0800 (PST) Received: from puffmais.c.googlers.com (64.227.90.34.bc.googleusercontent.com. [34.90.227.64]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa6260e8af8sm257710266b.191.2024.12.06.08.31.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 08:31:03 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Dec 2024 16:31:04 +0000 Subject: [PATCH v4 4/7] phy: exynos5-usbdrd: fix EDS distribution tuning (gs101) MIME-Version: 1.0 Message-Id: <20241206-gs101-phy-lanes-orientation-phy-v4-4-f5961268b149@linaro.org> References: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> In-Reply-To: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Szyprowski , Sylwester Nawrocki , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Sam Protsenko , Will McVicker , Roy Luo , kernel-team@android.com, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.13.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241206_083105_887485_22F70F7F X-CRM114-Status: GOOD ( 12.34 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org This code's intention is to configure lane0 and lane2 tunings, but for lane2 there is a typo and it ends up tuning something else. Fix the typo, as it doesn't appear to make sense to apply different tunings for lane0 vs lane2. The same typo appears to exist in the bootloader, hence we restore the original value in the typo'd registers as well. This can be removed once / if the bootloader is updated. Note that this is incorrect in the downstream driver as well - the values had been copied from there. Reviewed-by: Peter Griffin Tested-by: Peter Griffin Signed-off-by: André Draszik --- v2: * collect tags --- drivers/phy/samsung/phy-exynos5-usbdrd.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/phy/samsung/phy-exynos5-usbdrd.c b/drivers/phy/samsung/phy-exynos5-usbdrd.c index ceae4b47cece..2a724d362c2d 100644 --- a/drivers/phy/samsung/phy-exynos5-usbdrd.c +++ b/drivers/phy/samsung/phy-exynos5-usbdrd.c @@ -1510,8 +1510,11 @@ static const struct exynos5_usbdrd_phy_tuning gs101_tunes_pipe3_preinit[] = { PHY_TUNING_ENTRY_PMA(0x09e0, -1, 0x00), PHY_TUNING_ENTRY_PMA(0x09e4, -1, 0x36), PHY_TUNING_ENTRY_PMA(0x1e7c, -1, 0x06), - PHY_TUNING_ENTRY_PMA(0x1e90, -1, 0x00), - PHY_TUNING_ENTRY_PMA(0x1e94, -1, 0x36), + PHY_TUNING_ENTRY_PMA(0x19e0, -1, 0x00), + PHY_TUNING_ENTRY_PMA(0x19e4, -1, 0x36), + /* fix bootloader bug */ + PHY_TUNING_ENTRY_PMA(0x1e90, -1, 0x02), + PHY_TUNING_ENTRY_PMA(0x1e94, -1, 0x0b), /* improve LVCC */ PHY_TUNING_ENTRY_PMA(0x08f0, -1, 0x30), PHY_TUNING_ENTRY_PMA(0x18f0, -1, 0x30), From patchwork Fri Dec 6 16:31:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 13897441 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BC19AE7717B for ; Fri, 6 Dec 2024 16:35:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=1+64KXXNapcc9nkDD9sEt3XdPEITpdb5caI3gxoLlyQ=; b=0PhCtYkypZPWIn b+smftF3GRstCoSi1eCylZqm3Gvt6TEQRWuw/L3rm8Y7fyxGEdgS9fmqitFzw+atZ26dGZuZwNSUs V+K8Gua33wG5QbsnK6A1nztgErXV9pyenxdBes3wjEDlKvd+UkD20W7gkr8PofE4fPiVWNTyqvYVV h/l3fJxY9itQmdXs1OtgN+1eFGRALXRCJqQqh77pxGWU1reDLj+pDP+l5kqeI+uYpPJlFT+VWPoyt iRjj8wl6/5VTxHybjcIstC6hLKNfD/NjTGt1h0a7x0KpbKkmx8+IHYiiP3WQWhYDM1j8ZUcXtsziE cYizUPPERNRoroY/jRAg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tJbIS-00000002BUI-27ls; Fri, 06 Dec 2024 16:35:16 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tJbEP-00000002AEo-2ldT for linux-phy@lists.infradead.org; Fri, 06 Dec 2024 16:31:08 +0000 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-aa1e6ecd353so350568966b.1 for ; Fri, 06 Dec 2024 08:31:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1733502664; x=1734107464; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=HPP5c8pu/eBBjcmsKsNPv6zfp1yvfxbHuQGEFAVxnBk=; b=dAx9JobJTKXKinzerbtbmxC7z53runLMUOntSKQexWkPOTwgdOCn2KHDPX8nlmUinN bwl91tC+Ou7LIxGNwAWRQBZNbZyv2c3u1jBGyCKN/YmFsM8DkPLmNDmX8sI18KgTqr0I lNv/ZhILF0qjXU9Hb0V9za2eBoiE2i5RgR3bRSyChGj+wU0+bwOs4/2BbIn2upN3gwly Q5KZ5HQ9Y2kgozBiV4DC39+BvYD7IucN2FHOjZyNH8s45cxnxeFPTLS/hV5PTRKpuuWc L/1OKk4jYpWRv6Gfeo0Uaa7ucpYImf/Uz3Gn6r34u69c9ysmtx0tpHGCvLC08eR14Xig IAYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733502664; x=1734107464; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HPP5c8pu/eBBjcmsKsNPv6zfp1yvfxbHuQGEFAVxnBk=; b=lFGo3qVg/pQHSZun/JL3hsPifFX/vQvASCXahnyqO1Ya95Uuxvupxol4sDIwjhcJwK IV8rgChW2KDZZoQR8Awmmyhun1es67Lb4wTkpV2BZBT+0MM8Jli0JfzBDNScpn5G32kr cqaudvk3X/scT0iST8tYeeXXlHUjZsE7Le+uXxqfBC++TDnvx3+Rw5Fin6zZDTX/YJMc vM9dEmNzLC/ge6XJCWkBrI3hBII72Yz/gvEcOVpkIloe+lwCDabYaf0LzqIatLusT8wU SDcu9vtvdyg9VQvkR24QIH/WxwBTZzX4ZLRIcXM/tojddnuRVU+Kx9tk/iKTlxjUWkUc k4rQ== X-Forwarded-Encrypted: i=1; AJvYcCWIkNj5vULck6V5ZpD1FlQF7ye8CKhIcCoBGSIXMOt+Q+4pLgkn5uFU3eggiKx5NWillqfVHPfWEFo=@lists.infradead.org X-Gm-Message-State: AOJu0YyMA/Jm9NmFa8hOT6AHTzUC3cUow/ug7TODogUJ7QeADKhjy7rA cH+IaHpXmXLbiMkXbQsCG7l0jREZR2OlsidP3HFNJ+93bnQRbx2+dS5GOAZ9swM= X-Gm-Gg: ASbGncuZ6qj8/iQE9MtlAClv7SwNxfsVVjONlGONxVfq78vKfC0E7OP/MExYkuhCSxV 2PqXwlUQ0Gbylx6TD+JoEEyendbjA3Fp41j35OOAGto4l6vg3Ylw70LhjuqlyfHkGTiZzb2yj0h uPiKA1xc80S9WO9gK80nsAsKUpHnbg7uaX/vHcICZCcjEEFzr/9j0449BopYTYPazPDjhzzrNz2 vIxBZumf1TvJ88uRdHO4ZhkNt8fPJFBY5SGml9spltgfCko5BQZefte2JhwmQe8VAJPivSVcI83 G7Beh2ODmMZgNOCajvSv+0t64B/XNaQkJQ== X-Google-Smtp-Source: AGHT+IF0uwzYhahKwpQYpBdboLh/QXBH7mKUfu774OKt/A3dvzGhzk66TWaKHzqzwzigsHn6DM6krA== X-Received: by 2002:a05:6402:1ec2:b0:5d0:cfad:f71 with SMTP id 4fb4d7f45d1cf-5d3be7215damr8856222a12.32.1733502664348; Fri, 06 Dec 2024 08:31:04 -0800 (PST) Received: from puffmais.c.googlers.com (64.227.90.34.bc.googleusercontent.com. [34.90.227.64]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa6260e8af8sm257710266b.191.2024.12.06.08.31.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 08:31:03 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Dec 2024 16:31:05 +0000 Subject: [PATCH v4 5/7] phy: exynos5-usbdrd: gs101: configure SS lanes based on orientation MIME-Version: 1.0 Message-Id: <20241206-gs101-phy-lanes-orientation-phy-v4-5-f5961268b149@linaro.org> References: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> In-Reply-To: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Szyprowski , Sylwester Nawrocki , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Sam Protsenko , Will McVicker , Roy Luo , kernel-team@android.com, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.13.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241206_083105_749161_E49B9C3A X-CRM114-Status: GOOD ( 21.27 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org USB SS lanes need to be configured based on the connector orientation - at most two lanes will be in use for USB (and the remaining two for alternate modes like DP). For the USB link to come up in SS, the lane configuration registers have to be programmed accordingly. While we still need a way to be notified of the actual connector orientation and then reprogram the registers accordingly (at the moment the configuration happens just once during phy_init() and never again), we can prepare the code doing the configuration to take the orientation into account. Do so. Note: the mutex is needed to synchronize this with the upcoming connector orientation callback. Reviewed-by: Peter Griffin Tested-by: Peter Griffin Signed-off-by: André Draszik --- v2: * collect tags * replace #include typec_mux.h with typec.h, and move the former into next patch (Peter) * commit message typo (Peter) --- drivers/phy/samsung/phy-exynos5-usbdrd.c | 72 ++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 21 deletions(-) diff --git a/drivers/phy/samsung/phy-exynos5-usbdrd.c b/drivers/phy/samsung/phy-exynos5-usbdrd.c index 2a724d362c2d..61e0de4b3d4b 100644 --- a/drivers/phy/samsung/phy-exynos5-usbdrd.c +++ b/drivers/phy/samsung/phy-exynos5-usbdrd.c @@ -23,6 +23,7 @@ #include #include #include +#include /* Exynos USB PHY registers */ #define EXYNOS5_FSEL_9MHZ6 0x0 @@ -209,6 +210,10 @@ #define EXYNOS9_PMA_USBDP_CMN_REG00B8 0x02e0 #define CMN_REG00B8_LANE_MUX_SEL_DP GENMASK(3, 0) +#define CMN_REG00B8_LANE_MUX_SEL_DP_LANE3 BIT(3) +#define CMN_REG00B8_LANE_MUX_SEL_DP_LANE2 BIT(2) +#define CMN_REG00B8_LANE_MUX_SEL_DP_LANE1 BIT(1) +#define CMN_REG00B8_LANE_MUX_SEL_DP_LANE0 BIT(0) #define EXYNOS9_PMA_USBDP_CMN_REG01C0 0x0700 #define CMN_REG01C0_ANA_LCPLL_LOCK_DONE BIT(7) @@ -383,11 +388,13 @@ struct exynos5_usbdrd_phy_drvdata { * @clks: clocks for register access * @core_clks: core clocks for phy (ref, pipe3, utmi+, ITP, etc. as required) * @drv_data: pointer to SoC level driver data structure + * @phy_mutex: mutex protecting phy_init/exit & TCPC callbacks * @phys: array for 'EXYNOS5_DRDPHYS_NUM' number of PHY * instances each with its 'phy' and 'phy_cfg'. * @extrefclk: frequency select settings when using 'separate * reference clocks' for SS and HS operations * @regulators: regulators for phy + * @orientation: TypeC connector orientation - normal or flipped */ struct exynos5_usbdrd_phy { struct device *dev; @@ -397,6 +404,7 @@ struct exynos5_usbdrd_phy { struct clk_bulk_data *clks; struct clk_bulk_data *core_clks; const struct exynos5_usbdrd_phy_drvdata *drv_data; + struct mutex phy_mutex; struct phy_usb_instance { struct phy *phy; u32 index; @@ -406,6 +414,8 @@ struct exynos5_usbdrd_phy { } phys[EXYNOS5_DRDPHYS_NUM]; u32 extrefclk; struct regulator_bulk_data *regulators; + + enum typec_orientation orientation; }; static inline @@ -647,22 +657,38 @@ exynos5_usbdrd_usbdp_g2_v4_pma_lane_mux_sel(struct exynos5_usbdrd_phy *phy_drd) /* lane configuration: USB on all lanes */ reg = readl(regs_base + EXYNOS9_PMA_USBDP_CMN_REG00B8); reg &= ~CMN_REG00B8_LANE_MUX_SEL_DP; - writel(reg, regs_base + EXYNOS9_PMA_USBDP_CMN_REG00B8); - /* - * FIXME: below code supports one connector orientation only. It needs - * updating once we can receive connector events. + * USB on lanes 0 & 1 in normal mode, or 2 & 3 if reversed, DP on the + * other ones. */ + reg |= FIELD_PREP(CMN_REG00B8_LANE_MUX_SEL_DP, + ((phy_drd->orientation == TYPEC_ORIENTATION_NORMAL) + ? (CMN_REG00B8_LANE_MUX_SEL_DP_LANE3 + | CMN_REG00B8_LANE_MUX_SEL_DP_LANE2) + : (CMN_REG00B8_LANE_MUX_SEL_DP_LANE1 + | CMN_REG00B8_LANE_MUX_SEL_DP_LANE0))); + writel(reg, regs_base + EXYNOS9_PMA_USBDP_CMN_REG00B8); + /* override of TX receiver detector and comparator: lane 1 */ reg = readl(regs_base + EXYNOS9_PMA_USBDP_TRSV_REG0413); - reg &= ~TRSV_REG0413_OVRD_LN1_TX_RXD_COMP_EN; - reg &= ~TRSV_REG0413_OVRD_LN1_TX_RXD_EN; + if (phy_drd->orientation == TYPEC_ORIENTATION_NORMAL) { + reg &= ~TRSV_REG0413_OVRD_LN1_TX_RXD_COMP_EN; + reg &= ~TRSV_REG0413_OVRD_LN1_TX_RXD_EN; + } else { + reg |= TRSV_REG0413_OVRD_LN1_TX_RXD_COMP_EN; + reg |= TRSV_REG0413_OVRD_LN1_TX_RXD_EN; + } writel(reg, regs_base + EXYNOS9_PMA_USBDP_TRSV_REG0413); /* lane 3 */ reg = readl(regs_base + EXYNOS9_PMA_USBDP_TRSV_REG0813); - reg |= TRSV_REG0813_OVRD_LN3_TX_RXD_COMP_EN; - reg |= TRSV_REG0813_OVRD_LN3_TX_RXD_EN; + if (phy_drd->orientation == TYPEC_ORIENTATION_NORMAL) { + reg |= TRSV_REG0813_OVRD_LN3_TX_RXD_COMP_EN; + reg |= TRSV_REG0813_OVRD_LN3_TX_RXD_EN; + } else { + reg &= ~TRSV_REG0813_OVRD_LN3_TX_RXD_COMP_EN; + reg &= ~TRSV_REG0813_OVRD_LN3_TX_RXD_EN; + } writel(reg, regs_base + EXYNOS9_PMA_USBDP_TRSV_REG0813); } @@ -700,21 +726,18 @@ exynos5_usbdrd_usbdp_g2_v4_pma_check_cdr_lock(struct exynos5_usbdrd_phy *phy_drd int err; err = readl_poll_timeout( - phy_drd->reg_pma + EXYNOS9_PMA_USBDP_TRSV_REG03C3, - reg, (reg & locked) == locked, sleep_us, timeout_us); - if (!err) - return; - - dev_err(phy_drd->dev, - "timed out waiting for CDR lock (l0): %#.8x, retrying\n", reg); - - /* based on cable orientation, this might be on the other phy port */ - err = readl_poll_timeout( - phy_drd->reg_pma + EXYNOS9_PMA_USBDP_TRSV_REG07C3, + /* lane depends on cable orientation */ + (phy_drd->reg_pma + + ((phy_drd->orientation == TYPEC_ORIENTATION_NORMAL) + ? EXYNOS9_PMA_USBDP_TRSV_REG03C3 + : EXYNOS9_PMA_USBDP_TRSV_REG07C3)), reg, (reg & locked) == locked, sleep_us, timeout_us); if (err) dev_err(phy_drd->dev, - "timed out waiting for CDR lock (l2): %#.8x\n", reg); + "timed out waiting for CDR(l%d) lock: %#.8x\n", + ((phy_drd->orientation == TYPEC_ORIENTATION_NORMAL) + ? 0 + : 2), reg); } static void exynos5_usbdrd_utmi_init(struct exynos5_usbdrd_phy *phy_drd) @@ -1184,7 +1207,8 @@ static int exynos850_usbdrd_phy_init(struct phy *phy) return ret; /* UTMI or PIPE3 specific init */ - inst->phy_cfg->phy_init(phy_drd); + scoped_guard(mutex, &phy_drd->phy_mutex) + inst->phy_cfg->phy_init(phy_drd); clk_bulk_disable_unprepare(phy_drd->drv_data->n_clks, phy_drd->clks); @@ -1203,6 +1227,8 @@ static int exynos850_usbdrd_phy_exit(struct phy *phy) if (ret) return ret; + guard(mutex)(&phy_drd->phy_mutex); + /* Set PHY clock and control HS PHY */ reg = readl(regs_base + EXYNOS850_DRD_UTMI); reg &= ~(UTMI_DP_PULLDOWN | UTMI_DM_PULLDOWN); @@ -1698,6 +1724,10 @@ static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) return -EINVAL; phy_drd->drv_data = drv_data; + ret = devm_mutex_init(dev, &phy_drd->phy_mutex); + if (ret) + return ret; + if (of_property_present(dev->of_node, "reg-names")) { void __iomem *reg; From patchwork Fri Dec 6 16:31:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 13897442 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C3F22E77173 for ; Fri, 6 Dec 2024 16:37:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=GfYoGc/K8S74HEotv6P0zBm2OjWx1FbOhaTNbiRY0lM=; b=1pVL4R9XnNaZq4 Ifi1xHuCAhd9z5VQsskSj9BwmwM8klqdeYr/OSKU5A0gO5b0OB53cMFLuZYwh1hfi4h37l3sVdoAQ XflbnKjJI30vaM5cUpeX5/Rz06DtpBHIfiRo+nvqlD+agBxlN9bR1drNCOb7SV4cKcz75Ko3CtB+L k43v5ovZORLjair05RftMGS+IIaTk++UkRvyejgpOptOgJoW4xG/eGMHpzpYahswGMu6L1MlhUule WEpSy727+Fqj9PgLnIj74urnTLsGn0Bs05ylWuwVU+C+PFZ3oMv+BztASj6q0eelXj2aw20/XhTux u1sujoAOChIZXvfbTBMg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tJbKR-00000002C3l-2Ghm; Fri, 06 Dec 2024 16:37:19 +0000 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tJbEQ-00000002AF4-1CIn for linux-phy@lists.infradead.org; Fri, 06 Dec 2024 16:31:08 +0000 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-aa5325af6a0so356924966b.2 for ; Fri, 06 Dec 2024 08:31:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1733502665; x=1734107465; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=LXCLmnvsdZndLgej1FOJpSFQm/25z8Ym6KzN52uYasw=; b=McPxZ9z8Pa71EdrFKQvo/Gr9RgYXjsJqqpD9flocWiIxoSTsBqut7/pLGKKesdR4jA HH4SDCfoxGQGWALCr+RrMLkKtCxF6PHzzMZVTEVpE2T8eyTTeS5wT6t9q0JLMLoMQKB0 OjIrlXhAklEzYnHgtGZ8wd6+TCudJlqJmG4+NgOnaA1o/dYRn+fiYa4pReMzPOavsMpp JIyd9gp3VpwVhyGOX7Cgd+dKBwGOoZNlipzFSDO05u1C9q5rvIT4KybdjZ6nsvYQvjR8 mPoEMQ2ThxHhMpGcsrcXWIQoC3Uh4IW6dALI8ESyWj6f3vVNc4gebdgUI0Q/5k0Gnex7 ygTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733502665; x=1734107465; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LXCLmnvsdZndLgej1FOJpSFQm/25z8Ym6KzN52uYasw=; b=Fax1+dme+xkY51/EIrCpMATg8GN926HC1QD+H8FG5ZKs+o8fFv7e8vgDSdfC9BiHwV LEkw/I56SU6hMEmCbsPFJ14tOLxQK30VDUM2x5ZySNir0mRKse95rfVdA4mKg55iRSE/ PjOFxuk+YIhfiisrDqFdixyezhp6A6XLq+LHd24eXgxTXCpyO3+/h1cZDHumxq0kxCPD FlaZZ0p+ovtwF40dTYPByoSYJKPaLIo7q65MwXeiQr6nJIugHhH17T/oh+o3eRPR1Bk8 nWP1+skmgUmH6hnZsRA9y2oNE45oluAwiN9GaVn6PepaBlpsbum/IHKZXB6BJbb+YK2W vMag== X-Forwarded-Encrypted: i=1; AJvYcCWg6J+RnfpxOTly/aWbXSQGmmcbTIYh0YvDfaLAY1UA+/Htl99B8LXJ6GLe/618XkgAFbC/EKBk/qk=@lists.infradead.org X-Gm-Message-State: AOJu0YxOb47lFMOnrxKHBvGY86ltSph9M8sq3aYZ+yC9K5hBrIuzyEUT rF9VSKJpbqPSoGY6MoK8/b8c6AOQCogdyUooqG2kAmXnhEpXslOwnEojpz4Tx6o= X-Gm-Gg: ASbGncuuRH8cpC6ylFKCDzi+sB3Krpa9cVnDsymICBfronAEzzkVBQxRFToCLhuyyAz 8U6QCjP6oLxxWAUebiZeLJDbTGVUYkxDvyj7kujWlTGT4f3LlTFFwBbXPUnBBE8uiKSZjBhDB+B gnGEiL2PqtxNYirtw/KoX+DZP1TptuXWRFwCLucuTMXz1BqyDL6pgO3oc46KkM+HW5IlgNBKoIm tB0t4kfr6JNLeXk5RpzJlZrKbnmtqn7eqDcerSuEUBa8/mIoROPvgQgKoKUOtSr2FxkRgv36KFy +PE7IELCOhVPFSVFU2PIzpTAMD155e6bgg== X-Google-Smtp-Source: AGHT+IE3dSSPOFbEcuaDJ4aqvtGwpINMyqS4vaGKxwRrqFEWJNjc/LOYtTgNWvcadsFJ1ENxhoDVuw== X-Received: by 2002:a17:907:6196:b0:aa4:a3be:28dd with SMTP id a640c23a62f3a-aa63a254ab9mr340005666b.55.1733502664857; Fri, 06 Dec 2024 08:31:04 -0800 (PST) Received: from puffmais.c.googlers.com (64.227.90.34.bc.googleusercontent.com. [34.90.227.64]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa6260e8af8sm257710266b.191.2024.12.06.08.31.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 08:31:04 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Dec 2024 16:31:06 +0000 Subject: [PATCH v4 6/7] phy: exynos5-usbdrd: subscribe to orientation notifier if required MIME-Version: 1.0 Message-Id: <20241206-gs101-phy-lanes-orientation-phy-v4-6-f5961268b149@linaro.org> References: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> In-Reply-To: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Szyprowski , Sylwester Nawrocki , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Sam Protsenko , Will McVicker , Roy Luo , kernel-team@android.com, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.13.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241206_083106_317106_5CD04510 X-CRM114-Status: GOOD ( 20.34 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org gs101's SS phy needs to be configured differently based on the connector orientation, as the SS link can only be established if the mux is configured correctly. The code to handle programming of the mux is in place already, this commit now adds the missing pieces to subscribe to the Type-C orientation switch event. Note that for this all to work we rely on the USB controller re-initialising us. It should invoke our .exit() upon cable unplug, and during cable plug we'll receive the orientation event after which we expect our .init() to be called. Above reinitialisation happens if the DWC3 controller can enter runtime suspend automatically. For the DWC3 driver, this is an opt-in: echo auto > /sys/devices/.../11110000.usb/power/control Once done, things work as long as the UDC is not bound as otherwise it stays busy because it doesn't cancel / stop outstanding TRBs. For now we have to manually unbind the UDC in that case: echo "" > sys/kernel/config/usb_gadget/.../UDC Note that if the orientation-switch property is missing from the DT, the code will behave as before this commit (meaning for gs101 it will work in SS mode in one orientation only). Other platforms are not affected either way. Signed-off-by: André Draszik Reviewed-by: Peter Griffin Tested-by: Peter Griffin --- v3: * drop init to -1 of phy_drd->orientation (Vinod) * avoid #ifdef and switch to normal conditional IS_ENABLED() for CONFIG_TYPEC v2: * move #include typec_mux.h from parent patch into this one (Peter) --- drivers/phy/samsung/Kconfig | 1 + drivers/phy/samsung/phy-exynos5-usbdrd.c | 56 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/drivers/phy/samsung/Kconfig b/drivers/phy/samsung/Kconfig index f10afa3d7ff5..fc7bd1088576 100644 --- a/drivers/phy/samsung/Kconfig +++ b/drivers/phy/samsung/Kconfig @@ -80,6 +80,7 @@ config PHY_EXYNOS5_USBDRD tristate "Exynos5 SoC series USB DRD PHY driver" depends on (ARCH_EXYNOS && OF) || COMPILE_TEST depends on HAS_IOMEM + depends on TYPEC || (TYPEC=n && COMPILE_TEST) depends on USB_DWC3_EXYNOS select GENERIC_PHY select MFD_SYSCON diff --git a/drivers/phy/samsung/phy-exynos5-usbdrd.c b/drivers/phy/samsung/phy-exynos5-usbdrd.c index 61e0de4b3d4b..8fc15847cfd8 100644 --- a/drivers/phy/samsung/phy-exynos5-usbdrd.c +++ b/drivers/phy/samsung/phy-exynos5-usbdrd.c @@ -24,6 +24,7 @@ #include #include #include +#include /* Exynos USB PHY registers */ #define EXYNOS5_FSEL_9MHZ6 0x0 @@ -394,6 +395,7 @@ struct exynos5_usbdrd_phy_drvdata { * @extrefclk: frequency select settings when using 'separate * reference clocks' for SS and HS operations * @regulators: regulators for phy + * @sw: TypeC orientation switch handle * @orientation: TypeC connector orientation - normal or flipped */ struct exynos5_usbdrd_phy { @@ -415,6 +417,7 @@ struct exynos5_usbdrd_phy { u32 extrefclk; struct regulator_bulk_data *regulators; + struct typec_switch_dev *sw; enum typec_orientation orientation; }; @@ -1397,6 +1400,55 @@ static int exynos5_usbdrd_phy_clk_handle(struct exynos5_usbdrd_phy *phy_drd) return 0; } +static int exynos5_usbdrd_orien_sw_set(struct typec_switch_dev *sw, + enum typec_orientation orientation) +{ + struct exynos5_usbdrd_phy *phy_drd = typec_switch_get_drvdata(sw); + + scoped_guard(mutex, &phy_drd->phy_mutex) + phy_drd->orientation = orientation; + + return 0; +} + +static void exynos5_usbdrd_orien_switch_unregister(void *data) +{ + struct exynos5_usbdrd_phy *phy_drd = data; + + typec_switch_unregister(phy_drd->sw); +} + +static int exynos5_usbdrd_setup_notifiers(struct exynos5_usbdrd_phy *phy_drd) +{ + int ret; + + if (!IS_ENABLED(CONFIG_TYPEC)) + return 0; + + if (device_property_present(phy_drd->dev, "orientation-switch")) { + struct typec_switch_desc sw_desc = { }; + + sw_desc.drvdata = phy_drd; + sw_desc.fwnode = dev_fwnode(phy_drd->dev); + sw_desc.set = exynos5_usbdrd_orien_sw_set; + + phy_drd->sw = typec_switch_register(phy_drd->dev, &sw_desc); + if (IS_ERR(phy_drd->sw)) + return dev_err_probe(phy_drd->dev, + PTR_ERR(phy_drd->sw), + "Failed to register TypeC orientation switch\n"); + + ret = devm_add_action_or_reset(phy_drd->dev, + exynos5_usbdrd_orien_switch_unregister, + phy_drd); + if (ret) + return dev_err_probe(phy_drd->dev, ret, + "Failed to register TypeC orientation devm action\n"); + } + + return 0; +} + static const struct exynos5_usbdrd_phy_config phy_cfg_exynos5[] = { { .id = EXYNOS5_DRDPHY_UTMI, @@ -1786,6 +1838,10 @@ static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) if (ret) return dev_err_probe(dev, ret, "failed to get regulators\n"); + ret = exynos5_usbdrd_setup_notifiers(phy_drd); + if (ret) + return ret; + dev_vdbg(dev, "Creating usbdrd_phy phy\n"); for (i = 0; i < EXYNOS5_DRDPHYS_NUM; i++) { From patchwork Fri Dec 6 16:31:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 13897443 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B9D06E77173 for ; Fri, 6 Dec 2024 16:38:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=rOcFIlJgK/rOjFoTiogTrCVUI07hqZSu4zKgw1Ck+OU=; b=KudMb+VDLGR1z6 SgrwRQioDsrSfPS9us7Za5t7DAzCjeHloMfk6TX0ECahiqQtAwwfDARFH+KJh2YArbaFo/ePwNf4/ pzrDoMxbNQW40x+XVtl7+MnR4JSkauQJ4Ps5VR0WzYmlR4BdX8Zvd8fISQNtuCllBS7nTGRzHYsPj BRON8ylXTgM36JTfMoMuX80LwRlLfhRVTbys+10TyIsA7QJxLNAN4s2sIoDcJDCGfU/SawG1A4gA5 UvFK7HFaURqKl4d6ubjK7hP0pPZcy6BG2ApeKRXP+ad+GIzslmAbAXT8h5bPDiSQezFI0njWuE4uJ Y5IHLkDqTCt7U560zIsg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tJbLS-00000002CJe-2594; Fri, 06 Dec 2024 16:38:22 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tJbEQ-00000002AGA-2wlp for linux-phy@lists.infradead.org; Fri, 06 Dec 2024 16:31:09 +0000 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-aa51b8c5f4dso164923866b.2 for ; Fri, 06 Dec 2024 08:31:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1733502665; x=1734107465; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=uFUL3kCwx3cUbzg7B5UVd/jZ4AQMlp0js1yIPxGumCU=; b=U1RMAdwDHmwwJ/9S4iAJ+o3H7Q8+HWcWVhzfwXmQH7fLJrl6Ju+KdIULNhQw9jCnXf QGy2vOTod93SGUxi2uyDXJR+hf3iijB52xzt7d5kzPuGHjPL0iqYUjyOuxPnC1h6TdBV ttE56Z197btBsm3o3/ijmt0Gl8q3l49JKqdhvQ/3hQTuGVxDx2fDGInUc+AhYO1FDF4X mQhzuHG8IgocPVD7s2jgd325ax2cFP3t7WbF70fTXQt6O+RknCX6cFShd3yHuJU1oEwf qcWzb0X5rYjNKNuIKv2KqP4Jp38tJGiJ0ML3x6cQ/Isf/kPTbLhTSaDT4Fp5JVl6Ymoy lL4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733502665; x=1734107465; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uFUL3kCwx3cUbzg7B5UVd/jZ4AQMlp0js1yIPxGumCU=; b=T7vMLrnCF9DTH9qmHQ81GVE5osjHfxGcEFQY93jUGctB1lG2wW08Gf1Ny/miwyDOwn V9ro0gPllFiSqTVTGeJ/xp0+kqiYabLLPJilOQW45BsoDh7Snw+mm9Cl0SwYxNrCK5oC C510OrfF1gY6L0O8OkjHwohwIfTH2XdR5LnPVJqCdXooKVyGzLPzgc4RK/fLLQd6x4z8 /Ybg+9ISc7nbgZ/biUrhTWAURBTrykod4MSt1dci+enlZvUvDdNaRNLaXIqjL5EbePhG L9J5jk+47i0tJBTJPU1TXINUq+y6oRFcjx9+T8DYzOvC++6+9hA9cA2Wb0lrE+C1CYjL /5Pg== X-Forwarded-Encrypted: i=1; AJvYcCUTcGA2GGGZC4G+n31XMckaCH/03TC8E2o6ESef4673dfHsnsSej4Pw+mg1N4WCPYYl0TRR2WPFAqE=@lists.infradead.org X-Gm-Message-State: AOJu0YyVTvpxeVSxPAFeDKRWw7plyDRK2jnMKaVSeDlJpXxlm7CwVZsI BILeaXpH+nbkOU7to8vO8G6xb6wvnPr6atKOSBN+ds6BA9eQhK3D+Ku4negYO5g= X-Gm-Gg: ASbGncs+OjDsFFmmm62cMkrIAXkRgKbVuCOBA36C1g0z4nX/439UTbBG5SfjPIw8DHx EzfPenMvKmf0ybhnKWxjVzXjT/8Ion1G2VnMQvx7UxF9JQnASAsGiBcoGAIAMC9yrvFyUV0D7aT 9S1OUe8qEnamYovCFOrH9zfZ3u3BsC9cv3TyjZ2URHhF8ZHInayuHF8eRuv1baT3egmu5vL5+si YIGsJM+8RPRX8zSi4iMfovS3kVtKq1d9nQTGuFAUNEnEYx6SxjLVhgBYa4v6TQTl7Ga4Cg/XFnH AYBB4VI9jFSBLHW+GurgWq72ZEVsD447pg== X-Google-Smtp-Source: AGHT+IFdGgwrC3n71nQi/9MjgKXvQ3xt8s29XoT1ICJHQ14fSF1EZzWFJtu/VD99oVNhBiVQ1DgX2Q== X-Received: by 2002:a17:906:310d:b0:aa6:2ff8:d62d with SMTP id a640c23a62f3a-aa63a2419ccmr313287766b.45.1733502665369; Fri, 06 Dec 2024 08:31:05 -0800 (PST) Received: from puffmais.c.googlers.com (64.227.90.34.bc.googleusercontent.com. [34.90.227.64]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aa6260e8af8sm257710266b.191.2024.12.06.08.31.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 08:31:05 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 06 Dec 2024 16:31:07 +0000 Subject: [PATCH v4 7/7] phy: exynos5-usbdrd: allow DWC3 runtime suspend with UDC bound (E850+) MIME-Version: 1.0 Message-Id: <20241206-gs101-phy-lanes-orientation-phy-v4-7-f5961268b149@linaro.org> References: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> In-Reply-To: <20241206-gs101-phy-lanes-orientation-phy-v4-0-f5961268b149@linaro.org> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Marek Szyprowski , Sylwester Nawrocki , Alim Akhtar Cc: Peter Griffin , Tudor Ambarus , Sam Protsenko , Will McVicker , Roy Luo , kernel-team@android.com, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.13.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241206_083106_754088_A789D8ED X-CRM114-Status: GOOD ( 13.35 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org To make USB runtime suspend work when a UDC has been bound, the phy needs to inform the USBDRD controller (DWC3) that Vbus and bvalid are gone, so that it can in turn raise the respective gadget interrupt with event == DWC3_DEVICE_EVENT_DISCONNECT, which will cause the USB stack to clean up, allowing DWC3 to enter runtime suspend. On e850 and gs101 this isn't working, as the respective signals are not directly connected, and instead this driver uses override bits in the PHY IP to set those signals. It currently forcefully sets them to 'on', so the above mentioned interrupt will not be raised, preventing runtime suspend. To detect that state, update this driver to act on the TCPC's orientation signal - when orientation == NONE, Vbus is gone and we can clear the respective bits. Similarly, for other orientation values we re-enable them. This makes runtime suspend work on platforms with a TCPC (like Pixel6), while keeping compatibility with platforms without (e850-96). With runtime suspend working, USB-C cable orientation detection now also fully works on such platforms, and the link comes up as Superspeed as expected irrespective of the cable orientation and whether UDC / gadget are configured and active. Signed-off-by: André Draszik --- v3: * update exynos5_usbdrd_orien_sw_set() to not test against previous orientation --- drivers/phy/samsung/phy-exynos5-usbdrd.c | 50 +++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/drivers/phy/samsung/phy-exynos5-usbdrd.c b/drivers/phy/samsung/phy-exynos5-usbdrd.c index 8fc15847cfd8..bac1dc927b26 100644 --- a/drivers/phy/samsung/phy-exynos5-usbdrd.c +++ b/drivers/phy/samsung/phy-exynos5-usbdrd.c @@ -1137,13 +1137,15 @@ static void exynos850_usbdrd_utmi_init(struct exynos5_usbdrd_phy *phy_drd) reg |= LINKCTRL_BUS_FILTER_BYPASS(0xf); writel(reg, regs_base + EXYNOS850_DRD_LINKCTRL); - reg = readl(regs_base + EXYNOS850_DRD_UTMI); - reg |= UTMI_FORCE_BVALID | UTMI_FORCE_VBUSVALID; - writel(reg, regs_base + EXYNOS850_DRD_UTMI); - - reg = readl(regs_base + EXYNOS850_DRD_HSP); - reg |= HSP_VBUSVLDEXT | HSP_VBUSVLDEXTSEL; - writel(reg, regs_base + EXYNOS850_DRD_HSP); + if (!phy_drd->sw) { + reg = readl(regs_base + EXYNOS850_DRD_UTMI); + reg |= UTMI_FORCE_BVALID | UTMI_FORCE_VBUSVALID; + writel(reg, regs_base + EXYNOS850_DRD_UTMI); + + reg = readl(regs_base + EXYNOS850_DRD_HSP); + reg |= HSP_VBUSVLDEXT | HSP_VBUSVLDEXTSEL; + writel(reg, regs_base + EXYNOS850_DRD_HSP); + } reg = readl(regs_base + EXYNOS850_DRD_SSPPLLCTL); reg &= ~SSPPLLCTL_FSEL; @@ -1404,9 +1406,41 @@ static int exynos5_usbdrd_orien_sw_set(struct typec_switch_dev *sw, enum typec_orientation orientation) { struct exynos5_usbdrd_phy *phy_drd = typec_switch_get_drvdata(sw); + int ret; + + ret = clk_bulk_prepare_enable(phy_drd->drv_data->n_clks, phy_drd->clks); + if (ret) { + dev_err(phy_drd->dev, "Failed to enable PHY clocks(s)\n"); + return ret; + } + + scoped_guard(mutex, &phy_drd->phy_mutex) { + void __iomem * const regs_base = phy_drd->reg_phy; + unsigned int reg; + + if (orientation == TYPEC_ORIENTATION_NONE) { + reg = readl(regs_base + EXYNOS850_DRD_UTMI); + reg &= ~(UTMI_FORCE_VBUSVALID | UTMI_FORCE_BVALID); + writel(reg, regs_base + EXYNOS850_DRD_UTMI); + + reg = readl(regs_base + EXYNOS850_DRD_HSP); + reg |= HSP_VBUSVLDEXTSEL; + reg &= ~HSP_VBUSVLDEXT; + writel(reg, regs_base + EXYNOS850_DRD_HSP); + } else { + reg = readl(regs_base + EXYNOS850_DRD_UTMI); + reg |= UTMI_FORCE_VBUSVALID | UTMI_FORCE_BVALID; + writel(reg, regs_base + EXYNOS850_DRD_UTMI); + + reg = readl(regs_base + EXYNOS850_DRD_HSP); + reg |= HSP_VBUSVLDEXTSEL | HSP_VBUSVLDEXT; + writel(reg, regs_base + EXYNOS850_DRD_HSP); + } - scoped_guard(mutex, &phy_drd->phy_mutex) phy_drd->orientation = orientation; + } + + clk_bulk_disable(phy_drd->drv_data->n_clks, phy_drd->clks); return 0; }