Re: git: 69f8cc60aa1e - main - ofw_firmware: Only match if there is no compatible

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Mon, 14 Aug 2023 18:06:18 UTC
On 8/13/23 2:19 AM, Emmanuel Vadot wrote:
> The branch main has been updated by manu:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=69f8cc60aa1e3140f41a75c859333a3d56c947fb
> 
> commit 69f8cc60aa1e3140f41a75c859333a3d56c947fb
> Author:     Emmanuel Vadot <manu@FreeBSD.org>
> AuthorDate: 2023-08-13 06:28:13 +0000
> Commit:     Emmanuel Vadot <manu@FreeBSD.org>
> CommitDate: 2023-08-13 09:19:44 +0000
> 
>      ofw_firmware: Only match if there is no compatible
>      
>      If there is a compatible string it likely means that the firmware needs
>      a dedicated driver (like on RPI*).
>      
>      PR:     273087
>      Tested-by:      Mark Millard <marklmi26-fbsd@yahoo.com>
>      Sponsored by:   Beckhoff Automation GmbH & Co. KG
>      Fixes:          fdfd3a90b6ce ("ofw: Add a ofw_firmware driver")
> ---
>   sys/dev/ofw/ofw_firmware.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/sys/dev/ofw/ofw_firmware.c b/sys/dev/ofw/ofw_firmware.c
> index faba123c3e09..7d62fc317c1d 100644
> --- a/sys/dev/ofw/ofw_firmware.c
> +++ b/sys/dev/ofw/ofw_firmware.c
> @@ -100,11 +100,14 @@ ofw_firmware_add_device(device_t dev, phandle_t node, u_int order,
>   static int
>   ofw_firmware_probe(device_t dev)
>   {
> -	const char *name;
> +	const char *name, *compat;
>   
>   	name = ofw_bus_get_name(dev);
>   	if (name == NULL || strcmp(name, "firmware") != 0)
>   		return (ENXIO);
> +	compat = ofw_bus_get_compat(dev);
> +	if (compat != NULL)
> +		return (ENXIO);>   
>   	device_set_desc(dev, "OFW Firmware Group");
>   	return (0);

Returning 0 from probe should be discouraged in new drivers FWIW.  I'm curious
here why you don't instead just return BUS_PROBE_GENERIC here, and let the
RPi-specific driver return BUS_PROBE_DEFAULT?

-- 
John Baldwin