Add a header file to allow other drivers to implement MMIO and share the
code.

Signed-off-by: Simon Glass <[email protected]>
---

 drivers/virtio/virtio_internal.h | 19 +++++++++++++++++++
 drivers/virtio/virtio_mmio.c     |  7 ++++---
 2 files changed, 23 insertions(+), 3 deletions(-)
 create mode 100644 drivers/virtio/virtio_internal.h

diff --git a/drivers/virtio/virtio_internal.h b/drivers/virtio/virtio_internal.h
new file mode 100644
index 00000000000..96b6bffbe54
--- /dev/null
+++ b/drivers/virtio/virtio_internal.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Internal header file for virtio
+ *
+ * Copyright 2025 Simon Glass <[email protected]>
+ */
+
+#ifndef _VIRTIO_INTERNAL_H
+#define _VIRTIO_INTERNAL_H
+
+struct udevice;
+
+/* MMIO operations from virtio_mmcio.c */
+extern const struct dm_virtio_ops virtio_mmio_ops;
+
+/* exported probe function from virtio_mmcio.c */
+int virtio_mmio_probe(struct udevice *udev);
+
+#endif
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index 975f98cd9e5..e66b8d244fb 100644
--- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c
@@ -349,7 +349,7 @@ static int virtio_mmio_of_to_plat(struct udevice *udev)
        return 0;
 }
 
-static int virtio_mmio_probe(struct udevice *udev)
+int virtio_mmio_probe(struct udevice *udev)
 {
        struct virtio_mmio_plat *plat = dev_get_plat(udev);
        struct virtio_mmio_priv *priv = dev_get_priv(udev);
@@ -359,6 +359,7 @@ static int virtio_mmio_probe(struct udevice *udev)
        priv->base = (void __iomem *)(uintptr_t)plat->base;
 
        /* Check magic value */
+       log_debug("probe %p\n", priv->base);
        magic = readl(priv->base + VIRTIO_MMIO_MAGIC_VALUE);
        if (magic != ('v' | 'i' << 8 | 'r' << 16 | 't' << 24)) {
                debug("(%s): wrong magic value 0x%08x!\n", udev->name, magic);
@@ -387,13 +388,13 @@ static int virtio_mmio_probe(struct udevice *udev)
        if (priv->version == 1)
                writel(PAGE_SIZE, priv->base + VIRTIO_MMIO_GUEST_PAGE_SIZE);
 
-       debug("(%s): device (%d) vendor (%08x) version (%d)\n", udev->name,
+       debug("(%s): device (%04x) vendor (%04x) version (%d)\n", udev->name,
              uc_priv->device, uc_priv->vendor, priv->version);
 
        return 0;
 }
 
-static const struct dm_virtio_ops virtio_mmio_ops = {
+const struct dm_virtio_ops virtio_mmio_ops = {
        .get_config     = virtio_mmio_get_config,
        .set_config     = virtio_mmio_set_config,
        .generation     = virtio_mmio_generation,
-- 
2.43.0

Reply via email to