
Now that we have a ramfb device driver, let's add the necessary glueing magic to also spawn it when we find its qfw file node.
Signed-off-by: Alexander Graf agraf@csgraf.de --- drivers/misc/qfw.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)
diff --git a/drivers/misc/qfw.c b/drivers/misc/qfw.c index 7c6ed41f48..fefa0bce86 100644 --- a/drivers/misc/qfw.c +++ b/drivers/misc/qfw.c @@ -13,6 +13,7 @@ #include <malloc.h> #include <qfw.h> #include <dm.h> +#include <dm/lists.h> #include <misc.h> #include <tables_csum.h> #if defined(CONFIG_GENERATE_ACPI_TABLE) && !defined(CONFIG_ARM) @@ -309,6 +310,26 @@ void qfw_read_entry(struct udevice *dev, u16 entry, u32 size, void *address) qfw_read_entry_io(qdev, entry, size, address); }
+static void qfw_bind_ramfb(struct udevice *dev) +{ +#ifdef CONFIG_VIDEO_RAMFB + struct fw_file *file; + int ret; + + ret = qfw_read_firmware_list(dev); + if (ret) + return; + + file = qfw_find_file(dev, "etc/ramfb"); + if (!file) { + /* No ramfb available. */ + return; + } + + device_bind_driver(dev, "ramfb", "qfw-ramfb", NULL); +#endif +} + int qfw_register(struct udevice *dev) { struct qfw_dev *qdev = dev_get_uclass_priv(dev); @@ -325,6 +346,8 @@ int qfw_register(struct udevice *dev) if (dma_enabled & FW_CFG_DMA_ENABLED) qdev->dma_present = true;
+ qfw_bind_ramfb(dev); + return 0; }