On Tue, Feb 16, 2016 at 02:42:02PM +0100, Arnd Bergmann wrote:
On Tuesday 16 February 2016 13:56:45 Andreas Irestål wrote:
Currently, it is only possible to configure HW-specific options to the adau17x1 codecs by providing a platform data struct. With this patch, it is possible to provide the same data via DT instead.
Signed-off-by: Andreas Irestål andire@axis.com
.../devicetree/bindings/sound/adi,adau17x1.txt | 31 +++++ include/dt-bindings/sound/adau17x1.h | 14 +++ sound/soc/codecs/adau1761.c | 127 +++++++++++++++++++++ sound/soc/codecs/adau1781.c | 48 ++++++++ 4 files changed, 220 insertions(+) create mode 100644 include/dt-bindings/sound/adau17x1.h
of_pdata = devm_kzalloc(dev, sizeof(*of_pdata), GFP_KERNEL);
if (!of_pdata)
return -ENOMEM;
adau1781_pdata_from_of(dev, of_pdata);
dev->platform_data = of_pdata;
and here I'd try to avoid the dynamic allocation and just add the fields to the driver private structure. You can copy the information from the platform data in the 'else' path.
Since the driver private structure is shared between two different codecs, the platform_data struct can be of 2 different types, but I guess it should be OK to have two fields or a union in the private struct.
I was thinking about this too but chose the approach above since providing platform_data is optional. However, I could add some default values and submit again.
Thanks a lot for the feedback. /Andreas
Arnd