---- On Tue, 01 Oct 2019 16:02:10 -0700 Guenter Roeck <linux@xxxxxxxxxxxx> wrote ---- > > - val = clamp_val(val, 500, 1600); > > + switch (data->info->vrm_version) { > > + case vr11: > > + val = clamp_val(val, 500, 1600); > > + return 2 + DIV_ROUND_CLOSEST((1600 - val) * 100, 625); > > + case vr12: > > + val = clamp_val(val, 0, 1520); > > + return ((val - 250) / 5) + 1; > > + case vr13: > > + val = clamp_val(val, 0, 2500); > > + return ((val - 500) / 10) + 1; > > Both vr12 and vr13 converts low values into negative values, > which are then converted into more or less random register > values. That can not be correct. The resulting register values > must always be valid. > > Guenter Thanks for catching this. It may be as simple as me adjusting the lower bound on the clamp_val. I’ll check with one of the device specs and confirm the appropriate behavior on the lower bounds.