* tle8888: ups IGN1
* tle8888: more BIT() macro
* tle8888: fix typos
* tle8888: fix LS2 output on MRE when stepper is enabled
Default settings casue one (or few) not used direct driver inputs
to be mapped to OUT5 (LS2 on MRE)
* smart_gpio: comments for TLE8888 on MicroRusEFI
* smart_gpio: typo
* tle8888: more comments
* MC33972: update
-per-instance thread
-enable pull-ups for enabled pins only
* smart-gpio: mc33972: uses 8-bit spi frames
3 bytes are sent to make 24-bit frame
* gpios: isBrainPinValid helper
* LCD HD44780: do not touch pins if DM_NONE or invalid gpio
* Fix isEnabled checks for GPS and Joystick
* LCD HD44780: writePad use this method wider
* TLE8888: add support MR switching from SW
Main Relay has limitation - it is always active while KEY=1. When
KEY=0 MR can be switched on from SW.
* TLE8888: support reading of KEY and WAKE inputs
* Rusefi enums: add new TLE8888 pins
* smart gpio: fix tle8888 direct pin mapping for MRE
* MRE: use TLE8888 pins instead of MCU gpios that drives TLE8888
* TLE8888: cleanup
* TLE8888: do not reset driver private data on WD/undervoltage reset
* TLE8888: diagnostic updates
* TLE8888 driver: BIG driver rework
* TLE8888: check SPI answers for abnormal states
Reply with other than requested register can be a sign of:
-Power-On-Reset, then OpStat0 will be replyed
-WatchDog reset, then FWDStat1 will be replyed
-Invalid communication frame, then Diag0 will be replyed
Keep tracking last accessed register and check with the next reply.
* TLE8888: debug clean-up
* TLE8888: implement spi array write
This reduce CS inactive state time between two consequent accesses
from 8.8 uS to 1.4 uS
* TLE8888: fix PP outputs in OD mode
* TLE8888: cleanup register definitions
* TLE8888: run separate driver thread for each chip instance
Calculating poll interval for few chips become more complex, avoid
this running thread for each device.
* TLE8888: fix cypress and kinetic compilation
Both platforms define its own MAX and cause redifination error if
common.h is included in driver.
* MRE: update mapping.yaml and fix direct pin mapping for TLE8888
* TLE8888: diagnnostic: disable switch off in case of overcurrent
For all output, use current limiting instead
* TLE8888: check for overvoltage on OUT8..OUT13
* TLE8888: add TODO note about how to recover from failure condition
Currently TLE8888 automaticly recovers only from overcurrent and
(may be) overtemperature conditions.
Short to bat cause output disable (bit in OECONFIG is reset) and
needs driver/host intervention.
* TLE8888: save few bytes of RAM
* TLE8888: Lada Kalina is test mule for IDLE stepper on TLE8888
Don't forget to enable PP mode for TLE8888 outputs 21..24:
uncomment line 1087 in tle8888.c
* TLE8888: reorder code, cleanup
* TLE8888: mode all debug/statisctic to per-chip struct
* TLE8888: rework poll interval calculation
* MRE: use TLE8888 pins instead of MCU gpios that drives TLE8888 #2
* pin_repository: provide readable pin names in error cases
* io_pins: remove getBrain_pin_eExt
We have getBrain_pin_eExt in io_pins.cpp and hwPortname in
pin_repository.cpp.
First uses auto-generated enums, second one uses runtime data to
provide name of hw pin.
Removing first saves us about 2K of flash couse big auto-generated
switch with pin names no more used by anyone and gets optimized out.
* gpios: mc33972: CS pin is now requested at smart_gpios.pcc
* getSpiDevice: support SPI4
* smart_gpios.cpp: startSmartCsPins set CSs to inactive state
OutputPin:initPin initializes pin with false value. This is active
state for SPI Chip Selects. Set to 1 to deselect all chips.
* smart_gpio: fix error path
If chip driver disable in FW, disabled in settings or failed to init
we still need to ocupy its gpio range.
* smart_gpio: get tle6240 CS from config
* smart_gpio: fix debug messaging
* 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
* smart_gpio.cpp: check _add return values
And occupy gpiochip's pin range if disabled of failed. So base will
align with enum.
* TLE8888: cleanup, move high level code to smart_gpio.cpp
* smart_gpio.cpp: fix compilation when BOARD_EXT_GPIOCHIPS == 0
* board-subaru: fix compilation after latest smart_gpio updates
* tle8888: now we have all 28 pins supported
* Add fields to UART/Serial configs
* trigger_input: can be both HAL_USE_PAL and HAL_USE_COMP
* tle6240 config: local temporary solution
* Fix for custom_engine::setFsio
* EFI_ACTIVE_CONFIGURATION_IN_FLASH
* efi_gpio: update cached pin value for ext gpios to
* tle6240: update and fix
* gpiochips_init should be called after all gpio chips are added
or we can lost calls to _init of chips
* smart_gpio.c: fix for tle6240 and mc33972
now config structs are not const. waste of ram...