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=-9.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 0CF3DC282CE for ; Tue, 9 Apr 2019 11:08:00 +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 CF82D2084F for ; Tue, 9 Apr 2019 11:07:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="D/oEg3CI"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="y9depKGv" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CF82D2084F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=microchip.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:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+sRZit2JDiTqRPtXXJfNsKJybNwKZzg59JhQ4ROxFRM=; b=D/oEg3CI1mnmsw 0+RfRQNrJZwZO98WI6OgF/SkwsGpxpcvEavN7PODseA9rPm7mPz+snoeTkyXVBcbnaY0VJFAp1C7D iYKmkBJJvYznbwmM3MEMmmJTwd6n5Ws3Uz1MUsKi8AUe0gKgCVktTQo/+O/GUBUmWeqpR1Wut/nCj zcKl4nb9Qfd9kcMpQH1/RCXFR61qAXr8QM1165leCNYJ0q5e3080f4eQH03Gpny9GY4zs6DhBvUdg 4hl9SWIHjeqej8EzJoy7XRKAASoTqUnpQrDuYDPP6lU7cxBWd7PVmIwHv60Rxd+89D05JHULe/+Wm fcpehMRJBQG23Mzv2pGw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hDobe-0004Ds-0f; Tue, 09 Apr 2019 11:07:58 +0000 Received: from esa5.microchip.iphmx.com ([216.71.150.166]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hDobI-0003nj-T7 for linux-arm-kernel@lists.infradead.org; Tue, 09 Apr 2019 11:07:39 +0000 X-IronPort-AV: E=Sophos;i="5.60,329,1549954800"; d="scan'208";a="27942126" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 09 Apr 2019 04:07:32 -0700 Received: from NAM05-CO1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.76.38) with Microsoft SMTP Server (TLS) id 14.3.352.0; Tue, 9 Apr 2019 04:07:31 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector1-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aqsa90QqQjjStS/BFgSEKLvP21lOibyGSMKcEnSoxLY=; b=y9depKGvL6vioSWnn6GTXD2kOLQN04VWEvKLkqxM9r50bYc/Ljdq1Eb8RaL7N1PDFD1OOoRcA6xcJAONOFxuhDFEUY/q5KllQaPQCuWUvxPE5deFWeOKE2lEeU1O+YXcVv5YPH61W41P7prq6nliXa0/dC4l3UF/ndx4242iBpc= Received: from DM5PR11MB1242.namprd11.prod.outlook.com (10.168.108.8) by DM5PR11MB0011.namprd11.prod.outlook.com (10.164.155.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.19; Tue, 9 Apr 2019 11:07:29 +0000 Received: from DM5PR11MB1242.namprd11.prod.outlook.com ([fe80::e0e3:1d51:9e3e:6dc]) by DM5PR11MB1242.namprd11.prod.outlook.com ([fe80::e0e3:1d51:9e3e:6dc%3]) with mapi id 15.20.1771.021; Tue, 9 Apr 2019 11:07:29 +0000 From: To: , , , , , Subject: [PATCH 4/7] media: atmel: atmel-isc: add support for DO_WHITE_BALANCE Thread-Topic: [PATCH 4/7] media: atmel: atmel-isc: add support for DO_WHITE_BALANCE Thread-Index: AQHU7sRrNLP5XTfBXUK9XK97Esze7g== Date: Tue, 9 Apr 2019 11:07:28 +0000 Message-ID: <1554807715-2353-5-git-send-email-eugen.hristev@microchip.com> References: <1554807715-2353-1-git-send-email-eugen.hristev@microchip.com> In-Reply-To: <1554807715-2353-1-git-send-email-eugen.hristev@microchip.com> Accept-Language: ro-RO, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR09CA0054.eurprd09.prod.outlook.com (2603:10a6:802:28::22) To DM5PR11MB1242.namprd11.prod.outlook.com (2603:10b6:3:14::8) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Eugen.Hristev@microchip.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [94.177.32.154] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b19c174d-b120-41db-9211-08d6bcdb8e01 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(2017052603328)(7193020); SRVR:DM5PR11MB0011; x-ms-traffictypediagnostic: DM5PR11MB0011: x-microsoft-antispam-prvs: x-forefront-prvs: 000227DA0C x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(136003)(376002)(366004)(396003)(39850400004)(199004)(189003)(256004)(81166006)(66066001)(486006)(8676002)(36756003)(446003)(476003)(5660300002)(81156014)(50226002)(8936002)(71200400001)(71190400001)(14444005)(2616005)(11346002)(6512007)(106356001)(105586002)(7736002)(305945005)(478600001)(4326008)(2201001)(186003)(99286004)(76176011)(6486002)(107886003)(68736007)(97736004)(72206003)(110136005)(14454004)(316002)(53936002)(52116002)(26005)(54906003)(6436002)(6506007)(6116002)(2501003)(2906002)(3846002)(386003)(25786009)(102836004)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR11MB0011; H:DM5PR11MB1242.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: microchip.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Xy85YfTXLF/CyN75mL1r5mwDfmSFPDynRtr+WsENL1JdKX3poO2z5Pj3lFr/kDwiUs52mLU1mRZAHpujItl9sDJZNDf4iK1LOCG+G3oe8ACGpoy/9r8uqLY5SokK/5NgPIGBYr3f9tYtZBmXWDkWWS1kPl50yBTKMu0quiu5JtOu0TPtQlDjef9uLyZ0nvxLvJcfWBheF0GTV5vMmT4f4FBh6n66j0UMhw9qfDCXwa7G+3GfRBuMYvzMfc8aj2K6GGXUji5bfO3f5xc5I4vrqXrhRGeLHSDDSWC+WoGMSjN0fp4BxFM9homyF0LjV5WaXV7PFJbDEXI9lwDrDrAHmtyjFvhkhzc86B71mYIY2kneIixnOpcqHTqXsAShjqFO3Ly/JkxP0p+zB3kCw/zxnQs9yTO5WO19dAnD/uRK6sI= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: b19c174d-b120-41db-9211-08d6bcdb8e01 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2019 11:07:28.9694 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB0011 X-OriginatorOrg: microchip.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190409_040737_104513_93BA3C40 X-CRM114-Status: GOOD ( 19.88 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eugen.Hristev@microchip.com, ksloat@aampglobal.com 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 From: Eugen Hristev This adds support for the 'button' control DO_WHITE_BALANCE This feature will enable the ISC to compute the white balance coefficients in a one time shot, at the user discretion. This can be used if a color chart/grey chart is present in front of the camera. The ISC will adjust the coefficients and have them fixed until next balance or until sensor mode is changed. This is particularly useful for white balance adjustment in different lighting scenarios, and then taking photos to similar scenery. The old auto white balance stays in place, where the ISC will adjust every 4 frames to the current scenery lighting, if the scenery is approximately grey in average, otherwise grey world algorithm fails. One time white balance adjustments needs streaming to be enabled, such that capture is enabled and the histogram has data to work with. Histogram without capture does not work in this hardware module. To disable auto white balance feature (first step) v4l2-ctl --set-ctrl=white_balance_automatic=0 To start the one time white balance procedure: v4l2-ctl --set-ctrl=do_white_balance=1 User controls now include the do_white_balance ctrl: User Controls brightness 0x00980900 (int) : min=-1024 max=1023 step=1 default=0 value=0 flags=slider contrast 0x00980901 (int) : min=-2048 max=2047 step=1 default=256 value=256 flags=slider white_balance_automatic 0x0098090c (bool) : default=1 value=1 do_white_balance 0x0098090d (button) : flags=write-only, execute-on-write gamma 0x00980910 (int) : min=0 max=2 step=1 default=2 value=2 flags=slider Signed-off-by: Eugen Hristev --- drivers/media/platform/atmel/atmel-isc.c | 74 +++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 5 deletions(-) diff --git a/drivers/media/platform/atmel/atmel-isc.c b/drivers/media/platform/atmel/atmel-isc.c index f6b8b00e..e516805 100644 --- a/drivers/media/platform/atmel/atmel-isc.c +++ b/drivers/media/platform/atmel/atmel-isc.c @@ -167,6 +167,9 @@ struct isc_ctrls { u32 brightness; u32 contrast; u8 gamma_index; +#define ISC_WB_NONE 0 +#define ISC_WB_AUTO 1 +#define ISC_WB_ONETIME 2 u8 awb; /* one for each component : GR, R, GB, B */ @@ -210,6 +213,7 @@ struct isc_device { struct fmt_config try_config; struct isc_ctrls ctrls; + struct v4l2_ctrl *do_wb_ctrl; struct work_struct awb_work; struct mutex lock; @@ -809,7 +813,7 @@ static void isc_set_pipeline(struct isc_device *isc, u32 pipeline) bay_cfg = isc->config.sd_format->cfa_baycfg; - if (!ctrls->awb) + if (ctrls->awb == ISC_WB_NONE) isc_reset_awb_ctrls(isc); regmap_write(regmap, ISC_WB_CFG, bay_cfg); @@ -1928,7 +1932,7 @@ static void isc_awb_work(struct work_struct *w) baysel = isc->config.sd_format->cfa_baycfg << ISC_HIS_CFG_BAYSEL_SHIFT; /* if no more auto white balance, reset controls. */ - if (!ctrls->awb) + if (ctrls->awb == ISC_WB_NONE) isc_reset_awb_ctrls(isc); pm_runtime_get_sync(isc->dev); @@ -1937,7 +1941,7 @@ static void isc_awb_work(struct work_struct *w) * only update if we have all the required histograms and controls * if awb has been disabled, we need to reset registers as well. */ - if (hist_id == ISC_HIS_CFG_MODE_GR || !ctrls->awb) { + if (hist_id == ISC_HIS_CFG_MODE_GR || ctrls->awb == ISC_WB_NONE) { /* * It may happen that DMA Done IRQ will trigger while we are * updating white balance registers here. @@ -1947,6 +1951,16 @@ static void isc_awb_work(struct work_struct *w) spin_lock_irqsave(&isc->awb_lock, flags); isc_update_awb_ctrls(isc); spin_unlock_irqrestore(&isc->awb_lock, flags); + + /* + * if we are doing just the one time white balance adjustment, + * we are basically done. + */ + if (ctrls->awb == ISC_WB_ONETIME) { + v4l2_info(&isc->v4l2_dev, + "Completed one time white-balance adjustment.\n"); + ctrls->awb = ISC_WB_NONE; + } } regmap_write(regmap, ISC_HIS_CFG, hist_id | baysel | ISC_HIS_CFG_RAR); isc_update_profile(isc); @@ -1974,10 +1988,56 @@ static int isc_s_ctrl(struct v4l2_ctrl *ctrl) ctrls->gamma_index = ctrl->val; break; case V4L2_CID_AUTO_WHITE_BALANCE: - ctrls->awb = ctrl->val; + if (ctrl->val == 1) { + ctrls->awb = ISC_WB_AUTO; + v4l2_ctrl_activate(isc->do_wb_ctrl, false); + } else { + ctrls->awb = ISC_WB_NONE; + v4l2_ctrl_activate(isc->do_wb_ctrl, true); + } + /* we did not configure ISC yet */ + if (!isc->config.sd_format) + break; + + if (!ISC_IS_FORMAT_RAW(isc->config.sd_format->mbus_code)) { + v4l2_err(&isc->v4l2_dev, + "White balance adjustments available only if sensor is in RAW mode.\n"); + return 0; + } + if (ctrls->hist_stat != HIST_ENABLED) { isc_reset_awb_ctrls(isc); } + + if (isc->ctrls.awb && vb2_is_streaming(&isc->vb2_vidq) && + ISC_IS_FORMAT_RAW(isc->config.sd_format->mbus_code)) + isc_set_histogram(isc, true); + + break; + case V4L2_CID_DO_WHITE_BALANCE: + /* we did not configure ISC yet */ + if (!isc->config.sd_format) + break; + + if (ctrls->awb == ISC_WB_AUTO) { + v4l2_err(&isc->v4l2_dev, + "To use one time white-balance adjustment, disable auto white balance first.\n"); + return -EAGAIN; + } + if (!vb2_is_streaming(&isc->vb2_vidq)) { + v4l2_err(&isc->v4l2_dev, + "One time white-balance adjustment requires streaming to be enabled.\n"); + return -EAGAIN; + } + + if (!ISC_IS_FORMAT_RAW(isc->config.sd_format->mbus_code)) { + v4l2_err(&isc->v4l2_dev, + "White balance adjustments available only if sensor is in RAW mode.\n"); + return -EAGAIN; + } + ctrls->awb = ISC_WB_ONETIME; + isc_set_histogram(isc, true); + v4l2_info(&isc->v4l2_dev, "One time white-balance started.\n"); break; default: return -EINVAL; @@ -2000,7 +2060,7 @@ static int isc_ctrl_init(struct isc_device *isc) ctrls->hist_stat = HIST_INIT; isc_reset_awb_ctrls(isc); - ret = v4l2_ctrl_handler_init(hdl, 4); + ret = v4l2_ctrl_handler_init(hdl, 5); if (ret < 0) return ret; @@ -2012,6 +2072,10 @@ static int isc_ctrl_init(struct isc_device *isc) v4l2_ctrl_new_std(hdl, ops, V4L2_CID_GAMMA, 0, GAMMA_MAX, 1, 2); v4l2_ctrl_new_std(hdl, ops, V4L2_CID_AUTO_WHITE_BALANCE, 0, 1, 1, 1); + /* do_white_balance is a button, so min,max,step,default are ignored */ + isc->do_wb_ctrl = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_DO_WHITE_BALANCE, + 0, 0, 0, 0); + v4l2_ctrl_handler_setup(hdl); return 0; -- 2.7.4 _______________________________________________ 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=-9.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 7C989C282CE for ; Tue, 9 Apr 2019 11:07:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3B5222084F for ; Tue, 9 Apr 2019 11:07:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="y9depKGv" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727030AbfDILHf (ORCPT ); Tue, 9 Apr 2019 07:07:35 -0400 Received: from esa5.microchip.iphmx.com ([216.71.150.166]:34760 "EHLO esa5.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726981AbfDILHc (ORCPT ); Tue, 9 Apr 2019 07:07:32 -0400 X-IronPort-AV: E=Sophos;i="5.60,329,1549954800"; d="scan'208";a="27942126" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 09 Apr 2019 04:07:32 -0700 Received: from NAM05-CO1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.76.38) with Microsoft SMTP Server (TLS) id 14.3.352.0; Tue, 9 Apr 2019 04:07:31 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector1-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aqsa90QqQjjStS/BFgSEKLvP21lOibyGSMKcEnSoxLY=; b=y9depKGvL6vioSWnn6GTXD2kOLQN04VWEvKLkqxM9r50bYc/Ljdq1Eb8RaL7N1PDFD1OOoRcA6xcJAONOFxuhDFEUY/q5KllQaPQCuWUvxPE5deFWeOKE2lEeU1O+YXcVv5YPH61W41P7prq6nliXa0/dC4l3UF/ndx4242iBpc= Received: from DM5PR11MB1242.namprd11.prod.outlook.com (10.168.108.8) by DM5PR11MB0011.namprd11.prod.outlook.com (10.164.155.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.19; Tue, 9 Apr 2019 11:07:29 +0000 Received: from DM5PR11MB1242.namprd11.prod.outlook.com ([fe80::e0e3:1d51:9e3e:6dc]) by DM5PR11MB1242.namprd11.prod.outlook.com ([fe80::e0e3:1d51:9e3e:6dc%3]) with mapi id 15.20.1771.021; Tue, 9 Apr 2019 11:07:29 +0000 From: To: , , , , , CC: , Subject: [PATCH 4/7] media: atmel: atmel-isc: add support for DO_WHITE_BALANCE Thread-Topic: [PATCH 4/7] media: atmel: atmel-isc: add support for DO_WHITE_BALANCE Thread-Index: AQHU7sRrNLP5XTfBXUK9XK97Esze7g== Date: Tue, 9 Apr 2019 11:07:28 +0000 Message-ID: <1554807715-2353-5-git-send-email-eugen.hristev@microchip.com> References: <1554807715-2353-1-git-send-email-eugen.hristev@microchip.com> In-Reply-To: <1554807715-2353-1-git-send-email-eugen.hristev@microchip.com> Accept-Language: ro-RO, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR09CA0054.eurprd09.prod.outlook.com (2603:10a6:802:28::22) To DM5PR11MB1242.namprd11.prod.outlook.com (2603:10b6:3:14::8) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Eugen.Hristev@microchip.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [94.177.32.154] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b19c174d-b120-41db-9211-08d6bcdb8e01 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(2017052603328)(7193020);SRVR:DM5PR11MB0011; x-ms-traffictypediagnostic: DM5PR11MB0011: x-microsoft-antispam-prvs: x-forefront-prvs: 000227DA0C x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(136003)(376002)(366004)(396003)(39850400004)(199004)(189003)(256004)(81166006)(66066001)(486006)(8676002)(36756003)(446003)(476003)(5660300002)(81156014)(50226002)(8936002)(71200400001)(71190400001)(14444005)(2616005)(11346002)(6512007)(106356001)(105586002)(7736002)(305945005)(478600001)(4326008)(2201001)(186003)(99286004)(76176011)(6486002)(107886003)(68736007)(97736004)(72206003)(110136005)(14454004)(316002)(53936002)(52116002)(26005)(54906003)(6436002)(6506007)(6116002)(2501003)(2906002)(3846002)(386003)(25786009)(102836004)(86362001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR11MB0011;H:DM5PR11MB1242.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microchip.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Xy85YfTXLF/CyN75mL1r5mwDfmSFPDynRtr+WsENL1JdKX3poO2z5Pj3lFr/kDwiUs52mLU1mRZAHpujItl9sDJZNDf4iK1LOCG+G3oe8ACGpoy/9r8uqLY5SokK/5NgPIGBYr3f9tYtZBmXWDkWWS1kPl50yBTKMu0quiu5JtOu0TPtQlDjef9uLyZ0nvxLvJcfWBheF0GTV5vMmT4f4FBh6n66j0UMhw9qfDCXwa7G+3GfRBuMYvzMfc8aj2K6GGXUji5bfO3f5xc5I4vrqXrhRGeLHSDDSWC+WoGMSjN0fp4BxFM9homyF0LjV5WaXV7PFJbDEXI9lwDrDrAHmtyjFvhkhzc86B71mYIY2kneIixnOpcqHTqXsAShjqFO3Ly/JkxP0p+zB3kCw/zxnQs9yTO5WO19dAnD/uRK6sI= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: b19c174d-b120-41db-9211-08d6bcdb8e01 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Apr 2019 11:07:28.9694 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB0011 X-OriginatorOrg: microchip.com Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org RnJvbTogRXVnZW4gSHJpc3RldiA8ZXVnZW4uaHJpc3RldkBtaWNyb2NoaXAuY29tPg0KDQpUaGlz IGFkZHMgc3VwcG9ydCBmb3IgdGhlICdidXR0b24nIGNvbnRyb2wgRE9fV0hJVEVfQkFMQU5DRQ0K VGhpcyBmZWF0dXJlIHdpbGwgZW5hYmxlIHRoZSBJU0MgdG8gY29tcHV0ZSB0aGUgd2hpdGUgYmFs YW5jZSBjb2VmZmljaWVudHMNCmluIGEgb25lIHRpbWUgc2hvdCwgYXQgdGhlIHVzZXIgZGlzY3Jl dGlvbi4NClRoaXMgY2FuIGJlIHVzZWQgaWYgYSBjb2xvciBjaGFydC9ncmV5IGNoYXJ0IGlzIHBy ZXNlbnQgaW4gZnJvbnQgb2YgdGhlIGNhbWVyYS4NClRoZSBJU0Mgd2lsbCBhZGp1c3QgdGhlIGNv ZWZmaWNpZW50cyBhbmQgaGF2ZSB0aGVtIGZpeGVkIHVudGlsIG5leHQgYmFsYW5jZQ0Kb3IgdW50 aWwgc2Vuc29yIG1vZGUgaXMgY2hhbmdlZC4NClRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBm b3Igd2hpdGUgYmFsYW5jZSBhZGp1c3RtZW50IGluIGRpZmZlcmVudA0KbGlnaHRpbmcgc2NlbmFy aW9zLCBhbmQgdGhlbiB0YWtpbmcgcGhvdG9zIHRvIHNpbWlsYXIgc2NlbmVyeS4NClRoZSBvbGQg YXV0byB3aGl0ZSBiYWxhbmNlIHN0YXlzIGluIHBsYWNlLCB3aGVyZSB0aGUgSVNDIHdpbGwgYWRq dXN0IGV2ZXJ5DQo0IGZyYW1lcyB0byB0aGUgY3VycmVudCBzY2VuZXJ5IGxpZ2h0aW5nLCBpZiB0 aGUgc2NlbmVyeSBpcyBhcHByb3hpbWF0ZWx5DQpncmV5IGluIGF2ZXJhZ2UsIG90aGVyd2lzZSBn cmV5IHdvcmxkIGFsZ29yaXRobSBmYWlscy4NCk9uZSB0aW1lIHdoaXRlIGJhbGFuY2UgYWRqdXN0 bWVudHMgbmVlZHMgc3RyZWFtaW5nIHRvIGJlIGVuYWJsZWQsIHN1Y2ggdGhhdA0KY2FwdHVyZSBp cyBlbmFibGVkIGFuZCB0aGUgaGlzdG9ncmFtIGhhcyBkYXRhIHRvIHdvcmsgd2l0aC4NCkhpc3Rv Z3JhbSB3aXRob3V0IGNhcHR1cmUgZG9lcyBub3Qgd29yayBpbiB0aGlzIGhhcmR3YXJlIG1vZHVs ZS4NCg0KVG8gZGlzYWJsZSBhdXRvIHdoaXRlIGJhbGFuY2UgZmVhdHVyZSAoZmlyc3Qgc3RlcCkN CnY0bDItY3RsIC0tc2V0LWN0cmw9d2hpdGVfYmFsYW5jZV9hdXRvbWF0aWM9MA0KDQpUbyBzdGFy dCB0aGUgb25lIHRpbWUgd2hpdGUgYmFsYW5jZSBwcm9jZWR1cmU6DQp2NGwyLWN0bCAtLXNldC1j dHJsPWRvX3doaXRlX2JhbGFuY2U9MQ0KDQpVc2VyIGNvbnRyb2xzIG5vdyBpbmNsdWRlIHRoZSBk b193aGl0ZV9iYWxhbmNlIGN0cmw6DQpVc2VyIENvbnRyb2xzDQoNCiAgICAgICAgICAgICAgICAg ICAgIGJyaWdodG5lc3MgMHgwMDk4MDkwMCAoaW50KSAgICA6IG1pbj0tMTAyNCBtYXg9MTAyMyBz dGVwPTEgZGVmYXVsdD0wIHZhbHVlPTAgZmxhZ3M9c2xpZGVyDQogICAgICAgICAgICAgICAgICAg ICAgIGNvbnRyYXN0IDB4MDA5ODA5MDEgKGludCkgICAgOiBtaW49LTIwNDggbWF4PTIwNDcgc3Rl cD0xIGRlZmF1bHQ9MjU2IHZhbHVlPTI1NiBmbGFncz1zbGlkZXINCiAgICAgICAgd2hpdGVfYmFs YW5jZV9hdXRvbWF0aWMgMHgwMDk4MDkwYyAoYm9vbCkgICA6IGRlZmF1bHQ9MSB2YWx1ZT0xDQog ICAgICAgICAgICAgICBkb193aGl0ZV9iYWxhbmNlIDB4MDA5ODA5MGQgKGJ1dHRvbikgOiBmbGFn cz13cml0ZS1vbmx5LCBleGVjdXRlLW9uLXdyaXRlDQogICAgICAgICAgICAgICAgICAgICAgICAg IGdhbW1hIDB4MDA5ODA5MTAgKGludCkgICAgOiBtaW49MCBtYXg9MiBzdGVwPTEgZGVmYXVsdD0y IHZhbHVlPTIgZmxhZ3M9c2xpZGVyDQoNClNpZ25lZC1vZmYtYnk6IEV1Z2VuIEhyaXN0ZXYgPGV1 Z2VuLmhyaXN0ZXZAbWljcm9jaGlwLmNvbT4NCi0tLQ0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YXRtZWwvYXRtZWwtaXNjLmMgfCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQ0K IDEgZmlsZSBjaGFuZ2VkLCA2OSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQ0KDQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9hdG1lbC1pc2MuYyBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvYXRtZWwtaXNjLmMNCmluZGV4IGY2YjhiMDBlLi5lNTE2 ODA1IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9hdG1lbC1pc2Mu Yw0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9hdG1lbC1pc2MuYw0KQEAgLTE2 Nyw2ICsxNjcsOSBAQCBzdHJ1Y3QgaXNjX2N0cmxzIHsNCiAJdTMyIGJyaWdodG5lc3M7DQogCXUz MiBjb250cmFzdDsNCiAJdTggZ2FtbWFfaW5kZXg7DQorI2RlZmluZSBJU0NfV0JfTk9ORQkwDQor I2RlZmluZSBJU0NfV0JfQVVUTwkxDQorI2RlZmluZSBJU0NfV0JfT05FVElNRQkyDQogCXU4IGF3 YjsNCiANCiAJLyogb25lIGZvciBlYWNoIGNvbXBvbmVudCA6IEdSLCBSLCBHQiwgQiAqLw0KQEAg LTIxMCw2ICsyMTMsNyBAQCBzdHJ1Y3QgaXNjX2RldmljZSB7DQogCXN0cnVjdCBmbXRfY29uZmln CXRyeV9jb25maWc7DQogDQogCXN0cnVjdCBpc2NfY3RybHMJY3RybHM7DQorCXN0cnVjdCB2NGwy X2N0cmwJKmRvX3diX2N0cmw7DQogCXN0cnVjdCB3b3JrX3N0cnVjdAlhd2Jfd29yazsNCiANCiAJ c3RydWN0IG11dGV4CQlsb2NrOw0KQEAgLTgwOSw3ICs4MTMsNyBAQCBzdGF0aWMgdm9pZCBpc2Nf c2V0X3BpcGVsaW5lKHN0cnVjdCBpc2NfZGV2aWNlICppc2MsIHUzMiBwaXBlbGluZSkNCiANCiAJ YmF5X2NmZyA9IGlzYy0+Y29uZmlnLnNkX2Zvcm1hdC0+Y2ZhX2JheWNmZzsNCiANCi0JaWYgKCFj dHJscy0+YXdiKQ0KKwlpZiAoY3RybHMtPmF3YiA9PSBJU0NfV0JfTk9ORSkNCiAJCWlzY19yZXNl dF9hd2JfY3RybHMoaXNjKTsNCiANCiAJcmVnbWFwX3dyaXRlKHJlZ21hcCwgSVNDX1dCX0NGRywg YmF5X2NmZyk7DQpAQCAtMTkyOCw3ICsxOTMyLDcgQEAgc3RhdGljIHZvaWQgaXNjX2F3Yl93b3Jr KHN0cnVjdCB3b3JrX3N0cnVjdCAqdykNCiAJYmF5c2VsID0gaXNjLT5jb25maWcuc2RfZm9ybWF0 LT5jZmFfYmF5Y2ZnIDw8IElTQ19ISVNfQ0ZHX0JBWVNFTF9TSElGVDsNCiANCiAJLyogaWYgbm8g bW9yZSBhdXRvIHdoaXRlIGJhbGFuY2UsIHJlc2V0IGNvbnRyb2xzLiAqLw0KLQlpZiAoIWN0cmxz LT5hd2IpDQorCWlmIChjdHJscy0+YXdiID09IElTQ19XQl9OT05FKQ0KIAkJaXNjX3Jlc2V0X2F3 Yl9jdHJscyhpc2MpOw0KIA0KIAlwbV9ydW50aW1lX2dldF9zeW5jKGlzYy0+ZGV2KTsNCkBAIC0x OTM3LDcgKzE5NDEsNyBAQCBzdGF0aWMgdm9pZCBpc2NfYXdiX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3KQ0KIAkgKiBvbmx5IHVwZGF0ZSBpZiB3ZSBoYXZlIGFsbCB0aGUgcmVxdWlyZWQgaGlz dG9ncmFtcyBhbmQgY29udHJvbHMNCiAJICogaWYgYXdiIGhhcyBiZWVuIGRpc2FibGVkLCB3ZSBu ZWVkIHRvIHJlc2V0IHJlZ2lzdGVycyBhcyB3ZWxsLg0KIAkgKi8NCi0JaWYgKGhpc3RfaWQgPT0g SVNDX0hJU19DRkdfTU9ERV9HUiB8fCAhY3RybHMtPmF3Yikgew0KKwlpZiAoaGlzdF9pZCA9PSBJ U0NfSElTX0NGR19NT0RFX0dSIHx8IGN0cmxzLT5hd2IgPT0gSVNDX1dCX05PTkUpIHsNCiAJCS8q DQogCQkgKiBJdCBtYXkgaGFwcGVuIHRoYXQgRE1BIERvbmUgSVJRIHdpbGwgdHJpZ2dlciB3aGls ZSB3ZSBhcmUNCiAJCSAqIHVwZGF0aW5nIHdoaXRlIGJhbGFuY2UgcmVnaXN0ZXJzIGhlcmUuDQpA QCAtMTk0Nyw2ICsxOTUxLDE2IEBAIHN0YXRpYyB2b2lkIGlzY19hd2Jfd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKncpDQogCQlzcGluX2xvY2tfaXJxc2F2ZSgmaXNjLT5hd2JfbG9jaywgZmxhZ3Mp Ow0KIAkJaXNjX3VwZGF0ZV9hd2JfY3RybHMoaXNjKTsNCiAJCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmlzYy0+YXdiX2xvY2ssIGZsYWdzKTsNCisNCisJCS8qDQorCQkgKiBpZiB3ZSBhcmUgZG9p bmcganVzdCB0aGUgb25lIHRpbWUgd2hpdGUgYmFsYW5jZSBhZGp1c3RtZW50LA0KKwkJICogd2Ug YXJlIGJhc2ljYWxseSBkb25lLg0KKwkJICovDQorCQlpZiAoY3RybHMtPmF3YiA9PSBJU0NfV0Jf T05FVElNRSkgew0KKwkJCXY0bDJfaW5mbygmaXNjLT52NGwyX2RldiwNCisJCQkJICAiQ29tcGxl dGVkIG9uZSB0aW1lIHdoaXRlLWJhbGFuY2UgYWRqdXN0bWVudC5cbiIpOw0KKwkJCWN0cmxzLT5h d2IgPSBJU0NfV0JfTk9ORTsNCisJCX0NCiAJfQ0KIAlyZWdtYXBfd3JpdGUocmVnbWFwLCBJU0Nf SElTX0NGRywgaGlzdF9pZCB8IGJheXNlbCB8IElTQ19ISVNfQ0ZHX1JBUik7DQogCWlzY191cGRh dGVfcHJvZmlsZShpc2MpOw0KQEAgLTE5NzQsMTAgKzE5ODgsNTYgQEAgc3RhdGljIGludCBpc2Nf c19jdHJsKHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpDQogCQljdHJscy0+Z2FtbWFfaW5kZXggPSBj dHJsLT52YWw7DQogCQlicmVhazsNCiAJY2FzZSBWNEwyX0NJRF9BVVRPX1dISVRFX0JBTEFOQ0U6 DQotCQljdHJscy0+YXdiID0gY3RybC0+dmFsOw0KKwkJaWYgKGN0cmwtPnZhbCA9PSAxKSB7DQor CQkJY3RybHMtPmF3YiA9IElTQ19XQl9BVVRPOw0KKwkJCXY0bDJfY3RybF9hY3RpdmF0ZShpc2Mt PmRvX3diX2N0cmwsIGZhbHNlKTsNCisJCX0gZWxzZSB7DQorCQkJY3RybHMtPmF3YiA9IElTQ19X Ql9OT05FOw0KKwkJCXY0bDJfY3RybF9hY3RpdmF0ZShpc2MtPmRvX3diX2N0cmwsIHRydWUpOw0K KwkJfQ0KKwkJLyogd2UgZGlkIG5vdCBjb25maWd1cmUgSVNDIHlldCAqLw0KKwkJaWYgKCFpc2Mt PmNvbmZpZy5zZF9mb3JtYXQpDQorCQkJYnJlYWs7DQorDQorCQlpZiAoIUlTQ19JU19GT1JNQVRf UkFXKGlzYy0+Y29uZmlnLnNkX2Zvcm1hdC0+bWJ1c19jb2RlKSkgew0KKwkJCXY0bDJfZXJyKCZp c2MtPnY0bDJfZGV2LA0KKwkJCQkgIldoaXRlIGJhbGFuY2UgYWRqdXN0bWVudHMgYXZhaWxhYmxl IG9ubHkgaWYgc2Vuc29yIGlzIGluIFJBVyBtb2RlLlxuIik7DQorCQkJcmV0dXJuIDA7DQorCQl9 DQorDQogCQlpZiAoY3RybHMtPmhpc3Rfc3RhdCAhPSBISVNUX0VOQUJMRUQpIHsNCiAJCQlpc2Nf cmVzZXRfYXdiX2N0cmxzKGlzYyk7DQogCQl9DQorDQorCQlpZiAoaXNjLT5jdHJscy5hd2IgJiYg dmIyX2lzX3N0cmVhbWluZygmaXNjLT52YjJfdmlkcSkgJiYNCisJCSAgICBJU0NfSVNfRk9STUFU X1JBVyhpc2MtPmNvbmZpZy5zZF9mb3JtYXQtPm1idXNfY29kZSkpDQorCQkJaXNjX3NldF9oaXN0 b2dyYW0oaXNjLCB0cnVlKTsNCisNCisJCWJyZWFrOw0KKwljYXNlIFY0TDJfQ0lEX0RPX1dISVRF X0JBTEFOQ0U6DQorCQkvKiB3ZSBkaWQgbm90IGNvbmZpZ3VyZSBJU0MgeWV0ICovDQorCQlpZiAo IWlzYy0+Y29uZmlnLnNkX2Zvcm1hdCkNCisJCQlicmVhazsNCisNCisJCWlmIChjdHJscy0+YXdi ID09IElTQ19XQl9BVVRPKSB7DQorCQkJdjRsMl9lcnIoJmlzYy0+djRsMl9kZXYsDQorCQkJCSAi VG8gdXNlIG9uZSB0aW1lIHdoaXRlLWJhbGFuY2UgYWRqdXN0bWVudCwgZGlzYWJsZSBhdXRvIHdo aXRlIGJhbGFuY2UgZmlyc3QuXG4iKTsNCisJCQlyZXR1cm4gLUVBR0FJTjsNCisJCX0NCisJCWlm ICghdmIyX2lzX3N0cmVhbWluZygmaXNjLT52YjJfdmlkcSkpIHsNCisJCQl2NGwyX2VycigmaXNj LT52NGwyX2RldiwNCisJCQkJICJPbmUgdGltZSB3aGl0ZS1iYWxhbmNlIGFkanVzdG1lbnQgcmVx dWlyZXMgc3RyZWFtaW5nIHRvIGJlIGVuYWJsZWQuXG4iKTsNCisJCQlyZXR1cm4gLUVBR0FJTjsN CisJCX0NCisNCisJCWlmICghSVNDX0lTX0ZPUk1BVF9SQVcoaXNjLT5jb25maWcuc2RfZm9ybWF0 LT5tYnVzX2NvZGUpKSB7DQorCQkJdjRsMl9lcnIoJmlzYy0+djRsMl9kZXYsDQorCQkJCSAiV2hp dGUgYmFsYW5jZSBhZGp1c3RtZW50cyBhdmFpbGFibGUgb25seSBpZiBzZW5zb3IgaXMgaW4gUkFX IG1vZGUuXG4iKTsNCisJCQlyZXR1cm4gLUVBR0FJTjsNCisJCX0NCisJCWN0cmxzLT5hd2IgPSBJ U0NfV0JfT05FVElNRTsNCisJCWlzY19zZXRfaGlzdG9ncmFtKGlzYywgdHJ1ZSk7DQorCQl2NGwy X2luZm8oJmlzYy0+djRsMl9kZXYsICJPbmUgdGltZSB3aGl0ZS1iYWxhbmNlIHN0YXJ0ZWQuXG4i KTsNCiAJCWJyZWFrOw0KIAlkZWZhdWx0Og0KIAkJcmV0dXJuIC1FSU5WQUw7DQpAQCAtMjAwMCw3 ICsyMDYwLDcgQEAgc3RhdGljIGludCBpc2NfY3RybF9pbml0KHN0cnVjdCBpc2NfZGV2aWNlICpp c2MpDQogCWN0cmxzLT5oaXN0X3N0YXQgPSBISVNUX0lOSVQ7DQogCWlzY19yZXNldF9hd2JfY3Ry bHMoaXNjKTsNCiANCi0JcmV0ID0gdjRsMl9jdHJsX2hhbmRsZXJfaW5pdChoZGwsIDQpOw0KKwly ZXQgPSB2NGwyX2N0cmxfaGFuZGxlcl9pbml0KGhkbCwgNSk7DQogCWlmIChyZXQgPCAwKQ0KIAkJ cmV0dXJuIHJldDsNCiANCkBAIC0yMDEyLDYgKzIwNzIsMTAgQEAgc3RhdGljIGludCBpc2NfY3Ry bF9pbml0KHN0cnVjdCBpc2NfZGV2aWNlICppc2MpDQogCXY0bDJfY3RybF9uZXdfc3RkKGhkbCwg b3BzLCBWNEwyX0NJRF9HQU1NQSwgMCwgR0FNTUFfTUFYLCAxLCAyKTsNCiAJdjRsMl9jdHJsX25l d19zdGQoaGRsLCBvcHMsIFY0TDJfQ0lEX0FVVE9fV0hJVEVfQkFMQU5DRSwgMCwgMSwgMSwgMSk7 DQogDQorCS8qIGRvX3doaXRlX2JhbGFuY2UgaXMgYSBidXR0b24sIHNvIG1pbixtYXgsc3RlcCxk ZWZhdWx0IGFyZSBpZ25vcmVkICovDQorCWlzYy0+ZG9fd2JfY3RybCA9IHY0bDJfY3RybF9uZXdf c3RkKGhkbCwgb3BzLCBWNEwyX0NJRF9ET19XSElURV9CQUxBTkNFLA0KKwkJCQkJICAgIDAsIDAs IDAsIDApOw0KKw0KIAl2NGwyX2N0cmxfaGFuZGxlcl9zZXR1cChoZGwpOw0KIA0KIAlyZXR1cm4g MDsNCi0tIA0KMi43LjQNCg0K