[U-Boot] [PATCH v3 01/12] drivers: core: device: add support to check dt compatible for a device/machine

Simon Glass sjg at chromium.org
Sun May 1 20:54:39 CEST 2016


Hi Mugunthan,

On 28 April 2016 at 04:06, Mugunthan V N <mugunthanvnm at ti.com> wrote:
> Provide an api to check whether the given device or machine is
> compatible with the given compat string which helps in making
> decisions in drivers based on device or machine compatible.
>
> Idea taken from Linux.
>
> Signed-off-by: Mugunthan V N <mugunthanvnm at ti.com>
> Reviewed-by: Joe Hershberger <joe.hershberger at ni.com>
> ---
>  drivers/core/device.c | 14 ++++++++++++++
>  include/dm/device.h   | 23 +++++++++++++++++++++++
>  2 files changed, 37 insertions(+)
>
> diff --git a/drivers/core/device.c b/drivers/core/device.c
> index 1322991..8fdd193 100644
> --- a/drivers/core/device.c
> +++ b/drivers/core/device.c
> @@ -715,3 +715,17 @@ int device_set_name(struct udevice *dev, const char *name)
>
>         return 0;
>  }
> +
> +bool of_device_is_compatible(struct udevice *dev, const char *compat)

This function is in device.h, so I think device_is_compatible() is a
better name. Where does compat come from? Is it another device, or
something else entirely?

> +{
> +       const void *fdt = gd->fdt_blob;
> +
> +       return !fdt_node_check_compatible(fdt, dev->of_offset, compat);
> +}
> +
> +bool of_machine_is_compatible(const char *compat)

This should go in fdtdec.h I think. It doesn't have anything to do
with devices. So fdtdec_machine_is_compatible().

> +{
> +       const void *fdt = gd->fdt_blob;
> +
> +       return !fdt_node_check_compatible(fdt, 0, compat);
> +}
> diff --git a/include/dm/device.h b/include/dm/device.h
> index 8970fc0..cd18e82 100644
> --- a/include/dm/device.h
> +++ b/include/dm/device.h
> @@ -532,6 +532,29 @@ bool device_is_last_sibling(struct udevice *dev);
>  int device_set_name(struct udevice *dev, const char *name);
>
>  /**
> + * of_device_is_compatible() - check if the device is compatible with the compat
> + *
> + * This allows to check whether the device is comaptible with the compat.
> + *
> + * @dev:       udevice pointer for which compatible needs to be verified.
> + * @compat:    Compatible string which needs to verified in the given
> + *             device
> + * @return true if OK, false if the compatible is not found

Does this mean false if @compat is not found in the device's
compatible string list? Can you beef up the comment a bit to be
specific?

> + */
> +bool of_device_is_compatible(struct udevice *dev, const char *compat);
> +
> +/**
> + * of_machine_is_compatible() - check if the machine is compatible with
> + *                             the compat
> + *
> + * This allows to check whether the machine is comaptible with the compat.

Again can you beef up the comment? What is machine? Where does it actually look?

> + *
> + * @compat:    Compatible string which needs to verified
> + * @return true if OK, false if the compatible is not found
> + */
> +bool of_machine_is_compatible(const char *compat);
> +
> +/**
>   * device_is_on_pci_bus - Test if a device is on a PCI bus
>   *
>   * @dev:       device to test
> --
> 2.8.1.339.g3ad15fd
>

Regards,
Simon


More information about the U-Boot mailing list