From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 03 Jul 2024 18:59:55 +0200 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1sP3Kl-001EYl-1g for lore@lore.pengutronix.de; Wed, 03 Jul 2024 18:59:55 +0200 Received: from bombadil.infradead.org ([2607:7c80:54:3::133]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sP3Kj-0005PB-OM for lore@pengutronix.de; Wed, 03 Jul 2024 18:59:55 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=PZYKmazf8voq+ro1/xYE4bEVCNgNRcwvaixDmxQSVl8=; b=qhf0QO2kOaBWdFx6VV5nBNboEg C0mqqwZmBoDJ+j3ngOjgFlX4QnHoPch1q164OHMmzS3ZDgHUr/rHu4rmAICpuo5ONI/at2qXhkOQ6 7sR6nLeRAM3KEpvN1HUpI7jGZF8F5Iq/q8mR5bd474DOULNOySpc2532C6n3iF5tOnKXdzn1jZfpX 2WBghIi45zMN34zpHqT5Bnf6K+mI58FC2DXO4ZOJKFrnMC2rjYsXhELO+an1JLqPU8OK7BmxpiwKE q7+tc6tbK/QPILgbV9k55VAMgMDc8lvsJITrfVP+aOlgLgat5O6zPdOt2vfpLnzqPA9JHl1V9AtOG aymDsWKw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sP3K4-0000000Av7A-1Yuz; Wed, 03 Jul 2024 16:59:12 +0000 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sP3Ju-0000000Av29-438a for barebox@lists.infradead.org; Wed, 03 Jul 2024 16:59:07 +0000 Received: from dude02.red.stw.pengutronix.de ([2a0a:edc0:0:1101:1d::28]) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1sP3Jr-0004uJ-GN; Wed, 03 Jul 2024 18:58:59 +0200 From: Marco Felsch Date: Wed, 03 Jul 2024 18:58:36 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240703-v2024-05-0-topic-fit-overlay-v3-8-c1fd766fd31d@pengutronix.de> References: <20240703-v2024-05-0-topic-fit-overlay-v3-0-c1fd766fd31d@pengutronix.de> In-Reply-To: <20240703-v2024-05-0-topic-fit-overlay-v3-0-c1fd766fd31d@pengutronix.de> To: Sascha Hauer , BAREBOX Cc: Marco Felsch X-Mailer: b4 0.14.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240703_095903_211712_8F0FDDCB X-CRM114-Status: GOOD ( 15.99 ) X-BeenThere: barebox@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "barebox" X-SA-Exim-Connect-IP: 2607:7c80:54:3::133 X-SA-Exim-Mail-From: barebox-bounces+lore=pengutronix.de@lists.infradead.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.whiteo.stw.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-5.2 required=4.0 tests=AWL,BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.2 Subject: [PATCH v3 08/10] of: overlay: replace filename with an more unique name X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on metis.whiteo.stw.pengutronix.de) Since we do support FIT image overlays and file/dir based overlays the filename variable is not sufficient anylonger. Therefore rename the local variables as well as the filter function to hook. To not break any systems keep the old filename based name too but mark them as deprecated. Signed-off-by: Marco Felsch --- drivers/of/overlay.c | 39 +++++++++++++++++++++------------------ include/of.h | 3 ++- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c index 822487908ede..6b76eafc966e 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c @@ -234,12 +234,12 @@ static struct of_overlay_filter *of_overlay_find_filter(const char *name) return NULL; } -static bool of_overlay_matches_filter(const char *filename, struct device_node *ovl) +static bool of_overlay_matches_filter(const char *pattern, struct device_node *ovl) { struct of_overlay_filter *filter; char *p, *path, *n; bool apply = false; - bool have_filename_filter = false; + bool have_pattern_filter = false; bool have_content_filter = false; p = path = strdup(of_overlay_filter); @@ -256,14 +256,16 @@ static bool of_overlay_matches_filter(const char *filename, struct device_node * continue; } - if (filter->filter_filename) - have_filename_filter = true; + if (filter->filter_pattern || filter->filter_filename) + have_pattern_filter = true; if (filter->filter_content) have_content_filter = true; - if (filename) { - if (filter->filter_filename && - filter->filter_filename(filter, kbasename(filename))) + if (pattern) { + if ((filter->filter_pattern && + filter->filter_pattern(filter, kbasename(pattern))) || + (filter->filter_filename && + filter->filter_filename(filter, kbasename(pattern)))) score++; } else { score++; @@ -286,11 +288,11 @@ static bool of_overlay_matches_filter(const char *filename, struct device_node * free(path); /* No filter found at all, no match */ - if (!have_filename_filter && !have_content_filter) + if (!have_pattern_filter && !have_content_filter) return false; - /* Want to match filename, but we do not have a filename_filter */ - if (filename && !have_filename_filter) + /* Want to match pattern, but we do not have a filename_filter */ + if (pattern && !have_pattern_filter) return true; /* Want to match content, but we do not have a content_filter */ @@ -298,12 +300,12 @@ static bool of_overlay_matches_filter(const char *filename, struct device_node * return true; if (apply) - pr_debug("filename %s, overlay %p: match against filter %s\n", - filename ?: "", + pr_debug("pattern %s, overlay %p: match against filter %s\n", + pattern ?: "", ovl, filter->name); else - pr_debug("filename %s, overlay %p: no match\n", - filename ?: "", ovl); + pr_debug("pattern %s, overlay %p: no match\n", + pattern ?: "", ovl); return apply; } @@ -594,14 +596,15 @@ static int of_overlay_global_fixup(struct device_node *root, void *data) * @filter: The new filter * * Register a new overlay filter. A filter can either match on - * the filename or on the content of an overlay, but not on both. + * a pattern or on the content of an overlay, but not on both. * If that's desired two filters have to be registered. * * @return: 0 for success, negative error code otherwise */ int of_overlay_register_filter(struct of_overlay_filter *filter) { - if (filter->filter_filename && filter->filter_content) + if ((filter->filter_pattern || filter->filter_filename) && + filter->filter_content) return -EINVAL; list_add_tail(&filter->list, &of_overlay_filters); @@ -651,7 +654,7 @@ static bool of_overlay_filter_pattern(struct of_overlay_filter *f, static struct of_overlay_filter of_overlay_pattern_filter = { .name = "pattern", - .filter_filename = of_overlay_filter_pattern, + .filter_pattern = of_overlay_filter_pattern, }; static bool of_overlay_filter_filename(struct of_overlay_filter *f, @@ -663,7 +666,7 @@ static bool of_overlay_filter_filename(struct of_overlay_filter *f, static struct of_overlay_filter of_overlay_filepattern_filter = { .name = "filepattern", - .filter_filename = of_overlay_filter_filename, + .filter_pattern = of_overlay_filter_filename, }; /** diff --git a/include/of.h b/include/of.h index f99cff5cf54a..34cb535e1924 100644 --- a/include/of.h +++ b/include/of.h @@ -1298,7 +1298,8 @@ static inline struct device_node *of_find_root_node(struct device_node *node) } struct of_overlay_filter { - bool (*filter_filename)(struct of_overlay_filter *, const char *filename); + bool (*filter_filename)(struct of_overlay_filter *, const char *filename); /* deprecated */ + bool (*filter_pattern)(struct of_overlay_filter *, const char *pattern); bool (*filter_content)(struct of_overlay_filter *, struct device_node *); char *name; struct list_head list; -- 2.39.2