diff --git a/firmware/hw_layer/hardware.cpp b/firmware/hw_layer/hardware.cpp index 0972027ad2..7fc2c32e25 100644 --- a/firmware/hw_layer/hardware.cpp +++ b/firmware/hw_layer/hardware.cpp @@ -275,15 +275,22 @@ void applyNewHardwareSettings(void) { #if EFI_CAN_SUPPORT stopCanPins(); #endif /* EFI_CAN_SUPPORT */ + +#if EFI_HIP_9011 + stopHip9001_pins(); +#endif /* EFI_HIP_9011 */ + #if EFI_ELECTRONIC_THROTTLE_BODY bool etbRestartNeeded = isETBRestartNeeded(); if (etbRestartNeeded) { stopETBPins(); } #endif /* EFI_ELECTRONIC_THROTTLE_BODY */ + #if EFI_VEHICLE_SPEED stopVSSPins(); #endif /* EFI_VEHICLE_SPEED */ + #if EFI_AUX_PID stopAuxPins(); #endif /* EFI_AUX_PID */ @@ -324,6 +331,11 @@ void applyNewHardwareSettings(void) { startCanPins(); #endif /* EFI_CAN_SUPPORT */ +#if EFI_HIP_9011 + startHip9001_pins(); +#endif /* EFI_HIP_9011 */ + + #if EFI_ELECTRONIC_THROTTLE_BODY if (etbRestartNeeded) { startETBPins(); diff --git a/firmware/hw_layer/hip9011.cpp b/firmware/hw_layer/hip9011.cpp index e8412ad511..761fe6d5e2 100644 --- a/firmware/hw_layer/hip9011.cpp +++ b/firmware/hw_layer/hip9011.cpp @@ -378,6 +378,18 @@ static msg_t hipThread(void *arg) { return -1; } +void stopHip9001_pins() { +#if EFI_PROD_CODE + brain_pin_markUnused(activeConfiguration.bc.hip9011IntHoldPin); + brain_pin_markUnused(activeConfiguration.bc.hip9011CsPin); +#endif /* EFI_PROD_CODE */ +} + +void startHip9001_pins() { + intHold.initPin("hip int/hold", CONFIGB(hip9011IntHoldPin), &CONFIGB(hip9011IntHoldPinMode)); + enginePins.hipCs.initPin("hip CS", CONFIGB(hip9011CsPin), &CONFIGB(hip9011CsPinMode)); +} + void initHip9011(Logging *sharedLogger) { logger = sharedLogger; addConsoleAction("hipinfo", showHipInfo); @@ -398,10 +410,7 @@ void initHip9011(Logging *sharedLogger) { hipSpiCfg.sspad = getHwPin("hip", CONFIGB(hip9011CsPin)); #endif - intHold.initPin("hip int/hold", CONFIGB(hip9011IntHoldPin), - &CONFIGB(hip9011IntHoldPinMode)); - enginePins.hipCs.initPin("hip CS", CONFIGB(hip9011CsPin), - &CONFIGB(hip9011CsPinMode)); + startHip9001_pins(); scheduleMsg(logger, "Starting HIP9011/TPIC8101 driver"); spiStart(driver, &hipSpiCfg); diff --git a/firmware/hw_layer/hip9011.h b/firmware/hw_layer/hip9011.h index e1750d7511..065ba71143 100644 --- a/firmware/hw_layer/hip9011.h +++ b/firmware/hw_layer/hip9011.h @@ -16,6 +16,8 @@ #define HIP_THREAD_PERIOD 100 void initHip9011(Logging *sharedLogger); +void startHip9001_pins(); +void stopHip9001_pins(); void setHip9011FrankensoPinout(void); #if HAL_USE_ADC void hipAdcCallback(adcsample_t value);