From nobody Mon Sep 16 19:46:34 2024 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6DD1CE7AD64 for ; Tue, 3 Oct 2023 14:54:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240224AbjJCOyu (ORCPT ); Tue, 3 Oct 2023 10:54:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40914 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240176AbjJCOyr (ORCPT ); Tue, 3 Oct 2023 10:54:47 -0400 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2049.outbound.protection.outlook.com [40.107.22.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 86AD71B1; Tue, 3 Oct 2023 07:53:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N2DsTnJ1wRfXUFs6siVFJkSUUTlctN7wDZeTdgpwtXDC+sI2J15NgIy3bDRDiD4732QvC04S1s5LVSF+bdaX7gveorIghXYlc+bGo3UlOA3Zl4o4GOJWdXc1e77XkL8jPm5Q5Xn8J4p/0yB0vOYWUcQk2Fyne8CeI8nvCcanNeZHwG+BQOTmecjSWH/k8shnTtSmVZy26Mm/B4NLTSayF4+aQ5W40bPhFU4ml7T0ACQov+wthRQ/N5BVQdsgpu87efzPyT5ebhK//G59xHXvoMCDUXL+7+OX7Ch+T51el6bk2CwUha7foBcQ5Qeh0PyE/y/7yrMfJI9t+kyg9uzWmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dsHRCYpEctI6Zzn89z8ATSekt/z2xOHV1+DaQDxRwCI=; b=YRwcnkQ8VLLn+tjmlU84DKM5OlasWOke7JAZiDZNnoeMTbvoyTosXjZpjR69s18PpHbsZwmVKEWxapa2NQVNA3uczC1WUkQ1MihwCRyW6G/kzJBbLiFUFmShD7GdHtq9KW1qTY6ANu75UiyeeBfyQnrkWchkP/ftygbrZx4+98qNfG1QyEu4OBCh3na/FYFBWXincibd+gJIm8icgpjwIKuVHmB1M5wvE/MaKu6Dw5EQAbgBRboPc4xsX0/bNKmYJmcOuxtESAsuhfAnfVrbdROQEIPcboKr0bBe4uKQpr+rwRmR2s2N6aHKxPyXCGlrG55Xqj9KVLLZ5danrJ6dHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dsHRCYpEctI6Zzn89z8ATSekt/z2xOHV1+DaQDxRwCI=; b=PQtnblVo0rhbT1nd7yO5pONJUb1hbpXVTdqeZjbwSaGihbYkMXznJK3v6hvSRCYUmbBP3Jdr2NGaYBcKRHXTpICZT5sBOu96YeYHVc766aFDvhz22QE9qmujOeTF9xLeIhNFQIdd62YjbuUsM48q1PKOwlwvpAJuN1g5qplOIXs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by AS8PR04MB7526.eurprd04.prod.outlook.com (2603:10a6:20b:299::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.23; Tue, 3 Oct 2023 14:52:32 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6813.027; Tue, 3 Oct 2023 14:52:32 +0000 From: Frank Li To: arnd@arndb.de, vkoul@kernel.org Cc: Frank.Li@nxp.com, bhe@redhat.com, dmaengine@vger.kernel.org, gregkh@linuxfoundation.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org, lkp@intel.com, oe-kbuild-all@lists.linux.dev, rafael@kernel.org Subject: [PATCH v6 1/3] debugfs_create_regset32() support 8/16 bit width registers Date: Tue, 3 Oct 2023 10:52:10 -0400 Message-Id: <20231003145212.662955-2-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231003145212.662955-1-Frank.Li@nxp.com> References: <20231003145212.662955-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR13CA0186.namprd13.prod.outlook.com (2603:10b6:a03:2c3::11) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|AS8PR04MB7526:EE_ X-MS-Office365-Filtering-Correlation-Id: 9b1ca539-7e22-49b1-3489-08dbc4205fab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EmfIDY2sQjEJ1D0o4G0y6lhHD7U6kRj4xSxKubx39Tsy38RmUeP095YZ7q/0XpmKaI0n+BeNoM/DhDP6+u0rZRkNSyIdM4FkEvnY6es0oaXTl7UiehtOUaMu3LgBycqzKlhd+6A1ScuX2DcfwniByHDit7WKuo+HJMSb7S5l/Kzu+pWHEzfAH/0VpzELWASO2HjcrZi6p87NE3YC99ZQ3JhJxPa0z5STDGwVidmAlX2GW3GphcJ4nos0QwFpVDxog8Fwo7olwRhoSerrMPx6CYVLDkzrtKIFC1GyBBeJO7fdKbo1j7frPeoSBWtYoEV7MlIueZblqDHsdLzb9hbW3lVbM6UKc/a93YlGrYfLbijblfcSRsDtrL12moRD1+x26tZ0ON4nMZkFuRmKrbsbQSxL61m6+f7oohD0oZMgGGIvqA+BFgI/WrXHSjty4Clh6/2Uk+OQEQNgdg6tlcL20A72zh0clmzIi+ixTaStE9xUwZsU0rYxR4fJ1E8gNAPalf0TQiiQ5nFMzyx0ihrj1QFvQSn6Gtadt0mcqjiRoZA5uWuipX54ZKirqzmmaki+Z/LEuPWWtUk6Nu0CWP3plALalBDtHBOMHHPCtwgTadi6ctZyId06/twBXzZ3RuuP X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(346002)(136003)(366004)(39860400002)(376002)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(36756003)(38350700002)(86362001)(66899024)(8676002)(66476007)(2616005)(1076003)(41300700001)(52116002)(8936002)(4326008)(66556008)(5660300002)(7416002)(2906002)(6486002)(83380400001)(6666004)(478600001)(6506007)(6512007)(316002)(26005)(38100700002)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UkT19nXjxNM/FY/PQvzOriNyZnjM8sMUhYsDXvMNiz+/vUCQH80OZfuMVKb5?= =?us-ascii?Q?lnSarIFXZeXzZUMLb9paXESKyiP/bVyDFscVetfUJpnKhvZQHgbcKga5HN0O?= =?us-ascii?Q?jHGsOfSoMIsRikkxf/swadKgX0TCCSBVCrix5UCehGy0RKJRqcMSgEf0XtzQ?= =?us-ascii?Q?nheNk6IcNb5dBQJJkANP4cGthFRTuM9JGGffeexNpFuudlWWXxtejGQTGz0p?= =?us-ascii?Q?PjUpoGMW0KyitmB9VrXwOFy84x1Qf8WpqyEKx7Xhqt/ERpGzxPxlaB3z8UOO?= =?us-ascii?Q?Lf2JUm8OaWFGPfxRSW3M7lszdEmxfz/FJYNDbXrwLGddikkY8X1lSdLfDmFx?= =?us-ascii?Q?CnW24gsLVGH2LelJBhbPKdLJmfoexRuvrupsTivSwFkVi7FWS1rbAflhJ1Ub?= =?us-ascii?Q?WEk5MXzUleO4yeuZ9MBzb+ObQ3F7sWvbiGHPYpt1QTAhnWIRTJnqIDGFS8s6?= =?us-ascii?Q?CXchCWIUjQ9Gh7kpmUhBDDDvLh6PgBlgLgOMM1iMYISDCznW5vhNBe46Z18N?= =?us-ascii?Q?CGsqzndJxXGDy4xqilp5Kz9LlPHpQ+4NgrvqUewwXg4fJXH7Ihd7abGyGWLY?= =?us-ascii?Q?M9Bt2NNXJiLdbWPk/fXSXvVSD/Hp14iuE57Hv40MPs2sMjHt03SwupNTtvj9?= =?us-ascii?Q?CiK/wcxJJgPAfYHGkm02h31XFqtsB0chZWcr3yLcNAVXQ3d7J5I/WtAAk2vR?= =?us-ascii?Q?thgZctVFyLwci9zqcTryAe4ikt1XqsCkKhCB0LhR2JQ65lWGllA24FYNxa+x?= =?us-ascii?Q?dTW46b5/MGANbAFgKWY/F1LHvX0yH2oejdaN1QXCww1L9WXfMuBvSAHu9II2?= =?us-ascii?Q?HuCOVu1LvwNupG9LNIB4vQGXcR7rdooya/8C9pi6vbKTsrwnYw8yw7dctxzK?= =?us-ascii?Q?6RncCAU9R0insk7wYU8Xk+TJVNocECWkUDcC8ocy8/+TMOjgd5xgLu5+S4jF?= =?us-ascii?Q?WXcvC24Drmk26AmbAfHecw9+Ow/FoT4Teo3ySsYjJL0g99Ll1PvFsw2J2yzC?= =?us-ascii?Q?3qasx7mnWes7/VN3+5HSVUCnrLWTFxPDVrdrnee182a546bk0hC8n9ZGtCcR?= =?us-ascii?Q?vCcCY9e0PtCdqNAYIWeHO/ZaaTmUSUmVniUYDiNXeYa29R5tVqyf5O4ZFLB/?= =?us-ascii?Q?oY05thd4udtxJfN276V2YfebWzZ2C9BOo/CrG13//KIi/XJVnOTjiNOTwzKt?= =?us-ascii?Q?A9prIkRJ4xueB75Y+MEzxpD0L8jC2URVPmRDuWAGaU4h0Oq2jT2zPpM2aLSx?= =?us-ascii?Q?DRl6xWxzDgbiHrYlO0SMGfXcopEnyW0B73E5EkUteJIqK4TanmxH8eK/+99W?= =?us-ascii?Q?NnpCa2KuHoSZ3EfS7NE+oH5C5KkOXzNcWm0Hmf8Leep/mDaH9dlqNp+REAvL?= =?us-ascii?Q?py8A5rnOAzrcZ/Xry0nKTMS3iKLARXptML5f8dwCCL6y4TlCnn+Hm87Vs3Ec?= =?us-ascii?Q?62eLFSA/eOrq5ptFDzMPCQvndepPmJfKrhys2j9RqyCUj2A1KkFkfKw0ACd9?= =?us-ascii?Q?3HVCwN26D/RQZtjrYV6CvaUCItYpHiQ7bFFFPrKZvpiZ05LEZJLzVwdYuDER?= =?us-ascii?Q?8r5ZPmIz4Q6ad7zg+DBbHTGFPe6+IlurPqXHkfaZ?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b1ca539-7e22-49b1-3489-08dbc4205fab X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2023 14:52:32.7955 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zy+nGYDAIXmNljuMnIRFawOBmlaKjjSslf6jC4D10u6XFhekbQCjF2FuxY7NF5j4Y+6ELhJkBAPnEn7kDK9Wjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7526 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Enhance the flexibility of `debugfs_create_regset32()` to support registers of various bit widths. The key changes are as follows: 1. Renamed '*reg32' and '*regset32' to '*reg' and '*regset' in relevant code to reflect that the register width is not limited to 32 bits. 2. Added 'size' and 'bigendian' fields to the `struct debugfs_reg` to allow for specifying the size and endianness of registers. These additions enable `debugfs_create_regset()` to support a wider range of register types. 3. When 'size' is set to 0, it signifies a 32-bit register. This change maintains compatibility with existing code that assumes 32-bit registers. Improve the versatility of `debugfs_create_regset()` and enable it to handle registers of different sizes and endianness, offering greater flexibility for debugging and monitoring. Signed-off-by: Frank Li --- fs/debugfs/file.c | 54 +++++++++++++++++++++++++++-------------- include/linux/debugfs.h | 17 ++++++++++--- 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/fs/debugfs/file.c b/fs/debugfs/file.c index 87b3753aa4b1..2f2baf5ee3b3 100644 --- a/fs/debugfs/file.c +++ b/fs/debugfs/file.c @@ -1137,15 +1137,15 @@ EXPORT_SYMBOL_GPL(debugfs_create_u32_array); #ifdef CONFIG_HAS_IOMEM =20 /* - * The regset32 stuff is used to print 32-bit registers using the + * The regset stuff is used to print 32-bit registers using the * seq_file utilities. We offer printing a register set in an already-open= ed - * sequential file or create a debugfs file that only prints a regset32. + * sequential file or create a debugfs file that only prints a regset. */ =20 /** - * debugfs_print_regs32 - use seq_print to describe a set of registers + * debugfs_print_regs - use seq_print to describe a set of registers * @s: the seq_file structure being used to generate output - * @regs: an array if struct debugfs_reg32 structures + * @regs: an array if struct debugfs_reg structures * @nregs: the length of the above array * @base: the base address to be used in reading the registers * @prefix: a string to be prefixed to every output line @@ -1157,30 +1157,48 @@ EXPORT_SYMBOL_GPL(debugfs_create_u32_array); * because some peripherals have several blocks of identical registers, * for example configuration of dma channels */ -void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *= regs, +void debugfs_print_regs(struct seq_file *s, const struct debugfs_reg *regs, int nregs, void __iomem *base, char *prefix) { + void __iomem *reg; + bool b; int i; =20 for (i =3D 0; i < nregs; i++, regs++) { if (prefix) seq_printf(s, "%s", prefix); - seq_printf(s, "%s =3D 0x%08x\n", regs->name, - readl(base + regs->offset)); + + b =3D regs->bigendian; + reg =3D base + regs->offset; + + switch (regs->size) { + case sizeof(u8): + seq_printf(s, "%s =3D 0x%02x\n", regs->name, ioread8(reg)); + break; + case sizeof(u16): + seq_printf(s, "%s =3D 0x%04x\n", regs->name, + b ? ioread16be(reg) : ioread16(reg)); + break; + case sizeof(u32): + case 0: + seq_printf(s, "%s =3D 0x%08x\n", regs->name, + b ? ioread32be(reg) : ioread32(reg)); + } + if (seq_has_overflowed(s)) break; } } -EXPORT_SYMBOL_GPL(debugfs_print_regs32); +EXPORT_SYMBOL_GPL(debugfs_print_regs); =20 -static int debugfs_regset32_show(struct seq_file *s, void *data) +static int debugfs_regset_show(struct seq_file *s, void *data) { - struct debugfs_regset32 *regset =3D s->private; + struct debugfs_regset *regset =3D s->private; =20 if (regset->dev) pm_runtime_get_sync(regset->dev); =20 - debugfs_print_regs32(s, regset->regs, regset->nregs, regset->base, ""); + debugfs_print_regs(s, regset->regs, regset->nregs, regset->base, ""); =20 if (regset->dev) pm_runtime_put(regset->dev); @@ -1188,16 +1206,16 @@ static int debugfs_regset32_show(struct seq_file *s= , void *data) return 0; } =20 -DEFINE_SHOW_ATTRIBUTE(debugfs_regset32); +DEFINE_SHOW_ATTRIBUTE(debugfs_regset); =20 /** - * debugfs_create_regset32 - create a debugfs file that returns register v= alues + * debugfs_create_regset - create a debugfs file that returns register val= ues * @name: a pointer to a string containing the name of the file to create. * @mode: the permission that the file should have * @parent: a pointer to the parent dentry for this file. This should be a * directory dentry if set. If this parameter is %NULL, then the * file will be created in the root of the debugfs filesystem. - * @regset: a pointer to a struct debugfs_regset32, which contains a point= er + * @regset: a pointer to a struct debugfs_regset, which contains a pointer * to an array of register definitions, the array size and the ba= se * address where the register bank is to be found. * @@ -1205,13 +1223,13 @@ DEFINE_SHOW_ATTRIBUTE(debugfs_regset32); * the names and values of a set of 32-bit registers. If the @mode variable * is so set it can be read from. Writing is not supported. */ -void debugfs_create_regset32(const char *name, umode_t mode, +void debugfs_create_regset(const char *name, umode_t mode, struct dentry *parent, - struct debugfs_regset32 *regset) + struct debugfs_regset *regset) { - debugfs_create_file(name, mode, parent, regset, &debugfs_regset32_fops); + debugfs_create_file(name, mode, parent, regset, &debugfs_regset_fops); } -EXPORT_SYMBOL_GPL(debugfs_create_regset32); +EXPORT_SYMBOL_GPL(debugfs_create_regset); =20 #endif /* CONFIG_HAS_IOMEM */ =20 diff --git a/include/linux/debugfs.h b/include/linux/debugfs.h index ea2d919fd9c7..247ae4217ea5 100644 --- a/include/linux/debugfs.h +++ b/include/linux/debugfs.h @@ -26,18 +26,24 @@ struct debugfs_blob_wrapper { unsigned long size; }; =20 -struct debugfs_reg32 { +struct debugfs_reg { char *name; + int size; + int bigendian; unsigned long offset; }; =20 -struct debugfs_regset32 { +#define debugfs_reg32 debugfs_reg + +struct debugfs_regset { const struct debugfs_reg32 *regs; int nregs; void __iomem *base; struct device *dev; /* Optional device for Runtime PM */ }; =20 +#define debugfs_regset32 debugfs_regset + struct debugfs_u32_array { u32 *array; u32 n_elements; @@ -145,12 +151,15 @@ struct dentry *debugfs_create_blob(const char *name, = umode_t mode, struct dentry *parent, struct debugfs_blob_wrapper *blob); =20 -void debugfs_create_regset32(const char *name, umode_t mode, +void debugfs_create_regset(const char *name, umode_t mode, struct dentry *parent, struct debugfs_regset32 *regset); =20 -void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *= regs, +#define debugfs_create_regset32 debugfs_create_regset + +void debugfs_print_regs(struct seq_file *s, const struct debugfs_reg32 *re= gs, int nregs, void __iomem *base, char *prefix); +#define debugfs_print_regs32 debugfs_print_regs =20 void debugfs_create_u32_array(const char *name, umode_t mode, struct dentry *parent, --=20 2.34.1 From nobody Mon Sep 16 19:46:34 2024 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4E6E9E7AD6B for ; Tue, 3 Oct 2023 14:56:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240563AbjJCO4k (ORCPT ); Tue, 3 Oct 2023 10:56:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240700AbjJCO4Z (ORCPT ); Tue, 3 Oct 2023 10:56:25 -0400 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2080.outbound.protection.outlook.com [40.107.22.80]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 50AEF4202; Tue, 3 Oct 2023 07:54:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kPdbn2po5kwnQeCxg6L/CdugS4l1POgKfEfg/kHLZWSPADq2B3CbuXQQPoRieJMX0O8gc8ECT1iH2zyZrIaP7RsBP3/5s5mcKqGLTNEETW01vhRnHa8C+buyfatJxXid379qbn8fitGyDzbLfGGtrstbU+vlsMxq3VTXesGzztg8SDl71v0OwtzoCSug78cxPbKlp8WFuJ1vbDozskv9CLb0kQ686QZXygdBFNxHT3ieonzYRIAOuNKnycAwBjkywz26u7M3SVtmSKhIbDVYgczzxtV3lTvXEltfkEcxciSqpHLmChDz8V28iX6/zjdQIdZatZjHFAYNlc3dYKQTIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KrrRSsmz8JDYKRnhitxLdhGClwA1D4DSztdMBen7IAg=; b=Qg/+gWI3gqjMmMF5KrWZL5yoE3rMUJ75jYYP5Qhk0TPPFfDEEKv4EKXoyYQF4Zxk1d3BriBZMUC+KO3X+eBjSD87M8wVgnULx3E1KiCDk1Pg8TMUNWI41fqXCCLhNuZpngZJXsDRogb7/zzv4WxoUb2WiGmCaONkQYROMTNffYojLiuC3hc7lNG6wHjzc/hjxG1QuXtQw0SX/pHn1VO8IZb3zvXW9OrUvXwtj8mWfanSiXgAkJ5AXW5tct3DJzBw0SVigM+trGQnLgxJ7i3aYVDJMAH5XMTVzlX6z1HFxu1Ubmkrpi54s4Xj3Ynjo4JAxLzMVWK3v0J6578ZUZaWwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KrrRSsmz8JDYKRnhitxLdhGClwA1D4DSztdMBen7IAg=; b=VT0iKfZ8Psd78kI9Stp0yAivcHl6tdbR1Wz/9cs5Yt0IQHdoEbSut/KV3ZNDKNGcipXgn2a/b33OilChgDbnpD+4yJFwySuUCsdPgvrqpsCCueHIwlGyV3eIEy/GpRWTzECoAWEv8UDS4gWL+D4tiS2UjLaqFCFXbM3bMD/gDes= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by AS8PR04MB7526.eurprd04.prod.outlook.com (2603:10a6:20b:299::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.23; Tue, 3 Oct 2023 14:52:35 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6813.027; Tue, 3 Oct 2023 14:52:35 +0000 From: Frank Li To: arnd@arndb.de, vkoul@kernel.org Cc: Frank.Li@nxp.com, bhe@redhat.com, dmaengine@vger.kernel.org, gregkh@linuxfoundation.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org, lkp@intel.com, oe-kbuild-all@lists.linux.dev, rafael@kernel.org Subject: [PATCH v6 2/3] dmaengine: fsl-emda: add debugfs support Date: Tue, 3 Oct 2023 10:52:11 -0400 Message-Id: <20231003145212.662955-3-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231003145212.662955-1-Frank.Li@nxp.com> References: <20231003145212.662955-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR13CA0186.namprd13.prod.outlook.com (2603:10b6:a03:2c3::11) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|AS8PR04MB7526:EE_ X-MS-Office365-Filtering-Correlation-Id: 46d53d70-505f-4ca8-6487-08dbc420618a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5goS1cGYK7Y8AStEyzxeBDql5hVGE/ogNUvCSD41NOYY2nq2FPp8aaBUjJbbONZhaX6ccNpJGPVTX1UJ3Qq4hfMZ/wwwTuSd/NHd+tWzKK2WU959GYUBN1pCQQdhik5LSZHaWufcelzw+jntglTNSK41DxRtVY6OGQg30G9uCLQl/LhIf/ZtAcW77op6irHtpCr/W4RLK3IKMqobBxZg52DoGDDFc8FpQituP0oA6fhDa0npjh8LiECsOvBREfyPbe2aPpp/qnqJzyd+D/8ePqyJoYPOp8LTkk4Tmm6EyWIiEF7gX1Qb8KqRz/6Y39AOUG44hpHbKK35PeNOCgJfCBapJH5Fc9vynvkiXyK4lHuJ5BYYufP3P3hBeAyPouecCOvF3ShTXZJ5MtUNtWDpiH+wIosLBxbeeX8KVrSHHvi9y6iZ+F/GmqN0j0rLtg+USrJm+Smuvswy0GGCwgoCSdEcgRUFkKzRqNl5F9MyxwaqN/zyr6StcdXQbeyFjDOQW4R+gO3wVe5MKiDdL5Vpviq36aW4teOE4iPeOSIJv73U71FEkjnZsuEErLzKh/GnQ7JoKPgPYDN/7V1/UcexNp4hJ9mnMAgoJe9o4ydeVL7SVkpPG2qiK3offRTF7Dcx X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(346002)(136003)(366004)(39860400002)(376002)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(36756003)(38350700002)(86362001)(8676002)(66476007)(2616005)(1076003)(41300700001)(52116002)(8936002)(4326008)(66556008)(5660300002)(7416002)(2906002)(6486002)(83380400001)(6666004)(478600001)(6506007)(6512007)(316002)(26005)(38100700002)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?N1TNStxdKTXIbv7gdL9wkNgFk50FijyVg7u5lp94MY2thHegQuf6dnoPbPxD?= =?us-ascii?Q?NcUNwhkg9mtaqXwvKu7vEoMCrCKpU+4oVoN1jymsew1rjG0jN496E2q49TgZ?= =?us-ascii?Q?LQhbs2ovwSRSuliralgQCUtyzT6yFktUdpv22JWQD6ClUtw14JmTzPYa3hTd?= =?us-ascii?Q?OgxHP+UfT8xKUKZfojYjCmXVzpjRLJrZeuvh08Odz2s2sZg9FJjvmSgAN0qX?= =?us-ascii?Q?XYgbaWIryMjJkjB1A4qhrMq9uY2549JX/kufSQ7tp+hGfNHwohbf+9//k+Zb?= =?us-ascii?Q?YTBphnCxJrurfANJmioQLMEfcdInCSQeNDOod/eviTvj8+pxy8LR2vh+N1vO?= =?us-ascii?Q?1qWzIt+XbmV+hgU4YG5INSy/8QN6cRE7XJaKZnwwWZPil+rKJE+wTvDtz+gc?= =?us-ascii?Q?o8AsKJ6eMlJ4LIhTcVBXSlLQ0FGm/d0l/9+rnwHcUIYl8CH1dW/fI1aAW5fz?= =?us-ascii?Q?JU8uwm1p0ARoncdFHyL/rXLBfe5Cz4RmMOE34mHE72wlJyjD/Jh9SYUybK0f?= =?us-ascii?Q?IdtD+QY8aqBiOQ1Vaiy4BNjpbG7lrnuIyl+f6Y4GAGJB2ht2zjUrh6EjeP70?= =?us-ascii?Q?53mbilT20MFGz6dqJXYNMXh8drhlZPANKdrNAXGkOnkobWQvlk0IZDzL3HVe?= =?us-ascii?Q?nw1C7v3kMWLhHXwufrWcTLSLLKa8lJJDuilNqpPAJqBeAQzGj33lTL1T1HA/?= =?us-ascii?Q?zdeEBzJxQH6S7K1if8Geqtx+YJ7LKY/3zQO4o9DDR6wYs68mZB6eyQqq0Unz?= =?us-ascii?Q?aPVNAUJ6k9W7KDbxNQ/o4raWu9Gvmb3O/vWXmECqy9hXU8Yi1fL6boOmbuX6?= =?us-ascii?Q?NQOFTThkSVan2ZcqGwJqMMa/VsbATUjRtGOPSPhHmeoW13QAAJGT6zyJXaZs?= =?us-ascii?Q?b+k2W6vwxffXjRBue5LufbfZ8U2oH8PPKtxUel0NzG//0JQxHU3GdrZSquuO?= =?us-ascii?Q?a/zf7KMMiDyEQvl76hFHwHHLuzV38BxYSLF5df+gNQYgAB2WFfgHYQ9ytPMP?= =?us-ascii?Q?HtSW90X3fUVKpf2BikA2KrI6YlfxOvtnKHB5wUhqO03aOgKq5CyYi/59OkXm?= =?us-ascii?Q?SRjcYMKnjnoWG/5Chx3+wcHSHYwIz7nN63976cwVNdgLHf+8GR4EIYXtGlhW?= =?us-ascii?Q?0qfF2CBpZqwx1tbOaRxjv7knJXGt3NwArZXDRiKEA/O6IYtnyM2rQQZqHBc8?= =?us-ascii?Q?eLdfBpZZZuOo4bIL97v9qKz72n4uEJLILW+3HaMNmpMw+33Xw8OaX4Nz1ydX?= =?us-ascii?Q?6cLwbcNCLhlmBSjtqBUZzPVwcxr6QBYVTKQX/ilFo2z0GBzfsfBX8pOJWXNs?= =?us-ascii?Q?R12Jk9K6ejdYCcGhrAJx1zGIBz+HjwUQ637331zOahvsKInmiEbD/tiA3Lj1?= =?us-ascii?Q?NVskHFTsoxAF5Y58fakj6eEVMSDYdxUdcDKV+RCO2xccpI0Wa1LvZtNSa3W7?= =?us-ascii?Q?3Za6+V38ExVQajBSMyezwhaglY8FPasgYYBbxK4ro5fIeUTEoGa61ATQhHQt?= =?us-ascii?Q?CJh5av6VXx89BGvtJEU8BNkm7nvsAMcjHGGDSdERTkEjSh5DYdPX19todeMa?= =?us-ascii?Q?cw4NlRNQrk57fKYhF3OZY4yFaPu5GmE5kVtkKtNJ?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46d53d70-505f-4ca8-6487-08dbc420618a X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2023 14:52:35.9011 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HGMrajtfvae4LyfA2QGEglELtU21uLXOz76zc6EilRaAsUVioR3Ymt4v//3OxSNa5htcsR+QkYElBIxDkTlh3g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7526 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add debugfs support to fsl-edma to enable dumping of register states. Signed-off-by: Frank Li --- drivers/dma/Makefile | 5 +- drivers/dma/fsl-edma-common.h | 8 ++ drivers/dma/fsl-edma-debugfs.c | 200 +++++++++++++++++++++++++++++++++ drivers/dma/fsl-edma-main.c | 2 + 4 files changed, 213 insertions(+), 2 deletions(-) create mode 100644 drivers/dma/fsl-edma-debugfs.c diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile index 83553a97a010..a51c6397bcad 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile @@ -31,10 +31,11 @@ obj-$(CONFIG_DW_AXI_DMAC) +=3D dw-axi-dmac/ obj-$(CONFIG_DW_DMAC_CORE) +=3D dw/ obj-$(CONFIG_DW_EDMA) +=3D dw-edma/ obj-$(CONFIG_EP93XX_DMA) +=3D ep93xx_dma.o +fsl-edma-debugfs-$(CONFIG_DEBUG_FS) :=3D fsl-edma-debugfs.o obj-$(CONFIG_FSL_DMA) +=3D fsldma.o -fsl-edma-objs :=3D fsl-edma-main.o fsl-edma-common.o +fsl-edma-objs :=3D fsl-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y) obj-$(CONFIG_FSL_EDMA) +=3D fsl-edma.o -mcf-edma-objs :=3D mcf-edma-main.o fsl-edma-common.o +mcf-edma-objs :=3D mcf-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y) obj-$(CONFIG_MCF_EDMA) +=3D mcf-edma.o obj-$(CONFIG_FSL_QDMA) +=3D fsl-qdma.o obj-$(CONFIG_FSL_RAID) +=3D fsl_raid.o diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 3cc0cc8fc2d0..029197440bc3 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -336,4 +336,12 @@ void fsl_edma_free_chan_resources(struct dma_chan *cha= n); void fsl_edma_cleanup_vchan(struct dma_device *dmadev); void fsl_edma_setup_regs(struct fsl_edma_engine *edma); =20 +#ifdef CONFIG_DEBUG_FS +void fsl_edma_debugfs_on(struct fsl_edma_engine *edma); +#else +static inline void fsl_edma_debugfs_on(struct fsl_edma_engine *edma) +{ +} +#endif /* CONFIG_DEBUG_FS */ + #endif /* _FSL_EDMA_COMMON_H_ */ diff --git a/drivers/dma/fsl-edma-debugfs.c b/drivers/dma/fsl-edma-debugfs.c new file mode 100644 index 000000000000..99f34198dae0 --- /dev/null +++ b/drivers/dma/fsl-edma-debugfs.c @@ -0,0 +1,200 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include + +#include "fsl-edma-common.h" + +#define fsl_edma_debugfs_reg(reg, b, _s, __name) \ +do { reg->name =3D __stringify(__name); \ + reg->offset =3D offsetof(struct _s, __name); \ + reg->size =3D sizeof(((struct _s *)0)->__name); \ + reg->bigendian =3D b; \ + reg++; \ +} while (0) + +#define fsl_edma_debugfs_regv1(reg, edma, __name) \ +do { reg->name =3D __stringify(__name); \ + reg->offset =3D edma->regs.__name - edma->membase;\ + reg->bigendian =3D edma->big_endian; \ + reg++; \ +} while (0) + +static void fsl_edma_debufs_tcdreg(struct fsl_edma_chan *chan, struct dent= ry *dir) +{ + struct debugfs_regset *regset; + struct debugfs_reg *reg; + struct device *dev; + int be; + + be =3D chan->edma->big_endian; + + dev =3D &chan->pdev->dev; + + regset =3D devm_kzalloc(dev, sizeof(*regset), GFP_KERNEL); + if (!regset) + return; + + regset->dev =3D dev; + regset->base =3D chan->tcd; + + /* sizeof(struct fsl_edma_hw_tcd)/sizeof(u16) is enough for hold all regi= sters */ + reg =3D devm_kcalloc(dev, sizeof(struct fsl_edma_hw_tcd)/sizeof(u16), + sizeof(*reg), GFP_KERNEL); + + if (!reg) + return; + + regset->regs =3D reg; + + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, saddr); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, soff); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, attr); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, nbytes); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, slast); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, daddr); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, doff); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, citer); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, dlast_sga); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, csr); + fsl_edma_debugfs_reg(reg, be, fsl_edma_hw_tcd, biter); + + regset->nregs =3D reg - regset->regs; + + debugfs_create_regset("tcd", 0444, dir, regset); +} + +static void fsl_edma3_debufs_chan(struct fsl_edma_chan *chan, struct dentr= y *entry) +{ + struct debugfs_regset *regset; + struct debugfs_reg *reg; + struct device *dev; + int be; + + be =3D chan->edma->big_endian; + + dev =3D &chan->pdev->dev; + + regset =3D devm_kzalloc(dev, sizeof(*regset), GFP_KERNEL); + if (!regset) + return; + + regset->dev =3D dev; + + reg =3D devm_kcalloc(dev, sizeof(struct fsl_edma3_ch_reg)/sizeof(u32), + sizeof(*reg), GFP_KERNEL); + + if (!reg) + return; + + regset->base =3D chan->tcd; + regset->base -=3D offsetof(struct fsl_edma3_ch_reg, tcd); + + regset->regs =3D reg; + + fsl_edma_debugfs_reg(reg, be, fsl_edma3_ch_reg, ch_csr); + fsl_edma_debugfs_reg(reg, be, fsl_edma3_ch_reg, ch_es); + fsl_edma_debugfs_reg(reg, be, fsl_edma3_ch_reg, ch_int); + fsl_edma_debugfs_reg(reg, be, fsl_edma3_ch_reg, ch_sbr); + fsl_edma_debugfs_reg(reg, be, fsl_edma3_ch_reg, ch_pri); + fsl_edma_debugfs_reg(reg, be, fsl_edma3_ch_reg, ch_mux); + fsl_edma_debugfs_reg(reg, be, fsl_edma3_ch_reg, ch_mattr); + + regset->nregs =3D reg - regset->regs; + debugfs_create_regset("regs", 0444, entry, regset); + + fsl_edma_debufs_tcdreg(chan, entry); +} + +static void fsl_edma3_debugfs_init(struct fsl_edma_engine *edma) +{ + struct fsl_edma_chan *chan; + struct dentry *dir; + int i; + + for (i =3D 0; i < edma->n_chans; i++) { + if (edma->chan_masked & BIT(i)) + continue; + + chan =3D &edma->chans[i]; + dir =3D debugfs_create_dir(chan->chan_name, edma->dma_dev.dbg_dev_root); + + fsl_edma3_debufs_chan(chan, dir); + } + +} + +static void fsl_edma_debugfs_init(struct fsl_edma_engine *edma) +{ + struct debugfs_regset *regset; + struct fsl_edma_chan *chan; + struct debugfs_reg *reg; + struct dentry *dir; + struct device *dev; + int i; + + dev =3D edma->dma_dev.dev; + + regset =3D devm_kzalloc(dev, sizeof(*regset), GFP_KERNEL); + if (!regset) + return; + + regset->dev =3D dev; + + reg =3D devm_kcalloc(dev, sizeof(struct edma_regs)/sizeof(void *), sizeof= (*reg), GFP_KERNEL); + + if (!reg) + return; + + regset->regs =3D reg; + regset->base =3D edma->membase; + + fsl_edma_debugfs_regv1(reg, edma, cr); + fsl_edma_debugfs_regv1(reg, edma, es); + fsl_edma_debugfs_regv1(reg, edma, erqh); + fsl_edma_debugfs_regv1(reg, edma, erql); + fsl_edma_debugfs_regv1(reg, edma, eeih); + fsl_edma_debugfs_regv1(reg, edma, eeil); + fsl_edma_debugfs_regv1(reg, edma, seei); + fsl_edma_debugfs_regv1(reg, edma, ceei); + fsl_edma_debugfs_regv1(reg, edma, serq); + fsl_edma_debugfs_regv1(reg, edma, cerq); + fsl_edma_debugfs_regv1(reg, edma, cint); + fsl_edma_debugfs_regv1(reg, edma, cerr); + fsl_edma_debugfs_regv1(reg, edma, ssrt); + fsl_edma_debugfs_regv1(reg, edma, cdne); + fsl_edma_debugfs_regv1(reg, edma, inth); + fsl_edma_debugfs_regv1(reg, edma, errh); + fsl_edma_debugfs_regv1(reg, edma, errl); + + regset->nregs =3D reg - regset->regs; + + debugfs_create_regset("regs", 0444, edma->dma_dev.dbg_dev_root, regset); + + for (i =3D 0; i < edma->n_chans; i++) { + if (edma->chan_masked & BIT(i)) + continue; + + chan =3D &edma->chans[i]; + dir =3D debugfs_create_dir(chan->chan_name, edma->dma_dev.dbg_dev_root); + + fsl_edma_debufs_tcdreg(chan, dir); + } +} + +void fsl_edma_debugfs_on(struct fsl_edma_engine *edma) +{ + if (!debugfs_initialized()) + return; + + debugfs_create_bool("big_endian", 0444, edma->dma_dev.dbg_dev_root, &edma= ->big_endian); + debugfs_create_x64("chan_mask", 0444, edma->dma_dev.dbg_dev_root, &edma->= chan_masked); + debugfs_create_x32("n_chans", 0444, edma->dma_dev.dbg_dev_root, &edma->n_= chans); + + if (edma->drvdata->flags & FSL_EDMA_DRV_SPLIT_REG) + fsl_edma3_debugfs_init(edma); + else + fsl_edma_debugfs_init(edma); +} + + diff --git a/drivers/dma/fsl-edma-main.c b/drivers/dma/fsl-edma-main.c index 63d48d046f04..029a72872821 100644 --- a/drivers/dma/fsl-edma-main.c +++ b/drivers/dma/fsl-edma-main.c @@ -612,6 +612,8 @@ static int fsl_edma_probe(struct platform_device *pdev) if (!(drvdata->flags & FSL_EDMA_DRV_SPLIT_REG)) edma_writel(fsl_edma, EDMA_CR_ERGA | EDMA_CR_ERCA, regs->cr); =20 + fsl_edma_debugfs_on(fsl_edma); + return 0; } =20 --=20 2.34.1 From nobody Mon Sep 16 19:46:34 2024 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C1463E7AD58 for ; Tue, 3 Oct 2023 14:56:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240619AbjJCO4F (ORCPT ); Tue, 3 Oct 2023 10:56:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240596AbjJCOz6 (ORCPT ); Tue, 3 Oct 2023 10:55:58 -0400 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2067.outbound.protection.outlook.com [40.107.22.67]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 99174D7; Tue, 3 Oct 2023 07:54:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NrPKwwBpU0iMFh80uTAzl5v9DN9pD6DgSKI7+tYD/GiNWfiPsiAPzTOowmCJVwzEW+uaXIxwo7O9Ujkl83VCqUkVSDFCCXGKp+95tS1YBKVV6vv4pu1iZ2t/Afy6MOIMk2U/qHC0oMo69dOK/l9CUTc0uw/6x2LQ6c40lHSHNcX45629TQ4eIuRQlxSuCIzEqmbi5TiVyMt656i1b1L2p/DtpKjjHkUWpOWDuMzDX2LuC8uoXBFiDDH9zGS8QP8IN/ulwyx8HhCPk/eugsEVMLYY8s8vf8e+Pvj1p0gYYFnKfBi9BDqT1B2SNYZ4WTEvl07u4V/+yKnFZGEkan3+SQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vSwA1bfeEHszTu5G6jeavumnHAM9N1N3W/jyFWLPiiA=; b=fJ8G1PcMpgICT65drpWGku5PUHiKWIZVXRjsRt2+dgY/PCKn335UgEnkbB3CWvWIv1NXZwUmLRh5N26Qs176UYv/aRA1Tbaae3FvNmgcMG9OmzoVETOebB2TLJxQVP8NjJHKP7VE0EGnBVtpd52i2rDg7Uj2CfS7gMwVdi6KC6uUgWL0m+V4VFkjykMPJXUJR4iQlKgNniSwAS+LLMHR3YunOYoaJcX2S7QVOJinLpeArsBVEQSo4q4DTN9551RX75Sp6s547y9buNOikmhWII/DpE+7N+qmP5Ng1WfBa0S1S2G+X1PI9C7UFJCYV/napgegh9Qze2e61vgbusl90g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vSwA1bfeEHszTu5G6jeavumnHAM9N1N3W/jyFWLPiiA=; b=ZahUVLhBfq/B0noF/Tgu9VK/AszGLAHmbT6UhISRFQL+bGcUi0TtlbuYoNnYHXlXDgX2gMHcHfpQgGUtnCLpNvjeUVPOawhAwsej8v7K+VR28UDwGId8inwHcWYJgikldq05UjybT/ZjB3yrks9P6NEBvNR2Kw/78MH+rNuliAM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by AS8PR04MB7526.eurprd04.prod.outlook.com (2603:10a6:20b:299::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.23; Tue, 3 Oct 2023 14:52:39 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6813.027; Tue, 3 Oct 2023 14:52:39 +0000 From: Frank Li To: arnd@arndb.de, vkoul@kernel.org Cc: Frank.Li@nxp.com, bhe@redhat.com, dmaengine@vger.kernel.org, gregkh@linuxfoundation.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org, lkp@intel.com, oe-kbuild-all@lists.linux.dev, rafael@kernel.org Subject: [PATCH v6 3/3] dmaengine: fsl-edma: add trace event support Date: Tue, 3 Oct 2023 10:52:12 -0400 Message-Id: <20231003145212.662955-4-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231003145212.662955-1-Frank.Li@nxp.com> References: <20231003145212.662955-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR13CA0186.namprd13.prod.outlook.com (2603:10b6:a03:2c3::11) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|AS8PR04MB7526:EE_ X-MS-Office365-Filtering-Correlation-Id: 51245aee-a80b-4c2f-81f9-08dbc4206356 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GUoQjmagccczRU+KR7MKIly5AlD5XeX0/RdZNF97i96BxAH/lvOXmTA37Yk4hRtgUqqoKrQeeRQmEWttTnA+J9DgfIoYRTkCzYecVj6JF89OZMkW1y3+NbSnbgV79DIOvPvevnI+XZE/k7AS/mWYRSJtdbDQWTsYflWHKHRkLac5vRMqMNK+kGISCXDjIOjui+j5ud2buQbvEZecV+k1roOhOI8Pk9MDb5PCGDDWSVu7qLt5YlCY21VMd2ipHpxWYZsha+phLZlTn8zPDcN96EDWQms51Fy1fuNxajiXHvyDafy6sdZfbPSKD83pfgVz6tpEOzkdJKapoCdB3sWnhsPop3e7jMZacntNsGM3S3IfPJkr0EcOVGDwRRQDpOCFB+pBnyMJkCSB6jgrny5mVF/oDjLnH4XUQ/tnqGbMbXccrNfJdVmRebHaK60LonK4LgajKk9Ou8X8uGYBOBYV2WkcArXWSHZOGb/T/dLYfG5SwRovmNNgg3cMhuhvKQUkeSdhjS6U2iWsFpBKvLZIQ0iw+8ezw7WREsvMYLmNSi+v2rd36P6kXYbM0G7cY9eHHdPolnaZB6/lF+7KU65K13TnsC7nm5GGuci5jGSj9izmJ5Y7X0Bi+YSW4I4mAw4J X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(346002)(136003)(366004)(39860400002)(376002)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(36756003)(38350700002)(86362001)(8676002)(66476007)(2616005)(1076003)(41300700001)(52116002)(8936002)(4326008)(66556008)(5660300002)(7416002)(2906002)(6486002)(83380400001)(6666004)(478600001)(6506007)(6512007)(316002)(26005)(38100700002)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?TONi1xaDgTbLfBpG+jG14KJqQ9bwBYjzWj2oD1VoKjqR/rJ9TELpj3daMwgt?= =?us-ascii?Q?zjNd0Z/MCotzEudcmR5rdfBvfLp1Jxj9hRgPtdjhYYSa9pg9Wk04m7CcoLyO?= =?us-ascii?Q?JgymRC1fMCUUtILv0kgON6s9NBs5G30g6SaLUu+nosWrj5IYNR5UI6MKBQz8?= =?us-ascii?Q?HhRAsIqD2GEyubb23wfTpvAiyZk8+6v0DPMYRb3Uj0xoUkYK5F8/MLwu9ifM?= =?us-ascii?Q?AajMzRV6hM0WKRIft9qtFWjwEmyBUHjfAfAmOo5Bpkb0fnpSWxYL+v8x8VQX?= =?us-ascii?Q?JPXeZ7L/DMC2cAGkwT/kapUFvOIN/bvKqVsGUQS2dYuAPLRthVUR2JW4E7bN?= =?us-ascii?Q?w6Lha1AV9uONxlNSbBWlyaEYheNlHjoQ63TE0PFTz/sfb0NfudGwbbQfD/e4?= =?us-ascii?Q?Qzq30RYL5wGMLCcZAsG+R8LdI3Atsf9mLE+ei0N3xtp4ViQRacak3kdDjeJe?= =?us-ascii?Q?7tKkr8K1BcyZJLo6B5Vvg2b71FUZnsbj9CSZZqpyXdbyDuOjABG566mj5Pfd?= =?us-ascii?Q?wQctFrqmG5gTRw7jKqjUiXnuHTiZ+g68b3PM2B1G28e9j/i/FLgr67Ld/dds?= =?us-ascii?Q?X+0f0JOvzScrbgoMsfJOoQzmDrLW35GG/Y/j7TgdRCfvD6+AN08332zhLrve?= =?us-ascii?Q?gAR1hQQbhJc4rTznnW4HNoiXz2u4au46WW7xo54703AO24xXPwNI+C5yFoRl?= =?us-ascii?Q?6pnaWwW+tw6nHa3Y5OoXEiUWkhAKv7xf910RRXnbC92rtUswZbi3BwglxG/S?= =?us-ascii?Q?eIVPjiG9riraN2Ni3ntUZTELXpClppsfc1rSx9gSWLtfdz4T2cuybn0R+pcs?= =?us-ascii?Q?73M2uZOtSVrzzEBLRNpFJn/dZDws+KXnw/tk4O+PSta6zWjPrPuKf1Gso8dV?= =?us-ascii?Q?iKkXPotY2Ri9Q+M/nWkRRvnzoMRA6q6yqsH5miTPVePm6QrBIOCK69rEkvRi?= =?us-ascii?Q?QrhrXmCtIFMmQs2cV0EgE4NX7P5c6zNH3CbmyzusWkIknH4jJfk2kEP+ASTI?= =?us-ascii?Q?NW3wwECoZHkSOeYjAbmIn2jlMshwOnqIfRr+i9yZ+iAxQWEkxfeXEnjwCZgo?= =?us-ascii?Q?yvthpR2viZjgBSrJAZwSlFSZAEHcRe1ksbNQQD1q7hx+c6O8e5w4FxnONx3r?= =?us-ascii?Q?OVQLysp3YdMhcE1TaJyf6KAwIIzbnvwPGgVETfCscZHcmQF0FSRV69r7aal5?= =?us-ascii?Q?q8qqczScuxmrMXWOevrp7Tcq0RwMY19nZ0YBJ1iDXGlFxOc9AMYXggoS01Li?= =?us-ascii?Q?pXavxrOHFsHo2yHY8vfwgSpMwieP9MbHMnuPe+qGCjKh382/z/5wGFWDaSXg?= =?us-ascii?Q?3Tv/BN0nWW/XK6XcXVARweTm0F8OW+UnFAYyNGvH4d5ZdiE7aEN9IX0FdtR7?= =?us-ascii?Q?GeWO1cNrefEYYsjJ7S6IIUY4unb9fwL3e0yLCKhjlLtfRQxi4qEiFkqJrVL8?= =?us-ascii?Q?SAHnSlDqJaA0NusDk+cFVYlLzmAAAcM2argae/NZupBExUUSYVDHfXezfMNS?= =?us-ascii?Q?nzQ0M3JZ1b71s1O07Iaj5VYfwXnc/pckruB4E59G4ywS38zhG/CEuO8/j0wK?= =?us-ascii?Q?XN+S5A6UqQngiVvBHB3z/+YCM4iyB4lvOcCauf4i?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 51245aee-a80b-4c2f-81f9-08dbc4206356 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2023 14:52:38.9267 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: iFrloVFPonZSYNddqkixnOzUGvh+b4RUXxFQsedLmMwNVcQ9WOCP4dUoefirPgzyiYYC6ddJYkPrq1FlCeferg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7526 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Implement trace event support to enhance logging functionality for register access and the transfer control descriptor (TCD) context. This will enable more comprehensive monitoring and analysis of system activities Signed-off-by: Frank Li --- drivers/dma/Makefile | 6 +- drivers/dma/fsl-edma-common.c | 2 + drivers/dma/fsl-edma-common.h | 29 +++++++- drivers/dma/fsl-edma-trace.c | 4 + drivers/dma/fsl-edma-trace.h | 134 ++++++++++++++++++++++++++++++++++ 5 files changed, 169 insertions(+), 6 deletions(-) create mode 100644 drivers/dma/fsl-edma-trace.c create mode 100644 drivers/dma/fsl-edma-trace.h diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile index a51c6397bcad..40b2dd554e5d 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile @@ -32,10 +32,12 @@ obj-$(CONFIG_DW_DMAC_CORE) +=3D dw/ obj-$(CONFIG_DW_EDMA) +=3D dw-edma/ obj-$(CONFIG_EP93XX_DMA) +=3D ep93xx_dma.o fsl-edma-debugfs-$(CONFIG_DEBUG_FS) :=3D fsl-edma-debugfs.o +CFLAGS_fsl-edma-trace.o :=3D -I$(src) +fsl-edma-trace-$(CONFIG_TRACING) :=3D fsl-edma-trace.o obj-$(CONFIG_FSL_DMA) +=3D fsldma.o -fsl-edma-objs :=3D fsl-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y) +fsl-edma-objs :=3D fsl-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y)= ${fsl-edma-trace-y} obj-$(CONFIG_FSL_EDMA) +=3D fsl-edma.o -mcf-edma-objs :=3D mcf-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y) +mcf-edma-objs :=3D mcf-edma-main.o fsl-edma-common.o $(fsl-edma-debugfs-y)= ${fsl-edma-trace-y} obj-$(CONFIG_MCF_EDMA) +=3D mcf-edma.o obj-$(CONFIG_FSL_QDMA) +=3D fsl-qdma.o obj-$(CONFIG_FSL_RAID) +=3D fsl_raid.o diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index a0f5741abcc4..0182e2695fdc 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -521,6 +521,8 @@ void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, csr |=3D EDMA_TCD_CSR_START; =20 tcd->csr =3D cpu_to_le16(csr); + + trace_edma_fill_tcd(fsl_chan->edma, tcd); } =20 static struct fsl_edma_desc *fsl_edma_alloc_desc(struct fsl_edma_chan *fsl= _chan, diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 029197440bc3..453c997d0119 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -234,6 +234,9 @@ struct fsl_edma_engine { edma_writel(chan->edma, val, \ (void __iomem *)&(container_of(chan->tcd, struct fsl_edma3_ch_reg, tc= d)->__name)) =20 +/* Need after struct defination */ +#include "fsl-edma-trace.h" + /* * R/W functions for big- or little-endian registers: * The eDMA controller's endian is independent of the CPU core's endian. @@ -242,18 +245,30 @@ struct fsl_edma_engine { */ static inline u32 edma_readl(struct fsl_edma_engine *edma, void __iomem *a= ddr) { + u32 val; + if (edma->big_endian) - return ioread32be(addr); + val =3D ioread32be(addr); else - return ioread32(addr); + val =3D ioread32(addr); + + trace_edma_readl(edma, addr, val); + + return val; } =20 static inline u16 edma_readw(struct fsl_edma_engine *edma, void __iomem *a= ddr) { + u16 val; + if (edma->big_endian) - return ioread16be(addr); + val =3D ioread16be(addr); else - return ioread16(addr); + val =3D ioread16(addr); + + trace_edma_readw(edma, addr, val); + + return val; } =20 static inline void edma_writeb(struct fsl_edma_engine *edma, @@ -264,6 +279,8 @@ static inline void edma_writeb(struct fsl_edma_engine *= edma, iowrite8(val, (void __iomem *)((unsigned long)addr ^ 0x3)); else iowrite8(val, addr); + + trace_edma_writeb(edma, addr, val); } =20 static inline void edma_writew(struct fsl_edma_engine *edma, @@ -274,6 +291,8 @@ static inline void edma_writew(struct fsl_edma_engine *= edma, iowrite16be(val, (void __iomem *)((unsigned long)addr ^ 0x2)); else iowrite16(val, addr); + + trace_edma_writew(edma, addr, val); } =20 static inline void edma_writel(struct fsl_edma_engine *edma, @@ -283,6 +302,8 @@ static inline void edma_writel(struct fsl_edma_engine *= edma, iowrite32be(val, addr); else iowrite32(val, addr); + + trace_edma_writel(edma, addr, val); } =20 static inline struct fsl_edma_chan *to_fsl_edma_chan(struct dma_chan *chan) diff --git a/drivers/dma/fsl-edma-trace.c b/drivers/dma/fsl-edma-trace.c new file mode 100644 index 000000000000..28300ad80bb7 --- /dev/null +++ b/drivers/dma/fsl-edma-trace.c @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 + +#define CREATE_TRACE_POINTS +#include "fsl-edma-common.h" diff --git a/drivers/dma/fsl-edma-trace.h b/drivers/dma/fsl-edma-trace.h new file mode 100644 index 000000000000..9dd08a42ad54 --- /dev/null +++ b/drivers/dma/fsl-edma-trace.h @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2023 NXP. + */ + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM fsl_edma + +#if !defined(__LINUX_FSL_EDMA_TRACE) || defined(TRACE_HEADER_MULTI_READ) +#define __LINUX_FSL_EDMA_TRACE + +#include +#include + +DECLARE_EVENT_CLASS(edma_log_io, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value), + TP_STRUCT__entry( + __field(struct fsl_edma_engine *, edma) + __field(void __iomem *, addr) + __field(u32, value) + ), + TP_fast_assign( + __entry->edma =3D edma; + __entry->addr =3D addr; + __entry->value =3D value; + ), + TP_printk("offset %08x: value %08x", + (u32)(__entry->addr - __entry->edma->membase), __entry->value) +); + +DEFINE_EVENT(edma_log_io, edma_readl, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_writel, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_readw, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_writew, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_readb, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DEFINE_EVENT(edma_log_io, edma_writeb, + TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value), + TP_ARGS(edma, addr, value) +); + +DECLARE_EVENT_CLASS(edma_log_tcd, + TP_PROTO(struct fsl_edma_engine *edma, struct fsl_edma_hw_tcd *tcd), + TP_ARGS(edma, tcd), + TP_STRUCT__entry( + __field(struct fsl_edma_engine *, edma) + __field(u32, saddr) + __field(u16, soff) + __field(u16, attr) + __field(u32, nbytes) + __field(u32, slast) + __field(u32, daddr) + __field(u16, doff) + __field(u16, citer) + __field(u32, dlast_sga) + __field(u16, csr) + __field(u16, biter) + + ), + TP_fast_assign( + __entry->edma =3D edma; + __entry->saddr =3D le32_to_cpu(tcd->saddr), + __entry->soff =3D le16_to_cpu(tcd->soff), + __entry->attr =3D le16_to_cpu(tcd->attr), + __entry->nbytes =3D le32_to_cpu(tcd->nbytes), + __entry->slast =3D le32_to_cpu(tcd->slast), + __entry->daddr =3D le32_to_cpu(tcd->daddr), + __entry->doff =3D le16_to_cpu(tcd->doff), + __entry->citer =3D le16_to_cpu(tcd->citer), + __entry->dlast_sga =3D le32_to_cpu(tcd->dlast_sga), + __entry->csr =3D le16_to_cpu(tcd->csr), + __entry->biter =3D le16_to_cpu(tcd->biter); + ), + TP_printk("\n=3D=3D=3D=3D TCD =3D=3D=3D=3D=3D\n" + " saddr: 0x%08x\n" + " soff: 0x%04x\n" + " attr: 0x%04x\n" + " nbytes: 0x%08x\n" + " slast: 0x%08x\n" + " daddr: 0x%08x\n" + " doff: 0x%04x\n" + " citer: 0x%04x\n" + " dlast: 0x%08x\n" + " csr: 0x%04x\n" + " biter: 0x%04x\n", + __entry->saddr, + __entry->soff, + __entry->attr, + __entry->nbytes, + __entry->slast, + __entry->daddr, + __entry->doff, + __entry->citer, + __entry->dlast_sga, + __entry->csr, + __entry->biter) +); + +DEFINE_EVENT(edma_log_tcd, edma_fill_tcd, + TP_PROTO(struct fsl_edma_engine *edma, struct fsl_edma_hw_tcd *tcd), + TP_ARGS(edma, tcd) +); + +#endif + +/* this part must be outside header guard */ + +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . + +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE fsl-edma-trace + +#include --=20 2.34.1