From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28EEEC04AB4 for ; Sun, 19 May 2019 18:04:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 02C4D20675 for ; Sun, 19 May 2019 18:04:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727618AbfESSD7 (ORCPT ); Sun, 19 May 2019 14:03:59 -0400 Received: from saturn.retrosnub.co.uk ([46.235.226.198]:39358 "EHLO saturn.retrosnub.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726472AbfESSD7 (ORCPT ); Sun, 19 May 2019 14:03:59 -0400 Received: from archlinux (cpc91196-cmbg18-2-0-cust659.5-4.cable.virginm.net [81.96.234.148]) by saturn.retrosnub.co.uk (Postfix; Retrosnub mail submission) with ESMTPSA id 015939E7A86; Sun, 19 May 2019 09:34:47 +0100 (BST) Date: Sun, 19 May 2019 09:34:46 +0100 From: Jonathan Cameron To: Alexandru Ardelean Cc: Alexandru Ardelean , linux-iio@vger.kernel.org, Michael Hennerich Subject: Re: [PATCH] iio: frequency: ad9523: add eeprom read/write verification Message-ID: <20190519093446.3c3e9f7c@archlinux> In-Reply-To: References: <20190517141938.10315-1-alexandru.ardelean@analog.com> <20190518110043.3c7fb04b@archlinux> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org On Sat, 18 May 2019 22:39:09 +0300 Alexandru Ardelean wrote: > On Sat, May 18, 2019 at 1:01 PM Jonathan Cameron > wrote: > > > > On Fri, 17 May 2019 17:19:38 +0300 > > Alexandru Ardelean wrote: > > > > > From: Michael Hennerich > > > > > > This change adds a basic verification of the EEPROM by writing a known > > > value to the customer version ID register, and reading it back. > > > > > > This validates that the EEPROM & SPI communication are functioning > > > properly, and the device is ready to use. > > > > > > Signed-off-by: Michael Hennerich > > > Signed-off-by: Alexandru Ardelean > > > > I'm going to assume that the write cycle limitations of that eeprom > > have been taken into account here and it won't be an issue until > > a very large number of probe and remove cycles. There is also the > > slightly amusing possibility of breaking a customer part if someone > > managed to pull the power whilst you have the wrong customer ID > > in the eeprom. However your device and I assume there is a customer > > who really wants this sanity check so fair enough... > > > > Applied to the togreg branch of iio.git and pushed out as testing for > > the autobuilders to play with it. > > I was also a bit unsure about this patch in this form. > But now that you've raised these points, I am now somewhat paranoid. > > I guess, I'll have to go back and start a internal discussion about > this. Maybe it makes more sense to add a device[-tree] property to > configure this somehow, and if someone really wants this behavior, > he/she can enable it. > This patch was also created some time ago [before I joined Analog] so > there is some context I may be lacking here about it. > > Maybe let's drop this, and I can come back with a version that would > not allow users to shoot-them-selves-in-the-foot without a safety > mechanism off. > > Sorry for the noise. Cool. Dropped for now then. Jonathan > Alex > > > > > Thanks, > > > > Jonathan > > > > > --- > > > drivers/iio/frequency/ad9523.c | 28 ++++++++++++++++++++++++++++ > > > 1 file changed, 28 insertions(+) > > > > > > diff --git a/drivers/iio/frequency/ad9523.c b/drivers/iio/frequency/ad9523.c > > > index 9b9eee27176c..dd159a1237f3 100644 > > > --- a/drivers/iio/frequency/ad9523.c > > > +++ b/drivers/iio/frequency/ad9523.c > > > @@ -749,6 +749,30 @@ static int ad9523_reg_access(struct iio_dev *indio_dev, > > > return ret; > > > } > > > > > > +static int ad9523_verify_eeprom(struct iio_dev *indio_dev) > > > +{ > > > + int ret, id; > > > + > > > + id = ad9523_read(indio_dev, AD9523_EEPROM_CUSTOMER_VERSION_ID); > > > + if (id < 0) > > > + return id; > > > + > > > + ret = ad9523_write(indio_dev, AD9523_EEPROM_CUSTOMER_VERSION_ID, 0xAD95); > > > + if (ret < 0) > > > + return ret; > > > + > > > + ret = ad9523_read(indio_dev, AD9523_EEPROM_CUSTOMER_VERSION_ID); > > > + if (ret < 0) > > > + return ret; > > > + > > > + if (ret != 0xAD95) { > > > + dev_err(&indio_dev->dev, "SPI Read Verify failed (0x%X)\n", ret); > > > + return -EIO; > > > + } > > > + > > > + return ad9523_write(indio_dev, AD9523_EEPROM_CUSTOMER_VERSION_ID, id); > > > +} > > > + > > > static const struct iio_info ad9523_info = { > > > .read_raw = &ad9523_read_raw, > > > .write_raw = &ad9523_write_raw, > > > @@ -780,6 +804,10 @@ static int ad9523_setup(struct iio_dev *indio_dev) > > > if (ret < 0) > > > return ret; > > > > > > + ret = ad9523_verify_eeprom(indio_dev); > > > + if (ret < 0) > > > + return ret; > > > + > > > /* > > > * PLL1 Setup > > > */ > >