drm/nouveau/drm/nouveau/clk: fix tstate to pstate calculation
authorWei Ni <wni@nvidia.com>
Tue, 16 Jun 2015 09:35:12 +0000 (17:35 +0800)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 28 Aug 2015 02:40:01 +0000 (12:40 +1000)
According to the tstate calculation in nvkm_clk_tstate(),
the range of tstate is from -(clk->state_nr - 1) to 0,
it mean the tstate is negative value. But in nvkm_pstate_work(),
it use (clk->state_nr - 1 - clk->tstate) to limit pstate,
it's not correct.
This patch fix it to use (clk->state_nr - 1 + clk->tstate) to
limit pstate.

Signed-off-by: Wei Ni <wni@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c

index 39a83d82e0cd99e5fe6c3d3a780b75501e39f623..77a0ab5ca3b01a6bd614e1f22761ad632dcd55b6 100644 (file)
@@ -214,7 +214,7 @@ nvkm_pstate_work(struct work_struct *work)
        pstate = clk->pwrsrc ? clk->ustate_ac : clk->ustate_dc;
        if (clk->state_nr && pstate != -1) {
                pstate = (pstate < 0) ? clk->astate : pstate;
-               pstate = min(pstate, clk->state_nr - 1 - clk->tstate);
+               pstate = min(pstate, clk->state_nr - 1 + clk->tstate);
                pstate = max(pstate, clk->dstate);
        } else {
                pstate = clk->pstate = -1;