diff options
author | Sergey Ryazanov <ryazanov.s.a@gmail.com> | 2021-12-19 17:31:53 +0300 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2021-12-27 16:00:21 +0000 |
commit | 5deb3996e249e15bb5711695c917641a1490670a (patch) | |
tree | 43582de46d470d5e9e064b4b4a8b3aa49d873955 /target/linux/ath25/patches-5.10/140-redboot_boardconfig.patch | |
parent | 5bf8ae7c4bd2e1fc216a6af81ab931e1b0861271 (diff) | |
download | upstream-5deb3996e249e15bb5711695c917641a1490670a.tar.gz upstream-5deb3996e249e15bb5711695c917641a1490670a.tar.bz2 upstream-5deb3996e249e15bb5711695c917641a1490670a.zip |
ath25: add kernel 5.10 support
Copy and refresh patches and config from 5.4 to 5.10. Most patches
require no more then automatic refresh. The only exception is the
Ethernet driver patch, which requires some more work:
* drop eth_change_mtu() usage since it was removed from the kernel,
it anyway useless for drivers that utilizes alloc_etherdev();
* add the txqueue number argument to the .ndo_tx_timeout callback
function;
* replace ioremap_nocache() which was finally removed from the kernel by
the ioremap() with the same behaviour.
Switch target to the new kernel version.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
[use KERNEL_TESTING_PATCHVER for now]
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
Diffstat (limited to 'target/linux/ath25/patches-5.10/140-redboot_boardconfig.patch')
-rw-r--r-- | target/linux/ath25/patches-5.10/140-redboot_boardconfig.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/ath25/patches-5.10/140-redboot_boardconfig.patch b/target/linux/ath25/patches-5.10/140-redboot_boardconfig.patch new file mode 100644 index 0000000000..81b23e863e --- /dev/null +++ b/target/linux/ath25/patches-5.10/140-redboot_boardconfig.patch @@ -0,0 +1,60 @@ +--- a/drivers/mtd/parsers/redboot.c ++++ b/drivers/mtd/parsers/redboot.c +@@ -16,6 +16,8 @@ + #include <linux/mtd/partitions.h> + #include <linux/module.h> + ++#define BOARD_CONFIG_PART "boardconfig" ++ + struct fis_image_desc { + unsigned char name[16]; // Null terminated name + uint32_t flash_base; // Address within FLASH of image +@@ -72,6 +74,7 @@ static int parse_redboot_partitions(stru + const struct mtd_partition **pparts, + struct mtd_part_parser_data *data) + { ++ unsigned long max_offset = 0; + int nrparts = 0; + struct fis_image_desc *buf; + struct mtd_partition *parts; +@@ -239,14 +242,15 @@ static int parse_redboot_partitions(stru + } + } + #endif +- parts = kzalloc(sizeof(*parts)*nrparts + nulllen + namelen, GFP_KERNEL); ++ parts = kzalloc(sizeof(*parts) * (nrparts + 1) + nulllen + namelen + ++ sizeof(BOARD_CONFIG_PART), GFP_KERNEL); + + if (!parts) { + ret = -ENOMEM; + goto out; + } + +- nullname = (char *)&parts[nrparts]; ++ nullname = (char *)&parts[nrparts + 1]; + #ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED + if (nulllen > 0) { + strcpy(nullname, nullstring); +@@ -265,6 +269,8 @@ static int parse_redboot_partitions(stru + } + #endif + for ( ; i<nrparts; i++) { ++ if (max_offset < buf[i].flash_base + buf[i].size) ++ max_offset = buf[i].flash_base + buf[i].size; + parts[i].size = fl->img->size; + parts[i].offset = fl->img->flash_base; + parts[i].name = names; +@@ -298,6 +304,13 @@ static int parse_redboot_partitions(stru + fl = fl->next; + kfree(tmp_fl); + } ++ if (master->size - max_offset >= master->erasesize) { ++ parts[nrparts].size = master->size - max_offset; ++ parts[nrparts].offset = max_offset; ++ parts[nrparts].name = names; ++ strcpy(names, BOARD_CONFIG_PART); ++ nrparts++; ++ } + ret = nrparts; + *pparts = parts; + out: |