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

TOMOYO Linux Cross Reference
Linux/Documentation/driver-api/iio/triggered-buffers.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/iio/triggered-buffers.rst (Version linux-6.12-rc7) and /Documentation/driver-api/iio/triggered-buffers.rst (Version unix-v6-master)


  1 =================                                 
  2 Triggered Buffers                                 
  3 =================                                 
  4                                                   
  5 Now that we know what buffers and triggers are    
  6                                                   
  7 IIO triggered buffer setup                        
  8 ==========================                        
  9                                                   
 10 * :c:func:`iio_triggered_buffer_setup` — Set    
 11 * :c:func:`iio_triggered_buffer_cleanup` — F    
 12   :c:func:`iio_triggered_buffer_setup`            
 13 * struct iio_buffer_setup_ops — buffer setup    
 14                                                   
 15 A typical triggered buffer setup looks like th    
 16                                                   
 17     const struct iio_buffer_setup_ops sensor_b    
 18       .preenable    = sensor_buffer_preenable,    
 19       .postenable   = sensor_buffer_postenable    
 20       .postdisable  = sensor_buffer_postdisabl    
 21       .predisable   = sensor_buffer_predisable    
 22     };                                            
 23                                                   
 24     irqreturn_t sensor_iio_pollfunc(int irq, v    
 25     {                                             
 26         pf->timestamp = iio_get_time_ns((struc    
 27         return IRQ_WAKE_THREAD;                   
 28     }                                             
 29                                                   
 30     irqreturn_t sensor_trigger_handler(int irq    
 31     {                                             
 32         u16 buf[8];                               
 33         int i = 0;                                
 34                                                   
 35         /* read data for each active channel *    
 36         for_each_set_bit(bit, active_scan_mask    
 37             buf[i++] = sensor_get_data(bit)       
 38                                                   
 39         iio_push_to_buffers_with_timestamp(ind    
 40                                                   
 41         iio_trigger_notify_done(trigger);         
 42         return IRQ_HANDLED;                       
 43     }                                             
 44                                                   
 45     /* setup triggered buffer, usually in prob    
 46     iio_triggered_buffer_setup(indio_dev, sens    
 47                                sensor_trigger_    
 48                                sensor_buffer_s    
 49                                                   
 50 The important things to notice here are:          
 51                                                   
 52 * :c:type:`iio_buffer_setup_ops`, the buffer s    
 53   predefined points in the buffer configuratio    
 54   after disable). If not specified, the IIO co    
 55   iio_triggered_buffer_setup_ops.                 
 56 * **sensor_iio_pollfunc**, the function that w    
 57   function. It should do as little processing     
 58   interrupt context. The most common operation    
 59   timestamp and for this reason one can use th    
 60   :c:func:`iio_pollfunc_store_time` function.     
 61 * **sensor_trigger_handler**, the function tha    
 62   the poll function. This runs in the context     
 63   processing takes place here. It usually read    
 64   stores it in the internal buffer together wi    
 65   top half.                                       
 66                                                   
 67 More details                                      
 68 ============                                      
 69 .. kernel-doc:: drivers/iio/buffer/industriali    
                                                      

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