u-boot/include/dm
Simon Glass 9fa2819009 dm: core: Expand platdata for of-platdata devices
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 <sjg@chromium.org>
2016-07-14 20:40:24 -06:00
..
platform_data m68k: add DM model serial driver 2016-05-17 09:54:43 -06:00
device-internal.h dm: allow setting driver_data before/during bind 2016-05-26 20:48:31 -06:00
device.h dm: core: Expand platdata for of-platdata devices 2016-07-14 20:40:24 -06:00
lists.h dm: core: allow device_bind() to not return a device pointer 2015-08-31 07:57:29 -06:00
pinctrl.h dm: pinctrl: Add a way for a GPIO driver to obtain a pin function 2016-01-21 20:42:35 -07:00
platdata.h dm: core: Expand platdata for of-platdata devices 2016-07-14 20:40:24 -06:00
root.h dm: Add dm_scan_other() to locate board-specific devices 2014-07-23 14:08:37 +01:00
test.h video: sandbox: Allow selection of font size and console name 2016-01-30 10:57:30 +01:00
uclass-id.h dm: Sort the uclass id in alphabetical order 2016-07-11 14:06:44 -06:00
uclass-internal.h dm: core: Export uclass_find_device_by_of_offset() 2016-01-21 20:42:35 -07:00
uclass.h dm: core: Add uclass_first_device_err() to return a valid device 2016-03-14 15:34:50 -06:00
util.h devres: add debug command to dump device resources 2015-08-06 07:44:29 -06:00