Is this using C++/PureData/Csound or using Supercollider? Supercollider has a bug that needs to be fixed and a workaround for which is explained here.
For the others (it seems you are using C++), I would recommend deleting the settings.json file from your project and refresh the IDE page so to start with fresh settings. Then you should be able to use the settings in the IDE to set the input gain. What happens in the backend is that for positive gain values, the ADC attenuator is set to 0dB (no attenuation) and the PGA is set to the positive value. For negative gain values, the PGA is set to 0dB and the ADC attenuator is used to achieve a value (close to) the specified one.
tsx - if I set the PGA gain (to e.g. 10) using setAudioInputGain and do not invoke setAdcLevel then it works ok
this looks good, assuming you mean Bela_setAudioInputGain().
tsx - if I set the PGA gain (to e.g. 10) using setAudioInputGain and set the ADC level (to e.g. 0) using setAdcLevel then I get nothing
Whichever of Bela_setAudioInputGain() or Bela_setADCLevel() gets called last is what ultimately sets the input gain, so it may be that with a gain of 0 you don't actually much input level at all .. anyhow you should not need to call Bela_setADCLevel() in any case going forward because of what I explained above.