I had some time to give my last try to the GPIO holdwitch detection, i tried it before so was not much optimist but i knew other similar iPods are reflecting holdswitch status on GPIO ports. Finally found it! :)
This was a nice thread, i learned many new things about rockbox code, these are my actual thoughts: Polling inside interrupts and create a thread for all targets are discarded due to the reasons already exposed. The async polling is probably the most efficient way but will result on a somewhat intricate code, i think it is still valid for this issue and was ready to try to implement it (if no objections). But the async polling is not appropriate for a more complex task (i.e reading and ADC), creating a specific target thread is more simple and flexible for future use, not as efficient as the ASYNC poll but the overhead for the Classic is very low, it could be also a valid option.