diff options
Diffstat (limited to 'src/stm')
38 files changed, 134 insertions, 155 deletions
diff --git a/src/stm/altos-loader.ld b/src/stm/altos-loader.ld index 0753f5f7..a4a7dc43 100644 --- a/src/stm/altos-loader.ld +++ b/src/stm/altos-loader.ld @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/altos-ram.ld b/src/stm/altos-ram.ld index 1143a08b..098454e1 100644 --- a/src/stm/altos-ram.ld +++ b/src/stm/altos-ram.ld @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/altos.ld b/src/stm/altos.ld index 3106cc3b..6a8c7113 100644 --- a/src/stm/altos.ld +++ b/src/stm/altos.ld @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_adc_stm.c b/src/stm/ao_adc_stm.c index 67416a9d..77f121dc 100644 --- a/src/stm/ao_adc_stm.c +++ b/src/stm/ao_adc_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_arch.h b/src/stm/ao_arch.h index f9508b8f..0cc29376 100644 --- a/src/stm/ao_arch.h +++ b/src/stm/ao_arch.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_arch_funcs.h b/src/stm/ao_arch_funcs.h index a796891d..18ca20da 100644 --- a/src/stm/ao_arch_funcs.h +++ b/src/stm/ao_arch_funcs.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -136,7 +137,7 @@ void  ao_spi_recv(void *block, uint16_t len, uint8_t spi_index);  void -ao_spi_duplex(void *out, void *in, uint16_t len, uint8_t spi_index); +ao_spi_duplex(const void *out, void *in, uint16_t len, uint8_t spi_index);  extern uint16_t	ao_spi_speed[STM_NUM_SPI]; diff --git a/src/stm/ao_beep_stm.c b/src/stm/ao_beep_stm.c index a95d869b..0b4e6012 100644 --- a/src/stm/ao_beep_stm.c +++ b/src/stm/ao_beep_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_boot_chain.c b/src/stm/ao_boot_chain.c index bcebf033..488af1e1 100644 --- a/src/stm/ao_boot_chain.c +++ b/src/stm/ao_boot_chain.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_boot_pin.c b/src/stm/ao_boot_pin.c index e825b618..4b5dc2ac 100644 --- a/src/stm/ao_boot_pin.c +++ b/src/stm/ao_boot_pin.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_dma_stm.c b/src/stm/ao_dma_stm.c index 0135de48..6d779660 100644 --- a/src/stm/ao_dma_stm.c +++ b/src/stm/ao_dma_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_eeprom_stm.c b/src/stm/ao_eeprom_stm.c index 4207a860..05f880b8 100644 --- a/src/stm/ao_eeprom_stm.c +++ b/src/stm/ao_eeprom_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_exti.h b/src/stm/ao_exti.h index ebea224d..4f3e6132 100644 --- a/src/stm/ao_exti.h +++ b/src/stm/ao_exti.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_exti_stm.c b/src/stm/ao_exti_stm.c index 925f9a22..3e0b3e5c 100644 --- a/src/stm/ao_exti_stm.c +++ b/src/stm/ao_exti_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_fast_timer.c b/src/stm/ao_fast_timer.c index 9a73eb51..f4378ca8 100644 --- a/src/stm/ao_fast_timer.c +++ b/src/stm/ao_fast_timer.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_flash.h b/src/stm/ao_flash.h index 09ca5ac1..d191d80d 100644 --- a/src/stm/ao_flash.h +++ b/src/stm/ao_flash.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_flash_loader_stm.c b/src/stm/ao_flash_loader_stm.c index 6bf89234..a8d1701b 100644 --- a/src/stm/ao_flash_loader_stm.c +++ b/src/stm/ao_flash_loader_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_flash_stm.c b/src/stm/ao_flash_stm.c index 39dc8144..c1648421 100644 --- a/src/stm/ao_flash_stm.c +++ b/src/stm/ao_flash_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_flash_stm_pins.h b/src/stm/ao_flash_stm_pins.h index d157a226..d5893c80 100644 --- a/src/stm/ao_flash_stm_pins.h +++ b/src/stm/ao_flash_stm_pins.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_i2c_stm.c b/src/stm/ao_i2c_stm.c index 158f5b21..29a8f173 100644 --- a/src/stm/ao_i2c_stm.c +++ b/src/stm/ao_i2c_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -137,7 +138,7 @@ ao_i2c_ev_isr(uint8_t index)  		ao_wakeup(&ao_i2c_state[index]);  	}  	if (sr1 & (1 << STM_I2C_SR1_RXNE)) { -		if (ao_i2c_recv_len[index]) {			 +		if (ao_i2c_recv_len[index]) {  			*(ao_i2c_recv_data[index]++) = stm_i2c->dr;  			if (!--ao_i2c_recv_len[index])  				ao_wakeup(&ao_i2c_recv_len[index]); @@ -254,7 +255,7 @@ ao_i2c_send(void *block, uint16_t len, uint8_t index, uint8_t stop)  			    (0 << STM_DMA_CCR_PINC) |  			    (0 << STM_DMA_CCR_CIRC) |  			    (STM_DMA_CCR_DIR_MEM_TO_PER << STM_DMA_CCR_DIR)); -			    +  	ao_dma_start(tx_dma_index);  	ao_arch_block_interrupts();  	while (!ao_dma_done[tx_dma_index]) @@ -330,7 +331,7 @@ ao_i2c_recv(void *block, uint16_t len, uint8_t index, uint8_t stop)  				    block,  				    len,  				    (0 << STM_DMA_CCR_MEM2MEM) | -				    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | +				    (STM_DMA_CCR_PL_HIGH << STM_DMA_CCR_PL) |  				    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) |  				    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) |  				    (1 << STM_DMA_CCR_MINC) | diff --git a/src/stm/ao_interrupt.c b/src/stm/ao_interrupt.c index 56cce0c0..eb1ed0b5 100644 --- a/src/stm/ao_interrupt.c +++ b/src/stm/ao_interrupt.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_lcd_font.c b/src/stm/ao_lcd_font.c index 0d7d87c1..b1664b13 100644 --- a/src/stm/ao_lcd_font.c +++ b/src/stm/ao_lcd_font.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_lcd_stm.c b/src/stm/ao_lcd_stm.c index 95af53d1..10d5d620 100644 --- a/src/stm/ao_lcd_stm.c +++ b/src/stm/ao_lcd_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_lcd_stm.h b/src/stm/ao_lcd_stm.h index 14667546..1b769174 100644 --- a/src/stm/ao_lcd_stm.h +++ b/src/stm/ao_lcd_stm.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_led.c b/src/stm/ao_led.c index 9b61cf62..0f39befb 100644 --- a/src/stm/ao_led.c +++ b/src/stm/ao_led.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_mpu.h b/src/stm/ao_mpu.h index cc6132a5..f26e132a 100644 --- a/src/stm/ao_mpu.h +++ b/src/stm/ao_mpu.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_mpu_stm.c b/src/stm/ao_mpu_stm.c index 969d7446..b3102ff5 100644 --- a/src/stm/ao_mpu_stm.c +++ b/src/stm/ao_mpu_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_profile.c b/src/stm/ao_profile.c index 149ca29f..fc6bbad7 100644 --- a/src/stm/ao_profile.c +++ b/src/stm/ao_profile.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_profile.h b/src/stm/ao_profile.h index f8a0c25e..3bf8c0b0 100644 --- a/src/stm/ao_profile.h +++ b/src/stm/ao_profile.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_pwm_stm.c b/src/stm/ao_pwm_stm.c index ce1fa6f3..53000a17 100644 --- a/src/stm/ao_pwm_stm.c +++ b/src/stm/ao_pwm_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_romconfig.c b/src/stm/ao_romconfig.c index 5da15072..9d5fd6fb 100644 --- a/src/stm/ao_romconfig.c +++ b/src/stm/ao_romconfig.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_sample_profile_timer.c b/src/stm/ao_sample_profile_timer.c index d5af3a57..4471a01f 100644 --- a/src/stm/ao_sample_profile_timer.c +++ b/src/stm/ao_sample_profile_timer.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_sample_profile_timer.h b/src/stm/ao_sample_profile_timer.h index 1da1bfb4..f7ba486a 100644 --- a/src/stm/ao_sample_profile_timer.h +++ b/src/stm/ao_sample_profile_timer.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_serial_stm.c b/src/stm/ao_serial_stm.c index bf079060..db0be992 100644 --- a/src/stm/ao_serial_stm.c +++ b/src/stm/ao_serial_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_spi_stm.c b/src/stm/ao_spi_stm.c index 214092f6..05078f3b 100644 --- a/src/stm/ao_spi_stm.c +++ b/src/stm/ao_spi_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -85,6 +86,46 @@ validate_spi(struct stm_spi *stm_spi, int which, uint16_t len)  #endif  static void +ao_spi_set_dma_mosi(uint8_t id, const void *data, uint16_t len, uint32_t minc) +{ +	struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi; +	uint8_t	mosi_dma_index = ao_spi_stm_info[id].mosi_dma_index; + +	ao_dma_set_transfer(mosi_dma_index, +			    &stm_spi->dr, +			    (void *) data, +			    len, +			    (0 << STM_DMA_CCR_MEM2MEM) | +			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | +			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | +			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | +			    (minc << STM_DMA_CCR_MINC) | +			    (0 << STM_DMA_CCR_PINC) | +			    (0 << STM_DMA_CCR_CIRC) | +			    (STM_DMA_CCR_DIR_MEM_TO_PER << STM_DMA_CCR_DIR)); +} + +static void +ao_spi_set_dma_miso(uint8_t id, void *data, uint16_t len, uint32_t minc) +{ +	struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi; +	uint8_t	miso_dma_index = ao_spi_stm_info[id].miso_dma_index; + +	ao_dma_set_transfer(miso_dma_index, +			    &stm_spi->dr, +			    data, +			    len, +			    (0 << STM_DMA_CCR_MEM2MEM) | +			    (STM_DMA_CCR_PL_HIGH << STM_DMA_CCR_PL) | +			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | +			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | +			    (minc << STM_DMA_CCR_MINC) | +			    (0 << STM_DMA_CCR_PINC) | +			    (0 << STM_DMA_CCR_CIRC) | +			    (STM_DMA_CCR_DIR_PER_TO_MEM << STM_DMA_CCR_DIR)); +} + +static void  ao_spi_run(uint8_t id, uint8_t which, uint16_t len)  {  	struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi; @@ -123,40 +164,15 @@ void  ao_spi_send(const void *block, uint16_t len, uint8_t spi_index)  {  	uint8_t id = AO_SPI_INDEX(spi_index); -	struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi; -	uint8_t	mosi_dma_index = ao_spi_stm_info[id].mosi_dma_index; -	uint8_t	miso_dma_index = ao_spi_stm_info[id].miso_dma_index;  	/* Set up the transmit DMA to deliver data */ -	ao_dma_set_transfer(mosi_dma_index, -			    &stm_spi->dr, -			    (void *) block, -			    len, -			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | -			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | -			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | -			    (1 << STM_DMA_CCR_MINC) | -			    (0 << STM_DMA_CCR_PINC) | -			    (0 << STM_DMA_CCR_CIRC) | -			    (STM_DMA_CCR_DIR_MEM_TO_PER << STM_DMA_CCR_DIR)); +	ao_spi_set_dma_mosi(id, block, len, 1);  	/* Set up the receive DMA -- when this is done, we know the SPI unit  	 * is idle. Without this, we'd have to poll waiting for the BSY bit to  	 * be cleared  	 */ -	ao_dma_set_transfer(miso_dma_index, -			    &stm_spi->dr, -			    &spi_dev_null, -			    len, -			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | -			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | -			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | -			    (0 << STM_DMA_CCR_MINC) | -			    (0 << STM_DMA_CCR_PINC) | -			    (0 << STM_DMA_CCR_CIRC) | -			    (STM_DMA_CCR_DIR_PER_TO_MEM << STM_DMA_CCR_DIR)); +	ao_spi_set_dma_miso(id, &spi_dev_null, len, 0);  	ao_spi_run(id, 1, len);  } @@ -165,40 +181,15 @@ void  ao_spi_send_fixed(uint8_t value, uint16_t len, uint8_t spi_index)  {  	uint8_t id = AO_SPI_INDEX(spi_index); -	struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi; -	uint8_t	mosi_dma_index = ao_spi_stm_info[id].mosi_dma_index; -	uint8_t	miso_dma_index = ao_spi_stm_info[id].miso_dma_index;  	/* Set up the transmit DMA to deliver data */ -	ao_dma_set_transfer(mosi_dma_index, -			    &stm_spi->dr, -			    &value, -			    len, -			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | -			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | -			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | -			    (0 << STM_DMA_CCR_MINC) | -			    (0 << STM_DMA_CCR_PINC) | -			    (0 << STM_DMA_CCR_CIRC) | -			    (STM_DMA_CCR_DIR_MEM_TO_PER << STM_DMA_CCR_DIR)); +	ao_spi_set_dma_mosi(id, &value, len, 0);  	/* Set up the receive DMA -- when this is done, we know the SPI unit  	 * is idle. Without this, we'd have to poll waiting for the BSY bit to  	 * be cleared  	 */ -	ao_dma_set_transfer(miso_dma_index, -			    &stm_spi->dr, -			    &spi_dev_null, -			    len, -			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | -			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | -			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | -			    (0 << STM_DMA_CCR_MINC) | -			    (0 << STM_DMA_CCR_PINC) | -			    (0 << STM_DMA_CCR_CIRC) | -			    (STM_DMA_CCR_DIR_PER_TO_MEM << STM_DMA_CCR_DIR)); +	ao_spi_set_dma_miso(id, &spi_dev_null, len, 0);  	ao_spi_run(id, 3, len);  } @@ -267,78 +258,29 @@ void  ao_spi_recv(void *block, uint16_t len, uint8_t spi_index)  {  	uint8_t		id = AO_SPI_INDEX(spi_index); -	struct stm_spi	*stm_spi = ao_spi_stm_info[id].stm_spi; -	uint8_t		mosi_dma_index = ao_spi_stm_info[id].mosi_dma_index; -	uint8_t		miso_dma_index = ao_spi_stm_info[id].miso_dma_index;  	spi_dev_null = 0xff;  	/* Set up transmit DMA to make the SPI hardware actually run */ -	ao_dma_set_transfer(mosi_dma_index, -			    &stm_spi->dr, -			    &spi_dev_null, -			    len, -			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | -			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | -			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | -			    (0 << STM_DMA_CCR_MINC) | -			    (0 << STM_DMA_CCR_PINC) | -			    (0 << STM_DMA_CCR_CIRC) | -			    (STM_DMA_CCR_DIR_MEM_TO_PER << STM_DMA_CCR_DIR)); +	ao_spi_set_dma_mosi(id, &spi_dev_null, len, 0);  	/* Set up the receive DMA to capture data */ -	ao_dma_set_transfer(miso_dma_index, -			    &stm_spi->dr, -			    block, -			    len, -			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | -			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | -			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | -			    (1 << STM_DMA_CCR_MINC) | -			    (0 << STM_DMA_CCR_PINC) | -			    (0 << STM_DMA_CCR_CIRC) | -			    (STM_DMA_CCR_DIR_PER_TO_MEM << STM_DMA_CCR_DIR)); +	ao_spi_set_dma_miso(id, block, len, 1);  	ao_spi_run(id, 9, len);  }  void -ao_spi_duplex(void *out, void *in, uint16_t len, uint8_t spi_index) +ao_spi_duplex(const void *out, void *in, uint16_t len, uint8_t spi_index)  {  	uint8_t		id = AO_SPI_INDEX(spi_index); -	struct stm_spi	*stm_spi = ao_spi_stm_info[id].stm_spi; -	uint8_t		mosi_dma_index = ao_spi_stm_info[id].mosi_dma_index; -	uint8_t		miso_dma_index = ao_spi_stm_info[id].miso_dma_index;  	/* Set up transmit DMA to send data */ -	ao_dma_set_transfer(mosi_dma_index, -			    &stm_spi->dr, -			    out, -			    len, -			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | -			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | -			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | -			    (1 << STM_DMA_CCR_MINC) | -			    (0 << STM_DMA_CCR_PINC) | -			    (0 << STM_DMA_CCR_CIRC) | -			    (STM_DMA_CCR_DIR_MEM_TO_PER << STM_DMA_CCR_DIR)); +	ao_spi_set_dma_mosi(id, out, len, 1);  	/* Set up the receive DMA to capture data */ -	ao_dma_set_transfer(miso_dma_index, -			    &stm_spi->dr, -			    in, -			    len, -			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | -			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) | -			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) | -			    (1 << STM_DMA_CCR_MINC) | -			    (0 << STM_DMA_CCR_PINC) | -			    (0 << STM_DMA_CCR_CIRC) | -			    (STM_DMA_CCR_DIR_PER_TO_MEM << STM_DMA_CCR_DIR)); +	ao_spi_set_dma_miso(id, in, len, 1); +  	ao_spi_run(id, 11, len);  } diff --git a/src/stm/ao_spi_stm_slave.c b/src/stm/ao_spi_stm_slave.c index 962ff2c6..5bb5105d 100644 --- a/src/stm/ao_spi_stm_slave.c +++ b/src/stm/ao_spi_stm_slave.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -54,7 +55,7 @@ ao_spi_slave_send(void *block, uint16_t len)  			    block,  			    len,  			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | +			    (STM_DMA_CCR_PL_HIGH << STM_DMA_CCR_PL) |  			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) |  			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) |  			    (1 << STM_DMA_CCR_MINC) | @@ -74,7 +75,7 @@ ao_spi_slave_send(void *block, uint16_t len)  			    &spi_dev_null,  			    len,  			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | +			    (STM_DMA_CCR_PL_VERY_HIGH << STM_DMA_CCR_PL) |  			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) |  			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) |  			    (0 << STM_DMA_CCR_MINC) | @@ -110,7 +111,7 @@ ao_spi_slave_recv(void *block, uint16_t len)  			    &spi_dev_null,  			    len,  			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | +			    (STM_DMA_CCR_PL_HIGH << STM_DMA_CCR_PL) |  			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) |  			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) |  			    (0 << STM_DMA_CCR_MINC) | @@ -127,7 +128,7 @@ ao_spi_slave_recv(void *block, uint16_t len)  			    block,  			    len,  			    (0 << STM_DMA_CCR_MEM2MEM) | -			    (STM_DMA_CCR_PL_MEDIUM << STM_DMA_CCR_PL) | +			    (STM_DMA_CCR_PL_VERY_HIGH << STM_DMA_CCR_PL) |  			    (STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) |  			    (STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) |  			    (1 << STM_DMA_CCR_MINC) | diff --git a/src/stm/ao_timer.c b/src/stm/ao_timer.c index 91ede84b..f86a5116 100644 --- a/src/stm/ao_timer.c +++ b/src/stm/ao_timer.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/ao_usb_stm.c b/src/stm/ao_usb_stm.c index 3d26466b..0de501ab 100644 --- a/src/stm/ao_usb_stm.c +++ b/src/stm/ao_usb_stm.c @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/src/stm/stm32l.h b/src/stm/stm32l.h index 352214ff..463125e2 100644 --- a/src/stm/stm32l.h +++ b/src/stm/stm32l.h @@ -3,7 +3,8 @@   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version.   *   * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of  | 
