From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755926AbcJ0Ptd (ORCPT ); Thu, 27 Oct 2016 11:49:33 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:36786 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751011AbcJ0Ptb (ORCPT ); Thu, 27 Oct 2016 11:49:31 -0400 Subject: Re: [RFC PATCH 5/5] of: overlay-mgr: add a detector for headers stored on a ds2431 eeprom over w1 To: Antoine Tenart , maxime.ripard@free-electrons.com, pantelis.antoniou@konsulko.com, mark.rutland@arm.com, sboyd@codeaurora.org References: <20161026145756.21689-1-antoine.tenart@free-electrons.com> <20161026145756.21689-6-antoine.tenart@free-electrons.com> Cc: thomas.petazzoni@free-electrons.com, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org From: Matthias Brugger Message-ID: Date: Thu, 27 Oct 2016 11:18:59 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <20161026145756.21689-6-antoine.tenart@free-electrons.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/26/2016 04:57 PM, Antoine Tenart wrote: > Signed-off-by: Antoine Tenart > --- Please provide a commit message. > drivers/of/overlay-manager/Kconfig | 10 ++++++++++ > drivers/w1/slaves/w1_ds2431.c | 39 ++++++++++++++++++++++++++++++++++++++ > 2 files changed, 49 insertions(+) > > diff --git a/drivers/of/overlay-manager/Kconfig b/drivers/of/overlay-manager/Kconfig > index 1a36613c0c53..ad0a5b8e9e5e 100644 > --- a/drivers/of/overlay-manager/Kconfig > +++ b/drivers/of/overlay-manager/Kconfig > @@ -16,4 +16,14 @@ config OF_OVERLAY_MGR_FORMAT_CHIP > > endmenu > > +menu "Overlay Manager detectors" > + > +config OF_OVERLAY_MGR_DETECTOR_DS2431 > + bool "Dip header on a DS2431 EEPROM" > + depends on W1_SLAVE_DS2431 > + help > + Enable dip header DS2431 EEPROM support. > + > +endmenu > + > endif > diff --git a/drivers/w1/slaves/w1_ds2431.c b/drivers/w1/slaves/w1_ds2431.c > index 80572cb63ba8..760325f9a2bd 100644 > --- a/drivers/w1/slaves/w1_ds2431.c > +++ b/drivers/w1/slaves/w1_ds2431.c > @@ -15,6 +15,9 @@ > #include > #include > #include > +#include > + > +#include > > #include "../w1.h" > #include "../w1_int.h" > @@ -280,7 +283,43 @@ static const struct attribute_group *w1_f2d_groups[] = { > NULL, > }; > > +#if IS_ENABLED(CONFIG_OF_OVERLAY_MGR_DETECTOR_DS2431) > +static int chip_dip_callback(struct w1_slave *sl) > +{ > + char **candidates = NULL; > + int i, n, err = 0; > + u8 *data; > + > + data = kzalloc(OVERLAY_MGR_DIP_MAX_SZ, GFP_KERNEL); > + if (!data) > + return -ENOMEM; > + > + /* sizeof(struct chip_header) is a mulitple of 8 */ > + for (i = 0; i < OVERLAY_MGR_DIP_MAX_SZ; i += 8) { > + if (w1_f2d_readblock(sl, i, 8, &data[i])) { > + err = -EIO; > + goto end; > + } > + } > + > + overlay_mgr_parse(&sl->dev, data, &candidates, &n); > + if (!n) { > + err = -EINVAL; > + goto end; > + } > + > + err = overlay_mgr_apply(&sl->dev, candidates, n); > + > +end: > + kfree(data); > + return err; > +} > +#endif > + > static struct w1_family_ops w1_f2d_fops = { > +#if IS_ENABLED(CONFIG_OF_OVERLAY_MGR_DETECTOR_DS2431) > + .callback = chip_dip_callback, > +#endif > .groups = w1_f2d_groups, > }; > >