Changeset 5998:fa7bf107cb7f in roaraudio
- Timestamp:
- 02/24/14 23:27:06 (10 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/driver_i2cdmx.c
r5961 r5998 31 31 #include <linux/i2c-dev.h> 32 32 33 #ifdef ROAR_HAVE_H_LINUX_SPI_SPIDEV 34 #include <linux/spi/spidev.h> 35 #include <sys/ioctl.h> 36 37 #define TRANSFER_DELAY 5 38 #define TRANSFER_SPEED 1000000 39 #define TRANSFER_BPW 8 40 #endif 41 33 42 #define DEFAULT_DEVICE "/dev/i2c-1" 34 43 … … 61 70 struct driver_i2cdmx { 62 71 struct roar_vio_calls vio; 72 struct roar_vio_calls spi; 73 int have_spi; 63 74 uint8_t slave; 64 75 size_t startaddr; 65 76 size_t len; 66 77 }; 78 79 static int __spi_transfer(struct driver_i2cdmx * self, void * txbuffer, void * rxbuffer, size_t len) { 80 #ifdef ROAR_HAVE_H_LINUX_SPI_SPIDEV 81 struct spi_ioc_transfer transfer_buffer = { 82 .tx_buf = (unsigned long) txbuffer, 83 .rx_buf = (unsigned long) rxbuffer, 84 .len = len, 85 .delay_usecs = TRANSFER_DELAY, 86 .speed_hz = TRANSFER_SPEED, 87 .bits_per_word = TRANSFER_BPW, 88 }; 89 struct roar_vio_sysio_ioctl ctl = {.cmd = SPI_IOC_MESSAGE(1), .argp = &transfer_buffer}; 90 91 if ( roar_vio_ctl(self->spi, ROAR_VIO_CTL_SYSIO_IOCTL, &ctl) == -1 ) 92 return -1; 93 94 return 0; 95 #else 96 roar_err_set(ROAR_ERROR_NOSYS); 97 return -1; 98 #endif 99 } 67 100 68 101 static inline int __i2c_set_slave(struct driver_i2cdmx * self) { … … 341 374 struct driver_i2cdmx * self = vio->inst; 342 375 roar_vio_close(&(self->vio)); 376 if ( self->have_spi ) 377 roar_vio_close(&(self->spi)); 343 378 roar_mm_free(self); 344 379 return 0; … … 360 395 } 361 396 memset(self, 0, sizeof(*self)); 397 self->have_spi = 0; 362 398 self->startaddr = 0; 363 399 self->len = info->channels;
Note: See TracChangeset
for help on using the changeset viewer.