It worked!
Inspired by
coplate's thread I decided to try compiling with 5.8.1 instead. I used the same process to retrieve the 5.8.1 kernel's config & initramfs. I then made one simple modification to drivers\hwmon\max77696-adc.c:
Code:
static void adc_disp_gettemp_work(struct work_struct *work)
{
/*this is the only place display_temp gets updated, so no mutex needed! */
display_temp_c = 25;
schedule_delayed_work(&adc_disp_temp_work, msecs_to_jiffies(DISP_ADC_TEMP_THRESHOLD));
return;
}
One successful compile & flash later and I have a successful boot. No more attempts to read the ADC, display_temp_c is always 25, the battery check passes, the display renders fine, and since I'm no longer in diags mode, the touchscreen works!
I'd still like to successfully compile a 5.4.x kernel with the 'fix' - once this is done I will revisit the thread and document the process start to finish. The build issue with the 5.4.3.2 kernel in the previous post remains open. This has now also been resolved, once the errors mentioned above are resolved the kernel compiles just fine & behaves just as the 5.8.1 does - no ADC hits, no temp check failures.
That said, I'm not satisfied with the way I resolved it, so this step will be documented once I figure it out to my satisfaction. Now I'm happy with it, essentially looked at how they were doing it in the 5.8.7.0 kernel and adapted the 5.4.3.2 source, very few changes needed. Documentation coming soon.