tle8888: fix spi confog for STM32F4 (#735)

* tle8888: fix spi confog for STM32F4

* TLE8888: fix array out of bounds access due to incorrect define used in loop
This commit is contained in:
dron0gus 2019-04-06 01:37:00 +03:00 committed by rusefi
parent e0c9493dd9
commit 8cf20976f6
1 changed files with 14 additions and 15 deletions

View File

@ -163,12 +163,10 @@ int tle8888_chip_init(void * data)
// ret = markUsed(cfg->spi_config.ssport, cfg->spi_config.sspad, DRIVER_NAME " CS"); // ret = markUsed(cfg->spi_config.ssport, cfg->spi_config.sspad, DRIVER_NAME " CS");
if (cfg->reset.port != NULL) if (cfg->reset.port != NULL)
ret |= markUsed(cfg->reset.port, cfg->reset.pad, DRIVER_NAME " RST"); ret |= markUsed(cfg->reset.port, cfg->reset.pad, DRIVER_NAME " RST");
/* for (i = 0; i < TLE8888_DIRECT_MISC; i++)
error: iteration 4 invokes undefined behavior [-Werror=aggressive-loop-optimizations]
for (i = 0; i < TLE8888_DIRECT_OUTPUTS; i++)
if (cfg->direct_io[i].port) if (cfg->direct_io[i].port)
ret |= markUsed(cfg->direct_io[i].port, cfg->direct_io[i].pad, DRIVER_NAME " DIRECT IO"); ret |= markUsed(cfg->direct_io[i].port, cfg->direct_io[i].pad, DRIVER_NAME " DIRECT IO");
*/
if (ret) { if (ret) {
ret = -1; ret = -1;
goto err_gpios; goto err_gpios;
@ -228,15 +226,13 @@ int tle8888_chip_init(void * data)
err_gpios: err_gpios:
/* unmark pins */ /* unmark pins */
markUnused(cfg->spi_config.ssport, cfg->spi_config.sspad); //markUnused(cfg->spi_config.ssport, cfg->spi_config.sspad);
if (cfg->reset.port != NULL) if (cfg->reset.port != NULL)
markUnused(cfg->reset.port, cfg->reset.pad); markUnused(cfg->reset.port, cfg->reset.pad);
/* for (i = 0; i < TLE8888_DIRECT_MISC; i++)
error: iteration 4 invokes undefined behavior [-Werror=aggressive-loop-optimizations]
for (i = 0; i < TLE8888_DIRECT_OUTPUTS; i++)
if (cfg->direct_io[i].port) if (cfg->direct_io[i].port)
markUnused(cfg->direct_io[i].port, cfg->direct_io[i].pad); markUnused(cfg->direct_io[i].port, cfg->direct_io[i].pad);
*/
return ret; return ret;
} }
@ -290,12 +286,15 @@ static struct tle8888_config tle8888_cfg = {
.ssport = GPIOF, .ssport = GPIOF,
.sspad = 0U, .sspad = 0U,
.cr1 = .cr1 =
/* TODO: set LSB first mode !!!! */ SPI_CR1_DFF | // 16-bit transfer
/* SPI_CR1_CPOL | */ // = 0 SPI_CR1_SSM |
SPI_CR1_CPHA | // = 1 SPI_CR1_SSI |
(((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | SPI_CR1_LSBFIRST | //LSB first
SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_MSTR), ((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | // div = 16
/* 16-bit transfer */ SPI_CR1_MSTR |
// SPI_CR1_CPOL | // = 0 CHECK!
SPI_CR1_CPHA | // = 1 CHECK!
0,
.cr2 = 0/* not for F4? SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0*/ .cr2 = 0/* not for F4? SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0*/
}, },
/* not implemented yet, use STM32 gpios directly */ /* not implemented yet, use STM32 gpios directly */