[U-Boot] [PATCH] dm: add of_match_ptr() macro
Simon Glass
sjg at chromium.org
Fri Oct 10 04:48:40 CEST 2014
On 7 October 2014 22:15, Simon Glass <sjg at chromium.org> wrote:
> 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>
Applied to u-boot-dm/next, thanks!
More information about the U-Boot
mailing list