Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3477938pxf; Mon, 15 Mar 2021 10:24:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyZByfKh4jbGvKiubouexxipVG1oInpcUsTeNs3SfDbKFduCg7+7ADm7geJO6lP9pqPRRbj X-Received: by 2002:aa7:d0d7:: with SMTP id u23mr30664762edo.255.1615829044488; Mon, 15 Mar 2021 10:24:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1615829044; cv=none; d=google.com; s=arc-20160816; b=iw4npoL+n/SIuR5Adw6dwHxQthzaW2Q/Ys3u23A6S/I5xV2JJcju41wSBU/6r0aDW+ +Fv9/YXRVfcB5AC4/hdc/IYIkwcjbeb+UobNeFGv1qBSUifddKjggFSdrPypleJkfysR EDQIJO+bW5XyWDD6Taa/UZJzbR6b1Ggj9mwYt9UccA+tnmkfQEnP0gb3Ldgt8JEfK97L RWr7hp2njeLQFW+mG3FCHfImL4ZlxlGtKRg1oic0/xtV7ljwRQ/Rc2jex6INvAywgqkR 77Qe0JLsi6Wx2LcaYZjJyghFt+plNBTu80+eaypr4Q3wChSIP7J27U3x891P+8pGW7SG 0D9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:organization :from:references:cc:to:subject:reply-to:dkim-signature; bh=CRXD1VhmzcMP9pssmPvZLiPeb0W8A4ioncs/nxPrq8k=; b=ZRRwf2j1GBEeAxnUmdhLILkyQrtUw+5UwWOc/neLVnYqmq/coN4e9Zo4Uh9eBnSsqZ wRbAd4lSCwOLcySST0zc11/3IeVWIE2Clj/Mo8ohvg5hZS+gJPDnNcH4MY7PebWrbDVH lQxOx2hVgWGGDcfAzmt0DXW9IJgk6Lts5EQNW0sfNoeH+3jm79z1mkj/TTNhgKuqP4o7 ImQQwZfNwq/IiJkHsd4+OUyx+SfsFy/i5sAdOpNKbFGEAaSUxn/VFiGQCOM/2+mcqD9o n5WUInKxx0rt74EZWOeZZnQwRSYnZZbF0LnA16/jEtefqsqo7rFCrBGQYiOH1Rv+A16a 9X9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=XwALossD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y18si11832353ejp.482.2021.03.15.10.23.41; Mon, 15 Mar 2021 10:24:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=XwALossD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234455AbhCORUh (ORCPT + 99 others); Mon, 15 Mar 2021 13:20:37 -0400 Received: from perceval.ideasonboard.com ([213.167.242.64]:38946 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230502AbhCORUU (ORCPT ); Mon, 15 Mar 2021 13:20:20 -0400 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 BDE93316; Mon, 15 Mar 2021 18:20:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1615828819; bh=EfmuDX1Homi+ciII042TtgOrjGfPcOAsZFWHSi2vgdg=; h=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From; b=XwALossDYbr2SBUlo68kqmYc9RdL1vRHiN95l19MQ/tNXIOeoa/trHKfOC5x6x9pu j9wooIgQyrZgAZN0LchHYVXDIq3Dmdo4vaBf9uHxJmdWVgbU9KZqXvwmEYOmItnynk pu9g3mQV3sav4dKaBs+yPX97/hSEacg4lH+ly96U= Reply-To: kieran.bingham+renesas@ideasonboard.com Subject: Re: [PATCH v2 11/18] media: i2c: rdacm21: Fix OV10640 powerdown 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: <20210315131512.133720-1-jacopo+renesas@jmondi.org> <20210315131512.133720-12-jacopo+renesas@jmondi.org> From: Kieran Bingham Organization: Ideas on Board Message-ID: <76196b54-304f-f17f-04af-67bcacd9d923@ideasonboard.com> Date: Mon, 15 Mar 2021 17:20:16 +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: <20210315131512.133720-12-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 15/03/2021 13:15, Jacopo Mondi wrote: > The OV10640 image sensor powerdown signal is controlled by the first > line of the OV490 GPIO pad #1, but the pad #0 identifier > OV490_GPIO_OUTPUT_VALUE0 was erroneously used. As a result the image > sensor powerdown signal was never asserted but was kept high by an > internal pull-up resistor, causing sporadic failures during the > image sensor startup phase. > > Fix this by using the correct GPIO pad identifier. > > While at it also fix the GPIO signal handling sequence, as the reset > line was released before the powerdown one, and introduce the correct > delays in between the two operations. > > Wait the mandatory 1 millisecond delay after the powerup lane is Technically you wait 1.5 milliseconds below - but I think that's fine here ;-) > asserted. The reset delay is not characterized in the chip manual if > not as "255 XVCLK + initialization". Wait for at least 3 milliseconds > to guarantee the SCCB bus is available. > > This commit fixes a sporadic start-up error triggered by a failure to > read the OV10640 chip ID: > rdacm21 8-0054: OV10640 ID mismatch: (0x01) > > Fixes: a59f853b3b4b ("media: i2c: Add driver for RDACM21 camera module") > Signed-off-by: Jacopo Mondi Sometime it might be nice to see this look more like the GPIO interfaces, but I think this is fine for now. Reviewed-by: Kieran Bingham > --- > drivers/media/i2c/rdacm21.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/i2c/rdacm21.c b/drivers/media/i2c/rdacm21.c > index 7bce55adfd7c..50a9b0d8255d 100644 > --- a/drivers/media/i2c/rdacm21.c > +++ b/drivers/media/i2c/rdacm21.c > @@ -333,13 +333,15 @@ static int ov10640_initialize(struct rdacm21_device *dev) > { > u8 val; > > - /* Power-up OV10640 by setting RESETB and PWDNB pins high. */ > + /* Power-up OV10640 by setting PWDNB and RESETB pins high. */ > ov490_write_reg(dev, OV490_GPIO_SEL0, OV490_GPIO0); > ov490_write_reg(dev, OV490_GPIO_SEL1, OV490_SPWDN0); > ov490_write_reg(dev, OV490_GPIO_DIRECTION0, OV490_GPIO0); > ov490_write_reg(dev, OV490_GPIO_DIRECTION1, OV490_SPWDN0); > + > + ov490_write_reg(dev, OV490_GPIO_OUTPUT_VALUE1, OV490_SPWDN0); > + usleep_range(1500, 3000); > ov490_write_reg(dev, OV490_GPIO_OUTPUT_VALUE0, OV490_GPIO0); > - ov490_write_reg(dev, OV490_GPIO_OUTPUT_VALUE0, OV490_SPWDN0); > usleep_range(3000, 5000); > > /* Read OV10640 ID to test communications. */ >