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=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable 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 89610C433DB for ; Wed, 17 Feb 2021 13:40:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3B7E164E28 for ; Wed, 17 Feb 2021 13:40:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233125AbhBQNkA (ORCPT ); Wed, 17 Feb 2021 08:40:00 -0500 Received: from perceval.ideasonboard.com ([213.167.242.64]:50218 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233097AbhBQNdq (ORCPT ); Wed, 17 Feb 2021 08:33:46 -0500 Received: from [192.168.0.20] (cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 64FF98C4; Wed, 17 Feb 2021 14:33:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1613568784; bh=uJZ45WxQROloySzVhB55LTkBrXUfdRnph4seJ/EiOX4=; h=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From; b=C+p8M596IMCiulZTOnqsdxGSdnTmtRVSMEmq67pGLi0Pn1PEiuQyct3fon4sheVB2 76xxgXlWsTjHxTF40P+bvpHXiQfWr4txlfyY2KrKFgB4FLZh7XQC2Q7AMs+ztNp81n ryjVWZBQFLmwRi1v5SMFJl2HgptAMQu1Lslfkohk= Reply-To: kieran.bingham+renesas@ideasonboard.com Subject: Re: [PATCH 07/16] media: i2c: rdacm2x: Fix wake up delay To: Jacopo Mondi , laurent.pinchart+renesas@ideasonboard.com, niklas.soderlund+renesas@ragnatech.se, geert@linux-m68k.org Cc: Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org References: <20210216174146.106639-1-jacopo+renesas@jmondi.org> <20210216174146.106639-8-jacopo+renesas@jmondi.org> From: Kieran Bingham Organization: Ideas on Board Message-ID: <3e759da5-9bba-54ae-fe39-a7db2cbbb31c@ideasonboard.com> Date: Wed, 17 Feb 2021 13:33:01 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20210216174146.106639-8-jacopo+renesas@jmondi.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jacopo, On 16/02/2021 17:41, Jacopo Mondi wrote: > The MAX9271 chip manual prescribes a delay of 5 milliseconds > after the chip exists from low power state. > > Adjust the required delay in the rdacm21 camera module and add it > to the rdacm20 that currently doesn't implement one. > This sounds to me like it should be a common function in the max9271 module: > /* Verify communication with the MAX9271: ping to wakeup. */ > dev->serializer.client->addr = MAX9271_DEFAULT_ADDR; > i2c_smbus_read_byte(dev->serializer.client); > usleep_range(5000, 8000); Especially as that MAX9271_DEFAULT_ADDR should probably be handled directly in the max9271.c file too, and the RDACM's shouldn't care about it. If we end up moving the max9271 'library' into more of a module/device then this would have to be done in it's 'probe' anyway, so it's likely better handled down there...? But ... it's not essential at this point in the series, so if you want to keep this patch as is, Reviewed-by: Kieran Bingham > Signed-off-by: Jacopo Mondi > --- > drivers/media/i2c/rdacm20.c | 1 + > drivers/media/i2c/rdacm21.c | 2 +- > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/i2c/rdacm20.c b/drivers/media/i2c/rdacm20.c > index ea30cc936531..39e4b4241870 100644 > --- a/drivers/media/i2c/rdacm20.c > +++ b/drivers/media/i2c/rdacm20.c > @@ -460,6 +460,7 @@ static int rdacm20_initialize(struct rdacm20_device *dev) > /* Verify communication with the MAX9271: ping to wakeup. */ > dev->serializer.client->addr = MAX9271_DEFAULT_ADDR; > i2c_smbus_read_byte(dev->serializer.client); > + usleep_range(5000, 8000); > > /* Serial link disabled during config as it needs a valid pixel clock. */ > ret = max9271_set_serial_link(&dev->serializer, false); > diff --git a/drivers/media/i2c/rdacm21.c b/drivers/media/i2c/rdacm21.c > index 179d107f494c..b22a2ca5340b 100644 > --- a/drivers/media/i2c/rdacm21.c > +++ b/drivers/media/i2c/rdacm21.c > @@ -453,7 +453,7 @@ static int rdacm21_initialize(struct rdacm21_device *dev) > /* Verify communication with the MAX9271: ping to wakeup. */ > dev->serializer.client->addr = MAX9271_DEFAULT_ADDR; > i2c_smbus_read_byte(dev->serializer.client); > - usleep_range(3000, 5000); > + usleep_range(5000, 8000); > > /* Enable reverse channel and disable the serial link. */ > ret = max9271_set_serial_link(&dev->serializer, false); >