search for: vid_nr

Displaying 20 results from an estimated 29 matches for "vid_nr".

2014 Nov 28
0
[RESEND PATCH nouveau 2/3] volt: allow non-bios voltage scaling
...volt_parse(bios, &ver, &hdr, &cnt, &len, &info); + if (data && info.vidmask && info.base && info.step) { + for (i = 0; i < info.vidmask + 1; i++) { + if (info.base >= info.min && + info.base <= info.max) { + volt->vid[volt->vid_nr].uv = info.base; + volt->vid[volt->vid_nr].vid = i; + volt->vid_nr++; + } + info.base += info.step; + } + volt->vid_mask = info.vidmask; + } else if (data && info.vidmask) { + for (i = 0; i < cnt; i++) { + data = nvbios_volt_entry_parse(bios, i, &ver, &...
2014 Nov 28
2
[PATCH 1/2] volt: allow non-bios voltage scaling
...volt_parse(bios, &ver, &hdr, &cnt, &len, &info); + if (data && info.vidmask && info.base && info.step) { + for (i = 0; i < info.vidmask + 1; i++) { + if (info.base >= info.min && + info.base <= info.max) { + volt->vid[volt->vid_nr].uv = info.base; + volt->vid[volt->vid_nr].vid = i; + volt->vid_nr++; + } + info.base += info.step; + } + volt->vid_mask = info.vidmask; + } else if (data && info.vidmask) { + for (i = 0; i < cnt; i++) { + data = nvbios_volt_entry_parse(bios, i, &ver, &...
2014 Dec 01
2
[V3 PATCH 1/3] soc/tegra: fuse: export tegra_sku_info
Some Tegra drivers might be compiled as kernel modules, and they need the fuse information for initialization. One example is the GK20A Nouveau driver. It needs the GPU speedo value to calculate frequency-voltage table. So export the tegra_sku_info. Signed-off-by: Vince Hsu <vinceh at nvidia.com> Acked-by: Alexandre Courbot <acourbot at nvidia.com> Acked-by: Thierry Reding <treding
2014 Dec 02
3
[V3 PATCH 1/4] soc/tegra: fuse: export tegra_sku_info
Some Tegra drivers might be compiled as kernel modules, and they need the fuse information for initialization. One example is the GK20A Nouveau driver. It needs the GPU speedo value to calculate frequency-voltage table. So export the tegra_sku_info. Signed-off-by: Vince Hsu <vinceh at nvidia.com> Acked-by: Alexandre Courbot <acourbot at nvidia.com> Acked-by: Thierry Reding <treding
2014 Nov 28
8
[RESEND V2 PATCH 1/3] soc/tegra: fuse: export tegra_sku_info for module use
Some Tegra drivers might be complied as kernel modules, and they need the fuse information for initialization. One example is the GK20A Nouveau driver. It needs the GPU speedo value to calculate frequency-voltage table. So export the tegra_sku_info. Signed-off-by: Vince Hsu <vinceh at nvidia.com> --- v2: add more description why we need this patch drivers/soc/tegra/fuse/fuse-tegra.c | 1
2017 Apr 22
3
[PATCH] volt: Improve min/max deteaction of range based volting
...d ranged based VIDs\n"); - volt->min_uv = info.min; - volt->max_uv = info.max; + volt->min_uv = 0xffffffff; + volt->max_uv = 0; for (i = 0; i < info.vidmask + 1; i++) { if (info.base >= info.min && info.base <= info.max) { volt->vid[volt->vid_nr].uv = info.base; volt->vid[volt->vid_nr].vid = i; volt->vid_nr++; + volt->min_uv = min(volt->min_uv, info.base); + volt->max_uv = max(volt->max_uv, info.base); } info.base += info.step; } -- 2.12.2
2016 Apr 20
2
[PATCH 0/2] add min/max voltage to hwmon
The first patch is also part of my reclocking series Karol Herbst (2): volt: save the voltage range we are able to set hwmon: add in_min and in_max drm/nouveau/include/nvkm/subdev/volt.h | 3 +++ drm/nouveau/nouveau_hwmon.c | 36 ++++++++++++++++++++++++++++++++++ drm/nouveau/nvkm/subdev/volt/base.c | 14 ++++++++++++- 3 files changed, 52 insertions(+), 1 deletion(-) --
2014 Nov 28
0
[PATCH 2/2] volt: add support for GK20A
...vb_t_voltage(speedo, -10, 100, 10, coef); + mv = DIV_ROUND_UP(mv, 1000); + + return mv * 1000; +} + +static int +gk20a_volt_vid_get(struct nouveau_volt *volt) +{ + struct gk20a_volt_priv *priv = (void *)volt; + int i, uv; + + uv = regulator_get_voltage(priv->vdd); + + for (i = 0; i < volt->vid_nr; i++) + if (volt->vid[i].uv >= uv) + return i; + + return -EINVAL; +} + +static int +gk20a_volt_vid_set(struct nouveau_volt *volt, u8 vid) +{ + struct gk20a_volt_priv *priv = (void *)volt; + + nv_debug(volt, "set voltage as %duv\n", volt->vid[vid].uv); + return regulator_set_v...
2014 Nov 28
0
[RESEND PATCH nouveau 3/3] volt: add support for GK20A
...vb_t_voltage(speedo, -10, 100, 10, coef); + mv = DIV_ROUND_UP(mv, 1000); + + return mv * 1000; +} + +static int +gk20a_volt_vid_get(struct nouveau_volt *volt) +{ + struct gk20a_volt_priv *priv = (void *)volt; + int i, uv; + + uv = regulator_get_voltage(priv->vdd); + + for (i = 0; i < volt->vid_nr; i++) + if (volt->vid[i].uv >= uv) + return i; + + return -EINVAL; +} + +static int +gk20a_volt_vid_set(struct nouveau_volt *volt, u8 vid) +{ + struct gk20a_volt_priv *priv = (void *)volt; + + nv_debug(volt, "set voltage as %duv\n", volt->vid[vid].uv); + return regulator_set_v...
2015 Nov 23
2
[PATCH 0/2] Fix some voltage issues found on Kepler cards
With these both patches, most of the kepler cards should be able to reclock their core clock without issues. These patches should be tested carefully among nouveau devs, so that these don't break reclocking on other cards (especially Teslas). Particularly the second one might break reclocking here and there. Karol Herbst (2): bios/volt: handle voltage table version 0x50 with 0ed header
2014 Nov 28
2
[RESEND PATCH nouveau 3/3] volt: add support for GK20A
...1000); > + > + return mv * 1000; > +} > + > +static int > +gk20a_volt_vid_get(struct nouveau_volt *volt) > +{ > + struct gk20a_volt_priv *priv = (void *)volt; > + int i, uv; > + > + uv = regulator_get_voltage(priv->vdd); > + > + for (i = 0; i < volt->vid_nr; i++) > + if (volt->vid[i].uv >= uv) > + return i; > + > + return -EINVAL; > +} > + > +static int > +gk20a_volt_vid_set(struct nouveau_volt *volt, u8 vid) > +{ > + struct gk20a_volt_priv *priv = (void *)volt; > + > + nv_debug(volt, "set voltage as %...
2014 Nov 28
0
[RESEND PATCH nouveau 3/3] volt: add support for GK20A
...> + >> +static int >> +gk20a_volt_vid_get(struct nouveau_volt *volt) >> +{ >> + struct gk20a_volt_priv *priv = (void *)volt; >> + int i, uv; >> + >> + uv = regulator_get_voltage(priv->vdd); >> + >> + for (i = 0; i < volt->vid_nr; i++) >> + if (volt->vid[i].uv >= uv) >> + return i; >> + >> + return -EINVAL; >> +} >> + >> +static int >> +gk20a_volt_vid_set(struct nouveau_volt *volt, u8 vid) >> +{ >> + struct gk20a_volt_priv *priv = (voi...
2017 Apr 22
0
[PATCH] volt: Improve min/max deteaction of range based volting
...> + volt->max_uv = 0; > for (i = 0; i < info.vidmask + 1; i++) { > if (info.base >= info.min && > info.base <= info.max) { How bogus are info.min and info.max when you get that error? Is this if-statement still valid? > volt->vid[volt->vid_nr].uv = info.base; > volt->vid[volt->vid_nr].vid = i; > volt->vid_nr++; > + volt->min_uv = min(volt->min_uv, info.base); > + volt->max_uv = max(volt->max_uv, info.base); > } > info.base += info.step; > }
2016 Feb 29
9
[PATCH 0/9] Groundwork for clocking fixes
This series contains a lot of groundwork to finally fix reclocking issues on Kepler+ gpus. There shouldn't be any functional changes with the first patch being the only exception (fixes some voltage table parsing issues with of few kepler gpus) The most interessting thing is the tool in the last patch, which can be ran alongside the nvidia driver to test nouveaus volting code and print the
2016 Mar 28
1
[PATCH v2 06/22] volt: parse the both max voltage entries
...if (nvbios_vmap_parse(bios, &ver, &hdr, &cnt, &len, &vmap)) { > + volt->max0_vid = vmap.max0; > + volt->max1_vid = vmap.max1; > + } else { > + volt->max0_vid = 0xff; > + volt->max1_vid = 0xff; > + } > } > > if (volt->vid_nr) { This is really peculiar that NVIDIA would have 2 max_vid in the same entry :s How did you reverse that? Did you really see no differences? Maybe the two max_vid are for different temperatures?
2015 Dec 02
11
[RFC PATCH v2 0/7] stabilize kepler reclocking
this series solves different issues we encounter on kepler cards while reclocking: 1. core clock doesn't change at all and produces a volting error (patch 1) this can happen when the voltage table has only 0ed values in the header so we have to parse the entries itself, which contain the right voltages 2. kepler won't clock to highest cstates (patch 2) this happens, because there are
2015 Dec 01
7
[RFC PATCH 0/5] stabilize kepler reclocking
this series solves different issues we encounter on kepler cards while reclocking: 1. core clock doesn't change at all and produces a volting error (patch 1) this can happen when the voltage table has only 0ed values in the header so we have to parse the entries itself, which contain the right voltages 2. kepler won't clock to highest cstates (patch 2) this happens, because there are
2016 Mar 21
28
[PATCH v2 00/22] Volting/Clocking improvements for Fermi and newer
This series fixes most of the issues regarding volting on GPUs with any form of GPU Boost inside their vbios, which is mainly Kepler and newer, but we find some boosting related tables in Fermi vbios' already In the end reclocking should work on most Kepler cards without any issues v2: boost_mode can now be changed at runtime minor fixups Karol Herbst (22): bios/volt: handle voltage
2016 Mar 21
0
[PATCH v2 16/22] volt: don't require perfect fit
...37 @@ static int nvkm_volt_set(struct nvkm_volt *volt, u32 uv) { struct nvkm_subdev *subdev = &volt->subdev; - int i, ret = -EINVAL; + int i, ret = -EINVAL, err, best = -1; if (volt->func->volt_set) return volt->func->volt_set(volt, uv); for (i = 0; i < volt->vid_nr; i++) { - if (volt->vid[i].uv == uv) { - ret = volt->func->vid_set(volt, volt->vid[i].vid); + if (i == 0) { + best = 0; + err = volt->vid[i].uv - uv; + } else { + int new_err = volt->vid[i].uv - uv; + if (abs(new_err) < abs(err) + || (err < 0 && ne...
2016 Apr 18
0
[PATCH v4 16/37] volt: don't require perfect fit
...ic int nvkm_volt_set(struct nvkm_volt *volt, u32 uv) { struct nvkm_subdev *subdev = &volt->subdev; - int i, ret = -EINVAL; + int i, ret = -EINVAL, best_err = uv, best = -1; if (volt->func->volt_set) return volt->func->volt_set(volt, uv); for (i = 0; i < volt->vid_nr; i++) { - if (volt->vid[i].uv == uv) { - ret = volt->func->vid_set(volt, volt->vid[i].vid); - nvkm_debug(subdev, "set %duv: %d\n", uv, ret); + int err = volt->vid[i].uv - uv; + if (err < 0 || err > best_err) + continue; + + best_err = err; + best = i; + if...