ar71xx: fix board detection with newer RouterBOOT versions
Recent RouterBOOT version (at least version 3.41 on RB911G-5HPacD) use "Board=" kernel parameter instead of "board=" to pass the board name to the kernel. Due to this change the board detection code is not working on the devices shipped with the new RouterBOOT version. Because the kernel is unable to identify these boards they become unusable despite that they are supported by the current code. Update the prom_init code to convert the 'Board' kernel parameter to 'board'. After this change, the board detection works also with the new RouterBOOT versions. Signed-off-by: Gabor Juhos <juhosg@freemail.hu>
This commit is contained in:
		 Gabor Juhos
					Gabor Juhos
				
			
				
					committed by
					
						 Yousong Zhou
						Yousong Zhou
					
				
			
			
				
	
			
			
			 Yousong Zhou
						Yousong Zhou
					
				
			
						parent
						
							b8220883fd
						
					
				
				
					commit
					e7b48fcfe1
				
			| @@ -0,0 +1,43 @@ | |||||||
|  | From: Gabor Juhos <juhosg@freemail.hu> | ||||||
|  | Date: Sat, 2 Dec 2017 19:15:29 +0100 | ||||||
|  | Subject: [PATCH] MIPS: ath79: fix board detection with newer RouterBOOT versions | ||||||
|  |  | ||||||
|  | Recent RouterBOOT version (at least version 3.41 on RB911G-5HPacD) | ||||||
|  | use "Board=" kernel parameter instead of "board=" to pass the board | ||||||
|  | name to the kernel. Due to this change the board detection code is | ||||||
|  | not working on the devices shipped with the new RouterBOOT version. | ||||||
|  | Because the kernel is unable to identify these boards they become | ||||||
|  | unusable despite that they are supported by the current code. | ||||||
|  |  | ||||||
|  | Update the prom_init code to convert the 'Board' kernel parameter to | ||||||
|  | 'board'. After this change, the board detection works also with the | ||||||
|  | new RouterBOOT versions. | ||||||
|  |  | ||||||
|  | Signed-off-by: Gabor Juhos <juhosg@freemail.hu> | ||||||
|  | --- | ||||||
|  | --- a/arch/mips/ath79/prom.c | ||||||
|  | +++ b/arch/mips/ath79/prom.c | ||||||
|  | @@ -104,6 +104,7 @@ static int __init ath79_prom_init_myload | ||||||
|  |  void __init prom_init(void) | ||||||
|  |  { | ||||||
|  |  	const char *env; | ||||||
|  | +	char *c; | ||||||
|  |   | ||||||
|  |  	if (ath79_prom_init_myloader()) | ||||||
|  |  		return; | ||||||
|  | @@ -137,6 +138,15 @@ void __init prom_init(void) | ||||||
|  |  	} | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  | +	/* | ||||||
|  | +	 * RouterBOOT uses "Board" kernel parameter instead of "board" since | ||||||
|  | +	 * version 3.41 (or so). Replace the first character of the parameter | ||||||
|  | +	 * to keep board detection working. | ||||||
|  | +	 */ | ||||||
|  | +	c = strstr(arcs_cmdline, "Board="); | ||||||
|  | +	if (c) | ||||||
|  | +		c[0] = 'b'; | ||||||
|  | + | ||||||
|  |  	if (strstr(arcs_cmdline, "board=750Gr3") || | ||||||
|  |  	    strstr(arcs_cmdline, "board=750i") || | ||||||
|  |  	    strstr(arcs_cmdline, "board=750-hb") || | ||||||
| @@ -0,0 +1,43 @@ | |||||||
|  | From: Gabor Juhos <juhosg@freemail.hu> | ||||||
|  | Date: Sat, 2 Dec 2017 19:15:29 +0100 | ||||||
|  | Subject: [PATCH] MIPS: ath79: fix board detection with newer RouterBOOT versions | ||||||
|  |  | ||||||
|  | Recent RouterBOOT version (at least version 3.41 on RB911G-5HPacD) | ||||||
|  | use "Board=" kernel parameter instead of "board=" to pass the board | ||||||
|  | name to the kernel. Due to this change the board detection code is | ||||||
|  | not working on the devices shipped with the new RouterBOOT version. | ||||||
|  | Because the kernel is unable to identify these boards they become | ||||||
|  | unusable despite that they are supported by the current code. | ||||||
|  |  | ||||||
|  | Update the prom_init code to convert the 'Board' kernel parameter to | ||||||
|  | 'board'. After this change, the board detection works also with the | ||||||
|  | new RouterBOOT versions. | ||||||
|  |  | ||||||
|  | Signed-off-by: Gabor Juhos <juhosg@freemail.hu> | ||||||
|  | --- | ||||||
|  | --- a/arch/mips/ath79/prom.c | ||||||
|  | +++ b/arch/mips/ath79/prom.c | ||||||
|  | @@ -104,6 +104,7 @@ static int __init ath79_prom_init_myload | ||||||
|  |  void __init prom_init(void) | ||||||
|  |  { | ||||||
|  |  	const char *env; | ||||||
|  | +	char *c; | ||||||
|  |   | ||||||
|  |  	if (ath79_prom_init_myloader()) | ||||||
|  |  		return; | ||||||
|  | @@ -137,6 +138,15 @@ void __init prom_init(void) | ||||||
|  |  	} | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  | +	/* | ||||||
|  | +	 * RouterBOOT uses "Board" kernel parameter instead of "board" since | ||||||
|  | +	 * version 3.41 (or so). Replace the first character of the parameter | ||||||
|  | +	 * to keep board detection working. | ||||||
|  | +	 */ | ||||||
|  | +	c = strstr(arcs_cmdline, "Board="); | ||||||
|  | +	if (c) | ||||||
|  | +		c[0] = 'b'; | ||||||
|  | + | ||||||
|  |  	if (strstr(arcs_cmdline, "board=750Gr3") || | ||||||
|  |  	    strstr(arcs_cmdline, "board=750i") || | ||||||
|  |  	    strstr(arcs_cmdline, "board=750-hb") || | ||||||
		Reference in New Issue
	
	Block a user