From patchwork Mon Jan 22 16:32:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 190252 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2bc4:b0:101:a8e8:374 with SMTP id hx4csp2723919dyb; Mon, 22 Jan 2024 09:31:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IG/bXlCRfe6sUDmPgBp50DtHlOGAW88Y0TbLHCOnGfzIVtmgkfaPF4jjk5HLj747JyBpotz X-Received: by 2002:a05:6214:2242:b0:67f:8fda:6479 with SMTP id c2-20020a056214224200b0067f8fda6479mr6825402qvc.65.1705944684933; Mon, 22 Jan 2024 09:31:24 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705944684; cv=pass; d=google.com; s=arc-20160816; b=prmPoSHFUsxbXNJczeFFFUUsPJ1OF7DV5NHU0vE1XXRR00PgMJxILEMru7zOFzpL9H m4p2X3cf2xBQpqYpxYChK3QwEzGWSUtTEkLgpxRjD84v7FEYz9e3IybrvgClbhOawN3b YmH0VcPAZnUXk1aM9fYIeCQszIboVFu+KrcqpHiOr3n1Dv2XzJRqsXU1B1Te2wBtvjz0 WLy1eeMauMNofrtGnliAx5bYb2LQtavBAb0HlMG1ShTwPT2fdXnm20MdtPjXYI1G6Rn4 M2wXYq8LQoI6ZvTtPJSDvSLNcFznrK1uXsBhy3mOxHLYRpleC6dG+cDrp90lWB0RxFvB YT1Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=/ZyqSCinvSiL4fDcqtQAts8Vz4wSQZ3zHH00t6lYeGc=; fh=cWC6IsLg7ATnMbCDrUvpyHjWPdsyZdwr+efYDPOTcPI=; b=tj9Mt0V3MCrf5PVELWUhKhzJ00kRm7M9C9IZWk7kSWJ1rs2jUtzgGUu4Vt0DZ31kuB xvrSmeOrkOWu+kz6URyahpHkWioFE8Hq9gvgrqMKoqx3rbu6oDDiuwhu+nxzZAZLDMG2 ii+nkXjjn/qwAhOzqGUkDFbQAzsp6K88dyx5N63COq/iuREc7261DicinW1rK23bLGCj wVGlR7denwMa5fxZDvZLU5zOHhsF3pv4z9lXXQCOomPmjZndBcJjcqFKXwXYzvp6z84f BtlG+mTXWzdwP4hg33lwb8wwWvLpN1yMEQiqHA4xGxf4LOrMpkJXJWZM5fNXiZbR4sZ9 Eb0g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=TfmmHLC0; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33697-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33697-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id p14-20020a0ccb8e000000b0068538278ac5si5919686qvk.253.2024.01.22.09.31.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jan 2024 09:31:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-33697-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=TfmmHLC0; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33697-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33697-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 5A56D1C27B0A for ; Mon, 22 Jan 2024 17:30:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2651E6EB69; Mon, 22 Jan 2024 16:32:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="TfmmHLC0" Received: from out-184.mta1.migadu.com (out-184.mta1.migadu.com [95.215.58.184]) (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 C5CEE56466 for ; Mon, 22 Jan 2024 16:32:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.184 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941154; cv=none; b=VFLqFiOO1wddI2jUWPGTW5Lq38MDC6NU/QZBbPDGDuLkFKkRuTFUo+z2RId4/pnQcfcNQwYItZMfpApQHCCu065SHHQ9UvQfVXmcSWxc79JehW93boyyjTLV+Y0vF2pJ03xD7Si4qNfpeCLMHWGcDIBZRhPwvfQ2HU1NsjN9VYM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941154; c=relaxed/simple; bh=DwdD6zYzvMmBjpFbhFoxVjCRnvL6HtMflRTaIw5v7Hc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AodsWgs3hsCBmNK/Exn8PGdc8nn7dE7n+YKUcZZ96KwsBNDerBYRug8tF4u/VzA7d/qOpNqlEQX88JM/d6CAO7eyz7oPtV90Nkydx8zY/A1erTTu4jFzShuZQRrb/nXJDvcvJk0N9QNZLN92fMZ4L6sfKWHH3kUp6mhHDLUmUl0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=TfmmHLC0; arc=none smtp.client-ip=95.215.58.184 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1705941150; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/ZyqSCinvSiL4fDcqtQAts8Vz4wSQZ3zHH00t6lYeGc=; b=TfmmHLC0CAWOqzvzLqf1L/MTDspqvJzrDKRUwwMzj7inwa16XjnR2Tc2kGpy8/XOtAxC5y FZ/z5XqynfDN2uwB1h9t1103vC4umTIdhWDG2mMkQerFy1k2CqdwtFg5La3Azbyq64MW9l 5EUs+pR2o4Mq+U2jhmcAvoamKOVYCRY= From: Sui Jingfeng To: David Airlie Cc: Neil Armstrong , Maxime Ripard , Thomas Zimmermann , Daniel Vetter , Laurent Pinchart , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Sui Jingfeng Subject: [PATCH 1/5] drm/bridge: Add drm_bridge_find_by_fwnode() helper Date: Tue, 23 Jan 2024 00:32:16 +0800 Message-Id: <20240122163220.110788-2-sui.jingfeng@linux.dev> In-Reply-To: <20240122163220.110788-1-sui.jingfeng@linux.dev> References: <20240122163220.110788-1-sui.jingfeng@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788812653667380441 X-GMAIL-MSGID: 1788812653667380441 Because ACPI based systems only has the fwnode associated, the of_node member of struct device is NULL. To order to move things forward, we add drm_bridge_find_by_fwnode() to extend the support. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/drm_bridge.c | 33 +++++++++++++++++++++++++++++++++ include/drm/drm_bridge.h | 4 ++++ 2 files changed, 37 insertions(+) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index cee3188adf3d..ffd969adc2fb 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -1347,6 +1347,39 @@ struct drm_bridge *of_drm_find_bridge(struct device_node *np) EXPORT_SYMBOL(of_drm_find_bridge); #endif +/** + * drm_bridge_find_by_fwnode - Find the bridge corresponding to the associated fwnode + * + * @fwnode: fwnode for which to find the matching drm_bridge + * + * This function looks up a drm_bridge based on its associated fwnode. + * + * RETURNS: + * A reference to the drm_bridge control structure if found, NULL on failure. + */ +struct drm_bridge *drm_bridge_find_by_fwnode(struct fwnode_handle *fwnode) +{ + struct drm_bridge *ret = NULL; + struct drm_bridge *bridge; + + if (!fwnode) + return NULL; + + mutex_lock(&bridge_lock); + + list_for_each_entry(bridge, &bridge_list, list) { + if (bridge->fwnode == fwnode) { + ret = bridge; + break; + } + } + + mutex_unlock(&bridge_lock); + + return ret; +} +EXPORT_SYMBOL(drm_bridge_find_by_fwnode); + MODULE_AUTHOR("Ajay Kumar "); MODULE_DESCRIPTION("DRM bridge infrastructure"); MODULE_LICENSE("GPL and additional rights"); diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index e39da5807ba7..fe3d5f4bf37f 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -720,6 +720,8 @@ struct drm_bridge { struct list_head chain_node; /** @of_node: device node pointer to the bridge */ struct device_node *of_node; + /** @fwnode: associated fwnode supplied by platform firmware */ + struct fwnode_handle *fwnode; /** @list: to keep track of all added bridges */ struct list_head list; /** @@ -796,6 +798,8 @@ static inline struct drm_bridge *of_drm_find_bridge(struct device_node *np) } #endif +struct drm_bridge *drm_bridge_find_by_fwnode(struct fwnode_handle *fwnode); + /** * drm_bridge_get_next_bridge() - Get the next bridge in the chain * @bridge: bridge object From patchwork Mon Jan 22 16:32:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 190253 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2bc4:b0:101:a8e8:374 with SMTP id hx4csp2724060dyb; Mon, 22 Jan 2024 09:31:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IFHoacLHhy/QxWqVB9pEvpMq7U7/g6p0a8sxKYbohhcYZxljyYpcKOLtwcHvgtsqphvF0cb X-Received: by 2002:ac8:5bc7:0:b0:42a:3d4a:5ed5 with SMTP id b7-20020ac85bc7000000b0042a3d4a5ed5mr2239433qtb.44.1705944697511; Mon, 22 Jan 2024 09:31:37 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705944697; cv=pass; d=google.com; s=arc-20160816; b=qakNcAOneIo7SMe+lcZFbB4Nw6ELYQ7io1GIkbJMj2toGK8nUOqXfEVIvnzpKkGr6Z J/lpVK/kXXU0sA2MNG9blfahGpHzZWv63fZ8uwRm50YA9oIPaQWmG7NxQchQZ/hcvaqv apNUxT+2l5RDSI34VzEFvd+VCOg0kWj21hLBjUKhibmJrovGvA3J3C7HiXGUMKgJYkG0 VYbVAZ8BAvpkzkQXGYznG6vFry+UtLs1PxQT3SGXlSr7R+tAzr1NcDP5HZpNZblULdzf VCGe2PEKR8Z+Db/TnS93Q5ppQFE4zfPSBIP23JwfcEWw/JXIVxx5z534gSlVlq3zb1dj NDMQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=zOQVFSKw3j/viuJ1r9uwPrf0VlEptyybu7p5hJGtU4I=; fh=cWC6IsLg7ATnMbCDrUvpyHjWPdsyZdwr+efYDPOTcPI=; b=is8409K7EjXeoGDehxaxdxrByc7hNLfuKu3paiGNgDpoa05S5CXWN+Em9+emANmVpg M2WyK069/+1tohESuL3XiHq0NyjkASIqbZDixVUVMyPcPdtHuPTzTWVcalHE/ESJGvPp h1vETn8aOTERgu5YPLdCMpiaNLU9IMRF920XarVqMHC57l7W0ziOKBuWSAqcQ1AjaIaK xYLd3uCLlXG0TcuDJzPmMYReAdrO+hG5mQ3XT6sZUl/MI9J99rBnwNuG6deKRp5VU1EI roOu4S5pK5nZe8TYs9u89X49S8tNEBX1sgigHeE+3PJE8qa3TaMbA2P4PNxUcnq9tk01 Kuog== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b="L7/FAapq"; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33698-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33698-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id f13-20020a05622a104d00b0042a4b719f28si153184qte.399.2024.01.22.09.31.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jan 2024 09:31:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-33698-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b="L7/FAapq"; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33698-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33698-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id C34AB1C27470 for ; Mon, 22 Jan 2024 17:31:17 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4F2F67317B; Mon, 22 Jan 2024 16:32:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="L7/FAapq" Received: from out-182.mta1.migadu.com (out-182.mta1.migadu.com [95.215.58.182]) (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 0EE826EB5D for ; Mon, 22 Jan 2024 16:32:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941157; cv=none; b=mvHA7HKPHif+EHhWTeNXLUXv9PJ0n4YIihqQgvlMY89Xjo3dRdrO2NT59O6n5hlSABmMcZkWfoSfG6xlA6g8OB9m/YkzKfaIUwZjrRqxRU6gPbD0gphkmC0mt6WAHctMiR8GiPCntBhV/AzT0/JHR4xLTQNIQA1cbJfHEd4eNYw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941157; c=relaxed/simple; bh=JhvObS4GQ8Qdgb5wl3GUWBFziCFrID5vp3TWqC6dgJs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mXYNSaunkumPAR++wEf6nPstdAb6gqfpC1gtUfAWAvOAEk1mxRFYU+UHWntH7SCb63fSRM1/IBOhN5F+Urn639FREdXW4bf5qtLOamVzdiBMMfQ+L8ychtkRg7nT6WMT0fYy8kmDPdl7L18EpiyYPXR8EK40m4jlUUWp5VWNnmE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=L7/FAapq; arc=none smtp.client-ip=95.215.58.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1705941154; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zOQVFSKw3j/viuJ1r9uwPrf0VlEptyybu7p5hJGtU4I=; b=L7/FAapq5/GA78moIR9tbDqaLl+KwawdazCvL79VK9uJYNJjZeHurgVE3jowYQvTiIOyFV GSBgDlmh2QUmpkYssS3+2mBzDVU7Ns2GYjvfvVs9cAaa+EBtpknfHqgWfkkT9sBJFoXNEz wcaIH5I6UVRBIFL9gZo/ycf5uHSXYKw= From: Sui Jingfeng To: David Airlie Cc: Neil Armstrong , Maxime Ripard , Thomas Zimmermann , Daniel Vetter , Laurent Pinchart , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Sui Jingfeng Subject: [PATCH 2/5] drm/bridge: simple-bridge: Extend match support for non-DT based systems Date: Tue, 23 Jan 2024 00:32:17 +0800 Message-Id: <20240122163220.110788-3-sui.jingfeng@linux.dev> In-Reply-To: <20240122163220.110788-1-sui.jingfeng@linux.dev> References: <20240122163220.110788-1-sui.jingfeng@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788812667455341478 X-GMAIL-MSGID: 1788812667455341478 Which is intended to be used on non-DT environment, where the simple-bridge platform device is created by either the display controller driver side or platform firmware subsystem. To avoid duplication and to keep consistent, we choose to reuse the OF match tables. Because the potentional user may not has a of_node attached, nor a ACPI match id. If this is the case, a software node string property can be provide to fill the niche. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/simple-bridge.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/simple-bridge.c b/drivers/gpu/drm/bridge/simple-bridge.c index cbe8e778d7c7..595f672745b9 100644 --- a/drivers/gpu/drm/bridge/simple-bridge.c +++ b/drivers/gpu/drm/bridge/simple-bridge.c @@ -166,6 +166,24 @@ static const struct drm_bridge_funcs simple_bridge_bridge_funcs = { .disable = simple_bridge_disable, }; +static const void *simple_bridge_get_match_data(const struct device *dev) +{ + const struct of_device_id *matches = dev->driver->of_match_table; + + /* Try to get the match data by software node */ + while (matches) { + if (!matches->compatible[0]) + break; + + if (device_is_compatible(dev, matches->compatible)) + return matches->data; + + matches++; + } + + return NULL; +} + static int simple_bridge_probe(struct platform_device *pdev) { struct simple_bridge *sbridge; @@ -176,7 +194,10 @@ static int simple_bridge_probe(struct platform_device *pdev) return -ENOMEM; platform_set_drvdata(pdev, sbridge); - sbridge->info = of_device_get_match_data(&pdev->dev); + if (pdev->dev.of_node) + sbridge->info = of_device_get_match_data(&pdev->dev); + else + sbridge->info = simple_bridge_get_match_data(&pdev->dev); /* Get the next bridge in the pipeline. */ remote = of_graph_get_remote_node(pdev->dev.of_node, 1, -1); @@ -309,3 +330,4 @@ module_platform_driver(simple_bridge_driver); MODULE_AUTHOR("Maxime Ripard "); MODULE_DESCRIPTION("Simple DRM bridge driver"); MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:simple-bridge"); From patchwork Mon Jan 22 16:32:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 190254 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2bc4:b0:101:a8e8:374 with SMTP id hx4csp2724220dyb; Mon, 22 Jan 2024 09:31:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IGxCrG3vgY5RWdp48h1U2TCxSf42jqyfFuMxQtpU7f2Fs5feXDA9SWLG8I62VtNpstltkz/ X-Received: by 2002:a05:6808:4446:b0:3bd:c207:97c3 with SMTP id ep6-20020a056808444600b003bdc20797c3mr218848oib.15.1705944712508; Mon, 22 Jan 2024 09:31:52 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705944712; cv=pass; d=google.com; s=arc-20160816; b=VnAMFi/9hLgfGi2OENIBL/gsuEDunxUix8LrxeBLjEFjQs1CivEc9DkRy1d1n9DxH/ FQ9fxbgisEv6g/wbCM+QxbWq2VckKeUD7snnieXmgQQXpB+k7hxtWs9/dHE35EbHu8vk eF1BY8uL4CiqJogIOujPzGa7tsNzv+i6b9lq08CZ6hmvJ4RMZBX3o62OVzwS/vmqxRZf hcbp2HqM6HC1ZghhV96TGpBRbWO+1X8bODjKJyFCnv5GIof6WQZxjh8BqUK6cbi/APSH tpqeBybiXX2582/2AMCgI7YtwfqrN8L54z1GeJCr4TYAVNTPfdMkcfIOLOBua1SMmDe6 JLZw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=npqubJ7Bj7Hp+PXoNaKT0QhmaM+1u+5VldbVzcNqcKI=; fh=cWC6IsLg7ATnMbCDrUvpyHjWPdsyZdwr+efYDPOTcPI=; b=DGZBENtx/rs1AVK2yRT/WmVSbheW9kt2mbTWoqVxuiIafTOAvfGwu9FRrzh2N5G/gF n5dCdIKxVDVo8seFnm9TLa392nRlVvqBctDZLdlpYIeFQwGvPPzR/SYns49yJbeobLH7 hlO5XiXSjRvnMqwKI8luSqQahXX8NIKd+VmxP3eXCvtdSKq21TaqYhKinsJog3iwwWYA i/N613AUHHh9Jmk3y0aiIiTiBDyZIluTZ1GARjjuEDzRV2en40R050NUrQlZWEenxcfo cIojblzjyAqRxzzUMcwEKSW3Dmr6UHBZi+GVZPrWLKYZDZKU0ukcIaOJs5DOp26O8Sdi jtww== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=hRUoIKsM; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33700-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33700-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id sq13-20020a05620a4acd00b007834035e469si5769719qkn.708.2024.01.22.09.31.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jan 2024 09:31:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-33700-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=hRUoIKsM; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33700-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33700-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 798E41C2436B for ; Mon, 22 Jan 2024 17:31:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8193473195; Mon, 22 Jan 2024 16:32:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="hRUoIKsM" Received: from out-180.mta1.migadu.com (out-180.mta1.migadu.com [95.215.58.180]) (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 3743E6EB7E for ; Mon, 22 Jan 2024 16:32:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941160; cv=none; b=RLr8sc3fq9Pm3zQqoxcM8mmVHguUKuVu3XMExDGJh9m6HLwuge1bapWDo74ci9/VFufqVqezsnsXo3/OoglZZmdfav2dQW2nLRNyrr721t5JKEvWKHFz1qyqnBEvTInSyB1r5w76yZ4oz5DPixTW0AUdmtu2GtKpnReUncKHEng= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941160; c=relaxed/simple; bh=NUwOnB7z3Jkgn5qG2ac0cxgyuyamotCv2+iPCv6JTE4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oTizMc62P81X3YZWJsw07D86UlaIleZfn1jrXz5/2dwaRGYDxTJ0tEdNmmLHE3/vj/b6nUQIBYgGez5quuTGStzNjBsNmx1R9hl3t59QUwthbQh38H1kuzssl6OGp+Wgp5Fnyod/IcrZHxmT/PWDRPJZVxtos9Y2vROjd89YRB4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=hRUoIKsM; arc=none smtp.client-ip=95.215.58.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1705941157; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=npqubJ7Bj7Hp+PXoNaKT0QhmaM+1u+5VldbVzcNqcKI=; b=hRUoIKsMG7O90bNfo9wUm9cKlyUIAfVjI4dIh3/xy6G+8thfA1pGQs/f/I5Oi++EeXrUn9 0XAc430aKgJPelbVcykvQoJGZFSURld61Ju7l2nauidb8/x/9f3JpOpcrLltpKuC7wjU7K tmZ7Z3BqE4EdU1baTkmqgktMCMufG78= From: Sui Jingfeng To: David Airlie Cc: Neil Armstrong , Maxime Ripard , Thomas Zimmermann , Daniel Vetter , Laurent Pinchart , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Sui Jingfeng Subject: [PATCH 3/5] drm/bridge: simple-bridge: Allow acquiring the next bridge with fwnode API Date: Tue, 23 Jan 2024 00:32:18 +0800 Message-Id: <20240122163220.110788-4-sui.jingfeng@linux.dev> In-Reply-To: <20240122163220.110788-1-sui.jingfeng@linux.dev> References: <20240122163220.110788-1-sui.jingfeng@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788812682927409003 X-GMAIL-MSGID: 1788812682927409003 Which make it possible to use this driver on non-DT based systems, meanwhile, made no functional changes for DT based systems. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/simple-bridge.c | 51 ++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/bridge/simple-bridge.c b/drivers/gpu/drm/bridge/simple-bridge.c index 595f672745b9..cfea5a67cc5b 100644 --- a/drivers/gpu/drm/bridge/simple-bridge.c +++ b/drivers/gpu/drm/bridge/simple-bridge.c @@ -184,6 +184,39 @@ static const void *simple_bridge_get_match_data(const struct device *dev) return NULL; } +static int simple_bridge_get_next_bridge_by_fwnode(struct device *dev, + struct drm_bridge **next_bridge) +{ + struct drm_bridge *bridge; + struct fwnode_handle *ep; + struct fwnode_handle *remote; + + ep = fwnode_graph_get_endpoint_by_id(dev->fwnode, 1, 0, 0); + if (!ep) { + dev_err(dev, "The endpoint is unconnected\n"); + return -EINVAL; + } + + remote = fwnode_graph_get_remote_port_parent(ep); + fwnode_handle_put(ep); + if (!remote) { + dev_err(dev, "No valid remote node\n"); + return -ENODEV; + } + + bridge = drm_bridge_find_by_fwnode(remote); + fwnode_handle_put(remote); + + if (!bridge) { + dev_warn(dev, "Next bridge not found, deferring probe\n"); + return -EPROBE_DEFER; + } + + *next_bridge = bridge; + + return 0; +} + static int simple_bridge_probe(struct platform_device *pdev) { struct simple_bridge *sbridge; @@ -199,14 +232,17 @@ static int simple_bridge_probe(struct platform_device *pdev) else sbridge->info = simple_bridge_get_match_data(&pdev->dev); - /* Get the next bridge in the pipeline. */ - remote = of_graph_get_remote_node(pdev->dev.of_node, 1, -1); - if (!remote) - return -EINVAL; - - sbridge->next_bridge = of_drm_find_bridge(remote); - of_node_put(remote); + if (pdev->dev.of_node) { + /* Get the next bridge in the pipeline. */ + remote = of_graph_get_remote_node(pdev->dev.of_node, 1, -1); + if (!remote) + return -EINVAL; + sbridge->next_bridge = of_drm_find_bridge(remote); + of_node_put(remote); + } else { + simple_bridge_get_next_bridge_by_fwnode(&pdev->dev, &sbridge->next_bridge); + } if (!sbridge->next_bridge) { dev_dbg(&pdev->dev, "Next bridge not found, deferring probe\n"); return -EPROBE_DEFER; @@ -231,6 +267,7 @@ static int simple_bridge_probe(struct platform_device *pdev) /* Register the bridge. */ sbridge->bridge.funcs = &simple_bridge_bridge_funcs; sbridge->bridge.of_node = pdev->dev.of_node; + sbridge->bridge.fwnode = pdev->dev.fwnode; sbridge->bridge.timings = sbridge->info->timings; drm_bridge_add(&sbridge->bridge); From patchwork Mon Jan 22 16:32:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 190281 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2bc4:b0:101:a8e8:374 with SMTP id hx4csp2746607dyb; Mon, 22 Jan 2024 10:10:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IGXcJPnDXRu/fZneRpQ1hiKUoLdzC3SpkZseJQGT6WlMy1NH9NsmWSD9n+uTom2P3+rWBsL X-Received: by 2002:a92:b746:0:b0:361:a719:6024 with SMTP id c6-20020a92b746000000b00361a7196024mr6165285ilm.30.1705947028610; Mon, 22 Jan 2024 10:10:28 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705947028; cv=pass; d=google.com; s=arc-20160816; b=lZ2EFBZyhVGzZP3nJ313Vbz39BPyoXHeInBJXGnOZBPCeY0eIwa38oH4k67XxSBkhC r90b9fwnm5oTmIQPbLhsA1+vZjjDIo/h3fvtHR7JRLYHlu7BMoIDjHFz/tg0eHRzG8a1 8qsJj48EfOe43UBlwX3Nwzmc5R7RH0Bwb8+Pxr+vIK+fJHBhpnpE+xQnIeYwgY1VB3Sj wAOkyEaaopVVos7W3OtqkhV6RAorHMi37lhKMLYVNyK6kRgOCpRQ3Za941YjxlO9Pjzb nivxInkQyRQRkHhDystUsLM5CPlwGcTL7uKLd4xXo2kaafl7EBAK1N+WDqkUdxJOaqZA z7mA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=odkYqjzTWVuL5bWOI6DRA1l4DPeGSEAeS9hiMNWXJJ8=; fh=cWC6IsLg7ATnMbCDrUvpyHjWPdsyZdwr+efYDPOTcPI=; b=I3X1drCyglxT7ggxVyGRTkVYsups20qeaR9+E6B4+QOY0Owj8pF6qk2P8M/GeYhBzn RD4ry3/CIkRrR9kCKDLuehsWyhWxu5cSVw735pQSYoSzUkuaVO86xsn/7/2Z87F6fWcq pic2ZZLDK3R1NqB8g7dVfho1Sfv4xUPCqZnTZcfMuCgY8ZIzZyvgQAP8Ubz4o6c3RevP xMpHkdWN1SUz7qfm/oBkvrLW2j4Z6aH6CXEBaTHh6yFnfGTO7YxSUjQ/tSRDJfPEQl12 n+sONJ4Z6UFKU9vjw8LGYmSo7OTqudM4yMrmlKy3HrYjCe9KxzaHedwll21kBgewVji2 NqOA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=GiDxdmtZ; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33701-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33701-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id y38-20020a631826000000b005ce01eee2afsi8241341pgl.836.2024.01.22.10.10.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jan 2024 10:10:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-33701-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=GiDxdmtZ; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33701-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33701-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 63EA2B33514 for ; Mon, 22 Jan 2024 17:31:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5517E745F0; Mon, 22 Jan 2024 16:32:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="GiDxdmtZ" Received: from out-181.mta1.migadu.com (out-181.mta1.migadu.com [95.215.58.181]) (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 41B71745C4 for ; Mon, 22 Jan 2024 16:32:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941163; cv=none; b=LpZWHu6kBI3xf+lCvT2giNNYqhWMXYiKSsKeJkLHHLBx6zNgRdrKOH+sxSePqEKqMqRTxGY5wBXzA3vMwrH19EBmEjUu4dybABPz6C77nlkEICGWUcJgQoOSRw5cvJWdU7557AQTzyMjm3FkzsZ9qxWlAK1w1+fRZdY9zEJlckE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941163; c=relaxed/simple; bh=EhA7OK9iZuqJaQHTfYEIMHbkg7XW9r6FQHon4CJYBn4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rQV31NrfwPDSPm9gWEg8Amie78fbWHTvf3DcwI8rByvwvaHfX82Co9HB+yP5lWgPKZWAw+Umihu3In+3SqmGKAbEoeGXc4r2H3hxZ8+p6ZM96hPKw33Naq0oOU5U+lX7681Y7M72E2guhwGFqXTm88LQikvHLoWpG68obodL5mA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=GiDxdmtZ; arc=none smtp.client-ip=95.215.58.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1705941160; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=odkYqjzTWVuL5bWOI6DRA1l4DPeGSEAeS9hiMNWXJJ8=; b=GiDxdmtZc1x5dCXVgT4BFw0UWGv7oQkINHwu127uWmaaETnWhpHHIo/Eptolf70gx4Q5RO LKYUO4oHXqhhIEyDvp5Ob2qSK31ThTj/vkp/36T1hretTg9MPqV44tjB4m+J3+kuQnO90l /rbZEF7Yv5M4j9YPHUN4tOY5tj0RrlY= From: Sui Jingfeng To: David Airlie Cc: Neil Armstrong , Maxime Ripard , Thomas Zimmermann , Daniel Vetter , Laurent Pinchart , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Sui Jingfeng Subject: [PATCH 4/5] drm/bridge: display-connector: Extend match support for non-DT based systems Date: Tue, 23 Jan 2024 00:32:19 +0800 Message-Id: <20240122163220.110788-5-sui.jingfeng@linux.dev> In-Reply-To: <20240122163220.110788-1-sui.jingfeng@linux.dev> References: <20240122163220.110788-1-sui.jingfeng@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788815111346312972 X-GMAIL-MSGID: 1788815111346312972 On which case the driver is not probed by OF, Instead, a fwnode is associated to the platform device before this driver is probed. The newly added code is intended to be used on non-DT environment. It is assumed that there is a string fwnode property associated with the platform device, the name of the string property is compatible, the value of the string property is used to get platform match data. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/display-connector.c | 24 +++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/bridge/display-connector.c index 08bd5695ddae..eb7e194e7735 100644 --- a/drivers/gpu/drm/bridge/display-connector.c +++ b/drivers/gpu/drm/bridge/display-connector.c @@ -202,6 +202,24 @@ static int display_connector_get_supply(struct platform_device *pdev, return PTR_ERR_OR_ZERO(conn->supply); } +static const void *display_connector_get_match_data(const struct device *dev) +{ + const struct of_device_id *matches = dev->driver->of_match_table; + + /* Try to get the match data by software node */ + while (matches) { + if (!matches->compatible[0]) + break; + + if (device_is_compatible(dev, matches->compatible)) + return matches->data; + + matches++; + } + + return NULL; +} + static int display_connector_probe(struct platform_device *pdev) { struct display_connector *conn; @@ -215,7 +233,10 @@ static int display_connector_probe(struct platform_device *pdev) platform_set_drvdata(pdev, conn); - type = (uintptr_t)of_device_get_match_data(&pdev->dev); + if (pdev->dev.of_node) + type = (uintptr_t)of_device_get_match_data(&pdev->dev); + else + type = (uintptr_t)display_connector_get_match_data(&pdev->dev); /* Get the exact connector type. */ switch (type) { @@ -434,3 +455,4 @@ module_platform_driver(display_connector_driver); MODULE_AUTHOR("Laurent Pinchart "); MODULE_DESCRIPTION("Display connector driver"); MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:display-connector"); From patchwork Mon Jan 22 16:32:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sui Jingfeng X-Patchwork-Id: 190255 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2bc4:b0:101:a8e8:374 with SMTP id hx4csp2724499dyb; Mon, 22 Jan 2024 09:32:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IGialPOf76eiAPMT3e+x7qHea7lb+BbKlRCDLb68m43ZuPk6LWmBbjVf2CjmGP9Yb+UCoVb X-Received: by 2002:ac8:57c9:0:b0:42a:117c:e016 with SMTP id w9-20020ac857c9000000b0042a117ce016mr7283880qta.67.1705944740174; Mon, 22 Jan 2024 09:32:20 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705944740; cv=pass; d=google.com; s=arc-20160816; b=oAbZ55JnWwqT0eSb5iWalnycJJxDVhRq1i/J0Jtjip0sl33KCRx90Y8i3xeOYSSXb+ k03qzOH9X0kB/fjCI34nx6K0KKV0HGSlRB1HUOYo9nW+P/Biya7w7u5BMmCwZU5PQoJ2 ddPmr5b7nElZPrEPQZphO8X9YL2LVYVjune9Wm/72sJkuxuLETgtFLxldDoEJFmXpOr6 wVAvbmAOCaani1uQvmZlKxHuRv/W9BfH3yFsC51okPWKa6e27qHvbrRyLo1PJouTBLe/ kaKGZcHZvW9iKbIvlTiC+AOsDF8Cas/3SLFoo0+svHApS7J3goR5dlph1EdDq1DwBE73 ZcRg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=SaW0Gpay7iBfH7QtKRfcxFikX4DDF/x/sLLBI1Dwvao=; fh=LpdsY7X9byVK6LqdzMwllyowerV35kCd5uWzrMKEYUE=; b=MdY+sidetbt8qb4xUxmWt7hkOVNAjdlBBYIYHn504I0Qp/YglaOXcdw3+7VI5VEmAW KliyskNl4Pgv1JKObfy8j2srqrEs1a09dJTPLfDC/GdTkMU9/2OG4nfCMIHWoJpkstGk Arp52PCRqEodi6T7AsQQaGZU4sh5Q9xyiPGqPGDIjIPDWM3mHFKsCPXbXvWc6fDnkhv8 z13M9o+IuMnbVWor0/NEdZncnaR35GNJFUN9jA08698gAvcZKO+AUTkVkVo09prb9dIG uEoPRJAefWHajdTKep9Ngt8upLVtjtfiGTt6pCEe97aVh6z4Op6I0P2/BVMhaHeLzhqo 5OPQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=IfhvQlpG; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33703-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33703-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id p8-20020a05622a00c800b0042a3e98a1bfsi2762960qtw.648.2024.01.22.09.32.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jan 2024 09:32:20 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-33703-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=IfhvQlpG; arc=pass (i=1 spf=pass spfdomain=linux.dev dkim=pass dkdomain=linux.dev dmarc=pass fromdomain=linux.dev); spf=pass (google.com: domain of linux-kernel+bounces-33703-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-33703-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id F1EC51C235D9 for ; Mon, 22 Jan 2024 17:32:19 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B882B74E23; Mon, 22 Jan 2024 16:32:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="IfhvQlpG" Received: from out-177.mta1.migadu.com (out-177.mta1.migadu.com [95.215.58.177]) (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 A1D80745EB for ; Mon, 22 Jan 2024 16:32:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941167; cv=none; b=SsDHXjzFCourhIgwYVUdMkp3lkMv8/obJ6GuaV+hEO7R+30O1sLnC49FpcvqdmvBMbJVgeKIJVAp1ohj24+xIZz+ijc1TLqycc/mCnGiZcPzelQ9E6DQaLxTnOKt+4FpjmWgeog+YClH5puJ+RQwt/O+CgXkimoBnRwzsnD9VFc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705941167; c=relaxed/simple; bh=daoJsQAfP2xBV0kNNJW/Stmycgsu9aQruTbKytRGKp8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tq9O4RKCn65p6k/XXmKzbLO/nVYNhVGYNHFpL+Jcgz0gVDxk9vG8sjgvw5EIoooqkXIHpkPib4CN5sdrmTuZM+MUvjoHC7v8w+5/B4QMfGok8gnr6Bg67vebaMFimLCpOl/OWv0IEq2lFihW4x/ZZJLFfCRdrsQIblR5cFffWHU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=IfhvQlpG; arc=none smtp.client-ip=95.215.58.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1705941163; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SaW0Gpay7iBfH7QtKRfcxFikX4DDF/x/sLLBI1Dwvao=; b=IfhvQlpGNlQH5yBLfh+N0DpfnsOJwHsPBE+HPFPkGI36lhsRVKljNc2gz732ufGYS1a8N/ Cp1np5uq5zTMjfcXhxUR5Q8HOnYcgFSem8OOOG6jd0ad3tj35dzAL+Lrj1rEARoUqnLRPB dcCzHGrWbN+29ww2QrD4poINOgtdrAI= From: Sui Jingfeng To: David Airlie Cc: Neil Armstrong , Maxime Ripard , Thomas Zimmermann , Daniel Vetter , Laurent Pinchart , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Sui Jingfeng Subject: [PATCH 5/5] drm-bridge: display-connector: Switch to use fwnode API Date: Tue, 23 Jan 2024 00:32:20 +0800 Message-Id: <20240122163220.110788-6-sui.jingfeng@linux.dev> In-Reply-To: <20240122163220.110788-1-sui.jingfeng@linux.dev> References: <20240122163220.110788-1-sui.jingfeng@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788812712035770055 X-GMAIL-MSGID: 1788812712035770055 From: Sui Jingfeng Because API has wider coverage, it can be used on non-DT systems as well. Signed-off-by: Sui Jingfeng --- drivers/gpu/drm/bridge/display-connector.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/bridge/display-connector.c index eb7e194e7735..2c3e54a458e8 100644 --- a/drivers/gpu/drm/bridge/display-connector.c +++ b/drivers/gpu/drm/bridge/display-connector.c @@ -243,8 +243,8 @@ static int display_connector_probe(struct platform_device *pdev) case DRM_MODE_CONNECTOR_DVII: { bool analog, digital; - analog = of_property_read_bool(pdev->dev.of_node, "analog"); - digital = of_property_read_bool(pdev->dev.of_node, "digital"); + analog = fwnode_property_present(pdev->dev.fwnode, "analog"); + digital = fwnode_property_present(pdev->dev.fwnode, "digital"); if (analog && !digital) { conn->bridge.type = DRM_MODE_CONNECTOR_DVIA; } else if (!analog && digital) { @@ -261,8 +261,8 @@ static int display_connector_probe(struct platform_device *pdev) case DRM_MODE_CONNECTOR_HDMIA: { const char *hdmi_type; - ret = of_property_read_string(pdev->dev.of_node, "type", - &hdmi_type); + ret = fwnode_property_read_string(pdev->dev.fwnode, "type", + &hdmi_type); if (ret < 0) { dev_err(&pdev->dev, "HDMI connector with no type\n"); return -EINVAL; @@ -292,7 +292,7 @@ static int display_connector_probe(struct platform_device *pdev) conn->bridge.interlace_allowed = true; /* Get the optional connector label. */ - of_property_read_string(pdev->dev.of_node, "label", &label); + fwnode_property_read_string(pdev->dev.fwnode, "label", &label); /* * Get the HPD GPIO for DVI, HDMI and DP connectors. If the GPIO can provide @@ -330,12 +330,13 @@ static int display_connector_probe(struct platform_device *pdev) if (type == DRM_MODE_CONNECTOR_DVII || type == DRM_MODE_CONNECTOR_HDMIA || type == DRM_MODE_CONNECTOR_VGA) { - struct device_node *phandle; + struct fwnode_handle *fwnode; - phandle = of_parse_phandle(pdev->dev.of_node, "ddc-i2c-bus", 0); - if (phandle) { - conn->bridge.ddc = of_get_i2c_adapter_by_node(phandle); - of_node_put(phandle); + fwnode = fwnode_find_reference(pdev->dev.fwnode, "ddc-i2c-bus", 0); + if (!IS_ERR_OR_NULL(fwnode)) { + dev_info(&pdev->dev, "has I2C bus property\n"); + conn->bridge.ddc = i2c_get_adapter_by_fwnode(fwnode); + fwnode_handle_put(fwnode); if (!conn->bridge.ddc) return -EPROBE_DEFER; } else { @@ -380,6 +381,7 @@ static int display_connector_probe(struct platform_device *pdev) conn->bridge.funcs = &display_connector_bridge_funcs; conn->bridge.of_node = pdev->dev.of_node; + conn->bridge.fwnode = pdev->dev.fwnode; if (conn->bridge.ddc) conn->bridge.ops |= DRM_BRIDGE_OP_EDID