Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp2852808ybh; Mon, 5 Aug 2019 07:53:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqzrLxlLTvKOfegwE4gC/hnhUX2qCXKJurVsy3ktmGm5Q86F3FPS4zJJRaSGt33hBZ5sb2Rv X-Received: by 2002:aa7:957c:: with SMTP id x28mr73140535pfq.42.1565016831218; Mon, 05 Aug 2019 07:53:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565016831; cv=none; d=google.com; s=arc-20160816; b=ZfsqgWzvHwjZJJRkG/lUIRO/16tM1+9I8mGjNP+5qs5i/4Mh1M06Ljp9QVhxFQeQZT EIkiYWgzsXAtBwJJZviwjQuzi3juMvTKlNbWTYMNf1xV25Rh0uB2m4JrAdIQ6l3ws1JY RwXiCVE8+5csQY3/ps8SZiqt2aIQgZx8TI7qGtrGYT0U0fzRqxOTi17Iitn4HeBXpy4r pka7zmytdXWuS1YVfoDuF0YRjGJ/TatfnnFHEQ57JB69+P626wc3qujpYGkZwgh0CdkL jcCLSf3a4oIwV97bVT2fkQQSDarHGx5QwGpYLfnvvdSp0JMLkIundqE0yryAWEFgwc2q T8hA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=s14C0abfsXQo0iTYiCHPXikLqb3bdBDxB43osf+oFS8=; b=TTJXCV2HVvnHkYOZdynZ8OB5LxfQAtTZQbwmxfdXuLYq9q4sM9hFC1/wiRkCUdvdLp MUmCKl24MWnmfUndf3+J6xY74U652QV9sX/pqU01Y3UAqxQPNXIUj38xYKNrteHsTEUh FIhEfRaDmqjdwCtuM++tMJMAuttw5/HeOKvSKQRrHsVF9XVZS7Nq2wKDjISQEw0+PCx6 r44NR4f2jaeWUlRioF3VAIY9X9Hx8xKiJ7tmcivDp43WTugXeSy73vVbIzQzxbP6HXJG /SR/b46aMBs0pxBIgZz3Ri8DQw6trRR9tN37cDC7wRYNMkAx7NbfZyWizXdfWEs+KqTy gbow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="PEQ9/csD"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n18si41379725plp.215.2019.08.05.07.53.35; Mon, 05 Aug 2019 07:53:51 -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; dkim=pass header.i=@kernel.org header.s=default header.b="PEQ9/csD"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729190AbfHEOw7 (ORCPT + 99 others); Mon, 5 Aug 2019 10:52:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:35096 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728824AbfHEOw7 (ORCPT ); Mon, 5 Aug 2019 10:52:59 -0400 Received: from localhost.localdomain (cpe-70-114-128-244.austin.res.rr.com [70.114.128.244]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5818F206C1; Mon, 5 Aug 2019 14:52:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565016778; bh=Cqmt7tjneQ4HtnjP8OfwvCqlK3SonszeggbFy2Va2d4=; h=From:To:Cc:Subject:Date:From; b=PEQ9/csDEthrHxgmCsXGzDcHkMBtOo3l70WrvEK4o+R3MnxVMxnEnZHS1Ek7Jkw2l CuXiBDjE9qMvXHCw+0N9Dxwun5RIO3uL6WRzQpkBlI/PSTTbZ+cisuUVQxcjQ33Wdw lDL5Wit0Q5LR23b9PjnxnSbcfHXJx2+D2HPVhowI= From: Dinh Nguyen To: devicetree@vger.kernel.org Cc: dinguyen@kernel.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, frowand.list@gmail.com, keescook@chromium.org, anton@enomsg.org, ccross@android.com, tony.luck@intel.com Subject: [PATCHv2] drivers/amba: add reset control to primecell probe Date: Mon, 5 Aug 2019 09:52:11 -0500 Message-Id: <20190805145211.23161-1-dinguyen@kernel.org> X-Mailer: git-send-email 2.20.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The primecell controller on some SoCs, i.e. SoCFPGA, is held in reset by default. Until recently, the DMA controller was brought out of reset by the bootloader(i.e. U-Boot). But a recent change in U-Boot, the peripherals that are not used are held in reset and are left to Linux to bring them out of reset. Add a mechanism for getting the reset property and de-assert the primecell module from reset if found. This is a not a hard fail if the reset property is not present in the device tree node, so the driver will continue to probe. Because there are different variants of the controller that may have multiple reset signals, the code will find all reset(s) specified and de-assert them. Signed-off-by: Dinh Nguyen --- v2: move reset control to bus code find all reset properties and de-assert them --- drivers/amba/bus.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c index 100e798a5c82..75e18b9e4808 100644 --- a/drivers/amba/bus.c +++ b/drivers/amba/bus.c @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -401,6 +402,18 @@ static int amba_device_try_add(struct amba_device *dev, struct resource *parent) ret = amba_get_enable_pclk(dev); if (ret == 0) { u32 pid, cid; + int count; + struct reset_control *rstc; + + /* + * Find reset control(s) of the amba bus and de-assert them. + */ + count = reset_control_get_count(&dev->dev); + while (count > 0) { + rstc = of_reset_control_get_shared_by_index(dev->dev.of_node, count - 1); + reset_control_deassert(rstc); + count--; + } /* * Read pid and cid based on size of resource -- 2.20.0