Re: [PATCH 3/4] usb: typec: set mod_name in driver registration
From: Heikki Krogerus
Date: Mon Jul 27 2026 - 07:41:10 EST
On Wed, Jul 22, 2026 at 12:31:23PM +0900, Shashank Balaji wrote:
> The driver core only creates the sysfs "module" symlink for a built-in
> driver when its struct device_driver has mod_name set (see
> module_add_driver()). This driver left mod_name unset, so its built-in
> form had no such symlink.
>
> Set mod_name to KBUILD_MODNAME during driver registration. Built-in
> drivers now gain the symlink, while loadable modules are unaffected.
>
> Co-developed-by: Rahul Bukte <rahul.bukte@xxxxxxxx>
> Signed-off-by: Rahul Bukte <rahul.bukte@xxxxxxxx>
> Signed-off-by: Shashank Balaji <shashank.mahadasyam@xxxxxxxx>
Acked-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>
> ---
> include/linux/usb/typec_altmode.h | 4 ++--
> drivers/usb/typec/bus.c | 4 +++-
> 2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/include/linux/usb/typec_altmode.h b/include/linux/usb/typec_altmode.h
> index ef21ead551be..92309b569c3a 100644
> --- a/include/linux/usb/typec_altmode.h
> +++ b/include/linux/usb/typec_altmode.h
> @@ -227,9 +227,9 @@ struct typec_altmode_driver {
> * handle all SVID specific communication.
> */
> #define typec_altmode_register_driver(drv) \
> - __typec_altmode_register_driver(drv, THIS_MODULE)
> + __typec_altmode_register_driver(drv, THIS_MODULE, KBUILD_MODNAME)
> int __typec_altmode_register_driver(struct typec_altmode_driver *drv,
> - struct module *module);
> + struct module *module, const char *mod_name);
> /**
> * typec_altmode_unregister_driver - unregisters a USB Type-C alternate mode
> * device driver
> diff --git a/drivers/usb/typec/bus.c b/drivers/usb/typec/bus.c
> index e84b134a3381..587d3b06ee8d 100644
> --- a/drivers/usb/typec/bus.c
> +++ b/drivers/usb/typec/bus.c
> @@ -383,12 +383,14 @@ void typec_altmode_put_plug(struct typec_altmode *plug)
> EXPORT_SYMBOL_GPL(typec_altmode_put_plug);
>
> int __typec_altmode_register_driver(struct typec_altmode_driver *drv,
> - struct module *module)
> + struct module *module,
> + const char *mod_name)
> {
> if (!drv->probe)
> return -EINVAL;
>
> drv->driver.owner = module;
> + drv->driver.mod_name = mod_name;
> drv->driver.bus = &typec_bus;
>
> return driver_register(&drv->driver);
>
> --
> 2.43.0
--
heikki