Martin Peres
2014-Aug-17 15:33 UTC
[Nouveau] [PATCH 01/10] bios/fan: add support for maxwell's fan management table v2
Re-use the therm-exported fan structure with only two minor modifications: - pwm_freq: u16 -> u32; - add fan_type (toggle or PWM) v2: - Do not memset the table to 0 as it erases the pre-set default values Signed-off-by: Martin Peres <martin.peres at free.fr> --- drm/Kbuild | 1 + drm/core/include/subdev/bios/fan.h | 1 + drm/core/subdev/bios/fan.c | 1 + nvkm/include/subdev/bios/fan.h | 8 ++++ nvkm/include/subdev/bios/therm.h | 10 +++- nvkm/subdev/bios/Makefile.am | 3 +- nvkm/subdev/bios/fan.c | 93 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 115 insertions(+), 2 deletions(-) create mode 120000 drm/core/include/subdev/bios/fan.h create mode 120000 drm/core/subdev/bios/fan.c create mode 100644 nvkm/include/subdev/bios/fan.h create mode 100644 nvkm/subdev/bios/fan.c diff --git a/drm/Kbuild b/drm/Kbuild index f5d7f7c..75aa5e3 100644 --- a/drm/Kbuild +++ b/drm/Kbuild @@ -52,6 +52,7 @@ nouveau-y += core/subdev/bios/vmap.o nouveau-y += core/subdev/bios/volt.o nouveau-y += core/subdev/bios/xpio.o nouveau-y += core/subdev/bios/P0260.o +nouveau-y += core/subdev/bios/fan.o nouveau-y += core/subdev/bus/hwsq.o nouveau-y += core/subdev/bus/nv04.o nouveau-y += core/subdev/bus/nv31.o diff --git a/drm/core/include/subdev/bios/fan.h b/drm/core/include/subdev/bios/fan.h new file mode 120000 index 0000000..b56c338 --- /dev/null +++ b/drm/core/include/subdev/bios/fan.h @@ -0,0 +1 @@ +../../../../../nvkm/include/subdev/bios/fan.h \ No newline at end of file diff --git a/drm/core/subdev/bios/fan.c b/drm/core/subdev/bios/fan.c new file mode 120000 index 0000000..fe14fa4 --- /dev/null +++ b/drm/core/subdev/bios/fan.c @@ -0,0 +1 @@ +../../../../nvkm/subdev/bios/fan.c \ No newline at end of file diff --git a/nvkm/include/subdev/bios/fan.h b/nvkm/include/subdev/bios/fan.h new file mode 100644 index 0000000..119d087 --- /dev/null +++ b/nvkm/include/subdev/bios/fan.h @@ -0,0 +1,8 @@ +#ifndef __NVBIOS_FAN_H__ +#define __NVBIOS_FAN_H__ + +#include <subdev/bios/therm.h> + +u16 nvbios_fan_parse(struct nouveau_bios *bios, struct nvbios_therm_fan *fan); + +#endif diff --git a/nvkm/include/subdev/bios/therm.h b/nvkm/include/subdev/bios/therm.h index 8dc5051..295d093 100644 --- a/nvkm/include/subdev/bios/therm.h +++ b/nvkm/include/subdev/bios/therm.h @@ -23,6 +23,12 @@ struct nvbios_therm_sensor { struct nvbios_therm_threshold thrs_shutdown; }; +enum nvbios_therm_fan_type { + NVBIOS_THERM_FAN_UNK = 0, + NVBIOS_THERM_FAN_TOGGLE = 1, + NVBIOS_THERM_FAN_PWM = 2, +}; + /* no vbios have more than 6 */ #define NOUVEAU_TEMP_FAN_TRIP_MAX 10 struct nouveau_therm_trip_point { @@ -38,7 +44,9 @@ enum nvbios_therm_fan_mode { }; struct nvbios_therm_fan { - u16 pwm_freq; + enum nvbios_therm_fan_type type; + + u32 pwm_freq; u8 min_duty; u8 max_duty; diff --git a/nvkm/subdev/bios/Makefile.am b/nvkm/subdev/bios/Makefile.am index 120b941..3ad1daf 100644 --- a/nvkm/subdev/bios/Makefile.am +++ b/nvkm/subdev/bios/Makefile.am @@ -22,6 +22,7 @@ libbios_la_SOURCES = base.c \ vmap.c \ volt.c \ xpio.c \ - P0260.c + P0260.c \ + fan.c include $(srcdir)/../Makefile.subdev diff --git a/nvkm/subdev/bios/fan.c b/nvkm/subdev/bios/fan.c new file mode 100644 index 0000000..e419892 --- /dev/null +++ b/nvkm/subdev/bios/fan.c @@ -0,0 +1,93 @@ +/* + * Copyright 2014 Martin Peres + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: Martin Peres + */ + +#include <subdev/bios.h> +#include <subdev/bios/bit.h> +#include <subdev/bios/fan.h> + +u16 +nvbios_fan_table(struct nouveau_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len) +{ + struct bit_entry bit_P; + u16 fan = 0x0000; + + if (!bit_entry(bios, 'P', &bit_P)) { + if (bit_P.version == 2 && bit_P.length >= 0x5a) + fan = nv_ro16(bios, bit_P.offset + 0x58); + + if (fan) { + *ver = nv_ro08(bios, fan + 0); + switch (*ver) { + case 0x10: + *hdr = nv_ro08(bios, fan + 1); + *len = nv_ro08(bios, fan + 2); + *cnt = nv_ro08(bios, fan + 3); + return fan; + default: + break; + } + } + } + + return 0x0000; +} + +u16 +nvbios_fan_entry(struct nouveau_bios *bios, int idx, u8 *ver, u8 *hdr, + u8 *cnt, u8 *len) +{ + u16 data = nvbios_fan_table(bios, ver, hdr, cnt, len); + if (data && idx < *cnt) + return data + *hdr + (idx * (*len)); + return 0x0000; +} + +u16 +nvbios_fan_parse(struct nouveau_bios *bios, struct nvbios_therm_fan *fan) +{ + u8 ver, hdr, cnt, len; + + u16 data = nvbios_fan_entry(bios, 0, &ver, &hdr, &cnt, &len); + if (data) { + u8 type = nv_ro08(bios, data + 0x00); + switch (type) { + case 0: + fan->type = NVBIOS_THERM_FAN_TOGGLE; + break; + case 1: + case 2: + /* TODO: Understand the difference between the two! */ + fan->type = NVBIOS_THERM_FAN_PWM; + break; + default: + fan->type = NVBIOS_THERM_FAN_UNK; + } + + fan->min_duty = nv_ro08(bios, data + 0x02); + fan->max_duty = nv_ro08(bios, data + 0x03); + + fan->pwm_freq = nv_ro32(bios, data + 0x0b) & 0xffffff; + } + return data; +} -- 2.0.0
Martin Peres
2014-Aug-17 15:33 UTC
[Nouveau] [PATCH 02/10] therm/fan: do not use the pwm mode when the vbios tells us to use the toggle
Signed-off-by: Martin Peres <martin.peres at free.fr> --- nvkm/subdev/therm/fanpwm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/nvkm/subdev/therm/fanpwm.c b/nvkm/subdev/therm/fanpwm.c index 9a5c073..c629d7f 100644 --- a/nvkm/subdev/therm/fanpwm.c +++ b/nvkm/subdev/therm/fanpwm.c @@ -25,6 +25,8 @@ #include <core/option.h> #include <subdev/gpio.h> +#include <subdev/bios.h> +#include <subdev/bios/fan.h> #include "priv.h" @@ -86,11 +88,15 @@ nouveau_fanpwm_create(struct nouveau_therm *therm, struct dcb_gpio_func *func) { struct nouveau_device *device = nv_device(therm); struct nouveau_therm_priv *tpriv = (void *)therm; + struct nouveau_bios *bios = nouveau_bios(therm); struct nouveau_fanpwm_priv *priv; + struct nvbios_therm_fan fan; u32 divs, duty; + nvbios_fan_parse(bios, &fan); + if (!nouveau_boolopt(device->cfgopt, "NvFanPWM", func->param) || - !therm->pwm_ctrl || + !therm->pwm_ctrl || fan.type == NVBIOS_THERM_FAN_TOGGLE || therm->pwm_get(therm, func->line, &divs, &duty) == -ENODEV) return -ENODEV; -- 2.0.0
Martin Peres
2014-Aug-17 15:33 UTC
[Nouveau] [PATCH 03/10] gm107/therm: add PWM fan support v2
v2: change the copyright ownership from "Nouveau Community" to myself, as per Illia's recommendation. Signed-off-by: Martin Peres <martin.peres at free.fr> --- drm/Kbuild | 1 + drm/core/subdev/therm/gm107.c | 1 + nvkm/engine/device/gm100.c | 4 +- nvkm/include/subdev/therm.h | 1 + nvkm/subdev/therm/Makefile.am | 3 +- nvkm/subdev/therm/fan.c | 9 ++++- nvkm/subdev/therm/gm107.c | 93 +++++++++++++++++++++++++++++++++++++++++++ nvkm/subdev/therm/nvd0.c | 2 +- nvkm/subdev/therm/priv.h | 2 + 9 files changed, 109 insertions(+), 7 deletions(-) create mode 120000 drm/core/subdev/therm/gm107.c create mode 100644 nvkm/subdev/therm/gm107.c diff --git a/drm/Kbuild b/drm/Kbuild index 75aa5e3..c663181 100644 --- a/drm/Kbuild +++ b/drm/Kbuild @@ -191,6 +191,7 @@ nouveau-y += core/subdev/therm/nv50.o nouveau-y += core/subdev/therm/nv84.o nouveau-y += core/subdev/therm/nva3.o nouveau-y += core/subdev/therm/nvd0.o +nouveau-y += core/subdev/therm/gm107.o nouveau-y += core/subdev/timer/base.o nouveau-y += core/subdev/timer/nv04.o nouveau-y += core/subdev/timer/gk20a.o diff --git a/drm/core/subdev/therm/gm107.c b/drm/core/subdev/therm/gm107.c new file mode 120000 index 0000000..aafc986 --- /dev/null +++ b/drm/core/subdev/therm/gm107.c @@ -0,0 +1 @@ +../../../../nvkm/subdev/therm/gm107.c \ No newline at end of file diff --git a/nvkm/engine/device/gm100.c b/nvkm/engine/device/gm100.c index 377ec0b..136dd98 100644 --- a/nvkm/engine/device/gm100.c +++ b/nvkm/engine/device/gm100.c @@ -63,9 +63,7 @@ gm100_identify(struct nouveau_device *device) device->oclass[NVDEV_SUBDEV_GPIO ] = nve0_gpio_oclass; device->oclass[NVDEV_SUBDEV_I2C ] = nvd0_i2c_oclass; device->oclass[NVDEV_SUBDEV_CLOCK ] = &nve0_clock_oclass; -#if 0 - device->oclass[NVDEV_SUBDEV_THERM ] = &nvd0_therm_oclass; -#endif + device->oclass[NVDEV_SUBDEV_THERM ] = &gm107_therm_oclass; device->oclass[NVDEV_SUBDEV_MXM ] = &nv50_mxm_oclass; device->oclass[NVDEV_SUBDEV_DEVINIT] = gm107_devinit_oclass; device->oclass[NVDEV_SUBDEV_MC ] = gk20a_mc_oclass; diff --git a/nvkm/include/subdev/therm.h b/nvkm/include/subdev/therm.h index d4a6817..a437597 100644 --- a/nvkm/include/subdev/therm.h +++ b/nvkm/include/subdev/therm.h @@ -78,5 +78,6 @@ extern struct nouveau_oclass nv50_therm_oclass; extern struct nouveau_oclass nv84_therm_oclass; extern struct nouveau_oclass nva3_therm_oclass; extern struct nouveau_oclass nvd0_therm_oclass; +extern struct nouveau_oclass gm107_therm_oclass; #endif diff --git a/nvkm/subdev/therm/Makefile.am b/nvkm/subdev/therm/Makefile.am index 460e4a0..b4f6da6 100644 --- a/nvkm/subdev/therm/Makefile.am +++ b/nvkm/subdev/therm/Makefile.am @@ -11,6 +11,7 @@ libtherm_la_SOURCES = base.c \ nv50.c \ nv84.c \ nva3.c \ - nvd0.c + nvd0.c \ + gm107.c include $(srcdir)/../Makefile.subdev diff --git a/nvkm/subdev/therm/fan.c b/nvkm/subdev/therm/fan.c index 016990a..402c9be 100644 --- a/nvkm/subdev/therm/fan.c +++ b/nvkm/subdev/therm/fan.c @@ -31,6 +31,8 @@ #include <subdev/gpio.h> #include <subdev/timer.h> +#include <subdev/bios/fan.h> + static int nouveau_fan_update(struct nouveau_fan *fan, bool immediate, int target) { @@ -275,8 +277,11 @@ nouveau_therm_fan_ctor(struct nouveau_therm *therm) /* other random init... */ nouveau_therm_fan_set_defaults(therm); nvbios_perf_fan_parse(bios, &priv->fan->perf); - if (nvbios_therm_fan_parse(bios, &priv->fan->bios)) - nv_error(therm, "parsing the thermal table failed\n"); + if (nvbios_fan_parse(bios, &priv->fan->bios)) { + nv_debug(therm, "parsing the fan table failed\n"); + if (nvbios_therm_fan_parse(bios, &priv->fan->bios)) + nv_error(therm, "parsing both fan tables failed\n"); + } nouveau_therm_fan_safety_checks(therm); return 0; } diff --git a/nvkm/subdev/therm/gm107.c b/nvkm/subdev/therm/gm107.c new file mode 100644 index 0000000..2c58733 --- /dev/null +++ b/nvkm/subdev/therm/gm107.c @@ -0,0 +1,93 @@ +/* + * Copyright 2014 Martin Peres + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: Martin Peres, Ben Skeggs + */ + +#include "priv.h" + +struct gm107_therm_priv { + struct nouveau_therm_priv base; +}; + +static int +gm107_fan_pwm_ctrl(struct nouveau_therm *therm, int line, bool enable) +{ + /* nothing to do, it seems hardwired */ + return 0; +} + +static int +gm107_fan_pwm_get(struct nouveau_therm *therm, int line, u32 *divs, u32 *duty) +{ + *divs = nv_rd32(therm, 0x10eb20) & 0x1fff; + *duty = nv_rd32(therm, 0x10eb24) & 0x1fff; + return 0; +} + +static int +gm107_fan_pwm_set(struct nouveau_therm *therm, int line, u32 divs, u32 duty) +{ + nv_mask(therm, 0x10eb10, 0x1fff, divs); /* keep the high bits */ + nv_wr32(therm, 0x10eb14, duty | 0x80000000); + return 0; +} + +static int +gm107_fan_pwm_clock(struct nouveau_therm *therm, int line) +{ + return nv_device(therm)->crystal * 1000; +} + +static int +gm107_therm_ctor(struct nouveau_object *parent, + struct nouveau_object *engine, + struct nouveau_oclass *oclass, void *data, u32 size, + struct nouveau_object **pobject) +{ + struct gm107_therm_priv *priv; + int ret; + + ret = nouveau_therm_create(parent, engine, oclass, &priv); + *pobject = nv_object(priv); + if (ret) + return ret; + + priv->base.base.pwm_ctrl = gm107_fan_pwm_ctrl; + priv->base.base.pwm_get = gm107_fan_pwm_get; + priv->base.base.pwm_set = gm107_fan_pwm_set; + priv->base.base.pwm_clock = gm107_fan_pwm_clock; + priv->base.base.temp_get = nv84_temp_get; + priv->base.base.fan_sense = nva3_therm_fan_sense; + priv->base.sensor.program_alarms = nouveau_therm_program_alarms_polling; + return nouveau_therm_preinit(&priv->base.base); +} + +struct nouveau_oclass +gm107_therm_oclass = { + .handle = NV_SUBDEV(THERM, 0x117), + .ofuncs = &(struct nouveau_ofuncs) { + .ctor = gm107_therm_ctor, + .dtor = _nouveau_therm_dtor, + .init = nvd0_therm_init, + .fini = nv84_therm_fini, + }, +}; diff --git a/nvkm/subdev/therm/nvd0.c b/nvkm/subdev/therm/nvd0.c index bbf117b..04bb84f 100644 --- a/nvkm/subdev/therm/nvd0.c +++ b/nvkm/subdev/therm/nvd0.c @@ -114,7 +114,7 @@ nvd0_fan_pwm_clock(struct nouveau_therm *therm, int line) return nv_device(therm)->crystal * 1000 / 10; } -static int +int nvd0_therm_init(struct nouveau_object *object) { struct nvd0_therm_priv *priv = (void *)object; diff --git a/nvkm/subdev/therm/priv.h b/nvkm/subdev/therm/priv.h index 916fca5..4262d1d 100644 --- a/nvkm/subdev/therm/priv.h +++ b/nvkm/subdev/therm/priv.h @@ -149,6 +149,8 @@ int nv84_therm_fini(struct nouveau_object *object, bool suspend); int nva3_therm_fan_sense(struct nouveau_therm *); +int nvd0_therm_init(struct nouveau_object *object); + int nouveau_fanpwm_create(struct nouveau_therm *, struct dcb_gpio_func *); int nouveau_fantog_create(struct nouveau_therm *, struct dcb_gpio_func *); int nouveau_fannil_create(struct nouveau_therm *); -- 2.0.0
For some reason, it is now required to wait a 20 ?s after the 0x200 reset of the engine. Signed-off-by: Martin Peres <martin.peres at free.fr> --- nvkm/engine/device/gm100.c | 3 ++- nvkm/subdev/pwr/base.c | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/nvkm/engine/device/gm100.c b/nvkm/engine/device/gm100.c index 136dd98..9e9f567 100644 --- a/nvkm/engine/device/gm100.c +++ b/nvkm/engine/device/gm100.c @@ -75,8 +75,9 @@ gm100_identify(struct nouveau_device *device) device->oclass[NVDEV_SUBDEV_INSTMEM] = nv50_instmem_oclass; device->oclass[NVDEV_SUBDEV_VM ] = &nvc0_vmmgr_oclass; device->oclass[NVDEV_SUBDEV_BAR ] = &nvc0_bar_oclass; -#if 0 device->oclass[NVDEV_SUBDEV_PWR ] = nv108_pwr_oclass; + +#if 0 device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; #endif device->oclass[NVDEV_ENGINE_DMAOBJ ] = nvd0_dmaeng_oclass; diff --git a/nvkm/subdev/pwr/base.c b/nvkm/subdev/pwr/base.c index 69f1f34..477c9a2 100644 --- a/nvkm/subdev/pwr/base.c +++ b/nvkm/subdev/pwr/base.c @@ -204,6 +204,9 @@ _nouveau_pwr_init(struct nouveau_object *object) nv_mask(ppwr, 0x000200, 0x00002000, 0x00000000); nv_mask(ppwr, 0x000200, 0x00002000, 0x00002000); + /* At least one GM107 needs this delay after reset */ + udelay(20); + /* upload data segment */ nv_wr32(ppwr, 0x10a1c0, 0x01000000); for (i = 0; i < impl->data.size / 4; i++) -- 2.0.0
Martin Peres
2014-Aug-17 15:33 UTC
[Nouveau] [PATCH 05/10] pwr: fix the timers implementation with concurent processes
From: Martin Peres <martin.peres at labri.fr> The problem with the current implementation is that adding a timer improperly checked which process would time up first by not taking into account how much time elapsed since their timer got scheduled. Rework the re-scheduling decision t fix this. The catch with this fix is that we are limited to scheduling timers of up to 2^31 ticks to avoid any potential overflow. Since we are unlikely to need to wait for more than a second, this won't be a problem :) Another possible fix would be to decrement the timeouts of all processes but it would duplicate a lot of code and dealing with edge cases wasn't pretty last time I checked. Signed-off-by: Martin Peres <martin.peres at free.fr> --- nvkm/subdev/pwr/fuc/kernel.fuc | 35 +- nvkm/subdev/pwr/fuc/nv108.fuc.h | 308 ++++++------ nvkm/subdev/pwr/fuc/nva3.fuc.h | 364 ++++++++------ nvkm/subdev/pwr/fuc/nvc0.fuc.h | 364 ++++++++------ nvkm/subdev/pwr/fuc/nvd0.fuc.h | 1052 +++++++++++++++++++-------------------- 5 files changed, 1133 insertions(+), 990 deletions(-) diff --git a/nvkm/subdev/pwr/fuc/kernel.fuc b/nvkm/subdev/pwr/fuc/kernel.fuc index 8f29bad..dd86439 100644 --- a/nvkm/subdev/pwr/fuc/kernel.fuc +++ b/nvkm/subdev/pwr/fuc/kernel.fuc @@ -245,9 +245,12 @@ intr: // request the current process be sent a message after a timeout expires // // $r15 - current -// $r14 - ticks +// $r14 - ticks (make sure it is < 2^31 to avoid any possible overflow) // $r0 - zero timer: + push $r9 + push $r8 + // interrupts off to prevent racing with timer isr bclr $flags ie0 @@ -255,13 +258,22 @@ timer: ld b32 $r8 D[$r15 + #proc_time] cmp b32 $r8 0 bra g #timer_done - st b32 D[$r15 + #proc_time] $r14 - // halt watchdog timer temporarily and check for a pending - // interrupt. if there's one already pending, we can just - // bail since the timer isr will queue the next soonest - // right after it's done + // halt watchdog timer temporarily + clear b32 $r8 nv_iowr(NV_PPWR_WATCHDOG_ENABLE, $r8) + + // find out how much time elapsed since the last update + // of the watchdog and add this time to the wanted ticks + nv_iord($r8, NV_PPWR_WATCHDOG_TIME) + ld b32 $r9 D[$r0 + #time_prev] + sub b32 $r9 $r8 + add b32 $r14 $r9 + st b32 D[$r15 + #proc_time] $r14 + + // check for a pending interrupt. if there's one already + // pending, we can just bail since the timer isr will + // queue the next soonest right after it's done nv_iord($r8, NV_PPWR_INTR) and $r8 NV_PPWR_INTR_WATCHDOG bra nz #timer_enable @@ -272,10 +284,10 @@ timer: cmp b32 $r14 $r0 bra e #timer_reset cmp b32 $r14 $r8 - bra l #timer_done - timer_reset: - nv_iowr(NV_PPWR_WATCHDOG_TIME, $r14) - st b32 D[$r0 + #time_prev] $r14 + bra g #timer_enable + timer_reset: + nv_iowr(NV_PPWR_WATCHDOG_TIME, $r14) + st b32 D[$r0 + #time_prev] $r14 // re-enable the watchdog timer timer_enable: @@ -285,6 +297,9 @@ timer: // interrupts back on timer_done: bset $flags ie0 + + pop $r8 + pop $r9 ret // send message to another process diff --git a/nvkm/subdev/pwr/fuc/nv108.fuc.h b/nvkm/subdev/pwr/fuc/nv108.fuc.h index 986495d..38b8ed4 100644 --- a/nvkm/subdev/pwr/fuc/nv108.fuc.h +++ b/nvkm/subdev/pwr/fuc/nv108.fuc.h @@ -24,8 +24,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x00000379, - 0x0000032a, + 0x00000391, + 0x00000342, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x00000464, - 0x00000456, + 0x0000047c, + 0x0000046e, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000468, - 0x00000466, + 0x00000480, + 0x0000047e, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x0000086c, - 0x00000713, + 0x00000884, + 0x0000072b, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x0000088d, - 0x0000086e, + 0x000008a5, + 0x00000886, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000898, - 0x00000896, + 0x000008b0, + 0x000008ae, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nv108_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x000003a9, + 0x000003c1, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x000003c7, + 0x000003df, 0x00000002, 0x00000002, - 0x000003df, + 0x000003f7, 0x00040003, 0x00000000, - 0x000003fc, + 0x00000414, 0x00010004, 0x00000000, - 0x00000416, + 0x0000042e, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -784,7 +784,7 @@ uint32_t nv108_pwr_data[] = { }; uint32_t nv108_pwr_code[] = { - 0x02910ef5, + 0x02a90ef5, /* 0x0004: rd32 */ 0xf607a040, 0x04bd000e, @@ -836,7 +836,7 @@ uint32_t nv108_pwr_code[] = { 0x0a98280b, 0x029abb9a, 0x0d0e1cf4, - 0x01de7e01, + 0x01f67e01, 0xf494bd00, /* 0x00b2: intr_watchdog_next_time */ 0x0a98140e, @@ -881,7 +881,7 @@ uint32_t nv108_pwr_code[] = { 0xc0f900cc, 0xf14f484e, 0x0d5453e3, - 0x023f7e00, + 0x02577e00, 0x40c0fc00, 0x0cf604c0, /* 0x0157: intr_subintr_skip_fifo */ @@ -905,28 +905,34 @@ uint32_t nv108_pwr_code[] = { 0xfc80fc90, 0x0032f400, /* 0x0196: timer */ - 0x32f401f8, + 0x90f901f8, + 0x32f480f9, 0x03f89810, 0xf40086b0, - 0xfeb53a1c, - 0xf6380003, - 0x04bd0008, + 0x84bd4a1c, + 0x08f63800, + 0x0804bd00, + 0x0088cf34, + 0xbb9a0998, + 0xe9bb0298, + 0x03feb500, 0x88cf0808, 0x0284f000, 0x081c1bf4, 0x0088cf34, 0x0bf4e0a6, 0xf4e8a608, -/* 0x01c6: timer_reset */ - 0x3400161e, +/* 0x01da: timer_reset */ + 0x34000d1c, 0xbd000ef6, 0x9a0eb504, -/* 0x01d0: timer_enable */ +/* 0x01e4: timer_enable */ 0x38000108, 0xbd0008f6, -/* 0x01d9: timer_done */ +/* 0x01ed: timer_done */ 0x1031f404, -/* 0x01de: send_proc */ + 0x90fc80fc, +/* 0x01f6: send_proc */ 0x80f900f8, 0xe89890f9, 0x04e99805, @@ -941,25 +947,25 @@ uint32_t nv108_pwr_code[] = { 0xb6038bb5, 0x94f00190, 0x04e9b507, -/* 0x0217: send_done */ +/* 0x022f: send_done */ 0xfc0231f4, 0xf880fc90, -/* 0x021d: find */ +/* 0x0235: find */ 0x0880f900, 0x0131f458, -/* 0x0224: find_loop */ +/* 0x023c: find_loop */ 0xa6008a98, 0x100bf4ae, 0xb15880b6, 0xf4026886, 0x32f4f11b, -/* 0x0239: find_done */ +/* 0x0251: find_done */ 0xfc8eb201, -/* 0x023f: send */ +/* 0x0257: send */ 0x7e00f880, - 0xf400021d, + 0xf4000235, 0x00f89b01, -/* 0x0248: recv */ +/* 0x0260: recv */ 0x9805e898, 0x32f404e9, 0xf489a601, @@ -977,9 +983,9 @@ uint32_t nv108_pwr_code[] = { 0xf900ee98, 0xfef0fca5, 0x31f400f8, -/* 0x028f: recv_done */ +/* 0x02a7: recv_done */ 0xf8f0fc01, -/* 0x0291: init */ +/* 0x02a9: init */ 0x01084100, 0xe70011cf, 0xb6010911, @@ -998,13 +1004,13 @@ uint32_t nv108_pwr_code[] = { 0x1031f400, 0x38000101, 0xbd0001f6, -/* 0x02db: init_proc */ +/* 0x02f3: init_proc */ 0x98580f04, 0x16b001f1, 0xfa0bf400, 0xf0b615f9, 0xf20ef458, -/* 0x02ec: host_send */ +/* 0x0304: host_send */ 0xcf04b041, 0xa0420011, 0x0022cf04, @@ -1015,17 +1021,17 @@ uint32_t nv108_pwr_code[] = { 0xec9803eb, 0x01ed9802, 0x7e00ee98, - 0xb600023f, + 0xb6000257, 0x1ec40110, 0x04b0400f, 0xbd000ef6, 0xc70ef404, -/* 0x0328: host_send_done */ -/* 0x032a: host_recv */ +/* 0x0340: host_send_done */ +/* 0x0342: host_recv */ 0x494100f8, 0x5413f14e, 0xf4e1a652, -/* 0x0336: host_recv_wait */ +/* 0x034e: host_recv_wait */ 0xcc41b90b, 0x0011cf04, 0xcf04c842, @@ -1043,7 +1049,7 @@ uint32_t nv108_pwr_code[] = { 0x400204bd, 0x02f60000, 0xf804bd00, -/* 0x0379: host_init */ +/* 0x0391: host_init */ 0x00804100, 0xf11014b6, 0x40027015, @@ -1056,24 +1062,24 @@ uint32_t nv108_pwr_code[] = { 0x40010104, 0x01f604c4, 0xf804bd00, -/* 0x03a9: memx_func_enter */ +/* 0x03c1: memx_func_enter */ 0x40040600, 0x06f607e0, -/* 0x03b3: memx_func_enter_wait */ +/* 0x03cb: memx_func_enter_wait */ 0x4604bd00, 0x66cf07c0, 0x0464f000, 0x98f70bf4, 0x10b60016, -/* 0x03c7: memx_func_leave */ +/* 0x03df: memx_func_leave */ 0x0600f804, 0x07e44004, 0xbd0006f6, -/* 0x03d1: memx_func_leave_wait */ +/* 0x03e9: memx_func_leave_wait */ 0x07c04604, 0xf00066cf, 0x1bf40464, -/* 0x03df: memx_func_wr32 */ +/* 0x03f7: memx_func_wr32 */ 0x9800f8f7, 0x15980016, 0x0810b601, @@ -1082,21 +1088,21 @@ uint32_t nv108_pwr_code[] = { 0x00002e7e, 0xf40242b6, 0x00f8e81b, -/* 0x03fc: memx_func_wait */ +/* 0x0414: memx_func_wait */ 0x88cf2c08, 0x001e9800, 0x98011d98, 0x1b98021c, 0x1010b603, 0x0000717e, -/* 0x0416: memx_func_delay */ +/* 0x042e: memx_func_delay */ 0x1e9800f8, 0x0410b600, 0x00005d7e, -/* 0x0422: memx_exec */ +/* 0x043a: memx_exec */ 0xe0f900f8, 0xc1b2d0f9, -/* 0x042a: memx_exec_next */ +/* 0x0442: memx_exec_next */ 0x1398b2b2, 0x0410b600, 0xf0103495, @@ -1104,104 +1110,104 @@ uint32_t nv108_pwr_code[] = { 0xa655f9de, 0xed1ef412, 0xe0fcd0fc, - 0x00023f7e, -/* 0x044a: memx_info */ + 0x0002577e, +/* 0x0462: memx_info */ 0xac4c00f8, 0x08004b03, - 0x00023f7e, -/* 0x0456: memx_recv */ + 0x0002577e, +/* 0x046e: memx_recv */ 0xd6b000f8, 0xc90bf401, 0xf400d6b0, 0x00f8eb0b, -/* 0x0464: memx_init */ -/* 0x0466: perf_recv */ +/* 0x047c: memx_init */ +/* 0x047e: perf_recv */ 0x00f800f8, -/* 0x0468: perf_init */ -/* 0x046a: i2c_drive_scl */ +/* 0x0480: perf_init */ +/* 0x0482: i2c_drive_scl */ 0x36b000f8, 0x0d0bf400, 0xf607e040, 0x04bd0001, -/* 0x047a: i2c_drive_scl_lo */ +/* 0x0492: i2c_drive_scl_lo */ 0xe44000f8, 0x0001f607, 0x00f804bd, -/* 0x0484: i2c_drive_sda */ +/* 0x049c: i2c_drive_sda */ 0xf40036b0, 0xe0400d0b, 0x0002f607, 0x00f804bd, -/* 0x0494: i2c_drive_sda_lo */ +/* 0x04ac: i2c_drive_sda_lo */ 0xf607e440, 0x04bd0002, -/* 0x049e: i2c_sense_scl */ +/* 0x04b6: i2c_sense_scl */ 0x32f400f8, 0x07c44301, 0xfd0033cf, 0x0bf40431, 0x0131f406, -/* 0x04b0: i2c_sense_scl_done */ -/* 0x04b2: i2c_sense_sda */ +/* 0x04c8: i2c_sense_scl_done */ +/* 0x04ca: i2c_sense_sda */ 0x32f400f8, 0x07c44301, 0xfd0033cf, 0x0bf40432, 0x0131f406, -/* 0x04c4: i2c_sense_sda_done */ -/* 0x04c6: i2c_raise_scl */ +/* 0x04dc: i2c_sense_sda_done */ +/* 0x04de: i2c_raise_scl */ 0x40f900f8, 0x03089844, - 0x046a7e01, -/* 0x04d1: i2c_raise_scl_wait */ + 0x04827e01, +/* 0x04e9: i2c_raise_scl_wait */ 0x03e84e00, 0x00005d7e, - 0x00049e7e, + 0x0004b67e, 0xb60901f4, 0x1bf40142, -/* 0x04e5: i2c_raise_scl_done */ +/* 0x04fd: i2c_raise_scl_done */ 0xf840fcef, -/* 0x04e9: i2c_start */ - 0x049e7e00, +/* 0x0501: i2c_start */ + 0x04b67e00, 0x0d11f400, - 0x0004b27e, + 0x0004ca7e, 0xf40611f4, -/* 0x04fa: i2c_start_rep */ +/* 0x0512: i2c_start_rep */ 0x00032e0e, - 0x00046a7e, - 0x847e0103, + 0x0004827e, + 0x9c7e0103, 0x76bb0004, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb60004c6, + 0xb60004de, 0x11f40464, -/* 0x0525: i2c_start_send */ +/* 0x053d: i2c_start_send */ 0x7e00031d, - 0x4e000484, + 0x4e00049c, 0x5d7e1388, 0x00030000, - 0x00046a7e, + 0x0004827e, 0x7e13884e, -/* 0x053f: i2c_start_out */ +/* 0x0557: i2c_start_out */ 0xf800005d, -/* 0x0541: i2c_stop */ +/* 0x0559: i2c_stop */ 0x7e000300, - 0x0300046a, - 0x04847e00, + 0x03000482, + 0x049c7e00, 0x03e84e00, 0x00005d7e, - 0x6a7e0103, + 0x827e0103, 0x884e0004, 0x005d7e13, 0x7e010300, - 0x4e000484, + 0x4e00049c, 0x5d7e1388, 0x00f80000, -/* 0x0570: i2c_bitw */ - 0x0004847e, +/* 0x0588: i2c_bitw */ + 0x00049c7e, 0x7e03e84e, 0xbb00005d, 0x65b60076, @@ -1209,17 +1215,17 @@ uint32_t nv108_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0004c67e, + 0x0004de7e, 0xf40464b6, 0x884e1711, 0x005d7e13, 0x7e000300, - 0x4e00046a, + 0x4e000482, 0x5d7e1388, -/* 0x05ae: i2c_bitw_out */ +/* 0x05c6: i2c_bitw_out */ 0x00f80000, -/* 0x05b0: i2c_bitr */ - 0x847e0103, +/* 0x05c8: i2c_bitr */ + 0x9c7e0103, 0xe84e0004, 0x005d7e03, 0x0076bb00, @@ -1227,26 +1233,26 @@ uint32_t nv108_pwr_code[] = { 0x04659450, 0xbd0256bb, 0x0475fd50, - 0xc67e50fc, + 0xde7e50fc, 0x64b60004, 0x1a11f404, - 0x0004b27e, - 0x6a7e0003, + 0x0004ca7e, + 0x827e0003, 0x884e0004, 0x005d7e13, 0x013cf000, -/* 0x05f3: i2c_bitr_done */ +/* 0x060b: i2c_bitr_done */ 0xf80131f4, -/* 0x05f5: i2c_get_byte */ +/* 0x060d: i2c_get_byte */ 0x04000500, -/* 0x05f9: i2c_get_byte_next */ +/* 0x0611: i2c_get_byte_next */ 0x0154b608, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x05b07e50, + 0x05c87e50, 0x0464b600, 0xfd2a11f4, 0x42b60553, @@ -1257,11 +1263,11 @@ uint32_t nv108_pwr_code[] = { 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb6000570, -/* 0x0642: i2c_get_byte_done */ + 0xb6000588, +/* 0x065a: i2c_get_byte_done */ 0x00f80464, -/* 0x0644: i2c_put_byte */ -/* 0x0646: i2c_put_byte_next */ +/* 0x065c: i2c_put_byte */ +/* 0x065e: i2c_put_byte_next */ 0x42b60804, 0x3854ff01, 0xb60076bb, @@ -1269,7 +1275,7 @@ uint32_t nv108_pwr_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x05707e50, + 0x05887e50, 0x0464b600, 0xb03411f4, 0x1bf40046, @@ -1278,21 +1284,21 @@ uint32_t nv108_pwr_code[] = { 0x04659450, 0xbd0256bb, 0x0475fd50, - 0xb07e50fc, + 0xc87e50fc, 0x64b60005, 0x0f11f404, 0xb00076bb, 0x1bf40136, 0x0132f406, -/* 0x069c: i2c_put_byte_done */ -/* 0x069e: i2c_addr */ +/* 0x06b4: i2c_put_byte_done */ +/* 0x06b6: i2c_addr */ 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb60004e9, + 0xb6000501, 0x11f40464, 0x2ec3e729, 0x0134b601, @@ -1302,24 +1308,24 @@ uint32_t nv108_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0006447e, -/* 0x06e3: i2c_addr_done */ + 0x00065c7e, +/* 0x06fb: i2c_addr_done */ 0xf80464b6, -/* 0x06e5: i2c_acquire_addr */ +/* 0x06fd: i2c_acquire_addr */ 0xf8cec700, 0xb705e4b6, 0xf8d014e0, -/* 0x06f1: i2c_acquire */ - 0x06e57e00, +/* 0x0709: i2c_acquire */ + 0x06fd7e00, 0x00047e00, 0x03d9f000, 0x00002e7e, -/* 0x0702: i2c_release */ - 0xe57e00f8, +/* 0x071a: i2c_release */ + 0xfd7e00f8, 0x047e0006, 0xdaf00000, 0x002e7e03, -/* 0x0713: i2c_recv */ +/* 0x072b: i2c_recv */ 0xf400f800, 0xc1c70132, 0x0214b6f8, @@ -1339,7 +1345,7 @@ uint32_t nv108_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0006f17e, + 0x0007097e, 0xfc0464b6, 0x00d6b0d0, 0x00b01bf5, @@ -1349,7 +1355,7 @@ uint32_t nv108_pwr_code[] = { 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb600069e, + 0xb60006b6, 0x11f50464, 0xc5c700cc, 0x0076bbe0, @@ -1357,7 +1363,7 @@ uint32_t nv108_pwr_code[] = { 0x04659450, 0xbd0256bb, 0x0475fd50, - 0x447e50fc, + 0x5c7e50fc, 0x64b60006, 0xa911f504, 0xbb010500, @@ -1366,7 +1372,7 @@ uint32_t nv108_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x00069e7e, + 0x0006b67e, 0xf50464b6, 0xbb008711, 0x65b60076, @@ -1374,7 +1380,7 @@ uint32_t nv108_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0005f57e, + 0x00060d7e, 0xf40464b6, 0x5bcb6711, 0x0076bbe0, @@ -1382,37 +1388,37 @@ uint32_t nv108_pwr_code[] = { 0x04659450, 0xbd0256bb, 0x0475fd50, - 0x417e50fc, + 0x597e50fc, 0x64b60005, 0xbd5bb204, 0x410ef474, -/* 0x0818: i2c_recv_not_rd08 */ +/* 0x0830: i2c_recv_not_rd08 */ 0xf401d6b0, 0x00053b1b, - 0x00069e7e, + 0x0006b67e, 0xc73211f4, - 0x447ee0c5, + 0x5c7ee0c5, 0x11f40006, 0x7e000528, - 0xf400069e, + 0xf40006b6, 0xb5c71f11, - 0x06447ee0, + 0x065c7ee0, 0x1511f400, - 0x0005417e, + 0x0005597e, 0xc5c774bd, 0x091bf408, 0xf40232f4, -/* 0x0856: i2c_recv_not_wr08 */ -/* 0x0856: i2c_recv_done */ +/* 0x086e: i2c_recv_not_wr08 */ +/* 0x086e: i2c_recv_done */ 0xcec7030e, - 0x07027ef8, + 0x071a7ef8, 0xfce0fc00, 0x0912f4d0, - 0x3f7e7cb2, -/* 0x086a: i2c_recv_exit */ + 0x577e7cb2, +/* 0x0882: i2c_recv_exit */ 0x00f80002, -/* 0x086c: i2c_init */ -/* 0x086e: test_recv */ +/* 0x0884: i2c_init */ +/* 0x0886: test_recv */ 0x584100f8, 0x0011cf04, 0x400110b6, @@ -1421,27 +1427,27 @@ uint32_t nv108_pwr_code[] = { 0xf1d900e7, 0x7e134fe3, 0xf8000196, -/* 0x088d: test_init */ +/* 0x08a5: test_init */ 0x08004e00, 0x0001967e, -/* 0x0896: idle_recv */ +/* 0x08ae: idle_recv */ 0x00f800f8, -/* 0x0898: idle */ +/* 0x08b0: idle */ 0x410031f4, 0x11cf0454, 0x0110b600, 0xf6045440, 0x04bd0001, -/* 0x08ac: idle_loop */ +/* 0x08c4: idle_loop */ 0x32f45801, -/* 0x08b1: idle_proc */ -/* 0x08b1: idle_proc_exec */ +/* 0x08c9: idle_proc */ +/* 0x08c9: idle_proc_exec */ 0xb210f902, - 0x02487e1e, + 0x02607e1e, 0xf410fc00, 0x31f40911, 0xf00ef402, -/* 0x08c4: idle_proc_next */ +/* 0x08dc: idle_proc_next */ 0xa65810b6, 0xe81bf41f, 0xf4e002f4, @@ -1451,10 +1457,4 @@ uint32_t nv108_pwr_code[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; diff --git a/nvkm/subdev/pwr/fuc/nva3.fuc.h b/nvkm/subdev/pwr/fuc/nva3.fuc.h index e087ce3..2f152b5 100644 --- a/nvkm/subdev/pwr/fuc/nva3.fuc.h +++ b/nvkm/subdev/pwr/fuc/nva3.fuc.h @@ -24,8 +24,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x00000430, - 0x000003cd, + 0x0000044c, + 0x000003e9, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x00000542, - 0x00000534, + 0x0000055e, + 0x00000550, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000546, - 0x00000544, + 0x00000562, + 0x00000560, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000976, - 0x00000819, + 0x00000992, + 0x00000835, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x0000099f, - 0x00000978, + 0x000009bb, + 0x00000994, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x000009ab, - 0x000009a9, + 0x000009c7, + 0x000009c5, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nva3_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x0000046f, + 0x0000048b, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x00000496, + 0x000004b2, 0x00000002, 0x00000002, - 0x000004b7, + 0x000004d3, 0x00040003, 0x00000000, - 0x000004d3, + 0x000004ef, 0x00010004, 0x00000000, - 0x000004f0, + 0x0000050c, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -849,7 +849,7 @@ uint32_t nva3_pwr_data[] = { }; uint32_t nva3_pwr_code[] = { - 0x030d0ef5, + 0x03290ef5, /* 0x0004: rd32 */ 0x07a007f1, 0xd00604b6, @@ -915,7 +915,7 @@ uint32_t nva3_pwr_code[] = { 0xbb9a0a98, 0x1cf4029a, 0x01d7f00f, - 0x025421f5, + 0x027021f5, 0x0ef494bd, /* 0x00e9: intr_watchdog_next_time */ 0x9b0a9815, @@ -967,7 +967,7 @@ uint32_t nva3_pwr_code[] = { 0x48e7f1c0, 0x53e3f14f, 0x00d7f054, - 0x02b921f5, + 0x02d521f5, 0x07f1c0fc, 0x04b604c0, 0x000cd006, @@ -994,13 +994,19 @@ uint32_t nva3_pwr_code[] = { 0x00fc80fc, 0xf80032f4, /* 0x01f5: timer */ - 0x1032f401, + 0xf990f901, + 0x1032f480, 0xb003f898, 0x1cf40086, - 0x03fe8051, - 0xb63807f0, - 0x08d00604, - 0xf004bd00, + 0xf084bd65, + 0x04b63807, + 0x0008d006, + 0x87f004bd, + 0x0684b634, + 0x980088cf, + 0x98bb9a09, + 0x00e9bb02, + 0xf003fe80, 0x84b60887, 0x0088cf06, 0xf40284f0, @@ -1009,19 +1015,20 @@ uint32_t nva3_pwr_code[] = { 0xb80088cf, 0x0bf406e0, 0x06e8b809, -/* 0x0233: timer_reset */ - 0xf01f1ef4, +/* 0x024b: timer_reset */ + 0xf0111cf4, 0x04b63407, 0x000ed006, 0x0e8004bd, -/* 0x0241: timer_enable */ +/* 0x0259: timer_enable */ 0x0187f09a, 0xb63807f0, 0x08d00604, -/* 0x024f: timer_done */ +/* 0x0267: timer_done */ 0xf404bd00, - 0x00f81031, -/* 0x0254: send_proc */ + 0x80fc1031, + 0x00f890fc, +/* 0x0270: send_proc */ 0x90f980f9, 0x9805e898, 0x86f004e9, @@ -1036,25 +1043,25 @@ uint32_t nva3_pwr_code[] = { 0x90b6038b, 0x0794f001, 0xf404e980, -/* 0x028e: send_done */ +/* 0x02aa: send_done */ 0x90fc0231, 0x00f880fc, -/* 0x0294: find */ +/* 0x02b0: find */ 0x87f080f9, 0x0131f458, -/* 0x029c: find_loop */ +/* 0x02b8: find_loop */ 0xb8008a98, 0x0bf406ae, 0x5880b610, 0x026886b1, 0xf4f01bf4, -/* 0x02b2: find_done */ +/* 0x02ce: find_done */ 0x8eb90132, 0xf880fc02, -/* 0x02b9: send */ - 0x9421f500, +/* 0x02d5: send */ + 0xb021f500, 0x9701f402, -/* 0x02c2: recv */ +/* 0x02de: recv */ 0xe89800f8, 0x04e99805, 0xb80132f4, @@ -1073,9 +1080,9 @@ uint32_t nva3_pwr_code[] = { 0xf900ee98, 0xfef0fca5, 0x31f400f8, -/* 0x030b: recv_done */ +/* 0x0327: recv_done */ 0xf8f0fc01, -/* 0x030d: init */ +/* 0x0329: init */ 0x0817f100, 0x0614b601, 0xe70011cf, @@ -1101,12 +1108,12 @@ uint32_t nva3_pwr_code[] = { 0x04b63807, 0x0001d006, 0xf7f004bd, -/* 0x0371: init_proc */ +/* 0x038d: init_proc */ 0x01f19858, 0xf40016b0, 0x15f9fa0b, 0xf458f0b6, -/* 0x0382: host_send */ +/* 0x039e: host_send */ 0x17f1f20e, 0x14b604b0, 0x0011cf06, @@ -1120,18 +1127,18 @@ uint32_t nva3_pwr_code[] = { 0x02ec9803, 0x9801ed98, 0x21f500ee, - 0x10b602b9, + 0x10b602d5, 0x0f1ec401, 0x04b007f1, 0xd00604b6, 0x04bd000e, -/* 0x03cb: host_send_done */ +/* 0x03e7: host_send_done */ 0xf8ba0ef4, -/* 0x03cd: host_recv */ +/* 0x03e9: host_recv */ 0x4917f100, 0x5413f14e, 0x06e1b852, -/* 0x03db: host_recv_wait */ +/* 0x03f7: host_recv_wait */ 0xf1aa0bf4, 0xb604cc17, 0x11cf0614, @@ -1154,7 +1161,7 @@ uint32_t nva3_pwr_code[] = { 0x04b60007, 0x0002d006, 0x00f804bd, -/* 0x0430: host_init */ +/* 0x044c: host_init */ 0x008017f1, 0xf11014b6, 0xf1027015, @@ -1170,29 +1177,29 @@ uint32_t nva3_pwr_code[] = { 0xc407f101, 0x0604b604, 0xbd0001d0, -/* 0x046f: memx_func_enter */ +/* 0x048b: memx_func_enter */ 0xf000f804, 0x07f10467, 0x04b607e0, 0x0006d006, -/* 0x047e: memx_func_enter_wait */ +/* 0x049a: memx_func_enter_wait */ 0x67f104bd, 0x64b607c0, 0x0066cf06, 0xf40464f0, 0x1698f30b, 0x0410b600, -/* 0x0496: memx_func_leave */ +/* 0x04b2: memx_func_leave */ 0x67f000f8, 0xe407f104, 0x0604b607, 0xbd0006d0, -/* 0x04a5: memx_func_leave_wait */ +/* 0x04c1: memx_func_leave_wait */ 0xc067f104, 0x0664b607, 0xf00066cf, 0x1bf40464, -/* 0x04b7: memx_func_wr32 */ +/* 0x04d3: memx_func_wr32 */ 0x9800f8f3, 0x15980016, 0x0810b601, @@ -1200,7 +1207,7 @@ uint32_t nva3_pwr_code[] = { 0xe0fcd0fc, 0xb63f21f4, 0x1bf40242, -/* 0x04d3: memx_func_wait */ +/* 0x04ef: memx_func_wait */ 0xf000f8e9, 0x84b62c87, 0x0088cf06, @@ -1209,14 +1216,14 @@ uint32_t nva3_pwr_code[] = { 0x031b9802, 0xf41010b6, 0x00f89c21, -/* 0x04f0: memx_func_delay */ +/* 0x050c: memx_func_delay */ 0xb6001e98, 0x21f40410, -/* 0x04fb: memx_exec */ +/* 0x0517: memx_exec */ 0xf900f87f, 0xb9d0f9e0, 0xb2b902c1, -/* 0x0505: memx_exec_next */ +/* 0x0521: memx_exec_next */ 0x00139802, 0x950410b6, 0x30f01034, @@ -1224,113 +1231,113 @@ uint32_t nva3_pwr_code[] = { 0x12b855f9, 0xec1ef406, 0xe0fcd0fc, - 0x02b921f5, -/* 0x0526: memx_info */ + 0x02d521f5, +/* 0x0542: memx_info */ 0xc7f100f8, 0xb7f103ac, 0x21f50800, - 0x00f802b9, -/* 0x0534: memx_recv */ + 0x00f802d5, +/* 0x0550: memx_recv */ 0xf401d6b0, 0xd6b0c40b, 0xe90bf400, -/* 0x0542: memx_init */ +/* 0x055e: memx_init */ 0x00f800f8, -/* 0x0544: perf_recv */ -/* 0x0546: perf_init */ +/* 0x0560: perf_recv */ +/* 0x0562: perf_init */ 0x00f800f8, -/* 0x0548: i2c_drive_scl */ +/* 0x0564: i2c_drive_scl */ 0xf40036b0, 0x07f1110b, 0x04b607e0, 0x0001d006, 0x00f804bd, -/* 0x055c: i2c_drive_scl_lo */ +/* 0x0578: i2c_drive_scl_lo */ 0x07e407f1, 0xd00604b6, 0x04bd0001, -/* 0x056a: i2c_drive_sda */ +/* 0x0586: i2c_drive_sda */ 0x36b000f8, 0x110bf400, 0x07e007f1, 0xd00604b6, 0x04bd0002, -/* 0x057e: i2c_drive_sda_lo */ +/* 0x059a: i2c_drive_sda_lo */ 0x07f100f8, 0x04b607e4, 0x0002d006, 0x00f804bd, -/* 0x058c: i2c_sense_scl */ +/* 0x05a8: i2c_sense_scl */ 0xf10132f4, 0xb607c437, 0x33cf0634, 0x0431fd00, 0xf4060bf4, -/* 0x05a2: i2c_sense_scl_done */ +/* 0x05be: i2c_sense_scl_done */ 0x00f80131, -/* 0x05a4: i2c_sense_sda */ +/* 0x05c0: i2c_sense_sda */ 0xf10132f4, 0xb607c437, 0x33cf0634, 0x0432fd00, 0xf4060bf4, -/* 0x05ba: i2c_sense_sda_done */ +/* 0x05d6: i2c_sense_sda_done */ 0x00f80131, -/* 0x05bc: i2c_raise_scl */ +/* 0x05d8: i2c_raise_scl */ 0x47f140f9, 0x37f00898, - 0x4821f501, -/* 0x05c9: i2c_raise_scl_wait */ + 0x6421f501, +/* 0x05e5: i2c_raise_scl_wait */ 0xe8e7f105, 0x7f21f403, - 0x058c21f5, + 0x05a821f5, 0xb60901f4, 0x1bf40142, -/* 0x05dd: i2c_raise_scl_done */ +/* 0x05f9: i2c_raise_scl_done */ 0xf840fcef, -/* 0x05e1: i2c_start */ - 0x8c21f500, +/* 0x05fd: i2c_start */ + 0xa821f500, 0x0d11f405, - 0x05a421f5, + 0x05c021f5, 0xf40611f4, -/* 0x05f2: i2c_start_rep */ +/* 0x060e: i2c_start_rep */ 0x37f0300e, - 0x4821f500, + 0x6421f500, 0x0137f005, - 0x056a21f5, + 0x058621f5, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xbc21f550, + 0xd821f550, 0x0464b605, -/* 0x061f: i2c_start_send */ +/* 0x063b: i2c_start_send */ 0xf01f11f4, 0x21f50037, - 0xe7f1056a, + 0xe7f10586, 0x21f41388, 0x0037f07f, - 0x054821f5, + 0x056421f5, 0x1388e7f1, -/* 0x063b: i2c_start_out */ +/* 0x0657: i2c_start_out */ 0xf87f21f4, -/* 0x063d: i2c_stop */ +/* 0x0659: i2c_stop */ 0x0037f000, - 0x054821f5, + 0x056421f5, 0xf50037f0, - 0xf1056a21, + 0xf1058621, 0xf403e8e7, 0x37f07f21, - 0x4821f501, + 0x6421f501, 0x88e7f105, 0x7f21f413, 0xf50137f0, - 0xf1056a21, + 0xf1058621, 0xf41388e7, 0x00f87f21, -/* 0x0670: i2c_bitw */ - 0x056a21f5, +/* 0x068c: i2c_bitw */ + 0x058621f5, 0x03e8e7f1, 0xbb7f21f4, 0x65b60076, @@ -1338,18 +1345,18 @@ uint32_t nva3_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x05bc21f5, + 0x05d821f5, 0xf40464b6, 0xe7f11811, 0x21f41388, 0x0037f07f, - 0x054821f5, + 0x056421f5, 0x1388e7f1, -/* 0x06af: i2c_bitw_out */ +/* 0x06cb: i2c_bitw_out */ 0xf87f21f4, -/* 0x06b1: i2c_bitr */ +/* 0x06cd: i2c_bitr */ 0x0137f000, - 0x056a21f5, + 0x058621f5, 0x03e8e7f1, 0xbb7f21f4, 0x65b60076, @@ -1357,19 +1364,19 @@ uint32_t nva3_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x05bc21f5, + 0x05d821f5, 0xf40464b6, 0x21f51b11, - 0x37f005a4, - 0x4821f500, + 0x37f005c0, + 0x6421f500, 0x88e7f105, 0x7f21f413, 0xf4013cf0, -/* 0x06f6: i2c_bitr_done */ +/* 0x0712: i2c_bitr_done */ 0x00f80131, -/* 0x06f8: i2c_get_byte */ +/* 0x0714: i2c_get_byte */ 0xf00057f0, -/* 0x06fe: i2c_get_byte_next */ +/* 0x071a: i2c_get_byte_next */ 0x54b60847, 0x0076bb01, 0xf90465b6, @@ -1377,7 +1384,7 @@ uint32_t nva3_pwr_code[] = { 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b606b1, + 0x64b606cd, 0x2b11f404, 0xb60553fd, 0x1bf40142, @@ -1387,12 +1394,12 @@ uint32_t nva3_pwr_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x7021f550, + 0x8c21f550, 0x0464b606, -/* 0x0748: i2c_get_byte_done */ -/* 0x074a: i2c_put_byte */ +/* 0x0764: i2c_get_byte_done */ +/* 0x0766: i2c_put_byte */ 0x47f000f8, -/* 0x074d: i2c_put_byte_next */ +/* 0x0769: i2c_put_byte_next */ 0x0142b608, 0xbb3854ff, 0x65b60076, @@ -1400,7 +1407,7 @@ uint32_t nva3_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x067021f5, + 0x068c21f5, 0xf40464b6, 0x46b03411, 0xd81bf400, @@ -1409,21 +1416,21 @@ uint32_t nva3_pwr_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xb121f550, + 0xcd21f550, 0x0464b606, 0xbb0f11f4, 0x36b00076, 0x061bf401, -/* 0x07a3: i2c_put_byte_done */ +/* 0x07bf: i2c_put_byte_done */ 0xf80132f4, -/* 0x07a5: i2c_addr */ +/* 0x07c1: i2c_addr */ 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b605e1, + 0x64b605fd, 0x2911f404, 0x012ec3e7, 0xfd0134b6, @@ -1433,24 +1440,24 @@ uint32_t nva3_pwr_code[] = { 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6074a21, -/* 0x07ea: i2c_addr_done */ + 0xb6076621, +/* 0x0806: i2c_addr_done */ 0x00f80464, -/* 0x07ec: i2c_acquire_addr */ +/* 0x0808: i2c_acquire_addr */ 0xb6f8cec7, 0xe0b702e4, 0xee980bfc, -/* 0x07fb: i2c_acquire */ +/* 0x0817: i2c_acquire */ 0xf500f800, - 0xf407ec21, + 0xf4080821, 0xd9f00421, 0x3f21f403, -/* 0x080a: i2c_release */ +/* 0x0826: i2c_release */ 0x21f500f8, - 0x21f407ec, + 0x21f40808, 0x03daf004, 0xf83f21f4, -/* 0x0819: i2c_recv */ +/* 0x0835: i2c_recv */ 0x0132f400, 0xb6f8c1c7, 0x16b00214, @@ -1469,7 +1476,7 @@ uint32_t nva3_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07fb21f5, + 0x081721f5, 0xfc0464b6, 0x00d6b0d0, 0x00b31bf5, @@ -1479,7 +1486,7 @@ uint32_t nva3_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07a521f5, + 0x07c121f5, 0xf50464b6, 0xc700d011, 0x76bbe0c5, @@ -1488,7 +1495,7 @@ uint32_t nva3_pwr_code[] = { 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6074a21, + 0xb6076621, 0x11f50464, 0x57f000ad, 0x0076bb01, @@ -1497,7 +1504,7 @@ uint32_t nva3_pwr_code[] = { 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b607a5, + 0x64b607c1, 0x8a11f504, 0x0076bb00, 0xf90465b6, @@ -1505,7 +1512,7 @@ uint32_t nva3_pwr_code[] = { 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b606f8, + 0x64b60714, 0x6a11f404, 0xbbe05bcb, 0x65b60076, @@ -1513,38 +1520,38 @@ uint32_t nva3_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x063d21f5, + 0x065921f5, 0xb90464b6, 0x74bd025b, -/* 0x091f: i2c_recv_not_rd08 */ +/* 0x093b: i2c_recv_not_rd08 */ 0xb0430ef4, 0x1bf401d6, 0x0057f03d, - 0x07a521f5, + 0x07c121f5, 0xc73311f4, 0x21f5e0c5, - 0x11f4074a, + 0x11f40766, 0x0057f029, - 0x07a521f5, + 0x07c121f5, 0xc71f11f4, 0x21f5e0b5, - 0x11f4074a, - 0x3d21f515, + 0x11f40766, + 0x5921f515, 0xc774bd06, 0x1bf408c5, 0x0232f409, -/* 0x095f: i2c_recv_not_wr08 */ -/* 0x095f: i2c_recv_done */ +/* 0x097b: i2c_recv_not_wr08 */ +/* 0x097b: i2c_recv_done */ 0xc7030ef4, 0x21f5f8ce, - 0xe0fc080a, + 0xe0fc0826, 0x12f4d0fc, 0x027cb90a, - 0x02b921f5, -/* 0x0974: i2c_recv_exit */ -/* 0x0976: i2c_init */ + 0x02d521f5, +/* 0x0990: i2c_recv_exit */ +/* 0x0992: i2c_init */ 0x00f800f8, -/* 0x0978: test_recv */ +/* 0x0994: test_recv */ 0x05d817f1, 0xcf0614b6, 0x10b60011, @@ -1554,12 +1561,12 @@ uint32_t nva3_pwr_code[] = { 0x00e7f104, 0x4fe3f1d9, 0xf521f513, -/* 0x099f: test_init */ +/* 0x09bb: test_init */ 0xf100f801, 0xf50800e7, 0xf801f521, -/* 0x09a9: idle_recv */ -/* 0x09ab: idle */ +/* 0x09c5: idle_recv */ +/* 0x09c7: idle */ 0xf400f800, 0x17f10031, 0x14b605d4, @@ -1567,17 +1574,17 @@ uint32_t nva3_pwr_code[] = { 0xf10110b6, 0xb605d407, 0x01d00604, -/* 0x09c7: idle_loop */ +/* 0x09e3: idle_loop */ 0xf004bd00, 0x32f45817, -/* 0x09cd: idle_proc */ -/* 0x09cd: idle_proc_exec */ +/* 0x09e9: idle_proc */ +/* 0x09e9: idle_proc_exec */ 0xb910f902, 0x21f5021e, - 0x10fc02c2, + 0x10fc02de, 0xf40911f4, 0x0ef40231, -/* 0x09e1: idle_proc_next */ +/* 0x09fd: idle_proc_next */ 0x5810b6ef, 0xf4061fb8, 0x02f4e61b, @@ -1586,4 +1593,61 @@ uint32_t nva3_pwr_code[] = { 0x00000000, 0x00000000, 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, }; diff --git a/nvkm/subdev/pwr/fuc/nvc0.fuc.h b/nvkm/subdev/pwr/fuc/nvc0.fuc.h index 0773ff0..ca96a04 100644 --- a/nvkm/subdev/pwr/fuc/nvc0.fuc.h +++ b/nvkm/subdev/pwr/fuc/nvc0.fuc.h @@ -24,8 +24,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x00000430, - 0x000003cd, + 0x0000044c, + 0x000003e9, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x00000542, - 0x00000534, + 0x0000055e, + 0x00000550, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000546, - 0x00000544, + 0x00000562, + 0x00000560, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000976, - 0x00000819, + 0x00000992, + 0x00000835, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x0000099f, - 0x00000978, + 0x000009bb, + 0x00000994, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x000009ab, - 0x000009a9, + 0x000009c7, + 0x000009c5, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nvc0_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x0000046f, + 0x0000048b, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x00000496, + 0x000004b2, 0x00000002, 0x00000002, - 0x000004b7, + 0x000004d3, 0x00040003, 0x00000000, - 0x000004d3, + 0x000004ef, 0x00010004, 0x00000000, - 0x000004f0, + 0x0000050c, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -849,7 +849,7 @@ uint32_t nvc0_pwr_data[] = { }; uint32_t nvc0_pwr_code[] = { - 0x030d0ef5, + 0x03290ef5, /* 0x0004: rd32 */ 0x07a007f1, 0xd00604b6, @@ -915,7 +915,7 @@ uint32_t nvc0_pwr_code[] = { 0xbb9a0a98, 0x1cf4029a, 0x01d7f00f, - 0x025421f5, + 0x027021f5, 0x0ef494bd, /* 0x00e9: intr_watchdog_next_time */ 0x9b0a9815, @@ -967,7 +967,7 @@ uint32_t nvc0_pwr_code[] = { 0x48e7f1c0, 0x53e3f14f, 0x00d7f054, - 0x02b921f5, + 0x02d521f5, 0x07f1c0fc, 0x04b604c0, 0x000cd006, @@ -994,13 +994,19 @@ uint32_t nvc0_pwr_code[] = { 0x00fc80fc, 0xf80032f4, /* 0x01f5: timer */ - 0x1032f401, + 0xf990f901, + 0x1032f480, 0xb003f898, 0x1cf40086, - 0x03fe8051, - 0xb63807f0, - 0x08d00604, - 0xf004bd00, + 0xf084bd65, + 0x04b63807, + 0x0008d006, + 0x87f004bd, + 0x0684b634, + 0x980088cf, + 0x98bb9a09, + 0x00e9bb02, + 0xf003fe80, 0x84b60887, 0x0088cf06, 0xf40284f0, @@ -1009,19 +1015,20 @@ uint32_t nvc0_pwr_code[] = { 0xb80088cf, 0x0bf406e0, 0x06e8b809, -/* 0x0233: timer_reset */ - 0xf01f1ef4, +/* 0x024b: timer_reset */ + 0xf0111cf4, 0x04b63407, 0x000ed006, 0x0e8004bd, -/* 0x0241: timer_enable */ +/* 0x0259: timer_enable */ 0x0187f09a, 0xb63807f0, 0x08d00604, -/* 0x024f: timer_done */ +/* 0x0267: timer_done */ 0xf404bd00, - 0x00f81031, -/* 0x0254: send_proc */ + 0x80fc1031, + 0x00f890fc, +/* 0x0270: send_proc */ 0x90f980f9, 0x9805e898, 0x86f004e9, @@ -1036,25 +1043,25 @@ uint32_t nvc0_pwr_code[] = { 0x90b6038b, 0x0794f001, 0xf404e980, -/* 0x028e: send_done */ +/* 0x02aa: send_done */ 0x90fc0231, 0x00f880fc, -/* 0x0294: find */ +/* 0x02b0: find */ 0x87f080f9, 0x0131f458, -/* 0x029c: find_loop */ +/* 0x02b8: find_loop */ 0xb8008a98, 0x0bf406ae, 0x5880b610, 0x026886b1, 0xf4f01bf4, -/* 0x02b2: find_done */ +/* 0x02ce: find_done */ 0x8eb90132, 0xf880fc02, -/* 0x02b9: send */ - 0x9421f500, +/* 0x02d5: send */ + 0xb021f500, 0x9701f402, -/* 0x02c2: recv */ +/* 0x02de: recv */ 0xe89800f8, 0x04e99805, 0xb80132f4, @@ -1073,9 +1080,9 @@ uint32_t nvc0_pwr_code[] = { 0xf900ee98, 0xfef0fca5, 0x31f400f8, -/* 0x030b: recv_done */ +/* 0x0327: recv_done */ 0xf8f0fc01, -/* 0x030d: init */ +/* 0x0329: init */ 0x0817f100, 0x0614b601, 0xe70011cf, @@ -1101,12 +1108,12 @@ uint32_t nvc0_pwr_code[] = { 0x04b63807, 0x0001d006, 0xf7f004bd, -/* 0x0371: init_proc */ +/* 0x038d: init_proc */ 0x01f19858, 0xf40016b0, 0x15f9fa0b, 0xf458f0b6, -/* 0x0382: host_send */ +/* 0x039e: host_send */ 0x17f1f20e, 0x14b604b0, 0x0011cf06, @@ -1120,18 +1127,18 @@ uint32_t nvc0_pwr_code[] = { 0x02ec9803, 0x9801ed98, 0x21f500ee, - 0x10b602b9, + 0x10b602d5, 0x0f1ec401, 0x04b007f1, 0xd00604b6, 0x04bd000e, -/* 0x03cb: host_send_done */ +/* 0x03e7: host_send_done */ 0xf8ba0ef4, -/* 0x03cd: host_recv */ +/* 0x03e9: host_recv */ 0x4917f100, 0x5413f14e, 0x06e1b852, -/* 0x03db: host_recv_wait */ +/* 0x03f7: host_recv_wait */ 0xf1aa0bf4, 0xb604cc17, 0x11cf0614, @@ -1154,7 +1161,7 @@ uint32_t nvc0_pwr_code[] = { 0x04b60007, 0x0002d006, 0x00f804bd, -/* 0x0430: host_init */ +/* 0x044c: host_init */ 0x008017f1, 0xf11014b6, 0xf1027015, @@ -1170,29 +1177,29 @@ uint32_t nvc0_pwr_code[] = { 0xc407f101, 0x0604b604, 0xbd0001d0, -/* 0x046f: memx_func_enter */ +/* 0x048b: memx_func_enter */ 0xf000f804, 0x07f10467, 0x04b607e0, 0x0006d006, -/* 0x047e: memx_func_enter_wait */ +/* 0x049a: memx_func_enter_wait */ 0x67f104bd, 0x64b607c0, 0x0066cf06, 0xf40464f0, 0x1698f30b, 0x0410b600, -/* 0x0496: memx_func_leave */ +/* 0x04b2: memx_func_leave */ 0x67f000f8, 0xe407f104, 0x0604b607, 0xbd0006d0, -/* 0x04a5: memx_func_leave_wait */ +/* 0x04c1: memx_func_leave_wait */ 0xc067f104, 0x0664b607, 0xf00066cf, 0x1bf40464, -/* 0x04b7: memx_func_wr32 */ +/* 0x04d3: memx_func_wr32 */ 0x9800f8f3, 0x15980016, 0x0810b601, @@ -1200,7 +1207,7 @@ uint32_t nvc0_pwr_code[] = { 0xe0fcd0fc, 0xb63f21f4, 0x1bf40242, -/* 0x04d3: memx_func_wait */ +/* 0x04ef: memx_func_wait */ 0xf000f8e9, 0x84b62c87, 0x0088cf06, @@ -1209,14 +1216,14 @@ uint32_t nvc0_pwr_code[] = { 0x031b9802, 0xf41010b6, 0x00f89c21, -/* 0x04f0: memx_func_delay */ +/* 0x050c: memx_func_delay */ 0xb6001e98, 0x21f40410, -/* 0x04fb: memx_exec */ +/* 0x0517: memx_exec */ 0xf900f87f, 0xb9d0f9e0, 0xb2b902c1, -/* 0x0505: memx_exec_next */ +/* 0x0521: memx_exec_next */ 0x00139802, 0x950410b6, 0x30f01034, @@ -1224,113 +1231,113 @@ uint32_t nvc0_pwr_code[] = { 0x12b855f9, 0xec1ef406, 0xe0fcd0fc, - 0x02b921f5, -/* 0x0526: memx_info */ + 0x02d521f5, +/* 0x0542: memx_info */ 0xc7f100f8, 0xb7f103ac, 0x21f50800, - 0x00f802b9, -/* 0x0534: memx_recv */ + 0x00f802d5, +/* 0x0550: memx_recv */ 0xf401d6b0, 0xd6b0c40b, 0xe90bf400, -/* 0x0542: memx_init */ +/* 0x055e: memx_init */ 0x00f800f8, -/* 0x0544: perf_recv */ -/* 0x0546: perf_init */ +/* 0x0560: perf_recv */ +/* 0x0562: perf_init */ 0x00f800f8, -/* 0x0548: i2c_drive_scl */ +/* 0x0564: i2c_drive_scl */ 0xf40036b0, 0x07f1110b, 0x04b607e0, 0x0001d006, 0x00f804bd, -/* 0x055c: i2c_drive_scl_lo */ +/* 0x0578: i2c_drive_scl_lo */ 0x07e407f1, 0xd00604b6, 0x04bd0001, -/* 0x056a: i2c_drive_sda */ +/* 0x0586: i2c_drive_sda */ 0x36b000f8, 0x110bf400, 0x07e007f1, 0xd00604b6, 0x04bd0002, -/* 0x057e: i2c_drive_sda_lo */ +/* 0x059a: i2c_drive_sda_lo */ 0x07f100f8, 0x04b607e4, 0x0002d006, 0x00f804bd, -/* 0x058c: i2c_sense_scl */ +/* 0x05a8: i2c_sense_scl */ 0xf10132f4, 0xb607c437, 0x33cf0634, 0x0431fd00, 0xf4060bf4, -/* 0x05a2: i2c_sense_scl_done */ +/* 0x05be: i2c_sense_scl_done */ 0x00f80131, -/* 0x05a4: i2c_sense_sda */ +/* 0x05c0: i2c_sense_sda */ 0xf10132f4, 0xb607c437, 0x33cf0634, 0x0432fd00, 0xf4060bf4, -/* 0x05ba: i2c_sense_sda_done */ +/* 0x05d6: i2c_sense_sda_done */ 0x00f80131, -/* 0x05bc: i2c_raise_scl */ +/* 0x05d8: i2c_raise_scl */ 0x47f140f9, 0x37f00898, - 0x4821f501, -/* 0x05c9: i2c_raise_scl_wait */ + 0x6421f501, +/* 0x05e5: i2c_raise_scl_wait */ 0xe8e7f105, 0x7f21f403, - 0x058c21f5, + 0x05a821f5, 0xb60901f4, 0x1bf40142, -/* 0x05dd: i2c_raise_scl_done */ +/* 0x05f9: i2c_raise_scl_done */ 0xf840fcef, -/* 0x05e1: i2c_start */ - 0x8c21f500, +/* 0x05fd: i2c_start */ + 0xa821f500, 0x0d11f405, - 0x05a421f5, + 0x05c021f5, 0xf40611f4, -/* 0x05f2: i2c_start_rep */ +/* 0x060e: i2c_start_rep */ 0x37f0300e, - 0x4821f500, + 0x6421f500, 0x0137f005, - 0x056a21f5, + 0x058621f5, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xbc21f550, + 0xd821f550, 0x0464b605, -/* 0x061f: i2c_start_send */ +/* 0x063b: i2c_start_send */ 0xf01f11f4, 0x21f50037, - 0xe7f1056a, + 0xe7f10586, 0x21f41388, 0x0037f07f, - 0x054821f5, + 0x056421f5, 0x1388e7f1, -/* 0x063b: i2c_start_out */ +/* 0x0657: i2c_start_out */ 0xf87f21f4, -/* 0x063d: i2c_stop */ +/* 0x0659: i2c_stop */ 0x0037f000, - 0x054821f5, + 0x056421f5, 0xf50037f0, - 0xf1056a21, + 0xf1058621, 0xf403e8e7, 0x37f07f21, - 0x4821f501, + 0x6421f501, 0x88e7f105, 0x7f21f413, 0xf50137f0, - 0xf1056a21, + 0xf1058621, 0xf41388e7, 0x00f87f21, -/* 0x0670: i2c_bitw */ - 0x056a21f5, +/* 0x068c: i2c_bitw */ + 0x058621f5, 0x03e8e7f1, 0xbb7f21f4, 0x65b60076, @@ -1338,18 +1345,18 @@ uint32_t nvc0_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x05bc21f5, + 0x05d821f5, 0xf40464b6, 0xe7f11811, 0x21f41388, 0x0037f07f, - 0x054821f5, + 0x056421f5, 0x1388e7f1, -/* 0x06af: i2c_bitw_out */ +/* 0x06cb: i2c_bitw_out */ 0xf87f21f4, -/* 0x06b1: i2c_bitr */ +/* 0x06cd: i2c_bitr */ 0x0137f000, - 0x056a21f5, + 0x058621f5, 0x03e8e7f1, 0xbb7f21f4, 0x65b60076, @@ -1357,19 +1364,19 @@ uint32_t nvc0_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x05bc21f5, + 0x05d821f5, 0xf40464b6, 0x21f51b11, - 0x37f005a4, - 0x4821f500, + 0x37f005c0, + 0x6421f500, 0x88e7f105, 0x7f21f413, 0xf4013cf0, -/* 0x06f6: i2c_bitr_done */ +/* 0x0712: i2c_bitr_done */ 0x00f80131, -/* 0x06f8: i2c_get_byte */ +/* 0x0714: i2c_get_byte */ 0xf00057f0, -/* 0x06fe: i2c_get_byte_next */ +/* 0x071a: i2c_get_byte_next */ 0x54b60847, 0x0076bb01, 0xf90465b6, @@ -1377,7 +1384,7 @@ uint32_t nvc0_pwr_code[] = { 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b606b1, + 0x64b606cd, 0x2b11f404, 0xb60553fd, 0x1bf40142, @@ -1387,12 +1394,12 @@ uint32_t nvc0_pwr_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x7021f550, + 0x8c21f550, 0x0464b606, -/* 0x0748: i2c_get_byte_done */ -/* 0x074a: i2c_put_byte */ +/* 0x0764: i2c_get_byte_done */ +/* 0x0766: i2c_put_byte */ 0x47f000f8, -/* 0x074d: i2c_put_byte_next */ +/* 0x0769: i2c_put_byte_next */ 0x0142b608, 0xbb3854ff, 0x65b60076, @@ -1400,7 +1407,7 @@ uint32_t nvc0_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x067021f5, + 0x068c21f5, 0xf40464b6, 0x46b03411, 0xd81bf400, @@ -1409,21 +1416,21 @@ uint32_t nvc0_pwr_code[] = { 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xb121f550, + 0xcd21f550, 0x0464b606, 0xbb0f11f4, 0x36b00076, 0x061bf401, -/* 0x07a3: i2c_put_byte_done */ +/* 0x07bf: i2c_put_byte_done */ 0xf80132f4, -/* 0x07a5: i2c_addr */ +/* 0x07c1: i2c_addr */ 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b605e1, + 0x64b605fd, 0x2911f404, 0x012ec3e7, 0xfd0134b6, @@ -1433,24 +1440,24 @@ uint32_t nvc0_pwr_code[] = { 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6074a21, -/* 0x07ea: i2c_addr_done */ + 0xb6076621, +/* 0x0806: i2c_addr_done */ 0x00f80464, -/* 0x07ec: i2c_acquire_addr */ +/* 0x0808: i2c_acquire_addr */ 0xb6f8cec7, 0xe0b702e4, 0xee980bfc, -/* 0x07fb: i2c_acquire */ +/* 0x0817: i2c_acquire */ 0xf500f800, - 0xf407ec21, + 0xf4080821, 0xd9f00421, 0x3f21f403, -/* 0x080a: i2c_release */ +/* 0x0826: i2c_release */ 0x21f500f8, - 0x21f407ec, + 0x21f40808, 0x03daf004, 0xf83f21f4, -/* 0x0819: i2c_recv */ +/* 0x0835: i2c_recv */ 0x0132f400, 0xb6f8c1c7, 0x16b00214, @@ -1469,7 +1476,7 @@ uint32_t nvc0_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07fb21f5, + 0x081721f5, 0xfc0464b6, 0x00d6b0d0, 0x00b31bf5, @@ -1479,7 +1486,7 @@ uint32_t nvc0_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07a521f5, + 0x07c121f5, 0xf50464b6, 0xc700d011, 0x76bbe0c5, @@ -1488,7 +1495,7 @@ uint32_t nvc0_pwr_code[] = { 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6074a21, + 0xb6076621, 0x11f50464, 0x57f000ad, 0x0076bb01, @@ -1497,7 +1504,7 @@ uint32_t nvc0_pwr_code[] = { 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b607a5, + 0x64b607c1, 0x8a11f504, 0x0076bb00, 0xf90465b6, @@ -1505,7 +1512,7 @@ uint32_t nvc0_pwr_code[] = { 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b606f8, + 0x64b60714, 0x6a11f404, 0xbbe05bcb, 0x65b60076, @@ -1513,38 +1520,38 @@ uint32_t nvc0_pwr_code[] = { 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x063d21f5, + 0x065921f5, 0xb90464b6, 0x74bd025b, -/* 0x091f: i2c_recv_not_rd08 */ +/* 0x093b: i2c_recv_not_rd08 */ 0xb0430ef4, 0x1bf401d6, 0x0057f03d, - 0x07a521f5, + 0x07c121f5, 0xc73311f4, 0x21f5e0c5, - 0x11f4074a, + 0x11f40766, 0x0057f029, - 0x07a521f5, + 0x07c121f5, 0xc71f11f4, 0x21f5e0b5, - 0x11f4074a, - 0x3d21f515, + 0x11f40766, + 0x5921f515, 0xc774bd06, 0x1bf408c5, 0x0232f409, -/* 0x095f: i2c_recv_not_wr08 */ -/* 0x095f: i2c_recv_done */ +/* 0x097b: i2c_recv_not_wr08 */ +/* 0x097b: i2c_recv_done */ 0xc7030ef4, 0x21f5f8ce, - 0xe0fc080a, + 0xe0fc0826, 0x12f4d0fc, 0x027cb90a, - 0x02b921f5, -/* 0x0974: i2c_recv_exit */ -/* 0x0976: i2c_init */ + 0x02d521f5, +/* 0x0990: i2c_recv_exit */ +/* 0x0992: i2c_init */ 0x00f800f8, -/* 0x0978: test_recv */ +/* 0x0994: test_recv */ 0x05d817f1, 0xcf0614b6, 0x10b60011, @@ -1554,12 +1561,12 @@ uint32_t nvc0_pwr_code[] = { 0x00e7f104, 0x4fe3f1d9, 0xf521f513, -/* 0x099f: test_init */ +/* 0x09bb: test_init */ 0xf100f801, 0xf50800e7, 0xf801f521, -/* 0x09a9: idle_recv */ -/* 0x09ab: idle */ +/* 0x09c5: idle_recv */ +/* 0x09c7: idle */ 0xf400f800, 0x17f10031, 0x14b605d4, @@ -1567,17 +1574,17 @@ uint32_t nvc0_pwr_code[] = { 0xf10110b6, 0xb605d407, 0x01d00604, -/* 0x09c7: idle_loop */ +/* 0x09e3: idle_loop */ 0xf004bd00, 0x32f45817, -/* 0x09cd: idle_proc */ -/* 0x09cd: idle_proc_exec */ +/* 0x09e9: idle_proc */ +/* 0x09e9: idle_proc_exec */ 0xb910f902, 0x21f5021e, - 0x10fc02c2, + 0x10fc02de, 0xf40911f4, 0x0ef40231, -/* 0x09e1: idle_proc_next */ +/* 0x09fd: idle_proc_next */ 0x5810b6ef, 0xf4061fb8, 0x02f4e61b, @@ -1586,4 +1593,61 @@ uint32_t nvc0_pwr_code[] = { 0x00000000, 0x00000000, 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, }; diff --git a/nvkm/subdev/pwr/fuc/nvd0.fuc.h b/nvkm/subdev/pwr/fuc/nvd0.fuc.h index 8d369b3..5d81cbd 100644 --- a/nvkm/subdev/pwr/fuc/nvd0.fuc.h +++ b/nvkm/subdev/pwr/fuc/nvd0.fuc.h @@ -24,8 +24,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x000003be, - 0x00000367, + 0x000003d7, + 0x00000380, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x000004b8, - 0x000004aa, + 0x000004d1, + 0x000004c3, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x000004bc, - 0x000004ba, + 0x000004d5, + 0x000004d3, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x000008d7, - 0x0000077a, + 0x000008f0, + 0x00000793, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x000008fa, - 0x000008d9, + 0x00000913, + 0x000008f2, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000906, - 0x00000904, + 0x0000091f, + 0x0000091d, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nvd0_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x000003f4, + 0x0000040d, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x00000415, + 0x0000042e, 0x00000002, 0x00000002, - 0x00000430, + 0x00000449, 0x00040003, 0x00000000, - 0x0000044c, + 0x00000465, 0x00010004, 0x00000000, - 0x00000466, + 0x0000047f, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -784,7 +784,7 @@ uint32_t nvd0_pwr_data[] = { }; uint32_t nvd0_pwr_code[] = { - 0x02bf0ef5, + 0x02d80ef5, /* 0x0004: rd32 */ 0x07a007f1, 0xbd000ed0, @@ -841,7 +841,7 @@ uint32_t nvd0_pwr_code[] = { 0xbb9a0a98, 0x1cf4029a, 0x01d7f00f, - 0x020621f5, + 0x021f21f5, 0x0ef494bd, /* 0x00c5: intr_watchdog_next_time */ 0x9b0a9815, @@ -889,7 +889,7 @@ uint32_t nvd0_pwr_code[] = { 0xf14f48e7, 0xf05453e3, 0x21f500d7, - 0xc0fc026b, + 0xc0fc0284, 0x04c007f1, 0xbd000cd0, /* 0x0175: intr_subintr_skip_fifo */ @@ -913,575 +913,575 @@ uint32_t nvd0_pwr_code[] = { 0xfc80fc90, 0x0032f400, /* 0x01b6: timer */ - 0x32f401f8, + 0x90f901f8, + 0x32f480f9, 0x03f89810, 0xf40086b0, - 0xfe80421c, - 0x3807f003, - 0xbd0008d0, - 0x0887f004, - 0xf00088cf, - 0x1bf40284, - 0x3487f020, - 0xb80088cf, - 0x0bf406e0, - 0x06e8b809, -/* 0x01eb: timer_reset */ - 0xf0191ef4, - 0x0ed03407, - 0x8004bd00, -/* 0x01f6: timer_enable */ - 0x87f09a0e, - 0x3807f001, - 0xbd0008d0, -/* 0x0201: timer_done */ - 0x1031f404, -/* 0x0206: send_proc */ - 0x80f900f8, - 0xe89890f9, - 0x04e99805, - 0xb80486f0, - 0x0bf40689, - 0x0398c42a, - 0xb6048894, - 0x8ebb1880, - 0x00fa9800, - 0x80008a80, - 0x8c80018d, - 0x038b8002, - 0xf00190b6, - 0xe9800794, - 0x0231f404, -/* 0x0240: send_done */ - 0x80fc90fc, -/* 0x0246: find */ - 0x80f900f8, - 0xf45887f0, -/* 0x024e: find_loop */ - 0x8a980131, - 0x06aeb800, - 0xb6100bf4, - 0x86b15880, - 0x1bf40268, - 0x0132f4f0, -/* 0x0264: find_done */ - 0xfc028eb9, -/* 0x026b: send */ - 0xf500f880, - 0xf4024621, - 0x00f89701, -/* 0x0274: recv */ - 0x9805e898, - 0x32f404e9, - 0x0689b801, - 0xc43d0bf4, - 0x80b60389, - 0x0784f001, - 0x9805e880, - 0xf0f902ea, - 0xf9018ffe, - 0x02efb9f0, - 0xbb049994, - 0xe0b600e9, - 0x03eb9818, - 0x9802ec98, - 0xee9801ed, - 0xfca5f900, - 0x00f8fef0, - 0xfc0131f4, -/* 0x02bd: recv_done */ -/* 0x02bf: init */ - 0xf100f8f0, - 0xcf010817, - 0x11e70011, - 0x14b60109, - 0x0014fe08, - 0x00e017f1, - 0xf00013f0, - 0x01d01c07, - 0xf004bd00, - 0x07f0ff17, - 0x0001d014, - 0x17f004bd, - 0x0015f102, - 0x1007f008, - 0xbd0001d0, - 0xe617f104, + 0x84bd531c, + 0xd03807f0, + 0x04bd0008, + 0xcf3487f0, + 0x09980088, + 0x0298bb9a, + 0x8000e9bb, + 0x87f003fe, + 0x0088cf08, + 0xf40284f0, + 0x87f0201b, + 0x0088cf34, + 0xf406e0b8, + 0xe8b8090b, + 0x0e1cf406, +/* 0x0200: timer_reset */ + 0xd03407f0, + 0x04bd000e, +/* 0x020b: timer_enable */ + 0xf09a0e80, + 0x07f00187, + 0x0008d038, +/* 0x0216: timer_done */ + 0x31f404bd, + 0xfc80fc10, +/* 0x021f: send_proc */ + 0xf900f890, + 0x9890f980, + 0xe99805e8, + 0x0486f004, + 0xf40689b8, + 0x98c42a0b, + 0x04889403, + 0xbb1880b6, + 0xfa98008e, + 0x008a8000, + 0x80018d80, + 0x8b80028c, + 0x0190b603, + 0x800794f0, + 0x31f404e9, +/* 0x0259: send_done */ + 0xfc90fc02, +/* 0x025f: find */ + 0xf900f880, + 0x5887f080, +/* 0x0267: find_loop */ + 0x980131f4, + 0xaeb8008a, + 0x100bf406, + 0xb15880b6, + 0xf4026886, + 0x32f4f01b, +/* 0x027d: find_done */ + 0x028eb901, + 0x00f880fc, +/* 0x0284: send */ + 0x025f21f5, + 0xf89701f4, +/* 0x028d: recv */ + 0x05e89800, + 0xf404e998, + 0x89b80132, + 0x3d0bf406, + 0xb60389c4, + 0x84f00180, + 0x05e88007, + 0xf902ea98, + 0x018ffef0, + 0xefb9f0f9, + 0x04999402, + 0xb600e9bb, + 0xeb9818e0, + 0x02ec9803, + 0x9801ed98, + 0xa5f900ee, + 0xf8fef0fc, + 0x0131f400, +/* 0x02d6: recv_done */ + 0x00f8f0fc, +/* 0x02d8: init */ + 0x010817f1, + 0xe70011cf, + 0xb6010911, + 0x14fe0814, + 0xe017f100, 0x0013f000, - 0xf40010fe, - 0x17f01031, - 0x3807f001, - 0xbd0001d0, - 0x58f7f004, -/* 0x0314: init_proc */ - 0xb001f198, - 0x0bf40016, - 0xb615f9fa, - 0x0ef458f0, -/* 0x0325: host_send */ - 0xb017f1f2, - 0x0011cf04, - 0x04a027f1, - 0xb80022cf, + 0xd01c07f0, + 0x04bd0001, + 0xf0ff17f0, + 0x01d01407, + 0xf004bd00, + 0x15f10217, + 0x07f00800, + 0x0001d010, + 0x17f104bd, + 0x13f000e6, + 0x0010fe00, + 0xf01031f4, + 0x07f00117, + 0x0001d038, + 0xf7f004bd, +/* 0x032d: init_proc */ + 0x01f19858, + 0xf40016b0, + 0x15f9fa0b, + 0xf458f0b6, +/* 0x033e: host_send */ + 0x17f1f20e, + 0x11cf04b0, + 0xa027f100, + 0x0022cf04, + 0xf40612b8, + 0x1ec42f0b, + 0x04ee9407, + 0x0270e0b7, + 0x9803eb98, + 0xed9802ec, + 0x00ee9801, + 0x028421f5, + 0xc40110b6, + 0x07f10f1e, + 0x0ed004b0, + 0xf404bd00, +/* 0x037e: host_send_done */ + 0x00f8c30e, +/* 0x0380: host_recv */ + 0x4e4917f1, + 0x525413f1, + 0xf406e1b8, +/* 0x038e: host_recv_wait */ + 0x17f1b30b, + 0x11cf04cc, + 0xc827f100, + 0x0022cf04, + 0xb80816f0, 0x0bf40612, - 0x071ec42f, - 0xb704ee94, - 0x980270e0, - 0xec9803eb, - 0x01ed9802, - 0xf500ee98, - 0xb6026b21, - 0x1ec40110, - 0xb007f10f, - 0x000ed004, - 0x0ef404bd, -/* 0x0365: host_send_done */ -/* 0x0367: host_recv */ - 0xf100f8c3, - 0xf14e4917, - 0xb8525413, - 0x0bf406e1, -/* 0x0375: host_recv_wait */ - 0xcc17f1b3, - 0x0011cf04, - 0x04c827f1, - 0xf00022cf, - 0x12b80816, - 0xec0bf406, - 0xb60723c4, - 0x30b70434, - 0x3b8002f0, - 0x023c8003, - 0x80013d80, - 0x20b6003e, - 0x0f24f001, - 0x04c807f1, + 0x0723c4ec, + 0xb70434b6, + 0x8002f030, + 0x3c80033b, + 0x013d8002, + 0xb6003e80, + 0x24f00120, + 0xc807f10f, + 0x0002d004, + 0x27f004bd, + 0x0007f040, 0xbd0002d0, - 0x4027f004, - 0xd00007f0, - 0x04bd0002, -/* 0x03be: host_init */ - 0x17f100f8, - 0x14b60080, - 0x7015f110, - 0xd007f102, - 0x0001d004, - 0x17f104bd, - 0x14b60080, - 0xf015f110, - 0xdc07f102, - 0x0001d004, - 0x17f004bd, - 0xc407f101, - 0x0001d004, - 0x00f804bd, -/* 0x03f4: memx_func_enter */ - 0xf10467f0, - 0xd007e007, - 0x04bd0006, -/* 0x0400: memx_func_enter_wait */ - 0x07c067f1, - 0xf00066cf, - 0x0bf40464, - 0x001698f6, - 0xf80410b6, -/* 0x0415: memx_func_leave */ +/* 0x03d7: host_init */ + 0xf100f804, + 0xb6008017, + 0x15f11014, + 0x07f10270, + 0x01d004d0, + 0xf104bd00, + 0xb6008017, + 0x15f11014, + 0x07f102f0, + 0x01d004dc, + 0xf004bd00, + 0x07f10117, + 0x01d004c4, + 0xf804bd00, +/* 0x040d: memx_func_enter */ 0x0467f000, - 0x07e407f1, + 0x07e007f1, 0xbd0006d0, -/* 0x0421: memx_func_leave_wait */ +/* 0x0419: memx_func_enter_wait */ 0xc067f104, 0x0066cf07, 0xf40464f0, - 0x00f8f61b, -/* 0x0430: memx_func_wr32 */ - 0x98001698, - 0x10b60115, - 0xf960f908, - 0xfcd0fc50, - 0x3321f4e0, - 0xf40242b6, - 0x00f8e91b, -/* 0x044c: memx_func_wait */ - 0xcf2c87f0, - 0x1e980088, - 0x011d9800, - 0x98021c98, - 0x10b6031b, - 0x7e21f410, -/* 0x0466: memx_func_delay */ - 0x1e9800f8, + 0x1698f60b, 0x0410b600, - 0xf86721f4, -/* 0x0471: memx_exec */ - 0xf9e0f900, - 0x02c1b9d0, -/* 0x047b: memx_exec_next */ - 0x9802b2b9, - 0x10b60013, - 0x10349504, - 0x980c30f0, - 0x55f9de35, - 0xf40612b8, - 0xd0fcec1e, - 0x21f5e0fc, - 0x00f8026b, -/* 0x049c: memx_info */ - 0x03acc7f1, - 0x0800b7f1, - 0x026b21f5, -/* 0x04aa: memx_recv */ - 0xd6b000f8, - 0xc40bf401, - 0xf400d6b0, - 0x00f8e90b, -/* 0x04b8: memx_init */ -/* 0x04ba: perf_recv */ - 0x00f800f8, -/* 0x04bc: perf_init */ -/* 0x04be: i2c_drive_scl */ - 0x36b000f8, - 0x0e0bf400, - 0x07e007f1, +/* 0x042e: memx_func_leave */ + 0x67f000f8, + 0xe407f104, + 0x0006d007, +/* 0x043a: memx_func_leave_wait */ + 0x67f104bd, + 0x66cf07c0, + 0x0464f000, + 0xf8f61bf4, +/* 0x0449: memx_func_wr32 */ + 0x00169800, + 0xb6011598, + 0x60f90810, + 0xd0fc50f9, + 0x21f4e0fc, + 0x0242b633, + 0xf8e91bf4, +/* 0x0465: memx_func_wait */ + 0x2c87f000, + 0x980088cf, + 0x1d98001e, + 0x021c9801, + 0xb6031b98, + 0x21f41010, +/* 0x047f: memx_func_delay */ + 0x9800f87e, + 0x10b6001e, + 0x6721f404, +/* 0x048a: memx_exec */ + 0xe0f900f8, + 0xc1b9d0f9, + 0x02b2b902, +/* 0x0494: memx_exec_next */ + 0xb6001398, + 0x34950410, + 0x0c30f010, + 0xf9de3598, + 0x0612b855, + 0xfcec1ef4, + 0xf5e0fcd0, + 0xf8028421, +/* 0x04b5: memx_info */ + 0xacc7f100, + 0x00b7f103, + 0x8421f508, +/* 0x04c3: memx_recv */ + 0xb000f802, + 0x0bf401d6, + 0x00d6b0c4, + 0xf8e90bf4, +/* 0x04d1: memx_init */ +/* 0x04d3: perf_recv */ + 0xf800f800, +/* 0x04d5: perf_init */ +/* 0x04d7: i2c_drive_scl */ + 0xb000f800, + 0x0bf40036, + 0xe007f10e, + 0x0001d007, + 0x00f804bd, +/* 0x04e8: i2c_drive_scl_lo */ + 0x07e407f1, 0xbd0001d0, -/* 0x04cf: i2c_drive_scl_lo */ - 0xf100f804, - 0xd007e407, - 0x04bd0001, -/* 0x04da: i2c_drive_sda */ - 0x36b000f8, - 0x0e0bf400, - 0x07e007f1, +/* 0x04f3: i2c_drive_sda */ + 0xb000f804, + 0x0bf40036, + 0xe007f10e, + 0x0002d007, + 0x00f804bd, +/* 0x0504: i2c_drive_sda_lo */ + 0x07e407f1, 0xbd0002d0, -/* 0x04eb: i2c_drive_sda_lo */ - 0xf100f804, - 0xd007e407, - 0x04bd0002, -/* 0x04f6: i2c_sense_scl */ - 0x32f400f8, - 0xc437f101, - 0x0033cf07, - 0xf40431fd, - 0x31f4060b, -/* 0x0509: i2c_sense_scl_done */ -/* 0x050b: i2c_sense_sda */ - 0xf400f801, +/* 0x050f: i2c_sense_scl */ + 0xf400f804, 0x37f10132, 0x33cf07c4, - 0x0432fd00, + 0x0431fd00, 0xf4060bf4, -/* 0x051e: i2c_sense_sda_done */ +/* 0x0522: i2c_sense_scl_done */ 0x00f80131, -/* 0x0520: i2c_raise_scl */ - 0x47f140f9, - 0x37f00898, - 0xbe21f501, -/* 0x052d: i2c_raise_scl_wait */ +/* 0x0524: i2c_sense_sda */ + 0xf10132f4, + 0xcf07c437, + 0x32fd0033, + 0x060bf404, +/* 0x0537: i2c_sense_sda_done */ + 0xf80131f4, +/* 0x0539: i2c_raise_scl */ + 0xf140f900, + 0xf0089847, + 0x21f50137, +/* 0x0546: i2c_raise_scl_wait */ + 0xe7f104d7, + 0x21f403e8, + 0x0f21f567, + 0x0901f405, + 0xf40142b6, +/* 0x055a: i2c_raise_scl_done */ + 0x40fcef1b, +/* 0x055e: i2c_start */ + 0x21f500f8, + 0x11f4050f, + 0x2421f50d, + 0x0611f405, +/* 0x056f: i2c_start_rep */ + 0xf0300ef4, + 0x21f50037, + 0x37f004d7, + 0xf321f501, + 0x0076bb04, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60539, + 0x1f11f404, +/* 0x059c: i2c_start_send */ + 0xf50037f0, + 0xf104f321, + 0xf41388e7, + 0x37f06721, + 0xd721f500, + 0x88e7f104, + 0x6721f413, +/* 0x05b8: i2c_start_out */ +/* 0x05ba: i2c_stop */ + 0x37f000f8, + 0xd721f500, + 0x0037f004, + 0x04f321f5, + 0x03e8e7f1, + 0xf06721f4, + 0x21f50137, + 0xe7f104d7, + 0x21f41388, + 0x0137f067, + 0x04f321f5, + 0x1388e7f1, + 0xf86721f4, +/* 0x05ed: i2c_bitw */ + 0xf321f500, 0xe8e7f104, 0x6721f403, - 0x04f621f5, - 0xb60901f4, - 0x1bf40142, -/* 0x0541: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x0545: i2c_start */ - 0xf621f500, - 0x0d11f404, - 0x050b21f5, - 0xf40611f4, -/* 0x0556: i2c_start_rep */ - 0x37f0300e, - 0xbe21f500, - 0x0137f004, - 0x04da21f5, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x2021f550, + 0x3921f550, 0x0464b605, -/* 0x0583: i2c_start_send */ - 0xf01f11f4, - 0x21f50037, - 0xe7f104da, - 0x21f41388, - 0x0037f067, - 0x04be21f5, - 0x1388e7f1, -/* 0x059f: i2c_start_out */ - 0xf86721f4, -/* 0x05a1: i2c_stop */ - 0x0037f000, - 0x04be21f5, - 0xf50037f0, - 0xf104da21, - 0xf403e8e7, + 0xf11811f4, + 0xf41388e7, 0x37f06721, - 0xbe21f501, + 0xd721f500, 0x88e7f104, 0x6721f413, - 0xf50137f0, - 0xf104da21, - 0xf41388e7, - 0x00f86721, -/* 0x05d4: i2c_bitw */ - 0x04da21f5, - 0x03e8e7f1, - 0xbb6721f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x052021f5, - 0xf40464b6, - 0xe7f11811, +/* 0x062c: i2c_bitw_out */ +/* 0x062e: i2c_bitr */ + 0x37f000f8, + 0xf321f501, + 0xe8e7f104, + 0x6721f403, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x3921f550, + 0x0464b605, + 0xf51b11f4, + 0xf0052421, + 0x21f50037, + 0xe7f104d7, 0x21f41388, - 0x0037f067, - 0x04be21f5, - 0x1388e7f1, -/* 0x0613: i2c_bitw_out */ - 0xf86721f4, -/* 0x0615: i2c_bitr */ - 0x0137f000, - 0x04da21f5, - 0x03e8e7f1, - 0xbb6721f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x052021f5, - 0xf40464b6, - 0x21f51b11, - 0x37f0050b, - 0xbe21f500, - 0x88e7f104, - 0x6721f413, - 0xf4013cf0, -/* 0x065a: i2c_bitr_done */ - 0x00f80131, -/* 0x065c: i2c_get_byte */ - 0xf00057f0, -/* 0x0662: i2c_get_byte_next */ - 0x54b60847, + 0x013cf067, +/* 0x0673: i2c_bitr_done */ + 0xf80131f4, +/* 0x0675: i2c_get_byte */ + 0x0057f000, +/* 0x067b: i2c_get_byte_next */ + 0xb60847f0, + 0x76bb0154, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6062e21, + 0x11f40464, + 0x0553fd2b, + 0xf40142b6, + 0x37f0d81b, 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60615, - 0x2b11f404, - 0xb60553fd, - 0x1bf40142, - 0x0137f0d8, + 0x64b605ed, +/* 0x06c5: i2c_get_byte_done */ +/* 0x06c7: i2c_put_byte */ + 0xf000f804, +/* 0x06ca: i2c_put_byte_next */ + 0x42b60847, + 0x3854ff01, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xd421f550, + 0xed21f550, 0x0464b605, -/* 0x06ac: i2c_get_byte_done */ -/* 0x06ae: i2c_put_byte */ - 0x47f000f8, -/* 0x06b1: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x05d421f5, - 0xf40464b6, - 0x46b03411, - 0xd81bf400, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x1521f550, - 0x0464b606, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x0707: i2c_put_byte_done */ - 0xf80132f4, -/* 0x0709: i2c_addr */ - 0x0076bb00, + 0xb03411f4, + 0x1bf40046, + 0x0076bbd8, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60545, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, + 0x64b6062e, + 0x0f11f404, + 0xb00076bb, + 0x1bf40136, + 0x0132f406, +/* 0x0720: i2c_put_byte_done */ +/* 0x0722: i2c_addr */ + 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb606ae21, -/* 0x074e: i2c_addr_done */ - 0x00f80464, -/* 0x0750: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b705e4, - 0x00f8d014, -/* 0x075c: i2c_acquire */ - 0x075021f5, + 0xb6055e21, + 0x11f40464, + 0x2ec3e729, + 0x0134b601, + 0xbb0553fd, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x06c721f5, +/* 0x0767: i2c_addr_done */ + 0xf80464b6, +/* 0x0769: i2c_acquire_addr */ + 0xf8cec700, + 0xb705e4b6, + 0xf8d014e0, +/* 0x0775: i2c_acquire */ + 0x6921f500, + 0x0421f407, + 0xf403d9f0, + 0x00f83321, +/* 0x0784: i2c_release */ + 0x076921f5, 0xf00421f4, - 0x21f403d9, -/* 0x076b: i2c_release */ - 0xf500f833, - 0xf4075021, - 0xdaf00421, - 0x3321f403, -/* 0x077a: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13a0013a, - 0x32980bd4, - 0xac13a000, - 0x0031980b, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x5c21f550, - 0x0464b607, - 0xd6b0d0fc, - 0xb31bf500, - 0x0057f000, + 0x21f403da, +/* 0x0793: i2c_recv */ + 0xf400f833, + 0xc1c70132, + 0x0214b6f8, + 0xf52816b0, + 0xa0013a1f, + 0x980bd413, + 0x13a00032, + 0x31980bac, + 0x0231f400, + 0xe0f9d0f9, + 0x67f1d0f9, + 0x63f10000, + 0x67921000, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60775, + 0xb0d0fc04, + 0x1bf500d6, + 0x57f000b3, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60722, + 0xd011f504, + 0xe0c5c700, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x0921f550, - 0x0464b607, - 0x00d011f5, - 0xbbe0c5c7, + 0xc721f550, + 0x0464b606, + 0x00ad11f5, + 0xbb0157f0, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x06ae21f5, + 0x072221f5, 0xf50464b6, - 0xf000ad11, - 0x76bb0157, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6070921, - 0x11f50464, - 0x76bb008a, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6065c21, - 0x11f40464, - 0xe05bcb6a, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xa121f550, - 0x0464b605, - 0xbd025bb9, - 0x430ef474, -/* 0x0880: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x57f03d1b, - 0x0921f500, - 0x3311f407, - 0xf5e0c5c7, - 0xf406ae21, - 0x57f02911, - 0x0921f500, - 0x1f11f407, - 0xf5e0b5c7, - 0xf406ae21, - 0x21f51511, - 0x74bd05a1, - 0xf408c5c7, - 0x32f4091b, - 0x030ef402, -/* 0x08c0: i2c_recv_not_wr08 */ -/* 0x08c0: i2c_recv_done */ - 0xf5f8cec7, - 0xfc076b21, - 0xf4d0fce0, - 0x7cb90a12, - 0x6b21f502, -/* 0x08d5: i2c_recv_exit */ -/* 0x08d7: i2c_init */ - 0xf800f802, -/* 0x08d9: test_recv */ - 0xd817f100, - 0x0011cf05, - 0xf10110b6, - 0xd005d807, - 0x04bd0001, - 0xd900e7f1, - 0x134fe3f1, - 0x01b621f5, -/* 0x08fa: test_init */ - 0xe7f100f8, - 0x21f50800, - 0x00f801b6, -/* 0x0904: idle_recv */ -/* 0x0906: idle */ - 0x31f400f8, - 0xd417f100, - 0x0011cf05, - 0xf10110b6, - 0xd005d407, - 0x04bd0001, -/* 0x091c: idle_loop */ - 0xf45817f0, -/* 0x0922: idle_proc */ -/* 0x0922: idle_proc_exec */ - 0x10f90232, - 0xf5021eb9, - 0xfc027421, - 0x0911f410, - 0xf40231f4, -/* 0x0936: idle_proc_next */ - 0x10b6ef0e, - 0x061fb858, - 0xf4e61bf4, - 0x28f4dd02, - 0xc10ef400, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, + 0xbb008a11, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x067521f5, + 0xf40464b6, + 0x5bcb6a11, + 0x0076bbe0, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b605ba, + 0x025bb904, + 0x0ef474bd, +/* 0x0899: i2c_recv_not_rd08 */ + 0x01d6b043, + 0xf03d1bf4, + 0x21f50057, + 0x11f40722, + 0xe0c5c733, + 0x06c721f5, + 0xf02911f4, + 0x21f50057, + 0x11f40722, + 0xe0b5c71f, + 0x06c721f5, + 0xf51511f4, + 0xbd05ba21, + 0x08c5c774, + 0xf4091bf4, + 0x0ef40232, +/* 0x08d9: i2c_recv_not_wr08 */ +/* 0x08d9: i2c_recv_done */ + 0xf8cec703, + 0x078421f5, + 0xd0fce0fc, + 0xb90a12f4, + 0x21f5027c, +/* 0x08ee: i2c_recv_exit */ + 0x00f80284, +/* 0x08f0: i2c_init */ +/* 0x08f2: test_recv */ + 0x17f100f8, + 0x11cf05d8, + 0x0110b600, + 0x05d807f1, + 0xbd0001d0, + 0x00e7f104, + 0x4fe3f1d9, + 0xb621f513, +/* 0x0913: test_init */ + 0xf100f801, + 0xf50800e7, + 0xf801b621, +/* 0x091d: idle_recv */ +/* 0x091f: idle */ + 0xf400f800, + 0x17f10031, + 0x11cf05d4, + 0x0110b600, + 0x05d407f1, + 0xbd0001d0, +/* 0x0935: idle_loop */ + 0x5817f004, +/* 0x093b: idle_proc */ +/* 0x093b: idle_proc_exec */ + 0xf90232f4, + 0x021eb910, + 0x028d21f5, + 0x11f410fc, + 0x0231f409, +/* 0x094f: idle_proc_next */ + 0xb6ef0ef4, + 0x1fb85810, + 0xe61bf406, + 0xf4dd02f4, + 0x0ef40028, + 0x000000c1, 0x00000000, 0x00000000, 0x00000000, -- 2.0.0
Martin Peres
2014-Aug-17 15:33 UTC
[Nouveau] [PATCH 06/10] pwr: add some arith functions (mul32_32_64, subu64 and addu64)
From: Martin Peres <martin.peres at labri.fr> Signed-off-by: Martin Peres <martin.peres at free.fr> --- drm/core/subdev/pwr/fuc/arith.fuc | 1 + nvkm/subdev/pwr/Makefile.am | 3 +- nvkm/subdev/pwr/fuc/arith.fuc | 94 ++++ nvkm/subdev/pwr/fuc/macros.fuc | 10 + nvkm/subdev/pwr/fuc/nv108.fuc | 3 + nvkm/subdev/pwr/fuc/nv108.fuc.h | 875 ++++++++++++++++++++----------------- nvkm/subdev/pwr/fuc/nva3.fuc | 3 + nvkm/subdev/pwr/fuc/nva3.fuc.h | 895 +++++++++++++++++++------------------- nvkm/subdev/pwr/fuc/nvc0.fuc | 3 + nvkm/subdev/pwr/fuc/nvc0.fuc.h | 895 +++++++++++++++++++------------------- nvkm/subdev/pwr/fuc/nvd0.fuc | 3 + nvkm/subdev/pwr/fuc/nvd0.fuc.h | 873 ++++++++++++++++++------------------- 12 files changed, 1922 insertions(+), 1736 deletions(-) create mode 120000 drm/core/subdev/pwr/fuc/arith.fuc create mode 100644 nvkm/subdev/pwr/fuc/arith.fuc diff --git a/drm/core/subdev/pwr/fuc/arith.fuc b/drm/core/subdev/pwr/fuc/arith.fuc new file mode 120000 index 0000000..240ced4 --- /dev/null +++ b/drm/core/subdev/pwr/fuc/arith.fuc @@ -0,0 +1 @@ +../../../../../nvkm/subdev/pwr/fuc/arith.fuc \ No newline at end of file diff --git a/nvkm/subdev/pwr/Makefile.am b/nvkm/subdev/pwr/Makefile.am index 335decc..2bb4ca6 100644 --- a/nvkm/subdev/pwr/Makefile.am +++ b/nvkm/subdev/pwr/Makefile.am @@ -22,7 +22,8 @@ FUC_COMMON = fuc/os.h \ fuc/memx.fuc \ fuc/perf.fuc \ fuc/i2c_.fuc \ - fuc/test.fuc + fuc/test.fuc \ + fuc/arith.fuc fuc/nva3.fuc.h: fuc/nva3.fuc ${FUC_COMMON} cpp -Ifuc -CC fuc/nva3.fuc | cpp \ diff --git a/nvkm/subdev/pwr/fuc/arith.fuc b/nvkm/subdev/pwr/fuc/arith.fuc new file mode 100644 index 0000000..214a6d9 --- /dev/null +++ b/nvkm/subdev/pwr/fuc/arith.fuc @@ -0,0 +1,94 @@ +/* + * Copyright 2014 Martin Peres <martin.peres at free.fr> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the folloing conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: Martin Peres + */ + +/****************************************************************************** + * arith data segment + *****************************************************************************/ +#ifdef INCLUDE_PROC +#endif + +#ifdef INCLUDE_DATA +#endif + +/****************************************************************************** + * arith code segment + *****************************************************************************/ +#ifdef INCLUDE_CODE + +// does a 32x32 -> 64 multiplication +// +// A * B = A_lo * B_lo +// + ( A_hi * B_lo ) << 16 +// + ( A_lo * B_hi ) << 16 +// + ( A_hi * B_hi ) << 32 +// +// $r15 - current +// $r14 - A +// $r13 - B +// $r12 - mul_lo (return) +// $r11 - mul_hi (return) +// $r0 - zero +mulu32_32_64: + push $r1 // A_hi + push $r2 // B_hi + push $r3 // tmp0 + push $r4 // tmp1 + + shr b32 $r1 $r14 16 + shr b32 $r2 $r13 16 + + clear b32 $r12 + clear b32 $r11 + + // A_lo * B_lo + mulu $r12 $r14 $r13 + + // ( A_hi * B_lo ) << 16 + mulu $r3 $r1 $r13 // tmp0 = A_hi * B_lo + mov b32 $r4 $r3 + and $r3 0xffff // tmp0 = tmp0_lo + shl b32 $r3 16 + shr b32 $r4 16 // tmp1 = tmp0_hi + add b32 $r12 $r3 + adc b32 $r11 $r4 + + // ( A_lo * B_hi ) << 16 + mulu $r3 $r14 $r2 // tmp0 = A_lo * B_hi + mov b32 $r4 $r3 + and $r3 0xffff // tmp0 = tmp0_lo + shl b32 $r3 16 + shr b32 $r4 16 // tmp1 = tmp0_hi + add b32 $r12 $r3 + adc b32 $r11 $r4 + + // ( A_hi * B_hi ) << 32 + mulu $r3 $r1 $r2 // tmp0 = A_hi * B_hi + add b32 $r11 $r3 + + pop $r4 + pop $r3 + pop $r2 + pop $r1 + ret +#endif diff --git a/nvkm/subdev/pwr/fuc/macros.fuc b/nvkm/subdev/pwr/fuc/macros.fuc index 5668e04..9707e3f 100644 --- a/nvkm/subdev/pwr/fuc/macros.fuc +++ b/nvkm/subdev/pwr/fuc/macros.fuc @@ -250,3 +250,13 @@ */ st b32 D[$r0] reg /* */ clear b32 $r0 #endif + +// does a 64+64 -> 64 unsigned addition (C = A + B) +#define addu64(reg_a_c_hi, reg_a_c_lo, b_hi, b_lo) /* +*/ add b32 reg_a_c_lo b_lo /* +*/ adc b32 reg_a_c_hi b_hi + +// does a 64+64 -> 64 substraction (C = A - B) +#define subu64(reg_a_c_hi, reg_a_c_lo, b_hi, b_lo) /* +*/ sub b32 reg_a_c_lo b_lo /* +*/ sbb b32 reg_a_c_hi b_hi diff --git a/nvkm/subdev/pwr/fuc/nv108.fuc b/nvkm/subdev/pwr/fuc/nv108.fuc index 17a8a38..cdff6f6 100644 --- a/nvkm/subdev/pwr/fuc/nv108.fuc +++ b/nvkm/subdev/pwr/fuc/nv108.fuc @@ -34,6 +34,7 @@ .section #nv108_pwr_data #define INCLUDE_PROC #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" @@ -44,6 +45,7 @@ #define INCLUDE_DATA #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" @@ -56,6 +58,7 @@ .section #nv108_pwr_code #define INCLUDE_CODE #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" diff --git a/nvkm/subdev/pwr/fuc/nv108.fuc.h b/nvkm/subdev/pwr/fuc/nv108.fuc.h index 38b8ed4..ae8850c 100644 --- a/nvkm/subdev/pwr/fuc/nv108.fuc.h +++ b/nvkm/subdev/pwr/fuc/nv108.fuc.h @@ -24,8 +24,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, + 0x000003e0, 0x00000391, - 0x00000342, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x0000047c, - 0x0000046e, + 0x000004cb, + 0x000004bd, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000480, - 0x0000047e, + 0x000004cf, + 0x000004cd, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000884, - 0x0000072b, + 0x000008d3, + 0x0000077a, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x000008a5, - 0x00000886, + 0x000008f4, + 0x000008d5, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x000008b0, - 0x000008ae, + 0x000008ff, + 0x000008fd, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nv108_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x000003c1, + 0x00000410, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x000003df, + 0x0000042e, 0x00000002, 0x00000002, - 0x000003f7, + 0x00000446, 0x00040003, 0x00000000, - 0x00000414, + 0x00000463, 0x00010004, 0x00000000, - 0x0000042e, + 0x0000047d, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -1010,449 +1010,514 @@ uint32_t nv108_pwr_code[] = { 0xfa0bf400, 0xf0b615f9, 0xf20ef458, -/* 0x0304: host_send */ - 0xcf04b041, - 0xa0420011, - 0x0022cf04, +/* 0x0304: mulu32_32_64 */ + 0x20f910f9, + 0x40f930f9, + 0x9510e195, + 0xc4bd10d2, + 0xedffb4bd, + 0x301dffc0, + 0x34f134b2, + 0x34b6ffff, + 0x1045b610, + 0xbb00c3bb, + 0xe2ff01b4, + 0xf134b230, + 0xb6ffff34, + 0x45b61034, + 0x00c3bb10, + 0xff01b4bb, + 0xb3bb3012, + 0xfc40fc00, + 0xfc20fc30, +/* 0x0353: host_send */ + 0x4100f810, + 0x11cf04b0, + 0x04a04200, + 0xa60022cf, + 0x2e0bf412, + 0x94071ec4, + 0xe0b704ee, + 0xeb980270, + 0x02ec9803, + 0x9801ed98, + 0x577e00ee, + 0x10b60002, + 0x0f1ec401, + 0xf604b040, + 0x04bd000e, +/* 0x038f: host_send_done */ + 0xf8c70ef4, +/* 0x0391: host_recv */ + 0x4e494100, + 0x525413f1, + 0x0bf4e1a6, +/* 0x039d: host_recv_wait */ + 0x04cc41b9, + 0x420011cf, + 0x22cf04c8, + 0x0816f000, 0x0bf412a6, - 0x071ec42e, - 0xb704ee94, - 0x980270e0, - 0xec9803eb, - 0x01ed9802, - 0x7e00ee98, - 0xb6000257, - 0x1ec40110, - 0x04b0400f, - 0xbd000ef6, - 0xc70ef404, -/* 0x0340: host_send_done */ -/* 0x0342: host_recv */ - 0x494100f8, - 0x5413f14e, - 0xf4e1a652, -/* 0x034e: host_recv_wait */ - 0xcc41b90b, - 0x0011cf04, - 0xcf04c842, - 0x16f00022, - 0xf412a608, - 0x23c4ef0b, - 0x0434b607, - 0x02f030b7, - 0xb5033bb5, - 0x3db5023c, - 0x003eb501, - 0xf00120b6, - 0xc8400f24, - 0x0002f604, - 0x400204bd, - 0x02f60000, - 0xf804bd00, -/* 0x0391: host_init */ - 0x00804100, - 0xf11014b6, - 0x40027015, - 0x01f604d0, - 0x4104bd00, - 0x14b60080, - 0xf015f110, - 0x04dc4002, - 0xbd0001f6, - 0x40010104, - 0x01f604c4, - 0xf804bd00, -/* 0x03c1: memx_func_enter */ - 0x40040600, - 0x06f607e0, -/* 0x03cb: memx_func_enter_wait */ - 0x4604bd00, - 0x66cf07c0, - 0x0464f000, - 0x98f70bf4, - 0x10b60016, -/* 0x03df: memx_func_leave */ - 0x0600f804, - 0x07e44004, - 0xbd0006f6, -/* 0x03e9: memx_func_leave_wait */ - 0x07c04604, - 0xf00066cf, - 0x1bf40464, -/* 0x03f7: memx_func_wr32 */ - 0x9800f8f7, - 0x15980016, - 0x0810b601, - 0x50f960f9, - 0xe0fcd0fc, - 0x00002e7e, - 0xf40242b6, - 0x00f8e81b, -/* 0x0414: memx_func_wait */ - 0x88cf2c08, - 0x001e9800, - 0x98011d98, - 0x1b98021c, - 0x1010b603, - 0x0000717e, -/* 0x042e: memx_func_delay */ - 0x1e9800f8, - 0x0410b600, - 0x00005d7e, -/* 0x043a: memx_exec */ - 0xe0f900f8, - 0xc1b2d0f9, -/* 0x0442: memx_exec_next */ - 0x1398b2b2, - 0x0410b600, - 0xf0103495, - 0x35980c30, - 0xa655f9de, - 0xed1ef412, - 0xe0fcd0fc, - 0x0002577e, -/* 0x0462: memx_info */ - 0xac4c00f8, - 0x08004b03, - 0x0002577e, -/* 0x046e: memx_recv */ - 0xd6b000f8, - 0xc90bf401, - 0xf400d6b0, - 0x00f8eb0b, -/* 0x047c: memx_init */ -/* 0x047e: perf_recv */ - 0x00f800f8, -/* 0x0480: perf_init */ -/* 0x0482: i2c_drive_scl */ - 0x36b000f8, - 0x0d0bf400, - 0xf607e040, - 0x04bd0001, -/* 0x0492: i2c_drive_scl_lo */ - 0xe44000f8, - 0x0001f607, + 0x0723c4ef, + 0xb70434b6, + 0xb502f030, + 0x3cb5033b, + 0x013db502, + 0xb6003eb5, + 0x24f00120, + 0x04c8400f, + 0xbd0002f6, + 0x00400204, + 0x0002f600, 0x00f804bd, -/* 0x049c: i2c_drive_sda */ - 0xf40036b0, - 0xe0400d0b, - 0x0002f607, +/* 0x03e0: host_init */ + 0xb6008041, + 0x15f11014, + 0xd0400270, + 0x0001f604, + 0x804104bd, + 0x1014b600, + 0x02f015f1, + 0xf604dc40, + 0x04bd0001, + 0xc4400101, + 0x0001f604, 0x00f804bd, -/* 0x04ac: i2c_drive_sda_lo */ +/* 0x0410: memx_func_enter */ + 0xe0400406, + 0x0006f607, +/* 0x041a: memx_func_enter_wait */ + 0xc04604bd, + 0x0066cf07, + 0xf40464f0, + 0x1698f70b, + 0x0410b600, +/* 0x042e: memx_func_leave */ + 0x040600f8, 0xf607e440, - 0x04bd0002, -/* 0x04b6: i2c_sense_scl */ - 0x32f400f8, - 0x07c44301, - 0xfd0033cf, - 0x0bf40431, - 0x0131f406, -/* 0x04c8: i2c_sense_scl_done */ -/* 0x04ca: i2c_sense_sda */ - 0x32f400f8, - 0x07c44301, - 0xfd0033cf, - 0x0bf40432, - 0x0131f406, -/* 0x04dc: i2c_sense_sda_done */ -/* 0x04de: i2c_raise_scl */ - 0x40f900f8, - 0x03089844, - 0x04827e01, -/* 0x04e9: i2c_raise_scl_wait */ - 0x03e84e00, + 0x04bd0006, +/* 0x0438: memx_func_leave_wait */ + 0xcf07c046, + 0x64f00066, + 0xf71bf404, +/* 0x0446: memx_func_wr32 */ + 0x169800f8, + 0x01159800, + 0xf90810b6, + 0xfc50f960, + 0x7ee0fcd0, + 0xb600002e, + 0x1bf40242, +/* 0x0463: memx_func_wait */ + 0x0800f8e8, + 0x0088cf2c, + 0x98001e98, + 0x1c98011d, + 0x031b9802, + 0x7e1010b6, + 0xf8000071, +/* 0x047d: memx_func_delay */ + 0x001e9800, + 0x7e0410b6, + 0xf800005d, +/* 0x0489: memx_exec */ + 0xf9e0f900, + 0xb2c1b2d0, +/* 0x0491: memx_exec_next */ + 0x001398b2, + 0x950410b6, + 0x30f01034, + 0xde35980c, + 0x12a655f9, + 0xfced1ef4, + 0x7ee0fcd0, + 0xf8000257, +/* 0x04b1: memx_info */ + 0x03ac4c00, + 0x7e08004b, + 0xf8000257, +/* 0x04bd: memx_recv */ + 0x01d6b000, + 0xb0c90bf4, + 0x0bf400d6, +/* 0x04cb: memx_init */ + 0xf800f8eb, +/* 0x04cd: perf_recv */ +/* 0x04cf: perf_init */ + 0xf800f800, +/* 0x04d1: i2c_drive_scl */ + 0x0036b000, + 0x400d0bf4, + 0x01f607e0, + 0xf804bd00, +/* 0x04e1: i2c_drive_scl_lo */ + 0x07e44000, + 0xbd0001f6, +/* 0x04eb: i2c_drive_sda */ + 0xb000f804, + 0x0bf40036, + 0x07e0400d, + 0xbd0002f6, +/* 0x04fb: i2c_drive_sda_lo */ + 0x4000f804, + 0x02f607e4, + 0xf804bd00, +/* 0x0505: i2c_sense_scl */ + 0x0132f400, + 0xcf07c443, + 0x31fd0033, + 0x060bf404, +/* 0x0517: i2c_sense_scl_done */ + 0xf80131f4, +/* 0x0519: i2c_sense_sda */ + 0x0132f400, + 0xcf07c443, + 0x32fd0033, + 0x060bf404, +/* 0x052b: i2c_sense_sda_done */ + 0xf80131f4, +/* 0x052d: i2c_raise_scl */ + 0x4440f900, + 0x01030898, + 0x0004d17e, +/* 0x0538: i2c_raise_scl_wait */ + 0x7e03e84e, + 0x7e00005d, + 0xf4000505, + 0x42b60901, + 0xef1bf401, +/* 0x054c: i2c_raise_scl_done */ + 0x00f840fc, +/* 0x0550: i2c_start */ + 0x0005057e, + 0x7e0d11f4, + 0xf4000519, + 0x0ef40611, +/* 0x0561: i2c_start_rep */ + 0x7e00032e, + 0x030004d1, + 0x04eb7e01, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x2d7e50fc, + 0x64b60005, + 0x1d11f404, +/* 0x058c: i2c_start_send */ + 0xeb7e0003, + 0x884e0004, + 0x005d7e13, + 0x7e000300, + 0x4e0004d1, + 0x5d7e1388, +/* 0x05a6: i2c_start_out */ + 0x00f80000, +/* 0x05a8: i2c_stop */ + 0xd17e0003, + 0x00030004, + 0x0004eb7e, + 0x7e03e84e, + 0x0300005d, + 0x04d17e01, + 0x13884e00, 0x00005d7e, - 0x0004b67e, - 0xb60901f4, - 0x1bf40142, -/* 0x04fd: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x0501: i2c_start */ - 0x04b67e00, - 0x0d11f400, - 0x0004ca7e, - 0xf40611f4, -/* 0x0512: i2c_start_rep */ - 0x00032e0e, - 0x0004827e, - 0x9c7e0103, - 0x76bb0004, + 0xeb7e0103, + 0x884e0004, + 0x005d7e13, +/* 0x05d7: i2c_bitw */ + 0x7e00f800, + 0x4e0004eb, + 0x5d7e03e8, + 0x76bb0000, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb60004de, + 0xb600052d, 0x11f40464, -/* 0x053d: i2c_start_send */ - 0x7e00031d, - 0x4e00049c, - 0x5d7e1388, - 0x00030000, - 0x0004827e, - 0x7e13884e, -/* 0x0557: i2c_start_out */ - 0xf800005d, -/* 0x0559: i2c_stop */ - 0x7e000300, - 0x03000482, - 0x049c7e00, - 0x03e84e00, + 0x13884e17, 0x00005d7e, - 0x827e0103, + 0xd17e0003, 0x884e0004, 0x005d7e13, - 0x7e010300, - 0x4e00049c, - 0x5d7e1388, - 0x00f80000, -/* 0x0588: i2c_bitw */ - 0x00049c7e, - 0x7e03e84e, - 0xbb00005d, +/* 0x0615: i2c_bitw_out */ +/* 0x0617: i2c_bitr */ + 0x0300f800, + 0x04eb7e01, + 0x03e84e00, + 0x00005d7e, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x052d7e50, + 0x0464b600, + 0x7e1a11f4, + 0x03000519, + 0x04d17e00, + 0x13884e00, + 0x00005d7e, + 0xf4013cf0, +/* 0x065a: i2c_bitr_done */ + 0x00f80131, +/* 0x065c: i2c_get_byte */ + 0x08040005, +/* 0x0660: i2c_get_byte_next */ + 0xbb0154b6, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0004de7e, + 0x0006177e, 0xf40464b6, - 0x884e1711, - 0x005d7e13, - 0x7e000300, - 0x4e000482, - 0x5d7e1388, -/* 0x05c6: i2c_bitw_out */ - 0x00f80000, -/* 0x05c8: i2c_bitr */ - 0x9c7e0103, - 0xe84e0004, - 0x005d7e03, - 0x0076bb00, + 0x53fd2a11, + 0x0142b605, + 0x03d81bf4, + 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, - 0xde7e50fc, - 0x64b60004, - 0x1a11f404, - 0x0004ca7e, - 0x827e0003, - 0x884e0004, - 0x005d7e13, - 0x013cf000, -/* 0x060b: i2c_bitr_done */ - 0xf80131f4, -/* 0x060d: i2c_get_byte */ - 0x04000500, -/* 0x0611: i2c_get_byte_next */ - 0x0154b608, + 0xd77e50fc, + 0x64b60005, +/* 0x06a9: i2c_get_byte_done */ +/* 0x06ab: i2c_put_byte */ + 0x0400f804, +/* 0x06ad: i2c_put_byte_next */ + 0x0142b608, + 0xbb3854ff, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0005d77e, + 0xf40464b6, + 0x46b03411, + 0xd81bf400, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x05c87e50, + 0x06177e50, 0x0464b600, - 0xfd2a11f4, - 0x42b60553, - 0xd81bf401, - 0x76bb0103, + 0xbb0f11f4, + 0x36b00076, + 0x061bf401, +/* 0x0703: i2c_put_byte_done */ + 0xf80132f4, +/* 0x0705: i2c_addr */ + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x507e50fc, + 0x64b60005, + 0x2911f404, + 0x012ec3e7, + 0xfd0134b6, + 0x76bb0553, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb6000588, -/* 0x065a: i2c_get_byte_done */ + 0xb60006ab, +/* 0x074a: i2c_addr_done */ 0x00f80464, -/* 0x065c: i2c_put_byte */ -/* 0x065e: i2c_put_byte_next */ - 0x42b60804, - 0x3854ff01, +/* 0x074c: i2c_acquire_addr */ + 0xb6f8cec7, + 0xe0b705e4, + 0x00f8d014, +/* 0x0758: i2c_acquire */ + 0x00074c7e, + 0x0000047e, + 0x7e03d9f0, + 0xf800002e, +/* 0x0769: i2c_release */ + 0x074c7e00, + 0x00047e00, + 0x03daf000, + 0x00002e7e, +/* 0x077a: i2c_recv */ + 0x32f400f8, + 0xf8c1c701, + 0xb00214b6, + 0x1ff52816, + 0x13b80137, + 0x98000bd4, + 0x13b80032, + 0x98000bac, + 0x31f40031, + 0xf9d0f902, + 0xf1d0f9e0, + 0xf1000067, + 0x92100063, + 0x76bb0167, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0x7e50fc04, + 0xb6000758, + 0xd0fc0464, + 0xf500d6b0, + 0x0500b01b, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x057e50fc, + 0x64b60007, + 0xcc11f504, + 0xe0c5c700, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x05887e50, + 0x06ab7e50, 0x0464b600, - 0xb03411f4, - 0x1bf40046, - 0x0076bbd8, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0xc87e50fc, - 0x64b60005, - 0x0f11f404, - 0xb00076bb, - 0x1bf40136, - 0x0132f406, -/* 0x06b4: i2c_put_byte_done */ -/* 0x06b6: i2c_addr */ - 0x76bb00f8, + 0x00a911f5, + 0x76bb0105, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb6000501, - 0x11f40464, - 0x2ec3e729, - 0x0134b601, - 0xbb0553fd, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x00065c7e, -/* 0x06fb: i2c_addr_done */ - 0xf80464b6, -/* 0x06fd: i2c_acquire_addr */ - 0xf8cec700, - 0xb705e4b6, - 0xf8d014e0, -/* 0x0709: i2c_acquire */ - 0x06fd7e00, - 0x00047e00, - 0x03d9f000, - 0x00002e7e, -/* 0x071a: i2c_release */ - 0xfd7e00f8, - 0x047e0006, - 0xdaf00000, - 0x002e7e03, -/* 0x072b: i2c_recv */ - 0xf400f800, - 0xc1c70132, - 0x0214b6f8, - 0xf52816b0, - 0xb801371f, - 0x000bd413, - 0xb8003298, - 0x000bac13, - 0xf4003198, - 0xd0f90231, - 0xd0f9e0f9, - 0x000067f1, - 0x100063f1, - 0xbb016792, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0007097e, - 0xfc0464b6, - 0x00d6b0d0, - 0x00b01bf5, - 0x76bb0005, + 0xb6000705, + 0x11f50464, + 0x76bb0087, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb60006b6, - 0x11f50464, - 0xc5c700cc, - 0x0076bbe0, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x5c7e50fc, - 0x64b60006, - 0xa911f504, - 0xbb010500, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0006b67e, - 0xf50464b6, - 0xbb008711, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x00060d7e, - 0xf40464b6, - 0x5bcb6711, - 0x0076bbe0, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x597e50fc, - 0x64b60005, - 0xbd5bb204, - 0x410ef474, -/* 0x0830: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x00053b1b, - 0x0006b67e, - 0xc73211f4, - 0x5c7ee0c5, - 0x11f40006, - 0x7e000528, - 0xf40006b6, - 0xb5c71f11, - 0x065c7ee0, - 0x1511f400, - 0x0005597e, - 0xc5c774bd, - 0x091bf408, - 0xf40232f4, -/* 0x086e: i2c_recv_not_wr08 */ -/* 0x086e: i2c_recv_done */ - 0xcec7030e, - 0x071a7ef8, - 0xfce0fc00, - 0x0912f4d0, - 0x577e7cb2, -/* 0x0882: i2c_recv_exit */ - 0x00f80002, -/* 0x0884: i2c_init */ -/* 0x0886: test_recv */ - 0x584100f8, + 0xb600065c, + 0x11f40464, + 0xe05bcb67, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x05a87e50, + 0x0464b600, + 0x74bd5bb2, +/* 0x087f: i2c_recv_not_rd08 */ + 0xb0410ef4, + 0x1bf401d6, + 0x7e00053b, + 0xf4000705, + 0xc5c73211, + 0x06ab7ee0, + 0x2811f400, + 0x057e0005, + 0x11f40007, + 0xe0b5c71f, + 0x0006ab7e, + 0x7e1511f4, + 0xbd0005a8, + 0x08c5c774, + 0xf4091bf4, + 0x0ef40232, +/* 0x08bd: i2c_recv_not_wr08 */ +/* 0x08bd: i2c_recv_done */ + 0xf8cec703, + 0x0007697e, + 0xd0fce0fc, + 0xb20912f4, + 0x02577e7c, +/* 0x08d1: i2c_recv_exit */ +/* 0x08d3: i2c_init */ + 0xf800f800, +/* 0x08d5: test_recv */ + 0x04584100, + 0xb60011cf, + 0x58400110, + 0x0001f604, + 0xe7f104bd, + 0xe3f1d900, + 0x967e134f, + 0x00f80001, +/* 0x08f4: test_init */ + 0x7e08004e, + 0xf8000196, +/* 0x08fd: idle_recv */ +/* 0x08ff: idle */ + 0xf400f800, + 0x54410031, 0x0011cf04, 0x400110b6, - 0x01f60458, - 0xf104bd00, - 0xf1d900e7, - 0x7e134fe3, - 0xf8000196, -/* 0x08a5: test_init */ - 0x08004e00, - 0x0001967e, -/* 0x08ae: idle_recv */ - 0x00f800f8, -/* 0x08b0: idle */ - 0x410031f4, - 0x11cf0454, - 0x0110b600, - 0xf6045440, - 0x04bd0001, -/* 0x08c4: idle_loop */ - 0x32f45801, -/* 0x08c9: idle_proc */ -/* 0x08c9: idle_proc_exec */ - 0xb210f902, - 0x02607e1e, - 0xf410fc00, - 0x31f40911, - 0xf00ef402, -/* 0x08dc: idle_proc_next */ - 0xa65810b6, - 0xe81bf41f, - 0xf4e002f4, - 0x0ef40028, - 0x000000c6, + 0x01f60454, +/* 0x0913: idle_loop */ + 0x0104bd00, + 0x0232f458, +/* 0x0918: idle_proc */ +/* 0x0918: idle_proc_exec */ + 0x1eb210f9, + 0x0002607e, + 0x11f410fc, + 0x0231f409, +/* 0x092b: idle_proc_next */ + 0xb6f00ef4, + 0x1fa65810, + 0xf4e81bf4, + 0x28f4e002, + 0xc60ef400, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, diff --git a/nvkm/subdev/pwr/fuc/nva3.fuc b/nvkm/subdev/pwr/fuc/nva3.fuc index 6744fcc..86a3dda 100644 --- a/nvkm/subdev/pwr/fuc/nva3.fuc +++ b/nvkm/subdev/pwr/fuc/nva3.fuc @@ -34,6 +34,7 @@ .section #nva3_pwr_data #define INCLUDE_PROC #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" @@ -44,6 +45,7 @@ #define INCLUDE_DATA #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" @@ -56,6 +58,7 @@ .section #nva3_pwr_code #define INCLUDE_CODE #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" diff --git a/nvkm/subdev/pwr/fuc/nva3.fuc.h b/nvkm/subdev/pwr/fuc/nva3.fuc.h index 2f152b5..d0d82c2 100644 --- a/nvkm/subdev/pwr/fuc/nva3.fuc.h +++ b/nvkm/subdev/pwr/fuc/nva3.fuc.h @@ -24,8 +24,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x0000044c, - 0x000003e9, + 0x0000049d, + 0x0000043a, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x0000055e, - 0x00000550, + 0x000005af, + 0x000005a1, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000562, - 0x00000560, + 0x000005b3, + 0x000005b1, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000992, - 0x00000835, + 0x000009e3, + 0x00000886, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x000009bb, - 0x00000994, + 0x00000a0c, + 0x000009e5, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x000009c7, - 0x000009c5, + 0x00000a18, + 0x00000a16, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nva3_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x0000048b, + 0x000004dc, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x000004b2, + 0x00000503, 0x00000002, 0x00000002, - 0x000004d3, + 0x00000524, 0x00040003, 0x00000000, - 0x000004ef, + 0x00000540, 0x00010004, 0x00000000, - 0x0000050c, + 0x0000055d, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -1113,503 +1113,504 @@ uint32_t nva3_pwr_code[] = { 0xf40016b0, 0x15f9fa0b, 0xf458f0b6, -/* 0x039e: host_send */ - 0x17f1f20e, - 0x14b604b0, - 0x0011cf06, - 0x04a027f1, - 0xcf0624b6, - 0x12b80022, - 0x320bf406, - 0x94071ec4, - 0xe0b704ee, - 0xeb980270, - 0x02ec9803, - 0x9801ed98, - 0x21f500ee, - 0x10b602d5, - 0x0f1ec401, - 0x04b007f1, - 0xd00604b6, - 0x04bd000e, -/* 0x03e7: host_send_done */ - 0xf8ba0ef4, -/* 0x03e9: host_recv */ - 0x4917f100, - 0x5413f14e, - 0x06e1b852, -/* 0x03f7: host_recv_wait */ - 0xf1aa0bf4, - 0xb604cc17, +/* 0x039e: mulu32_32_64 */ + 0x10f9f20e, + 0x30f920f9, + 0xe19540f9, + 0x10d29510, + 0xb4bdc4bd, + 0xffc0edff, + 0x34b9301d, + 0xff34f102, + 0x1034b6ff, + 0xbb1045b6, + 0xb4bb00c3, + 0x30e2ff01, + 0xf10234b9, + 0xb6ffff34, + 0x45b61034, + 0x00c3bb10, + 0xff01b4bb, + 0xb3bb3012, + 0xfc40fc00, + 0xfc20fc30, +/* 0x03ef: host_send */ + 0xf100f810, + 0xb604b017, 0x11cf0614, - 0xc827f100, + 0xa027f100, 0x0624b604, - 0xf00022cf, - 0x12b80816, - 0xe60bf406, - 0xb60723c4, - 0x30b70434, - 0x3b8002f0, - 0x023c8003, - 0x80013d80, - 0x20b6003e, - 0x0f24f001, - 0x04c807f1, + 0xb80022cf, + 0x0bf40612, + 0x071ec432, + 0xb704ee94, + 0x980270e0, + 0xec9803eb, + 0x01ed9802, + 0xf500ee98, + 0xb602d521, + 0x1ec40110, + 0xb007f10f, + 0x0604b604, + 0xbd000ed0, + 0xba0ef404, +/* 0x0438: host_send_done */ +/* 0x043a: host_recv */ + 0x17f100f8, + 0x13f14e49, + 0xe1b85254, + 0xaa0bf406, +/* 0x0448: host_recv_wait */ + 0x04cc17f1, + 0xcf0614b6, + 0x27f10011, + 0x24b604c8, + 0x0022cf06, + 0xb80816f0, + 0x0bf40612, + 0x0723c4e6, + 0xb70434b6, + 0x8002f030, + 0x3c80033b, + 0x013d8002, + 0xb6003e80, + 0x24f00120, + 0xc807f10f, + 0x0604b604, + 0xbd0002d0, + 0x4027f004, + 0xb60007f0, + 0x02d00604, + 0xf804bd00, +/* 0x049d: host_init */ + 0x8017f100, + 0x1014b600, + 0x027015f1, + 0x04d007f1, 0xd00604b6, - 0x04bd0002, - 0xf04027f0, - 0x04b60007, - 0x0002d006, - 0x00f804bd, -/* 0x044c: host_init */ + 0x04bd0001, 0x008017f1, 0xf11014b6, - 0xf1027015, - 0xb604d007, + 0xf102f015, + 0xb604dc07, 0x01d00604, - 0xf104bd00, - 0xb6008017, - 0x15f11014, - 0x07f102f0, - 0x04b604dc, + 0xf004bd00, + 0x07f10117, + 0x04b604c4, 0x0001d006, - 0x17f004bd, - 0xc407f101, - 0x0604b604, - 0xbd0001d0, -/* 0x048b: memx_func_enter */ + 0x00f804bd, +/* 0x04dc: memx_func_enter */ + 0xf10467f0, + 0xb607e007, + 0x06d00604, +/* 0x04eb: memx_func_enter_wait */ + 0xf104bd00, + 0xb607c067, + 0x66cf0664, + 0x0464f000, + 0x98f30bf4, + 0x10b60016, +/* 0x0503: memx_func_leave */ 0xf000f804, 0x07f10467, - 0x04b607e0, + 0x04b607e4, 0x0006d006, -/* 0x049a: memx_func_enter_wait */ +/* 0x0512: memx_func_leave_wait */ 0x67f104bd, 0x64b607c0, 0x0066cf06, 0xf40464f0, - 0x1698f30b, + 0x00f8f31b, +/* 0x0524: memx_func_wr32 */ + 0x98001698, + 0x10b60115, + 0xf960f908, + 0xfcd0fc50, + 0x3f21f4e0, + 0xf40242b6, + 0x00f8e91b, +/* 0x0540: memx_func_wait */ + 0xb62c87f0, + 0x88cf0684, + 0x001e9800, + 0x98011d98, + 0x1b98021c, + 0x1010b603, + 0xf89c21f4, +/* 0x055d: memx_func_delay */ + 0x001e9800, + 0xf40410b6, + 0x00f87f21, +/* 0x0568: memx_exec */ + 0xd0f9e0f9, + 0xb902c1b9, +/* 0x0572: memx_exec_next */ + 0x139802b2, 0x0410b600, -/* 0x04b2: memx_func_leave */ - 0x67f000f8, - 0xe407f104, + 0xf0103495, + 0x35980c30, + 0xb855f9de, + 0x1ef40612, + 0xfcd0fcec, + 0xd521f5e0, +/* 0x0593: memx_info */ + 0xf100f802, + 0xf103acc7, + 0xf50800b7, + 0xf802d521, +/* 0x05a1: memx_recv */ + 0x01d6b000, + 0xb0c40bf4, + 0x0bf400d6, +/* 0x05af: memx_init */ + 0xf800f8e9, +/* 0x05b1: perf_recv */ +/* 0x05b3: perf_init */ + 0xf800f800, +/* 0x05b5: i2c_drive_scl */ + 0x0036b000, + 0xf1110bf4, + 0xb607e007, + 0x01d00604, + 0xf804bd00, +/* 0x05c9: i2c_drive_scl_lo */ + 0xe407f100, 0x0604b607, - 0xbd0006d0, -/* 0x04c1: memx_func_leave_wait */ - 0xc067f104, - 0x0664b607, - 0xf00066cf, - 0x1bf40464, -/* 0x04d3: memx_func_wr32 */ - 0x9800f8f3, - 0x15980016, - 0x0810b601, - 0x50f960f9, - 0xe0fcd0fc, - 0xb63f21f4, - 0x1bf40242, -/* 0x04ef: memx_func_wait */ - 0xf000f8e9, - 0x84b62c87, - 0x0088cf06, - 0x98001e98, - 0x1c98011d, - 0x031b9802, - 0xf41010b6, - 0x00f89c21, -/* 0x050c: memx_func_delay */ - 0xb6001e98, - 0x21f40410, -/* 0x0517: memx_exec */ - 0xf900f87f, - 0xb9d0f9e0, - 0xb2b902c1, -/* 0x0521: memx_exec_next */ - 0x00139802, - 0x950410b6, - 0x30f01034, - 0xde35980c, - 0x12b855f9, - 0xec1ef406, - 0xe0fcd0fc, - 0x02d521f5, -/* 0x0542: memx_info */ - 0xc7f100f8, - 0xb7f103ac, - 0x21f50800, - 0x00f802d5, -/* 0x0550: memx_recv */ - 0xf401d6b0, - 0xd6b0c40b, - 0xe90bf400, -/* 0x055e: memx_init */ - 0x00f800f8, -/* 0x0560: perf_recv */ -/* 0x0562: perf_init */ - 0x00f800f8, -/* 0x0564: i2c_drive_scl */ - 0xf40036b0, - 0x07f1110b, - 0x04b607e0, - 0x0001d006, - 0x00f804bd, -/* 0x0578: i2c_drive_scl_lo */ - 0x07e407f1, - 0xd00604b6, - 0x04bd0001, -/* 0x0586: i2c_drive_sda */ - 0x36b000f8, - 0x110bf400, - 0x07e007f1, - 0xd00604b6, - 0x04bd0002, -/* 0x059a: i2c_drive_sda_lo */ - 0x07f100f8, - 0x04b607e4, - 0x0002d006, - 0x00f804bd, -/* 0x05a8: i2c_sense_scl */ - 0xf10132f4, - 0xb607c437, - 0x33cf0634, - 0x0431fd00, - 0xf4060bf4, -/* 0x05be: i2c_sense_scl_done */ - 0x00f80131, -/* 0x05c0: i2c_sense_sda */ - 0xf10132f4, - 0xb607c437, - 0x33cf0634, - 0x0432fd00, - 0xf4060bf4, -/* 0x05d6: i2c_sense_sda_done */ - 0x00f80131, -/* 0x05d8: i2c_raise_scl */ - 0x47f140f9, - 0x37f00898, - 0x6421f501, -/* 0x05e5: i2c_raise_scl_wait */ - 0xe8e7f105, - 0x7f21f403, - 0x05a821f5, - 0xb60901f4, - 0x1bf40142, -/* 0x05f9: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x05fd: i2c_start */ - 0xa821f500, - 0x0d11f405, - 0x05c021f5, - 0xf40611f4, -/* 0x060e: i2c_start_rep */ - 0x37f0300e, - 0x6421f500, - 0x0137f005, - 0x058621f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xd821f550, - 0x0464b605, -/* 0x063b: i2c_start_send */ - 0xf01f11f4, + 0xbd0001d0, +/* 0x05d7: i2c_drive_sda */ + 0xb000f804, + 0x0bf40036, + 0xe007f111, + 0x0604b607, + 0xbd0002d0, +/* 0x05eb: i2c_drive_sda_lo */ + 0xf100f804, + 0xb607e407, + 0x02d00604, + 0xf804bd00, +/* 0x05f9: i2c_sense_scl */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x31fd0033, + 0x060bf404, +/* 0x060f: i2c_sense_scl_done */ + 0xf80131f4, +/* 0x0611: i2c_sense_sda */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x32fd0033, + 0x060bf404, +/* 0x0627: i2c_sense_sda_done */ + 0xf80131f4, +/* 0x0629: i2c_raise_scl */ + 0xf140f900, + 0xf0089847, + 0x21f50137, +/* 0x0636: i2c_raise_scl_wait */ + 0xe7f105b5, + 0x21f403e8, + 0xf921f57f, + 0x0901f405, + 0xf40142b6, +/* 0x064a: i2c_raise_scl_done */ + 0x40fcef1b, +/* 0x064e: i2c_start */ + 0x21f500f8, + 0x11f405f9, + 0x1121f50d, + 0x0611f406, +/* 0x065f: i2c_start_rep */ + 0xf0300ef4, 0x21f50037, - 0xe7f10586, - 0x21f41388, - 0x0037f07f, - 0x056421f5, - 0x1388e7f1, -/* 0x0657: i2c_start_out */ - 0xf87f21f4, -/* 0x0659: i2c_stop */ - 0x0037f000, - 0x056421f5, + 0x37f005b5, + 0xd721f501, + 0x0076bb05, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60629, + 0x1f11f404, +/* 0x068c: i2c_start_send */ 0xf50037f0, - 0xf1058621, - 0xf403e8e7, + 0xf105d721, + 0xf41388e7, 0x37f07f21, - 0x6421f501, + 0xb521f500, 0x88e7f105, 0x7f21f413, - 0xf50137f0, - 0xf1058621, - 0xf41388e7, - 0x00f87f21, -/* 0x068c: i2c_bitw */ - 0x058621f5, +/* 0x06a8: i2c_start_out */ +/* 0x06aa: i2c_stop */ + 0x37f000f8, + 0xb521f500, + 0x0037f005, + 0x05d721f5, 0x03e8e7f1, - 0xbb7f21f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x05d821f5, - 0xf40464b6, - 0xe7f11811, + 0xf07f21f4, + 0x21f50137, + 0xe7f105b5, 0x21f41388, - 0x0037f07f, - 0x056421f5, + 0x0137f07f, + 0x05d721f5, 0x1388e7f1, -/* 0x06cb: i2c_bitw_out */ 0xf87f21f4, -/* 0x06cd: i2c_bitr */ - 0x0137f000, - 0x058621f5, - 0x03e8e7f1, - 0xbb7f21f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x05d821f5, - 0xf40464b6, - 0x21f51b11, - 0x37f005c0, - 0x6421f500, +/* 0x06dd: i2c_bitw */ + 0xd721f500, + 0xe8e7f105, + 0x7f21f403, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x2921f550, + 0x0464b606, + 0xf11811f4, + 0xf41388e7, + 0x37f07f21, + 0xb521f500, 0x88e7f105, 0x7f21f413, - 0xf4013cf0, -/* 0x0712: i2c_bitr_done */ - 0x00f80131, -/* 0x0714: i2c_get_byte */ - 0xf00057f0, -/* 0x071a: i2c_get_byte_next */ - 0x54b60847, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b606cd, - 0x2b11f404, - 0xb60553fd, - 0x1bf40142, - 0x0137f0d8, +/* 0x071c: i2c_bitw_out */ +/* 0x071e: i2c_bitr */ + 0x37f000f8, + 0xd721f501, + 0xe8e7f105, + 0x7f21f403, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x8c21f550, + 0x2921f550, 0x0464b606, -/* 0x0764: i2c_get_byte_done */ -/* 0x0766: i2c_put_byte */ - 0x47f000f8, -/* 0x0769: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x068c21f5, - 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0xf51b11f4, + 0xf0061121, + 0x21f50037, + 0xe7f105b5, + 0x21f41388, + 0x013cf07f, +/* 0x0763: i2c_bitr_done */ + 0xf80131f4, +/* 0x0765: i2c_get_byte */ + 0x0057f000, +/* 0x076b: i2c_get_byte_next */ + 0xb60847f0, + 0x76bb0154, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6071e21, + 0x11f40464, + 0x0553fd2b, + 0xf40142b6, + 0x37f0d81b, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b606dd, +/* 0x07b5: i2c_get_byte_done */ +/* 0x07b7: i2c_put_byte */ + 0xf000f804, +/* 0x07ba: i2c_put_byte_next */ + 0x42b60847, + 0x3854ff01, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xcd21f550, + 0xdd21f550, 0x0464b606, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x07bf: i2c_put_byte_done */ - 0xf80132f4, -/* 0x07c1: i2c_addr */ - 0x0076bb00, + 0xb03411f4, + 0x1bf40046, + 0x0076bbd8, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b605fd, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, + 0x64b6071e, + 0x0f11f404, + 0xb00076bb, + 0x1bf40136, + 0x0132f406, +/* 0x0810: i2c_put_byte_done */ +/* 0x0812: i2c_addr */ + 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6076621, -/* 0x0806: i2c_addr_done */ - 0x00f80464, -/* 0x0808: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b702e4, - 0xee980bfc, -/* 0x0817: i2c_acquire */ - 0xf500f800, - 0xf4080821, - 0xd9f00421, - 0x3f21f403, -/* 0x0826: i2c_release */ - 0x21f500f8, - 0x21f40808, - 0x03daf004, - 0xf83f21f4, -/* 0x0835: i2c_recv */ - 0x0132f400, - 0xb6f8c1c7, - 0x16b00214, - 0x3a1ff528, - 0xd413a001, - 0x0032980b, - 0x0bac13a0, - 0xf4003198, - 0xd0f90231, - 0xd0f9e0f9, - 0x000067f1, - 0x100063f1, - 0xbb016792, + 0xb6064e21, + 0x11f40464, + 0x2ec3e729, + 0x0134b601, + 0xbb0553fd, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x081721f5, - 0xfc0464b6, - 0x00d6b0d0, - 0x00b31bf5, - 0xbb0057f0, + 0x07b721f5, +/* 0x0857: i2c_addr_done */ + 0xf80464b6, +/* 0x0859: i2c_acquire_addr */ + 0xf8cec700, + 0xb702e4b6, + 0x980bfce0, + 0x00f800ee, +/* 0x0868: i2c_acquire */ + 0x085921f5, + 0xf00421f4, + 0x21f403d9, +/* 0x0877: i2c_release */ + 0xf500f83f, + 0xf4085921, + 0xdaf00421, + 0x3f21f403, +/* 0x0886: i2c_recv */ + 0x32f400f8, + 0xf8c1c701, + 0xb00214b6, + 0x1ff52816, + 0x13a0013a, + 0x32980bd4, + 0xac13a000, + 0x0031980b, + 0xf90231f4, + 0xf9e0f9d0, + 0x0067f1d0, + 0x0063f100, + 0x01679210, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x6821f550, + 0x0464b608, + 0xd6b0d0fc, + 0xb31bf500, + 0x0057f000, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x1221f550, + 0x0464b608, + 0x00d011f5, + 0xbbe0c5c7, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07c121f5, + 0x07b721f5, 0xf50464b6, - 0xc700d011, - 0x76bbe0c5, + 0xf000ad11, + 0x76bb0157, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6076621, + 0xb6081221, 0x11f50464, - 0x57f000ad, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b607c1, - 0x8a11f504, - 0x0076bb00, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60714, - 0x6a11f404, - 0xbbe05bcb, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x065921f5, - 0xb90464b6, - 0x74bd025b, -/* 0x093b: i2c_recv_not_rd08 */ - 0xb0430ef4, - 0x1bf401d6, - 0x0057f03d, - 0x07c121f5, - 0xc73311f4, - 0x21f5e0c5, - 0x11f40766, - 0x0057f029, - 0x07c121f5, - 0xc71f11f4, - 0x21f5e0b5, - 0x11f40766, - 0x5921f515, - 0xc774bd06, - 0x1bf408c5, - 0x0232f409, -/* 0x097b: i2c_recv_not_wr08 */ -/* 0x097b: i2c_recv_done */ - 0xc7030ef4, - 0x21f5f8ce, - 0xe0fc0826, - 0x12f4d0fc, - 0x027cb90a, - 0x02d521f5, -/* 0x0990: i2c_recv_exit */ -/* 0x0992: i2c_init */ + 0x76bb008a, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6076521, + 0x11f40464, + 0xe05bcb6a, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xaa21f550, + 0x0464b606, + 0xbd025bb9, + 0x430ef474, +/* 0x098c: i2c_recv_not_rd08 */ + 0xf401d6b0, + 0x57f03d1b, + 0x1221f500, + 0x3311f408, + 0xf5e0c5c7, + 0xf407b721, + 0x57f02911, + 0x1221f500, + 0x1f11f408, + 0xf5e0b5c7, + 0xf407b721, + 0x21f51511, + 0x74bd06aa, + 0xf408c5c7, + 0x32f4091b, + 0x030ef402, +/* 0x09cc: i2c_recv_not_wr08 */ +/* 0x09cc: i2c_recv_done */ + 0xf5f8cec7, + 0xfc087721, + 0xf4d0fce0, + 0x7cb90a12, + 0xd521f502, +/* 0x09e1: i2c_recv_exit */ +/* 0x09e3: i2c_init */ + 0xf800f802, +/* 0x09e5: test_recv */ + 0xd817f100, + 0x0614b605, + 0xb60011cf, + 0x07f10110, + 0x04b605d8, + 0x0001d006, + 0xe7f104bd, + 0xe3f1d900, + 0x21f5134f, + 0x00f801f5, +/* 0x0a0c: test_init */ + 0x0800e7f1, + 0x01f521f5, +/* 0x0a16: idle_recv */ 0x00f800f8, -/* 0x0994: test_recv */ - 0x05d817f1, - 0xcf0614b6, - 0x10b60011, - 0xd807f101, - 0x0604b605, - 0xbd0001d0, - 0x00e7f104, - 0x4fe3f1d9, - 0xf521f513, -/* 0x09bb: test_init */ - 0xf100f801, - 0xf50800e7, - 0xf801f521, -/* 0x09c5: idle_recv */ -/* 0x09c7: idle */ - 0xf400f800, - 0x17f10031, - 0x14b605d4, - 0x0011cf06, - 0xf10110b6, - 0xb605d407, - 0x01d00604, -/* 0x09e3: idle_loop */ - 0xf004bd00, - 0x32f45817, -/* 0x09e9: idle_proc */ -/* 0x09e9: idle_proc_exec */ - 0xb910f902, - 0x21f5021e, - 0x10fc02de, - 0xf40911f4, - 0x0ef40231, -/* 0x09fd: idle_proc_next */ - 0x5810b6ef, - 0xf4061fb8, - 0x02f4e61b, - 0x0028f4dd, - 0x00bb0ef4, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0a18: idle */ + 0xf10031f4, + 0xb605d417, + 0x11cf0614, + 0x0110b600, + 0x05d407f1, + 0xd00604b6, + 0x04bd0001, +/* 0x0a34: idle_loop */ + 0xf45817f0, +/* 0x0a3a: idle_proc */ +/* 0x0a3a: idle_proc_exec */ + 0x10f90232, + 0xf5021eb9, + 0xfc02de21, + 0x0911f410, + 0xf40231f4, +/* 0x0a4e: idle_proc_next */ + 0x10b6ef0e, + 0x061fb858, + 0xf4e61bf4, + 0x28f4dd02, + 0xbb0ef400, 0x00000000, 0x00000000, 0x00000000, diff --git a/nvkm/subdev/pwr/fuc/nvc0.fuc b/nvkm/subdev/pwr/fuc/nvc0.fuc index 48f7943..ddd72d6 100644 --- a/nvkm/subdev/pwr/fuc/nvc0.fuc +++ b/nvkm/subdev/pwr/fuc/nvc0.fuc @@ -34,6 +34,7 @@ .section #nvc0_pwr_data #define INCLUDE_PROC #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" @@ -44,6 +45,7 @@ #define INCLUDE_DATA #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" @@ -56,6 +58,7 @@ .section #nvc0_pwr_code #define INCLUDE_CODE #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" diff --git a/nvkm/subdev/pwr/fuc/nvc0.fuc.h b/nvkm/subdev/pwr/fuc/nvc0.fuc.h index ca96a04..1e2ab16 100644 --- a/nvkm/subdev/pwr/fuc/nvc0.fuc.h +++ b/nvkm/subdev/pwr/fuc/nvc0.fuc.h @@ -24,8 +24,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x0000044c, - 0x000003e9, + 0x0000049d, + 0x0000043a, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x0000055e, - 0x00000550, + 0x000005af, + 0x000005a1, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000562, - 0x00000560, + 0x000005b3, + 0x000005b1, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000992, - 0x00000835, + 0x000009e3, + 0x00000886, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x000009bb, - 0x00000994, + 0x00000a0c, + 0x000009e5, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x000009c7, - 0x000009c5, + 0x00000a18, + 0x00000a16, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nvc0_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x0000048b, + 0x000004dc, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x000004b2, + 0x00000503, 0x00000002, 0x00000002, - 0x000004d3, + 0x00000524, 0x00040003, 0x00000000, - 0x000004ef, + 0x00000540, 0x00010004, 0x00000000, - 0x0000050c, + 0x0000055d, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -1113,503 +1113,504 @@ uint32_t nvc0_pwr_code[] = { 0xf40016b0, 0x15f9fa0b, 0xf458f0b6, -/* 0x039e: host_send */ - 0x17f1f20e, - 0x14b604b0, - 0x0011cf06, - 0x04a027f1, - 0xcf0624b6, - 0x12b80022, - 0x320bf406, - 0x94071ec4, - 0xe0b704ee, - 0xeb980270, - 0x02ec9803, - 0x9801ed98, - 0x21f500ee, - 0x10b602d5, - 0x0f1ec401, - 0x04b007f1, - 0xd00604b6, - 0x04bd000e, -/* 0x03e7: host_send_done */ - 0xf8ba0ef4, -/* 0x03e9: host_recv */ - 0x4917f100, - 0x5413f14e, - 0x06e1b852, -/* 0x03f7: host_recv_wait */ - 0xf1aa0bf4, - 0xb604cc17, +/* 0x039e: mulu32_32_64 */ + 0x10f9f20e, + 0x30f920f9, + 0xe19540f9, + 0x10d29510, + 0xb4bdc4bd, + 0xffc0edff, + 0x34b9301d, + 0xff34f102, + 0x1034b6ff, + 0xbb1045b6, + 0xb4bb00c3, + 0x30e2ff01, + 0xf10234b9, + 0xb6ffff34, + 0x45b61034, + 0x00c3bb10, + 0xff01b4bb, + 0xb3bb3012, + 0xfc40fc00, + 0xfc20fc30, +/* 0x03ef: host_send */ + 0xf100f810, + 0xb604b017, 0x11cf0614, - 0xc827f100, + 0xa027f100, 0x0624b604, - 0xf00022cf, - 0x12b80816, - 0xe60bf406, - 0xb60723c4, - 0x30b70434, - 0x3b8002f0, - 0x023c8003, - 0x80013d80, - 0x20b6003e, - 0x0f24f001, - 0x04c807f1, + 0xb80022cf, + 0x0bf40612, + 0x071ec432, + 0xb704ee94, + 0x980270e0, + 0xec9803eb, + 0x01ed9802, + 0xf500ee98, + 0xb602d521, + 0x1ec40110, + 0xb007f10f, + 0x0604b604, + 0xbd000ed0, + 0xba0ef404, +/* 0x0438: host_send_done */ +/* 0x043a: host_recv */ + 0x17f100f8, + 0x13f14e49, + 0xe1b85254, + 0xaa0bf406, +/* 0x0448: host_recv_wait */ + 0x04cc17f1, + 0xcf0614b6, + 0x27f10011, + 0x24b604c8, + 0x0022cf06, + 0xb80816f0, + 0x0bf40612, + 0x0723c4e6, + 0xb70434b6, + 0x8002f030, + 0x3c80033b, + 0x013d8002, + 0xb6003e80, + 0x24f00120, + 0xc807f10f, + 0x0604b604, + 0xbd0002d0, + 0x4027f004, + 0xb60007f0, + 0x02d00604, + 0xf804bd00, +/* 0x049d: host_init */ + 0x8017f100, + 0x1014b600, + 0x027015f1, + 0x04d007f1, 0xd00604b6, - 0x04bd0002, - 0xf04027f0, - 0x04b60007, - 0x0002d006, - 0x00f804bd, -/* 0x044c: host_init */ + 0x04bd0001, 0x008017f1, 0xf11014b6, - 0xf1027015, - 0xb604d007, + 0xf102f015, + 0xb604dc07, 0x01d00604, - 0xf104bd00, - 0xb6008017, - 0x15f11014, - 0x07f102f0, - 0x04b604dc, + 0xf004bd00, + 0x07f10117, + 0x04b604c4, 0x0001d006, - 0x17f004bd, - 0xc407f101, - 0x0604b604, - 0xbd0001d0, -/* 0x048b: memx_func_enter */ + 0x00f804bd, +/* 0x04dc: memx_func_enter */ + 0xf10467f0, + 0xb607e007, + 0x06d00604, +/* 0x04eb: memx_func_enter_wait */ + 0xf104bd00, + 0xb607c067, + 0x66cf0664, + 0x0464f000, + 0x98f30bf4, + 0x10b60016, +/* 0x0503: memx_func_leave */ 0xf000f804, 0x07f10467, - 0x04b607e0, + 0x04b607e4, 0x0006d006, -/* 0x049a: memx_func_enter_wait */ +/* 0x0512: memx_func_leave_wait */ 0x67f104bd, 0x64b607c0, 0x0066cf06, 0xf40464f0, - 0x1698f30b, + 0x00f8f31b, +/* 0x0524: memx_func_wr32 */ + 0x98001698, + 0x10b60115, + 0xf960f908, + 0xfcd0fc50, + 0x3f21f4e0, + 0xf40242b6, + 0x00f8e91b, +/* 0x0540: memx_func_wait */ + 0xb62c87f0, + 0x88cf0684, + 0x001e9800, + 0x98011d98, + 0x1b98021c, + 0x1010b603, + 0xf89c21f4, +/* 0x055d: memx_func_delay */ + 0x001e9800, + 0xf40410b6, + 0x00f87f21, +/* 0x0568: memx_exec */ + 0xd0f9e0f9, + 0xb902c1b9, +/* 0x0572: memx_exec_next */ + 0x139802b2, 0x0410b600, -/* 0x04b2: memx_func_leave */ - 0x67f000f8, - 0xe407f104, + 0xf0103495, + 0x35980c30, + 0xb855f9de, + 0x1ef40612, + 0xfcd0fcec, + 0xd521f5e0, +/* 0x0593: memx_info */ + 0xf100f802, + 0xf103acc7, + 0xf50800b7, + 0xf802d521, +/* 0x05a1: memx_recv */ + 0x01d6b000, + 0xb0c40bf4, + 0x0bf400d6, +/* 0x05af: memx_init */ + 0xf800f8e9, +/* 0x05b1: perf_recv */ +/* 0x05b3: perf_init */ + 0xf800f800, +/* 0x05b5: i2c_drive_scl */ + 0x0036b000, + 0xf1110bf4, + 0xb607e007, + 0x01d00604, + 0xf804bd00, +/* 0x05c9: i2c_drive_scl_lo */ + 0xe407f100, 0x0604b607, - 0xbd0006d0, -/* 0x04c1: memx_func_leave_wait */ - 0xc067f104, - 0x0664b607, - 0xf00066cf, - 0x1bf40464, -/* 0x04d3: memx_func_wr32 */ - 0x9800f8f3, - 0x15980016, - 0x0810b601, - 0x50f960f9, - 0xe0fcd0fc, - 0xb63f21f4, - 0x1bf40242, -/* 0x04ef: memx_func_wait */ - 0xf000f8e9, - 0x84b62c87, - 0x0088cf06, - 0x98001e98, - 0x1c98011d, - 0x031b9802, - 0xf41010b6, - 0x00f89c21, -/* 0x050c: memx_func_delay */ - 0xb6001e98, - 0x21f40410, -/* 0x0517: memx_exec */ - 0xf900f87f, - 0xb9d0f9e0, - 0xb2b902c1, -/* 0x0521: memx_exec_next */ - 0x00139802, - 0x950410b6, - 0x30f01034, - 0xde35980c, - 0x12b855f9, - 0xec1ef406, - 0xe0fcd0fc, - 0x02d521f5, -/* 0x0542: memx_info */ - 0xc7f100f8, - 0xb7f103ac, - 0x21f50800, - 0x00f802d5, -/* 0x0550: memx_recv */ - 0xf401d6b0, - 0xd6b0c40b, - 0xe90bf400, -/* 0x055e: memx_init */ - 0x00f800f8, -/* 0x0560: perf_recv */ -/* 0x0562: perf_init */ - 0x00f800f8, -/* 0x0564: i2c_drive_scl */ - 0xf40036b0, - 0x07f1110b, - 0x04b607e0, - 0x0001d006, - 0x00f804bd, -/* 0x0578: i2c_drive_scl_lo */ - 0x07e407f1, - 0xd00604b6, - 0x04bd0001, -/* 0x0586: i2c_drive_sda */ - 0x36b000f8, - 0x110bf400, - 0x07e007f1, - 0xd00604b6, - 0x04bd0002, -/* 0x059a: i2c_drive_sda_lo */ - 0x07f100f8, - 0x04b607e4, - 0x0002d006, - 0x00f804bd, -/* 0x05a8: i2c_sense_scl */ - 0xf10132f4, - 0xb607c437, - 0x33cf0634, - 0x0431fd00, - 0xf4060bf4, -/* 0x05be: i2c_sense_scl_done */ - 0x00f80131, -/* 0x05c0: i2c_sense_sda */ - 0xf10132f4, - 0xb607c437, - 0x33cf0634, - 0x0432fd00, - 0xf4060bf4, -/* 0x05d6: i2c_sense_sda_done */ - 0x00f80131, -/* 0x05d8: i2c_raise_scl */ - 0x47f140f9, - 0x37f00898, - 0x6421f501, -/* 0x05e5: i2c_raise_scl_wait */ - 0xe8e7f105, - 0x7f21f403, - 0x05a821f5, - 0xb60901f4, - 0x1bf40142, -/* 0x05f9: i2c_raise_scl_done */ - 0xf840fcef, -/* 0x05fd: i2c_start */ - 0xa821f500, - 0x0d11f405, - 0x05c021f5, - 0xf40611f4, -/* 0x060e: i2c_start_rep */ - 0x37f0300e, - 0x6421f500, - 0x0137f005, - 0x058621f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xd821f550, - 0x0464b605, -/* 0x063b: i2c_start_send */ - 0xf01f11f4, + 0xbd0001d0, +/* 0x05d7: i2c_drive_sda */ + 0xb000f804, + 0x0bf40036, + 0xe007f111, + 0x0604b607, + 0xbd0002d0, +/* 0x05eb: i2c_drive_sda_lo */ + 0xf100f804, + 0xb607e407, + 0x02d00604, + 0xf804bd00, +/* 0x05f9: i2c_sense_scl */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x31fd0033, + 0x060bf404, +/* 0x060f: i2c_sense_scl_done */ + 0xf80131f4, +/* 0x0611: i2c_sense_sda */ + 0x0132f400, + 0x07c437f1, + 0xcf0634b6, + 0x32fd0033, + 0x060bf404, +/* 0x0627: i2c_sense_sda_done */ + 0xf80131f4, +/* 0x0629: i2c_raise_scl */ + 0xf140f900, + 0xf0089847, + 0x21f50137, +/* 0x0636: i2c_raise_scl_wait */ + 0xe7f105b5, + 0x21f403e8, + 0xf921f57f, + 0x0901f405, + 0xf40142b6, +/* 0x064a: i2c_raise_scl_done */ + 0x40fcef1b, +/* 0x064e: i2c_start */ + 0x21f500f8, + 0x11f405f9, + 0x1121f50d, + 0x0611f406, +/* 0x065f: i2c_start_rep */ + 0xf0300ef4, 0x21f50037, - 0xe7f10586, - 0x21f41388, - 0x0037f07f, - 0x056421f5, - 0x1388e7f1, -/* 0x0657: i2c_start_out */ - 0xf87f21f4, -/* 0x0659: i2c_stop */ - 0x0037f000, - 0x056421f5, + 0x37f005b5, + 0xd721f501, + 0x0076bb05, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60629, + 0x1f11f404, +/* 0x068c: i2c_start_send */ 0xf50037f0, - 0xf1058621, - 0xf403e8e7, + 0xf105d721, + 0xf41388e7, 0x37f07f21, - 0x6421f501, + 0xb521f500, 0x88e7f105, 0x7f21f413, - 0xf50137f0, - 0xf1058621, - 0xf41388e7, - 0x00f87f21, -/* 0x068c: i2c_bitw */ - 0x058621f5, +/* 0x06a8: i2c_start_out */ +/* 0x06aa: i2c_stop */ + 0x37f000f8, + 0xb521f500, + 0x0037f005, + 0x05d721f5, 0x03e8e7f1, - 0xbb7f21f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x05d821f5, - 0xf40464b6, - 0xe7f11811, + 0xf07f21f4, + 0x21f50137, + 0xe7f105b5, 0x21f41388, - 0x0037f07f, - 0x056421f5, + 0x0137f07f, + 0x05d721f5, 0x1388e7f1, -/* 0x06cb: i2c_bitw_out */ 0xf87f21f4, -/* 0x06cd: i2c_bitr */ - 0x0137f000, - 0x058621f5, - 0x03e8e7f1, - 0xbb7f21f4, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x05d821f5, - 0xf40464b6, - 0x21f51b11, - 0x37f005c0, - 0x6421f500, +/* 0x06dd: i2c_bitw */ + 0xd721f500, + 0xe8e7f105, + 0x7f21f403, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x2921f550, + 0x0464b606, + 0xf11811f4, + 0xf41388e7, + 0x37f07f21, + 0xb521f500, 0x88e7f105, 0x7f21f413, - 0xf4013cf0, -/* 0x0712: i2c_bitr_done */ - 0x00f80131, -/* 0x0714: i2c_get_byte */ - 0xf00057f0, -/* 0x071a: i2c_get_byte_next */ - 0x54b60847, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b606cd, - 0x2b11f404, - 0xb60553fd, - 0x1bf40142, - 0x0137f0d8, +/* 0x071c: i2c_bitw_out */ +/* 0x071e: i2c_bitr */ + 0x37f000f8, + 0xd721f501, + 0xe8e7f105, + 0x7f21f403, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x8c21f550, + 0x2921f550, 0x0464b606, -/* 0x0764: i2c_get_byte_done */ -/* 0x0766: i2c_put_byte */ - 0x47f000f8, -/* 0x0769: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x068c21f5, - 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0xf51b11f4, + 0xf0061121, + 0x21f50037, + 0xe7f105b5, + 0x21f41388, + 0x013cf07f, +/* 0x0763: i2c_bitr_done */ + 0xf80131f4, +/* 0x0765: i2c_get_byte */ + 0x0057f000, +/* 0x076b: i2c_get_byte_next */ + 0xb60847f0, + 0x76bb0154, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6071e21, + 0x11f40464, + 0x0553fd2b, + 0xf40142b6, + 0x37f0d81b, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b606dd, +/* 0x07b5: i2c_get_byte_done */ +/* 0x07b7: i2c_put_byte */ + 0xf000f804, +/* 0x07ba: i2c_put_byte_next */ + 0x42b60847, + 0x3854ff01, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xcd21f550, + 0xdd21f550, 0x0464b606, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x07bf: i2c_put_byte_done */ - 0xf80132f4, -/* 0x07c1: i2c_addr */ - 0x0076bb00, + 0xb03411f4, + 0x1bf40046, + 0x0076bbd8, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b605fd, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, + 0x64b6071e, + 0x0f11f404, + 0xb00076bb, + 0x1bf40136, + 0x0132f406, +/* 0x0810: i2c_put_byte_done */ +/* 0x0812: i2c_addr */ + 0x76bb00f8, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6076621, -/* 0x0806: i2c_addr_done */ - 0x00f80464, -/* 0x0808: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b702e4, - 0xee980bfc, -/* 0x0817: i2c_acquire */ - 0xf500f800, - 0xf4080821, - 0xd9f00421, - 0x3f21f403, -/* 0x0826: i2c_release */ - 0x21f500f8, - 0x21f40808, - 0x03daf004, - 0xf83f21f4, -/* 0x0835: i2c_recv */ - 0x0132f400, - 0xb6f8c1c7, - 0x16b00214, - 0x3a1ff528, - 0xd413a001, - 0x0032980b, - 0x0bac13a0, - 0xf4003198, - 0xd0f90231, - 0xd0f9e0f9, - 0x000067f1, - 0x100063f1, - 0xbb016792, + 0xb6064e21, + 0x11f40464, + 0x2ec3e729, + 0x0134b601, + 0xbb0553fd, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x081721f5, - 0xfc0464b6, - 0x00d6b0d0, - 0x00b31bf5, - 0xbb0057f0, + 0x07b721f5, +/* 0x0857: i2c_addr_done */ + 0xf80464b6, +/* 0x0859: i2c_acquire_addr */ + 0xf8cec700, + 0xb702e4b6, + 0x980bfce0, + 0x00f800ee, +/* 0x0868: i2c_acquire */ + 0x085921f5, + 0xf00421f4, + 0x21f403d9, +/* 0x0877: i2c_release */ + 0xf500f83f, + 0xf4085921, + 0xdaf00421, + 0x3f21f403, +/* 0x0886: i2c_recv */ + 0x32f400f8, + 0xf8c1c701, + 0xb00214b6, + 0x1ff52816, + 0x13a0013a, + 0x32980bd4, + 0xac13a000, + 0x0031980b, + 0xf90231f4, + 0xf9e0f9d0, + 0x0067f1d0, + 0x0063f100, + 0x01679210, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x6821f550, + 0x0464b608, + 0xd6b0d0fc, + 0xb31bf500, + 0x0057f000, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x1221f550, + 0x0464b608, + 0x00d011f5, + 0xbbe0c5c7, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07c121f5, + 0x07b721f5, 0xf50464b6, - 0xc700d011, - 0x76bbe0c5, + 0xf000ad11, + 0x76bb0157, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6076621, + 0xb6081221, 0x11f50464, - 0x57f000ad, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b607c1, - 0x8a11f504, - 0x0076bb00, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60714, - 0x6a11f404, - 0xbbe05bcb, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x065921f5, - 0xb90464b6, - 0x74bd025b, -/* 0x093b: i2c_recv_not_rd08 */ - 0xb0430ef4, - 0x1bf401d6, - 0x0057f03d, - 0x07c121f5, - 0xc73311f4, - 0x21f5e0c5, - 0x11f40766, - 0x0057f029, - 0x07c121f5, - 0xc71f11f4, - 0x21f5e0b5, - 0x11f40766, - 0x5921f515, - 0xc774bd06, - 0x1bf408c5, - 0x0232f409, -/* 0x097b: i2c_recv_not_wr08 */ -/* 0x097b: i2c_recv_done */ - 0xc7030ef4, - 0x21f5f8ce, - 0xe0fc0826, - 0x12f4d0fc, - 0x027cb90a, - 0x02d521f5, -/* 0x0990: i2c_recv_exit */ -/* 0x0992: i2c_init */ + 0x76bb008a, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6076521, + 0x11f40464, + 0xe05bcb6a, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xaa21f550, + 0x0464b606, + 0xbd025bb9, + 0x430ef474, +/* 0x098c: i2c_recv_not_rd08 */ + 0xf401d6b0, + 0x57f03d1b, + 0x1221f500, + 0x3311f408, + 0xf5e0c5c7, + 0xf407b721, + 0x57f02911, + 0x1221f500, + 0x1f11f408, + 0xf5e0b5c7, + 0xf407b721, + 0x21f51511, + 0x74bd06aa, + 0xf408c5c7, + 0x32f4091b, + 0x030ef402, +/* 0x09cc: i2c_recv_not_wr08 */ +/* 0x09cc: i2c_recv_done */ + 0xf5f8cec7, + 0xfc087721, + 0xf4d0fce0, + 0x7cb90a12, + 0xd521f502, +/* 0x09e1: i2c_recv_exit */ +/* 0x09e3: i2c_init */ + 0xf800f802, +/* 0x09e5: test_recv */ + 0xd817f100, + 0x0614b605, + 0xb60011cf, + 0x07f10110, + 0x04b605d8, + 0x0001d006, + 0xe7f104bd, + 0xe3f1d900, + 0x21f5134f, + 0x00f801f5, +/* 0x0a0c: test_init */ + 0x0800e7f1, + 0x01f521f5, +/* 0x0a16: idle_recv */ 0x00f800f8, -/* 0x0994: test_recv */ - 0x05d817f1, - 0xcf0614b6, - 0x10b60011, - 0xd807f101, - 0x0604b605, - 0xbd0001d0, - 0x00e7f104, - 0x4fe3f1d9, - 0xf521f513, -/* 0x09bb: test_init */ - 0xf100f801, - 0xf50800e7, - 0xf801f521, -/* 0x09c5: idle_recv */ -/* 0x09c7: idle */ - 0xf400f800, - 0x17f10031, - 0x14b605d4, - 0x0011cf06, - 0xf10110b6, - 0xb605d407, - 0x01d00604, -/* 0x09e3: idle_loop */ - 0xf004bd00, - 0x32f45817, -/* 0x09e9: idle_proc */ -/* 0x09e9: idle_proc_exec */ - 0xb910f902, - 0x21f5021e, - 0x10fc02de, - 0xf40911f4, - 0x0ef40231, -/* 0x09fd: idle_proc_next */ - 0x5810b6ef, - 0xf4061fb8, - 0x02f4e61b, - 0x0028f4dd, - 0x00bb0ef4, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0a18: idle */ + 0xf10031f4, + 0xb605d417, + 0x11cf0614, + 0x0110b600, + 0x05d407f1, + 0xd00604b6, + 0x04bd0001, +/* 0x0a34: idle_loop */ + 0xf45817f0, +/* 0x0a3a: idle_proc */ +/* 0x0a3a: idle_proc_exec */ + 0x10f90232, + 0xf5021eb9, + 0xfc02de21, + 0x0911f410, + 0xf40231f4, +/* 0x0a4e: idle_proc_next */ + 0x10b6ef0e, + 0x061fb858, + 0xf4e61bf4, + 0x28f4dd02, + 0xbb0ef400, 0x00000000, 0x00000000, 0x00000000, diff --git a/nvkm/subdev/pwr/fuc/nvd0.fuc b/nvkm/subdev/pwr/fuc/nvd0.fuc index 8a89dfe..125439e 100644 --- a/nvkm/subdev/pwr/fuc/nvd0.fuc +++ b/nvkm/subdev/pwr/fuc/nvd0.fuc @@ -34,6 +34,7 @@ .section #nvd0_pwr_data #define INCLUDE_PROC #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" @@ -44,6 +45,7 @@ #define INCLUDE_DATA #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" @@ -56,6 +58,7 @@ .section #nvd0_pwr_code #define INCLUDE_CODE #include "kernel.fuc" +#include "arith.fuc" #include "host.fuc" #include "memx.fuc" #include "perf.fuc" diff --git a/nvkm/subdev/pwr/fuc/nvd0.fuc.h b/nvkm/subdev/pwr/fuc/nvd0.fuc.h index 5d81cbd..21929dd 100644 --- a/nvkm/subdev/pwr/fuc/nvd0.fuc.h +++ b/nvkm/subdev/pwr/fuc/nvd0.fuc.h @@ -24,8 +24,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x000003d7, - 0x00000380, + 0x00000428, + 0x000003d1, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x000004d1, - 0x000004c3, + 0x00000522, + 0x00000514, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x000004d5, - 0x000004d3, + 0x00000526, + 0x00000524, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x000008f0, - 0x00000793, + 0x00000941, + 0x000007e4, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000913, - 0x000008f2, + 0x00000964, + 0x00000943, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x0000091f, - 0x0000091d, + 0x00000970, + 0x0000096e, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nvd0_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x0000040d, + 0x0000045e, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x0000042e, + 0x0000047f, 0x00000002, 0x00000002, - 0x00000449, + 0x0000049a, 0x00040003, 0x00000000, - 0x00000465, + 0x000004b6, 0x00010004, 0x00000000, - 0x0000047f, + 0x000004d0, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -1024,484 +1024,485 @@ uint32_t nvd0_pwr_code[] = { 0xf40016b0, 0x15f9fa0b, 0xf458f0b6, -/* 0x033e: host_send */ - 0x17f1f20e, - 0x11cf04b0, - 0xa027f100, - 0x0022cf04, +/* 0x033e: mulu32_32_64 */ + 0x10f9f20e, + 0x30f920f9, + 0xe19540f9, + 0x10d29510, + 0xb4bdc4bd, + 0xffc0edff, + 0x34b9301d, + 0xff34f102, + 0x1034b6ff, + 0xbb1045b6, + 0xb4bb00c3, + 0x30e2ff01, + 0xf10234b9, + 0xb6ffff34, + 0x45b61034, + 0x00c3bb10, + 0xff01b4bb, + 0xb3bb3012, + 0xfc40fc00, + 0xfc20fc30, +/* 0x038f: host_send */ + 0xf100f810, + 0xcf04b017, + 0x27f10011, + 0x22cf04a0, + 0x0612b800, + 0xc42f0bf4, + 0xee94071e, + 0x70e0b704, + 0x03eb9802, + 0x9802ec98, + 0xee9801ed, + 0x8421f500, + 0x0110b602, + 0xf10f1ec4, + 0xd004b007, + 0x04bd000e, +/* 0x03cf: host_send_done */ + 0xf8c30ef4, +/* 0x03d1: host_recv */ + 0x4917f100, + 0x5413f14e, + 0x06e1b852, +/* 0x03df: host_recv_wait */ + 0xf1b30bf4, + 0xcf04cc17, + 0x27f10011, + 0x22cf04c8, + 0x0816f000, 0xf40612b8, - 0x1ec42f0b, - 0x04ee9407, - 0x0270e0b7, - 0x9803eb98, - 0xed9802ec, - 0x00ee9801, - 0x028421f5, - 0xc40110b6, - 0x07f10f1e, - 0x0ed004b0, - 0xf404bd00, -/* 0x037e: host_send_done */ - 0x00f8c30e, -/* 0x0380: host_recv */ - 0x4e4917f1, - 0x525413f1, - 0xf406e1b8, -/* 0x038e: host_recv_wait */ - 0x17f1b30b, - 0x11cf04cc, - 0xc827f100, - 0x0022cf04, - 0xb80816f0, - 0x0bf40612, - 0x0723c4ec, - 0xb70434b6, - 0x8002f030, - 0x3c80033b, - 0x013d8002, - 0xb6003e80, - 0x24f00120, - 0xc807f10f, - 0x0002d004, - 0x27f004bd, - 0x0007f040, - 0xbd0002d0, -/* 0x03d7: host_init */ - 0xf100f804, - 0xb6008017, - 0x15f11014, - 0x07f10270, - 0x01d004d0, - 0xf104bd00, - 0xb6008017, - 0x15f11014, - 0x07f102f0, - 0x01d004dc, + 0x23c4ec0b, + 0x0434b607, + 0x02f030b7, + 0x80033b80, + 0x3d80023c, + 0x003e8001, + 0xf00120b6, + 0x07f10f24, + 0x02d004c8, 0xf004bd00, - 0x07f10117, - 0x01d004c4, - 0xf804bd00, -/* 0x040d: memx_func_enter */ - 0x0467f000, - 0x07e007f1, - 0xbd0006d0, -/* 0x0419: memx_func_enter_wait */ - 0xc067f104, - 0x0066cf07, - 0xf40464f0, - 0x1698f60b, - 0x0410b600, -/* 0x042e: memx_func_leave */ + 0x07f04027, + 0x0002d000, + 0x00f804bd, +/* 0x0428: host_init */ + 0x008017f1, + 0xf11014b6, + 0xf1027015, + 0xd004d007, + 0x04bd0001, + 0x008017f1, + 0xf11014b6, + 0xf102f015, + 0xd004dc07, + 0x04bd0001, + 0xf10117f0, + 0xd004c407, + 0x04bd0001, +/* 0x045e: memx_func_enter */ 0x67f000f8, - 0xe407f104, + 0xe007f104, 0x0006d007, -/* 0x043a: memx_func_leave_wait */ +/* 0x046a: memx_func_enter_wait */ 0x67f104bd, 0x66cf07c0, 0x0464f000, - 0xf8f61bf4, -/* 0x0449: memx_func_wr32 */ - 0x00169800, - 0xb6011598, - 0x60f90810, - 0xd0fc50f9, - 0x21f4e0fc, - 0x0242b633, - 0xf8e91bf4, -/* 0x0465: memx_func_wait */ - 0x2c87f000, - 0x980088cf, - 0x1d98001e, - 0x021c9801, - 0xb6031b98, - 0x21f41010, -/* 0x047f: memx_func_delay */ - 0x9800f87e, - 0x10b6001e, - 0x6721f404, -/* 0x048a: memx_exec */ - 0xe0f900f8, - 0xc1b9d0f9, - 0x02b2b902, -/* 0x0494: memx_exec_next */ - 0xb6001398, - 0x34950410, - 0x0c30f010, - 0xf9de3598, - 0x0612b855, - 0xfcec1ef4, - 0xf5e0fcd0, - 0xf8028421, -/* 0x04b5: memx_info */ - 0xacc7f100, - 0x00b7f103, - 0x8421f508, -/* 0x04c3: memx_recv */ - 0xb000f802, - 0x0bf401d6, - 0x00d6b0c4, - 0xf8e90bf4, -/* 0x04d1: memx_init */ -/* 0x04d3: perf_recv */ - 0xf800f800, -/* 0x04d5: perf_init */ -/* 0x04d7: i2c_drive_scl */ - 0xb000f800, - 0x0bf40036, - 0xe007f10e, + 0x98f60bf4, + 0x10b60016, +/* 0x047f: memx_func_leave */ + 0xf000f804, + 0x07f10467, + 0x06d007e4, +/* 0x048b: memx_func_leave_wait */ + 0xf104bd00, + 0xcf07c067, + 0x64f00066, + 0xf61bf404, +/* 0x049a: memx_func_wr32 */ + 0x169800f8, + 0x01159800, + 0xf90810b6, + 0xfc50f960, + 0xf4e0fcd0, + 0x42b63321, + 0xe91bf402, +/* 0x04b6: memx_func_wait */ + 0x87f000f8, + 0x0088cf2c, + 0x98001e98, + 0x1c98011d, + 0x031b9802, + 0xf41010b6, + 0x00f87e21, +/* 0x04d0: memx_func_delay */ + 0xb6001e98, + 0x21f40410, +/* 0x04db: memx_exec */ + 0xf900f867, + 0xb9d0f9e0, + 0xb2b902c1, +/* 0x04e5: memx_exec_next */ + 0x00139802, + 0x950410b6, + 0x30f01034, + 0xde35980c, + 0x12b855f9, + 0xec1ef406, + 0xe0fcd0fc, + 0x028421f5, +/* 0x0506: memx_info */ + 0xc7f100f8, + 0xb7f103ac, + 0x21f50800, + 0x00f80284, +/* 0x0514: memx_recv */ + 0xf401d6b0, + 0xd6b0c40b, + 0xe90bf400, +/* 0x0522: memx_init */ + 0x00f800f8, +/* 0x0524: perf_recv */ +/* 0x0526: perf_init */ + 0x00f800f8, +/* 0x0528: i2c_drive_scl */ + 0xf40036b0, + 0x07f10e0b, + 0x01d007e0, + 0xf804bd00, +/* 0x0539: i2c_drive_scl_lo */ + 0xe407f100, 0x0001d007, 0x00f804bd, -/* 0x04e8: i2c_drive_scl_lo */ - 0x07e407f1, - 0xbd0001d0, -/* 0x04f3: i2c_drive_sda */ - 0xb000f804, - 0x0bf40036, - 0xe007f10e, +/* 0x0544: i2c_drive_sda */ + 0xf40036b0, + 0x07f10e0b, + 0x02d007e0, + 0xf804bd00, +/* 0x0555: i2c_drive_sda_lo */ + 0xe407f100, 0x0002d007, 0x00f804bd, -/* 0x0504: i2c_drive_sda_lo */ - 0x07e407f1, - 0xbd0002d0, -/* 0x050f: i2c_sense_scl */ - 0xf400f804, - 0x37f10132, - 0x33cf07c4, - 0x0431fd00, - 0xf4060bf4, -/* 0x0522: i2c_sense_scl_done */ - 0x00f80131, -/* 0x0524: i2c_sense_sda */ +/* 0x0560: i2c_sense_scl */ 0xf10132f4, 0xcf07c437, - 0x32fd0033, + 0x31fd0033, 0x060bf404, -/* 0x0537: i2c_sense_sda_done */ +/* 0x0573: i2c_sense_scl_done */ 0xf80131f4, -/* 0x0539: i2c_raise_scl */ - 0xf140f900, - 0xf0089847, +/* 0x0575: i2c_sense_sda */ + 0x0132f400, + 0x07c437f1, + 0xfd0033cf, + 0x0bf40432, + 0x0131f406, +/* 0x0588: i2c_sense_sda_done */ +/* 0x058a: i2c_raise_scl */ + 0x40f900f8, + 0x089847f1, + 0xf50137f0, +/* 0x0597: i2c_raise_scl_wait */ + 0xf1052821, + 0xf403e8e7, + 0x21f56721, + 0x01f40560, + 0x0142b609, +/* 0x05ab: i2c_raise_scl_done */ + 0xfcef1bf4, +/* 0x05af: i2c_start */ + 0xf500f840, + 0xf4056021, + 0x21f50d11, + 0x11f40575, + 0x300ef406, +/* 0x05c0: i2c_start_rep */ + 0xf50037f0, + 0xf0052821, 0x21f50137, -/* 0x0546: i2c_raise_scl_wait */ - 0xe7f104d7, - 0x21f403e8, - 0x0f21f567, - 0x0901f405, - 0xf40142b6, -/* 0x055a: i2c_raise_scl_done */ - 0x40fcef1b, -/* 0x055e: i2c_start */ - 0x21f500f8, - 0x11f4050f, - 0x2421f50d, - 0x0611f405, -/* 0x056f: i2c_start_rep */ - 0xf0300ef4, + 0x76bb0544, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6058a21, + 0x11f40464, +/* 0x05ed: i2c_start_send */ + 0x0037f01f, + 0x054421f5, + 0x1388e7f1, + 0xf06721f4, + 0x21f50037, + 0xe7f10528, + 0x21f41388, +/* 0x0609: i2c_start_out */ +/* 0x060b: i2c_stop */ + 0xf000f867, 0x21f50037, - 0x37f004d7, - 0xf321f501, - 0x0076bb04, + 0x37f00528, + 0x4421f500, + 0xe8e7f105, + 0x6721f403, + 0xf50137f0, + 0xf1052821, + 0xf41388e7, + 0x37f06721, + 0x4421f501, + 0x88e7f105, + 0x6721f413, +/* 0x063e: i2c_bitw */ + 0x21f500f8, + 0xe7f10544, + 0x21f403e8, + 0x0076bb67, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60539, - 0x1f11f404, -/* 0x059c: i2c_start_send */ - 0xf50037f0, - 0xf104f321, - 0xf41388e7, - 0x37f06721, - 0xd721f500, - 0x88e7f104, - 0x6721f413, -/* 0x05b8: i2c_start_out */ -/* 0x05ba: i2c_stop */ - 0x37f000f8, - 0xd721f500, - 0x0037f004, - 0x04f321f5, - 0x03e8e7f1, - 0xf06721f4, - 0x21f50137, - 0xe7f104d7, - 0x21f41388, - 0x0137f067, - 0x04f321f5, + 0x64b6058a, + 0x1811f404, 0x1388e7f1, - 0xf86721f4, -/* 0x05ed: i2c_bitw */ - 0xf321f500, - 0xe8e7f104, - 0x6721f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x3921f550, - 0x0464b605, - 0xf11811f4, - 0xf41388e7, - 0x37f06721, - 0xd721f500, - 0x88e7f104, - 0x6721f413, -/* 0x062c: i2c_bitw_out */ -/* 0x062e: i2c_bitr */ - 0x37f000f8, - 0xf321f501, - 0xe8e7f104, - 0x6721f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x3921f550, - 0x0464b605, - 0xf51b11f4, - 0xf0052421, + 0xf06721f4, 0x21f50037, - 0xe7f104d7, + 0xe7f10528, 0x21f41388, - 0x013cf067, -/* 0x0673: i2c_bitr_done */ - 0xf80131f4, -/* 0x0675: i2c_get_byte */ - 0x0057f000, -/* 0x067b: i2c_get_byte_next */ - 0xb60847f0, - 0x76bb0154, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6062e21, - 0x11f40464, - 0x0553fd2b, - 0xf40142b6, - 0x37f0d81b, - 0x0076bb01, +/* 0x067d: i2c_bitw_out */ +/* 0x067f: i2c_bitr */ + 0xf000f867, + 0x21f50137, + 0xe7f10544, + 0x21f403e8, + 0x0076bb67, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b605ed, -/* 0x06c5: i2c_get_byte_done */ -/* 0x06c7: i2c_put_byte */ - 0xf000f804, -/* 0x06ca: i2c_put_byte_next */ - 0x42b60847, - 0x3854ff01, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xed21f550, - 0x0464b605, - 0xb03411f4, - 0x1bf40046, - 0x0076bbd8, + 0x64b6058a, + 0x1b11f404, + 0x057521f5, + 0xf50037f0, + 0xf1052821, + 0xf41388e7, + 0x3cf06721, + 0x0131f401, +/* 0x06c4: i2c_bitr_done */ +/* 0x06c6: i2c_get_byte */ + 0x57f000f8, + 0x0847f000, +/* 0x06cc: i2c_get_byte_next */ + 0xbb0154b6, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x067f21f5, + 0xf40464b6, + 0x53fd2b11, + 0x0142b605, + 0xf0d81bf4, + 0x76bb0137, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6063e21, +/* 0x0716: i2c_get_byte_done */ + 0x00f80464, +/* 0x0718: i2c_put_byte */ +/* 0x071b: i2c_put_byte_next */ + 0xb60847f0, + 0x54ff0142, + 0x0076bb38, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b6062e, - 0x0f11f404, - 0xb00076bb, - 0x1bf40136, - 0x0132f406, -/* 0x0720: i2c_put_byte_done */ -/* 0x0722: i2c_addr */ - 0x76bb00f8, + 0x64b6063e, + 0x3411f404, + 0xf40046b0, + 0x76bbd81b, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6055e21, + 0xb6067f21, 0x11f40464, - 0x2ec3e729, - 0x0134b601, - 0xbb0553fd, + 0x0076bb0f, + 0xf40136b0, + 0x32f4061b, +/* 0x0771: i2c_put_byte_done */ +/* 0x0773: i2c_addr */ + 0xbb00f801, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x06c721f5, -/* 0x0767: i2c_addr_done */ - 0xf80464b6, -/* 0x0769: i2c_acquire_addr */ - 0xf8cec700, - 0xb705e4b6, - 0xf8d014e0, -/* 0x0775: i2c_acquire */ - 0x6921f500, + 0x05af21f5, + 0xf40464b6, + 0xc3e72911, + 0x34b6012e, + 0x0553fd01, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x1821f550, + 0x0464b607, +/* 0x07b8: i2c_addr_done */ +/* 0x07ba: i2c_acquire_addr */ + 0xcec700f8, + 0x05e4b6f8, + 0xd014e0b7, +/* 0x07c6: i2c_acquire */ + 0x21f500f8, + 0x21f407ba, + 0x03d9f004, + 0xf83321f4, +/* 0x07d5: i2c_release */ + 0xba21f500, 0x0421f407, - 0xf403d9f0, + 0xf403daf0, 0x00f83321, -/* 0x0784: i2c_release */ - 0x076921f5, - 0xf00421f4, - 0x21f403da, -/* 0x0793: i2c_recv */ - 0xf400f833, - 0xc1c70132, - 0x0214b6f8, - 0xf52816b0, - 0xa0013a1f, - 0x980bd413, - 0x13a00032, - 0x31980bac, - 0x0231f400, - 0xe0f9d0f9, - 0x67f1d0f9, - 0x63f10000, - 0x67921000, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b60775, - 0xb0d0fc04, - 0x1bf500d6, - 0x57f000b3, - 0x0076bb00, +/* 0x07e4: i2c_recv */ + 0xc70132f4, + 0x14b6f8c1, + 0x2816b002, + 0x013a1ff5, + 0x0bd413a0, + 0xa0003298, + 0x980bac13, + 0x31f40031, + 0xf9d0f902, + 0xf1d0f9e0, + 0xf1000067, + 0x92100063, + 0x76bb0167, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb607c621, + 0xd0fc0464, + 0xf500d6b0, + 0xf000b31b, + 0x76bb0057, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6077321, + 0x11f50464, + 0xc5c700d0, + 0x0076bbe0, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60722, - 0xd011f504, - 0xe0c5c700, + 0x64b60718, + 0xad11f504, + 0x0157f000, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x7321f550, + 0x0464b607, + 0x008a11f5, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0xc721f550, + 0xc621f550, 0x0464b606, - 0x00ad11f5, - 0xbb0157f0, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x072221f5, - 0xf50464b6, - 0xbb008a11, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x067521f5, - 0xf40464b6, - 0x5bcb6a11, - 0x0076bbe0, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b605ba, - 0x025bb904, - 0x0ef474bd, -/* 0x0899: i2c_recv_not_rd08 */ - 0x01d6b043, - 0xf03d1bf4, - 0x21f50057, - 0x11f40722, - 0xe0c5c733, - 0x06c721f5, - 0xf02911f4, - 0x21f50057, - 0x11f40722, - 0xe0b5c71f, - 0x06c721f5, - 0xf51511f4, - 0xbd05ba21, - 0x08c5c774, - 0xf4091bf4, - 0x0ef40232, -/* 0x08d9: i2c_recv_not_wr08 */ -/* 0x08d9: i2c_recv_done */ - 0xf8cec703, - 0x078421f5, - 0xd0fce0fc, - 0xb90a12f4, - 0x21f5027c, -/* 0x08ee: i2c_recv_exit */ - 0x00f80284, -/* 0x08f0: i2c_init */ -/* 0x08f2: test_recv */ - 0x17f100f8, - 0x11cf05d8, - 0x0110b600, - 0x05d807f1, - 0xbd0001d0, - 0x00e7f104, - 0x4fe3f1d9, - 0xb621f513, -/* 0x0913: test_init */ - 0xf100f801, - 0xf50800e7, - 0xf801b621, -/* 0x091d: idle_recv */ -/* 0x091f: idle */ - 0xf400f800, - 0x17f10031, - 0x11cf05d4, - 0x0110b600, - 0x05d407f1, - 0xbd0001d0, -/* 0x0935: idle_loop */ - 0x5817f004, -/* 0x093b: idle_proc */ -/* 0x093b: idle_proc_exec */ - 0xf90232f4, - 0x021eb910, - 0x028d21f5, - 0x11f410fc, - 0x0231f409, -/* 0x094f: idle_proc_next */ - 0xb6ef0ef4, - 0x1fb85810, - 0xe61bf406, - 0xf4dd02f4, - 0x0ef40028, - 0x000000c1, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, + 0xcb6a11f4, + 0x76bbe05b, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6060b21, + 0x5bb90464, + 0xf474bd02, +/* 0x08ea: i2c_recv_not_rd08 */ + 0xd6b0430e, + 0x3d1bf401, + 0xf50057f0, + 0xf4077321, + 0xc5c73311, + 0x1821f5e0, + 0x2911f407, + 0xf50057f0, + 0xf4077321, + 0xb5c71f11, + 0x1821f5e0, + 0x1511f407, + 0x060b21f5, + 0xc5c774bd, + 0x091bf408, + 0xf40232f4, +/* 0x092a: i2c_recv_not_wr08 */ +/* 0x092a: i2c_recv_done */ + 0xcec7030e, + 0xd521f5f8, + 0xfce0fc07, + 0x0a12f4d0, + 0xf5027cb9, +/* 0x093f: i2c_recv_exit */ + 0xf8028421, +/* 0x0941: i2c_init */ +/* 0x0943: test_recv */ + 0xf100f800, + 0xcf05d817, + 0x10b60011, + 0xd807f101, + 0x0001d005, + 0xe7f104bd, + 0xe3f1d900, + 0x21f5134f, + 0x00f801b6, +/* 0x0964: test_init */ + 0x0800e7f1, + 0x01b621f5, +/* 0x096e: idle_recv */ + 0x00f800f8, +/* 0x0970: idle */ + 0xf10031f4, + 0xcf05d417, + 0x10b60011, + 0xd407f101, + 0x0001d005, +/* 0x0986: idle_loop */ + 0x17f004bd, + 0x0232f458, +/* 0x098c: idle_proc */ +/* 0x098c: idle_proc_exec */ + 0x1eb910f9, + 0x8d21f502, + 0xf410fc02, + 0x31f40911, + 0xef0ef402, +/* 0x09a0: idle_proc_next */ + 0xb85810b6, + 0x1bf4061f, + 0xdd02f4e6, + 0xf40028f4, + 0x0000c10e, 0x00000000, 0x00000000, 0x00000000, -- 2.0.0
Martin Peres
2014-Aug-17 15:33 UTC
[Nouveau] [PATCH 07/10] pwr: add helpers for delay-to-ticks and ticks-to-delay
From: Martin Peres <martin.peres at labri.fr> Signed-off-by: Martin Peres <martin.peres at free.fr> --- nvkm/subdev/pwr/fuc/kernel.fuc | 74 +++ nvkm/subdev/pwr/fuc/nv108.fuc | 1 + nvkm/subdev/pwr/fuc/nv108.fuc.h | 1105 ++++++++++++++++++------------------ nvkm/subdev/pwr/fuc/nva3.fuc | 1 + nvkm/subdev/pwr/fuc/nva3.fuc.h | 1191 ++++++++++++++++++++------------------- nvkm/subdev/pwr/fuc/nvc0.fuc | 1 + nvkm/subdev/pwr/fuc/nvc0.fuc.h | 1191 ++++++++++++++++++++------------------- nvkm/subdev/pwr/fuc/nvd0.fuc | 1 + nvkm/subdev/pwr/fuc/nvd0.fuc.h | 1165 ++++++++++++++++++++------------------ 9 files changed, 2446 insertions(+), 2284 deletions(-) diff --git a/nvkm/subdev/pwr/fuc/kernel.fuc b/nvkm/subdev/pwr/fuc/kernel.fuc index dd86439..54276c9 100644 --- a/nvkm/subdev/pwr/fuc/kernel.fuc +++ b/nvkm/subdev/pwr/fuc/kernel.fuc @@ -242,6 +242,80 @@ intr: bclr $flags $p0 iret +// calculate the number of ticks in the specified nanoseconds delay +// +// $r15 - current +// $r14 - ns +// $r14 - ticks (return) +// $r0 - zero +ticks_from_ns: + push $r12 + push $r11 + + /* try not losing precision (multiply then divide) */ + imm32($r13, HW_TICKS_PER_US) + call #mulu32_32_64 + + /* use an immeditate, it's ok because HW_TICKS_PER_US < 16 bits */ + div $r12 $r12 1000 + + /* check if there wasn't any overflow */ + cmpu b32 $r11 0 + bra e #ticks_from_ns_quit + + /* let's divide then multiply, too bad for the precision! */ + div $r14 $r14 1000 + imm32($r13, HW_TICKS_PER_US) + call #mulu32_32_64 + + /* this cannot overflow as long as HW_TICKS_PER_US < 1000 */ + +ticks_from_ns_quit: + mov b32 $r14 $r12 + pop $r11 + pop $r12 + ret + +// calculate the number of ticks in the specified microsecond delay +// +// $r15 - current +// $r14 - us +// $r14 - ticks (return) +// $r0 - zero +ticks_from_us: + push $r12 + push $r11 + + /* simply multiply $us by HW_TICKS_PER_US */ + imm32($r13, HW_TICKS_PER_US) + call #mulu32_32_64 + mov b32 $r14 $r12 + + /* check if there wasn't any overflow */ + cmpu b32 $r11 0 + bra e #ticks_from_us_quit + + /* Overflow! */ + clear b32 $r14 + +ticks_from_us_quit: + pop $r11 + pop $r12 + ret + +// calculate the number of ticks in the specified microsecond delay +// +// $r15 - current +// $r14 - ticks +// $r14 - us (return) +// $r0 - zero +ticks_to_us: + /* simply divide $ticks by HW_TICKS_PER_US */ + imm32($r13, HW_TICKS_PER_US) + div $r14 $r14 $r13 + + ret + // request the current process be sent a message after a timeout expires // // $r15 - current diff --git a/nvkm/subdev/pwr/fuc/nv108.fuc b/nvkm/subdev/pwr/fuc/nv108.fuc index cdff6f6..b439519 100644 --- a/nvkm/subdev/pwr/fuc/nv108.fuc +++ b/nvkm/subdev/pwr/fuc/nv108.fuc @@ -23,6 +23,7 @@ */ #define NVKM_PPWR_CHIPSET GK208 +#define HW_TICKS_PER_US 324 #define NVKM_FALCON_PC24 #define NVKM_FALCON_UNSHIFTED_IO diff --git a/nvkm/subdev/pwr/fuc/nv108.fuc.h b/nvkm/subdev/pwr/fuc/nv108.fuc.h index ae8850c..fe8dd23 100644 --- a/nvkm/subdev/pwr/fuc/nv108.fuc.h +++ b/nvkm/subdev/pwr/fuc/nv108.fuc.h @@ -24,8 +24,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x000003e0, - 0x00000391, + 0x0000043b, + 0x000003ec, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x000004cb, - 0x000004bd, + 0x00000526, + 0x00000518, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x000004cf, - 0x000004cd, + 0x0000052a, + 0x00000528, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x000008d3, - 0x0000077a, + 0x0000092e, + 0x000007d5, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x000008f4, - 0x000008d5, + 0x0000094f, + 0x00000930, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nv108_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x000008ff, - 0x000008fd, + 0x0000095a, + 0x00000958, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nv108_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x00000410, + 0x0000046b, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x0000042e, + 0x00000489, 0x00000002, 0x00000002, - 0x00000446, + 0x000004a1, 0x00040003, 0x00000000, - 0x00000463, + 0x000004be, 0x00010004, 0x00000000, - 0x0000047d, + 0x000004d8, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -784,7 +784,7 @@ uint32_t nv108_pwr_data[] = { }; uint32_t nv108_pwr_code[] = { - 0x02a90ef5, + 0x03040ef5, /* 0x0004: rd32 */ 0xf607a040, 0x04bd000e, @@ -836,7 +836,7 @@ uint32_t nv108_pwr_code[] = { 0x0a98280b, 0x029abb9a, 0x0d0e1cf4, - 0x01f67e01, + 0x02517e01, 0xf494bd00, /* 0x00b2: intr_watchdog_next_time */ 0x0a98140e, @@ -881,7 +881,7 @@ uint32_t nv108_pwr_code[] = { 0xc0f900cc, 0xf14f484e, 0x0d5453e3, - 0x02577e00, + 0x02b27e00, 0x40c0fc00, 0x0cf604c0, /* 0x0157: intr_subintr_skip_fifo */ @@ -904,598 +904,603 @@ uint32_t nv108_pwr_code[] = { 0xfca0fcb0, 0xfc80fc90, 0x0032f400, -/* 0x0196: timer */ - 0x90f901f8, - 0x32f480f9, - 0x03f89810, - 0xf40086b0, - 0x84bd4a1c, - 0x08f63800, - 0x0804bd00, - 0x0088cf34, - 0xbb9a0998, - 0xe9bb0298, - 0x03feb500, - 0x88cf0808, - 0x0284f000, - 0x081c1bf4, - 0x0088cf34, - 0x0bf4e0a6, - 0xf4e8a608, -/* 0x01da: timer_reset */ - 0x34000d1c, - 0xbd000ef6, - 0x9a0eb504, -/* 0x01e4: timer_enable */ - 0x38000108, - 0xbd0008f6, -/* 0x01ed: timer_done */ - 0x1031f404, - 0x90fc80fc, -/* 0x01f6: send_proc */ - 0x80f900f8, - 0xe89890f9, - 0x04e99805, - 0xa60486f0, - 0x2a0bf489, - 0x940398c4, - 0x80b60488, - 0x008ebb18, - 0xb500fa98, - 0x8db5008a, - 0x028cb501, - 0xb6038bb5, - 0x94f00190, - 0x04e9b507, -/* 0x022f: send_done */ - 0xfc0231f4, - 0xf880fc90, -/* 0x0235: find */ - 0x0880f900, - 0x0131f458, -/* 0x023c: find_loop */ - 0xa6008a98, - 0x100bf4ae, - 0xb15880b6, - 0xf4026886, - 0x32f4f11b, -/* 0x0251: find_done */ - 0xfc8eb201, -/* 0x0257: send */ - 0x7e00f880, - 0xf4000235, - 0x00f89b01, -/* 0x0260: recv */ - 0x9805e898, - 0x32f404e9, - 0xf489a601, - 0x89c43c0b, - 0x0180b603, - 0xb50784f0, - 0xea9805e8, - 0xfef0f902, - 0xf0f9018f, - 0x9994efb2, - 0x00e9bb04, - 0x9818e0b6, - 0xec9803eb, - 0x01ed9802, - 0xf900ee98, - 0xfef0fca5, - 0x31f400f8, -/* 0x02a7: recv_done */ - 0xf8f0fc01, -/* 0x02a9: init */ - 0x01084100, - 0xe70011cf, - 0xb6010911, - 0x14fe0814, - 0x00e04100, - 0x000013f0, - 0x0001f61c, - 0xff0104bd, - 0x01f61400, - 0x0104bd00, - 0x0015f102, - 0xf6100008, - 0x04bd0001, - 0xf000d241, - 0x10fe0013, - 0x1031f400, - 0x38000101, +/* 0x0196: ticks_from_ns */ + 0xc0f901f8, + 0xd7f1b0f9, + 0xd3f00144, + 0x5f21f500, + 0xe8ccec03, + 0x00b4b003, + 0xec120bf4, + 0xf103e8ee, + 0xf00144d7, + 0x21f500d3, +/* 0x01be: ticks_from_ns_quit */ + 0xceb2035f, + 0xc0fcb0fc, +/* 0x01c6: ticks_from_us */ + 0xc0f900f8, + 0xd7f1b0f9, + 0xd3f00144, + 0x5f21f500, + 0xb0ceb203, + 0x0bf400b4, +/* 0x01df: ticks_from_us_quit */ + 0xfce4bd05, + 0xf8c0fcb0, +/* 0x01e5: ticks_to_us */ + 0x44d7f100, + 0x00d3f001, + 0xf8ecedff, +/* 0x01f1: timer */ + 0xf990f900, + 0x1032f480, + 0xb003f898, + 0x1cf40086, + 0x0084bd4a, + 0x0008f638, + 0x340804bd, + 0x980088cf, + 0x98bb9a09, + 0x00e9bb02, + 0x0803feb5, + 0x0088cf08, + 0xf40284f0, + 0x34081c1b, + 0xa60088cf, + 0x080bf4e0, + 0x1cf4e8a6, +/* 0x0235: timer_reset */ + 0xf634000d, + 0x04bd000e, +/* 0x023f: timer_enable */ + 0x089a0eb5, + 0xf6380001, + 0x04bd0008, +/* 0x0248: timer_done */ + 0xfc1031f4, + 0xf890fc80, +/* 0x0251: send_proc */ + 0xf980f900, + 0x05e89890, + 0xf004e998, + 0x89a60486, + 0xc42a0bf4, + 0x88940398, + 0x1880b604, + 0x98008ebb, + 0x8ab500fa, + 0x018db500, + 0xb5028cb5, + 0x90b6038b, + 0x0794f001, + 0xf404e9b5, +/* 0x028a: send_done */ + 0x90fc0231, + 0x00f880fc, +/* 0x0290: find */ + 0x580880f9, +/* 0x0297: find_loop */ + 0x980131f4, + 0xaea6008a, + 0xb6100bf4, + 0x86b15880, + 0x1bf40268, + 0x0132f4f1, +/* 0x02ac: find_done */ + 0x80fc8eb2, +/* 0x02b2: send */ + 0x907e00f8, + 0x01f40002, +/* 0x02bb: recv */ + 0x9800f89b, + 0xe99805e8, + 0x0132f404, + 0x0bf489a6, + 0x0389c43c, + 0xf00180b6, + 0xe8b50784, + 0x02ea9805, + 0x8ffef0f9, + 0xb2f0f901, + 0x049994ef, + 0xb600e9bb, + 0xeb9818e0, + 0x02ec9803, + 0x9801ed98, + 0xa5f900ee, + 0xf8fef0fc, + 0x0131f400, +/* 0x0302: recv_done */ + 0x00f8f0fc, +/* 0x0304: init */ + 0xcf010841, + 0x11e70011, + 0x14b60109, + 0x0014fe08, + 0xf000e041, + 0x1c000013, 0xbd0001f6, -/* 0x02f3: init_proc */ - 0x98580f04, - 0x16b001f1, - 0xfa0bf400, - 0xf0b615f9, - 0xf20ef458, -/* 0x0304: mulu32_32_64 */ - 0x20f910f9, - 0x40f930f9, - 0x9510e195, - 0xc4bd10d2, - 0xedffb4bd, - 0x301dffc0, + 0x00ff0104, + 0x0001f614, + 0x020104bd, + 0x080015f1, + 0x01f61000, + 0x4104bd00, + 0x13f000d2, + 0x0010fe00, + 0x011031f4, + 0xf6380001, + 0x04bd0001, +/* 0x034e: init_proc */ + 0xf198580f, + 0x0016b001, + 0xf9fa0bf4, + 0x58f0b615, +/* 0x035f: mulu32_32_64 */ + 0xf9f20ef4, + 0xf920f910, + 0x9540f930, + 0xd29510e1, + 0xbdc4bd10, + 0xc0edffb4, + 0xb2301dff, + 0xff34f134, + 0x1034b6ff, + 0xbb1045b6, + 0xb4bb00c3, + 0x30e2ff01, 0x34f134b2, 0x34b6ffff, 0x1045b610, 0xbb00c3bb, - 0xe2ff01b4, - 0xf134b230, - 0xb6ffff34, - 0x45b61034, - 0x00c3bb10, - 0xff01b4bb, - 0xb3bb3012, - 0xfc40fc00, - 0xfc20fc30, -/* 0x0353: host_send */ - 0x4100f810, - 0x11cf04b0, - 0x04a04200, - 0xa60022cf, - 0x2e0bf412, - 0x94071ec4, - 0xe0b704ee, - 0xeb980270, - 0x02ec9803, - 0x9801ed98, - 0x577e00ee, - 0x10b60002, - 0x0f1ec401, - 0xf604b040, - 0x04bd000e, -/* 0x038f: host_send_done */ - 0xf8c70ef4, -/* 0x0391: host_recv */ - 0x4e494100, - 0x525413f1, - 0x0bf4e1a6, -/* 0x039d: host_recv_wait */ - 0x04cc41b9, - 0x420011cf, - 0x22cf04c8, - 0x0816f000, - 0x0bf412a6, - 0x0723c4ef, - 0xb70434b6, - 0xb502f030, - 0x3cb5033b, - 0x013db502, - 0xb6003eb5, - 0x24f00120, - 0x04c8400f, + 0x12ff01b4, + 0x00b3bb30, + 0x30fc40fc, + 0x10fc20fc, +/* 0x03ae: host_send */ + 0xb04100f8, + 0x0011cf04, + 0xcf04a042, + 0x12a60022, + 0xc42e0bf4, + 0xee94071e, + 0x70e0b704, + 0x03eb9802, + 0x9802ec98, + 0xee9801ed, + 0x02b27e00, + 0x0110b600, + 0x400f1ec4, + 0x0ef604b0, + 0xf404bd00, +/* 0x03ea: host_send_done */ + 0x00f8c70e, +/* 0x03ec: host_recv */ + 0xf14e4941, + 0xa6525413, + 0xb90bf4e1, +/* 0x03f8: host_recv_wait */ + 0xcf04cc41, + 0xc8420011, + 0x0022cf04, + 0xa60816f0, + 0xef0bf412, + 0xb60723c4, + 0x30b70434, + 0x3bb502f0, + 0x023cb503, + 0xb5013db5, + 0x20b6003e, + 0x0f24f001, + 0xf604c840, + 0x04bd0002, + 0x00004002, 0xbd0002f6, - 0x00400204, - 0x0002f600, +/* 0x043b: host_init */ + 0x4100f804, + 0x14b60080, + 0x7015f110, + 0x04d04002, + 0xbd0001f6, + 0x00804104, + 0xf11014b6, + 0x4002f015, + 0x01f604dc, + 0x0104bd00, + 0x04c44001, + 0xbd0001f6, +/* 0x046b: memx_func_enter */ + 0x0600f804, + 0x07e04004, + 0xbd0006f6, +/* 0x0475: memx_func_enter_wait */ + 0x07c04604, + 0xf00066cf, + 0x0bf40464, + 0x001698f7, + 0xf80410b6, +/* 0x0489: memx_func_leave */ + 0x40040600, + 0x06f607e4, +/* 0x0493: memx_func_leave_wait */ + 0x4604bd00, + 0x66cf07c0, + 0x0464f000, + 0xf8f71bf4, +/* 0x04a1: memx_func_wr32 */ + 0x00169800, + 0xb6011598, + 0x60f90810, + 0xd0fc50f9, + 0x2e7ee0fc, + 0x42b60000, + 0xe81bf402, +/* 0x04be: memx_func_wait */ + 0x2c0800f8, + 0x980088cf, + 0x1d98001e, + 0x021c9801, + 0xb6031b98, + 0x717e1010, + 0x00f80000, +/* 0x04d8: memx_func_delay */ + 0xb6001e98, + 0x5d7e0410, + 0x00f80000, +/* 0x04e4: memx_exec */ + 0xd0f9e0f9, + 0xb2b2c1b2, +/* 0x04ec: memx_exec_next */ + 0xb6001398, + 0x34950410, + 0x0c30f010, + 0xf9de3598, + 0xf412a655, + 0xd0fced1e, + 0xb27ee0fc, + 0x00f80002, +/* 0x050c: memx_info */ + 0x4b03ac4c, + 0xb27e0800, + 0x00f80002, +/* 0x0518: memx_recv */ + 0xf401d6b0, + 0xd6b0c90b, + 0xeb0bf400, +/* 0x0526: memx_init */ + 0x00f800f8, +/* 0x0528: perf_recv */ +/* 0x052a: perf_init */ + 0x00f800f8, +/* 0x052c: i2c_drive_scl */ + 0xf40036b0, + 0xe0400d0b, + 0x0001f607, 0x00f804bd, -/* 0x03e0: host_init */ - 0xb6008041, - 0x15f11014, - 0xd0400270, - 0x0001f604, - 0x804104bd, - 0x1014b600, - 0x02f015f1, - 0xf604dc40, +/* 0x053c: i2c_drive_scl_lo */ + 0xf607e440, 0x04bd0001, - 0xc4400101, - 0x0001f604, +/* 0x0546: i2c_drive_sda */ + 0x36b000f8, + 0x0d0bf400, + 0xf607e040, + 0x04bd0002, +/* 0x0556: i2c_drive_sda_lo */ + 0xe44000f8, + 0x0002f607, 0x00f804bd, -/* 0x0410: memx_func_enter */ - 0xe0400406, - 0x0006f607, -/* 0x041a: memx_func_enter_wait */ - 0xc04604bd, - 0x0066cf07, - 0xf40464f0, - 0x1698f70b, - 0x0410b600, -/* 0x042e: memx_func_leave */ - 0x040600f8, - 0xf607e440, - 0x04bd0006, -/* 0x0438: memx_func_leave_wait */ - 0xcf07c046, - 0x64f00066, - 0xf71bf404, -/* 0x0446: memx_func_wr32 */ - 0x169800f8, - 0x01159800, - 0xf90810b6, - 0xfc50f960, - 0x7ee0fcd0, - 0xb600002e, - 0x1bf40242, -/* 0x0463: memx_func_wait */ - 0x0800f8e8, - 0x0088cf2c, - 0x98001e98, - 0x1c98011d, - 0x031b9802, - 0x7e1010b6, - 0xf8000071, -/* 0x047d: memx_func_delay */ - 0x001e9800, - 0x7e0410b6, - 0xf800005d, -/* 0x0489: memx_exec */ - 0xf9e0f900, - 0xb2c1b2d0, -/* 0x0491: memx_exec_next */ - 0x001398b2, - 0x950410b6, - 0x30f01034, - 0xde35980c, - 0x12a655f9, - 0xfced1ef4, - 0x7ee0fcd0, - 0xf8000257, -/* 0x04b1: memx_info */ - 0x03ac4c00, - 0x7e08004b, - 0xf8000257, -/* 0x04bd: memx_recv */ - 0x01d6b000, - 0xb0c90bf4, - 0x0bf400d6, -/* 0x04cb: memx_init */ - 0xf800f8eb, -/* 0x04cd: perf_recv */ -/* 0x04cf: perf_init */ - 0xf800f800, -/* 0x04d1: i2c_drive_scl */ - 0x0036b000, - 0x400d0bf4, - 0x01f607e0, - 0xf804bd00, -/* 0x04e1: i2c_drive_scl_lo */ - 0x07e44000, - 0xbd0001f6, -/* 0x04eb: i2c_drive_sda */ - 0xb000f804, - 0x0bf40036, - 0x07e0400d, - 0xbd0002f6, -/* 0x04fb: i2c_drive_sda_lo */ - 0x4000f804, - 0x02f607e4, - 0xf804bd00, -/* 0x0505: i2c_sense_scl */ - 0x0132f400, - 0xcf07c443, - 0x31fd0033, - 0x060bf404, -/* 0x0517: i2c_sense_scl_done */ - 0xf80131f4, -/* 0x0519: i2c_sense_sda */ - 0x0132f400, - 0xcf07c443, - 0x32fd0033, - 0x060bf404, -/* 0x052b: i2c_sense_sda_done */ - 0xf80131f4, -/* 0x052d: i2c_raise_scl */ - 0x4440f900, - 0x01030898, - 0x0004d17e, -/* 0x0538: i2c_raise_scl_wait */ - 0x7e03e84e, - 0x7e00005d, - 0xf4000505, - 0x42b60901, - 0xef1bf401, -/* 0x054c: i2c_raise_scl_done */ - 0x00f840fc, -/* 0x0550: i2c_start */ - 0x0005057e, - 0x7e0d11f4, - 0xf4000519, - 0x0ef40611, -/* 0x0561: i2c_start_rep */ - 0x7e00032e, - 0x030004d1, - 0x04eb7e01, +/* 0x0560: i2c_sense_scl */ + 0x430132f4, + 0x33cf07c4, + 0x0431fd00, + 0xf4060bf4, +/* 0x0572: i2c_sense_scl_done */ + 0x00f80131, +/* 0x0574: i2c_sense_sda */ + 0x430132f4, + 0x33cf07c4, + 0x0432fd00, + 0xf4060bf4, +/* 0x0586: i2c_sense_sda_done */ + 0x00f80131, +/* 0x0588: i2c_raise_scl */ + 0x984440f9, + 0x7e010308, +/* 0x0593: i2c_raise_scl_wait */ + 0x4e00052c, + 0x5d7e03e8, + 0x607e0000, + 0x01f40005, + 0x0142b609, +/* 0x05a7: i2c_raise_scl_done */ + 0xfcef1bf4, +/* 0x05ab: i2c_start */ + 0x7e00f840, + 0xf4000560, + 0x747e0d11, + 0x11f40005, + 0x2e0ef406, +/* 0x05bc: i2c_start_rep */ + 0x2c7e0003, + 0x01030005, + 0x0005467e, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0x05887e50, + 0x0464b600, +/* 0x05e7: i2c_start_send */ + 0x031d11f4, + 0x05467e00, + 0x13884e00, + 0x00005d7e, + 0x2c7e0003, + 0x884e0005, + 0x005d7e13, +/* 0x0601: i2c_start_out */ +/* 0x0603: i2c_stop */ + 0x0300f800, + 0x052c7e00, + 0x7e000300, + 0x4e000546, + 0x5d7e03e8, + 0x01030000, + 0x00052c7e, + 0x7e13884e, + 0x0300005d, + 0x05467e01, + 0x13884e00, + 0x00005d7e, +/* 0x0632: i2c_bitw */ + 0x467e00f8, + 0xe84e0005, + 0x005d7e03, 0x0076bb00, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, - 0x2d7e50fc, + 0x887e50fc, 0x64b60005, - 0x1d11f404, -/* 0x058c: i2c_start_send */ - 0xeb7e0003, - 0x884e0004, - 0x005d7e13, - 0x7e000300, - 0x4e0004d1, - 0x5d7e1388, -/* 0x05a6: i2c_start_out */ - 0x00f80000, -/* 0x05a8: i2c_stop */ - 0xd17e0003, - 0x00030004, - 0x0004eb7e, - 0x7e03e84e, + 0x1711f404, + 0x7e13884e, 0x0300005d, - 0x04d17e01, + 0x052c7e00, 0x13884e00, 0x00005d7e, - 0xeb7e0103, - 0x884e0004, - 0x005d7e13, -/* 0x05d7: i2c_bitw */ - 0x7e00f800, - 0x4e0004eb, - 0x5d7e03e8, - 0x76bb0000, +/* 0x0670: i2c_bitw_out */ +/* 0x0672: i2c_bitr */ + 0x010300f8, + 0x0005467e, + 0x7e03e84e, + 0xbb00005d, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0005887e, + 0xf40464b6, + 0x747e1a11, + 0x00030005, + 0x00052c7e, + 0x7e13884e, + 0xf000005d, + 0x31f4013c, +/* 0x06b5: i2c_bitr_done */ +/* 0x06b7: i2c_get_byte */ + 0x0500f801, +/* 0x06bb: i2c_get_byte_next */ + 0xb6080400, + 0x76bb0154, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0x7e50fc04, - 0xb600052d, + 0xb6000672, 0x11f40464, - 0x13884e17, - 0x00005d7e, - 0xd17e0003, - 0x884e0004, - 0x005d7e13, -/* 0x0615: i2c_bitw_out */ -/* 0x0617: i2c_bitr */ - 0x0300f800, - 0x04eb7e01, - 0x03e84e00, - 0x00005d7e, + 0x0553fd2a, + 0xf40142b6, + 0x0103d81b, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x052d7e50, + 0x06327e50, 0x0464b600, - 0x7e1a11f4, - 0x03000519, - 0x04d17e00, - 0x13884e00, - 0x00005d7e, - 0xf4013cf0, -/* 0x065a: i2c_bitr_done */ - 0x00f80131, -/* 0x065c: i2c_get_byte */ - 0x08040005, -/* 0x0660: i2c_get_byte_next */ - 0xbb0154b6, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x0006177e, - 0xf40464b6, - 0x53fd2a11, - 0x0142b605, - 0x03d81bf4, - 0x0076bb01, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0xd77e50fc, - 0x64b60005, -/* 0x06a9: i2c_get_byte_done */ -/* 0x06ab: i2c_put_byte */ - 0x0400f804, -/* 0x06ad: i2c_put_byte_next */ - 0x0142b608, - 0xbb3854ff, +/* 0x0704: i2c_get_byte_done */ +/* 0x0706: i2c_put_byte */ + 0x080400f8, +/* 0x0708: i2c_put_byte_next */ + 0xff0142b6, + 0x76bb3854, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0x7e50fc04, + 0xb6000632, + 0x11f40464, + 0x0046b034, + 0xbbd81bf4, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x0005d77e, + 0x0006727e, 0xf40464b6, - 0x46b03411, - 0xd81bf400, + 0x76bb0f11, + 0x0136b000, + 0xf4061bf4, +/* 0x075e: i2c_put_byte_done */ + 0x00f80132, +/* 0x0760: i2c_addr */ 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x06177e50, + 0x05ab7e50, 0x0464b600, - 0xbb0f11f4, - 0x36b00076, - 0x061bf401, -/* 0x0703: i2c_put_byte_done */ - 0xf80132f4, -/* 0x0705: i2c_addr */ - 0x0076bb00, + 0xe72911f4, + 0xb6012ec3, + 0x53fd0134, + 0x0076bb05, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, - 0x507e50fc, - 0x64b60005, - 0x2911f404, - 0x012ec3e7, - 0xfd0134b6, - 0x76bb0553, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0x7e50fc04, - 0xb60006ab, -/* 0x074a: i2c_addr_done */ - 0x00f80464, -/* 0x074c: i2c_acquire_addr */ - 0xb6f8cec7, - 0xe0b705e4, - 0x00f8d014, -/* 0x0758: i2c_acquire */ - 0x00074c7e, + 0x067e50fc, + 0x64b60007, +/* 0x07a5: i2c_addr_done */ +/* 0x07a7: i2c_acquire_addr */ + 0xc700f804, + 0xe4b6f8ce, + 0x14e0b705, +/* 0x07b3: i2c_acquire */ + 0x7e00f8d0, + 0x7e0007a7, + 0xf0000004, + 0x2e7e03d9, + 0x00f80000, +/* 0x07c4: i2c_release */ + 0x0007a77e, 0x0000047e, - 0x7e03d9f0, + 0x7e03daf0, 0xf800002e, -/* 0x0769: i2c_release */ - 0x074c7e00, - 0x00047e00, - 0x03daf000, - 0x00002e7e, -/* 0x077a: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13b80137, - 0x98000bd4, - 0x13b80032, - 0x98000bac, - 0x31f40031, - 0xf9d0f902, - 0xf1d0f9e0, - 0xf1000067, - 0x92100063, - 0x76bb0167, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0x7e50fc04, - 0xb6000758, - 0xd0fc0464, - 0xf500d6b0, - 0x0500b01b, - 0x0076bb00, +/* 0x07d5: i2c_recv */ + 0x0132f400, + 0xb6f8c1c7, + 0x16b00214, + 0x371ff528, + 0xd413b801, + 0x3298000b, + 0xac13b800, + 0x3198000b, + 0x0231f400, + 0xe0f9d0f9, + 0x67f1d0f9, + 0x63f10000, + 0x67921000, + 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, - 0x057e50fc, + 0xb37e50fc, 0x64b60007, - 0xcc11f504, - 0xe0c5c700, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x06ab7e50, - 0x0464b600, - 0x00a911f5, - 0x76bb0105, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0x7e50fc04, - 0xb6000705, - 0x11f50464, - 0x76bb0087, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0x7e50fc04, - 0xb600065c, - 0x11f40464, - 0xe05bcb67, + 0xb0d0fc04, + 0x1bf500d6, + 0x000500b0, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x05a87e50, + 0x07607e50, 0x0464b600, - 0x74bd5bb2, -/* 0x087f: i2c_recv_not_rd08 */ - 0xb0410ef4, - 0x1bf401d6, - 0x7e00053b, - 0xf4000705, - 0xc5c73211, - 0x06ab7ee0, - 0x2811f400, - 0x057e0005, + 0x00cc11f5, + 0xbbe0c5c7, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0007067e, + 0xf50464b6, + 0x0500a911, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x607e50fc, + 0x64b60007, + 0x8711f504, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0xb77e50fc, + 0x64b60006, + 0x6711f404, + 0xbbe05bcb, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x0006037e, + 0xb20464b6, + 0xf474bd5b, +/* 0x08da: i2c_recv_not_rd08 */ + 0xd6b0410e, + 0x3b1bf401, + 0x607e0005, 0x11f40007, - 0xe0b5c71f, - 0x0006ab7e, - 0x7e1511f4, - 0xbd0005a8, - 0x08c5c774, - 0xf4091bf4, - 0x0ef40232, -/* 0x08bd: i2c_recv_not_wr08 */ -/* 0x08bd: i2c_recv_done */ - 0xf8cec703, - 0x0007697e, - 0xd0fce0fc, - 0xb20912f4, - 0x02577e7c, -/* 0x08d1: i2c_recv_exit */ -/* 0x08d3: i2c_init */ - 0xf800f800, -/* 0x08d5: test_recv */ - 0x04584100, + 0xe0c5c732, + 0x0007067e, + 0x052811f4, + 0x07607e00, + 0x1f11f400, + 0x7ee0b5c7, + 0xf4000706, + 0x037e1511, + 0x74bd0006, + 0xf408c5c7, + 0x32f4091b, + 0x030ef402, +/* 0x0918: i2c_recv_not_wr08 */ +/* 0x0918: i2c_recv_done */ + 0x7ef8cec7, + 0xfc0007c4, + 0xf4d0fce0, + 0x7cb20912, + 0x0002b27e, +/* 0x092c: i2c_recv_exit */ +/* 0x092e: i2c_init */ + 0x00f800f8, +/* 0x0930: test_recv */ + 0xcf045841, + 0x10b60011, + 0x04584001, + 0xbd0001f6, + 0x00e7f104, + 0x4fe3f1d9, + 0x01f17e13, +/* 0x094f: test_init */ + 0x4e00f800, + 0xf17e0800, + 0x00f80001, +/* 0x0958: idle_recv */ +/* 0x095a: idle */ + 0x31f400f8, + 0x04544100, 0xb60011cf, - 0x58400110, + 0x54400110, 0x0001f604, - 0xe7f104bd, - 0xe3f1d900, - 0x967e134f, - 0x00f80001, -/* 0x08f4: test_init */ - 0x7e08004e, - 0xf8000196, -/* 0x08fd: idle_recv */ -/* 0x08ff: idle */ - 0xf400f800, - 0x54410031, - 0x0011cf04, - 0x400110b6, - 0x01f60454, -/* 0x0913: idle_loop */ - 0x0104bd00, - 0x0232f458, -/* 0x0918: idle_proc */ -/* 0x0918: idle_proc_exec */ - 0x1eb210f9, - 0x0002607e, - 0x11f410fc, - 0x0231f409, -/* 0x092b: idle_proc_next */ - 0xb6f00ef4, - 0x1fa65810, - 0xf4e81bf4, - 0x28f4e002, - 0xc60ef400, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x096e: idle_loop */ + 0x580104bd, +/* 0x0973: idle_proc */ +/* 0x0973: idle_proc_exec */ + 0xf90232f4, + 0x7e1eb210, + 0xfc0002bb, + 0x0911f410, + 0xf40231f4, +/* 0x0986: idle_proc_next */ + 0x10b6f00e, + 0xf41fa658, + 0x02f4e81b, + 0x0028f4e0, + 0x00c60ef4, 0x00000000, 0x00000000, 0x00000000, diff --git a/nvkm/subdev/pwr/fuc/nva3.fuc b/nvkm/subdev/pwr/fuc/nva3.fuc index 86a3dda..daa06c1 100644 --- a/nvkm/subdev/pwr/fuc/nva3.fuc +++ b/nvkm/subdev/pwr/fuc/nva3.fuc @@ -23,6 +23,7 @@ */ #define NVKM_PPWR_CHIPSET GT215 +#define HW_TICKS_PER_US 203 // should be 202.5 //#define NVKM_FALCON_PC24 //#define NVKM_FALCON_UNSHIFTED_IO diff --git a/nvkm/subdev/pwr/fuc/nva3.fuc.h b/nvkm/subdev/pwr/fuc/nva3.fuc.h index d0d82c2..8e2ddd9 100644 --- a/nvkm/subdev/pwr/fuc/nva3.fuc.h +++ b/nvkm/subdev/pwr/fuc/nva3.fuc.h @@ -24,8 +24,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x0000049d, - 0x0000043a, + 0x000004fa, + 0x00000497, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x000005af, - 0x000005a1, + 0x0000060c, + 0x000005fe, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x000005b3, - 0x000005b1, + 0x00000610, + 0x0000060e, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x000009e3, - 0x00000886, + 0x00000a40, + 0x000008e3, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000a0c, - 0x000009e5, + 0x00000a69, + 0x00000a42, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nva3_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000a18, - 0x00000a16, + 0x00000a75, + 0x00000a73, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nva3_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x000004dc, + 0x00000539, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x00000503, + 0x00000560, 0x00000002, 0x00000002, - 0x00000524, + 0x00000581, 0x00040003, 0x00000000, - 0x00000540, + 0x0000059d, 0x00010004, 0x00000000, - 0x0000055d, + 0x000005ba, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -849,7 +849,7 @@ uint32_t nva3_pwr_data[] = { }; uint32_t nva3_pwr_code[] = { - 0x03290ef5, + 0x03860ef5, /* 0x0004: rd32 */ 0x07a007f1, 0xd00604b6, @@ -915,7 +915,7 @@ uint32_t nva3_pwr_code[] = { 0xbb9a0a98, 0x1cf4029a, 0x01d7f00f, - 0x027021f5, + 0x02cd21f5, 0x0ef494bd, /* 0x00e9: intr_watchdog_next_time */ 0x9b0a9815, @@ -967,7 +967,7 @@ uint32_t nva3_pwr_code[] = { 0x48e7f1c0, 0x53e3f14f, 0x00d7f054, - 0x02d521f5, + 0x033221f5, 0x07f1c0fc, 0x04b604c0, 0x000cd006, @@ -993,648 +993,653 @@ uint32_t nva3_pwr_code[] = { 0x90fca0fc, 0x00fc80fc, 0xf80032f4, -/* 0x01f5: timer */ - 0xf990f901, - 0x1032f480, - 0xb003f898, - 0x1cf40086, - 0xf084bd65, - 0x04b63807, - 0x0008d006, - 0x87f004bd, - 0x0684b634, - 0x980088cf, - 0x98bb9a09, - 0x00e9bb02, - 0xf003fe80, - 0x84b60887, - 0x0088cf06, - 0xf40284f0, - 0x87f0261b, - 0x0684b634, - 0xb80088cf, - 0x0bf406e0, - 0x06e8b809, -/* 0x024b: timer_reset */ - 0xf0111cf4, - 0x04b63407, - 0x000ed006, - 0x0e8004bd, -/* 0x0259: timer_enable */ - 0x0187f09a, +/* 0x01f5: ticks_from_ns */ + 0xf9c0f901, + 0xcbd7f1b0, + 0x00d3f000, + 0x03fb21f5, + 0x03e8ccec, + 0xf400b4b0, + 0xeeec120b, + 0xd7f103e8, + 0xd3f000cb, + 0xfb21f500, +/* 0x021d: ticks_from_ns_quit */ + 0x02ceb903, + 0xc0fcb0fc, +/* 0x0226: ticks_from_us */ + 0xc0f900f8, + 0xd7f1b0f9, + 0xd3f000cb, + 0xfb21f500, + 0x02ceb903, + 0xf400b4b0, + 0xe4bd050b, +/* 0x0240: ticks_from_us_quit */ + 0xc0fcb0fc, +/* 0x0246: ticks_to_us */ + 0xd7f100f8, + 0xd3f000cb, + 0xecedff00, +/* 0x0252: timer */ + 0x90f900f8, + 0x32f480f9, + 0x03f89810, + 0xf40086b0, + 0x84bd651c, 0xb63807f0, 0x08d00604, -/* 0x0267: timer_done */ - 0xf404bd00, - 0x80fc1031, - 0x00f890fc, -/* 0x0270: send_proc */ - 0x90f980f9, - 0x9805e898, - 0x86f004e9, - 0x0689b804, - 0xc42a0bf4, - 0x88940398, - 0x1880b604, - 0x98008ebb, - 0x8a8000fa, - 0x018d8000, - 0x80028c80, - 0x90b6038b, - 0x0794f001, - 0xf404e980, -/* 0x02aa: send_done */ - 0x90fc0231, - 0x00f880fc, -/* 0x02b0: find */ - 0x87f080f9, - 0x0131f458, -/* 0x02b8: find_loop */ - 0xb8008a98, - 0x0bf406ae, - 0x5880b610, - 0x026886b1, - 0xf4f01bf4, -/* 0x02ce: find_done */ - 0x8eb90132, - 0xf880fc02, -/* 0x02d5: send */ - 0xb021f500, - 0x9701f402, -/* 0x02de: recv */ - 0xe89800f8, - 0x04e99805, - 0xb80132f4, - 0x0bf40689, - 0x0389c43d, - 0xf00180b6, - 0xe8800784, - 0x02ea9805, - 0x8ffef0f9, - 0xb9f0f901, - 0x999402ef, - 0x00e9bb04, - 0x9818e0b6, - 0xec9803eb, - 0x01ed9802, - 0xf900ee98, - 0xfef0fca5, - 0x31f400f8, -/* 0x0327: recv_done */ - 0xf8f0fc01, -/* 0x0329: init */ - 0x0817f100, - 0x0614b601, - 0xe70011cf, - 0xb6010911, - 0x14fe0814, - 0xe017f100, - 0x0013f000, - 0xb61c07f0, - 0x01d00604, 0xf004bd00, - 0x07f0ff17, - 0x0604b614, - 0xbd0001d0, - 0x0217f004, - 0x080015f1, - 0xb61007f0, - 0x01d00604, - 0xf104bd00, - 0xf0010a17, - 0x10fe0013, - 0x1031f400, - 0xf00117f0, - 0x04b63807, - 0x0001d006, - 0xf7f004bd, -/* 0x038d: init_proc */ - 0x01f19858, - 0xf40016b0, - 0x15f9fa0b, - 0xf458f0b6, -/* 0x039e: mulu32_32_64 */ - 0x10f9f20e, - 0x30f920f9, - 0xe19540f9, - 0x10d29510, - 0xb4bdc4bd, - 0xffc0edff, - 0x34b9301d, - 0xff34f102, - 0x1034b6ff, - 0xbb1045b6, - 0xb4bb00c3, - 0x30e2ff01, - 0xf10234b9, - 0xb6ffff34, - 0x45b61034, - 0x00c3bb10, - 0xff01b4bb, - 0xb3bb3012, - 0xfc40fc00, - 0xfc20fc30, -/* 0x03ef: host_send */ - 0xf100f810, - 0xb604b017, - 0x11cf0614, - 0xa027f100, - 0x0624b604, - 0xb80022cf, - 0x0bf40612, - 0x071ec432, - 0xb704ee94, - 0x980270e0, - 0xec9803eb, - 0x01ed9802, - 0xf500ee98, - 0xb602d521, - 0x1ec40110, - 0xb007f10f, - 0x0604b604, - 0xbd000ed0, - 0xba0ef404, -/* 0x0438: host_send_done */ -/* 0x043a: host_recv */ + 0x84b63487, + 0x0088cf06, + 0xbb9a0998, + 0xe9bb0298, + 0x03fe8000, + 0xb60887f0, + 0x88cf0684, + 0x0284f000, + 0xf0261bf4, + 0x84b63487, + 0x0088cf06, + 0xf406e0b8, + 0xe8b8090b, + 0x111cf406, +/* 0x02a8: timer_reset */ + 0xb63407f0, + 0x0ed00604, + 0x8004bd00, +/* 0x02b6: timer_enable */ + 0x87f09a0e, + 0x3807f001, + 0xd00604b6, + 0x04bd0008, +/* 0x02c4: timer_done */ + 0xfc1031f4, + 0xf890fc80, +/* 0x02cd: send_proc */ + 0xf980f900, + 0x05e89890, + 0xf004e998, + 0x89b80486, + 0x2a0bf406, + 0x940398c4, + 0x80b60488, + 0x008ebb18, + 0x8000fa98, + 0x8d80008a, + 0x028c8001, + 0xb6038b80, + 0x94f00190, + 0x04e98007, +/* 0x0307: send_done */ + 0xfc0231f4, + 0xf880fc90, +/* 0x030d: find */ + 0xf080f900, + 0x31f45887, +/* 0x0315: find_loop */ + 0x008a9801, + 0xf406aeb8, + 0x80b6100b, + 0x6886b158, + 0xf01bf402, +/* 0x032b: find_done */ + 0xb90132f4, + 0x80fc028e, +/* 0x0332: send */ + 0x21f500f8, + 0x01f4030d, +/* 0x033b: recv */ + 0x9800f897, + 0xe99805e8, + 0x0132f404, + 0xf40689b8, + 0x89c43d0b, + 0x0180b603, + 0x800784f0, + 0xea9805e8, + 0xfef0f902, + 0xf0f9018f, + 0x9402efb9, + 0xe9bb0499, + 0x18e0b600, + 0x9803eb98, + 0xed9802ec, + 0x00ee9801, + 0xf0fca5f9, + 0xf400f8fe, + 0xf0fc0131, +/* 0x0384: recv_done */ +/* 0x0386: init */ 0x17f100f8, - 0x13f14e49, - 0xe1b85254, - 0xaa0bf406, -/* 0x0448: host_recv_wait */ - 0x04cc17f1, + 0x14b60108, + 0x0011cf06, + 0x010911e7, + 0xfe0814b6, + 0x17f10014, + 0x13f000e0, + 0x1c07f000, + 0xd00604b6, + 0x04bd0001, + 0xf0ff17f0, + 0x04b61407, + 0x0001d006, + 0x17f004bd, + 0x0015f102, + 0x1007f008, + 0xd00604b6, + 0x04bd0001, + 0x010a17f1, + 0xfe0013f0, + 0x31f40010, + 0x0117f010, + 0xb63807f0, + 0x01d00604, + 0xf004bd00, +/* 0x03ea: init_proc */ + 0xf19858f7, + 0x0016b001, + 0xf9fa0bf4, + 0x58f0b615, +/* 0x03fb: mulu32_32_64 */ + 0xf9f20ef4, + 0xf920f910, + 0x9540f930, + 0xd29510e1, + 0xbdc4bd10, + 0xc0edffb4, + 0xb9301dff, + 0x34f10234, + 0x34b6ffff, + 0x1045b610, + 0xbb00c3bb, + 0xe2ff01b4, + 0x0234b930, + 0xffff34f1, + 0xb61034b6, + 0xc3bb1045, + 0x01b4bb00, + 0xbb3012ff, + 0x40fc00b3, + 0x20fc30fc, + 0x00f810fc, +/* 0x044c: host_send */ + 0x04b017f1, 0xcf0614b6, 0x27f10011, - 0x24b604c8, + 0x24b604a0, 0x0022cf06, - 0xb80816f0, - 0x0bf40612, - 0x0723c4e6, - 0xb70434b6, - 0x8002f030, - 0x3c80033b, - 0x013d8002, - 0xb6003e80, - 0x24f00120, - 0xc807f10f, + 0xf40612b8, + 0x1ec4320b, + 0x04ee9407, + 0x0270e0b7, + 0x9803eb98, + 0xed9802ec, + 0x00ee9801, + 0x033221f5, + 0xc40110b6, + 0x07f10f1e, + 0x04b604b0, + 0x000ed006, + 0x0ef404bd, +/* 0x0495: host_send_done */ +/* 0x0497: host_recv */ + 0xf100f8ba, + 0xf14e4917, + 0xb8525413, + 0x0bf406e1, +/* 0x04a5: host_recv_wait */ + 0xcc17f1aa, + 0x0614b604, + 0xf10011cf, + 0xb604c827, + 0x22cf0624, + 0x0816f000, + 0xf40612b8, + 0x23c4e60b, + 0x0434b607, + 0x02f030b7, + 0x80033b80, + 0x3d80023c, + 0x003e8001, + 0xf00120b6, + 0x07f10f24, + 0x04b604c8, + 0x0002d006, + 0x27f004bd, + 0x0007f040, + 0xd00604b6, + 0x04bd0002, +/* 0x04fa: host_init */ + 0x17f100f8, + 0x14b60080, + 0x7015f110, + 0xd007f102, 0x0604b604, - 0xbd0002d0, - 0x4027f004, - 0xb60007f0, - 0x02d00604, - 0xf804bd00, -/* 0x049d: host_init */ - 0x8017f100, + 0xbd0001d0, + 0x8017f104, 0x1014b600, - 0x027015f1, - 0x04d007f1, + 0x02f015f1, + 0x04dc07f1, 0xd00604b6, 0x04bd0001, - 0x008017f1, - 0xf11014b6, - 0xf102f015, - 0xb604dc07, + 0xf10117f0, + 0xb604c407, 0x01d00604, - 0xf004bd00, - 0x07f10117, - 0x04b604c4, - 0x0001d006, - 0x00f804bd, -/* 0x04dc: memx_func_enter */ + 0xf804bd00, +/* 0x0539: memx_func_enter */ + 0x0467f000, + 0x07e007f1, + 0xd00604b6, + 0x04bd0006, +/* 0x0548: memx_func_enter_wait */ + 0x07c067f1, + 0xcf0664b6, + 0x64f00066, + 0xf30bf404, + 0xb6001698, + 0x00f80410, +/* 0x0560: memx_func_leave */ 0xf10467f0, - 0xb607e007, + 0xb607e407, 0x06d00604, -/* 0x04eb: memx_func_enter_wait */ +/* 0x056f: memx_func_leave_wait */ 0xf104bd00, 0xb607c067, 0x66cf0664, 0x0464f000, - 0x98f30bf4, - 0x10b60016, -/* 0x0503: memx_func_leave */ - 0xf000f804, - 0x07f10467, - 0x04b607e4, - 0x0006d006, -/* 0x0512: memx_func_leave_wait */ - 0x67f104bd, - 0x64b607c0, - 0x0066cf06, - 0xf40464f0, - 0x00f8f31b, -/* 0x0524: memx_func_wr32 */ - 0x98001698, - 0x10b60115, - 0xf960f908, - 0xfcd0fc50, - 0x3f21f4e0, - 0xf40242b6, - 0x00f8e91b, -/* 0x0540: memx_func_wait */ - 0xb62c87f0, - 0x88cf0684, - 0x001e9800, - 0x98011d98, - 0x1b98021c, - 0x1010b603, - 0xf89c21f4, -/* 0x055d: memx_func_delay */ - 0x001e9800, - 0xf40410b6, - 0x00f87f21, -/* 0x0568: memx_exec */ - 0xd0f9e0f9, - 0xb902c1b9, -/* 0x0572: memx_exec_next */ - 0x139802b2, + 0xf8f31bf4, +/* 0x0581: memx_func_wr32 */ + 0x00169800, + 0xb6011598, + 0x60f90810, + 0xd0fc50f9, + 0x21f4e0fc, + 0x0242b63f, + 0xf8e91bf4, +/* 0x059d: memx_func_wait */ + 0x2c87f000, + 0xcf0684b6, + 0x1e980088, + 0x011d9800, + 0x98021c98, + 0x10b6031b, + 0x9c21f410, +/* 0x05ba: memx_func_delay */ + 0x1e9800f8, 0x0410b600, - 0xf0103495, - 0x35980c30, - 0xb855f9de, - 0x1ef40612, - 0xfcd0fcec, - 0xd521f5e0, -/* 0x0593: memx_info */ - 0xf100f802, - 0xf103acc7, - 0xf50800b7, - 0xf802d521, -/* 0x05a1: memx_recv */ - 0x01d6b000, - 0xb0c40bf4, - 0x0bf400d6, -/* 0x05af: memx_init */ - 0xf800f8e9, -/* 0x05b1: perf_recv */ -/* 0x05b3: perf_init */ - 0xf800f800, -/* 0x05b5: i2c_drive_scl */ - 0x0036b000, - 0xf1110bf4, - 0xb607e007, - 0x01d00604, - 0xf804bd00, -/* 0x05c9: i2c_drive_scl_lo */ - 0xe407f100, - 0x0604b607, - 0xbd0001d0, -/* 0x05d7: i2c_drive_sda */ - 0xb000f804, - 0x0bf40036, - 0xe007f111, - 0x0604b607, - 0xbd0002d0, -/* 0x05eb: i2c_drive_sda_lo */ - 0xf100f804, - 0xb607e407, - 0x02d00604, - 0xf804bd00, -/* 0x05f9: i2c_sense_scl */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x31fd0033, - 0x060bf404, -/* 0x060f: i2c_sense_scl_done */ - 0xf80131f4, -/* 0x0611: i2c_sense_sda */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x32fd0033, - 0x060bf404, -/* 0x0627: i2c_sense_sda_done */ - 0xf80131f4, -/* 0x0629: i2c_raise_scl */ - 0xf140f900, - 0xf0089847, + 0xf87f21f4, +/* 0x05c5: memx_exec */ + 0xf9e0f900, + 0x02c1b9d0, +/* 0x05cf: memx_exec_next */ + 0x9802b2b9, + 0x10b60013, + 0x10349504, + 0x980c30f0, + 0x55f9de35, + 0xf40612b8, + 0xd0fcec1e, + 0x21f5e0fc, + 0x00f80332, +/* 0x05f0: memx_info */ + 0x03acc7f1, + 0x0800b7f1, + 0x033221f5, +/* 0x05fe: memx_recv */ + 0xd6b000f8, + 0xc40bf401, + 0xf400d6b0, + 0x00f8e90b, +/* 0x060c: memx_init */ +/* 0x060e: perf_recv */ + 0x00f800f8, +/* 0x0610: perf_init */ +/* 0x0612: i2c_drive_scl */ + 0x36b000f8, + 0x110bf400, + 0x07e007f1, + 0xd00604b6, + 0x04bd0001, +/* 0x0626: i2c_drive_scl_lo */ + 0x07f100f8, + 0x04b607e4, + 0x0001d006, + 0x00f804bd, +/* 0x0634: i2c_drive_sda */ + 0xf40036b0, + 0x07f1110b, + 0x04b607e0, + 0x0002d006, + 0x00f804bd, +/* 0x0648: i2c_drive_sda_lo */ + 0x07e407f1, + 0xd00604b6, + 0x04bd0002, +/* 0x0656: i2c_sense_scl */ + 0x32f400f8, + 0xc437f101, + 0x0634b607, + 0xfd0033cf, + 0x0bf40431, + 0x0131f406, +/* 0x066c: i2c_sense_scl_done */ +/* 0x066e: i2c_sense_sda */ + 0x32f400f8, + 0xc437f101, + 0x0634b607, + 0xfd0033cf, + 0x0bf40432, + 0x0131f406, +/* 0x0684: i2c_sense_sda_done */ +/* 0x0686: i2c_raise_scl */ + 0x40f900f8, + 0x089847f1, + 0xf50137f0, +/* 0x0693: i2c_raise_scl_wait */ + 0xf1061221, + 0xf403e8e7, + 0x21f57f21, + 0x01f40656, + 0x0142b609, +/* 0x06a7: i2c_raise_scl_done */ + 0xfcef1bf4, +/* 0x06ab: i2c_start */ + 0xf500f840, + 0xf4065621, + 0x21f50d11, + 0x11f4066e, + 0x300ef406, +/* 0x06bc: i2c_start_rep */ + 0xf50037f0, + 0xf0061221, 0x21f50137, -/* 0x0636: i2c_raise_scl_wait */ - 0xe7f105b5, - 0x21f403e8, - 0xf921f57f, - 0x0901f405, - 0xf40142b6, -/* 0x064a: i2c_raise_scl_done */ - 0x40fcef1b, -/* 0x064e: i2c_start */ - 0x21f500f8, - 0x11f405f9, - 0x1121f50d, - 0x0611f406, -/* 0x065f: i2c_start_rep */ - 0xf0300ef4, + 0x76bb0634, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6068621, + 0x11f40464, +/* 0x06e9: i2c_start_send */ + 0x0037f01f, + 0x063421f5, + 0x1388e7f1, + 0xf07f21f4, 0x21f50037, - 0x37f005b5, - 0xd721f501, - 0x0076bb05, + 0xe7f10612, + 0x21f41388, +/* 0x0705: i2c_start_out */ +/* 0x0707: i2c_stop */ + 0xf000f87f, + 0x21f50037, + 0x37f00612, + 0x3421f500, + 0xe8e7f106, + 0x7f21f403, + 0xf50137f0, + 0xf1061221, + 0xf41388e7, + 0x37f07f21, + 0x3421f501, + 0x88e7f106, + 0x7f21f413, +/* 0x073a: i2c_bitw */ + 0x21f500f8, + 0xe7f10634, + 0x21f403e8, + 0x0076bb7f, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60629, - 0x1f11f404, -/* 0x068c: i2c_start_send */ - 0xf50037f0, - 0xf105d721, - 0xf41388e7, - 0x37f07f21, - 0xb521f500, - 0x88e7f105, - 0x7f21f413, -/* 0x06a8: i2c_start_out */ -/* 0x06aa: i2c_stop */ - 0x37f000f8, - 0xb521f500, - 0x0037f005, - 0x05d721f5, - 0x03e8e7f1, - 0xf07f21f4, - 0x21f50137, - 0xe7f105b5, - 0x21f41388, - 0x0137f07f, - 0x05d721f5, + 0x64b60686, + 0x1811f404, 0x1388e7f1, - 0xf87f21f4, -/* 0x06dd: i2c_bitw */ - 0xd721f500, - 0xe8e7f105, - 0x7f21f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x2921f550, - 0x0464b606, - 0xf11811f4, - 0xf41388e7, - 0x37f07f21, - 0xb521f500, - 0x88e7f105, - 0x7f21f413, -/* 0x071c: i2c_bitw_out */ -/* 0x071e: i2c_bitr */ - 0x37f000f8, - 0xd721f501, - 0xe8e7f105, - 0x7f21f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x2921f550, - 0x0464b606, - 0xf51b11f4, - 0xf0061121, + 0xf07f21f4, 0x21f50037, - 0xe7f105b5, + 0xe7f10612, 0x21f41388, - 0x013cf07f, -/* 0x0763: i2c_bitr_done */ - 0xf80131f4, -/* 0x0765: i2c_get_byte */ - 0x0057f000, -/* 0x076b: i2c_get_byte_next */ - 0xb60847f0, - 0x76bb0154, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6071e21, - 0x11f40464, - 0x0553fd2b, - 0xf40142b6, - 0x37f0d81b, - 0x0076bb01, +/* 0x0779: i2c_bitw_out */ +/* 0x077b: i2c_bitr */ + 0xf000f87f, + 0x21f50137, + 0xe7f10634, + 0x21f403e8, + 0x0076bb7f, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b606dd, -/* 0x07b5: i2c_get_byte_done */ -/* 0x07b7: i2c_put_byte */ - 0xf000f804, -/* 0x07ba: i2c_put_byte_next */ - 0x42b60847, - 0x3854ff01, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xdd21f550, - 0x0464b606, - 0xb03411f4, - 0x1bf40046, - 0x0076bbd8, + 0x64b60686, + 0x1b11f404, + 0x066e21f5, + 0xf50037f0, + 0xf1061221, + 0xf41388e7, + 0x3cf07f21, + 0x0131f401, +/* 0x07c0: i2c_bitr_done */ +/* 0x07c2: i2c_get_byte */ + 0x57f000f8, + 0x0847f000, +/* 0x07c8: i2c_get_byte_next */ + 0xbb0154b6, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x077b21f5, + 0xf40464b6, + 0x53fd2b11, + 0x0142b605, + 0xf0d81bf4, + 0x76bb0137, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6073a21, +/* 0x0812: i2c_get_byte_done */ + 0x00f80464, +/* 0x0814: i2c_put_byte */ +/* 0x0817: i2c_put_byte_next */ + 0xb60847f0, + 0x54ff0142, + 0x0076bb38, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b6071e, - 0x0f11f404, - 0xb00076bb, - 0x1bf40136, - 0x0132f406, -/* 0x0810: i2c_put_byte_done */ -/* 0x0812: i2c_addr */ - 0x76bb00f8, + 0x64b6073a, + 0x3411f404, + 0xf40046b0, + 0x76bbd81b, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6064e21, + 0xb6077b21, 0x11f40464, - 0x2ec3e729, - 0x0134b601, - 0xbb0553fd, + 0x0076bb0f, + 0xf40136b0, + 0x32f4061b, +/* 0x086d: i2c_put_byte_done */ +/* 0x086f: i2c_addr */ + 0xbb00f801, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07b721f5, -/* 0x0857: i2c_addr_done */ - 0xf80464b6, -/* 0x0859: i2c_acquire_addr */ - 0xf8cec700, - 0xb702e4b6, - 0x980bfce0, - 0x00f800ee, -/* 0x0868: i2c_acquire */ - 0x085921f5, - 0xf00421f4, - 0x21f403d9, -/* 0x0877: i2c_release */ - 0xf500f83f, - 0xf4085921, - 0xdaf00421, - 0x3f21f403, -/* 0x0886: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13a0013a, - 0x32980bd4, - 0xac13a000, - 0x0031980b, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, + 0x06ab21f5, + 0xf40464b6, + 0xc3e72911, + 0x34b6012e, + 0x0553fd01, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x6821f550, + 0x1421f550, 0x0464b608, - 0xd6b0d0fc, - 0xb31bf500, - 0x0057f000, +/* 0x08b4: i2c_addr_done */ +/* 0x08b6: i2c_acquire_addr */ + 0xcec700f8, + 0x02e4b6f8, + 0x0bfce0b7, + 0xf800ee98, +/* 0x08c5: i2c_acquire */ + 0xb621f500, + 0x0421f408, + 0xf403d9f0, + 0x00f83f21, +/* 0x08d4: i2c_release */ + 0x08b621f5, + 0xf00421f4, + 0x21f403da, +/* 0x08e3: i2c_recv */ + 0xf400f83f, + 0xc1c70132, + 0x0214b6f8, + 0xf52816b0, + 0xa0013a1f, + 0x980bd413, + 0x13a00032, + 0x31980bac, + 0x0231f400, + 0xe0f9d0f9, + 0x67f1d0f9, + 0x63f10000, + 0x67921000, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b608c5, + 0xb0d0fc04, + 0x1bf500d6, + 0x57f000b3, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b6086f, + 0xd011f504, + 0xe0c5c700, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x1221f550, + 0x1421f550, 0x0464b608, - 0x00d011f5, - 0xbbe0c5c7, + 0x00ad11f5, + 0xbb0157f0, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07b721f5, + 0x086f21f5, 0xf50464b6, - 0xf000ad11, - 0x76bb0157, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6081221, - 0x11f50464, - 0x76bb008a, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6076521, - 0x11f40464, - 0xe05bcb6a, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xaa21f550, - 0x0464b606, - 0xbd025bb9, - 0x430ef474, -/* 0x098c: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x57f03d1b, - 0x1221f500, - 0x3311f408, - 0xf5e0c5c7, - 0xf407b721, - 0x57f02911, - 0x1221f500, - 0x1f11f408, - 0xf5e0b5c7, - 0xf407b721, - 0x21f51511, - 0x74bd06aa, - 0xf408c5c7, - 0x32f4091b, - 0x030ef402, -/* 0x09cc: i2c_recv_not_wr08 */ -/* 0x09cc: i2c_recv_done */ - 0xf5f8cec7, - 0xfc087721, - 0xf4d0fce0, - 0x7cb90a12, - 0xd521f502, -/* 0x09e1: i2c_recv_exit */ -/* 0x09e3: i2c_init */ + 0xbb008a11, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x07c221f5, + 0xf40464b6, + 0x5bcb6a11, + 0x0076bbe0, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60707, + 0x025bb904, + 0x0ef474bd, +/* 0x09e9: i2c_recv_not_rd08 */ + 0x01d6b043, + 0xf03d1bf4, + 0x21f50057, + 0x11f4086f, + 0xe0c5c733, + 0x081421f5, + 0xf02911f4, + 0x21f50057, + 0x11f4086f, + 0xe0b5c71f, + 0x081421f5, + 0xf51511f4, + 0xbd070721, + 0x08c5c774, + 0xf4091bf4, + 0x0ef40232, +/* 0x0a29: i2c_recv_not_wr08 */ +/* 0x0a29: i2c_recv_done */ + 0xf8cec703, + 0x08d421f5, + 0xd0fce0fc, + 0xb90a12f4, + 0x21f5027c, +/* 0x0a3e: i2c_recv_exit */ + 0x00f80332, +/* 0x0a40: i2c_init */ +/* 0x0a42: test_recv */ + 0x17f100f8, + 0x14b605d8, + 0x0011cf06, + 0xf10110b6, + 0xb605d807, + 0x01d00604, + 0xf104bd00, + 0xf1d900e7, + 0xf5134fe3, + 0xf8025221, +/* 0x0a69: test_init */ + 0x00e7f100, + 0x5221f508, +/* 0x0a73: idle_recv */ 0xf800f802, -/* 0x09e5: test_recv */ - 0xd817f100, - 0x0614b605, - 0xb60011cf, - 0x07f10110, - 0x04b605d8, - 0x0001d006, - 0xe7f104bd, - 0xe3f1d900, - 0x21f5134f, - 0x00f801f5, -/* 0x0a0c: test_init */ - 0x0800e7f1, - 0x01f521f5, -/* 0x0a16: idle_recv */ - 0x00f800f8, -/* 0x0a18: idle */ - 0xf10031f4, - 0xb605d417, - 0x11cf0614, - 0x0110b600, - 0x05d407f1, - 0xd00604b6, - 0x04bd0001, -/* 0x0a34: idle_loop */ - 0xf45817f0, -/* 0x0a3a: idle_proc */ -/* 0x0a3a: idle_proc_exec */ - 0x10f90232, - 0xf5021eb9, - 0xfc02de21, - 0x0911f410, - 0xf40231f4, -/* 0x0a4e: idle_proc_next */ - 0x10b6ef0e, - 0x061fb858, - 0xf4e61bf4, - 0x28f4dd02, - 0xbb0ef400, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0a75: idle */ + 0x0031f400, + 0x05d417f1, + 0xcf0614b6, + 0x10b60011, + 0xd407f101, + 0x0604b605, + 0xbd0001d0, +/* 0x0a91: idle_loop */ + 0x5817f004, +/* 0x0a97: idle_proc */ +/* 0x0a97: idle_proc_exec */ + 0xf90232f4, + 0x021eb910, + 0x033b21f5, + 0x11f410fc, + 0x0231f409, +/* 0x0aab: idle_proc_next */ + 0xb6ef0ef4, + 0x1fb85810, + 0xe61bf406, + 0xf4dd02f4, + 0x0ef40028, + 0x000000bb, 0x00000000, 0x00000000, 0x00000000, diff --git a/nvkm/subdev/pwr/fuc/nvc0.fuc b/nvkm/subdev/pwr/fuc/nvc0.fuc index ddd72d6..21bf8cc 100644 --- a/nvkm/subdev/pwr/fuc/nvc0.fuc +++ b/nvkm/subdev/pwr/fuc/nvc0.fuc @@ -23,6 +23,7 @@ */ #define NVKM_PPWR_CHIPSET GF100 +#define HW_TICKS_PER_US 203 // should be 202.5 //#define NVKM_FALCON_PC24 //#define NVKM_FALCON_UNSHIFTED_IO diff --git a/nvkm/subdev/pwr/fuc/nvc0.fuc.h b/nvkm/subdev/pwr/fuc/nvc0.fuc.h index 1e2ab16..a0bd2c1 100644 --- a/nvkm/subdev/pwr/fuc/nvc0.fuc.h +++ b/nvkm/subdev/pwr/fuc/nvc0.fuc.h @@ -24,8 +24,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x0000049d, - 0x0000043a, + 0x000004fa, + 0x00000497, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x000005af, - 0x000005a1, + 0x0000060c, + 0x000005fe, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x000005b3, - 0x000005b1, + 0x00000610, + 0x0000060e, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x000009e3, - 0x00000886, + 0x00000a40, + 0x000008e3, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000a0c, - 0x000009e5, + 0x00000a69, + 0x00000a42, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nvc0_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000a18, - 0x00000a16, + 0x00000a75, + 0x00000a73, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nvc0_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x000004dc, + 0x00000539, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x00000503, + 0x00000560, 0x00000002, 0x00000002, - 0x00000524, + 0x00000581, 0x00040003, 0x00000000, - 0x00000540, + 0x0000059d, 0x00010004, 0x00000000, - 0x0000055d, + 0x000005ba, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -849,7 +849,7 @@ uint32_t nvc0_pwr_data[] = { }; uint32_t nvc0_pwr_code[] = { - 0x03290ef5, + 0x03860ef5, /* 0x0004: rd32 */ 0x07a007f1, 0xd00604b6, @@ -915,7 +915,7 @@ uint32_t nvc0_pwr_code[] = { 0xbb9a0a98, 0x1cf4029a, 0x01d7f00f, - 0x027021f5, + 0x02cd21f5, 0x0ef494bd, /* 0x00e9: intr_watchdog_next_time */ 0x9b0a9815, @@ -967,7 +967,7 @@ uint32_t nvc0_pwr_code[] = { 0x48e7f1c0, 0x53e3f14f, 0x00d7f054, - 0x02d521f5, + 0x033221f5, 0x07f1c0fc, 0x04b604c0, 0x000cd006, @@ -993,648 +993,653 @@ uint32_t nvc0_pwr_code[] = { 0x90fca0fc, 0x00fc80fc, 0xf80032f4, -/* 0x01f5: timer */ - 0xf990f901, - 0x1032f480, - 0xb003f898, - 0x1cf40086, - 0xf084bd65, - 0x04b63807, - 0x0008d006, - 0x87f004bd, - 0x0684b634, - 0x980088cf, - 0x98bb9a09, - 0x00e9bb02, - 0xf003fe80, - 0x84b60887, - 0x0088cf06, - 0xf40284f0, - 0x87f0261b, - 0x0684b634, - 0xb80088cf, - 0x0bf406e0, - 0x06e8b809, -/* 0x024b: timer_reset */ - 0xf0111cf4, - 0x04b63407, - 0x000ed006, - 0x0e8004bd, -/* 0x0259: timer_enable */ - 0x0187f09a, +/* 0x01f5: ticks_from_ns */ + 0xf9c0f901, + 0xcbd7f1b0, + 0x00d3f000, + 0x03fb21f5, + 0x03e8ccec, + 0xf400b4b0, + 0xeeec120b, + 0xd7f103e8, + 0xd3f000cb, + 0xfb21f500, +/* 0x021d: ticks_from_ns_quit */ + 0x02ceb903, + 0xc0fcb0fc, +/* 0x0226: ticks_from_us */ + 0xc0f900f8, + 0xd7f1b0f9, + 0xd3f000cb, + 0xfb21f500, + 0x02ceb903, + 0xf400b4b0, + 0xe4bd050b, +/* 0x0240: ticks_from_us_quit */ + 0xc0fcb0fc, +/* 0x0246: ticks_to_us */ + 0xd7f100f8, + 0xd3f000cb, + 0xecedff00, +/* 0x0252: timer */ + 0x90f900f8, + 0x32f480f9, + 0x03f89810, + 0xf40086b0, + 0x84bd651c, 0xb63807f0, 0x08d00604, -/* 0x0267: timer_done */ - 0xf404bd00, - 0x80fc1031, - 0x00f890fc, -/* 0x0270: send_proc */ - 0x90f980f9, - 0x9805e898, - 0x86f004e9, - 0x0689b804, - 0xc42a0bf4, - 0x88940398, - 0x1880b604, - 0x98008ebb, - 0x8a8000fa, - 0x018d8000, - 0x80028c80, - 0x90b6038b, - 0x0794f001, - 0xf404e980, -/* 0x02aa: send_done */ - 0x90fc0231, - 0x00f880fc, -/* 0x02b0: find */ - 0x87f080f9, - 0x0131f458, -/* 0x02b8: find_loop */ - 0xb8008a98, - 0x0bf406ae, - 0x5880b610, - 0x026886b1, - 0xf4f01bf4, -/* 0x02ce: find_done */ - 0x8eb90132, - 0xf880fc02, -/* 0x02d5: send */ - 0xb021f500, - 0x9701f402, -/* 0x02de: recv */ - 0xe89800f8, - 0x04e99805, - 0xb80132f4, - 0x0bf40689, - 0x0389c43d, - 0xf00180b6, - 0xe8800784, - 0x02ea9805, - 0x8ffef0f9, - 0xb9f0f901, - 0x999402ef, - 0x00e9bb04, - 0x9818e0b6, - 0xec9803eb, - 0x01ed9802, - 0xf900ee98, - 0xfef0fca5, - 0x31f400f8, -/* 0x0327: recv_done */ - 0xf8f0fc01, -/* 0x0329: init */ - 0x0817f100, - 0x0614b601, - 0xe70011cf, - 0xb6010911, - 0x14fe0814, - 0xe017f100, - 0x0013f000, - 0xb61c07f0, - 0x01d00604, 0xf004bd00, - 0x07f0ff17, - 0x0604b614, - 0xbd0001d0, - 0x0217f004, - 0x080015f1, - 0xb61007f0, - 0x01d00604, - 0xf104bd00, - 0xf0010a17, - 0x10fe0013, - 0x1031f400, - 0xf00117f0, - 0x04b63807, - 0x0001d006, - 0xf7f004bd, -/* 0x038d: init_proc */ - 0x01f19858, - 0xf40016b0, - 0x15f9fa0b, - 0xf458f0b6, -/* 0x039e: mulu32_32_64 */ - 0x10f9f20e, - 0x30f920f9, - 0xe19540f9, - 0x10d29510, - 0xb4bdc4bd, - 0xffc0edff, - 0x34b9301d, - 0xff34f102, - 0x1034b6ff, - 0xbb1045b6, - 0xb4bb00c3, - 0x30e2ff01, - 0xf10234b9, - 0xb6ffff34, - 0x45b61034, - 0x00c3bb10, - 0xff01b4bb, - 0xb3bb3012, - 0xfc40fc00, - 0xfc20fc30, -/* 0x03ef: host_send */ - 0xf100f810, - 0xb604b017, - 0x11cf0614, - 0xa027f100, - 0x0624b604, - 0xb80022cf, - 0x0bf40612, - 0x071ec432, - 0xb704ee94, - 0x980270e0, - 0xec9803eb, - 0x01ed9802, - 0xf500ee98, - 0xb602d521, - 0x1ec40110, - 0xb007f10f, - 0x0604b604, - 0xbd000ed0, - 0xba0ef404, -/* 0x0438: host_send_done */ -/* 0x043a: host_recv */ + 0x84b63487, + 0x0088cf06, + 0xbb9a0998, + 0xe9bb0298, + 0x03fe8000, + 0xb60887f0, + 0x88cf0684, + 0x0284f000, + 0xf0261bf4, + 0x84b63487, + 0x0088cf06, + 0xf406e0b8, + 0xe8b8090b, + 0x111cf406, +/* 0x02a8: timer_reset */ + 0xb63407f0, + 0x0ed00604, + 0x8004bd00, +/* 0x02b6: timer_enable */ + 0x87f09a0e, + 0x3807f001, + 0xd00604b6, + 0x04bd0008, +/* 0x02c4: timer_done */ + 0xfc1031f4, + 0xf890fc80, +/* 0x02cd: send_proc */ + 0xf980f900, + 0x05e89890, + 0xf004e998, + 0x89b80486, + 0x2a0bf406, + 0x940398c4, + 0x80b60488, + 0x008ebb18, + 0x8000fa98, + 0x8d80008a, + 0x028c8001, + 0xb6038b80, + 0x94f00190, + 0x04e98007, +/* 0x0307: send_done */ + 0xfc0231f4, + 0xf880fc90, +/* 0x030d: find */ + 0xf080f900, + 0x31f45887, +/* 0x0315: find_loop */ + 0x008a9801, + 0xf406aeb8, + 0x80b6100b, + 0x6886b158, + 0xf01bf402, +/* 0x032b: find_done */ + 0xb90132f4, + 0x80fc028e, +/* 0x0332: send */ + 0x21f500f8, + 0x01f4030d, +/* 0x033b: recv */ + 0x9800f897, + 0xe99805e8, + 0x0132f404, + 0xf40689b8, + 0x89c43d0b, + 0x0180b603, + 0x800784f0, + 0xea9805e8, + 0xfef0f902, + 0xf0f9018f, + 0x9402efb9, + 0xe9bb0499, + 0x18e0b600, + 0x9803eb98, + 0xed9802ec, + 0x00ee9801, + 0xf0fca5f9, + 0xf400f8fe, + 0xf0fc0131, +/* 0x0384: recv_done */ +/* 0x0386: init */ 0x17f100f8, - 0x13f14e49, - 0xe1b85254, - 0xaa0bf406, -/* 0x0448: host_recv_wait */ - 0x04cc17f1, + 0x14b60108, + 0x0011cf06, + 0x010911e7, + 0xfe0814b6, + 0x17f10014, + 0x13f000e0, + 0x1c07f000, + 0xd00604b6, + 0x04bd0001, + 0xf0ff17f0, + 0x04b61407, + 0x0001d006, + 0x17f004bd, + 0x0015f102, + 0x1007f008, + 0xd00604b6, + 0x04bd0001, + 0x010a17f1, + 0xfe0013f0, + 0x31f40010, + 0x0117f010, + 0xb63807f0, + 0x01d00604, + 0xf004bd00, +/* 0x03ea: init_proc */ + 0xf19858f7, + 0x0016b001, + 0xf9fa0bf4, + 0x58f0b615, +/* 0x03fb: mulu32_32_64 */ + 0xf9f20ef4, + 0xf920f910, + 0x9540f930, + 0xd29510e1, + 0xbdc4bd10, + 0xc0edffb4, + 0xb9301dff, + 0x34f10234, + 0x34b6ffff, + 0x1045b610, + 0xbb00c3bb, + 0xe2ff01b4, + 0x0234b930, + 0xffff34f1, + 0xb61034b6, + 0xc3bb1045, + 0x01b4bb00, + 0xbb3012ff, + 0x40fc00b3, + 0x20fc30fc, + 0x00f810fc, +/* 0x044c: host_send */ + 0x04b017f1, 0xcf0614b6, 0x27f10011, - 0x24b604c8, + 0x24b604a0, 0x0022cf06, - 0xb80816f0, - 0x0bf40612, - 0x0723c4e6, - 0xb70434b6, - 0x8002f030, - 0x3c80033b, - 0x013d8002, - 0xb6003e80, - 0x24f00120, - 0xc807f10f, + 0xf40612b8, + 0x1ec4320b, + 0x04ee9407, + 0x0270e0b7, + 0x9803eb98, + 0xed9802ec, + 0x00ee9801, + 0x033221f5, + 0xc40110b6, + 0x07f10f1e, + 0x04b604b0, + 0x000ed006, + 0x0ef404bd, +/* 0x0495: host_send_done */ +/* 0x0497: host_recv */ + 0xf100f8ba, + 0xf14e4917, + 0xb8525413, + 0x0bf406e1, +/* 0x04a5: host_recv_wait */ + 0xcc17f1aa, + 0x0614b604, + 0xf10011cf, + 0xb604c827, + 0x22cf0624, + 0x0816f000, + 0xf40612b8, + 0x23c4e60b, + 0x0434b607, + 0x02f030b7, + 0x80033b80, + 0x3d80023c, + 0x003e8001, + 0xf00120b6, + 0x07f10f24, + 0x04b604c8, + 0x0002d006, + 0x27f004bd, + 0x0007f040, + 0xd00604b6, + 0x04bd0002, +/* 0x04fa: host_init */ + 0x17f100f8, + 0x14b60080, + 0x7015f110, + 0xd007f102, 0x0604b604, - 0xbd0002d0, - 0x4027f004, - 0xb60007f0, - 0x02d00604, - 0xf804bd00, -/* 0x049d: host_init */ - 0x8017f100, + 0xbd0001d0, + 0x8017f104, 0x1014b600, - 0x027015f1, - 0x04d007f1, + 0x02f015f1, + 0x04dc07f1, 0xd00604b6, 0x04bd0001, - 0x008017f1, - 0xf11014b6, - 0xf102f015, - 0xb604dc07, + 0xf10117f0, + 0xb604c407, 0x01d00604, - 0xf004bd00, - 0x07f10117, - 0x04b604c4, - 0x0001d006, - 0x00f804bd, -/* 0x04dc: memx_func_enter */ + 0xf804bd00, +/* 0x0539: memx_func_enter */ + 0x0467f000, + 0x07e007f1, + 0xd00604b6, + 0x04bd0006, +/* 0x0548: memx_func_enter_wait */ + 0x07c067f1, + 0xcf0664b6, + 0x64f00066, + 0xf30bf404, + 0xb6001698, + 0x00f80410, +/* 0x0560: memx_func_leave */ 0xf10467f0, - 0xb607e007, + 0xb607e407, 0x06d00604, -/* 0x04eb: memx_func_enter_wait */ +/* 0x056f: memx_func_leave_wait */ 0xf104bd00, 0xb607c067, 0x66cf0664, 0x0464f000, - 0x98f30bf4, - 0x10b60016, -/* 0x0503: memx_func_leave */ - 0xf000f804, - 0x07f10467, - 0x04b607e4, - 0x0006d006, -/* 0x0512: memx_func_leave_wait */ - 0x67f104bd, - 0x64b607c0, - 0x0066cf06, - 0xf40464f0, - 0x00f8f31b, -/* 0x0524: memx_func_wr32 */ - 0x98001698, - 0x10b60115, - 0xf960f908, - 0xfcd0fc50, - 0x3f21f4e0, - 0xf40242b6, - 0x00f8e91b, -/* 0x0540: memx_func_wait */ - 0xb62c87f0, - 0x88cf0684, - 0x001e9800, - 0x98011d98, - 0x1b98021c, - 0x1010b603, - 0xf89c21f4, -/* 0x055d: memx_func_delay */ - 0x001e9800, - 0xf40410b6, - 0x00f87f21, -/* 0x0568: memx_exec */ - 0xd0f9e0f9, - 0xb902c1b9, -/* 0x0572: memx_exec_next */ - 0x139802b2, + 0xf8f31bf4, +/* 0x0581: memx_func_wr32 */ + 0x00169800, + 0xb6011598, + 0x60f90810, + 0xd0fc50f9, + 0x21f4e0fc, + 0x0242b63f, + 0xf8e91bf4, +/* 0x059d: memx_func_wait */ + 0x2c87f000, + 0xcf0684b6, + 0x1e980088, + 0x011d9800, + 0x98021c98, + 0x10b6031b, + 0x9c21f410, +/* 0x05ba: memx_func_delay */ + 0x1e9800f8, 0x0410b600, - 0xf0103495, - 0x35980c30, - 0xb855f9de, - 0x1ef40612, - 0xfcd0fcec, - 0xd521f5e0, -/* 0x0593: memx_info */ - 0xf100f802, - 0xf103acc7, - 0xf50800b7, - 0xf802d521, -/* 0x05a1: memx_recv */ - 0x01d6b000, - 0xb0c40bf4, - 0x0bf400d6, -/* 0x05af: memx_init */ - 0xf800f8e9, -/* 0x05b1: perf_recv */ -/* 0x05b3: perf_init */ - 0xf800f800, -/* 0x05b5: i2c_drive_scl */ - 0x0036b000, - 0xf1110bf4, - 0xb607e007, - 0x01d00604, - 0xf804bd00, -/* 0x05c9: i2c_drive_scl_lo */ - 0xe407f100, - 0x0604b607, - 0xbd0001d0, -/* 0x05d7: i2c_drive_sda */ - 0xb000f804, - 0x0bf40036, - 0xe007f111, - 0x0604b607, - 0xbd0002d0, -/* 0x05eb: i2c_drive_sda_lo */ - 0xf100f804, - 0xb607e407, - 0x02d00604, - 0xf804bd00, -/* 0x05f9: i2c_sense_scl */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x31fd0033, - 0x060bf404, -/* 0x060f: i2c_sense_scl_done */ - 0xf80131f4, -/* 0x0611: i2c_sense_sda */ - 0x0132f400, - 0x07c437f1, - 0xcf0634b6, - 0x32fd0033, - 0x060bf404, -/* 0x0627: i2c_sense_sda_done */ - 0xf80131f4, -/* 0x0629: i2c_raise_scl */ - 0xf140f900, - 0xf0089847, + 0xf87f21f4, +/* 0x05c5: memx_exec */ + 0xf9e0f900, + 0x02c1b9d0, +/* 0x05cf: memx_exec_next */ + 0x9802b2b9, + 0x10b60013, + 0x10349504, + 0x980c30f0, + 0x55f9de35, + 0xf40612b8, + 0xd0fcec1e, + 0x21f5e0fc, + 0x00f80332, +/* 0x05f0: memx_info */ + 0x03acc7f1, + 0x0800b7f1, + 0x033221f5, +/* 0x05fe: memx_recv */ + 0xd6b000f8, + 0xc40bf401, + 0xf400d6b0, + 0x00f8e90b, +/* 0x060c: memx_init */ +/* 0x060e: perf_recv */ + 0x00f800f8, +/* 0x0610: perf_init */ +/* 0x0612: i2c_drive_scl */ + 0x36b000f8, + 0x110bf400, + 0x07e007f1, + 0xd00604b6, + 0x04bd0001, +/* 0x0626: i2c_drive_scl_lo */ + 0x07f100f8, + 0x04b607e4, + 0x0001d006, + 0x00f804bd, +/* 0x0634: i2c_drive_sda */ + 0xf40036b0, + 0x07f1110b, + 0x04b607e0, + 0x0002d006, + 0x00f804bd, +/* 0x0648: i2c_drive_sda_lo */ + 0x07e407f1, + 0xd00604b6, + 0x04bd0002, +/* 0x0656: i2c_sense_scl */ + 0x32f400f8, + 0xc437f101, + 0x0634b607, + 0xfd0033cf, + 0x0bf40431, + 0x0131f406, +/* 0x066c: i2c_sense_scl_done */ +/* 0x066e: i2c_sense_sda */ + 0x32f400f8, + 0xc437f101, + 0x0634b607, + 0xfd0033cf, + 0x0bf40432, + 0x0131f406, +/* 0x0684: i2c_sense_sda_done */ +/* 0x0686: i2c_raise_scl */ + 0x40f900f8, + 0x089847f1, + 0xf50137f0, +/* 0x0693: i2c_raise_scl_wait */ + 0xf1061221, + 0xf403e8e7, + 0x21f57f21, + 0x01f40656, + 0x0142b609, +/* 0x06a7: i2c_raise_scl_done */ + 0xfcef1bf4, +/* 0x06ab: i2c_start */ + 0xf500f840, + 0xf4065621, + 0x21f50d11, + 0x11f4066e, + 0x300ef406, +/* 0x06bc: i2c_start_rep */ + 0xf50037f0, + 0xf0061221, 0x21f50137, -/* 0x0636: i2c_raise_scl_wait */ - 0xe7f105b5, - 0x21f403e8, - 0xf921f57f, - 0x0901f405, - 0xf40142b6, -/* 0x064a: i2c_raise_scl_done */ - 0x40fcef1b, -/* 0x064e: i2c_start */ - 0x21f500f8, - 0x11f405f9, - 0x1121f50d, - 0x0611f406, -/* 0x065f: i2c_start_rep */ - 0xf0300ef4, + 0x76bb0634, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6068621, + 0x11f40464, +/* 0x06e9: i2c_start_send */ + 0x0037f01f, + 0x063421f5, + 0x1388e7f1, + 0xf07f21f4, 0x21f50037, - 0x37f005b5, - 0xd721f501, - 0x0076bb05, + 0xe7f10612, + 0x21f41388, +/* 0x0705: i2c_start_out */ +/* 0x0707: i2c_stop */ + 0xf000f87f, + 0x21f50037, + 0x37f00612, + 0x3421f500, + 0xe8e7f106, + 0x7f21f403, + 0xf50137f0, + 0xf1061221, + 0xf41388e7, + 0x37f07f21, + 0x3421f501, + 0x88e7f106, + 0x7f21f413, +/* 0x073a: i2c_bitw */ + 0x21f500f8, + 0xe7f10634, + 0x21f403e8, + 0x0076bb7f, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60629, - 0x1f11f404, -/* 0x068c: i2c_start_send */ - 0xf50037f0, - 0xf105d721, - 0xf41388e7, - 0x37f07f21, - 0xb521f500, - 0x88e7f105, - 0x7f21f413, -/* 0x06a8: i2c_start_out */ -/* 0x06aa: i2c_stop */ - 0x37f000f8, - 0xb521f500, - 0x0037f005, - 0x05d721f5, - 0x03e8e7f1, - 0xf07f21f4, - 0x21f50137, - 0xe7f105b5, - 0x21f41388, - 0x0137f07f, - 0x05d721f5, + 0x64b60686, + 0x1811f404, 0x1388e7f1, - 0xf87f21f4, -/* 0x06dd: i2c_bitw */ - 0xd721f500, - 0xe8e7f105, - 0x7f21f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x2921f550, - 0x0464b606, - 0xf11811f4, - 0xf41388e7, - 0x37f07f21, - 0xb521f500, - 0x88e7f105, - 0x7f21f413, -/* 0x071c: i2c_bitw_out */ -/* 0x071e: i2c_bitr */ - 0x37f000f8, - 0xd721f501, - 0xe8e7f105, - 0x7f21f403, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x2921f550, - 0x0464b606, - 0xf51b11f4, - 0xf0061121, + 0xf07f21f4, 0x21f50037, - 0xe7f105b5, + 0xe7f10612, 0x21f41388, - 0x013cf07f, -/* 0x0763: i2c_bitr_done */ - 0xf80131f4, -/* 0x0765: i2c_get_byte */ - 0x0057f000, -/* 0x076b: i2c_get_byte_next */ - 0xb60847f0, - 0x76bb0154, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6071e21, - 0x11f40464, - 0x0553fd2b, - 0xf40142b6, - 0x37f0d81b, - 0x0076bb01, +/* 0x0779: i2c_bitw_out */ +/* 0x077b: i2c_bitr */ + 0xf000f87f, + 0x21f50137, + 0xe7f10634, + 0x21f403e8, + 0x0076bb7f, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b606dd, -/* 0x07b5: i2c_get_byte_done */ -/* 0x07b7: i2c_put_byte */ - 0xf000f804, -/* 0x07ba: i2c_put_byte_next */ - 0x42b60847, - 0x3854ff01, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xdd21f550, - 0x0464b606, - 0xb03411f4, - 0x1bf40046, - 0x0076bbd8, + 0x64b60686, + 0x1b11f404, + 0x066e21f5, + 0xf50037f0, + 0xf1061221, + 0xf41388e7, + 0x3cf07f21, + 0x0131f401, +/* 0x07c0: i2c_bitr_done */ +/* 0x07c2: i2c_get_byte */ + 0x57f000f8, + 0x0847f000, +/* 0x07c8: i2c_get_byte_next */ + 0xbb0154b6, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x077b21f5, + 0xf40464b6, + 0x53fd2b11, + 0x0142b605, + 0xf0d81bf4, + 0x76bb0137, + 0x0465b600, + 0x659450f9, + 0x0256bb04, + 0x75fd50bd, + 0xf550fc04, + 0xb6073a21, +/* 0x0812: i2c_get_byte_done */ + 0x00f80464, +/* 0x0814: i2c_put_byte */ +/* 0x0817: i2c_put_byte_next */ + 0xb60847f0, + 0x54ff0142, + 0x0076bb38, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b6071e, - 0x0f11f404, - 0xb00076bb, - 0x1bf40136, - 0x0132f406, -/* 0x0810: i2c_put_byte_done */ -/* 0x0812: i2c_addr */ - 0x76bb00f8, + 0x64b6073a, + 0x3411f404, + 0xf40046b0, + 0x76bbd81b, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6064e21, + 0xb6077b21, 0x11f40464, - 0x2ec3e729, - 0x0134b601, - 0xbb0553fd, + 0x0076bb0f, + 0xf40136b0, + 0x32f4061b, +/* 0x086d: i2c_put_byte_done */ +/* 0x086f: i2c_addr */ + 0xbb00f801, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07b721f5, -/* 0x0857: i2c_addr_done */ - 0xf80464b6, -/* 0x0859: i2c_acquire_addr */ - 0xf8cec700, - 0xb702e4b6, - 0x980bfce0, - 0x00f800ee, -/* 0x0868: i2c_acquire */ - 0x085921f5, - 0xf00421f4, - 0x21f403d9, -/* 0x0877: i2c_release */ - 0xf500f83f, - 0xf4085921, - 0xdaf00421, - 0x3f21f403, -/* 0x0886: i2c_recv */ - 0x32f400f8, - 0xf8c1c701, - 0xb00214b6, - 0x1ff52816, - 0x13a0013a, - 0x32980bd4, - 0xac13a000, - 0x0031980b, - 0xf90231f4, - 0xf9e0f9d0, - 0x0067f1d0, - 0x0063f100, - 0x01679210, + 0x06ab21f5, + 0xf40464b6, + 0xc3e72911, + 0x34b6012e, + 0x0553fd01, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x6821f550, + 0x1421f550, 0x0464b608, - 0xd6b0d0fc, - 0xb31bf500, - 0x0057f000, +/* 0x08b4: i2c_addr_done */ +/* 0x08b6: i2c_acquire_addr */ + 0xcec700f8, + 0x02e4b6f8, + 0x0bfce0b7, + 0xf800ee98, +/* 0x08c5: i2c_acquire */ + 0xb621f500, + 0x0421f408, + 0xf403d9f0, + 0x00f83f21, +/* 0x08d4: i2c_release */ + 0x08b621f5, + 0xf00421f4, + 0x21f403da, +/* 0x08e3: i2c_recv */ + 0xf400f83f, + 0xc1c70132, + 0x0214b6f8, + 0xf52816b0, + 0xa0013a1f, + 0x980bd413, + 0x13a00032, + 0x31980bac, + 0x0231f400, + 0xe0f9d0f9, + 0x67f1d0f9, + 0x63f10000, + 0x67921000, + 0x0076bb01, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b608c5, + 0xb0d0fc04, + 0x1bf500d6, + 0x57f000b3, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b6086f, + 0xd011f504, + 0xe0c5c700, 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x1221f550, + 0x1421f550, 0x0464b608, - 0x00d011f5, - 0xbbe0c5c7, + 0x00ad11f5, + 0xbb0157f0, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x07b721f5, + 0x086f21f5, 0xf50464b6, - 0xf000ad11, - 0x76bb0157, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6081221, - 0x11f50464, - 0x76bb008a, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6076521, - 0x11f40464, - 0xe05bcb6a, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xaa21f550, - 0x0464b606, - 0xbd025bb9, - 0x430ef474, -/* 0x098c: i2c_recv_not_rd08 */ - 0xf401d6b0, - 0x57f03d1b, - 0x1221f500, - 0x3311f408, - 0xf5e0c5c7, - 0xf407b721, - 0x57f02911, - 0x1221f500, - 0x1f11f408, - 0xf5e0b5c7, - 0xf407b721, - 0x21f51511, - 0x74bd06aa, - 0xf408c5c7, - 0x32f4091b, - 0x030ef402, -/* 0x09cc: i2c_recv_not_wr08 */ -/* 0x09cc: i2c_recv_done */ - 0xf5f8cec7, - 0xfc087721, - 0xf4d0fce0, - 0x7cb90a12, - 0xd521f502, -/* 0x09e1: i2c_recv_exit */ -/* 0x09e3: i2c_init */ + 0xbb008a11, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x07c221f5, + 0xf40464b6, + 0x5bcb6a11, + 0x0076bbe0, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60707, + 0x025bb904, + 0x0ef474bd, +/* 0x09e9: i2c_recv_not_rd08 */ + 0x01d6b043, + 0xf03d1bf4, + 0x21f50057, + 0x11f4086f, + 0xe0c5c733, + 0x081421f5, + 0xf02911f4, + 0x21f50057, + 0x11f4086f, + 0xe0b5c71f, + 0x081421f5, + 0xf51511f4, + 0xbd070721, + 0x08c5c774, + 0xf4091bf4, + 0x0ef40232, +/* 0x0a29: i2c_recv_not_wr08 */ +/* 0x0a29: i2c_recv_done */ + 0xf8cec703, + 0x08d421f5, + 0xd0fce0fc, + 0xb90a12f4, + 0x21f5027c, +/* 0x0a3e: i2c_recv_exit */ + 0x00f80332, +/* 0x0a40: i2c_init */ +/* 0x0a42: test_recv */ + 0x17f100f8, + 0x14b605d8, + 0x0011cf06, + 0xf10110b6, + 0xb605d807, + 0x01d00604, + 0xf104bd00, + 0xf1d900e7, + 0xf5134fe3, + 0xf8025221, +/* 0x0a69: test_init */ + 0x00e7f100, + 0x5221f508, +/* 0x0a73: idle_recv */ 0xf800f802, -/* 0x09e5: test_recv */ - 0xd817f100, - 0x0614b605, - 0xb60011cf, - 0x07f10110, - 0x04b605d8, - 0x0001d006, - 0xe7f104bd, - 0xe3f1d900, - 0x21f5134f, - 0x00f801f5, -/* 0x0a0c: test_init */ - 0x0800e7f1, - 0x01f521f5, -/* 0x0a16: idle_recv */ - 0x00f800f8, -/* 0x0a18: idle */ - 0xf10031f4, - 0xb605d417, - 0x11cf0614, - 0x0110b600, - 0x05d407f1, - 0xd00604b6, - 0x04bd0001, -/* 0x0a34: idle_loop */ - 0xf45817f0, -/* 0x0a3a: idle_proc */ -/* 0x0a3a: idle_proc_exec */ - 0x10f90232, - 0xf5021eb9, - 0xfc02de21, - 0x0911f410, - 0xf40231f4, -/* 0x0a4e: idle_proc_next */ - 0x10b6ef0e, - 0x061fb858, - 0xf4e61bf4, - 0x28f4dd02, - 0xbb0ef400, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, +/* 0x0a75: idle */ + 0x0031f400, + 0x05d417f1, + 0xcf0614b6, + 0x10b60011, + 0xd407f101, + 0x0604b605, + 0xbd0001d0, +/* 0x0a91: idle_loop */ + 0x5817f004, +/* 0x0a97: idle_proc */ +/* 0x0a97: idle_proc_exec */ + 0xf90232f4, + 0x021eb910, + 0x033b21f5, + 0x11f410fc, + 0x0231f409, +/* 0x0aab: idle_proc_next */ + 0xb6ef0ef4, + 0x1fb85810, + 0xe61bf406, + 0xf4dd02f4, + 0x0ef40028, + 0x000000bb, 0x00000000, 0x00000000, 0x00000000, diff --git a/nvkm/subdev/pwr/fuc/nvd0.fuc b/nvkm/subdev/pwr/fuc/nvd0.fuc index 125439e..b854432 100644 --- a/nvkm/subdev/pwr/fuc/nvd0.fuc +++ b/nvkm/subdev/pwr/fuc/nvd0.fuc @@ -23,6 +23,7 @@ */ #define NVKM_PPWR_CHIPSET GF119 +#define HW_TICKS_PER_US 324 //#define NVKM_FALCON_PC24 #define NVKM_FALCON_UNSHIFTED_IO diff --git a/nvkm/subdev/pwr/fuc/nvd0.fuc.h b/nvkm/subdev/pwr/fuc/nvd0.fuc.h index 21929dd..1cf8473 100644 --- a/nvkm/subdev/pwr/fuc/nvd0.fuc.h +++ b/nvkm/subdev/pwr/fuc/nvd0.fuc.h @@ -24,8 +24,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, /* 0x0058: proc_list_head */ 0x54534f48, - 0x00000428, - 0x000003d1, + 0x00000485, + 0x0000042e, 0x00000000, 0x00000000, 0x00000000, @@ -46,8 +46,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x584d454d, - 0x00000522, - 0x00000514, + 0x0000057f, + 0x00000571, 0x00000000, 0x00000000, 0x00000000, @@ -68,8 +68,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x46524550, - 0x00000526, - 0x00000524, + 0x00000583, + 0x00000581, 0x00000000, 0x00000000, 0x00000000, @@ -90,8 +90,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x5f433249, - 0x00000941, - 0x000007e4, + 0x0000099e, + 0x00000841, 0x00000000, 0x00000000, 0x00000000, @@ -112,8 +112,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x54534554, - 0x00000964, - 0x00000943, + 0x000009c1, + 0x000009a0, 0x00000000, 0x00000000, 0x00000000, @@ -134,8 +134,8 @@ uint32_t nvd0_pwr_data[] = { 0x00000000, 0x00000000, 0x454c4449, - 0x00000970, - 0x0000096e, + 0x000009cd, + 0x000009cb, 0x00000000, 0x00000000, 0x00000000, @@ -229,20 +229,20 @@ uint32_t nvd0_pwr_data[] = { /* 0x0370: memx_func_head */ 0x00010000, 0x00000000, - 0x0000045e, + 0x000004bb, /* 0x037c: memx_func_next */ 0x00000001, 0x00000000, - 0x0000047f, + 0x000004dc, 0x00000002, 0x00000002, - 0x0000049a, + 0x000004f7, 0x00040003, 0x00000000, - 0x000004b6, + 0x00000513, 0x00010004, 0x00000000, - 0x000004d0, + 0x0000052d, /* 0x03ac: memx_func_tail */ /* 0x03ac: memx_data_head */ 0x00000000, @@ -784,7 +784,7 @@ uint32_t nvd0_pwr_data[] = { }; uint32_t nvd0_pwr_code[] = { - 0x02d80ef5, + 0x03350ef5, /* 0x0004: rd32 */ 0x07a007f1, 0xbd000ed0, @@ -841,7 +841,7 @@ uint32_t nvd0_pwr_code[] = { 0xbb9a0a98, 0x1cf4029a, 0x01d7f00f, - 0x021f21f5, + 0x027c21f5, 0x0ef494bd, /* 0x00c5: intr_watchdog_next_time */ 0x9b0a9815, @@ -889,7 +889,7 @@ uint32_t nvd0_pwr_code[] = { 0xf14f48e7, 0xf05453e3, 0x21f500d7, - 0xc0fc0284, + 0xc0fc02e1, 0x04c007f1, 0xbd000cd0, /* 0x0175: intr_subintr_skip_fifo */ @@ -912,597 +912,666 @@ uint32_t nvd0_pwr_code[] = { 0xfca0fcb0, 0xfc80fc90, 0x0032f400, -/* 0x01b6: timer */ - 0x90f901f8, - 0x32f480f9, - 0x03f89810, - 0xf40086b0, - 0x84bd531c, - 0xd03807f0, - 0x04bd0008, - 0xcf3487f0, - 0x09980088, - 0x0298bb9a, - 0x8000e9bb, - 0x87f003fe, - 0x0088cf08, - 0xf40284f0, - 0x87f0201b, - 0x0088cf34, - 0xf406e0b8, - 0xe8b8090b, - 0x0e1cf406, -/* 0x0200: timer_reset */ - 0xd03407f0, - 0x04bd000e, -/* 0x020b: timer_enable */ - 0xf09a0e80, - 0x07f00187, - 0x0008d038, -/* 0x0216: timer_done */ - 0x31f404bd, - 0xfc80fc10, -/* 0x021f: send_proc */ - 0xf900f890, - 0x9890f980, - 0xe99805e8, - 0x0486f004, - 0xf40689b8, - 0x98c42a0b, - 0x04889403, - 0xbb1880b6, - 0xfa98008e, - 0x008a8000, - 0x80018d80, - 0x8b80028c, - 0x0190b603, - 0x800794f0, - 0x31f404e9, -/* 0x0259: send_done */ - 0xfc90fc02, -/* 0x025f: find */ - 0xf900f880, - 0x5887f080, -/* 0x0267: find_loop */ - 0x980131f4, - 0xaeb8008a, - 0x100bf406, - 0xb15880b6, - 0xf4026886, - 0x32f4f01b, -/* 0x027d: find_done */ - 0x028eb901, +/* 0x01b6: ticks_from_ns */ + 0xc0f901f8, + 0xd7f1b0f9, + 0xd3f00144, + 0x9b21f500, + 0xe8ccec03, + 0x00b4b003, + 0xec120bf4, + 0xf103e8ee, + 0xf00144d7, + 0x21f500d3, +/* 0x01de: ticks_from_ns_quit */ + 0xceb9039b, + 0xfcb0fc02, +/* 0x01e7: ticks_from_us */ + 0xf900f8c0, + 0xf1b0f9c0, + 0xf00144d7, + 0x21f500d3, + 0xceb9039b, + 0x00b4b002, + 0xbd050bf4, +/* 0x0201: ticks_from_us_quit */ + 0xfcb0fce4, +/* 0x0207: ticks_to_us */ + 0xf100f8c0, + 0xf00144d7, + 0xedff00d3, +/* 0x0213: timer */ + 0xf900f8ec, + 0xf480f990, + 0xf8981032, + 0x0086b003, + 0xbd531cf4, + 0x3807f084, + 0xbd0008d0, + 0x3487f004, + 0x980088cf, + 0x98bb9a09, + 0x00e9bb02, + 0xf003fe80, + 0x88cf0887, + 0x0284f000, + 0xf0201bf4, + 0x88cf3487, + 0x06e0b800, + 0xb8090bf4, + 0x1cf406e8, +/* 0x025d: timer_reset */ + 0x3407f00e, + 0xbd000ed0, + 0x9a0e8004, +/* 0x0268: timer_enable */ + 0xf00187f0, + 0x08d03807, +/* 0x0273: timer_done */ + 0xf404bd00, + 0x80fc1031, + 0x00f890fc, +/* 0x027c: send_proc */ + 0x90f980f9, + 0x9805e898, + 0x86f004e9, + 0x0689b804, + 0xc42a0bf4, + 0x88940398, + 0x1880b604, + 0x98008ebb, + 0x8a8000fa, + 0x018d8000, + 0x80028c80, + 0x90b6038b, + 0x0794f001, + 0xf404e980, +/* 0x02b6: send_done */ + 0x90fc0231, 0x00f880fc, -/* 0x0284: send */ - 0x025f21f5, - 0xf89701f4, -/* 0x028d: recv */ - 0x05e89800, - 0xf404e998, - 0x89b80132, - 0x3d0bf406, - 0xb60389c4, - 0x84f00180, - 0x05e88007, - 0xf902ea98, - 0x018ffef0, - 0xefb9f0f9, - 0x04999402, - 0xb600e9bb, - 0xeb9818e0, - 0x02ec9803, - 0x9801ed98, - 0xa5f900ee, - 0xf8fef0fc, - 0x0131f400, -/* 0x02d6: recv_done */ - 0x00f8f0fc, -/* 0x02d8: init */ - 0x010817f1, - 0xe70011cf, - 0xb6010911, - 0x14fe0814, - 0xe017f100, - 0x0013f000, - 0xd01c07f0, +/* 0x02bc: find */ + 0x87f080f9, + 0x0131f458, +/* 0x02c4: find_loop */ + 0xb8008a98, + 0x0bf406ae, + 0x5880b610, + 0x026886b1, + 0xf4f01bf4, +/* 0x02da: find_done */ + 0x8eb90132, + 0xf880fc02, +/* 0x02e1: send */ + 0xbc21f500, + 0x9701f402, +/* 0x02ea: recv */ + 0xe89800f8, + 0x04e99805, + 0xb80132f4, + 0x0bf40689, + 0x0389c43d, + 0xf00180b6, + 0xe8800784, + 0x02ea9805, + 0x8ffef0f9, + 0xb9f0f901, + 0x999402ef, + 0x00e9bb04, + 0x9818e0b6, + 0xec9803eb, + 0x01ed9802, + 0xf900ee98, + 0xfef0fca5, + 0x31f400f8, +/* 0x0333: recv_done */ + 0xf8f0fc01, +/* 0x0335: init */ + 0x0817f100, + 0x0011cf01, + 0x010911e7, + 0xfe0814b6, + 0x17f10014, + 0x13f000e0, + 0x1c07f000, + 0xbd0001d0, + 0xff17f004, + 0xd01407f0, 0x04bd0001, - 0xf0ff17f0, - 0x01d01407, - 0xf004bd00, - 0x15f10217, - 0x07f00800, - 0x0001d010, - 0x17f104bd, - 0x13f000e6, - 0x0010fe00, - 0xf01031f4, - 0x07f00117, - 0x0001d038, - 0xf7f004bd, -/* 0x032d: init_proc */ - 0x01f19858, - 0xf40016b0, - 0x15f9fa0b, - 0xf458f0b6, -/* 0x033e: mulu32_32_64 */ - 0x10f9f20e, - 0x30f920f9, - 0xe19540f9, - 0x10d29510, - 0xb4bdc4bd, - 0xffc0edff, - 0x34b9301d, - 0xff34f102, - 0x1034b6ff, - 0xbb1045b6, - 0xb4bb00c3, - 0x30e2ff01, - 0xf10234b9, - 0xb6ffff34, - 0x45b61034, - 0x00c3bb10, - 0xff01b4bb, - 0xb3bb3012, - 0xfc40fc00, - 0xfc20fc30, -/* 0x038f: host_send */ - 0xf100f810, - 0xcf04b017, - 0x27f10011, - 0x22cf04a0, - 0x0612b800, - 0xc42f0bf4, - 0xee94071e, - 0x70e0b704, - 0x03eb9802, - 0x9802ec98, - 0xee9801ed, - 0x8421f500, - 0x0110b602, - 0xf10f1ec4, - 0xd004b007, - 0x04bd000e, -/* 0x03cf: host_send_done */ - 0xf8c30ef4, -/* 0x03d1: host_recv */ - 0x4917f100, - 0x5413f14e, - 0x06e1b852, -/* 0x03df: host_recv_wait */ - 0xf1b30bf4, - 0xcf04cc17, - 0x27f10011, - 0x22cf04c8, - 0x0816f000, - 0xf40612b8, - 0x23c4ec0b, - 0x0434b607, - 0x02f030b7, - 0x80033b80, - 0x3d80023c, - 0x003e8001, - 0xf00120b6, - 0x07f10f24, - 0x02d004c8, + 0xf10217f0, + 0xf0080015, + 0x01d01007, + 0xf104bd00, + 0xf000e617, + 0x10fe0013, + 0x1031f400, + 0xf00117f0, + 0x01d03807, 0xf004bd00, - 0x07f04027, - 0x0002d000, - 0x00f804bd, -/* 0x0428: host_init */ - 0x008017f1, - 0xf11014b6, - 0xf1027015, - 0xd004d007, - 0x04bd0001, - 0x008017f1, - 0xf11014b6, - 0xf102f015, - 0xd004dc07, - 0x04bd0001, - 0xf10117f0, - 0xd004c407, - 0x04bd0001, -/* 0x045e: memx_func_enter */ - 0x67f000f8, - 0xe007f104, - 0x0006d007, -/* 0x046a: memx_func_enter_wait */ - 0x67f104bd, - 0x66cf07c0, - 0x0464f000, - 0x98f60bf4, - 0x10b60016, -/* 0x047f: memx_func_leave */ +/* 0x038a: init_proc */ + 0xf19858f7, + 0x0016b001, + 0xf9fa0bf4, + 0x58f0b615, +/* 0x039b: mulu32_32_64 */ + 0xf9f20ef4, + 0xf920f910, + 0x9540f930, + 0xd29510e1, + 0xbdc4bd10, + 0xc0edffb4, + 0xb9301dff, + 0x34f10234, + 0x34b6ffff, + 0x1045b610, + 0xbb00c3bb, + 0xe2ff01b4, + 0x0234b930, + 0xffff34f1, + 0xb61034b6, + 0xc3bb1045, + 0x01b4bb00, + 0xbb3012ff, + 0x40fc00b3, + 0x20fc30fc, + 0x00f810fc, +/* 0x03ec: host_send */ + 0x04b017f1, + 0xf10011cf, + 0xcf04a027, + 0x12b80022, + 0x2f0bf406, + 0x94071ec4, + 0xe0b704ee, + 0xeb980270, + 0x02ec9803, + 0x9801ed98, + 0x21f500ee, + 0x10b602e1, + 0x0f1ec401, + 0x04b007f1, + 0xbd000ed0, + 0xc30ef404, +/* 0x042c: host_send_done */ +/* 0x042e: host_recv */ + 0x17f100f8, + 0x13f14e49, + 0xe1b85254, + 0xb30bf406, +/* 0x043c: host_recv_wait */ + 0x04cc17f1, + 0xf10011cf, + 0xcf04c827, + 0x16f00022, + 0x0612b808, + 0xc4ec0bf4, + 0x34b60723, + 0xf030b704, + 0x033b8002, + 0x80023c80, + 0x3e80013d, + 0x0120b600, + 0xf10f24f0, + 0xd004c807, + 0x04bd0002, + 0xf04027f0, + 0x02d00007, + 0xf804bd00, +/* 0x0485: host_init */ + 0x8017f100, + 0x1014b600, + 0x027015f1, + 0x04d007f1, + 0xbd0001d0, + 0x8017f104, + 0x1014b600, + 0x02f015f1, + 0x04dc07f1, + 0xbd0001d0, + 0x0117f004, + 0x04c407f1, + 0xbd0001d0, +/* 0x04bb: memx_func_enter */ 0xf000f804, 0x07f10467, - 0x06d007e4, -/* 0x048b: memx_func_leave_wait */ + 0x06d007e0, +/* 0x04c7: memx_func_enter_wait */ 0xf104bd00, 0xcf07c067, 0x64f00066, - 0xf61bf404, -/* 0x049a: memx_func_wr32 */ - 0x169800f8, - 0x01159800, - 0xf90810b6, - 0xfc50f960, - 0xf4e0fcd0, - 0x42b63321, - 0xe91bf402, -/* 0x04b6: memx_func_wait */ - 0x87f000f8, - 0x0088cf2c, - 0x98001e98, - 0x1c98011d, - 0x031b9802, - 0xf41010b6, - 0x00f87e21, -/* 0x04d0: memx_func_delay */ - 0xb6001e98, - 0x21f40410, -/* 0x04db: memx_exec */ - 0xf900f867, - 0xb9d0f9e0, - 0xb2b902c1, -/* 0x04e5: memx_exec_next */ - 0x00139802, - 0x950410b6, - 0x30f01034, - 0xde35980c, - 0x12b855f9, - 0xec1ef406, + 0xf60bf404, + 0xb6001698, + 0x00f80410, +/* 0x04dc: memx_func_leave */ + 0xf10467f0, + 0xd007e407, + 0x04bd0006, +/* 0x04e8: memx_func_leave_wait */ + 0x07c067f1, + 0xf00066cf, + 0x1bf40464, +/* 0x04f7: memx_func_wr32 */ + 0x9800f8f6, + 0x15980016, + 0x0810b601, + 0x50f960f9, 0xe0fcd0fc, - 0x028421f5, -/* 0x0506: memx_info */ - 0xc7f100f8, - 0xb7f103ac, - 0x21f50800, - 0x00f80284, -/* 0x0514: memx_recv */ - 0xf401d6b0, - 0xd6b0c40b, - 0xe90bf400, -/* 0x0522: memx_init */ - 0x00f800f8, -/* 0x0524: perf_recv */ -/* 0x0526: perf_init */ - 0x00f800f8, -/* 0x0528: i2c_drive_scl */ - 0xf40036b0, - 0x07f10e0b, - 0x01d007e0, + 0xb63321f4, + 0x1bf40242, +/* 0x0513: memx_func_wait */ + 0xf000f8e9, + 0x88cf2c87, + 0x001e9800, + 0x98011d98, + 0x1b98021c, + 0x1010b603, + 0xf87e21f4, +/* 0x052d: memx_func_delay */ + 0x001e9800, + 0xf40410b6, + 0x00f86721, +/* 0x0538: memx_exec */ + 0xd0f9e0f9, + 0xb902c1b9, +/* 0x0542: memx_exec_next */ + 0x139802b2, + 0x0410b600, + 0xf0103495, + 0x35980c30, + 0xb855f9de, + 0x1ef40612, + 0xfcd0fcec, + 0xe121f5e0, +/* 0x0563: memx_info */ + 0xf100f802, + 0xf103acc7, + 0xf50800b7, + 0xf802e121, +/* 0x0571: memx_recv */ + 0x01d6b000, + 0xb0c40bf4, + 0x0bf400d6, +/* 0x057f: memx_init */ + 0xf800f8e9, +/* 0x0581: perf_recv */ +/* 0x0583: perf_init */ + 0xf800f800, +/* 0x0585: i2c_drive_scl */ + 0x0036b000, + 0xf10e0bf4, + 0xd007e007, + 0x04bd0001, +/* 0x0596: i2c_drive_scl_lo */ + 0x07f100f8, + 0x01d007e4, 0xf804bd00, -/* 0x0539: i2c_drive_scl_lo */ - 0xe407f100, - 0x0001d007, - 0x00f804bd, -/* 0x0544: i2c_drive_sda */ - 0xf40036b0, - 0x07f10e0b, - 0x02d007e0, +/* 0x05a1: i2c_drive_sda */ + 0x0036b000, + 0xf10e0bf4, + 0xd007e007, + 0x04bd0002, +/* 0x05b2: i2c_drive_sda_lo */ + 0x07f100f8, + 0x02d007e4, 0xf804bd00, -/* 0x0555: i2c_drive_sda_lo */ - 0xe407f100, - 0x0002d007, - 0x00f804bd, -/* 0x0560: i2c_sense_scl */ - 0xf10132f4, - 0xcf07c437, - 0x31fd0033, - 0x060bf404, -/* 0x0573: i2c_sense_scl_done */ - 0xf80131f4, -/* 0x0575: i2c_sense_sda */ +/* 0x05bd: i2c_sense_scl */ 0x0132f400, 0x07c437f1, 0xfd0033cf, - 0x0bf40432, + 0x0bf40431, 0x0131f406, -/* 0x0588: i2c_sense_sda_done */ -/* 0x058a: i2c_raise_scl */ - 0x40f900f8, - 0x089847f1, +/* 0x05d0: i2c_sense_scl_done */ +/* 0x05d2: i2c_sense_sda */ + 0x32f400f8, + 0xc437f101, + 0x0033cf07, + 0xf40432fd, + 0x31f4060b, +/* 0x05e5: i2c_sense_sda_done */ +/* 0x05e7: i2c_raise_scl */ + 0xf900f801, + 0x9847f140, + 0x0137f008, + 0x058521f5, +/* 0x05f4: i2c_raise_scl_wait */ + 0x03e8e7f1, + 0xf56721f4, + 0xf405bd21, + 0x42b60901, + 0xef1bf401, +/* 0x0608: i2c_raise_scl_done */ + 0x00f840fc, +/* 0x060c: i2c_start */ + 0x05bd21f5, + 0xf50d11f4, + 0xf405d221, + 0x0ef40611, +/* 0x061d: i2c_start_rep */ + 0x0037f030, + 0x058521f5, 0xf50137f0, -/* 0x0597: i2c_raise_scl_wait */ - 0xf1052821, - 0xf403e8e7, - 0x21f56721, - 0x01f40560, - 0x0142b609, -/* 0x05ab: i2c_raise_scl_done */ - 0xfcef1bf4, -/* 0x05af: i2c_start */ - 0xf500f840, - 0xf4056021, - 0x21f50d11, - 0x11f40575, - 0x300ef406, -/* 0x05c0: i2c_start_rep */ + 0xbb05a121, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x05e721f5, + 0xf40464b6, +/* 0x064a: i2c_start_send */ + 0x37f01f11, + 0xa121f500, + 0x88e7f105, + 0x6721f413, 0xf50037f0, - 0xf0052821, + 0xf1058521, + 0xf41388e7, +/* 0x0666: i2c_start_out */ + 0x00f86721, +/* 0x0668: i2c_stop */ + 0xf50037f0, + 0xf0058521, + 0x21f50037, + 0xe7f105a1, + 0x21f403e8, + 0x0137f067, + 0x058521f5, + 0x1388e7f1, + 0xf06721f4, 0x21f50137, - 0x76bb0544, + 0xe7f105a1, + 0x21f41388, +/* 0x069b: i2c_bitw */ + 0xf500f867, + 0xf105a121, + 0xf403e8e7, + 0x76bb6721, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6058a21, + 0xb605e721, 0x11f40464, -/* 0x05ed: i2c_start_send */ - 0x0037f01f, - 0x054421f5, - 0x1388e7f1, - 0xf06721f4, - 0x21f50037, - 0xe7f10528, - 0x21f41388, -/* 0x0609: i2c_start_out */ -/* 0x060b: i2c_stop */ - 0xf000f867, - 0x21f50037, - 0x37f00528, - 0x4421f500, - 0xe8e7f105, - 0x6721f403, - 0xf50137f0, - 0xf1052821, - 0xf41388e7, - 0x37f06721, - 0x4421f501, - 0x88e7f105, + 0x88e7f118, 0x6721f413, -/* 0x063e: i2c_bitw */ - 0x21f500f8, - 0xe7f10544, - 0x21f403e8, - 0x0076bb67, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b6058a, - 0x1811f404, - 0x1388e7f1, - 0xf06721f4, - 0x21f50037, - 0xe7f10528, - 0x21f41388, -/* 0x067d: i2c_bitw_out */ -/* 0x067f: i2c_bitr */ - 0xf000f867, - 0x21f50137, - 0xe7f10544, - 0x21f403e8, - 0x0076bb67, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b6058a, - 0x1b11f404, - 0x057521f5, 0xf50037f0, - 0xf1052821, + 0xf1058521, 0xf41388e7, - 0x3cf06721, - 0x0131f401, -/* 0x06c4: i2c_bitr_done */ -/* 0x06c6: i2c_get_byte */ - 0x57f000f8, - 0x0847f000, -/* 0x06cc: i2c_get_byte_next */ - 0xbb0154b6, - 0x65b60076, - 0x9450f904, - 0x56bb0465, - 0xfd50bd02, - 0x50fc0475, - 0x067f21f5, - 0xf40464b6, - 0x53fd2b11, - 0x0142b605, - 0xf0d81bf4, - 0x76bb0137, +/* 0x06da: i2c_bitw_out */ + 0x00f86721, +/* 0x06dc: i2c_bitr */ + 0xf50137f0, + 0xf105a121, + 0xf403e8e7, + 0x76bb6721, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6063e21, -/* 0x0716: i2c_get_byte_done */ - 0x00f80464, -/* 0x0718: i2c_put_byte */ -/* 0x071b: i2c_put_byte_next */ - 0xb60847f0, - 0x54ff0142, - 0x0076bb38, - 0xf90465b6, - 0x04659450, - 0xbd0256bb, - 0x0475fd50, - 0x21f550fc, - 0x64b6063e, - 0x3411f404, - 0xf40046b0, - 0x76bbd81b, + 0xb605e721, + 0x11f40464, + 0xd221f51b, + 0x0037f005, + 0x058521f5, + 0x1388e7f1, + 0xf06721f4, + 0x31f4013c, +/* 0x0721: i2c_bitr_done */ +/* 0x0723: i2c_get_byte */ + 0xf000f801, + 0x47f00057, +/* 0x0729: i2c_get_byte_next */ + 0x0154b608, + 0xb60076bb, + 0x50f90465, + 0xbb046594, + 0x50bd0256, + 0xfc0475fd, + 0xdc21f550, + 0x0464b606, + 0xfd2b11f4, + 0x42b60553, + 0xd81bf401, + 0xbb0137f0, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x069b21f5, +/* 0x0773: i2c_get_byte_done */ + 0xf80464b6, +/* 0x0775: i2c_put_byte */ + 0x0847f000, +/* 0x0778: i2c_put_byte_next */ + 0xff0142b6, + 0x76bb3854, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6067f21, + 0xb6069b21, 0x11f40464, - 0x0076bb0f, - 0xf40136b0, - 0x32f4061b, -/* 0x0771: i2c_put_byte_done */ -/* 0x0773: i2c_addr */ - 0xbb00f801, + 0x0046b034, + 0xbbd81bf4, 0x65b60076, 0x9450f904, 0x56bb0465, 0xfd50bd02, 0x50fc0475, - 0x05af21f5, + 0x06dc21f5, 0xf40464b6, - 0xc3e72911, - 0x34b6012e, - 0x0553fd01, + 0x76bb0f11, + 0x0136b000, + 0xf4061bf4, +/* 0x07ce: i2c_put_byte_done */ + 0x00f80132, +/* 0x07d0: i2c_addr */ 0xb60076bb, 0x50f90465, 0xbb046594, 0x50bd0256, 0xfc0475fd, - 0x1821f550, - 0x0464b607, -/* 0x07b8: i2c_addr_done */ -/* 0x07ba: i2c_acquire_addr */ - 0xcec700f8, - 0x05e4b6f8, - 0xd014e0b7, -/* 0x07c6: i2c_acquire */ + 0x0c21f550, + 0x0464b606, + 0xe72911f4, + 0xb6012ec3, + 0x53fd0134, + 0x0076bb05, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60775, +/* 0x0815: i2c_addr_done */ +/* 0x0817: i2c_acquire_addr */ + 0xc700f804, + 0xe4b6f8ce, + 0x14e0b705, +/* 0x0823: i2c_acquire */ + 0xf500f8d0, + 0xf4081721, + 0xd9f00421, + 0x3321f403, +/* 0x0832: i2c_release */ 0x21f500f8, - 0x21f407ba, - 0x03d9f004, + 0x21f40817, + 0x03daf004, 0xf83321f4, -/* 0x07d5: i2c_release */ - 0xba21f500, - 0x0421f407, - 0xf403daf0, - 0x00f83321, -/* 0x07e4: i2c_recv */ - 0xc70132f4, - 0x14b6f8c1, - 0x2816b002, - 0x013a1ff5, - 0x0bd413a0, - 0xa0003298, - 0x980bac13, - 0x31f40031, - 0xf9d0f902, - 0xf1d0f9e0, - 0xf1000067, - 0x92100063, - 0x76bb0167, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb607c621, - 0xd0fc0464, - 0xf500d6b0, - 0xf000b31b, - 0x76bb0057, +/* 0x0841: i2c_recv */ + 0x0132f400, + 0xb6f8c1c7, + 0x16b00214, + 0x3a1ff528, + 0xd413a001, + 0x0032980b, + 0x0bac13a0, + 0xf4003198, + 0xd0f90231, + 0xd0f9e0f9, + 0x000067f1, + 0x100063f1, + 0xbb016792, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x082321f5, + 0xfc0464b6, + 0x00d6b0d0, + 0x00b31bf5, + 0xbb0057f0, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x07d021f5, + 0xf50464b6, + 0xc700d011, + 0x76bbe0c5, 0x0465b600, 0x659450f9, 0x0256bb04, 0x75fd50bd, 0xf550fc04, - 0xb6077321, + 0xb6077521, 0x11f50464, - 0xc5c700d0, - 0x0076bbe0, + 0x57f000ad, + 0x0076bb01, 0xf90465b6, 0x04659450, 0xbd0256bb, 0x0475fd50, 0x21f550fc, - 0x64b60718, - 0xad11f504, - 0x0157f000, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0x7321f550, - 0x0464b607, - 0x008a11f5, - 0xb60076bb, - 0x50f90465, - 0xbb046594, - 0x50bd0256, - 0xfc0475fd, - 0xc621f550, - 0x0464b606, - 0xcb6a11f4, - 0x76bbe05b, - 0x0465b600, - 0x659450f9, - 0x0256bb04, - 0x75fd50bd, - 0xf550fc04, - 0xb6060b21, - 0x5bb90464, - 0xf474bd02, -/* 0x08ea: i2c_recv_not_rd08 */ - 0xd6b0430e, - 0x3d1bf401, - 0xf50057f0, - 0xf4077321, - 0xc5c73311, - 0x1821f5e0, - 0x2911f407, - 0xf50057f0, - 0xf4077321, - 0xb5c71f11, - 0x1821f5e0, - 0x1511f407, - 0x060b21f5, - 0xc5c774bd, - 0x091bf408, - 0xf40232f4, -/* 0x092a: i2c_recv_not_wr08 */ -/* 0x092a: i2c_recv_done */ - 0xcec7030e, - 0xd521f5f8, - 0xfce0fc07, - 0x0a12f4d0, - 0xf5027cb9, -/* 0x093f: i2c_recv_exit */ - 0xf8028421, -/* 0x0941: i2c_init */ -/* 0x0943: test_recv */ - 0xf100f800, - 0xcf05d817, - 0x10b60011, - 0xd807f101, - 0x0001d005, - 0xe7f104bd, - 0xe3f1d900, - 0x21f5134f, - 0x00f801b6, -/* 0x0964: test_init */ - 0x0800e7f1, - 0x01b621f5, -/* 0x096e: idle_recv */ + 0x64b607d0, + 0x8a11f504, + 0x0076bb00, + 0xf90465b6, + 0x04659450, + 0xbd0256bb, + 0x0475fd50, + 0x21f550fc, + 0x64b60723, + 0x6a11f404, + 0xbbe05bcb, + 0x65b60076, + 0x9450f904, + 0x56bb0465, + 0xfd50bd02, + 0x50fc0475, + 0x066821f5, + 0xb90464b6, + 0x74bd025b, +/* 0x0947: i2c_recv_not_rd08 */ + 0xb0430ef4, + 0x1bf401d6, + 0x0057f03d, + 0x07d021f5, + 0xc73311f4, + 0x21f5e0c5, + 0x11f40775, + 0x0057f029, + 0x07d021f5, + 0xc71f11f4, + 0x21f5e0b5, + 0x11f40775, + 0x6821f515, + 0xc774bd06, + 0x1bf408c5, + 0x0232f409, +/* 0x0987: i2c_recv_not_wr08 */ +/* 0x0987: i2c_recv_done */ + 0xc7030ef4, + 0x21f5f8ce, + 0xe0fc0832, + 0x12f4d0fc, + 0x027cb90a, + 0x02e121f5, +/* 0x099c: i2c_recv_exit */ +/* 0x099e: i2c_init */ 0x00f800f8, -/* 0x0970: idle */ - 0xf10031f4, - 0xcf05d417, - 0x10b60011, - 0xd407f101, - 0x0001d005, -/* 0x0986: idle_loop */ - 0x17f004bd, - 0x0232f458, -/* 0x098c: idle_proc */ -/* 0x098c: idle_proc_exec */ - 0x1eb910f9, - 0x8d21f502, - 0xf410fc02, - 0x31f40911, - 0xef0ef402, -/* 0x09a0: idle_proc_next */ - 0xb85810b6, - 0x1bf4061f, - 0xdd02f4e6, - 0xf40028f4, - 0x0000c10e, +/* 0x09a0: test_recv */ + 0x05d817f1, + 0xb60011cf, + 0x07f10110, + 0x01d005d8, + 0xf104bd00, + 0xf1d900e7, + 0xf5134fe3, + 0xf8021321, +/* 0x09c1: test_init */ + 0x00e7f100, + 0x1321f508, +/* 0x09cb: idle_recv */ + 0xf800f802, +/* 0x09cd: idle */ + 0x0031f400, + 0x05d417f1, + 0xb60011cf, + 0x07f10110, + 0x01d005d4, +/* 0x09e3: idle_loop */ + 0xf004bd00, + 0x32f45817, +/* 0x09e9: idle_proc */ +/* 0x09e9: idle_proc_exec */ + 0xb910f902, + 0x21f5021e, + 0x10fc02ea, + 0xf40911f4, + 0x0ef40231, +/* 0x09fd: idle_proc_next */ + 0x5810b6ef, + 0xf4061fb8, + 0x02f4e61b, + 0x0028f4dd, + 0x00c10ef4, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, -- 2.0.0
From: Martin Peres <martin.peres at labri.fr> Signed-off-by: Martin Peres <martin.peres at free.fr> --- nvkm/subdev/pwr/fuc/macros.fuc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/nvkm/subdev/pwr/fuc/macros.fuc b/nvkm/subdev/pwr/fuc/macros.fuc index 9707e3f..96fc984 100644 --- a/nvkm/subdev/pwr/fuc/macros.fuc +++ b/nvkm/subdev/pwr/fuc/macros.fuc @@ -251,6 +251,16 @@ */ clear b32 $r0 #endif +#define st(size, addr, reg) /* +*/ movw $r0 addr /* +*/ st size D[$r0] reg /* +*/ clear b32 $r0 + +#define ld(size, reg, addr) /* +*/ movw $r0 addr /* +*/ ld size reg D[$r0] /* +*/ clear b32 $r0 + // does a 64+64 -> 64 unsigned addition (C = A + B) #define addu64(reg_a_c_hi, reg_a_c_lo, b_hi, b_lo) /* */ add b32 reg_a_c_lo b_lo /* -- 2.0.0
Martin Peres
2014-Aug-17 15:33 UTC
[Nouveau] [PATCH 09/10] pwr/fuc: make $r1-$r10 registers callee-saved in kernel.fuc
From: Martin Peres <martin.peres at labri.fr> --- nvkm/subdev/pwr/fuc/kernel.fuc | 13 +++++++++++++ nvkm/subdev/pwr/fuc/nv108.fuc.h | 25 +++++++++++-------------- nvkm/subdev/pwr/fuc/nva3.fuc.h | 23 ++++++++++------------- nvkm/subdev/pwr/fuc/nvc0.fuc.h | 23 ++++++++++------------- nvkm/subdev/pwr/fuc/nvd0.fuc.h | 23 ++++++++++------------- 5 files changed, 54 insertions(+), 53 deletions(-) diff --git a/nvkm/subdev/pwr/fuc/kernel.fuc b/nvkm/subdev/pwr/fuc/kernel.fuc index 54276c9..5cf5be6 100644 --- a/nvkm/subdev/pwr/fuc/kernel.fuc +++ b/nvkm/subdev/pwr/fuc/kernel.fuc @@ -98,12 +98,16 @@ wr32: // $r14 - ns // $r0 - zero nsec: + push $r9 + push $r8 nv_iord($r8, NV_PPWR_TIMER_LOW) nsec_loop: nv_iord($r9, NV_PPWR_TIMER_LOW) sub b32 $r9 $r8 cmp b32 $r9 $r14 bra l #nsec_loop + pop $r8 + pop $r9 ret // busy-wait for a period of time @@ -115,6 +119,8 @@ nsec: // $r11 - timeout (ns) // $r0 - zero wait: + push $r9 + push $r8 nv_iord($r8, NV_PPWR_TIMER_LOW) wait_loop: nv_rd32($r10, $r14) @@ -126,6 +132,8 @@ wait: cmp b32 $r9 $r11 bra l #wait_loop wait_done: + pop $r8 + pop $r9 ret // $r15 - current (kern) @@ -460,6 +468,9 @@ send: // $r14 - process // $r0 - zero recv: + push $r9 + push $r8 + ld b32 $r8 D[$r14 + #proc_qget] ld b32 $r9 D[$r14 + #proc_qput] bclr $flags $p1 @@ -492,6 +503,8 @@ recv: bset $flags $p1 pop $r15 recv_done: + pop $r8 + pop $r9 ret init: diff --git a/nvkm/subdev/pwr/fuc/nv108.fuc.h b/nvkm/subdev/pwr/fuc/nv108.fuc.h index fe8dd23..82d6bbc 100644 --- a/nvkm/subdev/pwr/fuc/nv108.fuc.h +++ b/nvkm/subdev/pwr/fuc/nv108.fuc.h @@ -812,15 +812,18 @@ uint32_t nv108_pwr_code[] = { 0x7000d4f1, 0xf8f61bf4, /* 0x005d: nsec */ - 0xcf2c0800, -/* 0x0062: nsec_loop */ + 0xf990f900, + 0xcf2c0880, +/* 0x0066: nsec_loop */ 0x2c090088, 0xbb0099cf, 0x9ea60298, - 0xf8f61ef4, -/* 0x0071: wait */ - 0xcf2c0800, -/* 0x0076: wait_loop */ + 0xfcf61ef4, + 0xf890fc80, +/* 0x0079: wait */ + 0xf990f900, + 0xcf2c0880, +/* 0x0082: wait_loop */ 0xeeb20088, 0x0000047e, 0xadfddab2, @@ -865,13 +868,13 @@ uint32_t nv108_pwr_code[] = { 0xc40088cf, 0x0bf40289, 0x9b00b51f, - 0x957e580e, + 0xa57e580e, 0x09980000, 0x0096b09b, 0x000d0bf4, 0x0009f634, 0x09b504bd, -/* 0x0125: intr_skip_watchdog */ +/* 0x0135: intr_skip_watchdog */ 0x0089e49a, 0x360bf408, 0xcf068849, @@ -1521,10 +1524,4 @@ uint32_t nv108_pwr_code[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; diff --git a/nvkm/subdev/pwr/fuc/nva3.fuc.h b/nvkm/subdev/pwr/fuc/nva3.fuc.h index 8e2ddd9..bf808e4 100644 --- a/nvkm/subdev/pwr/fuc/nva3.fuc.h +++ b/nvkm/subdev/pwr/fuc/nva3.fuc.h @@ -885,19 +885,22 @@ uint32_t nva3_pwr_code[] = { 0xd4f100dd, 0x1bf47000, /* 0x007f: nsec */ - 0xf000f8f2, + 0xf900f8f2, + 0xf080f990, 0x84b62c87, 0x0088cf06, -/* 0x0088: nsec_loop */ +/* 0x008c: nsec_loop */ 0xb62c97f0, 0x99cf0694, 0x0298bb00, 0xf4069eb8, - 0x00f8f11e, -/* 0x009c: wait */ + 0x80fcf11e, + 0x00f890fc, +/* 0x00a4: wait */ + 0x80f990f9, 0xb62c87f0, 0x88cf0684, -/* 0x00a5: wait_loop */ +/* 0x00b1: wait_loop */ 0x02eeb900, 0xb90421f4, 0xadfd02da, @@ -948,13 +951,13 @@ uint32_t nva3_pwr_code[] = { 0xf40289c4, 0x0080230b, 0x58e7f09b, - 0x98cb21f4, + 0x98db21f4, 0x96b09b09, 0x110bf400, 0xb63407f0, 0x09d00604, 0x8004bd00, -/* 0x016e: intr_skip_watchdog */ +/* 0x017e: intr_skip_watchdog */ 0x89e49a09, 0x0bf40800, 0x8897f148, @@ -1650,10 +1653,4 @@ uint32_t nva3_pwr_code[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; diff --git a/nvkm/subdev/pwr/fuc/nvc0.fuc.h b/nvkm/subdev/pwr/fuc/nvc0.fuc.h index a0bd2c1..2371284 100644 --- a/nvkm/subdev/pwr/fuc/nvc0.fuc.h +++ b/nvkm/subdev/pwr/fuc/nvc0.fuc.h @@ -885,19 +885,22 @@ uint32_t nvc0_pwr_code[] = { 0xd4f100dd, 0x1bf47000, /* 0x007f: nsec */ - 0xf000f8f2, + 0xf900f8f2, + 0xf080f990, 0x84b62c87, 0x0088cf06, -/* 0x0088: nsec_loop */ +/* 0x008c: nsec_loop */ 0xb62c97f0, 0x99cf0694, 0x0298bb00, 0xf4069eb8, - 0x00f8f11e, -/* 0x009c: wait */ + 0x80fcf11e, + 0x00f890fc, +/* 0x00a4: wait */ + 0x80f990f9, 0xb62c87f0, 0x88cf0684, -/* 0x00a5: wait_loop */ +/* 0x00b1: wait_loop */ 0x02eeb900, 0xb90421f4, 0xadfd02da, @@ -948,13 +951,13 @@ uint32_t nvc0_pwr_code[] = { 0xf40289c4, 0x0080230b, 0x58e7f09b, - 0x98cb21f4, + 0x98db21f4, 0x96b09b09, 0x110bf400, 0xb63407f0, 0x09d00604, 0x8004bd00, -/* 0x016e: intr_skip_watchdog */ +/* 0x017e: intr_skip_watchdog */ 0x89e49a09, 0x0bf40800, 0x8897f148, @@ -1650,10 +1653,4 @@ uint32_t nvc0_pwr_code[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; diff --git a/nvkm/subdev/pwr/fuc/nvd0.fuc.h b/nvkm/subdev/pwr/fuc/nvd0.fuc.h index 1cf8473..9e0f9b8 100644 --- a/nvkm/subdev/pwr/fuc/nvd0.fuc.h +++ b/nvkm/subdev/pwr/fuc/nvd0.fuc.h @@ -814,17 +814,20 @@ uint32_t nvd0_pwr_code[] = { 0xd4f100dd, 0x1bf47000, /* 0x0067: nsec */ - 0xf000f8f5, + 0xf900f8f5, + 0xf080f990, 0x88cf2c87, -/* 0x006d: nsec_loop */ +/* 0x0071: nsec_loop */ 0x2c97f000, 0xbb0099cf, 0x9eb80298, 0xf41ef406, -/* 0x007e: wait */ - 0x87f000f8, + 0x90fc80fc, +/* 0x0086: wait */ + 0x90f900f8, + 0x87f080f9, 0x0088cf2c, -/* 0x0084: wait_loop */ +/* 0x0090: wait_loop */ 0xf402eeb9, 0xdab90421, 0x04adfd02, @@ -872,12 +875,12 @@ uint32_t nvd0_pwr_code[] = { 0x0bf40289, 0x9b008020, 0xf458e7f0, - 0x0998a721, + 0x0998b721, 0x0096b09b, 0xf00e0bf4, 0x09d03407, 0x8004bd00, -/* 0x013e: intr_skip_watchdog */ +/* 0x014e: intr_skip_watchdog */ 0x89e49a09, 0x0bf40800, 0x8897f13c, @@ -1585,10 +1588,4 @@ uint32_t nvd0_pwr_code[] = { 0x00000000, 0x00000000, 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, }; -- 2.0.0