Hi Thomas: On Thu, Jan 2, 2025 at 9:32 PM Thomas Zimmermann <tzimmermann@xxxxxxx> wrote: > > Hi > > > Am 02.01.25 um 13:55 schrieb Binbin Zhou: > > Hi Thomas: > > > > Thanks for your reply. > > > > On Thu, Jan 2, 2025 at 5:07 PM Thomas Zimmermann <tzimmermann@xxxxxxx> wrote: > >> Hi > >> > >> > >> Am 30.12.24 um 10:31 schrieb Binbin Zhou: > >> [...] > >>> + > >>> +static struct platform_driver ls2kbmc_platform_driver = { > >>> + .driver = { > >>> + .name = "ls2kbmc-framebuffer", > >> The driver is mostly a copy of simpledrm. Why don't you use > >> "simple-framebuffer" for your device name? You could use simpledrm > >> directly then. > > Ah, indeed, the driver is based on simpledrm. > > > > Initially, I also tried to use simpledrm directly, but it will fail in > > drm memory acquire. > > Could you point to the exact call that fails within simpledrm? [ 8.289823] simple-framebuffer simple-framebuffer.0: [drm] *ERROR* could not acquire memory range [mem 0xe0031200000-0xe00315fffff flags 0x200]: -16 [ 8.312681] simple-framebuffer simple-framebuffer.0: probe with driver simple-framebuffer failed with error -16 > > > Because although we register the driver in platform form, its memory > > belongs to pci space and we can see the corresponding pci probe and > > resource allocation in Patch-1. > > I don't understand. Graphics memory is often located on the PCI bus. > What is so special about this one? > > > Therefore, we need to use aperture_remove_conflicting_pci_devices(). > > So there is already a device that represents the graphics card? That's > what you'd remove here? If you only add that MFD device, who owns the > framebuffer? If it's the PCI device from patch 1 ("ls2k-bmc"), why does > aperture_remove_conflicting_pci_devices() not remove that device? I'm > somewhat confused, because the logic in your driver mostly looks like it > binds to a pre-configured framebuffer, but some of the code doesn't. > Best regards Thomas > > > > > Also, since we are using BMC display, the display will be disconnected > > when BMC reset, at this time we need to push the display data (crtc, > > connector, etc.) manually as shown in Patch-4. > > > > Probably it's not the most suitable way to implement it. > > > >> Best regards > >> Thomas > >> > >>> + }, > >>> + .probe = ls2kbmc_probe, > >>> + .remove = ls2kbmc_remove, > >>> +}; > >>> + > >>> +module_platform_driver(ls2kbmc_platform_driver); > >>> + > >>> +MODULE_DESCRIPTION("DRM driver for Loongson-2K BMC"); > >>> +MODULE_LICENSE("GPL"); > >> -- > >> -- > >> Thomas Zimmermann > >> Graphics Driver Developer > >> SUSE Software Solutions Germany GmbH > >> Frankenstrasse 146, 90461 Nuernberg, Germany > >> GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman > >> HRB 36809 (AG Nuernberg) > >> > > > > -- > -- > Thomas Zimmermann > Graphics Driver Developer > SUSE Software Solutions Germany GmbH > Frankenstrasse 146, 90461 Nuernberg, Germany > GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman > HRB 36809 (AG Nuernberg) > -- Thanks. Binbin