phy: usb: s2 WoL wakeup_count not incremented for USB->Eth devices
authorAl Cooper <alcooperx@gmail.com>
Wed, 5 Oct 2022 21:30:14 +0000 (14:30 -0700)
committerVinod Koul <vkoul@kernel.org>
Mon, 7 Nov 2022 04:50:04 +0000 (10:20 +0530)
The PHY's "wakeup_count" is not incrementing when waking from
WoL. The wakeup count can be found in sysfs at:
/sys/bus/platform/devices/rdb/*.usb-phy/power/wakeup_count.
The problem is that the system wakup event handler was being passed
the wrong "device" by the PHY driver.

Fixes: f1c0db40a3ad ("phy: usb: Add "wake on" functionality")
Signed-off-by: Al Cooper <alcooperx@gmail.com>
Signed-off-by: Justin Chen <justinpopo6@gmail.com>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/1665005418-15807-3-git-send-email-justinpopo6@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/broadcom/phy-brcm-usb.c

index 99d4dea..d97fa58 100644 (file)
@@ -102,9 +102,9 @@ static int brcm_pm_notifier(struct notifier_block *notifier,
 
 static irqreturn_t brcm_usb_phy_wake_isr(int irq, void *dev_id)
 {
-       struct phy *gphy = dev_id;
+       struct device *dev = dev_id;
 
-       pm_wakeup_event(&gphy->dev, 0);
+       pm_wakeup_event(dev, 0);
 
        return IRQ_HANDLED;
 }
@@ -452,7 +452,7 @@ static int brcm_usb_phy_dvr_init(struct platform_device *pdev,
        if (priv->wake_irq >= 0) {
                err = devm_request_irq(dev, priv->wake_irq,
                                       brcm_usb_phy_wake_isr, 0,
-                                      dev_name(dev), gphy);
+                                      dev_name(dev), dev);
                if (err < 0)
                        return err;
                device_set_wakeup_capable(dev, 1);