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

TOMOYO Linux Cross Reference
Linux/arch/sh/kernel/cpu/sh4a/setup-sh7734.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/sh/kernel/cpu/sh4a/setup-sh7734.c (Architecture i386) and /arch/alpha/kernel/cpu/sh4a/setup-sh7734.c (Architecture alpha)


  1 // SPDX-License-Identifier: GPL-2.0                 1 
  2 /*                                                
  3  * arch/sh/kernel/cpu/sh4a/setup-sh7734.c         
  4  *                                                
  5  * SH7734 Setup                                   
  6  *                                                
  7  * Copyright (C) 2011,2012 Nobuhiro Iwamatsu <    
  8  * Copyright (C) 2011,2012 Renesas Solutions C    
  9  */                                               
 10                                                   
 11 #include <linux/platform_device.h>                
 12 #include <linux/init.h>                           
 13 #include <linux/serial.h>                         
 14 #include <linux/mm.h>                             
 15 #include <linux/dma-mapping.h>                    
 16 #include <linux/serial_sci.h>                     
 17 #include <linux/sh_timer.h>                       
 18 #include <linux/io.h>                             
 19 #include <asm/clock.h>                            
 20 #include <asm/irq.h>                              
 21 #include <asm/platform_early.h>                   
 22 #include <cpu/sh7734.h>                           
 23                                                   
 24 /* SCIF */                                        
 25 static struct plat_sci_port scif0_platform_dat    
 26         .scscr          = SCSCR_REIE,             
 27         .type           = PORT_SCIF,              
 28         .regtype        = SCIx_SH4_SCIF_BRG_RE    
 29 };                                                
 30                                                   
 31 static struct resource scif0_resources[] = {      
 32         DEFINE_RES_MEM(0xffe40000, 0x100),        
 33         DEFINE_RES_IRQ(evt2irq(0x8c0)),           
 34 };                                                
 35                                                   
 36 static struct platform_device scif0_device = {    
 37         .name           = "sh-sci",               
 38         .id             = 0,                      
 39         .resource       = scif0_resources,        
 40         .num_resources  = ARRAY_SIZE(scif0_res    
 41         .dev            = {                       
 42                 .platform_data  = &scif0_platf    
 43         },                                        
 44 };                                                
 45                                                   
 46 static struct plat_sci_port scif1_platform_dat    
 47         .scscr          = SCSCR_REIE,             
 48         .type           = PORT_SCIF,              
 49         .regtype        = SCIx_SH4_SCIF_BRG_RE    
 50 };                                                
 51                                                   
 52 static struct resource scif1_resources[] = {      
 53         DEFINE_RES_MEM(0xffe41000, 0x100),        
 54         DEFINE_RES_IRQ(evt2irq(0x8e0)),           
 55 };                                                
 56                                                   
 57 static struct platform_device scif1_device = {    
 58         .name           = "sh-sci",               
 59         .id             = 1,                      
 60         .resource       = scif1_resources,        
 61         .num_resources  = ARRAY_SIZE(scif1_res    
 62         .dev            = {                       
 63                 .platform_data = &scif1_platfo    
 64         },                                        
 65 };                                                
 66                                                   
 67 static struct plat_sci_port scif2_platform_dat    
 68         .scscr          = SCSCR_REIE,             
 69         .type           = PORT_SCIF,              
 70         .regtype        = SCIx_SH4_SCIF_BRG_RE    
 71 };                                                
 72                                                   
 73 static struct resource scif2_resources[] = {      
 74         DEFINE_RES_MEM(0xffe42000, 0x100),        
 75         DEFINE_RES_IRQ(evt2irq(0x900)),           
 76 };                                                
 77                                                   
 78 static struct platform_device scif2_device = {    
 79         .name           = "sh-sci",               
 80         .id             = 2,                      
 81         .resource       = scif2_resources,        
 82         .num_resources  = ARRAY_SIZE(scif2_res    
 83         .dev            = {                       
 84                 .platform_data = &scif2_platfo    
 85         },                                        
 86 };                                                
 87                                                   
 88 static struct plat_sci_port scif3_platform_dat    
 89         .scscr          = SCSCR_REIE | SCSCR_T    
 90         .type           = PORT_SCIF,              
 91         .regtype        = SCIx_SH4_SCIF_BRG_RE    
 92 };                                                
 93                                                   
 94 static struct resource scif3_resources[] = {      
 95         DEFINE_RES_MEM(0xffe43000, 0x100),        
 96         DEFINE_RES_IRQ(evt2irq(0x920)),           
 97 };                                                
 98                                                   
 99 static struct platform_device scif3_device = {    
100         .name           = "sh-sci",               
101         .id             = 3,                      
102         .resource       = scif3_resources,        
103         .num_resources  = ARRAY_SIZE(scif3_res    
104         .dev            = {                       
105                 .platform_data  = &scif3_platf    
106         },                                        
107 };                                                
108                                                   
109 static struct plat_sci_port scif4_platform_dat    
110         .scscr          = SCSCR_REIE,             
111         .type           = PORT_SCIF,              
112         .regtype        = SCIx_SH4_SCIF_BRG_RE    
113 };                                                
114                                                   
115 static struct resource scif4_resources[] = {      
116         DEFINE_RES_MEM(0xffe44000, 0x100),        
117         DEFINE_RES_IRQ(evt2irq(0x940)),           
118 };                                                
119                                                   
120 static struct platform_device scif4_device = {    
121         .name           = "sh-sci",               
122         .id             = 4,                      
123         .resource       = scif4_resources,        
124         .num_resources  = ARRAY_SIZE(scif4_res    
125         .dev            = {                       
126                 .platform_data  = &scif4_platf    
127         },                                        
128 };                                                
129                                                   
130 static struct plat_sci_port scif5_platform_dat    
131         .scscr          = SCSCR_REIE,             
132         .type           = PORT_SCIF,              
133         .regtype        = SCIx_SH4_SCIF_BRG_RE    
134 };                                                
135                                                   
136 static struct resource scif5_resources[] = {      
137         DEFINE_RES_MEM(0xffe43000, 0x100),        
138         DEFINE_RES_IRQ(evt2irq(0x960)),           
139 };                                                
140                                                   
141 static struct platform_device scif5_device = {    
142         .name           = "sh-sci",               
143         .id             = 5,                      
144         .resource       = scif5_resources,        
145         .num_resources  = ARRAY_SIZE(scif5_res    
146         .dev            = {                       
147                 .platform_data  = &scif5_platf    
148         },                                        
149 };                                                
150                                                   
151 /* RTC */                                         
152 static struct resource rtc_resources[] = {        
153         [0] = {                                   
154                 .name   = "rtc",                  
155                 .start  = 0xFFFC5000,             
156                 .end    = 0xFFFC5000 + 0x26 -     
157                 .flags  = IORESOURCE_IO,          
158         },                                        
159         [1] = {                                   
160                 .start  = evt2irq(0xC00),         
161                 .flags  = IORESOURCE_IRQ,         
162         },                                        
163 };                                                
164                                                   
165 static struct platform_device rtc_device = {      
166         .name           = "sh-rtc",               
167         .id             = -1,                     
168         .num_resources  = ARRAY_SIZE(rtc_resou    
169         .resource       = rtc_resources,          
170 };                                                
171                                                   
172 /* I2C 0 */                                       
173 static struct resource i2c0_resources[] = {       
174         [0] = {                                   
175                 .name   = "IIC0",                 
176                 .start  = 0xFFC70000,             
177                 .end    = 0xFFC7000A - 1,         
178                 .flags  = IORESOURCE_MEM,         
179         },                                        
180         [1] = {                                   
181                 .start  = evt2irq(0x860),         
182                 .flags  = IORESOURCE_IRQ,         
183         },                                        
184 };                                                
185                                                   
186 static struct platform_device i2c0_device = {     
187         .name           = "i2c-sh7734",           
188         .id             = 0,                      
189         .num_resources  = ARRAY_SIZE(i2c0_reso    
190         .resource       = i2c0_resources,         
191 };                                                
192                                                   
193 /* TMU */                                         
194 static struct sh_timer_config tmu0_platform_da    
195         .channels_mask = 7,                       
196 };                                                
197                                                   
198 static struct resource tmu0_resources[] = {       
199         DEFINE_RES_MEM(0xffd80000, 0x30),         
200         DEFINE_RES_IRQ(evt2irq(0x400)),           
201         DEFINE_RES_IRQ(evt2irq(0x420)),           
202         DEFINE_RES_IRQ(evt2irq(0x440)),           
203 };                                                
204                                                   
205 static struct platform_device tmu0_device = {     
206         .name           = "sh-tmu",               
207         .id             = 0,                      
208         .dev = {                                  
209                 .platform_data  = &tmu0_platfo    
210         },                                        
211         .resource       = tmu0_resources,         
212         .num_resources  = ARRAY_SIZE(tmu0_reso    
213 };                                                
214                                                   
215 static struct sh_timer_config tmu1_platform_da    
216         .channels_mask = 7,                       
217 };                                                
218                                                   
219 static struct resource tmu1_resources[] = {       
220         DEFINE_RES_MEM(0xffd81000, 0x30),         
221         DEFINE_RES_IRQ(evt2irq(0x480)),           
222         DEFINE_RES_IRQ(evt2irq(0x4a0)),           
223         DEFINE_RES_IRQ(evt2irq(0x4c0)),           
224 };                                                
225                                                   
226 static struct platform_device tmu1_device = {     
227         .name           = "sh-tmu",               
228         .id             = 1,                      
229         .dev = {                                  
230                 .platform_data  = &tmu1_platfo    
231         },                                        
232         .resource       = tmu1_resources,         
233         .num_resources  = ARRAY_SIZE(tmu1_reso    
234 };                                                
235                                                   
236 static struct sh_timer_config tmu2_platform_da    
237         .channels_mask = 7,                       
238 };                                                
239                                                   
240 static struct resource tmu2_resources[] = {       
241         DEFINE_RES_MEM(0xffd82000, 0x30),         
242         DEFINE_RES_IRQ(evt2irq(0x500)),           
243         DEFINE_RES_IRQ(evt2irq(0x520)),           
244         DEFINE_RES_IRQ(evt2irq(0x540)),           
245 };                                                
246                                                   
247 static struct platform_device tmu2_device = {     
248         .name           = "sh-tmu",               
249         .id             = 2,                      
250         .dev = {                                  
251                 .platform_data  = &tmu2_platfo    
252         },                                        
253         .resource       = tmu2_resources,         
254         .num_resources  = ARRAY_SIZE(tmu2_reso    
255 };                                                
256                                                   
257 static struct platform_device *sh7734_devices[    
258         &scif0_device,                            
259         &scif1_device,                            
260         &scif2_device,                            
261         &scif3_device,                            
262         &scif4_device,                            
263         &scif5_device,                            
264         &tmu0_device,                             
265         &tmu1_device,                             
266         &tmu2_device,                             
267         &rtc_device,                              
268 };                                                
269                                                   
270 static struct platform_device *sh7734_early_de    
271         &scif0_device,                            
272         &scif1_device,                            
273         &scif2_device,                            
274         &scif3_device,                            
275         &scif4_device,                            
276         &scif5_device,                            
277         &tmu0_device,                             
278         &tmu1_device,                             
279         &tmu2_device,                             
280 };                                                
281                                                   
282 void __init plat_early_device_setup(void)         
283 {                                                 
284         sh_early_platform_add_devices(sh7734_e    
285                 ARRAY_SIZE(sh7734_early_device    
286 }                                                 
287                                                   
288 #define GROUP 0                                   
289 enum {                                            
290         UNUSED = 0,                               
291                                                   
292         /* interrupt sources */                   
293                                                   
294         IRL0_LLLL, IRL0_LLLH, IRL0_LLHL, IRL0_    
295         IRL0_LHLL, IRL0_LHLH, IRL0_LHHL, IRL0_    
296         IRL0_HLLL, IRL0_HLLH, IRL0_HLHL, IRL0_    
297         IRL0_HHLL, IRL0_HHLH, IRL0_HHHL,          
298                                                   
299         IRQ0, IRQ1, IRQ2, IRQ3,                   
300         DU,                                       
301         TMU00, TMU10, TMU20, TMU21,               
302         TMU30, TMU40, TMU50, TMU51,               
303         TMU60, TMU70, TMU80,                      
304         RESET_WDT,                                
305         USB,                                      
306         HUDI,                                     
307         SHDMAC,                                   
308         SSI0, SSI1,     SSI2, SSI3,               
309         VIN0,                                     
310         RGPVG,                                    
311         _2DG,                                     
312         MMC,                                      
313         HSPI,                                     
314         LBSCATA,                                  
315         I2C0,                                     
316         RCAN0,                                    
317         MIMLB,                                    
318         SCIF0, SCIF1, SCIF2, SCIF3, SCIF4, SCI    
319         LBSCDMAC0, LBSCDMAC1, LBSCDMAC2,          
320         RCAN1,                                    
321         SDHI0, SDHI1,                             
322         IEBUS,                                    
323         HPBDMAC0_3, HPBDMAC4_10, HPBDMAC11_18,    
324         RTC,                                      
325         VIN1,                                     
326         LCDC,                                     
327         SRC0, SRC1,                               
328         GETHER,                                   
329         SDHI2,                                    
330         GPIO0_3, GPIO4_5,                         
331         STIF0, STIF1,                             
332         ADMAC,                                    
333         HIF,                                      
334         FLCTL,                                    
335         ADC,                                      
336         MTU2,                                     
337         RSPI,                                     
338         QSPI,                                     
339         HSCIF,                                    
340         VEU3F_VE3,                                
341                                                   
342         /* Group */                               
343         /* Mask */                                
344         STIF_M,                                   
345         GPIO_M,                                   
346         HPBDMAC_M,                                
347         LBSCDMAC_M,                               
348         RCAN_M,                                   
349         SRC_M,                                    
350         SCIF_M,                                   
351         LCDC_M,                                   
352         _2DG_M,                                   
353         VIN_M,                                    
354         TMU_3_M,                                  
355         TMU_0_M,                                  
356                                                   
357         /* Priority */                            
358         RCAN_P,                                   
359         LBSCDMAC_P,                               
360                                                   
361         /* Common */                              
362         SDHI,                                     
363         SSI,                                      
364         SPI,                                      
365 };                                                
366                                                   
367 static struct intc_vect vectors[] __initdata =    
368         INTC_VECT(DU, 0x3E0),                     
369         INTC_VECT(TMU00, 0x400),                  
370         INTC_VECT(TMU10, 0x420),                  
371         INTC_VECT(TMU20, 0x440),                  
372         INTC_VECT(TMU30, 0x480),                  
373         INTC_VECT(TMU40, 0x4A0),                  
374         INTC_VECT(TMU50, 0x4C0),                  
375         INTC_VECT(TMU51, 0x4E0),                  
376         INTC_VECT(TMU60, 0x500),                  
377         INTC_VECT(TMU70, 0x520),                  
378         INTC_VECT(TMU80, 0x540),                  
379         INTC_VECT(RESET_WDT, 0x560),              
380         INTC_VECT(USB, 0x580),                    
381         INTC_VECT(HUDI, 0x600),                   
382         INTC_VECT(SHDMAC, 0x620),                 
383         INTC_VECT(SSI0, 0x6C0),                   
384         INTC_VECT(SSI1, 0x6E0),                   
385         INTC_VECT(SSI2, 0x700),                   
386         INTC_VECT(SSI3, 0x720),                   
387         INTC_VECT(VIN0, 0x740),                   
388         INTC_VECT(RGPVG, 0x760),                  
389         INTC_VECT(_2DG, 0x780),                   
390         INTC_VECT(MMC, 0x7A0),                    
391         INTC_VECT(HSPI, 0x7E0),                   
392         INTC_VECT(LBSCATA, 0x840),                
393         INTC_VECT(I2C0, 0x860),                   
394         INTC_VECT(RCAN0, 0x880),                  
395         INTC_VECT(SCIF0, 0x8A0),                  
396         INTC_VECT(SCIF1, 0x8C0),                  
397         INTC_VECT(SCIF2, 0x900),                  
398         INTC_VECT(SCIF3, 0x920),                  
399         INTC_VECT(SCIF4, 0x940),                  
400         INTC_VECT(SCIF5, 0x960),                  
401         INTC_VECT(LBSCDMAC0, 0x9E0),              
402         INTC_VECT(LBSCDMAC1, 0xA00),              
403         INTC_VECT(LBSCDMAC2, 0xA20),              
404         INTC_VECT(RCAN1, 0xA60),                  
405         INTC_VECT(SDHI0, 0xAE0),                  
406         INTC_VECT(SDHI1, 0xB00),                  
407         INTC_VECT(IEBUS, 0xB20),                  
408         INTC_VECT(HPBDMAC0_3, 0xB60),             
409         INTC_VECT(HPBDMAC4_10, 0xB80),            
410         INTC_VECT(HPBDMAC11_18, 0xBA0),           
411         INTC_VECT(HPBDMAC19_22, 0xBC0),           
412         INTC_VECT(HPBDMAC23_25_27_28, 0xBE0),     
413         INTC_VECT(RTC, 0xC00),                    
414         INTC_VECT(VIN1, 0xC20),                   
415         INTC_VECT(LCDC, 0xC40),                   
416         INTC_VECT(SRC0, 0xC60),                   
417         INTC_VECT(SRC1, 0xC80),                   
418         INTC_VECT(GETHER, 0xCA0),                 
419         INTC_VECT(SDHI2, 0xCC0),                  
420         INTC_VECT(GPIO0_3, 0xCE0),                
421         INTC_VECT(GPIO4_5, 0xD00),                
422         INTC_VECT(STIF0, 0xD20),                  
423         INTC_VECT(STIF1, 0xD40),                  
424         INTC_VECT(ADMAC, 0xDA0),                  
425         INTC_VECT(HIF, 0xDC0),                    
426         INTC_VECT(FLCTL, 0xDE0),                  
427         INTC_VECT(ADC, 0xE00),                    
428         INTC_VECT(MTU2, 0xE20),                   
429         INTC_VECT(RSPI, 0xE40),                   
430         INTC_VECT(QSPI, 0xE60),                   
431         INTC_VECT(HSCIF, 0xFC0),                  
432         INTC_VECT(VEU3F_VE3, 0xF40),              
433 };                                                
434                                                   
435 static struct intc_group groups[] __initdata =    
436         /* Common */                              
437         INTC_GROUP(SDHI, SDHI0, SDHI1, SDHI2),    
438         INTC_GROUP(SPI, HSPI, RSPI, QSPI),        
439         INTC_GROUP(SSI, SSI0, SSI1, SSI2, SSI3    
440                                                   
441         /* Mask group */                          
442         INTC_GROUP(STIF_M, STIF0, STIF1), /* 2    
443         INTC_GROUP(GPIO_M, GPIO0_3, GPIO4_5),     
444         INTC_GROUP(HPBDMAC_M, HPBDMAC0_3, HPBD    
445                         HPBDMAC19_22, HPBDMAC2    
446         INTC_GROUP(LBSCDMAC_M, LBSCDMAC0, LBSC    
447         INTC_GROUP(RCAN_M, RCAN0, RCAN1, IEBUS    
448         INTC_GROUP(SRC_M, SRC0, SRC1), /* 16 *    
449         INTC_GROUP(SCIF_M, SCIF0, SCIF1, SCIF2    
450                         HSCIF), /* 14 */          
451         INTC_GROUP(LCDC_M, LCDC, MIMLB), /* 13    
452         INTC_GROUP(_2DG_M, _2DG, RGPVG), /* 12    
453         INTC_GROUP(VIN_M, VIN0, VIN1), /* 10 *    
454         INTC_GROUP(TMU_3_M, TMU30, TMU40, TMU5    
455                         TMU60, TMU60, TMU70, T    
456         INTC_GROUP(TMU_0_M, TMU00, TMU10, TMU2    
457                                                   
458         /* Priority group*/                       
459         INTC_GROUP(RCAN_P, RCAN0, RCAN1), /* I    
460         INTC_GROUP(LBSCDMAC_P, LBSCDMAC0, LBSC    
461 };                                                
462                                                   
463 static struct intc_mask_reg mask_registers[] _    
464         { 0xFF804040, 0xFF804044, 32, /* INT2M    
465           { 0,                                    
466                 VEU3F_VE3,                        
467                 SDHI, /* SDHI 0-2 */              
468                 ADMAC,                            
469                 FLCTL,                            
470                 RESET_WDT,                        
471                 HIF,                              
472                 ADC,                              
473                 MTU2,                             
474                 STIF_M, /* STIF 0,1 */            
475                 GPIO_M, /* GPIO 0-5*/             
476                 GETHER,                           
477                 HPBDMAC_M, /* HPBDMAC 0_3 - 23    
478                 LBSCDMAC_M, /* LBSCDMAC 0 - 2     
479                 RCAN_M, /* RCAN, IEBUS */         
480                 SRC_M,  /* SRC 0,1 */             
481                 LBSCATA,                          
482                 SCIF_M, /* SCIF 0-5, HSCIF */     
483                 LCDC_M, /* LCDC, MIMLB */         
484                 _2DG_M, /* 2DG, RGPVG */          
485                 SPI, /* HSPI, RSPI, QSPI */       
486                 VIN_M,  /* VIN0, 1 */             
487                 SSI,    /* SSI 0-3 */             
488                 USB,                              
489                 SHDMAC,                           
490                 HUDI,                             
491                 MMC,                              
492                 RTC,                              
493                 I2C0, /* I2C */ /* I2C 0, 1*/     
494                 TMU_3_M, /* TMU30 - TMU80 */      
495                 TMU_0_M, /* TMU00 - TMU21 */      
496                 DU } },                           
497 };                                                
498                                                   
499 static struct intc_prio_reg prio_registers[] _    
500         { 0xFF804000, 0, 32, 8, /* INT2PRI0 */    
501                 { DU, TMU00, TMU10, TMU20 } },    
502         { 0xFF804004, 0, 32, 8, /* INT2PRI1 */    
503                 { TMU30, TMU60, RTC, SDHI } },    
504         { 0xFF804008, 0, 32, 8, /* INT2PRI2 */    
505                 { HUDI, SHDMAC, USB, SSI } },     
506         { 0xFF80400C, 0, 32, 8, /* INT2PRI3 */    
507                 { VIN0, SPI, _2DG, LBSCATA } }    
508         { 0xFF804010, 0, 32, 8, /* INT2PRI4 */    
509                 { SCIF0, SCIF3, HSCIF, LCDC }     
510         { 0xFF804014, 0, 32, 8, /* INT2PRI5 */    
511                 { RCAN_P, LBSCDMAC_P, LBSCDMAC    
512         { 0xFF804018, 0, 32, 8, /* INT2PRI6 */    
513                 { HPBDMAC0_3, HPBDMAC4_10, HPB    
514         { 0xFF80401C, 0, 32, 8, /* INT2PRI7 */    
515                 { HPBDMAC23_25_27_28, I2C0, SR    
516         { 0xFF804020, 0, 32, 8, /* INT2PRI8 */    
517                 { 0 /* ADIF */, VIN1, RESET_WD    
518         { 0xFF804024, 0, 32, 8, /* INT2PRI9 */    
519                 { ADMAC, FLCTL, GPIO0_3, GPIO4    
520         { 0xFF804028, 0, 32, 8, /* INT2PRI10 *    
521                 { STIF0, STIF1, VEU3F_VE3, GET    
522         { 0xFF80402C, 0, 32, 8, /* INT2PRI11 *    
523                 { MTU2, RGPVG, MIMLB, IEBUS }     
524 };                                                
525                                                   
526 static DECLARE_INTC_DESC(intc_desc, "sh7734",     
527         mask_registers, prio_registers, NULL);    
528                                                   
529 /* Support for external interrupt pins in IRQ     
530                                                   
531 static struct intc_vect irq3210_vectors[] __in    
532         INTC_VECT(IRQ0, 0x240), INTC_VECT(IRQ1    
533         INTC_VECT(IRQ2, 0x2C0), INTC_VECT(IRQ3    
534 };                                                
535                                                   
536 static struct intc_sense_reg irq3210_sense_reg    
537         { 0xFF80201C, 32, 2, /* ICR1 */           
538         { IRQ0, IRQ1, IRQ2, IRQ3, } },            
539 };                                                
540                                                   
541 static struct intc_mask_reg irq3210_ack_regist    
542         { 0xFF802024, 0, 32, /* INTREQ */         
543         { IRQ0, IRQ1, IRQ2, IRQ3, } },            
544 };                                                
545                                                   
546 static struct intc_mask_reg irq3210_mask_regis    
547         { 0xFF802044, 0xFF802064, 32, /* INTMS    
548         { IRQ0, IRQ1, IRQ2, IRQ3, } },            
549 };                                                
550                                                   
551 static struct intc_prio_reg irq3210_prio_regis    
552         { 0xFF802010, 0, 32, 4, /* INTPRI */      
553         { IRQ0, IRQ1, IRQ2, IRQ3, } },            
554 };                                                
555                                                   
556 static DECLARE_INTC_DESC_ACK(intc_desc_irq3210    
557         irq3210_vectors, NULL,                    
558         irq3210_mask_registers, irq3210_prio_r    
559         irq3210_sense_registers, irq3210_ack_r    
560                                                   
561 /* External interrupt pins in IRL mode */         
562                                                   
563 static struct intc_vect vectors_irl3210[] __in    
564         INTC_VECT(IRL0_LLLL, 0x200), INTC_VECT    
565         INTC_VECT(IRL0_LLHL, 0x240), INTC_VECT    
566         INTC_VECT(IRL0_LHLL, 0x280), INTC_VECT    
567         INTC_VECT(IRL0_LHHL, 0x2c0), INTC_VECT    
568         INTC_VECT(IRL0_HLLL, 0x300), INTC_VECT    
569         INTC_VECT(IRL0_HLHL, 0x340), INTC_VECT    
570         INTC_VECT(IRL0_HHLL, 0x380), INTC_VECT    
571         INTC_VECT(IRL0_HHHL, 0x3c0),              
572 };                                                
573                                                   
574 static DECLARE_INTC_DESC(intc_desc_irl3210, "s    
575         vectors_irl3210, NULL, mask_registers,    
576                                                   
577 #define INTC_ICR0               0xFF802000        
578 #define INTC_INTMSK0    0xFF802044                
579 #define INTC_INTMSK1    0xFF802048                
580 #define INTC_INTMSKCLR0 0xFF802064                
581 #define INTC_INTMSKCLR1 0xFF802068                
582                                                   
583 void __init plat_irq_setup(void)                  
584 {                                                 
585         /* disable IRQ3-0 */                      
586         __raw_writel(0xF0000000, INTC_INTMSK0)    
587                                                   
588         /* disable IRL3-0 */                      
589         __raw_writel(0x80000000, INTC_INTMSK1)    
590                                                   
591         /* select IRL mode for IRL3-0 */          
592         __raw_writel(__raw_readl(INTC_ICR0) &     
593                                                   
594         /* disable holding function, ie enable    
595         __raw_writel(__raw_readl(INTC_ICR0) |     
596                                                   
597         register_intc_controller(&intc_desc);     
598 }                                                 
599                                                   
600 void __init plat_irq_setup_pins(int mode)         
601 {                                                 
602         switch (mode) {                           
603         case IRQ_MODE_IRQ3210:                    
604                 /* select IRQ mode for IRL3-0     
605                 __raw_writel(__raw_readl(INTC_    
606                 register_intc_controller(&intc    
607                 break;                            
608         case IRQ_MODE_IRL3210:                    
609                 /* enable IRL0-3 but don't pro    
610                 __raw_writel(0x80000000, INTC_    
611                 __raw_writel(0xf0000000, INTC_    
612                 break;                            
613         case IRQ_MODE_IRL3210_MASK:               
614                 /* enable IRL0-3 and mask usin    
615                 __raw_writel(0x80000000, INTC_    
616                 register_intc_controller(&intc    
617                 break;                            
618         default:                                  
619                 BUG();                            
620         }                                         
621 }                                                 
622                                                   

~ [ 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