Received: by 2002:ac0:950e:0:0:0:0:0 with SMTP id f14csp1068070imc; Sun, 17 Mar 2019 03:04:19 -0700 (PDT) X-Google-Smtp-Source: APXvYqyt5c7mwM2j/rRBLk0ErBr0Fi4/UgcS/T8YFyWqyd95qorQZvOJQziEWXDmZGSYJkfrkjVo X-Received: by 2002:a62:4e8a:: with SMTP id c132mr13280674pfb.24.1552817059787; Sun, 17 Mar 2019 03:04:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552817059; cv=none; d=google.com; s=arc-20160816; b=U6NbTtHycRc9IYdKf5d6RnBDcK1ToJgFF/bhaJMValkw2XlNI4MUvGXqYg3/Y5y7yU oMgxROcLqTiP2LV1TqdZ0AZt7/SqjT5U9VPghe/TOE5ZaYHrfyV/q2n2t8O3r6p7M+Pr ryz6ukYjpbmVvWbu2HGmsW4Iil5T/W3Zc7VYEr3g/G80yOE5fjCA1VzQ2ocaJVWfpTfE O/BU9DHrvgp5EPj+WFVrIGC4XGAUuU0NOdmZGhjoXtk7kZokLcXhbtNxt3AyheYPJtbQ eY2+3LkOhKUtvkMT460ptd98ed155OiANUXAq/nk2or7PA50f0itsfDAPsXrhD5lE/WB p3SQ== 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; bh=FSZBubE91wraJeuepVX7QclZGbKNhDBw+oBQOhcc/80=; b=OtWNZ+OofgG+Ld4Dz73ljEUwLxScTb1w0re17Y6OeDGkilNvazCEc31CrLKacA2Uic TscM1feUxw0WjCFrtlepAJ+zKvhI62foYmZqV+8WlLDIFekdRsYnXkbDEZpUcIX6LzGa WBC1EjcRVPh6Mtu/Vs9LnpksmIiAd8GMsyU2XKT8yQg9rYuU7A0eF5TEz/NDmW1rCLow 59RSAKyZ2a7+s+IwBCoR/Ct/2FOTYYUvsljMXql8fHXMGaTZpdkr273zKG746sZsDVNX z24Lj5iFB/i+yvPEDT5RtGGmWO0vyAqUlTVRbv7sHchF6HMA2HxZS5pyvOKafwlNbZyB Zlew== 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 f11si6039334pgo.43.2019.03.17.03.04.04; Sun, 17 Mar 2019 03:04:19 -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 S1726981AbfCQKDS (ORCPT + 99 others); Sun, 17 Mar 2019 06:03:18 -0400 Received: from www1102.sakura.ne.jp ([219.94.129.142]:53067 "EHLO www1102.sakura.ne.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725903AbfCQKDS (ORCPT ); Sun, 17 Mar 2019 06:03:18 -0400 Received: from fsav305.sakura.ne.jp (fsav305.sakura.ne.jp [153.120.85.136]) by www1102.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id x2HA3ESr083175; Sun, 17 Mar 2019 19:03:14 +0900 (JST) (envelope-from katsuhiro@katsuster.net) Received: from www1102.sakura.ne.jp (219.94.129.142) by fsav305.sakura.ne.jp (F-Secure/fsigk_smtp/530/fsav305.sakura.ne.jp); Sun, 17 Mar 2019 19:03:14 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/530/fsav305.sakura.ne.jp) Received: from localhost.localdomain (118.153.231.153.ap.dti.ne.jp [153.231.153.118]) (authenticated bits=0) by www1102.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id x2HA39bk083146 (version=TLSv1.2 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 17 Mar 2019 19:03:14 +0900 (JST) (envelope-from katsuhiro@katsuster.net) From: Katsuhiro Suzuki To: Vinod Koul , dmaengine@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Katsuhiro Suzuki Subject: [PATCH v2] dmaengine: pl330: introduce debugfs interface Date: Sun, 17 Mar 2019 19:03:06 +0900 Message-Id: <20190317100306.18405-1-katsuhiro@katsuster.net> X-Mailer: git-send-email 2.20.1 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 This patch adds debugfs interface to show the relationship between DMA threads (hardware resource for transferring data) and DMA channel ID of DMA slave. Typically, PL330 has many slaves than number of DMA threads. So sometimes PL330 cannot allocate DMA threads for all slaves even if a user specify DMA channel ID in devicetree. This interface will be useful for checking that DMA threads are allocated or not. Below is an output sample: $ sudo cat /sys/kernel/debug/ff1f0000.dmac PL330 physical channels: THREAD: CHANNEL: -------- ----- 0 8 1 9 2 11 3 12 4 14 5 15 6 10 7 -- Signed-off-by: Katsuhiro Suzuki --- drivers/dma/pl330.c | 51 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index eec79fdf27a5..c72f6fd79c43 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c @@ -11,6 +11,7 @@ * (at your option) any later version. */ +#include #include #include #include @@ -2896,6 +2897,55 @@ static irqreturn_t pl330_irq_handler(int irq, void *data) BIT(DMA_SLAVE_BUSWIDTH_4_BYTES) | \ BIT(DMA_SLAVE_BUSWIDTH_8_BYTES) +#ifdef CONFIG_DEBUG_FS +static int pl330_debugfs_show(struct seq_file *s, void *data) +{ + struct pl330_dmac *pl330 = s->private; + int chans, pchs, ch, pr; + + chans = pl330->pcfg.num_chan; + pchs = pl330->num_peripherals; + + seq_puts(s, "PL330 physical channels:\n"); + seq_puts(s, "THREAD:\t\tCHANNEL:\n"); + seq_puts(s, "--------\t-----\n"); + for (ch = 0; ch < chans; ch++) { + struct pl330_thread *thrd = &pl330->channels[ch]; + int found = -1; + + for (pr = 0; pr < pchs; pr++) { + struct dma_pl330_chan *pch = &pl330->peripherals[pr]; + + if (!pch->thread || thrd->id != pch->thread->id) + continue; + + found = pr; + } + + seq_printf(s, "%d\t\t", thrd->id); + if (found == -1) + seq_puts(s, "--\n"); + else + seq_printf(s, "%d\n", found); + } + + return 0; +} + +DEFINE_SHOW_ATTRIBUTE(pl330_debugfs); + +static inline void init_pl330_debugfs(struct pl330_dmac *pl330) +{ + debugfs_create_file(dev_name(pl330->ddma.dev), + S_IFREG | 0444, NULL, pl330, + &pl330_debugfs_fops); +} +#else +static inline void init_pl330_debugfs(struct pl330_dmac *pl330) +{ +} +#endif + /* * Runtime PM callbacks are provided by amba/bus.c driver. * @@ -3082,6 +3132,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) dev_err(&adev->dev, "unable to set the seg size\n"); + init_pl330_debugfs(pl330); dev_info(&adev->dev, "Loaded driver for PL330 DMAC-%x\n", adev->periphid); dev_info(&adev->dev, -- 2.20.1