Skip to content

Commit

Permalink
update ar71xx to kernel 4.9 again
Browse files Browse the repository at this point in the history
  • Loading branch information
coolsnowwolf committed Oct 24, 2017
1 parent 140a514 commit 9032647
Show file tree
Hide file tree
Showing 16 changed files with 160 additions and 67 deletions.
2 changes: 1 addition & 1 deletion target/linux/ar71xx/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ FEATURES:=usbgadget
CPU_TYPE:=24kc
SUBTARGETS:=generic nand mikrotik

KERNEL_PATCHVER:=4.4
KERNEL_PATCHVER:=4.9

include $(INCLUDE_DIR)/target.mk

Expand Down
3 changes: 1 addition & 2 deletions target/linux/ar71xx/config-4.4
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,8 @@ CONFIG_ATH79_MACH_UBNT=y
CONFIG_ATH79_MACH_UBNT_UNIFIAC=y
CONFIG_ATH79_MACH_UBNT_XM=y
CONFIG_ATH79_MACH_WEIO=y
CONFIG_ATH79_MACH_WHR_HP_G300N=y
# CONFIG_ATH79_MACH_WI2A_AC200I is not set
CONFIG_ATH79_MACH_WHR_HP_G300N=y
CONFIG_ATH79_MACH_WLAE_AG300N=y
CONFIG_ATH79_MACH_WLR8100=y
CONFIG_ATH79_MACH_WNDAP360=y
Expand Down Expand Up @@ -374,7 +374,6 @@ CONFIG_MIPS_CLOCK_VSYSCALL=y
CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y
# CONFIG_MIPS_CMDLINE_FROM_DTB is not set
# CONFIG_MIPS_ELF_APPENDED_DTB is not set
CONFIG_MIPS_FPU_EMULATOR=y
# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set
CONFIG_MIPS_L1_CACHE_SHIFT=5
CONFIG_MIPS_MACHINE=y
Expand Down
18 changes: 9 additions & 9 deletions target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c25-v1.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@
#define ARCHER_C25_GPIO_SHIFT_SRCLR 19 /* MR, Master Reset */
#define ARCHER_C25_GPIO_SHIFT_RCLK 16 /* STCP, Storage Reg Clock Input */

#define ARCHER_C25_74HC_GPIO_BASE QCA956X_GPIO_COUNT
#define ARCHER_C25_74HC_GPIO_LED_WAN_AMBER 27
#define ARCHER_C25_74HC_GPIO_LED_WAN_GREEN 28
#define ARCHER_C25_74HC_GPIO_LED_WLAN2 29
#define ARCHER_C25_74HC_GPIO_LED_WLAN5 30
#define ARCHER_C25_74HC_GPIO_LED_LAN1 23
#define ARCHER_C25_74HC_GPIO_LED_LAN2 24
#define ARCHER_C25_74HC_GPIO_LED_LAN3 25
#define ARCHER_C25_74HC_GPIO_LED_LAN4 26
#define ARCHER_C25_74HC_GPIO_BASE 32
#define ARCHER_C25_74HC_GPIO_LED_WAN_AMBER (ARCHER_C25_74HC_GPIO_BASE + 4)
#define ARCHER_C25_74HC_GPIO_LED_WAN_GREEN (ARCHER_C25_74HC_GPIO_BASE + 5)
#define ARCHER_C25_74HC_GPIO_LED_WLAN2 (ARCHER_C25_74HC_GPIO_BASE + 6)
#define ARCHER_C25_74HC_GPIO_LED_WLAN5 (ARCHER_C25_74HC_GPIO_BASE + 7)
#define ARCHER_C25_74HC_GPIO_LED_LAN1 (ARCHER_C25_74HC_GPIO_BASE + 0)
#define ARCHER_C25_74HC_GPIO_LED_LAN2 (ARCHER_C25_74HC_GPIO_BASE + 1)
#define ARCHER_C25_74HC_GPIO_LED_LAN3 (ARCHER_C25_74HC_GPIO_BASE + 2)
#define ARCHER_C25_74HC_GPIO_LED_LAN4 (ARCHER_C25_74HC_GPIO_BASE + 3)

#define ARCHER_C25_V1_SSR_BIT_0 0
#define ARCHER_C25_V1_SSR_BIT_1 1
Expand Down
18 changes: 9 additions & 9 deletions target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c59-v1.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@
#define ARCHER_C59_GPIO_SHIFT_SRCLR 19
#define ARCHER_C59_GPIO_SHIFT_RCLK 20

