The current overlay mechanism can handle files only, so filepattern was an obvious name.
Drop the "file" prefix to prepare the codebase to handle overlays supplied via a FIT images as well. Keep the backward compatibility by still providing the filepattern filter and the global of.overlay.filepattern variable, but mark them as deprecated. Signed-off-by: Marco Felsch <m.fel...@pengutronix.de> --- Documentation/user/devicetree.rst | 6 +++--- drivers/of/overlay.c | 37 ++++++++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/Documentation/user/devicetree.rst b/Documentation/user/devicetree.rst index ea2945ab2b564a10a780ba0055daa37ed0c85581..ef04e14f7c0dde579493425073f1ee01395f0d8c 100644 --- a/Documentation/user/devicetree.rst +++ b/Documentation/user/devicetree.rst @@ -118,15 +118,15 @@ the kernel. The behaviour is controlled by different variables: these compatibles will be applied. When this list is empty then all overlays will be applied. Overlays that don't have a compatible are considered being always compatible. -``global.of.overlay.filepattern`` +``global.of.overlay.pattern`` This is a space separated list of file patterns. An overlay is only applied when its filename matches one of the patterns. The patterns can contain ``*`` and ``?`` as wildcards. The default is ``*`` which means all files are applied. ``global.of.overlay.filter`` This is a space separated list of filters to apply. There are two generic filters: - ``filepattern`` matches ``global.of.overlay.filepattern`` above, ``compatible`` matches - ``global.of.overlay.compatible`` above. The default is ``filepattern compatible`` + ``pattern`` matches ``global.of.overlay.pattern`` above, ``compatible`` matches + ``global.of.overlay.compatible`` above. The default is ``pattern compatible`` which means the two generic filters are active. This list may be replaced or supplemented by board specific filters. diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c index 6944dd4a744de909c89622322c99b81fc046e43b..a63cca1b47e74615d4453a27a55fb15d1f706fae 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c @@ -407,7 +407,7 @@ int of_register_overlay(struct device_node *overlay) return of_register_fixup(of_overlay_fixup, overlay); } -static char *of_overlay_filepattern; +static char *of_overlay_pattern; static char *of_overlay_dir; static char *of_overlay_basedir; @@ -504,10 +504,10 @@ int of_overlay_register_filter(struct of_overlay_filter *filter) } /** - * of_overlay_filter_filename - A filter that matches on the filename of + * of_overlay_filter_pattern - A filter that matches on the filename or * an overlay * @f: The filter - * @filename: The filename of the overlay + * @pattern: The filename of the overlay * * This filter matches when the filename matches one of the patterns given * in global.of.overlay.filepattern. global.of.overlay.filepattern shall @@ -515,20 +515,20 @@ int of_overlay_register_filter(struct of_overlay_filter *filter) * * @return: True when the overlay shall be applied, false otherwise. */ -static bool of_overlay_filter_filename(struct of_overlay_filter *f, - const char *filename) +static bool of_overlay_filter_pattern(struct of_overlay_filter *f, + const char *pattern) { char *p, *path, *n; int ret; bool apply; - p = path = strdup(of_overlay_filepattern); + p = path = strdup(of_overlay_pattern); while ((n = strsep_unescaped(&p, " ", NULL))) { if (!*n) continue; - ret = fnmatch(n, filename, 0); + ret = fnmatch(n, pattern, 0); if (!ret) { apply = true; @@ -543,6 +543,18 @@ static bool of_overlay_filter_filename(struct of_overlay_filter *f, return apply; } +static struct of_overlay_filter of_overlay_pattern_filter = { + .name = "pattern", + .filter_filename = of_overlay_filter_pattern, +}; + +static bool of_overlay_filter_filename(struct of_overlay_filter *f, + const char *filename) +{ + pr_warn("'filepattern' filter is marked as deprecated, convert to 'pattern' filter\n"); + return of_overlay_filter_pattern(f, filename); +} + static struct of_overlay_filter of_overlay_filepattern_filter = { .name = "filepattern", .filter_filename = of_overlay_filter_filename, @@ -597,15 +609,18 @@ static struct of_overlay_filter of_overlay_compatible_filter = { static int of_overlay_init(void) { - of_overlay_filepattern = strdup("*"); - of_overlay_filter = strdup("filepattern compatible"); + of_overlay_pattern = strdup("*"); + of_overlay_filter = strdup("pattern compatible"); of_overlay_set_basedir("/"); globalvar_add_simple_string("of.overlay.compatible", &of_overlay_compatible); - globalvar_add_simple_string("of.overlay.filepattern", &of_overlay_filepattern); + globalvar_add_simple_string("of.overlay.pattern", &of_overlay_pattern); globalvar_add_simple_string("of.overlay.filter", &of_overlay_filter); globalvar_add_simple_string("of.overlay.dir", &of_overlay_dir); + globalvar_alias_deprecated("of.overlay.filepattern", "of.overlay.pattern"); + + of_overlay_register_filter(&of_overlay_pattern_filter); of_overlay_register_filter(&of_overlay_filepattern_filter); of_overlay_register_filter(&of_overlay_compatible_filter); @@ -616,6 +631,6 @@ static int of_overlay_init(void) device_initcall(of_overlay_init); BAREBOX_MAGICVAR(global.of.overlay.compatible, "space separated list of compatibles an overlay must match"); -BAREBOX_MAGICVAR(global.of.overlay.filepattern, "space separated list of filepatterns an overlay must match"); +BAREBOX_MAGICVAR(global.of.overlay.pattern, "space separated list of filepatterns an overlay must match"); BAREBOX_MAGICVAR(global.of.overlay.dir, "Directory to look for dt overlays"); BAREBOX_MAGICVAR(global.of.overlay.filter, "space separated list of filters"); -- 2.39.5