Merge remote-tracking branch 'origin/Hellen_fork_point' into master
# Conflicts: # firmware/Makefile # firmware/hw_layer/smart_gpio.cpp
This commit is contained in:
commit
3a11ea7e31
|
@ -80,6 +80,12 @@ ifeq ($(USE_VERBOSE_COMPILE),)
|
||||||
USE_VERBOSE_COMPILE = no
|
USE_VERBOSE_COMPILE = no
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# If enabled, this option makes the build process faster by not compiling
|
||||||
|
# modules not used in the current configuration.
|
||||||
|
ifeq ($(USE_SMART_BUILD),)
|
||||||
|
USE_SMART_BUILD = yes
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(USE_BOOTLOADER),)
|
ifeq ($(USE_BOOTLOADER),)
|
||||||
USE_BOOTLOADER = no
|
USE_BOOTLOADER = no
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -15,11 +15,17 @@
|
||||||
#include "mpu_util.h"
|
#include "mpu_util.h"
|
||||||
#include "gpio_ext.h"
|
#include "gpio_ext.h"
|
||||||
#include "pin_repository.h"
|
#include "pin_repository.h"
|
||||||
|
#include "drivers/gpio/tle6240.h"
|
||||||
|
#include "drivers/gpio/mc33972.h"
|
||||||
|
#include "drivers/gpio/mc33810.h"
|
||||||
|
#include "drivers/gpio/tle8888.h"
|
||||||
|
#include "drivers/gpio/drv8860.h"
|
||||||
|
|
||||||
EXTERN_CONFIG;
|
EXTERN_CONFIG;
|
||||||
static OutputPin tle8888Cs;
|
static OutputPin tle8888Cs;
|
||||||
static OutputPin tle6240Cs;
|
static OutputPin tle6240Cs;
|
||||||
static OutputPin mc33972Cs;
|
static OutputPin mc33972Cs;
|
||||||
|
static OutputPin drv8860Cs;
|
||||||
|
|
||||||
// todo: migrate to TS or board config
|
// todo: migrate to TS or board config
|
||||||
#ifndef TLE6240_RESET_PORT
|
#ifndef TLE6240_RESET_PORT
|
||||||
|
@ -137,8 +143,32 @@ struct tle8888_config tle8888_cfg = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (BOARD_DRV8860_COUNT > 0)
|
||||||
|
struct drv8860_config drv8860 = {
|
||||||
|
.spi_bus = NULL /* TODO software lookup &SPID4 */,
|
||||||
|
.spi_config = {
|
||||||
|
.circular = false,
|
||||||
|
.end_cb = NULL,
|
||||||
|
.ssport = NULL,
|
||||||
|
.sspad = 0,
|
||||||
|
.cr1 =
|
||||||
|
SPI_CR1_16BIT_MODE |
|
||||||
|
SPI_CR1_SSM |
|
||||||
|
SPI_CR1_SSI |
|
||||||
|
((7 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | /* div = 32 */
|
||||||
|
SPI_CR1_MSTR |
|
||||||
|
SPI_CR1_CPOL |
|
||||||
|
0,
|
||||||
|
.cr2 = SPI_CR2_16BIT_MODE
|
||||||
|
},
|
||||||
|
.reset = {.port = DRV8860_RESET_PORT, .pad = DRV8860_RESET_PAD}
|
||||||
|
};
|
||||||
|
#endif /* (BOARD_DRV8860_COUNT > 0) */
|
||||||
|
|
||||||
void initSmartGpio() {
|
void initSmartGpio() {
|
||||||
|
#if (BOARD_EXT_GPIOCHIPS > 0)
|
||||||
startSmartCsPins();
|
startSmartCsPins();
|
||||||
|
#endif /* BOARD_EXT_GPIOCHIPS */
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
#if (BOARD_TLE6240_COUNT > 0)
|
#if (BOARD_TLE6240_COUNT > 0)
|
||||||
|
@ -151,9 +181,9 @@ void initSmartGpio() {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
#endif /* (BOARD_TLE6240_COUNT > 0) */
|
|
||||||
/* whenever chip is disabled or error returned - occupy its gpio range */
|
/* whenever chip is disabled or error returned - occupy its gpio range */
|
||||||
gpiochip_use_gpio_base(TLE6240_OUTPUTS);
|
gpiochip_use_gpio_base(TLE6240_OUTPUTS);
|
||||||
|
#endif /* (BOARD_TLE6240_COUNT > 0) */
|
||||||
|
|
||||||
#if (BOARD_MC33972_COUNT > 0)
|
#if (BOARD_MC33972_COUNT > 0)
|
||||||
if (engineConfiguration->mc33972_cs != GPIO_UNASSIGNED) {
|
if (engineConfiguration->mc33972_cs != GPIO_UNASSIGNED) {
|
||||||
|
@ -167,9 +197,9 @@ void initSmartGpio() {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
#endif /* (BOARD_MC33972_COUNT > 0) */
|
|
||||||
/* whenever chip is disabled or error returned - occupy its gpio range */
|
/* whenever chip is disabled or error returned - occupy its gpio range */
|
||||||
gpiochip_use_gpio_base(MC33972_INPUTS);
|
gpiochip_use_gpio_base(MC33972_INPUTS);
|
||||||
|
#endif /* (BOARD_MC33972_COUNT > 0) */
|
||||||
|
|
||||||
#if (BOARD_TLE8888_COUNT > 0)
|
#if (BOARD_TLE8888_COUNT > 0)
|
||||||
if (engineConfiguration->tle8888_cs != GPIO_UNASSIGNED) {
|
if (engineConfiguration->tle8888_cs != GPIO_UNASSIGNED) {
|
||||||
|
@ -190,9 +220,25 @@ void initSmartGpio() {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
#endif /* (BOARD_TLE8888_COUNT > 0) */
|
|
||||||
/* whenever chip is disabled or error returned - occupy its gpio range */
|
/* whenever chip is disabled or error returned - occupy its gpio range */
|
||||||
gpiochip_use_gpio_base(TLE8888_OUTPUTS);
|
gpiochip_use_gpio_base(TLE8888_OUTPUTS);
|
||||||
|
#endif /* (BOARD_TLE8888_COUNT > 0) */
|
||||||
|
|
||||||
|
#if (BOARD_DRV8860_COUNT > 0)
|
||||||
|
if (engineConfiguration->drv8860_cs != GPIO_UNASSIGNED) {
|
||||||
|
drv8860.spi_config.ssport = getHwPort("drv8860 CS", engineConfiguration->drv8860_cs);
|
||||||
|
drv8860.spi_config.sspad = getHwPin("drv8860 CS", engineConfiguration->drv8860_cs);
|
||||||
|
drv8860.spi_bus = getSpiDevice(engineConfiguration->drv8860spiDevice);
|
||||||
|
ret = drv8860_add(0, &drv8860);
|
||||||
|
|
||||||
|
efiAssertVoid(OBD_PCM_Processor_Fault, ret == DRV8860_PIN_1, "drv8860");
|
||||||
|
} else {
|
||||||
|
ret = -1;
|
||||||
|
}
|
||||||
|
if (ret < 0)
|
||||||
|
/* whenever chip is disabled or error returned - occupy its gpio range */
|
||||||
|
gpiochip_use_gpio_base(DRV8860_OUTPUTS);
|
||||||
|
#endif /* (BOARD_DRV8860_COUNT > 0) */
|
||||||
|
|
||||||
#if (BOARD_EXT_GPIOCHIPS > 0)
|
#if (BOARD_EXT_GPIOCHIPS > 0)
|
||||||
/* external chip init */
|
/* external chip init */
|
||||||
|
@ -211,6 +257,9 @@ void stopSmartCsPins() {
|
||||||
#if (BOARD_MC33972_COUNT > 0)
|
#if (BOARD_MC33972_COUNT > 0)
|
||||||
brain_pin_markUnused(activeConfiguration.mc33972_cs);
|
brain_pin_markUnused(activeConfiguration.mc33972_cs);
|
||||||
#endif /* BOARD_MC33972_COUNT */
|
#endif /* BOARD_MC33972_COUNT */
|
||||||
|
#if (BOARD_DRV8860_COUNT > 0)
|
||||||
|
brain_pin_markUnused(activeConfiguration.drv8860_cs);
|
||||||
|
#endif /* BOARD_DRV8860_COUNT */
|
||||||
}
|
}
|
||||||
|
|
||||||
void startSmartCsPins() {
|
void startSmartCsPins() {
|
||||||
|
@ -229,6 +278,11 @@ void startSmartCsPins() {
|
||||||
&engineConfiguration->mc33972_csPinMode);
|
&engineConfiguration->mc33972_csPinMode);
|
||||||
mc33972Cs.setValue(true);
|
mc33972Cs.setValue(true);
|
||||||
#endif /* BOARD_MC33972_COUNT */
|
#endif /* BOARD_MC33972_COUNT */
|
||||||
|
#if (BOARD_DRV8860_COUNT > 0)
|
||||||
|
drv8860Cs.initPin("drv8860 CS", engineConfiguration->drv8860_cs,
|
||||||
|
&engineConfiguration->drv8860_csPinMode);
|
||||||
|
drv8860Cs.setValue(true);
|
||||||
|
#endif /* BOARD_DRV8860_COUNT */
|
||||||
}
|
}
|
||||||
#endif /* (BOARD_EXT_GPIOCHIPS > 0) */
|
#endif /* (BOARD_EXT_GPIOCHIPS > 0) */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue