From 71cc657f10211e272b3a4859446d20e395fc50b7 Mon Sep 17 00:00:00 2001 From: dron0gus Date: Fri, 19 Apr 2019 08:42:24 +0300 Subject: [PATCH] Smart gpio fixes 2 (#765) * gpio chips: relax error checking on _add Do not halt whole system if wrong or nulled config is passed. In current smart-gpio implementation this can happen and it is not as error. Let smart-gpio handle this, kust reurn negative. * tle8888: return back includes needed for debug * smar-gpio: -Werror=missing-field-initializers fix --- firmware/hw_layer/drivers/gpio/mc33972.c | 3 ++- firmware/hw_layer/drivers/gpio/tle6240.c | 3 ++- firmware/hw_layer/drivers/gpio/tle8888.c | 6 +++++- firmware/hw_layer/smart_gpio.cpp | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/firmware/hw_layer/drivers/gpio/mc33972.c b/firmware/hw_layer/drivers/gpio/mc33972.c index 1019d4e307..bc359e9795 100644 --- a/firmware/hw_layer/drivers/gpio/mc33972.c +++ b/firmware/hw_layer/drivers/gpio/mc33972.c @@ -343,7 +343,8 @@ int mc33972_add(unsigned int index, const struct mc33972_config *cfg) struct mc33972_priv *chip; /* no config or no such chip */ - osalDbgCheck((cfg != NULL) && (cfg->spi_bus != NULL) && (index < BOARD_MC33972_COUNT)); + if ((!cfg) || (!cfg->spi_bus) || (index >= BOARD_MC33972_COUNT)) + return -1; /* check for valid cs. * DOTO: remove this check? CS can be driven by SPI */ diff --git a/firmware/hw_layer/drivers/gpio/tle6240.c b/firmware/hw_layer/drivers/gpio/tle6240.c index 41b33f5506..43de1f4e1f 100644 --- a/firmware/hw_layer/drivers/gpio/tle6240.c +++ b/firmware/hw_layer/drivers/gpio/tle6240.c @@ -474,7 +474,8 @@ int tle6240_add(unsigned int index, const struct tle6240_config *cfg) struct tle6240_priv *chip; /* no config or no such chip */ - osalDbgCheck((cfg != NULL) && (cfg->spi_bus != NULL) && (index < BOARD_TLE6240_COUNT)); + if ((!cfg) || (!cfg->spi_bus) || (index >= BOARD_TLE6240_COUNT)) + return -1; /* check for valid cs. * DOTO: remove this check? CS can be driven by SPI */ diff --git a/firmware/hw_layer/drivers/gpio/tle8888.c b/firmware/hw_layer/drivers/gpio/tle8888.c index fced3c2ad5..7be2b4d4d3 100644 --- a/firmware/hw_layer/drivers/gpio/tle8888.c +++ b/firmware/hw_layer/drivers/gpio/tle8888.c @@ -23,7 +23,10 @@ #include "pin_repository.h" #include "rfiutil.h" +/* to be rmeoved */ #if EFI_TUNER_STUDIO +#include "engine_configuration.h" +EXTERN_CONFIG; #include "tunerstudio.h" extern TunerStudioOutputChannels tsOutputChannels; #endif /* EFI_TUNER_STUDIO */ @@ -480,7 +483,8 @@ int tle8888_add(unsigned int index, const struct tle8888_config *cfg) efiAssert(OBD_PCM_Processor_Fault, cfg != NULL, "8888CFG", 0) /* no config or no such chip */ - osalDbgCheck((cfg != NULL) && (cfg->spi_bus != NULL) && (index < BOARD_TLE8888_COUNT)); + if ((!cfg) || (!cfg->spi_bus) || (index >= BOARD_TLE8888_COUNT)) + return -1; /* check for valid cs. * TODO: remove this check? CS can be driven by SPI */ diff --git a/firmware/hw_layer/smart_gpio.cpp b/firmware/hw_layer/smart_gpio.cpp index 32b15a392d..bf8c904e74 100644 --- a/firmware/hw_layer/smart_gpio.cpp +++ b/firmware/hw_layer/smart_gpio.cpp @@ -120,6 +120,7 @@ static struct tle8888_config tle8888_cfg = { 0, .cr2 = SPI_CR2_16BIT_MODE }, + .reset = {.port = NULL, .pad = 0}, .direct_io = { [0] = {.port = NULL, .pad = 0, .output = 9}, [1] = {.port = NULL, .pad = 0, .output = 10},