|
@@ -1239,6 +1239,25 @@ static int __init early_platform_driver_probe_id(char *class_str,
|
|
|
}
|
|
|
|
|
|
if (match) {
|
|
|
+ /*
|
|
|
+ * Set up a sensible init_name to enable
|
|
|
+ * dev_name() and others to be used before the
|
|
|
+ * rest of the driver core is initialized.
|
|
|
+ */
|
|
|
+ if (!match->dev.init_name) {
|
|
|
+ char buf[32];
|
|
|
+
|
|
|
+ if (match->id != -1)
|
|
|
+ snprintf(buf, sizeof(buf), "%s.%d",
|
|
|
+ match->name, match->id);
|
|
|
+ else
|
|
|
+ snprintf(buf, sizeof(buf), "%s",
|
|
|
+ match->name);
|
|
|
+
|
|
|
+ match->dev.init_name = kstrdup(buf, GFP_KERNEL);
|
|
|
+ if (!match->dev.init_name)
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
if (epdrv->pdrv->probe(match))
|
|
|
pr_warning("%s: unable to probe %s early.\n",
|
|
|
class_str, match->name);
|