#define ARCHER_C59_74HC_GPIO_BASE QCA956X_GPIO_COUNT
#define ARCHER_C59_74HC_GPIO_LED_POWER 23
#define ARCHER_C59_74HC_GPIO_LED_WLAN2 24
#define ARCHER_C59_74HC_GPIO_LED_WLAN5 25
#define ARCHER_C59_74HC_GPIO_LED_LAN 26
#define ARCHER_C59_74HC_GPIO_LED_WAN_GREEN 27
#define ARCHER_C59_74HC_GPIO_LED_WAN_AMBER 28
#define ARCHER_C59_74HC_GPIO_LED_WPS 29
#define ARCHER_C59_74HC_GPIO_LED_USB 30
#define ARCHER_C59_74HC_GPIO_BASE 32
#define ARCHER_C59_74HC_GPIO_LED_POWER (ARCHER_C59_74HC_GPIO_BASE + 0)
#define ARCHER_C59_74HC_GPIO_LED_WLAN2 (ARCHER_C59_74HC_GPIO_BASE + 1)
#define ARCHER_C59_74HC_GPIO_LED_WLAN5 (ARCHER_C59_74HC_GPIO_BASE + 2)
#define ARCHER_C59_74HC_GPIO_LED_LAN (ARCHER_C59_74HC_GPIO_BASE + 3)
#define ARCHER_C59_74HC_GPIO_LED_WAN_GREEN (ARCHER_C59_74HC_GPIO_BASE + 4)
#define ARCHER_C59_74HC_GPIO_LED_WAN_AMBER (ARCHER_C59_74HC_GPIO_BASE + 5)
#define ARCHER_C59_74HC_GPIO_LED_WPS (ARCHER_C59_74HC_GPIO_BASE + 6)
#define ARCHER_C59_74HC_GPIO_LED_USB (ARCHER_C59_74HC_GPIO_BASE + 7)

#define ARCHER_C59_V1_SSR_BIT_0 0
#define ARCHER_C59_V1_SSR_BIT_1 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
#define ARCHER_C7_GPIO_LED_USB1 7
#define ARCHER_C7_GPIO_LED_USB2 8

#define ARCHER_C7_74HC_GPIO_BASE QCA956X_GPIO_COUNT
#define ARCHER_C7_74HC_GPIO_BASE 32
#define ARCHER_C7_GPIO_LED_WPS (ARCHER_C7_74HC_GPIO_BASE + 0)
#define ARCHER_C7_GPIO_LED_LAN1 (ARCHER_C7_74HC_GPIO_BASE + 1)
#define ARCHER_C7_GPIO_LED_LAN2 (ARCHER_C7_74HC_GPIO_BASE + 2)
Expand Down
2 changes: 1 addition & 1 deletion target/linux/ar71xx/files/arch/mips/ath79/mach-rb91x.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
#define RB91X_FLAG_USB BIT(0)
#define RB91X_FLAG_PCIE BIT(1)

#define RB91X_LATCH_GPIO_BASE AR934X_GPIO_COUNT
#define RB91X_LATCH_GPIO_BASE 32
#define RB91X_LATCH_GPIO(_x) (RB91X_LATCH_GPIO_BASE + (_x))

#define RB91X_SSR_GPIO_BASE (RB91X_LATCH_GPIO_BASE + AR934X_GPIO_COUNT)
Expand Down
18 changes: 9 additions & 9 deletions target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr942n-v1.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@
#define TL_WR942N_V1_GPIO_LED_WPS 21
#define TL_WR942N_V1_GPIO_LED_STATUS 22

