From a1cd0a1a47ec25b14669f4827317e8b43822b1ee Mon Sep 17 00:00:00 2001 From: Flavio Suligoi Date: Tue, 5 Oct 2021 17:16:44 +0200 Subject: [PATCH] usb: core: hub: improve port over-current alert msg At the moment the port over-current message is displayed only if the over-current condition is permanent. But in case of permanent short-circuit or over-current, some USB power-distribution switches (such as the TPS20xx, etc.), after the over-current detection and the consequent shutdown, return in the normal state. So, in these cases, the over-current error message never appears. To overcome this problem, the "over-current condition" message is displayed even after some over-current events. Signed-off-by: Flavio Suligoi --- arch/arm64/boot/dts/Makefile | 1 + drivers/usb/core/hub.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile index 639e01a4d8553b..bf26ce60d78a34 100644 --- a/arch/arm64/boot/dts/Makefile +++ b/arch/arm64/boot/dts/Makefile @@ -8,6 +8,7 @@ subdir-y += amlogic subdir-y += apm subdir-y += apple subdir-y += arm +subdir-y += asem subdir-y += bitmain subdir-y += broadcom subdir-y += cavium diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 86658a81d28445..ff6c8e0e2673ea 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -5577,7 +5577,8 @@ static void port_event(struct usb_hub *hub, int port1) msleep(100); /* Cool down */ hub_power_on(hub, true); hub_port_status(hub, port1, &status, &unused); - if (status & USB_PORT_STAT_OVERCURRENT) + if ((status & USB_PORT_STAT_OVERCURRENT) || + !(port_dev->over_current_count % 15)) dev_err(&port_dev->dev, "over-current condition\n"); } @@ -5738,7 +5739,7 @@ static void hub_event(struct work_struct *work) u16 status = 0; u16 unused; - dev_dbg(hub_dev, "over-current change\n"); + dev_info(hub_dev, "over-current change\n"); clear_hub_feature(hdev, C_HUB_OVER_CURRENT); msleep(500); /* Cool down */ hub_power_on(hub, true);