On 4 July 2016 at 11:58, Simon Glass <s...@chromium.org> wrote: > Devices which use of-platdata have their own platdata. However, in many > cases the driver will have its own auto-alloced platdata, for use with the > device tree. The ofdata_to_platdata() method converts the device tree > settings to platdata. > > With of-platdata we would not normally allocate the platdata since it is > provided by the U_BOOT_DEVICE() declaration. However this is inconvenient > since the of-platdata struct is closely tied to the device tree properties. > It is unlikely to exactly match the platdata needed by the driver. > > In fact a useful approach is to declare platdata in the driver like this: > > struct r3288_mmc_platdata { > struct dtd_rockchip_rk3288_dw_mshc of_platdata; > /* the 'normal' fields go here */ > }; > > In this case we have dt_platadata available, but the normal fields are not > present, since ofdata_to_platdata() is never called. In fact driver model > doesn't allocate any space for the 'normal' fields, since it sees that there > is already platform data attached to the device. > > To make this easier, adjust driver model to allocate the full size of the > struct (i.e. platdata_auto_alloc_size from the driver) and copy in the > of-platdata. This means that when the driver's bind() method is called, > the of-platdata will be present, followed by zero bytes for the empty > 'normal field' portion. > > A new DM_FLAG_OF_PLATDATA flag is available that indicates that the platdata > came from of-platdata. When the allocation/copy happens, the > DM_FLAG_ALLOC_PDATA flag will be set as well. The dtoc tool is updated to > output the platdata_size field, since U-Boot has no other way of knowing > the size of the of-platdata struct. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > Changes in v3: > - Don't try to expand when there is no of-platdata > > Changes in v2: None > > drivers/core/device.c | 43 ++++++++++++++++++++++++++++++++----------- > include/dm/device.h | 2 ++ > include/dm/platdata.h | 5 +++++ > tools/dtoc/dtoc.py | 2 ++ > 4 files changed, 41 insertions(+), 11 deletions(-)
Applied to u-boot-dm _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot