~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/mips/ath79/setup.c

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/mips/ath79/setup.c (Version linux-6.12-rc7) and /arch/ppc/ath79/setup.c (Version linux-3.10.108)


  1 // SPDX-License-Identifier: GPL-2.0-only            1 
  2 /*                                                
  3  *  Atheros AR71XX/AR724X/AR913X specific setu    
  4  *                                                
  5  *  Copyright (C) 2010-2011 Jaiganesh Narayana    
  6  *  Copyright (C) 2008-2011 Gabor Juhos <juhos    
  7  *  Copyright (C) 2008 Imre Kaloz <kaloz@openw    
  8  *                                                
  9  *  Parts of this file are based on Atheros' 2    
 10  */                                               
 11                                                   
 12 #include <linux/kernel.h>                         
 13 #include <linux/init.h>                           
 14 #include <linux/io.h>                             
 15 #include <linux/memblock.h>                       
 16 #include <linux/err.h>                            
 17 #include <linux/clk.h>                            
 18 #include <linux/of_clk.h>                         
 19 #include <linux/of_fdt.h>                         
 20 #include <linux/irqchip.h>                        
 21                                                   
 22 #include <asm/bootinfo.h>                         
 23 #include <asm/idle.h>                             
 24 #include <asm/time.h>           /* for mips_hp    
 25 #include <asm/reboot.h>         /* for _machin    
 26 #include <asm/prom.h>                             
 27 #include <asm/fw/fw.h>                            
 28                                                   
 29 #include <asm/mach-ath79/ath79.h>                 
 30 #include <asm/mach-ath79/ar71xx_regs.h>           
 31 #include "common.h"                               
 32                                                   
 33 #define ATH79_SYS_TYPE_LEN      64                
 34                                                   
 35 static char ath79_sys_type[ATH79_SYS_TYPE_LEN]    
 36                                                   
 37 static void ath79_halt(void)                      
 38 {                                                 
 39         while (1)                                 
 40                 cpu_wait();                       
 41 }                                                 
 42                                                   
 43 static void __init ath79_detect_sys_type(void)    
 44 {                                                 
 45         char *chip = "????";                      
 46         u32 id;                                   
 47         u32 major;                                
 48         u32 minor;                                
 49         u32 rev = 0;                              
 50         u32 ver = 1;                              
 51                                                   
 52         id = ath79_reset_rr(AR71XX_RESET_REG_R    
 53         major = id & REV_ID_MAJOR_MASK;           
 54                                                   
 55         switch (major) {                          
 56         case REV_ID_MAJOR_AR71XX:                 
 57                 minor = id & AR71XX_REV_ID_MIN    
 58                 rev = id >> AR71XX_REV_ID_REVI    
 59                 rev &= AR71XX_REV_ID_REVISION_    
 60                 switch (minor) {                  
 61                 case AR71XX_REV_ID_MINOR_AR713    
 62                         ath79_soc = ATH79_SOC_    
 63                         chip = "7130";            
 64                         break;                    
 65                                                   
 66                 case AR71XX_REV_ID_MINOR_AR714    
 67                         ath79_soc = ATH79_SOC_    
 68                         chip = "7141";            
 69                         break;                    
 70                                                   
 71                 case AR71XX_REV_ID_MINOR_AR716    
 72                         ath79_soc = ATH79_SOC_    
 73                         chip = "7161";            
 74                         break;                    
 75                 }                                 
 76                 break;                            
 77                                                   
 78         case REV_ID_MAJOR_AR7240:                 
 79                 ath79_soc = ATH79_SOC_AR7240;     
 80                 chip = "7240";                    
 81                 rev = id & AR724X_REV_ID_REVIS    
 82                 break;                            
 83                                                   
 84         case REV_ID_MAJOR_AR7241:                 
 85                 ath79_soc = ATH79_SOC_AR7241;     
 86                 chip = "7241";                    
 87                 rev = id & AR724X_REV_ID_REVIS    
 88                 break;                            
 89                                                   
 90         case REV_ID_MAJOR_AR7242:                 
 91                 ath79_soc = ATH79_SOC_AR7242;     
 92                 chip = "7242";                    
 93                 rev = id & AR724X_REV_ID_REVIS    
 94                 break;                            
 95                                                   
 96         case REV_ID_MAJOR_AR913X:                 
 97                 minor = id & AR913X_REV_ID_MIN    
 98                 rev = id >> AR913X_REV_ID_REVI    
 99                 rev &= AR913X_REV_ID_REVISION_    
100                 switch (minor) {                  
101                 case AR913X_REV_ID_MINOR_AR913    
102                         ath79_soc = ATH79_SOC_    
103                         chip = "9130";            
104                         break;                    
105                                                   
106                 case AR913X_REV_ID_MINOR_AR913    
107                         ath79_soc = ATH79_SOC_    
108                         chip = "9132";            
109                         break;                    
110                 }                                 
111                 break;                            
112                                                   
113         case REV_ID_MAJOR_AR9330:                 
114                 ath79_soc = ATH79_SOC_AR9330;     
115                 chip = "9330";                    
116                 rev = id & AR933X_REV_ID_REVIS    
117                 break;                            
118                                                   
119         case REV_ID_MAJOR_AR9331:                 
120                 ath79_soc = ATH79_SOC_AR9331;     
121                 chip = "9331";                    
122                 rev = id & AR933X_REV_ID_REVIS    
123                 break;                            
124                                                   
125         case REV_ID_MAJOR_AR9341:                 
126                 ath79_soc = ATH79_SOC_AR9341;     
127                 chip = "9341";                    
128                 rev = id & AR934X_REV_ID_REVIS    
129                 break;                            
130                                                   
131         case REV_ID_MAJOR_AR9342:                 
132                 ath79_soc = ATH79_SOC_AR9342;     
133                 chip = "9342";                    
134                 rev = id & AR934X_REV_ID_REVIS    
135                 break;                            
136                                                   
137         case REV_ID_MAJOR_AR9344:                 
138                 ath79_soc = ATH79_SOC_AR9344;     
139                 chip = "9344";                    
140                 rev = id & AR934X_REV_ID_REVIS    
141                 break;                            
142                                                   
143         case REV_ID_MAJOR_QCA9533_V2:             
144                 ver = 2;                          
145                 ath79_soc_rev = 2;                
146                 fallthrough;                      
147         case REV_ID_MAJOR_QCA9533:                
148                 ath79_soc = ATH79_SOC_QCA9533;    
149                 chip = "9533";                    
150                 rev = id & QCA953X_REV_ID_REVI    
151                 break;                            
152                                                   
153         case REV_ID_MAJOR_QCA9556:                
154                 ath79_soc = ATH79_SOC_QCA9556;    
155                 chip = "9556";                    
156                 rev = id & QCA955X_REV_ID_REVI    
157                 break;                            
158                                                   
159         case REV_ID_MAJOR_QCA9558:                
160                 ath79_soc = ATH79_SOC_QCA9558;    
161                 chip = "9558";                    
162                 rev = id & QCA955X_REV_ID_REVI    
163                 break;                            
164                                                   
165         case REV_ID_MAJOR_QCA956X:                
166                 ath79_soc = ATH79_SOC_QCA956X;    
167                 chip = "956X";                    
168                 rev = id & QCA956X_REV_ID_REVI    
169                 break;                            
170                                                   
171         case REV_ID_MAJOR_QCN550X:                
172                 ath79_soc = ATH79_SOC_QCA956X;    
173                 chip = "550X";                    
174                 rev = id & QCA956X_REV_ID_REVI    
175                 break;                            
176                                                   
177         case REV_ID_MAJOR_TP9343:                 
178                 ath79_soc = ATH79_SOC_TP9343;     
179                 chip = "9343";                    
180                 rev = id & QCA956X_REV_ID_REVI    
181                 break;                            
182                                                   
183         default:                                  
184                 panic("ath79: unknown SoC, id:    
185         }                                         
186                                                   
187         if (ver == 1)                             
188                 ath79_soc_rev = rev;              
189                                                   
190         if (soc_is_qca953x() || soc_is_qca955x    
191                 sprintf(ath79_sys_type, "Qualc    
192                         chip, ver, rev);          
193         else if (soc_is_tp9343())                 
194                 sprintf(ath79_sys_type, "Qualc    
195                         chip, rev);               
196         else                                      
197                 sprintf(ath79_sys_type, "Ather    
198         pr_info("SoC: %s\n", ath79_sys_type);     
199 }                                                 
200                                                   
201 const char *get_system_type(void)                 
202 {                                                 
203         return ath79_sys_type;                    
204 }                                                 
205                                                   
206 unsigned int get_c0_compare_int(void)             
207 {                                                 
208         return CP0_LEGACY_COMPARE_IRQ;            
209 }                                                 
210                                                   
211 void __init plat_mem_setup(void)                  
212 {                                                 
213         void *dtb;                                
214                                                   
215         set_io_port_base(KSEG1);                  
216                                                   
217         /* Get the position of the FDT passed     
218         dtb = (void *)fw_getenvl("fdt_start");    
219         if (dtb == NULL)                          
220                 dtb = get_fdt();                  
221                                                   
222         if (dtb)                                  
223                 __dt_setup_arch((void *)KSEG0A    
224                                                   
225         ath79_reset_base = ioremap(AR71XX_RESE    
226                                            AR7    
227         ath79_pll_base = ioremap(AR71XX_PLL_BA    
228                                          AR71X    
229         ath79_detect_sys_type();                  
230         ath79_ddr_ctrl_init();                    
231                                                   
232         detect_memory_region(0, ATH79_MEM_SIZE    
233                                                   
234         _machine_halt = ath79_halt;               
235         pm_power_off = ath79_halt;                
236 }                                                 
237                                                   
238 void __init plat_time_init(void)                  
239 {                                                 
240         struct device_node *np;                   
241         struct clk *clk;                          
242         unsigned long cpu_clk_rate;               
243                                                   
244         of_clk_init(NULL);                        
245                                                   
246         np = of_get_cpu_node(0, NULL);            
247         if (!np) {                                
248                 pr_err("Failed to get CPU node    
249                 return;                           
250         }                                         
251                                                   
252         clk = of_clk_get(np, 0);                  
253         if (IS_ERR(clk)) {                        
254                 pr_err("Failed to get CPU cloc    
255                 return;                           
256         }                                         
257                                                   
258         cpu_clk_rate = clk_get_rate(clk);         
259                                                   
260         pr_info("CPU clock: %lu.%03lu MHz\n",     
261                 cpu_clk_rate / 1000000, (cpu_c    
262                                                   
263         mips_hpt_frequency = cpu_clk_rate / 2;    
264                                                   
265         clk_put(clk);                             
266 }                                                 
267                                                   
268 void __init arch_init_irq(void)                   
269 {                                                 
270         irqchip_init();                           
271 }                                                 
272                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php