@@ -101,3 +101,34 @@ def autodetect_platform_bus_drivers(self):
101101 else :
102102 self .logger .info ("No platform bus drivers detected." )
103103
104+
105+ def _get_platform_mmc_drivers (self , mmc_dev ):
106+ """Helper function to get MMC drivers from a given device.
107+ Strips the partition number from the device name if present.
108+ """
109+ mmc_name = mmc_dev .split ("p" )[0 ].replace ('blk' , '' ) # Strip partition number if present, and 'blk' prefix
110+ mmc_path = Path (f"/sys/class/mmc_host/{ mmc_name } /device" )
111+ if not mmc_path .exists ():
112+ self .logger .warning (f"[{ c_ (mmc_path , 'yellow' )} ] MMC device path does not exist, skipping detection." )
113+ return []
114+
115+ drivers = set ()
116+ if driver := (mmc_path / "driver" ).resolve ().name :
117+ self .logger .info (f"[{ c_ (mmc_dev , 'green' , bright = True )} ] Detected MMC driver: { c_ (driver , 'magenta' , bright = True )} " )
118+ drivers .add (driver )
119+
120+ # Check for supplier drivers
121+ for supplier in mmc_path .iterdir ():
122+ if not supplier .name .startswith ("supplier:" ):
123+ continue
124+
125+ supplier_driver = (supplier / "supplier" / "driver" )
126+ if not supplier_driver .exists ():
127+ self .logger .warning (f"[{ c_ (mmc_dev , 'yellow' , bright = True )} ] Supplier driver not found, skipping: { c_ (supplier_driver , 'red' , bright = True )} " )
128+ continue
129+
130+ supplier_driver = supplier_driver .resolve ()
131+ self .logger .debug (f"[{ c_ (mmc_dev , 'green' , bright = True )} :{ c_ (supplier , 'blue' )} ] Detected MMC supplier driver: { c_ (supplier_driver .name , 'magenta' , bright = True )} " )
132+ drivers .add (supplier_driver .name )
133+
134+ return list (drivers )
0 commit comments