From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oi1-f179.google.com (mail-oi1-f179.google.com [209.85.167.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE0893BBD2 for ; Sat, 27 Apr 2024 07:23:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.179 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714202633; cv=none; b=u7B00pzZEIchQL75Ahx0Tywae/6fkgVTn5odfG5U8wlGrb3+kvaGjmVzkGlM+Ol2BIUrtkKlMgNDQmPS+6hfZ325/qeNeriROuXSwZWRrRXCH3jKZyEQsEe9w3v8dK/k78m9gEIgI/7ztyKlO8E6JLYprwHciODyzUiON6ZR+40= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714202633; c=relaxed/simple; bh=QQ9X6/B/OY5Rpbf27ZZgDjJFLbBrR5d8bJENXinX6zw=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=uiic7nMVrdKMi6lradhoCSWUiZvOiHNRZF3DdSjp0FKh2arUA48aqwAcd0EXxVkU4B88PcB9Xs/ao+7C4usNcrkhKOjPi8LeDglZfG9k21zwvTCuCwFr/Ln7dZOiGVlcNFnD0i32BBwVHpes/Xv9Ust9J8K/Xws0qxrsjlzCQ3g= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=xhXv/wYA; arc=none smtp.client-ip=209.85.167.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="xhXv/wYA" Received: by mail-oi1-f179.google.com with SMTP id 5614622812f47-3c6f6c5bc37so1506394b6e.1 for ; Sat, 27 Apr 2024 00:23:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714202631; x=1714807431; darn=lists.linux.dev; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=X6/zlDycsKlLm9oMWJCj8T6cyudX5ggjd/VxiVnvZxs=; b=xhXv/wYA1Na54NzcKKZ2wnPIZsSebx9VA+NHO8MYxMBhBO30cC+wvEzqr9qDY6+dK+ 7hyLTvtzFTcSUXANQYuBuC2BiqesQEzh5hHGPwEVsEhr2HJc3jE7O0zb2Ot6a1ARHFYc RMfWHKeu8soxN/gxTD01kP0uI1qg7Fg/RSajLCHl0TiW1SqWbh17SQmsjjRfsOv/HjV0 OyVg0z1hhSkJILEvjyiteg481m3WI93xIUjyxwCA6NHDA6QvVGzHW/wiBJh9kio/2LZm wthn5mXl7sazWPwnbaRJXu8xgzUV3UQkg67+C3+Sz2wV366EdgpNs94EzBdJtCq+SC1B p8Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714202631; x=1714807431; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=X6/zlDycsKlLm9oMWJCj8T6cyudX5ggjd/VxiVnvZxs=; b=Yn1dUsSpUBArx9wqLowhxDjgmLH/phnsGPKiS2+RSq4h6znchZjFJxGCk4LcLVzuEm i8u/81cu4hoUwwJw1+/V2K5rrEuZeJugpu5DFRxC2aafYn8IJM1yuBa+IkfmidtN2W2u +czU6ok8hQyiF/rRRrVxBu7Vf6P+4+x63F9Ma3WEoLo1IKy3QSDtjvlBH9sZ4bXraIvH JJjeaGE3Fs51ApGP9Lw6ulu37SriaJQG1zeriBAU51oyoVdbCugYpBkUU52uSVtppprg H/7nmtMHql/8DMFQGpjwERBzfMVLf2DuIZ21Kqw42xBEyU7/GN30DM0OkYvH0Qj2UDC8 r/fA== X-Forwarded-Encrypted: i=1; AJvYcCWVVfcEXymKQ5sp4cfkCtGMuf9CpnETKEoMeCCkPLbY98R0h6+rFDtNOTXMu1M4Y2BV/UzIf/xSbGiijPGJzFPR9Ezp X-Gm-Message-State: AOJu0YyX+Y0HtMU2SZLc2szWJcNJuXWslnjUwQhTJQLNfWjS1xrC/tyh 4zvASDIOdjbLCR86RXKwYyTDJF2wchngKMYtXe/zx5xQgzssPhDvDqvtFIRwow== X-Google-Smtp-Source: AGHT+IHfipPHYlZH0dzUMyHUrOzKZyinCxBfDMz+pa+y5kowAJsMrQzIMhjdPr+G4bo6/Uiu7Lh6tA== X-Received: by 2002:a05:6808:85:b0:3c7:4b27:57fb with SMTP id s5-20020a056808008500b003c74b2757fbmr5763377oic.29.1714202630707; Sat, 27 Apr 2024 00:23:50 -0700 (PDT) Received: from thinkpad ([120.60.53.237]) by smtp.gmail.com with ESMTPSA id i123-20020a639d81000000b005f7ff496050sm13702516pgd.76.2024.04.27.00.23.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Apr 2024 00:23:50 -0700 (PDT) Date: Sat, 27 Apr 2024 12:53:35 +0530 From: Manivannan Sadhasivam To: Andy Shevchenko Cc: Frank Li , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , linux-omap@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-tegra@vger.kernel.org, Vignesh Raghavendra , Siddharth Vadapalli , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Richard Zhu , Lucas Stach , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Yue Wang , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Xiaowei Song , Binghui Wang , Thierry Reding , Jonathan Hunter , Thomas Petazzoni , Pali =?iso-8859-1?Q?Roh=E1r?= Subject: Re: [PATCH v2 4/4] PCI: kirin: Convert to agnostic GPIO API Message-ID: <20240427072335.GC1981@thinkpad> References: <20240423172208.2723892-1-andriy.shevchenko@linux.intel.com> <20240423172208.2723892-5-andriy.shevchenko@linux.intel.com> Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240423172208.2723892-5-andriy.shevchenko@linux.intel.com> On Tue, Apr 23, 2024 at 08:19:07PM +0300, Andy Shevchenko wrote: > The of_gpio.h is going to be removed. In preparation of that convert > the driver to the agnostic API. > > Signed-off-by: Andy Shevchenko > Reviewed-by: Rob Herring > --- > drivers/pci/controller/dwc/pcie-kirin.c | 105 ++++++++---------------- > 1 file changed, 35 insertions(+), 70 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c > index d5523f302102..1753ab63a541 100644 > --- a/drivers/pci/controller/dwc/pcie-kirin.c > +++ b/drivers/pci/controller/dwc/pcie-kirin.c > @@ -12,12 +12,10 @@ > #include > #include > #include > -#include > #include > #include > #include > #include > -#include > #include > #include > #include > @@ -78,16 +76,16 @@ struct kirin_pcie { > void *phy_priv; /* only for PCIE_KIRIN_INTERNAL_PHY */ > > /* DWC PERST# */ > - int gpio_id_dwc_perst; > + struct gpio_desc *id_dwc_perst_gpio; > > /* Per-slot PERST# */ > int num_slots; > - int gpio_id_reset[MAX_PCI_SLOTS]; > + struct gpio_desc *id_reset_gpio[MAX_PCI_SLOTS]; > const char *reset_names[MAX_PCI_SLOTS]; > > /* Per-slot clkreq */ > int n_gpio_clkreq; > - int gpio_id_clkreq[MAX_PCI_SLOTS]; > + struct gpio_desc *id_clkreq_gpio[MAX_PCI_SLOTS]; > const char *clkreq_names[MAX_PCI_SLOTS]; > }; > > @@ -381,15 +379,20 @@ static int kirin_pcie_get_gpio_enable(struct kirin_pcie *pcie, > pcie->n_gpio_clkreq = ret; > > for (i = 0; i < pcie->n_gpio_clkreq; i++) { > - pcie->gpio_id_clkreq[i] = of_get_named_gpio(dev->of_node, > - "hisilicon,clken-gpios", i); > - if (pcie->gpio_id_clkreq[i] < 0) > - return pcie->gpio_id_clkreq[i]; > + pcie->id_clkreq_gpio[i] = devm_gpiod_get_index(dev, > + "hisilicon,clken", i, > + GPIOD_ASIS); Please don't use GPIOD_ASIS even if the old code was using it. For all 3 GPIOs in this driver, GPIOD_OUT_LOW flag should be used as the default state is assert (considering the fact that the DT uses GPIO_ACTIVE_HIGH). - Mani > + if (IS_ERR(pcie->id_clkreq_gpio[i])) > + return dev_err_probe(dev, PTR_ERR(pcie->id_clkreq_gpio[i]), > + "unable to get a valid clken gpio\n"); > > pcie->clkreq_names[i] = devm_kasprintf(dev, GFP_KERNEL, > "pcie_clkreq_%d", i); > if (!pcie->clkreq_names[i]) > return -ENOMEM; > + > + gpiod_set_consumer_name(pcie->id_clkreq_gpio[i], > + pcie->clkreq_names[i]); > } > > return 0; > @@ -407,10 +410,16 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie, > for_each_available_child_of_node(parent, child) { > i = pcie->num_slots; > > - pcie->gpio_id_reset[i] = of_get_named_gpio(child, > - "reset-gpios", 0); > - if (pcie->gpio_id_reset[i] < 0) > - continue; > + pcie->id_reset_gpio[i] = devm_fwnode_gpiod_get_index(dev, > + of_fwnode_handle(child), > + "reset", 0, GPIOD_ASIS, > + NULL); > + if (IS_ERR(pcie->id_reset_gpio[i])) { > + if (PTR_ERR(pcie->id_reset_gpio[i]) == -ENOENT) > + continue; > + return dev_err_probe(dev, PTR_ERR(pcie->id_reset_gpio[i]), > + "unable to get a valid reset gpio\n"); > + } > > pcie->num_slots++; > if (pcie->num_slots > MAX_PCI_SLOTS) { > @@ -434,6 +443,9 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie, > ret = -ENOMEM; > goto put_node; > } > + > + gpiod_set_consumer_name(pcie->id_reset_gpio[i], > + pcie->reset_names[i]); > } > } > > @@ -463,14 +475,11 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie, > return PTR_ERR(kirin_pcie->apb); > > /* pcie internal PERST# gpio */ > - kirin_pcie->gpio_id_dwc_perst = of_get_named_gpio(dev->of_node, > - "reset-gpios", 0); > - if (kirin_pcie->gpio_id_dwc_perst == -EPROBE_DEFER) { > - return -EPROBE_DEFER; > - } else if (!gpio_is_valid(kirin_pcie->gpio_id_dwc_perst)) { > - dev_err(dev, "unable to get a valid gpio pin\n"); > - return -ENODEV; > - } > + kirin_pcie->id_dwc_perst_gpio = devm_gpiod_get(dev, "reset", GPIOD_ASIS); > + if (IS_ERR(kirin_pcie->id_dwc_perst_gpio)) > + return dev_err_probe(dev, PTR_ERR(kirin_pcie->id_dwc_perst_gpio), > + "unable to get a valid gpio pin\n"); > + gpiod_set_consumer_name(kirin_pcie->id_dwc_perst_gpio, "pcie_perst_bridge"); > > ret = kirin_pcie_get_gpio_enable(kirin_pcie, pdev); > if (ret) > @@ -553,7 +562,7 @@ static int kirin_pcie_add_bus(struct pci_bus *bus) > > /* Send PERST# to each slot */ > for (i = 0; i < kirin_pcie->num_slots; i++) { > - ret = gpio_direction_output(kirin_pcie->gpio_id_reset[i], 1); > + ret = gpiod_direction_output_raw(kirin_pcie->id_reset_gpio[i], 1); > if (ret) { > dev_err(pci->dev, "PERST# %s error: %d\n", > kirin_pcie->reset_names[i], ret); > @@ -623,44 +632,6 @@ static int kirin_pcie_host_init(struct dw_pcie_rp *pp) > return 0; > } > > -static int kirin_pcie_gpio_request(struct kirin_pcie *kirin_pcie, > - struct device *dev) > -{ > - int ret, i; > - > - for (i = 0; i < kirin_pcie->num_slots; i++) { > - if (!gpio_is_valid(kirin_pcie->gpio_id_reset[i])) { > - dev_err(dev, "unable to get a valid %s gpio\n", > - kirin_pcie->reset_names[i]); > - return -ENODEV; > - } > - > - ret = devm_gpio_request(dev, kirin_pcie->gpio_id_reset[i], > - kirin_pcie->reset_names[i]); > - if (ret) > - return ret; > - } > - > - for (i = 0; i < kirin_pcie->n_gpio_clkreq; i++) { > - if (!gpio_is_valid(kirin_pcie->gpio_id_clkreq[i])) { > - dev_err(dev, "unable to get a valid %s gpio\n", > - kirin_pcie->clkreq_names[i]); > - return -ENODEV; > - } > - > - ret = devm_gpio_request(dev, kirin_pcie->gpio_id_clkreq[i], > - kirin_pcie->clkreq_names[i]); > - if (ret) > - return ret; > - > - ret = gpio_direction_output(kirin_pcie->gpio_id_clkreq[i], 0); > - if (ret) > - return ret; > - } > - > - return 0; > -} > - > static const struct dw_pcie_ops kirin_dw_pcie_ops = { > .read_dbi = kirin_pcie_read_dbi, > .write_dbi = kirin_pcie_write_dbi, > @@ -680,7 +651,7 @@ static int kirin_pcie_power_off(struct kirin_pcie *kirin_pcie) > return hi3660_pcie_phy_power_off(kirin_pcie); > > for (i = 0; i < kirin_pcie->n_gpio_clkreq; i++) > - gpio_direction_output(kirin_pcie->gpio_id_clkreq[i], 1); > + gpiod_direction_output_raw(kirin_pcie->id_clkreq_gpio[i], 1); > > phy_power_off(kirin_pcie->phy); > phy_exit(kirin_pcie->phy); > @@ -707,10 +678,6 @@ static int kirin_pcie_power_on(struct platform_device *pdev, > if (IS_ERR(kirin_pcie->phy)) > return PTR_ERR(kirin_pcie->phy); > > - ret = kirin_pcie_gpio_request(kirin_pcie, dev); > - if (ret) > - return ret; > - > ret = phy_init(kirin_pcie->phy); > if (ret) > goto err; > @@ -723,11 +690,9 @@ static int kirin_pcie_power_on(struct platform_device *pdev, > /* perst assert Endpoint */ > usleep_range(REF_2_PERST_MIN, REF_2_PERST_MAX); > > - if (!gpio_request(kirin_pcie->gpio_id_dwc_perst, "pcie_perst_bridge")) { > - ret = gpio_direction_output(kirin_pcie->gpio_id_dwc_perst, 1); > - if (ret) > - goto err; > - } > + ret = gpiod_direction_output_raw(kirin_pcie->id_dwc_perst_gpio, 1); > + if (ret) > + goto err; > > usleep_range(PERST_2_ACCESS_MIN, PERST_2_ACCESS_MAX); > > -- > 2.43.0.rc1.1336.g36b5255a03ac > -- மணிவண்ணன் சதாசிவம் 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 3AA2FC10F16 for ; Sat, 27 Apr 2024 07:24:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=r0S57ozYBSHalhRLD6efCalA6GGkjbiFqJ+pkCoK/l8=; b=y3VODKZR1Csqbv f32mndqcnZRXCoj/YYUSw2foy+HlNqYH9bBmCGXJfeqvX8IL84YBCvKtu18jG0At95lC0LtkoRFmI J5yJFoLjGe4e0G9C6bNjz71nWqWugZur/h1XvO2fSA2WVUgdg9tlnIleerKuM5qrJtPA2Lht+4tOO 3FItOlJdPUdFUmdXSniRx2tuFy8WONp6fogQe/jzBXjLL5/CqAqeVayJpH0QhvmsYJ57SKLIIrN0p a+uHzYzitWtk22tT53nRJvq+KiHJEGHqZL8rKWjOtUsDQ4thyxOmuY/BY5TT1LHPwMn8E9rQZe4OV MBbwc/h/B9Iy4Se+sNqQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0cPd-0000000F3Mn-1FD8; Sat, 27 Apr 2024 07:23:57 +0000 Received: from mail-oi1-x235.google.com ([2607:f8b0:4864:20::235]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0cPa-0000000F3Lq-0eWb for linux-amlogic@lists.infradead.org; Sat, 27 Apr 2024 07:23:55 +0000 Received: by mail-oi1-x235.google.com with SMTP id 5614622812f47-3c84bb69c6fso1592794b6e.3 for ; Sat, 27 Apr 2024 00:23:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714202631; x=1714807431; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=X6/zlDycsKlLm9oMWJCj8T6cyudX5ggjd/VxiVnvZxs=; b=fPj90s1kPaYviNXslzpeGYeV0zY8X35YYF5pBdxXSSLRSa7zMReN4+zsIWCr675+lR XEx/h49FHSqRwzHYo5F/UkFrmtqQ88vLpf6vD1Jxkjd8B/6nOKMPSVDeA9+VSn3yQXVk 3QJfihPrnjZDBef6eTQr/saBhrcwb09htWNI+A9k/fBZupDe+LPigC3mlxQE2OghGlLG T6E5vs2AUvXbCgggBAJNL9Nr4SguIeXGiSCoYSe+E8NpBjS+6fQjMVA2OEG0JKBhYtFA 5yB3rOz4i4UxZjgmWfjKChoqpbwgSsvFeCuZwOghHdhRhf0FDA9mA2xs7rNA07VTO98z hr1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714202631; x=1714807431; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=X6/zlDycsKlLm9oMWJCj8T6cyudX5ggjd/VxiVnvZxs=; b=sYKeUWLiSLsXlgr8g+p2Co/m764KNjPdj4K6mctszIlxLYxZzZbMhQY+yHiBdcfINY INEY1ODyHMREseG503QbHtpKM9kpQtMxs2FznApQWc9rq8ByfNoYgLdiYdq9hPXC2QMy OegnjwOwCIE9dtQ42xVqKm0MZIfvAPa7hw8Xfx06bD+uPGMxsh+KUModPIevalEmbptP ewUen6pphekT3di2V9eZxp43+3xkns+hvJaSJ5LkoZ9Ss/epuuTp2JwIkLG+z+tUkkgz wtHnTAO0UrSKue0BiylauKRNRP5tSWJlYbMni26+wyN5Qnjc1mk4pElhDTeTF8HrRYrE vsqw== X-Forwarded-Encrypted: i=1; AJvYcCVRdhQglr2ZBPh3N4uVS5MHj8p8IILPjnC+KDqlA+Dlh8wnKlkZUkN6JlGIeAOhUsjnq0TdmTor2h+XUNHObAYeQm0s6AvrGdQ6aLbblGIlP58= X-Gm-Message-State: AOJu0Ywj9OT4I9IwuTqdirFbiZnymEtm/JmXWmcKHiARRBCZR/tZEQ9L S1QtzVMN7bM+DzuF6KxgEJn8iVZdaX7WNM1Agme2soHSRnGE3fe3gjuK7kS7DA== X-Google-Smtp-Source: AGHT+IHfipPHYlZH0dzUMyHUrOzKZyinCxBfDMz+pa+y5kowAJsMrQzIMhjdPr+G4bo6/Uiu7Lh6tA== X-Received: by 2002:a05:6808:85:b0:3c7:4b27:57fb with SMTP id s5-20020a056808008500b003c74b2757fbmr5763377oic.29.1714202630707; Sat, 27 Apr 2024 00:23:50 -0700 (PDT) Received: from thinkpad ([120.60.53.237]) by smtp.gmail.com with ESMTPSA id i123-20020a639d81000000b005f7ff496050sm13702516pgd.76.2024.04.27.00.23.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Apr 2024 00:23:50 -0700 (PDT) Date: Sat, 27 Apr 2024 12:53:35 +0530 From: Manivannan Sadhasivam To: Andy Shevchenko Cc: Frank Li , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , linux-omap@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-tegra@vger.kernel.org, Vignesh Raghavendra , Siddharth Vadapalli , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Richard Zhu , Lucas Stach , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Yue Wang , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Xiaowei Song , Binghui Wang , Thierry Reding , Jonathan Hunter , Thomas Petazzoni , Pali =?iso-8859-1?Q?Roh=E1r?= Subject: Re: [PATCH v2 4/4] PCI: kirin: Convert to agnostic GPIO API Message-ID: <20240427072335.GC1981@thinkpad> References: <20240423172208.2723892-1-andriy.shevchenko@linux.intel.com> <20240423172208.2723892-5-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240423172208.2723892-5-andriy.shevchenko@linux.intel.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240427_002354_256174_62333106 X-CRM114-Status: GOOD ( 27.53 ) X-BeenThere: linux-amlogic@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-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gVHVlLCBBcHIgMjMsIDIwMjQgYXQgMDg6MTk6MDdQTSArMDMwMCwgQW5keSBTaGV2Y2hlbmtv IHdyb3RlOgo+IFRoZSBvZl9ncGlvLmggaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZC4gSW4gcHJlcGFy YXRpb24gb2YgdGhhdCBjb252ZXJ0Cj4gdGhlIGRyaXZlciB0byB0aGUgYWdub3N0aWMgQVBJLgo+ IAo+IFNpZ25lZC1vZmYtYnk6IEFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGlu dXguaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBSb2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3Jn Pgo+IC0tLQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWtpcmluLmMgfCAxMDUg KysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAzNSBpbnNlcnRpb25z KCspLCA3MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1raXJpbi5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1r aXJpbi5jCj4gaW5kZXggZDU1MjNmMzAyMTAyLi4xNzUzYWI2M2E1NDEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1raXJpbi5jCj4gKysrIGIvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpZS1raXJpbi5jCj4gQEAgLTEyLDEyICsxMiwxMCBAQAo+ICAj aW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KPiAgI2lu Y2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2ludGVycnVw dC5oPgo+ICAjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgo+ICAjaW5jbHVkZSA8bGludXgv b2YuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L29m X3BjaS5oPgo+ICAjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgo+ICAjaW5jbHVkZSA8bGludXgv cGNpLmg+Cj4gQEAgLTc4LDE2ICs3NiwxNiBAQCBzdHJ1Y3Qga2lyaW5fcGNpZSB7Cj4gIAl2b2lk CQkqcGh5X3ByaXY7CS8qIG9ubHkgZm9yIFBDSUVfS0lSSU5fSU5URVJOQUxfUEhZICovCj4gIAo+ ICAJLyogRFdDIFBFUlNUIyAqLwo+IC0JaW50CQlncGlvX2lkX2R3Y19wZXJzdDsKPiArCXN0cnVj dCBncGlvX2Rlc2MgKmlkX2R3Y19wZXJzdF9ncGlvOwo+ICAKPiAgCS8qIFBlci1zbG90IFBFUlNU IyAqLwo+ICAJaW50CQludW1fc2xvdHM7Cj4gLQlpbnQJCWdwaW9faWRfcmVzZXRbTUFYX1BDSV9T TE9UU107Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICppZF9yZXNldF9ncGlvW01BWF9QQ0lfU0xPVFNd Owo+ICAJY29uc3QgY2hhcgkqcmVzZXRfbmFtZXNbTUFYX1BDSV9TTE9UU107Cj4gIAo+ICAJLyog UGVyLXNsb3QgY2xrcmVxICovCj4gIAlpbnQJCW5fZ3Bpb19jbGtyZXE7Cj4gLQlpbnQJCWdwaW9f aWRfY2xrcmVxW01BWF9QQ0lfU0xPVFNdOwo+ICsJc3RydWN0IGdwaW9fZGVzYyAqaWRfY2xrcmVx X2dwaW9bTUFYX1BDSV9TTE9UU107Cj4gIAljb25zdCBjaGFyCSpjbGtyZXFfbmFtZXNbTUFYX1BD SV9TTE9UU107Cj4gIH07Cj4gIAo+IEBAIC0zODEsMTUgKzM3OSwyMCBAQCBzdGF0aWMgaW50IGtp cmluX3BjaWVfZ2V0X2dwaW9fZW5hYmxlKHN0cnVjdCBraXJpbl9wY2llICpwY2llLAo+ICAJcGNp ZS0+bl9ncGlvX2Nsa3JlcSA9IHJldDsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgcGNpZS0+bl9n cGlvX2Nsa3JlcTsgaSsrKSB7Cj4gLQkJcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV0gPSBvZl9nZXRf bmFtZWRfZ3BpbyhkZXYtPm9mX25vZGUsCj4gLQkJCQkJCSAgICAiaGlzaWxpY29uLGNsa2VuLWdw aW9zIiwgaSk7Cj4gLQkJaWYgKHBjaWUtPmdwaW9faWRfY2xrcmVxW2ldIDwgMCkKPiAtCQkJcmV0 dXJuIHBjaWUtPmdwaW9faWRfY2xrcmVxW2ldOwo+ICsJCXBjaWUtPmlkX2Nsa3JlcV9ncGlvW2ld ID0gZGV2bV9ncGlvZF9nZXRfaW5kZXgoZGV2LAo+ICsJCQkJCQkJImhpc2lsaWNvbixjbGtlbiIs IGksCj4gKwkJCQkJCQlHUElPRF9BU0lTKTsKClBsZWFzZSBkb24ndCB1c2UgR1BJT0RfQVNJUyBl dmVuIGlmIHRoZSBvbGQgY29kZSB3YXMgdXNpbmcgaXQuCgpGb3IgYWxsIDMgR1BJT3MgaW4gdGhp cyBkcml2ZXIsIEdQSU9EX09VVF9MT1cgZmxhZyBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVmYXVs dApzdGF0ZSBpcyBhc3NlcnQgKGNvbnNpZGVyaW5nIHRoZSBmYWN0IHRoYXQgdGhlIERUIHVzZXMg R1BJT19BQ1RJVkVfSElHSCkuCgotIE1hbmkKCj4gKwkJaWYgKElTX0VSUihwY2llLT5pZF9jbGty ZXFfZ3Bpb1tpXSkpCj4gKwkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwY2ll LT5pZF9jbGtyZXFfZ3Bpb1tpXSksCj4gKwkJCQkJICAgICAidW5hYmxlIHRvIGdldCBhIHZhbGlk IGNsa2VuIGdwaW9cbiIpOwo+ICAKPiAgCQlwY2llLT5jbGtyZXFfbmFtZXNbaV0gPSBkZXZtX2th c3ByaW50ZihkZXYsIEdGUF9LRVJORUwsCj4gIAkJCQkJCSAgICAgICAicGNpZV9jbGtyZXFfJWQi LCBpKTsKPiAgCQlpZiAoIXBjaWUtPmNsa3JlcV9uYW1lc1tpXSkKPiAgCQkJcmV0dXJuIC1FTk9N RU07Cj4gKwo+ICsJCWdwaW9kX3NldF9jb25zdW1lcl9uYW1lKHBjaWUtPmlkX2Nsa3JlcV9ncGlv W2ldLAo+ICsJCQkJCXBjaWUtPmNsa3JlcV9uYW1lc1tpXSk7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJu IDA7Cj4gQEAgLTQwNywxMCArNDEwLDE2IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9wYXJzZV9w b3J0KHN0cnVjdCBraXJpbl9wY2llICpwY2llLAo+ICAJCWZvcl9lYWNoX2F2YWlsYWJsZV9jaGls ZF9vZl9ub2RlKHBhcmVudCwgY2hpbGQpIHsKPiAgCQkJaSA9IHBjaWUtPm51bV9zbG90czsKPiAg Cj4gLQkJCXBjaWUtPmdwaW9faWRfcmVzZXRbaV0gPSBvZl9nZXRfbmFtZWRfZ3BpbyhjaGlsZCwK PiAtCQkJCQkJCSJyZXNldC1ncGlvcyIsIDApOwo+IC0JCQlpZiAocGNpZS0+Z3Bpb19pZF9yZXNl dFtpXSA8IDApCj4gLQkJCQljb250aW51ZTsKPiArCQkJcGNpZS0+aWRfcmVzZXRfZ3Bpb1tpXSA9 IGRldm1fZndub2RlX2dwaW9kX2dldF9pbmRleChkZXYsCj4gKwkJCQkJCQkgb2ZfZndub2RlX2hh bmRsZShjaGlsZCksCj4gKwkJCQkJCQkgInJlc2V0IiwgMCwgR1BJT0RfQVNJUywKPiArCQkJCQkJ CSBOVUxMKTsKPiArCQkJaWYgKElTX0VSUihwY2llLT5pZF9yZXNldF9ncGlvW2ldKSkgewo+ICsJ CQkJaWYgKFBUUl9FUlIocGNpZS0+aWRfcmVzZXRfZ3Bpb1tpXSkgPT0gLUVOT0VOVCkKPiArCQkJ CQljb250aW51ZTsKPiArCQkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwY2ll LT5pZF9yZXNldF9ncGlvW2ldKSwKPiArCQkJCQkJICAgICAidW5hYmxlIHRvIGdldCBhIHZhbGlk IHJlc2V0IGdwaW9cbiIpOwo+ICsJCQl9Cj4gIAo+ICAJCQlwY2llLT5udW1fc2xvdHMrKzsKPiAg CQkJaWYgKHBjaWUtPm51bV9zbG90cyA+IE1BWF9QQ0lfU0xPVFMpIHsKPiBAQCAtNDM0LDYgKzQ0 Myw5IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9wYXJzZV9wb3J0KHN0cnVjdCBraXJpbl9wY2ll ICpwY2llLAo+ICAJCQkJcmV0ID0gLUVOT01FTTsKPiAgCQkJCWdvdG8gcHV0X25vZGU7Cj4gIAkJ CX0KPiArCj4gKwkJCWdwaW9kX3NldF9jb25zdW1lcl9uYW1lKHBjaWUtPmlkX3Jlc2V0X2dwaW9b aV0sCj4gKwkJCQkJCXBjaWUtPnJlc2V0X25hbWVzW2ldKTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBA IC00NjMsMTQgKzQ3NSwxMSBAQCBzdGF0aWMgbG9uZyBraXJpbl9wY2llX2dldF9yZXNvdXJjZShz dHJ1Y3Qga2lyaW5fcGNpZSAqa2lyaW5fcGNpZSwKPiAgCQlyZXR1cm4gUFRSX0VSUihraXJpbl9w Y2llLT5hcGIpOwo+ICAKPiAgCS8qIHBjaWUgaW50ZXJuYWwgUEVSU1QjIGdwaW8gKi8KPiAtCWtp cmluX3BjaWUtPmdwaW9faWRfZHdjX3BlcnN0ID0gb2ZfZ2V0X25hbWVkX2dwaW8oZGV2LT5vZl9u b2RlLAo+IC0JCQkJCQkJICAicmVzZXQtZ3Bpb3MiLCAwKTsKPiAtCWlmIChraXJpbl9wY2llLT5n cGlvX2lkX2R3Y19wZXJzdCA9PSAtRVBST0JFX0RFRkVSKSB7Cj4gLQkJcmV0dXJuIC1FUFJPQkVf REVGRVI7Cj4gLQl9IGVsc2UgaWYgKCFncGlvX2lzX3ZhbGlkKGtpcmluX3BjaWUtPmdwaW9faWRf ZHdjX3BlcnN0KSkgewo+IC0JCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGdldCBhIHZhbGlkIGdw aW8gcGluXG4iKTsKPiAtCQlyZXR1cm4gLUVOT0RFVjsKPiAtCX0KPiArCWtpcmluX3BjaWUtPmlk X2R3Y19wZXJzdF9ncGlvID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAicmVzZXQiLCBHUElPRF9BU0lT KTsKPiArCWlmIChJU19FUlIoa2lyaW5fcGNpZS0+aWRfZHdjX3BlcnN0X2dwaW8pKQo+ICsJCXJl dHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihraXJpbl9wY2llLT5pZF9kd2NfcGVyc3Rf Z3BpbyksCj4gKwkJCQkgICAgICJ1bmFibGUgdG8gZ2V0IGEgdmFsaWQgZ3BpbyBwaW5cbiIpOwo+ ICsJZ3Bpb2Rfc2V0X2NvbnN1bWVyX25hbWUoa2lyaW5fcGNpZS0+aWRfZHdjX3BlcnN0X2dwaW8s ICJwY2llX3BlcnN0X2JyaWRnZSIpOwo+ICAKPiAgCXJldCA9IGtpcmluX3BjaWVfZ2V0X2dwaW9f ZW5hYmxlKGtpcmluX3BjaWUsIHBkZXYpOwo+ICAJaWYgKHJldCkKPiBAQCAtNTUzLDcgKzU2Miw3 IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9hZGRfYnVzKHN0cnVjdCBwY2lfYnVzICpidXMpCj4g IAo+ICAJLyogU2VuZCBQRVJTVCMgdG8gZWFjaCBzbG90ICovCj4gIAlmb3IgKGkgPSAwOyBpIDwg a2lyaW5fcGNpZS0+bnVtX3Nsb3RzOyBpKyspIHsKPiAtCQlyZXQgPSBncGlvX2RpcmVjdGlvbl9v dXRwdXQoa2lyaW5fcGNpZS0+Z3Bpb19pZF9yZXNldFtpXSwgMSk7Cj4gKwkJcmV0ID0gZ3Bpb2Rf ZGlyZWN0aW9uX291dHB1dF9yYXcoa2lyaW5fcGNpZS0+aWRfcmVzZXRfZ3Bpb1tpXSwgMSk7Cj4g IAkJaWYgKHJldCkgewo+ICAJCQlkZXZfZXJyKHBjaS0+ZGV2LCAiUEVSU1QjICVzIGVycm9yOiAl ZFxuIiwKPiAgCQkJCWtpcmluX3BjaWUtPnJlc2V0X25hbWVzW2ldLCByZXQpOwo+IEBAIC02MjMs NDQgKzYzMiw2IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9ob3N0X2luaXQoc3RydWN0IGR3X3Bj aWVfcnAgKnBwKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQga2lyaW5fcGNp ZV9ncGlvX3JlcXVlc3Qoc3RydWN0IGtpcmluX3BjaWUgKmtpcmluX3BjaWUsCj4gLQkJCQkgICBz dHJ1Y3QgZGV2aWNlICpkZXYpCj4gLXsKPiAtCWludCByZXQsIGk7Cj4gLQo+IC0JZm9yIChpID0g MDsgaSA8IGtpcmluX3BjaWUtPm51bV9zbG90czsgaSsrKSB7Cj4gLQkJaWYgKCFncGlvX2lzX3Zh bGlkKGtpcmluX3BjaWUtPmdwaW9faWRfcmVzZXRbaV0pKSB7Cj4gLQkJCWRldl9lcnIoZGV2LCAi dW5hYmxlIHRvIGdldCBhIHZhbGlkICVzIGdwaW9cbiIsCj4gLQkJCQlraXJpbl9wY2llLT5yZXNl dF9uYW1lc1tpXSk7Cj4gLQkJCXJldHVybiAtRU5PREVWOwo+IC0JCX0KPiAtCj4gLQkJcmV0ID0g ZGV2bV9ncGlvX3JlcXVlc3QoZGV2LCBraXJpbl9wY2llLT5ncGlvX2lkX3Jlc2V0W2ldLAo+IC0J CQkJCWtpcmluX3BjaWUtPnJlc2V0X25hbWVzW2ldKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1 cm4gcmV0Owo+IC0JfQo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBraXJpbl9wY2llLT5uX2dwaW9f Y2xrcmVxOyBpKyspIHsKPiAtCQlpZiAoIWdwaW9faXNfdmFsaWQoa2lyaW5fcGNpZS0+Z3Bpb19p ZF9jbGtyZXFbaV0pKSB7Cj4gLQkJCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGdldCBhIHZhbGlk ICVzIGdwaW9cbiIsCj4gLQkJCQlraXJpbl9wY2llLT5jbGtyZXFfbmFtZXNbaV0pOwo+IC0JCQly ZXR1cm4gLUVOT0RFVjsKPiAtCQl9Cj4gLQo+IC0JCXJldCA9IGRldm1fZ3Bpb19yZXF1ZXN0KGRl diwga2lyaW5fcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV0sCj4gLQkJCQkJa2lyaW5fcGNpZS0+Y2xr cmVxX25hbWVzW2ldKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0KPiAtCQly ZXQgPSBncGlvX2RpcmVjdGlvbl9vdXRwdXQoa2lyaW5fcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV0s IDApOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJu IDA7Cj4gLX0KPiAtCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdfcGNpZV9vcHMga2lyaW5fZHdf cGNpZV9vcHMgPSB7Cj4gIAkucmVhZF9kYmkgPSBraXJpbl9wY2llX3JlYWRfZGJpLAo+ICAJLndy aXRlX2RiaSA9IGtpcmluX3BjaWVfd3JpdGVfZGJpLAo+IEBAIC02ODAsNyArNjUxLDcgQEAgc3Rh dGljIGludCBraXJpbl9wY2llX3Bvd2VyX29mZihzdHJ1Y3Qga2lyaW5fcGNpZSAqa2lyaW5fcGNp ZSkKPiAgCQlyZXR1cm4gaGkzNjYwX3BjaWVfcGh5X3Bvd2VyX29mZihraXJpbl9wY2llKTsKPiAg Cj4gIAlmb3IgKGkgPSAwOyBpIDwga2lyaW5fcGNpZS0+bl9ncGlvX2Nsa3JlcTsgaSsrKQo+IC0J CWdwaW9fZGlyZWN0aW9uX291dHB1dChraXJpbl9wY2llLT5ncGlvX2lkX2Nsa3JlcVtpXSwgMSk7 Cj4gKwkJZ3Bpb2RfZGlyZWN0aW9uX291dHB1dF9yYXcoa2lyaW5fcGNpZS0+aWRfY2xrcmVxX2dw aW9baV0sIDEpOwo+ICAKPiAgCXBoeV9wb3dlcl9vZmYoa2lyaW5fcGNpZS0+cGh5KTsKPiAgCXBo eV9leGl0KGtpcmluX3BjaWUtPnBoeSk7Cj4gQEAgLTcwNywxMCArNjc4LDYgQEAgc3RhdGljIGlu dCBraXJpbl9wY2llX3Bvd2VyX29uKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4gIAkJ aWYgKElTX0VSUihraXJpbl9wY2llLT5waHkpKQo+ICAJCQlyZXR1cm4gUFRSX0VSUihraXJpbl9w Y2llLT5waHkpOwo+ICAKPiAtCQlyZXQgPSBraXJpbl9wY2llX2dwaW9fcmVxdWVzdChraXJpbl9w Y2llLCBkZXYpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gLQo+ICAJCXJldCA9 IHBoeV9pbml0KGtpcmluX3BjaWUtPnBoeSk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJZ290byBlcnI7 Cj4gQEAgLTcyMywxMSArNjkwLDkgQEAgc3RhdGljIGludCBraXJpbl9wY2llX3Bvd2VyX29uKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4gIAkvKiBwZXJzdCBhc3NlcnQgRW5kcG9pbnQg Ki8KPiAgCXVzbGVlcF9yYW5nZShSRUZfMl9QRVJTVF9NSU4sIFJFRl8yX1BFUlNUX01BWCk7Cj4g IAo+IC0JaWYgKCFncGlvX3JlcXVlc3Qoa2lyaW5fcGNpZS0+Z3Bpb19pZF9kd2NfcGVyc3QsICJw Y2llX3BlcnN0X2JyaWRnZSIpKSB7Cj4gLQkJcmV0ID0gZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KGtp cmluX3BjaWUtPmdwaW9faWRfZHdjX3BlcnN0LCAxKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlnb3Rv IGVycjsKPiAtCX0KPiArCXJldCA9IGdwaW9kX2RpcmVjdGlvbl9vdXRwdXRfcmF3KGtpcmluX3Bj aWUtPmlkX2R3Y19wZXJzdF9ncGlvLCAxKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBlcnI7Cj4g IAo+ICAJdXNsZWVwX3JhbmdlKFBFUlNUXzJfQUNDRVNTX01JTiwgUEVSU1RfMl9BQ0NFU1NfTUFY KTsKPiAgCj4gLS0gCj4gMi40My4wLnJjMS4xMzM2LmczNmI1MjU1YTAzYWMKPiAKCi0tIArgrq7g rqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hbWxvZ2ljIG1h aWxpbmcgbGlzdApsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hbWxvZ2ljCg== 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 29DD7C4345F for ; Sat, 27 Apr 2024 07:24:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=x9gDPDCzpmIuCIETda1COdXw76M1dIj7B1690nNISdo=; b=l4y7zL2EXxUTdP Ed6rWZasuOWV6KPNL7WyrNWynumyn61/uGim91HP6YbxpcC3j+6aK8FaSZdWV1S5e0/WRkZCA72A1 n49X8gc2PYZGBKQ51vkHRrAD/6K1Fg7eV1e7LhQSbKotrAui0YfaApHqlj7Umj/YTUnebEV4sURx7 9u9scQUrywkY3Q9H+VV2K8BEkit8ej3cTzIn4S7Lqk0GOg2ofQf6f7ztgRUI6Jwwkssm5tXx+MJfU Ee2Y0D1wlqSEUJB+YjzLwud/+VYp2mdcL7/oiPnpD1ZPJ5d2phx+arYk06LJh48aDoFklsV/BgB1d ThHG906ydafoMMGKnuSA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0cPd-0000000F3Mu-3Vvl; Sat, 27 Apr 2024 07:23:57 +0000 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s0cPa-0000000F3Lr-0eg9 for linux-arm-kernel@lists.infradead.org; Sat, 27 Apr 2024 07:23:55 +0000 Received: by mail-oi1-x22f.google.com with SMTP id 5614622812f47-3c70a55988dso1688369b6e.0 for ; Sat, 27 Apr 2024 00:23:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714202631; x=1714807431; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=X6/zlDycsKlLm9oMWJCj8T6cyudX5ggjd/VxiVnvZxs=; b=fPj90s1kPaYviNXslzpeGYeV0zY8X35YYF5pBdxXSSLRSa7zMReN4+zsIWCr675+lR XEx/h49FHSqRwzHYo5F/UkFrmtqQ88vLpf6vD1Jxkjd8B/6nOKMPSVDeA9+VSn3yQXVk 3QJfihPrnjZDBef6eTQr/saBhrcwb09htWNI+A9k/fBZupDe+LPigC3mlxQE2OghGlLG T6E5vs2AUvXbCgggBAJNL9Nr4SguIeXGiSCoYSe+E8NpBjS+6fQjMVA2OEG0JKBhYtFA 5yB3rOz4i4UxZjgmWfjKChoqpbwgSsvFeCuZwOghHdhRhf0FDA9mA2xs7rNA07VTO98z hr1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714202631; x=1714807431; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=X6/zlDycsKlLm9oMWJCj8T6cyudX5ggjd/VxiVnvZxs=; b=UnqbwuWMhJsEANWIYyBMeVuPNWU38dNYuR+7jip3QXQXbZ+RGblnfsj9OHWjT+H3zj uoSaSJL2e1iFIscFkkopXvbxevN3CJuXjZIMzGqZJfiVknyCLwN0X9nvDM/bBJMRt2CW q5zsci+kF5W6NXxC2MYH0mbjEdjMBrysGshvKOopUfSy8LCbozK7LpK0/2lLJosngl27 FP0nUWmbxb/5KywwB58RUvRXRiTY/tYIsN3u7vmvhHDiEIzW7C09QdNBQi+w0fWq8ZiX kHUgKNk7zWQ9vLjxEq+jn9TSqllTzVtC1kaLpN2GI04MlhAr/XI2QY1QfeUyexu9dRxf O2UQ== X-Forwarded-Encrypted: i=1; AJvYcCU2kB8F50QG1CxXoYQS03QQygWFhdphCOVCNmMqTB4uyronMNqXwyleBGkEQhO//FcQIUKBDVPFrvYVpdhP59jyV+Z6lPuotE2fL1vfOMgSPEktbgU= X-Gm-Message-State: AOJu0YzRyxKgjzmgAV1HBkP+Okumm1S21USVDPJo/9GQ1y4tOHwh2NG7 +AQn+wYslqjpI9PLCxODbrHo5QEDNT+qbwYeZyLDBstBEEYvByFds0REt/LXUA== X-Google-Smtp-Source: AGHT+IHfipPHYlZH0dzUMyHUrOzKZyinCxBfDMz+pa+y5kowAJsMrQzIMhjdPr+G4bo6/Uiu7Lh6tA== X-Received: by 2002:a05:6808:85:b0:3c7:4b27:57fb with SMTP id s5-20020a056808008500b003c74b2757fbmr5763377oic.29.1714202630707; Sat, 27 Apr 2024 00:23:50 -0700 (PDT) Received: from thinkpad ([120.60.53.237]) by smtp.gmail.com with ESMTPSA id i123-20020a639d81000000b005f7ff496050sm13702516pgd.76.2024.04.27.00.23.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Apr 2024 00:23:50 -0700 (PDT) Date: Sat, 27 Apr 2024 12:53:35 +0530 From: Manivannan Sadhasivam To: Andy Shevchenko Cc: Frank Li , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , linux-omap@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-tegra@vger.kernel.org, Vignesh Raghavendra , Siddharth Vadapalli , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Richard Zhu , Lucas Stach , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Yue Wang , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Xiaowei Song , Binghui Wang , Thierry Reding , Jonathan Hunter , Thomas Petazzoni , Pali =?iso-8859-1?Q?Roh=E1r?= Subject: Re: [PATCH v2 4/4] PCI: kirin: Convert to agnostic GPIO API Message-ID: <20240427072335.GC1981@thinkpad> References: <20240423172208.2723892-1-andriy.shevchenko@linux.intel.com> <20240423172208.2723892-5-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240423172208.2723892-5-andriy.shevchenko@linux.intel.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240427_002354_265791_949359ED X-CRM114-Status: GOOD ( 28.91 ) 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 T24gVHVlLCBBcHIgMjMsIDIwMjQgYXQgMDg6MTk6MDdQTSArMDMwMCwgQW5keSBTaGV2Y2hlbmtv IHdyb3RlOgo+IFRoZSBvZl9ncGlvLmggaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZC4gSW4gcHJlcGFy YXRpb24gb2YgdGhhdCBjb252ZXJ0Cj4gdGhlIGRyaXZlciB0byB0aGUgYWdub3N0aWMgQVBJLgo+ IAo+IFNpZ25lZC1vZmYtYnk6IEFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGlu dXguaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBSb2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3Jn Pgo+IC0tLQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWtpcmluLmMgfCAxMDUg KysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAzNSBpbnNlcnRpb25z KCspLCA3MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1raXJpbi5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1r aXJpbi5jCj4gaW5kZXggZDU1MjNmMzAyMTAyLi4xNzUzYWI2M2E1NDEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1raXJpbi5jCj4gKysrIGIvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpZS1raXJpbi5jCj4gQEAgLTEyLDEyICsxMiwxMCBAQAo+ICAj aW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KPiAgI2lu Y2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2ludGVycnVw dC5oPgo+ICAjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgo+ICAjaW5jbHVkZSA8bGludXgv b2YuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L29m X3BjaS5oPgo+ICAjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgo+ICAjaW5jbHVkZSA8bGludXgv cGNpLmg+Cj4gQEAgLTc4LDE2ICs3NiwxNiBAQCBzdHJ1Y3Qga2lyaW5fcGNpZSB7Cj4gIAl2b2lk CQkqcGh5X3ByaXY7CS8qIG9ubHkgZm9yIFBDSUVfS0lSSU5fSU5URVJOQUxfUEhZICovCj4gIAo+ ICAJLyogRFdDIFBFUlNUIyAqLwo+IC0JaW50CQlncGlvX2lkX2R3Y19wZXJzdDsKPiArCXN0cnVj dCBncGlvX2Rlc2MgKmlkX2R3Y19wZXJzdF9ncGlvOwo+ICAKPiAgCS8qIFBlci1zbG90IFBFUlNU IyAqLwo+ICAJaW50CQludW1fc2xvdHM7Cj4gLQlpbnQJCWdwaW9faWRfcmVzZXRbTUFYX1BDSV9T TE9UU107Cj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICppZF9yZXNldF9ncGlvW01BWF9QQ0lfU0xPVFNd Owo+ICAJY29uc3QgY2hhcgkqcmVzZXRfbmFtZXNbTUFYX1BDSV9TTE9UU107Cj4gIAo+ICAJLyog UGVyLXNsb3QgY2xrcmVxICovCj4gIAlpbnQJCW5fZ3Bpb19jbGtyZXE7Cj4gLQlpbnQJCWdwaW9f aWRfY2xrcmVxW01BWF9QQ0lfU0xPVFNdOwo+ICsJc3RydWN0IGdwaW9fZGVzYyAqaWRfY2xrcmVx X2dwaW9bTUFYX1BDSV9TTE9UU107Cj4gIAljb25zdCBjaGFyCSpjbGtyZXFfbmFtZXNbTUFYX1BD SV9TTE9UU107Cj4gIH07Cj4gIAo+IEBAIC0zODEsMTUgKzM3OSwyMCBAQCBzdGF0aWMgaW50IGtp cmluX3BjaWVfZ2V0X2dwaW9fZW5hYmxlKHN0cnVjdCBraXJpbl9wY2llICpwY2llLAo+ICAJcGNp ZS0+bl9ncGlvX2Nsa3JlcSA9IHJldDsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgcGNpZS0+bl9n cGlvX2Nsa3JlcTsgaSsrKSB7Cj4gLQkJcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV0gPSBvZl9nZXRf bmFtZWRfZ3BpbyhkZXYtPm9mX25vZGUsCj4gLQkJCQkJCSAgICAiaGlzaWxpY29uLGNsa2VuLWdw aW9zIiwgaSk7Cj4gLQkJaWYgKHBjaWUtPmdwaW9faWRfY2xrcmVxW2ldIDwgMCkKPiAtCQkJcmV0 dXJuIHBjaWUtPmdwaW9faWRfY2xrcmVxW2ldOwo+ICsJCXBjaWUtPmlkX2Nsa3JlcV9ncGlvW2ld ID0gZGV2bV9ncGlvZF9nZXRfaW5kZXgoZGV2LAo+ICsJCQkJCQkJImhpc2lsaWNvbixjbGtlbiIs IGksCj4gKwkJCQkJCQlHUElPRF9BU0lTKTsKClBsZWFzZSBkb24ndCB1c2UgR1BJT0RfQVNJUyBl dmVuIGlmIHRoZSBvbGQgY29kZSB3YXMgdXNpbmcgaXQuCgpGb3IgYWxsIDMgR1BJT3MgaW4gdGhp cyBkcml2ZXIsIEdQSU9EX09VVF9MT1cgZmxhZyBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGVmYXVs dApzdGF0ZSBpcyBhc3NlcnQgKGNvbnNpZGVyaW5nIHRoZSBmYWN0IHRoYXQgdGhlIERUIHVzZXMg R1BJT19BQ1RJVkVfSElHSCkuCgotIE1hbmkKCj4gKwkJaWYgKElTX0VSUihwY2llLT5pZF9jbGty ZXFfZ3Bpb1tpXSkpCj4gKwkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwY2ll LT5pZF9jbGtyZXFfZ3Bpb1tpXSksCj4gKwkJCQkJICAgICAidW5hYmxlIHRvIGdldCBhIHZhbGlk IGNsa2VuIGdwaW9cbiIpOwo+ICAKPiAgCQlwY2llLT5jbGtyZXFfbmFtZXNbaV0gPSBkZXZtX2th c3ByaW50ZihkZXYsIEdGUF9LRVJORUwsCj4gIAkJCQkJCSAgICAgICAicGNpZV9jbGtyZXFfJWQi LCBpKTsKPiAgCQlpZiAoIXBjaWUtPmNsa3JlcV9uYW1lc1tpXSkKPiAgCQkJcmV0dXJuIC1FTk9N RU07Cj4gKwo+ICsJCWdwaW9kX3NldF9jb25zdW1lcl9uYW1lKHBjaWUtPmlkX2Nsa3JlcV9ncGlv W2ldLAo+ICsJCQkJCXBjaWUtPmNsa3JlcV9uYW1lc1tpXSk7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJu IDA7Cj4gQEAgLTQwNywxMCArNDEwLDE2IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9wYXJzZV9w b3J0KHN0cnVjdCBraXJpbl9wY2llICpwY2llLAo+ICAJCWZvcl9lYWNoX2F2YWlsYWJsZV9jaGls ZF9vZl9ub2RlKHBhcmVudCwgY2hpbGQpIHsKPiAgCQkJaSA9IHBjaWUtPm51bV9zbG90czsKPiAg Cj4gLQkJCXBjaWUtPmdwaW9faWRfcmVzZXRbaV0gPSBvZl9nZXRfbmFtZWRfZ3BpbyhjaGlsZCwK PiAtCQkJCQkJCSJyZXNldC1ncGlvcyIsIDApOwo+IC0JCQlpZiAocGNpZS0+Z3Bpb19pZF9yZXNl dFtpXSA8IDApCj4gLQkJCQljb250aW51ZTsKPiArCQkJcGNpZS0+aWRfcmVzZXRfZ3Bpb1tpXSA9 IGRldm1fZndub2RlX2dwaW9kX2dldF9pbmRleChkZXYsCj4gKwkJCQkJCQkgb2ZfZndub2RlX2hh bmRsZShjaGlsZCksCj4gKwkJCQkJCQkgInJlc2V0IiwgMCwgR1BJT0RfQVNJUywKPiArCQkJCQkJ CSBOVUxMKTsKPiArCQkJaWYgKElTX0VSUihwY2llLT5pZF9yZXNldF9ncGlvW2ldKSkgewo+ICsJ CQkJaWYgKFBUUl9FUlIocGNpZS0+aWRfcmVzZXRfZ3Bpb1tpXSkgPT0gLUVOT0VOVCkKPiArCQkJ CQljb250aW51ZTsKPiArCQkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwY2ll LT5pZF9yZXNldF9ncGlvW2ldKSwKPiArCQkJCQkJICAgICAidW5hYmxlIHRvIGdldCBhIHZhbGlk IHJlc2V0IGdwaW9cbiIpOwo+ICsJCQl9Cj4gIAo+ICAJCQlwY2llLT5udW1fc2xvdHMrKzsKPiAg CQkJaWYgKHBjaWUtPm51bV9zbG90cyA+IE1BWF9QQ0lfU0xPVFMpIHsKPiBAQCAtNDM0LDYgKzQ0 Myw5IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9wYXJzZV9wb3J0KHN0cnVjdCBraXJpbl9wY2ll ICpwY2llLAo+ICAJCQkJcmV0ID0gLUVOT01FTTsKPiAgCQkJCWdvdG8gcHV0X25vZGU7Cj4gIAkJ CX0KPiArCj4gKwkJCWdwaW9kX3NldF9jb25zdW1lcl9uYW1lKHBjaWUtPmlkX3Jlc2V0X2dwaW9b aV0sCj4gKwkJCQkJCXBjaWUtPnJlc2V0X25hbWVzW2ldKTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBA IC00NjMsMTQgKzQ3NSwxMSBAQCBzdGF0aWMgbG9uZyBraXJpbl9wY2llX2dldF9yZXNvdXJjZShz dHJ1Y3Qga2lyaW5fcGNpZSAqa2lyaW5fcGNpZSwKPiAgCQlyZXR1cm4gUFRSX0VSUihraXJpbl9w Y2llLT5hcGIpOwo+ICAKPiAgCS8qIHBjaWUgaW50ZXJuYWwgUEVSU1QjIGdwaW8gKi8KPiAtCWtp cmluX3BjaWUtPmdwaW9faWRfZHdjX3BlcnN0ID0gb2ZfZ2V0X25hbWVkX2dwaW8oZGV2LT5vZl9u b2RlLAo+IC0JCQkJCQkJICAicmVzZXQtZ3Bpb3MiLCAwKTsKPiAtCWlmIChraXJpbl9wY2llLT5n cGlvX2lkX2R3Y19wZXJzdCA9PSAtRVBST0JFX0RFRkVSKSB7Cj4gLQkJcmV0dXJuIC1FUFJPQkVf REVGRVI7Cj4gLQl9IGVsc2UgaWYgKCFncGlvX2lzX3ZhbGlkKGtpcmluX3BjaWUtPmdwaW9faWRf ZHdjX3BlcnN0KSkgewo+IC0JCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGdldCBhIHZhbGlkIGdw aW8gcGluXG4iKTsKPiAtCQlyZXR1cm4gLUVOT0RFVjsKPiAtCX0KPiArCWtpcmluX3BjaWUtPmlk X2R3Y19wZXJzdF9ncGlvID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAicmVzZXQiLCBHUElPRF9BU0lT KTsKPiArCWlmIChJU19FUlIoa2lyaW5fcGNpZS0+aWRfZHdjX3BlcnN0X2dwaW8pKQo+ICsJCXJl dHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihraXJpbl9wY2llLT5pZF9kd2NfcGVyc3Rf Z3BpbyksCj4gKwkJCQkgICAgICJ1bmFibGUgdG8gZ2V0IGEgdmFsaWQgZ3BpbyBwaW5cbiIpOwo+ ICsJZ3Bpb2Rfc2V0X2NvbnN1bWVyX25hbWUoa2lyaW5fcGNpZS0+aWRfZHdjX3BlcnN0X2dwaW8s ICJwY2llX3BlcnN0X2JyaWRnZSIpOwo+ICAKPiAgCXJldCA9IGtpcmluX3BjaWVfZ2V0X2dwaW9f ZW5hYmxlKGtpcmluX3BjaWUsIHBkZXYpOwo+ICAJaWYgKHJldCkKPiBAQCAtNTUzLDcgKzU2Miw3 IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9hZGRfYnVzKHN0cnVjdCBwY2lfYnVzICpidXMpCj4g IAo+ICAJLyogU2VuZCBQRVJTVCMgdG8gZWFjaCBzbG90ICovCj4gIAlmb3IgKGkgPSAwOyBpIDwg a2lyaW5fcGNpZS0+bnVtX3Nsb3RzOyBpKyspIHsKPiAtCQlyZXQgPSBncGlvX2RpcmVjdGlvbl9v dXRwdXQoa2lyaW5fcGNpZS0+Z3Bpb19pZF9yZXNldFtpXSwgMSk7Cj4gKwkJcmV0ID0gZ3Bpb2Rf ZGlyZWN0aW9uX291dHB1dF9yYXcoa2lyaW5fcGNpZS0+aWRfcmVzZXRfZ3Bpb1tpXSwgMSk7Cj4g IAkJaWYgKHJldCkgewo+ICAJCQlkZXZfZXJyKHBjaS0+ZGV2LCAiUEVSU1QjICVzIGVycm9yOiAl ZFxuIiwKPiAgCQkJCWtpcmluX3BjaWUtPnJlc2V0X25hbWVzW2ldLCByZXQpOwo+IEBAIC02MjMs NDQgKzYzMiw2IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9ob3N0X2luaXQoc3RydWN0IGR3X3Bj aWVfcnAgKnBwKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQga2lyaW5fcGNp ZV9ncGlvX3JlcXVlc3Qoc3RydWN0IGtpcmluX3BjaWUgKmtpcmluX3BjaWUsCj4gLQkJCQkgICBz dHJ1Y3QgZGV2aWNlICpkZXYpCj4gLXsKPiAtCWludCByZXQsIGk7Cj4gLQo+IC0JZm9yIChpID0g MDsgaSA8IGtpcmluX3BjaWUtPm51bV9zbG90czsgaSsrKSB7Cj4gLQkJaWYgKCFncGlvX2lzX3Zh bGlkKGtpcmluX3BjaWUtPmdwaW9faWRfcmVzZXRbaV0pKSB7Cj4gLQkJCWRldl9lcnIoZGV2LCAi dW5hYmxlIHRvIGdldCBhIHZhbGlkICVzIGdwaW9cbiIsCj4gLQkJCQlraXJpbl9wY2llLT5yZXNl dF9uYW1lc1tpXSk7Cj4gLQkJCXJldHVybiAtRU5PREVWOwo+IC0JCX0KPiAtCj4gLQkJcmV0ID0g ZGV2bV9ncGlvX3JlcXVlc3QoZGV2LCBraXJpbl9wY2llLT5ncGlvX2lkX3Jlc2V0W2ldLAo+IC0J CQkJCWtpcmluX3BjaWUtPnJlc2V0X25hbWVzW2ldKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1 cm4gcmV0Owo+IC0JfQo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBraXJpbl9wY2llLT5uX2dwaW9f Y2xrcmVxOyBpKyspIHsKPiAtCQlpZiAoIWdwaW9faXNfdmFsaWQoa2lyaW5fcGNpZS0+Z3Bpb19p ZF9jbGtyZXFbaV0pKSB7Cj4gLQkJCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGdldCBhIHZhbGlk ICVzIGdwaW9cbiIsCj4gLQkJCQlraXJpbl9wY2llLT5jbGtyZXFfbmFtZXNbaV0pOwo+IC0JCQly ZXR1cm4gLUVOT0RFVjsKPiAtCQl9Cj4gLQo+IC0JCXJldCA9IGRldm1fZ3Bpb19yZXF1ZXN0KGRl diwga2lyaW5fcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV0sCj4gLQkJCQkJa2lyaW5fcGNpZS0+Y2xr cmVxX25hbWVzW2ldKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0KPiAtCQly ZXQgPSBncGlvX2RpcmVjdGlvbl9vdXRwdXQoa2lyaW5fcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV0s IDApOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJu IDA7Cj4gLX0KPiAtCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdfcGNpZV9vcHMga2lyaW5fZHdf cGNpZV9vcHMgPSB7Cj4gIAkucmVhZF9kYmkgPSBraXJpbl9wY2llX3JlYWRfZGJpLAo+ICAJLndy aXRlX2RiaSA9IGtpcmluX3BjaWVfd3JpdGVfZGJpLAo+IEBAIC02ODAsNyArNjUxLDcgQEAgc3Rh dGljIGludCBraXJpbl9wY2llX3Bvd2VyX29mZihzdHJ1Y3Qga2lyaW5fcGNpZSAqa2lyaW5fcGNp ZSkKPiAgCQlyZXR1cm4gaGkzNjYwX3BjaWVfcGh5X3Bvd2VyX29mZihraXJpbl9wY2llKTsKPiAg Cj4gIAlmb3IgKGkgPSAwOyBpIDwga2lyaW5fcGNpZS0+bl9ncGlvX2Nsa3JlcTsgaSsrKQo+IC0J CWdwaW9fZGlyZWN0aW9uX291dHB1dChraXJpbl9wY2llLT5ncGlvX2lkX2Nsa3JlcVtpXSwgMSk7 Cj4gKwkJZ3Bpb2RfZGlyZWN0aW9uX291dHB1dF9yYXcoa2lyaW5fcGNpZS0+aWRfY2xrcmVxX2dw aW9baV0sIDEpOwo+ICAKPiAgCXBoeV9wb3dlcl9vZmYoa2lyaW5fcGNpZS0+cGh5KTsKPiAgCXBo eV9leGl0KGtpcmluX3BjaWUtPnBoeSk7Cj4gQEAgLTcwNywxMCArNjc4LDYgQEAgc3RhdGljIGlu dCBraXJpbl9wY2llX3Bvd2VyX29uKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4gIAkJ aWYgKElTX0VSUihraXJpbl9wY2llLT5waHkpKQo+ICAJCQlyZXR1cm4gUFRSX0VSUihraXJpbl9w Y2llLT5waHkpOwo+ICAKPiAtCQlyZXQgPSBraXJpbl9wY2llX2dwaW9fcmVxdWVzdChraXJpbl9w Y2llLCBkZXYpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gLQo+ICAJCXJldCA9 IHBoeV9pbml0KGtpcmluX3BjaWUtPnBoeSk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJZ290byBlcnI7 Cj4gQEAgLTcyMywxMSArNjkwLDkgQEAgc3RhdGljIGludCBraXJpbl9wY2llX3Bvd2VyX29uKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4gIAkvKiBwZXJzdCBhc3NlcnQgRW5kcG9pbnQg Ki8KPiAgCXVzbGVlcF9yYW5nZShSRUZfMl9QRVJTVF9NSU4sIFJFRl8yX1BFUlNUX01BWCk7Cj4g IAo+IC0JaWYgKCFncGlvX3JlcXVlc3Qoa2lyaW5fcGNpZS0+Z3Bpb19pZF9kd2NfcGVyc3QsICJw Y2llX3BlcnN0X2JyaWRnZSIpKSB7Cj4gLQkJcmV0ID0gZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KGtp cmluX3BjaWUtPmdwaW9faWRfZHdjX3BlcnN0LCAxKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlnb3Rv IGVycjsKPiAtCX0KPiArCXJldCA9IGdwaW9kX2RpcmVjdGlvbl9vdXRwdXRfcmF3KGtpcmluX3Bj aWUtPmlkX2R3Y19wZXJzdF9ncGlvLCAxKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBlcnI7Cj4g IAo+ICAJdXNsZWVwX3JhbmdlKFBFUlNUXzJfQUNDRVNTX01JTiwgUEVSU1RfMl9BQ0NFU1NfTUFY KTsKPiAgCj4gLS0gCj4gMi40My4wLnJjMS4xMzM2LmczNmI1MjU1YTAzYWMKPiAKCi0tIArgrq7g rqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==