--- a/arch/mips/xburst/soc-t31/common/gpio.c +++ b/arch/mips/xburst/soc-t31/common/gpio.c @@ -85,6 +85,7 @@ #endif extern int __init gpio_customized_init(void); extern void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume); +extern int disable_gmac; struct jzgpio_state { unsigned int pxint; @@ -972,6 +973,15 @@ break; } + if (!strcmp(g->name,"gmac_pb") && disable_gmac){ + pr_info("Skipping GMAC GPIO setup\n"); + continue; + } + if (!strcmp(g->name,"msc1-pB") && !disable_gmac){ + pr_info("Skipping MSC1_PB GPIO setup\n"); + continue; + } + jz = &jz_gpio_chips[g->port]; if (GPIO_AS_FUNC(g->func)) { if(jz->dev_map[0] & g->pins) { --- a/arch/mips/xburst/soc-t10/common/platform.c +++ b/arch/mips/xburst/soc-t10/common/platform.c @@ -960,3 +960,13 @@ return 1; } __setup("ispmem=", ispmem_parse); + +int disable_gmac = 0; +EXPORT_SYMBOL(disable_gmac); + +static int __init extras_parse(char *str) +{ + disable_gmac = 1; + return 0; +} +__setup("nogmac", extras_parse); --- a/arch/mips/xburst/soc-t20/common/platform.c +++ b/arch/mips/xburst/soc-t20/common/platform.c @@ -927,3 +927,13 @@ return 1; } __setup("ispmem=", ispmem_parse); + +int disable_gmac = 0; +EXPORT_SYMBOL(disable_gmac); + +static int __init extras_parse(char *str) +{ + disable_gmac = 1; + return 0; +} +__setup("nogmac", extras_parse); --- a/arch/mips/xburst/soc-t21/common/platform.c +++ b/arch/mips/xburst/soc-t21/common/platform.c @@ -935,6 +935,16 @@ *size = ispmem_size; } +int disable_gmac = 0; +EXPORT_SYMBOL(disable_gmac); + +static int __init extras_parse(char *str) +{ + disable_gmac = 1; + return 0; +} +__setup("nogmac", extras_parse); + #ifndef CONFIG_PROC_FS #error NOT config procfs #endif --- a/arch/mips/xburst/soc-t30/common/platform.c +++ b/arch/mips/xburst/soc-t30/common/platform.c @@ -936,6 +936,16 @@ *size = ispmem_size; } +int disable_gmac = 0; +EXPORT_SYMBOL(disable_gmac); + +static int __init extras_parse(char *str) +{ + disable_gmac = 1; + return 0; +} +__setup("nogmac", extras_parse); + #ifndef CONFIG_PROC_FS #error NOT config procfs #endif --- a/arch/mips/xburst/soc-t31/common/platform.c +++ b/arch/mips/xburst/soc-t31/common/platform.c @@ -1032,6 +1032,16 @@ *size = ispmem_size; } +int disable_gmac = 0; +EXPORT_SYMBOL(disable_gmac); + +static int __init extras_parse(char *str) +{ + disable_gmac = 1; + return 0; +} +__setup("nogmac", extras_parse); + #ifndef CONFIG_PROC_FS #error NOT config procfs #endif --- a/drivers/net/ethernet/ingenic/jz_mac_v13.c +++ b/drivers/net/ethernet/ingenic/jz_mac_v13.c @@ -2392,8 +2392,11 @@ #define JZ_GMAC_BASE 0xb34b0000 +extern int disable_gmac; + static int __init jz_mac_init(void) { +if (!disable_gmac){ #ifndef CONFIG_MDIO_GPIO int ret; #endif @@ -2420,6 +2423,11 @@ #endif } +else{ + pr_info("JZ GMAC disabled\n"); + return -ENODEV; +} +} module_init(jz_mac_init);