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

TOMOYO Linux Cross Reference
Linux/arch/arm/mach-omap2/pdata-quirks.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/arm/mach-omap2/pdata-quirks.c (Version linux-6.12-rc7) and /arch/ppc/mach-omap2/pdata-quirks.c (Version linux-6.3.13)


  1 // SPDX-License-Identifier: GPL-2.0-only            1 
  2 /*                                                
  3  * Legacy platform_data quirks                    
  4  *                                                
  5  * Copyright (C) 2013 Texas Instruments           
  6  */                                               
  7 #include <linux/clk.h>                            
  8 #include <linux/davinci_emac.h>                   
  9 #include <linux/gpio/machine.h>                   
 10 #include <linux/gpio/consumer.h>                  
 11 #include <linux/init.h>                           
 12 #include <linux/kernel.h>                         
 13 #include <linux/of_platform.h>                    
 14 #include <linux/mmc/card.h>                       
 15 #include <linux/mmc/host.h>                       
 16 #include <linux/power/smartreflex.h>              
 17 #include <linux/regulator/machine.h>              
 18 #include <linux/regulator/fixed.h>                
 19                                                   
 20 #include <linux/platform_data/pinctrl-single.h    
 21 #include <linux/platform_data/hsmmc-omap.h>       
 22 #include <linux/platform_data/iommu-omap.h>       
 23 #include <linux/platform_data/ti-sysc.h>          
 24 #include <linux/platform_data/wkup_m3.h>          
 25 #include <linux/platform_data/asoc-ti-mcbsp.h>    
 26 #include <linux/platform_data/ti-prm.h>           
 27                                                   
 28 #include "clockdomain.h"                          
 29 #include "common.h"                               
 30 #include "common-board-devices.h"                 
 31 #include "control.h"                              
 32 #include "omap_device.h"                          
 33 #include "omap-secure.h"                          
 34 #include "soc.h"                                  
 35                                                   
 36 static struct omap_hsmmc_platform_data __maybe    
 37                                                   
 38 struct pdata_init {                               
 39         const char *compatible;                   
 40         void (*fn)(void);                         
 41 };                                                
 42                                                   
 43 static struct of_dev_auxdata omap_auxdata_look    
 44                                                   
 45 #ifdef CONFIG_MACH_NOKIA_N8X0                     
 46 static void __init omap2420_n8x0_legacy_init(v    
 47 {                                                 
 48         omap_auxdata_lookup[0].platform_data =    
 49 }                                                 
 50 #else                                             
 51 #define omap2420_n8x0_legacy_init       NULL      
 52 #endif                                            
 53                                                   
 54 #ifdef CONFIG_ARCH_OMAP3                          
 55 /*                                                
 56  * Configures GPIOs 126, 127 and 129 to 1.8V m    
 57  * mode for MMC1 in case bootloader did not co    
 58  * Note that if the pins are used for MMC1, pb    
 59  * manages the IO voltage.                        
 60  */                                               
 61 static void __init omap3_gpio126_127_129(void)    
 62 {                                                 
 63         u32 reg;                                  
 64                                                   
 65         reg = omap_ctrl_readl(OMAP343X_CONTROL    
 66         reg &= ~OMAP343X_PBIASLITEVMODE1;         
 67         reg |= OMAP343X_PBIASLITEPWRDNZ1;         
 68         omap_ctrl_writel(reg, OMAP343X_CONTROL    
 69         if (cpu_is_omap3630()) {                  
 70                 reg = omap_ctrl_readl(OMAP34XX    
 71                 reg |= OMAP36XX_GPIO_IO_PWRDNZ    
 72                 omap_ctrl_writel(reg, OMAP34XX    
 73         }                                         
 74 }                                                 
 75                                                   
 76 static void __init hsmmc2_internal_input_clk(v    
 77 {                                                 
 78         u32 reg;                                  
 79                                                   
 80         reg = omap_ctrl_readl(OMAP343X_CONTROL    
 81         reg |= OMAP2_MMCSDIO2ADPCLKISEL;          
 82         omap_ctrl_writel(reg, OMAP343X_CONTROL    
 83 }                                                 
 84                                                   
 85 #ifdef CONFIG_OMAP_HWMOD                          
 86 static struct iommu_platform_data omap3_iommu_    
 87         .reset_name = "mmu",                      
 88         .assert_reset = omap_device_assert_har    
 89         .deassert_reset = omap_device_deassert    
 90         .device_enable = omap_device_enable,      
 91         .device_idle = omap_device_idle,          
 92 };                                                
 93                                                   
 94 static struct iommu_platform_data omap3_iommu_    
 95         .device_enable = omap_device_enable,      
 96         .device_idle = omap_device_idle,          
 97 };                                                
 98 #endif                                            
 99                                                   
100 static void __init omap3_sbc_t3x_usb_hub_init(    
101 {                                                 
102         struct gpio_desc *d;                      
103                                                   
104         /* This asserts the RESET line (revers    
105         d = gpiod_get_index(NULL, "reset", idx    
106         if (IS_ERR(d)) {                          
107                 pr_err("Unable to get T3x USB     
108                 return;                           
109         }                                         
110         gpiod_set_consumer_name(d, hub_name);     
111         gpiod_export(d, 0);                       
112         udelay(10);                               
113         /* De-assert RESET */                     
114         gpiod_set_value(d, 0);                    
115         msleep(1);                                
116 }                                                 
117                                                   
118 static struct gpiod_lookup_table omap3_sbc_t3x    
119         .dev_id = NULL,                           
120         .table = {                                
121                 GPIO_LOOKUP_IDX("gpio-160-175"    
122                                 GPIO_ACTIVE_LO    
123                 { }                               
124         },                                        
125 };                                                
126                                                   
127 static void __init omap3_sbc_t3730_legacy_init    
128 {                                                 
129         gpiod_add_lookup_table(&omap3_sbc_t3x_    
130         omap3_sbc_t3x_usb_hub_init("sb-t35 usb    
131 }                                                 
132                                                   
133 static void __init omap3_sbc_t3530_legacy_init    
134 {                                                 
135         gpiod_add_lookup_table(&omap3_sbc_t3x_    
136         omap3_sbc_t3x_usb_hub_init("sb-t35 usb    
137 }                                                 
138                                                   
139 static void __init omap3_evm_legacy_init(void)    
140 {                                                 
141         hsmmc2_internal_input_clk();              
142 }                                                 
143                                                   
144 static void am35xx_enable_emac_int(void)          
145 {                                                 
146         u32 v;                                    
147                                                   
148         v = omap_ctrl_readl(AM35XX_CONTROL_LVL    
149         v |= (AM35XX_CPGMAC_C0_RX_PULSE_CLR |     
150               AM35XX_CPGMAC_C0_MISC_PULSE_CLR     
151         omap_ctrl_writel(v, AM35XX_CONTROL_LVL    
152         omap_ctrl_readl(AM35XX_CONTROL_LVL_INT    
153 }                                                 
154                                                   
155 static void am35xx_disable_emac_int(void)         
156 {                                                 
157         u32 v;                                    
158                                                   
159         v = omap_ctrl_readl(AM35XX_CONTROL_LVL    
160         v |= (AM35XX_CPGMAC_C0_RX_PULSE_CLR |     
161         omap_ctrl_writel(v, AM35XX_CONTROL_LVL    
162         omap_ctrl_readl(AM35XX_CONTROL_LVL_INT    
163 }                                                 
164                                                   
165 static struct emac_platform_data am35xx_emac_p    
166         .interrupt_enable       = am35xx_enabl    
167         .interrupt_disable      = am35xx_disab    
168 };                                                
169                                                   
170 static void __init am35xx_emac_reset(void)        
171 {                                                 
172         u32 v;                                    
173                                                   
174         v = omap_ctrl_readl(AM35XX_CONTROL_IP_    
175         v &= ~AM35XX_CPGMACSS_SW_RST;             
176         omap_ctrl_writel(v, AM35XX_CONTROL_IP_    
177         omap_ctrl_readl(AM35XX_CONTROL_IP_SW_R    
178 }                                                 
179                                                   
180 static struct gpiod_lookup_table cm_t3517_wlan    
181         .dev_id = NULL,                           
182         .table = {                                
183                 GPIO_LOOKUP("gpio-48-53", 8, "    
184                             GPIO_ACTIVE_HIGH),    
185                 GPIO_LOOKUP("gpio-0-15", 4, "n    
186                             GPIO_ACTIVE_HIGH),    
187                 { }                               
188         },                                        
189 };                                                
190                                                   
191 static void __init omap3_sbc_t3517_wifi_init(v    
192 {                                                 
193         struct gpio_desc *d;                      
194                                                   
195         gpiod_add_lookup_table(&cm_t3517_wlan_    
196                                                   
197         /* This asserts the RESET line (revers    
198         d = gpiod_get(NULL, "power", GPIOD_OUT    
199         if (IS_ERR(d)) {                          
200                 pr_err("Unable to get CM T3517    
201         } else {                                  
202                 gpiod_set_consumer_name(d, "wl    
203                 gpiod_export(d, 0);               
204         }                                         
205                                                   
206         d = gpiod_get(NULL, "noe", GPIOD_OUT_H    
207         if (IS_ERR(d)) {                          
208                 pr_err("Unable to get CM T3517    
209         } else {                                  
210                 gpiod_set_consumer_name(d, "xc    
211                 gpiod_export(d, 0);               
212         }                                         
213         msleep(100);                              
214         gpiod_set_value(d, 0);                    
215 }                                                 
216                                                   
217 static struct gpiod_lookup_table omap3_sbc_t35    
218         .dev_id = NULL,                           
219         .table = {                                
220                 GPIO_LOOKUP_IDX("gpio-144-159"    
221                                 GPIO_ACTIVE_LO    
222                 GPIO_LOOKUP_IDX("gpio-96-111",    
223                                 GPIO_ACTIVE_LO    
224                 { }                               
225         },                                        
226 };                                                
227                                                   
228 static void __init omap3_sbc_t3517_legacy_init    
229 {                                                 
230         gpiod_add_lookup_table(&omap3_sbc_t351    
231         omap3_sbc_t3x_usb_hub_init("cm-t3517 u    
232         omap3_sbc_t3x_usb_hub_init("sb-t35 usb    
233         am35xx_emac_reset();                      
234         hsmmc2_internal_input_clk();              
235         omap3_sbc_t3517_wifi_init();              
236 }                                                 
237                                                   
238 static void __init am3517_evm_legacy_init(void    
239 {                                                 
240         am35xx_emac_reset();                      
241 }                                                 
242                                                   
243 static void __init nokia_n900_legacy_init(void    
244 {                                                 
245         hsmmc2_internal_input_clk();              
246         mmc_pdata[0].name = "external";           
247         mmc_pdata[1].name = "internal";           
248                                                   
249         if (omap_type() != OMAP2_DEVICE_TYPE_G    
250                 if (IS_ENABLED(CONFIG_ARM_ERRA    
251                         pr_info("RX-51: Enabli    
252                         /* set IBE to 1 */        
253                         rx51_secure_update_aux    
254                 } else {                          
255                         pr_warn("RX-51: Not en    
256                         pr_warn("Thumb binarie    
257                 }                                 
258         }                                         
259 }                                                 
260                                                   
261 static void __init omap3_tao3530_legacy_init(v    
262 {                                                 
263         hsmmc2_internal_input_clk();              
264 }                                                 
265                                                   
266 static void __init omap3_logicpd_torpedo_init(    
267 {                                                 
268         omap3_gpio126_127_129();                  
269 }                                                 
270                                                   
271 /* omap3pandora legacy devices */                 
272                                                   
273 static struct platform_device pandora_backligh    
274         .name   = "pandora-backlight",            
275         .id     = -1,                             
276 };                                                
277                                                   
278 static struct gpiod_lookup_table pandora_soc_a    
279         .dev_id = "soc-audio",                    
280         .table = {                                
281                 GPIO_LOOKUP("gpio-112-127", 6,    
282                 GPIO_LOOKUP("gpio-0-15", 14, "    
283                 { }                               
284         },                                        
285 };                                                
286                                                   
287 static void __init omap3_pandora_legacy_init(v    
288 {                                                 
289         platform_device_register(&pandora_back    
290         gpiod_add_lookup_table(&pandora_soc_au    
291 }                                                 
292 #endif /* CONFIG_ARCH_OMAP3 */                    
293                                                   
294 #ifdef CONFIG_SOC_DRA7XX                          
295 static struct iommu_platform_data dra7_ipu1_ds    
296         .set_pwrdm_constraint = omap_iommu_set    
297 };                                                
298 #endif                                            
299                                                   
300 static struct clockdomain *ti_sysc_find_one_cl    
301 {                                                 
302         struct clk_hw *hw = __clk_get_hw(clk);    
303         struct clockdomain *clkdm = NULL;         
304         struct clk_hw_omap *hwclk;                
305                                                   
306         hwclk = to_clk_hw_omap(hw);               
307         if (!omap2_clk_is_hw_omap(hw))            
308                 return NULL;                      
309                                                   
310         if (hwclk && hwclk->clkdm_name)           
311                 clkdm = clkdm_lookup(hwclk->cl    
312                                                   
313         return clkdm;                             
314 }                                                 
315                                                   
316 /**                                               
317  * ti_sysc_clkdm_init - find clockdomain based    
318  * @fck: device functional clock                  
319  * @ick: device interface clock                   
320  * @dev: struct device                            
321  *                                                
322  * Populate clockdomain based on clock. It is     
323  * clkdm_deny_idle() and clkdm_allow_idle() fo    
324  * clockdomain idle during reset, enable and i    
325  *                                                
326  * Note that we assume interconnect driver man    
327  * and do not need to populate oh->_clk for dy    
328  * allocated modules.                             
329  */                                               
330 static int ti_sysc_clkdm_init(struct device *d    
331                               struct clk *fck,    
332                               struct ti_sysc_c    
333 {                                                 
334         if (!IS_ERR(fck))                         
335                 cookie->clkdm = ti_sysc_find_o    
336         if (cookie->clkdm)                        
337                 return 0;                         
338         if (!IS_ERR(ick))                         
339                 cookie->clkdm = ti_sysc_find_o    
340         if (cookie->clkdm)                        
341                 return 0;                         
342                                                   
343         return -ENODEV;                           
344 }                                                 
345                                                   
346 static void ti_sysc_clkdm_deny_idle(struct dev    
347                                     const stru    
348 {                                                 
349         if (cookie->clkdm)                        
350                 clkdm_deny_idle(cookie->clkdm)    
351 }                                                 
352                                                   
353 static void ti_sysc_clkdm_allow_idle(struct de    
354                                      const str    
355 {                                                 
356         if (cookie->clkdm)                        
357                 clkdm_allow_idle(cookie->clkdm    
358 }                                                 
359                                                   
360 #ifdef CONFIG_OMAP_HWMOD                          
361 static int ti_sysc_enable_module(struct device    
362                                  const struct     
363 {                                                 
364         if (!cookie->data)                        
365                 return -EINVAL;                   
366                                                   
367         return omap_hwmod_enable(cookie->data)    
368 }                                                 
369                                                   
370 static int ti_sysc_idle_module(struct device *    
371                                const struct ti    
372 {                                                 
373         if (!cookie->data)                        
374                 return -EINVAL;                   
375                                                   
376         return omap_hwmod_idle(cookie->data);     
377 }                                                 
378                                                   
379 static int ti_sysc_shutdown_module(struct devi    
380                                    const struc    
381 {                                                 
382         if (!cookie->data)                        
383                 return -EINVAL;                   
384                                                   
385         return omap_hwmod_shutdown(cookie->dat    
386 }                                                 
387 #endif  /* CONFIG_OMAP_HWMOD */                   
388                                                   
389 static bool ti_sysc_soc_type_gp(void)             
390 {                                                 
391         return omap_type() == OMAP2_DEVICE_TYP    
392 }                                                 
393                                                   
394 static struct of_dev_auxdata omap_auxdata_look    
395                                                   
396 static struct ti_sysc_platform_data ti_sysc_pd    
397         .auxdata = omap_auxdata_lookup,           
398         .soc_type_gp = ti_sysc_soc_type_gp,       
399         .init_clockdomain = ti_sysc_clkdm_init    
400         .clkdm_deny_idle = ti_sysc_clkdm_deny_    
401         .clkdm_allow_idle = ti_sysc_clkdm_allo    
402 #ifdef CONFIG_OMAP_HWMOD                          
403         .init_module = omap_hwmod_init_module,    
404         .enable_module = ti_sysc_enable_module    
405         .idle_module = ti_sysc_idle_module,       
406         .shutdown_module = ti_sysc_shutdown_mo    
407 #endif                                            
408 };                                                
409                                                   
410 static struct pcs_pdata pcs_pdata;                
411                                                   
412 void omap_pcs_legacy_init(int irq, void (*rear    
413 {                                                 
414         pcs_pdata.irq = irq;                      
415         pcs_pdata.rearm = rearm;                  
416 }                                                 
417                                                   
418 static struct ti_prm_platform_data ti_prm_pdat    
419         .clkdm_deny_idle = clkdm_deny_idle,       
420         .clkdm_allow_idle = clkdm_allow_idle,     
421         .clkdm_lookup = clkdm_lookup,             
422 };                                                
423                                                   
424 #if defined(CONFIG_ARCH_OMAP3) && IS_ENABLED(C    
425 static struct omap_mcbsp_platform_data mcbsp_p    
426 static void __init omap3_mcbsp_init(void)         
427 {                                                 
428         omap3_mcbsp_init_pdata_callback(&mcbsp    
429 }                                                 
430 #else                                             
431 static void __init omap3_mcbsp_init(void) {}      
432 #endif                                            
433                                                   
434 /*                                                
435  * Few boards still need auxdata populated bef    
436  * the dev entries in of_platform_populate().     
437  */                                               
438 static struct pdata_init auxdata_quirks[] __in    
439 #ifdef CONFIG_SOC_OMAP2420                        
440         { "nokia,n800", omap2420_n8x0_legacy_i    
441         { "nokia,n810", omap2420_n8x0_legacy_i    
442         { "nokia,n810-wimax", omap2420_n8x0_le    
443 #endif                                            
444         { /* sentinel */ },                       
445 };                                                
446                                                   
447 struct omap_sr_data __maybe_unused omap_sr_pda    
448                                                   
449 static struct of_dev_auxdata omap_auxdata_look    
450 #ifdef CONFIG_MACH_NOKIA_N8X0                     
451         OF_DEV_AUXDATA("ti,omap2420-mmc", 0x48    
452         OF_DEV_AUXDATA("menelaus", 0x72, "1-00    
453 #endif                                            
454 #ifdef CONFIG_ARCH_OMAP3                          
455         OF_DEV_AUXDATA("ti,omap2-iommu", 0x5d0    
456                        &omap3_iommu_pdata),       
457         OF_DEV_AUXDATA("ti,omap2-iommu", 0x480    
458                        &omap3_iommu_isp_pdata)    
459         OF_DEV_AUXDATA("ti,omap3-smartreflex-c    
460                        "480cb000.smartreflex",    
461         OF_DEV_AUXDATA("ti,omap3-smartreflex-m    
462                        "480c9000.smartreflex",    
463         OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x480    
464         OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x480    
465         /* Only on am3517 */                      
466         OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c    
467         OF_DEV_AUXDATA("ti,am3517-emac", 0x5c0    
468                        &am35xx_emac_pdata),       
469         OF_DEV_AUXDATA("nokia,n900-rom-rng", 0    
470         /* McBSP modules with sidetone core */    
471 #if IS_ENABLED(CONFIG_SND_SOC_OMAP_MCBSP)         
472         OF_DEV_AUXDATA("ti,omap3-mcbsp", 0x490    
473         OF_DEV_AUXDATA("ti,omap3-mcbsp", 0x490    
474 #endif                                            
475 #endif                                            
476 #if defined(CONFIG_ARCH_OMAP4) || defined(CONF    
477         OF_DEV_AUXDATA("ti,omap4-smartreflex-i    
478                        "4a0db000.smartreflex",    
479         OF_DEV_AUXDATA("ti,omap4-smartreflex-c    
480                        "4a0dd000.smartreflex",    
481         OF_DEV_AUXDATA("ti,omap4-smartreflex-m    
482                        "4a0d9000.smartreflex",    
483 #endif                                            
484 #ifdef CONFIG_SOC_DRA7XX                          
485         OF_DEV_AUXDATA("ti,dra7-dsp-iommu", 0x    
486                        &dra7_ipu1_dsp_iommu_pd    
487         OF_DEV_AUXDATA("ti,dra7-dsp-iommu", 0x    
488                        &dra7_ipu1_dsp_iommu_pd    
489         OF_DEV_AUXDATA("ti,dra7-iommu", 0x5888    
490                        &dra7_ipu1_dsp_iommu_pd    
491 #endif                                            
492         /* Common auxdata */                      
493         OF_DEV_AUXDATA("simple-pm-bus", 0, NUL    
494         OF_DEV_AUXDATA("ti,sysc", 0, NULL, &ti    
495         OF_DEV_AUXDATA("pinctrl-single", 0, NU    
496         OF_DEV_AUXDATA("ti,omap-prm-inst", 0,     
497         OF_DEV_AUXDATA("ti,omap-sdma", 0, NULL    
498         { /* sentinel */ },                       
499 };                                                
500                                                   
501 /*                                                
502  * Few boards still need to initialize some le    
503  * platform data until the drivers support dev    
504  */                                               
505 static struct pdata_init pdata_quirks[] __init    
506 #ifdef CONFIG_ARCH_OMAP3                          
507         { "compulab,omap3-sbc-t3517", omap3_sb    
508         { "compulab,omap3-sbc-t3530", omap3_sb    
509         { "compulab,omap3-sbc-t3730", omap3_sb    
510         { "nokia,omap3-n900", nokia_n900_legac    
511         { "nokia,omap3-n9", hsmmc2_internal_in    
512         { "nokia,omap3-n950", hsmmc2_internal_    
513         { "logicpd,dm3730-torpedo-devkit", oma    
514         { "ti,omap3-evm-37xx", omap3_evm_legac    
515         { "ti,am3517-evm", am3517_evm_legacy_i    
516         { "technexion,omap3-tao3530", omap3_ta    
517         { "openpandora,omap3-pandora-600mhz",     
518         { "openpandora,omap3-pandora-1ghz", om    
519 #endif                                            
520         { /* sentinel */ },                       
521 };                                                
522                                                   
523 static void pdata_quirks_check(struct pdata_in    
524 {                                                 
525         while (quirks->compatible) {              
526                 if (of_machine_is_compatible(q    
527                         if (quirks->fn)           
528                                 quirks->fn();     
529                 }                                 
530                 quirks++;                         
531         }                                         
532 }                                                 
533                                                   
534 static const char * const pdata_quirks_init_no    
535         "prcm",                                   
536         "prm",                                    
537 };                                                
538                                                   
539 static void __init                                
540 pdata_quirks_init_clocks(const struct of_devic    
541 {                                                 
542         struct device_node *np;                   
543         int i;                                    
544                                                   
545         for (i = 0; i < ARRAY_SIZE(pdata_quirk    
546                 np = of_find_node_by_name(NULL    
547                 if (!np)                          
548                         continue;                 
549                                                   
550                 of_platform_populate(np, omap_    
551                                      omap_auxd    
552                                                   
553                 of_node_put(np);                  
554         }                                         
555 }                                                 
556                                                   
557 void __init pdata_quirks_init(const struct of_    
558 {                                                 
559         /*                                        
560          * We still need this for omap2420 and    
561          * using drivers/misc/sram.c already.     
562          */                                       
563         if (of_machine_is_compatible("ti,omap2    
564             of_machine_is_compatible("ti,omap3    
565                 omap_sdrc_init(NULL, NULL);       
566                                                   
567         if (of_machine_is_compatible("ti,omap3    
568                 omap3_mcbsp_init();               
569         pdata_quirks_check(auxdata_quirks);       
570                                                   
571         pdata_quirks_init_clocks(omap_dt_match    
572                                                   
573         of_platform_populate(NULL, omap_dt_mat    
574                              omap_auxdata_look    
575         pdata_quirks_check(pdata_quirks);         
576 }                                                 
577                                                   

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