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=-13.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 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 96756C54E8B for ; Tue, 12 May 2020 11:34:16 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 59075206F5 for ; Tue, 12 May 2020 11:34:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="XrCmGE9Q"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="puf0yWSM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 59075206F5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=iZUAz7WgYDMj9dbfvDljVFDfxVtMeVPBzIqFob2IwpU=; b=XrCmGE9Qxyin+u DQda7gOc3jPnvSihCr9Us+JTpnnG1nnO7vPMZOAJROEo9O3YnTmnqie+cakJlzwABSgrx2NmahJ+c vfVK/jyPC6MT1nDQoTHSlLmQN9RRNqR0h6KhaT1K4cqWem+no0zDvGEtappIgCCxn+xckWsNhjAOD VKJGBz4Og32PrpuJdnd0qY1LYqir6iiGeAd8ZqGx3Yxvo6Z4hFDI3p7APeo05Qe09dIB3sm3KU0QR i6TL6LIzXzPH2afyadWhPwl4Q39ByfB43z8ZCrnWpT6B5dH4aWitobD7/aPeZGu3fUY8Lv5KWjTUr eH61eth5ot+ErN1reFEw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYTAn-0005b4-En; Tue, 12 May 2020 11:34:09 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYTAk-0005aF-2f; Tue, 12 May 2020 11:34:08 +0000 X-UUID: bcdf865e206444c1b94b77a7c14a1bf6-20200512 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=gYtKISy5CfAfS11vOn7jp+933wg8sWUwDhiuvPMr3cY=; b=puf0yWSM67N/TMKvrB8/WvYybedTUab/o4a47sOJeIUIYGz3FjE/zGwVNGYE+FkZybcAro0JK6ez4t21+OL0IqZrZVA4pK2GkSEHxXzHxXHTqoc8wVn1Cob+n9EEjhWdP3buDIwB04UDl78KILmAMrmO9m1KG3+dh7heI5c9oqE=; X-UUID: bcdf865e206444c1b94b77a7c14a1bf6-20200512 Received: from mtkcas68.mediatek.inc [(172.29.94.19)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 649844668; Tue, 12 May 2020 03:33:55 -0800 Received: from MTKMBS31N2.mediatek.inc (172.27.4.87) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 12 May 2020 04:34:00 -0700 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS31N2.mediatek.inc (172.27.4.87) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 12 May 2020 19:33:55 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 12 May 2020 19:33:56 +0800 Message-ID: <1589283161.8804.331.camel@mhfsdcap03> Subject: Re: [V5, 2/2] media: i2c: dw9768: Add DW9768 VCM driver From: Dongchun Zhu To: Sakari Ailus Date: Tue, 12 May 2020 19:32:41 +0800 In-Reply-To: <20200512085832.GI11272@paasikivi.fi.intel.com> References: <20200502161727.30463-3-dongchun.zhu@mediatek.com> <20200506151352.GZ9190@paasikivi.fi.intel.com> <1588855524.8804.168.camel@mhfsdcap03> <20200507131220.GC9190@paasikivi.fi.intel.com> <1588907288.8804.188.camel@mhfsdcap03> <20200508211319.GJ9190@paasikivi.fi.intel.com> <1588991026.8804.235.camel@mhfsdcap03> <1589254403.8804.306.camel@mhfsdcap03> <20200512085832.GI11272@paasikivi.fi.intel.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 755C8DCD69677F5587F2CEB84A3317C4F6D165D7560D5A48C2ADD67EEADEC3A42000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200512_043406_138144_52B07709 X-CRM114-Status: GOOD ( 37.92 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Nicolas Boichat , Andy Shevchenko , srv_heupstream , linux-devicetree , Linus Walleij , Shengnan Wang =?UTF-8?Q?=28=E7=8E=8B=E5=9C=A3=E7=94=B7=29?= , Tomasz Figa , Bartosz Golaszewski , Sj Huang , Rob Herring , "moderated list:ARM/Mediatek SoC support" , dongchun.zhu@mediatek.com, Louis Kuo , Matthias Brugger , Cao Bing Bu , Mauro Carvalho Chehab , "list@263.net:IOMMU DRIVERS , Joerg Roedel , " , Linux Media Mailing List Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Hi Sakari, On Tue, 2020-05-12 at 11:58 +0300, Sakari Ailus wrote: > Hi Dongchun, > > On Tue, May 12, 2020 at 11:33:23AM +0800, Dongchun Zhu wrote: > > Hi Tomasz, > > > > On Mon, 2020-05-11 at 20:20 +0200, Tomasz Figa wrote: > > > Hi Dongchun, > > > > > > On Sat, May 9, 2020 at 4:25 AM Dongchun Zhu wrote: > > > > > > > > Hi Sakari, > > > > > > > > On Sat, 2020-05-09 at 00:13 +0300, Sakari Ailus wrote: > > > > > Hi Dongchun, > > > > > > > > > > On Fri, May 08, 2020 at 11:08:08AM +0800, Dongchun Zhu wrote: > > > > > > Hi Sakari, Tomasz, > > > > > > > > > > > > Thanks for the review. > > > > > > > > > > > > On Thu, 2020-05-07 at 15:46 +0200, Tomasz Figa wrote: > > > > > > > Hi Sakari, Dongchun, > > > > > > > > > > > > > > On Thu, May 7, 2020 at 3:12 PM Sakari Ailus > > > > > > > wrote: > > > > > > > > > > > > > > > > HI Dongchun, > > > > > > > > > > > > > > > > On Thu, May 07, 2020 at 08:45:24PM +0800, Dongchun Zhu wrote: > > > > > > > > > Hi Sakari, > > > > > > > > > > > > > > > > > > Thanks for the review. > > > > > > > > > > > > > > > > > > On Wed, 2020-05-06 at 18:13 +0300, Sakari Ailus wrote: > > > > > > > > > > Hi Dongchun, > > > > > > > > > > > > > > > > > > > > On Sun, May 03, 2020 at 12:17:27AM +0800, Dongchun Zhu wrote: > > > > > > > > > > > Add a V4L2 sub-device driver for DW9768 voice coil motor, providing > > > > > > > > > > > control to set the desired focus via IIC serial interface. > > > > > > > > > > > > > > > > > > > > > > Signed-off-by: Dongchun Zhu > > > > > > > > > > > --- > > > > > > > > > > > MAINTAINERS | 1 + > > > > > > > > > > > drivers/media/i2c/Kconfig | 11 ++ > > > > > > > > > > > drivers/media/i2c/Makefile | 1 + > > > > > > > > > > > drivers/media/i2c/dw9768.c | 440 +++++++++++++++++++++++++++++++++++++++++++++ > > > > > > > > > > > 4 files changed, 453 insertions(+) > > > > > > > > > > > create mode 100644 drivers/media/i2c/dw9768.c > > > > > > > > > > > > > > > > > > > > > > diff --git a/MAINTAINERS b/MAINTAINERS > > > > > > > > > > > index 8d72c41..c92dc99 100644 > > > > > > > > > > > --- a/MAINTAINERS > > > > > > > > > > > +++ b/MAINTAINERS > > > > > > > > > > > @@ -5157,6 +5157,7 @@ L: linux-media@vger.kernel.org > > > > > > > > > > > S: Maintained > > > > > > > > > > > T: git git://linuxtv.org/media_tree.git > > > > > > > > > > > F: Documentation/devicetree/bindings/media/i2c/dongwoon,dw9768.yaml > > > > > > > > > > > +F: drivers/media/i2c/dw9768.c > > > > > > > > > > > > > > > > > > > > > > DONGWOON DW9807 LENS VOICE COIL DRIVER > > > > > > > > > > > M: Sakari Ailus > > > > > > > > > > > diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig > > > > > > > > > > > index 125d596..6a3f9da 100644 > > > > > > > > > > > --- a/drivers/media/i2c/Kconfig > > > > > > > > > > > +++ b/drivers/media/i2c/Kconfig > > > > > > > > > > > @@ -1040,6 +1040,17 @@ config VIDEO_DW9714 > > > > > > > > > > > capability. This is designed for linear control of > > > > > > > > > > > voice coil motors, controlled via I2C serial interface. > > > > > > > > > > > > > > > > > > > > > > +config VIDEO_DW9768 > > > > > > > > > > > + tristate "DW9768 lens voice coil support" > > > > > > > > > > > + depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER > > > > > > > > > > > + depends on VIDEO_V4L2_SUBDEV_API > > > > > > > > > > > > > > > > > > > > Please check how this works in the media tree master branch now --- it's > > > > > > > > > > largely select based. > > > > > > > > > > > > > > > > > > > > > > > > > > > > The actuator driver uses some structures that require the > > > > > > > > > VIDEO_V4L2_SUBDEV_API code, so here we add VIDEO_V4L2_SUBDEV_API > > > > > > > > > dependency to avoid possible build error when it's not enabled. > > > > > > > > > > > > > > > > Please make sure this works with current media tree master. Right now it > > > > > > > > does not. > > > > > > > > > > > > > > > > > > > > > > Dongchun, as Sakari said, please make sure to base the patches on the > > > > > > > master branch of the media tree. > > > > > > > (https://git.linuxtv.org/media_tree.git/). The approach for Kconfig > > > > > > > dependency selection there seems to have changed recently. > > > > > > > > > > > > > > > > > > > I searched the patches on the media tree master branch. > > > > > > It seems that we need to remove the VIDEO_V4L2_SUBDEV_API dependency in > > > > > > Kconfig, and add #ifdef CONFIG_VIDEO_V4L2_SUBDEV_API to include > > > > > > v4l2-subdev code. > > > > > > The change mainly is to make build pass, and don't return ENOTTY if > > > > > > SUBDEV_API is not set. > > > > > > Am I right? > > > > > > > > > > Please see Kconfig entries for other similar drivers from Dongwoon. > > > > > > > > > > > > > Sorry for the mistake :-) > > > > Just found the current media tree master branch code... > > > > I would update Kconfig entries in next release by referring to: > > > > https://git.linuxtv.org/media_tree.git/tree/drivers/media/i2c/Kconfig > > > > > > Sorry for last minute comments again. We had a short discussion > > > offline with Sakari and we think there are some changes needed to this > > > driver, namely: > > > > > > 1) The hardware being driven in our case is a gt9769, which could be > > > compatible with dw9768, but it's still a different implementation and > > > could have slightly different characteristics. Thus we think the > > > driver name and compatible strings should be renamed from > > > dongwoon,dw9768 to giantec,gt9769. In the future, if there is a device > > Sorry, I actually meant just the compatible string --- Dongwoon is likely > the original manufacturer. Therefore I'd name the driver according to that, > and just add a second compatible string for the Giantec device. > > Either works for me though. > Just checked the legacy lens driver based on Mediatek architecture. I found that both DW9718 and DW9719 have been using some configuration registers to initialize VCM. Unlickily, I cannot see any upstream patches about these two lens drivers on the community. For your suggestion, I think it is okay. In fact, I just synced with Giantec FAE. Dongwoon Anatech and Giantec are two different driver companies. Their most VCM driver products are compatible with each other. In fact, they have a mapping table of DW & GT. For user, the actuator driver is common, such as DW9768 and GT9769. However, algorithms inside the chip from different Manufactures differs. For GT9769/DW9768, there is one read-only register 0x00 that could be read out to distinguish VCM IC Manufacture ID. The default value 0xE1 represents Giantec. Finally I would add one more compatible for Giantec in next release. Like this: static const struct of_device_id dw9768_of_table[] = { { .compatible = "dongwoon,dw9768" }, { .compatible = "giantec,gt9769" }, {} }; MODULE_DEVICE_TABLE(of, dw9768_of_table); _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek 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=-13.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 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 5D092C54E8F for ; Tue, 12 May 2020 11:34:16 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2F2FD20731 for ; Tue, 12 May 2020 11:34:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="VQ8jNbpI"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="puf0yWSM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2F2FD20731 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=JN0Ii6051JtLoJFIXsGeHIv+O3gklhuf9STxLpYSl7I=; b=VQ8jNbpIxXpzk2 3ztRHN+Qyd1HxtW/R5VP2hKlrG9WWe1HY6Kw+Reiwkn2CJdd7ql72IpJFiMtkwkK5qTi0PRexdZL6 LYuMktZmquV3gmLlI7sp7HiVr8V2+oVI1ewZ6aJIdaR1QQDqVHYzH9i0XT9ZvSp5hYSyD8R55T4Zl eURs7zyb7Cw5nPMKyoy6jJ24yOQszimq297zm08ZVjlOuIzqGhKTTYs+TVWf8LMCLtXHpksT1sARO C1ezEwW+T1/v42mrnV/KV/XF8TaTDHBl23G9gIM4x2VNHNoiM4BGiGwNpFu1y5BW48uZGjqBYYnNR hLHnuoIOW04PPJI5QYjA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYTAp-0005by-QR; Tue, 12 May 2020 11:34:11 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYTAk-0005aF-2f; Tue, 12 May 2020 11:34:08 +0000 X-UUID: bcdf865e206444c1b94b77a7c14a1bf6-20200512 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=gYtKISy5CfAfS11vOn7jp+933wg8sWUwDhiuvPMr3cY=; b=puf0yWSM67N/TMKvrB8/WvYybedTUab/o4a47sOJeIUIYGz3FjE/zGwVNGYE+FkZybcAro0JK6ez4t21+OL0IqZrZVA4pK2GkSEHxXzHxXHTqoc8wVn1Cob+n9EEjhWdP3buDIwB04UDl78KILmAMrmO9m1KG3+dh7heI5c9oqE=; X-UUID: bcdf865e206444c1b94b77a7c14a1bf6-20200512 Received: from mtkcas68.mediatek.inc [(172.29.94.19)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 649844668; Tue, 12 May 2020 03:33:55 -0800 Received: from MTKMBS31N2.mediatek.inc (172.27.4.87) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 12 May 2020 04:34:00 -0700 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS31N2.mediatek.inc (172.27.4.87) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 12 May 2020 19:33:55 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 12 May 2020 19:33:56 +0800 Message-ID: <1589283161.8804.331.camel@mhfsdcap03> Subject: Re: [V5, 2/2] media: i2c: dw9768: Add DW9768 VCM driver From: Dongchun Zhu To: Sakari Ailus Date: Tue, 12 May 2020 19:32:41 +0800 In-Reply-To: <20200512085832.GI11272@paasikivi.fi.intel.com> References: <20200502161727.30463-3-dongchun.zhu@mediatek.com> <20200506151352.GZ9190@paasikivi.fi.intel.com> <1588855524.8804.168.camel@mhfsdcap03> <20200507131220.GC9190@paasikivi.fi.intel.com> <1588907288.8804.188.camel@mhfsdcap03> <20200508211319.GJ9190@paasikivi.fi.intel.com> <1588991026.8804.235.camel@mhfsdcap03> <1589254403.8804.306.camel@mhfsdcap03> <20200512085832.GI11272@paasikivi.fi.intel.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 755C8DCD69677F5587F2CEB84A3317C4F6D165D7560D5A48C2ADD67EEADEC3A42000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200512_043406_138144_52B07709 X-CRM114-Status: GOOD ( 37.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Nicolas Boichat , Andy Shevchenko , srv_heupstream , linux-devicetree , Linus Walleij , Shengnan Wang =?UTF-8?Q?=28=E7=8E=8B=E5=9C=A3=E7=94=B7=29?= , Tomasz Figa , Bartosz Golaszewski , Sj Huang , Rob Herring , "moderated list:ARM/Mediatek SoC support" , dongchun.zhu@mediatek.com, Louis Kuo , Matthias Brugger , Cao Bing Bu , Mauro Carvalho Chehab , "list@263.net:IOMMU DRIVERS , Joerg Roedel , " , Linux Media Mailing List Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Sakari, On Tue, 2020-05-12 at 11:58 +0300, Sakari Ailus wrote: > Hi Dongchun, > > On Tue, May 12, 2020 at 11:33:23AM +0800, Dongchun Zhu wrote: > > Hi Tomasz, > > > > On Mon, 2020-05-11 at 20:20 +0200, Tomasz Figa wrote: > > > Hi Dongchun, > > > > > > On Sat, May 9, 2020 at 4:25 AM Dongchun Zhu wrote: > > > > > > > > Hi Sakari, > > > > > > > > On Sat, 2020-05-09 at 00:13 +0300, Sakari Ailus wrote: > > > > > Hi Dongchun, > > > > > > > > > > On Fri, May 08, 2020 at 11:08:08AM +0800, Dongchun Zhu wrote: > > > > > > Hi Sakari, Tomasz, > > > > > > > > > > > > Thanks for the review. > > > > > > > > > > > > On Thu, 2020-05-07 at 15:46 +0200, Tomasz Figa wrote: > > > > > > > Hi Sakari, Dongchun, > > > > > > > > > > > > > > On Thu, May 7, 2020 at 3:12 PM Sakari Ailus > > > > > > > wrote: > > > > > > > > > > > > > > > > HI Dongchun, > > > > > > > > > > > > > > > > On Thu, May 07, 2020 at 08:45:24PM +0800, Dongchun Zhu wrote: > > > > > > > > > Hi Sakari, > > > > > > > > > > > > > > > > > > Thanks for the review. > > > > > > > > > > > > > > > > > > On Wed, 2020-05-06 at 18:13 +0300, Sakari Ailus wrote: > > > > > > > > > > Hi Dongchun, > > > > > > > > > > > > > > > > > > > > On Sun, May 03, 2020 at 12:17:27AM +0800, Dongchun Zhu wrote: > > > > > > > > > > > Add a V4L2 sub-device driver for DW9768 voice coil motor, providing > > > > > > > > > > > control to set the desired focus via IIC serial interface. > > > > > > > > > > > > > > > > > > > > > > Signed-off-by: Dongchun Zhu > > > > > > > > > > > --- > > > > > > > > > > > MAINTAINERS | 1 + > > > > > > > > > > > drivers/media/i2c/Kconfig | 11 ++ > > > > > > > > > > > drivers/media/i2c/Makefile | 1 + > > > > > > > > > > > drivers/media/i2c/dw9768.c | 440 +++++++++++++++++++++++++++++++++++++++++++++ > > > > > > > > > > > 4 files changed, 453 insertions(+) > > > > > > > > > > > create mode 100644 drivers/media/i2c/dw9768.c > > > > > > > > > > > > > > > > > > > > > > diff --git a/MAINTAINERS b/MAINTAINERS > > > > > > > > > > > index 8d72c41..c92dc99 100644 > > > > > > > > > > > --- a/MAINTAINERS > > > > > > > > > > > +++ b/MAINTAINERS > > > > > > > > > > > @@ -5157,6 +5157,7 @@ L: linux-media@vger.kernel.org > > > > > > > > > > > S: Maintained > > > > > > > > > > > T: git git://linuxtv.org/media_tree.git > > > > > > > > > > > F: Documentation/devicetree/bindings/media/i2c/dongwoon,dw9768.yaml > > > > > > > > > > > +F: drivers/media/i2c/dw9768.c > > > > > > > > > > > > > > > > > > > > > > DONGWOON DW9807 LENS VOICE COIL DRIVER > > > > > > > > > > > M: Sakari Ailus > > > > > > > > > > > diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig > > > > > > > > > > > index 125d596..6a3f9da 100644 > > > > > > > > > > > --- a/drivers/media/i2c/Kconfig > > > > > > > > > > > +++ b/drivers/media/i2c/Kconfig > > > > > > > > > > > @@ -1040,6 +1040,17 @@ config VIDEO_DW9714 > > > > > > > > > > > capability. This is designed for linear control of > > > > > > > > > > > voice coil motors, controlled via I2C serial interface. > > > > > > > > > > > > > > > > > > > > > > +config VIDEO_DW9768 > > > > > > > > > > > + tristate "DW9768 lens voice coil support" > > > > > > > > > > > + depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER > > > > > > > > > > > + depends on VIDEO_V4L2_SUBDEV_API > > > > > > > > > > > > > > > > > > > > Please check how this works in the media tree master branch now --- it's > > > > > > > > > > largely select based. > > > > > > > > > > > > > > > > > > > > > > > > > > > > The actuator driver uses some structures that require the > > > > > > > > > VIDEO_V4L2_SUBDEV_API code, so here we add VIDEO_V4L2_SUBDEV_API > > > > > > > > > dependency to avoid possible build error when it's not enabled. > > > > > > > > > > > > > > > > Please make sure this works with current media tree master. Right now it > > > > > > > > does not. > > > > > > > > > > > > > > > > > > > > > > Dongchun, as Sakari said, please make sure to base the patches on the > > > > > > > master branch of the media tree. > > > > > > > (https://git.linuxtv.org/media_tree.git/). The approach for Kconfig > > > > > > > dependency selection there seems to have changed recently. > > > > > > > > > > > > > > > > > > > I searched the patches on the media tree master branch. > > > > > > It seems that we need to remove the VIDEO_V4L2_SUBDEV_API dependency in > > > > > > Kconfig, and add #ifdef CONFIG_VIDEO_V4L2_SUBDEV_API to include > > > > > > v4l2-subdev code. > > > > > > The change mainly is to make build pass, and don't return ENOTTY if > > > > > > SUBDEV_API is not set. > > > > > > Am I right? > > > > > > > > > > Please see Kconfig entries for other similar drivers from Dongwoon. > > > > > > > > > > > > > Sorry for the mistake :-) > > > > Just found the current media tree master branch code... > > > > I would update Kconfig entries in next release by referring to: > > > > https://git.linuxtv.org/media_tree.git/tree/drivers/media/i2c/Kconfig > > > > > > Sorry for last minute comments again. We had a short discussion > > > offline with Sakari and we think there are some changes needed to this > > > driver, namely: > > > > > > 1) The hardware being driven in our case is a gt9769, which could be > > > compatible with dw9768, but it's still a different implementation and > > > could have slightly different characteristics. Thus we think the > > > driver name and compatible strings should be renamed from > > > dongwoon,dw9768 to giantec,gt9769. In the future, if there is a device > > Sorry, I actually meant just the compatible string --- Dongwoon is likely > the original manufacturer. Therefore I'd name the driver according to that, > and just add a second compatible string for the Giantec device. > > Either works for me though. > Just checked the legacy lens driver based on Mediatek architecture. I found that both DW9718 and DW9719 have been using some configuration registers to initialize VCM. Unlickily, I cannot see any upstream patches about these two lens drivers on the community. For your suggestion, I think it is okay. In fact, I just synced with Giantec FAE. Dongwoon Anatech and Giantec are two different driver companies. Their most VCM driver products are compatible with each other. In fact, they have a mapping table of DW & GT. For user, the actuator driver is common, such as DW9768 and GT9769. However, algorithms inside the chip from different Manufactures differs. For GT9769/DW9768, there is one read-only register 0x00 that could be read out to distinguish VCM IC Manufacture ID. The default value 0xE1 represents Giantec. Finally I would add one more compatible for Giantec in next release. Like this: static const struct of_device_id dw9768_of_table[] = { { .compatible = "dongwoon,dw9768" }, { .compatible = "giantec,gt9769" }, {} }; MODULE_DEVICE_TABLE(of, dw9768_of_table); _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 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=-13.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_SANE_2 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 BBA2BC54E4A for ; Tue, 12 May 2020 11:34:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8D683206F5 for ; Tue, 12 May 2020 11:34:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Fcl89wJD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729505AbgELLeO (ORCPT ); Tue, 12 May 2020 07:34:14 -0400 Received: from Mailgw01.mediatek.com ([1.203.163.78]:40007 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726187AbgELLeN (ORCPT ); Tue, 12 May 2020 07:34:13 -0400 X-UUID: 9115f98e50a54094a0f661c803b2f75f-20200512 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=gYtKISy5CfAfS11vOn7jp+933wg8sWUwDhiuvPMr3cY=; b=Fcl89wJDY49143DUnx7+LqDMMlQ+e64wrPfpJXQ36I8GP/D2ClLv76zSdIhVB0XiI2GEXgzXfrocxCbq9mR7REI+K5MbODswoHdjIT/BRtdLyjRaHgbtrxod2Wt4cYCJOkMDDNCkabxUTa0m2BO5P9g0EyIgY/HpKOTzY42vd7c=; X-UUID: 9115f98e50a54094a0f661c803b2f75f-20200512 Received: from mtkcas32.mediatek.inc [(172.27.4.253)] by mailgw01.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLS) with ESMTP id 1662016292; Tue, 12 May 2020 19:33:59 +0800 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS31N2.mediatek.inc (172.27.4.87) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 12 May 2020 19:33:55 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 12 May 2020 19:33:56 +0800 Message-ID: <1589283161.8804.331.camel@mhfsdcap03> Subject: Re: [V5, 2/2] media: i2c: dw9768: Add DW9768 VCM driver From: Dongchun Zhu To: Sakari Ailus CC: Tomasz Figa , Linus Walleij , Bartosz Golaszewski , Mauro Carvalho Chehab , Andy Shevchenko , Rob Herring , Mark Rutland , Nicolas Boichat , Matthias Brugger , "Cao Bing Bu" , srv_heupstream , "moderated list:ARM/Mediatek SoC support" , "list@263.net:IOMMU DRIVERS , Joerg Roedel ," , Sj Huang , Linux Media Mailing List , linux-devicetree , Louis Kuo , "Shengnan Wang =?UTF-8?Q?=28=E7=8E=8B=E5=9C=A3=E7=94=B7=29?=" , Date: Tue, 12 May 2020 19:32:41 +0800 In-Reply-To: <20200512085832.GI11272@paasikivi.fi.intel.com> References: <20200502161727.30463-3-dongchun.zhu@mediatek.com> <20200506151352.GZ9190@paasikivi.fi.intel.com> <1588855524.8804.168.camel@mhfsdcap03> <20200507131220.GC9190@paasikivi.fi.intel.com> <1588907288.8804.188.camel@mhfsdcap03> <20200508211319.GJ9190@paasikivi.fi.intel.com> <1588991026.8804.235.camel@mhfsdcap03> <1589254403.8804.306.camel@mhfsdcap03> <20200512085832.GI11272@paasikivi.fi.intel.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: 755C8DCD69677F5587F2CEB84A3317C4F6D165D7560D5A48C2ADD67EEADEC3A42000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org SGkgU2FrYXJpLA0KDQpPbiBUdWUsIDIwMjAtMDUtMTIgYXQgMTE6NTggKzAzMDAsIFNha2FyaSBB aWx1cyB3cm90ZToNCj4gSGkgRG9uZ2NodW4sDQo+IA0KPiBPbiBUdWUsIE1heSAxMiwgMjAyMCBh dCAxMTozMzoyM0FNICswODAwLCBEb25nY2h1biBaaHUgd3JvdGU6DQo+ID4gSGkgVG9tYXN6LA0K PiA+IA0KPiA+IE9uIE1vbiwgMjAyMC0wNS0xMSBhdCAyMDoyMCArMDIwMCwgVG9tYXN6IEZpZ2Eg d3JvdGU6DQo+ID4gPiBIaSBEb25nY2h1biwNCj4gPiA+IA0KPiA+ID4gT24gU2F0LCBNYXkgOSwg MjAyMCBhdCA0OjI1IEFNIERvbmdjaHVuIFpodSA8ZG9uZ2NodW4uemh1QG1lZGlhdGVrLmNvbT4g d3JvdGU6DQo+ID4gPiA+DQo+ID4gPiA+IEhpIFNha2FyaSwNCj4gPiA+ID4NCj4gPiA+ID4gT24g U2F0LCAyMDIwLTA1LTA5IGF0IDAwOjEzICswMzAwLCBTYWthcmkgQWlsdXMgd3JvdGU6DQo+ID4g PiA+ID4gSGkgRG9uZ2NodW4sDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPbiBGcmksIE1heSAwOCwg MjAyMCBhdCAxMTowODowOEFNICswODAwLCBEb25nY2h1biBaaHUgd3JvdGU6DQo+ID4gPiA+ID4g PiBIaSBTYWthcmksIFRvbWFzeiwNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGFua3MgZm9y IHRoZSByZXZpZXcuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gT24gVGh1LCAyMDIwLTA1LTA3 IGF0IDE1OjQ2ICswMjAwLCBUb21hc3ogRmlnYSB3cm90ZToNCj4gPiA+ID4gPiA+ID4gSGkgU2Fr YXJpLCBEb25nY2h1biwNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gT24gVGh1LCBNYXkg NywgMjAyMCBhdCAzOjEyIFBNIFNha2FyaSBBaWx1cw0KPiA+ID4gPiA+ID4gPiA8c2FrYXJpLmFp bHVzQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiBISSBEb25nY2h1biwNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IE9uIFRo dSwgTWF5IDA3LCAyMDIwIGF0IDA4OjQ1OjI0UE0gKzA4MDAsIERvbmdjaHVuIFpodSB3cm90ZToN Cj4gPiA+ID4gPiA+ID4gPiA+IEhpIFNha2FyaSwNCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gPiBUaGFua3MgZm9yIHRoZSByZXZpZXcuDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+ID4gT24gV2VkLCAyMDIwLTA1LTA2IGF0IDE4OjEzICswMzAwLCBTYWthcmkg QWlsdXMgd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gPiA+IEhpIERvbmdjaHVuLA0KPiA+ID4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBPbiBTdW4sIE1heSAwMywgMjAyMCBhdCAx MjoxNzoyN0FNICswODAwLCBEb25nY2h1biBaaHUgd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gQWRkIGEgVjRMMiBzdWItZGV2aWNlIGRyaXZlciBmb3IgRFc5NzY4IHZvaWNlIGNvaWwgbW90 b3IsIHByb3ZpZGluZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGNvbnRyb2wgdG8gc2V0IHRoZSBk ZXNpcmVkIGZvY3VzIHZpYSBJSUMgc2VyaWFsIGludGVyZmFjZS4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IERvbmdjaHVuIFpodSA8 ZG9uZ2NodW4uemh1QG1lZGlhdGVrLmNvbT4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtLS0NCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgfCAgIDEgKw0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL21lZGlhL2kyYy9LY29uZmlnICB8ICAxMSAr Kw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL21lZGlhL2kyYy9NYWtlZmlsZSB8ICAg MSArDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gIGRyaXZlcnMvbWVkaWEvaTJjL2R3OTc2OC5jIHwg NDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDQ1MyBpbnNlcnRpb25zKCspDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL2kyYy9k dzk3NjguYw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZGlm ZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiBpbmRleCA4ZDcyYzQxLi5jOTJkYzk5IDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0t LSBhL01BSU5UQUlORVJTDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvTUFJTlRBSU5FUlMN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtNTE1Nyw2ICs1MTU3LDcgQEAgTDogIGxpbnV4LW1l ZGlhQHZnZXIua2VybmVsLm9yZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICBTOiAgICAgICBNYWlu dGFpbmVkDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gIFQ6ICAgICAgIGdpdCBnaXQ6Ly9saW51eHR2 Lm9yZy9tZWRpYV90cmVlLmdpdA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICBGOiAgICAgICBEb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL2Rvbmd3b29uLGR3OTc2OC55 YW1sDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gK0Y6ICAgICAgIGRyaXZlcnMvbWVkaWEvaTJjL2R3 OTc2OC5jDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgRE9O R1dPT04gRFc5ODA3IExFTlMgVk9JQ0UgQ09JTCBEUklWRVINCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiAgTTogICAgICAgU2FrYXJpIEFpbHVzIDxzYWthcmkuYWlsdXNAbGludXguaW50ZWwuY29tPg0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2kyYy9LY29u ZmlnIGIvZHJpdmVycy9tZWRpYS9pMmMvS2NvbmZpZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGlu ZGV4IDEyNWQ1OTYuLjZhM2Y5ZGEgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEv ZHJpdmVycy9tZWRpYS9pMmMvS2NvbmZpZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsrKyBiL2Ry aXZlcnMvbWVkaWEvaTJjL0tjb25maWcNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBAQCAtMTA0MCw2 ICsxMDQwLDE3IEBAIGNvbmZpZyBWSURFT19EVzk3MTQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAg ICAgY2FwYWJpbGl0eS4gVGhpcyBpcyBkZXNpZ25lZCBmb3IgbGluZWFyIGNvbnRyb2wgb2YNCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgdm9pY2UgY29pbCBtb3RvcnMsIGNvbnRyb2xsZWQgdmlh IEkyQyBzZXJpYWwgaW50ZXJmYWNlLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gK2NvbmZpZyBWSURFT19EVzk3NjgNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAr IHRyaXN0YXRlICJEVzk3NjggbGVucyB2b2ljZSBjb2lsIHN1cHBvcnQiDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gKyBkZXBlbmRzIG9uIEkyQyAmJiBWSURFT19WNEwyICYmIE1FRElBX0NPTlRST0xM RVINCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArIGRlcGVuZHMgb24gVklERU9fVjRMMl9TVUJERVZf QVBJDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IFBsZWFzZSBjaGVj ayBob3cgdGhpcyB3b3JrcyBpbiB0aGUgbWVkaWEgdHJlZSBtYXN0ZXIgYnJhbmNoIG5vdyAtLS0g aXQncw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBsYXJnZWx5IHNlbGVjdCBiYXNlZC4NCj4gPiA+ID4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBUaGUgYWN0 dWF0b3IgZHJpdmVyIHVzZXMgc29tZSBzdHJ1Y3R1cmVzIHRoYXQgcmVxdWlyZSB0aGUNCj4gPiA+ ID4gPiA+ID4gPiA+IFZJREVPX1Y0TDJfU1VCREVWX0FQSSBjb2RlLCBzbyBoZXJlIHdlIGFkZCBW SURFT19WNEwyX1NVQkRFVl9BUEkNCj4gPiA+ID4gPiA+ID4gPiA+IGRlcGVuZGVuY3kgdG8gYXZv aWQgcG9zc2libGUgYnVpbGQgZXJyb3Igd2hlbiBpdCdzIG5vdCBlbmFibGVkLg0KPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gUGxlYXNlIG1ha2Ugc3VyZSB0aGlzIHdvcmtzIHdpdGgg Y3VycmVudCBtZWRpYSB0cmVlIG1hc3Rlci4gUmlnaHQgbm93IGl0DQo+ID4gPiA+ID4gPiA+ID4g ZG9lcyBub3QuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g RG9uZ2NodW4sIGFzIFNha2FyaSBzYWlkLCBwbGVhc2UgbWFrZSBzdXJlIHRvIGJhc2UgdGhlIHBh dGNoZXMgb24gdGhlDQo+ID4gPiA+ID4gPiA+IG1hc3RlciBicmFuY2ggb2YgdGhlIG1lZGlhIHRy ZWUuDQo+ID4gPiA+ID4gPiA+IChodHRwczovL2dpdC5saW51eHR2Lm9yZy9tZWRpYV90cmVlLmdp dC8pLiBUaGUgYXBwcm9hY2ggZm9yIEtjb25maWcNCj4gPiA+ID4gPiA+ID4gZGVwZW5kZW5jeSBz ZWxlY3Rpb24gdGhlcmUgc2VlbXMgdG8gaGF2ZSBjaGFuZ2VkIHJlY2VudGx5Lg0KPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEkgc2VhcmNoZWQgdGhlIHBhdGNoZXMgb24g dGhlIG1lZGlhIHRyZWUgbWFzdGVyIGJyYW5jaC4NCj4gPiA+ID4gPiA+IEl0IHNlZW1zIHRoYXQg d2UgbmVlZCB0byByZW1vdmUgdGhlIFZJREVPX1Y0TDJfU1VCREVWX0FQSSBkZXBlbmRlbmN5IGlu DQo+ID4gPiA+ID4gPiBLY29uZmlnLCBhbmQgYWRkICNpZmRlZiBDT05GSUdfVklERU9fVjRMMl9T VUJERVZfQVBJIHRvIGluY2x1ZGUNCj4gPiA+ID4gPiA+IHY0bDItc3ViZGV2IGNvZGUuDQo+ID4g PiA+ID4gPiBUaGUgY2hhbmdlIG1haW5seSBpcyB0byBtYWtlIGJ1aWxkIHBhc3MsIGFuZCBkb24n dCByZXR1cm4gRU5PVFRZIGlmDQo+ID4gPiA+ID4gPiBTVUJERVZfQVBJIGlzIG5vdCBzZXQuDQo+ ID4gPiA+ID4gPiBBbSBJIHJpZ2h0Pw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gUGxlYXNlIHNlZSBL Y29uZmlnIGVudHJpZXMgZm9yIG90aGVyIHNpbWlsYXIgZHJpdmVycyBmcm9tIERvbmd3b29uLg0K PiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IFNvcnJ5IGZvciB0aGUgbWlzdGFrZSA6LSkNCj4g PiA+ID4gSnVzdCBmb3VuZCB0aGUgY3VycmVudCBtZWRpYSB0cmVlIG1hc3RlciBicmFuY2ggY29k ZS4uLg0KPiA+ID4gPiBJIHdvdWxkIHVwZGF0ZSBLY29uZmlnIGVudHJpZXMgaW4gbmV4dCByZWxl YXNlIGJ5IHJlZmVycmluZyB0bzoNCj4gPiA+ID4gaHR0cHM6Ly9naXQubGludXh0di5vcmcvbWVk aWFfdHJlZS5naXQvdHJlZS9kcml2ZXJzL21lZGlhL2kyYy9LY29uZmlnDQo+ID4gPiANCj4gPiA+ IFNvcnJ5IGZvciBsYXN0IG1pbnV0ZSBjb21tZW50cyBhZ2Fpbi4gV2UgaGFkIGEgc2hvcnQgZGlz Y3Vzc2lvbg0KPiA+ID4gb2ZmbGluZSB3aXRoIFNha2FyaSBhbmQgd2UgdGhpbmsgdGhlcmUgYXJl IHNvbWUgY2hhbmdlcyBuZWVkZWQgdG8gdGhpcw0KPiA+ID4gZHJpdmVyLCBuYW1lbHk6DQo+ID4g PiANCj4gPiA+IDEpIFRoZSBoYXJkd2FyZSBiZWluZyBkcml2ZW4gaW4gb3VyIGNhc2UgaXMgYSBn dDk3NjksIHdoaWNoIGNvdWxkIGJlDQo+ID4gPiBjb21wYXRpYmxlIHdpdGggZHc5NzY4LCBidXQg aXQncyBzdGlsbCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBhbmQNCj4gPiA+IGNvdWxkIGhh dmUgc2xpZ2h0bHkgZGlmZmVyZW50IGNoYXJhY3RlcmlzdGljcy4gVGh1cyB3ZSB0aGluayB0aGUN Cj4gPiA+IGRyaXZlciBuYW1lIGFuZCBjb21wYXRpYmxlIHN0cmluZ3Mgc2hvdWxkIGJlIHJlbmFt ZWQgZnJvbQ0KPiA+ID4gZG9uZ3dvb24sZHc5NzY4IHRvIGdpYW50ZWMsZ3Q5NzY5LiBJbiB0aGUg ZnV0dXJlLCBpZiB0aGVyZSBpcyBhIGRldmljZQ0KPiANCj4gU29ycnksIEkgYWN0dWFsbHkgbWVh bnQganVzdCB0aGUgY29tcGF0aWJsZSBzdHJpbmcgLS0tIERvbmd3b29uIGlzIGxpa2VseQ0KPiB0 aGUgb3JpZ2luYWwgbWFudWZhY3R1cmVyLiBUaGVyZWZvcmUgSSdkIG5hbWUgdGhlIGRyaXZlciBh Y2NvcmRpbmcgdG8gdGhhdCwNCj4gYW5kIGp1c3QgYWRkIGEgc2Vjb25kIGNvbXBhdGlibGUgc3Ry aW5nIGZvciB0aGUgR2lhbnRlYyBkZXZpY2UuDQo+IA0KPiBFaXRoZXIgd29ya3MgZm9yIG1lIHRo b3VnaC4NCj4gDQoNCkp1c3QgY2hlY2tlZCB0aGUgbGVnYWN5IGxlbnMgZHJpdmVyIGJhc2VkIG9u IE1lZGlhdGVrIGFyY2hpdGVjdHVyZS4NCkkgZm91bmQgdGhhdCBib3RoIERXOTcxOCBhbmQgRFc5 NzE5IGhhdmUgYmVlbiB1c2luZyBzb21lIGNvbmZpZ3VyYXRpb24NCnJlZ2lzdGVycyB0byBpbml0 aWFsaXplIFZDTS4NClVubGlja2lseSwgSSBjYW5ub3Qgc2VlIGFueSB1cHN0cmVhbSBwYXRjaGVz IGFib3V0IHRoZXNlIHR3byBsZW5zDQpkcml2ZXJzIG9uIHRoZSBjb21tdW5pdHkuDQoNCkZvciB5 b3VyIHN1Z2dlc3Rpb24sIEkgdGhpbmsgaXQgaXMgb2theS4NCkluIGZhY3QsIEkganVzdCBzeW5j ZWQgd2l0aCBHaWFudGVjIEZBRS4NCkRvbmd3b29uIEFuYXRlY2ggYW5kIEdpYW50ZWMgYXJlIHR3 byBkaWZmZXJlbnQgZHJpdmVyIGNvbXBhbmllcy4NClRoZWlyIG1vc3QgVkNNIGRyaXZlciBwcm9k dWN0cyBhcmUgY29tcGF0aWJsZSB3aXRoIGVhY2ggb3RoZXIuDQpJbiBmYWN0LCB0aGV5IGhhdmUg YSBtYXBwaW5nIHRhYmxlIG9mIERXICYgR1QuDQpGb3IgdXNlciwgdGhlIGFjdHVhdG9yIGRyaXZl ciBpcyBjb21tb24sIHN1Y2ggYXMgRFc5NzY4IGFuZCBHVDk3NjkuDQpIb3dldmVyLCBhbGdvcml0 aG1zIGluc2lkZSB0aGUgY2hpcCBmcm9tIGRpZmZlcmVudCBNYW51ZmFjdHVyZXMgZGlmZmVycy4N Cg0KRm9yIEdUOTc2OS9EVzk3NjgsIHRoZXJlIGlzIG9uZSByZWFkLW9ubHkgcmVnaXN0ZXIgMHgw MCB0aGF0IGNvdWxkIGJlDQpyZWFkIG91dCB0byBkaXN0aW5ndWlzaCBWQ00gSUMgTWFudWZhY3R1 cmUgSUQuDQpUaGUgZGVmYXVsdCB2YWx1ZSAweEUxIHJlcHJlc2VudHMgR2lhbnRlYy4NCg0KRmlu YWxseSBJIHdvdWxkIGFkZCBvbmUgbW9yZSBjb21wYXRpYmxlIGZvciBHaWFudGVjIGluIG5leHQg cmVsZWFzZS4NCkxpa2UgdGhpczoNCnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGR3 OTc2OF9vZl90YWJsZVtdID0gew0KICAgeyAuY29tcGF0aWJsZSA9ICJkb25nd29vbixkdzk3Njgi IH0sDQogICB7IC5jb21wYXRpYmxlID0gImdpYW50ZWMsZ3Q5NzY5IiB9LA0KICAge30NCn07DQpN T0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkdzk3Njhfb2ZfdGFibGUpOw0KDQo=