#define TL_WR942N_V1_74HC_GPIO_BASE QCA956X_GPIO_COUNT
#define TL_WR942N_V1_74HC_GPIO_LED_LAN4 23
#define TL_WR942N_V1_74HC_GPIO_LED_LAN3 24
#define TL_WR942N_V1_74HC_GPIO_LED_LAN2 25
#define TL_WR942N_V1_74HC_GPIO_LED_LAN1 26
#define TL_WR942N_V1_74HC_GPIO_LED_WAN_GREEN 27
#define TL_WR942N_V1_74HC_GPIO_LED_WAN_AMBER 28
#define TL_WR942N_V1_74HC_GPIO_LED_WLAN 29
#define TL_WR942N_V1_74HC_GPIO_HUB_RESET 30 /* from u-boot sources */
#define TL_WR942N_V1_74HC_GPIO_BASE 32
#define TL_WR942N_V1_74HC_GPIO_LED_LAN4 (TL_WR942N_V1_74HC_GPIO_BASE + 0)
#define TL_WR942N_V1_74HC_GPIO_LED_LAN3 (TL_WR942N_V1_74HC_GPIO_BASE + 1)
#define TL_WR942N_V1_74HC_GPIO_LED_LAN2 (TL_WR942N_V1_74HC_GPIO_BASE + 2)
#define TL_WR942N_V1_74HC_GPIO_LED_LAN1 (TL_WR942N_V1_74HC_GPIO_BASE + 3)
#define TL_WR942N_V1_74HC_GPIO_LED_WAN_GREEN (TL_WR942N_V1_74HC_GPIO_BASE + 4)
#define TL_WR942N_V1_74HC_GPIO_LED_WAN_AMBER (TL_WR942N_V1_74HC_GPIO_BASE + 5)
#define TL_WR942N_V1_74HC_GPIO_LED_WLAN (TL_WR942N_V1_74HC_GPIO_BASE + 6)
#define TL_WR942N_V1_74HC_GPIO_HUB_RESET (TL_WR942N_V1_74HC_GPIO_BASE + 7) /* from u-boot sources */

#define TL_WR942N_V1_SSR_BIT_0 0
#define TL_WR942N_V1_SSR_BIT_1 1
Expand Down
48 changes: 39 additions & 9 deletions target/linux/ar71xx/files/drivers/mtd/nand/rb4xx_nand.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,31 @@

struct rb4xx_nand_info {
struct nand_chip chip;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
struct mtd_info mtd;
#endif
};

static inline struct rb4xx_nand_info *mtd_to_rbinfo(struct mtd_info *mtd)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
return container_of(mtd, struct rb4xx_nand_info, mtd);
#else
struct nand_chip *chip = mtd_to_nand(mtd);

return container_of(chip, struct rb4xx_nand_info, chip);
#endif
}

static struct mtd_info *rbinfo_to_mtd(struct rb4xx_nand_info *nfc)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
return &nfc->mtd;
#else
return nand_to_mtd(&nfc->chip);
#endif
}

