ath25: 5.15: enable 5.15 testing kernel
authorNick Hainke <vincent@systemli.org>
Wed, 28 Sep 2022 09:23:24 +0000 (11:23 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Fri, 12 May 2023 11:02:42 +0000 (13:02 +0200)
Manually refreshed:
- 140-redboot_boardconfig.patch
- 141-redboot_partition_scan.patch
- 142-redboot_various_erase_size_fix.patch

Automatically refreshed:
- 107-ar5312_gpio.patch
- 108-ar2315_gpio.patch
- 110-ar2313_ethernet.patch
- 120-spiflash.patch
- 130-watchdog.patch
- 330-board_leds.patch

Use "make kernel_oldconfig" to refresh the new kernel config.

The Ubiquiti Nanostation 2 (XS2) and Ubiquiti Nanostation 5 (XS5) should
be marked as broken when switching to 5.15 by default. The new kernel
does not fit anymore into the partition.

Signed-off-by: Nick Hainke <vincent@systemli.org>
target/linux/ath25/Makefile
target/linux/ath25/config-5.15
target/linux/ath25/patches-5.15/107-ar5312_gpio.patch
target/linux/ath25/patches-5.15/108-ar2315_gpio.patch
target/linux/ath25/patches-5.15/110-ar2313_ethernet.patch
target/linux/ath25/patches-5.15/120-spiflash.patch
target/linux/ath25/patches-5.15/130-watchdog.patch
target/linux/ath25/patches-5.15/140-redboot_boardconfig.patch
target/linux/ath25/patches-5.15/141-redboot_partition_scan.patch
target/linux/ath25/patches-5.15/142-redboot_various_erase_size_fix.patch
target/linux/ath25/patches-5.15/330-board_leds.patch

index 76dd346628d0378c0eb9ea255f8054e7f4fe30a7..ea90c803fd7894c01099afd10fc2e67cc47d1cc1 100644 (file)
@@ -11,7 +11,7 @@ FEATURES:=squashfs low_mem small_flash source-only
 SUBTARGETS:=generic
 
 KERNEL_PATCHVER:=5.10
-KERNEL_TESTING_PATCHVER:=5.10
+KERNEL_TESTING_PATCHVER:=5.15
 
 define Target/Description
        Build firmware images for Atheros SoC boards
index ef764820e45d1df9241b700e7fa870438aac8174..a27ad4980fa002bd95af84d982af9ef0da03aba0 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_AR2315_WDT=y
 CONFIG_AR8216_PHY=y
 CONFIG_ARCH_32BIT_OFF_T=y
 CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
 CONFIG_ARCH_MMAP_RND_BITS_MAX=15
 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
@@ -26,7 +27,6 @@ CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
 CONFIG_CPU_R4K_CACHE_TLB=y
 CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
 CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CRYPTO_BLAKE2S=y
 CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
 CONFIG_CRYPTO_LIB_POLY1305_RSIZE=2
 CONFIG_CRYPTO_RNG2=y
@@ -40,6 +40,7 @@ CONFIG_GENERIC_ATOMIC64=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CMOS_UPDATE=y
 CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_GETTIMEOFDAY=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_GENERIC_IRQ_CHIP=y
@@ -56,6 +57,7 @@ CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GPIO_AR2315=y
 CONFIG_GPIO_AR5312=y
+CONFIG_GPIO_CDEV=y
 CONFIG_HANDLE_DOMAIN_IRQ=y
 CONFIG_HARDWARE_WATCHPOINTS=y
 CONFIG_HAS_DMA=y
@@ -98,6 +100,7 @@ CONFIG_MVSWITCH_PHY=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NEED_PER_CPU_KM=y
 CONFIG_NET_AR231X=y
+CONFIG_NET_SELFTESTS=y
 CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
 # CONFIG_OF is not set
 CONFIG_PCI=y
@@ -108,6 +111,7 @@ CONFIG_PCI_DRIVERS_LEGACY=y
 CONFIG_PERF_USE_VMALLOC=y
 CONFIG_PGTABLE_LEVELS=2
 CONFIG_PHYLIB=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
 CONFIG_SERIAL_8250_NR_UARTS=1
 CONFIG_SERIAL_8250_RUNTIME_UARTS=1
 CONFIG_SERIAL_MCTRL_GPIO=y
index a1efdbeeae1403efb23adf49f63f6ad31061d958..4ad1d40facd2fbb1c5422c917eba0dc39d2fa123 100644 (file)
@@ -18,7 +18,7 @@
  #include <asm/bootinfo.h>
  #include <asm/reboot.h>
  #include <asm/time.h>
-@@ -178,6 +179,22 @@ static struct platform_device ar5312_phy
+@@ -177,6 +178,22 @@ static struct platform_device ar5312_phy
        .num_resources = 1,
  };
  
