linux/drivers/usb/misc
Charalampos Mitrodimas ecdade35dc 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-15 12:04:53 +02:00
..
sisusbvga USB: sisusbvga: Add endpoint checks 2023-05-30 14:03:20 +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-15 12:04:53 +02:00
appledisplay.c USB: appledisplay: close race between probe and completion handler 2024-10-17 15:21:19 +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:53:53 +01:00
cypress_cy7c63.c USB: misc: cypress_cy7c63: check for short transfer 2024-10-17 15:21:19 +02:00
cytherm.c USB: cytherm: convert to use dev_groups 2019-08-09 07:55:44 +02:00
ehset.c usb: misc: ehset: fix wrong if condition 2023-08-03 10:24:10 +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: remove third argument of usb_maxpacket() 2022-04-23 10:33:53 +02:00
idmouse.c usb: idmouse: fix an uninit-value in idmouse_open 2022-09-27 10:37:09 +02:00
iowarrior.c usb: yurex: make waiting on yurex_write interruptible 2024-12-14 19:53:52 +01:00
isight_firmware.c USB: misc: Remove redundant license text 2017-11-04 11:55:38 +01:00
Kconfig usb: misc: Add onboard_usb_hub driver 2022-07-08 14:53:50 +02:00
ldusb.c usb: ldusb: replace ternary operator with max_t() 2022-07-14 16:09:56 +02:00
legousbtower.c USB: legotower: fix logical error in recent commit 2020-12-08 19:55:09 +01:00
lvstest.c usb: remove third argument of usb_maxpacket() 2022-04-23 10:33:53 +02:00
Makefile usb: misc: Add onboard_usb_hub driver 2022-07-08 14:53:50 +02:00
onboard_usb_hub.c usb: misc: onboard_hub: add support for Microchip USB2412 USB 2.0 hub 2023-10-25 12:03:08 +02:00
onboard_usb_hub.h usb: misc: onboard_hub: add support for Microchip USB2412 USB 2.0 hub 2023-10-25 12:03:08 +02:00
onboard_usb_hub_pdevs.c usb: misc: onboard_hub: Fix 'missing prototype' warning 2022-07-14 16:09:32 +02:00
qcom_eud.c usb: misc: eud: Fix an error handling path in eud_probe() 2022-04-21 19:24:10 +02:00
trancevibrator.c USB: trancevibrator: fix control-request direction 2021-05-21 20:10:43 +02:00
usb251xb.c usb: usb251xb: Switch to use dev_err_probe() helper 2022-09-27 10:35:39 +02:00
usb3503.c USB/Thunderbolt changes for 6.1-rc1 2022-10-07 16:48:26 -07: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: usbsevseg: convert sysfs snprintf to sysfs_emit 2022-07-27 14:48:14 +02:00
usbtest.c usb/misc: fix repeated words in comments 2022-07-27 14:33:57 +02:00
uss720.c usb: misc: uss720: check for incompatible versions of the Belkin F5U002 2024-06-27 13:46:17 +02:00
yurex.c usb: yurex: make waiting on yurex_write interruptible 2024-12-14 19:53:52 +01:00