From nobody Fri Oct 3 08:49:11 2025 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013017.outbound.protection.outlook.com [52.101.83.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 07A1F2ECE8F; Wed, 3 Sep 2025 08:59:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.17 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756889946; cv=fail; b=pf0B2Q//BYCZdu4whyCdLJadazhxkJShQdZ/+t397fSoxQm8eWPBcT7xepya9Qg/Rdowlk+PL1E2eINjGHJ1hGXhgHZbEtsKDNezMBXmjnH02sz1ZnJ1enkHRPZhdzMRgXjBCDWuQzE/4w1k6jVO8fJdoekO2gJPyo/SCjDpzV8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756889946; c=relaxed/simple; bh=2n5StCn2DuZ05y1V15o13cOU2f78/N6zQrQ1C4DN6xU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=t+CftfM2C/rJX/PqTLI5apNl1fopsxniD+MArCjwqHCffBqFG+RPZqB0o3NJcOWdaRqrekeFgka4WsFbsjUd6Z8aXQ+o3NvTPBeCbb3JgEqFLi0LKMlr72b6PU11ZhfECOIoIRZE10wXWgArOf96rm3rEsz69Lizpg/6BLvncmE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=h/tS/zQ/; arc=fail smtp.client-ip=52.101.83.17 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="h/tS/zQ/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WhAf2zLO3+BkM20ncAVotpobB1t0en73EVt5r7aUF0WtHSKT0POZxac08vcVzVG+yNQXjoFY1hq1zDrrBFxlFXt9LAGCdejPIuCAYjl0g4jYCtIuy3hOlQHToYaJIhDDVFUbEQHfINEFCPeHmz1ER8XNcEioCGlVugFn2Of61nhO+xSt1OBjQJ9oX9lbBhiNcC3Y3ypG70+IupM2yDs/II5NM7eM+WhD6BRrZF8q2UO9WUFINI36cvnPlRbYOST+ju1yrcjtth4IUS/riXtEMn4pcOYsgH1zUF6f1UZ9n5RrUGIz+zCv+dwcvrDchW6pzmGfQ8m9pLw1XAikr1vBWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=LR0K2Q9gkkva1zn61BcTxtjb8u8eh+jt7CAk8nwP3ko=; b=XyVHsF3yEnPTX6051W8BgeoIWp47CYGcLUo9hg0PtmOQFP6nnjt96jRmvlMt9GsUTHh6171TnlNGxBPhZSQjgX2Ssa3jUpGp3m7JvRJPRHCHXeu5FPa0roS4CCvWTrbw7OAWI71d7p3FhxGyjl38OuejIo69U37R68uIH/pz3mYpZYHnoG8Fxa/dIl7HOjqXtMzc2TEpd0ERyOebSlTO5qb2ylc+ZZ4xY/oh2fJeGF/5nAnLb09dliQE/GBWMlxqMYMFWNuytXrpjU5/CL+uqZYt0hBaSr09bdwkWC788y6JK0hWD7Yeoh+5hUkpzr5K2Meg/BR5j5W/PuFxgt9b6w== 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=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LR0K2Q9gkkva1zn61BcTxtjb8u8eh+jt7CAk8nwP3ko=; b=h/tS/zQ/0WpskPGoGBv/DI3aB1L839/iS5JeFQuQISLqOUJyFdT2BDSC0CEpL87liR1ST22pSp04+T1JKUpPVIHWa/qKIuKnf71N0Xvv+5CqIQfO2jNbWab6Nk1LpVrATDR6MmuKvyEsMGgARW6iKGZq9joQfp1EYE538yQEMyXVHu6kk8kDwWUv89mwwkKhIjKYr2yNML9I7Lqs6e68wRYrlHuwdmTZoy6VyNaaSH9cX/zgIcIXbJABie1q6hfU98Lf4rt6S6HmKtTgOJBlCX9BYg7Yp/pJMFZVh9RNLL2IKCli/IjyxiUufizM2dkxLZGRPhst1E6xcXpLZVj41g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) by GV2PR04MB11190.eurprd04.prod.outlook.com (2603:10a6:150:278::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.15; Wed, 3 Sep 2025 08:58:59 +0000 Received: from PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db]) by PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db%5]) with mapi id 15.20.9094.015; Wed, 3 Sep 2025 08:58:59 +0000 From: Wei Fang To: richardcochran@gmail.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, Frank.Li@nxp.com, yangbo.lu@nxp.com, christophe.leroy@csgroup.eu Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev Subject: [PATCH net-next 1/3] ptp: add debugfs interfaces to loop back the periodic output signal Date: Wed, 3 Sep 2025 16:37:47 +0800 Message-Id: <20250903083749.1388583-2-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903083749.1388583-1-wei.fang@nxp.com> References: <20250903083749.1388583-1-wei.fang@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2P153CA0026.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::18) To PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8510:EE_|GV2PR04MB11190:EE_ X-MS-Office365-Filtering-Correlation-Id: d7c11181-5cfd-4691-bad4-08ddeac81ebc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|19092799006|1800799024|366016|52116014|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?CFR8vcn51BNGjYUA5/YfKj5SgWvNwjw9VqdoGLqU4031wueVPVPSBZhFjEke?= =?us-ascii?Q?H3fqbz4HRusRjesQqpZi/HhAWUYAkpHKLOMNERFdiBMjaG6/j+eiLFa4c7Lx?= =?us-ascii?Q?9Rb0UPBu7J4LZcKncV2aeDZZoAC5sgD0k7qoyNHvJDYZf/FAHfXvZs+Q0pBB?= =?us-ascii?Q?mNfBGUPOMB96V+FUGIaO/LVZJQsOFNRWqt13l4vhlcqlc7cT2803WeszrdAG?= =?us-ascii?Q?UOGAoZOhve2/in9nbhzSdRMuDRAskINqWtthlWJVuZShbb7Va0CUyjHjjuRS?= =?us-ascii?Q?E4pnCLBAEZQhvdqOBkONhtaomMp8XQ6HJFTzblXaAbrjkNvczhAboKgvki5J?= =?us-ascii?Q?hFE1b43EY+HjrHG36ZpzBLAajQ71moQGKp0VQpb+uVWnHUDPSjSrNMvXPMiU?= =?us-ascii?Q?okXOPZXaN41f6ZCE2D9w9p3+XvWCAkDQ3gc/Pwg/9c9LsjvEVKmb2SJvha9+?= =?us-ascii?Q?ic5pfQW478kAvPF/yYA0sxZJhiVFJAIjAr2Rufr9Yv6vComzsVowCRmen2Qc?= =?us-ascii?Q?5SjCNWMvnk82J8cOBMQXQ/n/mizExWw0ysrK7Px6MIa+6o8ab5zTQO54mb6J?= =?us-ascii?Q?RFgXM1UFOlRI2asMkcdPQRvcnKlSnqKugAUnBRIM0hNvmDtgyHdhdDP8EZ4J?= =?us-ascii?Q?Af/ctTQ5KHVCl/ZImJbGdeLq+NTHcnM0hVLcw/7bIX8H18kFD2cTI+QiGRpX?= =?us-ascii?Q?CaNl2K1Pxi4m/NYcVip6UOGFdhxIdRyBnV8L3C6FniorhxObw/MtoebqO1QJ?= =?us-ascii?Q?506prOBho74GIvqOnK8XUjVwpYz7qh4hT3JcuKB7rDFIfbdB2dtakAMQst3p?= =?us-ascii?Q?FrRUjWMEBpI/rVIkSAd+ZNVhes1L822UxHE2aUkilMt8rUoyI7MieR52crNK?= =?us-ascii?Q?T/XQNHKT51V7OtcPALippdxbzIvjKl1O00t2nBV3i1BURtbxoUz8MdY6Qnu3?= =?us-ascii?Q?S4sDdedAPjOdhPieVfmyxpNdhTG7Ug1sQpWRk13TjWrFoh/Cbh0U/evhw1FE?= =?us-ascii?Q?z30avnEtBXs9lwIrRn1669frBn6WN7XyH86OLndzBwWi6vy0LgfBBkKFfAEJ?= =?us-ascii?Q?U+vn2QqbZCFwGBR2KiTtnEAuWPQYfd5mZiwPA9JOcRFP1o+DlAZRIcOskKZP?= =?us-ascii?Q?KT3bdA8caJ561fr5DsvN/gvcdwkreCVVLxoiV6JF2Jvdyd2eHzM0kp4RiEnN?= =?us-ascii?Q?lRbnBUCAj+Ho06SzTIShc6m4Nj+SXVGBqduMPcOO9xAIbikiYpm0Bx14kQV0?= =?us-ascii?Q?CNDa1H5KgnNylIZed39f4vabYZ4cxzIrjjX1bAF7vIoiRIDy3Y5iMEbarQj4?= =?us-ascii?Q?VTpPRTMN7rOJRNW6lqsH1Lkhf3g6hSOWdYdNLNXgxo82QlLlh+AKVAwp+gMY?= =?us-ascii?Q?uaKMCDiIRqPQFa304dy3P6PIyM8woIdQk+IwCx/nMVhEfs0r2s2NI5ED71Pv?= =?us-ascii?Q?jr+WJIs78+nY7TkFGAwMECUvBF5LR3QkRIIeZQG6IhY9PbiXdEj7qz7rS9lm?= =?us-ascii?Q?gsN/FoYsjR6lM+g=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8510.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(19092799006)(1800799024)(366016)(52116014)(376014)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rTDQn5EXhaDY4jHoLEkP49Ux3U2Rfkskan2gQ4mVulVr1Zy+cIvcvuJtNWmS?= =?us-ascii?Q?bjRZ0MsRmoCfxWu8Mxu92YHTetSC+1tOJzu9WBOrzRY21isnWWqSVSxcxW3r?= =?us-ascii?Q?o/qr9QLqMqCprs1qr0AuvRh5FihMBpRuYkQBfgdVTOEb3ld0e59n4jxQ/sU3?= =?us-ascii?Q?4KU2tPI1u8k3gTdsstCEY/jy7g7bv9nqxAfIa4vhsqkVaiMvYRRkrqqFzR9c?= =?us-ascii?Q?HPegtrkcmwFa78t0bHzDtEYuLj0CoVLYG9DUqVxFhsC6P6KCMsjq/Rk/E1kj?= =?us-ascii?Q?EuiLdInCJr8w1HhjP/BnZH4dhANibI7thRdq+j+Qck6BB8FBq0P4AfmRsL/3?= =?us-ascii?Q?bWRLgUELA5Ds0p79UWJGEKf2H2QWaahJ9yfhffAdbxcJYgMalxYsiY3cB3Y6?= =?us-ascii?Q?JRPbwUar4olLH0+xE3LPOcv7jmi+qCh/NTrgNKkz01j3u86CGlAAWNT7cdMk?= =?us-ascii?Q?A6HJR/TP1ZIC9/9MLavw/9f5azmrias8FsNcTqZEPscHpPJaXtQhGfn9MFWw?= =?us-ascii?Q?yNSVD+fWmK5H6u3rnBUluFDqrkiGapbHqRz9kOrIr9YYS/aWIjh5MQf1aGsV?= =?us-ascii?Q?5k6IL9Vmz074gAgOoYf62G3ELd3V1gJQmoHEYA4mo4c2bzBQce4WcYmFlQb9?= =?us-ascii?Q?AYCzi1pJDHhfvze9jjdvreGpervwHNHU/4K20SHkz7jxhykphWuCvfArZLho?= =?us-ascii?Q?F6LUvnpCX1bpYsq5ZKeh/bnz+oqZ8NTyTBEIvaHfj+bdahPgcWSbqGbb6JLZ?= =?us-ascii?Q?7a0k1x1Hq0KttgSF9tVMh+nItwJPWLmuqsOwVeZTEr66V0jyn0DicLr1jYPi?= =?us-ascii?Q?06cfWzDU5O/r5H8w9wonoSVQR6Dm/18eT9Gcwc1gXn5pDkGOLsOm79wpRMCf?= =?us-ascii?Q?T48WEN2Nwgd6nwjUoZjzNARLbeKRE2VpjPTEDFVbOJKywZHEJTgwLIR48BsR?= =?us-ascii?Q?z4ZVgskW7D1SCqTLVn1W2UUY07QYcbsrk9wBrQHiemyVC1eqiy2yG5biQ2p2?= =?us-ascii?Q?UVOefZf9X5OGB/5ilA5JJOAdPKU2pjshrDSXA2nScaO+vTsEdfTe6Od54mks?= =?us-ascii?Q?6NqGYOHv0usPENy0+6WD0T2qWdiMWX1PXnvxxwvvMIn6wvM49bF7E30+CG9X?= =?us-ascii?Q?L2mOEhaE6r8j3vjPY5niE/FVR4SKEKW8AZ1WIwZGka45xQq5IudyFQftaVJc?= =?us-ascii?Q?DM8Jor+5Te+zc2rHiQzWZfi6AtGbFJyEG/8G4+tCtheAOFBIWYy04Q7YzZwB?= =?us-ascii?Q?mB/c9sJzXGLtQxcTK9LH0MRcZ5plUQ3aMgn8V2EBDCjR9h6Bduvj9l5lFsCX?= =?us-ascii?Q?1qqySNcvpibcA7OlgkvAViMdXSD5DY5FyMVOVp13FuG/37FdVX91oaAgUKwf?= =?us-ascii?Q?DqDSdOKD42jMCOL7MECxHLlv9XC1MXQ+E0CoivGvvIeqBGOD4XYbeAgiL9K4?= =?us-ascii?Q?lSxdIwHQWcaXJKn4UUqQMhnrVb2vC4iePw73yUU9D0aWkyarC35VSmlHzS3Y?= =?us-ascii?Q?xH5QiVhzF9k9qKki98KW6XbHqtunDFVH+91sOVv//eo/mSt8YayJ1At2OaqZ?= =?us-ascii?Q?lLm23pGCc76uKFs7SgfeRFfSmamvgx6RRS2Zkmhc?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7c11181-5cfd-4691-bad4-08ddeac81ebc X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8510.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2025 08:58:58.9481 (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: rtTbAYIj0Sxz7ejPKNJgAVx7xp8B1guJuqoZPmyXyG4nEK1T7rHpPgbzrJ+WpgZeg3K9iJT0eDMarwFc8XDpqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11190 Content-Type: text/plain; charset="utf-8" For some PTP devices, they have the capability to loop back the periodic output signal for debugging, such as the ptp_qoriq device. So add the generic interfaces to set the periodic output signal loopback, rather than each vendor having a different implementation. Show how many channels support the periodic output signal loopback: $ cat /sys/kernel/debug/ptp/n_perout_loopback Enable the loopback of the periodic output signal of channel X: $ echo 1 > /sys/kernel/debug/ptp/perout_loopback Disable the loopback of the periodic output signal of channel X: $ echo 0 > /sys/kernel/debug/ptp/perout_loopback Suggested-by: Andrew Lunn Signed-off-by: Wei Fang --- drivers/ptp/ptp_clock.c | 66 ++++++++++++++++++++++++++++++++ include/linux/ptp_clock_kernel.h | 10 +++++ 2 files changed, 76 insertions(+) diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c index 5739a57958c7..e4a5658e82b3 100644 --- a/drivers/ptp/ptp_clock.c +++ b/drivers/ptp/ptp_clock.c @@ -248,6 +248,66 @@ static void ptp_aux_kworker(struct kthread_work *work) kthread_queue_delayed_work(ptp->kworker, &ptp->aux_work, delay); } =20 +static ssize_t ptp_n_perout_loopback_read(struct file *filep, + char __user *buffer, + size_t count, loff_t *pos) +{ + struct ptp_clock *ptp =3D filep->private_data; + char buf[12] =3D {}; + + snprintf(buf, sizeof(buf), "%d\n", ptp->info->n_per_lp); + + return simple_read_from_buffer(buffer, count, pos, buf, strlen(buf)); +} + +static const struct file_operations ptp_n_perout_loopback_fops =3D { + .owner =3D THIS_MODULE, + .open =3D simple_open, + .read =3D ptp_n_perout_loopback_read, +}; + +static ssize_t ptp_perout_loopback_write(struct file *filep, + const char __user *buffer, + size_t count, loff_t *ppos) +{ + struct ptp_clock *ptp =3D filep->private_data; + struct ptp_clock_info *ops =3D ptp->info; + int len, cnt, enable, err; + unsigned int index; + char buf[32] =3D {}; + + if (*ppos || !count) + return -EINVAL; + + if (count >=3D sizeof(buf)) + return -ENOSPC; + + len =3D simple_write_to_buffer(buf, sizeof(buf) - 1, + ppos, buffer, count); + if (len < 0) + return len; + + buf[len] =3D '\0'; + cnt =3D sscanf(buf, "%u %d", &index, &enable); + if (cnt !=3D 2) + return -EINVAL; + + if (index >=3D ops->n_per_lp) + return -EINVAL; + + err =3D ops->perout_loopback(ops, index, enable ? 1 : 0); + if (err) + return err; + + return count; +} + +static const struct file_operations ptp_perout_loopback_ops =3D { + .owner =3D THIS_MODULE, + .open =3D simple_open, + .write =3D ptp_perout_loopback_write, +}; + /* public interface */ =20 struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info, @@ -389,6 +449,12 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_= info *info, /* Debugfs initialization */ snprintf(debugfsname, sizeof(debugfsname), "ptp%d", ptp->index); ptp->debugfs_root =3D debugfs_create_dir(debugfsname, NULL); + if (info->n_per_lp > 0 && info->perout_loopback) { + debugfs_create_file("n_perout_loopback", 0400, ptp->debugfs_root, + ptp, &ptp_n_perout_loopback_fops); + debugfs_create_file("perout_loopback", 0200, ptp->debugfs_root, + ptp, &ptp_perout_loopback_ops); + } =20 return ptp; =20 diff --git a/include/linux/ptp_clock_kernel.h b/include/linux/ptp_clock_ker= nel.h index 7dd7951b23d5..884364596dd3 100644 --- a/include/linux/ptp_clock_kernel.h +++ b/include/linux/ptp_clock_kernel.h @@ -67,6 +67,8 @@ struct ptp_system_timestamp { * @n_ext_ts: The number of external time stamp channels. * @n_per_out: The number of programmable periodic signals. * @n_pins: The number of programmable pins. + * @n_per_lp: The number of channels that support loopback the periodic + * output signal. * @pps: Indicates whether the clock supports a PPS callback. * * @supported_perout_flags: The set of flags the driver supports for the @@ -175,6 +177,11 @@ struct ptp_system_timestamp { * scheduling time (>=3D0) or negative value in case further * scheduling is not required. * + * @perout_loopback: Request driver to enable or disable the periodic outp= ut + * signal loopback. + * parameter index: index of the periodic output signal = channel. + * parameter on: caller passes one to enable or zero to = disable. + * * Drivers should embed their ptp_clock_info within a private * structure, obtaining a reference to it using container_of(). * @@ -189,6 +196,7 @@ struct ptp_clock_info { int n_ext_ts; int n_per_out; int n_pins; + int n_per_lp; int pps; unsigned int supported_perout_flags; unsigned int supported_extts_flags; @@ -213,6 +221,8 @@ struct ptp_clock_info { int (*verify)(struct ptp_clock_info *ptp, unsigned int pin, enum ptp_pin_function func, unsigned int chan); long (*do_aux_work)(struct ptp_clock_info *ptp); + int (*perout_loopback)(struct ptp_clock_info *ptp, unsigned int index, + int on); }; =20 struct ptp_clock; --=20 2.34.1 From nobody Fri Oct 3 08:49:11 2025 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013017.outbound.protection.outlook.com [52.101.83.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A0212D7D2F; Wed, 3 Sep 2025 08:59:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.17 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756889948; cv=fail; b=coHsFKfsSRpNKa8zW1lRlkVmJRKbkZwTSCgrYcIix5RpmkPW09xa/myV64SSjbQ1sCuUWFLnwWCKz4JrzuMlyRwtDjV+t171WWzjG2dk1V8mv54A7I3EXiBGPD2h363Yeo/n4G6vc8aUtRy4GzWnfintNdu2jBXYuVDx7rw9FjM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756889948; c=relaxed/simple; bh=tQggcWxQk2nUxocfmDyiGlJFLK+jdTJZTI5f2VkRs/c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=cXFr4qIlk0EnUTB6MdAakVVQOBfHvAxpoQ6ZdSFXgjjHPpLmSygFKakV6gS9rKzChx9KcWIzs00sPK1PjjHn03XUK4y5B9pSI3r+PW86R9Ps+c3bh8C+YvxXMLj+rBWqHhqHiUm3iEdF4Xz+pcLQt6YDXLhtF+8E4dy7eV76Jz0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Q9ousvqQ; arc=fail smtp.client-ip=52.101.83.17 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Q9ousvqQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RZgl74RdcCZ9JRTJoD+vKNayqcLkZYIZBLlMDlXIZ2hkzRLF59pmYnTqnXs2S/uECv2mfsS5VktSBwUSnALO/bY2TOVYs0Dq28nUyMiwovAmFaesgIB75OOI8ZeTYSVO/AcHn1NBw8FuTEkB9PHw2LRHAT3K08X9y1kCNuEHUG+U3gPA6mOnBZ/OAR/Qa/XdE26xqQOaCUT9A2tfRiLJr7mdOr1sCE0fpuwZIx3oLYILd8gQz2ygm1x4yTvSvB7UvyKIpxPoztAw+GTq/8iwgyvACixyL1HBTkeMGviJCBr3o6lVU3Ji9QA4mWhGmZbqXvqWRpxRcS8lmF2z2fKDuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=UUdRNazR5yRi10910sLZacymZrIS/EDC+AVrodDQSjk=; b=yW/+VgNzDOt0iMXMaJN7hAVc3qAZ9GjzpFSgKOu88kgLBrXIqeTvlePjWOFU3P1vthyZntw9fQHNTY4bNhLFkpJXkavRCx4IEqzTe9c3h+6QFcfn5I93A/hmjINzxJYzzEBCESP9gZE+8kgcSVf96EHWsQrobchVCKarCWw5Uf2SAMYSSsQgur5B9NmtkQvsBeMYCo0gCgabfQCiijCyGiU9JJ4ChdtmNnyYYzXvV8PxPaRTpsW8wzSKiLFhKnrCXzVAM5J4Ib2MaiNJu/m92L5NXCWCwp9BdsEQkr7XJpfhTjpwD9iOdyCGO6gpSNzpM/cbW1k5PXXLPdTMgcvTIA== 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=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UUdRNazR5yRi10910sLZacymZrIS/EDC+AVrodDQSjk=; b=Q9ousvqQGNASlhZrIal6ysnry+/ELbwrLD6rwWFNbDS5v4BbIoyvmWjJVjKFmEjTTz9NUU11ApzOYQTLwCTsoJ0blUHOoauUqEuGdWFTDDPIte8jLcAN6GQo0fokno/5b01sKdiP2ugiyBzfJQhX1cFUZbVW5Dp2lI+ywbABAtaXVbCQWToUurTSlOuAdOSxn+zGAvseGf3hdAITg0BSpzqn0xNMXarSiwEkKQo2u0kPMdJOVt3rzcIFJ7qZ262pa9kV95O7XvFnkPCSdQezewJmOJFrEbjkw6zZ3VyCbqJbqQBjJAqmUcd4rl1je2tJt282XHwaYf5B7Q3Nl+L+xg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) by GV2PR04MB11190.eurprd04.prod.outlook.com (2603:10a6:150:278::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.15; Wed, 3 Sep 2025 08:59:03 +0000 Received: from PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db]) by PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db%5]) with mapi id 15.20.9094.015; Wed, 3 Sep 2025 08:59:03 +0000 From: Wei Fang To: richardcochran@gmail.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, Frank.Li@nxp.com, yangbo.lu@nxp.com, christophe.leroy@csgroup.eu Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev Subject: [PATCH net-next 2/3] ptp: netc: add the periodic output signal loopback support Date: Wed, 3 Sep 2025 16:37:48 +0800 Message-Id: <20250903083749.1388583-3-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903083749.1388583-1-wei.fang@nxp.com> References: <20250903083749.1388583-1-wei.fang@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2P153CA0026.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::18) To PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8510:EE_|GV2PR04MB11190:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c621e35-791d-4a2d-b0df-08ddeac82196 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|19092799006|1800799024|366016|52116014|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?xnVQcCeICCiYC2TSuBtyHY6DV70VCMSt9s7BNIRG6iScmqalIkt1RgTNn0eV?= =?us-ascii?Q?pWhwEfz4a8g0wpHHcQfpmvyfa16d333EepCzE9oZghYAnZvNJlExcpyHvucO?= =?us-ascii?Q?AezV6+tVZzRbH8pSiIqNqZ2lTB26g+qXAtg7JblGjxuu5yuxwKNHvZ/d1oEQ?= =?us-ascii?Q?DLeEwD5yJIJW72970BF14mZ7Qk24TE/fulkutZ6h6ql/9q+MBgmteGbUmS0d?= =?us-ascii?Q?p+j8cqDdWZy5NbMF8hPcB6K2sXOfjV+2WtAhBjtltFe+aHkn38we1lel1Tq2?= =?us-ascii?Q?PAXjyoY2DKgLjUXgZLaUxcUg1aFf21DaoZTd35pUAo1R4oMK+1l4UWb6zBBc?= =?us-ascii?Q?RFB+Gx/9tqCOfYOig/P5AYFU214Q8BxrSfEi3sWpxCHZU/gPR4tPJW3YsdZb?= =?us-ascii?Q?m2VWpEADY5OglhD2alTXQ3FhiFx3R1cUxPmuJmNIHXf5K5FGi+ZpAgMcBiju?= =?us-ascii?Q?x1n6sDeWF650zJZ4zD421e5JWTo01HGPpXEcLrFUrwIBSuz6Sw/IvodbZXOT?= =?us-ascii?Q?LUtANVvoJPcdSO4h4lmz+U7vrd06/GU/ttoSdS4dh9AOaVNncR5WgHnA+CcJ?= =?us-ascii?Q?yQKLdp08OnAopqp85D4xmxnG/rMvdfb0fi/vGqGb4F0rBNvixB/BaYxKLrie?= =?us-ascii?Q?/cXzGOcjFT2T6+TNhIcjWA6pL/5V8d1k5jbtNqAru5tjk48U7v2N3K4Zo/iw?= =?us-ascii?Q?HuWQIWmzMelnoD4rK7S/wZtLn+UB/NtOwjFs0EEJgT58ahfpTGDe7yySg04Y?= =?us-ascii?Q?iv4bY/whlcbHYL73TXDm6IBQ4j7AWdHWsn/b/YRfEXueUqfz9JKpApT+Q34n?= =?us-ascii?Q?Dn4ECxRZX6BhyYkbcwtspgbdKWHR8LdAhNGpJ6ADAfcUdAxv12O5HTnO4KUi?= =?us-ascii?Q?LbW3TfwV5tk5ecNyLPQm58rFFUTh4EXDL2P/IVNESwDe3N+MGCFLvgOyBuaV?= =?us-ascii?Q?zs0xAmFKkx4ao/q6htF/Q6Xn7THBRF7EHIhYM6XZ2j9LqK0P2MQCiAIkYfF3?= =?us-ascii?Q?oHbAxiBcK83pz4qrj4qe8diaOcDiu/D9YLErf30B5fzrHc/uY5o1Vn5oBxgo?= =?us-ascii?Q?1iwFhIKaQvbYsygKBcQVsSJotCcV60ddADRZ7gSCydB4SdCE09mazpm//OPp?= =?us-ascii?Q?nkDKDeLQQtQgxhf6afbO/kLLxc+v/AXgW1TtEpAnvF5MoDeVvjlub9TNPwHI?= =?us-ascii?Q?B9g+TeEDq7EmI94Miwsb1+x+37lf2OR7QMCpw9D0Nu1hG7rCx1BTKbYkIVsz?= =?us-ascii?Q?BVz/CSS6MqaAtTwSA9UiufeftYw872x6bMrdO9jfdcG2GyGZ0yrcY6YMAy6H?= =?us-ascii?Q?kbiiswFvVchzmzeYtjc6F76c/JJHaA1VXtu3bBBKq+3f9ZNiAvucLW14eJg/?= =?us-ascii?Q?fQw/BRkP5mlFO9eTB1OZTVnVXoVi4GR/8ps4STZ6tSJdE0VmgDvQFw1yoNh1?= =?us-ascii?Q?Fj/VNbP2FxSLaraSPd7tVTcbvZMbNqcita+gYwMRpE8d6IOK86Q/6+NLId6C?= =?us-ascii?Q?4ppqh1hdiv5Z/0E=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8510.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(19092799006)(1800799024)(366016)(52116014)(376014)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NXh0dLkSA6aN57IoDV3/YBQ2bG5ps7WgqsHTWbKhIM6zCfI6kwDas3WJ3tM5?= =?us-ascii?Q?/o7qTmtttft5S4oqtMQp8dx1PQyMEyR3FA3hCldrioQNlf3dhYX1aQ2OJMx0?= =?us-ascii?Q?lZW4gdlOOJ1+0DaLW57KVmddmsf4zEaIoYp+n0qH6gNz366U0A9JHhtO+Yuq?= =?us-ascii?Q?tryB3KvaOTWPfo7DLCkQjmtp6nwdcOlsGejFXwgJ3lpY9DgpqLIiVzdwweAz?= =?us-ascii?Q?rEDSkkwPSW5gZAK7MNFMkYiwUXbUIeTgS1tIgwssgWwnUUGgZBvR4zbwkSIP?= =?us-ascii?Q?d0u1Two+3LeJh1KTSpf0J2+O7OhiJ2HNqVcvXnPZzGSmJ7xnWdf6szkt2Uq8?= =?us-ascii?Q?4ensgPruaNRw12l1usNFmo4GGe1T7hzpaqZnwLRu9bEuUTA92dLxn5/mVnPq?= =?us-ascii?Q?EjPNIrbQy3FWmbIaFqPuxaHGiwF21dZ7wCzFxlqqPgKv+tI+6Ln0ZUK8oaaz?= =?us-ascii?Q?OkF2GgkWoJmVNR/R5jW3Ckd3UBDUr50GzDCBhD6xljGG69/VCpUZJTwzvgTX?= =?us-ascii?Q?hJ1q8kajq4zOiTjJ7vcNXlncb9hNg084No6POLIoSHyGfdf/oJnTWkxQP3MF?= =?us-ascii?Q?HN70N0skTOvNjuRdhh+mQFEfBOwO/jMB1K6CmX2qjIl2xFmCACVKPbKBEEjI?= =?us-ascii?Q?YPCEI5gc/W7+X+XztlIzW7xqBXVuijtMF37aWjKZZB3FfxrGUdHfp73Jj0pb?= =?us-ascii?Q?p1+3Ht7xQDtgTrdnR6hec1cfJNBVxen6MujDmZCJk8WlZ0AxDciAOR7Fdo/q?= =?us-ascii?Q?djm4ACKVUj4JgBFd4peDdl5eEixOI/G472dJQLkB2P5gRgZu8HNqdeUJRX73?= =?us-ascii?Q?+DQCCBtIQE051lL608+mqM5vIU0Gu7rYCYMjmXTVWZwvcklYpGV0t5hpsT46?= =?us-ascii?Q?GNxcjWL0VeGX+/UuI4Or2jbbaea8UeFXBnoJuFg0+NRsN5AOKGCMmhLb0pFB?= =?us-ascii?Q?3K7IGH9woTFzlQmVNxfI2rTKtWMPQ/dzMuzhKA+D+FkIMhtiz3vAoyIDkLCC?= =?us-ascii?Q?KX9D8ynY+7oXh3ZCk4orONSVRO9lLiddHXgHcIa0e7HJpr7mFap0SLP7K3uI?= =?us-ascii?Q?IPBpj/c8GN1c3RceopwtR3+JBKBcPlxd5d+6PG8GYdYEyFAyNRBFW39S2/JD?= =?us-ascii?Q?Aiqmhf+QI1o9Khr+WSGR4KLK+yLu6xhep02z4XmYGovI6SwzjUuD77inVeyE?= =?us-ascii?Q?mbF+/uyf2SXZu0tEQO5RR1/MlDxeMn4l0UvMmxN/H1E4TNOCVNPqjcJMA5ro?= =?us-ascii?Q?3+wqFf6qjGjzDKA06aIDimsBJ6lnwnBCReMK+v6Yqve/6u0F91UZT7lLd8rW?= =?us-ascii?Q?RqxOzQOFs6rg+xITFMvIaFxHtWkt33fdaPU+Y1M7Vi5iMsD2XPYnyyu53YRn?= =?us-ascii?Q?C6ihuPRxp6CnEi8oSBB7FsBJMCD6YnbMP2i0aOoxosoPASQznpEx7taLlFfT?= =?us-ascii?Q?rzNA4WHofTUsMomRWJw3xd1IizPQ/gx9+uUx0Hqvw2Q9JR50l4oQcMp/wSpt?= =?us-ascii?Q?6Ugl8SrCOp61KtLMPBNGGUBG+dL0zbLE2+JqgbBW12vim2JOo4Xj3wFWo35v?= =?us-ascii?Q?IRODQKeYjUE3mWqwfGrPqCjIcpRPapJ64f9PvuwG?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c621e35-791d-4a2d-b0df-08ddeac82196 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8510.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2025 08:59:03.6236 (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: 78Tygq20NGp3o03Gte8SahwZ0bUbQeV1DOME8gxq66K8uuySIs1Uer6a0xqic8BmBEeXoUIYkgXlNuQh6K1flw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11190 Content-Type: text/plain; charset="utf-8" The NETC Timer supports looping back the output pulse signal of Fiper-n into Trigger-n input, so that users can leverage this feature to validate some other features without external hardware support. For example, users can use it to test external trigger stamp (EXTTS). And users can combine EXTTS with loopback mode to check whether the generation time of PPS is aligned with an integral second of PHC, or the periodic output signal (PTP_CLK_REQ_PEROUT) whether is generated at the specified time. Since ptp_clock_info::perout_loopback() has been added to the ptp_clock driver as a generic interface to enable or disable the periodic output signal loopback, therefore, netc_timer_perout_loopback() is added as a callback of ptp_clock_info::perout_loopback(). Test the generation time of PPS event: $ echo 0 1 > /sys/kernel/debug/ptp0/perout_loopback $ echo 1 > /sys/class/ptp/ptp0/pps_enable $ testptp -d /dev/ptp0 -e 3 external time stamp request okay event index 0 at 63.000000017 event index 0 at 64.000000017 event index 0 at 65.000000017 Test the generation time of the periodic output signal: $ echo 0 1 > /sys/kernel/debug/ptp0/perout_loopback $ echo 0 150 0 1 500000000 > /sys/class/ptp/ptp0/period $ testptp -d /dev/ptp0 -e 3 external time stamp request okay event index 0 at 150.000000014 event index 0 at 151.500000015 event index 0 at 153.000000014 Signed-off-by: Wei Fang Reviewed-by: Vladimir Oltean --- drivers/ptp/ptp_netc.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/drivers/ptp/ptp_netc.c b/drivers/ptp/ptp_netc.c index 8c5fea1f43fa..75594f47807d 100644 --- a/drivers/ptp/ptp_netc.c +++ b/drivers/ptp/ptp_netc.c @@ -21,6 +21,7 @@ #define TMR_ETEP(i) BIT(8 + (i)) #define TMR_COMP_MODE BIT(15) #define TMR_CTRL_TCLK_PERIOD GENMASK(25, 16) +#define TMR_CTRL_PPL(i) BIT(27 - (i)) #define TMR_CTRL_FS BIT(28) =20 #define NETC_TMR_TEVENT 0x0084 @@ -609,6 +610,28 @@ static int netc_timer_enable(struct ptp_clock_info *pt= p, } } =20 +static int netc_timer_perout_loopback(struct ptp_clock_info *ptp, + unsigned int index, int on) +{ + struct netc_timer *priv =3D ptp_to_netc_timer(ptp); + unsigned long flags; + u32 tmr_ctrl; + + spin_lock_irqsave(&priv->lock, flags); + + tmr_ctrl =3D netc_timer_rd(priv, NETC_TMR_CTRL); + if (on) + tmr_ctrl |=3D TMR_CTRL_PPL(index); + else + tmr_ctrl &=3D ~TMR_CTRL_PPL(index); + + netc_timer_wr(priv, NETC_TMR_CTRL, tmr_ctrl); + + spin_unlock_irqrestore(&priv->lock, flags); + + return 0; +} + static void netc_timer_adjust_period(struct netc_timer *priv, u64 period) { u32 fractional_period =3D lower_32_bits(period); @@ -717,6 +740,7 @@ static const struct ptp_clock_info netc_timer_ptp_caps = =3D { .pps =3D 1, .n_per_out =3D 3, .n_ext_ts =3D 2, + .n_per_lp =3D 2, .supported_extts_flags =3D PTP_RISING_EDGE | PTP_FALLING_EDGE | PTP_STRICT_FLAGS, .adjfine =3D netc_timer_adjfine, @@ -724,6 +748,7 @@ static const struct ptp_clock_info netc_timer_ptp_caps = =3D { .gettimex64 =3D netc_timer_gettimex64, .settime64 =3D netc_timer_settime64, .enable =3D netc_timer_enable, + .perout_loopback =3D netc_timer_perout_loopback, }; =20 static void netc_timer_init(struct netc_timer *priv) --=20 2.34.1 From nobody Fri Oct 3 08:49:11 2025 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013007.outbound.protection.outlook.com [40.107.159.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D695E2ECD3A; Wed, 3 Sep 2025 08:59:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756889958; cv=fail; b=rnA3H58hLZ6/10RMvRi6fVQ6RP6BbYmtSgsyRiJ6mgVzRQUvQdlf+7KDtCj6/HYeWtT+DwHa9/c8wc/ct0O7AFfjWMZT+dcO5qQiefJPFw0lTmFjmSG0KLHnJQDAdY07WTsy+6mmhkM24Ik1z4YEQwlKw1jrTW8UUYnaNL5UsFE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756889958; c=relaxed/simple; bh=+O9WQLYehbxXJ97l8TP9Zhn233pjISVWuBa+42dVjTA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Nu+9rQ1nA8mMxAjoeJdDfSiIwZWiiTS/AvYEiKfYaJ0aZQDGv8fDMKa3WpMJPk3U/RyuY5DfKLj5xe+vOA0BLmdDJBqupRWEGqO3n63BaH3c57c5PPk+YW4UHE4flm3evBSwB+v3O7jsnD4ZDKGaXzhkJ+yJGWs/gJ7MO9uy8ig= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Rn0wM13n; arc=fail smtp.client-ip=40.107.159.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Rn0wM13n" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=odzluUHi8kzTYNAzCYKdIQtWukhbIa/GRy0MS39ZTU+T6mGY51NZfLZSfXszgwoTFC2ISNE4aQaQnyzfuxnZ8v6h1XGclx7Bhy17lvMj1yBwv6sUD1Ps/T6CKvEm9zZC30ueyv6anDeEmG4NvsHCVNiyFrrq4kpsCCyA02dp01zF5XeUBo3QTpaVFOgw0wEMmhzvLiQpWNex0oh+te6KiEjbIjrZI/Sqw/MKfgM9Fm63QbRxh80FVkwXCfDrvPfsQvhyZ+XJWmdmO4MoqDbjh5sVsdn6/TD+5Aj6bTxHe8gG+bt09m6nbfP+w2FD/r0SMnLePTBgti/mhozN9L35zQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=m6ZvxpU83LMDJLFsn9uSw166QVWUQCV4FXUPKcX6lgw=; b=hMigo9lgy5eb/tSU0iuWxA8J15gvOnMNMlEJLBFsgUvuMuKGZzrOYtij6LyvTS8Gau8M4hwfH97mhK3FcoGIU7C8lEbuMBQQxo/1kWLZS98foZ0I7WpNzNkuNuscsqkFiQPP33n5U0BrHQOTx+Aw5LTSxzkXV+pcvkjJTbJlzxbgVBGK0I3Cu4MMliHPNBrICoShol2i5C100mMJucm+9sRJmAcnN3bkRXQh7vEyCIkyPEELBtFe5Ie+SIcNqi0zkGAK8LsHpuqbcJ6JvlxtFPVDr0rcgr914Do6eNIG+94HNlICrpV9xNeCoUeBX7lgzRsaSc0gQkVdLlarUAQJnA== 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=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m6ZvxpU83LMDJLFsn9uSw166QVWUQCV4FXUPKcX6lgw=; b=Rn0wM13n4piZaOVzOp87n2ycOdn6jmy6xE6qaCa66VSPRDPb7Lz9/1ww7KNDeeYKJLCbd3VpK5ZJGj8YFeFjWsqAZH1uOtxO4loIOaD1xsbqmhgr8uKUM/WrpIJEExqe0iff7Afq6saYZ6b87WlFosm0m8Y+0byZR0gZXBHgmoYbzQuk67v76KJxEZdEnOJ2KI3UQnOOnO+vuqWVEZ6nYjFn1H4qUEcnx8EZLMrO2SOzJkwty9J7UJ/AsIJKFA4rxhQcUkaXWBiyfAb1H0FdlR8W1sor0l97LaAx5WvojPLfcW1bjK2vbJ97Vwd4ajycGQeikAkmQGaH9qEVXuljjA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) by GV2PR04MB11190.eurprd04.prod.outlook.com (2603:10a6:150:278::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.15; Wed, 3 Sep 2025 08:59:08 +0000 Received: from PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db]) by PAXPR04MB8510.eurprd04.prod.outlook.com ([fe80::a7c2:e2fa:8e04:40db%5]) with mapi id 15.20.9094.015; Wed, 3 Sep 2025 08:59:08 +0000 From: Wei Fang To: richardcochran@gmail.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, vladimir.oltean@nxp.com, xiaoning.wang@nxp.com, Frank.Li@nxp.com, yangbo.lu@nxp.com, christophe.leroy@csgroup.eu Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev Subject: [PATCH net-next 3/3] ptp: qoriq: covert to use generic interfaces to set loopback mode Date: Wed, 3 Sep 2025 16:37:49 +0800 Message-Id: <20250903083749.1388583-4-wei.fang@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250903083749.1388583-1-wei.fang@nxp.com> References: <20250903083749.1388583-1-wei.fang@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2P153CA0026.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::18) To PAXPR04MB8510.eurprd04.prod.outlook.com (2603:10a6:102:211::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8510:EE_|GV2PR04MB11190:EE_ X-MS-Office365-Filtering-Correlation-Id: 9f066b11-37d1-4c59-1b79-08ddeac8246b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|19092799006|1800799024|366016|52116014|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?KUNwMVUXKsIkA4t1AwGEDmiSGDeOAhDizahkl1odntTmcpEv2P2puRqmx2lj?= =?us-ascii?Q?8EaEBdD0zg2kd3ATeQjmPA4YP9IxsHb9F9fva0klKGqgXdpJow8hr/Ax4qqO?= =?us-ascii?Q?GlDj2XZgKR/odPYEmY91gi8J5+7HKzuCcJogmYzalth2sg+snscPIlhiAE9H?= =?us-ascii?Q?R1LVMD7ZtSNNzIEeiFQ1xtRbU6fCczWJggTxi/rvP4u2Xztq4j0qBiKT18B4?= =?us-ascii?Q?BHJZhrw2LZ0LQkkb/yrLs+WUubJ0KC6qXvBEFyJzv3gukssu6SfK+GRhbZ6H?= =?us-ascii?Q?qn5IO2VDr3NWBR5hna6D+U1Na079vR3ysRg5SZhHacr1+NNpDl0a+FCc8Im/?= =?us-ascii?Q?TddMeBWkr8pEPYYxO/inua8zoYyKeIOVzy+0Xy1Qj+T7GVoXoSKp086cHRZj?= =?us-ascii?Q?KAanzV3bs6ll3FLYODrrLTLibvhPJ3O/2pQanfK3U+OuTv7wfu1v67vl0ZZG?= =?us-ascii?Q?p1qje3zpxNFSL2tQdsPB4mOoQEAoLEeWYrvvi20UCbwB7o4cNX53DM12c7z4?= =?us-ascii?Q?XunF99QIBDM8ddZc/UoxlhksyDi149arh+FCkTER77gGEqvkdj6oYS8AO6dT?= =?us-ascii?Q?fMCEEdLJqXfgIHTaFi4zEsY1AItNbjMXLn1k3AH7ug+NNwRJ6d544laTDG4P?= =?us-ascii?Q?/7rPsPbpDMSywdp9D84yihUEcpY+rbAOzsgdTKnewv4fDSJn1COn8LmkAMVJ?= =?us-ascii?Q?jX7vZL9iy4sbfJR/+ham6BIN4xlYJ59rTbWFFO542jK6+cO/QrCPbRNJVBBz?= =?us-ascii?Q?otRqTXdO4yQ0ZB9NQkdSPNzTHBMMznBAAzfiHpHUzorXExwpa9crHavyklLh?= =?us-ascii?Q?nHRwdNMfiADEQT9Kp95ssN/NcRr9qrFcQPO0y7PTjRISrUg4Aco2nqfjJT0D?= =?us-ascii?Q?zjvpNB/owCOOLOo5agRsk0ImRfeC8QY/xac9xlh7bO6fqQtcoR+UlRpG7/5T?= =?us-ascii?Q?5ZfJRPR0wbZxzgShWQjjEp0/JD1dZTWmPvK62Nm9Y8568C7j7/LYSdJ4dKsJ?= =?us-ascii?Q?unOHLrwQAw6iwvgvKadJKp1WaP/5fdHWt5/vujIPMv7XQynQuNcKvzePaGOp?= =?us-ascii?Q?SepZnfnNEVgqUU5RU5rrG+5yjFVfeknNLZaWN2ygIG9r9BWgLvZJjMvZrD9o?= =?us-ascii?Q?DQOq5k+nVFMNn+LHu6i0dQPrkyZM2VW4VuvEeTj7Nx6dLeoR4rKgW2V4THGb?= =?us-ascii?Q?VMikavx/YECsygXXCP00WVih8mZyCGKQEVA4pCpn5/0BZ3q5C1+k9eXzMbYT?= =?us-ascii?Q?lr6IJJFiYznVOz9n3DbPCqmFY11iCfBXs9TyklPC1fuA5os3djgpVtrzokFu?= =?us-ascii?Q?0ZczNgvRuIHL3yYcZTGSodQADxIVa9aThVk16dnJQBLApHOdUut9qKqo2P8b?= =?us-ascii?Q?zyuCctBtbMkFWOVqs2oNrO+QlS2tOuj1QfgxlasJ1Uq9y/5t2qj+qW88VkVz?= =?us-ascii?Q?Se0mJziBA8KGIWbvL2cQsfmbn0SG+YF/SZugA++Pg1gd+N7ew4+ks6ehr+bC?= =?us-ascii?Q?G0EOC0TEpfau9F4=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8510.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(19092799006)(1800799024)(366016)(52116014)(376014)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iJfscb955B2hyG9BRKpnD+vIPeI+u2EOF2ns7TYg/i6sfNm4V6GzokqrpF7F?= =?us-ascii?Q?HOdVZYoojVkZkI2km/EKGJnlZ+rQI7jmdDjhGfMjIcQzjlj3PWwDHlNy5KhX?= =?us-ascii?Q?3H/vbWmpvb48slR9mOy8auMsNluSrWM3wZ8CTQ6ehKavaurYL1NqMkw1pMzf?= =?us-ascii?Q?8wGCgIg0QRtvMYglTbe+ivtJ+FIfkMXlKhe25K13AMCuGrrylmcMUOxgwKI7?= =?us-ascii?Q?iRHgyDqDRD/qrMY1hrBQ6rBS6Wzb7fO3U/cMn6m9mKOaewc1B0w99I8IaF06?= =?us-ascii?Q?VwbK1cU7s7/FactFR0YOnEYScDrCJggww7mylJtJU5mh/Lfgnnu45ZDTFk4D?= =?us-ascii?Q?vaKPPYwQ6PrasNunUzLG58rxQkkhxFmRYop+aGZIylpPHqMDNxqLNNzlGCFm?= =?us-ascii?Q?IVYNobWu5kAPn7Se+10iVv8ut41qatAUPTo+rPSdFkwL9EQHxxgSE/3PlRT/?= =?us-ascii?Q?WtmQlQBWYbH+Fb97D2Ff7b9/64nTPaKoW4w8p9LcnA9WJE1jIjFbv1kIOfD7?= =?us-ascii?Q?UAAdyNwlyK/uU7oj5c7GHbpqUtOvP30eVG1/Ih4dIvplQYQTld7wCyq83y0G?= =?us-ascii?Q?U17trndCxP4jZXb7/nrN8FR7rf+tH8PDLYSCKDoNslanHO1ai3nXM+oNWz+R?= =?us-ascii?Q?/uyaasTQdR0Pv40/9uvDOxsSJK+74cps9zJsIhzni4d5Q34fMwb0/jkwzZmU?= =?us-ascii?Q?Wx6PPlet+mDr5j3NJUrqJXPRLKYc0TqvOQPBXsRge4WuLgnHiN6FUzQRCDdA?= =?us-ascii?Q?FkT9wlMblq9l+3pejtrIs1QdybEJ+D8iuSjooRYcNWgV1rDtv1hlMKT39tCQ?= =?us-ascii?Q?/3ZiM9KTbxtuiXbV5n+qzPUoFQFvTPU740DZXLTpCeRLc8x0fRluokJJ8XVo?= =?us-ascii?Q?qy9ZjODJagwBi7lBzcdTuPh6LJvotahOuUIRvgOUjr6Cy9vk/VbWAv4TMMFd?= =?us-ascii?Q?dYEvOgpfjdD2s5N6r2lS+aiQ/d1DOhT3ks17UGD5CVZhE4yq2scH8Nya2/vo?= =?us-ascii?Q?5Zq+JH1CQsPLnB8ZUquRGPEHKB4iHQA19wS60t8RpjwtangMir4uyXtMJ8x8?= =?us-ascii?Q?sDxO4s8x5rEzSaTwwz3ztsaJTY/7+hfUYgcS3iZnF5uyvWeeQUY98+TwWpru?= =?us-ascii?Q?ipP9RRVbqMlk2rEKN0HQ8PM2nDTFOLSAkM7iSlmpDZSV5Cu94C8gxpD5t3zA?= =?us-ascii?Q?x8q8Suh90ZSg3T0Axl9oHZCDfaTTtaac3UuGLuvirpM4XWXQXGrX6jTWGb7E?= =?us-ascii?Q?yi1QluCfjT8WwrQ5Krd9Q0jILizwjaHcSW+728f6Vcai+E+0VtNVVmPxLVBm?= =?us-ascii?Q?nAe02HPC6O+uDgFGt0ezKNifgEwuMusIRQAUdpvgfHOjyEGCr9s/LPEY8fYF?= =?us-ascii?Q?Yn4sjBPbYAQ62ZA4XEJImSzdV72hyReVuuBZyjCwq6DQdfVTWJ5vJR1irHGe?= =?us-ascii?Q?2uN/Q/32KwoqGzQR88EPCOWHdvdD722Xt7QFUsSGDd9dBtjVgRi1rQcxbo/g?= =?us-ascii?Q?Z8KaDaXljoystAQfhEPNUeTBxhmBPPOUUuNXy3scB4j9WmbEcOufBh8ZHhGd?= =?us-ascii?Q?t3Mpo2LSlmXIE1SXfd2LoS4TJpxkqSi75uR91QMB?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f066b11-37d1-4c59-1b79-08ddeac8246b X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8510.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2025 08:59:08.3969 (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: l9iLxcqyEaIBKcGkKRaYhD+6sYP9EE9ITk4c1b6w08MOb0pe51hqIofdwQtjI69khn7IaN6s6eNrPZNY7UfoOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR04MB11190 Content-Type: text/plain; charset="utf-8" Since the generic debugfs interfaces for setting the periodic pulse signal loopback have been added to the ptp_clock driver, so covert the vendor-defined debugfs interfaces to the generic interfaces. Signed-off-by: Wei Fang Reviewed-by: Vladimir Oltean Tested-by: Vladimir Oltean --- MAINTAINERS | 1 - drivers/ptp/Kconfig | 2 +- drivers/ptp/Makefile | 4 +- drivers/ptp/ptp_qoriq.c | 24 +++++++- drivers/ptp/ptp_qoriq_debugfs.c | 101 -------------------------------- include/linux/fsl/ptp_qoriq.h | 10 ---- 6 files changed, 24 insertions(+), 118 deletions(-) delete mode 100644 drivers/ptp/ptp_qoriq_debugfs.c diff --git a/MAINTAINERS b/MAINTAINERS index 6cad6225381a..4140fdd6ccf3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -9816,7 +9816,6 @@ F: drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp* F: drivers/net/ethernet/freescale/dpaa2/dprtc* F: drivers/net/ethernet/freescale/enetc/enetc_ptp.c F: drivers/ptp/ptp_qoriq.c -F: drivers/ptp/ptp_qoriq_debugfs.c F: include/linux/fsl/ptp_qoriq.h =20 FREESCALE QUAD SPI DRIVER diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig index 9256bf2e8ad4..5f8ea34d11d6 100644 --- a/drivers/ptp/Kconfig +++ b/drivers/ptp/Kconfig @@ -67,7 +67,7 @@ config PTP_1588_CLOCK_QORIQ packets using the SO_TIMESTAMPING API. =20 To compile this driver as a module, choose M here: the module - will be called ptp-qoriq. + will be called ptp_qoriq. =20 comment "Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional = clocks." depends on PHYLIB=3Dn || NETWORK_PHY_TIMESTAMPING=3Dn diff --git a/drivers/ptp/Makefile b/drivers/ptp/Makefile index 8985d723d29c..bdc47e284f14 100644 --- a/drivers/ptp/Makefile +++ b/drivers/ptp/Makefile @@ -12,9 +12,7 @@ obj-$(CONFIG_PTP_1588_CLOCK_INES) +=3D ptp_ines.o obj-$(CONFIG_PTP_1588_CLOCK_PCH) +=3D ptp_pch.o obj-$(CONFIG_PTP_1588_CLOCK_KVM) +=3D ptp_kvm.o obj-$(CONFIG_PTP_1588_CLOCK_VMCLOCK) +=3D ptp_vmclock.o -obj-$(CONFIG_PTP_1588_CLOCK_QORIQ) +=3D ptp-qoriq.o -ptp-qoriq-y +=3D ptp_qoriq.o -ptp-qoriq-$(CONFIG_DEBUG_FS) +=3D ptp_qoriq_debugfs.o +obj-$(CONFIG_PTP_1588_CLOCK_QORIQ) +=3D ptp_qoriq.o obj-$(CONFIG_PTP_1588_CLOCK_IDTCM) +=3D ptp_clockmatrix.o obj-$(CONFIG_PTP_1588_CLOCK_FC3W) +=3D ptp_fc3.o obj-$(CONFIG_PTP_1588_CLOCK_IDT82P33) +=3D ptp_idt82p33.o diff --git a/drivers/ptp/ptp_qoriq.c b/drivers/ptp/ptp_qoriq.c index 4d488c1f1941..8da995e36aeb 100644 --- a/drivers/ptp/ptp_qoriq.c +++ b/drivers/ptp/ptp_qoriq.c @@ -465,6 +465,25 @@ static int ptp_qoriq_auto_config(struct ptp_qoriq *ptp= _qoriq, return 0; } =20 +static int ptp_qoriq_perout_loopback(struct ptp_clock_info *ptp, + unsigned int index, int on) +{ + struct ptp_qoriq *ptp_qoriq =3D container_of(ptp, struct ptp_qoriq, caps); + struct ptp_qoriq_registers *regs =3D &ptp_qoriq->regs; + u32 loopback_bit =3D index ? PP2L : PP1L; + u32 tmr_ctrl; + + tmr_ctrl =3D ptp_qoriq->read(®s->ctrl_regs->tmr_ctrl); + if (on) + tmr_ctrl |=3D loopback_bit; + else + tmr_ctrl &=3D ~loopback_bit; + + ptp_qoriq->write(®s->ctrl_regs->tmr_ctrl, tmr_ctrl); + + return 0; +} + int ptp_qoriq_init(struct ptp_qoriq *ptp_qoriq, void __iomem *base, const struct ptp_clock_info *caps) { @@ -479,6 +498,8 @@ int ptp_qoriq_init(struct ptp_qoriq *ptp_qoriq, void __= iomem *base, =20 ptp_qoriq->base =3D base; ptp_qoriq->caps =3D *caps; + ptp_qoriq->caps.n_per_lp =3D 2; + ptp_qoriq->caps.perout_loopback =3D ptp_qoriq_perout_loopback; =20 if (of_property_read_u32(node, "fsl,cksel", &ptp_qoriq->cksel)) ptp_qoriq->cksel =3D DEFAULT_CKSEL; @@ -568,7 +589,7 @@ int ptp_qoriq_init(struct ptp_qoriq *ptp_qoriq, void __= iomem *base, return PTR_ERR(ptp_qoriq->clock); =20 ptp_qoriq->phc_index =3D ptp_clock_index(ptp_qoriq->clock); - ptp_qoriq_create_debugfs(ptp_qoriq); + return 0; } EXPORT_SYMBOL_GPL(ptp_qoriq_init); @@ -580,7 +601,6 @@ void ptp_qoriq_free(struct ptp_qoriq *ptp_qoriq) ptp_qoriq->write(®s->ctrl_regs->tmr_temask, 0); ptp_qoriq->write(®s->ctrl_regs->tmr_ctrl, 0); =20 - ptp_qoriq_remove_debugfs(ptp_qoriq); ptp_clock_unregister(ptp_qoriq->clock); iounmap(ptp_qoriq->base); free_irq(ptp_qoriq->irq, ptp_qoriq); diff --git a/drivers/ptp/ptp_qoriq_debugfs.c b/drivers/ptp/ptp_qoriq_debugf= s.c deleted file mode 100644 index e8dddcedf288..000000000000 --- a/drivers/ptp/ptp_qoriq_debugfs.c +++ /dev/null @@ -1,101 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0+ -/* Copyright 2019 NXP - */ -#include -#include -#include - -static int ptp_qoriq_fiper1_lpbk_get(void *data, u64 *val) -{ - struct ptp_qoriq *ptp_qoriq =3D data; - struct ptp_qoriq_registers *regs =3D &ptp_qoriq->regs; - u32 ctrl; - - ctrl =3D ptp_qoriq->read(®s->ctrl_regs->tmr_ctrl); - *val =3D ctrl & PP1L ? 1 : 0; - - return 0; -} - -static int ptp_qoriq_fiper1_lpbk_set(void *data, u64 val) -{ - struct ptp_qoriq *ptp_qoriq =3D data; - struct ptp_qoriq_registers *regs =3D &ptp_qoriq->regs; - u32 ctrl; - - ctrl =3D ptp_qoriq->read(®s->ctrl_regs->tmr_ctrl); - if (val =3D=3D 0) - ctrl &=3D ~PP1L; - else - ctrl |=3D PP1L; - - ptp_qoriq->write(®s->ctrl_regs->tmr_ctrl, ctrl); - return 0; -} - -DEFINE_DEBUGFS_ATTRIBUTE(ptp_qoriq_fiper1_fops, ptp_qoriq_fiper1_lpbk_get, - ptp_qoriq_fiper1_lpbk_set, "%llu\n"); - -static int ptp_qoriq_fiper2_lpbk_get(void *data, u64 *val) -{ - struct ptp_qoriq *ptp_qoriq =3D data; - struct ptp_qoriq_registers *regs =3D &ptp_qoriq->regs; - u32 ctrl; - - ctrl =3D ptp_qoriq->read(®s->ctrl_regs->tmr_ctrl); - *val =3D ctrl & PP2L ? 1 : 0; - - return 0; -} - -static int ptp_qoriq_fiper2_lpbk_set(void *data, u64 val) -{ - struct ptp_qoriq *ptp_qoriq =3D data; - struct ptp_qoriq_registers *regs =3D &ptp_qoriq->regs; - u32 ctrl; - - ctrl =3D ptp_qoriq->read(®s->ctrl_regs->tmr_ctrl); - if (val =3D=3D 0) - ctrl &=3D ~PP2L; - else - ctrl |=3D PP2L; - - ptp_qoriq->write(®s->ctrl_regs->tmr_ctrl, ctrl); - return 0; -} - -DEFINE_DEBUGFS_ATTRIBUTE(ptp_qoriq_fiper2_fops, ptp_qoriq_fiper2_lpbk_get, - ptp_qoriq_fiper2_lpbk_set, "%llu\n"); - -void ptp_qoriq_create_debugfs(struct ptp_qoriq *ptp_qoriq) -{ - struct dentry *root; - - root =3D debugfs_create_dir(dev_name(ptp_qoriq->dev), NULL); - if (IS_ERR(root)) - return; - if (!root) - goto err_root; - - ptp_qoriq->debugfs_root =3D root; - - if (!debugfs_create_file_unsafe("fiper1-loopback", 0600, root, - ptp_qoriq, &ptp_qoriq_fiper1_fops)) - goto err_node; - if (!debugfs_create_file_unsafe("fiper2-loopback", 0600, root, - ptp_qoriq, &ptp_qoriq_fiper2_fops)) - goto err_node; - return; - -err_node: - debugfs_remove_recursive(root); - ptp_qoriq->debugfs_root =3D NULL; -err_root: - dev_err(ptp_qoriq->dev, "failed to initialize debugfs\n"); -} - -void ptp_qoriq_remove_debugfs(struct ptp_qoriq *ptp_qoriq) -{ - debugfs_remove_recursive(ptp_qoriq->debugfs_root); - ptp_qoriq->debugfs_root =3D NULL; -} diff --git a/include/linux/fsl/ptp_qoriq.h b/include/linux/fsl/ptp_qoriq.h index b301bf7199d3..3601e25779ba 100644 --- a/include/linux/fsl/ptp_qoriq.h +++ b/include/linux/fsl/ptp_qoriq.h @@ -145,7 +145,6 @@ struct ptp_qoriq { struct ptp_clock *clock; struct ptp_clock_info caps; struct resource *rsrc; - struct dentry *debugfs_root; struct device *dev; bool extts_fifo_support; bool fiper3_support; @@ -195,14 +194,5 @@ int ptp_qoriq_settime(struct ptp_clock_info *ptp, int ptp_qoriq_enable(struct ptp_clock_info *ptp, struct ptp_clock_request *rq, int on); int extts_clean_up(struct ptp_qoriq *ptp_qoriq, int index, bool update_eve= nt); -#ifdef CONFIG_DEBUG_FS -void ptp_qoriq_create_debugfs(struct ptp_qoriq *ptp_qoriq); -void ptp_qoriq_remove_debugfs(struct ptp_qoriq *ptp_qoriq); -#else -static inline void ptp_qoriq_create_debugfs(struct ptp_qoriq *ptp_qoriq) -{ } -static inline void ptp_qoriq_remove_debugfs(struct ptp_qoriq *ptp_qoriq) -{ } -#endif =20 #endif --=20 2.34.1