[U-Boot] [PATCH] dm: add of_match_ptr() macro

Simon Glass sjg at chromium.org
Wed Oct 8 06:15:06 CEST 2014


On 6 October 2014 23:51, Masahiro Yamada <yamada.m at jp.panasonic.com> wrote:
> The driver model supports two ways for passing device parameters;
> Device Tree and platform_data (board file).
> Each driver should generally support both of them because some
> popular IPs are used on various platforms.
>
> Assume the following scenario:
>   - The driver Foo is used on SoC Bar and SoC Baz
>   - The SoC Bar uses Device Tree control (CONFIG_OF_CONTROL=y)
>   - The SoC Baz does not support Device Tree; uses a board file
>
> In this situation, the device driver Foo should work with/without
> the device tree control.  The driver should have .of_match and
> .ofdata_to_platdata members for SoC Bar, while they are meaningless
> for SoC Baz; therefore those device-tree control code should go
> inside #ifdef CONFIG_OF_CONTROL.
>
> The driver code will be like this:
>
>   #ifdef CONFIG_OF_CONTROL
>   static const struct udevice_id foo_of_match = {
>           { .compatible = "foo_driver" },
>           {},
>   }
>
>   static int foo_ofdata_to_platdata(struct udevice *dev)
>   {
>           ...
>   }
>   #endif
>
>   U_BOOT_DRIVER(foo_driver) = {
>           ...
>           .of_match = of_match_ptr(foo_of_match),
>           .ofdata_to_platdata = of_match_ptr(foo_ofdata_to_platdata),
>           ...
>   }
>
> This idea has been borrowed from Linux.
> (In Linux, this macro is defined in include/linux/of.h)
>
> Signed-off-by: Masahiro Yamada <yamada.m at jp.panasonic.com>

Acked-by: Simon Glass <sjg at chromium.org>


More information about the U-Boot mailing list