// SPDX-License-Identifier: GPL-2.0 #define pr_fmt(fmt) "[rename_fw] " fmt #include #include #include #include "avm_mtd_helper.h" struct name_info { const char *old; const char *names[2]; }; static const struct name_info rename_infos[] = { { "kernel0", { "kernel", "reserved-kernel" }}, { "kernel1", { "reserved-kernel", "kernel" }}, { "filesystem0", { "filesystem", "reserved-filesystem" }}, { "filesystem1", { "reserved-filesystem", "filesystem" }}, }; static const char *get_new_name(struct mtd_info *mtd) { int i; u8 fs = prom_get_linux_fs(); for (i = 0; i < ARRAY_SIZE(rename_infos); i++) if (strcmp(mtd->name, rename_infos[i].old) == 0) return rename_infos[i].names[fs]; return NULL; } static void rename_fw_add_notifier(struct mtd_info *mtd) { const char *new_name; if (!mtd->name) return; new_name = get_new_name(mtd); if (!new_name) return; rename_mtd(mtd, new_name); } static void rename_fw_rm_notifier(struct mtd_info *mtd) { } struct mtd_notifier avm_mtd_rename_fw_notifier = { .add = rename_fw_add_notifier, .remove = rename_fw_rm_notifier, };