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=-15.9 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,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,UNWANTED_LANGUAGE_BODY,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 ABC18C433E0 for ; Mon, 8 Mar 2021 04:07:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8C60464DE5 for ; Mon, 8 Mar 2021 04:07:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234167AbhCHEGw (ORCPT ); Sun, 7 Mar 2021 23:06:52 -0500 Received: from mail-eopbgr60055.outbound.protection.outlook.com ([40.107.6.55]:52275 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S234104AbhCHEGR (ORCPT ); Sun, 7 Mar 2021 23:06:17 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ajUkJ6fkidbpQo+tD/BP5R9Y5LG8HwzmQ+vObKLdQ1z6OsjKp4ZAD369lT06O0bQvveDWHuWL1mJ9/gLYX5IMzx8kKW0W5EvWhZeJj7/a8oOQGILyJGFaEn/rxuuK7a/2xnDC+XkeIQlaFOngYFWAocAzs+KwLW/HcWhvG29WrEFXAuePhU5zVjJC5sq65BwwLrLeTuXLhYShNaA2S7ILhRL/Pb95WUz2vj1fu44LIcJxyrLw9u9NkquD7KsOfuctY3d0E37mgPMYmXIqJqh4FE4+0CENDUSgbuEVy2xXnNvfCgVtoIIfbycIgj8TuhWP0DLHH4jcT1CVDoLd0o2PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mrHiiLhQQdwrv7COH8QzBaRdj3T0UckZxTgVCPoh/pk=; b=jUuTD83x2VvhfDuH9EMrDyMjY/0mdMiQvw1kyrNjqAljI9gaoy6+gdFE+XpwvEID9lX8T5vk4nkqsmPW9nnxhqGm3IErcGIQBzsD9Bp7Yxxqk8Ur1OX0ASjWpsdVmnyOa4qFZz11CE0Kz3PancRBOsrLfR1mviwA2F0mijl5TtFPrw6amsPcXkhD/ULh1CAUQFZs8QQQLK/bXC4LEfsFJzCC9XdFQu0VxyE+Zcu61mUkhTc+1KeEKxIBWgpTNOkYXsT6W/EsmALTu0HIiF5qBQTLrobIBAYP29n4Aq56tGIlXtLZbM6tqixwQa7LgrV5t3iTaQ9kGtpzFj4sF8Q5ag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mrHiiLhQQdwrv7COH8QzBaRdj3T0UckZxTgVCPoh/pk=; b=YAYNyJvU77x4yemb4lH+5i8srybLlrd1A5yU3yBpiXVFJn04hJ0BvLnNEGvnkMIvFKI1hepuL8BB6O/J3uSBhYwdyo63jhapriV746dNTImrlZTsFhNSaU+1ueq0O27pP7P0BSE8eqYTlsolO6i5BclujwWn8FbI5nAmvFnilNY= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB3983.eurprd04.prod.outlook.com (2603:10a6:803:4c::16) by VI1PR04MB5184.eurprd04.prod.outlook.com (2603:10a6:803:5d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.26; Mon, 8 Mar 2021 04:06:15 +0000 Received: from VI1PR04MB3983.eurprd04.prod.outlook.com ([fe80::2564:cacc:2da5:52d0]) by VI1PR04MB3983.eurprd04.prod.outlook.com ([fe80::2564:cacc:2da5:52d0%5]) with mapi id 15.20.3912.027; Mon, 8 Mar 2021 04:06:15 +0000 From: Liu Ying To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org Cc: kishon@ti.com, vkoul@kernel.org, robh+dt@kernel.org, a.hajda@samsung.com, narmstrong@baylibre.com, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@siol.net, airlied@linux.ie, daniel@ffwll.ch, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, agx@sigxcpu.org, robert.chiras@nxp.com, martin.kepplinger@puri.sm, robert.foss@linaro.org Subject: [PATCH v4 5/5] phy: freescale: phy-fsl-imx8-mipi-dphy: Add i.MX8qxp LVDS PHY mode support Date: Mon, 8 Mar 2021 11:52:21 +0800 Message-Id: <1615175541-29009-6-git-send-email-victor.liu@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1615175541-29009-1-git-send-email-victor.liu@nxp.com> References: <1615175541-29009-1-git-send-email-victor.liu@nxp.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Originating-IP: [119.31.174.66] X-ClientProxiedBy: HK2PR04CA0088.apcprd04.prod.outlook.com (2603:1096:202:15::32) To VI1PR04MB3983.eurprd04.prod.outlook.com (2603:10a6:803:4c::16) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (119.31.174.66) by HK2PR04CA0088.apcprd04.prod.outlook.com (2603:1096:202:15::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.3912.17 via Frontend Transport; Mon, 8 Mar 2021 04:06:09 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3bde5f48-a903-4b03-6fbd-08d8e1e78462 X-MS-TrafficTypeDiagnostic: VI1PR04MB5184: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1265; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sJkQvlHHz61XIi6lges9KLH/4Wk4kWsEAwQxkxpWPSv6Gdn9NQaVmddt78vVOUJIPGPDCdZMDOFo67UnqdZAN72hFCphhi+Ot01xmiN+YyRHS+/2sbD3cJCBFsTucwszbaPXqoT2na77jDk4wfFvhH3Y3XynsxJGgDJfnQPeZh6dnqDT1QJSW4MpWdui0Jl2L0N0fenfQvygWoGbFiI5rdTejNmRFG9KX6bHTHR1zA0ymkNSQfgVzq1yef7403Ebwi4bJ5MBD7MpL+g9/MNB+H5+t4Vf+W0XbPMH1aiAtImKhbpn0fzKksRdyl9u9PgX7BPMxoWFj4o27P19mWV01WeX4s2GGogxQt1fFFQR6e89wFx0GmixwDL4VXJbFnChcoEIGMfPrleGg7OnCsMSxrUsIWj0UQhHi0HEWWM6CveFYw08Lrezs6EKmSd4IpaAVlLwb8+Gbs+7br3rogBJGpT9tnmlWg2DaMhL+KMPiZ9YPa30HOJAYFtHMluw2eiafr1q6cwZVs1P86hXW6+/SNawoEuojBBBZa9KSbPa7STnTzp5kbfUAx0vXXBJ0QN/lOIOFKHCAt0t1wc4oBzX3A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB3983.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(376002)(346002)(39860400002)(136003)(396003)(956004)(66946007)(478600001)(26005)(2616005)(4326008)(2906002)(6666004)(86362001)(36756003)(83380400001)(66476007)(186003)(30864003)(8676002)(52116002)(16526019)(5660300002)(316002)(6486002)(6512007)(8936002)(66574015)(6506007)(7416002)(66556008)(473944003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?RVRwTjBFa09OZWRJcUhqRk5lcEZVMFl6T01zZ0VaL0NDSTFrREoxSHBJSFYy?= =?utf-8?B?U0QyL20wOWJPdXR1ekowVDNKRTc4NFdaNUJxaXIwbW04ZWpHVjN6MFVYMGc2?= =?utf-8?B?S3FwdVhoRmFXRVhSN1dCU1JzU0hmTkptNHlaaTRVZFJpVTVCU2NPUUdjTjB2?= =?utf-8?B?U1FGTWtVQ055TWdqOTVvcmZkNEQwd09ybnhLUmxUOWZYOFh5cXlsSE9OOEFF?= =?utf-8?B?ZnNCeWpmOW92QkhYNUd5LzFZTWgrVzRJdWt5MDZqVFpsbXJzVTlLdGM1Z0c5?= =?utf-8?B?OWtuSmVwbzlLaXNOQ2VIRUZoQkVMdDZTOCtScFhKMDhhL25Dd1ZYNlFCNktY?= =?utf-8?B?bDVycnRzcTRrb2NvRGVXYzcyejhIRFJublRXQzVGMFVKUHpBc2l0MXB3STNu?= =?utf-8?B?LzhwdUx1TGFMWEkvYnREek1Cd0d3ajdtWWorcEJDRHFrdHhuRXY5RS9abWR6?= =?utf-8?B?dGgxZFh3Y0tNZEFoYWtIS2NHTDFEeC9FN1ZsVWRlSGVSYktWUTFsTmxEK0ND?= =?utf-8?B?d2dHZ1ZvV0d1amE3dWZwOXdrZTRnbGsrT1V2YXZPL05kblpzQWZ4eDArSUpr?= =?utf-8?B?RFB3c3lZZmkzOEU4bGxZcFAzUG1EM0JmcC9uRHhMK1dZeE9QNEIxUjd5SEFE?= =?utf-8?B?N1liLzNlTnhKRG52ZEYyS3lJM1cxMHM3bDB5VXRsd3I2UHU2MUZHOG1JVDdB?= =?utf-8?B?ZFc4WEVNdk5BNEh3cGE3MUVOQjl6d2IraFY0Q28rb3hrK1NOa1p0QkVSZWoz?= =?utf-8?B?SWNTUGJmUUZjSUZSejEzWkprNXdjSFB6N3JvdWdyUnI2dmtKd2pFMEFKZnBa?= =?utf-8?B?S1podWtsbnBjZVpPbTJ0SmRFWlZnbko4bGZVVzBta2hyejMxKy9kTXBtN25F?= =?utf-8?B?RkYzS0w0SWFxQjNkOGwwOEJDWmZXeFMrRkVUZW0xekV0eDYvSHIzVzFYUGFh?= =?utf-8?B?TlpSYTNaWlhjcHZ6dEpvTTMwai9vOUNtWlRENFpEN0s3WmpTYVFYMVNxRGVE?= =?utf-8?B?Z2I0N2J5NVBKRXNVRU1JZzZTNTZTaS9tZXo3MXRYbXRqY21JeVU5anJjdW1s?= =?utf-8?B?YkFlZFBtMzNQdVlUK2lKL1FpODVTejBsUlVCTmdFRXUrb3ZIeHpabmJWdmdV?= =?utf-8?B?aWV2Z3REcmdNY0UwcnBQZnZXZHdvenVjb25FMUVUcWpBVTlpeWxTY29ib0RG?= =?utf-8?B?ZkdHSmZHZGl0VVVYbTRvS2VhVFU1clBlL2RUVUtRalFPSVBmSUQyQndWRVNs?= =?utf-8?B?cWNzQlRZdU1IOXpkYmt4d2JkcVQ1U1ppckRVR0dFTkMybjEvcmRleXA4UXl6?= =?utf-8?B?UGt4TCs0b21xQXU4Rkh2djlmM20yaktiWEYyUkREcnlLcjJFTUlQN2RnSkpk?= =?utf-8?B?M0tBaURYTXc3UXpNUlhnRkxITUFNc0hlaWRiU3Z3SWtVcWRYb2ZzQ3NuelRG?= =?utf-8?B?VzYwcDFtbTVYeFRKTTR3RU9sSmpnMmp5bUZzeE1SUFlsb2tad01FRERtMTdJ?= =?utf-8?B?OW5YUGxGaERkZG5DdzQvZDR6bEZmc1g1Qm8yY3lpVHRRSE44RXpuMkE1VDMz?= =?utf-8?B?MVNySGl1UkZnUzkxNDZvdW1jeUdMekwyblEwN0RxeUpQVlZLM1hyd0w2MStY?= =?utf-8?B?VHB2T21sbTVsWldUenhvQWJIOE8wRi95SURIZTdBdk1nQllvRWRhYjBqclhr?= =?utf-8?B?bWJpNi9VWU1pYXV3QUtqR1phbkcwZzE3dVhYWi8wR1lkNE93YVZScTBSMnVY?= =?utf-8?Q?bJg26LRzT14itq5ZlqFJxnpNmDY5Bcyqk5lz+q7?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3bde5f48-a903-4b03-6fbd-08d8e1e78462 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB3983.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2021 04:06:15.1691 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: i9Odd+8OUjaw4ylpq9b4eP0L3oU8lgeH2WhVTA1PCQf8saSW8l7R130YCJBtllTBDfPS3Csc0lO4mKYA0taIAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5184 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org i.MX8qxp SoC embeds a Mixel MIPI DPHY + LVDS PHY combo which supports either a MIPI DSI display or a LVDS display. The PHY mode is controlled by SCU firmware and the driver would call a SCU firmware function to configure the PHY mode. The single LVDS PHY has 4 data lanes to support a LVDS display. Also, with a master LVDS PHY and a slave LVDS PHY, they may work together to support a LVDS display with 8 data lanes(usually, dual LVDS link display). Note that this patch supports the LVDS PHY mode only for the i.MX8qxp Mixel combo PHY, i.e., the MIPI DPHY mode is yet to be supported, so for now error would be returned from ->set_mode() if MIPI DPHY mode is passed over to it for the combo PHY. Cc: Guido Günther Cc: Robert Chiras Cc: Kishon Vijay Abraham I Cc: Vinod Koul Cc: Shawn Guo Cc: Sascha Hauer Cc: Pengutronix Kernel Team Cc: Fabio Estevam Cc: NXP Linux Team Reviewed-by: Guido Günther Signed-off-by: Liu Ying --- v3->v4: * Add Guido's R-b tag. v2->v3: * Improve readability of mixel_dphy_set_mode(). (Guido) v1->v2: * Print invalid PHY mode in dmesg. (Guido) drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c | 269 ++++++++++++++++++++++++- 1 file changed, 258 insertions(+), 11 deletions(-) diff --git a/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c b/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c index a95572b..af1ecda 100644 --- a/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c +++ b/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c @@ -4,17 +4,31 @@ * Copyright 2019 Purism SPC */ +#include #include #include #include +#include +#include #include #include +#include #include #include #include #include #include #include +#include + +/* Control and Status Registers(CSR) */ +#define PHY_CTRL 0x00 +#define CCM_MASK GENMASK(7, 5) +#define CCM(n) FIELD_PREP(CCM_MASK, (n)) +#define CA_MASK GENMASK(4, 2) +#define CA(n) FIELD_PREP(CA_MASK, (n)) +#define RFB BIT(1) +#define LVDS_EN BIT(0) /* DPHY registers */ #define DPHY_PD_DPHY 0x00 @@ -55,8 +69,15 @@ #define PWR_ON 0 #define PWR_OFF 1 +#define MIN_VCO_FREQ 640000000 +#define MAX_VCO_FREQ 1500000000 + +#define MIN_LVDS_REFCLK_FREQ 24000000 +#define MAX_LVDS_REFCLK_FREQ 150000000 + enum mixel_dphy_devtype { MIXEL_IMX8MQ, + MIXEL_IMX8QXP, }; struct mixel_dphy_devdata { @@ -65,6 +86,7 @@ struct mixel_dphy_devdata { u8 reg_rxlprp; u8 reg_rxcdrp; u8 reg_rxhs_settle; + bool is_combo; /* MIPI DPHY and LVDS PHY combo */ }; static const struct mixel_dphy_devdata mixel_dphy_devdata[] = { @@ -74,6 +96,10 @@ static const struct mixel_dphy_devdata mixel_dphy_devdata[] = { .reg_rxlprp = 0x40, .reg_rxcdrp = 0x44, .reg_rxhs_settle = 0x48, + .is_combo = false, + }, + [MIXEL_IMX8QXP] = { + .is_combo = true, }, }; @@ -95,8 +121,12 @@ struct mixel_dphy_cfg { struct mixel_dphy_priv { struct mixel_dphy_cfg cfg; struct regmap *regmap; + struct regmap *lvds_regmap; struct clk *phy_ref_clk; const struct mixel_dphy_devdata *devdata; + struct imx_sc_ipc *ipc_handle; + bool is_slave; + int id; }; static const struct regmap_config mixel_dphy_regmap_config = { @@ -317,7 +347,8 @@ static int mixel_dphy_set_pll_params(struct phy *phy) return 0; } -static int mixel_dphy_configure(struct phy *phy, union phy_configure_opts *opts) +static int +mixel_dphy_configure_mipi_dphy(struct phy *phy, union phy_configure_opts *opts) { struct mixel_dphy_priv *priv = phy_get_drvdata(phy); struct mixel_dphy_cfg cfg = { 0 }; @@ -345,15 +376,121 @@ static int mixel_dphy_configure(struct phy *phy, union phy_configure_opts *opts) return 0; } +static int +mixel_dphy_configure_lvds_phy(struct phy *phy, union phy_configure_opts *opts) +{ + struct mixel_dphy_priv *priv = phy_get_drvdata(phy); + struct phy_configure_opts_lvds *lvds_opts = &opts->lvds; + unsigned long data_rate; + unsigned long fvco; + u32 rsc; + u32 co; + int ret; + + priv->is_slave = lvds_opts->is_slave; + + /* LVDS interface pins */ + regmap_write(priv->lvds_regmap, PHY_CTRL, CCM(0x5) | CA(0x4) | RFB); + + /* enable MODE8 only for slave LVDS PHY */ + rsc = priv->id ? IMX_SC_R_MIPI_1 : IMX_SC_R_MIPI_0; + ret = imx_sc_misc_set_control(priv->ipc_handle, rsc, IMX_SC_C_DUAL_MODE, + lvds_opts->is_slave); + if (ret) { + dev_err(&phy->dev, "Failed to configure MODE8: %d\n", ret); + return ret; + } + + /* + * Choose an appropriate divider ratio to meet the requirement of + * PLL VCO frequency range. + * + * ----- 640MHz ~ 1500MHz ------------ --------------- + * | VCO | ----------------> | CO divider | -> | LVDS data rate| + * ----- FVCO ------------ --------------- + * 1/2/4/8 div 7 * differential_clk_rate + */ + data_rate = 7 * lvds_opts->differential_clk_rate; + for (co = 1; co <= 8; co *= 2) { + fvco = data_rate * co; + + if (fvco >= MIN_VCO_FREQ) + break; + } + + if (fvco < MIN_VCO_FREQ || fvco > MAX_VCO_FREQ) { + dev_err(&phy->dev, "VCO frequency %lu is out of range\n", fvco); + return -ERANGE; + } + + /* + * CO is configurable, while CN and CM are not, + * as fixed ratios 1 and 7 are applied respectively. + */ + phy_write(phy, __ffs(co), DPHY_CO); + + /* set reference clock rate */ + clk_set_rate(priv->phy_ref_clk, lvds_opts->differential_clk_rate); + + return ret; +} + +static int mixel_dphy_configure(struct phy *phy, union phy_configure_opts *opts) +{ + if (phy->attrs.mode == PHY_MODE_MIPI_DPHY) + return mixel_dphy_configure_mipi_dphy(phy, opts); + else if (phy->attrs.mode == PHY_MODE_LVDS) + return mixel_dphy_configure_lvds_phy(phy, opts); + + dev_err(&phy->dev, + "Failed to configure PHY with invalid PHY mode: %d\n", + phy->attrs.mode); + return -EINVAL; +} + +static int +mixel_dphy_validate_lvds_phy(struct phy *phy, union phy_configure_opts *opts) +{ + struct phy_configure_opts_lvds *lvds_cfg = &opts->lvds; + + if (lvds_cfg->bits_per_lane_and_dclk_cycle != 7) { + dev_err(&phy->dev, "Invalid bits per LVDS data lane: %u\n", + lvds_cfg->bits_per_lane_and_dclk_cycle); + return -EINVAL; + } + + if (lvds_cfg->lanes != 4) { + dev_err(&phy->dev, "Invalid LVDS data lanes: %u\n", + lvds_cfg->lanes); + return -EINVAL; + } + + if (lvds_cfg->differential_clk_rate < MIN_LVDS_REFCLK_FREQ || + lvds_cfg->differential_clk_rate > MAX_LVDS_REFCLK_FREQ) { + dev_err(&phy->dev, + "Invalid LVDS differential clock rate: %lu\n", + lvds_cfg->differential_clk_rate); + return -EINVAL; + } + + return 0; +} + static int mixel_dphy_validate(struct phy *phy, enum phy_mode mode, int submode, union phy_configure_opts *opts) { - struct mixel_dphy_cfg cfg = { 0 }; + if (mode == PHY_MODE_MIPI_DPHY) { + struct mixel_dphy_cfg mipi_dphy_cfg = { 0 }; - if (mode != PHY_MODE_MIPI_DPHY) - return -EINVAL; + return mixel_dphy_config_from_opts(phy, &opts->mipi_dphy, + &mipi_dphy_cfg); + } else if (mode == PHY_MODE_LVDS) { + return mixel_dphy_validate_lvds_phy(phy, opts); + } - return mixel_dphy_config_from_opts(phy, &opts->mipi_dphy, &cfg); + dev_err(&phy->dev, + "Failed to validate PHY with invalid PHY mode: %d\n", mode); + return -EINVAL; } static int mixel_dphy_init(struct phy *phy) @@ -373,27 +510,75 @@ static int mixel_dphy_exit(struct phy *phy) return 0; } -static int mixel_dphy_power_on(struct phy *phy) +static int mixel_dphy_power_on_mipi_dphy(struct phy *phy) { struct mixel_dphy_priv *priv = phy_get_drvdata(phy); u32 locked; int ret; - ret = clk_prepare_enable(priv->phy_ref_clk); - if (ret < 0) - return ret; - phy_write(phy, PWR_ON, DPHY_PD_PLL); ret = regmap_read_poll_timeout(priv->regmap, DPHY_LOCK, locked, locked, PLL_LOCK_SLEEP, PLL_LOCK_TIMEOUT); if (ret < 0) { dev_err(&phy->dev, "Could not get DPHY lock (%d)!\n", ret); - goto clock_disable; + return ret; } phy_write(phy, PWR_ON, DPHY_PD_DPHY); return 0; +} + +static int mixel_dphy_power_on_lvds_phy(struct phy *phy) +{ + struct mixel_dphy_priv *priv = phy_get_drvdata(phy); + u32 locked; + int ret; + + regmap_update_bits(priv->lvds_regmap, PHY_CTRL, LVDS_EN, LVDS_EN); + + phy_write(phy, PWR_ON, DPHY_PD_DPHY); + phy_write(phy, PWR_ON, DPHY_PD_PLL); + + /* do not wait for slave LVDS PHY being locked */ + if (priv->is_slave) + return 0; + + ret = regmap_read_poll_timeout(priv->regmap, DPHY_LOCK, locked, + locked, PLL_LOCK_SLEEP, + PLL_LOCK_TIMEOUT); + if (ret < 0) { + dev_err(&phy->dev, "Could not get LVDS PHY lock (%d)!\n", ret); + return ret; + } + + return 0; +} + +static int mixel_dphy_power_on(struct phy *phy) +{ + struct mixel_dphy_priv *priv = phy_get_drvdata(phy); + int ret; + + ret = clk_prepare_enable(priv->phy_ref_clk); + if (ret < 0) + return ret; + + if (phy->attrs.mode == PHY_MODE_MIPI_DPHY) { + ret = mixel_dphy_power_on_mipi_dphy(phy); + } else if (phy->attrs.mode == PHY_MODE_LVDS) { + ret = mixel_dphy_power_on_lvds_phy(phy); + } else { + dev_err(&phy->dev, + "Failed to power on PHY with invalid PHY mode: %d\n", + phy->attrs.mode); + ret = -EINVAL; + } + + if (ret) + goto clock_disable; + + return 0; clock_disable: clk_disable_unprepare(priv->phy_ref_clk); return ret; @@ -406,16 +591,51 @@ static int mixel_dphy_power_off(struct phy *phy) phy_write(phy, PWR_OFF, DPHY_PD_PLL); phy_write(phy, PWR_OFF, DPHY_PD_DPHY); + if (phy->attrs.mode == PHY_MODE_LVDS) + regmap_update_bits(priv->lvds_regmap, PHY_CTRL, LVDS_EN, 0); + clk_disable_unprepare(priv->phy_ref_clk); return 0; } +static int mixel_dphy_set_mode(struct phy *phy, enum phy_mode mode, int submode) +{ + struct mixel_dphy_priv *priv = phy_get_drvdata(phy); + int ret; + + if (priv->devdata->is_combo && mode != PHY_MODE_LVDS) { + dev_err(&phy->dev, "Failed to set PHY mode for combo PHY\n"); + return -EINVAL; + } + + if (!priv->devdata->is_combo && mode != PHY_MODE_MIPI_DPHY) { + dev_err(&phy->dev, "Failed to set PHY mode to MIPI DPHY\n"); + return -EINVAL; + } + + if (priv->devdata->is_combo) { + u32 rsc = priv->id ? IMX_SC_R_MIPI_1 : IMX_SC_R_MIPI_0; + + ret = imx_sc_misc_set_control(priv->ipc_handle, + rsc, IMX_SC_C_MODE, + mode == PHY_MODE_LVDS); + if (ret) { + dev_err(&phy->dev, + "Failed to set PHY mode via SCU ipc: %d\n", ret); + return ret; + } + } + + return 0; +} + static const struct phy_ops mixel_dphy_phy_ops = { .init = mixel_dphy_init, .exit = mixel_dphy_exit, .power_on = mixel_dphy_power_on, .power_off = mixel_dphy_power_off, + .set_mode = mixel_dphy_set_mode, .configure = mixel_dphy_configure, .validate = mixel_dphy_validate, .owner = THIS_MODULE, @@ -424,6 +644,8 @@ static const struct phy_ops mixel_dphy_phy_ops = { static const struct of_device_id mixel_dphy_of_match[] = { { .compatible = "fsl,imx8mq-mipi-dphy", .data = &mixel_dphy_devdata[MIXEL_IMX8MQ] }, + { .compatible = "fsl,imx8qxp-mipi-dphy", + .data = &mixel_dphy_devdata[MIXEL_IMX8QXP] }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, mixel_dphy_of_match); @@ -436,6 +658,7 @@ static int mixel_dphy_probe(struct platform_device *pdev) struct mixel_dphy_priv *priv; struct phy *phy; void __iomem *base; + int ret; if (!np) return -ENODEV; @@ -467,6 +690,30 @@ static int mixel_dphy_probe(struct platform_device *pdev) dev_dbg(dev, "phy_ref clock rate: %lu\n", clk_get_rate(priv->phy_ref_clk)); + if (priv->devdata->is_combo) { + priv->lvds_regmap = + syscon_regmap_lookup_by_phandle(np, "fsl,syscon"); + if (IS_ERR(priv->lvds_regmap)) { + ret = PTR_ERR(priv->lvds_regmap); + dev_err_probe(dev, ret, "Failed to get LVDS regmap\n"); + return ret; + } + + priv->id = of_alias_get_id(np, "mipi_dphy"); + if (priv->id < 0) { + dev_err(dev, "Failed to get phy node alias id: %d\n", + priv->id); + return priv->id; + } + + ret = imx_scu_get_handle(&priv->ipc_handle); + if (ret) { + dev_err_probe(dev, ret, + "Failed to get SCU ipc handle\n"); + return ret; + } + } + dev_set_drvdata(dev, priv); phy = devm_phy_create(dev, np, &mixel_dphy_phy_ops); -- 2.7.4 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=-14.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,UNWANTED_LANGUAGE_BODY,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 1E11EC433E0 for ; Mon, 8 Mar 2021 04:08:24 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 8070B650BF for ; Mon, 8 Mar 2021 04:08:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8070B650BF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=pLVEM7aGIGI8OU+B8TjAbaOqMHQ/I3vXtF6KRSVQBIA=; b=S1De9Y+A30CGDj8v02IIHvwlt TU0aOUHamGjLxrRHpvNsARevpNUN72/hgxJ9ZCRTcLtuB0bw9OXCnR+x9okhN29AvCF8Q6LtblJ1z OJAUFil7bXkQ0kilqpLNa4clR43ccLRRCxOdP+Q7hgs58fYPPEj1a3PlOd9eLEDnJevxoqQ3ZiAPe NjDtBvP3+4aXRfz9uWN6357Cqj1MMnJti1MRqlds28khiLvPdkEtgwzLiW058q4Fee74gpLi09gvP +KDlExEBgZr5cNKS8zIDaXV1gWjtIknWkFibXfgHMq96t02wIFScBrE5BabG4oAUHoQ0coT9WGJQD AVT+xnKrQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lJ7A3-00F0eB-LB; Mon, 08 Mar 2021 04:06:27 +0000 Received: from mail-eopbgr60072.outbound.protection.outlook.com ([40.107.6.72] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lJ79s-00F0Zs-TI for linux-arm-kernel@lists.infradead.org; Mon, 08 Mar 2021 04:06:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ajUkJ6fkidbpQo+tD/BP5R9Y5LG8HwzmQ+vObKLdQ1z6OsjKp4ZAD369lT06O0bQvveDWHuWL1mJ9/gLYX5IMzx8kKW0W5EvWhZeJj7/a8oOQGILyJGFaEn/rxuuK7a/2xnDC+XkeIQlaFOngYFWAocAzs+KwLW/HcWhvG29WrEFXAuePhU5zVjJC5sq65BwwLrLeTuXLhYShNaA2S7ILhRL/Pb95WUz2vj1fu44LIcJxyrLw9u9NkquD7KsOfuctY3d0E37mgPMYmXIqJqh4FE4+0CENDUSgbuEVy2xXnNvfCgVtoIIfbycIgj8TuhWP0DLHH4jcT1CVDoLd0o2PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mrHiiLhQQdwrv7COH8QzBaRdj3T0UckZxTgVCPoh/pk=; b=jUuTD83x2VvhfDuH9EMrDyMjY/0mdMiQvw1kyrNjqAljI9gaoy6+gdFE+XpwvEID9lX8T5vk4nkqsmPW9nnxhqGm3IErcGIQBzsD9Bp7Yxxqk8Ur1OX0ASjWpsdVmnyOa4qFZz11CE0Kz3PancRBOsrLfR1mviwA2F0mijl5TtFPrw6amsPcXkhD/ULh1CAUQFZs8QQQLK/bXC4LEfsFJzCC9XdFQu0VxyE+Zcu61mUkhTc+1KeEKxIBWgpTNOkYXsT6W/EsmALTu0HIiF5qBQTLrobIBAYP29n4Aq56tGIlXtLZbM6tqixwQa7LgrV5t3iTaQ9kGtpzFj4sF8Q5ag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mrHiiLhQQdwrv7COH8QzBaRdj3T0UckZxTgVCPoh/pk=; b=YAYNyJvU77x4yemb4lH+5i8srybLlrd1A5yU3yBpiXVFJn04hJ0BvLnNEGvnkMIvFKI1hepuL8BB6O/J3uSBhYwdyo63jhapriV746dNTImrlZTsFhNSaU+1ueq0O27pP7P0BSE8eqYTlsolO6i5BclujwWn8FbI5nAmvFnilNY= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB3983.eurprd04.prod.outlook.com (2603:10a6:803:4c::16) by VI1PR04MB5184.eurprd04.prod.outlook.com (2603:10a6:803:5d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.26; Mon, 8 Mar 2021 04:06:15 +0000 Received: from VI1PR04MB3983.eurprd04.prod.outlook.com ([fe80::2564:cacc:2da5:52d0]) by VI1PR04MB3983.eurprd04.prod.outlook.com ([fe80::2564:cacc:2da5:52d0%5]) with mapi id 15.20.3912.027; Mon, 8 Mar 2021 04:06:15 +0000 From: Liu Ying To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org Cc: kishon@ti.com, vkoul@kernel.org, robh+dt@kernel.org, a.hajda@samsung.com, narmstrong@baylibre.com, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@siol.net, airlied@linux.ie, daniel@ffwll.ch, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, agx@sigxcpu.org, robert.chiras@nxp.com, martin.kepplinger@puri.sm, robert.foss@linaro.org Subject: [PATCH v4 5/5] phy: freescale: phy-fsl-imx8-mipi-dphy: Add i.MX8qxp LVDS PHY mode support Date: Mon, 8 Mar 2021 11:52:21 +0800 Message-Id: <1615175541-29009-6-git-send-email-victor.liu@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1615175541-29009-1-git-send-email-victor.liu@nxp.com> References: <1615175541-29009-1-git-send-email-victor.liu@nxp.com> X-Originating-IP: [119.31.174.66] X-ClientProxiedBy: HK2PR04CA0088.apcprd04.prod.outlook.com (2603:1096:202:15::32) To VI1PR04MB3983.eurprd04.prod.outlook.com (2603:10a6:803:4c::16) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (119.31.174.66) by HK2PR04CA0088.apcprd04.prod.outlook.com (2603:1096:202:15::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.3912.17 via Frontend Transport; Mon, 8 Mar 2021 04:06:09 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3bde5f48-a903-4b03-6fbd-08d8e1e78462 X-MS-TrafficTypeDiagnostic: VI1PR04MB5184: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1265; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sJkQvlHHz61XIi6lges9KLH/4Wk4kWsEAwQxkxpWPSv6Gdn9NQaVmddt78vVOUJIPGPDCdZMDOFo67UnqdZAN72hFCphhi+Ot01xmiN+YyRHS+/2sbD3cJCBFsTucwszbaPXqoT2na77jDk4wfFvhH3Y3XynsxJGgDJfnQPeZh6dnqDT1QJSW4MpWdui0Jl2L0N0fenfQvygWoGbFiI5rdTejNmRFG9KX6bHTHR1zA0ymkNSQfgVzq1yef7403Ebwi4bJ5MBD7MpL+g9/MNB+H5+t4Vf+W0XbPMH1aiAtImKhbpn0fzKksRdyl9u9PgX7BPMxoWFj4o27P19mWV01WeX4s2GGogxQt1fFFQR6e89wFx0GmixwDL4VXJbFnChcoEIGMfPrleGg7OnCsMSxrUsIWj0UQhHi0HEWWM6CveFYw08Lrezs6EKmSd4IpaAVlLwb8+Gbs+7br3rogBJGpT9tnmlWg2DaMhL+KMPiZ9YPa30HOJAYFtHMluw2eiafr1q6cwZVs1P86hXW6+/SNawoEuojBBBZa9KSbPa7STnTzp5kbfUAx0vXXBJ0QN/lOIOFKHCAt0t1wc4oBzX3A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB3983.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(376002)(346002)(39860400002)(136003)(396003)(956004)(66946007)(478600001)(26005)(2616005)(4326008)(2906002)(6666004)(86362001)(36756003)(83380400001)(66476007)(186003)(30864003)(8676002)(52116002)(16526019)(5660300002)(316002)(6486002)(6512007)(8936002)(66574015)(6506007)(7416002)(66556008)(473944003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?RVRwTjBFa09OZWRJcUhqRk5lcEZVMFl6T01zZ0VaL0NDSTFrREoxSHBJSFYy?= =?utf-8?B?U0QyL20wOWJPdXR1ekowVDNKRTc4NFdaNUJxaXIwbW04ZWpHVjN6MFVYMGc2?= =?utf-8?B?S3FwdVhoRmFXRVhSN1dCU1JzU0hmTkptNHlaaTRVZFJpVTVCU2NPUUdjTjB2?= =?utf-8?B?U1FGTWtVQ055TWdqOTVvcmZkNEQwd09ybnhLUmxUOWZYOFh5cXlsSE9OOEFF?= =?utf-8?B?ZnNCeWpmOW92QkhYNUd5LzFZTWgrVzRJdWt5MDZqVFpsbXJzVTlLdGM1Z0c5?= =?utf-8?B?OWtuSmVwbzlLaXNOQ2VIRUZoQkVMdDZTOCtScFhKMDhhL25Dd1ZYNlFCNktY?= =?utf-8?B?bDVycnRzcTRrb2NvRGVXYzcyejhIRFJublRXQzVGMFVKUHpBc2l0MXB3STNu?= =?utf-8?B?LzhwdUx1TGFMWEkvYnREek1Cd0d3ajdtWWorcEJDRHFrdHhuRXY5RS9abWR6?= =?utf-8?B?dGgxZFh3Y0tNZEFoYWtIS2NHTDFEeC9FN1ZsVWRlSGVSYktWUTFsTmxEK0ND?= =?utf-8?B?d2dHZ1ZvV0d1amE3dWZwOXdrZTRnbGsrT1V2YXZPL05kblpzQWZ4eDArSUpr?= =?utf-8?B?RFB3c3lZZmkzOEU4bGxZcFAzUG1EM0JmcC9uRHhMK1dZeE9QNEIxUjd5SEFE?= =?utf-8?B?N1liLzNlTnhKRG52ZEYyS3lJM1cxMHM3bDB5VXRsd3I2UHU2MUZHOG1JVDdB?= =?utf-8?B?ZFc4WEVNdk5BNEh3cGE3MUVOQjl6d2IraFY0Q28rb3hrK1NOa1p0QkVSZWoz?= =?utf-8?B?SWNTUGJmUUZjSUZSejEzWkprNXdjSFB6N3JvdWdyUnI2dmtKd2pFMEFKZnBa?= =?utf-8?B?S1podWtsbnBjZVpPbTJ0SmRFWlZnbko4bGZVVzBta2hyejMxKy9kTXBtN25F?= =?utf-8?B?RkYzS0w0SWFxQjNkOGwwOEJDWmZXeFMrRkVUZW0xekV0eDYvSHIzVzFYUGFh?= =?utf-8?B?TlpSYTNaWlhjcHZ6dEpvTTMwai9vOUNtWlRENFpEN0s3WmpTYVFYMVNxRGVE?= =?utf-8?B?Z2I0N2J5NVBKRXNVRU1JZzZTNTZTaS9tZXo3MXRYbXRqY21JeVU5anJjdW1s?= =?utf-8?B?YkFlZFBtMzNQdVlUK2lKL1FpODVTejBsUlVCTmdFRXUrb3ZIeHpabmJWdmdV?= =?utf-8?B?aWV2Z3REcmdNY0UwcnBQZnZXZHdvenVjb25FMUVUcWpBVTlpeWxTY29ib0RG?= =?utf-8?B?ZkdHSmZHZGl0VVVYbTRvS2VhVFU1clBlL2RUVUtRalFPSVBmSUQyQndWRVNs?= =?utf-8?B?cWNzQlRZdU1IOXpkYmt4d2JkcVQ1U1ppckRVR0dFTkMybjEvcmRleXA4UXl6?= =?utf-8?B?UGt4TCs0b21xQXU4Rkh2djlmM20yaktiWEYyUkREcnlLcjJFTUlQN2RnSkpk?= =?utf-8?B?M0tBaURYTXc3UXpNUlhnRkxITUFNc0hlaWRiU3Z3SWtVcWRYb2ZzQ3NuelRG?= =?utf-8?B?VzYwcDFtbTVYeFRKTTR3RU9sSmpnMmp5bUZzeE1SUFlsb2tad01FRERtMTdJ?= =?utf-8?B?OW5YUGxGaERkZG5DdzQvZDR6bEZmc1g1Qm8yY3lpVHRRSE44RXpuMkE1VDMz?= =?utf-8?B?MVNySGl1UkZnUzkxNDZvdW1jeUdMekwyblEwN0RxeUpQVlZLM1hyd0w2MStY?= =?utf-8?B?VHB2T21sbTVsWldUenhvQWJIOE8wRi95SURIZTdBdk1nQllvRWRhYjBqclhr?= =?utf-8?B?bWJpNi9VWU1pYXV3QUtqR1phbkcwZzE3dVhYWi8wR1lkNE93YVZScTBSMnVY?= =?utf-8?Q?bJg26LRzT14itq5ZlqFJxnpNmDY5Bcyqk5lz+q7?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3bde5f48-a903-4b03-6fbd-08d8e1e78462 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB3983.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2021 04:06:15.1691 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: i9Odd+8OUjaw4ylpq9b4eP0L3oU8lgeH2WhVTA1PCQf8saSW8l7R130YCJBtllTBDfPS3Csc0lO4mKYA0taIAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5184 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210308_040617_193821_8D06F105 X-CRM114-Status: GOOD ( 24.82 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org aS5NWDhxeHAgU29DIGVtYmVkcyBhIE1peGVsIE1JUEkgRFBIWSArIExWRFMgUEhZIGNvbWJvIHdo aWNoIHN1cHBvcnRzCmVpdGhlciBhIE1JUEkgRFNJIGRpc3BsYXkgb3IgYSBMVkRTIGRpc3BsYXku ICBUaGUgUEhZIG1vZGUgaXMgY29udHJvbGxlZApieSBTQ1UgZmlybXdhcmUgYW5kIHRoZSBkcml2 ZXIgd291bGQgY2FsbCBhIFNDVSBmaXJtd2FyZSBmdW5jdGlvbiB0bwpjb25maWd1cmUgdGhlIFBI WSBtb2RlLiAgVGhlIHNpbmdsZSBMVkRTIFBIWSBoYXMgNCBkYXRhIGxhbmVzIHRvIHN1cHBvcnQK YSBMVkRTIGRpc3BsYXkuICBBbHNvLCB3aXRoIGEgbWFzdGVyIExWRFMgUEhZIGFuZCBhIHNsYXZl IExWRFMgUEhZLCB0aGV5Cm1heSB3b3JrIHRvZ2V0aGVyIHRvIHN1cHBvcnQgYSBMVkRTIGRpc3Bs YXkgd2l0aCA4IGRhdGEgbGFuZXModXN1YWxseSwgZHVhbApMVkRTIGxpbmsgZGlzcGxheSkuICBO b3RlIHRoYXQgdGhpcyBwYXRjaCBzdXBwb3J0cyB0aGUgTFZEUyBQSFkgbW9kZSBvbmx5CmZvciB0 aGUgaS5NWDhxeHAgTWl4ZWwgY29tYm8gUEhZLCBpLmUuLCB0aGUgTUlQSSBEUEhZIG1vZGUgaXMg eWV0IHRvIGJlCnN1cHBvcnRlZCwgc28gZm9yIG5vdyBlcnJvciB3b3VsZCBiZSByZXR1cm5lZCBm cm9tIC0+c2V0X21vZGUoKSBpZiBNSVBJCkRQSFkgbW9kZSBpcyBwYXNzZWQgb3ZlciB0byBpdCBm b3IgdGhlIGNvbWJvIFBIWS4KCkNjOiBHdWlkbyBHw7xudGhlciA8YWd4QHNpZ3hjcHUub3JnPgpD YzogUm9iZXJ0IENoaXJhcyA8cm9iZXJ0LmNoaXJhc0BueHAuY29tPgpDYzogS2lzaG9uIFZpamF5 IEFicmFoYW0gSSA8a2lzaG9uQHRpLmNvbT4KQ2M6IFZpbm9kIEtvdWwgPHZrb3VsQGtlcm5lbC5v cmc+CkNjOiBTaGF3biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5vcmc+CkNjOiBTYXNjaGEgSGF1ZXIg PHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkNjOiBQZW5ndXRyb25peCBLZXJuZWwgVGVhbSA8a2Vy bmVsQHBlbmd1dHJvbml4LmRlPgpDYzogRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29t PgpDYzogTlhQIExpbnV4IFRlYW0gPGxpbnV4LWlteEBueHAuY29tPgpSZXZpZXdlZC1ieTogR3Vp ZG8gR8O8bnRoZXIgPGFneEBzaWd4Y3B1Lm9yZz4KU2lnbmVkLW9mZi1ieTogTGl1IFlpbmcgPHZp Y3Rvci5saXVAbnhwLmNvbT4KLS0tCnYzLT52NDoKKiBBZGQgR3VpZG8ncyBSLWIgdGFnLgoKdjIt PnYzOgoqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgbWl4ZWxfZHBoeV9zZXRfbW9kZSgpLiAoR3Vp ZG8pCgp2MS0+djI6CiogUHJpbnQgaW52YWxpZCBQSFkgbW9kZSBpbiBkbWVzZy4gKEd1aWRvKQoK IGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDgtbWlwaS1kcGh5LmMgfCAyNjkgKysr KysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDI1OCBpbnNlcnRpb25zKCsp LCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5 LWZzbC1pbXg4LW1pcGktZHBoeS5jIGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14 OC1taXBpLWRwaHkuYwppbmRleCBhOTU1NzJiLi5hZjFlY2RhIDEwMDY0NAotLS0gYS9kcml2ZXJz L3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4LW1pcGktZHBoeS5jCisrKyBiL2RyaXZlcnMvcGh5 L2ZyZWVzY2FsZS9waHktZnNsLWlteDgtbWlwaS1kcGh5LmMKQEAgLTQsMTcgKzQsMzEgQEAKICAq IENvcHlyaWdodCAyMDE5IFB1cmlzbSBTUEMKICAqLwogCisjaW5jbHVkZSA8bGludXgvYml0Zmll bGQuaD4KICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KICNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlk ZXIuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJl L2lteC9pcGMuaD4KKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS9pbXgvc3ZjL21pc2MuaD4KICNp bmNsdWRlIDxsaW51eC9pby5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUg PGxpbnV4L21mZC9zeXNjb24uaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRl IDxsaW51eC9vZi5oPgogI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8 bGludXgvcGh5L3BoeS5oPgogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogI2lu Y2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Zpcm13YXJlL2lt eC9yc3JjLmg+CisKKy8qIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlcnMoQ1NSKSAqLworI2Rl ZmluZSBQSFlfQ1RSTAkJCTB4MDAKKyNkZWZpbmUgIENDTV9NQVNLCQkJR0VOTUFTSyg3LCA1KQor I2RlZmluZSAgQ0NNKG4pCQkJCUZJRUxEX1BSRVAoQ0NNX01BU0ssIChuKSkKKyNkZWZpbmUgIENB X01BU0sJCQlHRU5NQVNLKDQsIDIpCisjZGVmaW5lICBDQShuKQkJCQlGSUVMRF9QUkVQKENBX01B U0ssIChuKSkKKyNkZWZpbmUgIFJGQgkJCQlCSVQoMSkKKyNkZWZpbmUgIExWRFNfRU4JCQlCSVQo MCkKIAogLyogRFBIWSByZWdpc3RlcnMgKi8KICNkZWZpbmUgRFBIWV9QRF9EUEhZCQkJMHgwMApA QCAtNTUsOCArNjksMTUgQEAKICNkZWZpbmUgUFdSX09OCTAKICNkZWZpbmUgUFdSX09GRgkxCiAK KyNkZWZpbmUgTUlOX1ZDT19GUkVRIDY0MDAwMDAwMAorI2RlZmluZSBNQVhfVkNPX0ZSRVEgMTUw MDAwMDAwMAorCisjZGVmaW5lIE1JTl9MVkRTX1JFRkNMS19GUkVRIDI0MDAwMDAwCisjZGVmaW5l IE1BWF9MVkRTX1JFRkNMS19GUkVRIDE1MDAwMDAwMAorCiBlbnVtIG1peGVsX2RwaHlfZGV2dHlw ZSB7CiAJTUlYRUxfSU1YOE1RLAorCU1JWEVMX0lNWDhRWFAsCiB9OwogCiBzdHJ1Y3QgbWl4ZWxf ZHBoeV9kZXZkYXRhIHsKQEAgLTY1LDYgKzg2LDcgQEAgc3RydWN0IG1peGVsX2RwaHlfZGV2ZGF0 YSB7CiAJdTggcmVnX3J4bHBycDsKIAl1OCByZWdfcnhjZHJwOwogCXU4IHJlZ19yeGhzX3NldHRs ZTsKKwlib29sIGlzX2NvbWJvOwkvKiBNSVBJIERQSFkgYW5kIExWRFMgUEhZIGNvbWJvICovCiB9 OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1peGVsX2RwaHlfZGV2ZGF0YSBtaXhlbF9kcGh5X2Rl dmRhdGFbXSA9IHsKQEAgLTc0LDYgKzk2LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWl4ZWxf ZHBoeV9kZXZkYXRhIG1peGVsX2RwaHlfZGV2ZGF0YVtdID0gewogCQkucmVnX3J4bHBycCA9IDB4 NDAsCiAJCS5yZWdfcnhjZHJwID0gMHg0NCwKIAkJLnJlZ19yeGhzX3NldHRsZSA9IDB4NDgsCisJ CS5pc19jb21ibyA9IGZhbHNlLAorCX0sCisJW01JWEVMX0lNWDhRWFBdID0geworCQkuaXNfY29t Ym8gPSB0cnVlLAogCX0sCiB9OwogCkBAIC05NSw4ICsxMjEsMTIgQEAgc3RydWN0IG1peGVsX2Rw aHlfY2ZnIHsKIHN0cnVjdCBtaXhlbF9kcGh5X3ByaXYgewogCXN0cnVjdCBtaXhlbF9kcGh5X2Nm ZyBjZmc7CiAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworCXN0cnVjdCByZWdtYXAgKmx2ZHNfcmVn bWFwOwogCXN0cnVjdCBjbGsgKnBoeV9yZWZfY2xrOwogCWNvbnN0IHN0cnVjdCBtaXhlbF9kcGh5 X2RldmRhdGEgKmRldmRhdGE7CisJc3RydWN0IGlteF9zY19pcGMgKmlwY19oYW5kbGU7CisJYm9v bCBpc19zbGF2ZTsKKwlpbnQgaWQ7CiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9j b25maWcgbWl4ZWxfZHBoeV9yZWdtYXBfY29uZmlnID0gewpAQCAtMzE3LDcgKzM0Nyw4IEBAIHN0 YXRpYyBpbnQgbWl4ZWxfZHBoeV9zZXRfcGxsX3BhcmFtcyhzdHJ1Y3QgcGh5ICpwaHkpCiAJcmV0 dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbWl4ZWxfZHBoeV9jb25maWd1cmUoc3RydWN0IHBoeSAq cGh5LCB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpCitzdGF0aWMgaW50CittaXhlbF9k cGh5X2NvbmZpZ3VyZV9taXBpX2RwaHkoc3RydWN0IHBoeSAqcGh5LCB1bmlvbiBwaHlfY29uZmln dXJlX29wdHMgKm9wdHMpCiB7CiAJc3RydWN0IG1peGVsX2RwaHlfcHJpdiAqcHJpdiA9IHBoeV9n ZXRfZHJ2ZGF0YShwaHkpOwogCXN0cnVjdCBtaXhlbF9kcGh5X2NmZyBjZmcgPSB7IDAgfTsKQEAg LTM0NSwxNSArMzc2LDEyMSBAQCBzdGF0aWMgaW50IG1peGVsX2RwaHlfY29uZmlndXJlKHN0cnVj dCBwaHkgKnBoeSwgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQogCXJldHVybiAwOwog fQogCitzdGF0aWMgaW50CittaXhlbF9kcGh5X2NvbmZpZ3VyZV9sdmRzX3BoeShzdHJ1Y3QgcGh5 ICpwaHksIHVuaW9uIHBoeV9jb25maWd1cmVfb3B0cyAqb3B0cykKK3sKKwlzdHJ1Y3QgbWl4ZWxf ZHBoeV9wcml2ICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJc3RydWN0IHBoeV9jb25m aWd1cmVfb3B0c19sdmRzICpsdmRzX29wdHMgPSAmb3B0cy0+bHZkczsKKwl1bnNpZ25lZCBsb25n IGRhdGFfcmF0ZTsKKwl1bnNpZ25lZCBsb25nIGZ2Y287CisJdTMyIHJzYzsKKwl1MzIgY287CisJ aW50IHJldDsKKworCXByaXYtPmlzX3NsYXZlID0gbHZkc19vcHRzLT5pc19zbGF2ZTsKKworCS8q IExWRFMgaW50ZXJmYWNlIHBpbnMgKi8KKwlyZWdtYXBfd3JpdGUocHJpdi0+bHZkc19yZWdtYXAs IFBIWV9DVFJMLCBDQ00oMHg1KSB8IENBKDB4NCkgfCBSRkIpOworCisJLyogZW5hYmxlIE1PREU4 IG9ubHkgZm9yIHNsYXZlIExWRFMgUEhZICovCisJcnNjID0gcHJpdi0+aWQgPyBJTVhfU0NfUl9N SVBJXzEgOiBJTVhfU0NfUl9NSVBJXzA7CisJcmV0ID0gaW14X3NjX21pc2Nfc2V0X2NvbnRyb2wo cHJpdi0+aXBjX2hhbmRsZSwgcnNjLCBJTVhfU0NfQ19EVUFMX01PREUsCisJCQkJICAgICAgbHZk c19vcHRzLT5pc19zbGF2ZSk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZwaHktPmRldiwgIkZh aWxlZCB0byBjb25maWd1cmUgTU9ERTg6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0K KworCS8qCisJICogQ2hvb3NlIGFuIGFwcHJvcHJpYXRlIGRpdmlkZXIgcmF0aW8gdG8gbWVldCB0 aGUgcmVxdWlyZW1lbnQgb2YKKwkgKiBQTEwgVkNPIGZyZXF1ZW5jeSByYW5nZS4KKwkgKgorCSAq ICAtLS0tLSAgNjQwTUh6IH4gMTUwME1IeiAgIC0tLS0tLS0tLS0tLSAgICAgIC0tLS0tLS0tLS0t LS0tLQorCSAqIHwgVkNPIHwgLS0tLS0tLS0tLS0tLS0tLT4gfCBDTyBkaXZpZGVyIHwgLT4gfCBM VkRTIGRhdGEgcmF0ZXwKKwkgKiAgLS0tLS0gICAgICAgRlZDTyAgICAgICAgICAtLS0tLS0tLS0t LS0gICAgICAtLS0tLS0tLS0tLS0tLS0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAx LzIvNC84IGRpdiAgICAgNyAqIGRpZmZlcmVudGlhbF9jbGtfcmF0ZQorCSAqLworCWRhdGFfcmF0 ZSA9IDcgKiBsdmRzX29wdHMtPmRpZmZlcmVudGlhbF9jbGtfcmF0ZTsKKwlmb3IgKGNvID0gMTsg Y28gPD0gODsgY28gKj0gMikgeworCQlmdmNvID0gZGF0YV9yYXRlICogY287CisKKwkJaWYgKGZ2 Y28gPj0gTUlOX1ZDT19GUkVRKQorCQkJYnJlYWs7CisJfQorCisJaWYgKGZ2Y28gPCBNSU5fVkNP X0ZSRVEgfHwgZnZjbyA+IE1BWF9WQ09fRlJFUSkgeworCQlkZXZfZXJyKCZwaHktPmRldiwgIlZD TyBmcmVxdWVuY3kgJWx1IGlzIG91dCBvZiByYW5nZVxuIiwgZnZjbyk7CisJCXJldHVybiAtRVJB TkdFOworCX0KKworCS8qCisJICogQ08gaXMgY29uZmlndXJhYmxlLCB3aGlsZSBDTiBhbmQgQ00g YXJlIG5vdCwKKwkgKiBhcyBmaXhlZCByYXRpb3MgMSBhbmQgNyBhcmUgYXBwbGllZCByZXNwZWN0 aXZlbHkuCisJICovCisJcGh5X3dyaXRlKHBoeSwgX19mZnMoY28pLCBEUEhZX0NPKTsKKworCS8q IHNldCByZWZlcmVuY2UgY2xvY2sgcmF0ZSAqLworCWNsa19zZXRfcmF0ZShwcml2LT5waHlfcmVm X2NsaywgbHZkc19vcHRzLT5kaWZmZXJlbnRpYWxfY2xrX3JhdGUpOworCisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludCBtaXhlbF9kcGh5X2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksIHVu aW9uIHBoeV9jb25maWd1cmVfb3B0cyAqb3B0cykKK3sKKwlpZiAocGh5LT5hdHRycy5tb2RlID09 IFBIWV9NT0RFX01JUElfRFBIWSkKKwkJcmV0dXJuIG1peGVsX2RwaHlfY29uZmlndXJlX21pcGlf ZHBoeShwaHksIG9wdHMpOworCWVsc2UgaWYgKHBoeS0+YXR0cnMubW9kZSA9PSBQSFlfTU9ERV9M VkRTKQorCQlyZXR1cm4gbWl4ZWxfZHBoeV9jb25maWd1cmVfbHZkc19waHkocGh5LCBvcHRzKTsK KworCWRldl9lcnIoJnBoeS0+ZGV2LAorCQkiRmFpbGVkIHRvIGNvbmZpZ3VyZSBQSFkgd2l0aCBp bnZhbGlkIFBIWSBtb2RlOiAlZFxuIiwKKwkJCQkJCQlwaHktPmF0dHJzLm1vZGUpOworCXJldHVy biAtRUlOVkFMOworfQorCitzdGF0aWMgaW50CittaXhlbF9kcGh5X3ZhbGlkYXRlX2x2ZHNfcGh5 KHN0cnVjdCBwaHkgKnBoeSwgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQoreworCXN0 cnVjdCBwaHlfY29uZmlndXJlX29wdHNfbHZkcyAqbHZkc19jZmcgPSAmb3B0cy0+bHZkczsKKwor CWlmIChsdmRzX2NmZy0+Yml0c19wZXJfbGFuZV9hbmRfZGNsa19jeWNsZSAhPSA3KSB7CisJCWRl dl9lcnIoJnBoeS0+ZGV2LCAiSW52YWxpZCBiaXRzIHBlciBMVkRTIGRhdGEgbGFuZTogJXVcbiIs CisJCQkJCWx2ZHNfY2ZnLT5iaXRzX3Blcl9sYW5lX2FuZF9kY2xrX2N5Y2xlKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJaWYgKGx2ZHNfY2ZnLT5sYW5lcyAhPSA0KSB7CisJCWRldl9lcnIo JnBoeS0+ZGV2LCAiSW52YWxpZCBMVkRTIGRhdGEgbGFuZXM6ICV1XG4iLAorCQkJCQkJbHZkc19j ZmctPmxhbmVzKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGx2ZHNfY2ZnLT5kaWZm ZXJlbnRpYWxfY2xrX3JhdGUgPCBNSU5fTFZEU19SRUZDTEtfRlJFUSB8fAorCSAgICBsdmRzX2Nm Zy0+ZGlmZmVyZW50aWFsX2Nsa19yYXRlID4gTUFYX0xWRFNfUkVGQ0xLX0ZSRVEpIHsKKwkJZGV2 X2VycigmcGh5LT5kZXYsCisJCQkiSW52YWxpZCBMVkRTIGRpZmZlcmVudGlhbCBjbG9jayByYXRl OiAlbHVcbiIsCisJCQkJCWx2ZHNfY2ZnLT5kaWZmZXJlbnRpYWxfY2xrX3JhdGUpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBtaXhlbF9kcGh5 X3ZhbGlkYXRlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLCBpbnQgc3VibW9k ZSwKIAkJCSAgICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpCiB7Ci0Jc3RydWN0 IG1peGVsX2RwaHlfY2ZnIGNmZyA9IHsgMCB9OworCWlmIChtb2RlID09IFBIWV9NT0RFX01JUElf RFBIWSkgeworCQlzdHJ1Y3QgbWl4ZWxfZHBoeV9jZmcgbWlwaV9kcGh5X2NmZyA9IHsgMCB9Owog Ci0JaWYgKG1vZGUgIT0gUEhZX01PREVfTUlQSV9EUEhZKQotCQlyZXR1cm4gLUVJTlZBTDsKKwkJ cmV0dXJuIG1peGVsX2RwaHlfY29uZmlnX2Zyb21fb3B0cyhwaHksICZvcHRzLT5taXBpX2RwaHks CisJCQkJCQkJJm1pcGlfZHBoeV9jZmcpOworCX0gZWxzZSBpZiAobW9kZSA9PSBQSFlfTU9ERV9M VkRTKSB7CisJCXJldHVybiBtaXhlbF9kcGh5X3ZhbGlkYXRlX2x2ZHNfcGh5KHBoeSwgb3B0cyk7 CisJfQogCi0JcmV0dXJuIG1peGVsX2RwaHlfY29uZmlnX2Zyb21fb3B0cyhwaHksICZvcHRzLT5t aXBpX2RwaHksICZjZmcpOworCWRldl9lcnIoJnBoeS0+ZGV2LAorCQkiRmFpbGVkIHRvIHZhbGlk YXRlIFBIWSB3aXRoIGludmFsaWQgUEhZIG1vZGU6ICVkXG4iLCBtb2RlKTsKKwlyZXR1cm4gLUVJ TlZBTDsKIH0KIAogc3RhdGljIGludCBtaXhlbF9kcGh5X2luaXQoc3RydWN0IHBoeSAqcGh5KQpA QCAtMzczLDI3ICs1MTAsNzUgQEAgc3RhdGljIGludCBtaXhlbF9kcGh5X2V4aXQoc3RydWN0IHBo eSAqcGh5KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IG1peGVsX2RwaHlfcG93ZXJfb24o c3RydWN0IHBoeSAqcGh5KQorc3RhdGljIGludCBtaXhlbF9kcGh5X3Bvd2VyX29uX21pcGlfZHBo eShzdHJ1Y3QgcGh5ICpwaHkpCiB7CiAJc3RydWN0IG1peGVsX2RwaHlfcHJpdiAqcHJpdiA9IHBo eV9nZXRfZHJ2ZGF0YShwaHkpOwogCXUzMiBsb2NrZWQ7CiAJaW50IHJldDsKIAotCXJldCA9IGNs a19wcmVwYXJlX2VuYWJsZShwcml2LT5waHlfcmVmX2Nsayk7Ci0JaWYgKHJldCA8IDApCi0JCXJl dHVybiByZXQ7Ci0KIAlwaHlfd3JpdGUocGh5LCBQV1JfT04sIERQSFlfUERfUExMKTsKIAlyZXQg PSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0+cmVnbWFwLCBEUEhZX0xPQ0ssIGxvY2tl ZCwKIAkJCQkgICAgICAgbG9ja2VkLCBQTExfTE9DS19TTEVFUCwKIAkJCQkgICAgICAgUExMX0xP Q0tfVElNRU9VVCk7CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycigmcGh5LT5kZXYsICJDb3Vs ZCBub3QgZ2V0IERQSFkgbG9jayAoJWQpIVxuIiwgcmV0KTsKLQkJZ290byBjbG9ja19kaXNhYmxl OworCQlyZXR1cm4gcmV0OwogCX0KIAlwaHlfd3JpdGUocGh5LCBQV1JfT04sIERQSFlfUERfRFBI WSk7CiAKIAlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtaXhlbF9kcGh5X3Bvd2VyX29uX2x2 ZHNfcGh5KHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpwcml2 ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJdTMyIGxvY2tlZDsKKwlpbnQgcmV0OworCisJcmVn bWFwX3VwZGF0ZV9iaXRzKHByaXYtPmx2ZHNfcmVnbWFwLCBQSFlfQ1RSTCwgTFZEU19FTiwgTFZE U19FTik7CisKKwlwaHlfd3JpdGUocGh5LCBQV1JfT04sIERQSFlfUERfRFBIWSk7CisJcGh5X3dy aXRlKHBoeSwgUFdSX09OLCBEUEhZX1BEX1BMTCk7CisKKwkvKiBkbyBub3Qgd2FpdCBmb3Igc2xh dmUgTFZEUyBQSFkgYmVpbmcgbG9ja2VkICovCisJaWYgKHByaXYtPmlzX3NsYXZlKQorCQlyZXR1 cm4gMDsKKworCXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LT5yZWdtYXAsIERQ SFlfTE9DSywgbG9ja2VkLAorCQkJCSAgICAgICBsb2NrZWQsIFBMTF9MT0NLX1NMRUVQLAorCQkJ CSAgICAgICBQTExfTE9DS19USU1FT1VUKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKCZw aHktPmRldiwgIkNvdWxkIG5vdCBnZXQgTFZEUyBQSFkgbG9jayAoJWQpIVxuIiwgcmV0KTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtaXhlbF9kcGh5 X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpw cml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJaW50IHJldDsKKworCXJldCA9IGNsa19wcmVw YXJlX2VuYWJsZShwcml2LT5waHlfcmVmX2Nsayk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBy ZXQ7CisKKwlpZiAocGh5LT5hdHRycy5tb2RlID09IFBIWV9NT0RFX01JUElfRFBIWSkgeworCQly ZXQgPSBtaXhlbF9kcGh5X3Bvd2VyX29uX21pcGlfZHBoeShwaHkpOworCX0gZWxzZSBpZiAocGh5 LT5hdHRycy5tb2RlID09IFBIWV9NT0RFX0xWRFMpIHsKKwkJcmV0ID0gbWl4ZWxfZHBoeV9wb3dl cl9vbl9sdmRzX3BoeShwaHkpOworCX0gZWxzZSB7CisJCWRldl9lcnIoJnBoeS0+ZGV2LAorCQkJ IkZhaWxlZCB0byBwb3dlciBvbiBQSFkgd2l0aCBpbnZhbGlkIFBIWSBtb2RlOiAlZFxuIiwKKwkJ CQkJCQlwaHktPmF0dHJzLm1vZGUpOworCQlyZXQgPSAtRUlOVkFMOworCX0KKworCWlmIChyZXQp CisJCWdvdG8gY2xvY2tfZGlzYWJsZTsKKworCXJldHVybiAwOwogY2xvY2tfZGlzYWJsZToKIAlj bGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+cGh5X3JlZl9jbGspOwogCXJldHVybiByZXQ7CkBA IC00MDYsMTYgKzU5MSw1MSBAQCBzdGF0aWMgaW50IG1peGVsX2RwaHlfcG93ZXJfb2ZmKHN0cnVj dCBwaHkgKnBoeSkKIAlwaHlfd3JpdGUocGh5LCBQV1JfT0ZGLCBEUEhZX1BEX1BMTCk7CiAJcGh5 X3dyaXRlKHBoeSwgUFdSX09GRiwgRFBIWV9QRF9EUEhZKTsKIAorCWlmIChwaHktPmF0dHJzLm1v ZGUgPT0gUEhZX01PREVfTFZEUykKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPmx2ZHNfcmVn bWFwLCBQSFlfQ1RSTCwgTFZEU19FTiwgMCk7CisKIAljbGtfZGlzYWJsZV91bnByZXBhcmUocHJp di0+cGh5X3JlZl9jbGspOwogCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgbWl4ZWxfZHBo eV9zZXRfbW9kZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSwgaW50IHN1Ym1v ZGUpCit7CisJc3RydWN0IG1peGVsX2RwaHlfcHJpdiAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShw aHkpOworCWludCByZXQ7CisKKwlpZiAocHJpdi0+ZGV2ZGF0YS0+aXNfY29tYm8gJiYgbW9kZSAh PSBQSFlfTU9ERV9MVkRTKSB7CisJCWRldl9lcnIoJnBoeS0+ZGV2LCAiRmFpbGVkIHRvIHNldCBQ SFkgbW9kZSBmb3IgY29tYm8gUEhZXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYg KCFwcml2LT5kZXZkYXRhLT5pc19jb21ibyAmJiBtb2RlICE9IFBIWV9NT0RFX01JUElfRFBIWSkg eworCQlkZXZfZXJyKCZwaHktPmRldiwgIkZhaWxlZCB0byBzZXQgUEhZIG1vZGUgdG8gTUlQSSBE UEhZXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKHByaXYtPmRldmRhdGEtPmlz X2NvbWJvKSB7CisJCXUzMiByc2MgPSBwcml2LT5pZCA/IElNWF9TQ19SX01JUElfMSA6IElNWF9T Q19SX01JUElfMDsKKworCQlyZXQgPSBpbXhfc2NfbWlzY19zZXRfY29udHJvbChwcml2LT5pcGNf aGFuZGxlLAorCQkJCQkgICAgICByc2MsIElNWF9TQ19DX01PREUsCisJCQkJCSAgICAgIG1vZGUg PT0gUEhZX01PREVfTFZEUyk7CisJCWlmIChyZXQpIHsKKwkJCWRldl9lcnIoJnBoeS0+ZGV2LAor CQkJCSJGYWlsZWQgdG8gc2V0IFBIWSBtb2RlIHZpYSBTQ1UgaXBjOiAlZFxuIiwgcmV0KTsKKwkJ CXJldHVybiByZXQ7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGNvbnN0IHN0 cnVjdCBwaHlfb3BzIG1peGVsX2RwaHlfcGh5X29wcyA9IHsKIAkuaW5pdCA9IG1peGVsX2RwaHlf aW5pdCwKIAkuZXhpdCA9IG1peGVsX2RwaHlfZXhpdCwKIAkucG93ZXJfb24gPSBtaXhlbF9kcGh5 X3Bvd2VyX29uLAogCS5wb3dlcl9vZmYgPSBtaXhlbF9kcGh5X3Bvd2VyX29mZiwKKwkuc2V0X21v ZGUgPSBtaXhlbF9kcGh5X3NldF9tb2RlLAogCS5jb25maWd1cmUgPSBtaXhlbF9kcGh5X2NvbmZp Z3VyZSwKIAkudmFsaWRhdGUgPSBtaXhlbF9kcGh5X3ZhbGlkYXRlLAogCS5vd25lciA9IFRISVNf TU9EVUxFLApAQCAtNDI0LDYgKzY0NCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBt aXhlbF9kcGh5X3BoeV9vcHMgPSB7CiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBt aXhlbF9kcGh5X29mX21hdGNoW10gPSB7CiAJeyAuY29tcGF0aWJsZSA9ICJmc2wsaW14OG1xLW1p cGktZHBoeSIsCiAJICAuZGF0YSA9ICZtaXhlbF9kcGh5X2RldmRhdGFbTUlYRUxfSU1YOE1RXSB9 LAorCXsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDhxeHAtbWlwaS1kcGh5IiwKKwkgIC5kYXRhID0g Jm1peGVsX2RwaHlfZGV2ZGF0YVtNSVhFTF9JTVg4UVhQXSB9LAogCXsgLyogc2VudGluZWwgKi8g fSwKIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtaXhlbF9kcGh5X29mX21hdGNoKTsKQEAg LTQzNiw2ICs2NTgsNyBAQCBzdGF0aWMgaW50IG1peGVsX2RwaHlfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKIAlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpwcml2OwogCXN0cnVj dCBwaHkgKnBoeTsKIAl2b2lkIF9faW9tZW0gKmJhc2U7CisJaW50IHJldDsKIAogCWlmICghbnAp CiAJCXJldHVybiAtRU5PREVWOwpAQCAtNDY3LDYgKzY5MCwzMCBAQCBzdGF0aWMgaW50IG1peGVs X2RwaHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlkZXZfZGJnKGRldiwg InBoeV9yZWYgY2xvY2sgcmF0ZTogJWx1XG4iLAogCQljbGtfZ2V0X3JhdGUocHJpdi0+cGh5X3Jl Zl9jbGspKTsKIAorCWlmIChwcml2LT5kZXZkYXRhLT5pc19jb21ibykgeworCQlwcml2LT5sdmRz X3JlZ21hcCA9CisJCQlzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAiZnNsLHN5 c2NvbiIpOworCQlpZiAoSVNfRVJSKHByaXYtPmx2ZHNfcmVnbWFwKSkgeworCQkJcmV0ID0gUFRS X0VSUihwcml2LT5sdmRzX3JlZ21hcCk7CisJCQlkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiRmFp bGVkIHRvIGdldCBMVkRTIHJlZ21hcFxuIik7CisJCQlyZXR1cm4gcmV0OworCQl9CisKKwkJcHJp di0+aWQgPSBvZl9hbGlhc19nZXRfaWQobnAsICJtaXBpX2RwaHkiKTsKKwkJaWYgKHByaXYtPmlk IDwgMCkgeworCQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IHBoeSBub2RlIGFsaWFzIGlk OiAlZFxuIiwKKwkJCQkJCQkJIHByaXYtPmlkKTsKKwkJCXJldHVybiBwcml2LT5pZDsKKwkJfQor CisJCXJldCA9IGlteF9zY3VfZ2V0X2hhbmRsZSgmcHJpdi0+aXBjX2hhbmRsZSk7CisJCWlmIChy ZXQpIHsKKwkJCWRldl9lcnJfcHJvYmUoZGV2LCByZXQsCisJCQkJICAgICAgIkZhaWxlZCB0byBn ZXQgU0NVIGlwYyBoYW5kbGVcbiIpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKwogCWRldl9z ZXRfZHJ2ZGF0YShkZXYsIHByaXYpOwogCiAJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgbnAs ICZtaXhlbF9kcGh5X3BoeV9vcHMpOwotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== 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.7 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,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 12F03C433DB for ; Mon, 8 Mar 2021 04:06:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 D104F64DE5 for ; Mon, 8 Mar 2021 04:06:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D104F64DE5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4D1FD6E332; Mon, 8 Mar 2021 04:06:18 +0000 (UTC) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60089.outbound.protection.outlook.com [40.107.6.89]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC4446E332 for ; Mon, 8 Mar 2021 04:06:17 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ajUkJ6fkidbpQo+tD/BP5R9Y5LG8HwzmQ+vObKLdQ1z6OsjKp4ZAD369lT06O0bQvveDWHuWL1mJ9/gLYX5IMzx8kKW0W5EvWhZeJj7/a8oOQGILyJGFaEn/rxuuK7a/2xnDC+XkeIQlaFOngYFWAocAzs+KwLW/HcWhvG29WrEFXAuePhU5zVjJC5sq65BwwLrLeTuXLhYShNaA2S7ILhRL/Pb95WUz2vj1fu44LIcJxyrLw9u9NkquD7KsOfuctY3d0E37mgPMYmXIqJqh4FE4+0CENDUSgbuEVy2xXnNvfCgVtoIIfbycIgj8TuhWP0DLHH4jcT1CVDoLd0o2PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mrHiiLhQQdwrv7COH8QzBaRdj3T0UckZxTgVCPoh/pk=; b=jUuTD83x2VvhfDuH9EMrDyMjY/0mdMiQvw1kyrNjqAljI9gaoy6+gdFE+XpwvEID9lX8T5vk4nkqsmPW9nnxhqGm3IErcGIQBzsD9Bp7Yxxqk8Ur1OX0ASjWpsdVmnyOa4qFZz11CE0Kz3PancRBOsrLfR1mviwA2F0mijl5TtFPrw6amsPcXkhD/ULh1CAUQFZs8QQQLK/bXC4LEfsFJzCC9XdFQu0VxyE+Zcu61mUkhTc+1KeEKxIBWgpTNOkYXsT6W/EsmALTu0HIiF5qBQTLrobIBAYP29n4Aq56tGIlXtLZbM6tqixwQa7LgrV5t3iTaQ9kGtpzFj4sF8Q5ag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mrHiiLhQQdwrv7COH8QzBaRdj3T0UckZxTgVCPoh/pk=; b=YAYNyJvU77x4yemb4lH+5i8srybLlrd1A5yU3yBpiXVFJn04hJ0BvLnNEGvnkMIvFKI1hepuL8BB6O/J3uSBhYwdyo63jhapriV746dNTImrlZTsFhNSaU+1ueq0O27pP7P0BSE8eqYTlsolO6i5BclujwWn8FbI5nAmvFnilNY= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB3983.eurprd04.prod.outlook.com (2603:10a6:803:4c::16) by VI1PR04MB5184.eurprd04.prod.outlook.com (2603:10a6:803:5d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.26; Mon, 8 Mar 2021 04:06:15 +0000 Received: from VI1PR04MB3983.eurprd04.prod.outlook.com ([fe80::2564:cacc:2da5:52d0]) by VI1PR04MB3983.eurprd04.prod.outlook.com ([fe80::2564:cacc:2da5:52d0%5]) with mapi id 15.20.3912.027; Mon, 8 Mar 2021 04:06:15 +0000 From: Liu Ying To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v4 5/5] phy: freescale: phy-fsl-imx8-mipi-dphy: Add i.MX8qxp LVDS PHY mode support Date: Mon, 8 Mar 2021 11:52:21 +0800 Message-Id: <1615175541-29009-6-git-send-email-victor.liu@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1615175541-29009-1-git-send-email-victor.liu@nxp.com> References: <1615175541-29009-1-git-send-email-victor.liu@nxp.com> X-Originating-IP: [119.31.174.66] X-ClientProxiedBy: HK2PR04CA0088.apcprd04.prod.outlook.com (2603:1096:202:15::32) To VI1PR04MB3983.eurprd04.prod.outlook.com (2603:10a6:803:4c::16) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (119.31.174.66) by HK2PR04CA0088.apcprd04.prod.outlook.com (2603:1096:202:15::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.3912.17 via Frontend Transport; Mon, 8 Mar 2021 04:06:09 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3bde5f48-a903-4b03-6fbd-08d8e1e78462 X-MS-TrafficTypeDiagnostic: VI1PR04MB5184: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1265; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sJkQvlHHz61XIi6lges9KLH/4Wk4kWsEAwQxkxpWPSv6Gdn9NQaVmddt78vVOUJIPGPDCdZMDOFo67UnqdZAN72hFCphhi+Ot01xmiN+YyRHS+/2sbD3cJCBFsTucwszbaPXqoT2na77jDk4wfFvhH3Y3XynsxJGgDJfnQPeZh6dnqDT1QJSW4MpWdui0Jl2L0N0fenfQvygWoGbFiI5rdTejNmRFG9KX6bHTHR1zA0ymkNSQfgVzq1yef7403Ebwi4bJ5MBD7MpL+g9/MNB+H5+t4Vf+W0XbPMH1aiAtImKhbpn0fzKksRdyl9u9PgX7BPMxoWFj4o27P19mWV01WeX4s2GGogxQt1fFFQR6e89wFx0GmixwDL4VXJbFnChcoEIGMfPrleGg7OnCsMSxrUsIWj0UQhHi0HEWWM6CveFYw08Lrezs6EKmSd4IpaAVlLwb8+Gbs+7br3rogBJGpT9tnmlWg2DaMhL+KMPiZ9YPa30HOJAYFtHMluw2eiafr1q6cwZVs1P86hXW6+/SNawoEuojBBBZa9KSbPa7STnTzp5kbfUAx0vXXBJ0QN/lOIOFKHCAt0t1wc4oBzX3A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB3983.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(376002)(346002)(39860400002)(136003)(396003)(956004)(66946007)(478600001)(26005)(2616005)(4326008)(2906002)(6666004)(86362001)(36756003)(83380400001)(66476007)(186003)(30864003)(8676002)(52116002)(16526019)(5660300002)(316002)(6486002)(6512007)(8936002)(66574015)(6506007)(7416002)(66556008)(473944003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?RVRwTjBFa09OZWRJcUhqRk5lcEZVMFl6T01zZ0VaL0NDSTFrREoxSHBJSFYy?= =?utf-8?B?U0QyL20wOWJPdXR1ekowVDNKRTc4NFdaNUJxaXIwbW04ZWpHVjN6MFVYMGc2?= =?utf-8?B?S3FwdVhoRmFXRVhSN1dCU1JzU0hmTkptNHlaaTRVZFJpVTVCU2NPUUdjTjB2?= =?utf-8?B?U1FGTWtVQ055TWdqOTVvcmZkNEQwd09ybnhLUmxUOWZYOFh5cXlsSE9OOEFF?= =?utf-8?B?ZnNCeWpmOW92QkhYNUd5LzFZTWgrVzRJdWt5MDZqVFpsbXJzVTlLdGM1Z0c5?= =?utf-8?B?OWtuSmVwbzlLaXNOQ2VIRUZoQkVMdDZTOCtScFhKMDhhL25Dd1ZYNlFCNktY?= =?utf-8?B?bDVycnRzcTRrb2NvRGVXYzcyejhIRFJublRXQzVGMFVKUHpBc2l0MXB3STNu?= =?utf-8?B?LzhwdUx1TGFMWEkvYnREek1Cd0d3ajdtWWorcEJDRHFrdHhuRXY5RS9abWR6?= =?utf-8?B?dGgxZFh3Y0tNZEFoYWtIS2NHTDFEeC9FN1ZsVWRlSGVSYktWUTFsTmxEK0ND?= =?utf-8?B?d2dHZ1ZvV0d1amE3dWZwOXdrZTRnbGsrT1V2YXZPL05kblpzQWZ4eDArSUpr?= =?utf-8?B?RFB3c3lZZmkzOEU4bGxZcFAzUG1EM0JmcC9uRHhMK1dZeE9QNEIxUjd5SEFE?= =?utf-8?B?N1liLzNlTnhKRG52ZEYyS3lJM1cxMHM3bDB5VXRsd3I2UHU2MUZHOG1JVDdB?= =?utf-8?B?ZFc4WEVNdk5BNEh3cGE3MUVOQjl6d2IraFY0Q28rb3hrK1NOa1p0QkVSZWoz?= =?utf-8?B?SWNTUGJmUUZjSUZSejEzWkprNXdjSFB6N3JvdWdyUnI2dmtKd2pFMEFKZnBa?= =?utf-8?B?S1podWtsbnBjZVpPbTJ0SmRFWlZnbko4bGZVVzBta2hyejMxKy9kTXBtN25F?= =?utf-8?B?RkYzS0w0SWFxQjNkOGwwOEJDWmZXeFMrRkVUZW0xekV0eDYvSHIzVzFYUGFh?= =?utf-8?B?TlpSYTNaWlhjcHZ6dEpvTTMwai9vOUNtWlRENFpEN0s3WmpTYVFYMVNxRGVE?= =?utf-8?B?Z2I0N2J5NVBKRXNVRU1JZzZTNTZTaS9tZXo3MXRYbXRqY21JeVU5anJjdW1s?= =?utf-8?B?YkFlZFBtMzNQdVlUK2lKL1FpODVTejBsUlVCTmdFRXUrb3ZIeHpabmJWdmdV?= =?utf-8?B?aWV2Z3REcmdNY0UwcnBQZnZXZHdvenVjb25FMUVUcWpBVTlpeWxTY29ib0RG?= =?utf-8?B?ZkdHSmZHZGl0VVVYbTRvS2VhVFU1clBlL2RUVUtRalFPSVBmSUQyQndWRVNs?= =?utf-8?B?cWNzQlRZdU1IOXpkYmt4d2JkcVQ1U1ppckRVR0dFTkMybjEvcmRleXA4UXl6?= =?utf-8?B?UGt4TCs0b21xQXU4Rkh2djlmM20yaktiWEYyUkREcnlLcjJFTUlQN2RnSkpk?= =?utf-8?B?M0tBaURYTXc3UXpNUlhnRkxITUFNc0hlaWRiU3Z3SWtVcWRYb2ZzQ3NuelRG?= =?utf-8?B?VzYwcDFtbTVYeFRKTTR3RU9sSmpnMmp5bUZzeE1SUFlsb2tad01FRERtMTdJ?= =?utf-8?B?OW5YUGxGaERkZG5DdzQvZDR6bEZmc1g1Qm8yY3lpVHRRSE44RXpuMkE1VDMz?= =?utf-8?B?MVNySGl1UkZnUzkxNDZvdW1jeUdMekwyblEwN0RxeUpQVlZLM1hyd0w2MStY?= =?utf-8?B?VHB2T21sbTVsWldUenhvQWJIOE8wRi95SURIZTdBdk1nQllvRWRhYjBqclhr?= =?utf-8?B?bWJpNi9VWU1pYXV3QUtqR1phbkcwZzE3dVhYWi8wR1lkNE93YVZScTBSMnVY?= =?utf-8?Q?bJg26LRzT14itq5ZlqFJxnpNmDY5Bcyqk5lz+q7?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3bde5f48-a903-4b03-6fbd-08d8e1e78462 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB3983.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2021 04:06:15.1691 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: i9Odd+8OUjaw4ylpq9b4eP0L3oU8lgeH2WhVTA1PCQf8saSW8l7R130YCJBtllTBDfPS3Csc0lO4mKYA0taIAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5184 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: martin.kepplinger@puri.sm, jernej.skrabec@siol.net, kernel@pengutronix.de, narmstrong@baylibre.com, airlied@linux.ie, s.hauer@pengutronix.de, jonas@kwiboo.se, robert.foss@linaro.org, kishon@ti.com, a.hajda@samsung.com, vkoul@kernel.org, robh+dt@kernel.org, Laurent.pinchart@ideasonboard.com, robert.chiras@nxp.com, shawnguo@kernel.org, agx@sigxcpu.org, linux-imx@nxp.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" aS5NWDhxeHAgU29DIGVtYmVkcyBhIE1peGVsIE1JUEkgRFBIWSArIExWRFMgUEhZIGNvbWJvIHdo aWNoIHN1cHBvcnRzCmVpdGhlciBhIE1JUEkgRFNJIGRpc3BsYXkgb3IgYSBMVkRTIGRpc3BsYXku ICBUaGUgUEhZIG1vZGUgaXMgY29udHJvbGxlZApieSBTQ1UgZmlybXdhcmUgYW5kIHRoZSBkcml2 ZXIgd291bGQgY2FsbCBhIFNDVSBmaXJtd2FyZSBmdW5jdGlvbiB0bwpjb25maWd1cmUgdGhlIFBI WSBtb2RlLiAgVGhlIHNpbmdsZSBMVkRTIFBIWSBoYXMgNCBkYXRhIGxhbmVzIHRvIHN1cHBvcnQK YSBMVkRTIGRpc3BsYXkuICBBbHNvLCB3aXRoIGEgbWFzdGVyIExWRFMgUEhZIGFuZCBhIHNsYXZl IExWRFMgUEhZLCB0aGV5Cm1heSB3b3JrIHRvZ2V0aGVyIHRvIHN1cHBvcnQgYSBMVkRTIGRpc3Bs YXkgd2l0aCA4IGRhdGEgbGFuZXModXN1YWxseSwgZHVhbApMVkRTIGxpbmsgZGlzcGxheSkuICBO b3RlIHRoYXQgdGhpcyBwYXRjaCBzdXBwb3J0cyB0aGUgTFZEUyBQSFkgbW9kZSBvbmx5CmZvciB0 aGUgaS5NWDhxeHAgTWl4ZWwgY29tYm8gUEhZLCBpLmUuLCB0aGUgTUlQSSBEUEhZIG1vZGUgaXMg eWV0IHRvIGJlCnN1cHBvcnRlZCwgc28gZm9yIG5vdyBlcnJvciB3b3VsZCBiZSByZXR1cm5lZCBm cm9tIC0+c2V0X21vZGUoKSBpZiBNSVBJCkRQSFkgbW9kZSBpcyBwYXNzZWQgb3ZlciB0byBpdCBm b3IgdGhlIGNvbWJvIFBIWS4KCkNjOiBHdWlkbyBHw7xudGhlciA8YWd4QHNpZ3hjcHUub3JnPgpD YzogUm9iZXJ0IENoaXJhcyA8cm9iZXJ0LmNoaXJhc0BueHAuY29tPgpDYzogS2lzaG9uIFZpamF5 IEFicmFoYW0gSSA8a2lzaG9uQHRpLmNvbT4KQ2M6IFZpbm9kIEtvdWwgPHZrb3VsQGtlcm5lbC5v cmc+CkNjOiBTaGF3biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5vcmc+CkNjOiBTYXNjaGEgSGF1ZXIg PHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+CkNjOiBQZW5ndXRyb25peCBLZXJuZWwgVGVhbSA8a2Vy bmVsQHBlbmd1dHJvbml4LmRlPgpDYzogRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29t PgpDYzogTlhQIExpbnV4IFRlYW0gPGxpbnV4LWlteEBueHAuY29tPgpSZXZpZXdlZC1ieTogR3Vp ZG8gR8O8bnRoZXIgPGFneEBzaWd4Y3B1Lm9yZz4KU2lnbmVkLW9mZi1ieTogTGl1IFlpbmcgPHZp Y3Rvci5saXVAbnhwLmNvbT4KLS0tCnYzLT52NDoKKiBBZGQgR3VpZG8ncyBSLWIgdGFnLgoKdjIt PnYzOgoqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgbWl4ZWxfZHBoeV9zZXRfbW9kZSgpLiAoR3Vp ZG8pCgp2MS0+djI6CiogUHJpbnQgaW52YWxpZCBQSFkgbW9kZSBpbiBkbWVzZy4gKEd1aWRvKQoK IGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDgtbWlwaS1kcGh5LmMgfCAyNjkgKysr KysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDI1OCBpbnNlcnRpb25zKCsp LCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5 LWZzbC1pbXg4LW1pcGktZHBoeS5jIGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14 OC1taXBpLWRwaHkuYwppbmRleCBhOTU1NzJiLi5hZjFlY2RhIDEwMDY0NAotLS0gYS9kcml2ZXJz L3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4LW1pcGktZHBoeS5jCisrKyBiL2RyaXZlcnMvcGh5 L2ZyZWVzY2FsZS9waHktZnNsLWlteDgtbWlwaS1kcGh5LmMKQEAgLTQsMTcgKzQsMzEgQEAKICAq IENvcHlyaWdodCAyMDE5IFB1cmlzbSBTUEMKICAqLwogCisjaW5jbHVkZSA8bGludXgvYml0Zmll bGQuaD4KICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KICNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlk ZXIuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJl L2lteC9pcGMuaD4KKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS9pbXgvc3ZjL21pc2MuaD4KICNp bmNsdWRlIDxsaW51eC9pby5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUg PGxpbnV4L21mZC9zeXNjb24uaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRl IDxsaW51eC9vZi5oPgogI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8 bGludXgvcGh5L3BoeS5oPgogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogI2lu Y2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Zpcm13YXJlL2lt eC9yc3JjLmg+CisKKy8qIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlcnMoQ1NSKSAqLworI2Rl ZmluZSBQSFlfQ1RSTAkJCTB4MDAKKyNkZWZpbmUgIENDTV9NQVNLCQkJR0VOTUFTSyg3LCA1KQor I2RlZmluZSAgQ0NNKG4pCQkJCUZJRUxEX1BSRVAoQ0NNX01BU0ssIChuKSkKKyNkZWZpbmUgIENB X01BU0sJCQlHRU5NQVNLKDQsIDIpCisjZGVmaW5lICBDQShuKQkJCQlGSUVMRF9QUkVQKENBX01B U0ssIChuKSkKKyNkZWZpbmUgIFJGQgkJCQlCSVQoMSkKKyNkZWZpbmUgIExWRFNfRU4JCQlCSVQo MCkKIAogLyogRFBIWSByZWdpc3RlcnMgKi8KICNkZWZpbmUgRFBIWV9QRF9EUEhZCQkJMHgwMApA QCAtNTUsOCArNjksMTUgQEAKICNkZWZpbmUgUFdSX09OCTAKICNkZWZpbmUgUFdSX09GRgkxCiAK KyNkZWZpbmUgTUlOX1ZDT19GUkVRIDY0MDAwMDAwMAorI2RlZmluZSBNQVhfVkNPX0ZSRVEgMTUw MDAwMDAwMAorCisjZGVmaW5lIE1JTl9MVkRTX1JFRkNMS19GUkVRIDI0MDAwMDAwCisjZGVmaW5l IE1BWF9MVkRTX1JFRkNMS19GUkVRIDE1MDAwMDAwMAorCiBlbnVtIG1peGVsX2RwaHlfZGV2dHlw ZSB7CiAJTUlYRUxfSU1YOE1RLAorCU1JWEVMX0lNWDhRWFAsCiB9OwogCiBzdHJ1Y3QgbWl4ZWxf ZHBoeV9kZXZkYXRhIHsKQEAgLTY1LDYgKzg2LDcgQEAgc3RydWN0IG1peGVsX2RwaHlfZGV2ZGF0 YSB7CiAJdTggcmVnX3J4bHBycDsKIAl1OCByZWdfcnhjZHJwOwogCXU4IHJlZ19yeGhzX3NldHRs ZTsKKwlib29sIGlzX2NvbWJvOwkvKiBNSVBJIERQSFkgYW5kIExWRFMgUEhZIGNvbWJvICovCiB9 OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1peGVsX2RwaHlfZGV2ZGF0YSBtaXhlbF9kcGh5X2Rl dmRhdGFbXSA9IHsKQEAgLTc0LDYgKzk2LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWl4ZWxf ZHBoeV9kZXZkYXRhIG1peGVsX2RwaHlfZGV2ZGF0YVtdID0gewogCQkucmVnX3J4bHBycCA9IDB4 NDAsCiAJCS5yZWdfcnhjZHJwID0gMHg0NCwKIAkJLnJlZ19yeGhzX3NldHRsZSA9IDB4NDgsCisJ CS5pc19jb21ibyA9IGZhbHNlLAorCX0sCisJW01JWEVMX0lNWDhRWFBdID0geworCQkuaXNfY29t Ym8gPSB0cnVlLAogCX0sCiB9OwogCkBAIC05NSw4ICsxMjEsMTIgQEAgc3RydWN0IG1peGVsX2Rw aHlfY2ZnIHsKIHN0cnVjdCBtaXhlbF9kcGh5X3ByaXYgewogCXN0cnVjdCBtaXhlbF9kcGh5X2Nm ZyBjZmc7CiAJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworCXN0cnVjdCByZWdtYXAgKmx2ZHNfcmVn bWFwOwogCXN0cnVjdCBjbGsgKnBoeV9yZWZfY2xrOwogCWNvbnN0IHN0cnVjdCBtaXhlbF9kcGh5 X2RldmRhdGEgKmRldmRhdGE7CisJc3RydWN0IGlteF9zY19pcGMgKmlwY19oYW5kbGU7CisJYm9v bCBpc19zbGF2ZTsKKwlpbnQgaWQ7CiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9j b25maWcgbWl4ZWxfZHBoeV9yZWdtYXBfY29uZmlnID0gewpAQCAtMzE3LDcgKzM0Nyw4IEBAIHN0 YXRpYyBpbnQgbWl4ZWxfZHBoeV9zZXRfcGxsX3BhcmFtcyhzdHJ1Y3QgcGh5ICpwaHkpCiAJcmV0 dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbWl4ZWxfZHBoeV9jb25maWd1cmUoc3RydWN0IHBoeSAq cGh5LCB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpCitzdGF0aWMgaW50CittaXhlbF9k cGh5X2NvbmZpZ3VyZV9taXBpX2RwaHkoc3RydWN0IHBoeSAqcGh5LCB1bmlvbiBwaHlfY29uZmln dXJlX29wdHMgKm9wdHMpCiB7CiAJc3RydWN0IG1peGVsX2RwaHlfcHJpdiAqcHJpdiA9IHBoeV9n ZXRfZHJ2ZGF0YShwaHkpOwogCXN0cnVjdCBtaXhlbF9kcGh5X2NmZyBjZmcgPSB7IDAgfTsKQEAg LTM0NSwxNSArMzc2LDEyMSBAQCBzdGF0aWMgaW50IG1peGVsX2RwaHlfY29uZmlndXJlKHN0cnVj dCBwaHkgKnBoeSwgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQogCXJldHVybiAwOwog fQogCitzdGF0aWMgaW50CittaXhlbF9kcGh5X2NvbmZpZ3VyZV9sdmRzX3BoeShzdHJ1Y3QgcGh5 ICpwaHksIHVuaW9uIHBoeV9jb25maWd1cmVfb3B0cyAqb3B0cykKK3sKKwlzdHJ1Y3QgbWl4ZWxf ZHBoeV9wcml2ICpwcml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJc3RydWN0IHBoeV9jb25m aWd1cmVfb3B0c19sdmRzICpsdmRzX29wdHMgPSAmb3B0cy0+bHZkczsKKwl1bnNpZ25lZCBsb25n IGRhdGFfcmF0ZTsKKwl1bnNpZ25lZCBsb25nIGZ2Y287CisJdTMyIHJzYzsKKwl1MzIgY287CisJ aW50IHJldDsKKworCXByaXYtPmlzX3NsYXZlID0gbHZkc19vcHRzLT5pc19zbGF2ZTsKKworCS8q IExWRFMgaW50ZXJmYWNlIHBpbnMgKi8KKwlyZWdtYXBfd3JpdGUocHJpdi0+bHZkc19yZWdtYXAs IFBIWV9DVFJMLCBDQ00oMHg1KSB8IENBKDB4NCkgfCBSRkIpOworCisJLyogZW5hYmxlIE1PREU4 IG9ubHkgZm9yIHNsYXZlIExWRFMgUEhZICovCisJcnNjID0gcHJpdi0+aWQgPyBJTVhfU0NfUl9N SVBJXzEgOiBJTVhfU0NfUl9NSVBJXzA7CisJcmV0ID0gaW14X3NjX21pc2Nfc2V0X2NvbnRyb2wo cHJpdi0+aXBjX2hhbmRsZSwgcnNjLCBJTVhfU0NfQ19EVUFMX01PREUsCisJCQkJICAgICAgbHZk c19vcHRzLT5pc19zbGF2ZSk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZwaHktPmRldiwgIkZh aWxlZCB0byBjb25maWd1cmUgTU9ERTg6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0K KworCS8qCisJICogQ2hvb3NlIGFuIGFwcHJvcHJpYXRlIGRpdmlkZXIgcmF0aW8gdG8gbWVldCB0 aGUgcmVxdWlyZW1lbnQgb2YKKwkgKiBQTEwgVkNPIGZyZXF1ZW5jeSByYW5nZS4KKwkgKgorCSAq ICAtLS0tLSAgNjQwTUh6IH4gMTUwME1IeiAgIC0tLS0tLS0tLS0tLSAgICAgIC0tLS0tLS0tLS0t LS0tLQorCSAqIHwgVkNPIHwgLS0tLS0tLS0tLS0tLS0tLT4gfCBDTyBkaXZpZGVyIHwgLT4gfCBM VkRTIGRhdGEgcmF0ZXwKKwkgKiAgLS0tLS0gICAgICAgRlZDTyAgICAgICAgICAtLS0tLS0tLS0t LS0gICAgICAtLS0tLS0tLS0tLS0tLS0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAx LzIvNC84IGRpdiAgICAgNyAqIGRpZmZlcmVudGlhbF9jbGtfcmF0ZQorCSAqLworCWRhdGFfcmF0 ZSA9IDcgKiBsdmRzX29wdHMtPmRpZmZlcmVudGlhbF9jbGtfcmF0ZTsKKwlmb3IgKGNvID0gMTsg Y28gPD0gODsgY28gKj0gMikgeworCQlmdmNvID0gZGF0YV9yYXRlICogY287CisKKwkJaWYgKGZ2 Y28gPj0gTUlOX1ZDT19GUkVRKQorCQkJYnJlYWs7CisJfQorCisJaWYgKGZ2Y28gPCBNSU5fVkNP X0ZSRVEgfHwgZnZjbyA+IE1BWF9WQ09fRlJFUSkgeworCQlkZXZfZXJyKCZwaHktPmRldiwgIlZD TyBmcmVxdWVuY3kgJWx1IGlzIG91dCBvZiByYW5nZVxuIiwgZnZjbyk7CisJCXJldHVybiAtRVJB TkdFOworCX0KKworCS8qCisJICogQ08gaXMgY29uZmlndXJhYmxlLCB3aGlsZSBDTiBhbmQgQ00g YXJlIG5vdCwKKwkgKiBhcyBmaXhlZCByYXRpb3MgMSBhbmQgNyBhcmUgYXBwbGllZCByZXNwZWN0 aXZlbHkuCisJICovCisJcGh5X3dyaXRlKHBoeSwgX19mZnMoY28pLCBEUEhZX0NPKTsKKworCS8q IHNldCByZWZlcmVuY2UgY2xvY2sgcmF0ZSAqLworCWNsa19zZXRfcmF0ZShwcml2LT5waHlfcmVm X2NsaywgbHZkc19vcHRzLT5kaWZmZXJlbnRpYWxfY2xrX3JhdGUpOworCisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludCBtaXhlbF9kcGh5X2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksIHVu aW9uIHBoeV9jb25maWd1cmVfb3B0cyAqb3B0cykKK3sKKwlpZiAocGh5LT5hdHRycy5tb2RlID09 IFBIWV9NT0RFX01JUElfRFBIWSkKKwkJcmV0dXJuIG1peGVsX2RwaHlfY29uZmlndXJlX21pcGlf ZHBoeShwaHksIG9wdHMpOworCWVsc2UgaWYgKHBoeS0+YXR0cnMubW9kZSA9PSBQSFlfTU9ERV9M VkRTKQorCQlyZXR1cm4gbWl4ZWxfZHBoeV9jb25maWd1cmVfbHZkc19waHkocGh5LCBvcHRzKTsK KworCWRldl9lcnIoJnBoeS0+ZGV2LAorCQkiRmFpbGVkIHRvIGNvbmZpZ3VyZSBQSFkgd2l0aCBp bnZhbGlkIFBIWSBtb2RlOiAlZFxuIiwKKwkJCQkJCQlwaHktPmF0dHJzLm1vZGUpOworCXJldHVy biAtRUlOVkFMOworfQorCitzdGF0aWMgaW50CittaXhlbF9kcGh5X3ZhbGlkYXRlX2x2ZHNfcGh5 KHN0cnVjdCBwaHkgKnBoeSwgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQoreworCXN0 cnVjdCBwaHlfY29uZmlndXJlX29wdHNfbHZkcyAqbHZkc19jZmcgPSAmb3B0cy0+bHZkczsKKwor CWlmIChsdmRzX2NmZy0+Yml0c19wZXJfbGFuZV9hbmRfZGNsa19jeWNsZSAhPSA3KSB7CisJCWRl dl9lcnIoJnBoeS0+ZGV2LCAiSW52YWxpZCBiaXRzIHBlciBMVkRTIGRhdGEgbGFuZTogJXVcbiIs CisJCQkJCWx2ZHNfY2ZnLT5iaXRzX3Blcl9sYW5lX2FuZF9kY2xrX2N5Y2xlKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJaWYgKGx2ZHNfY2ZnLT5sYW5lcyAhPSA0KSB7CisJCWRldl9lcnIo JnBoeS0+ZGV2LCAiSW52YWxpZCBMVkRTIGRhdGEgbGFuZXM6ICV1XG4iLAorCQkJCQkJbHZkc19j ZmctPmxhbmVzKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGx2ZHNfY2ZnLT5kaWZm ZXJlbnRpYWxfY2xrX3JhdGUgPCBNSU5fTFZEU19SRUZDTEtfRlJFUSB8fAorCSAgICBsdmRzX2Nm Zy0+ZGlmZmVyZW50aWFsX2Nsa19yYXRlID4gTUFYX0xWRFNfUkVGQ0xLX0ZSRVEpIHsKKwkJZGV2 X2VycigmcGh5LT5kZXYsCisJCQkiSW52YWxpZCBMVkRTIGRpZmZlcmVudGlhbCBjbG9jayByYXRl OiAlbHVcbiIsCisJCQkJCWx2ZHNfY2ZnLT5kaWZmZXJlbnRpYWxfY2xrX3JhdGUpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBtaXhlbF9kcGh5 X3ZhbGlkYXRlKHN0cnVjdCBwaHkgKnBoeSwgZW51bSBwaHlfbW9kZSBtb2RlLCBpbnQgc3VibW9k ZSwKIAkJCSAgICAgICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpCiB7Ci0Jc3RydWN0 IG1peGVsX2RwaHlfY2ZnIGNmZyA9IHsgMCB9OworCWlmIChtb2RlID09IFBIWV9NT0RFX01JUElf RFBIWSkgeworCQlzdHJ1Y3QgbWl4ZWxfZHBoeV9jZmcgbWlwaV9kcGh5X2NmZyA9IHsgMCB9Owog Ci0JaWYgKG1vZGUgIT0gUEhZX01PREVfTUlQSV9EUEhZKQotCQlyZXR1cm4gLUVJTlZBTDsKKwkJ cmV0dXJuIG1peGVsX2RwaHlfY29uZmlnX2Zyb21fb3B0cyhwaHksICZvcHRzLT5taXBpX2RwaHks CisJCQkJCQkJJm1pcGlfZHBoeV9jZmcpOworCX0gZWxzZSBpZiAobW9kZSA9PSBQSFlfTU9ERV9M VkRTKSB7CisJCXJldHVybiBtaXhlbF9kcGh5X3ZhbGlkYXRlX2x2ZHNfcGh5KHBoeSwgb3B0cyk7 CisJfQogCi0JcmV0dXJuIG1peGVsX2RwaHlfY29uZmlnX2Zyb21fb3B0cyhwaHksICZvcHRzLT5t aXBpX2RwaHksICZjZmcpOworCWRldl9lcnIoJnBoeS0+ZGV2LAorCQkiRmFpbGVkIHRvIHZhbGlk YXRlIFBIWSB3aXRoIGludmFsaWQgUEhZIG1vZGU6ICVkXG4iLCBtb2RlKTsKKwlyZXR1cm4gLUVJ TlZBTDsKIH0KIAogc3RhdGljIGludCBtaXhlbF9kcGh5X2luaXQoc3RydWN0IHBoeSAqcGh5KQpA QCAtMzczLDI3ICs1MTAsNzUgQEAgc3RhdGljIGludCBtaXhlbF9kcGh5X2V4aXQoc3RydWN0IHBo eSAqcGh5KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IG1peGVsX2RwaHlfcG93ZXJfb24o c3RydWN0IHBoeSAqcGh5KQorc3RhdGljIGludCBtaXhlbF9kcGh5X3Bvd2VyX29uX21pcGlfZHBo eShzdHJ1Y3QgcGh5ICpwaHkpCiB7CiAJc3RydWN0IG1peGVsX2RwaHlfcHJpdiAqcHJpdiA9IHBo eV9nZXRfZHJ2ZGF0YShwaHkpOwogCXUzMiBsb2NrZWQ7CiAJaW50IHJldDsKIAotCXJldCA9IGNs a19wcmVwYXJlX2VuYWJsZShwcml2LT5waHlfcmVmX2Nsayk7Ci0JaWYgKHJldCA8IDApCi0JCXJl dHVybiByZXQ7Ci0KIAlwaHlfd3JpdGUocGh5LCBQV1JfT04sIERQSFlfUERfUExMKTsKIAlyZXQg PSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0+cmVnbWFwLCBEUEhZX0xPQ0ssIGxvY2tl ZCwKIAkJCQkgICAgICAgbG9ja2VkLCBQTExfTE9DS19TTEVFUCwKIAkJCQkgICAgICAgUExMX0xP Q0tfVElNRU9VVCk7CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycigmcGh5LT5kZXYsICJDb3Vs ZCBub3QgZ2V0IERQSFkgbG9jayAoJWQpIVxuIiwgcmV0KTsKLQkJZ290byBjbG9ja19kaXNhYmxl OworCQlyZXR1cm4gcmV0OwogCX0KIAlwaHlfd3JpdGUocGh5LCBQV1JfT04sIERQSFlfUERfRFBI WSk7CiAKIAlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtaXhlbF9kcGh5X3Bvd2VyX29uX2x2 ZHNfcGh5KHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpwcml2 ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJdTMyIGxvY2tlZDsKKwlpbnQgcmV0OworCisJcmVn bWFwX3VwZGF0ZV9iaXRzKHByaXYtPmx2ZHNfcmVnbWFwLCBQSFlfQ1RSTCwgTFZEU19FTiwgTFZE U19FTik7CisKKwlwaHlfd3JpdGUocGh5LCBQV1JfT04sIERQSFlfUERfRFBIWSk7CisJcGh5X3dy aXRlKHBoeSwgUFdSX09OLCBEUEhZX1BEX1BMTCk7CisKKwkvKiBkbyBub3Qgd2FpdCBmb3Igc2xh dmUgTFZEUyBQSFkgYmVpbmcgbG9ja2VkICovCisJaWYgKHByaXYtPmlzX3NsYXZlKQorCQlyZXR1 cm4gMDsKKworCXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LT5yZWdtYXAsIERQ SFlfTE9DSywgbG9ja2VkLAorCQkJCSAgICAgICBsb2NrZWQsIFBMTF9MT0NLX1NMRUVQLAorCQkJ CSAgICAgICBQTExfTE9DS19USU1FT1VUKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKCZw aHktPmRldiwgIkNvdWxkIG5vdCBnZXQgTFZEUyBQSFkgbG9jayAoJWQpIVxuIiwgcmV0KTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtaXhlbF9kcGh5 X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpw cml2ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7CisJaW50IHJldDsKKworCXJldCA9IGNsa19wcmVw YXJlX2VuYWJsZShwcml2LT5waHlfcmVmX2Nsayk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBy ZXQ7CisKKwlpZiAocGh5LT5hdHRycy5tb2RlID09IFBIWV9NT0RFX01JUElfRFBIWSkgeworCQly ZXQgPSBtaXhlbF9kcGh5X3Bvd2VyX29uX21pcGlfZHBoeShwaHkpOworCX0gZWxzZSBpZiAocGh5 LT5hdHRycy5tb2RlID09IFBIWV9NT0RFX0xWRFMpIHsKKwkJcmV0ID0gbWl4ZWxfZHBoeV9wb3dl cl9vbl9sdmRzX3BoeShwaHkpOworCX0gZWxzZSB7CisJCWRldl9lcnIoJnBoeS0+ZGV2LAorCQkJ IkZhaWxlZCB0byBwb3dlciBvbiBQSFkgd2l0aCBpbnZhbGlkIFBIWSBtb2RlOiAlZFxuIiwKKwkJ CQkJCQlwaHktPmF0dHJzLm1vZGUpOworCQlyZXQgPSAtRUlOVkFMOworCX0KKworCWlmIChyZXQp CisJCWdvdG8gY2xvY2tfZGlzYWJsZTsKKworCXJldHVybiAwOwogY2xvY2tfZGlzYWJsZToKIAlj bGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+cGh5X3JlZl9jbGspOwogCXJldHVybiByZXQ7CkBA IC00MDYsMTYgKzU5MSw1MSBAQCBzdGF0aWMgaW50IG1peGVsX2RwaHlfcG93ZXJfb2ZmKHN0cnVj dCBwaHkgKnBoeSkKIAlwaHlfd3JpdGUocGh5LCBQV1JfT0ZGLCBEUEhZX1BEX1BMTCk7CiAJcGh5 X3dyaXRlKHBoeSwgUFdSX09GRiwgRFBIWV9QRF9EUEhZKTsKIAorCWlmIChwaHktPmF0dHJzLm1v ZGUgPT0gUEhZX01PREVfTFZEUykKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHByaXYtPmx2ZHNfcmVn bWFwLCBQSFlfQ1RSTCwgTFZEU19FTiwgMCk7CisKIAljbGtfZGlzYWJsZV91bnByZXBhcmUocHJp di0+cGh5X3JlZl9jbGspOwogCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgbWl4ZWxfZHBo eV9zZXRfbW9kZShzdHJ1Y3QgcGh5ICpwaHksIGVudW0gcGh5X21vZGUgbW9kZSwgaW50IHN1Ym1v ZGUpCit7CisJc3RydWN0IG1peGVsX2RwaHlfcHJpdiAqcHJpdiA9IHBoeV9nZXRfZHJ2ZGF0YShw aHkpOworCWludCByZXQ7CisKKwlpZiAocHJpdi0+ZGV2ZGF0YS0+aXNfY29tYm8gJiYgbW9kZSAh PSBQSFlfTU9ERV9MVkRTKSB7CisJCWRldl9lcnIoJnBoeS0+ZGV2LCAiRmFpbGVkIHRvIHNldCBQ SFkgbW9kZSBmb3IgY29tYm8gUEhZXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYg KCFwcml2LT5kZXZkYXRhLT5pc19jb21ibyAmJiBtb2RlICE9IFBIWV9NT0RFX01JUElfRFBIWSkg eworCQlkZXZfZXJyKCZwaHktPmRldiwgIkZhaWxlZCB0byBzZXQgUEhZIG1vZGUgdG8gTUlQSSBE UEhZXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKHByaXYtPmRldmRhdGEtPmlz X2NvbWJvKSB7CisJCXUzMiByc2MgPSBwcml2LT5pZCA/IElNWF9TQ19SX01JUElfMSA6IElNWF9T Q19SX01JUElfMDsKKworCQlyZXQgPSBpbXhfc2NfbWlzY19zZXRfY29udHJvbChwcml2LT5pcGNf aGFuZGxlLAorCQkJCQkgICAgICByc2MsIElNWF9TQ19DX01PREUsCisJCQkJCSAgICAgIG1vZGUg PT0gUEhZX01PREVfTFZEUyk7CisJCWlmIChyZXQpIHsKKwkJCWRldl9lcnIoJnBoeS0+ZGV2LAor CQkJCSJGYWlsZWQgdG8gc2V0IFBIWSBtb2RlIHZpYSBTQ1UgaXBjOiAlZFxuIiwgcmV0KTsKKwkJ CXJldHVybiByZXQ7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGNvbnN0IHN0 cnVjdCBwaHlfb3BzIG1peGVsX2RwaHlfcGh5X29wcyA9IHsKIAkuaW5pdCA9IG1peGVsX2RwaHlf aW5pdCwKIAkuZXhpdCA9IG1peGVsX2RwaHlfZXhpdCwKIAkucG93ZXJfb24gPSBtaXhlbF9kcGh5 X3Bvd2VyX29uLAogCS5wb3dlcl9vZmYgPSBtaXhlbF9kcGh5X3Bvd2VyX29mZiwKKwkuc2V0X21v ZGUgPSBtaXhlbF9kcGh5X3NldF9tb2RlLAogCS5jb25maWd1cmUgPSBtaXhlbF9kcGh5X2NvbmZp Z3VyZSwKIAkudmFsaWRhdGUgPSBtaXhlbF9kcGh5X3ZhbGlkYXRlLAogCS5vd25lciA9IFRISVNf TU9EVUxFLApAQCAtNDI0LDYgKzY0NCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBt aXhlbF9kcGh5X3BoeV9vcHMgPSB7CiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBt aXhlbF9kcGh5X29mX21hdGNoW10gPSB7CiAJeyAuY29tcGF0aWJsZSA9ICJmc2wsaW14OG1xLW1p cGktZHBoeSIsCiAJICAuZGF0YSA9ICZtaXhlbF9kcGh5X2RldmRhdGFbTUlYRUxfSU1YOE1RXSB9 LAorCXsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDhxeHAtbWlwaS1kcGh5IiwKKwkgIC5kYXRhID0g Jm1peGVsX2RwaHlfZGV2ZGF0YVtNSVhFTF9JTVg4UVhQXSB9LAogCXsgLyogc2VudGluZWwgKi8g fSwKIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtaXhlbF9kcGh5X29mX21hdGNoKTsKQEAg LTQzNiw2ICs2NTgsNyBAQCBzdGF0aWMgaW50IG1peGVsX2RwaHlfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKIAlzdHJ1Y3QgbWl4ZWxfZHBoeV9wcml2ICpwcml2OwogCXN0cnVj dCBwaHkgKnBoeTsKIAl2b2lkIF9faW9tZW0gKmJhc2U7CisJaW50IHJldDsKIAogCWlmICghbnAp CiAJCXJldHVybiAtRU5PREVWOwpAQCAtNDY3LDYgKzY5MCwzMCBAQCBzdGF0aWMgaW50IG1peGVs X2RwaHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlkZXZfZGJnKGRldiwg InBoeV9yZWYgY2xvY2sgcmF0ZTogJWx1XG4iLAogCQljbGtfZ2V0X3JhdGUocHJpdi0+cGh5X3Jl Zl9jbGspKTsKIAorCWlmIChwcml2LT5kZXZkYXRhLT5pc19jb21ibykgeworCQlwcml2LT5sdmRz X3JlZ21hcCA9CisJCQlzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAiZnNsLHN5 c2NvbiIpOworCQlpZiAoSVNfRVJSKHByaXYtPmx2ZHNfcmVnbWFwKSkgeworCQkJcmV0ID0gUFRS X0VSUihwcml2LT5sdmRzX3JlZ21hcCk7CisJCQlkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiRmFp bGVkIHRvIGdldCBMVkRTIHJlZ21hcFxuIik7CisJCQlyZXR1cm4gcmV0OworCQl9CisKKwkJcHJp di0+aWQgPSBvZl9hbGlhc19nZXRfaWQobnAsICJtaXBpX2RwaHkiKTsKKwkJaWYgKHByaXYtPmlk IDwgMCkgeworCQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IHBoeSBub2RlIGFsaWFzIGlk OiAlZFxuIiwKKwkJCQkJCQkJIHByaXYtPmlkKTsKKwkJCXJldHVybiBwcml2LT5pZDsKKwkJfQor CisJCXJldCA9IGlteF9zY3VfZ2V0X2hhbmRsZSgmcHJpdi0+aXBjX2hhbmRsZSk7CisJCWlmIChy ZXQpIHsKKwkJCWRldl9lcnJfcHJvYmUoZGV2LCByZXQsCisJCQkJICAgICAgIkZhaWxlZCB0byBn ZXQgU0NVIGlwYyBoYW5kbGVcbiIpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKwogCWRldl9z ZXRfZHJ2ZGF0YShkZXYsIHByaXYpOwogCiAJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgbnAs ICZtaXhlbF9kcGh5X3BoeV9vcHMpOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=