@@ -41,7 +41,7 @@
  static void __init ar5312_flash_init(void)
  {
        void __iomem *flashctl_base;
-@@ -245,6 +262,8 @@ void __init ar5312_init_devices(void)
+@@ -244,6 +261,8 @@ void __init ar5312_init_devices(void)
  
        platform_device_register(&ar5312_physmap_flash);
  
@@ -52,7 +52,7 @@
                if (!ath25_board.radio)
 --- a/drivers/gpio/Kconfig
 +++ b/drivers/gpio/Kconfig
-@@ -142,6 +142,13 @@ config GPIO_AMDPT
+@@ -143,6 +143,13 @@ config GPIO_AMDPT
          driver for GPIO functionality on Promontory IOHub
          Require ACPI ASL code to enumerate as a platform device.
  
 +subsys_initcall(ar5312_gpio_init);
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -219,6 +219,7 @@ config ATH25
+@@ -230,6 +230,7 @@ config ATH25
        select CEVT_R4K
        select CSRC_R4K
        select DMA_NONCOHERENT
index 10289086e8d76dbea3d091aef22127541645c5a5..f2e1e4a9a321ef568ef7a29683ec0d2587230be4 100644 (file)
@@ -75,7 +75,7 @@
         * workaround. Attempt to jump to the mips reset location -
 --- a/drivers/gpio/Kconfig
 +++ b/drivers/gpio/Kconfig
-@@ -142,6 +142,13 @@ config GPIO_AMDPT
+@@ -143,6 +143,13 @@ config GPIO_AMDPT
          driver for GPIO functionality on Promontory IOHub
          Require ACPI ASL code to enumerate as a platform device.
  
index 72b8660baa6ba93065172a6b52f8c92ad703066f..bd998b14274ca01fa3c536ea9b3fe8c5ffee806f 100644 (file)
@@ -16,7 +16,7 @@
        help
          If you have a network (Ethernet) card belonging to this class, say Y.
  
-@@ -87,4 +87,10 @@ config ALX
+@@ -88,4 +88,10 @@ config ALX
          To compile this driver as a module, choose M here.  The module
          will be called alx.
  
  
 --- a/arch/mips/ath25/ar5312.c
 +++ b/arch/mips/ath25/ar5312.c
-@@ -128,6 +128,10 @@ static void ar5312_irq_dispatch(void)
+@@ -127,6 +127,10 @@ static void ar5312_irq_dispatch(void)
  
        if (pending & CAUSEF_IP2)
                do_IRQ(AR5312_IRQ_WLAN0);
        else if (pending & CAUSEF_IP5)
                do_IRQ(AR5312_IRQ_WLAN1);
        else if (pending & CAUSEF_IP6)
-@@ -161,6 +165,36 @@ void __init ar5312_arch_init_irq(void)
+@@ -160,6 +164,36 @@ void __init ar5312_arch_init_irq(void)
        ar5312_misc_irq_domain = domain;
  }
  
  static struct physmap_flash_data ar5312_flash_data = {
        .width = 2,
  };
