Not every shipped device will have the same characteristics, so people should be able to adjust these settings in software and that is easiest if the software can make the decision before 'absolute critical'
The best example of how NOT to do it is the BFL FPGA where the damn throttling hardware is a PITA for many when it stops mining too early.
What is the preferred way to handle config for the ASICs. I didn't see a menu item like for GPUs. Is there an API for reading config from the conf file? Or is adding API control preferred. I didn't see an example of that in the bflsc driver. With my GPUs I've always just manually edited the conf file.
I'm thinking of clock freq, fan target, temp target and temp critical,which are currently the 4 cfg options for the klondike. They should be stored somewhere but user adjustable.
This comes in when we've had access to the hardware
If you look at the latest Avalon commits, ckolivas has added a set of controls for hardware error rates and temperatures.
The config is done by using temperature options with defaults and also the code itself acting based on those options.
The bflsc code now has temperature control also - once he had access to a little single for a short while ... that had major temperature problems.
In each case (as I did with the MMQ over quite a few weeks) it's been setting it up and tuning it with hardware, even the GPU code was done that way.
So, in your case I guess you'll need to look at the others and set it up appropriately.
Each one actually does it a different way since we have different ideas about how to handle the different hardware (and of course the different hardware itself needs to be handled differently)
e.g. the MMQ doesn't work properly via fine tuned temperature control (and really has an issue of not having any way to stop work) whereas the Avalon ckolivas has written a PID controlled temperature algorithm, but the bflsc is a simpler temperature control.
But what it all really depends on is the final hardware itself, i.e. specs from you to say these normal temperature control would be 'blah'
The simple problem of course is that everyone has a different environment and no doubt there will be some people who put the mining hardware in a hot room and at least expect it to not kill itself. Having two levels of control helps with that immensely: a 'this is the temp it should run at' software control and a 'if this happens shut it down' higher temperature hardware control
The basic control from the user should normally be setting values or ranges (with defaults of course) and the software working within those settings.
The API isn't really how this should be done - even with the GPU setting it actually doesn't really work that way even though the API commands are there.