 d4a67d9dc8
			
		
	
	
	d4a67d9dc8
	
	
	
		
			
			This patch adds initial support for various Atheros SoCs based on the MIPS 24Kc core. The following models are supported at the moment: - AR7130 - AR7141 - AR7161 - AR9130 - AR9132 - AR7240 - AR7241 - AR7242 The current patch contains minimal support only, but the resulting kernel can boot into user-space with using of an initramfs image on various boards which are using these SoCs. Support for more built-in devices and individual boards will be implemented in further patches. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: Imre Kaloz <kaloz@openwrt.org> Cc: linux-mips@linux-mips.org Cc: Luis R. Rodriguez <lrodriguez@atheros.com> Cc: Cliff Holden <Cliff.Holden@Atheros.com> Cc: Kathy Giori <Kathy.Giori@Atheros.com> Patchwork: https://patchwork.linux-mips.org/patch/1947/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *  Atheros AR71XX/AR724X/AR913X specific prom routines
 | |
|  *
 | |
|  *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
 | |
|  *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
 | |
|  *
 | |
|  *  This program is free software; you can redistribute it and/or modify it
 | |
|  *  under the terms of the GNU General Public License version 2 as published
 | |
|  *  by the Free Software Foundation.
 | |
|  */
 | |
| 
 | |
| #include <linux/kernel.h>
 | |
| #include <linux/init.h>
 | |
| #include <linux/io.h>
 | |
| #include <linux/string.h>
 | |
| 
 | |
| #include <asm/bootinfo.h>
 | |
| #include <asm/addrspace.h>
 | |
| 
 | |
| #include "common.h"
 | |
| 
 | |
| static inline int is_valid_ram_addr(void *addr)
 | |
| {
 | |
| 	if (((u32) addr > KSEG0) &&
 | |
| 	    ((u32) addr < (KSEG0 + ATH79_MEM_SIZE_MAX)))
 | |
| 		return 1;
 | |
| 
 | |
| 	if (((u32) addr > KSEG1) &&
 | |
| 	    ((u32) addr < (KSEG1 + ATH79_MEM_SIZE_MAX)))
 | |
| 		return 1;
 | |
| 
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static __init void ath79_prom_init_cmdline(int argc, char **argv)
 | |
| {
 | |
| 	int i;
 | |
| 
 | |
| 	if (!is_valid_ram_addr(argv))
 | |
| 		return;
 | |
| 
 | |
| 	for (i = 0; i < argc; i++)
 | |
| 		if (is_valid_ram_addr(argv[i])) {
 | |
| 			strlcat(arcs_cmdline, " ", sizeof(arcs_cmdline));
 | |
| 			strlcat(arcs_cmdline, argv[i], sizeof(arcs_cmdline));
 | |
| 		}
 | |
| }
 | |
| 
 | |
| void __init prom_init(void)
 | |
| {
 | |
| 	ath79_prom_init_cmdline(fw_arg0, (char **)fw_arg1);
 | |
| }
 | |
| 
 | |
| void __init prom_free_prom_memory(void)
 | |
| {
 | |
| 	/* We do not have to prom memory to free */
 | |
| }
 |