148 lines
4.3 KiB
Diff
148 lines
4.3 KiB
Diff
From: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
|
|
To: Vinod Koul <vkoul@kernel.org>,
|
|
Kishon Vijay Abraham I <kishon@kernel.org>,
|
|
Rob Herring <robh@kernel.org>,
|
|
Krzysztof Kozlowski <krzk+dt@kernel.org>,
|
|
Conor Dooley <conor+dt@kernel.org>,
|
|
Heiko Stuebner <heiko@sntech.de>,
|
|
Kever Yang <kever.yang@rock-chips.com>,
|
|
Frank Wang <frank.wang@rock-chips.com>
|
|
Cc: devicetree@vger.kernel.org,
|
|
Sebastian Reichel <sebastian.reichel@collabora.com>,
|
|
linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org,
|
|
Alexey Charkov <alchark@gmail.com>,
|
|
linux-phy@lists.infradead.org, kernel@collabora.com,
|
|
linux-arm-kernel@lists.infradead.org
|
|
Subject: [PATCH v4 2/4] phy: rockchip: usbdp: move orientation handling further down
|
|
Date: Tue, 10 Jun 2025 16:07:10 +0200 [thread overview]
|
|
Message-ID: <20250610-rk3576-sige5-usb-v4-2-7e7f779619c1@collabora.com> (raw)
|
|
In-Reply-To: <20250610-rk3576-sige5-usb-v4-0-7e7f779619c1@collabora.com>
|
|
|
|
The orientation handling code isn't referenced until very far down the
|
|
driver code.
|
|
|
|
Move it down some ways so it can later reference other driver functions
|
|
without needing forward declarations.
|
|
|
|
Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
|
|
---
|
|
drivers/phy/rockchip/phy-rockchip-usbdp.c | 100 +++++++++++++++---------------
|
|
1 file changed, 50 insertions(+), 50 deletions(-)
|
|
|
|
--- a/drivers/phy/rockchip/phy-rockchip-usbdp.c
|
|
+++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c
|
|
@@ -651,56 +651,6 @@ static void rk_udphy_set_typec_default_m
|
|
udphy->mode = UDPHY_MODE_DP_USB;
|
|
}
|
|
|
|
-static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw,
|
|
- enum typec_orientation orien)
|
|
-{
|
|
- struct rk_udphy *udphy = typec_switch_get_drvdata(sw);
|
|
-
|
|
- mutex_lock(&udphy->mutex);
|
|
-
|
|
- if (orien == TYPEC_ORIENTATION_NONE) {
|
|
- gpiod_set_value_cansleep(udphy->sbu1_dc_gpio, 0);
|
|
- gpiod_set_value_cansleep(udphy->sbu2_dc_gpio, 0);
|
|
- /* unattached */
|
|
- rk_udphy_usb_bvalid_enable(udphy, false);
|
|
- goto unlock_ret;
|
|
- }
|
|
-
|
|
- udphy->flip = orien == TYPEC_ORIENTATION_REVERSE;
|
|
- rk_udphy_set_typec_default_mapping(udphy);
|
|
- rk_udphy_usb_bvalid_enable(udphy, true);
|
|
-
|
|
-unlock_ret:
|
|
- mutex_unlock(&udphy->mutex);
|
|
- return 0;
|
|
-}
|
|
-
|
|
-static void rk_udphy_orien_switch_unregister(void *data)
|
|
-{
|
|
- struct rk_udphy *udphy = data;
|
|
-
|
|
- typec_switch_unregister(udphy->sw);
|
|
-}
|
|
-
|
|
-static int rk_udphy_setup_orien_switch(struct rk_udphy *udphy)
|
|
-{
|
|
- struct typec_switch_desc sw_desc = { };
|
|
-
|
|
- sw_desc.drvdata = udphy;
|
|
- sw_desc.fwnode = dev_fwnode(udphy->dev);
|
|
- sw_desc.set = rk_udphy_orien_sw_set;
|
|
-
|
|
- udphy->sw = typec_switch_register(udphy->dev, &sw_desc);
|
|
- if (IS_ERR(udphy->sw)) {
|
|
- dev_err(udphy->dev, "Error register typec orientation switch: %ld\n",
|
|
- PTR_ERR(udphy->sw));
|
|
- return PTR_ERR(udphy->sw);
|
|
- }
|
|
-
|
|
- return devm_add_action_or_reset(udphy->dev,
|
|
- rk_udphy_orien_switch_unregister, udphy);
|
|
-}
|
|
-
|
|
static int rk_udphy_refclk_set(struct rk_udphy *udphy)
|
|
{
|
|
unsigned long rate;
|
|
@@ -1450,6 +1400,56 @@ static struct phy *rk_udphy_phy_xlate(st
|
|
return ERR_PTR(-EINVAL);
|
|
}
|
|
|
|
+static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw,
|
|
+ enum typec_orientation orien)
|
|
+{
|
|
+ struct rk_udphy *udphy = typec_switch_get_drvdata(sw);
|
|
+
|
|
+ mutex_lock(&udphy->mutex);
|
|
+
|
|
+ if (orien == TYPEC_ORIENTATION_NONE) {
|
|
+ gpiod_set_value_cansleep(udphy->sbu1_dc_gpio, 0);
|
|
+ gpiod_set_value_cansleep(udphy->sbu2_dc_gpio, 0);
|
|
+ /* unattached */
|
|
+ rk_udphy_usb_bvalid_enable(udphy, false);
|
|
+ goto unlock_ret;
|
|
+ }
|
|
+
|
|
+ udphy->flip = orien == TYPEC_ORIENTATION_REVERSE;
|
|
+ rk_udphy_set_typec_default_mapping(udphy);
|
|
+ rk_udphy_usb_bvalid_enable(udphy, true);
|
|
+
|
|
+unlock_ret:
|
|
+ mutex_unlock(&udphy->mutex);
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static void rk_udphy_orien_switch_unregister(void *data)
|
|
+{
|
|
+ struct rk_udphy *udphy = data;
|
|
+
|
|
+ typec_switch_unregister(udphy->sw);
|
|
+}
|
|
+
|
|
+static int rk_udphy_setup_orien_switch(struct rk_udphy *udphy)
|
|
+{
|
|
+ struct typec_switch_desc sw_desc = { };
|
|
+
|
|
+ sw_desc.drvdata = udphy;
|
|
+ sw_desc.fwnode = dev_fwnode(udphy->dev);
|
|
+ sw_desc.set = rk_udphy_orien_sw_set;
|
|
+
|
|
+ udphy->sw = typec_switch_register(udphy->dev, &sw_desc);
|
|
+ if (IS_ERR(udphy->sw)) {
|
|
+ dev_err(udphy->dev, "Error register typec orientation switch: %ld\n",
|
|
+ PTR_ERR(udphy->sw));
|
|
+ return PTR_ERR(udphy->sw);
|
|
+ }
|
|
+
|
|
+ return devm_add_action_or_reset(udphy->dev,
|
|
+ rk_udphy_orien_switch_unregister, udphy);
|
|
+}
|
|
+
|
|
static int rk_udphy_probe(struct platform_device *pdev)
|
|
{
|
|
struct device *dev = &pdev->dev;
|