-@@ -241,6 +275,7 @@ static void __init ar5312_flash_init(voi
+@@ -240,6 +274,7 @@ static void __init ar5312_flash_init(voi
  void __init ar5312_init_devices(void)
  {
        struct ath25_boarddata *config;
  
        ar5312_flash_init();
  
-@@ -264,8 +299,30 @@ void __init ar5312_init_devices(void)
+@@ -263,8 +298,30 @@ void __init ar5312_init_devices(void)
  
        platform_device_register(&ar5312_gpio);
  
                if (!ath25_board.radio)
                        return;
  
-@@ -274,8 +331,18 @@ void __init ar5312_init_devices(void)
+@@ -273,8 +330,18 @@ void __init ar5312_init_devices(void)
  
                ath25_add_wmac(0, AR5312_WLAN0_BASE, AR5312_IRQ_WLAN0);
                break;
index 6b869d9fcd2c0a33f098696233590553fc766d25..c0f4fa6204cdc7beb0c2865fdaf280384d00e209 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/mtd/devices/Kconfig
 +++ b/drivers/mtd/devices/Kconfig
-@@ -114,6 +114,10 @@ config MTD_BCM47XXSFLASH
+@@ -120,6 +120,10 @@ config MTD_BCM47XXSFLASH
          registered by bcma as platform devices. This enables driver for
          serial flash memories.
  
@@ -13,8 +13,8 @@
        help
 --- a/drivers/mtd/devices/Makefile
 +++ b/drivers/mtd/devices/Makefile
-@@ -15,6 +15,7 @@ obj-$(CONFIG_MTD_DATAFLASH)  += mtd_dataf
- obj-$(CONFIG_MTD_MCHP23K256)  += mchp23k256.o
+@@ -16,6 +16,7 @@ obj-$(CONFIG_MTD_MCHP23K256) += mchp23k2
+ obj-$(CONFIG_MTD_MCHP48L640)  += mchp48l640.o
  obj-$(CONFIG_MTD_SPEAR_SMI)   += spear_smi.o
  obj-$(CONFIG_MTD_SST25L)      += sst25l.o
 +obj-$(CONFIG_MTD_AR2315)      += ar2315.o
index 1c8c9a9677ee78b3b0037d3de939cd4c1bff5062..eb0bc5630d782efa206bd15858631b353f463820 100644 (file)
 +MODULE_ALIAS("platform:" DRIVER_NAME);
 --- a/drivers/watchdog/Kconfig
 +++ b/drivers/watchdog/Kconfig
-@@ -1873,6 +1873,13 @@ config PIC32_DMT
+@@ -1829,6 +1829,13 @@ config PIC32_DMT
          To compile this driver as a loadable module, choose M here.
          The module will be called pic32-dmt.
  
  # POWERPC Architecture
 --- a/drivers/watchdog/Makefile
 +++ b/drivers/watchdog/Makefile
-@@ -164,6 +164,7 @@ obj-$(CONFIG_WDT_MTX1) += mtx-1_wdt.o
- obj-$(CONFIG_PNX833X_WDT) += pnx833x_wdt.o
+@@ -161,6 +161,7 @@ obj-$(CONFIG_JZ4740_WDT) += jz4740_wdt.o
+ obj-$(CONFIG_WDT_MTX1) += mtx-1_wdt.o
  obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o
  obj-$(CONFIG_AR7_WDT) += ar7_wdt.o
 +obj-$(CONFIG_AR2315_WDT) += ar2315-wtd.o
index 07d75b9fbae646798040262d20e9e1541f49f2ce..5f506aaa3abb5c18018a0801126e18656efcdf8b 100644 (file)
@@ -7,8 +7,8 @@
 +#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
+       unsigned char name[16];      // Null terminated name
+       u32       flash_base;    // Address within FLASH of image
 @@ -73,6 +75,7 @@ static int parse_redboot_partitions(stru
                                    const struct mtd_partition **pparts,
                                    struct mtd_part_parser_data *data)
        int nrparts = 0;
        struct fis_image_desc *buf;
        struct mtd_partition *parts;
-@@ -240,14 +243,15 @@ static int parse_redboot_partitions(stru
+@@ -239,14 +242,15 @@ nogood:
                }
        }
  #endif
--      parts = kzalloc(sizeof(*parts)*nrparts + nulllen + namelen, GFP_KERNEL);
+-      parts = kzalloc(sizeof(*parts) * nrparts + nulllen + namelen, GFP_KERNEL);
 +      parts = kzalloc(sizeof(*parts) * (nrparts + 1) + nulllen + namelen +
 +                      sizeof(BOARD_CONFIG_PART), GFP_KERNEL);
  
 -      nullname = (char *)&parts[nrparts];
 +      nullname = (char *)&parts[nrparts + 1];
  #ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
-       if (nulllen > 0) {
+       if (nulllen > 0)
                strcpy(nullname, nullstring);
-@@ -266,6 +270,8 @@ static int parse_redboot_partitions(stru
+@@ -264,6 +268,8 @@ nogood:
        }
  #endif
-       for ( ; i<nrparts; i++) {
+       for ( ; i < nrparts; i++) {
 +              if (max_offset < buf[i].flash_base + buf[i].size)
-+                      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;
-@@ -299,6 +305,13 @@ static int parse_redboot_partitions(stru
+@@ -297,6 +303,13 @@ nogood:
                fl = fl->next;
                kfree(tmp_fl);
        }
index 68019f90eaad5aa0c71d5be795e2708ca5a687b1..f9c98c9a37a3fb6d39ad05ea3d3eae5dcf672eaa 100644 (file)
@@ -8,18 +8,18 @@
 +      if (!buf)
 +              return -ENOMEM;
 +
-+ restart:
-       if ( directory < 0 ) {
++restart:
+       if (directory < 0) {
                offset = master->size + directory * master->erasesize;
                while (mtd_block_isbad(master, offset)) {
                        if (!offset) {
                      nogood:
-                               printk(KERN_NOTICE "Failed to find a non-bad block to check for RedBoot partition table\n");
+ nogood:
+                               pr_notice("Failed to find a non-bad block to check for RedBoot partition table\n");
 +                              vfree(buf);
                                return -EIO;
                        }
                        offset -= master->erasesize;
-@@ -112,10 +118,6 @@ static int parse_redboot_partitions(stru
+@@ -112,10 +118,6 @@ nogood:
                                goto nogood;
                }
        }
@@ -28,9 +28,9 @@
 -      if (!buf)
 -              return -ENOMEM;
  
-       printk(KERN_NOTICE "Searching for RedBoot partition table in %s at offset 0x%lx\n",
-              master->name, offset);
-@@ -188,6 +190,11 @@ static int parse_redboot_partitions(stru
+       pr_notice("Searching for RedBoot partition table in %s at offset 0x%lx\n",
+                 master->name, offset);
+@@ -187,6 +189,11 @@ nogood:
        }
        if (i == numslots) {
                /* Didn't find it */
@@ -39,6 +39,6 @@
 +                      directory++;
 +                      goto restart;
 +              }
-               printk(KERN_NOTICE "No RedBoot partition table detected in %s\n",
-                      master->name);
+               pr_notice("No RedBoot partition table detected in %s\n",
+                         master->name);
                ret = 0;
index c3b73eabe9678fa9170961669bc4c900f6ba0e3f..ca9e6861770ab29b7794e2033716af84db7f4187 100644 (file)
        unsigned long offset;
  #ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
        static char nullstring[] = "unallocated";
-@@ -201,7 +218,10 @@ static int parse_redboot_partitions(stru
+@@ -134,7 +151,9 @@ nogood:
+       }
+       numslots = (master->erasesize / sizeof(struct fis_image_desc));
+-      for (i = 0; i < numslots; i++) {
++      first_slot = (buf[i].flash_base & (master->erasesize - 1)) /
++                                sizeof(struct fis_image_desc);
++      for (i = first_slot; i < first_slot + numslots; i++) {
+               if (!memcmp(buf[i].name, "FIS directory", 14)) {
+                       /* This is apparently the FIS directory entry for the
+                        * FIS directory itself.  The FIS directory size is
+@@ -200,7 +219,10 @@ nogood:
                goto out;
        }
  
                struct fis_list *new_fl, **prev;
  
                if (buf[i].name[0] == 0xff) {
-@@ -277,12 +297,13 @@ static int parse_redboot_partitions(stru
+@@ -275,12 +297,13 @@ nogood:
        }
  #endif
-       for ( ; i<nrparts; i++) {
+       for ( ; i < nrparts; i++) {
 -              if (max_offset < buf[i].flash_base + buf[i].size)
--                      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;
  
 +              if (max_offset < parts[i].offset + parts[i].size)
-+                      max_offset = parts[i].offset + parts[i].size;
++                              max_offset = parts[i].offset + parts[i].size;
 +
                strcpy(names, fl->img->name);
  #ifdef CONFIG_MTD_REDBOOT_PARTS_READONLY
                if (!memcmp(names, "RedBoot", 8) ||
-@@ -312,7 +333,9 @@ static int parse_redboot_partitions(stru
+@@ -310,7 +333,9 @@ nogood:
                fl = fl->next;
                kfree(tmp_fl);
        }
index a683d01111b900106aec3f775db162f096fa9e00..3d762db80e84203a228f30c42ac2854dd6a99b0a 100644 (file)
@@ -78,7 +78,7 @@
  #include <asm/bootinfo.h>
  #include <asm/reboot.h>
  #include <asm/time.h>
-@@ -229,6 +230,23 @@ static struct platform_device ar5312_gpi
+@@ -228,6 +229,23 @@ static struct platform_device ar5312_gpi
        .num_resources = ARRAY_SIZE(ar5312_gpio_res),
  };
  
  static void __init ar5312_flash_init(void)
  {
        void __iomem *flashctl_base;
-@@ -299,6 +317,11 @@ void __init ar5312_init_devices(void)
+@@ -298,6 +316,11 @@ void __init ar5312_init_devices(void)
  
        platform_device_register(&ar5312_gpio);