#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
/*
* We need to use the OLD Yaffs-1 OOB layout, otherwise the RB bootloader
Expand Down Expand Up @@ -191,6 +213,7 @@ static void rb4xx_nand_read_buf(struct mtd_info *mtd, unsigned char *buf,
static int rb4xx_nand_probe(struct platform_device *pdev)
{
struct rb4xx_nand_info *info;
struct mtd_info *mtd;
int ret;

printk(KERN_INFO DRV_DESC " version " DRV_VERSION "\n");
Expand Down Expand Up @@ -259,8 +282,12 @@ static int rb4xx_nand_probe(struct platform_device *pdev)
}

info->chip.priv = &info;
info->mtd.priv = &info->chip;
info->mtd.owner = THIS_MODULE;
mtd = rbinfo_to_mtd(info);

#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
mtd->priv = &info->chip;
#endif
mtd->owner = THIS_MODULE;

info->chip.cmd_ctrl = rb4xx_nand_cmd_ctrl;
info->chip.dev_ready = rb4xx_nand_dev_ready;
Expand All @@ -270,38 +297,41 @@ static int rb4xx_nand_probe(struct platform_device *pdev)

info->chip.chip_delay = 25;
info->chip.ecc.mode = NAND_ECC_SOFT;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0)
info->chip.ecc.algo = NAND_ECC_HAMMING;
#endif
info->chip.options = NAND_NO_SUBPAGE_WRITE;

platform_set_drvdata(pdev, info);

ret = nand_scan_ident(&info->mtd, 1, NULL);
ret = nand_scan_ident(mtd, 1, NULL);
if (ret) {
ret = -ENXIO;
goto err_free_info;
}

if (info->mtd.writesize == 512)
if (mtd->writesize == 512)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
info->chip.ecc.layout = &rb4xx_nand_ecclayout;
#else
mtd_set_ooblayout(&info->mtd, &rb4xx_nand_ecclayout_ops);
mtd_set_ooblayout(mtd, &rb4xx_nand_ecclayout_ops);
#endif

ret = nand_scan_tail(&info->mtd);
ret = nand_scan_tail(mtd);
if (ret) {
return -ENXIO;
goto err_set_drvdata;
}

mtd_device_register(&info->mtd, rb4xx_nand_partitions,
mtd_device_register(mtd, rb4xx_nand_partitions,
ARRAY_SIZE(rb4xx_nand_partitions));
if (ret)
goto err_release_nand;

return 0;

err_release_nand:
nand_release(&info->mtd);
nand_release(mtd);
err_set_drvdata:
platform_set_drvdata(pdev, NULL);
err_free_info:
Expand All @@ -322,7 +352,7 @@ static int rb4xx_nand_remove(struct platform_device *pdev)
{
struct rb4xx_nand_info *info = platform_get_drvdata(pdev);

nand_release(&info->mtd);
nand_release(rbinfo_to_mtd(info));
platform_set_drvdata(pdev, NULL);
kfree(info);
gpio_free(RB4XX_NAND_GPIO_NCE);
Expand Down
43 changes: 34 additions & 9 deletions target/linux/ar71xx/files/drivers/mtd/nand/rb750_nand.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,30 @@

struct rb750_nand_info {
struct nand_chip chip;
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
struct mtd_info mtd;
#endif
struct rb7xx_nand_platform_data *pdata;
};

static inline struct rb750_nand_info *mtd_to_rbinfo(struct mtd_info *mtd)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
return container_of(mtd, struct rb750_nand_info, mtd);
#else
struct nand_chip *chip = mtd_to_nand(mtd);

return container_of(chip, struct rb750_nand_info, chip);
#endif
}

static struct mtd_info *rbinfo_to_mtd(struct rb750_nand_info *nfc)
{
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
return &nfc->mtd;
#else
return nand_to_mtd(&nfc->chip);
#endif
}

#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
Expand Down Expand Up @@ -304,6 +321,7 @@ static int rb750_nand_probe(struct platform_device *pdev)
{
struct rb750_nand_info *info;
struct rb7xx_nand_platform_data *pdata;
struct mtd_info *mtd;
int ret;

printk(KERN_INFO DRV_DESC " version " DRV_VERSION "\n");
Expand All @@ -317,8 +335,12 @@ static int rb750_nand_probe(struct platform_device *pdev)
return -ENOMEM;

info->chip.priv = &info;
info->mtd.priv = &info->chip;
info->mtd.owner = THIS_MODULE;

mtd = rbinfo_to_mtd(info);
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
mtd->priv = &info->chip;
#endif
mtd->owner = THIS_MODULE;

info->chip.select_chip = rb750_nand_select_chip;
info->chip.cmd_ctrl = rb750_nand_cmd_ctrl;
Expand All @@ -329,6 +351,9 @@ static int rb750_nand_probe(struct platform_device *pdev)

info->chip.chip_delay = 25;
info->chip.ecc.mode = NAND_ECC_SOFT;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0)
info->chip.ecc.algo = NAND_ECC_HAMMING;
#endif
info->chip.options = NAND_NO_SUBPAGE_WRITE;

info->pdata = pdata;
Expand All @@ -337,34 +362,34 @@ static int rb750_nand_probe(struct platform_device *pdev)

rb750_nand_gpio_init(info);

ret = nand_scan_ident(&info->mtd, 1, NULL);
ret = nand_scan_ident(mtd, 1, NULL);
if (ret) {
ret = -ENXIO;
goto err_free_info;
}

if (info->mtd.writesize == 512)
if (mtd->writesize == 512)
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
info->chip.ecc.layout = &rb750_nand_ecclayout;
#else
mtd_set_ooblayout(&info->mtd, &rb750_nand_ecclayout_ops);
mtd_set_ooblayout(mtd, &rb750_nand_ecclayout_ops);
#endif

ret = nand_scan_tail(&info->mtd);
ret = nand_scan_tail(mtd);
if (ret) {
return -ENXIO;
goto err_set_drvdata;
}

ret = mtd_device_register(&info->mtd, rb750_nand_partitions,
ret = mtd_device_register(mtd, rb750_nand_partitions,
ARRAY_SIZE(rb750_nand_partitions));
if (ret)
goto err_release_nand;

return 0;

err_release_nand:
nand_release(&info->mtd);
nand_release(mtd);
err_set_drvdata:
platform_set_drvdata(pdev, NULL);
err_free_info:
Expand All @@ -376,7 +401,7 @@ static int rb750_nand_remove(struct platform_device *pdev)
{
struct rb750_nand_info *info = platform_get_drvdata(pdev);

nand_release(&info->mtd);
nand_release(rbinfo_to_mtd(info));
platform_set_drvdata(pdev, NULL);
kfree(info);

Expand Down
Loading

0 comments on commit 9032647

Please sign in to comment.