From patchwork Fri Oct 27 16:11:20 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gabriele Paoloni X-Patchwork-Id: 117371 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp949117qgn; Fri, 27 Oct 2017 09:15:53 -0700 (PDT) X-Google-Smtp-Source: ABhQp+SrAbiR9+1sc7VNvCJrBAbPJRBFFZQqsJEZm9YTIebV8GrrOXA1O6kDN7P5NUXNQbdkJg1u X-Received: by 10.84.142.129 with SMTP id 1mr747106plx.341.1509120953849; Fri, 27 Oct 2017 09:15:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509120953; cv=none; d=google.com; s=arc-20160816; b=hs4f/lHpnnrGXoiiowmi6HuJQu1ZOz8fUyqn9woD/XPpAeRDQlcHklyYx4p0zwOdxU ShIqgCS9hscfVN9r/JywqchbFuckTwc/ylP3J0U7vc1/BJ80HX3TDhoCJM4qukUW38Ls UEt8RXZNL1pNJQkADwMe8KfFxwz9rOa/YIStNXPspJrELUfwriPhKP3ekW2Dm4NcXzxr j45FSsXzc0ZWUFc9OEtDansjomN+wL/mV8jVQrTiqorTbgqLgVjntyuRTTIBgAtaf4A2 mzMNtk4FKdigv039+0nd0Aj3cZkRgM0XqaBf2GiXHUre7WGhkVAD6QMXzRO6a5YvHtd1 8KJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=W7mx/7VPp1xwj9wNKUDDsGCW2Zm9IJc/pbnWzb+YFFY=; b=wq0glcZiU3yCY1CaC8wf5I6ZYSjKLCsVTEStUOqmFtMZPtH0aqr0gWcy5cWepQjYSO xKquAftD6WMkeYo2xCFPguqruloKHvfnZ+QKR8XHMPvSNNX9jMQfkraCpWoP7Kfc0Kqm bK6FCi3ckNNcoUPpnNDTJUnf3hq41yIxSNkMRVtewDdFjEAgcozcNfi3YQGhgQuiXbE9 sLLasga0lW9Mqx5mG4e1QwKN/M0D9CrtJMHMlCxHVnFvrAIpm2d0WtV8VFty3ofe8Xll zbl7XXLHc9sPoCFOQPCGLIT9miwKmwngBZYqC52aC7BL3mE59wNf2DpaNlQPCQskyuB/ cDFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p12si4543755pli.745.2017.10.27.09.15.53; Fri, 27 Oct 2017 09:15:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752779AbdJ0QPv (ORCPT + 27 others); Fri, 27 Oct 2017 12:15:51 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:9455 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752629AbdJ0QOy (ORCPT ); Fri, 27 Oct 2017 12:14:54 -0400 Received: from 172.30.72.58 (EHLO DGGEMS414-HUB.china.huawei.com) ([172.30.72.58]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DJX16578; Sat, 28 Oct 2017 00:14:41 +0800 (CST) Received: from G00308965-DELL1.china.huawei.com (10.202.226.113) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.361.1; Sat, 28 Oct 2017 00:12:32 +0800 From: Gabriele Paoloni To: , , , , , , , , CC: , , , , , , , , , , , Subject: [PATCH v10 2/9] PCI: remove unused __weak attribute in pci_register_io_range() Date: Fri, 27 Oct 2017 17:11:20 +0100 Message-ID: <1509120687-7352-3-git-send-email-gabriele.paoloni@huawei.com> X-Mailer: git-send-email 2.7.1.windows.1 In-Reply-To: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> References: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.226.113] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020202.59F35B72.0031, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: c83d41304ba06320d1c5a75713abacc4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: gabriele paoloni Currently pci_register_io_range() has only one definition; therefore there is no use of the __weak attribute. Signed-off-by: Gabriele Paoloni Acked-by: Bjorn Helgaas --- drivers/pci/pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.7.4 Acked-by: Bjorn Helgaas diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index af0cc34..eee967c 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3270,7 +3270,7 @@ static DEFINE_SPINLOCK(io_range_lock); * Record the PCI IO range (expressed as CPU physical address + size). * Return a negative value if an error has occured, zero otherwise */ -int __weak pci_register_io_range(phys_addr_t addr, resource_size_t size) +int pci_register_io_range(phys_addr_t addr, resource_size_t size) { int err = 0; From patchwork Fri Oct 27 16:11:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gabriele Paoloni X-Patchwork-Id: 117370 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp949019qgn; Fri, 27 Oct 2017 09:15:48 -0700 (PDT) X-Google-Smtp-Source: ABhQp+T67Qc3n63kUBy/A8ECFU1JUtnOAm3MKEH3NP0XW1380LOvHHxHf9pKh+nhyAGnWdbBP3iR X-Received: by 10.84.240.203 with SMTP id l11mr765544plt.280.1509120948412; Fri, 27 Oct 2017 09:15:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509120948; cv=none; d=google.com; s=arc-20160816; b=C+oHcngfITMNeDHhwNzAD8dlwaM/eKRHSaJpeuJC4vzj3IQe71WgpH2sbgn11W0sB+ Ke5eWDf2zERjcWoyl17DdGlwH5ZZR7MKn1IHFC4HpjzCuJmiFZmSJZJ9OQgYcGpdzqbN LpgBafYa2o3nRJUUxSVIjyEjzJeM+ybGFW9eRHoCZcfqig6CF+LlvHy0Ge9fZ7spCAh8 j5VizOWIQm3em12rFQM7+mAzXqZ+NChqO3YcjG4Kx/AnjNlIop5a7/xhoJXjjyNf8NVn My65vG6bO116HagAZUpBdjEMZQkcsnIuBEYcijwBs7nLgvqg9L/+Gb9hyazEd2qgNyzb 8uSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=GpBjmijKVxeiKFXeOezcYBuXhtA8aNm5tpYQATMrUiY=; b=Dei5d1SK9qPcHRkIVeH1IjjrDth67J61qxOvDpIyXYAbIt6poztt1o/VfNUXpasvqb I4uhtypNMU5I2V0wNZE9C18mPP0KpKx3AZFsjKcAFRpHSts0VQRm4a0oBExeG8zlNl/G tzHlABIJA14YgUKxIpvI/AfkwxNS5kD3R2Rjrk0ma+q98pZ96ta/YKhQ8/lIsMcaaQLi 64E/+hjmPrkqcAFVTh3AnHqbI9iKwHy6bljBDG9y47/hQYIWT4C8SEsF6NH7InZML+tN ulJPUHvF331oVQRRtvevh8vBZPQjDOkjoJTPwTnNt8wyO3r2O8zzqh7BRZoPshalHm/j TrXw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p12si4543755pli.745.2017.10.27.09.15.48; Fri, 27 Oct 2017 09:15:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752761AbdJ0QPq (ORCPT + 27 others); Fri, 27 Oct 2017 12:15:46 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:9454 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752033AbdJ0QOz (ORCPT ); Fri, 27 Oct 2017 12:14:55 -0400 Received: from 172.30.72.58 (EHLO DGGEMS414-HUB.china.huawei.com) ([172.30.72.58]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DJX16563; Sat, 28 Oct 2017 00:14:38 +0800 (CST) Received: from G00308965-DELL1.china.huawei.com (10.202.226.113) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.361.1; Sat, 28 Oct 2017 00:12:37 +0800 From: Gabriele Paoloni To: , , , , , , , , CC: , , , , , , , , , , , Subject: [PATCH v10 3/9] PCI: add fwnode handler as input param of pci_register_io_range() Date: Fri, 27 Oct 2017 17:11:21 +0100 Message-ID: <1509120687-7352-4-git-send-email-gabriele.paoloni@huawei.com> X-Mailer: git-send-email 2.7.1.windows.1 In-Reply-To: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> References: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.226.113] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020204.59F35B6F.0023, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: f637e8d5eefb5ceb520003383bc07b0d Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: gabriele paoloni In preparation for having the PCI MMIO helpers to use the new generic I/O space management(LOGIC_PIO) we need to add the fwnode handler as extra input parameter. This patch changes the signature of pci_register_io_range() and of its callers as needed. Signed-off-by: Gabriele Paoloni Acked-by: Bjorn Helgaas --- drivers/acpi/pci_root.c | 8 +++++--- drivers/of/address.c | 4 +++- drivers/pci/pci.c | 3 ++- include/linux/pci.h | 3 ++- 4 files changed, 12 insertions(+), 6 deletions(-) -- 2.7.4 diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 9eec309..40164e3 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c @@ -729,7 +729,8 @@ static void acpi_pci_root_validate_resources(struct device *dev, } } -static void acpi_pci_root_remap_iospace(struct resource_entry *entry) +static void acpi_pci_root_remap_iospace(struct fwnode_handle *fwnode, + struct resource_entry *entry) { #ifdef PCI_IOBASE struct resource *res = entry->res; @@ -738,7 +739,7 @@ static void acpi_pci_root_remap_iospace(struct resource_entry *entry) resource_size_t length = resource_size(res); unsigned long port; - if (pci_register_io_range(cpu_addr, length)) + if (pci_register_io_range(fwnode, cpu_addr, length)) goto err; port = pci_address_to_pio(cpu_addr); @@ -780,7 +781,8 @@ int acpi_pci_probe_root_resources(struct acpi_pci_root_info *info) else { resource_list_for_each_entry_safe(entry, tmp, list) { if (entry->res->flags & IORESOURCE_IO) - acpi_pci_root_remap_iospace(entry); + acpi_pci_root_remap_iospace(&device->fwnode, + entry); if (entry->res->flags & IORESOURCE_DISABLED) resource_list_destroy_entry(entry); diff --git a/drivers/of/address.c b/drivers/of/address.c index 580bbf6..9d3ba07 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c @@ -2,6 +2,7 @@ #define pr_fmt(fmt) "OF: " fmt #include +#include #include #include #include @@ -323,7 +324,8 @@ int of_pci_range_to_resource(struct of_pci_range *range, if (res->flags & IORESOURCE_IO) { unsigned long port; - err = pci_register_io_range(range->cpu_addr, range->size); + err = pci_register_io_range(&np->fwnode, range->cpu_addr, + range->size); if (err) goto invalid_range; port = pci_address_to_pio(range->cpu_addr); diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index eee967c..bcecb47 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3270,7 +3270,8 @@ static DEFINE_SPINLOCK(io_range_lock); * Record the PCI IO range (expressed as CPU physical address + size). * Return a negative value if an error has occured, zero otherwise */ -int pci_register_io_range(phys_addr_t addr, resource_size_t size) +int pci_register_io_range(struct fwnode_handle *fwnode, phys_addr_t addr, + resource_size_t size) { int err = 0; diff --git a/include/linux/pci.h b/include/linux/pci.h index 4869e66..1d958d7 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -1205,7 +1205,8 @@ int __must_check pci_bus_alloc_resource(struct pci_bus *bus, void *alignf_data); -int pci_register_io_range(phys_addr_t addr, resource_size_t size); +int pci_register_io_range(struct fwnode_handle *fwnode, phys_addr_t addr, + resource_size_t size); unsigned long pci_address_to_pio(phys_addr_t addr); phys_addr_t pci_pio_to_address(unsigned long pio); int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr); From patchwork Fri Oct 27 16:11:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gabriele Paoloni X-Patchwork-Id: 117365 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp947920qgn; Fri, 27 Oct 2017 09:14:49 -0700 (PDT) X-Google-Smtp-Source: ABhQp+TGmzHq/eAt2NiUtlK1MwT5PcLV/PdZ1hKgWAtjwJ6fCre/BV8IjSt8NKoMTvQ9T2j7PpQ5 X-Received: by 10.99.3.21 with SMTP id 21mr684824pgd.77.1509120889151; Fri, 27 Oct 2017 09:14:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509120889; cv=none; d=google.com; s=arc-20160816; b=l/aHExF1X3ZhT7pmcF1kjhpX6OzgyHADtB1eGVdxYNY+5bF9nW1akYhNiexpBRDumH OPP28Ntspvw/V8JQAkHghUL7/FI+rFd1LZBg8yi6tPT5vkqTr5g7RxbRmxaiI97Grj8b ji2nkrrI3JGvI5jZPPrawyO6L8SE77PByOaGHnWjnhjBiqW4l5Iwqr5QK3gCtPjrwpGY 625WvzG7Mop1j0/UwJC913e9+gG7XipRqI2DREYsgtFOxq4bWZCRF0GMH9gX6Y3XQ6PF nmFOgyspx9GBXR2Wj3PSz6bpoZlESIJsYSt80DfKWwD8eHXZpruIR5Fz7U2sJdv7oz4l 0RYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=XgN4sff3weY1OPp9FA5XUX3t+02iEjlfJYe5Mp/xn6E=; b=Pl2MsoNrir7JP1+3BinysxTWbvWkYPMgskBYgsbMcMu83xSZR6wiBouqvkrTEzTms2 861CJMHGk6RnZdnG7mKccU5txa6M6+fOFDqXrDchuhBo3B+lCi3rVJ/y6YnY4cATEJdl 5okKrnf80bvPAuauyIQiTecVx5CCOBQYe8/qsNFTwWTBfMr9rk0vowvOz+yJbSmJFcdM 1kTopgrC6nXDEEiZ0ZvQO4uJtFWxh1M7M7mbJH0ASF/mBRmHrazD0PWFvgBYzdSQA1dH TcOuLmnkS+kHeivqHQ77xTPyuw0CUQueKRJgYLJvv8lVHp+x144yNZExf4HmOrEpvqNt zZag== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 14si4581727ple.239.2017.10.27.09.14.48; Fri, 27 Oct 2017 09:14:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752624AbdJ0QOs (ORCPT + 27 others); Fri, 27 Oct 2017 12:14:48 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:9448 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752530AbdJ0QOp (ORCPT ); Fri, 27 Oct 2017 12:14:45 -0400 Received: from 172.30.72.58 (EHLO DGGEMS414-HUB.china.huawei.com) ([172.30.72.58]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DJX16565; Sat, 28 Oct 2017 00:14:39 +0800 (CST) Received: from G00308965-DELL1.china.huawei.com (10.202.226.113) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.361.1; Sat, 28 Oct 2017 00:12:48 +0800 From: Gabriele Paoloni To: , , , , , , , , CC: , , , , , , , , , , , , "zhichang.yuan" Subject: [PATCH v10 5/9] OF: Add missing I/O range exception for indirect-IO devices Date: Fri, 27 Oct 2017 17:11:23 +0100 Message-ID: <1509120687-7352-6-git-send-email-gabriele.paoloni@huawei.com> X-Mailer: git-send-email 2.7.1.windows.1 In-Reply-To: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> References: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.226.113] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020203.59F35B6F.0144, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: d3057f1d5ea9f59b20f45be4aa1c4bdb Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "zhichang.yuan" There are some special ISA/LPC devices that work on a specific I/O range where it is not correct to specify a 'ranges' property in DTS parent node as cpu addresses translated from DTS node are only for memory space on some architectures, such as Arm64. Without the parent 'ranges' property, current of_translate_address() return an error. Here we add special handlings for this case. During the OF address translation, some checkings will be perfromed to identify whether the device node is registered as indirect-IO. If yes, the I/O translation will be done in a different way from that one of PCI MMIO. In this way, the I/O 'reg' property of the special ISA/LPC devices will be parsed correctly. Signed-off-by: zhichang.yuan Signed-off-by: Gabriele Paoloni Signed-off-by: Arnd Bergmann #earlier draft Acked-by: Rob Herring --- drivers/of/address.c | 91 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 75 insertions(+), 16 deletions(-) -- 2.7.4 diff --git a/drivers/of/address.c b/drivers/of/address.c index 9d3ba07..323ee56 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c @@ -551,9 +551,14 @@ static int of_translate_one(struct device_node *parent, struct of_bus *bus, * that translation is impossible (that is we are not dealing with a value * that can be mapped to a cpu physical address). This is not really specified * that way, but this is traditionally the way IBM at least do things + * + * Whenever the translation fails, the *host pointer will be set to the + * device that had registered logical PIO mapping, and the return code is + * relative to that node. */ static u64 __of_translate_address(struct device_node *dev, - const __be32 *in_addr, const char *rprop) + const __be32 *in_addr, const char *rprop, + struct device_node **host) { struct device_node *parent = NULL; struct of_bus *bus, *pbus; @@ -566,6 +571,7 @@ static u64 __of_translate_address(struct device_node *dev, /* Increase refcount at current level */ of_node_get(dev); + *host = NULL; /* Get parent & match bus type */ parent = of_get_parent(dev); if (parent == NULL) @@ -586,6 +592,8 @@ static u64 __of_translate_address(struct device_node *dev, /* Translate */ for (;;) { + struct logic_pio_hwaddr *iorange; + /* Switch to parent bus */ of_node_put(dev); dev = parent; @@ -598,6 +606,19 @@ static u64 __of_translate_address(struct device_node *dev, break; } + /* + * For indirectIO device which has no ranges property, get + * the address from reg directly. + */ + iorange = find_io_range_by_fwnode(&dev->fwnode); + if (iorange && (iorange->flags != PIO_CPU_MMIO)) { + result = of_read_number(addr + 1, na - 1); + pr_debug("indirectIO matched(%s) 0x%llx\n", + of_node_full_name(dev), result); + *host = of_node_get(dev); + break; + } + /* Get new parent bus and counts */ pbus = of_match_bus(parent); pbus->count_cells(dev, &pna, &pns); @@ -630,13 +651,32 @@ static u64 __of_translate_address(struct device_node *dev, u64 of_translate_address(struct device_node *dev, const __be32 *in_addr) { - return __of_translate_address(dev, in_addr, "ranges"); + struct device_node *host; + u64 ret; + + ret = __of_translate_address(dev, in_addr, "ranges", &host); + if (host) { + of_node_put(host); + return OF_BAD_ADDR; + } + + return ret; } EXPORT_SYMBOL(of_translate_address); u64 of_translate_dma_address(struct device_node *dev, const __be32 *in_addr) { - return __of_translate_address(dev, in_addr, "dma-ranges"); + struct device_node *host; + u64 ret; + + ret = __of_translate_address(dev, in_addr, "dma-ranges", &host); + + if (host) { + of_node_put(host); + return OF_BAD_ADDR; + } + + return ret; } EXPORT_SYMBOL(of_translate_dma_address); @@ -678,29 +718,48 @@ const __be32 *of_get_address(struct device_node *dev, int index, u64 *size, } EXPORT_SYMBOL(of_get_address); +static u64 of_translate_ioport(struct device_node *dev, const __be32 *in_addr, + u64 size) +{ + u64 taddr; + unsigned long port; + struct device_node *host; + + taddr = __of_translate_address(dev, in_addr, "ranges", &host); + if (host) { + /* host specific port access */ + port = logic_pio_trans_hwaddr(&host->fwnode, taddr, size); + of_node_put(host); + } else { + /* memory mapped I/O range */ + port = pci_address_to_pio(taddr); + } + + if (port == (unsigned long)-1) + return OF_BAD_ADDR; + + return port; +} + static int __of_address_to_resource(struct device_node *dev, const __be32 *addrp, u64 size, unsigned int flags, const char *name, struct resource *r) { u64 taddr; - if ((flags & (IORESOURCE_IO | IORESOURCE_MEM)) == 0) + if (flags & IORESOURCE_MEM) + taddr = of_translate_address(dev, addrp); + else if (flags & IORESOURCE_IO) + taddr = of_translate_ioport(dev, addrp, size); + else return -EINVAL; - taddr = of_translate_address(dev, addrp); + if (taddr == OF_BAD_ADDR) return -EINVAL; memset(r, 0, sizeof(struct resource)); - if (flags & IORESOURCE_IO) { - unsigned long port; - port = pci_address_to_pio(taddr); - if (port == (unsigned long)-1) - return -EINVAL; - r->start = port; - r->end = port + size - 1; - } else { - r->start = taddr; - r->end = taddr + size - 1; - } + + r->start = taddr; + r->end = taddr + size - 1; r->flags = flags; r->name = name ? name : dev->full_name; From patchwork Fri Oct 27 16:11:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gabriele Paoloni X-Patchwork-Id: 117368 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp948279qgn; Fri, 27 Oct 2017 09:15:09 -0700 (PDT) X-Google-Smtp-Source: ABhQp+Qik5ebcSZnSSYx8KwruouPoHFPcKa9KKUrFQmiVa80bmXemubHLWzULF7eecJO9rvdLHO8 X-Received: by 10.84.216.9 with SMTP id m9mr784453pli.16.1509120909254; Fri, 27 Oct 2017 09:15:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509120909; cv=none; d=google.com; s=arc-20160816; b=KoRV3BsNg7D1MWztX0JspxiaSFABL0MG5724SRkdiI6txqtdgIEn9a73QmUOAi8vL7 /+CrWKMe+mCn2934wvzG0s47Y8CPddqvZAS7jicQFybmLrqPxHkZSvMA5OHfKo/wuiMg WaNA5HbebKeT7kgHyuKiW6yCcN9G2nT2wrgg/UJDIR0InRpfsF/ZhazWgnVjPVajgUmf ykkK1deOKaweKIAbcUP4kzFGGR5W/2Q92mMYe6RBmcVCB2ocUqiLba3pIDnjCDMHfdba rDNksQkcna7zFQkd2C8eRi5//OQbwoSAmnJDGcF3TbX/kxNiaIRHDaHV9beUjSBLr/JB V2Zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=96cGiCtgKS6J7OpcP4cH0Wu+WcB83PCWgHBRacwpgwM=; b=K2DWacIbUkdooAICGIR5ehzJgM0a5pAzQXev/f4fT7aliCeamUfp8bT+KZmQ8D/zX2 2WSy/Y/MwkAUCTUjGHAZT54cgSq3WlRJwvKWmeYeOagVisotqN5oXk/nrtpc205de34q Q6tq/Ab7PvRQDtOSeJKKlLdLkmOSvQgNHJyL2qTosr0WUF3mCKLLXjRchgq8VR1sXyLb sAU/vkXeiyddsxSge3qiwIQLPaZtqjvxVjbvsqiACpmRBcloj6kUcfBIFoN1GeG+cm76 DeLrfxSou5eOHNXWU8D+ionxwAUdZ9Aic1OBkP4Gyf/VRofXAgztLq2SdHTKjnFR1bnQ U5Yw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f4si5099506pgr.306.2017.10.27.09.15.08; Fri, 27 Oct 2017 09:15:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752726AbdJ0QPH (ORCPT + 27 others); Fri, 27 Oct 2017 12:15:07 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:9450 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752539AbdJ0QOt (ORCPT ); Fri, 27 Oct 2017 12:14:49 -0400 Received: from 172.30.72.58 (EHLO DGGEMS414-HUB.china.huawei.com) ([172.30.72.58]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DJX16571; Sat, 28 Oct 2017 00:14:40 +0800 (CST) Received: from G00308965-DELL1.china.huawei.com (10.202.226.113) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.361.1; Sat, 28 Oct 2017 00:13:04 +0800 From: Gabriele Paoloni To: , , , , , , , , CC: , , , , , , , , , , , , "zhichang.yuan" Subject: [PATCH v10 8/9] LPC: Add the ACPI LPC support Date: Fri, 27 Oct 2017 17:11:26 +0100 Message-ID: <1509120687-7352-9-git-send-email-gabriele.paoloni@huawei.com> X-Mailer: git-send-email 2.7.1.windows.1 In-Reply-To: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> References: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.226.113] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020204.59F35B70.016F, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 64e5a2f428088c0b3bdf29ea63aee021 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "zhichang.yuan" Based on the provious patches, this patch supports the ACPI LPC host on Hip06/Hip07. Signed-off-by: zhichang.yuan Signed-off-by: John Garry Signed-off-by: Gabriele Paoloni Tested-by: dann frazier --- drivers/acpi/arm64/acpi_indirectio.c | 3 + drivers/acpi/arm64/acpi_indirectio.h | 4 + drivers/bus/hisi_lpc.c | 164 +++++++++++++++++++++++++++++++---- 3 files changed, 154 insertions(+), 17 deletions(-) -- 2.7.4 diff --git a/drivers/acpi/arm64/acpi_indirectio.c b/drivers/acpi/arm64/acpi_indirectio.c index 013db6f..424f3bd 100644 --- a/drivers/acpi/arm64/acpi_indirectio.c +++ b/drivers/acpi/arm64/acpi_indirectio.c @@ -123,6 +123,9 @@ int acpi_set_logicio_resource(struct device *child, /* All the host devices which apply indirect-IO can be listed here. */ static const struct acpi_device_id acpi_indirect_host_id[] = { +#ifdef CONFIG_HISILICON_LPC + {"HISI0191", INDIRECT_IO_INFO(lpc_host_desc)}, +#endif {""}, }; diff --git a/drivers/acpi/arm64/acpi_indirectio.h b/drivers/acpi/arm64/acpi_indirectio.h index 8102ea0..1b18590 100644 --- a/drivers/acpi/arm64/acpi_indirectio.h +++ b/drivers/acpi/arm64/acpi_indirectio.h @@ -18,6 +18,10 @@ struct indirectio_device_desc { int (*pre_setup)(struct acpi_device *adev, void *pdata); }; +#ifdef CONFIG_HISILICON_LPC +extern const struct indirectio_device_desc lpc_host_desc; +#endif + int acpi_set_logicio_resource(struct device *child, struct device *hostdev, const struct resource **res, int *num_res); diff --git a/drivers/bus/hisi_lpc.c b/drivers/bus/hisi_lpc.c index c885483..26043f7 100644 --- a/drivers/bus/hisi_lpc.c +++ b/drivers/bus/hisi_lpc.c @@ -438,7 +438,6 @@ static int hisilpc_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct resource *res; struct hisilpc_dev *lpcdev; - struct logic_pio_hwaddr *range; int ret = 0; lpcdev = devm_kzalloc(dev, sizeof(struct hisilpc_dev), GFP_KERNEL); @@ -460,21 +459,32 @@ static int hisilpc_probe(struct platform_device *pdev) } /* register the LPC host PIO resources */ - range = devm_kzalloc(dev, sizeof(*range), GFP_KERNEL); - if (!range) - return -ENOMEM; - range->fwnode = dev->fwnode; - range->flags = PIO_INDIRECT; - range->size = LPC_BUS_IO_SIZE; - range->hw_start = LPC_MIN_BUS_RANGE; - - ret = logic_pio_register_range(range); - if (ret) { - kfree(range); - dev_err(dev, "OF: register IO range FAIL!\n"); - return -ret; + if (has_acpi_companion(dev)) { + lpcdev->io_host = find_io_range_by_fwnode(dev->fwnode); + if (!lpcdev->io_host) { + dev_err(dev, "HiSilicon LPC range not registered!\n"); + return -EFAULT; + } + } else { + struct logic_pio_hwaddr *range; + + range = devm_kzalloc(dev, sizeof(*range), GFP_KERNEL); + if (!range) + return -ENOMEM; + range->fwnode = dev->fwnode; + range->flags = PIO_INDIRECT; + range->size = LPC_BUS_IO_SIZE; + range->hw_start = LPC_MIN_BUS_RANGE; + + ret = logic_pio_register_range(range); + if (ret) { + kfree(range); + dev_err(dev, "OF: register IO range FAIL!\n"); + return -ret; + } + lpcdev->io_host = range; } - lpcdev->io_host = range; + lpcdev->io_host->devpara = lpcdev; lpcdev->io_host->ops = &hisi_lpc_ops; @@ -486,8 +496,11 @@ static int hisilpc_probe(struct platform_device *pdev) * to avoid some children which complete the scanning trigger the * MMIO accesses which will probably cause panic. */ - dev_info(dev, " calling of_platform_populate"); - ret = of_platform_populate(dev->of_node, NULL, NULL, dev); + if (!has_acpi_companion(dev)) { + dev_info(dev, " calling of_platform_populate"); + ret = of_platform_populate(dev->of_node, NULL, NULL, dev); + } + if (ret) { /* * When LPC probing is not completely successful, set 'devpara' @@ -515,10 +528,127 @@ static const struct of_device_id hisilpc_of_match[] = { {}, }; +#ifdef CONFIG_ACPI +#include "../acpi/arm64/acpi_indirectio.h" +#include + +struct lpc_private_data { + resource_size_t io_size; + resource_size_t io_start; +}; + +static struct lpc_private_data lpc_data = { + .io_size = LPC_BUS_IO_SIZE, + .io_start = LPC_MIN_BUS_RANGE, +}; + +static struct mfd_cell_acpi_match hisi_lpc_ipmi_acpi_match = { + .pnpid = "IPI0001", +}; + +static const char *hisi_lpc_ipmi_name = "hisi_lpc_ipmi"; + +static int lpc_host_io_setup(struct acpi_device *adev, void *pdata) +{ + int ret; + struct platform_device *pdev; + struct mfd_cell *ipmi_devs; + struct logic_pio_hwaddr *range; + struct lpc_private_data *lpc_private; + struct acpi_device *child; + int ipmi_dev_num = 0; + + lpc_private = pdata; + range = kzalloc(sizeof(*range), GFP_KERNEL); + if (!range) + return -ENOMEM; + range->fwnode = &adev->fwnode; + range->flags = PIO_INDIRECT; + range->size = lpc_private->io_size; + range->hw_start = lpc_private->io_start; + + ret = logic_pio_register_range(range); + if (ret) + goto free_range; + + /* count the ipmi children first */ + list_for_each_entry(child, &adev->children, node) { + if (!strcmp(hisi_lpc_ipmi_acpi_match.pnpid, + acpi_device_hid(child))) + ipmi_dev_num++; + } + + /* allocate the mfd cells */ + ipmi_devs = kcalloc(ipmi_dev_num, sizeof(*ipmi_devs), GFP_KERNEL); + if (!ipmi_devs) { + dev_err(&adev->dev, "ipmi_devs kzalloc failed!\n"); + ret = -ENOMEM; + goto free_range; + } + + ipmi_dev_num = 0; + /* For hisilpc, only care about the sons of host. */ + list_for_each_entry(child, &adev->children, node) { + if (!strcmp(hisi_lpc_ipmi_acpi_match.pnpid, + acpi_device_hid(child))) { + ipmi_devs[ipmi_dev_num].name = hisi_lpc_ipmi_name; + ipmi_devs[ipmi_dev_num].acpi_match = + &hisi_lpc_ipmi_acpi_match; + ret = acpi_set_logicio_resource(&child->dev, &adev->dev, + &ipmi_devs[ipmi_dev_num].resources, + &ipmi_devs[ipmi_dev_num].num_resources); + if (ret) { + dev_err(&child->dev, "set resource failed..\n"); + goto free_ipmi_devs; + } + ipmi_dev_num++; + } + } + + pdev = acpi_create_platform_device(adev, NULL); + if (IS_ERR_OR_NULL(pdev)) { + dev_err(&adev->dev, "Create platform device for host FAIL!\n"); + ret = -EFAULT; + goto free_ipmi_devs; + } + acpi_device_set_enumerated(adev); + + ret = mfd_add_devices(&pdev->dev, PLATFORM_DEVID_NONE, + ipmi_devs, ipmi_dev_num, NULL, 0, NULL); + if (ret) { + dev_err(&pdev->dev, "failed to add ipmi mfd cell\n"); + goto free_ipmi_devs; + } + + return ret; + +free_ipmi_devs: + while (ipmi_dev_num--) + kfree(ipmi_devs[ipmi_dev_num].resources); + kfree(ipmi_devs); +free_range: + kfree(range); + + return ret; +} + +static const struct acpi_device_id hisilpc_acpi_match[] = { + {"HISI0191", }, + {}, +}; + +const struct indirectio_device_desc lpc_host_desc = { + .pdata = &lpc_data, + .pre_setup = lpc_host_io_setup, +}; + +#endif + static struct platform_driver hisilpc_driver = { .driver = { .name = "hisi_lpc", .of_match_table = hisilpc_of_match, + .acpi_match_table = ACPI_PTR(hisilpc_acpi_match), }, .probe = hisilpc_probe, }; From patchwork Fri Oct 27 16:11:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gabriele Paoloni X-Patchwork-Id: 117372 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp949747qgn; Fri, 27 Oct 2017 09:16:28 -0700 (PDT) X-Google-Smtp-Source: ABhQp+RejeQMeA8uJtubOW8Ov0mjMHj7o0Sj8ctM8bNxdU5INZSjT+VoQBkIdnNzbpkkuXUq35kE X-Received: by 10.84.238.136 with SMTP id v8mr767584plk.116.1509120988677; Fri, 27 Oct 2017 09:16:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509120988; cv=none; d=google.com; s=arc-20160816; b=nfPK+ybJ5scImAqm0tqImTWVptMn2CnywbbOtTAi9T/NXRemQIIBLGyz+SDWwcErxY hRDniD3WVRvpINaMblEu83C/+R3fDP0OG8iWlRwCaSTN5PHRJvyHibNVY2uYUmlG0XFZ EROlM09WKOFy9Z0GZjb34UE3M/ydu7VYDd210TFMGJ52PZfU726FK2rGPgGqD8i9r8Sx LmYy1gaE89DW4Xu9NeM84mvwuFAWm4J0bzBnBWLg9Xo4sQ7P08InC0Bhji4jx7orgYJY zQ6mb6AGICnpvK4ATizV67bg7QlvBd/av81sbPLROQfWXHyS5a2Db3XxMO3FLT5cy2Gl ffHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=DRH1SJr/sb+SMTvZXmttjXTyP69yq3mVndLnoPMjIPE=; b=RFQ2Py5MhAUxt/ceTxf3XMHQMz5RFGdygQfoqZptbbGPUGuX5FZyC44WlmaS1Qny8z VX4rc+SDacuiP2gN79TSbZfXG/1TIg6jORbpsQFEufXzRfeVO213Mo+LXcVlZpbOl9DF IUd85xsrlaOTRE8C+XnhLyfl7CCcgg+F7d8ztq6EP7pUPxK63gUY5f7Vzy859QipA0t7 ZqQAQUV7MKSAywxbK4er2nqU2PiFlbU9p5Pi7tpt1kweldUz0unHL0cb8jXR5/lve+8E iCanQr/twehTdDyESDuisDTNFHbTSrtzAdASpMbTXfobQTp586dvt8MY/KOp9snljZ8b N7OQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i1si4623010pll.306.2017.10.27.09.16.28; Fri, 27 Oct 2017 09:16:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752517AbdJ0QQY (ORCPT + 27 others); Fri, 27 Oct 2017 12:16:24 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:9451 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752569AbdJ0QOw (ORCPT ); Fri, 27 Oct 2017 12:14:52 -0400 Received: from 172.30.72.58 (EHLO DGGEMS414-HUB.china.huawei.com) ([172.30.72.58]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DJX16573; Sat, 28 Oct 2017 00:14:40 +0800 (CST) Received: from G00308965-DELL1.china.huawei.com (10.202.226.113) by DGGEMS414-HUB.china.huawei.com (10.3.19.214) with Microsoft SMTP Server id 14.3.361.1; Sat, 28 Oct 2017 00:13:09 +0800 From: Gabriele Paoloni To: , , , , , , , , CC: , , , , , , , , , , , Subject: [PATCH v10 9/9] MANTAINERS: Add maintainer for HiSilicon LPC driver Date: Fri, 27 Oct 2017 17:11:27 +0100 Message-ID: <1509120687-7352-10-git-send-email-gabriele.paoloni@huawei.com> X-Mailer: git-send-email 2.7.1.windows.1 In-Reply-To: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> References: <1509120687-7352-1-git-send-email-gabriele.paoloni@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.202.226.113] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020206.59F35B71.011F, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: fb599be21189fc663ec2511fb904cde7 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Added maintainer for drivers/bus/hisi_lpc.c Signed-off-by: Gabriele Paoloni --- MAINTAINERS | 7 +++++++ 1 file changed, 7 insertions(+) -- 2.7.4 diff --git a/MAINTAINERS b/MAINTAINERS index f66488d..b49d4c0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6130,6 +6130,13 @@ F: include/uapi/linux/if_hippi.h F: net/802/hippi.c F: drivers/net/hippi/ +HISILICON LPC BUS DRIVER +L: linuxarm@huawei.com +W: http://www.hisilicon.com +S: Maintained +F: drivers/bus/hisi_lpc.c +F: Documentation/devicetree/bindings/arm/hisilicon/hisilicon-low-pin-count.txt + HISILICON NETWORK SUBSYSTEM DRIVER M: Yisen Zhuang M: Salil Mehta