phy: rockchip-inno-usb2: Sync initial otg state
authorPeter Geis <pgwipeout@gmail.com>
Wed, 22 Jun 2022 00:31:40 +0000 (20:31 -0400)
committerVinod Koul <vkoul@kernel.org>
Tue, 5 Jul 2022 07:26:53 +0000 (12:56 +0530)
The initial otg state for the phy defaults to device mode. The actual
state isn't detected until an ID IRQ fires. Fix this by syncing the ID
state during initialization.

Fixes: 51a9b2c03dd3 ("phy: rockchip-inno-usb2: Handle ID IRQ")
Signed-off-by: Peter Geis <pgwipeout@gmail.com>
Reviewed-by: Samuel Holland <samuel@sholland.org>
Link: https://lore.kernel.org/r/20220622003140.30365-1-pgwipeout@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/rockchip/phy-rockchip-inno-usb2.c

index 04fc1462d0f0df52e2a54ed169269bffda3519eb..706a2263b0b2ae4d88d8dbdd14823688b001f9cb 100644 (file)
@@ -1162,6 +1162,12 @@ static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy,
                                        EXTCON_USB_HOST, &rport->event_nb);
                if (ret)
                        dev_err(rphy->dev, "register USB HOST notifier failed\n");
+
+               if (!of_property_read_bool(rphy->dev->of_node, "extcon")) {
+                       /* do initial sync of usb state */
+                       ret = property_enabled(rphy->grf, &rport->port_cfg->utmi_id);
+                       extcon_set_state_sync(rphy->edev, EXTCON_USB_HOST, !ret);
+               }
        }
 
 out: