On Tue, 17 Mar 2020 21:59:27 +0100 David Bauer <[email protected]> wrote:
> This fixes the compilation of the AR934x NAND controller > driver for kernel 5.4 while leaving it untouched for > kernel 4.19. > > This change is currently not run-tested, as i do not have such > a device at hand. > Hello David, Good news, Netgear WNDR4300 runs fine on kernel 5.4 with this patch applied. Tested-by: Michal Cieslakiewicz <[email protected]> I would also propose to mitigate two compilation warnings by introducing a return value here (by integrating into your patch): ========= diff --git a/target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c b/target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c index 70aa396e25..0e33b07146 100644 --- a/target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c +++ b/target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c @@ -1082,14 +1082,24 @@ static int ar934x_nfc_write_page(struct nand_chip *chip, return err; } -static int ar934x_nfc_hw_reset_assert(struct ar934x_nfc *nfc) { - reset_control_assert(nfc->rst); +static int ar934x_nfc_hw_reset_assert(struct ar934x_nfc *nfc) +{ + int err; + + err = reset_control_assert(nfc->rst); udelay(250); + + return err; } -static int ar934x_nfc_hw_reset_deassert(struct ar934x_nfc *nfc) { - reset_control_deassert(nfc->rst); +static int ar934x_nfc_hw_reset_deassert(struct ar934x_nfc *nfc) +{ + int err; + + err = reset_control_deassert(nfc->rst); udelay(250); + + return err; } static int ar934x_nfc_hw_init(struct ar934x_nfc *nfc) ========= And finally, an important information: Enabling 5.4 for this device exposes a mtd concat issue unrelated to ar934x-nand driver, apparently affecting all routers that use concatenation of flash areas to form one larger volume for ubi. This appears to be a generic 5.x kernel problem not introduced by OpenWrt in any way. The quick and dirty solution that worked for me was reverting kernel patch: commit 2431c4f5b46c32c4ac495456b1ef4ce59c0bb85d Author: Boris Brezillon <[email protected]> Date: Thu Dec 20 15:13:20 2018 +0100 mtd: Implement mtd_{read,write}() as wrappers around mtd_{read,write}_oob() mtd_{read,write}_oob() already take care of checking the params and calling ->_{read,write}() or ->_{read,write}_oob() based on the request and the operations supported by the MTD device. No need to duplicate the logic, we can simply implement mtd_{read,write}() as wrappers around mtd_{read,write}_oob(). Above commit makes router to oops on WARN_ON canary and exit with error when creating mtd concat, entering boot loop. Without it my WNDR4300 runs fine so far. Best regards Michal _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
