Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:40

0001 /* not yet implemented */
0002 
0003 /*
0004  *  RTEMS driver for Blackfin TWI (I2C)
0005  *
0006  *  COPYRIGHT (c) 2008 Kallisti Labs, Los Gatos, CA, USA
0007  *            written by Allan Hessenflow <allanh@kallisti.com>
0008  *
0009  *  The license and distribution terms for this file may be
0010  *  found in the file LICENSE in this distribution or at
0011  *  http://www.rtems.org/license/LICENSE.
0012  */
0013 
0014 #ifndef _twi_h_
0015 #define _twi_h_
0016 
0017 
0018 #ifdef __cplusplus
0019 extern "C" {
0020 #endif
0021 
0022 
0023 typedef struct {
0024   uint32_t sclk;
0025   void *base;
0026   bool fast;
0027   int8_t slave_address;
0028 } bfin_twi_config_t;
0029 
0030 typedef struct bfin_twi_request_s {
0031   bool write;
0032   int count;
0033   void *data;
0034   /* Chained requests are done with repeated start conditions in between.
0035      These are useful for atomic address write/data read transactions
0036      (which can be important in multi-master configurations), and for
0037      doing 10-bit addressing. */
0038   struct bfin_twi_request_s *next;
0039 } bfin_twi_request_t;
0040 
0041 typedef rtems_status_code (*bfin_twi_callback_t)(int channel,
0042                                                  void *arg,
0043                                                  bool general_call,
0044                                                  bool write,
0045                                                  bool done,
0046                                                  int read_count,
0047                                                  uint8_t *data);
0048 
0049 
0050 rtems_status_code bfin_twi_init(int channel, bfin_twi_config_t *config);
0051 
0052 rtems_status_code bfin_twi_register_callback(int channel,
0053                                              bfin_twi_callback_t callback,
0054                                              void *arg);
0055 
0056 void bfin_twi_isr(int source);
0057 
0058 rtems_status_code bfin_twi_request(int channel, uint8_t address,
0059                                    bfin_twi_request_t *request,
0060                                    rtems_interval timeout);
0061 
0062 
0063 #ifdef __cplusplus
0064 }
0065 #endif
0066 
0067 #endif /* _twi_h_ */
0068