Rational input values for vdiv and timebase are checked against the supported values exactly. If the caller uses normalised fractions this will usually fail, e.g. for vdiv = 100mV, (1, 10) will be given but only (100, 1000) would match. A reusable function implementing rational equality checks would be useful here.
libsigrok now has sr_rational_eq http://sigrok.org/gitweb/?p=libsigrok.git;a=commit;h=bdba362695bd5ee97fca685839a9e90e1e788ecb
All supported devices accept a real value for vdiv settings. Maybe we should just check that the value is in range, and then pass it on?