Isn't the internal FSM used in 2 or more places? Is turning off the heater appropriate in all cases? If not, move outside internal FSM to somewhere specific.
Where in the code it shows that we are actually sending a non-zero value to disable this patch? I believe we should completely remove this functionality when the timing is right.
FIQs are non-maskable - cannot protect thread sensitive code from interruption. FIQs were a hopefully temporary way to get the interrupt priority I needed. I reviewed the RM46 datasheet last weekend and found a way to change IRQ priorities and so I no longer need FIQs.