From nobody Mon Jun 8 23:57:50 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11020092.outbound.protection.outlook.com [52.101.84.92]) (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 CF3663E63B3; Mon, 25 May 2026 09:44:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.92 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779702247; cv=fail; b=o33cXHSKfgXLhNf07cnzbyaex7DDSFNLiXhIhqBojmoVlZjfbht71KLgDll3EAO1umnYKeVDnVfY2WAp8ICo1c9TqjLWN3Y7EBPdcSKAOVBjLJ5YR2B++wVqi2MHec/dXjU2GF3wQuHiFETD36hT1E63sHiBVWjLYdJ+rO2vTwo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779702247; c=relaxed/simple; bh=5zPA5YrwC6Junc9WbpCMTRkntzfV5YD0VqrwMUQiWws=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=UnVQf4AM8M6EAJxnRtuYJ64YnNyTz1uJyFeBeQmyPCQj10eN83/AiTeHafLj/lbn1i5A9ftlyxF4wyqONGQyllTbiZBi3Qv4CSZS/v5D20v3iIRivhhbR4vX8vVX8zHduwbVTFkG1FBjiW3GMmLS3Qzb3Svr2FLeQMM4r8vOofE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com; spf=pass smtp.mailfrom=vaisala.com; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b=s6uK3G3W; arc=fail smtp.client-ip=52.101.84.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vaisala.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b="s6uK3G3W" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZDufmDhfonv8A2sqls6tcdNb+AE1G0xODeGxeY5+Hl0MKf6K2PL+Gv4GjZMRWIv3ohSajdDZAn9vRRHvsZROVlPQBD09tyGpMTdAGJCe/xwGTnxJXG8vJ4ey5tIoKlUAtw/KPxdlcoTzmVV+v8rW//yRPVWcSZZvU4jPt+WXGkQvVO2pAWzR4Un5quEH+OpmKcIlyh1UGYm88tzWXAkpejSNyHVUqlU1zmAo/Y7e7cWEG4Z4/c6TL66bqnbnOiECTQZcMtbbJGCceWqM+vQyAhRMVQEjVgEMkfejotPSRAne7i69i0pPzA+B6aZ/re8RZNtfd5qLtDGFWaQ9J6DsmQ== 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=d4/8x5bfOzYGPYooO2vHuoBIMfYEh+gFvp6kdvkC74s=; b=KXQ4bjT7ZjanMVEdq8WlrN1Tk+R30/+7jNnupNMWfr3KvMKJn+D18j78OiyKQKbButoY0MGClWn1h8I1BZoMTLvOLhJfZdjyuT1j5PIF2w7rnmRj/0Wn53CiAib46OE2ox7BCUFPBQJzMnibyA4JpztPd+f0cgm5eREmehWt2imaiq4s2dznrqjUYjPJMMCRglKWJ/3lX1lPKoZr1uT6WsnkmWKyTbu+1OIMRiGiF7+6keIaBznlLJf7lZZFkVuLJMHikPZOkq2tqsCWS7tBjka16bc5Yjkg0RB4lUWNrFS9vnDwql50cNBgc0kr1ugzLFdOEJUWiA4bMzqJvGUkPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vaisala.com; dmarc=pass action=none header.from=vaisala.com; dkim=pass header.d=vaisala.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vaisala.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d4/8x5bfOzYGPYooO2vHuoBIMfYEh+gFvp6kdvkC74s=; b=s6uK3G3WDMoVIYh3ali+QgFL84nSZ4xH8eCy2syqxyok9Qbk7n7SgsAVpr6KFJod/Rdx1ixy1wOfcLF+8dpHoP2mZ9GLTqGWqsOFXI/RDSRR1NEVog9mv8ufFasWeiwVWOzGv/3OSjSVAI6kE2j609vnaDE+u8bIQW28aXcX7O06hUSe3VS1UtUqLzDoFi1MBuvSZiaIJnIQBeU5qNIU6bjTkW6Wu+8Wr7CcrZOjncm8ke731Bdlyqvpq97TShogG9Cf/NnulCmskNdQoUfJH9TdZioWdiR3O5yAnAWPASUOKODnkisLEG4RllUA8UYQmg4z74WNdExGMg0rRaQvEw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vaisala.com; Received: from AS5PR06MB9040.eurprd06.prod.outlook.com (2603:10a6:20b:676::22) by AS8PR06MB7608.eurprd06.prod.outlook.com (2603:10a6:20b:337::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.19; Mon, 25 May 2026 09:43:51 +0000 Received: from AS5PR06MB9040.eurprd06.prod.outlook.com ([fe80::923e:d30b:98c0:c69]) by AS5PR06MB9040.eurprd06.prod.outlook.com ([fe80::923e:d30b:98c0:c69%7]) with mapi id 15.21.0048.016; Mon, 25 May 2026 09:43:51 +0000 From: Tapio Reijonen Date: Mon, 25 May 2026 09:43:37 +0000 Subject: [PATCH 1/3] serial: max310x: register GPIO controller before adding UART ports Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260525-b4-max310x-rs485-dt-v1-1-e6c19b4d5592@vaisala.com> References: <20260525-b4-max310x-rs485-dt-v1-0-e6c19b4d5592@vaisala.com> In-Reply-To: <20260525-b4-max310x-rs485-dt-v1-0-e6c19b4d5592@vaisala.com> To: Greg Kroah-Hartman , Jiri Slaby , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Hugo Villeneuve Cc: linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, devicetree@vger.kernel.org, Tapio Reijonen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779702230; l=4078; i=tapio.reijonen@vaisala.com; s=20250903; h=from:subject:message-id; bh=5zPA5YrwC6Junc9WbpCMTRkntzfV5YD0VqrwMUQiWws=; b=wxvquJtYJLF9Flgw6OGQdrg3xmtHm15Cy3v1jQhLfKte8ky+o3JfL2cb1+ocJzGvyqFFgAoK2 yGwYTsPek9uDPaDZHryVe+pAwy0v6BZAAcMLtK8zVOBAPiFfhXqQqU3 X-Developer-Key: i=tapio.reijonen@vaisala.com; a=ed25519; pk=jWBz3VD84WbWgfEgIqB5iFFiyVIHZr52zVBPOm7qiGo= X-ClientProxiedBy: GVX0EPF0004F082.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::626) To AS5PR06MB9040.eurprd06.prod.outlook.com (2603:10a6:20b:676::22) 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: AS5PR06MB9040:EE_|AS8PR06MB7608:EE_ X-MS-Office365-Filtering-Correlation-Id: 2030f1ad-7c6a-480b-a33a-08deba4220e0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|1800799024|366016|38350700014|6133799003|11063799006|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: pWRGrGPOIp76BLHuWLOLALgyA/5sevDM14zPW0JovvhpEm1SnEhOTRFBEFDkwjsxCZDqtOcB8OEUOUlQTXpAlvk3x1NUwF/aRf8r/ptAa2PKjr4fhHOh7MR9QxiTcdEXf3O2RCJVVkUndrJda/i6VDvyLBiPFvMaCQ7NPDJePBNYE9ie0TZ+whtGCRyYGUOP4uxPuPcGHnwWK/OlGQM4zN90U0aC9AtQvMvAUHEDjCENn/QAxXDkZu1GoseIoo3j8Q1kwCpf7nCPBvUwTDn51WJmX5OSF1vhqDIdWSzmcF0eml/bsIKL3hRy3XBZc+RbB228h/v2ossPeuk0EDwkFjipxSyM7tKkQXXfSJ+4lr1NEQc+ozwAi41/wGaF4+QkDH9MPFoiblxHSWPuzErspEp4ow1GWDvFUhhsmXmf3HGOF9XbxuK4Eil/Z5sARdVEA8iprx1kVyFwQx3PdlReDW2CcwdkzEjpZhjm0fthOeKQfIjrfE9nV6in3rwBFWRDAR/XA+mT+wIFXL9QQlAASK2CwptdgR+kgPw2Jz6KDLIUQv3/skLNfqzapiNQ+2Vo4XaPsNTINKPmThkgESHPlhtk7xdcwMpS/Pje78HDR4W/4NksviOJV4XBapAuhtSLLu9zZtacEVtvnaHIjsSnfWROibQ8+z0q81UByXQujf2KWOgKxIGpSxEKOnBM5ri3r+hY2kyDJcYl91sLpaMBEdGx21xr1mKxGtiYhvMjPznsefW3+jZTF8xQrsAhxPtI X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS5PR06MB9040.eurprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(1800799024)(366016)(38350700014)(6133799003)(11063799006)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?LzdEN2NsdFRZWlhpWjlpRXVTQ3pBNXVlWk04cElzcWc2VUhBaXRSa2gvR0hk?= =?utf-8?B?UVp5dzF4N05TM2plNGIwUVJ6cCs4RzJ1Wm9YUEphaTVrdVpzMGg5ZWdwMlYr?= =?utf-8?B?ekNEWmw3SjhNZzdmNks4b2RJMC9keWhOc3NOZWYwUlpqaWViQ3daUTRYbHVh?= =?utf-8?B?RmNLMGpzNEkxL1FQZzhZTTBLaUUxR0dKQjRHUkpySnJSTldSbWlPeGh2SjhZ?= =?utf-8?B?NWZ1ZExuc3V4c2xNMVVQbXU1c3N0QmlpSTB6U25iU3VEb3VyNVNhbzVBc0ZS?= =?utf-8?B?QjF5a2wzWkZpVVRmTzNpd0lkWnYxNHd4RDdZQ0VEVzJNb3RTc3l0K3ZyOFhu?= =?utf-8?B?Q3RIRS92YlBzY0YyZDF1eFF0ekpvdjR4ZncyQnFoNU5zdWVwNUdzM29VZzRq?= =?utf-8?B?bm54R3Z4NlRaVTlkREdEYnoyMDB1bmR5WVpsZlNjRGY1aFFiemUzY0drVk03?= =?utf-8?B?TFIxRzNNTUw5cmpnSFRjcjZMV0xzS1g3TDRyUkV3NTFPOW5oUHpqcWo3VmdW?= =?utf-8?B?VXNUeERzRTVuNFNSbG9COU9ocjZQVmFreVRkdFhkdGpCeHM1MHdhVndrc3Va?= =?utf-8?B?WGZkSU9zS1plOHhFdFAvZ2NDSG5VaVlmM2FraGxkNWIrckd0a2Q5ZFNnUUNG?= =?utf-8?B?MDhIZ0VBbm51YTdabWRrQXBHbmZOK0kxSkJuYWFEUW1PS0pIQjVwczl6eTUz?= =?utf-8?B?elhTaXk4SURRQUg3di90OGRTOFdIcDR3ak0yQ0pFWC9INThvUTIrYmNWWEgv?= =?utf-8?B?cWhDQ2NmdjBQSHppY3BsVjBoTlBKN0RzcC9MdXcxZkdpMENZd3FXbWw2Q08x?= =?utf-8?B?VzVEVFBWU1RSUnFlRHRNbUwzWFlPSkZ0Nm45SU1vT1BhaDZiNUNZS0h1LzVP?= =?utf-8?B?dmg1MjU3WkRwUDFYbG5GRXVGTldDUHVLU2hkQis1TDlYVnk4cFREaW1jQ3RI?= =?utf-8?B?NDQrS3U3UWltUlJwWDN6OTJ5Y1ltQSswSnk2NHpHSldFc3dhSTFsT2pURk15?= =?utf-8?B?TENIQy9aTk50dHoxaG9leW9vekM2S3Mxcm56TkpZWTF3NE5jZ3FBRWVXc0RI?= =?utf-8?B?d0tIa1VkbHFmM21UT2dST0NjOHJ1T3kweDF4YmhSUVZ6eWZ1TEQ4aXREdmJp?= =?utf-8?B?ZFdVaWxmWW9ycHNLT3hpdnZvTG5IZGZNK1VJSW9RNmFpNTQzc3ZvTHVvWXZY?= =?utf-8?B?dkdBN0RvNzE2TlJLb1BpUE5RQ1ZiYWlvTHlkWnZvQlVjVmRwa0xpa0JUdnMy?= =?utf-8?B?OW8xOUNGMWo1aHpDWlBkMWJpUzFZYkhQcDZYSXlROExOUWFqWWZyRlpDcnZq?= =?utf-8?B?NTFoMExQRFJxVmhPWnpsdFV1VDl2akNxNXNoS1dqWml0empRUDE1RTd1SzNx?= =?utf-8?B?WkNhUEZkQUptODdKZ3VqK2QyUVNxK25yK3Qyd3pmUWl5akhqRzFueXRRWW5w?= =?utf-8?B?NE04dmZoVWhza3RhMTlLVTRpWDhPaDYrT1JnT2JKbU03VDR0dnVJNjhOczZW?= =?utf-8?B?MnZVU1NRcU9rN2M3ZHhoV1h2N3RHYVc4bm1rQXlTeEdyVk9vWXhya0xYc29m?= =?utf-8?B?TEdvakVnRzd5ZDdlUnJObFJBcXo1T0oyQXEwbWNNbmhacXFtb1RZRVJmcWRT?= =?utf-8?B?SCtNbXhiWDNXU2Vyakg3MGR4VkdFc2x3WlZuazJyUUpvQ3VNWllnVHdtd3hn?= =?utf-8?B?SGEvdDhDQ2pOME1jK1lqb1JyVDNEWnc4RHZkUEtwWFMyK3BSQ0VIaTRSUERQ?= =?utf-8?B?Y1hURmIxeHZrcE5XL0ZEdVNXTTZlcmpGV0JrMlJORGNFMUlleTNxSDFwTmNl?= =?utf-8?B?RTJCRi9sazJpOGtrTHFJdTFmZVlLOWhhWFpnOWNiSU81SXppVEJkb1B6Wm9D?= =?utf-8?B?a2hnTlF0UU1xd0pUb3lzdzJsMUJSS1hIZHljNzU1STNYYjB1Z1dFSlVjdkJj?= =?utf-8?B?ZnNPQnBWdEhFOHhsRnVjQnY3KzJGS040RFl6QkMzSmFOaGI1SFFNQnViSFcy?= =?utf-8?B?ajhBVFF6UVpZZWpheXgySkE4VXp1UThra1VLVUdpK1ZKWmNKL0FhMVFvQnBs?= =?utf-8?B?V2l2QzhIeHdOaFhHbFl6SGhORDZBSHdaNVZqUU5rbzRRYW5iT2JWV0Q1TzA3?= =?utf-8?B?UmlibWFiQTdNL3Q0dXh3bVdVVHA1SWF2UU5WeXNlT1lQQkRBTUxHSWh2Tjgz?= =?utf-8?B?SzJBMGJ1cXhWaVBlQ0E3cTlZQzF5Z1BlbnREQnJmMWgxdmg4MmpLcHVzL3JH?= =?utf-8?B?R1EwUGJRZHFUS0ZVV00zeXNJeTZFMCs4OHcyVXd0ZWdUMzFtUTZ5MDd3VEFP?= =?utf-8?B?TlR5MzlKSmY1a2ZzL3VtT2R6T0VhRmY2NzRjVS9hRTFCeW90bG9CTkV0SEV4?= =?utf-8?Q?99eIUD1mYgMC27Fw=3D?= X-OriginatorOrg: vaisala.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2030f1ad-7c6a-480b-a33a-08deba4220e0 X-MS-Exchange-CrossTenant-AuthSource: AS5PR06MB9040.eurprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2026 09:43:51.6326 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 6d7393e0-41f5-4c2e-9b12-4c2be5da5c57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6q/WuBDD1wXj2FsMFSPONph9edw6By99G6C56b6nKqZ7A7MjHFQke1p/RX0yFMmJeuPfN1H7x2kOJ16Ed1Ojnv3fuO+Rc+0ixMj9XPBmYrU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR06MB7608 The MAX310x exposes four GPIOs per UART port via an in-driver gpio_chip. devm_gpiochip_add_data() used to run after the per-port uart_add_one_port() loop, so a device-tree consumer referencing one of the chip's own GPIOs (for example rs485-term-gpios =3D <&max310x 0 ...>) could not resolve it during port registration: the GPIO provider it waits for is the very driver still trying to register, and the lookup returns -EPROBE_DEFER on its own provider, deferring probe forever. Split the per-port setup into two passes around the gpio_chip registration: 1. Initialise per-port state - port struct fields, regmap binding, IRQ disable, work queues. The gpio_chip callbacks dereference s->p[i].regmap via to_max310x_port() and become callable as soon as the chip is visible to gpiolib, so every entry must be populated first. 2. devm_gpiochip_add_data() - register the gpio_chip. 3. Allocate a line, uart_add_one_port(), set_bit(), max310x_power(). Keeping line allocation, registration and set_bit() together preserves the existing "bit set <=3D> port registered" rollback invariant that out_uart relies on. Signed-off-by: Tapio Reijonen --- drivers/tty/serial/max310x.c | 54 +++++++++++++++++++++++++++-------------= ---- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c index ac7d3f197c3a5ce3531d5607f48e21a807314021..5cb7d01e404663dc25b88bc7b4f= 8df61be2135ec 100644 --- a/drivers/tty/serial/max310x.c +++ b/drivers/tty/serial/max310x.c @@ -1364,17 +1364,12 @@ static int max310x_probe(struct device *dev, const = struct max310x_devtype *devty =20 dev_dbg(dev, "Reference clock set to %i Hz\n", uartclk); =20 + /* + * Set up each port's state before registering the gpiochip, + * since the gpiochip callbacks will read s->p[i].regmap as + * soon as gpiolib exposes the controller. + */ for (i =3D 0; i < devtype->nr; i++) { - unsigned int line; - - line =3D find_first_zero_bit(max310x_lines, MAX310X_UART_NRMAX); - if (line =3D=3D MAX310X_UART_NRMAX) { - ret =3D -ERANGE; - goto out_uart; - } - - /* Initialize port data */ - s->p[i].port.line =3D line; s->p[i].port.dev =3D dev; s->p[i].port.irq =3D irq; s->p[i].port.type =3D PORT_MAX310X; @@ -1404,20 +1399,16 @@ static int max310x_probe(struct device *dev, const = struct max310x_devtype *devty INIT_WORK(&s->p[i].md_work, max310x_md_proc); /* Initialize queue for changing RS485 mode */ INIT_WORK(&s->p[i].rs_work, max310x_rs_proc); - - /* Register port */ - ret =3D uart_add_one_port(&max310x_uart, &s->p[i].port); - if (ret) - goto out_uart; - - set_bit(line, max310x_lines); - - /* Go to suspend mode */ - max310x_power(&s->p[i].port, 0); } =20 #ifdef CONFIG_GPIOLIB - /* Setup GPIO controller */ + /* + * Register the GPIO controller before adding the UART ports so + * that consumers referencing the chip's own GPIOs from device + * tree (for example rs485-term-gpios =3D <&max310x ...>) can + * resolve them at uart_add_one_port() time instead of receiving + * -EPROBE_DEFER from their own provider. + */ s->gpio.owner =3D THIS_MODULE; s->gpio.parent =3D dev; s->gpio.label =3D devtype->name; @@ -1434,6 +1425,27 @@ static int max310x_probe(struct device *dev, const s= truct max310x_devtype *devty goto out_uart; #endif =20 + for (i =3D 0; i < devtype->nr; i++) { + unsigned int line; + + line =3D find_first_zero_bit(max310x_lines, MAX310X_UART_NRMAX); + if (line =3D=3D MAX310X_UART_NRMAX) { + ret =3D -ERANGE; + goto out_uart; + } + s->p[i].port.line =3D line; + + /* Register port */ + ret =3D uart_add_one_port(&max310x_uart, &s->p[i].port); + if (ret) + goto out_uart; + + set_bit(line, max310x_lines); + + /* Go to suspend mode */ + max310x_power(&s->p[i].port, 0); + } + /* Setup interrupt */ ret =3D devm_request_threaded_irq(dev, irq, NULL, max310x_ist, IRQF_ONESHOT | IRQF_SHARED, dev_name(dev), s); --=20 2.47.3 From nobody Mon Jun 8 23:57:50 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11020092.outbound.protection.outlook.com [52.101.84.92]) (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 D23DA3E5A3D; Mon, 25 May 2026 09:44:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.92 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779702252; cv=fail; b=hzRsBbJfRsQdl8i9CrbGQpvtg1sHLYk121Uyn/ZQVx13tu+cW9bZZ62Xjlsgu33iP2P/I2nydB+AaHsHv6FiQkMb8OTxbky6ZbH/1fMNtd8zg5E2die9jONCd18UlOpKylX/ygAgK2cMU2EcmmrAgoU/xbOBa20oWywR3mgu2DQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779702252; c=relaxed/simple; bh=CWoKuZok1Id0RNXg7eCMdRdk8Sm6v7s8s4aTrwel40g=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Snc6AOMHLjWhBp3cK4VqIRiBbdMMhZu7uE0KQ6DzedOEuNtKlXi0xW0R0KOTlI+/4MqZRTwrgkQ6rNkWTQnxgGfpmK8bUvj1t5MYraUmDOC0LplLAODJouJ9HqLqluJ1K0KyD1o4JngqZfJ+e8hXGrfaN/yHi9hCDSr6p+1z/do= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com; spf=pass smtp.mailfrom=vaisala.com; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b=ZnjNkUXl; arc=fail smtp.client-ip=52.101.84.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vaisala.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b="ZnjNkUXl" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oV0B8LhfiDYXIAV5ZVI3s5E0Wse1oCTL0l+pCBoY4KPNIBnlIt9Vg0KQu2Rg+eQtNUXnGi6wUMS3iSyCr6TIjwru1eHZZZ2i/I6buict2t/RWDUdfbpcEo2moMPTW2ykLsyTEsQFMSN9D0dCWRNXCP9YjttQcps4e9KKuPOZfGW/6eCfGlHRpkYoLGy63z1qxjAhsNDlX3vRPwyVTMpVqlKMxvPE/b1v7l1YbZKf2YgVbFFkF+tIQeO2YoVL20GphwLsyKXwTNLujKYhqoPdmEdd4oOpDhAjFFySV4l7+G2MICsW4tKKHTmuGFnuBxOTMONY53TRGuN0J4IcQ6eqhw== 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=Wl6L27BRiUgtetfHLQ3RqL8eSdQHjQGVaNTN7Yy5QLg=; b=ab0xck6bnAoe2gsB2WwYXDIgM4kE9eBSsJQRJCVTXvxMQFdqrL2GuTw54QmUxIdkpJOp4Ghqx0ta76YLXkeY70nT7f7FsM8IsCH/mRP0elupSgud8SfrV4xrR8r8798c8YJZ5UU4NpPwoA6s3pD6A2ZUhP4LgH6WwpgqLQi2ZXOzuUJDKtGfxkq1yEItu0yJwxC6bLKjHgpIR8WK/w/PEWVQ8x8ZxXVcEBOxZGUAjHr0kvVxTxQfZ+h5VLJU6txDkDvu61M0+feP+539nUnZP/qPrlcmfNnF+cVNho+kMnVayfyBQJDLTI2GRvA0TKIC3aX5CQhNP6k1t/JwL4lhIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vaisala.com; dmarc=pass action=none header.from=vaisala.com; dkim=pass header.d=vaisala.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vaisala.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Wl6L27BRiUgtetfHLQ3RqL8eSdQHjQGVaNTN7Yy5QLg=; b=ZnjNkUXljt0+K2G0e0mHJh2ZIQg7Ti7WLm6NlbHNAUwo7MFyJv6DW1adDY2oRe8lpUtyNyYLSmaP+cHxfUE/qNu5bl0I+i817GpNs5mPnLUSBFxBXVYoC2uKzolfAOHp3tq81lIuEWUxWfUMaBTLHgQzpg+jnHNBOByo67XH87M/lCcfKoYMrE1ytL7mURHPjJX3zmE9Z4OclB5y9bGVhHYOlHUOAtdQPKiYDe6pTPXN0B5ZfgIJ4M+Us2Oilw4khFVZ7PXumSXHvHYrLSCDOqFjltqo3SeVhP5D1I7XwbeXXIhUArealseue9rphNqaPbVeiElLeAT7elmtllcWyg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vaisala.com; Received: from AS5PR06MB9040.eurprd06.prod.outlook.com (2603:10a6:20b:676::22) by AS8PR06MB7608.eurprd06.prod.outlook.com (2603:10a6:20b:337::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.19; Mon, 25 May 2026 09:43:52 +0000 Received: from AS5PR06MB9040.eurprd06.prod.outlook.com ([fe80::923e:d30b:98c0:c69]) by AS5PR06MB9040.eurprd06.prod.outlook.com ([fe80::923e:d30b:98c0:c69%7]) with mapi id 15.21.0048.016; Mon, 25 May 2026 09:43:52 +0000 From: Tapio Reijonen Date: Mon, 25 May 2026 09:43:38 +0000 Subject: [PATCH 2/3] dt-bindings: serial: maxim,max310x: allow per-port subnodes for rs485 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260525-b4-max310x-rs485-dt-v1-2-e6c19b4d5592@vaisala.com> References: <20260525-b4-max310x-rs485-dt-v1-0-e6c19b4d5592@vaisala.com> In-Reply-To: <20260525-b4-max310x-rs485-dt-v1-0-e6c19b4d5592@vaisala.com> To: Greg Kroah-Hartman , Jiri Slaby , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Hugo Villeneuve Cc: linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, devicetree@vger.kernel.org, Tapio Reijonen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779702230; l=2837; i=tapio.reijonen@vaisala.com; s=20250903; h=from:subject:message-id; bh=CWoKuZok1Id0RNXg7eCMdRdk8Sm6v7s8s4aTrwel40g=; b=c4hna3cVf+ox7Evoc/A6Gq2xIpekB1WX5X7GC6Dc+ytPlDCG4sp6c/kZdrCjieB91o9xhgyJD GkojnAT9fQACi2qmu1SC7ndIoecGrdSXSQiBF0dfP1Q28VelhlowvmC X-Developer-Key: i=tapio.reijonen@vaisala.com; a=ed25519; pk=jWBz3VD84WbWgfEgIqB5iFFiyVIHZr52zVBPOm7qiGo= X-ClientProxiedBy: GVX0EPF0004F082.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::626) To AS5PR06MB9040.eurprd06.prod.outlook.com (2603:10a6:20b:676::22) 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: AS5PR06MB9040:EE_|AS8PR06MB7608:EE_ X-MS-Office365-Filtering-Correlation-Id: 01694183-25ee-4990-9720-08deba422147 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|1800799024|366016|38350700014|3023799007|11063799006|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: 5ZjzzEIFKOJxAtOLMZwBmClp3VEGElfj85v76Hc4ngc2KzBsutaFr8YO4mGVjOPWfWi30aKqxmQhdIa7t9Hm5BDpV9OozX1iO0CXHuzOs8fhDG7WIKV2DDfTCgpqtUDBMGov7lFF8jvpHXOqL2fAxH8BfBPInzn8BpP+N0ANa9OgxPJHonYPTfCBvHT/q+eNZUcUqtXQYihVuPbqVK/jBc5nN3lkl7Z6Y1f0QLe0Pwk1DJQyPfJcwxYSO80VCu75Ht1LUE4/fORdOc4ExABjpOR+eAbULY/xzVyIoCsopi89H63UWaCFrORqNLuJsWU+YAigP8Ag3/nNBOFSPozqHvZXDWs8baDLovmGF+GV9gNewRpawmh4+4RaAhaMrS0S7Q6ZxkSk/NsH/8Jk+eJoCI+8QWtdA8/a73DT4knz0MeH3vVYxsh0rAr9x0+dsF30rvUej92aA8tUQqbTJ1b4LJC4UV37p+DvFy1f1m4JQFzJ1G19u1rhjx8rVJ57hKfxApz/dpzItfy2HgbXiBEovxYwhrKHOK+PKW7TE04UhdhUvhM61DotJLv2rhnUujwtd4m5RbkpxMuaALYcxXVrhNaZ0wTl+QJDmKsRoKhCdcjBR6nPqBm35IDAlKlqVr72blrOd2N4eC+nwLZ6h4q6tNX0ZHPNJMvae7D+xaCaC30rc2n/XPpSG+g7P/nif7NkIKo6gpyawMJT8rbIteLHldc0Xx0lzxs2lpmTq7bEuSMlPn/jV7LexqsZN01/2DyX X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS5PR06MB9040.eurprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(1800799024)(366016)(38350700014)(3023799007)(11063799006)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TmJGUmk2QmNzZTVJbldIYzVZWm9CdVgyc3VoZ2VTOTRFdGIwZis2VVNUcm9z?= =?utf-8?B?V2s2dUxSWXo2VUI4QitQc0kwNit5eDExL1hkeEo0cWcvQnhGMTE3MlF2K1Bt?= =?utf-8?B?OENobG9ZaUNuT2ZDVmF6NGN1c0p4bDM1STNLUGdxN0NOb3d4TzVISWFMYk1J?= =?utf-8?B?M2RGbGxPWGFFQnVXeWs3ekl0RisyRFVNMGptc3FTK3c4eHZPQlU4VVFVaDVX?= =?utf-8?B?RzVGSEhhMVZaRUNJcGExYUZ3T0RJU3RiRklXQXVwMlNMenE1S0Nja091YjNi?= =?utf-8?B?enR6cGpBemh1L2lWOWNBQ3haVm53bGllVnZmY1FleUJUTzIwKzNBc1YzdGs0?= =?utf-8?B?RFRhaXhOM3hGdXV4NGs0NklIcmhYQ3FqMHpDb01Cc0p2c2o0YUgydkw1UkRM?= =?utf-8?B?bm1YWUt4Y0xOZCtVblBqL2tFWkI1d1c4bis1NGE0b1dwSjZoOERDV1pWU0li?= =?utf-8?B?aGM0WXlwUFVOZG0xdU43d00yMlhZWDl1a01HeXpCVlpMS3pWS2M3VVo0cmRy?= =?utf-8?B?eWVleGhvWVZDVnFsV2RSSDY5emdzZHJyWlBLcUlOTGlkNTQrQ0NWd2dtSW5R?= =?utf-8?B?NCtxemFEL0ZpYlZ1aHl0WkJBMUV0TU0rV2xQdnhrbXFkN1ZTeUdVOFNVelNC?= =?utf-8?B?SGEySno0OGF2bmhNYUI5SUMyZ1ltWWg1TjlXcWdrdTQzcUVWeWlkeVgvUjNo?= =?utf-8?B?b0Uxa3NLRzQ5WkRqOUxhTWtBL1ZvS3ZIV2FheERJa3J0SFRrQlFLUStxRVM2?= =?utf-8?B?d2R4RFJkV0wwZ2ZTY3MzWVMwRTBnbXBVV3VJT2tYUW02aFBxaW5CaFFPcm94?= =?utf-8?B?N05PVEttQnhTU3o3bkVHN0srZVYxOERCeXM2OWhDM3MvSjd2SEpaaDFCK05L?= =?utf-8?B?OVozQUFYcFUvN2cyUEhKVHg3T1BhL1NjK1BIWWNDSHJVbTl3L2wzY3FySGty?= =?utf-8?B?WFI3QnpBRGx5ZWRHWHhmRUdnRUl1NnQ2UDhYYnU3M0JWc3g1aUl2OGh0YU9a?= =?utf-8?B?VmlrangvV2VMSFBuenJCaEdwZXBvWkZDakdUMHozejExL2ZqS28xc29JYXBU?= =?utf-8?B?enVOOUlnMHozUjYxYy84L0x3MWtQZ3M1K1Y4bWFXZUZHNDFCSzNrL2N6YVNC?= =?utf-8?B?RXNNMWU4eDJFUDd5WHJ4aWZEYWhwemNHUjVaOVVaa09mZTJ1M3A2blFPRTZj?= =?utf-8?B?RnpMME9HenJvTDNFY0F0OXpVdXM1YzE1RVU1MFh6ZTM5VGg5NjlSOUlZZ2F5?= =?utf-8?B?RHBRSEFZYTBzb2FuOFF3eVVyMW9uaGk3UzRaTndBZWtXWmlaRDVqOU05MWtF?= =?utf-8?B?WVdCdDhrZmZTWW9qTlVHYzdQOWtpQjh0d2ZqR2dqa2RDL1ZGOEVkc1gwS3hE?= =?utf-8?B?ZEdlVm5JQXIyWmQ0YStzOFFpaHl6UEJpZlRPbFp6ZzExWlNwbDF0amVXbEIx?= =?utf-8?B?NjFKTTVzMTk5MExKQnJhc2FIeWNzS2NRamU1RzQ5d0l3RGV0VGJNTWwwQ2Ri?= =?utf-8?B?aEhDSVhhNWpmWUEvamZvdVdhTHFkSVArUWhJQTI2K2hXLzh1RFhvQWgwelhl?= =?utf-8?B?VVNCYmpMbW5VQTUxREhLaU4xNlBsaVN5N2FWWEU0c1A4RldPMWdXdWR6Y3NY?= =?utf-8?B?cFFpRzhlTXB6RERvL2lJVitLQkZ3R3FBdlRvU0lrVERQWEhmSVNiTWZNUVk2?= =?utf-8?B?QlBXWllwSU84MWV4TWh0cnlvellHcFJ4T2pWU3NkN0kyR0xRaDhBWm0yN21k?= =?utf-8?B?SDhJZFBQOEFyM1luWWIrWmN3STlzdkUwQkNLMWI5blRXaGJ0dVNNZG1SVUJP?= =?utf-8?B?THBZaklFRWhBcElsbHVIcUhVSHUySm90REZickU0dlpsRDVJYkFFTWtkZEpq?= =?utf-8?B?ZjZpTEJwYlJhUTdMUmlYMWdxQ0NtZXRMV2VmRzZycEY3ZEZBMnU0S1J5UzNN?= =?utf-8?B?WEwzTXh2aCswOTFmdE13aFBoVHpKcWxLNmtDSkFHWm01V1NsQndVZDAxbE1B?= =?utf-8?B?NDQyMTFjRkh0RitGNDRQL2lIemdTQ2Rwbm02TmVXbzNqclFFOVhMRk1pSzlW?= =?utf-8?B?bExuL3BTNjdLZWI2VFhENTRsVjkweGJmQkxCNVhJL0ZLY3k0cnBrUWdQL2hZ?= =?utf-8?B?aUgwYjhKUE1YQWxRUWtENmUxNkVmT091NHExdSsrZ1NRd1NjWHcrR3lQM0tq?= =?utf-8?B?aXRMZitwYUUzSHFVTkw1Zk9VTGlVWi9uMFVpQ0lVcWF0OCtHdEJxL09zLzdi?= =?utf-8?B?bFZoLyt0L3k5VnNsekpUMnU1S21TazBzSm1YTE5VMkM3Zk5FQUZKTTMwUkg5?= =?utf-8?B?aG50TnFOWmgvU0JaeEZqMmc0ZTRxcGNjVDJRcTN0VEpMTkxyZFpQaEpyeTFh?= =?utf-8?Q?aVYhIpolT3LbFMaE=3D?= X-OriginatorOrg: vaisala.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01694183-25ee-4990-9720-08deba422147 X-MS-Exchange-CrossTenant-AuthSource: AS5PR06MB9040.eurprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2026 09:43:52.3033 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 6d7393e0-41f5-4c2e-9b12-4c2be5da5c57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: T9RtY/nNBkeWWMud/5r1+4+ecQDj9zwzY6y0Sv48tEfRl6PZkravDF4BgNmCnobtu3ywSqCs+ThyDPcUBfJwx8DW33CI0ps5P6oxnjHbGuU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR06MB7608 The MAX310x is a multi-port UART (up to four ports). The existing binding pulls in /schemas/serial/rs485.yaml at the top level, which only describes a single port - sufficient for max3107 but ambiguous for max14830 where each port can have its own RS485 wiring. Add a "port@N" pattern (N =3D 0..3) carrying rs485 properties on a per-port basis. When port@N subnodes are present, the chip node also needs #address-cells =3D <1> and #size-cells =3D <0>; allow both. Top- level rs485 properties remain accepted for compatibility. Signed-off-by: Tapio Reijonen --- .../devicetree/bindings/serial/maxim,max310x.yaml | 60 ++++++++++++++++++= ++++ 1 file changed, 60 insertions(+) diff --git a/Documentation/devicetree/bindings/serial/maxim,max310x.yaml b/= Documentation/devicetree/bindings/serial/maxim,max310x.yaml index 889eeaca64a027b4d9e8ec87bcf63fcc8fd9d55b..b7095c9abacde81e69c1138e817= a1d5bdfaf14d7 100644 --- a/Documentation/devicetree/bindings/serial/maxim,max310x.yaml +++ b/Documentation/devicetree/bindings/serial/maxim,max310x.yaml @@ -40,6 +40,34 @@ properties: minItems: 1 maxItems: 16 =20 + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + +patternProperties: + "^port@[0-3]$": + type: object + description: + Per-port subnode that carries the RS-485 properties from + /schemas/serial/rs485.yaml# for a single UART channel of the + chip. Only those rs485-* properties (and the per-port reg) are + accepted here; device-wide settings stay on the parent node. + + allOf: + - $ref: /schemas/serial/rs485.yaml# + + properties: + reg: + description: Port number on the chip. + maximum: 3 + + required: + - reg + + unevaluatedProperties: false + required: - compatible - reg @@ -72,3 +100,35 @@ examples: #gpio-cells =3D <2>; }; }; + + - | + #include + spi { + #address-cells =3D <1>; + #size-cells =3D <0>; + + serial@0 { + compatible =3D "maxim,max14830"; + reg =3D <0>; + spi-max-frequency =3D <26000000>; + clocks =3D <&xtal4m>; + clock-names =3D "xtal"; + interrupt-parent =3D <&gpio3>; + interrupts =3D <7 IRQ_TYPE_LEVEL_LOW>; + gpio-controller; + #gpio-cells =3D <2>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + rs485-rts-active-low; + linux,rs485-enabled-at-boot-time; + }; + + port@2 { + reg =3D <2>; + rs485-rts-active-low; + }; + }; + }; --=20 2.47.3 From nobody Mon Jun 8 23:57:50 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11020092.outbound.protection.outlook.com [52.101.84.92]) (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 620903E8331; Mon, 25 May 2026 09:44:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.92 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779702253; cv=fail; b=oLPEweEUPDCpEf4kBa4QAbN+gAhimgLx6P2NzOFZHyKBZ0Atl3xFqqaLE6gxexWh+k5X2LjPuswGayzplThogARaFlPSEm8pqG72Ow+KOkCZ5I73VYrk3w5r8mzmuI+ARqQZDPJxZazrq+dRIcDWsG6HTEdu8mWhGnv3DOaDdAE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779702253; c=relaxed/simple; bh=Jb0kxdJyG1UrpdSkUvdAsI/xelm6UTv5JvmVG5dDbWE=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=CF+ZNfDgYO7FRjH5bAXSSKSIrzJGoq5BDMDClgSYPNmGGOXeWsXjFrrJZTBdJnOELYXkUyPm5Be7aABmlTr7Y+70Up8s4htQmUNGUl1cFbbEv8RpvV7Bd76h+3Vn6nstjoW4YA6c2hr3Jfu9nhKl0czAzlQ+m/XAi53FIQg2pYU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com; spf=pass smtp.mailfrom=vaisala.com; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b=ux+DtYQB; arc=fail smtp.client-ip=52.101.84.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=vaisala.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vaisala.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vaisala.com header.i=@vaisala.com header.b="ux+DtYQB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WEiDD1/dG8RsxlxTDw/0JIlsk8b7kabODjq+W7hVjqJrZjDGBRf9qpNrN5fLsgure4Y2O7KsX9yx0Q3TjLtdnHMKThaUSzQXQk7OpH0wsoX7lZhA/OnE6ihGAy+WQd7FalGJTblH99neSG6Ln2pNv43ROTiWn+fGWqzHKy8yhblrXiznSVhgd85zLeiYCU1/ksfPFua2PSUQ45QqtN2IphotS2yi4aHop8byKL03XubWRAzuhY13klTovXdMZqFHiGrQ+fiJOSIgjrb2Yh52/m6BNl7RX2VbrnOvcAx1x7rU02vF3E8edxnItHHeL+P32Gu2NSHbEt6WMHXj7S4BmQ== 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=ZwwCXNaaoMASbDMPH0u+AvfsicVuqNtvMsaO8I1qxzw=; b=BvS7VWdZBMfTE2qYSxRtOxNqbbgcewwgGwMxV6Ir8CCqGGvLnktemu231VZrjrrrG/wJbdBtq6dGiJ7Mx2jZn8Iu95mQ/7cbwAj1NvqAgbZYKdZefgo5EsMxsr1pL/3fKhkzZD65+i3hiJKNpbaH9PT8T2NRf/6q/V6rxaQHPAo/FRhKUqVods+8b16GopyyIs+sLBSX+dwx+q8vw4kxgqaTcQUVD8PAYJ+dLBkkXkHZgRkhVF8LPqTworICfOkCvpLpBjVzWyA2GT/eM5X6YJbkn3nqzyVclsDZbMOe/27iNJN6x93KFVE8I8BmkuGLULayqqFphLQg7sqwk2mpvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vaisala.com; dmarc=pass action=none header.from=vaisala.com; dkim=pass header.d=vaisala.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vaisala.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZwwCXNaaoMASbDMPH0u+AvfsicVuqNtvMsaO8I1qxzw=; b=ux+DtYQBRbWInHnxCu83OV0YivwBu93Peooh3a6/ueK4kGnWE3ZEuxJMCwf+F7V3cfGqK1XkxVe4GRdERNbC6Oa4LuEx4f5cxCSEubPp22A1S3Qf0BS2XknGmWHxZFeMdTyh7eya4KEXaif3RvNHR0Nhb6T1M3ZqD+Nsl75k9iQY2MpSBQg3vShhGl2NxACN3WFGNpV9QbJ0067Nl2NS0zbIVc6ZAW+iioPhZuouNz+o0F2N8l7A+w9fXr+RdPZNJRrhVu/Ui5Pv26hbtIJVuF8wMhr6eF+V0tbSRnd6piqoIdCqjZ+owO2djM7tx+/02zs5RFCmVHcxnxLRXpRM/g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vaisala.com; Received: from AS5PR06MB9040.eurprd06.prod.outlook.com (2603:10a6:20b:676::22) by AS8PR06MB7608.eurprd06.prod.outlook.com (2603:10a6:20b:337::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.19; Mon, 25 May 2026 09:43:53 +0000 Received: from AS5PR06MB9040.eurprd06.prod.outlook.com ([fe80::923e:d30b:98c0:c69]) by AS5PR06MB9040.eurprd06.prod.outlook.com ([fe80::923e:d30b:98c0:c69%7]) with mapi id 15.21.0048.016; Mon, 25 May 2026 09:43:53 +0000 From: Tapio Reijonen Date: Mon, 25 May 2026 09:43:39 +0000 Subject: [PATCH 3/3] serial: max310x: honour rs485 properties from per-port DT subnode Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260525-b4-max310x-rs485-dt-v1-3-e6c19b4d5592@vaisala.com> References: <20260525-b4-max310x-rs485-dt-v1-0-e6c19b4d5592@vaisala.com> In-Reply-To: <20260525-b4-max310x-rs485-dt-v1-0-e6c19b4d5592@vaisala.com> To: Greg Kroah-Hartman , Jiri Slaby , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Hugo Villeneuve Cc: linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, devicetree@vger.kernel.org, Tapio Reijonen X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779702230; l=2877; i=tapio.reijonen@vaisala.com; s=20250903; h=from:subject:message-id; bh=Jb0kxdJyG1UrpdSkUvdAsI/xelm6UTv5JvmVG5dDbWE=; b=qEIFzDEXFgIz/fAeXgV+CrSGEinURsR6cC/EInmytyx+JK8BHOwCJ+o+4jY6jKRmKNBulC37g cctPpHJWK98A/sMfUfkpI47RiglLIVE6ht5BQl8AE1hjXkOxUTat2WS X-Developer-Key: i=tapio.reijonen@vaisala.com; a=ed25519; pk=jWBz3VD84WbWgfEgIqB5iFFiyVIHZr52zVBPOm7qiGo= X-ClientProxiedBy: GVX0EPF0004F082.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:401::626) To AS5PR06MB9040.eurprd06.prod.outlook.com (2603:10a6:20b:676::22) 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: AS5PR06MB9040:EE_|AS8PR06MB7608:EE_ X-MS-Office365-Filtering-Correlation-Id: d3ce7356-83b4-4a8c-1935-08deba4221af X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|52116014|376014|1800799024|366016|38350700014|3023799007|11063799006|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: MIY3b2iLWCqV1vENYiX2k/dJotbqbzvdfYnwPlq0KDOvEl2LwnGSpmms5t8BUZqryOCill4t4oo56URVDCGFerQXjQ3USMJswkfgWR0LRLwubWhwEYgvnttEMRsF6/K1xkI7vYQkXIkOymhuWlhYrc3/EhwdBD13xWNi7tDcK1pFAaUI7D1W2Yorv3hUeRl6YtVSVtvvzwS1ltjHROmeyVjljEvyTZSN0EavqBF6tcurwspvI0hEowYbliSNyfz+X68CM9llwv7wsu75oq2YbdvRHH9GexlI++otAFo1UrJl1VoCS6dMC9+Xnm8fPhuyeCK39LpcixmYiR+SFjoec2LQ+J/M4b/Op6kxrrZgSqMIXYuieqlyLD/DB5W/3nLIxZ7L0q3AqJT64ipV4YZdkA+ZwvVyNIqXhu5TzIQdZcoWnwqUoIhXxAuxMtOOylyORcKN/RGYGz6HO7+RG43qxseZ4NIsr5y0GoY4nRhUz6tl6HgOWRVbDcnp6PTobn2c80AN9oHmAFcecqpho3vPdJhDKuZEIbTkGOCv9t6uLGsY/21YXb9iyPVnTIjnDp+GaQi67gW/Q6hQT5WHDTrw9CgBrh0DXtDLE28zLyNe1hog9uesG5SgScrBO3YDZrZk8vm+mirR4X7q5Bpwlyq4P3u28j7AOrN9FFpSeUAy9pKagYA3Iu1pWE5V06o600MbKL0rrxOLHxfI65LVEHtZK+ujy6r9GeiNNJv6erm3Gz3bkK153osk1d6o0HnqdtCC X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS5PR06MB9040.eurprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(52116014)(376014)(1800799024)(366016)(38350700014)(3023799007)(11063799006)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NGcvVzBKcjJEQ09JSDVmMUg5TU1DaWJTNUh3STg4eDBvNVBneGRydlBBL2Fp?= =?utf-8?B?RXBON2lmNEsxOXlNdGJKakJMN29OcjZXYlQxK0lOTUVQaWd4Z3VIZU1leFNk?= =?utf-8?B?bFVUcWVvVHQySUtDdE9HaWtzMVBlUVhwUU5ueXVFcUd1N2gvdEFKc05MUHR5?= =?utf-8?B?Mk9XYVdCWnU3SWk0VE5pTzJWYk5ucVNmZ1ByYjdxNmRablJkcFlXWE1OeGZ3?= =?utf-8?B?MGhaQnowYWhDS3MwQnhJUDFQSmpLSThWbGd2YUlwakN5UkhLOFZ1RGpmMmIx?= =?utf-8?B?U0x6cUVyZlNkZjhzdmVERzNIaWxxdTIzdEV4VEc5blF5MEtkUHdrVlFpR1V0?= =?utf-8?B?L3BTUGI3S2ZWZllZeGZZQWdoQ2lRWG1BTXA4eTBGRVdaODQ1U0NLTk44Umw0?= =?utf-8?B?dWIzRTFtNnFFWGJEZ2lhTTYweWk0a2doQmg1UEExOUVxWnkrbGo0RWkrMlN1?= =?utf-8?B?cnlnUDNzRWNQTG0wUWc2ZzRFajkyeUdwWnlZMEI1ZXM4WFJaNFhONWVFZTg5?= =?utf-8?B?TXJQeG9Lc1MxZmNUV3JWcGZHbDh0UHFpRVVZVGhKNTVtRkF1QkVWS2lNamUy?= =?utf-8?B?NEpKYU04QkJHamRuL3dZVzVNRlJTWmhSVWdaaGlkbThuK1lMRDlrbWZicGR6?= =?utf-8?B?V1dLbjZ4a0FUMTBtQlBKNmFuWDFndDgyVHZRbTVMVWtRdWVSM0xKQ0hZc1FI?= =?utf-8?B?ZEJtWm56YzE0RGdjZjM5dXZqajFNRzRCd2tkTTcvREN1WDRwcTZhbDBMNWRv?= =?utf-8?B?a2xXTWMvNHJDeEcvQ2JuVU0ycW9sY2NidExoR05kSU1yMW5nbnBoRjhYUUx2?= =?utf-8?B?Y1R0Q1EvYmJWelJYK3hZeGRUaURKbE5pN3pRTm5EckdPRy96b2YzK3hwM09p?= =?utf-8?B?NmtDWFlZam4xaHRpTVoxeGwvZUlXT1JQa0hhemgxWm1zTFlhcHgya3lKVWJS?= =?utf-8?B?a2tyS2hmNjFDVmEzd0h6a3VwakxWTWIrd3JCSjFkdHBGVVlrTXBTYnZmdW5C?= =?utf-8?B?cFhkeVlMbk8zcWpLYVRIaFlUbEJOTlhnY1JHTzdqZ0tveHFXQ3YzYmVnL0x6?= =?utf-8?B?c1FLVVZtSjRUVHNxR1pUZzJkU2Vsa1FaYkZoWGFONERWMGtRSTdWVERFbEI4?= =?utf-8?B?VlVHTTJUUmtNYXJGQkoyTXp5cFZQSldKSGVIekx2Q3JMY3ZPc1RXT1k4WFZv?= =?utf-8?B?R1VVMnJieE14dk1mSFo2WjFod1R4M1VDOHRzbGNVUUZDbkhocEJmeUFVV2Jt?= =?utf-8?B?NWxxd1RzenJ0UTNBV25vRG1QUVRma2VuM3VXZlo3cG9ES2hMRm5sc1Q1U2lj?= =?utf-8?B?WHFEUm1FV3ZlQllsNGN0ZlFkMkZLSXhSR1RRdmVCS2Y1cHpGQVA3azZXZkVz?= =?utf-8?B?YTFHc0oyeEJlQ0ltUmlRRktYSTdUWVVGRkhVNXZDV3hvR2JaelAxelNTL0hi?= =?utf-8?B?VW9JL2JRZHFCNEc0bmRWUTl5ZVptVU1UVGtiVVA1ZkdLSmpqUlUxYXhMVVFF?= =?utf-8?B?YmVBZm40d1NRQnIrS0tWWDNJY1ArU1VWNFVBSVNlaGxCQm1kQVJwVG5xc3Rw?= =?utf-8?B?aGhmUmk5aDJDN25jMTUrM0p6cE16d3Y3ZTIwbHRYay94Rmh2YWl4ME5iQzRy?= =?utf-8?B?cHBYMnlIbEw0NjJkYk1yWEpKYk5iTUdMdzMvNWcrK09Nc1ZuUnFhZHVCd0NT?= =?utf-8?B?d0ZPZ3F0bFpPOFQ3R3FnbmFVNXZma1FTdWZCN2V0VlE3UUZoVVVUbmY2aHpU?= =?utf-8?B?TWVkSTZMaWZldG9rQVVZM1dyUGpoODN6U3h5aDZQQzFPY3M4T3BWekJZeFN1?= =?utf-8?B?UTRTQlJrVWp3cVFhV2JLN3VWRWdSeWtFRUwrWjBKQng5NllnWHNHdUtLc2tT?= =?utf-8?B?VzRjdjBJY1o4dmFibzcwSkhjNjJJdkVkSGREK3NPMitPemlROFhsNStCTjkw?= =?utf-8?B?ZDBYSzBhWGE5cHhPeGxkVXA1dlYrREVvNWVtUG4yT1c5RS8veE1zOG5qTGhP?= =?utf-8?B?US9LU2pSSlBiOCtjTjBWR1dkUks4dG1XR3VHQU5zUEcyeGFWVitmekVTRVAz?= =?utf-8?B?UGVjelZlek1qM0lCbDJSdDJLc2pNTCswLy9rdjY5V0pXeWFrTkpKWnZCbG5E?= =?utf-8?B?ZVdHK3A2cTk2ckRCMURUd3NlQ0IrNHExemlEWUpJSktwd2QweldHOStlc1hQ?= =?utf-8?B?dHVVNWlEUGx2SFNtN3I0bkQwUDA1eno3N0tLdlhWYnE5Qzc0dDdYMDcyenZN?= =?utf-8?B?RHFobWhxek1HaklLbFE2Y29Na0xVVU9nWEZEL0ttd2I1T1VPN1Nxb0xYWi9F?= =?utf-8?B?YUpieDZWSEl6TGNRN2gyeGdERk5RV1lMYThBVS95eDlCaUo5R3R4VXIyYzVp?= =?utf-8?Q?ClgIWQx7mNUewbog=3D?= X-OriginatorOrg: vaisala.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3ce7356-83b4-4a8c-1935-08deba4221af X-MS-Exchange-CrossTenant-AuthSource: AS5PR06MB9040.eurprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2026 09:43:52.9904 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 6d7393e0-41f5-4c2e-9b12-4c2be5da5c57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Rz1qPnPyg+SQAymcl8ZPWIukITPg5Jo51Ev9x2eoy2sQVd/ZBCwHmqNveysUD94C0jRWXX/QijmjfHPtCzFoLmxbtTbSRXsNgAOuuKXWnfQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR06MB7608 The MAX310x DT binding pulls in /schemas/serial/rs485.yaml via its allOf list, advertising the rs485-* properties defined there - none of which were honoured at runtime, because the driver never called uart_get_rs485_mode(). All ports share the parent SPI/I2C device, so uart_get_rs485_mode() called directly on each port would read the same chip-level fwnode for every call. Walk dev->of_node's children for the one named "port" with matching reg, and temporarily retarget the parent device's fwnode while uart_get_rs485_mode() runs, so each port picks up its own subnode's properties. Probe is serialised, so the swap is safe. For single-port variants (max3107, max3108), fall back to the chip's own fwnode when no port@0 subnode is present, so existing DTs that declare rs485 properties at the top level keep working. Signed-off-by: Tapio Reijonen --- drivers/tty/serial/max310x.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c index 5cb7d01e404663dc25b88bc7b4f8df61be2135ec..745498034293cf74c8b4d25b457= 39e787f1843de 100644 --- a/drivers/tty/serial/max310x.c +++ b/drivers/tty/serial/max310x.c @@ -1426,6 +1426,9 @@ static int max310x_probe(struct device *dev, const st= ruct max310x_devtype *devty #endif =20 for (i =3D 0; i < devtype->nr; i++) { + struct fwnode_handle *saved_fwnode =3D dev_fwnode(dev); + struct device_node *port_np =3D NULL; + struct device_node *child; unsigned int line; =20 line =3D find_first_zero_bit(max310x_lines, MAX310X_UART_NRMAX); @@ -1435,6 +1438,40 @@ static int max310x_probe(struct device *dev, const s= truct max310x_devtype *devty } s->p[i].port.line =3D line; =20 + /* Locate the matching "port@i" DT subnode, if any. */ + for_each_available_child_of_node(dev->of_node, child) { + u32 reg; + + if (!of_node_name_eq(child, "port")) + continue; + if (of_property_read_u32(child, "reg", ®)) + continue; + if (reg =3D=3D i) { + port_np =3D child; + break; + } + } + + /* + * Temporarily retarget dev's fwnode to the per-port subnode + * so uart_get_rs485_mode() picks up the per-port properties. + * For single-port variants, fall back to the chip's own + * fwnode so legacy DTs that declare rs485 properties at the + * top level keep working. + */ + if (port_np) { + device_set_node(dev, of_fwnode_handle(port_np)); + ret =3D uart_get_rs485_mode(&s->p[i].port); + device_set_node(dev, saved_fwnode); + of_node_put(port_np); + if (ret) + goto out_uart; + } else if (devtype->nr =3D=3D 1) { + ret =3D uart_get_rs485_mode(&s->p[i].port); + if (ret) + goto out_uart; + } + /* Register port */ ret =3D uart_add_one_port(&max310x_uart, &s->p[i].port); if (ret) --=20 2.47.3