The branch main has been updated by vexeduxr:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=0269dc575e8321b0f0166ba1797a4a3cdc9ece7d

commit 0269dc575e8321b0f0166ba1797a4a3cdc9ece7d
Author:     Ahmad Khalifa <vexed...@freebsd.org>
AuthorDate: 2025-08-20 06:10:02 +0000
Commit:     Ahmad Khalifa <vexed...@freebsd.org>
CommitDate: 2025-08-20 06:52:11 +0000

    acpi_gpiobus: implement bus_child_location
    
    Reviewed by:    imp, andrew
    Approved by:    imp (mentor)
    Differential Revision:  https://reviews.freebsd.org/D51586
---
 sys/dev/gpio/acpi_gpiobus.c     | 17 +++++++++++++++++
 sys/dev/gpio/gpiobus.c          |  3 +--
 sys/dev/gpio/gpiobus_internal.h |  1 +
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/sys/dev/gpio/acpi_gpiobus.c b/sys/dev/gpio/acpi_gpiobus.c
index a9a2238695f7..0d2455cab399 100644
--- a/sys/dev/gpio/acpi_gpiobus.c
+++ b/sys/dev/gpio/acpi_gpiobus.c
@@ -37,6 +37,7 @@
 #include <dev/gpio/gpiobusvar.h>
 #include <dev/gpio/acpi_gpiobusvar.h>
 #include <dev/gpio/gpiobus_internal.h>
+#include <sys/sbuf.h>
 
 #include "gpiobus_if.h"
 
@@ -411,6 +412,21 @@ acpi_gpiobus_add_child(device_t dev, u_int order, const 
char *name, int unit)
            sizeof(struct acpi_gpiobus_ivar)));
 }
 
+static int
+acpi_gpiobus_child_location(device_t bus, device_t child, struct sbuf *sb)
+{
+       struct acpi_gpiobus_ivar *devi;
+       int err;
+
+       err = gpiobus_child_location(bus, child, sb);
+       if (err != 0)
+               return (err);
+
+       devi = device_get_ivars(child);
+       sbuf_printf(sb, " handle=%s", acpi_name(devi->handle));
+       return (0);
+}
+
 static device_method_t acpi_gpiobus_methods[] = {
        /* Device interface */
        DEVMETHOD(device_probe,         acpi_gpiobus_probe),
@@ -420,6 +436,7 @@ static device_method_t acpi_gpiobus_methods[] = {
        /* Bus interface */
        DEVMETHOD(bus_read_ivar,        acpi_gpiobus_read_ivar),
        DEVMETHOD(bus_add_child,        acpi_gpiobus_add_child),
+       DEVMETHOD(bus_child_location,   acpi_gpiobus_child_location),
 
        DEVMETHOD_END
 };
diff --git a/sys/dev/gpio/gpiobus.c b/sys/dev/gpio/gpiobus.c
index 2f448ea3a956..5f1f6532a79b 100644
--- a/sys/dev/gpio/gpiobus.c
+++ b/sys/dev/gpio/gpiobus.c
@@ -57,7 +57,6 @@ static int gpiobus_suspend(device_t);
 static int gpiobus_resume(device_t);
 static void gpiobus_probe_nomatch(device_t, device_t);
 static int gpiobus_print_child(device_t, device_t);
-static int gpiobus_child_location(device_t, device_t, struct sbuf *);
 static device_t gpiobus_add_child(device_t, u_int, const char *, int);
 static void gpiobus_hinted_child(device_t, const char *, int);
 
@@ -662,7 +661,7 @@ gpiobus_print_child(device_t dev, device_t child)
        return (retval);
 }
 
-static int
+int
 gpiobus_child_location(device_t bus, device_t child, struct sbuf *sb)
 {
        struct gpiobus_ivar *devi;
diff --git a/sys/dev/gpio/gpiobus_internal.h b/sys/dev/gpio/gpiobus_internal.h
index 82f1354d9e75..c198e5f79989 100644
--- a/sys/dev/gpio/gpiobus_internal.h
+++ b/sys/dev/gpio/gpiobus_internal.h
@@ -42,6 +42,7 @@ void gpiobus_free_ivars(struct gpiobus_ivar *);
 int gpiobus_read_ivar(device_t, device_t, int, uintptr_t *);
 int gpiobus_acquire_pin(device_t, uint32_t);
 void gpiobus_release_pin(device_t, uint32_t);
+int gpiobus_child_location(device_t, device_t, struct sbuf *);
 device_t gpiobus_add_child_common(device_t, u_int, const char *, int, size_t);
 
 extern driver_t gpiobus_driver;

Reply via email to