search for: nouveau_volt

Displaying 20 results from an estimated 21 matches for "nouveau_volt".

2014 Nov 28
2
[PATCH 1/2] volt: allow non-bios voltage scaling
...t/base.c | 67 ++++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/nvkm/subdev/volt/base.c b/nvkm/subdev/volt/base.c index 32794a999106..26ccd8df193f 100644 --- a/nvkm/subdev/volt/base.c +++ b/nvkm/subdev/volt/base.c @@ -101,6 +101,41 @@ nouveau_volt_set_id(struct nouveau_volt *volt, u8 id, int condition) return ret; } +static void nouveau_volt_parse_bios(struct nouveau_bios *bios, + struct nouveau_volt *volt) +{ + struct nvbios_volt_entry ivid; + struct nvbios_volt info; + u8 ver, hdr, cnt, len; + u16 data; + int i; + + data = nvbios_vo...
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 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
2014 Nov 28
2
[RESEND PATCH nouveau 3/3] volt: add support for GK20A
...break; > case 0xf0: > device->cname = "GK110"; > diff --git a/nvkm/include/subdev/volt.h b/nvkm/include/subdev/volt.h > index 820b62ffd75b..67db5e58880d 100644 > --- a/nvkm/include/subdev/volt.h > +++ b/nvkm/include/subdev/volt.h > @@ -52,6 +52,7 @@ int _nouveau_volt_init(struct nouveau_object *); > #define _nouveau_volt_fini _nouveau_subdev_fini > > extern struct nouveau_oclass nv40_volt_oclass; > +extern struct nouveau_oclass gk20a_volt_oclass; > > int nouveau_voltgpio_init(struct nouveau_volt *); > int nouveau_voltgpio_get(...
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
0
[PATCH 2/2] volt: add support for GK20A
...V_VOLT ] = &gk20a_volt_oclass; break; case 0xf0: device->cname = "GK110"; diff --git a/nvkm/include/subdev/volt.h b/nvkm/include/subdev/volt.h index 820b62ffd75b..67db5e58880d 100644 --- a/nvkm/include/subdev/volt.h +++ b/nvkm/include/subdev/volt.h @@ -52,6 +52,7 @@ int _nouveau_volt_init(struct nouveau_object *); #define _nouveau_volt_fini _nouveau_subdev_fini extern struct nouveau_oclass nv40_volt_oclass; +extern struct nouveau_oclass gk20a_volt_oclass; int nouveau_voltgpio_init(struct nouveau_volt *); int nouveau_voltgpio_get(struct nouveau_volt *); diff --git a/nvkm...
2014 Nov 28
0
[RESEND PATCH nouveau 3/3] volt: add support for GK20A
...V_VOLT ] = &gk20a_volt_oclass; break; case 0xf0: device->cname = "GK110"; diff --git a/nvkm/include/subdev/volt.h b/nvkm/include/subdev/volt.h index 820b62ffd75b..67db5e58880d 100644 --- a/nvkm/include/subdev/volt.h +++ b/nvkm/include/subdev/volt.h @@ -52,6 +52,7 @@ int _nouveau_volt_init(struct nouveau_object *); #define _nouveau_volt_fini _nouveau_subdev_fini extern struct nouveau_oclass nv40_volt_oclass; +extern struct nouveau_oclass gk20a_volt_oclass; int nouveau_voltgpio_init(struct nouveau_volt *); int nouveau_voltgpio_get(struct nouveau_volt *); diff --git a/nvkm...
2014 Nov 28
0
[RESEND PATCH nouveau 3/3] volt: add support for GK20A
...gt;> device->cname = "GK110"; >> diff --git a/nvkm/include/subdev/volt.h b/nvkm/include/subdev/volt.h >> index 820b62ffd75b..67db5e58880d 100644 >> --- a/nvkm/include/subdev/volt.h >> +++ b/nvkm/include/subdev/volt.h >> @@ -52,6 +52,7 @@ int _nouveau_volt_init(struct nouveau_object *); >> #define _nouveau_volt_fini _nouveau_subdev_fini >> extern struct nouveau_oclass nv40_volt_oclass; >> +extern struct nouveau_oclass gk20a_volt_oclass; >> int nouveau_voltgpio_init(struct nouveau_volt *); >> int nouveau_voltg...
2014 Nov 28
0
[RESEND PATCH nouveau 2/3] volt: allow non-bios voltage scaling
...t/base.c | 67 ++++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/nvkm/subdev/volt/base.c b/nvkm/subdev/volt/base.c index 32794a999106..26ccd8df193f 100644 --- a/nvkm/subdev/volt/base.c +++ b/nvkm/subdev/volt/base.c @@ -101,6 +101,41 @@ nouveau_volt_set_id(struct nouveau_volt *volt, u8 id, int condition) return ret; } +static void nouveau_volt_parse_bios(struct nouveau_bios *bios, + struct nouveau_volt *volt) +{ + struct nvbios_volt_entry ivid; + struct nvbios_volt info; + u8 ver, hdr, cnt, len; + u16 data; + int i; + + data = nvbios_vo...
2014 Nov 28
2
[RESEND PATCH nouveau 3/3] volt: add support for GK20A
...vice->cname = "GK110"; >>> diff --git a/nvkm/include/subdev/volt.h b/nvkm/include/subdev/volt.h >>> index 820b62ffd75b..67db5e58880d 100644 >>> --- a/nvkm/include/subdev/volt.h >>> +++ b/nvkm/include/subdev/volt.h >>> @@ -52,6 +52,7 @@ int _nouveau_volt_init(struct nouveau_object *); >>> #define _nouveau_volt_fini _nouveau_subdev_fini >>> extern struct nouveau_oclass nv40_volt_oclass; >>> +extern struct nouveau_oclass gk20a_volt_oclass; >>> int nouveau_voltgpio_init(struct nouveau_volt *); >>>...
2014 Nov 29
0
[RESEND PATCH nouveau 3/3] volt: add support for GK20A
...ot;GK110"; >>>> diff --git a/nvkm/include/subdev/volt.h b/nvkm/include/subdev/volt.h >>>> index 820b62ffd75b..67db5e58880d 100644 >>>> --- a/nvkm/include/subdev/volt.h >>>> +++ b/nvkm/include/subdev/volt.h >>>> @@ -52,6 +52,7 @@ int _nouveau_volt_init(struct nouveau_object *); >>>> #define _nouveau_volt_fini _nouveau_subdev_fini >>>> extern struct nouveau_oclass nv40_volt_oclass; >>>> +extern struct nouveau_oclass gk20a_volt_oclass; >>>> int nouveau_voltgpio_init(struct nouveau_volt...
2014 Jan 02
0
[PATCH] drm/nvc0-: Fix voltage obtained from vbios.
...(bios, vmap + 0x01); diff --git a/drivers/gpu/drm/nouveau/core/subdev/volt/base.c b/drivers/gpu/drm/nouveau/core/subdev/volt/base.c index 32794a999106..7bf716b048bd 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/volt/base.c +++ b/drivers/gpu/drm/nouveau/core/subdev/volt/base.c @@ -50,12 +50,23 @@ nouveau_volt_set(struct nouveau_volt *volt, u32 uv) { if (volt->vid_set) { int i, ret = -EINVAL; + u32 best_uv = INT_MAX, best_vid = 0; + for (i = 0; i < volt->vid_nr; i++) { - if (volt->vid[i].uv == uv) { - ret = volt->vid_set(volt, volt->vid[i].vid); - nv_debug(volt, "...
2014 Dec 18
2
[RFC PATCH 2/3] dvfs: add support for GK20A
...> + return nouveau_subdev_fini(&dvfs->base, suspend); > +} > + > +int > +_nouveau_dvfs_init(struct nouveau_object *object) > +{ > + struct nouveau_dvfs *dvfs = (void *)object; > + struct nouveau_clock *clk = nouveau_clock(object); > + struct nouveau_volt *volt = nouveau_volt(object); > + int ret; > + > + ret = nouveau_subdev_init(&dvfs->base); > + if (ret) > + return ret; > + > + if (!clk || !volt) > + return -EINVAL; > + > + nouveau_timer_alarm(dvfs, 200...
2014 Dec 18
3
[RFC PATCH 2/3] dvfs: add support for GK20A
...end); >>> +} >>> + >>> +int >>> +_nouveau_dvfs_init(struct nouveau_object *object) >>> +{ >>> + struct nouveau_dvfs *dvfs = (void *)object; >>> + struct nouveau_clock *clk = nouveau_clock(object); >>> + struct nouveau_volt *volt = nouveau_volt(object); >>> + int ret; >>> + >>> + ret = nouveau_subdev_init(&dvfs->base); >>> + if (ret) >>> + return ret; >>> + >>> + if (!clk || !volt) >>> + r...
2014 Dec 18
4
[RFC PATCH 0/3] introduce DVFS for GK20A
Hi, This is a try to have some simple DVFS (Dynamic Voltage and Frequency Scaling) support for GK20A. Instead of relying on other existing frequency scaling framework, we create a simple subdev in Nouveau for the same purpose. That's because we don't want to make the DVFS implementation for GK20A far more than enough in the beginning and hinder the implementation for dGPU in the future.
2014 Dec 18
0
[RFC PATCH 2/3] dvfs: add support for GK20A
...object; + + nouveau_timer_alarm_cancel(dvfs, &dvfs->alarm); + + return nouveau_subdev_fini(&dvfs->base, suspend); +} + +int +_nouveau_dvfs_init(struct nouveau_object *object) +{ + struct nouveau_dvfs *dvfs = (void *)object; + struct nouveau_clock *clk = nouveau_clock(object); + struct nouveau_volt *volt = nouveau_volt(object); + int ret; + + ret = nouveau_subdev_init(&dvfs->base); + if (ret) + return ret; + + if (!clk || !volt) + return -EINVAL; + + nouveau_timer_alarm(dvfs, 2000000000, &dvfs->alarm); + + return 0; +} + +void +_nouveau_dvfs_dtor(struct nouveau_object *object)...
2014 Dec 18
0
[RFC PATCH 2/3] dvfs: add support for GK20A
...ev_fini(&dvfs->base, suspend); >> +} >> + >> +int >> +_nouveau_dvfs_init(struct nouveau_object *object) >> +{ >> + struct nouveau_dvfs *dvfs = (void *)object; >> + struct nouveau_clock *clk = nouveau_clock(object); >> + struct nouveau_volt *volt = nouveau_volt(object); >> + int ret; >> + >> + ret = nouveau_subdev_init(&dvfs->base); >> + if (ret) >> + return ret; >> + >> + if (!clk || !volt) >> + return -EINVAL; >> + >&g...
2014 Dec 18
0
[RFC PATCH 2/3] dvfs: add support for GK20A
...t;>> + >>>> +int >>>> +_nouveau_dvfs_init(struct nouveau_object *object) >>>> +{ >>>> + struct nouveau_dvfs *dvfs = (void *)object; >>>> + struct nouveau_clock *clk = nouveau_clock(object); >>>> + struct nouveau_volt *volt = nouveau_volt(object); >>>> + int ret; >>>> + >>>> + ret = nouveau_subdev_init(&dvfs->base); >>>> + if (ret) >>>> + return ret; >>>> + >>>> + if (!clk || !volt) &g...
2014 Dec 22
7
[PATCH V2 1/4] clk: allow non-blocking for nouveau_clock_astate()
There might be some callers of nouveau_clock_astate(), and they are from inetrrupt context. So we must ensure that this function can be atomic in that condition. This patch adds one parameter which is subsequently passed to nouveau_pstate_calc(). Therefore we can choose whether we want to wait for the pstate work's completion or not. Signed-off-by: Vince Hsu <vinceh at nvidia.com> ---
2012 Apr 25
5
[PATCH v2 4/4] drm/nouveau: gpu lockup recovery
...nouveau_hw.o nouveau_calc.o nouveau_bios.o nouveau_i2c.o \ nouveau_display.o nouveau_connector.o nouveau_fbcon.o \ - nouveau_hdmi.o nouveau_dp.o nouveau_ramht.o \ + nouveau_hdmi.o nouveau_dp.o nouveau_ramht.o nouveau_reset.o \ nouveau_pm.o nouveau_volt.o nouveau_perf.o nouveau_temp.o \ nouveau_mm.o nouveau_vm.o nouveau_mxm.o nouveau_gpio.o \ nv04_timer.o \ diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c index 5b0dc50..7de6cad 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bo.c +++ b/driv...