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

TOMOYO Linux Cross Reference
Linux/Documentation/driver-api/fpga/fpga-programming.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/driver-api/fpga/fpga-programming.rst (Version linux-6.12-rc7) and /Documentation/driver-api/fpga/fpga-programming.rst (Version linux-4.18.20)


  1 In-kernel API for FPGA Programming                
  2 ==================================                
  3                                                   
  4 Overview                                          
  5 --------                                          
  6                                                   
  7 The in-kernel API for FPGA programming is a co    
  8 FPGA manager, bridge, and regions.  The actual    
  9 trigger FPGA programming is fpga_region_progra    
 10                                                   
 11 fpga_region_program_fpga() uses functionality     
 12 the FPGA manager and bridges.  It will:           
 13                                                   
 14  * lock the region's mutex                        
 15  * lock the mutex of the region's FPGA manager    
 16  * build a list of FPGA bridges if a method ha    
 17  * disable the bridges                            
 18  * program the FPGA using info passed in :c:ex    
 19  * re-enable the bridges                          
 20  * release the locks                              
 21                                                   
 22 The struct fpga_image_info specifies what FPGA    
 23 allocated/freed by fpga_image_info_alloc() and    
 24 fpga_image_info_free()                            
 25                                                   
 26 How to program an FPGA using a region             
 27 -------------------------------------             
 28                                                   
 29 When the FPGA region driver probed, it was giv    
 30 driver so it knows which manager to use.  The     
 31 bridges to control during programming or it ha    
 32 will generate that list.  Here's some sample c    
 33                                                   
 34         #include <linux/fpga/fpga-mgr.h>          
 35         #include <linux/fpga/fpga-region.h>       
 36                                                   
 37         struct fpga_image_info *info;             
 38         int ret;                                  
 39                                                   
 40         /*                                        
 41          * First, alloc the struct with inform    
 42          * program.                               
 43          */                                       
 44         info = fpga_image_info_alloc(dev);        
 45         if (!info)                                
 46                 return -ENOMEM;                   
 47                                                   
 48         /* Set flags as needed, such as: */       
 49         info->flags = FPGA_MGR_PARTIAL_RECONFI    
 50                                                   
 51         /*                                        
 52          * Indicate where the FPGA image is. T    
 53          * going to use one of these three.       
 54          */                                       
 55         if (image is in a scatter gather table    
 56                                                   
 57                 info->sgt = [your scatter gath    
 58                                                   
 59         } else if (image is in a buffer) {        
 60                                                   
 61                 info->buf = [your image buffer    
 62                 info->count = [image buffer si    
 63                                                   
 64         } else if (image is in a firmware file    
 65                                                   
 66                 info->firmware_name = devm_kst    
 67                                                   
 68                                                   
 69         }                                         
 70                                                   
 71         /* Add info to region and do the progr    
 72         region->info = info;                      
 73         ret = fpga_region_program_fpga(region)    
 74                                                   
 75         /* Deallocate the image info if you're    
 76         region->info = NULL;                      
 77         fpga_image_info_free(info);               
 78                                                   
 79         if (ret)                                  
 80                 return ret;                       
 81                                                   
 82         /* Now enumerate whatever hardware has    
 83                                                   
 84 API for programming an FPGA                       
 85 ---------------------------                       
 86                                                   
 87 * fpga_region_program_fpga() -  Program an FPG    
 88 * fpga_image_info() -  Specifies what FPGA ima    
 89 * fpga_image_info_alloc() -  Allocate an FPGA     
 90 * fpga_image_info_free() -  Free an FPGA image    
 91                                                   
 92 .. kernel-doc:: drivers/fpga/fpga-region.c        
 93    :functions: fpga_region_program_fpga           
 94                                                   
 95 FPGA Manager flags                                
 96                                                   
 97 .. kernel-doc:: include/linux/fpga/fpga-mgr.h     
 98    :doc: FPGA Manager flags                       
 99                                                   
100 .. kernel-doc:: include/linux/fpga/fpga-mgr.h     
101    :functions: fpga_image_info                    
102                                                   
103 .. kernel-doc:: drivers/fpga/fpga-mgr.c           
104    :functions: fpga_image_info_alloc              
105                                                   
106 .. kernel-doc:: drivers/fpga/fpga-mgr.c           
107    :functions: fpga_image_info_free               
                                                      

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