diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index c2c275c040..af251e4c74 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -575,6 +575,8 @@ void initIdleHardware(DECLARE_ENGINE_PARAMETER_SIGNATURE) { /** * Start PWM for idleValvePin */ + // todo: even for double-solenoid mode we can probably use same single SimplePWM + // todo: open question why do we pass 'OutputPin' into 'startSimplePwmExt' if we have custom applyIdleSolenoidPinState listener anyway? startSimplePwmExt(&idleSolenoid, "Idle Valve", &engine->executor, CONFIG(idle).solenoidPin, &enginePins.idleSolenoidPin, diff --git a/firmware/controllers/system/efi_gpio.cpp b/firmware/controllers/system/efi_gpio.cpp index 175cd2bb98..6a24b673c7 100644 --- a/firmware/controllers/system/efi_gpio.cpp +++ b/firmware/controllers/system/efi_gpio.cpp @@ -135,6 +135,7 @@ void EnginePins::unregisterPins() { unregisterOutputIfPinOrModeChanged(dizzyOutput, dizzySparkOutputPin, dizzySparkOutputPinMode); unregisterOutputIfPinOrModeChanged(tachOut, tachOutputPin, tachOutputPinMode); unregisterOutputIfPinOrModeChanged(idleSolenoidPin, idle.solenoidPin, idle.solenoidPinMode); + unregisterOutputIfPinOrModeChanged(secondIdleSolenoidPin, secondSolenoidPin, idle.solenoidPinMode); unregisterOutputIfPinChanged(sdCsPin, sdCardCsPin); unregisterOutputIfPinChanged(accelerometerCs, LIS302DLCsPin); diff --git a/firmware/controllers/system/efi_gpio.h b/firmware/controllers/system/efi_gpio.h index 7b3187bdcf..8206cd5dc6 100644 --- a/firmware/controllers/system/efi_gpio.h +++ b/firmware/controllers/system/efi_gpio.h @@ -141,6 +141,7 @@ public: OutputPin debugSetTimer; OutputPin boostPin; OutputPin idleSolenoidPin; + OutputPin secondIdleSolenoidPin; OutputPin alternatorPin; /** * this one is usually on the gauge cluster, not on the ECU