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

TOMOYO Linux Cross Reference
Linux/Documentation/arch/arm/firmware.rst

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 /Documentation/arch/arm/firmware.rst (Version linux-6.12-rc7) and /Documentation/arch/mips/firmware.rst (Version linux-5.6.19)


  1 ==============================================    
  2 Interface for registering and calling firmware    
  3 ==============================================    
  4                                                   
  5 Written by Tomasz Figa <t.figa@samsung.com>        
  6                                                   
  7 Some boards are running with secure firmware r    
  8 world, which changes the way some things have     
  9 a need to provide an interface for such platfo    
 10 operations and call them when needed.             
 11                                                   
 12 Firmware operations can be specified by fillin    
 13 with appropriate callbacks and then registerin    
 14 function::                                        
 15                                                   
 16         void register_firmware_ops(const struc    
 17                                                   
 18 The ops pointer must be non-NULL. More informa    
 19 and its members can be found in arch/arm/inclu    
 20                                                   
 21 There is a default, empty set of operations pr    
 22 set anything if platform does not require firm    
 23                                                   
 24 To call a firmware operation, a helper macro i    
 25                                                   
 26         #define call_firmware_op(op, ...)         
 27                 ((firmware_ops->op) ? firmware    
 28                                                   
 29 the macro checks if the operation is provided     
 30 -ENOSYS to signal that given operation is not     
 31 fallback to legacy operation).                    
 32                                                   
 33 Example of registering firmware operations::      
 34                                                   
 35         /* board file */                          
 36                                                   
 37         static int platformX_do_idle(void)        
 38         {                                         
 39                 /* tell platformX firmware to     
 40                 return 0;                         
 41         }                                         
 42                                                   
 43         static int platformX_cpu_boot(int i)      
 44         {                                         
 45                 /* tell platformX firmware to     
 46                 return 0;                         
 47         }                                         
 48                                                   
 49         static const struct firmware_ops platf    
 50                 .do_idle        = exynos_do_id    
 51                 .cpu_boot       = exynos_cpu_b    
 52                 /* other operations not availa    
 53         };                                        
 54                                                   
 55         /* init_early callback of machine desc    
 56         static void __init board_init_early(vo    
 57         {                                         
 58                 register_firmware_ops(&platfor    
 59         }                                         
 60                                                   
 61 Example of using a firmware operation::           
 62                                                   
 63         /* some platform code, e.g. SMP initia    
 64                                                   
 65         __raw_writel(__pa_symbol(exynos4_secon    
 66                 CPU1_BOOT_REG);                   
 67                                                   
 68         /* Call Exynos specific smc call */       
 69         if (call_firmware_op(cpu_boot, cpu) ==    
 70                 cpu_boot_legacy(...); /* Try l    
 71                                                   
 72         gic_raise_softirq(cpumask_of(cpu), 1);    
                                                      

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