Hi Cyril,
CC DT
On Wed, Apr 12, 2023 at 12:05 PM Cyril Brulebois cyril@debamax.com wrote:
Since commit 241d2fb56a18 ("of: Make OF framebuffer device names unique"), as spotted by Frédéric Bonnard, the historical "of-display" device is gone: the updated logic creates "of-display.0" instead, then as many "of-display.N" as required.
This means that offb no longer finds the expected device, which prevents the Debian Installer from setting up its interface, at least on ppc64el.
It might be better to iterate on all possible nodes, but updating the hardcoded device from "of-display" to "of-display.0" is confirmed to fix the Debian Installer at the very least.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=217328 Link: https://bugs.debian.org/1033058 Fixes: 241d2fb56a18 ("of: Make OF framebuffer device names unique") Cc: stable@vger.kernel.org Signed-off-by: Cyril Brulebois cyril@debamax.com
Thanks for your patch, which is now commit 27c74ea74be805cc ("fbdev/offb: Update expected device name") in fbdev/for-next
--- a/drivers/video/fbdev/offb.c +++ b/drivers/video/fbdev/offb.c @@ -698,7 +698,7 @@ MODULE_DEVICE_TABLE(of, offb_of_match_display);
static struct platform_driver offb_driver_display = { .driver = {
.name = "of-display",
.name = "of-display.0", .of_match_table = offb_of_match_display, }, .probe = offb_probe_display,
This looks like the wrong fix for me: platform drivers' names must not contain the device index, and DT-based devices are probed using the compatible value (which is "display") instead of the node name.
I think the problem is with the of_platform_default_populate_init() function, which should create proper name@unit-address device nodes, with unique unit addresses, and with the correct compatible value.
Gr{oetje,eeting}s,
Geert