uart_snps: Register a device xref for UARTs

This is useful for other drivers to be able to find the UART (such as
the case of UARTs where hardware flow control lines are handled by
another device.)

Sponsored by:	Juniper Networks, Inc.
MFC after:	1 week
Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D44532
This commit is contained in:
Ka Ho Ng 2024-04-12 16:56:42 +00:00
parent cc0af6d5a6
commit 53b5393319

View file

@ -223,6 +223,22 @@ snps_probe(device_t dev)
return (BUS_PROBE_VENDOR);
}
static int
snps_attach(device_t dev)
{
phandle_t node;
int ret;
ret = uart_bus_attach(dev);
if (ret == 0) {
node = ofw_bus_get_node(dev);
/* Set up phandle to dev mapping */
OF_device_register_xref(OF_xref_from_node(node), dev);
}
return (ret);
}
static int
snps_detach(device_t dev)
{
@ -269,7 +285,7 @@ snps_detach(device_t dev)
static device_method_t snps_bus_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, snps_probe),
DEVMETHOD(device_attach, uart_bus_attach),
DEVMETHOD(device_attach, snps_attach),
DEVMETHOD(device_detach, snps_detach),
DEVMETHOD_END
};