[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