{"id":2227591,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2227591/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260424-ds90ub953-v6-2-7a84efbab316@oss.nxp.com/","project":{"id":42,"url":"http://patchwork.ozlabs.org/api/1.1/projects/42/?format=json","name":"Linux GPIO development","link_name":"linux-gpio","list_id":"linux-gpio.vger.kernel.org","list_email":"linux-gpio@vger.kernel.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260424-ds90ub953-v6-2-7a84efbab316@oss.nxp.com>","date":"2026-04-24T01:42:25","name":"[v6,2/4] media: i2c: ds90ub953: Add back channel GPIO support","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"83a5e08373a352a61b49bf98c8f967791b799d3b","submitter":{"id":86694,"url":"http://patchwork.ozlabs.org/api/1.1/people/86694/?format=json","name":"Guoniu Zhou","email":"guoniu.zhou@oss.nxp.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260424-ds90ub953-v6-2-7a84efbab316@oss.nxp.com/mbox/","series":[{"id":501274,"url":"http://patchwork.ozlabs.org/api/1.1/series/501274/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/list/?series=501274","date":"2026-04-24T01:42:23","name":"media: i2c: ds90ub953: Add back channel GPIO support","version":6,"mbox":"http://patchwork.ozlabs.org/series/501274/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2227591/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2227591/checks/","tags":{},"headers":{"Return-Path":"\n <linux-gpio+bounces-35450-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector1-NXP1-onmicrosoft-com\n header.b=xdVtIpRn;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-gpio+bounces-35450-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com\n header.i=@NXP1.onmicrosoft.com header.b=\"xdVtIpRn\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.72.25","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=oss.nxp.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=oss.nxp.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=oss.nxp.com;"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g1wfP0zxdz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 11:41:17 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id B2B7A3020FE6\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 01:40:19 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id B70F12773DA;\n\tFri, 24 Apr 2026 01:40:08 +0000 (UTC)","from AM0PR02CU008.outbound.protection.outlook.com\n (mail-westeuropeazon11013025.outbound.protection.outlook.com [52.101.72.25])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id EE1F1277C96;\n\tFri, 24 Apr 2026 01:40:06 +0000 (UTC)","from AS8PR04MB9080.eurprd04.prod.outlook.com (2603:10a6:20b:447::16)\n by VE1PR04MB7455.eurprd04.prod.outlook.com (2603:10a6:800:1a1::23) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr\n 2026 01:40:03 +0000","from AS8PR04MB9080.eurprd04.prod.outlook.com\n ([fe80::92c2:2e03:bf99:68eb]) by AS8PR04MB9080.eurprd04.prod.outlook.com\n ([fe80::92c2:2e03:bf99:68eb%6]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026\n 01:40:03 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776994808; cv=fail;\n b=Wiw1BnBY9BflVY2cZki6+1WB1exWA/cuKKurrMkKNF7ljPDzZzYY/7K1d1aGJupcIpToRJDmtN/9I8MrJ0Q6rtA5gkUjOX390z691YLTNCzmO2C+WG5eO+Q2hkdkUWzWNLahoLzglLbM6xi/LFFsyU76ClQNFOQEV2a6nVPKeZM=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Zn1Ci4ukIUrW0Dm3gp5EykA/Q/6HxaLBXpeNjSLP91kqmmAu+GWJ7Lg8XQSCVrLAj+AB6VvhGzKC6RivKwytv6xKhXYD6hFr/8TTZHMRLbRY8We911laf38xJJA+SpbSR7s7ywT+SUZvvPJmoYaaNVUvZS0UnxJmBFObnqUyUVT7UbbphqxefqdSxcLuQr+g4yDuEA6ABpwT1gKfOGd/CAYeEBIRTw2WqIVRM0nQhte2gk1Qaa7Gks6ZV2yY7hK7DopZ1OFJxNosmr4vyjyG39gjVgfj0AqJu0UkKXarRgiiPrHknTa0m+upLYYYnwC3E4IGYpR02CjYwdFJ3tHW6A=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776994808; c=relaxed/simple;\n\tbh=BYLUvPpfzaIBNeRQovwvRJKp2H9g8OyEni8+ktXRgvs=;\n\th=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To:\n\t To:Cc:MIME-Version;\n b=OShKb0TNwL2vOUfyWJb6BhgainWZ0xc8RsL26ZQrN3ebuEyZSCAvRu7SjhKnbHB/skAEnRb+tkHtQw5Xm+dVLsh1GapP0K96KktEZbEJSojeMZJZYD7yAclAzx3F6Gb4wgy49Pf8qTGeTDl27Pvg3QXkzp/TxI0FMn5rit9hMIU=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=62f+Qx0wlmDEkQvxsskjpFYSF7HYxHmyfReCsejF4Rc=;\n b=YwoBqixEz/6QL9GTjwKBp+ZzwKwEPvGVfXg60nTEjWc+nPiPWppFhqA0r34YkOx/0VKYIXqj0HxdpKcwI2wPUDE8cpASpHZCuI1xDZUfjo4/99miCksrHgG5w9fxVfeN1gikh3ef5oMRttM6CrT4J0CJ2MXuUij8hHJgIjU33TRoW4H8vzVjwX7IPlVLxQB+Edr/K4F+Ok49tw/T4RuLrlz+Vh2YB9AU8mItZx+SlYZOtI6Bb6XoOyDwMnwnh1eISYodSLPd94F5dUF52oootBTnKa5yft/EWU1GoywLV2wLWXy8ljaPttAjWoVhH8cYIY1/XGWC5Fyjm18AenG4Iw=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=oss.nxp.com;\n spf=pass smtp.mailfrom=oss.nxp.com;\n dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com\n header.i=@NXP1.onmicrosoft.com header.b=xdVtIpRn;\n arc=fail smtp.client-ip=52.101.72.25","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com;\n dkim=pass header.d=oss.nxp.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com;\n s=selector1-NXP1-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=62f+Qx0wlmDEkQvxsskjpFYSF7HYxHmyfReCsejF4Rc=;\n b=xdVtIpRnCQmD7yJdbk+L+nq7eENdHD7FQbZvQBYpRNliNPod0y77f4vFUt4ZoeN4zTLs4H48kGdXg+0YTno3AulAvT1GAarDyHGzB5+MBxY4YIQYKTnYX3Ro/kBnmnVzugUOLLQpSxPA0HrG4nfIlVKVGkUpy/5lt1B/eKkU7N4mlVypJLI5R4bRznvxBkJDOoWjS2jrnctGSpQt2Jwrp6AuIck+8VI/gLXrYWXJAHDibk00MMVneflcFYZnpt8PPw8DZQ5AlAM16E7wutIgRcfYrrp274qvQWdqRvYag5TqEp06rlpXzYKtKvwxKY8nRZ7pt76oft1vwMznypqncw==","From":"Guoniu Zhou <guoniu.zhou@oss.nxp.com>","Date":"Fri, 24 Apr 2026 09:42:25 +0800","Subject":"[PATCH v6 2/4] media: i2c: ds90ub953: Add back channel GPIO\n support","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","Message-Id":"<20260424-ds90ub953-v6-2-7a84efbab316@oss.nxp.com>","References":"<20260424-ds90ub953-v6-0-7a84efbab316@oss.nxp.com>","In-Reply-To":"<20260424-ds90ub953-v6-0-7a84efbab316@oss.nxp.com>","To":"Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,\n Mauro Carvalho Chehab <mchehab@kernel.org>, Rob Herring <robh@kernel.org>,\n Krzysztof Kozlowski <krzk+dt@kernel.org>,\n Conor Dooley <conor+dt@kernel.org>, Frank Li <Frank.Li@nxp.com>,\n Vladimir Zapolskiy <vz@mleia.com>, Linus Walleij <linusw@kernel.org>,\n Bartosz Golaszewski <brgl@kernel.org>","Cc":"linux-media@vger.kernel.org, devicetree@vger.kernel.org,\n linux-kernel@vger.kernel.org, imx@lists.linux.dev,\n linux-gpio@vger.kernel.org, Guoniu Zhou <guoniu.zhou@nxp.com>","X-Mailer":"b4 0.14.0","X-Developer-Signature":"v=1; a=ed25519-sha256; t=1776994953; l=3804;\n i=guoniu.zhou@oss.nxp.com; s=20250815; h=from:subject:message-id;\n bh=gje9vH51hA/z/uPiO/U0Y8u7/GSL19gAMVItmcpKXyk=;\n b=q43dFBgNL4z/+VXHauQ9fUK8YnfNzkB9mxBz9RpCxdOv7i+f6tGklJiSgUT4AKbqjG+Ahf+V4\n WsyiVBodJJ0AGUVp7SjS7ueWGhty8eFzescrFZw6Okm6v3MVuNtxol+","X-Developer-Key":"i=guoniu.zhou@oss.nxp.com; a=ed25519;\n pk=MM+/XICg5S78/gs+f9wtGP6yIvkyjTdZwfaxXeu5rlo=","X-ClientProxiedBy":"MA5P287CA0164.INDP287.PROD.OUTLOOK.COM\n (2603:1096:a01:1ba::16) To AS8PR04MB9080.eurprd04.prod.outlook.com\n (2603:10a6:20b:447::16)","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-MS-Exchange-MessageSentRepresentingType":"1","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"AS8PR04MB9080:EE_|VE1PR04MB7455:EE_","X-MS-Office365-Filtering-Correlation-Id":"bab77a13-dd2c-46d9-e6e0-08dea1a267d2","X-MS-Exchange-SharedMailbox-RoutingAgent-Processed":"True","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|19092799006|56012099003|22082099003|18002099003|38350700014;","X-Microsoft-Antispam-Message-Info":"\n\tYoJI5KE5RITuPs+mO9YhtZlRw6zc/D7kUppwBUhqgBR87zxfgDJZY3V4Mxz7bQY6HV7KxVL3epBZJNgHWNH1x3df4HHZDcmmPBtlWE2iTchdWvgOa1D3+epSyoiyaCOJUE8M0ERtLXpO9m5D1SbXPLVwah/4x5A0DL7h+ZX0lJGrHSKcnCMxkkSKIUfprTHuD7uqFmVmLHb10V9rk0c0H3jAaJbF2A8L1Y7lq/Tzda7PnO6QylTI9FeDUrAFYjX16oh4oo49S9eccXpMjHTGtG/XA6MZpWSmADpIYsuLAxYht8P8kE4Wl3wwqAEfyW6tDb69/LT+uSEhzfyGR7SZeg942hRjKXic6pYvagm4J4CoIHXEM71SVZChPZVpoe5hkWOTME8N89M1ScaY9EAT9Pt8GG8W0GXw8xmVv6klHGUzDh5P2UcV7lcqKVBhcHJMkYgoSo4p/B+O7+Tb/ao4lU+7vFofAWJsW5cg6CRBPQODXOgcI3TgbrWApzsJfxE+uL1V41qPgpb/V5nZHLwogtw+r30N7kY3QyyoPgiWtOIkwgGvFy0nRPHEmwYVNJY74ZbxXh7hVJPY7FvBsun2AkAwLnTg24uIKZbW4jFH3un93NgOet4QEmMl7Scfp2HEbtWPlf3ZKRQg9xjaz2+iYfLcEnxrt5dKlUO8XT36wYSxmysx9HOIKleYV/b3PAjPdKNlaSN+sdJwUg2Cv0t0T9xfhfUXLXL2ajvDXNa2j/WbU0q5u9fqKULKnuiYtzNocxFKzfrka6IzkkMnJaFScmfWFWZoFKQNL8VQZS/7gz8=","X-Forefront-Antispam-Report":"\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB9080.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(19092799006)(56012099003)(22082099003)(18002099003)(38350700014);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?I6++cmk8RV9ug4H1/BpuUEOrI38E?=\n\t=?utf-8?q?OmlAylnE6c9L8YOusGFsxE7CtRCJ+M0XG4V0eU5LImYEk/SDo492hpdABQSL4Q2gN?=\n\t=?utf-8?q?IhqYaRWL0b7ec1Gl0XM8unDk3ep4PEawiQHptdgQ5tM+zlGnPh2fkUtrV61PnJWy1?=\n\t=?utf-8?q?PZn7crmRZFpAl//NZzj8c0dBcuLeBdD7yn484Sjkw1MKzOtz/wB1EH5xnTLcnBlu6?=\n\t=?utf-8?q?a92iDIxhjUsfmHMbox6IkRBEKzMFBby3sCRgKB4Tv+XtGy3VGBxsVmHhM0+BQhkWQ?=\n\t=?utf-8?q?bY9yBLRjsbfpE18MTcrimb4O9kzkuUwyNXGFfyM2vhvYNLUtdlOlD9rrHMa7On6Bc?=\n\t=?utf-8?q?q7vadA0qPI7vfpO7mb5fzxvZCMixPqtsgZT05eZ0dGd1rzR6NVxpzMs2nZgmCcw+W?=\n\t=?utf-8?q?NYq5yG510fk/qG0VMaQoiHjZ/9ovKaew81EQXA7KevYLEOrioyOpAb4wkjL4sFXzM?=\n\t=?utf-8?q?U7KMnR496A1EPG04KEovt867C+7eR3psozONHKvkpxrarHbcrIDRpA1KV6+OTe4vg?=\n\t=?utf-8?q?WbXBcPRoY4DlKF7qPzr27r+8Q21uU9RNbwwmex+FjxpBUXIigt13YVYN5TLbEAhoD?=\n\t=?utf-8?q?sA2BkvpyxZBpGKPrX60j+dtF7wvxk3uqLEUkCG+cmqGH2riZ5KGxjKJaC4H/4W8vn?=\n\t=?utf-8?q?PcCNZ1Gu8AcuDP0P93I+i2cjO0ZsVC7l8gCi3e4FKf/aSC4I7ikVMMqMnBDfB0ACy?=\n\t=?utf-8?q?aybygUzZECS1P8aT7uRE5P2k+VnJfPuNPYc2/ReGcdEICMaDqddRaL6tPKxMEQ5Oh?=\n\t=?utf-8?q?wbrCiGUjXL2smXrGaYJVBsQ2UN9odU6kwrXXiIflDTVchWcZ5WuLTzdiSnC4UZCQ9?=\n\t=?utf-8?q?6nepdPzwczcLjCAQmJyYXrp0yYSVfvA5Lph6WGYq9XqsjUz6+xKbZ3sUjqw8Jsh8Y?=\n\t=?utf-8?q?Xf+HtsH8gkH/Y7d4akSC5lUmZ9y01l2sO5CdaUv1Tyhz4xXqsL0ZvePawsNcDcOgh?=\n\t=?utf-8?q?dchf3X22HRWoGPLCPNULMcVP08qR7gvbqotEcX0chvp43tCzqSE1WqfGVHC+Uli3I?=\n\t=?utf-8?q?QRcozKmBBjBw2jdkZBlHQgOeaumP8lVaFuFNkauD4ban44DBWYCyvlIS1yeKq8YkH?=\n\t=?utf-8?q?R03hbhFrfjpg356ehV83geLn1FDe74iWdBZFqzH+yHEr+zBKtGOmx17UP36RqRps0?=\n\t=?utf-8?q?M3Y/YkCn+dTc5rYQy4TFg0ts2HY5hMzyLp4mMcBvBg277CuCG0xQXB2nfCI76DXzm?=\n\t=?utf-8?q?FelDM/28zw/f6ASYWAhWhV2BdTWl11NWLuvdhilm7milpSW2mUV0v7kvW6jt/MVM/?=\n\t=?utf-8?q?5/Y29++0IBaDEOfKoYcFB4xLVWgFA883rXhMkE30IwiRBVYWEkxvAF4XkaXXuMJpH?=\n\t=?utf-8?q?bpcSR6GC5Q0p1BNONGvNk0JBRcz/cyqUd9tTWIAAMlVX0BdniU34+JdVs73+yqE3v?=\n\t=?utf-8?q?tN8RgtZT4HYG7GhXbw+YmIOAiq+T6K/Pka44km9l6nWnG0hB6/0TZWrthhkZO1rUP?=\n\t=?utf-8?q?KokT0SsO8nm8MDbPwAUlzmjg0c6h9G9qb0g5/OQG7+O3qVN+Khl+RWR+P6gVRczhI?=\n\t=?utf-8?q?GIfvmzXxapIE7zA0+yG+jAeMnRA9ZUZnS1YzK9iSU4wowSbguvfA+yTXM8QNimEMw?=\n\t=?utf-8?q?PtaXykoPm2GdgDIyzulUD6iJFP/Iv7xwKBlKdzqFJ9i6Vh9KYL/RWi3rqKNF65bzV?=\n\t=?utf-8?q?/TZ7PT5IlErunMWMQQzsaF0Z7vnwF7zg=3D=3D?=","X-OriginatorOrg":"oss.nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n bab77a13-dd2c-46d9-e6e0-08dea1a267d2","X-MS-Exchange-CrossTenant-AuthSource":"AS8PR04MB9080.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"24 Apr 2026 01:40:03.3080\n (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 MmIhQoQ4WuKgMIk4JK4Cwm4T6A3rLYlZOLdWp43aiEQ7KI/Sq+bX8veuy6f2F0t9yBsDfjwiDOHenlyJJtw4jg==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"VE1PR04MB7455"},"content":"From: Guoniu Zhou <guoniu.zhou@nxp.com>\n\nThe ds90ub953 supports GPIO0 through GPIO3. When enabled as an output,\neach GPIO pin can be programed to output remote data coming from the\ncompatible deserializer using the register LOCAL_GPIO_DATA[7:4] field.\n\nAdd back channel GPIO support by parsing flags from device tree.\n\nSigned-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>\n---\nChanges in v6:\n- Changed approach from extending GPIO range (v5) to using a custom GPIO\n  flag (GPIO_DATA_SOURCE_REMOTE) as suggested by the driver maintainer\n\nChanges in v4:\n- Only log GPIO 0-3 stats since remote GPIO 4-7 reuse GPIO 0-3 pins.\n\nChanges in v3:\n- Update driver to expand GPIO range.\n\nChanges in v2:\n- Parse gpio third cell to select which GPIO pin the data from remote\n  compatible deserializer.\n---\n drivers/media/i2c/ds90ub953.c | 51 ++++++++++++++++++++++++++++++++++++++-----\n 1 file changed, 45 insertions(+), 6 deletions(-)","diff":"diff --git a/drivers/media/i2c/ds90ub953.c b/drivers/media/i2c/ds90ub953.c\nindex a8ab67f4137f..da63dcfbbbc3 100644\n--- a/drivers/media/i2c/ds90ub953.c\n+++ b/drivers/media/i2c/ds90ub953.c\n@@ -27,6 +27,8 @@\n #include <media/v4l2-mediabus.h>\n #include <media/v4l2-subdev.h>\n \n+#include <dt-bindings/gpio/gpio.h>\n+\n #include \"ds90ub953.h\"\n \n #define UB953_PAD_SINK\t\t\t0\n@@ -71,6 +73,7 @@ struct ub953_data {\n \tbool\t\t\tnon_continous_clk;\n \n \tstruct gpio_chip\tgpio_chip;\n+\tu32\t\t\tgpio_flags[UB953_NUM_GPIOS];\n \n \tstruct v4l2_subdev\tsd;\n \tstruct media_pad\tpads[2];\n@@ -258,6 +261,12 @@ static int ub953_write_ind(struct ub953_data *priv, u8 block, u8 reg, u8 val,\n /*\n  * GPIO chip\n  */\n+\n+static inline bool ub953_gpio_is_remote(unsigned int flag)\n+{\n+\treturn !!(flag & GPIO_DATA_SOURCE_REMOTE);\n+}\n+\n static int ub953_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)\n {\n \tstruct ub953_data *priv = gpiochip_get_data(gc);\n@@ -288,13 +297,23 @@ static int ub953_gpio_direction_out(struct gpio_chip *gc, unsigned int offset,\n \t\t\t\t    int value)\n {\n \tstruct ub953_data *priv = gpiochip_get_data(gc);\n+\tbool is_remote = ub953_gpio_is_remote(priv->gpio_flags[offset]);\n+\tunsigned int mask, val;\n \tint ret;\n \n-\tret = regmap_update_bits(priv->regmap, UB953_REG_LOCAL_GPIO_DATA,\n-\t\t\t\t UB953_REG_LOCAL_GPIO_DATA_GPIO_OUT_SRC(offset),\n-\t\t\t\t value ? UB953_REG_LOCAL_GPIO_DATA_GPIO_OUT_SRC(offset) :\n-\t\t\t\t\t 0);\n+\tmask = UB953_REG_LOCAL_GPIO_DATA_GPIO_OUT_SRC(offset) |\n+\t       UB953_REG_LOCAL_GPIO_DATA_GPIO_RMTEN(offset);\n \n+\tif (is_remote) {\n+\t\t/* Enable remote deserializer GPIO data on local GPIO */\n+\t\tval = UB953_REG_LOCAL_GPIO_DATA_GPIO_RMTEN(offset);\n+\t} else {\n+\t\t/* Set output value on local GPIO and disable remote mode */\n+\t\tval = value ? UB953_REG_LOCAL_GPIO_DATA_GPIO_OUT_SRC(offset) : 0;\n+\t}\n+\n+\tret = regmap_update_bits(priv->regmap, UB953_REG_LOCAL_GPIO_DATA,\n+\t\t\t\t mask, val);\n \tif (ret)\n \t\treturn ret;\n \n@@ -330,10 +349,30 @@ static int ub953_gpio_of_xlate(struct gpio_chip *gc,\n \t\t\t       const struct of_phandle_args *gpiospec,\n \t\t\t       u32 *flags)\n {\n+\tstruct ub953_data *priv = gpiochip_get_data(gc);\n+\tstruct device *dev = &priv->client->dev;\n+\tu32 pin;\n+\n+\tif (WARN_ON(gc->of_gpio_n_cells < 2))\n+\t\treturn -EINVAL;\n+\n+\tif (WARN_ON(gpiospec->args_count < gc->of_gpio_n_cells))\n+\t\treturn -EINVAL;\n+\n+\tpin = gpiospec->args[0];\n+\tif (pin >= UB953_NUM_GPIOS) {\n+\t\tdev_err(dev, \"Invalid GPIO pin number: %u\\n\", pin);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\t/* Store GPIO flags for each pin */\n+\tpriv->gpio_flags[pin] = gpiospec->args[1];\n+\n+\t/* Return standard flags to GPIO core */\n \tif (flags)\n-\t\t*flags = gpiospec->args[1];\n+\t\t*flags = gpiospec->args[1] & ~GPIO_DATA_SOURCE_REMOTE;\n \n-\treturn gpiospec->args[0];\n+\treturn pin;\n }\n \n static int ub953_gpiochip_probe(struct ub953_data *priv)\n","prefixes":["v6","2/4"]}