From nobody Sun Feb 8 18:32:00 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011059.outbound.protection.outlook.com [52.101.65.59]) (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 276EC2836B1; Sat, 3 Jan 2026 21:04:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.59 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474298; cv=fail; b=DgaLHPKhQHffypgDbJPDONurAnAaiJ7ZXdV7JbCuWg3pWsmcJjOfQa/P4u5Daas9ec5UROmRKGPtHAeUBlukZF8nk0B7GHgKIEEZuhSJTvFBbkae4KJAG4bNzMf4FQKHahdKZi0/gSCB3nqwt9v0NDZ7krDvifVAzBvMMoWwkSk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474298; c=relaxed/simple; bh=SdbBMDsiU2sTIguJkFOI75PX+UBWwrrM302OFFPSM88=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=drwtS1GaDces8DIYRyM7FHODVQuH7G/zsv75qz5c0bSQsjxtTOI+fPtxs2SM3vX6U4C/V83BAO+rbmnTxWLRoQtLrK9wcigysp5R5qQmmYGz9H69ClQ4/fnavkuwdNjfZq1sjRddy1ZDNeXyaG0xIo5kJggATRSjmfpoIlX9/fA= 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=DfE7r1x0; arc=fail smtp.client-ip=52.101.65.59 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="DfE7r1x0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xEBmMgZ5i/f49IHE1GIEa8cMYLESTwIaD1RBDJXSaoywPka+YI1LNj4ZYV2/pYtoCmdrrgJwUcdNj7PZopyo9J+DIhnR4vZjYrG6H0WOaBVBImHEvL7RghZBKlr2fGaTJGI2Feb9ujQVDJ4Vvf23VtPcyy4uLzBFMl12fsaJotqf0PELYugLqhLUZOuPpML2XPZ5NMGFvWX2gt6WwTOtEe6OpHnzlMeFWbqDGh69Aa9pXluf9y7lJ8HnVX0sgMM/TdIPplVFYb5sV449O4kFuGTXAydulTPPJcI54C+Q1Qry2ErWggS43WzxJCS6sUM2qfzHH+rvSaJjbRGGbnIOwg== 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=a+NAymAaqlOGPZuwxeo/7VlnqTUzkMT1Ho3qoJMbjHI=; b=ecupom8WQjmLsF06ZFe3O4EVALTfY/gNlCI0Q5gOpJA7SQ4mXttiAuQ22uk7YcIuNGCr2rHKqeLUCyw2U//3OqlU9yVFY/Lw2lu5/cyIGV3u6c9buc3PBWWP9CO1pEEUxXxnOyW/J0P0neV0ro9eOkrV5HU89vx1ti3g5lBDOvOgmnjwJaQ0TqJU428V4+uhiJUz0zONxl8OtUl82xJlqk1a4MGd7TquMdO4EPj3JP+HL8e8NV6w2yeP2csj8uHZ23cCkjgPrSpqZfP1Tr9XiU/vU8kXmCqN7+KjC31ChpZrRIpm3BhnuhDf9KrbL2f8T5snwRt5TuutSttnsuiOnw== 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=a+NAymAaqlOGPZuwxeo/7VlnqTUzkMT1Ho3qoJMbjHI=; b=DfE7r1x0L+sc4ReTVg1eQ+CYXMePM3DOqdYyZHigoT9DTpAEg8pGIBus/7BtbJDey5S1QXLY5wXuW+bAglGx3MqUt8CRlZRXz8ronCpfc0/4I4AtTHakJc0ztQ7BUoyD6wHpk6a5/a1grTWndIudFfIPYbrbYuuhVGDeAsqLgJE52OgD+u34og0WR93BDPr1MUFDgyouS7xOFCtYuCqs4QyXURcMctl4M/Bd1aT0I+YAfp0oe0LaXfufmKG83lFC8rzITp1g9RGmR7FuR1pY6cZEzQCp7nWqKd4zVZgYD+5znP0CkfdIaL1me9832cIF6cd1XquGZRRWSGCkPQIMpQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:04:52 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:04:52 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 01/10] dt-bindings: phy: rename transmit-amplitude.yaml to phy-common-props.yaml Date: Sat, 3 Jan 2026 23:03:54 +0200 Message-Id: <20260103210403.438687-2-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: fb0cf2fa-85ea-4a63-d484-08de4b0bbcc4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?aXM5TytDK09OUVphMHlHSFBPRlBseTYyS0xsUEF4eWFhYjZodVJMVVFzNDFS?= =?utf-8?B?YU1wK1JHYUZqckx0aVNNU0lGcWZQbnNzY1BWWTM2SEttQkorVzc1dG95Ukgv?= =?utf-8?B?T09zNW0zTzJYYUVjV293UmwxS0FrZVRYM2tXbFNqeVRwM2JER2gvSWkxcVJN?= =?utf-8?B?VTcrditseDltZENFbnU4blA0T1B2NE5pMWxMQ20yaWtOSXVOeEtaUlNoaWtl?= =?utf-8?B?UGRvM0NUQXB5L1BzNEs4WEpRcXhKaXQ2R0xFOElFUTNsZWVtT05rK0xMYkJm?= =?utf-8?B?TFgraTN5YlNnZUVPSkZySXU0U0JFQU5PT1FtZFRLWjBPVzl4MnNwZFhyZThX?= =?utf-8?B?V251SHJQSml2eU9IUnBoTm8wMUxybVhxMStNcklESE05cDVvL1czUUZGMWFw?= =?utf-8?B?M1NzSGlzVkxpSE9jbzMrQ29FLzZtaTRNd0dOWG5tTzFmNnlnbFVqNEh2RlJa?= =?utf-8?B?b1dWRmZoRGM5UjF4M0JDY2ZHNEkxRnpQSGJVTStCWTlKdXVaSlBCa0RIK2ta?= =?utf-8?B?Ny90QTB3dndaUG5pd0FqNHdIUWMyNUNGeXFaL1BOamwwMUw5bmJDVm1PdkFY?= =?utf-8?B?Zk0yMWxCN3JsSWhsNUQzcWx2eFN3c1dUSVowOHNrMmIvcFlKRGc2UkdBMnZ6?= =?utf-8?B?V1NjUW9QLy9SbUZoVHNYV2JPNFJYdUl6S3k2akdmWE4vRVgxb3J5Uk4vT2ZO?= =?utf-8?B?d0hFaVVmazVORkFZNWJlTmhXSGM5SkhaUktwZWdyeURxMjJaVGpXbXZvdkdz?= =?utf-8?B?UDRUZDQ1WVNmRkJ6c0pHc0ZRV0RIMnZaY0htcE5FZDVVVWlqdmg0bnQ5N2du?= =?utf-8?B?ckNMa3ZqU3FLS0p3NWo5QjB4YXBLWnlVdkJiSFhUYU1QK3JlYWg5YnN5SUk2?= =?utf-8?B?MUJ5VXYyd1JBWkNiMGpGZmExeFIwVzdBeVlnS0ZLZ2hPWkl3NW1ERjhMRzRl?= =?utf-8?B?T01nV2FGWVFmUHBFRDR5TmJsYkVqZjlORkZ4UXN2Z1RnM3pRSDBJUVc1aTJT?= =?utf-8?B?VDNENWFhUFJHTjBBUHpOU1hkWDZ2SDJKSUdKZTYwNUlLdEgrQnkyRkdPemRP?= =?utf-8?B?WnZHYW1VQmFGR0ZBNHNnemVuTUdyVGpRWTdSWVZTa3VyZ1pSbmtVR0ZVZU1I?= =?utf-8?B?Z0c0Q0JrTnJvdnhtSUQ5ZWxsemswQVdKN0didEtnSkQrUHBOM291a05WOElI?= =?utf-8?B?QnFIaHB4YldiK1NYRnpheC9YL0dFSWQ5V0laRS9zdmF3YU5qT1kxcHl2UUlK?= =?utf-8?B?dFRwMG8ySjJpbENJd2VQNThEOFJZS3VGdXF0bmNORFRjZEx6bG5rbDkrVWd2?= =?utf-8?B?dlFhYlhPQjdiOVZYQ0lydmdwclM1LzZKYVYzbFNiRE9LSW5DRUdKTW1aa0Ir?= =?utf-8?B?bUN0ZWFndmVEckQ2THB5ck5EUnFmMk9UbXFOM1dieU9RUVdHTGZyL1VWY0w0?= =?utf-8?B?SXZaM205TTV3U2c1Q1Z6emVzK21VUGVMaS9TYmtXenN4VHhkcXFFVnhzcE16?= =?utf-8?B?Sk5yZCs1RVV5czlqdWVneTlSY00xWGRMckpnalNKaFMySERZR1BTTFlmVEVF?= =?utf-8?B?ZTNqKzdMWGhkaklPYm1OcHBQNUZqVnZ2U0M5SlRyZndTZytBRWFOUkFMOHF2?= =?utf-8?B?SDZkdkRzd1owT2ZsV3BBR0p5WVVJaGJWNjJtdmNtY1EyTFB3eHdjQ3dCVU54?= =?utf-8?B?N1crV3RTcGJKNmVsTFdNaGx1WnBNNHBoVVdhcSsyWTFDQ2pVcG8vMFdyL00r?= =?utf-8?B?dHJMOUsySC9nck42eWZUeHhrcnV4M1BseVorakV6YVlYWkphRHVHemJIckhR?= =?utf-8?B?anRCQTZwbmI3bTloRkNNR2x3Nm1hTEx0aXZ3d0ZmOUJSSEl4Ni8vY3htbjZD?= =?utf-8?B?R1ZZbkVyTjBtS0RJN0NIQTVhM0t5MFVOS3VzV25oSS8waEN2NmREc2hXZHdP?= =?utf-8?B?RTI4THFxd2drRjBxN1lxSWtIcmZmSU55dXgwMi8ydXZKejJsc0IyWmx1QjFL?= =?utf-8?B?ajczSUVwMS9MZU1xK2h1eENPY2VZVFhBeDNtS3Y3Vzdodnk0aUdpalRDK3Fv?= =?utf-8?B?cEF6cERnOW5lY1VtWHJkWlZkZEU3dFhPdzQvQT09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cWVVQzh5d1piYjQ5bzcrdUVBRnFPSUtIZ3E0RlVxeXV6ZlBKaDc3QWVndkp0?= =?utf-8?B?cTN1cHVKcktjZDBBaS9sbU5hNnRpQXBwMUF6QUl0c2VpZHVZZno0SDRrdTlM?= =?utf-8?B?RGhNQVdWQU1rR3JJNk5qQ0h2cU1TVmFSMDU0QkNFMVhnR0hrN0dwVDJFalVH?= =?utf-8?B?eHVEMGRldEsxeU04ODNUdVZoczdQM3k4NXlRdm9veHNQYmdDdEExVVJycGps?= =?utf-8?B?WkgxMk5iQzQ5ZTJDY1E3Wm5hakJYNnluZTV2K3NOaW5ySlJvUWFXSm11dCtU?= =?utf-8?B?Q0VPUm5mNG0rNkYzT2tpYTNQb1BHMStieVAyNzhHQ2xwZ0Rud2VWbWkzb0NU?= =?utf-8?B?cUtiZWFJTElwaWd5NUpFY0N3ajFlQVBPVjlDVENnU2hSejA1L2ZZbmt6SjRU?= =?utf-8?B?NmxWcStuVGNSSmZNSWtEdzZoQXpJbTNBWnEwQVJmQXpidzdXTTBWK00vd3Ja?= =?utf-8?B?MFZteVZFdWw0V3owdVlublY4bnVOcTBsTEU5b0ZHT1c1U25XV1ozT1pZUUNp?= =?utf-8?B?RE5sUVFHVDFudVhVcmcxcXJjYlQzaCsyNVR4TFhDVDBkM1R6dXB6eC95TVVr?= =?utf-8?B?TmRFYnI4ZWdPd1V1dFM0aFhRQlplMHpUNXc1dklNNzRGdkY0L3E5Y0Fxd0Fj?= =?utf-8?B?ZXlwSnBpZU5IWjdXNlRJSFV2dFZmTUhJU1VWYzVnbUt0emNheG1qLzZtdUt6?= =?utf-8?B?UElSZG9zS2hveWczOHRETEtVeEdtYzBsTDJKNWN0bWNXVCsvVUF5L1hRUFVG?= =?utf-8?B?cmUvR2cxMldBeHIzNXVUSjkvQVFrSU9DY2hYU3hpV2FjM1RmK0dIeDUyaDhP?= =?utf-8?B?bk1rZGhmR3BIb01Nck02QzlBWmtaSnBoTmhOMGJsNnZXL2dyR29abWdDUXdN?= =?utf-8?B?YkRJN1lrRXFDN3BJL090UmJ0VW1KL1A3blRCeVRpVVhVRTNYMStxVWVJMTJF?= =?utf-8?B?U3hYbkRhUmYzREE3RDl5aE9ORzFVTm1pZDJzN21CWDliZ2hxZ1p4Z2oxU0xi?= =?utf-8?B?RjlNNjlDU3JmZUREZjRtNDlRMmpTRmVXdlhXMVJoSlNqT2RGMWc0dzQvQ2t4?= =?utf-8?B?OUN2R3V3K20zbENNdU14YkYrTVlsTTlVSFozczFjVjcweU5CcWxjNU9IUEli?= =?utf-8?B?RjdqeXNsS0ZBMGtFczNraXNUVGRzU3lBY2wzQ3k4bTFFRzAza2JWVFhBYUlV?= =?utf-8?B?MnF1a2NuaHZZVTNLWU5VVkRNeFlVdDZjVDJEY21EZjRXZFFXTFhLVEp0WjBq?= =?utf-8?B?aVpBV3ZWN1ZDNHFuVUZ2YzFSMzJIdXg5a3hPampadDVLT2Z1TlBneUk4YnRi?= =?utf-8?B?VzdVeTVVMHE0TFM4dFBEbVdRazU1VHV3RE4xLzRBNnpwZ2lvUkNtRit1MDhn?= =?utf-8?B?UWEvbTUvRk1UaGpkQUJxdHFkaFFZc1FJbklkTHhkbUhzYjQvUUFmTjBNbDFo?= =?utf-8?B?bE01NVdST2E1QmdPSTNjTkE1L2tKTFM3NmMxSkpMTWdocXdDRm9LTWJjWlBS?= =?utf-8?B?Q2dWcTRta3lkQW02MXhPWDNGbE83U0prR2F5cmxMeDAvMFNhL1MyekRqOVBW?= =?utf-8?B?OWpnbTlWQVJWY2FYUlh2ZVNmV3p3TTN5TVRlYjkxdXdwRENjaTNFdlJQYitQ?= =?utf-8?B?SlRRVnRMc3FQZDNNRGt6N3RXQXNoby8zajRVK1gzTzN1SnBScStPYnBsZGJv?= =?utf-8?B?Nmh5NmRPcFFqWDB4Z01oZVRUOTVtcGg5OVB0ZFdlMHc5MTVlNjRHSVAwcFNZ?= =?utf-8?B?end3Sk9vU2FaM2ZlYlJZM2U3cGdubGVQaVlJeUJ2azBwRG1Balp5cnJUeklY?= =?utf-8?B?REVJRGU3OXNNenlpaW14eXk3TWp2dHZycFM0d3NTLzJpVEphMVFwaDNYdnc1?= =?utf-8?B?ZStGZ1gvR2IrWW13TW1hcGRVcUVWRW5meVVHczlxa2ZXOVdLV09Ick9JS0Rn?= =?utf-8?B?d0ZnZE5QNHBsM3ZyaUtnVHplYWY1WGR2R0x5MzMwZTEyekNsY3pOTk1tQUV2?= =?utf-8?B?WklJMEhLUSswa2FDZGlDMFIyczFsUzB5NGpQbTFVRStlSk9QSUdVZ3F0VElL?= =?utf-8?B?VXJIZVpPdDZCekEwRjRMUlI2c0xIa1lmaVN2QjBobzRJS2liTENuSitXYWh3?= =?utf-8?B?SGhXdkliQUZ4YWJ2VEpnc1BzR1drVE9kSUdMSzBXb0pKVEcyNHRXZnZzdWxV?= =?utf-8?B?VzR5M2hXUjNZZW0vSlpQSSt2L0p2cEEvdzMwTzNGN3hzSmJhTkNzVUU5Ymky?= =?utf-8?B?L3F6R0N1c0RrazZzbjFWaEd6NjdqK2tjRVRVZ2pNNms1NnZPQUZrRU9DditV?= =?utf-8?B?Mmh0WjJIbVFRb1lTOWRsSDBCL0txd3FuVzF5QXV3ZGtIc0M5dG5UQ2xnQU8r?= =?utf-8?Q?Nf2305JuWgUrN+5o=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb0cf2fa-85ea-4a63-d484-08de4b0bbcc4 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:04:52.3362 (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: yH1yl5aWkKNnlExB/Ak38cfgAwJm62fif5ZziM8m/ICigjSXGbOHDwbHU5pWEo35sTQrVxCCfrUMUDeARhQxQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 I would like to add more properties similar to tx-p2p-microvolt, and I don't think it makes sense to create one schema for each such property (transmit-amplitude.yaml, lane-polarity.yaml, transmit-equalization.yaml etc). Instead, let's rename to phy-common-props.yaml, which makes it a more adequate host schema for all the above properties. Acked-by: Rob Herring (Arm) Signed-off-by: Vladimir Oltean --- v1->v2: none .../{transmit-amplitude.yaml =3D> phy-common-props.yaml} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename Documentation/devicetree/bindings/phy/{transmit-amplitude.yaml =3D>= phy-common-props.yaml} (90%) diff --git a/Documentation/devicetree/bindings/phy/transmit-amplitude.yaml = b/Documentation/devicetree/bindings/phy/phy-common-props.yaml similarity index 90% rename from Documentation/devicetree/bindings/phy/transmit-amplitude.yaml rename to Documentation/devicetree/bindings/phy/phy-common-props.yaml index 617f3c0b3dfb..255205ac09cd 100644 --- a/Documentation/devicetree/bindings/phy/transmit-amplitude.yaml +++ b/Documentation/devicetree/bindings/phy/phy-common-props.yaml @@ -1,14 +1,14 @@ # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- -$id: http://devicetree.org/schemas/phy/transmit-amplitude.yaml# +$id: http://devicetree.org/schemas/phy/phy-common-props.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# =20 -title: Common PHY and network PCS transmit amplitude property +title: Common PHY and network PCS properties =20 description: - Binding describing the peak-to-peak transmit amplitude for common PHYs - and network PCSes. + Common PHY and network PCS properties, such as peak-to-peak transmit + amplitude. =20 maintainers: - Marek Beh=C3=BAn --=20 2.34.1 From nobody Sun Feb 8 18:32:00 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013007.outbound.protection.outlook.com [40.107.162.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 1BF662BDC14; Sat, 3 Jan 2026 21:05:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474305; cv=fail; b=OwdUppkiBk0FhZTKDvGSFD2D2DvB4qZPoGRx22Vq6Y6qsGXjcglDjgcxkkby5LdQ7EnGwr11/zsmpEbpMnNxR4Ij4G1TTnST/d+nGqbvEHVMOjBFgp7eO78LJQfB7Lk1LUBb0H/rVeji0RAkuyi+egwS0rPtSTnMYIrR+2GMtlM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474305; c=relaxed/simple; bh=vdlrYNtMtg8ZbQI+Ylqtc0jl5mmI+5oBE7z2Eua2Qy8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=KvEis8AVYu/qQm2GSQn6uKx5ofMBfn1vn6JvcYfOXB2HdXHZIHH3+inraRwT2gEa+kg35M9Gvu2u00VOgBTyyTrZCq6VEV1VrJU2sgpNchtmnWfilYQF3L2/rD068flbFJIj6HRP8mPwXnWFfLbcqxO053lMzVCj86hlqnXCiwI= 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=Y2P3GZzB; arc=fail smtp.client-ip=40.107.162.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="Y2P3GZzB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BzHQGsPhmzKRsz4vVFWKR14WPrcx2Q0oIJxV/Lek6z2NATVEoiFo1zK1Q3orE7r1FSqY5R7EaEuT/5lKpYwtmgDlNmIrLnhOsIx1ocT3CLKB0oAi8q5BaomD7dthUCWKfKyu+5laa+t/Otyhy4YmHym2Xa+/LqaMs5BcglzFX/808IBGSG5sWV46udc1b9vQorkNBrBj1NJh/i+8ZWBFmCs3XLOpnk1MwNCzWSgIXjSHyySY3HCRkKeeYnoITDGJDyu5Oc4DtFZ0AKdcp+HvBTgSIoZC7lMUZftps4B3jA/tBL9hS2gbCCbsYImy0Prxt/7GT99wqWds32B6jku2nA== 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=kizdP4BCENVV8/NAIxnlypiuimzghBvo8wBQDDCP8ik=; b=tbRAS01nUzJ5A2/eMR4hZTM03yciUY9vxGPtIZ9+TiI+8nx64jZDF9hDPsBpK+Qqhto7JnaaMWivbHxkC18lekQO1ZxH5kjW2drLwPgUfNOoT/CfcWOiW7GRpytJtdWLK91OR1akdVdTYELpXhICXBoFF7iPGjK/M/FSupe19NXAdRkFsaDWUA59fv2ZYdi7DvMbyajMmoWddE9dPn/nhuTEhSU9GCPItwvxCdXNtblJ2gUY+mUPPccoXnLRgRhK0i182P+WKK/tK/+5KSgw4tAAhHJYSa9vsWUzZQtvGJzr4KNwIYZ/Y77Ks+r0rKkW8zEj7RV/6djufzlw17OIeA== 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=kizdP4BCENVV8/NAIxnlypiuimzghBvo8wBQDDCP8ik=; b=Y2P3GZzBhXm+yU9Twfx7kyB6+uf7HVo9mnixa8LP2ZrHfZeTA/9/GnaoqY1IYqB2kD2wiQ9KDVl2RI8+mSfWh/PApDUN4CucZlQczZq0aoqRJuzPrqISAqwJQkfV+GhxY+4L7HkkuT1YlLxiq9SPLh+NaIM7HrPDspeRSSxbtRF8VBRx/5OlNrrUlr2t7TrWqs1fnIo+EZMJLdQmxpCdeN69V1K2k1nEIqPiijvY6vPnOLETppD63u3NonjHjUgbDBkXAPV72pgrki7TzdHOk2NkoSS8JraJ4FrjxPYe4ncwXy+gBgL4KbrGzA8CoXe8T0xI4j1VzVx1f7ia8Qt0NA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:04:55 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:04:55 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 02/10] dt-bindings: phy-common-props: create a reusable "protocol-names" definition Date: Sat, 3 Jan 2026 23:03:55 +0200 Message-Id: <20260103210403.438687-3-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: a495f86a-af8e-46ad-88d0-08de4b0bbea4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?b08rS2tmWXE4cllvZHlLV2IrcitaQlptZi83RGI5SGozRHJBdSs0d01TTmtU?= =?utf-8?B?TjM1WUljc0NyVDFtT0FoSWVrSFMwN2FVRStCTnVvTnJ4VW5JTEV4UTA2UHBF?= =?utf-8?B?TGNZdUhXVTF2bFBJeDhqUVpocEZuaXRPNEYxS3VRU2VNUkhySldnWndPUDF5?= =?utf-8?B?VEpYaXZ0RGt2UmRGWXBOYmpmYytpc09ueWtXT1gxZmpCL3ExbzlFRjgyRHNR?= =?utf-8?B?Qkg4V1FnS3JjdGJnODYyNUh4QzZnQllIRnlScXJLSXZ2K1dLYlZTbUNuUTlG?= =?utf-8?B?dWJReHJ3U0JCSFEyQysveXc1UnVRREhGWGlNNkdOMlF2ZnJjRjNTR1hwZGZU?= =?utf-8?B?MnZwb2JMM3lxMjd3cXRhUzhraWFKYnJndVdGWVpudEIrVVZwTndYb2tJZEtw?= =?utf-8?B?WmVYWWk0Mmp3bXN0VGtyOXlFUzNHazN3RmdHbDJUM3c1M3AzeUFoU20zaUpq?= =?utf-8?B?TWhUMVIxR0F3UFRxS2RYMmpERktFRy94VS8yakRMSHlKU0xXbEJvSXlFaDFp?= =?utf-8?B?Wnp4NWNsY0YrNldSZkZBZnoxbzdTWU1ua01ldVhRb3hoL2c4SmRVWU5mSlpv?= =?utf-8?B?aE9EVFhqTDR4MFV0bzkrYTRIN2xFeGJXZ1VpYXlhQ0x1RUJxVzFJb2lETEVV?= =?utf-8?B?OGo0Z2dpNmtNMW50cjc0Vmg5c1JxVXVTencvQk5SUm1nVVdTaXlNZ1Z1NjZB?= =?utf-8?B?NHRTNEYzVVJ6Mk1Wd1ZhOFVJZkF6Vi9IeUwzVDF4QVl0QTFQZTkxNDRyYW9F?= =?utf-8?B?Qzl3QTIzVkYveUpOZGM5TEw1V0VNang0dFhQZUFqSStnR2Nvb1N1K0pzcEp5?= =?utf-8?B?alBsSUR6VzRlS0U1OURQcVUwUkJBNi9PbWVTZXhZaFdkTGFscWVmbTR0dUZT?= =?utf-8?B?WXh1Yy9pSEpUb2NBbVN6SW00cjcvbUxYOFkraUZINWYyUFF3ejFhT1JrWmtS?= =?utf-8?B?UWJQUlpMaTBvY2xyY3hTMVBoSmgyR00yME1BdzdROUVrRHJWSGhkZjVFYzJl?= =?utf-8?B?TERTZlgxdnBqOUlHRHRiVjBpei9zS0RYdmt2NFoxeWRJZTNQMzVkK2wwQk0v?= =?utf-8?B?cFQzaGNuTVh0MG5seWxRUGVTbXRWM3cxVWZ0QTdzZTI3SlhRaHBkUEFRVzRD?= =?utf-8?B?NTVYdlVLYVlYeWJ4dDhGYkNGR1R5bi8xZ3RCSXN1VHU0enRlVENuME5LWnda?= =?utf-8?B?anYxcXNCc0JSQUZDTGFaS05Cd0lwMmsySlR5Q3hCUm1aTmU0TTF2UExhalRS?= =?utf-8?B?WTI0NWl5T0tyc1Z1MmlWVmhKTktUQVBqcUhpYmF6TmN3aW1NV0szcVJzODVN?= =?utf-8?B?bnBxVHNISExxa0dTMzlKR0hZQitPM2paRTlmelRDR0k3cXhUWGd6SEFVVlRG?= =?utf-8?B?T3Q2Y25jdlUvL2FaR3VEWVYzcHQxekdqcHgvTDFyY2FQb1NVUnkydGZhMkRx?= =?utf-8?B?YktOM0RrK1ZWNDRQNWRCQkp1WmxwRitCV09pcXBHNnliZzlBUDRHU28yWm93?= =?utf-8?B?T1VxUWNKWFh4UGxmdHdWeG1UdTlROFB6NXFCZnlUa3JmbDUxbTN1eGVSMjc0?= =?utf-8?B?R0ZXMFRBb3BZY3lNOEgyTUQ4aksxV1Z1amsxeGtzbHVSazZDRDVTZ25FTkoz?= =?utf-8?B?TEpmMTM3aWpxSjdaclkrQUpiaG1nc1Q1ejdudGFrRVR0OGQwNFMyM1g3RVFq?= =?utf-8?B?M25Vak54Zk5KVjhmR2hKRDliOEljcE9sQ0ptZjQzMmhoMGhoM1kzRUV6bmcr?= =?utf-8?B?emQraisrNW04YjNXMEc3YWxieS9hWUNsTjFuVmliUVVCcXp2bTFmNEtOWUMy?= =?utf-8?B?a2Y1WStiU0lrV2FWbXQzMStBZmh1OFBka0QzczMzckFzcHdTUGQrZjUza2Nn?= =?utf-8?B?VjdlMEt5ZVE4STlZTDFHcU01N0xvcThRUlFuOXdIQ0Q0UzZGcFVjdC90YjlS?= =?utf-8?B?MnFnMnNQeXh2WVkxdVBOT0x1MzFQMnF1SDdhbWJua3JucHlFdG5BVjhxdWpR?= =?utf-8?B?UTY4L1Z2RmRRRGVONmRxS2R0VU1IK3Z2SVMvMW54S0pzNFEyU1NuaWkra3pF?= =?utf-8?Q?gLI7ld?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QTAzSVNzVHJvQWh2NVd4WGdJMiswWW5FdklkM3lFYnRYN2tLdzFGUXZrWUZG?= =?utf-8?B?RnltYXRDbjZaZnFjZ0lTdUEzVlRzVitIKzRQVVk3YUFUZWZER1dDSTZkT2gw?= =?utf-8?B?aGNobkIzU2p3NmxDbktueFpQYm82WGlHZ0R0bWhwajVYNnlSNURZMGhEV2R0?= =?utf-8?B?WVRsTHE2OUtEQmcxUmpneTFqZnZvRWdyZjBvSitqdlM0VXEwNS9vcjY3Y29U?= =?utf-8?B?dTBYenJZUG1IQlpWM3F4dlFSTTB1dytKSVVqWCtualpWUkRGazI1aEJvR2dG?= =?utf-8?B?WFE2c05xKyttMkN2T012NHFoZDhzM1BTK0tIWnErN0V3SWgzRzBrOXY4am9W?= =?utf-8?B?YkkyL3h5d1NzMGJnUlUzUS9mdTlCSUtvaU1LRGNKYW5uRXlpVSt0c0orcm9i?= =?utf-8?B?L0tVZHZvQUU2bkt5OHN0SGw5WG9ZZm9ac0J2blFlanhHbTV1bW53NHdMblVE?= =?utf-8?B?U3FOUzBaZDZxNGcyS0htZUwzY2lTV0tGcm5oRHZaVXQ0TUVmdUYzbFhxWEdy?= =?utf-8?B?OHR2M2svZHhFU0Y4L3VkY29jZGtZNE50Z1BOWUx5ZWloYTlkSzdUcks0ZEFj?= =?utf-8?B?YWdqSGwxSFJLeWJHZ1VGMjB5Ti84TjdMY2FVYU82SlUyQVBuT0VCaGhwd0JX?= =?utf-8?B?TVN1eWxwY1JHWndsaWV2M0dqRm92VXpqaTBPVFZSWTFaR1NZelcxZmNJYk4x?= =?utf-8?B?QUdyNmQ1RWRRYWxVaTBzT2FiSUUwbWpZU3plcGd5SnEwUHpLcDlLTjBTWklK?= =?utf-8?B?UXRCSE9TWjBXV09vWGNOWWNrNkZrVXJLWlp3eVBpanJ2VXlvMHBCZjZpb1hG?= =?utf-8?B?S1dGQTk1SnBFV0YzUFhXbmc1NHVNTEFwYW1pOWRoQTVSeDhDU0F4TExzb2l2?= =?utf-8?B?WExYODc2K0Ywd05XQ1Nzazloa1dpd0k4VGJlTkY0Zmc1VnRwZk1HU29nWnlq?= =?utf-8?B?a09CN3QxVFFpclErMlpCbzRwREhsdy9NQ0k5d1EyVDJPNXF6VzJjUzRhbmdK?= =?utf-8?B?NlBRUWxsS3hjL2tMZmdxRCtYODYzdi9Sa2dCUVptMG5IZklGbkpERjVVc3E3?= =?utf-8?B?cXR3bmVueW5FNFBtUXhuQno0eXlXaW9MZDlTUE8zR2x3MzJjK2t3Ny9jckxa?= =?utf-8?B?QkdlUWlNZEFRZHBmMCtKQTJBTWJXWHFVYUxBeEZlSlRnTnB4NHpYaElNbUcy?= =?utf-8?B?UHFYVm1QczY5ektFcXNJbDBDMGFUaVNBS3hkNnFoQU8xNzlZTEdXaVNGSW12?= =?utf-8?B?OUhlNFBmdjZwSmp4NXgyWTZkcXg2KzFqandPSHkrb21qeTEyaTRxZ0MvdHhq?= =?utf-8?B?OWtWdVlWV2QrMkFwKzhYSWRrc3BiSGtzWE5ReHR1c21DSHZneGJwNUR0MDI3?= =?utf-8?B?NjZ1bFBxNmt5VFJLWCtDMFE4ZE1adjYxYWtFMlZVdlNibUE3Zkp4S1RnbnEx?= =?utf-8?B?Z0FQRFBpWWlrQzFmRGRxei9VNUJHbjRLeE9CUllsaVlxYkxyUHl1Y0owSHY1?= =?utf-8?B?ZXdiRzNXcVBObE9xbCtsVDZEMkZrYU5reXRkQjF0TTE5NlJLa1BlR3ZJU3Vi?= =?utf-8?B?L0pZSnZKc1RSU0p2R3orSERLYWt1WEtYeUUwMUMzcWI5NWlXc0p3ZmxEZ25x?= =?utf-8?B?T29ENnd3VGNEUDdxRzc5b2N5bCtoUndraW1VV2ZmaG5VNms3MEcwMDNCZGtC?= =?utf-8?B?dGpWZlFvQ0ZFNFVZTC9jbVFsS3ppVkNxejZSMHJPSWhmY0lRTDhLMzFvVnpT?= =?utf-8?B?b1BDZ0xnWFRmSnVVZ1FWV3UxQTNwMlB6WTkyTUJxRjVwMDBNejFTcHljOFBV?= =?utf-8?B?ejlMKzArOGd1MUZIcTFzRWNOQlY0UktQbXAwSi9wejlFSXdMY0l2WmRHTHNO?= =?utf-8?B?dm5DeFlvNGFMUDlKNFZJd3FWWXRMYUx5cHN1RnhKWGo0U2dGYVg4MFFXNWxR?= =?utf-8?B?cWFVVWh3V1RIR3ozREN0THU5N256SEE1czdTckNFaG9rZmZJM3hqRUNiU0Vh?= =?utf-8?B?RUJtdEpnRC9rOUV4U2FOSVFrNmVoeDk1eXk4Y3NFKzdSWXB3OTVLUlNGWnlx?= =?utf-8?B?d3pQRmdwSGV6K1ZPTkFNbWNlZ3Q3TnRKWVRpd0tZc3JDZzdSVzZvcnErVFY5?= =?utf-8?B?Y3JETXRSeE42cmtGcTUxQTc3bFkzVFJVVm4xajNqMUhsTmQraEdXQUJRS1Yz?= =?utf-8?B?Z0F0Y2ZOcTQ0U2dmWFVQT09BYldJRjc1dUhLbFEzWGdGeGJ6V0Nrc2g2d2J0?= =?utf-8?B?aU91RkdtV2I1UkREOGpjVnpwOTl3Mm9PdWI2SWFiLzdrNHhkeEwyMDFPbTZD?= =?utf-8?B?c0xialB2Wk5kYjgzcGp3dEpZWDV0K1dLQkpGSkRKMlE4K1V2Tk1od1pSWG5p?= =?utf-8?Q?nOM2iN3PAUc8ISdQ=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a495f86a-af8e-46ad-88d0-08de4b0bbea4 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:04:55.1032 (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: 0KfKj++SkE1flgiVIPLygAVJ2FW1nJiyP7uaGiZ9BtnuihzjQbBuYN01QXI68cB1OAGpOBA6OLQxpcikc1Sk/w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 Other properties also need to be defined per protocol than just tx-p2p-microvolt-names. Create a common definition to avoid copying a 55 line property. Signed-off-by: Vladimir Oltean Reviewed-by: Rob Herring (Arm) --- v1->v2: none .../bindings/phy/phy-common-props.yaml | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/Documentation/devicetree/bindings/phy/phy-common-props.yaml b/= Documentation/devicetree/bindings/phy/phy-common-props.yaml index 255205ac09cd..775f4dfe3cc3 100644 --- a/Documentation/devicetree/bindings/phy/phy-common-props.yaml +++ b/Documentation/devicetree/bindings/phy/phy-common-props.yaml @@ -13,22 +13,12 @@ description: maintainers: - Marek Beh=C3=BAn =20 -properties: - tx-p2p-microvolt: +$defs: + protocol-names: description: - Transmit amplitude voltages in microvolts, peak-to-peak. If this pro= perty - contains multiple values for various PHY modes, the - 'tx-p2p-microvolt-names' property must be provided and contain - corresponding mode names. - - tx-p2p-microvolt-names: - description: | - Names of the modes corresponding to voltages in the 'tx-p2p-microvol= t' - property. Required only if multiple voltages are provided. - - If a value of 'default' is provided, the system should use it for an= y PHY - mode that is otherwise not defined here. If 'default' is not provide= d, the - system should use manufacturer default value. + Names of the PHY modes. If a value of 'default' is provided, the sys= tem + should use it for any PHY mode that is otherwise not defined here. If + 'default' is not provided, the system should use manufacturer defaul= t value. minItems: 1 maxItems: 16 items: @@ -89,6 +79,20 @@ properties: - mipi-dphy-univ - mipi-dphy-v2.5-univ =20 +properties: + tx-p2p-microvolt: + description: + Transmit amplitude voltages in microvolts, peak-to-peak. If this pro= perty + contains multiple values for various PHY modes, the + 'tx-p2p-microvolt-names' property must be provided and contain + corresponding mode names. + + tx-p2p-microvolt-names: + description: + Names of the modes corresponding to voltages in the 'tx-p2p-microvol= t' + property. Required only if multiple voltages are provided. + $ref: "#/$defs/protocol-names" + dependencies: tx-p2p-microvolt-names: [ tx-p2p-microvolt ] =20 --=20 2.34.1 From nobody Sun Feb 8 18:32:00 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013007.outbound.protection.outlook.com [40.107.162.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 A1B3C2BDC3F; Sat, 3 Jan 2026 21:05:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474302; cv=fail; b=h6MMU4PzXMDLQk2LgNjMR4SiPZu7+52PGOmVS1cvNxvxLSxZs7zR4yvRQbe1xShIGxFwVbCV/03x/b6Xgetc6L8fbdwv0epXbNIHZyC7wJqAkXuMM0tgp7uy9+iPofvMkXwkEh8xt2iN4s581QuI7DzX6dm9QwzROsUmG12UPak= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474302; c=relaxed/simple; bh=nS/W6h6qbdYcKepgUX9YFcw6nao9r/Eq/eDWZgTHBys=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=lwomR5JMGdwpmT4aZQ3nyO+gNWZnm24AT4OBu/isLey8Hw6+ugebsTWLJEi1qozuqoqAdo/i9xNG5nW5NitBwA/WWOz3TidnfGDZ738OPruH8YXLWyUa8ZfozCqH6H4akQylSAqrYb0Yd6ZItnMm6hI180xtxshd2SE3TXUhwas= 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=dJVSp/u4; arc=fail smtp.client-ip=40.107.162.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="dJVSp/u4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KHw0cCBSoJByNYFb8Xh3WrqkcILfv3BBrtYedtlrkaGEA0kN584XMYG2e8+HDXveCxrbGeeXrCZX+sapo2h3oiaB5/A31/uVpZcbcTKmwNHlSmVwKH//N2WQm3xdYgCjEjymovp7yIan576Ze1MNc5mJcz/5IZVOlJrBYdqiCljwfMJD82AF7DoI6EPzdCnO/GsuYjipxSkpvAhGkQ/nzDvmE/9uojF7VHnreMYThyIUbyG0T+xWfzU1JfaOYNPC2gsDIM+wY6aWneI+e8lPwRjOg7jDY3nlWJ6aQlJniOl7XDzxXoZrjyy6BpkIPuTSstzYGzcp3FOegoqHScD/5Q== 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=7p2DfYBOSFYgq+qjOp7SHFjFuNX9xu5+iDPVZkWKHeI=; b=t/K6MATsBJb/PNvare5H4VQtDe3N2V1+52+6BqzYncmSDuKTOqcrQMQAhwEbLiWRiedvS6PkZ7ouiPkHfkTI7aZBddO/lHD4QP0WHh7+nvFj968U7Mm7U5Z/zejMn6xx0AJpLbI2VHSGBHHvq7Ywfz0nYF4T8GIvBHnf1IYQbAZOf5Ye8qesMaaAHzSUcKHwk8AU104pM4eDu4BQ0RV8IJSR+C9f1khhksRjANUDsEMipsuQFCL5xmKqevEFfNTzf2jVYEkmedzv67juqiGt0n/j4tJiY2qVjUqEjLlKNlwfvtpI1zfuuNq12otDmqJjrUK5BTMwdil1JETnLI9GGw== 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=7p2DfYBOSFYgq+qjOp7SHFjFuNX9xu5+iDPVZkWKHeI=; b=dJVSp/u4+xzgrkjCq+i4VD+oigy0qyXHQ9H63zYNMD+eeRbT2DNwwpU9a+uZn0r/0PXbw0mLr72vdznyqwRHEum7E+SiabKhmXPNut/BwA2rCHmqi+PlZTN0s76jS1OM01isne3WGBA21l0GXQd7VvIzqJI4/bCoMnf6e8SPjd/SPOneHjlmWWyLgkRHDG6ZJ2KmHyg4VTYYPfq88NsAxSyb1qin9H/wE7GQ+tJczPeFSeRd+N08zCi6SezN+JPAD7ETZ4PAciI4OatrjvyTNldwcSCOlVASFfAqOk/0tQ95waRHW2b1XblljBXdVBS20sre5B/45fhJxnv7GOzCrA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:04:58 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:04:57 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 03/10] dt-bindings: phy-common-props: ensure protocol-names are unique Date: Sat, 3 Jan 2026 23:03:56 +0200 Message-Id: <20260103210403.438687-4-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: d3ef8ef1-7924-438e-0db5-08de4b0bc05a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6I/uCWViP0IbhnfUsF0ovnetkoe8mYK6unqmjDdE2BYHEpCBA44t6rvisI54?= =?us-ascii?Q?LGime90AS6thUK6FwK8xV20QzeHbc0Ju89MPwtoiKxdc73Exzjwkd5Tl34Il?= =?us-ascii?Q?+dS/1ZVl1yvwxGWPJiGkV3/NytW8b/TLKCTUv74fFc9oJTxqWD3GYfKohIeU?= =?us-ascii?Q?FYhvzDJyjdEwW8h2xyV7Z2pYuNifJtsFoAicsBu9DXoBykLF5sQyhKS1Kz7X?= =?us-ascii?Q?0xSqAQ61YoksP1D6yPmfMF08Lja95BPTCV3o0YjLkZSBApnBVNK+6REcvB9r?= =?us-ascii?Q?M+18yxDBOYEQcyoCJ8aEAO/OESqCLGn9cU2pn2GAAj7ay8uvmmL6AFv4MX7h?= =?us-ascii?Q?jD6UeF2/sozASZK25Pm+pwQiU6KlvMdySSE6jFbMP1QzSdSqWD7hylHpjNBZ?= =?us-ascii?Q?0YRzmx4DbWyP2MPKlB72BzZ8NuAZ4Ja/bhnm81XpsoWZURUtP97vsyeGwXav?= =?us-ascii?Q?r+VtZVikrVj830OYP5bYRtBc6m+lu+4sl+PsCFBDbOv00Bk/YP5Y6IpvwqHF?= =?us-ascii?Q?C2xIzMSF4g3Uz9w7Emfh7Ew+UWDW3ii9fcr7mJnYy5hyKOMx1zfL30stnFic?= =?us-ascii?Q?Tg90jbmfK4MFSUfaFSEX+RpasmIh2PG8Kt/11yeYWZ+AXcTePhUsrQ8MqYWn?= =?us-ascii?Q?kTK4lW9nwe/cO+1aHZv+6O59xkIMpG4lYNAm43DHXPlNb9wORE8IQqa0LywY?= =?us-ascii?Q?5zDdZbupwuYRWI8MXeSxWMEFurhkyL3f6DmBq+/dUEw8lwZHlQYemogCMBdR?= =?us-ascii?Q?XVMdD2w8aqoToJ4fzP+2tLnl1qfpBpXiMFCm0fDrWJvXNLksIouPZK7rqYs4?= =?us-ascii?Q?IaS2zI7fsbmJRX8m14zUvxmXb4XPTgojdCTnS/9Zppn/7jjxfZNk0kAquJml?= =?us-ascii?Q?7+ewXNeW0HsUNN/J6RF6t4FZexeDrmI5YWxrrRuGiDluLcXfAieljHh0sbrG?= =?us-ascii?Q?528ho6VDVIhaXsjMjpNViWnqjhrv4ZUFY+9vpBjIKmYQE4/aHazaLwh2BOxD?= =?us-ascii?Q?5+TitlgnvNzRTrVBzUTP/PrCD6Zd/8HC00+/uXRyQf9W++hTiKkj7P2GkoT1?= =?us-ascii?Q?lBG14c8sXHSXGX4ftl07GXyim2TDakmV1PiMLAQP3pumIR5CbXWFZ8HOuveh?= =?us-ascii?Q?g9SNm0JdrxFxqno3JMdcBqW5upPqg3mdK70xdRe2x/rtGPwNAVlXC/SUQUok?= =?us-ascii?Q?qAZM8yFfIbXVItJQlKKGeEVOW7xqqRyLeInnVa8CxJf3BW5wdVx3pbLza8x/?= =?us-ascii?Q?lKXzM7leeRWH9aHHL8SfZVDQLhd4+UEjsNZ0nL8SCoWdGFFogIWghXT4SXoc?= =?us-ascii?Q?rIM25VlUGAlyigTOaYHcGx9QLpj1W/6po3L7BysYYXjBBk/gOkt+Nh5R/4dP?= =?us-ascii?Q?XkOKKkJaZA7hjeMM8sfqHPN+MBbcb3RSfHA0NOkjFo+bCkvk0LtansqzDAT8?= =?us-ascii?Q?0zyxPl/yuT9fZLf9vQgzFzASVVT5+PhZGHwKcyrQATI+1HV3oHaAvyfbs6Y+?= =?us-ascii?Q?1gQfgdNYG25gzaTmJAUe4G/fH3st680Is/KY5OE+cZR2ggCpm778dwIveg?= =?us-ascii?Q?=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4PENyzuJZWQMPiS5AdAeIpWio5c98Kr4BAdjF5Omyk247NMWowx1TgoWEk0U?= =?us-ascii?Q?M+QonHO+4LwPYBRrOC4kHEOczXMRESfG1S7U+8L6kR73xHOmx2kTjYp4JPc8?= =?us-ascii?Q?9505UvPGI2ZeVnNdaNAnNJONhBa6uogdziXy8nrDA69UXG3k3bVC+zxk6fxp?= =?us-ascii?Q?2COvGPOGNo3ja7LD/nvCYsRpAuwzGWuUqXx4PFFylHsWrQehn+v3BFfW2Oct?= =?us-ascii?Q?0IIsAW4BcRtwI9CzT6C8XPlDmsmqVBo+ZJ7+kYth1h74eIZILtjX+ZOrCIHS?= =?us-ascii?Q?sHEz1BMRUht6seK/i4DaO+D9i7D8pg8PCe8QNawS/LaeB+20KTjn+7lHayQH?= =?us-ascii?Q?J0rkO02e+FZ2c/WXaPwM5zz/zynKhSDNI5NugJNGPzJ1OPqwT2UPySgMXs5r?= =?us-ascii?Q?ZjFClkUr5ZV/5VMm6iCBbcYF0y9QMu3aNnx0Aqsa+Tb28W9HxS0JLqhzmz6m?= =?us-ascii?Q?VdN2iJY2KWrnFaGt/wnr8IWoy+pgLNESy9VP5dqEvodMCKNfJC7shn/qOT1b?= =?us-ascii?Q?c2GcQgvuEQux7QmwOPM0dwaV+qCuN73Jtpws2OkjpQ2p3WV/0pNG+fG30gRI?= =?us-ascii?Q?csrPP0BnKGZse0Qn9aJeZ9aqzpxSsJdDLJbV8Hx+61tJ2rCTeLExVxqW4/pG?= =?us-ascii?Q?eH0rzexcr2L3lGJdUVktnKCJw9NMGSTqHwH3V8Bvwq9PJxt05CO1TaNhyyEq?= =?us-ascii?Q?ABXF2tzVViGKWoq8W7VyiK8ntN9F0vXpQCzZfGQz0/vcqGyEQX2MkSWQfncL?= =?us-ascii?Q?FOwVJFujrAJo1pIuAmr5jjLImLaZK7IK5dQXr7JJB5g9j2/L15mW3QniVrao?= =?us-ascii?Q?K7MQ0fG+qT7FlMU8HAaQI4x63QPCdoGIKBCZ+WGFDjun8+3jVAgxyRTQY2TO?= =?us-ascii?Q?kkbIzi3HqksMHSPVRsdt4GWfN5YQ/QDd23LMmddl8YgoN+oa58YXxV5dzXat?= =?us-ascii?Q?fHo3cfbjTT6RXlDgye1tFJRSTFfYBKB4tiYJxjr9jHsfiysvdXIQdGLuMRqr?= =?us-ascii?Q?8FEHNh6EPudNgfiF2e6U9n6SfLnfPJmHcpTPnqdSx9EsVAlZ3cpbDHG04eOR?= =?us-ascii?Q?EHDuBkPDHADrsyX/nGvoRgxCwQ1yNUqog35rDorB4UhYAOgaduH2L3W8BsXL?= =?us-ascii?Q?9skWVFmcMn0g+kN1IxOUlYSnIGjBVzfQBymECV0lcnB8XWx8mVZKtjtR4MsN?= =?us-ascii?Q?8oo4bGa5zaixSvQ7hDIVDZ9NdVp/z6M5dUBlyU8YjZAqAWmxxtAP7a/7P34r?= =?us-ascii?Q?w3gunnRnc82W8344AsZ8SH8r/kTFkfQlcrTLcRWlRIbofI3GZRBJRoui/CBX?= =?us-ascii?Q?JotyFKnSPMK4mKvo7frAmN2uvS7Xr+4eO90FTIsItdsL3ax2xmQOTd57bnQ5?= =?us-ascii?Q?9VYVLO28pPrD9SOgyEdiTkG9dtZbM+AzCYu/fmBawZ1sA1ntUmp1uvAe0IbH?= =?us-ascii?Q?VTXTXzxlg2UodyH6jH9vGEPHYA67lEpoyC7hSAd2BDxPNHPDtgK27w/0bqRf?= =?us-ascii?Q?bH6WO7BLuIXi+yPJqCWeEuYp3a6owObHsPTWFGLxKpVnxhd8F+ppnPmWfpMx?= =?us-ascii?Q?1nzK5FtpJJKxq3cl12ihxeSeJlVVrsmk2pb/SwIpDotsjvwXb+uvY4vbNer0?= =?us-ascii?Q?fwS5t68MfF5K5wNT9TwOxdrnPr08lsqMXq34ntNRGp4ooQVtB0E5jZ7Zb3yV?= =?us-ascii?Q?aSBEnP/eskeuAWnMmZrmILtNr8o6qNX+5TCuCH9brf3amQEDM8JLYb89CgnB?= =?us-ascii?Q?lXd1cRwJmZ2Q7fW/fFlRRoqXMmEN1ag=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3ef8ef1-7924-438e-0db5-08de4b0bc05a X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:04:57.9371 (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: xEqVLHldUxuCcTTEy/duvNyo4Vi8sqelAQs7jKclKbKlbtyaQuRjluQbKsDU/FhTeaZg4+DkQ4w0dRH1weFBpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 Content-Type: text/plain; charset="utf-8" Rob Herring points out that "The default for .*-names is the entries don't have to be unique.": https://lore.kernel.org/linux-phy/20251204155219.GA1533839-robh@kernel.org/ Let's use uniqueItems: true to make sure the schema enforces this. It doesn't make sense in this case to have duplicate properties for the same SerDes protocol. Note that this can only be done with the $defs + $ref pattern as established by the previous commit. When the tx-p2p-microvolt-names constraints were expressed directly under "properties", it would have been validated by the string-array meta-schema, which does not support the 'uniqueItems' keyword as can be seen below. properties:tx-p2p-microvolt-names: Additional properties are not allowed ('= uniqueItems' was unexpected) from schema $id: http://devicetree.org/meta-schemas/string-array.ya= ml Suggested-by: Rob Herring Signed-off-by: Vladimir Oltean Reviewed-by: Rob Herring (Arm) --- v1->v2: patch is new Documentation/devicetree/bindings/phy/phy-common-props.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/phy/phy-common-props.yaml b/= Documentation/devicetree/bindings/phy/phy-common-props.yaml index 775f4dfe3cc3..31bf1382262a 100644 --- a/Documentation/devicetree/bindings/phy/phy-common-props.yaml +++ b/Documentation/devicetree/bindings/phy/phy-common-props.yaml @@ -21,6 +21,7 @@ $defs: 'default' is not provided, the system should use manufacturer defaul= t value. minItems: 1 maxItems: 16 + uniqueItems: true items: enum: - default --=20 2.34.1 From nobody Sun Feb 8 18:32:00 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013007.outbound.protection.outlook.com [40.107.162.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 8755A2BDC05; Sat, 3 Jan 2026 21:05:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474307; cv=fail; b=VSLPOHcJEafxKSPztSyRUREvnIrzdAWlcm+VXjv9mTkHFjqa8FwWUpGA0S3IjjqIDqP+sPmzT92VWKryJMhgI+9B3lrkRL8Ol9BC2QDKv2Pv2GCBbeGS/PXowgMZmQ1/JSxCF3omri7oy90QGt6TYYWbhBDOsMd/imMflFjPudM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474307; c=relaxed/simple; bh=uWzDC7aTjn8yJMLl0qA3/0Lh0RlAqLPm+wrTZ7Xk+1g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=N9yOR1c9GZgSqyKxd6hbUaGm/64F4E1nEEbVcK9YKSbb4z6i54zjQ1RmygV4qE4/h7ewcnKo5FMD0TDzZqwhzoSk9Q/EWvSbODgSkdirSyTkcCpZVYfksTC4Uiqpq7bJfZeRfoayJK695cViywOk2xyNJpq+VnLxH1dfNkDCwsc= 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=LoW23hoA; arc=fail smtp.client-ip=40.107.162.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="LoW23hoA" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mNb2lMZLFlT3WieKW9lk2VOIh9PD++ro5V9TrNYhvL5WM+W5uYIxwOA9SfefqAey8tIn5Ka78+vY87d2wMIqabQkNPSGJZV40RZnwQd5L4nNULK5oxd85AQwRHul5n9ASdjcml4rW489clvjTdQ0OeYATk5iQTUIxZAWOT5ZB2rdN0ynBeU1vFqACPJyHcsA+kFmJBVD+4+7szrMZRhKhrt+iK+aYQbtjgzA/sB4vH9NoSD2c4vXWF2taehqQaI4MN3YJbIENhYXVBQBYRZpia0FHZm39ioOfaTa8bWbgPbk1r48DWqBTerB511L0Uyima0ZR6FQIG+RagclJs8hww== 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=Bl6FgsuCeY/OigHwy1S6TV+ByxXFXwXz/Ng1f5nbTpY=; b=Zyp2UgZ1+rIdJfplpLjHoob50qKYv7wcUE4nIJpSOVHoAYCsrSbJAz73KcMLlX7JcErX3i4Q1R/zf+2eGuCOJJPUfdRoxepz2Wh9VGRsCNGZqt/cnBCZ/Sr+qPQtfDJkkT9vTuqpkPqSXvtGU0jQsQpOAu9cyTk4B9YUWUIKBRBR+Murc+ReqvMecEocGz+B88Zr3bBistq2KOC5ltjBYviU/aipAle2s7eIbyq1an7DO/eMaL6OiJUpzhzzAHJdkrQISzUoCVxIRxIPw9udj/CZhMLDAB78oDOlL8WNXfGuBHBhThvHhg9n3HwV86ScR5XxfrR9AM3gzTCrfRFlDQ== 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=Bl6FgsuCeY/OigHwy1S6TV+ByxXFXwXz/Ng1f5nbTpY=; b=LoW23hoAIWycaMGOY6J8zhMt0sNVjl6iTCOQhzZx1KpmSQiMiMHZBl6JM9/hrClXpAecoh9o3QyFpmRe90CpKwDJGPe1zHwbl7MfnlFILYNUfywEkZ2ZzQdFBJU1YUOSj23jd3g8oA95q8jlX7Pr5d8EG0Ouvvqfzrc6D8KsZtlriV9Ud8ewpUVzyxWGI+fKuTlo+hjGkcXK6DFwFv/mnCOmowU9OrDDh28K/zCf6eM38hZoWTh3gfqxAutNyyq2tsUJ87DCQlT5JQ2vlY9D74w461qNZXHG+RF35lACBffnCvhgf9yZmBTsAUvbL0bzSEoZV/Q2Zf8hlnpnLF2Bkw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:05:00 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:05:00 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 04/10] dt-bindings: phy-common-props: RX and TX lane polarity inversion Date: Sat, 3 Jan 2026 23:03:57 +0200 Message-Id: <20260103210403.438687-5-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: e4a1724c-7fcb-490d-b0a1-08de4b0bc1d8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?3XpQyoS2VQtpK/+m7LCIODT0E6S+UkYSbEgoSroZFN2DjsF+H3RQhJAYTc92?= =?us-ascii?Q?+xYvBihIz1BMrv9b6lZvO3roBGW39iODKmuaTHTqGgfcukGkhQrYt92TtndC?= =?us-ascii?Q?sUCfq90AgRyYjMcKHim1skxETlNUSTOMctksm/sd/DLYmPEYpafPx5WwONhs?= =?us-ascii?Q?YDBWcYgIRqcf4bw5XY1Q7UNkjC7dLJFB5D3ocWULk1ToJg6i2uygilc4XgtZ?= =?us-ascii?Q?KD7/EyS5KpDGrL2zrhJFiRf1xh/VVJIH8gowhlbLBtJ0gkJ+x5/nFaulu8BW?= =?us-ascii?Q?WTWoWG3DdDSGfE3IjP3XHh5bYCRXu4un8ZoQHGCjx7Lg4IrPGC3w7GmsFhC8?= =?us-ascii?Q?Vyy4ArfD8qP/tYXDqUTXOgGU/xo8vgS2k3SOww630NFRziQ1XYdLCUNkArTb?= =?us-ascii?Q?0DdTD7u/teGqpmA5wxMiDRyiTeWrNWuC9zI1HEiros9AuwAKsVQzi235N28E?= =?us-ascii?Q?+NJ/nxEJfiw/nHAFCA3HvAlc1yrsytVjqYpzd5DgevQgI38aSbVQb1WxKKfk?= =?us-ascii?Q?aCKURoVg5r+3DTLBrYyDebW5jXp392JdEQOxD8BrKnYqWTBa3z8RQZPFjXRW?= =?us-ascii?Q?pTK8mwpA1XGge32bzzn7Pjwi8k96oLiW0HkgIAadG5N4D3z9/gf88a9DS/wO?= =?us-ascii?Q?RelN/mI5W0Q+cxfQY62ZU5nNNhbkkWuBlprJV6PhX1rSD41kGMKnyWh2kL1j?= =?us-ascii?Q?gp87qF4vckWORHO2kuUWOzGKwxYNkl83oVudoR0mtKSWqAUODUViqPJXQnSx?= =?us-ascii?Q?63yJb1Z6yH0KLt4oFrNHw2z9eK4dO9LHjzF4U59VDSQDGEUjMQHncHvNQgDj?= =?us-ascii?Q?kXiWqnvWip2L2vFWZ0/Pjdz7xssD28G5VMFeOJAIuAz4ihmu1KVPJE3NAnwj?= =?us-ascii?Q?meT4QwFYH0sS/jXaNDDx7speCeMpX+IY4NVWH2xptTQhXiLpHiAO+dZMBfuo?= =?us-ascii?Q?UuxbLYTKClXiWjbrFDKXd8SzlMCOXpOssbk7zuaOwrXBOGVwQb81KA79MLvY?= =?us-ascii?Q?ybXKt5Uv1Mzb3TLi/aDKLiLhFzppSxOR6/UNl+N0VwuMGGJiI8CbzceOXbYh?= =?us-ascii?Q?PQgCXL34AzBYaTz8SLIS1jmCZ4zUmOD4ZzVIwVWD8XzpRwsnVn38DZVSNATW?= =?us-ascii?Q?cv5HvpQQX/+fySxi1IPngNGvMTo978KmGm/UQnt2r/uO+bxNoAoXOZnAgiwv?= =?us-ascii?Q?q1irek//LIVLybg7q1bjU8i/Houp7SuMDszIdQ/fFYKvFEDesNGGHxZk+kiX?= =?us-ascii?Q?ibsZHdhtx3MxPky1eflKJ5U/vrmVC3Ntc5PF8DXGcS2NcAGze5HjTTcAvV0T?= =?us-ascii?Q?Ll08A6OBgT9jMS1p9fYPeIHWwM2N6s9ggDJIKMdQ6nZWs33XvPV+7Qi3Stsp?= =?us-ascii?Q?MeGa4fKWI7/TvHE10v/KnBlNR2l0xBmNSwme01PzPxHaHAKaiARWDS/BNtDn?= =?us-ascii?Q?RP766cYmqhYL97Fn2KjX49LiisOU/CjjXCMbqvWDrfKvibqZOJ/A4fmLZNB3?= =?us-ascii?Q?duvQV0p8aHHxuKDhGxAbjWmEgGBgUgDdjc+cMkmUB3O7Y7PUXMUJF9QDXQ?= =?us-ascii?Q?=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kMRKKhGa7CsxpY70DSLOjxKzb2RRJjsZZddtxRWwx9CowcsHH6hAj3J632kL?= =?us-ascii?Q?iXmnjrTIrNBBqf8LcN9xIxMetUV1TrnLFZAH6NBOYIqCKN4J3xXhFngM4l3E?= =?us-ascii?Q?TpWaDxdklq7wP6YmRAjAyfLvqr8qyhvxJ9W/go40xCWe5A1wbCMxiDuVvKJ9?= =?us-ascii?Q?ysoba4W7+lEu7KPq8Lvvb+JlgWFCfpiOI10/18ApGBa9Bum0qrsRRvHIHBz7?= =?us-ascii?Q?aaL9iXczS7sjN3TYjiqxHVdzS3Vg0LQ7S4hjfUGjp+itUe2gAstcT/eQ17lJ?= =?us-ascii?Q?rJXoNvgmFa/4885u0EW5rKjPqmLrMzUtVtyLeBsvpmiy6hvfrYi9XmR+BC/4?= =?us-ascii?Q?20frLYyB4Db/Nc1l+qPeW72v2J9ZYGJSdTPzXp9Cp5JpTtldJkpKoGcevpPS?= =?us-ascii?Q?C4ayzPK6xSQnXMydzYKtq+UtqRlHIlZR32A/J150EY6J6YrMdWz4TSIbL9O8?= =?us-ascii?Q?mTFlgFYehnAhILUSI+vuQ7fUXNoIJf2nGX3daTTIjiGW3NDAjE+UzEpLzXKZ?= =?us-ascii?Q?g1Onu01N6vrI/DCEb8YCIYHQ9FAE2mnlhLl+DE2yZdi/VG87H9Po9qCCGY2r?= =?us-ascii?Q?elGFo0w5d5yknqM1nkWgb6E1B3uai09SqchbiJINUrOdVaBo0lN8IBwLW5Ng?= =?us-ascii?Q?ByMnkAiFEQKb3plW5P5hR6cuevJaFavpAyvmubaYjmhjPYTaVWPxCQSwytab?= =?us-ascii?Q?liI/pSWNplE7/ilaIP1Kp+AAQZzScbJntqqni4BhT/+f03j2nKNI36a99r7N?= =?us-ascii?Q?19/Q6Cub7q5wmlZ7mJtsBbLy4muMT2M+cml1uUH7rluK7cwsWmyNt5YwDohd?= =?us-ascii?Q?l/IYhJtKJngaFnfKdNErSRG+xGQaLXWwyEq27Aor+ks0nhKzlQS69l937SN6?= =?us-ascii?Q?ZE4SX8zQhhTa5wJNNPqUzTn3ZvRGqk8uftD5Fay8O3JXZ//2oO1psrKxn9lM?= =?us-ascii?Q?vQctsnom5ed+a0elX72XzYLFSG/qrKJGXIRGeoDAn0yZvOzmx1La+phKyCF5?= =?us-ascii?Q?rADVpJTO5S+MO2nDo/Rz9D7FEAKQ99/OssQyPWcxAHo0/u2uAUy9Qj6nvDx7?= =?us-ascii?Q?dMGmnKzMk8MNcQjasQ3Yrjk0DPO5y1yLiGQ44rmojkm3nusvGr14b2uhJmJp?= =?us-ascii?Q?0wkFFtM6F2nRKHiOhfRdI33s1j5QTkz+6S06Z6GS4EYpV9zWaCbEbQd67l82?= =?us-ascii?Q?aFewqzPGhMOy7nf8a/wUUIifWhjnd7k2cFNJDxsjSD74QxXhAqLdtdwv6hx5?= =?us-ascii?Q?lMdRjoK3Ic6HtY6lxSXFOe3ZuLQcvPZJHK/wS3Mfhg+VQKCXvlYDt1C5TpCL?= =?us-ascii?Q?ddtdSjrtrMHPj9DMezbIiIVOVLtZZ6VQDVuIAiGO0dIwZ/9o0SFEwDscOjJm?= =?us-ascii?Q?Tx7waFIRCnPBFIzC1Fbnl5UqFyxWzjPzY+rf8g15drAVQQgn64Tw+VoIDa/l?= =?us-ascii?Q?lKRpOe/FLvEg38hsNG8Qf1XaGoGWEmL32wopdY4fHoPI2+IrLBG8L82LWz7a?= =?us-ascii?Q?Si52H6CFCtLWZibvyavWLyJYKvpjms3mGQSFKm6Oql+gwMhzbv5HlRwQAcBt?= =?us-ascii?Q?X0U1cNt/U0u+YfOcrtOXkA1/ZDronKY58HPcmQIKsDD9onFESHblU/z8ogST?= =?us-ascii?Q?L+RE9h/K13VYp87NdQQDLTm2KENLwqk307SoIe7clngD7CE21u6mC4+Enq8M?= =?us-ascii?Q?OcX7jzzHcdLihrPXlJQg5CP7tILLptDdlTAjTvmY6Ot5q/ucwuOC45MQvyOy?= =?us-ascii?Q?E4AoR8LiNMyLEC5vsiXabs55+IS9dKc=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e4a1724c-7fcb-490d-b0a1-08de4b0bc1d8 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:05:00.4893 (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: N+M8juUItx2bKzVadi5NjgtBMdvKxoT6zUWbn9fTpMe6hXTFeiJ0H7eaNF6Vh5WdJVnVqKkJFd6pgczGbrt5Fw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 Content-Type: text/plain; charset="utf-8" Differential signaling is a technique for high-speed protocols to be more resilient to noise. At the transmit side we have a positive and a negative signal which are mirror images of each other. At the receiver, if we subtract the negative signal (say of amplitude -A) from the positive signal (say +A), we recover the original single-ended signal at twice its original amplitude. But any noise, like one coming from EMI from outside sources, is supposed to have an almost equal impact upon the positive (A + E, E being for "error") and negative signal (-A + E). So (A + E) - (-A + E) eliminates this noise, and this is what makes differential signaling useful. Except that in order to work, there must be strict requirements observed during PCB design and layout, like the signal traces needing to have the same length and be physically close to each other, and many others. Sometimes it is not easy to fulfill all these requirements, a simple case to understand is when on chip A's pins, the positive pin is on the left and the negative is on the right, but on the chip B's pins (with which A tries to communicate), positive is on the right and negative on the left. The signals would need to cross, using vias and other ugly stuff that affects signal integrity (introduces impedance discontinuities which cause reflections, etc). So sometimes, board designers intentionally connect differential lanes the wrong way, and expect somebody else to invert that signal to recover useful data. This is where RX and TX polarity inversion comes in as a generic concept that applies to any high-speed serial protocol as long as it uses differential signaling. I've stopped two attempts to introduce more vendor-specific descriptions of this only in the past month: https://lore.kernel.org/linux-phy/20251110110536.2596490-1-horatiu.vultur@m= icrochip.com/ https://lore.kernel.org/netdev/20251028000959.3kiac5kwo5pcl4ft@skbuf/ and in the kernel we already have merged: - "st,px_rx_pol_inv" - "st,pcie-tx-pol-inv" - "st,sata-tx-pol-inv" - "mediatek,pnswap" - "airoha,pnswap-rx" - "airoha,pnswap-tx" and maybe more. So it is pretty general. One additional element of complexity is introduced by the fact that for some protocols, receivers can automatically detect and correct for an inverted lane polarity (example: the PCIe LTSSM does this in the Polling.Configuration state; the USB 3.1 Link Layer Test Specification says that the detection and correction of the lane polarity inversion in SuperSpeed operation shall be enabled in Polling.RxEQ.). Whereas for other protocols (SGMII, SATA, 10GBase-R, etc etc), the polarity is all manual and there is no detection mechanism mandated by their respective standards. So why would one even describe rx-polarity and tx-polarity for protocols like PCIe, if it had to always be PHY_POL_AUTO? Related question: why would we define the polarity as an array per protocol? Isn't the physical PCB layout protocol-agnostic, and aren't we describing the same physical reality from the lens of different protocols? The answer to both questions is because multi-protocol PHYs exist (supporting e.g. USB2 and USB3, or SATA and PCIe, or PCIe and Ethernet over the same lane), one would need to manually set the polarity for SATA/Ethernet, while leaving it at auto for PCIe/USB 3.0+. I also investigated from another angle: what if polarity inversion in the PHY is one layer, and then the PCIe/USB3 LTSSM polarity detection is another layer on top? Then rx-polarity =3D doesn't make sense, it can still be rx-polarity =3D or , and the link training state machine figures things out on top of that. This would radically simplify the design, as the elimination of PHY_POL_AUTO inherently means that the need for a property array per protocol also goes away. I don't know how things are in the general case, but at least in the 10G and 28G Lynx SerDes blocks from NXP Layerscape devices, this isn't the case, and there's only a single level of RX polarity inversion: in the SerDes lane. In the case of PCIe, the controller is in charge of driving the RDAT_INV bit autonomously, and it is read-only to software. So the existence of this kind of SerDes lane proves the need for PHY_POL_AUTO to be a third state. Reviewed-by: Rob Herring (Arm) Signed-off-by: Vladimir Oltean --- v1->v2: - logical change: the bindings refer to the described block's I/O signals, not necessarily device pins. This means that a PCS that needs to internall invert a polarity to work around an inverting PMA in order to achieve normal polarity at the pin needs to be described as PHY_POL_INVERT now. - clarify that default values are undefined. - fix a checkpatch issue: duplicated "the the" in rx-polarity description .../bindings/phy/phy-common-props.yaml | 49 +++++++++++++++++++ include/dt-bindings/phy/phy.h | 4 ++ 2 files changed, 53 insertions(+) diff --git a/Documentation/devicetree/bindings/phy/phy-common-props.yaml b/= Documentation/devicetree/bindings/phy/phy-common-props.yaml index 31bf1382262a..b2c709cc1b0d 100644 --- a/Documentation/devicetree/bindings/phy/phy-common-props.yaml +++ b/Documentation/devicetree/bindings/phy/phy-common-props.yaml @@ -94,15 +94,64 @@ properties: property. Required only if multiple voltages are provided. $ref: "#/$defs/protocol-names" =20 + rx-polarity: + description: + An array of values indicating whether the differential receiver's + polarity is inverted. Each value can be one of + PHY_POL_NORMAL (0) which means the negative signal is decoded from t= he + RXN input, and the positive signal from the RXP input; + PHY_POL_INVERT (1) which means the negative signal is decoded from t= he + RXP input, and the positive signal from the RXN input; + PHY_POL_AUTO (2) which means the receiver performs automatic polarity + detection and correction, which is a mandatory part of link training= for + some protocols (PCIe, USB SS). + + The values are defined in . If the property is + absent, the default value is undefined. + + Note that the RXP and RXN inputs refer to the block that this proper= ty is + under, and do not necessarily directly translate to external pins. + + If this property contains multiple values for various protocols, the + 'rx-polarity-names' property must be provided. + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 1 + maxItems: 16 + items: + enum: [0, 1, 2] + + rx-polarity-names: + $ref: '#/$defs/protocol-names' + + tx-polarity: + description: + Like 'rx-polarity', except it applies to differential transmitters, + and only the values of PHY_POL_NORMAL and PHY_POL_INVERT are possibl= e. + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 1 + maxItems: 16 + items: + enum: [0, 1] + + tx-polarity-names: + $ref: '#/$defs/protocol-names' + dependencies: tx-p2p-microvolt-names: [ tx-p2p-microvolt ] + rx-polarity-names: [ rx-polarity ] + tx-polarity-names: [ tx-polarity ] =20 additionalProperties: true =20 examples: - | + #include + phy: phy { #phy-cells =3D <1>; tx-p2p-microvolt =3D <915000>, <1100000>, <1200000>; tx-p2p-microvolt-names =3D "2500base-x", "usb-hs", "usb-ss"; + rx-polarity =3D , ; + rx-polarity-names =3D "usb-ss", "default"; + tx-polarity =3D ; }; diff --git a/include/dt-bindings/phy/phy.h b/include/dt-bindings/phy/phy.h index 6b901b342348..f8d4094f0880 100644 --- a/include/dt-bindings/phy/phy.h +++ b/include/dt-bindings/phy/phy.h @@ -24,4 +24,8 @@ #define PHY_TYPE_CPHY 11 #define PHY_TYPE_USXGMII 12 =20 +#define PHY_POL_NORMAL 0 +#define PHY_POL_INVERT 1 +#define PHY_POL_AUTO 2 + #endif /* _DT_BINDINGS_PHY */ --=20 2.34.1 From nobody Sun Feb 8 18:32:00 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013007.outbound.protection.outlook.com [40.107.162.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 12CB62BE641; Sat, 3 Jan 2026 21:05:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474311; cv=fail; b=T+ejaOBBekumhDiirkAmzJH0nveCaY0xZV4rVe4j4I/Vh98GVf9elTTrcPkiRd/TYOct465yK4JYLFODhWt+5qslxJqyPE44DrQDznllzXGdkrVENuu8pn8bUFPPH4TWjamrakWr17dA+aoRXlD0MkrLhisdxRIKStYdoM4dvJU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474311; c=relaxed/simple; bh=Vw8i3Lo54xWCFsYYsuNyGVJE2dsg504CYuBeTTBJti0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=cxOFgBt5zkxc94qkooQZx3RZ0C+fm4idVTxi/zRm2eK2rOyTLFvYWFKoprq3/Ie+5a/qFNFjhyNL/EQ3jGe91xnSw8uFb18cDK/5EXGV1q1QOYFrc1yFCAKGnCox4Cg/KSA7XXWarsZgDv8wvrz3lfsap5GjX0t50sih0phl3/k= 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=kwB1yhAD; arc=fail smtp.client-ip=40.107.162.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="kwB1yhAD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=poWfc2ZfJzIlsDK4zq1vvgxQKANiXAcUCRVCBBgifh04MPeQnk8+/Uv4MIQJKv6mBOtpKZOelLPOINyAl02XOYckFIIWiVaCTVG5OigLAFwSR93qdbC5NjhVUpi05T/z3xVcxL7FJ3rnA4oVdrLt2su3nSgaLzkqnnbsxP3IvY02ihrIMJOMMjYsmcTvFS5NOuQw4dPOB0O+JOFev8SSZTC/DRfTuT8aGmonFHqkwA2T4dn7u60I0v4Vw+UR0+pHYscy10eJcY5xB/QrZUspaTPvR6lZmiAm2dnP1T3BXQwJkny2jhjQOcH/KTIWQ206RW7FNksOAger+CP3F1Hcsw== 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=tO4pLOQUtDnt9X38blVvGkPDCp/0C2CzQLQrJXApMAs=; b=UIOHc+64iXOlvb8nCuu0qGThFhDeO9snYX2Vsv+1Ul2uen/b+4adaXQoaZqZvgo3Lr0kkifu7pbEFmlOsszhJOV+1W+toVaeseKyzjkZETQxH1PjcmCQkZMTVISwMY4t1jBwP9XNbQO/tLVIf+8fAjw33b1BQEs/ngOJFf46YAe01UWlZV8bmR4GwdJs446boNHMebuGh8uaNXuqe8/+cBfQZfEhaQf3SMZ289+vkkTVGwDiCa8IntFgfZyFJBTggjDlgEzg8ph3d6eUcUetogBCOInBZ39Ju6bSfBk4VbOo6sIJPsqlGT3d3qFvpmRFzCc7puAjNJDJI5AqsgsHBQ== 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=tO4pLOQUtDnt9X38blVvGkPDCp/0C2CzQLQrJXApMAs=; b=kwB1yhADbqXpxURwmR0qcplCTkxAhv4pURMR/ID3hczcrS3PrXXrQxKNkXcQiF7x1/6StITOWH03ftOClC+VnH5I8qay0FC07R/AEpnpfbI6zhOcAPwFvW5zBTojKWfF7tlRJtJxeoQfL5t69lPbUDLWqnOfCSuYezjHkWb6me0AwPdTDYyNcxqmi4ZnNeuYhaJjIUnWwpAmpmmrbERKG0BCoozFGFwi2sXHicsLcp8di+vYcu3ddD7/UOPdnwoFcIsDe8sCqdE9yodZX8sm8MbhonvSQ8Wd/X46TLSf1j4HyKaCQ02IUrVaNKS8T/2a3Vxkf8EK0L4Kd+bbYazo9Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:05:04 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:05:04 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 05/10] phy: add phy_get_rx_polarity() and phy_get_tx_polarity() Date: Sat, 3 Jan 2026 23:03:58 +0200 Message-Id: <20260103210403.438687-6-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: 1937f309-8241-42ec-2242-08de4b0bc3a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8fXbFnw47XXIaLqZ+BMbpNQ2OIcA8kGMi0eKcW9jnB3qyHQgMz0HjRTFawGv?= =?us-ascii?Q?l8E0JC6wFoIeyMRAUrqybBZTMhOPbzUcRK/e4yR3aBZy1FpXAS8b89gE5Pvb?= =?us-ascii?Q?qau1Q6/SKWX2BViRYscAykkk05Cdc+7PxdF0HAbnQgTuejO7bCeXWpONjeA9?= =?us-ascii?Q?8kEjPrHx2BHnFBKhmPPeUBg515WDqcy/gj3nr70A+3eUJvd9ZnXITRh5cCoe?= =?us-ascii?Q?XqBENDUOZ7aTdOn4oEHZIWAVBz8jzgbxK+7wzYf7F978BkZW6U+DNfwJUoqO?= =?us-ascii?Q?DtAswUGGmDD1hlsTDcFnGzP5urbQLkU3+YT+yU9yZtt5lHLmJjoVdfpui49+?= =?us-ascii?Q?5Xynt3urJB69C+GrU2LyelQ1T5zuTFCVMWY/cN33x422hN6nHof6OKmh8MS5?= =?us-ascii?Q?NqPm0PGxM/v8ar0ApqWM9hZUdKmkR0/C2gDHaWUbbrZkqJ3ISIQq33rhmNJx?= =?us-ascii?Q?w8H/KBBzR6fQPxPtFd7xQeSWShVuMaXGXJmmXbS945M0NnmDkyyMjclrpl9Y?= =?us-ascii?Q?PTJXp9+0Ct5znRKEWEwb6p8LIFMVA78beIdL2Xn5ullTGyfEfSyiRKGMxzCG?= =?us-ascii?Q?kgFi84Gf3RNt4tUSKixo+OoKuKSJeOz/f68xhuiH2CDCAF3TLh5aF9tkn2vY?= =?us-ascii?Q?CAcxU17JzYqHkZ3+lLJbCiiXiCE7yQBc+fIQ/3H5wZ02U1lB1IHGDTeEEKS7?= =?us-ascii?Q?icN1Kd+cS38swN+dfVIMclvshzDOAP4ZimJNhJy9ahbIE2Wc2lNy1Oy9Vtul?= =?us-ascii?Q?njRj1TNdhGFhDio7NfeyLtZVwr37MXtXzxx2NqLKIe3d6IdUuc11ga54WkH6?= =?us-ascii?Q?cMZqf9f35TIGH7alZ7SAg8kYuhOOZ5VszmV/SLMJolYPjZzvTu58FrJDqosL?= =?us-ascii?Q?nC3EI4H/Voxpd00HJB+2Ph+ZpJ+rw97fHMwVVD1N8mDlRDFNAxrPJTcien/Z?= =?us-ascii?Q?y4eEqZM/gk0qB7ACxRHL/y2GYTV6wl/pSACobWRdrumhxd9C5MIcckYhEpT2?= =?us-ascii?Q?4Y60JE36hgdddrSR7Rzt0F6JF1TYdm3N59qvcuGbrZb+qR6XhXP6FseEiCkn?= =?us-ascii?Q?64sExSlBiqI2QsMwxhdNAiUiXoJCB5oJPqiTr6zsZquWhCrmUmiNaJfA4ru0?= =?us-ascii?Q?VCqyQjtEoNDx2enjpuBh5u912EW+2WxH5uXm/LqNhIxy05S48M2DyIJG4R3v?= =?us-ascii?Q?J7aNiHAaWkhTrYOkc00HHGGnYltmyuRiOm8bq8XawGRLNtLQlsuTO29CGxu4?= =?us-ascii?Q?ljDoT+7NZeuFn/BF7RzTU8HQT+25v+1l6Xy8fwbSGqB79M/UadvKlxR2bfDk?= =?us-ascii?Q?qtyrsUqYINrtuHeuSiBjttslaDq6VU1bzHYDw5DBnAkxGrZjSPyX9HkHxXZG?= =?us-ascii?Q?IZNDoZEMpglCEJdh4u+r0evWsH1L6+dJ1+ByDg8tDf2ga2jtxF7yKnnhXXZ5?= =?us-ascii?Q?wR1EnX5UI+Bt5jJIcZ0m15KXtWPCN+21qX4t7t6N4nc7T8K8XAqNJ+FiWQw0?= =?us-ascii?Q?cr7oBY70QLRgKouyTxpCxD4WbdgbJDB7Rlut?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/Zo6G81zvfYAB0vj6agJ0PBD4Z6yZoDU2cJY5Hwq/x4vjDxSVifQHKX52EzT?= =?us-ascii?Q?HAS8HSZuDiKalrDnfgVkiw181yETLB3Y6l4xms5Dg+RDbE41WPh46YAqbCdy?= =?us-ascii?Q?OSWTQqpo+dvIf2r19K3D96/Q4kuQ6rE1IPIDnIDcY+SKmEwYVPI9LY0fRjwo?= =?us-ascii?Q?Cvl48Dafp9s/RKrfjhNeZiCiaAQSkiH8PHRGTGtUuVd8xJc7dU8WxjfJOBiI?= =?us-ascii?Q?Hy5vE3Dd/uPg7dQcK2KFAVp1JxucWiW2RElGHQEXL6Y5eTc9V7yJ7S92r1w2?= =?us-ascii?Q?pR0DGKel49vSj9INyZ02ERDZYwUXHgJooGw9YLwGxuUEPaQFDJk5Z/+YsHok?= =?us-ascii?Q?KCM9S4Srwa7re+oUDd1m681E9sqIekV6HYLeDOhC1VW3oNWnZ8ZbVqrTn/YR?= =?us-ascii?Q?JkJHbvSjz/tQFKZWlG/NDn1Iyk7sb2di6atktMkZzDq8GX3GTM6SqtuGH1HK?= =?us-ascii?Q?qIxqAh/lFjS72Z2UECMsbzHhfhC1ay0ssgutUtzx8mxxKM0Genn600xMd6wP?= =?us-ascii?Q?kyDWDDmZtbxClstVOwFi7inrcEei7Xid4Wy05WRIYJggy/30EJF9kswt4c7H?= =?us-ascii?Q?8RcS0f5co7gObwn/FMVsq8RXmBx2k2bXnpX6pvOx7PelJjGe6BhJpb3XEbtd?= =?us-ascii?Q?I2TjDh13kDrzedcTxK9JmC5M/OdCrw9rvzqP90eiRN5xsXinmKxB9lhe/dAR?= =?us-ascii?Q?voxQDsiUY42Hdu84bEnbvmMjvtuT/mpwEDcafaCYSCzxYpuHXTb6dXxi9L9K?= =?us-ascii?Q?7YFrhC1icfnp4pE9SX9yS/s+RZxh9DQVe0ktfgAXhvtHRbICOkK58uinX0T/?= =?us-ascii?Q?5jGVblDw29udJzm1qHtFu3O73nVI1LPXoQO1qaPe7YGdjhpkbbGpJOvXKRVV?= =?us-ascii?Q?Ch2yGXaPvHO2SB9u7X3gMNFeRlXaTkE5GjIuEQo5/juABwSvKs53lir9mO6I?= =?us-ascii?Q?Q8Z1vjosSsQZxPw+0iIjsASSoWz069VRXTgLYMP0hKDxzKcVkVfUAdUktdm3?= =?us-ascii?Q?BZOwzozv3w+lpp//EONu6wpubQ09qXkGebFraINpNJ973qVGI7QpLaEPjOie?= =?us-ascii?Q?wow89+AstiaJIczbEHftHxbWPFE2j9yjQFqvaqONdzr9+q67zfFmCMaUyXgJ?= =?us-ascii?Q?8Ey+hxreYlKZvgvh1Hg28P1/h2wPC3BNH1LS0hgeSFSg5qLnNHdlYgOWeoCl?= =?us-ascii?Q?cSAx38uzfKmpFVCVNPvRdYW6BJUxtf0og7p6/xmXiIbVaMN48mICE/QGd51C?= =?us-ascii?Q?ObC0GuMD/GEdVYeuFOb8q2GnILZ2YWoZv86ufny5UK0uXJjBGLRX3BMCp8Yj?= =?us-ascii?Q?f6fYMUWg/1E0iwpm8MnP4GWTu3yJ8Ja523FhEMgE5yziLuQQmF2u+7s16cPX?= =?us-ascii?Q?iIzqAUJIm1yEd6eMYfwbqayzexHuWhYlD9Otug9KGL+3zBfRHHQeD5Dlqhyv?= =?us-ascii?Q?iD4hPA57AgaGhkM5o70apl6NChrDdLAomVerqBIyqY9hVD5OGG0Vzprcvef5?= =?us-ascii?Q?TDep9vnjXW+QEB+vz3wbJXU/nUn5KQ0xaTxz2Z+KTKHQ7TCqaSA8N6shxza6?= =?us-ascii?Q?Cn/ZG1hWw+l6DFzujSLfeiOxgOJUevdLZPKms7+TvS67yk0ZcHkaT3Mard5t?= =?us-ascii?Q?ODLbLnlEy09cGOBST7vu1/uKUt9KPIrQJ35wwAtofawcv8zlmsMPkxXTgQ7k?= =?us-ascii?Q?nNeopiytMQ+rSQDC9EZHJBiv/ywHuK/7lXFdoAAMK2BwbjVqtp66Sf1Q5uFV?= =?us-ascii?Q?w+UllerF6mY0K2Umn76kSLuWdkdQ2zE=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1937f309-8241-42ec-2242-08de4b0bc3a4 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:05:04.0463 (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: NCfa+kue7zPA4aVhU4N0f3rPzETE16lA+DcqowKNGdRMerLYa6OORTqbeq1rRa0eQticLi5YHSGitQ+l2Rnr4A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 Content-Type: text/plain; charset="utf-8" Add helpers in the generic PHY folder which can be used using 'select GENERIC_PHY_COMMON_PROPS' from Kconfig, without otherwise needing to enable GENERIC_PHY. These helpers need to deal with the slight messiness of the fact that the polarity properties are arrays per protocol, and with the fact that there is no default value mandated by the standard properties, all default values depend on driver and protocol (PHY_POL_NORMAL may be a good default for SGMII, whereas PHY_POL_AUTO may be a good default for PCIe). Push the supported mask of polarities to these helpers, to simplify drivers such that they don't need to validate what's in the device tree (or other firmware description). Add a KUnit test suite to make sure that the API produces the expected results. The fact that we use fwnode structures means we can validate with software nodes, and as opposed to the device_property API, we can bypass the need to have a device structure. Signed-off-by: Vladimir Oltean --- v1->v2: - add KUnit test suite - replace joint maintainership model with linux-phy being the only tree. - split the combined return code (if negative, error, if positive, valid return value) into a single "error or zero" return code and an unsigned int pointer argument to the returned polarity - add __must_check to ensure that callers are forced to test for errors - add a reusable fwnode_get_u32_prop_for_name() helper for further property parsing - remove support for looking up polarity of a NULL PHY mode - introduce phy_get_manual_rx_polarity() and phy_get_manual_tx_polarity() helpers to reduce boilerplate in simple drivers - bug fix: a polarity defined as a single value rather than an array was not validated against the supported mask - bug fix: the default polarity was not validated against the supported mask - bug fix: wrong error message if the polarity value is unsupported MAINTAINERS | 10 + drivers/phy/Kconfig | 22 ++ drivers/phy/Makefile | 2 + drivers/phy/phy-common-props-test.c | 380 +++++++++++++++++++++++++++ drivers/phy/phy-common-props.c | 216 +++++++++++++++ include/linux/phy/phy-common-props.h | 32 +++ 6 files changed, 662 insertions(+) create mode 100644 drivers/phy/phy-common-props-test.c create mode 100644 drivers/phy/phy-common-props.c create mode 100644 include/linux/phy/phy-common-props.h diff --git a/MAINTAINERS b/MAINTAINERS index 765ad2daa218..24965eec37c9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -10561,6 +10561,16 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/g= it/arnd/asm-generic.git F: include/asm-generic/ F: include/uapi/asm-generic/ =20 +GENERIC PHY COMMON PROPERTIES +M: Vladimir Oltean +L: netdev@vger.kernel.org +S: Maintained +Q: https://patchwork.kernel.org/project/netdevbpf/list/ +F: Documentation/devicetree/bindings/phy/phy-common-props.yaml +F: drivers/phy/phy-common-props-test.c +F: drivers/phy/phy-common-props.c +F: include/linux/phy/phy-common-props.h + GENERIC PHY FRAMEWORK M: Vinod Koul R: Neil Armstrong diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig index 678dd0452f0a..f082680e1262 100644 --- a/drivers/phy/Kconfig +++ b/drivers/phy/Kconfig @@ -16,6 +16,28 @@ config GENERIC_PHY phy users can obtain reference to the PHY. All the users of this framework should select this config. =20 +config GENERIC_PHY_COMMON_PROPS + bool + help + Generic PHY common property parsing. + + Select this from consumer drivers to gain access to helpers for + parsing properties from the + Documentation/devicetree/bindings/phy/phy-common-props.yaml schema. + +config GENERIC_PHY_COMMON_PROPS_TEST + tristate "KUnit tests for generic PHY common props" if !KUNIT_ALL_TESTS + select GENERIC_PHY_COMMON_PROPS + depends on KUNIT + default KUNIT_ALL_TESTS + help + This builds KUnit tests for the generic PHY common property API. + + For more information on KUnit and unit tests in general, + please refer to the KUnit documentation in Documentation/dev-tools/kuni= t/. + + When in doubt, say N. + config GENERIC_PHY_MIPI_DPHY bool select GENERIC_PHY diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile index bfb27fb5a494..4e8ac966064b 100644 --- a/drivers/phy/Makefile +++ b/drivers/phy/Makefile @@ -4,6 +4,8 @@ # =20 obj-$(CONFIG_GENERIC_PHY) +=3D phy-core.o +obj-$(CONFIG_GENERIC_PHY_COMMON_PROPS) +=3D phy-common-props.o +obj-$(CONFIG_GENERIC_PHY_COMMON_PROPS_TEST) +=3D phy-common-props-test.o obj-$(CONFIG_GENERIC_PHY_MIPI_DPHY) +=3D phy-core-mipi-dphy.o obj-$(CONFIG_PHY_CAN_TRANSCEIVER) +=3D phy-can-transceiver.o obj-$(CONFIG_PHY_LPC18XX_USB_OTG) +=3D phy-lpc18xx-usb-otg.o diff --git a/drivers/phy/phy-common-props-test.c b/drivers/phy/phy-common-p= rops-test.c new file mode 100644 index 000000000000..269353891add --- /dev/null +++ b/drivers/phy/phy-common-props-test.c @@ -0,0 +1,380 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * phy-common-props-test.c -- Unit tests for PHY common properties API + * + * Copyright 2025-2026 NXP + */ +#include +#include +#include +#include + +/* Test: rx-polarity has more values than rx-polarity-names */ +static void phy_test_rx_polarity_more_values_than_names(struct kunit *test) +{ + static const u32 rx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT, PHY_POL_N= ORMAL }; + static const char * const rx_pol_names[] =3D { "sgmii", "2500base-x" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("rx-polarity", rx_pol), + PROPERTY_ENTRY_STRING_ARRAY("rx-polarity-names", rx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_rx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, -EINVAL); + + fwnode_remove_software_node(node); +} + +/* Test: rx-polarity has 1 value and rx-polarity-names does not exist */ +static void phy_test_rx_polarity_single_value_no_names(struct kunit *test) +{ + static const u32 rx_pol[] =3D { PHY_POL_INVERT }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("rx-polarity", rx_pol), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_rx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_INVERT); + + fwnode_remove_software_node(node); +} + +/* Test: rx-polarity-names has more values than rx-polarity */ +static void phy_test_rx_polarity_more_names_than_values(struct kunit *test) +{ + static const u32 rx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT }; + static const char * const rx_pol_names[] =3D { "sgmii", "2500base-x", "10= 00base-x" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("rx-polarity", rx_pol), + PROPERTY_ENTRY_STRING_ARRAY("rx-polarity-names", rx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_rx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, -EINVAL); + + fwnode_remove_software_node(node); +} + +/* Test: rx-polarity and rx-polarity-names have same length, find the name= */ +static void phy_test_rx_polarity_find_by_name(struct kunit *test) +{ + static const u32 rx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT, PHY_POL_A= UTO }; + static const char * const rx_pol_names[] =3D { "sgmii", "2500base-x", "us= b-ss" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("rx-polarity", rx_pol), + PROPERTY_ENTRY_STRING_ARRAY("rx-polarity-names", rx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_rx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_NORMAL); + + ret =3D phy_get_manual_rx_polarity(node, "2500base-x", &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_INVERT); + + ret =3D phy_get_rx_polarity(node, "usb-ss", BIT(PHY_POL_AUTO), + PHY_POL_AUTO, &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_AUTO); + + fwnode_remove_software_node(node); +} + +/* Test: same length, name not found, no "default" - error */ +static void phy_test_rx_polarity_name_not_found_no_default(struct kunit *t= est) +{ + static const u32 rx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT }; + static const char * const rx_pol_names[] =3D { "2500base-x", "1000base-x"= }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("rx-polarity", rx_pol), + PROPERTY_ENTRY_STRING_ARRAY("rx-polarity-names", rx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_rx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, -EINVAL); + + fwnode_remove_software_node(node); +} + +/* Test: same length, name not found, but "default" exists */ +static void phy_test_rx_polarity_name_not_found_with_default(struct kunit = *test) +{ + static const u32 rx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT }; + static const char * const rx_pol_names[] =3D { "2500base-x", "default" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("rx-polarity", rx_pol), + PROPERTY_ENTRY_STRING_ARRAY("rx-polarity-names", rx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_rx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_INVERT); + + fwnode_remove_software_node(node); +} + +/* Test: polarity found but value is unsupported */ +static void phy_test_rx_polarity_unsupported_value(struct kunit *test) +{ + static const u32 rx_pol[] =3D { PHY_POL_AUTO }; + static const char * const rx_pol_names[] =3D { "sgmii" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("rx-polarity", rx_pol), + PROPERTY_ENTRY_STRING_ARRAY("rx-polarity-names", rx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_rx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, -EOPNOTSUPP); + + fwnode_remove_software_node(node); +} + +/* Test: tx-polarity has more values than tx-polarity-names */ +static void phy_test_tx_polarity_more_values_than_names(struct kunit *test) +{ + static const u32 tx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT, PHY_POL_N= ORMAL }; + static const char * const tx_pol_names[] =3D { "sgmii", "2500base-x" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("tx-polarity", tx_pol), + PROPERTY_ENTRY_STRING_ARRAY("tx-polarity-names", tx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_tx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, -EINVAL); + + fwnode_remove_software_node(node); +} + +/* Test: tx-polarity has 1 value and tx-polarity-names does not exist */ +static void phy_test_tx_polarity_single_value_no_names(struct kunit *test) +{ + static const u32 tx_pol[] =3D { PHY_POL_INVERT }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("tx-polarity", tx_pol), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_tx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_INVERT); + + fwnode_remove_software_node(node); +} + +/* Test: tx-polarity-names has more values than tx-polarity */ +static void phy_test_tx_polarity_more_names_than_values(struct kunit *test) +{ + static const u32 tx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT }; + static const char * const tx_pol_names[] =3D { "sgmii", "2500base-x", "10= 00base-x" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("tx-polarity", tx_pol), + PROPERTY_ENTRY_STRING_ARRAY("tx-polarity-names", tx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_tx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, -EINVAL); + + fwnode_remove_software_node(node); +} + +/* Test: tx-polarity and tx-polarity-names have same length, find the name= */ +static void phy_test_tx_polarity_find_by_name(struct kunit *test) +{ + static const u32 tx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT, PHY_POL_N= ORMAL }; + static const char * const tx_pol_names[] =3D { "sgmii", "2500base-x", "10= 00base-x" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("tx-polarity", tx_pol), + PROPERTY_ENTRY_STRING_ARRAY("tx-polarity-names", tx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_tx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_NORMAL); + + ret =3D phy_get_manual_tx_polarity(node, "2500base-x", &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_INVERT); + + ret =3D phy_get_manual_tx_polarity(node, "1000base-x", &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_NORMAL); + + fwnode_remove_software_node(node); +} + +/* Test: same length, name not found, no "default" - error */ +static void phy_test_tx_polarity_name_not_found_no_default(struct kunit *t= est) +{ + static const u32 tx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT }; + static const char * const tx_pol_names[] =3D { "2500base-x", "1000base-x"= }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("tx-polarity", tx_pol), + PROPERTY_ENTRY_STRING_ARRAY("tx-polarity-names", tx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_tx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, -EINVAL); + + fwnode_remove_software_node(node); +} + +/* Test: same length, name not found, but "default" exists */ +static void phy_test_tx_polarity_name_not_found_with_default(struct kunit = *test) +{ + static const u32 tx_pol[] =3D { PHY_POL_NORMAL, PHY_POL_INVERT }; + static const char * const tx_pol_names[] =3D { "2500base-x", "default" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("tx-polarity", tx_pol), + PROPERTY_ENTRY_STRING_ARRAY("tx-polarity-names", tx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_tx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, 0); + KUNIT_EXPECT_EQ(test, val, PHY_POL_INVERT); + + fwnode_remove_software_node(node); +} + +/* Test: polarity found but value is unsupported (AUTO for TX) */ +static void phy_test_tx_polarity_unsupported_value(struct kunit *test) +{ + static const u32 tx_pol[] =3D { PHY_POL_AUTO }; + static const char * const tx_pol_names[] =3D { "sgmii" }; + static const struct property_entry entries[] =3D { + PROPERTY_ENTRY_U32_ARRAY("tx-polarity", tx_pol), + PROPERTY_ENTRY_STRING_ARRAY("tx-polarity-names", tx_pol_names), + {} + }; + struct fwnode_handle *node; + unsigned int val; + int ret; + + node =3D fwnode_create_software_node(entries, NULL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, node); + + ret =3D phy_get_manual_tx_polarity(node, "sgmii", &val); + KUNIT_EXPECT_EQ(test, ret, -EOPNOTSUPP); + + fwnode_remove_software_node(node); +} + +static struct kunit_case phy_common_props_test_cases[] =3D { + KUNIT_CASE(phy_test_rx_polarity_more_values_than_names), + KUNIT_CASE(phy_test_rx_polarity_single_value_no_names), + KUNIT_CASE(phy_test_rx_polarity_more_names_than_values), + KUNIT_CASE(phy_test_rx_polarity_find_by_name), + KUNIT_CASE(phy_test_rx_polarity_name_not_found_no_default), + KUNIT_CASE(phy_test_rx_polarity_name_not_found_with_default), + KUNIT_CASE(phy_test_rx_polarity_unsupported_value), + KUNIT_CASE(phy_test_tx_polarity_more_values_than_names), + KUNIT_CASE(phy_test_tx_polarity_single_value_no_names), + KUNIT_CASE(phy_test_tx_polarity_more_names_than_values), + KUNIT_CASE(phy_test_tx_polarity_find_by_name), + KUNIT_CASE(phy_test_tx_polarity_name_not_found_no_default), + KUNIT_CASE(phy_test_tx_polarity_name_not_found_with_default), + KUNIT_CASE(phy_test_tx_polarity_unsupported_value), + {} +}; + +static struct kunit_suite phy_common_props_test_suite =3D { + .name =3D "phy-common-props", + .test_cases =3D phy_common_props_test_cases, +}; + +kunit_test_suite(phy_common_props_test_suite); + +MODULE_DESCRIPTION("Test module for PHY common properties API"); +MODULE_AUTHOR("Vladimir Oltean "); +MODULE_LICENSE("GPL"); diff --git a/drivers/phy/phy-common-props.c b/drivers/phy/phy-common-props.c new file mode 100644 index 000000000000..120b5562ade5 --- /dev/null +++ b/drivers/phy/phy-common-props.c @@ -0,0 +1,216 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * phy-common-props.c -- Common PHY properties + * + * Copyright 2025-2026 NXP + */ +#include +#include +#include +#include +#include +#include + +/** + * fwnode_get_u32_prop_for_name - Find u32 property by name, or default va= lue + * @fwnode: Pointer to firmware node, or NULL to use @default_val + * @name: Property name used as lookup key in @names_title (must not be NU= LL) + * @props_title: Name of u32 array property holding values + * @names_title: Name of string array property holding lookup keys + * @default_val: Default value if @fwnode is NULL or @props_title is empty + * @val: Pointer to store the returned value + * + * This function retrieves a u32 value from @props_title based on a name l= ookup + * in @names_title. The value stored in @val is determined as follows: + * + * - If @fwnode is NULL or @props_title is empty: @default_val is used + * - If @props_title has exactly one element and @names_title is empty: + * that element is used + * - Otherwise: @val is set to the element at the same index where @name is + * found in @names_title. + * - If @name is not found, the function looks for a "default" entry in + * @names_title and uses the corresponding value from @props_title + * + * When both @props_title and @names_title are present, they must have the + * same number of elements (except when @props_title has exactly one eleme= nt). + * + * Return: zero on success, negative error on failure. + */ +static int fwnode_get_u32_prop_for_name(struct fwnode_handle *fwnode, + const char *name, + const char *props_title, + const char *names_title, + unsigned int default_val, + unsigned int *val) +{ + int err, n_props, n_names, idx =3D -1; + u32 *props; + + if (!name) { + pr_err("Lookup key inside \"%s\" is mandatory\n", names_title); + return -EINVAL; + } + + if (!fwnode) { + *val =3D default_val; + return 0; + } + + err =3D fwnode_property_count_u32(fwnode, props_title); + if (err < 0) + return err; + if (err =3D=3D 0) { + *val =3D default_val; + return 0; + } + n_props =3D err; + + n_names =3D fwnode_property_string_array_count(fwnode, names_title); + if (n_names >=3D 0 && n_props !=3D n_names) { + pr_err("%pfw mismatch between \"%s\" and \"%s\" property count (%d vs %d= )\n", + fwnode, props_title, names_title, n_props, n_names); + return -EINVAL; + } + + idx =3D fwnode_property_match_string(fwnode, names_title, name); + if (idx < 0) + idx =3D fwnode_property_match_string(fwnode, names_title, "default"); + /* + * If the mode name is missing, it can only mean the specified property + * is the default one for all modes, so reject any other property count + * than 1. + */ + if (idx < 0 && n_props !=3D 1) { + pr_err("%pfw \"%s \" property has %d elements, but cannot find \"%s\" in= \"%s\" and there is no default value\n", + fwnode, props_title, n_props, name, names_title); + return -EINVAL; + } + + if (n_props =3D=3D 1) { + err =3D fwnode_property_read_u32(fwnode, props_title, val); + if (err) + return err; + + return 0; + } + + /* We implicitly know idx >=3D 0 here */ + props =3D kcalloc(n_props, sizeof(*props), GFP_KERNEL); + if (!props) + return -ENOMEM; + + err =3D fwnode_property_read_u32_array(fwnode, props_title, props, n_prop= s); + if (err >=3D 0) + *val =3D props[idx]; + + kfree(props); + + return err; +} + +static int phy_get_polarity_for_mode(struct fwnode_handle *fwnode, + const char *mode_name, + unsigned int supported, + unsigned int default_val, + const char *polarity_prop, + const char *names_prop, + unsigned int *val) +{ + int err; + + err =3D fwnode_get_u32_prop_for_name(fwnode, mode_name, polarity_prop, + names_prop, default_val, val); + if (err) + return err; + + if (!(supported & BIT(*val))) { + pr_err("%d is not a supported value for %pfw '%s' element '%s'\n", + *val, fwnode, polarity_prop, mode_name); + err =3D -EOPNOTSUPP; + } + + return err; +} + +/** + * phy_get_rx_polarity - Get RX polarity for PHY differential lane + * @fwnode: Pointer to the PHY's firmware node. + * @mode_name: The name of the PHY mode to look up. + * @supported: Bit mask of PHY_POL_NORMAL, PHY_POL_INVERT and PHY_POL_AUTO + * @default_val: Default polarity value if property is missing + * @val: Pointer to returned polarity. + * + * Return: zero on success, negative error on failure. + */ +int __must_check phy_get_rx_polarity(struct fwnode_handle *fwnode, + const char *mode_name, + unsigned int supported, + unsigned int default_val, + unsigned int *val) +{ + return phy_get_polarity_for_mode(fwnode, mode_name, supported, + default_val, "rx-polarity", + "rx-polarity-names", val); +} +EXPORT_SYMBOL_GPL(phy_get_rx_polarity); + +/** + * phy_get_tx_polarity - Get TX polarity for PHY differential lane + * @fwnode: Pointer to the PHY's firmware node. + * @mode_name: The name of the PHY mode to look up. + * @supported: Bit mask of PHY_POL_NORMAL and PHY_POL_INVERT + * @default_val: Default polarity value if property is missing + * @val: Pointer to returned polarity. + * + * Return: zero on success, negative error on failure. + */ +int __must_check phy_get_tx_polarity(struct fwnode_handle *fwnode, + const char *mode_name, unsigned int supported, + unsigned int default_val, unsigned int *val) +{ + return phy_get_polarity_for_mode(fwnode, mode_name, supported, + default_val, "tx-polarity", + "tx-polarity-names", val); +} +EXPORT_SYMBOL_GPL(phy_get_tx_polarity); + +/** + * phy_get_manual_rx_polarity - Get manual RX polarity for PHY differentia= l lane + * @fwnode: Pointer to the PHY's firmware node. + * @mode_name: The name of the PHY mode to look up. + * @val: Pointer to returned polarity. + * + * Helper for PHYs which do not support protocols with automatic RX polari= ty + * detection and correction. + * + * Return: zero on success, negative error on failure. + */ +int __must_check phy_get_manual_rx_polarity(struct fwnode_handle *fwnode, + const char *mode_name, + unsigned int *val) +{ + return phy_get_rx_polarity(fwnode, mode_name, + BIT(PHY_POL_NORMAL) | BIT(PHY_POL_INVERT), + PHY_POL_NORMAL, val); +} +EXPORT_SYMBOL_GPL(phy_get_manual_rx_polarity); + +/** + * phy_get_manual_tx_polarity - Get manual TX polarity for PHY differentia= l lane + * @fwnode: Pointer to the PHY's firmware node. + * @mode_name: The name of the PHY mode to look up. + * @val: Pointer to returned polarity. + * + * Helper for PHYs without any custom default value for the TX polarity. + * + * Return: zero on success, negative error on failure. + */ +int __must_check phy_get_manual_tx_polarity(struct fwnode_handle *fwnode, + const char *mode_name, + unsigned int *val) +{ + return phy_get_tx_polarity(fwnode, mode_name, + BIT(PHY_POL_NORMAL) | BIT(PHY_POL_INVERT), + PHY_POL_NORMAL, val); +} +EXPORT_SYMBOL_GPL(phy_get_manual_tx_polarity); diff --git a/include/linux/phy/phy-common-props.h b/include/linux/phy/phy-c= ommon-props.h new file mode 100644 index 000000000000..680e13de4558 --- /dev/null +++ b/include/linux/phy/phy-common-props.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * phy-common-props.h -- Common properties for generic PHYs + * + * Copyright 2025 NXP + */ + +#ifndef __PHY_COMMON_PROPS_H +#define __PHY_COMMON_PROPS_H + +#include + +struct fwnode_handle; + +int __must_check phy_get_rx_polarity(struct fwnode_handle *fwnode, + const char *mode_name, + unsigned int supported, + unsigned int default_val, + unsigned int *val); +int __must_check phy_get_tx_polarity(struct fwnode_handle *fwnode, + const char *mode_name, + unsigned int supported, + unsigned int default_val, + unsigned int *val); +int __must_check phy_get_manual_rx_polarity(struct fwnode_handle *fwnode, + const char *mode_name, + unsigned int *val); +int __must_check phy_get_manual_tx_polarity(struct fwnode_handle *fwnode, + const char *mode_name, + unsigned int *val); + +#endif /* __PHY_COMMON_PROPS_H */ --=20 2.34.1 From nobody Sun Feb 8 18:32:00 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013007.outbound.protection.outlook.com [40.107.162.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 ED34C2BDC1C; Sat, 3 Jan 2026 21:05:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474315; cv=fail; b=dlbOtun3iLV84jj74BjB1fcy7nmxYfE2zwJMMc5PBw22WttsQVIVUYWNsYPTBOIWALV4hViEtSkmMns27+HrUyEebvAEW7ArKJF5APjoIPjq66KRxaSv3nOSKq44Imy5lhco05FEw6tgZIZgBlS2z8/uDUl8mBWY5QBNz/VdMKE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474315; c=relaxed/simple; bh=7+QKeQypp68HGWwkJKWpSsLBpV4yUF9W6ayh49shW8I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=LW0JXr4wGL4UnJDAkTYusMxmh3yVNxHeKO2TzS3KZj9jQ7R8of+5m3P6LzFINO/O58kEIIQ3n4letndkfKtlg1eQV7Z58Qanr6PaymVdaSngYa9CC81llnFlQr0QXIuX9yiOr7VgLb3r3c8ElJKCpaNMQEkaYYdkamL1mJvSxKs= 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=k+jeoPrT; arc=fail smtp.client-ip=40.107.162.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="k+jeoPrT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=X0OSDh56qjFcw3mV4Tpi4UbO6MhycRk4xJR3eif3GmMZ+RHtsUjuBoZo2c5QrHHpk2jHEnpiY8Q6AtUHxLrK3bQVxjHfiVZVsT7OHHmAnen9zv2biIzXKDd8hAkDIvgtBw3LAjcl6IhxMXFc5yM+aMjydqdVA8qhTDmLgjHPnZkMBUGB5SLjcKGEl8nf7vI7J4IrQF3jHI+Qw3cqSsQfip0Hh03fdAu65Cb4fz6m3uAAe5qFlVdJHSKRC2cT+ihiL55c9UgahvwvGm+iPr10GjrL1CNqwGffbvNvYba9JV41JfkMr3FMv/fP6YcMEIuvDe5OvdstEGZixtV4znXlCA== 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=9m0y2MM8Ojf7Y7bt/N17hBfFs5mlNQFtFdz2CCNbZ48=; b=bA75GuoHd7zzG3pDllyb9D2fZBV3w0NrmqusXFv/GITmcetF8SHHM9ZoDuYXDh4iBKP/FKaCMRxdJTrhOaRvwHueDIKj5uSiw7UN41B8ZcZ2Pm3v25/9/TaMQswCTe9gCaZKqZ/FjDp5OvqZS3Rgn4Y4oTR6GudGt7kPRWKktXguI7wZhpgW3TVpWfCHVjwZUYTsAHOPzjERacKCE3MfW4B0W2cJCpci0VR5tUp3ezX64V3Rl94f/J+wGizhWDhzHlU2iN6r+htTgMpHnCmXEtXiLtro1A9DImnDIBDvNzFPI1itjwat8Vg5hoiOFVByuZBYFFiyN7OIba6OF6nROQ== 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=9m0y2MM8Ojf7Y7bt/N17hBfFs5mlNQFtFdz2CCNbZ48=; b=k+jeoPrT08q+WIHlnUT3jzIF6dBejaICbM/Iyyo2ezLxs8uKuxwlFUSv+97Xz31KQHyvAFzJnaMJBjkGKSycsCK1JsI4c1FlTmOnip9/L233zrSBJVvfHDXkdsknRwyQO009TvsnnHGxQ/2n/A/2sEMMsiEmhq0S7H0pSfCH+uIw1pC63xehhzpIO8L7/Zg0kzej0gG6e3Md3FiokRGxDjDBI1Hf8xoCAqcfF4Tdr/TY14WaGAwCnulOJjSynGTouJkm3KxOWqovxabjPhgJq6DzrTuNhRNZKSyiGZs8FBOxdt8dAVJdhMtuisPd441FiW6EZJ0nx/voCTii4ve3Rw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:05:07 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:05:07 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 06/10] dt-bindings: net: airoha,en8811h: deprecate "airoha,pnswap-rx" and "airoha,pnswap-tx" Date: Sat, 3 Jan 2026 23:03:59 +0200 Message-Id: <20260103210403.438687-7-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: 73c47027-7e4d-468e-07df-08de4b0bc587 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?l/yoM1/jWWfgYvd5OtH4n2s+JCdRl1PrO8aXmR1AUWkFRT2WN96YgwFABpkV?= =?us-ascii?Q?wLwVjGS7g4YVFfG1SkyEkCR0HOhJSKkmg1oJu0pbFORjaJU9Z2RsEeIDj7VZ?= =?us-ascii?Q?TjDEVREcWddQQh8DMqMPa738Akduea2g+vrs8Uijis316nqJeZLwEIRgqC+F?= =?us-ascii?Q?Qw5H25MeixQbLVu3011WqfuWWGAuaxR8vm7W1MVf2gYjfwuhI0Haay/WIfBS?= =?us-ascii?Q?c07TV4aiWdt3B49DB4k1MN+fIbQP0Pn6QslC6U7ukk8Til7+bNxrDG6k0/wl?= =?us-ascii?Q?Y4Fa5+Yd79qJMF3/Ec8Z87eePz+LrvG9B0Q6Cx2n2FLH7C9/+9u72Awf1hiM?= =?us-ascii?Q?3kal8YAMuvo6i2ljEQRRphQW3+leBEGrj9ejLTo6/QtIJjdP3sAUp/iKq21e?= =?us-ascii?Q?ak0fTkj614FjUTmE1BuYeFEjw/qmXFIKCTxRfIDjV4iMviYmKJkV+SW5iE63?= =?us-ascii?Q?CB34CMUAdq/PfoysXdKyLxhmhmBsBBEwXr53x93RQpVT5naxNON+vgVPVfO1?= =?us-ascii?Q?8EISg2VHxZY2oZcW8qZCinxtci1OYvddRpcQ4cc4dyCiWtBnHSy++Gv3ujop?= =?us-ascii?Q?dkySFPKocA0TEpT1Dodv4fS9Gf1f8hfmcfL+M2A8IGiyaTEcTOHNoSAe78j9?= =?us-ascii?Q?Wb+PdPrnAs4ucCumqLiSY4H0ofry7VvGfNxeWAFXhHVo7xRt5DzHjnkMu4Wl?= =?us-ascii?Q?wo4opZ7dANgi7UdkCLFVRfzzlkDeEJpZzhN08r+TLFAiBB7zDt0AS4GLp04n?= =?us-ascii?Q?X19NkR0M1p8syCI7H/FwJ8nDGQMOy1qTDyrVy9RBLJHtNc6jZ/SX/dt+i9a6?= =?us-ascii?Q?xlhuuHyy9hKQq5P+Ff5urYbyqjXdJwrkMQIaP9yZBzI3VCIWtV3WyL8CugOi?= =?us-ascii?Q?TjK0+q/ZPAJL8Rnuv0mpYUbYJIpbQPKjxLXcA8Jk7Y+ypH9XP5ajLXQiGHbP?= =?us-ascii?Q?HQSGBO/U8L7GjOxeVMKS2rL2d1M9+YkPXnJXo3JQONSKjAE6NSt0MVP0KYG2?= =?us-ascii?Q?4ifAKaS59qN803MUQMhSB6hdi1Yfeo55p56Gidows90N/JIiZYXQBCqh8z1H?= =?us-ascii?Q?grwU34DxEvib7jTRcputANqS2UpxHSYBoq7TAbDKrh8y/Cwkvc6hJoJx9xKY?= =?us-ascii?Q?97RyvLnAin0bpm2eJrWR2yZIOMOc2RdIhWXztJHwKrRwN6Mm94IIc0xF/iBA?= =?us-ascii?Q?Jst21YCYxAiYqSfi7Fuah77J46j87cZzsbTkswuiDZDoNhtVsge89ojwWXDL?= =?us-ascii?Q?V3fUMlQMvGmNBpQnixzUVCJn/uP2N7P/8EnP6oOgYFCMqCxvgMWYV7xp2rV2?= =?us-ascii?Q?SwCvWwg9LybxxCzQBJ/rVg4RAQKJbDEoh0gLqIpQMDiUSNmoGMpTP6DYhNJp?= =?us-ascii?Q?Qf6VEvOSksRsqCI/Z8EpsYqWhD1oAQ+NqPesFgungfgtvdCpf9ZpGk7sY05E?= =?us-ascii?Q?Le0PFQxzEwTpk7Z4oVgSRNX9K+UvR76jIYqqzyXG8m2GNacowrgO7MtbVZh+?= =?us-ascii?Q?7lxIm/3SKMzPxHVlxuJJNd+F7+EtF9Hg+F6Z?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bGX4gWsq6+aiVtCWfGQaUGuk2nnXxJUHakKWoxMkDpOXGH/p462G9HPqTVEh?= =?us-ascii?Q?b9E/DSaDcNIdt8vOPMwUvelb7nhzTJpHUPynGFox1H9HYK1YUCV/5PDhBOiF?= =?us-ascii?Q?k0JT4T6gPAGwsKKGVRzk3Citq7SgpSZ24nrzUYtov+cGi/n4+h3Dj+JGtWFP?= =?us-ascii?Q?mzN6P+CRE19Z5uQtOy1j+9HLj1rHTkgN1sQZeqM1jeOHAAawPFHk5s7S4++r?= =?us-ascii?Q?dU4RDWwNacITQjI9Hf8en2Nz5qbynvAeYagGmtZSdu2hp9YAa4zbwYrgoOKO?= =?us-ascii?Q?W0A1PfraQb9sCLl7tx1zqNwoTbyKHyXR2ZpcP6rx17PZvR8sKavQ0HyzvmkA?= =?us-ascii?Q?SEkUgWgBJcBHRstvTtl/h0bcPpLmlYurn8f7kWgUUPaM8GdLHgFCSMAU+stV?= =?us-ascii?Q?fXc8oJw0js4zzS59RqntL8HB6T586GGVf7nCL+erSFwnsUIPmux0CPyB+q/U?= =?us-ascii?Q?skR9VkzDtFspeASL8q99T1OxHCdlC7rjh27SWi0/Bca41At4qVLly/IqDjhk?= =?us-ascii?Q?kh1DbA8m/U8UoRrvCQMve5DKTN5G/wTt1wJLYGvg5nlJqOTtNkcR/6NDQyWI?= =?us-ascii?Q?Iw5lQBpAzRZRfP3Wge+KvzcN+aMlnD0WyALX2hkkXvPh8xC5YqQJcj4dkVBQ?= =?us-ascii?Q?Qc2C4uLk3x5JhGyIXK7Dgjn9ErJ4hSZEtwM8nuC21QAtsck8dcbwO/Pd508v?= =?us-ascii?Q?aTLjTKaPEbRG1R4/E5E7V+k4uFlR/T1KXYD1B/cH/QcmKJ53GtbIb/g/7u/e?= =?us-ascii?Q?ujMIKxrnKoLYaXB8pERkbAtrQTc4Jp3WpsVpXYt98Qh0XNsZhDyurEeTvdI6?= =?us-ascii?Q?tIBCFirQ+FZshUcWmVXQ3c7UX2xDNgQfcSolCE8Z2d8zaMAde5mQFzuvQqQX?= =?us-ascii?Q?2/EBy2JOqIlzdTtBGP9bt+zcKk1B1exlzFRBSqc+aen8wE6YnN3XHST9dAR6?= =?us-ascii?Q?tyNqX21KnUPXAxsk5FW+sLIXA3btS5clMWnkxjcmOXaMbImQaFGzXQRJimTy?= =?us-ascii?Q?vxJsNnZgAcqIFLKTMIkboxfSWEMNDB94IxHWETl6h3TppbaV1TllgCL1LsYL?= =?us-ascii?Q?I7TSm8MhlCEJ6ALXQ1yV1lv2b+qa6i4mrqMCrZ8011yikmOobPbXyVFzDtv7?= =?us-ascii?Q?KiOX/JXXhD3V9kctk0dotY1h0J7h0/xZSC52o/KYn/WScKPAASRLQzQMnyZR?= =?us-ascii?Q?YUBGkZZnIFMvkJ/ZHRW7FO4TLx8811R9fYjpQi6G2vYmqbX5QK7nidGLUaxr?= =?us-ascii?Q?4KYgVS+ncXzPoxk54RbcioUiOoi7GCcPzz7jpQplytSCprgmPG0OHRy2uDwm?= =?us-ascii?Q?bSXYNa21dfGMghAN2q6HN48djRBopQbgP4CAr0cng8jfJra17ukWeM1+Piek?= =?us-ascii?Q?qIQJWzQuNrXMBGMq2OZdLTcVpybh5gHyldHfUxdIkH9229PGdO99Uvw7XtPC?= =?us-ascii?Q?FgljhikzQU1dAFMU1crm/3UBI1Ho2CxS6o5s0cwXxg409pPgvSyznAprqECf?= =?us-ascii?Q?9dvY2f05+EAVHBXD/Gq4q/wSCI02UjcWca91l+FiIoMBNgXK6Xv1fM5Qa61K?= =?us-ascii?Q?J26hsQJmwV6IWp1cqw3h97XP0rv1rds2nS6VRuWv4rcunbwAbiazobpPe3ES?= =?us-ascii?Q?wOt8l+xz+bU45zYQWXnmUGtltKrdBOcvySvi3OFm1JplchiDimww5a1JJHJW?= =?us-ascii?Q?J3weDeEWGB0skeeOT5kbpU4eEjhCzX3PEfelmy1DzCsoGAL/SC+2DLl3Xvlu?= =?us-ascii?Q?HunJxyrQibaFJfEQrUDz8Vmawu02NEI=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73c47027-7e4d-468e-07df-08de4b0bc587 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:05:07.0459 (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: UAnTyjRwuYTkB3ZH+sLc1kgWOpfiSJqpOZI5kDN3lS74TMY5c4d+0WKlB63UaPZ0r+1YQZRvc4/Sov1kq03FzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 Content-Type: text/plain; charset="utf-8" Reference the common PHY properties, and update the example to use them. Reviewed-by: Rob Herring (Arm) Signed-off-by: Vladimir Oltean --- v1->v2: none .../devicetree/bindings/net/airoha,en8811h.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/net/airoha,en8811h.yaml b/Do= cumentation/devicetree/bindings/net/airoha,en8811h.yaml index ecb5149ec6b0..0de6e9284fbc 100644 --- a/Documentation/devicetree/bindings/net/airoha,en8811h.yaml +++ b/Documentation/devicetree/bindings/net/airoha,en8811h.yaml @@ -16,6 +16,7 @@ description: =20 allOf: - $ref: ethernet-phy.yaml# + - $ref: /schemas/phy/phy-common-props.yaml# =20 properties: compatible: @@ -30,12 +31,18 @@ properties: description: Reverse rx polarity of the SERDES. This is the receiving side of the lines from the MAC towards the EN881H. + This property is deprecated, for details please refer to + Documentation/devicetree/bindings/phy/phy-common-props.yaml + deprecated: true =20 airoha,pnswap-tx: type: boolean description: Reverse tx polarity of SERDES. This is the transmitting side of the lines from EN8811H towards the MAC. + This property is deprecated, for details please refer to + Documentation/devicetree/bindings/phy/phy-common-props.yaml + deprecated: true =20 required: - reg @@ -44,6 +51,8 @@ unevaluatedProperties: false =20 examples: - | + #include + mdio { #address-cells =3D <1>; #size-cells =3D <0>; @@ -51,6 +60,6 @@ examples: ethernet-phy@1 { compatible =3D "ethernet-phy-id03a2.a411"; reg =3D <1>; - airoha,pnswap-rx; + rx-polarity =3D ; }; }; --=20 2.34.1 From nobody Sun Feb 8 18:32:00 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013007.outbound.protection.outlook.com [40.107.162.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 4A4392BE64C; Sat, 3 Jan 2026 21:05:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474317; cv=fail; b=MvzzoulshR1U094YyAdHDCYlvNENYZq6L2gRk3OCGo4Xg1hi0pgoUClLlHphfsIivIebLoCtBTp7dlDm/6t/W1JprWz2sWy15J+sTnTU+M/H4SyE+Wo7eLgsY2elV8vexQybr0c+yjPwZD+68Yc7ITmsIBqWojhxbV43Ksxyw90= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474317; c=relaxed/simple; bh=R1lXWFvVpdmqo5LvWDpBJ+03CJnavZnjVqUI34iTTwA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=fbu0ozKugJP0ppXBbrxY9DQjyMrg8n1+Ew7NifpQ77sXhTZvDPiOE6HfxqlqfWvoK+FA4/HXEZz2nnxrNFuclctBbnHHzge8NIrL6FWCvr+6+FbRRjxZuREO/D4VgQbg+XD9KiQ568AvsO8a7rDhk/JHs5LXL3TeaZtzNBMBpCY= 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=TEonJbZ5; arc=fail smtp.client-ip=40.107.162.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="TEonJbZ5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tZtN1uwsz+Fk/Qjv+rOnAEfl6tF9APQnOs1mpSDuW26243WJOL3XDoFtbGJuvhmtpP7C1BRp/FUQNqSjOx7e4yLss0ddJ4jHm4fhDiwYoRh45/Yvz9xifKlKa6ahB78/jCFTumGdxlZm455x5Su3Xw9eUVbQ4F6HVZwmkDdze7enty9TuBOmX6ExKiLc7jWZZgf+xDvDX54f6ftw89SQcXdhNPEB2PCfsgi+6i2Yd0El1jhDdylzhgdJmDuIjFhaPm2P+TrFyi6mWxH/ComHTnhgpE7UBllPG15eXHvIJxS+iTtNt3XmRC26I0kIJ9TyzxprLFsDqL27deyMicdoIw== 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=Lu829agQaPnN8LyVXsYvEE6pTuOhpJjo1wvtjJyhOKk=; b=IV4gI8FDRHfzFu+UZ9EI44LUFMmnPspHHG5fsECUpqa8BZuP2r+1q6TeiHwqsZxlvYEpKi5iIDuO90SbuMiek6CFiMR28KDk5q9aCBm1D/mONvFObVVCvE0/pBxO0kDVHvZOlMdtBNVCHQwZqL3lBUdpH+5+asCAqhNA7+MRtYzdfGI3YwfNCjYauQZcyZsVPB7CxdKOyxvsfP6zYmhFHkQDISEQUxVfDV/EGmrqZb+9Pkjcg95XTVAsE6M4d32gmNGRFUwywh17d7NybKFiQj4xrSmUHs0U2H0zUNAqI4CZTxTgNmCs3k3kOkOEDA4HwZCbrjIPMwNEmaGoyZ9TGA== 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=Lu829agQaPnN8LyVXsYvEE6pTuOhpJjo1wvtjJyhOKk=; b=TEonJbZ5Ofkz4WdF0Dlh/bO7G6IAg+2NuYSBY0MwoSfcsm7CzNAQTf65tVKq634mruUg7Lj4tO4/FTdhGE5zGl5JeG7KmO71/CZGiJtZUVfneewkxOvpICEsExTiIOsglpd/BKwQ3c0zsR87zLZCEthGECx7NYYcTI7X7u3hZIHp3GujU8R1aVjIbc2aQiOkDMRpm+NMH3+mMWcmfm4Ec/rfv+BivqGQyKwRa9pHLPOXxgpJZkP68Ehud7Z0rxq5KEqJBMFGOnRhrml35PTDmiNQJO4IaTEsw/EUAK+mt6Jb/ZfV0y64adX12kFP7rO8hBvlaaZjHrDYNuB3EzK2uA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:05:10 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:05:10 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 07/10] net: phy: air_en8811h: deprecate "airoha,pnswap-rx" and "airoha,pnswap-tx" Date: Sat, 3 Jan 2026 23:04:00 +0200 Message-Id: <20260103210403.438687-8-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: 718f0f3b-b4fa-48e3-4851-08de4b0bc76d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dGZTRi6E2hjFBLjiYTUECvHNDfVuf1QbKeUEOgbxs+IHIXWg2Odr/oz1kwd0?= =?us-ascii?Q?mYIDQv2gLJ1W3rndlPUhBH7cmEY4IErodiWuV+979guT1EXXS7yVZAVplB9j?= =?us-ascii?Q?dBGsmiqA88t4twqL3R4O7kr9bzQFhX6JcwxxsdNqGD5Dldyl8KANw4WmEYuU?= =?us-ascii?Q?maJJBUFLusEe2Z/krRMov765QqVtqiHWuGqtIBaA4FR3U93f/6T9xAMeHbNb?= =?us-ascii?Q?DGB19Yvt5h8/MHfDrE3cy0P4luUNXrvpz+g0xaNTepZFNIRdhhwCTxnsGwVW?= =?us-ascii?Q?Nbw4HogEh3kyYiyUEOMn95ltq35pJGmncML6dV6CobwyaPB0llvO9JRywPDH?= =?us-ascii?Q?3Loq5O+KmnEIvIARYGL3JkcYoIBXG4KuJRJfHdlCCgv3HJmLX/2sj9okYa5t?= =?us-ascii?Q?mDpzu/P1og636aEAgKY+9DR3RzbsVQYJ9IculH9Ygxt8ka0tM2XMGi1PjPH8?= =?us-ascii?Q?rwVaOM5c/whZrXY8yGpalvHsSg8sr+zQgIyVoA4SIUGavRwKkbjfltJHRngA?= =?us-ascii?Q?1C5DIcUBPb5upizrgLGk1G+UiU+aTcp4vEA46buFUQCqvRany7e26e8fwRN0?= =?us-ascii?Q?deyOv+CDvoRTNpNhU7OuPP1EZelh1vMJkuYdAPO2izqsFmR0TmXKJff7d8n6?= =?us-ascii?Q?F6pLVUOW5OaqXqdZAe4MicpHuwVOW+MfaC1ufV2yCeqKFrNmLXvAj7SOQLOy?= =?us-ascii?Q?2UsQYZAbSE6aJYe9OxJ07Bu7Xsz2OcKqzeZMDZMggnXkIaAzvjbTmJkyKD72?= =?us-ascii?Q?1h+nzVHrrKIO307IZvrzz7Duy63S945P0gUddsGxmho2zqYsqS8wCh4NvbZe?= =?us-ascii?Q?KBaPr3etWkXl5iEVrkf8yEfVnoIjkdG4MSJsu+b12qLRZnEwwWt4077Z/8Dv?= =?us-ascii?Q?9csPMefXTYUCA5rFNZxfPnEY6D9sTWf8ZOem/aY5ghPppH+p1rsV1KqZCROt?= =?us-ascii?Q?ThDjOpbT12eWsxVffAmCM3QOu2ZhhWLwyr0la+R3O0QjKPIQ+4uZpmBVwz6J?= =?us-ascii?Q?bbnux/FCZIMVi1W3E1VY2IY4aMAS5QGUVbWluoeojM7KWeGYt6eVWkkCX7sl?= =?us-ascii?Q?F/pAQPXqvry/+z/Y40fjbPDf7gtVGULE30UbOZfrck965tAi7nIhcocDT5Bl?= =?us-ascii?Q?unoodnJ3vWtSAH+PTeu/GyKLb+ykZcJgSyDhxoRK9zN/g2GpbMI3dW2U13ND?= =?us-ascii?Q?zxb5SmX68kPcIsV8AVTZX8TDKdZNhes2+mwOc3Krb0Jes5ivwPAAw5NGyaTX?= =?us-ascii?Q?EvaiKBpc7dZSWSdJma+498FzkQsPGY0/YHj6ZipAkd6H8ETSZ1ZB8Pssko5K?= =?us-ascii?Q?HjzMmPJY2GdvVngbhMqvuRhKWhadrtNB5Fgqzno6UTfuILOG68j6KWz/KFm4?= =?us-ascii?Q?77g5ojZMPqQ6bO2YofZUg9shwZEizRvMV35geW2ImQUhad4hzFLyPbzRlFlg?= =?us-ascii?Q?MlaYKaPJ4UEuq33enkSVmNmWiV1Wy6jA8dh8NzRqIPN1LSY+zz7gSRLqfFS/?= =?us-ascii?Q?dyUWWzUTBRnnxEU2mQ7aBA6VtwN7LHLJDv3t?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?L2OW2VP8s21HKob0hSSsrDxbcMSEnLbaGcvi21AAIfTpguQpgMYrWxHwM6vP?= =?us-ascii?Q?cH2r9n3D0ibRWFdiQhieEtoKgJclI907crG60SZJcSKg3NGu+AmGQEM77hKn?= =?us-ascii?Q?gCAPClBqI9hdoiUpIY/WheTv+XAEH2L5ZC6zrDaxZy1CHVVZZWtMCAa+Lkfo?= =?us-ascii?Q?3dZcPLj28HNi4ZuHPtvoV36jAbYFezg78935CnJm443FeRQB4LzanDw8O0ja?= =?us-ascii?Q?fesy8kvlxyqcxnM1EN8dzadY8IOk2yhFDMXmdWVuZJhBhmum4lreF+Kw3HLB?= =?us-ascii?Q?WYeNLQDfy6ShgLswdHd7LvB64g5oefUsSMxEGyoyFnHNFvUQGJ82WaLw9dM4?= =?us-ascii?Q?QkO3H9NIvBZWCfclrTL4Khl+mN9652Q0ci9t6aFP8zlGum3yeQDGSmkUMA8H?= =?us-ascii?Q?mVBwPtbJJs8/VBr2rYSmDMaJW+zomzwg3ieFHYkvoubsBbsscgY3tVt1wOQw?= =?us-ascii?Q?y2WAVSWBugsripzsJYOC2AlaRRHUZ5Ib7wpe5xy5rzhs2Mz0xWoojRTeTcfw?= =?us-ascii?Q?BFlOUqu6JQ28ypZYMDh7JkhEzx2xDpYitHBTj51PSFdTLlyPT6bkf7JYo9Ol?= =?us-ascii?Q?FPY5oV3q+wsn+79vhLllNt+enRMxWbV7pTmg15sV6bxdqLe2WcI/s4pLHV1M?= =?us-ascii?Q?QGTh0tME+F06DUjdY5gKVwaqdVOrBDAwTdvxP5vAi8vO4OalCzH7gE1HZXQa?= =?us-ascii?Q?gMv/otCFBbevJDWlT2NBmYNUl9ev9S6Az4TIbppm0sOYc6O3jhpGfgh4RrTi?= =?us-ascii?Q?TfgEYLxyCEWNUH5BdsdFT0VvZeh3Hx0AQMMYx6ACtZy1h+uOvqGHNTOCydra?= =?us-ascii?Q?U3jSjoDshm6v0vZtTzFj3tZPA5gi0GY4QKqSymtztSi1QvBWDzCssIhwPUi5?= =?us-ascii?Q?rD63M66FoX4sqonNdivYf0sqr2YEtzK0wYJYfAeMkfVbSb4DrBrluTQ/HnHG?= =?us-ascii?Q?VCSdIy3ylIH9eiU3c9LKyPR7jRcV6QcpWuQaHe52JbFh9eSe2KCHNY2YuDCO?= =?us-ascii?Q?VFoigtJ12zn7tQmbiBYU2IvJ8B5pI2E+YrA/anVkyhqSSpQ17CgIYuiPJNyF?= =?us-ascii?Q?GAeoUnK7GOefzmVKzIG0qv7hMSZO49zUuDgsESg7B3DjUdee7V3sHmESlfuc?= =?us-ascii?Q?20CrR7+tsJs4yVL9qk++RGjFEERfbYPNRyVpZAXS3K5h8opTVBialq6Ykupj?= =?us-ascii?Q?rkGAA7vom1bT4auszFSYhX/Pd4d3WiQjfNBYCsIQmpcXfgfDGNfM/guSM/JM?= =?us-ascii?Q?viScYIPM1Cd8iKkOrmum4T7IdOlIV8xSwx3z9ZJ6vtLmENohroO8/2PiQvqX?= =?us-ascii?Q?IvtAEvF8u3nOAzy8p4/7VhBuZ31GlmVWCg4AQT+9Msp2gjEZ2rXi54fJDXdE?= =?us-ascii?Q?hVHrAUhcoDZBUswwTpte/PDV1meu9v27H+s102xbcivguvNeWC750jCmLIhs?= =?us-ascii?Q?/1w5yvXTE1Xrh7ifvLtyUcKFTdw6dusGpr2n57x6CmlJSEIM1RGLNKPOKj+q?= =?us-ascii?Q?Q6AZK5gj2ZSxJyQxJUcr1My1d+FewMo/NBne/s/jXOsMKBACz1K5fCinq8Qc?= =?us-ascii?Q?zJ7yGg39jFTNEapxSXM0bq7GmbL9qVsFo2mVs6+jaSgoQKV6fTSsqAuUsh3x?= =?us-ascii?Q?nbtYet/kwq/bHjS/Ca0LtmfjYY95Gpjr7LSNDpX4XyFQi5em7pz+td2WfysY?= =?us-ascii?Q?WwDfXRV6mzhGEDDnB5vgn1Om7MNw8DhYkO0t+sraXyL0LPckIKZi+azrpspI?= =?us-ascii?Q?1W+NHqkxXQvH4/iogFDVQKeyw5s1dXw=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 718f0f3b-b4fa-48e3-4851-08de4b0bc76d X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:05:10.2430 (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: yx2vdJ1vKWeHO1NMFfmKDDk5dZyH3g7mLZMFjrN4IVqokUdv881E7Qz1FYGIc1hKOByvmH59sRAxY8vtY+J8vg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 Content-Type: text/plain; charset="utf-8" Prefer the new "rx-polarity" and "tx-polarity" properties, and use the vendor specific ones as fallback if the standard description doesn't exist. Signed-off-by: Vladimir Oltean --- v1->v2: - adapt to API change: error code and returned value have been split - bug fix: supported mask of polarities should be BIT(PHY_POL_NORMAL) | BIT(PHY_POL_INVERT) rather than PHY_POL_NORMAL | PHY_POL_INVERT. drivers/net/phy/Kconfig | 1 + drivers/net/phy/air_en8811h.c | 53 +++++++++++++++++++++++++---------- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig index a7ade7b95a2e..7b73332a13d9 100644 --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig @@ -98,6 +98,7 @@ config AS21XXX_PHY =20 config AIR_EN8811H_PHY tristate "Airoha EN8811H 2.5 Gigabit PHY" + select PHY_COMMON_PROPS help Currently supports the Airoha EN8811H PHY. =20 diff --git a/drivers/net/phy/air_en8811h.c b/drivers/net/phy/air_en8811h.c index badd65f0ccee..e890bb2c0aa8 100644 --- a/drivers/net/phy/air_en8811h.c +++ b/drivers/net/phy/air_en8811h.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -966,11 +967,45 @@ static int en8811h_probe(struct phy_device *phydev) return 0; } =20 +static int en8811h_config_serdes_polarity(struct phy_device *phydev) +{ + struct device *dev =3D &phydev->mdio.dev; + unsigned int pol, default_pol; + u32 pbus_value =3D 0; + int ret; + + default_pol =3D PHY_POL_NORMAL; + if (device_property_read_bool(dev, "airoha,pnswap-rx")) + default_pol =3D PHY_POL_INVERT; + + ret =3D phy_get_rx_polarity(dev_fwnode(dev), phy_modes(phydev->interface), + BIT(PHY_POL_NORMAL) | BIT(PHY_POL_INVERT), + default_pol, &pol); + if (ret) + return ret; + if (pol =3D=3D PHY_POL_INVERT) + pbus_value |=3D EN8811H_POLARITY_RX_REVERSE; + + default_pol =3D PHY_POL_NORMAL; + if (device_property_read_bool(dev, "airoha,pnswap-tx")) + default_pol =3D PHY_POL_INVERT; + + ret =3D phy_get_tx_polarity(dev_fwnode(dev), phy_modes(phydev->interface), + BIT(PHY_POL_NORMAL) | BIT(PHY_POL_INVERT), + default_pol, &pol); + if (ret) + return ret; + if (pol =3D=3D PHY_POL_NORMAL) + pbus_value |=3D EN8811H_POLARITY_TX_NORMAL; + + return air_buckpbus_reg_modify(phydev, EN8811H_POLARITY, + EN8811H_POLARITY_RX_REVERSE | + EN8811H_POLARITY_TX_NORMAL, pbus_value); +} + static int en8811h_config_init(struct phy_device *phydev) { struct en8811h_priv *priv =3D phydev->priv; - struct device *dev =3D &phydev->mdio.dev; - u32 pbus_value; int ret; =20 /* If restart happened in .probe(), no need to restart now */ @@ -1003,19 +1038,7 @@ static int en8811h_config_init(struct phy_device *ph= ydev) if (ret < 0) return ret; =20 - /* Serdes polarity */ - pbus_value =3D 0; - if (device_property_read_bool(dev, "airoha,pnswap-rx")) - pbus_value |=3D EN8811H_POLARITY_RX_REVERSE; - else - pbus_value &=3D ~EN8811H_POLARITY_RX_REVERSE; - if (device_property_read_bool(dev, "airoha,pnswap-tx")) - pbus_value &=3D ~EN8811H_POLARITY_TX_NORMAL; - else - pbus_value |=3D EN8811H_POLARITY_TX_NORMAL; - ret =3D air_buckpbus_reg_modify(phydev, EN8811H_POLARITY, - EN8811H_POLARITY_RX_REVERSE | - EN8811H_POLARITY_TX_NORMAL, pbus_value); + ret =3D en8811h_config_serdes_polarity(phydev); if (ret < 0) return ret; =20 --=20 2.34.1 From nobody Sun Feb 8 18:32:00 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013007.outbound.protection.outlook.com [40.107.162.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 C4EF24315A; Sat, 3 Jan 2026 21:05:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474319; cv=fail; b=BSPcRe2ozn6MxAlZXMp8lK3TZgaf7r1blkXe/bSF5WIuE4yTOjAtwc7ZVHAW+JvL47YJ6EBMkrD/nIoUwl5XEVjXn0iE9DzhwWyvLTcPTzGlUTZq0nSZNEX0Ta5crbIlgs4wBAGCmo8TBtu1MYSa3PlAyAoMG44vU+gwClqjK78= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474319; c=relaxed/simple; bh=Wak6JX6rblJmhKnIs1JTu741xPS78Rc755wZi7YvJyE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=UTHyGpRjWOimzyEM7Gz5xw5SrKTBsP/0TOngAuPakLsyhNMFJ6W8PTJ/RjlQuR1/PHzq1C6575PTA+ObbL1Ybg+zkM7I7AKZeTkUZ8aLecuMrL5Xuk7ZZUcXg6mFVplSc6Pg5k4P50M4z85lWdMi0jlGRKLxDUosbq3fwYfqTFk= 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=IR6nAHFA; arc=fail smtp.client-ip=40.107.162.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="IR6nAHFA" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FhB6EEFdlTe/Aw+RtzEWvmqpNQC8qMk/Gu1onu/H0hrVIMWSDkOBJf2SybOOTZ/O87lauTHY2UBabS37MICXiSnghnnUY6RnlHoPiC+6WBNDi3YIHN1wQfwQPaT3zBhDccuK286n5dB9e/d5rDX4FND513BVg4LZLqT2Ly7hO/m0xS3iQchtvigGxwt/CHXPQeS1GFm9iZHQ3J7hQfOnNghFamIDUHSk/1r+UnCnxlEpfUE+EdLj82b465Zd9C6NIjBsfM/NWHuqQNbGToaa8JIpL4YjjAiDQGRJJzjJEQyg2ahJdjE+B8yeVDrXUJVbbMjG9YyQ7b1yKz6Qip96WQ== 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=eIeAibDOJrouTLtCoeUUaT608IsO1zx4n0xeOWaLLzs=; b=T6ekx+519VAjMEYi8mLXLSHFBQboUqZGs+IGlfBdwkEOZQgN9JNuIk5jM75UDKNcoPPOOK/LOd/JINuqNckmKqHSayfAIZHE8PTne6fGwsmmDgmtuXxe9UC9ICo7ZY+XabLWWPuoocX4NIKgfj3nris30acyHCFhPeLMhvAujVqZPStFC3t5iTPDnVbugXBfprHZPMWSft/kRkOFnPChmWuBgkIdAUgol7Xds3Hr/8LRldxbXlTTTklPC3WQgNq6MCPKy4inE031qFS/ysTlCquo6CIu6gyWLJBN92Q8c/ueQDXnXJeoijAYxSXwiXwkqjxRqwMFAQ+5KO6kMbntng== 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=eIeAibDOJrouTLtCoeUUaT608IsO1zx4n0xeOWaLLzs=; b=IR6nAHFAAqYKvKOqHuO6dIOdgw5Y7luLh860jmOxG6TcgP/wh/F5wYXVp5LvrZKKtNElH6AU6NVtFh8oeJsB2tzAdq1XSbAuT4XRuCZ+3XCITo0H3jOjyN7LGHq5TLJk/uvbYli8cYwnThXSBOmEBfHXYCggcm+NYIykz4xRSzIz/Km1A45OgjUDYqQSSyy5fTwy+vvUIpD5aM5s0xBKNDzHKlZS6dKg70O51B3xP3Tpcnd9XTDMJpUhxeW48rAe3vzhKyh1F99hPrSwI0aNpyzBlqsBzIYj1dUzTU9yMe6Z5+bIDWrALPd0d0mA+qVg9tA/RceB8QSOnHyXqOxqQA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:05:13 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:05:13 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 08/10] dt-bindings: net: pcs: mediatek,sgmiisys: deprecate "mediatek,pnswap" Date: Sat, 3 Jan 2026 23:04:01 +0200 Message-Id: <20260103210403.438687-9-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: cf52a6d9-26a0-436b-9213-08de4b0bc92a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?R1PF+cVRMyqEWYAYuiVYDkoEF7F0jPItFGj4xgWLhCo/NsWMP1HqUBfiqW16?= =?us-ascii?Q?6/cZvG5CTm8wN4I9ueaKKO+qjJiGQhTkPnHoXbTSS2gAv+rAw6oZ5U0hzDUh?= =?us-ascii?Q?T+h5A7YIrWPPCjkW5e5eHGztKV7cDrkEgOpfYa0IskG7YFEnwBIWsx8iWHNa?= =?us-ascii?Q?SaxkJ6h1p6Q0Uu36G5NKUKKaWVxcAeBNhTlbi5znHpSfC68ZZSuLBHuu0978?= =?us-ascii?Q?xEeCwvRy2dsbNfKtZENoWGRc84+pBLBy0RNwOPckhmArRiCwzwRXNH7Sq3X6?= =?us-ascii?Q?Fs27LcAmFjCAql8BWTBjHkPzukOqdIR7HmajtA/oCucmNb7HbzU6/rJeVWqs?= =?us-ascii?Q?0sh3YV0M3wT3dFYM7B41GbOl46yyzJmgpkWgl+BvjgTO7c3f7URB0/Ur7K74?= =?us-ascii?Q?M4i6BNJffO6RKC+tuq/c9tWxgqfHIOzYAy/Q0pK0MGCqAuZV3YUjeQgbl6EK?= =?us-ascii?Q?aeuFwz3tfyl1gPFR/+xeu1dOrFJ04r0NNM4IHbDUfwEUqXbZISQY4GSfpjwR?= =?us-ascii?Q?Qk0oENCXYPvhMiRoaihKOS3Gu4YBcuymNOzRUcEviyk1u/dLyKozyMmvAkQl?= =?us-ascii?Q?FP4+afxqD/8jx7DTgl60V7k7Qp8DUrruoddrgskY5P/hMvupjTxky1y781A3?= =?us-ascii?Q?ho1+BepdkI8Fw1SlyPkC69sGCv6MfTlZ0c/B+Hzp2EIx7YMsDuYAJ0l5J5Nq?= =?us-ascii?Q?bfIjk4wNBYEjokogDgBADa3D+PEyENIXuGFXe1WxbAiFk/6UzH9Qet9TEfr9?= =?us-ascii?Q?6cPR2GOJDZR4O2n+fjnSnD4G5RDyBQyzbRveaoNBlIvh2bvulDFj5IivvFev?= =?us-ascii?Q?ZKqWqGZDh7yd/UoaXM1gA6bOvKSgKk8fxoxA998vFcEwJbK4XUVHiAIsan8z?= =?us-ascii?Q?4ixAz+lVAu6Uz8NN2VjkVYGHY1LJFDQpE1Ks95V8PUwpGhSI4DF1wX4ULyyq?= =?us-ascii?Q?frOaO6niXXqGZuJUJew9qaUS/hK0ju/78lsUjr4cbJLvtCkwtr6D9w78lKPp?= =?us-ascii?Q?U40WMBdLpwKaJDFDSKOoFzKPLHVbPFqqMyjLDMrnYHxFgB/vdw4FyRWg71A8?= =?us-ascii?Q?93ciO/kQpe3ZmEPlflSNUVujMjkl6XSmA5u5DmtXv3fUNvCTUN4KECHn6PXI?= =?us-ascii?Q?DaOyMa9NsORXh2gCv7bJFkRME5cjJ5txkX1xlbLngono+lJJSyrofhO1C2Jm?= =?us-ascii?Q?zqj8dwSUyI6H2RMgyh/SO0zJiuFApDzvGmOKPVwCuF61LBD53T2VPrXJbuIG?= =?us-ascii?Q?2zwlb7NdKCTj50bdsXRin0nRarNODgWFfXhSAR92/sUQyHuGD0s0oi6LQlor?= =?us-ascii?Q?DoGdaRatsup2feA1oil0y6q+hYExHEzMDsqlxOyWgz9W9eNoPipU50X5kRff?= =?us-ascii?Q?mgClrZswXJzNdx99JjvswdqTRYQfGIJ0XNV326SrmpruYrQsEFvuvoIfU/Cu?= =?us-ascii?Q?smiLKh9TnlFOjf23w9gn05rdLh8LJQXSsqjNVa2yEHgjFnXSe8lJEDTOFjBo?= =?us-ascii?Q?5JZUcWAR835yY/bHz6nBgqeeNSfSeIyczvQL?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DXitJsmzZqC/2B9q/HV8iPjX1vbZVefFPOCpTbPsxVmZghlZ2zP1PwJx6mit?= =?us-ascii?Q?Mo8Rh4XbYuKufcmLpumWZaHzTGmESK5phMAIDowD4V0gtR2uUp607LSqr2ex?= =?us-ascii?Q?YnhMZn+P4G/MU8GVd7p8N14QNWely9R6eGbncQPG1/R2Mwg3cI7AL2IxgExf?= =?us-ascii?Q?5amJmi3y+1tSlxX+nQ39oRxAms7JT9cv7JBRnFXkIUyccUuAdzHzfqn+aK1q?= =?us-ascii?Q?3aNgKlDLnWPSx9FlYNtwvD3jwEBRPcoOK8mYpaQTqYrabNOPUOcNuUGvvkrD?= =?us-ascii?Q?DJaajld7tg2mynExUMJnYOIzZi5n9XSXwu+aK2+FfP7jNjxUAuYIfUoo+eu3?= =?us-ascii?Q?4MGwBYO0LtQd+bOmM2d8moNz4ukllIsPKi9uLqzHoevtcfIvwo/qiZifXU9v?= =?us-ascii?Q?FOCwsQMEqsdE0Sap9Kwq9zp0wb3iFeKKUyY17j5IHm1I8GmSQvAdwYIFE9q/?= =?us-ascii?Q?QPDdg8ExclM2SaqNMlyxHe9CgNMq4yPMLx5rbsx/SHwRRWHMktb9Vmk0NbvS?= =?us-ascii?Q?GF9j0PdQaV96RdE9S1EuaYKbu4uMp42UoPNEMHh3ARcbnoCeBJZV5W3W1rOr?= =?us-ascii?Q?sXRT2+o3dB+LzEzHahQ6ta9zBCbcieRTDuEE7QxlszIUSFk5OlrsYetBFLeA?= =?us-ascii?Q?KKc3T/rTYCg4Ag1UiDNLtYSAdjC5bCHdTwaNbNKnsoNrkWQqM/31HkbktxBI?= =?us-ascii?Q?/ZNUYJFdxpY2SzLBEQ/4GLajN1EfaOzvcnRoWPEiF1yBbZQIqN9ixLuDa/7H?= =?us-ascii?Q?EP2BsF+ehrNAGxZuYY8JLnuQvwwFego1NHj+XOIKVYV1zhjzZ17RdpDA6Q2e?= =?us-ascii?Q?Pak+MGmPc9+NDbYeIKAgqdXBEWtyg2skalf9vCbcOW/0FMMn3/gbaZG0aPml?= =?us-ascii?Q?6wHuafAixuGQTPElWwcP4KmJo/gv2fkiy6icxBXJvY7bWjkoFnmpftTLLxXK?= =?us-ascii?Q?UAvli7w0FUK3n3haikCs4Cnbxd3tHAhzoGen/UnCs3aD5LW8OT0jT3B0opFQ?= =?us-ascii?Q?T6BBv0R2T/oYDDcThJPb0oLu8TfWehYW4/vLh2o8h4YXNSB+vq4dX15hc983?= =?us-ascii?Q?NMjOVszZqNXIdBsOVu3tBEUoy1YW4JQX2brunG/auVs9XGcpR855zjhLgs0w?= =?us-ascii?Q?DJDOmzNQExbKVx4pafS0yH6hfmcci+It0WGgOID3qArtalaNeMqXAY0nQ0Rw?= =?us-ascii?Q?zX9P4SJ2sDaYfoMBv8z7ynYVfAnlhqt691Kncn9ngTfvkJv6xfFBdhCL6bI+?= =?us-ascii?Q?K5tOeB3a84nxgyGLq1qJU58QVnMl7fOKNOk/i2vTCmeggzxasIIX7QT9n3r6?= =?us-ascii?Q?zMminvLuegEDG061H0c15pr6XRQ5Lyycf74OGqo4DCosMs9U584zJ/mMXZhq?= =?us-ascii?Q?xVtBNktObVzmQWsSGrdca1uf8/MZWX4CP/uM7QK2Re+jJ2TL/XRcLWPPBtCM?= =?us-ascii?Q?MXyMuv1a2p2hCUBO5LHjJ9XWiZywyfzy7nvTVH2x+JbwHjYrCjaAvbP1zqjZ?= =?us-ascii?Q?9x3LIbej9tCNDvayO4bMXqGu2ZuWjG+NCx+r/Egj5LcXNg4NrZTVkbmGtVKd?= =?us-ascii?Q?BSGiMcR+74fRWra8DCV4KY5BmwTUPMFEZelc7Syg8Oz2cmUs2cJJucLL9IgR?= =?us-ascii?Q?WFTCjYusOM5RPybm7niYDRQPIL4W6owxJUXX71LLf3rXM2EbCW+bG+6p/FL8?= =?us-ascii?Q?zST7Nr4jnITKk/jhr7QQwJ+X10Q/A6ENowhySCU1zBfRPmGwN/tApcYtBsyU?= =?us-ascii?Q?Ny7KhS/uNJm+xBVhuh1nqmk2ZDumgbc=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf52a6d9-26a0-436b-9213-08de4b0bc92a X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:05:13.4744 (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: 7OIxoQSHfRpF4TA55FFW+khaDAOEE0KXVRrMTZrmJBq3pxYYo/ZGqAgnlAYJruHUMuh7/D2fH6CN/vNLZ1AS/g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 Content-Type: text/plain; charset="utf-8" Reference the common PHY properties, and update the example to use them. Note that a PCS subnode exists, and it seems a better container of the polarity description than the SGMIISYS node that hosts "mediatek,pnswap". So use that. Signed-off-by: Vladimir Oltean Reviewed-by: Rob Herring (Arm) --- v1->v2: none .../devicetree/bindings/net/pcs/mediatek,sgmiisys.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/net/pcs/mediatek,sgmiisys.ya= ml b/Documentation/devicetree/bindings/net/pcs/mediatek,sgmiisys.yaml index 1bacc0eeff75..b8478416f8ef 100644 --- a/Documentation/devicetree/bindings/net/pcs/mediatek,sgmiisys.yaml +++ b/Documentation/devicetree/bindings/net/pcs/mediatek,sgmiisys.yaml @@ -39,12 +39,17 @@ properties: const: 1 =20 mediatek,pnswap: - description: Invert polarity of the SGMII data lanes + description: + Invert polarity of the SGMII data lanes. + This property is deprecated, for details please refer to + Documentation/devicetree/bindings/phy/phy-common-props.yaml. type: boolean + deprecated: true =20 pcs: type: object description: MediaTek LynxI HSGMII PCS + $ref: /schemas/phy/phy-common-props.yaml# properties: compatible: const: mediatek,mt7988-sgmii --=20 2.34.1 From nobody Sun Feb 8 18:32:00 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013007.outbound.protection.outlook.com [40.107.162.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 263BB2BE647; Sat, 3 Jan 2026 21:05:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474322; cv=fail; b=uLWPenIJ+X1SHCGIpev4/zh5Ia7dIV3CZdfCPDnd0OXZkPtRlTocQkc/WLySmO6JDVu1V3r/sJuqoamXcJpFaKsmoHU+WRGbCEcnTZ4S3f7smuWV1iSl3QobwGjSYaoIXkc2X/DwQv1MMHR1mbdP0VOx0W2eLap8o/ZGZ+bVXBI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474322; c=relaxed/simple; bh=LBf+H3C/42fgUJIhRDhMWcdFmGXBBX+OnJLl6hBEI/0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=NBxV+eeocWXUZWoe2j24fn2P/yCUdDSplPZ3tiGsF5bCt5kJV73vVqBd0CxjdGxN4fmJO5rbiPYhXXwEKP0nBFlzfuAqKn+gMwZtsQ5YoXUHZhT7n4OaHmVMR7xe2mja68ZtXw2tTbxWvidRgjzUoOVFuZGv1d4evlPo7pJG54o= 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=BkxQV/CA; arc=fail smtp.client-ip=40.107.162.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="BkxQV/CA" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hhZkYCPtaEEQchQYK6EZbyeSnC+hV6n2yoc1iLnlEgOZ45tV+jjuD1YRf4lyJec9PTceAt4YzalZ7+lMDbsSfZD+sgsSd0BLgnN8pebxZFY+EzVNWXJFQAqJIZQyj9k+VW3j1WLnspSDdd2aaq9N8A+LJ9Gr4mJL1EvwIbhRpUBM5wtTKr9/1Kj0RRDFqyEhx9fHdoxkmD/+K0xCGabtgfqq2WfzjKbRegJ+qfm9e6se/7lP3bi8yE8qDr3vPdZ6K2YL0a2CGB+qcjCS70EVbG9Qbt1IsX76Ta6n66PbBakCs+dlvVu7gdzJCYEjBHPh5Z+Jh7dUKt/nc7ud30NDXQ== 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=5OBrg0q4GY/Ef2cBVdLYxFZPGBub/nDOAs/E2DriYUc=; b=sa6hNYeTz02kmr10xVlPurh2IkLV3qgBL8y9QI1YZ+SYaq8WT0cjrjjEsi7kMVLaQHRLUR0f2hKHVCWKi3fDAhcHilBRHpFjUDZHui84VFOZ43z3PBKmsP8X/4u8FERVjJX2JsNLBUv623RkQQFm58tP3sOhl8D47ZuyFs3hZ5k70bDcTOYANEZ2vP4D30bx7hYc29H8MDxVcOWlheOy91BFGjW+yK01KPGYCzcDs3Y9/Oow7p5P3C/plLlp3yVd2nLRMsUGQSACMwmP7B917LoQhA8MVoiz1D/WgfYtjGMmUisu0+DL9Pzcv7RmwCAK8YsH1S3UCu4mgXZZAfEUiw== 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=5OBrg0q4GY/Ef2cBVdLYxFZPGBub/nDOAs/E2DriYUc=; b=BkxQV/CANZffjtVfQDIbLkjF9d5TyPXGP2RKTKjNYeBpdcvSr2Hec8eQy5zsIjyVORGb3JgOX3JHvsLe3MUP+QZHJa1v0XF10Etx8eQeLnPMtJsAbBO5fD9yyO9/Ck5vKVo3KRVoUVBHQwMrJC2YaZuA9YqUsctj6+m7XSL6baY2dEGW/B3DDuDMMrxw4sprhDD46dIn7pr6qi3vsSyl3I08/kegXsKgkL/lhHlfRVyZ2Xh1BiutRuv8JagBZvB8Lsji+IGUWei/TgS1s+CpBN0wYXslC6WdzwlRx0kzSQ+NsK7riYq3bb4btohNMMiclalwJy+aEMt5VmcvMEVosg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:05:16 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:05:16 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 09/10] net: pcs: pcs-mtk-lynxi: pass SGMIISYS OF node to PCS Date: Sat, 3 Jan 2026 23:04:02 +0200 Message-Id: <20260103210403.438687-10-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: af09625d-2b15-4abb-3a4a-08de4b0bcb62 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/cIXJxM94POBvtC8AAirwjFveL9jivwZU2ZbG4CmyRQ6nnnPPbDlU/+90DsF?= =?us-ascii?Q?COL7EcWZFp3o5y3BfywjI0qaG+oocS9TM/4FFJ9kpeLMmmUo8HMTTGaMnFgP?= =?us-ascii?Q?JaCVBk6P+WC+OYLZ86FDON0/e1MAWAjb6nxkPnZ0IvYJhTnsqd+hamUBewDM?= =?us-ascii?Q?SfBCuHH5rm/tBgHO8leNJCxx2rFmoSa78BSlzpOCrsM9W64JXjowtEXEptfT?= =?us-ascii?Q?y9CtgMEn11a1TOFk7WGI9Ugi+rRgY/DQ8LQiErtHWYkgqGp1xEOTqM8preWD?= =?us-ascii?Q?WoDpxEMmrnCYPDaeZvZzwCAUBiRbysp/CN2DfPxOioLf1DdMHu504Aon8brd?= =?us-ascii?Q?OGT7mc8b4VG/cOXVpXzhxFWoIr91DHvvfC61ct9/OymbTr+vnFZ/QR23OCoe?= =?us-ascii?Q?VbvsAk1ZIMAkXnpc0lPV8t6OCjpbPa5LL6J9t5AaSwBDBwgl8Qo9Q8jPk63X?= =?us-ascii?Q?lUy7Q2lupltVKFiESy/s6dANtt7nb/lQu6uk5HazXhjrLrbRtQhASxXIzbnj?= =?us-ascii?Q?W1qF2BIs6eaMjfCrvpGovFLdUYzMU8dTdOk7a/XPoU5RFeseA2BuzClJj6rU?= =?us-ascii?Q?B+e8biGoho1Da2r2n/fLu1Pzw8nzjPUZf02VCB9WoYUv2tKKp0fZ7aP9rmRd?= =?us-ascii?Q?L1zBcsTS5k24VvxZQuJ+84KXjtIjp6qsJFv3ZaXiiONEtMkhcMFn4J3vPtDV?= =?us-ascii?Q?GMdC5l86HW2AJlmBKHTNeb4+9tC3BKvW+Cx5yhbeZNkgq+1JXO9V1OJiVj1y?= =?us-ascii?Q?SVLlvVxExuCBB1LBIOkKEjDU9Pt8wZpgMR3f/tZmj5wdnfLOE2uWBCSsSFUP?= =?us-ascii?Q?BfVDSpXiDjfH1R4/TA7HPimmIvPI8EZdFQzH/m6/ciNL3HEfvorP6qQbBBJH?= =?us-ascii?Q?wUceoJ2jxe9QVR87Lby0roFRNFt7Uq8m1diTMKvETS7eQQme+UlTSRQ1V9lj?= =?us-ascii?Q?vAPjqPJtLTy+3IIfBZqfNF3b3V8qvOzJj547zP02xlVqhbPTikOZDyIDWAWo?= =?us-ascii?Q?H8YSJp6CEwGNrzgGwpK7JdpD8tIcNPYLAG1r51JBrYxK6piC2xPLjGdi+828?= =?us-ascii?Q?r9Y1UVWfWPX4MWsj08dxTK75UCn85PqaFchzA3yDCtGDe2P8axDONdA3FiXn?= =?us-ascii?Q?H+p64bQnjbeqZGbxpHa+558R1XhtYsxwnO62bNWIhB02CE0ECniR/Q/CJUNV?= =?us-ascii?Q?FeeP08bDTmKnvCHhEJKavvSOfQLO7ZGBRFwEaUfxGLqJ4q1SipjXQSAeLJu6?= =?us-ascii?Q?3lFD2ZMNwjMfF5HD6kOXSgcJMRzqH0tbwt8lLCzDOVIKH7zHSCnt6DVsKzJc?= =?us-ascii?Q?LCqpDE6Tn0/ej6Z0w10X1Yy85zWDK5Zt9ZJQhapvtYxKTa76hM28l6VWIWXs?= =?us-ascii?Q?CEtYvbz5gKIHtMzgMHqwp9/qEGNxf++yYQMyt2l+Tqq4ZH/oxZ5sz60sN+Eq?= =?us-ascii?Q?fkQn0Mp3CujNo6lsyxE0ts8UdxeuLGFM3hY34/R8QPrGUxdFZJoXAVutZHVb?= =?us-ascii?Q?jUdAhDM3jI2At41Kg/J0Gmx1ZYd1h5EunUR8?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?d7o/ScoecqMM/q+5geFxirnxnbZpByxGU+oA0bkNlQZ7Bm3SlS64GpY8ZRyE?= =?us-ascii?Q?uorJE/eLyJY42yQdVyuCEd+66DVV5aH0YSvKmhiVCjI2eIpFKgOynCI4xcdM?= =?us-ascii?Q?nI+PwswZb1RA+omA/ca7+slyky+wE8oCjZkftfRwTLQjsiQyT2II7jZvskjT?= =?us-ascii?Q?TgFIs2gWFq04mLEt+r5K5MD/fvNNNaACJSFKvGCTgYEFCp7Jv99HIBvcMzgp?= =?us-ascii?Q?mxVk1u3PErr4UaYXdUYEIs3Wxa0tyBB/uaKezbXS/LXNYVKluFK964VY7d6J?= =?us-ascii?Q?8mGNmNIM8tL9rZ7v6w3v+YcoAUK1xeWRXfi+KwDcRhIhmAvcYw+mCB6cTc5H?= =?us-ascii?Q?wG63xdO6wLhbFzpJAHMWQaM/TPcMEIfPdpijXUv0/3kd1N0k53gVFfrbofQE?= =?us-ascii?Q?qIaO2ISmoMs6SlZtpEG3DfUP0/16CZB9HU7/rULFwar9kBKZMQlFtzDLhUBm?= =?us-ascii?Q?QNkEuWZLbWJQCK97e3lDrXXqRyr4aQi1tkz0nmjjLlTSgJ8sZrvaMCtvIyqX?= =?us-ascii?Q?ddoXe/uVRakaYbI7vTm31lr1Xik7wlFpUspAqEm6kWxp21zpIti0ftW8PNkz?= =?us-ascii?Q?emTeNAZNGK77qv7t5X8M3vUvMumQ4naTXSGjTmdIAoLSzMbsU9hyeaH+yUhh?= =?us-ascii?Q?fiFrZ2Y1/W2gZD/UUr2VmwT4ia9pn+JkpFK15lijbOb2wxpqyVouLqnuEhQ8?= =?us-ascii?Q?ObURjvz6X89TRgnWzHRfGqWhaFXxPsBRdFHqoY5ZDYqTXmL1/ocJWRbVfY1A?= =?us-ascii?Q?iAZgm1citSrTK8y0FJQc+6IZPaAFo/cbtt1Aa6Yk5zT/KZtLORLloxJOVV1w?= =?us-ascii?Q?SOLdQPbUvdDES1LI9cTzZsMnHUrWjnjvgvbvjCqnkbP674Qerpm7SU3RARhB?= =?us-ascii?Q?DublxPKuJkJlR/aGHGxtq2Nl95wlo7cM46dLdSDYemvQG1g/IpsUjApkqTQQ?= =?us-ascii?Q?Kh3cSkknOT2PZhFUvFh8Hg4cCf5UVkeZx9paATVbYd8BdfkuskSG2lVxv2rE?= =?us-ascii?Q?7eb6u9e9Hk8fLf3HCvjXCTvdAlMD/aljEPgc3/kq1a5dxDKbNyheywKdJ2eL?= =?us-ascii?Q?+CCY7vFIgY2iQ3p6xQXcEEF2YX9ox/AS9aHQN2a8eGv5xeLBiw2/WZU+eTaf?= =?us-ascii?Q?GyGX0kU82p6TzYbIByrnr5Q5pCY1NCWI1JeJPpw8SUmb4kWQuW9cBovqPY/G?= =?us-ascii?Q?wsovSkuAWO0xz3gAy353RAp5S+fZSqDfFsENCnNS7oPuJPmMPyB3jjzf+E1j?= =?us-ascii?Q?g5GVDerk35qzkbLu8iNO2UDVhcotHAeKK99NHRAmWOE5mMyCKoWJpdH3siOv?= =?us-ascii?Q?L8QaJvqflQCRnZ7TwAyrkONT0Y/U0kQGZcBiXhIwUF2vyxcD8geN7A3ahZWV?= =?us-ascii?Q?vrxgxQvwv+6s4gggi07utIC2FBerKRYFF32Kd4WpoINRbSIBozwPWg88wFtf?= =?us-ascii?Q?DxEDa63qDyFfLQTz/bnKxt8T5chhAh4eoSpvycYheEePGzsRcIypjSGMScnL?= =?us-ascii?Q?4Hwi3HzuI36GcsVpbKfaQbWHuf/Tk0ea2JDP6gChPkiZis4Dgk+/Sryhatz3?= =?us-ascii?Q?M4FhQ6aq/6+yaypLII2vT0qmUYAolhvaUDml9L+vK4ZhZv2iThlmu+/M+kmo?= =?us-ascii?Q?PMpoHq7fAG5RX8nizXKSgXajHlNhBxQ594Pnj4ngqQjdut0e5VE4b91dYWUn?= =?us-ascii?Q?Ac8Zr36abRJNp8ZQG3GEapmYZOy+dVJCyX4tQagL4aJsDvTkQngAcaG+2CEW?= =?us-ascii?Q?nLsYeo2gWHzuicVv1wznL1SHApb0yJw=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: af09625d-2b15-4abb-3a4a-08de4b0bcb62 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:05:16.8649 (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: vdbSaHlZDx299VtS8WrBPn5FX2QZrk+qJ6C+Zh6l242e1AZN52sxoXhbCZy1sk6xxNmB6/TvMw9z16jT3u+S8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 Content-Type: text/plain; charset="utf-8" The Mediatek LynxI PCS is used from the MT7530 DSA driver (where it does not have an OF presence) and from mtk_eth_soc, where it does (Documentation/devicetree/bindings/net/pcs/mediatek,sgmiisys.yaml informs of a combined clock provider + SGMII PCS "SGMIISYS" syscon block). Currently, mtk_eth_soc parses the SGMIISYS OF node for the "mediatek,pnswap" property and sets a bit in the "flags" argument of mtk_pcs_lynxi_create() if set. I'd like to deprecate "mediatek,pnswap" in favour of a property which takes the current phy-mode into consideration. But this is only known at mtk_pcs_lynxi_config() time, and not known at mtk_pcs_lynxi_create(), when the SGMIISYS OF node is parsed. To achieve that, we must pass the OF node of the PCS, if it exists, to mtk_pcs_lynxi_create(), and let the PCS take a reference on it and handle property parsing whenever it wants. Use the fwnode API which is more general than OF (in case we ever need to describe the PCS using some other format). This API should be NULL tolerant, so add no particular tests for the mt7530 case. Signed-off-by: Vladimir Oltean --- v1->v2: patch is new drivers/net/dsa/mt7530-mdio.c | 4 ++-- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 19 ++++++++----------- drivers/net/pcs/pcs-mtk-lynxi.c | 15 ++++++++++----- include/linux/pcs/pcs-mtk-lynxi.h | 5 ++--- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/drivers/net/dsa/mt7530-mdio.c b/drivers/net/dsa/mt7530-mdio.c index 0286a6cecb6f..11ea924a9f35 100644 --- a/drivers/net/dsa/mt7530-mdio.c +++ b/drivers/net/dsa/mt7530-mdio.c @@ -113,8 +113,8 @@ mt7531_create_sgmii(struct mt7530_priv *priv) ret =3D PTR_ERR(regmap); break; } - pcs =3D mtk_pcs_lynxi_create(priv->dev, regmap, - MT7531_PHYA_CTRL_SIGNAL3, 0); + pcs =3D mtk_pcs_lynxi_create(priv->dev, NULL, regmap, + MT7531_PHYA_CTRL_SIGNAL3); if (!pcs) { ret =3D -ENXIO; break; diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethe= rnet/mediatek/mtk_eth_soc.c index e68997a29191..8534579b8470 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -4991,7 +4991,6 @@ static int mtk_sgmii_init(struct mtk_eth *eth) { struct device_node *np; struct regmap *regmap; - u32 flags; int i; =20 for (i =3D 0; i < MTK_MAX_DEVS; i++) { @@ -5000,18 +4999,16 @@ static int mtk_sgmii_init(struct mtk_eth *eth) break; =20 regmap =3D syscon_node_to_regmap(np); - flags =3D 0; - if (of_property_read_bool(np, "mediatek,pnswap")) - flags |=3D MTK_SGMII_FLAG_PN_SWAP; - - of_node_put(np); - - if (IS_ERR(regmap)) + if (IS_ERR(regmap)) { + of_node_put(np); return PTR_ERR(regmap); + } =20 - eth->sgmii_pcs[i] =3D mtk_pcs_lynxi_create(eth->dev, regmap, - eth->soc->ana_rgc3, - flags); + eth->sgmii_pcs[i] =3D mtk_pcs_lynxi_create(eth->dev, + of_fwnode_handle(np), + regmap, + eth->soc->ana_rgc3); + of_node_put(np); } =20 return 0; diff --git a/drivers/net/pcs/pcs-mtk-lynxi.c b/drivers/net/pcs/pcs-mtk-lynx= i.c index 149ddf51d785..7f719da5812e 100644 --- a/drivers/net/pcs/pcs-mtk-lynxi.c +++ b/drivers/net/pcs/pcs-mtk-lynxi.c @@ -81,6 +81,7 @@ struct mtk_pcs_lynxi { phy_interface_t interface; struct phylink_pcs pcs; u32 flags; + struct fwnode_handle *fwnode; }; =20 static struct mtk_pcs_lynxi *pcs_to_mtk_pcs_lynxi(struct phylink_pcs *pcs) @@ -168,7 +169,7 @@ static int mtk_pcs_lynxi_config(struct phylink_pcs *pcs= , unsigned int neg_mode, regmap_set_bits(mpcs->regmap, SGMSYS_RESERVED_0, SGMII_SW_RESET); =20 - if (mpcs->flags & MTK_SGMII_FLAG_PN_SWAP) + if (fwnode_property_read_bool(mpcs->fwnode, "mediatek,pnswap")) regmap_update_bits(mpcs->regmap, SGMSYS_QPHY_WRAP_CTRL, SGMII_PN_SWAP_MASK, SGMII_PN_SWAP_TX_RX); @@ -268,8 +269,8 @@ static const struct phylink_pcs_ops mtk_pcs_lynxi_ops = =3D { }; =20 struct phylink_pcs *mtk_pcs_lynxi_create(struct device *dev, - struct regmap *regmap, u32 ana_rgc3, - u32 flags) + struct fwnode_handle *fwnode, + struct regmap *regmap, u32 ana_rgc3) { struct mtk_pcs_lynxi *mpcs; u32 id, ver; @@ -303,10 +304,10 @@ struct phylink_pcs *mtk_pcs_lynxi_create(struct devic= e *dev, =20 mpcs->ana_rgc3 =3D ana_rgc3; mpcs->regmap =3D regmap; - mpcs->flags =3D flags; mpcs->pcs.ops =3D &mtk_pcs_lynxi_ops; mpcs->pcs.poll =3D true; mpcs->interface =3D PHY_INTERFACE_MODE_NA; + mpcs->fwnode =3D fwnode_handle_get(fwnode); =20 __set_bit(PHY_INTERFACE_MODE_SGMII, mpcs->pcs.supported_interfaces); __set_bit(PHY_INTERFACE_MODE_1000BASEX, mpcs->pcs.supported_interfaces); @@ -318,10 +319,14 @@ EXPORT_SYMBOL(mtk_pcs_lynxi_create); =20 void mtk_pcs_lynxi_destroy(struct phylink_pcs *pcs) { + struct mtk_pcs_lynxi *mpcs; + if (!pcs) return; =20 - kfree(pcs_to_mtk_pcs_lynxi(pcs)); + mpcs =3D pcs_to_mtk_pcs_lynxi(pcs); + fwnode_handle_put(mpcs->fwnode); + kfree(mpcs); } EXPORT_SYMBOL(mtk_pcs_lynxi_destroy); =20 diff --git a/include/linux/pcs/pcs-mtk-lynxi.h b/include/linux/pcs/pcs-mtk-= lynxi.h index be3b4ab32f4a..1bd4a27a8898 100644 --- a/include/linux/pcs/pcs-mtk-lynxi.h +++ b/include/linux/pcs/pcs-mtk-lynxi.h @@ -5,9 +5,8 @@ #include #include =20 -#define MTK_SGMII_FLAG_PN_SWAP BIT(0) struct phylink_pcs *mtk_pcs_lynxi_create(struct device *dev, - struct regmap *regmap, - u32 ana_rgc3, u32 flags); + struct fwnode_handle *fwnode, + struct regmap *regmap, u32 ana_rgc3); void mtk_pcs_lynxi_destroy(struct phylink_pcs *pcs); #endif --=20 2.34.1 From nobody Sun Feb 8 18:32:00 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013007.outbound.protection.outlook.com [40.107.162.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 0197B2BF3F4; Sat, 3 Jan 2026 21:05:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474325; cv=fail; b=UjMsIwJIVALC0CxsrcIjeQCRKCa9GlXvrfsf7LtLbq05J+MKmD3SfpR7ct/DeBLKeicyCkAlg3ErTjoqIi38+mnPDNVGaEojMuG6XOqT/+og4oJveTMTWtRF417ttjdZgbu9O48zMiaJ60fnucBlT8lEWnQ2izvzHmF5Bw9ueTQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767474325; c=relaxed/simple; bh=tp3vALWMvb0nBVtyAhFzCyA+Eo3jyZN8vQ2ZmPq05I8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=hDtPN5kD5zCjEJuMHFZiMHyfAY/NBeXHrgvvtvbzW4HJqPBMqs7dKMtmRbo0dNWYNBg4wYr0/1OcSniXMf0609RZ+j9E8HYdhBsoXb5q8xevzkOx+9jI4HgVXTBvm77SkipXKOR1JwPVTI4ACpP85MbC4sskVaN7NEYbHwadMOI= 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=IiXQxnAV; arc=fail smtp.client-ip=40.107.162.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="IiXQxnAV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yQ8S0UY6AJoeL1PcvC95nn+IViLdjySLux7sGnhICYRR/LtwTAVYXJG8d68N5VzCPhOHkryZJ5T35PNrF7HYTB4SZT/xTVmN89f/lFIPv57/D/qtxRWFpzLgkDb9yqskxtq/3n7NKhrsOQERc4CISV2D/j9jNEcjXwSsRjm4e9Unm+ul8s3ARYbYbV1gv5eYU+nM0u3fahdM9nzGTIxqTwNVhqDFedYngsqRmYZk215pS6PsDjcWgRwfzvyhE6h2HJnpKKtagTgqjGFtBv5Lex1G5mOHyQerC2je2IycMUzFXS0IuBv9nHm34S2QweQsxzLLyRxpg7LWbgpxIelumw== 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=+Eg89aQ9YDc9eStp3LDIEe/pefNUfKptlKojX+qfGOE=; b=bafORXPYgD8E3IbT0xs2Bvd95ZrL6NqVfIXCTKbOefWUI7gEdlmNh+D0PXVlgdC2y1qQew8ScL4XQ1j6OPbEREKjn39pvUMjX52W2Ejm4wVUkCPQytTooWIZgb68xDE6QVu1/SwWgLivjbXN3AA7gq+7xdtgs27nRTXDi0dJIP2bdK8fq41KPH0zNJ1B8KzudfrscA7FK6Ablmo7ExxioL0vpDnZAk/qzWANppMtMuiMqRYAQ+ealbh7lH9gUqbsWcJGFBGGxf3fAExTWe8wnKeqv/NNpJQTxvhabKCn8qd0MP0cKqaRmS40OAUsV2EPMA3QTBn9klNDmWu5Roy/bQ== 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=+Eg89aQ9YDc9eStp3LDIEe/pefNUfKptlKojX+qfGOE=; b=IiXQxnAVLvCUDG/hBOKgyVr83sVJ0GojEzC1Y8F448BtSfiyjo2Z8gkemG9FoWZIhyJ9gAAKulKY9pqEYLze3qGuMWEG+qcgFDfeIr6pZ84lnTgHb145FenRKcC1yaFbmirsUr3cShg2I6wlcBv+J+A5t4kNQgSC0tmzYdOt8Wpfwr50ndFq5h3hXvnh//O9XEK+H64ppWWWfqxbeTk6pQrkfqpOqV+6YPLRZYwoMmCeq5nLiN3dvAn6Wphr60TK2bFMhRt/nzSdGrA8xrt/ePxMqqoI0SL49v+eOzLF70hKEs+yluGuS9gPBViUzdOfCiIqZr7iWhh8YfyzfahRKw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) by AS8PR04MB8088.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Sat, 3 Jan 2026 21:05:21 +0000 Received: from DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d]) by DU2PR04MB8584.eurprd04.prod.outlook.com ([fe80::3f9d:4a01:f53c:952d%3]) with mapi id 15.20.9456.013; Sat, 3 Jan 2026 21:05:21 +0000 From: Vladimir Oltean To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-phy@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Daniel Golle , Horatiu Vultur , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul , Neil Armstrong , Matthias Brugger , AngeloGioacchino Del Regno , Eric Woudstra , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Lee Jones , Patrice Chotard Subject: [PATCH v2 net-next 10/10] net: pcs: pcs-mtk-lynxi: deprecate "mediatek,pnswap" Date: Sat, 3 Jan 2026 23:04:03 +0200 Message-Id: <20260103210403.438687-11-vladimir.oltean@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260103210403.438687-1-vladimir.oltean@nxp.com> References: <20260103210403.438687-1-vladimir.oltean@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P195CA0027.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::16) To DU2PR04MB8584.eurprd04.prod.outlook.com (2603:10a6:10:2db::24) 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: DU2PR04MB8584:EE_|AS8PR04MB8088:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e3f67d3-5518-455b-577e-08de4b0bcd24 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|7416014|52116014|376014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VSkvHjXzV7o2JOAEpIGg70AqdYSVk5fMT6zrRDKpAuXVGGUA0mtNwS1LPGAe?= =?us-ascii?Q?V5fbulgwjb71wZL0eGpBj9gmr1Uxf4FF90Uf2h5CAE834+D66aSeXVxIyYHN?= =?us-ascii?Q?RgkywFtWmJQrVDgPQpD4FVXJgJAdaucL7N0Tv4TdZyugVtVQOg678Y7P0P+s?= =?us-ascii?Q?2hKAwlWFETokfVoP0TA17ejgtJhMTzEiIbPFCsnCFVzFVObbKMNN4P2jKr63?= =?us-ascii?Q?asHZSNq34MRV5WxyFFraqRta2rIAaOVG4x6fvfYnrZTok1Ky8jbGIJmvmrd/?= =?us-ascii?Q?OCqaYV7CKug7CeyBvzLOie+MdMJwVUwoqXQ2zD7akGljj4OQwZFsaURiLneD?= =?us-ascii?Q?NdGSPv8HR1Yk6VWh1hdPiuY5NgFe7DBs397QmwziWM+MJPAjBi333qShDGlb?= =?us-ascii?Q?b2kOP0hVOxXwgKKJ3dIYLS9u9pykOQWHmGVxITotGgh3tZxOk7ePOhuDN0me?= =?us-ascii?Q?3Csk4ePX9V8y+QpeqTLMKQSCtXmYrQTVJAtFScISja0WAqiQs00YhTOiUOrR?= =?us-ascii?Q?bEuQQswUek6KlmC9NI/ppV8/JfaSQuHNksQ5L9CAJAVvrgxtoX5tkUniBi6g?= =?us-ascii?Q?H2/XiDeqh6Mb88BTrn4nEcZZ7u0DnzgoyMKiQvpJ2yA/YE5ZhVVf5gltDU9e?= =?us-ascii?Q?AjlXLGLoVRWnFm8jTTWje/bsS14S63N1b5L5JcfotHAs2/Gnf5qkeO1CutLx?= =?us-ascii?Q?4cR6KY874U24Gf11jUfDKJMqwlUyRkxx3Rz5AIcEdOdscwD+iWqXV1nXq9W/?= =?us-ascii?Q?iUDmKUfzLRqRjOOFaaqfto4V4d5rBYxI04H4udmnBG0GCfd43MBBrow6s/2L?= =?us-ascii?Q?nOkNER09kNr0rKaq5GTc4ONhLxJz9RuDTX9iyMkx65TI5fxrnmHOMN30/6l6?= =?us-ascii?Q?c5IqF9LM7uovTUPLmHmiijV4UDmCmBFh1sgfDwzkgkFOrfkGMDhGcD7x0yxW?= =?us-ascii?Q?lIcn/RmYcZUnIF3iVPs66poxCKzcn5ND+yufBMjKnAbnktxYP2/aWgqH2ftg?= =?us-ascii?Q?8F83w53dahto6Qvi5hEjIDRbdGN/rGFQE+SxoP6RHP/p1ugzp5lP59Iv7XfQ?= =?us-ascii?Q?3wanxyHxDS8F6SgY9NCV05RhVcvxVcykYYsEw5hwdWZCSqMH8dSoDoTQORlg?= =?us-ascii?Q?27MZ4Qu4PRqcuBduo2jLYBIQTWGd8zDov1BHjHcOBDIAzhPLabkPzRf1XpSs?= =?us-ascii?Q?OSbsjLT2kND/AlIuo2sjaQL8pIoF03IwSi1Y89hx7vYLEro/lJSqSX0Wh8xd?= =?us-ascii?Q?tgjaTIKtCgr3gjmPhUmwrqBVe/HpKgE+x4SFRqtG3XW3BleqbDx7f0kvV4eE?= =?us-ascii?Q?03nFVWaP3M0qCcAhaYKYWQ+95P4+pV3MU53fFOVGAUnX73UzrnZKbIQMx881?= =?us-ascii?Q?cmqmQ2ffK0InPp2X+M+kyECnLy8kUvnAhpXW4diycVL64JrbBEqfRn2bZRSh?= =?us-ascii?Q?QPleEN265nx54dSiS6tBWfhZZEpORmFwGfG3gTiN/1l40V+dUV2jmwkYbjT+?= =?us-ascii?Q?MMRumKV8hJzdwAak1nbaJ1mtDqbaLa6nmwkI?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8584.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(7416014)(52116014)(376014)(1800799024)(366016)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lf+o/qfk0EWFeHX0AfhD72XvAl5HJxTJmHwWNIrNj7zqEonF83Ph4KVbJ3Ab?= =?us-ascii?Q?frlVo9OEfSWbGPm/MMZWMvn+qqk5szzJu6361Yfuvd7nYImMoS1GDaClHI9w?= =?us-ascii?Q?jYbrt7muud7jJrjeu1QE1lmELgKdqwOD7qWMq2bdH0dx5+5F6snCMWqAbsc4?= =?us-ascii?Q?Oed2pq/Ags298o3lA7KVz8u01YqKhv+rbJUsqif/jUd5i/AOylLCwSTEhsmT?= =?us-ascii?Q?63lNZJwXYBBR5+7OsoZSKx7x7qhTxJMPgtFKwY0EoSqNZ5Tqg1FgutkHhm+v?= =?us-ascii?Q?i23qyzz2un1Uj0i0Rp1gvU95uwRxJb8cGn3oGTriC8CuxTHFhB+o3EHqBaFZ?= =?us-ascii?Q?iRTYEDmHk/+BdT7TgE4HScb3/UlxiVJrGNKotJAxwuyYXHvrsndfpj1LPMj8?= =?us-ascii?Q?AjnZ7XinddpQ7mUdxDf5FVrTyFebAfSTsQKT0Ii1eHXh/aSx3TWwAqjj1jSK?= =?us-ascii?Q?P7z9zZiYl0Q1m+RHZ1TzAAbF3g7kLRZwYnzBntZZ5U0nFayV1mKz8c14MkfW?= =?us-ascii?Q?cqcGLPnTwyVtr/66U5G4yr364FQBmQP6OZQkXfu3yJqyOjGSXa+Gaf3A22ZA?= =?us-ascii?Q?UeWbpzTpa+mDP72Aku6xvaHfdXwO2iBujuCxTPhYkI/+YFVDGkdgBBTDETp7?= =?us-ascii?Q?eqlFlYiFL2v/wTg8SMESbrd4KcLg/V2Q/cdYQ2RPSFd0Xinq6jOPXV8WPVoE?= =?us-ascii?Q?Jo9HdgKlsqYVIy+XV09eDo2zIWigbiz3n9E0pGKsU6oclnauOHPWIAoCXuf2?= =?us-ascii?Q?6mwvt4bM6VSQvZQ8bZoKujYWp3f8MtNoxOK2rdM9YjwcfpO3xRG5YL+U9dXi?= =?us-ascii?Q?cShbLMypd7G9+z+Gi3BF9FhyMjRJPdg/DeIoKIBsZUe3XXT3FF6b93/aKukG?= =?us-ascii?Q?pJDpDYfmWeN0b/enV05QU/RSi9CgH2EczexzAlUagOPJgx73CfPv8OZ+33XA?= =?us-ascii?Q?zoEvB3lb4f2nqwXjUQt3j+39pKcKBFrt7dGT3+Dz5zGq1Hd9dS3t2TWxtQcS?= =?us-ascii?Q?5DpyiBUZqYuFMW/pR9WawLoFU1b9Vfr2AxaKu1670+sadh8SAi9+unBpQe9D?= =?us-ascii?Q?PP96E6cQGUCAg09cveVunsJd5I84N0F0lDQuYaMwfxZYw/t0UyKyXnrrsG4u?= =?us-ascii?Q?GLdKxUu78S8emv05kWyYKJuem71qCpmY+fq3qsVHSIlqMN1w33PhSrovAQ5S?= =?us-ascii?Q?sVBkPmpGvTXNL3n7Chryo6RXzASW8bQUsmo07O7QqfvTEZFceOsj3kGnUkIc?= =?us-ascii?Q?1YnXJJMcr2aahNoA1VaIAKkSZaccbTwQMNyoMmwUEtvMt87KDqz5x+pbrh+Q?= =?us-ascii?Q?n9S8d79ZopGBo/gT+XhPUfq6aax7nriuISpEFRUp8GGHuAVw/P5COWCBoEzb?= =?us-ascii?Q?y0rSmxFxBqwsRhryEN0IO7RbOWt3RqyRDVyTTTshAbi4D/CvzulqqSVIBhZb?= =?us-ascii?Q?2+Tp5pauoZn37KfM7eXZlaID8iSvuMIlwzoHYvC7tA0nEtTxWbdECQ/pKUDx?= =?us-ascii?Q?xlY7eNOgcRTAXSmHF5nP108tx4x9cIQ0pbgdIWsQ9y1xQMlNZ8MItAGodQ4H?= =?us-ascii?Q?BZ/qgfS9rsnytNSLZ4bpD+rCXe+iUnBG+Q1iEIwin75CppiPf2RVx2SD6W+0?= =?us-ascii?Q?8HNpy/j4sMYs5RVvTJWEkj86rwoTGndK8rqeJdl2+jmxfB57B/PJJR7vmD2w?= =?us-ascii?Q?Ls7H2p6lNLUNjitpQw/i0+Fig7sDTUV3C4r/I8bmaEgInaYxMMjcMuE3dy9l?= =?us-ascii?Q?j8YuYJOrKAuL9IcH4RLGw/ouyMKOkyM=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e3f67d3-5518-455b-577e-08de4b0bcd24 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8584.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2026 21:05:21.0347 (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: tuRHOYFqpsbTVsTQgen5cJjRRXahlEf4RFqC1rlBLqNGsX4UPFw3vHG3++yMRzuymN0Vul3obuEPFOS3rMxdZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8088 Content-Type: text/plain; charset="utf-8" Prefer the new "rx-polarity" and "tx-polarity" properties, which in this case have the advantage that polarity inversion can be specified per direction (and per protocol, although this isn't useful here). We use the vendor specific ones as fallback if the standard description doesn't exist. Daniel, referring to the Mediatek SDK, clarifies that the combined SGMII_PN_SWAP_TX_RX register field should be split like this: bit 0 is TX and bit 1 is RX: https://lore.kernel.org/linux-phy/aSW--slbJWpXK0nv@makrotopia.org/ Suggested-by: Daniel Golle Signed-off-by: Vladimir Oltean --- v1->v2: patch is new drivers/net/pcs/Kconfig | 1 + drivers/net/pcs/pcs-mtk-lynxi.c | 50 +++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/drivers/net/pcs/Kconfig b/drivers/net/pcs/Kconfig index ecbc3530e780..5f94a11f6332 100644 --- a/drivers/net/pcs/Kconfig +++ b/drivers/net/pcs/Kconfig @@ -20,6 +20,7 @@ config PCS_LYNX =20 config PCS_MTK_LYNXI tristate + select GENERIC_PHY_COMMON_PROPS select REGMAP help This module provides helpers to phylink for managing the LynxI PCS diff --git a/drivers/net/pcs/pcs-mtk-lynxi.c b/drivers/net/pcs/pcs-mtk-lynx= i.c index 7f719da5812e..74dbce205f71 100644 --- a/drivers/net/pcs/pcs-mtk-lynxi.c +++ b/drivers/net/pcs/pcs-mtk-lynxi.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include =20 @@ -62,8 +63,9 @@ =20 /* Register to QPHY wrapper control */ #define SGMSYS_QPHY_WRAP_CTRL 0xec -#define SGMII_PN_SWAP_MASK GENMASK(1, 0) -#define SGMII_PN_SWAP_TX_RX (BIT(0) | BIT(1)) +#define SGMII_PN_SWAP_RX BIT(1) +#define SGMII_PN_SWAP_TX BIT(0) + =20 /* struct mtk_pcs_lynxi - This structure holds each sgmii regmap andassoc= iated * data @@ -121,6 +123,42 @@ static void mtk_pcs_lynxi_get_state(struct phylink_pcs= *pcs, FIELD_GET(SGMII_LPA, adv)); } =20 +static int mtk_pcs_config_polarity(struct mtk_pcs_lynxi *mpcs, + phy_interface_t interface) +{ + struct fwnode_handle *fwnode =3D mpcs->fwnode, *pcs_fwnode; + unsigned int pol, default_pol =3D PHY_POL_NORMAL; + unsigned int val =3D 0; + int ret; + + if (fwnode_property_read_bool(fwnode, "mediatek,pnswap")) + default_pol =3D PHY_POL_INVERT; + + pcs_fwnode =3D fwnode_get_named_child_node(fwnode, "pcs"); + + ret =3D phy_get_rx_polarity(pcs_fwnode, phy_modes(interface), + BIT(PHY_POL_NORMAL) | BIT(PHY_POL_INVERT), + default_pol, &pol); + if (ret) { + fwnode_handle_put(pcs_fwnode); + return ret; + } + if (pol =3D=3D PHY_POL_INVERT) + val |=3D SGMII_PN_SWAP_RX; + + ret =3D phy_get_tx_polarity(pcs_fwnode, phy_modes(interface), + BIT(PHY_POL_NORMAL) | BIT(PHY_POL_INVERT), + default_pol, &pol); + fwnode_handle_put(pcs_fwnode); + if (ret) + return ret; + if (pol =3D=3D PHY_POL_INVERT) + val |=3D SGMII_PN_SWAP_TX; + + return regmap_update_bits(mpcs->regmap, SGMSYS_QPHY_WRAP_CTRL, + SGMII_PN_SWAP_RX | SGMII_PN_SWAP_TX, val); +} + static int mtk_pcs_lynxi_config(struct phylink_pcs *pcs, unsigned int neg_= mode, phy_interface_t interface, const unsigned long *advertising, @@ -130,6 +168,7 @@ static int mtk_pcs_lynxi_config(struct phylink_pcs *pcs= , unsigned int neg_mode, bool mode_changed =3D false, changed; unsigned int rgc3, sgm_mode, bmcr; int advertise, link_timer; + int ret; =20 advertise =3D phylink_mii_c22_pcs_encode_advertisement(interface, advertising); @@ -169,10 +208,9 @@ static int mtk_pcs_lynxi_config(struct phylink_pcs *pc= s, unsigned int neg_mode, regmap_set_bits(mpcs->regmap, SGMSYS_RESERVED_0, SGMII_SW_RESET); =20 - if (fwnode_property_read_bool(mpcs->fwnode, "mediatek,pnswap")) - regmap_update_bits(mpcs->regmap, SGMSYS_QPHY_WRAP_CTRL, - SGMII_PN_SWAP_MASK, - SGMII_PN_SWAP_TX_RX); + ret =3D mtk_pcs_config_polarity(mpcs, interface); + if (ret) + return ret; =20 if (interface =3D=3D PHY_INTERFACE_MODE_2500BASEX) rgc3 =3D SGMII_PHY_SPEED_3_125G; --=20 2.34.1