linux/drivers/usb/misc
Charalampos Mitrodimas 76f1842cdc usb: misc: apple-mfi-fastcharge: Make power supply names unique
[ Upstream commit 43007b89fb ]

When multiple Apple devices are connected concurrently, the
apple-mfi-fastcharge driver fails to probe the subsequent devices with
the following error:

    sysfs: cannot create duplicate filename '/class/power_supply/apple_mfi_fastcharge'
    apple-mfi-fastcharge 5-2.4.3.3: probe of 5-2.4.3.3 failed with error -17

This happens because the driver uses a fixed power supply name
("apple_mfi_fastcharge") for all devices, causing a sysfs name
conflict when a second device is connected.

Fix this by generating unique names using the USB bus and device
number (e.g., "apple_mfi_fastcharge_5-12"). This ensures each
connected device gets a unique power supply entry in sysfs.

The change requires storing a copy of the power_supply_desc structure
in the per-device mfi_device struct, since the name pointer needs to
remain valid for the lifetime of the power supply registration.

Fixes: 249fa8217b ("USB: Add driver to control USB fast charge for iOS devices")
Signed-off-by: Charalampos Mitrodimas <charmitro@posteo.net>
Link: https://lore.kernel.org/r/20250602-apple-mfi-fastcharge-duplicate-sysfs-v1-1-5d84de34fac6@posteo.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-08-28 16:24:06 +02:00
..
sisusbvga USB: sisusbvga: Add endpoint checks 2023-05-30 13:55:31 +01:00
adutux.c usb: misc: adutux: use swap() 2021-08-05 12:31:34 +02:00
apple-mfi-fastcharge.c usb: misc: apple-mfi-fastcharge: Make power supply names unique 2025-08-28 16:24:06 +02:00
appledisplay.c USB: appledisplay: close race between probe and completion handler 2024-10-17 15:11:12 +02:00
brcmstb-usb-pinmap.c usb: misc: brcmstb-usb-pinmap: add IRQ check 2021-08-13 13:05:50 +02:00
chaoskey.c USB: chaoskey: Fix possible deadlock chaoskey_list_lock 2024-12-14 19:51:10 +01:00
cypress_cy7c63.c USB: misc: cypress_cy7c63: check for short transfer 2024-10-17 15:11:12 +02:00
cytherm.c USB: cytherm: convert to use dev_groups 2019-08-09 07:55:44 +02:00
ehset.c usb: misc: ehset: update to use the usb_control_msg_{send|recv}() API 2021-03-28 13:41:27 +02:00
emi26.c USB: misc: Remove redundant license text 2017-11-04 11:55:38 +01:00
emi62.c USB: misc: Remove redundant license text 2017-11-04 11:55:38 +01:00
ezusb.c usb: misc: ezusb: update to use usb_control_msg_send() 2021-03-28 13:41:27 +02:00
ftdi-elan.c usb: ftdi-elan: fix memory leak on device disconnect 2022-01-27 11:03:40 +01:00
idmouse.c usb: idmouse: fix an uninit-value in idmouse_open 2022-10-26 12:35:51 +02:00
iowarrior.c usb: yurex: make waiting on yurex_write interruptible 2024-12-14 19:51:10 +01:00
isight_firmware.c USB: misc: Remove redundant license text 2017-11-04 11:55:38 +01:00
Kconfig Revert "USB: misc: Add onboard_usb_hub driver" 2021-06-18 08:39:24 +02:00
ldusb.c module: remove never implemented MODULE_SUPPORTED_DEVICE 2021-03-17 13:16:18 -07:00
legousbtower.c USB: legotower: fix logical error in recent commit 2020-12-08 19:55:09 +01:00
lvstest.c USB: lvtest: return proper error code in probe 2020-08-18 11:55:23 +02:00
Makefile Revert "USB: misc: Add onboard_usb_hub driver" 2021-06-18 08:39:24 +02:00
trancevibrator.c USB: trancevibrator: fix control-request direction 2021-05-21 20:10:43 +02:00
usb251xb.c usb: usb251xb: Use of_device_get_match_data() 2021-01-26 12:17:32 -06:00
usb3503.c usb: misc: usb3503: Fix logic in usb3503_init() 2021-02-11 13:52:04 +01:00
usb4604.c usb/misc: usb4604: Use pm_ptr() macro 2020-09-04 16:53:51 +02:00
usb_u132.h USB: misc: Use the correct style for SPDX License Identifier 2020-04-16 14:32:47 +02:00
usblcd.c USB: usblcd: Remove the superfluous break 2020-08-28 09:48:33 +02:00
usbsevseg.c usb: misc: usbsevseg: update to use usb_control_msg_send() 2021-03-28 13:41:27 +02:00
usbtest.c usb: usbtest: reduce stack usage in test_queue 2020-07-21 13:41:57 +02:00
uss720.c usb: misc: uss720: check for incompatible versions of the Belkin F5U002 2024-07-05 09:14:28 +02:00
yurex.c usb: yurex: make waiting on yurex_write interruptible 2024-12-14 19:51:10 +01:00