From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (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 763AD17584 for ; Tue, 30 Apr 2024 05:16:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714454177; cv=none; b=eLCPkB5PqPW8CR8zHcp5CxBd9CFkhGBC6ijJyFLDCoh4cQkD5YREdlyw1kNOpjUSHs5d3KiHpUUxUICtth6TA3T8BSXtAV8ph6rEI+ZSqUHlubrwZbAUMaRnxcG26seuFR+1SNRceN4sUq95v7CHGIhGmb1yKNTEmUHpvsOYEAI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714454177; c=relaxed/simple; bh=bCkBpn/Vh2Kt4bDBmzkaG2zkzavinVKs6L0yROp2qXA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=eOdt7XL9U5SW+5VzHjbaCIQ6N8+CScBJiiwjnt9YyzbohI4O/QLNdWhxGETNiXR5s1VYSR69oZlD/msFKVjsEM+BDt32rP78s2wTVxnu0dQ1U03PRmBkg5MvJbGaF75f3l/LteiSxty2gtcwW1sHTCixKgP1Yzbk6eSmi5Pc2fQ= 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=sFfky+jQ; arc=none smtp.client-ip=209.85.210.176 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="sFfky+jQ" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-6f28bb6d747so4475626b3a.3 for ; Mon, 29 Apr 2024 22:16:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714454175; x=1715058975; 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=5ynejgaDnZjcmZfXmFDrndip2YGb6tAWR1lBuHbKqsw=; b=sFfky+jQIcy/RX3xFfj2TwpenvDIGYIXwKN1clgcQGKgfeutBcT3VbO7n1gaqxkw+X J/NMDlbghArTXIvzKhwQyGTD6A5ahphdw29lAkhvBajD7yj1uQrliuvD+rH8FZCkaJWa Nla9HOg36fMI69NRx02x5RaAUXeWJiQ55a51HR/+MvhA2e4BhVs/IKGayvebAeS2/NSK sWdW8wIIc+EPU8mKPheltUaaHRhLRm+/uPbcpT42F1rLFW3XldMz2BvcLgov9kCAwRQL GFt/+z613rvuAkzS02wNls38l0GNR7049RyNlX388gLTKxAGRyWKB7m0jCy0aZNdsUCq sLeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714454175; x=1715058975; 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=5ynejgaDnZjcmZfXmFDrndip2YGb6tAWR1lBuHbKqsw=; b=iWMMpkF+W7ASDXwG+oxj6MgrwrZu5QmUyX96dmaK8ul8kih7zHvj1/IiKJm8AkpHzW jAga6r+1Z8lPita460QvJ98TjzcVdRkAJoM0/w24sB/sbL1UM1OpqPDeNz+aYkh1UC0U IMiIKtCECOAvHesLzxbPcdpaoJ1y9eJ+/AvAF5nyyb3lFcTPmdAD5+Igt1NuRrbmIiJg 5UAywqe+CviR1fWtHhQLKnp+qblWQURjymhcJgO2d7pwYZmSfCJxsXhFe+x4wc2LwNyv aoOaAS6mDyD2R+ku2rcgh+DHBN78NREaAsSC+c40xAmhEgIgU9L1cF0CMXzmamWCn4Hc M5vg== X-Forwarded-Encrypted: i=1; AJvYcCVX/D9oaR6KP/r7cgIS0ENutKB1pqiilmtDUhHt99shopjxr5joNT+4/atBY5lL4ooXmWOpALk7UexRzTYlT13aZ1fw X-Gm-Message-State: AOJu0YxcDKZfz7QnPCIqzFF5gArMdbbLvVU39L+H3cfN0YeDwcUJjcV4 gDGe0EjNvnC78omK9cF8EVQgG4eXQdCrN4iCYJgPWJpb1A0K0rwseMbzcmsXMw== X-Google-Smtp-Source: AGHT+IGeASrZZdOKkLRwqMeew25lnfW2E16O02bRTclJxxqzXXmg/MPOAdDxiUpkYBPU/+iJ5ms0XA== X-Received: by 2002:a05:6a20:12cf:b0:1a9:6cdd:6907 with SMTP id v15-20020a056a2012cf00b001a96cdd6907mr14733071pzg.29.1714454174430; Mon, 29 Apr 2024 22:16:14 -0700 (PDT) Received: from thinkpad ([220.158.156.15]) by smtp.gmail.com with ESMTPSA id e5-20020a170902cf4500b001e2c1ce5bb0sm21409980plg.83.2024.04.29.22.16.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Apr 2024 22:16:14 -0700 (PDT) Date: Tue, 30 Apr 2024 10:46:04 +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 v3 5/5] PCI: kirin: Convert to agnostic GPIO API Message-ID: <20240430051604.GA3301@thinkpad> References: <20240429102510.2665280-1-andriy.shevchenko@linux.intel.com> <20240429102510.2665280-6-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: <20240429102510.2665280-6-andriy.shevchenko@linux.intel.com> On Mon, Apr 29, 2024 at 01:23:22PM +0300, Andy Shevchenko wrote: > The of_gpio.h is going to be removed. In preparation of that convert > the driver to the agnostic API. > > Reviewed-by: Rob Herring > Signed-off-by: Andy Shevchenko Reviewed-by: Manivannan Sadhasivam - Mani > --- > 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..d1f54f188e71 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_OUT_LOW); > + 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_OUT_LOW, > + 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_OUT_LOW); > + 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 68201C41513 for ; Tue, 30 Apr 2024 05:16:32 +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=u+yuE1tqRB2w+OB5Hq6TaPy1ROjSb8VVOlW6ztcqplQ=; b=J2LqPWhMgqZRXP s2un+467/ndzvESQm7WEgsqgo2J/9qOXYpxBsGVY+UCOnS7tPBeDXkBGvnEnO5LFvpWka3kj7h09E Dx3yReSn+pWhGM50GP/vHGh76c08egz+V7BWcDFlJG1q4+JXAF8EDuc0aHuWDbnZkGQgK04l+Cfol yuqPnAMAvWc7NPgL+yD+H1rs2+YFhypbZ4PCcNfVbwXpyULV+KHO5p4NT1iGU2qIm55gAN/cPXzbX UJkvbXLZ0KFTQwkSh9kP4JpD5cdYxlDcn2yrftoOzmHmhhaZy8LYH45eVad7hl469ksOp1U3MkLWJ pLgAyDidd2OXWJgzeY1g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s1fqo-000000058Qi-1sos; Tue, 30 Apr 2024 05:16:22 +0000 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s1fql-000000058PW-3EYi for linux-amlogic@lists.infradead.org; Tue, 30 Apr 2024 05:16:21 +0000 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-5ff57410ebbso3894372a12.1 for ; Mon, 29 Apr 2024 22:16:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714454175; x=1715058975; 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=5ynejgaDnZjcmZfXmFDrndip2YGb6tAWR1lBuHbKqsw=; b=gKj1ewtDFWZ9b3qUe7+hRF4vgJ+n2vmX97ZPSgtCctkNuXRK30OsUfIviouf0L1eQp vm6FtI+6CxnMHmEKUnptJLJ5MGwlx6LJt8wldgoCGu9HsgPtgRBmaEyK/ZWpQV4wIwEb hmSt9U7yxqxgDgAmXuwRG68JwN0jdHWaTw7KTVDG5VTQcOjx6uY9p7gf78XfWwKmWA/Z Z1eJC5iaYzHCYte3jaI4u8E0TLushquSe9HMAvAEUfBBdaMUg6G89zpZNmu07tEeNA6d mzqrA7M/YHDwGEMKfnTscO6Wfb1In3Mqk5U1LSLIAMkjfrCUdsNgMfMi5jdy2GsW0c9G IBxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714454175; x=1715058975; 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=5ynejgaDnZjcmZfXmFDrndip2YGb6tAWR1lBuHbKqsw=; b=CuviwLd4KQEdTrlOVInNbfoTlRGVg5L8pZaJ0HoFhZ6oliKvtRCTDRe53W8S4FpmOU Bd5Kr1HBo6QUktipuT08ObdpXTDdatmSQgnfednpETcfhelM6b4t3+1XwS6pDWXCXyTF 84aIRYcKYWqBoKswhbXWueVfwlK/6ZpdFM5Jmt5Ff2mJ0sFSJ5HG3gEYBDpQoDX2sU8X McaYEnXd/uaaT5M/lUYlPUN1bmuLylIEjFrE5TD34ZhYPW5M+x80CVQEywZ4gLZ1iv1s i89xRJssPVQGK/+huECIGTRU1zG2EWMxHd/Ys7hrmZaCt6FUaIKg8ZwEehfuLUTprwwb F5Wg== X-Forwarded-Encrypted: i=1; AJvYcCV19KkW72zvnJK6CjzPRIPZPIw6LFX5JiTmT+2BDGYLnGxIF877PzIe2Qavug0P/uFHjsYPB7l6DQq9Hhc6nY66d9MWb74cbx/TCXIvB2lJN/E= X-Gm-Message-State: AOJu0YwHxEo/Uz3i9WnwE+I7QEY0ZzfWuvH/JMXPwdzsl26BhbYimgi+ HBtsLRh1eTjn160cSOG7DHMOdzb8CsEYp86lE++KsEQuM4aeVdtL0IbCjrSOEg== X-Google-Smtp-Source: AGHT+IGeASrZZdOKkLRwqMeew25lnfW2E16O02bRTclJxxqzXXmg/MPOAdDxiUpkYBPU/+iJ5ms0XA== X-Received: by 2002:a05:6a20:12cf:b0:1a9:6cdd:6907 with SMTP id v15-20020a056a2012cf00b001a96cdd6907mr14733071pzg.29.1714454174430; Mon, 29 Apr 2024 22:16:14 -0700 (PDT) Received: from thinkpad ([220.158.156.15]) by smtp.gmail.com with ESMTPSA id e5-20020a170902cf4500b001e2c1ce5bb0sm21409980plg.83.2024.04.29.22.16.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Apr 2024 22:16:14 -0700 (PDT) Date: Tue, 30 Apr 2024 10:46:04 +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 v3 5/5] PCI: kirin: Convert to agnostic GPIO API Message-ID: <20240430051604.GA3301@thinkpad> References: <20240429102510.2665280-1-andriy.shevchenko@linux.intel.com> <20240429102510.2665280-6-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240429102510.2665280-6-andriy.shevchenko@linux.intel.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240429_221619_828612_773C32C7 X-CRM114-Status: GOOD ( 26.59 ) 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 T24gTW9uLCBBcHIgMjksIDIwMjQgYXQgMDE6MjM6MjJQTSArMDMwMCwgQW5keSBTaGV2Y2hlbmtv IHdyb3RlOgo+IFRoZSBvZl9ncGlvLmggaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZC4gSW4gcHJlcGFy YXRpb24gb2YgdGhhdCBjb252ZXJ0Cj4gdGhlIGRyaXZlciB0byB0aGUgYWdub3N0aWMgQVBJLgo+ IAo+IFJldmlld2VkLWJ5OiBSb2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3JnPgo+IFNpZ25lZC1v ZmYtYnk6IEFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29t PgoKUmV2aWV3ZWQtYnk6IE1hbml2YW5uYW4gU2FkaGFzaXZhbSA8bWFuaXZhbm5hbi5zYWRoYXNp dmFtQGxpbmFyby5vcmc+CgotIE1hbmkKCj4gLS0tCj4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIv ZHdjL3BjaWUta2lyaW4uYyB8IDEwNSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxl IGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWtpcmluLmMgYi9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL2R3Yy9wY2llLWtpcmluLmMKPiBpbmRleCBkNTUyM2YzMDIxMDIuLmQxZjU0 ZjE4OGU3MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWtp cmluLmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWtpcmluLmMKPiBA QCAtMTIsMTIgKzEyLDEwIEBACj4gICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgo+ICAjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+IC0jaW5jbHVk ZSA8bGludXgvZ3Bpby5oPgo+ICAjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgo+ICAj aW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29u Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9vZi5oPgo+IC0jaW5jbHVkZSA8bGludXgvb2ZfZ3Bpby5o Pgo+ICAjaW5jbHVkZSA8bGludXgvb2ZfcGNpLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9waHkvcGh5 Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiBAQCAtNzgsMTYgKzc2LDE2IEBAIHN0cnVj dCBraXJpbl9wY2llIHsKPiAgCXZvaWQJCSpwaHlfcHJpdjsJLyogb25seSBmb3IgUENJRV9LSVJJ Tl9JTlRFUk5BTF9QSFkgKi8KPiAgCj4gIAkvKiBEV0MgUEVSU1QjICovCj4gLQlpbnQJCWdwaW9f aWRfZHdjX3BlcnN0Owo+ICsJc3RydWN0IGdwaW9fZGVzYyAqaWRfZHdjX3BlcnN0X2dwaW87Cj4g IAo+ICAJLyogUGVyLXNsb3QgUEVSU1QjICovCj4gIAlpbnQJCW51bV9zbG90czsKPiAtCWludAkJ Z3Bpb19pZF9yZXNldFtNQVhfUENJX1NMT1RTXTsKPiArCXN0cnVjdCBncGlvX2Rlc2MgKmlkX3Jl c2V0X2dwaW9bTUFYX1BDSV9TTE9UU107Cj4gIAljb25zdCBjaGFyCSpyZXNldF9uYW1lc1tNQVhf UENJX1NMT1RTXTsKPiAgCj4gIAkvKiBQZXItc2xvdCBjbGtyZXEgKi8KPiAgCWludAkJbl9ncGlv X2Nsa3JlcTsKPiAtCWludAkJZ3Bpb19pZF9jbGtyZXFbTUFYX1BDSV9TTE9UU107Cj4gKwlzdHJ1 Y3QgZ3Bpb19kZXNjICppZF9jbGtyZXFfZ3Bpb1tNQVhfUENJX1NMT1RTXTsKPiAgCWNvbnN0IGNo YXIJKmNsa3JlcV9uYW1lc1tNQVhfUENJX1NMT1RTXTsKPiAgfTsKPiAgCj4gQEAgLTM4MSwxNSAr Mzc5LDIwIEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9nZXRfZ3Bpb19lbmFibGUoc3RydWN0IGtp cmluX3BjaWUgKnBjaWUsCj4gIAlwY2llLT5uX2dwaW9fY2xrcmVxID0gcmV0Owo+ICAKPiAgCWZv ciAoaSA9IDA7IGkgPCBwY2llLT5uX2dwaW9fY2xrcmVxOyBpKyspIHsKPiAtCQlwY2llLT5ncGlv X2lkX2Nsa3JlcVtpXSA9IG9mX2dldF9uYW1lZF9ncGlvKGRldi0+b2Zfbm9kZSwKPiAtCQkJCQkJ ICAgICJoaXNpbGljb24sY2xrZW4tZ3Bpb3MiLCBpKTsKPiAtCQlpZiAocGNpZS0+Z3Bpb19pZF9j bGtyZXFbaV0gPCAwKQo+IC0JCQlyZXR1cm4gcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV07Cj4gKwkJ cGNpZS0+aWRfY2xrcmVxX2dwaW9baV0gPSBkZXZtX2dwaW9kX2dldF9pbmRleChkZXYsCj4gKwkJ CQkJCQkiaGlzaWxpY29uLGNsa2VuIiwgaSwKPiArCQkJCQkJCUdQSU9EX09VVF9MT1cpOwo+ICsJ CWlmIChJU19FUlIocGNpZS0+aWRfY2xrcmVxX2dwaW9baV0pKQo+ICsJCQlyZXR1cm4gZGV2X2Vy cl9wcm9iZShkZXYsIFBUUl9FUlIocGNpZS0+aWRfY2xrcmVxX2dwaW9baV0pLAo+ICsJCQkJCSAg ICAgInVuYWJsZSB0byBnZXQgYSB2YWxpZCBjbGtlbiBncGlvXG4iKTsKPiAgCj4gIAkJcGNpZS0+ Y2xrcmVxX25hbWVzW2ldID0gZGV2bV9rYXNwcmludGYoZGV2LCBHRlBfS0VSTkVMLAo+ICAJCQkJ CQkgICAgICAgInBjaWVfY2xrcmVxXyVkIiwgaSk7Cj4gIAkJaWYgKCFwY2llLT5jbGtyZXFfbmFt ZXNbaV0pCj4gIAkJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCQlncGlvZF9zZXRfY29uc3VtZXJf bmFtZShwY2llLT5pZF9jbGtyZXFfZ3Bpb1tpXSwKPiArCQkJCQlwY2llLT5jbGtyZXFfbmFtZXNb aV0pOwo+ICAJfQo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC00MDcsMTAgKzQxMCwxNiBAQCBzdGF0 aWMgaW50IGtpcmluX3BjaWVfcGFyc2VfcG9ydChzdHJ1Y3Qga2lyaW5fcGNpZSAqcGNpZSwKPiAg CQlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShwYXJlbnQsIGNoaWxkKSB7Cj4gIAkJ CWkgPSBwY2llLT5udW1fc2xvdHM7Cj4gIAo+IC0JCQlwY2llLT5ncGlvX2lkX3Jlc2V0W2ldID0g b2ZfZ2V0X25hbWVkX2dwaW8oY2hpbGQsCj4gLQkJCQkJCQkicmVzZXQtZ3Bpb3MiLCAwKTsKPiAt CQkJaWYgKHBjaWUtPmdwaW9faWRfcmVzZXRbaV0gPCAwKQo+IC0JCQkJY29udGludWU7Cj4gKwkJ CXBjaWUtPmlkX3Jlc2V0X2dwaW9baV0gPSBkZXZtX2Z3bm9kZV9ncGlvZF9nZXRfaW5kZXgoZGV2 LAo+ICsJCQkJCQkJIG9mX2Z3bm9kZV9oYW5kbGUoY2hpbGQpLAo+ICsJCQkJCQkJICJyZXNldCIs IDAsIEdQSU9EX09VVF9MT1csCj4gKwkJCQkJCQkgTlVMTCk7Cj4gKwkJCWlmIChJU19FUlIocGNp ZS0+aWRfcmVzZXRfZ3Bpb1tpXSkpIHsKPiArCQkJCWlmIChQVFJfRVJSKHBjaWUtPmlkX3Jlc2V0 X2dwaW9baV0pID09IC1FTk9FTlQpCj4gKwkJCQkJY29udGludWU7Cj4gKwkJCQlyZXR1cm4gZGV2 X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGNpZS0+aWRfcmVzZXRfZ3Bpb1tpXSksCj4gKwkJCQkJ CSAgICAgInVuYWJsZSB0byBnZXQgYSB2YWxpZCByZXNldCBncGlvXG4iKTsKPiArCQkJfQo+ICAK PiAgCQkJcGNpZS0+bnVtX3Nsb3RzKys7Cj4gIAkJCWlmIChwY2llLT5udW1fc2xvdHMgPiBNQVhf UENJX1NMT1RTKSB7Cj4gQEAgLTQzNCw2ICs0NDMsOSBAQCBzdGF0aWMgaW50IGtpcmluX3BjaWVf cGFyc2VfcG9ydChzdHJ1Y3Qga2lyaW5fcGNpZSAqcGNpZSwKPiAgCQkJCXJldCA9IC1FTk9NRU07 Cj4gIAkJCQlnb3RvIHB1dF9ub2RlOwo+ICAJCQl9Cj4gKwo+ICsJCQlncGlvZF9zZXRfY29uc3Vt ZXJfbmFtZShwY2llLT5pZF9yZXNldF9ncGlvW2ldLAo+ICsJCQkJCQlwY2llLT5yZXNldF9uYW1l c1tpXSk7Cj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAtNDYzLDE0ICs0NzUsMTEgQEAgc3RhdGljIGxv bmcga2lyaW5fcGNpZV9nZXRfcmVzb3VyY2Uoc3RydWN0IGtpcmluX3BjaWUgKmtpcmluX3BjaWUs Cj4gIAkJcmV0dXJuIFBUUl9FUlIoa2lyaW5fcGNpZS0+YXBiKTsKPiAgCj4gIAkvKiBwY2llIGlu dGVybmFsIFBFUlNUIyBncGlvICovCj4gLQlraXJpbl9wY2llLT5ncGlvX2lkX2R3Y19wZXJzdCA9 IG9mX2dldF9uYW1lZF9ncGlvKGRldi0+b2Zfbm9kZSwKPiAtCQkJCQkJCSAgInJlc2V0LWdwaW9z IiwgMCk7Cj4gLQlpZiAoa2lyaW5fcGNpZS0+Z3Bpb19pZF9kd2NfcGVyc3QgPT0gLUVQUk9CRV9E RUZFUikgewo+IC0JCXJldHVybiAtRVBST0JFX0RFRkVSOwo+IC0JfSBlbHNlIGlmICghZ3Bpb19p c192YWxpZChraXJpbl9wY2llLT5ncGlvX2lkX2R3Y19wZXJzdCkpIHsKPiAtCQlkZXZfZXJyKGRl diwgInVuYWJsZSB0byBnZXQgYSB2YWxpZCBncGlvIHBpblxuIik7Cj4gLQkJcmV0dXJuIC1FTk9E RVY7Cj4gLQl9Cj4gKwlraXJpbl9wY2llLT5pZF9kd2NfcGVyc3RfZ3BpbyA9IGRldm1fZ3Bpb2Rf Z2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7Cj4gKwlpZiAoSVNfRVJSKGtpcmluX3Bj aWUtPmlkX2R3Y19wZXJzdF9ncGlvKSkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBU Ul9FUlIoa2lyaW5fcGNpZS0+aWRfZHdjX3BlcnN0X2dwaW8pLAo+ICsJCQkJICAgICAidW5hYmxl IHRvIGdldCBhIHZhbGlkIGdwaW8gcGluXG4iKTsKPiArCWdwaW9kX3NldF9jb25zdW1lcl9uYW1l KGtpcmluX3BjaWUtPmlkX2R3Y19wZXJzdF9ncGlvLCAicGNpZV9wZXJzdF9icmlkZ2UiKTsKPiAg Cj4gIAlyZXQgPSBraXJpbl9wY2llX2dldF9ncGlvX2VuYWJsZShraXJpbl9wY2llLCBwZGV2KTsK PiAgCWlmIChyZXQpCj4gQEAgLTU1Myw3ICs1NjIsNyBAQCBzdGF0aWMgaW50IGtpcmluX3BjaWVf YWRkX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqYnVzKQo+ICAKPiAgCS8qIFNlbmQgUEVSU1QjIHRvIGVh Y2ggc2xvdCAqLwo+ICAJZm9yIChpID0gMDsgaSA8IGtpcmluX3BjaWUtPm51bV9zbG90czsgaSsr KSB7Cj4gLQkJcmV0ID0gZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KGtpcmluX3BjaWUtPmdwaW9faWRf cmVzZXRbaV0sIDEpOwo+ICsJCXJldCA9IGdwaW9kX2RpcmVjdGlvbl9vdXRwdXRfcmF3KGtpcmlu X3BjaWUtPmlkX3Jlc2V0X2dwaW9baV0sIDEpOwo+ICAJCWlmIChyZXQpIHsKPiAgCQkJZGV2X2Vy cihwY2ktPmRldiwgIlBFUlNUIyAlcyBlcnJvcjogJWRcbiIsCj4gIAkJCQlraXJpbl9wY2llLT5y ZXNldF9uYW1lc1tpXSwgcmV0KTsKPiBAQCAtNjIzLDQ0ICs2MzIsNiBAQCBzdGF0aWMgaW50IGtp cmluX3BjaWVfaG9zdF9pbml0KHN0cnVjdCBkd19wY2llX3JwICpwcCkKPiAgCXJldHVybiAwOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGtpcmluX3BjaWVfZ3Bpb19yZXF1ZXN0KHN0cnVjdCBraXJp bl9wY2llICpraXJpbl9wY2llLAo+IC0JCQkJICAgc3RydWN0IGRldmljZSAqZGV2KQo+IC17Cj4g LQlpbnQgcmV0LCBpOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBraXJpbl9wY2llLT5udW1fc2xv dHM7IGkrKykgewo+IC0JCWlmICghZ3Bpb19pc192YWxpZChraXJpbl9wY2llLT5ncGlvX2lkX3Jl c2V0W2ldKSkgewo+IC0JCQlkZXZfZXJyKGRldiwgInVuYWJsZSB0byBnZXQgYSB2YWxpZCAlcyBn cGlvXG4iLAo+IC0JCQkJa2lyaW5fcGNpZS0+cmVzZXRfbmFtZXNbaV0pOwo+IC0JCQlyZXR1cm4g LUVOT0RFVjsKPiAtCQl9Cj4gLQo+IC0JCXJldCA9IGRldm1fZ3Bpb19yZXF1ZXN0KGRldiwga2ly aW5fcGNpZS0+Z3Bpb19pZF9yZXNldFtpXSwKPiAtCQkJCQlraXJpbl9wY2llLT5yZXNldF9uYW1l c1tpXSk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlmb3Ig KGkgPSAwOyBpIDwga2lyaW5fcGNpZS0+bl9ncGlvX2Nsa3JlcTsgaSsrKSB7Cj4gLQkJaWYgKCFn cGlvX2lzX3ZhbGlkKGtpcmluX3BjaWUtPmdwaW9faWRfY2xrcmVxW2ldKSkgewo+IC0JCQlkZXZf ZXJyKGRldiwgInVuYWJsZSB0byBnZXQgYSB2YWxpZCAlcyBncGlvXG4iLAo+IC0JCQkJa2lyaW5f cGNpZS0+Y2xrcmVxX25hbWVzW2ldKTsKPiAtCQkJcmV0dXJuIC1FTk9ERVY7Cj4gLQkJfQo+IC0K PiAtCQlyZXQgPSBkZXZtX2dwaW9fcmVxdWVzdChkZXYsIGtpcmluX3BjaWUtPmdwaW9faWRfY2xr cmVxW2ldLAo+IC0JCQkJCWtpcmluX3BjaWUtPmNsa3JlcV9uYW1lc1tpXSk7Cj4gLQkJaWYgKHJl dCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCj4gLQkJcmV0ID0gZ3Bpb19kaXJlY3Rpb25fb3V0cHV0 KGtpcmluX3BjaWUtPmdwaW9faWRfY2xrcmVxW2ldLCAwKTsKPiAtCQlpZiAocmV0KQo+IC0JCQly ZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICBzdGF0aWMgY29u c3Qgc3RydWN0IGR3X3BjaWVfb3BzIGtpcmluX2R3X3BjaWVfb3BzID0gewo+ICAJLnJlYWRfZGJp ID0ga2lyaW5fcGNpZV9yZWFkX2RiaSwKPiAgCS53cml0ZV9kYmkgPSBraXJpbl9wY2llX3dyaXRl X2RiaSwKPiBAQCAtNjgwLDcgKzY1MSw3IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9wb3dlcl9v ZmYoc3RydWN0IGtpcmluX3BjaWUgKmtpcmluX3BjaWUpCj4gIAkJcmV0dXJuIGhpMzY2MF9wY2ll X3BoeV9wb3dlcl9vZmYoa2lyaW5fcGNpZSk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IGtpcmlu X3BjaWUtPm5fZ3Bpb19jbGtyZXE7IGkrKykKPiAtCQlncGlvX2RpcmVjdGlvbl9vdXRwdXQoa2ly aW5fcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV0sIDEpOwo+ICsJCWdwaW9kX2RpcmVjdGlvbl9vdXRw dXRfcmF3KGtpcmluX3BjaWUtPmlkX2Nsa3JlcV9ncGlvW2ldLCAxKTsKPiAgCj4gIAlwaHlfcG93 ZXJfb2ZmKGtpcmluX3BjaWUtPnBoeSk7Cj4gIAlwaHlfZXhpdChraXJpbl9wY2llLT5waHkpOwo+ IEBAIC03MDcsMTAgKzY3OCw2IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9wb3dlcl9vbihzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICAJCWlmIChJU19FUlIoa2lyaW5fcGNpZS0+cGh5 KSkKPiAgCQkJcmV0dXJuIFBUUl9FUlIoa2lyaW5fcGNpZS0+cGh5KTsKPiAgCj4gLQkJcmV0ID0g a2lyaW5fcGNpZV9ncGlvX3JlcXVlc3Qoa2lyaW5fcGNpZSwgZGV2KTsKPiAtCQlpZiAocmV0KQo+ IC0JCQlyZXR1cm4gcmV0Owo+IC0KPiAgCQlyZXQgPSBwaHlfaW5pdChraXJpbl9wY2llLT5waHkp Owo+ICAJCWlmIChyZXQpCj4gIAkJCWdvdG8gZXJyOwo+IEBAIC03MjMsMTEgKzY5MCw5IEBAIHN0 YXRpYyBpbnQga2lyaW5fcGNpZV9wb3dlcl9vbihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 LAo+ICAJLyogcGVyc3QgYXNzZXJ0IEVuZHBvaW50ICovCj4gIAl1c2xlZXBfcmFuZ2UoUkVGXzJf UEVSU1RfTUlOLCBSRUZfMl9QRVJTVF9NQVgpOwo+ICAKPiAtCWlmICghZ3Bpb19yZXF1ZXN0KGtp cmluX3BjaWUtPmdwaW9faWRfZHdjX3BlcnN0LCAicGNpZV9wZXJzdF9icmlkZ2UiKSkgewo+IC0J CXJldCA9IGdwaW9fZGlyZWN0aW9uX291dHB1dChraXJpbl9wY2llLT5ncGlvX2lkX2R3Y19wZXJz dCwgMSk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJZ290byBlcnI7Cj4gLQl9Cj4gKwlyZXQgPSBncGlv ZF9kaXJlY3Rpb25fb3V0cHV0X3JhdyhraXJpbl9wY2llLT5pZF9kd2NfcGVyc3RfZ3BpbywgMSk7 Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyOwo+ICAKPiAgCXVzbGVlcF9yYW5nZShQRVJTVF8y X0FDQ0VTU19NSU4sIFBFUlNUXzJfQUNDRVNTX01BWCk7Cj4gIAo+IC0tIAo+IDIuNDMuMC5yYzEu MTMzNi5nMzZiNTI1NWEwM2FjCj4gCgotLSAK4K6u4K6j4K6/4K614K6j4K+N4K6j4K6p4K+NIOCu muCupOCuvuCumuCuv+CuteCuruCvjQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtYW1sb2dpYyBtYWlsaW5nIGxpc3QKbGludXgtYW1sb2dpY0Bs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYW1sb2dpYwo= 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 4781EC10F16 for ; Tue, 30 Apr 2024 05:16:32 +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=W6e5Wv4oEVD56X1Zt0R1Gfb98Lmqlq2h/scz7ClFKy0=; b=pElXfXzFflMXGz If7c9F6jTzbkWRb5M6RBl2xZEbXvt0oaPLGjcMfLMMqjHgnCqOEKsMwbAzg7BRwVdQ5qtqK6yzbbo L+OJ5OVarqwgcgSxfkVtlS2rUogi7CLeuAdDQrgK74nLNi5ocuq8VKoHIo82vxginnZ/KNBlHhgQj E+IHReTUGHwP82cRW2EDcFxtyT6PBUs6nsOpIHXw2JYtR4UCxRJoSr/GDNOCo2C0RslUwwAwg8nvm CthVA3N9gN2DCS+CYd98wAGQCVKCNrD2qOE8OBKGSHlfQlTVJVC9Cf6j4Z6HVP5UMIC7lPjiwsOV5 ABluJ5pgQlH6F0J2SIQQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s1fqn-000000058QR-3UFb; Tue, 30 Apr 2024 05:16:21 +0000 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s1fqi-000000058PV-3EtV for linux-arm-kernel@lists.infradead.org; Tue, 30 Apr 2024 05:16:18 +0000 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-53fa455cd94so4047062a12.2 for ; Mon, 29 Apr 2024 22:16:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1714454175; x=1715058975; 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=5ynejgaDnZjcmZfXmFDrndip2YGb6tAWR1lBuHbKqsw=; b=gKj1ewtDFWZ9b3qUe7+hRF4vgJ+n2vmX97ZPSgtCctkNuXRK30OsUfIviouf0L1eQp vm6FtI+6CxnMHmEKUnptJLJ5MGwlx6LJt8wldgoCGu9HsgPtgRBmaEyK/ZWpQV4wIwEb hmSt9U7yxqxgDgAmXuwRG68JwN0jdHWaTw7KTVDG5VTQcOjx6uY9p7gf78XfWwKmWA/Z Z1eJC5iaYzHCYte3jaI4u8E0TLushquSe9HMAvAEUfBBdaMUg6G89zpZNmu07tEeNA6d mzqrA7M/YHDwGEMKfnTscO6Wfb1In3Mqk5U1LSLIAMkjfrCUdsNgMfMi5jdy2GsW0c9G IBxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714454175; x=1715058975; 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=5ynejgaDnZjcmZfXmFDrndip2YGb6tAWR1lBuHbKqsw=; b=kZoJdMU1UXvkyhiWk+3MnerVwqrbguKfpzPjm+UOPE0icP/SUmzSbs7mIJNRyaT5KF q1mA/hDP0DXBPDIz5W2mpXLMCb8OLwkMleY4Tt8nyowo38s2Fol8akImKgK5vHndHyYs gJaZ/Rei6aNKIB+z3F1YZsetvK1OqbS24LWrIf+yOKqXxqdYi2p1rHASnfwfUjQ2g+Ng OlF16mWqHWohldKhQrXBkjqkUrQNcakzz3wY6oayYt02VkH0zQ19gMDHKXNEuzQsyMF0 ee1cVxCqVnlGKA+cElLQDbAerm+R3WJo5Z2hknrNcQhOtUk7XRBilph09oqAVU3FAvpy QHdQ== X-Forwarded-Encrypted: i=1; AJvYcCVfy7HzMREcACEHSh4ggn33KMWW2k2bIRK+JzHny2rEFEPy4BNrWuSYFBtTUac4fP+s/4PnsHmXpKNz1eMJb/eW+huR0f/4d9rVTiaWN0UiAK3mfx4= X-Gm-Message-State: AOJu0YwgA9/wf6WCp5zPDuH607AdnbULTu/aTDwbgOEgZ8Je9oBKWW3e ZnqjhgH47wmm/ggk1mu1neLT8/aZMWUI8ZeKAjtIJOMwUacfe0QCZtLWRMDN6g== X-Google-Smtp-Source: AGHT+IGeASrZZdOKkLRwqMeew25lnfW2E16O02bRTclJxxqzXXmg/MPOAdDxiUpkYBPU/+iJ5ms0XA== X-Received: by 2002:a05:6a20:12cf:b0:1a9:6cdd:6907 with SMTP id v15-20020a056a2012cf00b001a96cdd6907mr14733071pzg.29.1714454174430; Mon, 29 Apr 2024 22:16:14 -0700 (PDT) Received: from thinkpad ([220.158.156.15]) by smtp.gmail.com with ESMTPSA id e5-20020a170902cf4500b001e2c1ce5bb0sm21409980plg.83.2024.04.29.22.16.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Apr 2024 22:16:14 -0700 (PDT) Date: Tue, 30 Apr 2024 10:46:04 +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 v3 5/5] PCI: kirin: Convert to agnostic GPIO API Message-ID: <20240430051604.GA3301@thinkpad> References: <20240429102510.2665280-1-andriy.shevchenko@linux.intel.com> <20240429102510.2665280-6-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240429102510.2665280-6-andriy.shevchenko@linux.intel.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240429_221616_898783_50C5DBFD X-CRM114-Status: GOOD ( 27.94 ) 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 T24gTW9uLCBBcHIgMjksIDIwMjQgYXQgMDE6MjM6MjJQTSArMDMwMCwgQW5keSBTaGV2Y2hlbmtv IHdyb3RlOgo+IFRoZSBvZl9ncGlvLmggaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZC4gSW4gcHJlcGFy YXRpb24gb2YgdGhhdCBjb252ZXJ0Cj4gdGhlIGRyaXZlciB0byB0aGUgYWdub3N0aWMgQVBJLgo+ IAo+IFJldmlld2VkLWJ5OiBSb2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3JnPgo+IFNpZ25lZC1v ZmYtYnk6IEFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29t PgoKUmV2aWV3ZWQtYnk6IE1hbml2YW5uYW4gU2FkaGFzaXZhbSA8bWFuaXZhbm5hbi5zYWRoYXNp dmFtQGxpbmFyby5vcmc+CgotIE1hbmkKCj4gLS0tCj4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIv ZHdjL3BjaWUta2lyaW4uYyB8IDEwNSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxl IGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWtpcmluLmMgYi9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL2R3Yy9wY2llLWtpcmluLmMKPiBpbmRleCBkNTUyM2YzMDIxMDIuLmQxZjU0 ZjE4OGU3MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWtp cmluLmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWtpcmluLmMKPiBA QCAtMTIsMTIgKzEyLDEwIEBACj4gICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgo+ICAjaW5j bHVkZSA8bGludXgvZGVsYXkuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+IC0jaW5jbHVk ZSA8bGludXgvZ3Bpby5oPgo+ICAjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgo+ICAj aW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29u Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9vZi5oPgo+IC0jaW5jbHVkZSA8bGludXgvb2ZfZ3Bpby5o Pgo+ICAjaW5jbHVkZSA8bGludXgvb2ZfcGNpLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9waHkvcGh5 Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiBAQCAtNzgsMTYgKzc2LDE2IEBAIHN0cnVj dCBraXJpbl9wY2llIHsKPiAgCXZvaWQJCSpwaHlfcHJpdjsJLyogb25seSBmb3IgUENJRV9LSVJJ Tl9JTlRFUk5BTF9QSFkgKi8KPiAgCj4gIAkvKiBEV0MgUEVSU1QjICovCj4gLQlpbnQJCWdwaW9f aWRfZHdjX3BlcnN0Owo+ICsJc3RydWN0IGdwaW9fZGVzYyAqaWRfZHdjX3BlcnN0X2dwaW87Cj4g IAo+ICAJLyogUGVyLXNsb3QgUEVSU1QjICovCj4gIAlpbnQJCW51bV9zbG90czsKPiAtCWludAkJ Z3Bpb19pZF9yZXNldFtNQVhfUENJX1NMT1RTXTsKPiArCXN0cnVjdCBncGlvX2Rlc2MgKmlkX3Jl c2V0X2dwaW9bTUFYX1BDSV9TTE9UU107Cj4gIAljb25zdCBjaGFyCSpyZXNldF9uYW1lc1tNQVhf UENJX1NMT1RTXTsKPiAgCj4gIAkvKiBQZXItc2xvdCBjbGtyZXEgKi8KPiAgCWludAkJbl9ncGlv X2Nsa3JlcTsKPiAtCWludAkJZ3Bpb19pZF9jbGtyZXFbTUFYX1BDSV9TTE9UU107Cj4gKwlzdHJ1 Y3QgZ3Bpb19kZXNjICppZF9jbGtyZXFfZ3Bpb1tNQVhfUENJX1NMT1RTXTsKPiAgCWNvbnN0IGNo YXIJKmNsa3JlcV9uYW1lc1tNQVhfUENJX1NMT1RTXTsKPiAgfTsKPiAgCj4gQEAgLTM4MSwxNSAr Mzc5LDIwIEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9nZXRfZ3Bpb19lbmFibGUoc3RydWN0IGtp cmluX3BjaWUgKnBjaWUsCj4gIAlwY2llLT5uX2dwaW9fY2xrcmVxID0gcmV0Owo+ICAKPiAgCWZv ciAoaSA9IDA7IGkgPCBwY2llLT5uX2dwaW9fY2xrcmVxOyBpKyspIHsKPiAtCQlwY2llLT5ncGlv X2lkX2Nsa3JlcVtpXSA9IG9mX2dldF9uYW1lZF9ncGlvKGRldi0+b2Zfbm9kZSwKPiAtCQkJCQkJ ICAgICJoaXNpbGljb24sY2xrZW4tZ3Bpb3MiLCBpKTsKPiAtCQlpZiAocGNpZS0+Z3Bpb19pZF9j bGtyZXFbaV0gPCAwKQo+IC0JCQlyZXR1cm4gcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV07Cj4gKwkJ cGNpZS0+aWRfY2xrcmVxX2dwaW9baV0gPSBkZXZtX2dwaW9kX2dldF9pbmRleChkZXYsCj4gKwkJ CQkJCQkiaGlzaWxpY29uLGNsa2VuIiwgaSwKPiArCQkJCQkJCUdQSU9EX09VVF9MT1cpOwo+ICsJ CWlmIChJU19FUlIocGNpZS0+aWRfY2xrcmVxX2dwaW9baV0pKQo+ICsJCQlyZXR1cm4gZGV2X2Vy cl9wcm9iZShkZXYsIFBUUl9FUlIocGNpZS0+aWRfY2xrcmVxX2dwaW9baV0pLAo+ICsJCQkJCSAg ICAgInVuYWJsZSB0byBnZXQgYSB2YWxpZCBjbGtlbiBncGlvXG4iKTsKPiAgCj4gIAkJcGNpZS0+ Y2xrcmVxX25hbWVzW2ldID0gZGV2bV9rYXNwcmludGYoZGV2LCBHRlBfS0VSTkVMLAo+ICAJCQkJ CQkgICAgICAgInBjaWVfY2xrcmVxXyVkIiwgaSk7Cj4gIAkJaWYgKCFwY2llLT5jbGtyZXFfbmFt ZXNbaV0pCj4gIAkJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCQlncGlvZF9zZXRfY29uc3VtZXJf bmFtZShwY2llLT5pZF9jbGtyZXFfZ3Bpb1tpXSwKPiArCQkJCQlwY2llLT5jbGtyZXFfbmFtZXNb aV0pOwo+ICAJfQo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC00MDcsMTAgKzQxMCwxNiBAQCBzdGF0 aWMgaW50IGtpcmluX3BjaWVfcGFyc2VfcG9ydChzdHJ1Y3Qga2lyaW5fcGNpZSAqcGNpZSwKPiAg CQlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShwYXJlbnQsIGNoaWxkKSB7Cj4gIAkJ CWkgPSBwY2llLT5udW1fc2xvdHM7Cj4gIAo+IC0JCQlwY2llLT5ncGlvX2lkX3Jlc2V0W2ldID0g b2ZfZ2V0X25hbWVkX2dwaW8oY2hpbGQsCj4gLQkJCQkJCQkicmVzZXQtZ3Bpb3MiLCAwKTsKPiAt CQkJaWYgKHBjaWUtPmdwaW9faWRfcmVzZXRbaV0gPCAwKQo+IC0JCQkJY29udGludWU7Cj4gKwkJ CXBjaWUtPmlkX3Jlc2V0X2dwaW9baV0gPSBkZXZtX2Z3bm9kZV9ncGlvZF9nZXRfaW5kZXgoZGV2 LAo+ICsJCQkJCQkJIG9mX2Z3bm9kZV9oYW5kbGUoY2hpbGQpLAo+ICsJCQkJCQkJICJyZXNldCIs IDAsIEdQSU9EX09VVF9MT1csCj4gKwkJCQkJCQkgTlVMTCk7Cj4gKwkJCWlmIChJU19FUlIocGNp ZS0+aWRfcmVzZXRfZ3Bpb1tpXSkpIHsKPiArCQkJCWlmIChQVFJfRVJSKHBjaWUtPmlkX3Jlc2V0 X2dwaW9baV0pID09IC1FTk9FTlQpCj4gKwkJCQkJY29udGludWU7Cj4gKwkJCQlyZXR1cm4gZGV2 X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGNpZS0+aWRfcmVzZXRfZ3Bpb1tpXSksCj4gKwkJCQkJ CSAgICAgInVuYWJsZSB0byBnZXQgYSB2YWxpZCByZXNldCBncGlvXG4iKTsKPiArCQkJfQo+ICAK PiAgCQkJcGNpZS0+bnVtX3Nsb3RzKys7Cj4gIAkJCWlmIChwY2llLT5udW1fc2xvdHMgPiBNQVhf UENJX1NMT1RTKSB7Cj4gQEAgLTQzNCw2ICs0NDMsOSBAQCBzdGF0aWMgaW50IGtpcmluX3BjaWVf cGFyc2VfcG9ydChzdHJ1Y3Qga2lyaW5fcGNpZSAqcGNpZSwKPiAgCQkJCXJldCA9IC1FTk9NRU07 Cj4gIAkJCQlnb3RvIHB1dF9ub2RlOwo+ICAJCQl9Cj4gKwo+ICsJCQlncGlvZF9zZXRfY29uc3Vt ZXJfbmFtZShwY2llLT5pZF9yZXNldF9ncGlvW2ldLAo+ICsJCQkJCQlwY2llLT5yZXNldF9uYW1l c1tpXSk7Cj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAtNDYzLDE0ICs0NzUsMTEgQEAgc3RhdGljIGxv bmcga2lyaW5fcGNpZV9nZXRfcmVzb3VyY2Uoc3RydWN0IGtpcmluX3BjaWUgKmtpcmluX3BjaWUs Cj4gIAkJcmV0dXJuIFBUUl9FUlIoa2lyaW5fcGNpZS0+YXBiKTsKPiAgCj4gIAkvKiBwY2llIGlu dGVybmFsIFBFUlNUIyBncGlvICovCj4gLQlraXJpbl9wY2llLT5ncGlvX2lkX2R3Y19wZXJzdCA9 IG9mX2dldF9uYW1lZF9ncGlvKGRldi0+b2Zfbm9kZSwKPiAtCQkJCQkJCSAgInJlc2V0LWdwaW9z IiwgMCk7Cj4gLQlpZiAoa2lyaW5fcGNpZS0+Z3Bpb19pZF9kd2NfcGVyc3QgPT0gLUVQUk9CRV9E RUZFUikgewo+IC0JCXJldHVybiAtRVBST0JFX0RFRkVSOwo+IC0JfSBlbHNlIGlmICghZ3Bpb19p c192YWxpZChraXJpbl9wY2llLT5ncGlvX2lkX2R3Y19wZXJzdCkpIHsKPiAtCQlkZXZfZXJyKGRl diwgInVuYWJsZSB0byBnZXQgYSB2YWxpZCBncGlvIHBpblxuIik7Cj4gLQkJcmV0dXJuIC1FTk9E RVY7Cj4gLQl9Cj4gKwlraXJpbl9wY2llLT5pZF9kd2NfcGVyc3RfZ3BpbyA9IGRldm1fZ3Bpb2Rf Z2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7Cj4gKwlpZiAoSVNfRVJSKGtpcmluX3Bj aWUtPmlkX2R3Y19wZXJzdF9ncGlvKSkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBU Ul9FUlIoa2lyaW5fcGNpZS0+aWRfZHdjX3BlcnN0X2dwaW8pLAo+ICsJCQkJICAgICAidW5hYmxl IHRvIGdldCBhIHZhbGlkIGdwaW8gcGluXG4iKTsKPiArCWdwaW9kX3NldF9jb25zdW1lcl9uYW1l KGtpcmluX3BjaWUtPmlkX2R3Y19wZXJzdF9ncGlvLCAicGNpZV9wZXJzdF9icmlkZ2UiKTsKPiAg Cj4gIAlyZXQgPSBraXJpbl9wY2llX2dldF9ncGlvX2VuYWJsZShraXJpbl9wY2llLCBwZGV2KTsK PiAgCWlmIChyZXQpCj4gQEAgLTU1Myw3ICs1NjIsNyBAQCBzdGF0aWMgaW50IGtpcmluX3BjaWVf YWRkX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqYnVzKQo+ICAKPiAgCS8qIFNlbmQgUEVSU1QjIHRvIGVh Y2ggc2xvdCAqLwo+ICAJZm9yIChpID0gMDsgaSA8IGtpcmluX3BjaWUtPm51bV9zbG90czsgaSsr KSB7Cj4gLQkJcmV0ID0gZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KGtpcmluX3BjaWUtPmdwaW9faWRf cmVzZXRbaV0sIDEpOwo+ICsJCXJldCA9IGdwaW9kX2RpcmVjdGlvbl9vdXRwdXRfcmF3KGtpcmlu X3BjaWUtPmlkX3Jlc2V0X2dwaW9baV0sIDEpOwo+ICAJCWlmIChyZXQpIHsKPiAgCQkJZGV2X2Vy cihwY2ktPmRldiwgIlBFUlNUIyAlcyBlcnJvcjogJWRcbiIsCj4gIAkJCQlraXJpbl9wY2llLT5y ZXNldF9uYW1lc1tpXSwgcmV0KTsKPiBAQCAtNjIzLDQ0ICs2MzIsNiBAQCBzdGF0aWMgaW50IGtp cmluX3BjaWVfaG9zdF9pbml0KHN0cnVjdCBkd19wY2llX3JwICpwcCkKPiAgCXJldHVybiAwOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGtpcmluX3BjaWVfZ3Bpb19yZXF1ZXN0KHN0cnVjdCBraXJp bl9wY2llICpraXJpbl9wY2llLAo+IC0JCQkJICAgc3RydWN0IGRldmljZSAqZGV2KQo+IC17Cj4g LQlpbnQgcmV0LCBpOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBraXJpbl9wY2llLT5udW1fc2xv dHM7IGkrKykgewo+IC0JCWlmICghZ3Bpb19pc192YWxpZChraXJpbl9wY2llLT5ncGlvX2lkX3Jl c2V0W2ldKSkgewo+IC0JCQlkZXZfZXJyKGRldiwgInVuYWJsZSB0byBnZXQgYSB2YWxpZCAlcyBn cGlvXG4iLAo+IC0JCQkJa2lyaW5fcGNpZS0+cmVzZXRfbmFtZXNbaV0pOwo+IC0JCQlyZXR1cm4g LUVOT0RFVjsKPiAtCQl9Cj4gLQo+IC0JCXJldCA9IGRldm1fZ3Bpb19yZXF1ZXN0KGRldiwga2ly aW5fcGNpZS0+Z3Bpb19pZF9yZXNldFtpXSwKPiAtCQkJCQlraXJpbl9wY2llLT5yZXNldF9uYW1l c1tpXSk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlmb3Ig KGkgPSAwOyBpIDwga2lyaW5fcGNpZS0+bl9ncGlvX2Nsa3JlcTsgaSsrKSB7Cj4gLQkJaWYgKCFn cGlvX2lzX3ZhbGlkKGtpcmluX3BjaWUtPmdwaW9faWRfY2xrcmVxW2ldKSkgewo+IC0JCQlkZXZf ZXJyKGRldiwgInVuYWJsZSB0byBnZXQgYSB2YWxpZCAlcyBncGlvXG4iLAo+IC0JCQkJa2lyaW5f cGNpZS0+Y2xrcmVxX25hbWVzW2ldKTsKPiAtCQkJcmV0dXJuIC1FTk9ERVY7Cj4gLQkJfQo+IC0K PiAtCQlyZXQgPSBkZXZtX2dwaW9fcmVxdWVzdChkZXYsIGtpcmluX3BjaWUtPmdwaW9faWRfY2xr cmVxW2ldLAo+IC0JCQkJCWtpcmluX3BjaWUtPmNsa3JlcV9uYW1lc1tpXSk7Cj4gLQkJaWYgKHJl dCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCj4gLQkJcmV0ID0gZ3Bpb19kaXJlY3Rpb25fb3V0cHV0 KGtpcmluX3BjaWUtPmdwaW9faWRfY2xrcmVxW2ldLCAwKTsKPiAtCQlpZiAocmV0KQo+IC0JCQly ZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICBzdGF0aWMgY29u c3Qgc3RydWN0IGR3X3BjaWVfb3BzIGtpcmluX2R3X3BjaWVfb3BzID0gewo+ICAJLnJlYWRfZGJp ID0ga2lyaW5fcGNpZV9yZWFkX2RiaSwKPiAgCS53cml0ZV9kYmkgPSBraXJpbl9wY2llX3dyaXRl X2RiaSwKPiBAQCAtNjgwLDcgKzY1MSw3IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9wb3dlcl9v ZmYoc3RydWN0IGtpcmluX3BjaWUgKmtpcmluX3BjaWUpCj4gIAkJcmV0dXJuIGhpMzY2MF9wY2ll X3BoeV9wb3dlcl9vZmYoa2lyaW5fcGNpZSk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IGtpcmlu X3BjaWUtPm5fZ3Bpb19jbGtyZXE7IGkrKykKPiAtCQlncGlvX2RpcmVjdGlvbl9vdXRwdXQoa2ly aW5fcGNpZS0+Z3Bpb19pZF9jbGtyZXFbaV0sIDEpOwo+ICsJCWdwaW9kX2RpcmVjdGlvbl9vdXRw dXRfcmF3KGtpcmluX3BjaWUtPmlkX2Nsa3JlcV9ncGlvW2ldLCAxKTsKPiAgCj4gIAlwaHlfcG93 ZXJfb2ZmKGtpcmluX3BjaWUtPnBoeSk7Cj4gIAlwaHlfZXhpdChraXJpbl9wY2llLT5waHkpOwo+ IEBAIC03MDcsMTAgKzY3OCw2IEBAIHN0YXRpYyBpbnQga2lyaW5fcGNpZV9wb3dlcl9vbihzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICAJCWlmIChJU19FUlIoa2lyaW5fcGNpZS0+cGh5 KSkKPiAgCQkJcmV0dXJuIFBUUl9FUlIoa2lyaW5fcGNpZS0+cGh5KTsKPiAgCj4gLQkJcmV0ID0g a2lyaW5fcGNpZV9ncGlvX3JlcXVlc3Qoa2lyaW5fcGNpZSwgZGV2KTsKPiAtCQlpZiAocmV0KQo+ IC0JCQlyZXR1cm4gcmV0Owo+IC0KPiAgCQlyZXQgPSBwaHlfaW5pdChraXJpbl9wY2llLT5waHkp Owo+ICAJCWlmIChyZXQpCj4gIAkJCWdvdG8gZXJyOwo+IEBAIC03MjMsMTEgKzY5MCw5IEBAIHN0 YXRpYyBpbnQga2lyaW5fcGNpZV9wb3dlcl9vbihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 LAo+ICAJLyogcGVyc3QgYXNzZXJ0IEVuZHBvaW50ICovCj4gIAl1c2xlZXBfcmFuZ2UoUkVGXzJf UEVSU1RfTUlOLCBSRUZfMl9QRVJTVF9NQVgpOwo+ICAKPiAtCWlmICghZ3Bpb19yZXF1ZXN0KGtp cmluX3BjaWUtPmdwaW9faWRfZHdjX3BlcnN0LCAicGNpZV9wZXJzdF9icmlkZ2UiKSkgewo+IC0J CXJldCA9IGdwaW9fZGlyZWN0aW9uX291dHB1dChraXJpbl9wY2llLT5ncGlvX2lkX2R3Y19wZXJz dCwgMSk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJZ290byBlcnI7Cj4gLQl9Cj4gKwlyZXQgPSBncGlv ZF9kaXJlY3Rpb25fb3V0cHV0X3JhdyhraXJpbl9wY2llLT5pZF9kd2NfcGVyc3RfZ3BpbywgMSk7 Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyOwo+ICAKPiAgCXVzbGVlcF9yYW5nZShQRVJTVF8y X0FDQ0VTU19NSU4sIFBFUlNUXzJfQUNDRVNTX01BWCk7Cj4gIAo+IC0tIAo+IDIuNDMuMC5yYzEu MTMzNi5nMzZiNTI1NWEwM2FjCj4gCgotLSAK4K6u4K6j4K6/4K614K6j4K+N4K6j4K6p4K+NIOCu muCupOCuvuCumuCuv+CuteCuruCvjQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtl cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=