提交 64c672ae 编写于 作者: B Ben Skeggs

drm/nouveau/pwr: implement a simple i2c stack

Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
上级 2e9dfe23
master alk-4.19.24 alk-4.19.30 alk-4.19.34 alk-4.19.36 alk-4.19.43 alk-4.19.48 alk-4.19.57 ck-4.19.67 ck-4.19.81 ck-4.19.91 github/fork/deepanshu1422/fix-typo-in-comment github/fork/haosdent/fix-typo linux-next v4.19.91 v4.19.90 v4.19.89 v4.19.88 v4.19.87 v4.19.86 v4.19.85 v4.19.84 v4.19.83 v4.19.82 v4.19.81 v4.19.80 v4.19.79 v4.19.78 v4.19.77 v4.19.76 v4.19.75 v4.19.74 v4.19.73 v4.19.72 v4.19.71 v4.19.70 v4.19.69 v4.19.68 v4.19.67 v4.19.66 v4.19.65 v4.19.64 v4.19.63 v4.19.62 v4.19.61 v4.19.60 v4.19.59 v4.19.58 v4.19.57 v4.19.56 v4.19.55 v4.19.54 v4.19.53 v4.19.52 v4.19.51 v4.19.50 v4.19.49 v4.19.48 v4.19.47 v4.19.46 v4.19.45 v4.19.44 v4.19.43 v4.19.42 v4.19.41 v4.19.40 v4.19.39 v4.19.38 v4.19.37 v4.19.36 v4.19.35 v4.19.34 v4.19.33 v4.19.32 v4.19.31 v4.19.30 v4.19.29 v4.19.28 v4.19.27 v4.19.26 v4.19.25 v4.19.24 v4.19.23 v4.19.22 v4.19.21 v4.19.20 v4.19.19 v4.19.18 v4.19.17 v4.19.16 v4.19.15 v4.19.14 v4.19.13 v4.19.12 v4.19.11 v4.19.10 v4.19.9 v4.19.8 v4.19.7 v4.19.6 v4.19.5 v4.19.4 v4.19.3 v4.19.2 v4.19.1 v4.19 v4.19-rc8 v4.19-rc7 v4.19-rc6 v4.19-rc5 v4.19-rc4 v4.19-rc3 v4.19-rc2 v4.19-rc1 ck-release-21 ck-release-20 ck-release-19.2 ck-release-19.1 ck-release-19 ck-release-18 ck-release-17.2 ck-release-17.1 ck-release-17 ck-release-16 ck-release-15.1 ck-release-15 ck-release-14 ck-release-13.2 ck-release-13 ck-release-12 ck-release-11 ck-release-10 ck-release-9 ck-release-7 alk-release-15 alk-release-14 alk-release-13.2 alk-release-13 alk-release-12 alk-release-11 alk-release-10 alk-release-9 alk-release-7
无相关合并请求
/*
* Copyright 2013 Red Hat Inc.
*
* 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: Ben Skeggs
*/
#define T_TIMEOUT 2200000
#define T_RISEFALL 1000
#define T_HOLD 5000
#ifdef INCLUDE_PROC
process(PROC_I2C_, #i2c_init, #i2c_recv)
#endif
/******************************************************************************
* I2C_ data segment
*****************************************************************************/
#ifdef INCLUDE_DATA
i2c_scl_map:
.b32 NV_PPWR_OUTPUT_I2C_0_SCL
.b32 NV_PPWR_OUTPUT_I2C_1_SCL
.b32 NV_PPWR_OUTPUT_I2C_2_SCL
.b32 NV_PPWR_OUTPUT_I2C_3_SCL
.b32 NV_PPWR_OUTPUT_I2C_4_SCL
.b32 NV_PPWR_OUTPUT_I2C_5_SCL
.b32 NV_PPWR_OUTPUT_I2C_6_SCL
.b32 NV_PPWR_OUTPUT_I2C_7_SCL
.b32 NV_PPWR_OUTPUT_I2C_8_SCL
.b32 NV_PPWR_OUTPUT_I2C_9_SCL
i2c_sda_map:
.b32 NV_PPWR_OUTPUT_I2C_0_SDA
.b32 NV_PPWR_OUTPUT_I2C_1_SDA
.b32 NV_PPWR_OUTPUT_I2C_2_SDA
.b32 NV_PPWR_OUTPUT_I2C_3_SDA
.b32 NV_PPWR_OUTPUT_I2C_4_SDA
.b32 NV_PPWR_OUTPUT_I2C_5_SDA
.b32 NV_PPWR_OUTPUT_I2C_6_SDA
.b32 NV_PPWR_OUTPUT_I2C_7_SDA
.b32 NV_PPWR_OUTPUT_I2C_8_SDA
.b32 NV_PPWR_OUTPUT_I2C_9_SDA
#if NVKM_PPWR_CHIPSET < GF119
i2c_ctrl:
.b32 0x00e138
.b32 0x00e150
.b32 0x00e168
.b32 0x00e180
.b32 0x00e254
.b32 0x00e274
.b32 0x00e764
.b32 0x00e780
.b32 0x00e79c
.b32 0x00e7b8
#endif
#endif
/******************************************************************************
* I2C_ code segment
*****************************************************************************/
#ifdef INCLUDE_CODE
// $r3 - value
// $r2 - sda line
// $r1 - scl line
// $r0 - zero
i2c_drive_scl:
cmp b32 $r3 0
bra e #i2c_drive_scl_lo
nv_iowr(NV_PPWR_OUTPUT_SET, $r1)
ret
i2c_drive_scl_lo:
nv_iowr(NV_PPWR_OUTPUT_CLR, $r1)
ret
i2c_drive_sda:
cmp b32 $r3 0
bra e #i2c_drive_sda_lo
nv_iowr(NV_PPWR_OUTPUT_SET, $r2)
ret
i2c_drive_sda_lo:
nv_iowr(NV_PPWR_OUTPUT_CLR, $r2)
ret
i2c_sense_scl:
bclr $flags $p1
nv_iord($r3, NV_PPWR_INPUT)
and $r3 $r1
bra z #i2c_sense_scl_done
bset $flags $p1
i2c_sense_scl_done:
ret
i2c_sense_sda:
bclr $flags $p1
nv_iord($r3, NV_PPWR_INPUT)
and $r3 $r2
bra z #i2c_sense_sda_done
bset $flags $p1
i2c_sense_sda_done:
ret
#define i2c_drive_scl(v) /*
*/ mov $r3 (v) /*
*/ call(i2c_drive_scl)
#define i2c_drive_sda(v) /*
*/ mov $r3 (v) /*
*/ call(i2c_drive_sda)
#define i2c_sense_scl() /*
*/ call(i2c_sense_scl)
#define i2c_sense_sda() /*
*/ call(i2c_sense_sda)
#define i2c_delay(v) /*
*/ mov $r14 (v) /*
*/ call(nsec)
#define i2c_trace_init() /*
*/ imm32($r6, 0x10000000) /*
*/ sub b32 $r7 $r6 1 /*
*/
#define i2c_trace_down() /*
*/ shr b32 $r6 4 /*
*/ push $r5 /*
*/ shl b32 $r5 $r6 4 /*
*/ sub b32 $r5 $r6 /*
*/ not b32 $r5 /*
*/ and $r7 $r5 /*
*/ pop $r5 /*
*/
#define i2c_trace_exit() /*
*/ shl b32 $r6 4 /*
*/
#define i2c_trace_next() /*
*/ add b32 $r7 $r6 /*
*/
#define i2c_trace_call(func) /*
*/ i2c_trace_next() /*
*/ i2c_trace_down() /*
*/ call(func) /*
*/ i2c_trace_exit() /*
*/
i2c_raise_scl:
push $r4
mov $r4 (T_TIMEOUT / T_RISEFALL)
i2c_drive_scl(1)
i2c_raise_scl_wait:
i2c_delay(T_RISEFALL)
i2c_sense_scl()
bra $p1 #i2c_raise_scl_done
sub b32 $r4 1
bra nz #i2c_raise_scl_wait
i2c_raise_scl_done:
pop $r4
ret
i2c_start:
i2c_sense_scl()
bra not $p1 #i2c_start_rep
i2c_sense_sda()
bra not $p1 #i2c_start_rep
bra #i2c_start_send
i2c_start_rep:
i2c_drive_scl(0)
i2c_drive_sda(1)
i2c_trace_call(i2c_raise_scl)
bra not $p1 #i2c_start_out
i2c_start_send:
i2c_drive_sda(0)
i2c_delay(T_HOLD)
i2c_drive_scl(0)
i2c_delay(T_HOLD)
i2c_start_out:
ret
i2c_stop:
i2c_drive_scl(0)
i2c_drive_sda(0)
i2c_delay(T_RISEFALL)
i2c_drive_scl(1)
i2c_delay(T_HOLD)
i2c_drive_sda(1)
i2c_delay(T_HOLD)
ret
// $r3 - value
// $r2 - sda line
// $r1 - scl line
// $r0 - zero
i2c_bitw:
call(i2c_drive_sda)
i2c_delay(T_RISEFALL)
i2c_trace_call(i2c_raise_scl)
bra not $p1 #i2c_bitw_out
i2c_delay(T_HOLD)
i2c_drive_scl(0)
i2c_delay(T_HOLD)
i2c_bitw_out:
ret
// $r3 - value (out)
// $r2 - sda line
// $r1 - scl line
// $r0 - zero
i2c_bitr:
i2c_drive_sda(1)
i2c_delay(T_RISEFALL)
i2c_trace_call(i2c_raise_scl)
bra not $p1 #i2c_bitr_done
i2c_sense_sda()
i2c_drive_scl(0)
i2c_delay(T_HOLD)
xbit $r3 $flags $p1
bset $flags $p1
i2c_bitr_done:
ret
i2c_get_byte:
mov $r5 0
mov $r4 8
i2c_get_byte_next:
shl b32 $r5 1
i2c_trace_call(i2c_bitr)
bra not $p1 #i2c_get_byte_done
or $r5 $r3
sub b32 $r4 1
bra nz #i2c_get_byte_next
mov $r3 1
i2c_trace_call(i2c_bitw)
i2c_get_byte_done:
ret
i2c_put_byte:
mov $r4 8
i2c_put_byte_next:
sub b32 $r4 1
xbit $r3 $r5 $r4
i2c_trace_call(i2c_bitw)
bra not $p1 #i2c_put_byte_done
cmp b32 $r4 0
bra ne #i2c_put_byte_next
i2c_trace_call(i2c_bitr)
bra not $p1 #i2c_put_byte_done
i2c_trace_next()
cmp b32 $r3 1
bra ne #i2c_put_byte_done
bclr $flags $p1 // nack
i2c_put_byte_done:
ret
i2c_addr:
i2c_trace_call(i2c_start)
bra not $p1 #i2c_addr_done
extr $r3 $r12 I2C__MSG_DATA0_ADDR
shl b32 $r3 1
or $r5 $r3
i2c_trace_call(i2c_put_byte)
i2c_addr_done:
ret
i2c_acquire_addr:
extr $r14 $r12 I2C__MSG_DATA0_PORT
#if NVKM_PPWR_CHIPSET < GF119
shl b32 $r14 2
add b32 $r14 #i2c_ctrl
ld b32 $r14 D[$r14]
#else
shl b32 $r14 5
add b32 $r14 0x00d014
#endif
ret
i2c_acquire:
call(i2c_acquire_addr)
call(rd32)
bset $r13 3
call(wr32)
ret
i2c_release:
call(i2c_acquire_addr)
call(rd32)
bclr $r13 3
call(wr32)
ret
// description
//
// $r15 - current (i2c)
// $r14 - sender process name
// $r13 - message
// $r12 - data0
// $r11 - data1
// $r0 - zero
i2c_recv:
bclr $flags $p1
extr $r1 $r12 I2C__MSG_DATA0_PORT
shl b32 $r1 2
cmp b32 $r1 (#i2c_sda_map - #i2c_scl_map)
bra ge #i2c_recv_done
add b32 $r3 $r1 #i2c_sda_map
ld b32 $r2 D[$r3]
add b32 $r3 $r1 #i2c_scl_map
ld b32 $r1 D[$r3]
bset $flags $p2
push $r13
push $r14
push $r13
i2c_trace_init()
i2c_trace_call(i2c_acquire)
pop $r13
cmp b32 $r13 I2C__MSG_RD08
bra ne #i2c_recv_not_rd08
mov $r5 0
i2c_trace_call(i2c_addr)
bra not $p1 #i2c_recv_done
extr $r5 $r12 I2C__MSG_DATA0_RD08_REG
i2c_trace_call(i2c_put_byte)
bra not $p1 #i2c_recv_done
mov $r5 1
i2c_trace_call(i2c_addr)
bra not $p1 #i2c_recv_done
i2c_trace_call(i2c_get_byte)
bra not $p1 #i2c_recv_done
ins $r11 $r5 I2C__MSG_DATA1_RD08_VAL
i2c_trace_call(i2c_stop)
mov b32 $r11 $r5
clear b32 $r7
bra #i2c_recv_done
i2c_recv_not_rd08:
cmp b32 $r13 I2C__MSG_WR08
bra ne #i2c_recv_not_wr08
mov $r5 0
call(i2c_addr)
bra not $p1 #i2c_recv_done
extr $r5 $r12 I2C__MSG_DATA0_WR08_REG
call(i2c_put_byte)
bra not $p1 #i2c_recv_done
mov $r5 0
call(i2c_addr)
bra not $p1 #i2c_recv_done
extr $r5 $r11 I2C__MSG_DATA1_WR08_VAL
call(i2c_put_byte)
bra not $p1 #i2c_recv_done
call(i2c_stop)
clear b32 $r7
extr $r5 $r12 I2C__MSG_DATA0_WR08_SYNC
bra nz #i2c_recv_done
bclr $flags $p2
bra #i2c_recv_done
i2c_recv_not_wr08:
i2c_recv_done:
extr $r14 $r12 I2C__MSG_DATA0_PORT
call(i2c_release)
pop $r14
pop $r13
bra not $p2 #i2c_recv_exit
mov b32 $r12 $r7
call(send)
i2c_recv_exit:
ret
// description
//
// $r15 - current (i2c)
// $r0 - zero
i2c_init:
ret
#endif
...@@ -83,6 +83,50 @@ ...@@ -83,6 +83,50 @@
#define NV_PPWR_MMIO_CTRL_OP_WR 0x00000002 #define NV_PPWR_MMIO_CTRL_OP_WR 0x00000002
#define NV_PPWR_OUTPUT 0x07c0 #define NV_PPWR_OUTPUT 0x07c0
#define NV_PPWR_OUTPUT_FB_PAUSE 0x00000004 #define NV_PPWR_OUTPUT_FB_PAUSE 0x00000004
#if NVKM_PPWR_CHIPSET < GF119
#define NV_PPWR_OUTPUT_I2C_3_SCL 0x00000100
#define NV_PPWR_OUTPUT_I2C_3_SDA 0x00000200
#define NV_PPWR_OUTPUT_I2C_0_SCL 0x00001000
#define NV_PPWR_OUTPUT_I2C_0_SDA 0x00002000
#define NV_PPWR_OUTPUT_I2C_1_SCL 0x00004000
#define NV_PPWR_OUTPUT_I2C_1_SDA 0x00008000
#define NV_PPWR_OUTPUT_I2C_2_SCL 0x00010000
#define NV_PPWR_OUTPUT_I2C_2_SDA 0x00020000
#define NV_PPWR_OUTPUT_I2C_4_SCL 0x00040000
#define NV_PPWR_OUTPUT_I2C_4_SDA 0x00080000
#define NV_PPWR_OUTPUT_I2C_5_SCL 0x00100000
#define NV_PPWR_OUTPUT_I2C_5_SDA 0x00200000
#define NV_PPWR_OUTPUT_I2C_6_SCL 0x00400000
#define NV_PPWR_OUTPUT_I2C_6_SDA 0x00800000
#define NV_PPWR_OUTPUT_I2C_7_SCL 0x01000000
#define NV_PPWR_OUTPUT_I2C_7_SDA 0x02000000
#define NV_PPWR_OUTPUT_I2C_8_SCL 0x04000000
#define NV_PPWR_OUTPUT_I2C_8_SDA 0x08000000
#define NV_PPWR_OUTPUT_I2C_9_SCL 0x10000000
#define NV_PPWR_OUTPUT_I2C_9_SDA 0x20000000
#else
#define NV_PPWR_OUTPUT_I2C_0_SCL 0x00000400
#define NV_PPWR_OUTPUT_I2C_1_SCL 0x00000800
#define NV_PPWR_OUTPUT_I2C_2_SCL 0x00001000
#define NV_PPWR_OUTPUT_I2C_3_SCL 0x00002000
#define NV_PPWR_OUTPUT_I2C_4_SCL 0x00004000
#define NV_PPWR_OUTPUT_I2C_5_SCL 0x00008000
#define NV_PPWR_OUTPUT_I2C_6_SCL 0x00010000
#define NV_PPWR_OUTPUT_I2C_7_SCL 0x00020000
#define NV_PPWR_OUTPUT_I2C_8_SCL 0x00040000
#define NV_PPWR_OUTPUT_I2C_9_SCL 0x00080000
#define NV_PPWR_OUTPUT_I2C_0_SDA 0x00100000
#define NV_PPWR_OUTPUT_I2C_1_SDA 0x00200000
#define NV_PPWR_OUTPUT_I2C_2_SDA 0x00400000
#define NV_PPWR_OUTPUT_I2C_3_SDA 0x00800000
#define NV_PPWR_OUTPUT_I2C_4_SDA 0x01000000
#define NV_PPWR_OUTPUT_I2C_5_SDA 0x02000000
#define NV_PPWR_OUTPUT_I2C_6_SDA 0x04000000
#define NV_PPWR_OUTPUT_I2C_7_SDA 0x08000000
#define NV_PPWR_OUTPUT_I2C_8_SDA 0x10000000
#define NV_PPWR_OUTPUT_I2C_9_SDA 0x20000000
#endif
#define NV_PPWR_INPUT 0x07c4
#define NV_PPWR_OUTPUT_SET 0x07e0 #define NV_PPWR_OUTPUT_SET 0x07e0
#define NV_PPWR_OUTPUT_SET_FB_PAUSE 0x00000004 #define NV_PPWR_OUTPUT_SET_FB_PAUSE 0x00000004
#define NV_PPWR_OUTPUT_CLR 0x07e4 #define NV_PPWR_OUTPUT_CLR 0x07e4
...@@ -125,6 +169,15 @@ ...@@ -125,6 +169,15 @@
*/ .b32 0 /* */ .b32 0 /*
*/ .skip 64 */ .skip 64
#if NV_PPWR_CHIPSET < GK208
#define imm32(reg,val) /*
*/ movw reg ((val) & 0x0000ffff) /*
*/ sethi reg ((val) & 0xffff0000)
#else
#define imm32(reg,val) /*
*/ mov reg (val)
#endif
#ifndef NVKM_FALCON_UNSHIFTED_IO #ifndef NVKM_FALCON_UNSHIFTED_IO
#define nv_iord(reg,ior) /* #define nv_iord(reg,ior) /*
*/ mov reg ior /* */ mov reg ior /*
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_PROC #undef INCLUDE_PROC
...@@ -46,6 +47,7 @@ ...@@ -46,6 +47,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_DATA #undef INCLUDE_DATA
...@@ -57,6 +59,7 @@ ...@@ -57,6 +59,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_CODE #undef INCLUDE_CODE
......
...@@ -89,16 +89,9 @@ uint32_t nv108_pwr_data[] = { ...@@ -89,16 +89,9 @@ uint32_t nv108_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x54534554, 0x5f433249,
0x00000494, 0x00000877,
0x00000475, 0x0000071e,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -111,15 +104,6 @@ uint32_t nv108_pwr_data[] = { ...@@ -111,15 +104,6 @@ uint32_t nv108_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x454c4449,
0x0000049f,
0x0000049d,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -127,18 +111,17 @@ uint32_t nv108_pwr_data[] = { ...@@ -127,18 +111,17 @@ uint32_t nv108_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x54534554,
0x00000898,
0x00000879,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0210: proc_list_tail */
/* 0x0210: time_prev */
0x00000000, 0x00000000,
/* 0x0214: time_next */
0x00000000, 0x00000000,
/* 0x0218: fifo_queue */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -150,6 +133,9 @@ uint32_t nv108_pwr_data[] = { ...@@ -150,6 +133,9 @@ uint32_t nv108_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x454c4449,
0x000008a3,
0x000008a1,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -169,9 +155,12 @@ uint32_t nv108_pwr_data[] = { ...@@ -169,9 +155,12 @@ uint32_t nv108_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0268: proc_list_tail */
/* 0x0268: time_prev */
0x00000000, 0x00000000,
/* 0x026c: time_next */
0x00000000, 0x00000000,
/* 0x0298: rfifo_queue */ /* 0x0270: fifo_queue */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -204,31 +193,7 @@ uint32_t nv108_pwr_data[] = { ...@@ -204,31 +193,7 @@ uint32_t nv108_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0318: memx_func_head */ /* 0x02f0: rfifo_queue */
0x00010000,
0x00000000,
0x000003a9,
/* 0x0324: memx_func_next */
0x00000001,
0x00000000,
0x000003c7,
0x00000002,
0x00000002,
0x000003df,
0x00040003,
0x00000000,
0x00000407,
0x00010004,
0x00000000,
0x00000421,
/* 0x0354: memx_func_tail */
/* 0x0354: memx_data_head */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -261,10 +226,25 @@ uint32_t nv108_pwr_data[] = { ...@@ -261,10 +226,25 @@ uint32_t nv108_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0370: memx_func_head */
0x00010000,
0x00000000, 0x00000000,
0x000003a9,
/* 0x037c: memx_func_next */
0x00000001,
0x00000000, 0x00000000,
0x000003c7,
0x00000002,
0x00000002,
0x000003df,
0x00040003,
0x00000000, 0x00000000,
0x00000407,
0x00010004,
0x00000000, 0x00000000,
0x00000421,
/* 0x03ac: memx_func_tail */
/* 0x03ac: memx_data_head */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -735,7 +715,6 @@ uint32_t nv108_pwr_data[] = { ...@@ -735,7 +715,6 @@ uint32_t nv108_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0b54: memx_data_tail */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -778,6 +757,29 @@ uint32_t nv108_pwr_data[] = { ...@@ -778,6 +757,29 @@ uint32_t nv108_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0bac: memx_data_tail */
/* 0x0bac: i2c_scl_map */
0x00000400,
0x00000800,
0x00001000,
0x00002000,
0x00004000,
0x00008000,
0x00010000,
0x00020000,
0x00040000,
0x00080000,
/* 0x0bd4: i2c_sda_map */
0x00100000,
0x00200000,
0x00400000,
0x00800000,
0x01000000,
0x02000000,
0x04000000,
0x08000000,
0x10000000,
0x20000000,
0x00000000, 0x00000000,
}; };
...@@ -832,20 +834,20 @@ uint32_t nv108_pwr_code[] = { ...@@ -832,20 +834,20 @@ uint32_t nv108_pwr_code[] = {
0x03e99800, 0x03e99800,
0xf40096b0, 0xf40096b0,
0x0a98280b, 0x0a98280b,
0x029abb84, 0x029abb9a,
0x0d0e1cf4, 0x0d0e1cf4,
0x01de7e01, 0x01de7e01,
0xf494bd00, 0xf494bd00,
/* 0x00b2: intr_watchdog_next_time */ /* 0x00b2: intr_watchdog_next_time */
0x0a98140e, 0x0a98140e,
0x00a6b085, 0x00a6b09b,
0xa6080bf4, 0xa6080bf4,
0x061cf49a, 0x061cf49a,
/* 0x00c0: intr_watchdog_next_time_set */ /* 0x00c0: intr_watchdog_next_time_set */
/* 0x00c3: intr_watchdog_next_proc */ /* 0x00c3: intr_watchdog_next_proc */
0xb58509b5, 0xb59b09b5,
0xe0b603e9, 0xe0b603e9,
0x10e6b158, 0x68e6b158,
0xc81bf402, 0xc81bf402,
/* 0x00d2: intr */ /* 0x00d2: intr */
0x00f900f8, 0x00f900f8,
...@@ -862,15 +864,15 @@ uint32_t nv108_pwr_code[] = { ...@@ -862,15 +864,15 @@ uint32_t nv108_pwr_code[] = {
0x080804bd, 0x080804bd,
0xc40088cf, 0xc40088cf,
0x0bf40289, 0x0bf40289,
0x8500b51f, 0x9b00b51f,
0x957e580e, 0x957e580e,
0x09980000, 0x09980000,
0x0096b085, 0x0096b09b,
0x000d0bf4, 0x000d0bf4,
0x0009f634, 0x0009f634,
0x09b504bd, 0x09b504bd,
/* 0x0125: intr_skip_watchdog */ /* 0x0125: intr_skip_watchdog */
0x0089e484, 0x0089e49a,
0x360bf408, 0x360bf408,
0xcf068849, 0xcf068849,
0x9ac40099, 0x9ac40099,
...@@ -918,7 +920,7 @@ uint32_t nv108_pwr_code[] = { ...@@ -918,7 +920,7 @@ uint32_t nv108_pwr_code[] = {
/* 0x01c6: timer_reset */ /* 0x01c6: timer_reset */
0x3400161e, 0x3400161e,
0xbd000ef6, 0xbd000ef6,
0x840eb504, 0x9a0eb504,
/* 0x01d0: timer_enable */ /* 0x01d0: timer_enable */
0x38000108, 0x38000108,
0xbd0008f6, 0xbd0008f6,
...@@ -949,7 +951,7 @@ uint32_t nv108_pwr_code[] = { ...@@ -949,7 +951,7 @@ uint32_t nv108_pwr_code[] = {
0xa6008a98, 0xa6008a98,
0x100bf4ae, 0x100bf4ae,
0xb15880b6, 0xb15880b6,
0xf4021086, 0xf4026886,
0x32f4f11b, 0x32f4f11b,
/* 0x0239: find_done */ /* 0x0239: find_done */
0xfc8eb201, 0xfc8eb201,
...@@ -1009,7 +1011,7 @@ uint32_t nv108_pwr_code[] = { ...@@ -1009,7 +1011,7 @@ uint32_t nv108_pwr_code[] = {
0x0bf412a6, 0x0bf412a6,
0x071ec42e, 0x071ec42e,
0xb704ee94, 0xb704ee94,
0x980218e0, 0x980270e0,
0xec9803eb, 0xec9803eb,
0x01ed9802, 0x01ed9802,
0x7e00ee98, 0x7e00ee98,
...@@ -1031,7 +1033,7 @@ uint32_t nv108_pwr_code[] = { ...@@ -1031,7 +1033,7 @@ uint32_t nv108_pwr_code[] = {
0xf412a608, 0xf412a608,
0x23c4ef0b, 0x23c4ef0b,
0x0434b607, 0x0434b607,
0x029830b7, 0x02f030b7,
0xb5033bb5, 0xb5033bb5,
0x3db5023c, 0x3db5023c,
0x003eb501, 0x003eb501,
...@@ -1044,11 +1046,11 @@ uint32_t nv108_pwr_code[] = { ...@@ -1044,11 +1046,11 @@ uint32_t nv108_pwr_code[] = {
/* 0x0379: host_init */ /* 0x0379: host_init */
0x00804100, 0x00804100,
0xf11014b6, 0xf11014b6,
0x40021815, 0x40027015,
0x01f604d0, 0x01f604d0,
0x4104bd00, 0x4104bd00,
0x14b60080, 0x14b60080,
0x9815f110, 0xf015f110,
0x04dc4002, 0x04dc4002,
0xbd0001f6, 0xbd0001f6,
0x40010104, 0x40010104,
...@@ -1101,13 +1103,13 @@ uint32_t nv108_pwr_code[] = { ...@@ -1101,13 +1103,13 @@ uint32_t nv108_pwr_code[] = {
0x001398b2, 0x001398b2,
0x950410b6, 0x950410b6,
0x30f01034, 0x30f01034,
0xc835980c, 0xde35980c,
0x12a655f9, 0x12a655f9,
0xfced1ef4, 0xfced1ef4,
0x7ee0fcd0, 0x7ee0fcd0,
0xf800023f, 0xf800023f,
/* 0x0455: memx_info */ /* 0x0455: memx_info */
0x03544c00, 0x03ac4c00,
0x7e08004b, 0x7e08004b,
0xf800023f, 0xf800023f,
/* 0x0461: memx_recv */ /* 0x0461: memx_recv */
...@@ -1119,7 +1121,301 @@ uint32_t nv108_pwr_code[] = { ...@@ -1119,7 +1121,301 @@ uint32_t nv108_pwr_code[] = {
/* 0x0471: perf_recv */ /* 0x0471: perf_recv */
/* 0x0473: perf_init */ /* 0x0473: perf_init */
0xf800f800, 0xf800f800,
/* 0x0475: test_recv */ /* 0x0475: i2c_drive_scl */
0x0036b000,
0x400d0bf4,
0x01f607e0,
0xf804bd00,
/* 0x0485: i2c_drive_scl_lo */
0x07e44000,
0xbd0001f6,
/* 0x048f: i2c_drive_sda */
0xb000f804,
0x0bf40036,
0x07e0400d,
0xbd0002f6,
/* 0x049f: i2c_drive_sda_lo */
0x4000f804,
0x02f607e4,
0xf804bd00,
/* 0x04a9: i2c_sense_scl */
0x0132f400,
0xcf07c443,
0x31fd0033,
0x060bf404,
/* 0x04bb: i2c_sense_scl_done */
0xf80131f4,
/* 0x04bd: i2c_sense_sda */
0x0132f400,
0xcf07c443,
0x32fd0033,
0x060bf404,
/* 0x04cf: i2c_sense_sda_done */
0xf80131f4,
/* 0x04d1: i2c_raise_scl */
0x4440f900,
0x01030898,
0x0004757e,
/* 0x04dc: i2c_raise_scl_wait */
0x7e03e84e,
0x7e00005d,
0xf40004a9,
0x42b60901,
0xef1bf401,
/* 0x04f0: i2c_raise_scl_done */
0x00f840fc,
/* 0x04f4: i2c_start */
0x0004a97e,
0x7e0d11f4,
0xf40004bd,
0x0ef40611,
/* 0x0505: i2c_start_rep */
0x7e00032e,
0x03000475,
0x048f7e01,
0x0076bb00,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0xd17e50fc,
0x64b60004,
0x1d11f404,
/* 0x0530: i2c_start_send */
0x8f7e0003,
0x884e0004,
0x005d7e13,
0x7e000300,
0x4e000475,
0x5d7e1388,
/* 0x054a: i2c_start_out */
0x00f80000,
/* 0x054c: i2c_stop */
0x757e0003,
0x00030004,
0x00048f7e,
0x7e03e84e,
0x0300005d,
0x04757e01,
0x13884e00,
0x00005d7e,
0x8f7e0103,
0x884e0004,
0x005d7e13,
/* 0x057b: i2c_bitw */
0x7e00f800,
0x4e00048f,
0x5d7e03e8,
0x76bb0000,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0x7e50fc04,
0xb60004d1,
0x11f40464,
0x13884e17,
0x00005d7e,
0x757e0003,
0x884e0004,
0x005d7e13,
/* 0x05b9: i2c_bitw_out */
/* 0x05bb: i2c_bitr */
0x0300f800,
0x048f7e01,
0x03e84e00,
0x00005d7e,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x04d17e50,
0x0464b600,
0x7e1a11f4,
0x030004bd,
0x04757e00,
0x13884e00,
0x00005d7e,
0xf4013cf0,
/* 0x05fe: i2c_bitr_done */
0x00f80131,
/* 0x0600: i2c_get_byte */
0x08040005,
/* 0x0604: i2c_get_byte_next */
0xbb0154b6,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x0005bb7e,
0xf40464b6,
0x53fd2a11,
0x0142b605,
0x03d81bf4,
0x0076bb01,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x7b7e50fc,
0x64b60005,
/* 0x064d: i2c_get_byte_done */
/* 0x064f: i2c_put_byte */
0x0400f804,
/* 0x0651: i2c_put_byte_next */
0x0142b608,
0xbb3854ff,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x00057b7e,
0xf40464b6,
0x46b03411,
0xd81bf400,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x05bb7e50,
0x0464b600,
0xbb0f11f4,
0x36b00076,
0x061bf401,
/* 0x06a7: i2c_put_byte_done */
0xf80132f4,
/* 0x06a9: i2c_addr */
0x0076bb00,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0xf47e50fc,
0x64b60004,
0x2911f404,
0x012ec3e7,
0xfd0134b6,
0x76bb0553,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0x7e50fc04,
0xb600064f,
/* 0x06ee: i2c_addr_done */
0x00f80464,
/* 0x06f0: i2c_acquire_addr */
0xb6f8cec7,
0xe0b705e4,
0x00f8d014,
/* 0x06fc: i2c_acquire */
0x0006f07e,
0x0000047e,
0x7e03d9f0,
0xf800002e,
/* 0x070d: i2c_release */
0x06f07e00,
0x00047e00,
0x03daf000,
0x00002e7e,
/* 0x071e: i2c_recv */
0x32f400f8,
0xf8c1c701,
0xb00214b6,
0x1ff52816,
0x13b80137,
0x98000bd4,
0x13b80032,
0x98000bac,
0x31f40031,
0xf9d0f902,
0xf1d0f9e0,
0xf1000067,
0x92100063,
0x76bb0167,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0x7e50fc04,
0xb60006fc,
0xd0fc0464,
0xf500d6b0,
0x0500b01b,
0x0076bb00,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0xa97e50fc,
0x64b60006,
0xcc11f504,
0xe0c5c700,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x064f7e50,
0x0464b600,
0x00a911f5,
0x76bb0105,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0x7e50fc04,
0xb60006a9,
0x11f50464,
0x76bb0087,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0x7e50fc04,
0xb6000600,
0x11f40464,
0xe05bcb67,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x054c7e50,
0x0464b600,
0x74bd5bb2,
/* 0x0823: i2c_recv_not_rd08 */
0xb0410ef4,
0x1bf401d6,
0x7e00053b,
0xf40006a9,
0xc5c73211,
0x064f7ee0,
0x2811f400,
0xa97e0005,
0x11f40006,
0xe0b5c71f,
0x00064f7e,
0x7e1511f4,
0xbd00054c,
0x08c5c774,
0xf4091bf4,
0x0ef40232,
/* 0x0861: i2c_recv_not_wr08 */
/* 0x0861: i2c_recv_done */
0xf8cec703,
0x00070d7e,
0xd0fce0fc,
0xb20912f4,
0x023f7e7c,
/* 0x0875: i2c_recv_exit */
/* 0x0877: i2c_init */
0xf800f800,
/* 0x0879: test_recv */
0x04584100, 0x04584100,
0xb60011cf, 0xb60011cf,
0x58400110, 0x58400110,
...@@ -1128,26 +1424,26 @@ uint32_t nv108_pwr_code[] = { ...@@ -1128,26 +1424,26 @@ uint32_t nv108_pwr_code[] = {
0xe3f1d900, 0xe3f1d900,
0x967e134f, 0x967e134f,
0x00f80001, 0x00f80001,
/* 0x0494: test_init */ /* 0x0898: test_init */
0x7e08004e, 0x7e08004e,
0xf8000196, 0xf8000196,
/* 0x049d: idle_recv */ /* 0x08a1: idle_recv */
/* 0x049f: idle */ /* 0x08a3: idle */
0xf400f800, 0xf400f800,
0x54410031, 0x54410031,
0x0011cf04, 0x0011cf04,
0x400110b6, 0x400110b6,
0x01f60454, 0x01f60454,
/* 0x04b3: idle_loop */ /* 0x08b7: idle_loop */
0x0104bd00, 0x0104bd00,
0x0232f458, 0x0232f458,
/* 0x04b8: idle_proc */ /* 0x08bc: idle_proc */
/* 0x04b8: idle_proc_exec */ /* 0x08bc: idle_proc_exec */
0x1eb210f9, 0x1eb210f9,
0x0002487e, 0x0002487e,
0x11f410fc, 0x11f410fc,
0x0231f409, 0x0231f409,
/* 0x04cb: idle_proc_next */ /* 0x08cf: idle_proc_next */
0xb6f00ef4, 0xb6f00ef4,
0x1fa65810, 0x1fa65810,
0xf4e81bf4, 0xf4e81bf4,
...@@ -1161,5 +1457,4 @@ uint32_t nv108_pwr_code[] = { ...@@ -1161,5 +1457,4 @@ uint32_t nv108_pwr_code[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000,
}; };
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_PROC #undef INCLUDE_PROC
...@@ -46,6 +47,7 @@ ...@@ -46,6 +47,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_DATA #undef INCLUDE_DATA
...@@ -57,6 +59,7 @@ ...@@ -57,6 +59,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_CODE #undef INCLUDE_CODE
......
...@@ -89,9 +89,31 @@ uint32_t nva3_pwr_data[] = { ...@@ -89,9 +89,31 @@ uint32_t nva3_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x5f433249,
0x00000982,
0x00000825,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x54534554, 0x54534554,
0x0000057b, 0x000009ab,
0x00000554, 0x00000984,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -112,8 +134,8 @@ uint32_t nva3_pwr_data[] = { ...@@ -112,8 +134,8 @@ uint32_t nva3_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x454c4449, 0x454c4449,
0x00000587, 0x000009b7,
0x00000585, 0x000009b5,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -133,12 +155,12 @@ uint32_t nva3_pwr_data[] = { ...@@ -133,12 +155,12 @@ uint32_t nva3_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0210: proc_list_tail */ /* 0x0268: proc_list_tail */
/* 0x0210: time_prev */ /* 0x0268: time_prev */
0x00000000, 0x00000000,
/* 0x0214: time_next */ /* 0x026c: time_next */
0x00000000, 0x00000000,
/* 0x0218: fifo_queue */ /* 0x0270: fifo_queue */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -171,7 +193,7 @@ uint32_t nva3_pwr_data[] = { ...@@ -171,7 +193,7 @@ uint32_t nva3_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0298: rfifo_queue */ /* 0x02f0: rfifo_queue */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -204,11 +226,11 @@ uint32_t nva3_pwr_data[] = { ...@@ -204,11 +226,11 @@ uint32_t nva3_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0318: memx_func_head */ /* 0x0370: memx_func_head */
0x00010000, 0x00010000,
0x00000000, 0x00000000,
0x0000046f, 0x0000046f,
/* 0x0324: memx_func_next */ /* 0x037c: memx_func_next */
0x00000001, 0x00000001,
0x00000000, 0x00000000,
0x00000496, 0x00000496,
...@@ -221,8 +243,17 @@ uint32_t nva3_pwr_data[] = { ...@@ -221,8 +243,17 @@ uint32_t nva3_pwr_data[] = {
0x00010004, 0x00010004,
0x00000000, 0x00000000,
0x000004fc, 0x000004fc,
/* 0x0354: memx_func_tail */ /* 0x03ac: memx_func_tail */
/* 0x0354: memx_data_head */ /* 0x03ac: memx_data_head */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -726,6 +757,43 @@ uint32_t nva3_pwr_data[] = { ...@@ -726,6 +757,43 @@ uint32_t nva3_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0bac: memx_data_tail */
/* 0x0bac: i2c_scl_map */
0x00001000,
0x00004000,
0x00010000,
0x00000100,
0x00040000,
0x00100000,
0x00400000,
0x01000000,
0x04000000,
0x10000000,
/* 0x0bd4: i2c_sda_map */
0x00002000,
0x00008000,
0x00020000,
0x00000200,
0x00080000,
0x00200000,
0x00800000,
0x02000000,
0x08000000,
0x20000000,
/* 0x0bfc: i2c_ctrl */
0x0000e138,
0x0000e150,
0x0000e168,
0x0000e180,
0x0000e254,
0x0000e274,
0x0000e764,
0x0000e780,
0x0000e79c,
0x0000e7b8,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -735,7 +803,6 @@ uint32_t nva3_pwr_data[] = { ...@@ -735,7 +803,6 @@ uint32_t nva3_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0b54: memx_data_tail */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -845,21 +912,21 @@ uint32_t nva3_pwr_code[] = { ...@@ -845,21 +912,21 @@ uint32_t nva3_pwr_code[] = {
0x9800f8df, 0x9800f8df,
0x96b003e9, 0x96b003e9,
0x2a0bf400, 0x2a0bf400,
0xbb840a98, 0xbb9a0a98,
0x1cf4029a, 0x1cf4029a,
0x01d7f00f, 0x01d7f00f,
0x025421f5, 0x025421f5,
0x0ef494bd, 0x0ef494bd,
/* 0x00e9: intr_watchdog_next_time */ /* 0x00e9: intr_watchdog_next_time */
0x850a9815, 0x9b0a9815,
0xf400a6b0, 0xf400a6b0,
0x9ab8090b, 0x9ab8090b,
0x061cf406, 0x061cf406,
/* 0x00f8: intr_watchdog_next_time_set */ /* 0x00f8: intr_watchdog_next_time_set */
/* 0x00fb: intr_watchdog_next_proc */ /* 0x00fb: intr_watchdog_next_proc */
0x80850980, 0x809b0980,
0xe0b603e9, 0xe0b603e9,
0x10e6b158, 0x68e6b158,
0xc61bf402, 0xc61bf402,
/* 0x010a: intr */ /* 0x010a: intr */
0x00f900f8, 0x00f900f8,
...@@ -880,15 +947,15 @@ uint32_t nva3_pwr_code[] = { ...@@ -880,15 +947,15 @@ uint32_t nva3_pwr_code[] = {
0x0088cf06, 0x0088cf06,
0xf40289c4, 0xf40289c4,
0x0080230b, 0x0080230b,
0x58e7f085, 0x58e7f09b,
0x98cb21f4, 0x98cb21f4,
0x96b08509, 0x96b09b09,
0x110bf400, 0x110bf400,
0xb63407f0, 0xb63407f0,
0x09d00604, 0x09d00604,
0x8004bd00, 0x8004bd00,
/* 0x016e: intr_skip_watchdog */ /* 0x016e: intr_skip_watchdog */
0x89e48409, 0x89e49a09,
0x0bf40800, 0x0bf40800,
0x8897f148, 0x8897f148,
0x0694b606, 0x0694b606,
...@@ -948,7 +1015,7 @@ uint32_t nva3_pwr_code[] = { ...@@ -948,7 +1015,7 @@ uint32_t nva3_pwr_code[] = {
0x000ed006, 0x000ed006,
0x0e8004bd, 0x0e8004bd,
/* 0x0241: timer_enable */ /* 0x0241: timer_enable */
0x0187f084, 0x0187f09a,
0xb63807f0, 0xb63807f0,
0x08d00604, 0x08d00604,
/* 0x024f: timer_done */ /* 0x024f: timer_done */
...@@ -979,7 +1046,7 @@ uint32_t nva3_pwr_code[] = { ...@@ -979,7 +1046,7 @@ uint32_t nva3_pwr_code[] = {
0xb8008a98, 0xb8008a98,
0x0bf406ae, 0x0bf406ae,
0x5880b610, 0x5880b610,
0x021086b1, 0x026886b1,
0xf4f01bf4, 0xf4f01bf4,
/* 0x02b2: find_done */ /* 0x02b2: find_done */
0x8eb90132, 0x8eb90132,
...@@ -1049,7 +1116,7 @@ uint32_t nva3_pwr_code[] = { ...@@ -1049,7 +1116,7 @@ uint32_t nva3_pwr_code[] = {
0x320bf406, 0x320bf406,
0x94071ec4, 0x94071ec4,
0xe0b704ee, 0xe0b704ee,
0xeb980218, 0xeb980270,
0x02ec9803, 0x02ec9803,
0x9801ed98, 0x9801ed98,
0x21f500ee, 0x21f500ee,
...@@ -1075,7 +1142,7 @@ uint32_t nva3_pwr_code[] = { ...@@ -1075,7 +1142,7 @@ uint32_t nva3_pwr_code[] = {
0xe60bf406, 0xe60bf406,
0xb60723c4, 0xb60723c4,
0x30b70434, 0x30b70434,
0x3b800298, 0x3b8002f0,
0x023c8003, 0x023c8003,
0x80013d80, 0x80013d80,
0x20b6003e, 0x20b6003e,
...@@ -1090,13 +1157,13 @@ uint32_t nva3_pwr_code[] = { ...@@ -1090,13 +1157,13 @@ uint32_t nva3_pwr_code[] = {
/* 0x0430: host_init */ /* 0x0430: host_init */
0x008017f1, 0x008017f1,
0xf11014b6, 0xf11014b6,
0xf1021815, 0xf1027015,
0xb604d007, 0xb604d007,
0x01d00604, 0x01d00604,
0xf104bd00, 0xf104bd00,
0xb6008017, 0xb6008017,
0x15f11014, 0x15f11014,
0x07f10298, 0x07f102f0,
0x04b604dc, 0x04b604dc,
0x0001d006, 0x0001d006,
0x17f004bd, 0x17f004bd,
...@@ -1156,14 +1223,14 @@ uint32_t nva3_pwr_code[] = { ...@@ -1156,14 +1223,14 @@ uint32_t nva3_pwr_code[] = {
0x00139802, 0x00139802,
0x950410b6, 0x950410b6,
0x30f01034, 0x30f01034,
0xc835980c, 0xde35980c,
0x12b855f9, 0x12b855f9,
0xec1ef406, 0xec1ef406,
0xe0fcd0fc, 0xe0fcd0fc,
0x02b921f5, 0x02b921f5,
/* 0x0532: memx_info */ /* 0x0532: memx_info */
0xc7f100f8, 0xc7f100f8,
0xb7f10354, 0xb7f103ac,
0x21f50800, 0x21f50800,
0x00f802b9, 0x00f802b9,
/* 0x0540: memx_recv */ /* 0x0540: memx_recv */
...@@ -1175,7 +1242,312 @@ uint32_t nva3_pwr_code[] = { ...@@ -1175,7 +1242,312 @@ uint32_t nva3_pwr_code[] = {
/* 0x0550: perf_recv */ /* 0x0550: perf_recv */
/* 0x0552: perf_init */ /* 0x0552: perf_init */
0x00f800f8, 0x00f800f8,
/* 0x0554: test_recv */ /* 0x0554: i2c_drive_scl */
0xf40036b0,
0x07f1110b,
0x04b607e0,
0x0001d006,
0x00f804bd,
/* 0x0568: i2c_drive_scl_lo */
0x07e407f1,
0xd00604b6,
0x04bd0001,
/* 0x0576: i2c_drive_sda */
0x36b000f8,
0x110bf400,
0x07e007f1,
0xd00604b6,
0x04bd0002,
/* 0x058a: i2c_drive_sda_lo */
0x07f100f8,
0x04b607e4,
0x0002d006,
0x00f804bd,
/* 0x0598: i2c_sense_scl */
0xf10132f4,
0xb607c437,
0x33cf0634,
0x0431fd00,
0xf4060bf4,
/* 0x05ae: i2c_sense_scl_done */
0x00f80131,
/* 0x05b0: i2c_sense_sda */
0xf10132f4,
0xb607c437,
0x33cf0634,
0x0432fd00,
0xf4060bf4,
/* 0x05c6: i2c_sense_sda_done */
0x00f80131,
/* 0x05c8: i2c_raise_scl */
0x47f140f9,
0x37f00898,
0x5421f501,
/* 0x05d5: i2c_raise_scl_wait */
0xe8e7f105,
0x7f21f403,
0x059821f5,
0xb60901f4,
0x1bf40142,
/* 0x05e9: i2c_raise_scl_done */
0xf840fcef,
/* 0x05ed: i2c_start */
0x9821f500,
0x0d11f405,
0x05b021f5,
0xf40611f4,
/* 0x05fe: i2c_start_rep */
0x37f0300e,
0x5421f500,
0x0137f005,
0x057621f5,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0xc821f550,
0x0464b605,
/* 0x062b: i2c_start_send */
0xf01f11f4,
0x21f50037,
0xe7f10576,
0x21f41388,
0x0037f07f,
0x055421f5,
0x1388e7f1,
/* 0x0647: i2c_start_out */
0xf87f21f4,
/* 0x0649: i2c_stop */
0x0037f000,
0x055421f5,
0xf50037f0,
0xf1057621,
0xf403e8e7,
0x37f07f21,
0x5421f501,
0x88e7f105,
0x7f21f413,
0xf50137f0,
0xf1057621,
0xf41388e7,
0x00f87f21,
/* 0x067c: i2c_bitw */
0x057621f5,
0x03e8e7f1,
0xbb7f21f4,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x05c821f5,
0xf40464b6,
0xe7f11811,
0x21f41388,
0x0037f07f,
0x055421f5,
0x1388e7f1,
/* 0x06bb: i2c_bitw_out */
0xf87f21f4,
/* 0x06bd: i2c_bitr */
0x0137f000,
0x057621f5,
0x03e8e7f1,
0xbb7f21f4,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x05c821f5,
0xf40464b6,
0x21f51b11,
0x37f005b0,
0x5421f500,
0x88e7f105,
0x7f21f413,
0xf4013cf0,
/* 0x0702: i2c_bitr_done */
0x00f80131,
/* 0x0704: i2c_get_byte */
0xf00057f0,
/* 0x070a: i2c_get_byte_next */
0x54b60847,
0x0076bb01,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b606bd,
0x2b11f404,
0xb60553fd,
0x1bf40142,
0x0137f0d8,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x7c21f550,
0x0464b606,
/* 0x0754: i2c_get_byte_done */
/* 0x0756: i2c_put_byte */
0x47f000f8,
/* 0x0759: i2c_put_byte_next */
0x0142b608,
0xbb3854ff,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x067c21f5,
0xf40464b6,
0x46b03411,
0xd81bf400,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0xbd21f550,
0x0464b606,
0xbb0f11f4,
0x36b00076,
0x061bf401,
/* 0x07af: i2c_put_byte_done */
0xf80132f4,
/* 0x07b1: i2c_addr */
0x0076bb00,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b605ed,
0x2911f404,
0x012ec3e7,
0xfd0134b6,
0x76bb0553,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0xf550fc04,
0xb6075621,
/* 0x07f6: i2c_addr_done */
0x00f80464,
/* 0x07f8: i2c_acquire_addr */
0xb6f8cec7,
0xe0b702e4,
0xee980bfc,
/* 0x0807: i2c_acquire */
0xf500f800,
0xf407f821,
0xd9f00421,
0x3f21f403,
/* 0x0816: i2c_release */
0x21f500f8,
0x21f407f8,
0x03daf004,
0xf83f21f4,
/* 0x0825: i2c_recv */
0x0132f400,
0xb6f8c1c7,
0x16b00214,
0x3a1ff528,
0xd413a001,
0x0032980b,
0x0bac13a0,
0xf4003198,
0xd0f90231,
0xd0f9e0f9,
0x000067f1,
0x100063f1,
0xbb016792,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x080721f5,
0xfc0464b6,
0x00d6b0d0,
0x00b31bf5,
0xbb0057f0,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x07b121f5,
0xf50464b6,
0xc700d011,
0x76bbe0c5,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0xf550fc04,
0xb6075621,
0x11f50464,
0x57f000ad,
0x0076bb01,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b607b1,
0x8a11f504,
0x0076bb00,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b60704,
0x6a11f404,
0xbbe05bcb,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x064921f5,
0xb90464b6,
0x74bd025b,
/* 0x092b: i2c_recv_not_rd08 */
0xb0430ef4,
0x1bf401d6,
0x0057f03d,
0x07b121f5,
0xc73311f4,
0x21f5e0c5,
0x11f40756,
0x0057f029,
0x07b121f5,
0xc71f11f4,
0x21f5e0b5,
0x11f40756,
0x4921f515,
0xc774bd06,
0x1bf408c5,
0x0232f409,
/* 0x096b: i2c_recv_not_wr08 */
/* 0x096b: i2c_recv_done */
0xc7030ef4,
0x21f5f8ce,
0xe0fc0816,
0x12f4d0fc,
0x027cb90a,
0x02b921f5,
/* 0x0980: i2c_recv_exit */
/* 0x0982: i2c_init */
0x00f800f8,
/* 0x0984: test_recv */
0x05d817f1, 0x05d817f1,
0xcf0614b6, 0xcf0614b6,
0x10b60011, 0x10b60011,
...@@ -1185,12 +1557,12 @@ uint32_t nva3_pwr_code[] = { ...@@ -1185,12 +1557,12 @@ uint32_t nva3_pwr_code[] = {
0x00e7f104, 0x00e7f104,
0x4fe3f1d9, 0x4fe3f1d9,
0xf521f513, 0xf521f513,
/* 0x057b: test_init */ /* 0x09ab: test_init */
0xf100f801, 0xf100f801,
0xf50800e7, 0xf50800e7,
0xf801f521, 0xf801f521,
/* 0x0585: idle_recv */ /* 0x09b5: idle_recv */
/* 0x0587: idle */ /* 0x09b7: idle */
0xf400f800, 0xf400f800,
0x17f10031, 0x17f10031,
0x14b605d4, 0x14b605d4,
...@@ -1198,32 +1570,20 @@ uint32_t nva3_pwr_code[] = { ...@@ -1198,32 +1570,20 @@ uint32_t nva3_pwr_code[] = {
0xf10110b6, 0xf10110b6,
0xb605d407, 0xb605d407,
0x01d00604, 0x01d00604,
/* 0x05a3: idle_loop */ /* 0x09d3: idle_loop */
0xf004bd00, 0xf004bd00,
0x32f45817, 0x32f45817,
/* 0x05a9: idle_proc */ /* 0x09d9: idle_proc */
/* 0x05a9: idle_proc_exec */ /* 0x09d9: idle_proc_exec */
0xb910f902, 0xb910f902,
0x21f5021e, 0x21f5021e,
0x10fc02c2, 0x10fc02c2,
0xf40911f4, 0xf40911f4,
0x0ef40231, 0x0ef40231,
/* 0x05bd: idle_proc_next */ /* 0x09ed: idle_proc_next */
0x5810b6ef, 0x5810b6ef,
0xf4061fb8, 0xf4061fb8,
0x02f4e61b, 0x02f4e61b,
0x0028f4dd, 0x0028f4dd,
0x00bb0ef4, 0x00bb0ef4,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
}; };
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_PROC #undef INCLUDE_PROC
...@@ -46,6 +47,7 @@ ...@@ -46,6 +47,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_DATA #undef INCLUDE_DATA
...@@ -57,6 +59,7 @@ ...@@ -57,6 +59,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_CODE #undef INCLUDE_CODE
......
...@@ -89,9 +89,31 @@ uint32_t nvc0_pwr_data[] = { ...@@ -89,9 +89,31 @@ uint32_t nvc0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x5f433249,
0x00000982,
0x00000825,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x54534554, 0x54534554,
0x0000057b, 0x000009ab,
0x00000554, 0x00000984,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -112,8 +134,8 @@ uint32_t nvc0_pwr_data[] = { ...@@ -112,8 +134,8 @@ uint32_t nvc0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x454c4449, 0x454c4449,
0x00000587, 0x000009b7,
0x00000585, 0x000009b5,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -133,12 +155,12 @@ uint32_t nvc0_pwr_data[] = { ...@@ -133,12 +155,12 @@ uint32_t nvc0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0210: proc_list_tail */ /* 0x0268: proc_list_tail */
/* 0x0210: time_prev */ /* 0x0268: time_prev */
0x00000000, 0x00000000,
/* 0x0214: time_next */ /* 0x026c: time_next */
0x00000000, 0x00000000,
/* 0x0218: fifo_queue */ /* 0x0270: fifo_queue */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -171,7 +193,7 @@ uint32_t nvc0_pwr_data[] = { ...@@ -171,7 +193,7 @@ uint32_t nvc0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0298: rfifo_queue */ /* 0x02f0: rfifo_queue */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -204,11 +226,11 @@ uint32_t nvc0_pwr_data[] = { ...@@ -204,11 +226,11 @@ uint32_t nvc0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0318: memx_func_head */ /* 0x0370: memx_func_head */
0x00010000, 0x00010000,
0x00000000, 0x00000000,
0x0000046f, 0x0000046f,
/* 0x0324: memx_func_next */ /* 0x037c: memx_func_next */
0x00000001, 0x00000001,
0x00000000, 0x00000000,
0x00000496, 0x00000496,
...@@ -221,8 +243,17 @@ uint32_t nvc0_pwr_data[] = { ...@@ -221,8 +243,17 @@ uint32_t nvc0_pwr_data[] = {
0x00010004, 0x00010004,
0x00000000, 0x00000000,
0x000004fc, 0x000004fc,
/* 0x0354: memx_func_tail */ /* 0x03ac: memx_func_tail */
/* 0x0354: memx_data_head */ /* 0x03ac: memx_data_head */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -726,6 +757,43 @@ uint32_t nvc0_pwr_data[] = { ...@@ -726,6 +757,43 @@ uint32_t nvc0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0bac: memx_data_tail */
/* 0x0bac: i2c_scl_map */
0x00001000,
0x00004000,
0x00010000,
0x00000100,
0x00040000,
0x00100000,
0x00400000,
0x01000000,
0x04000000,
0x10000000,
/* 0x0bd4: i2c_sda_map */
0x00002000,
0x00008000,
0x00020000,
0x00000200,
0x00080000,
0x00200000,
0x00800000,
0x02000000,
0x08000000,
0x20000000,
/* 0x0bfc: i2c_ctrl */
0x0000e138,
0x0000e150,
0x0000e168,
0x0000e180,
0x0000e254,
0x0000e274,
0x0000e764,
0x0000e780,
0x0000e79c,
0x0000e7b8,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -735,7 +803,6 @@ uint32_t nvc0_pwr_data[] = { ...@@ -735,7 +803,6 @@ uint32_t nvc0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0b54: memx_data_tail */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -845,21 +912,21 @@ uint32_t nvc0_pwr_code[] = { ...@@ -845,21 +912,21 @@ uint32_t nvc0_pwr_code[] = {
0x9800f8df, 0x9800f8df,
0x96b003e9, 0x96b003e9,
0x2a0bf400, 0x2a0bf400,
0xbb840a98, 0xbb9a0a98,
0x1cf4029a, 0x1cf4029a,
0x01d7f00f, 0x01d7f00f,
0x025421f5, 0x025421f5,
0x0ef494bd, 0x0ef494bd,
/* 0x00e9: intr_watchdog_next_time */ /* 0x00e9: intr_watchdog_next_time */
0x850a9815, 0x9b0a9815,
0xf400a6b0, 0xf400a6b0,
0x9ab8090b, 0x9ab8090b,
0x061cf406, 0x061cf406,
/* 0x00f8: intr_watchdog_next_time_set */ /* 0x00f8: intr_watchdog_next_time_set */
/* 0x00fb: intr_watchdog_next_proc */ /* 0x00fb: intr_watchdog_next_proc */
0x80850980, 0x809b0980,
0xe0b603e9, 0xe0b603e9,
0x10e6b158, 0x68e6b158,
0xc61bf402, 0xc61bf402,
/* 0x010a: intr */ /* 0x010a: intr */
0x00f900f8, 0x00f900f8,
...@@ -880,15 +947,15 @@ uint32_t nvc0_pwr_code[] = { ...@@ -880,15 +947,15 @@ uint32_t nvc0_pwr_code[] = {
0x0088cf06, 0x0088cf06,
0xf40289c4, 0xf40289c4,
0x0080230b, 0x0080230b,
0x58e7f085, 0x58e7f09b,
0x98cb21f4, 0x98cb21f4,
0x96b08509, 0x96b09b09,
0x110bf400, 0x110bf400,
0xb63407f0, 0xb63407f0,
0x09d00604, 0x09d00604,
0x8004bd00, 0x8004bd00,
/* 0x016e: intr_skip_watchdog */ /* 0x016e: intr_skip_watchdog */
0x89e48409, 0x89e49a09,
0x0bf40800, 0x0bf40800,
0x8897f148, 0x8897f148,
0x0694b606, 0x0694b606,
...@@ -948,7 +1015,7 @@ uint32_t nvc0_pwr_code[] = { ...@@ -948,7 +1015,7 @@ uint32_t nvc0_pwr_code[] = {
0x000ed006, 0x000ed006,
0x0e8004bd, 0x0e8004bd,
/* 0x0241: timer_enable */ /* 0x0241: timer_enable */
0x0187f084, 0x0187f09a,
0xb63807f0, 0xb63807f0,
0x08d00604, 0x08d00604,
/* 0x024f: timer_done */ /* 0x024f: timer_done */
...@@ -979,7 +1046,7 @@ uint32_t nvc0_pwr_code[] = { ...@@ -979,7 +1046,7 @@ uint32_t nvc0_pwr_code[] = {
0xb8008a98, 0xb8008a98,
0x0bf406ae, 0x0bf406ae,
0x5880b610, 0x5880b610,
0x021086b1, 0x026886b1,
0xf4f01bf4, 0xf4f01bf4,
/* 0x02b2: find_done */ /* 0x02b2: find_done */
0x8eb90132, 0x8eb90132,
...@@ -1049,7 +1116,7 @@ uint32_t nvc0_pwr_code[] = { ...@@ -1049,7 +1116,7 @@ uint32_t nvc0_pwr_code[] = {
0x320bf406, 0x320bf406,
0x94071ec4, 0x94071ec4,
0xe0b704ee, 0xe0b704ee,
0xeb980218, 0xeb980270,
0x02ec9803, 0x02ec9803,
0x9801ed98, 0x9801ed98,
0x21f500ee, 0x21f500ee,
...@@ -1075,7 +1142,7 @@ uint32_t nvc0_pwr_code[] = { ...@@ -1075,7 +1142,7 @@ uint32_t nvc0_pwr_code[] = {
0xe60bf406, 0xe60bf406,
0xb60723c4, 0xb60723c4,
0x30b70434, 0x30b70434,
0x3b800298, 0x3b8002f0,
0x023c8003, 0x023c8003,
0x80013d80, 0x80013d80,
0x20b6003e, 0x20b6003e,
...@@ -1090,13 +1157,13 @@ uint32_t nvc0_pwr_code[] = { ...@@ -1090,13 +1157,13 @@ uint32_t nvc0_pwr_code[] = {
/* 0x0430: host_init */ /* 0x0430: host_init */
0x008017f1, 0x008017f1,
0xf11014b6, 0xf11014b6,
0xf1021815, 0xf1027015,
0xb604d007, 0xb604d007,
0x01d00604, 0x01d00604,
0xf104bd00, 0xf104bd00,
0xb6008017, 0xb6008017,
0x15f11014, 0x15f11014,
0x07f10298, 0x07f102f0,
0x04b604dc, 0x04b604dc,
0x0001d006, 0x0001d006,
0x17f004bd, 0x17f004bd,
...@@ -1156,14 +1223,14 @@ uint32_t nvc0_pwr_code[] = { ...@@ -1156,14 +1223,14 @@ uint32_t nvc0_pwr_code[] = {
0x00139802, 0x00139802,
0x950410b6, 0x950410b6,
0x30f01034, 0x30f01034,
0xc835980c, 0xde35980c,
0x12b855f9, 0x12b855f9,
0xec1ef406, 0xec1ef406,
0xe0fcd0fc, 0xe0fcd0fc,
0x02b921f5, 0x02b921f5,
/* 0x0532: memx_info */ /* 0x0532: memx_info */
0xc7f100f8, 0xc7f100f8,
0xb7f10354, 0xb7f103ac,
0x21f50800, 0x21f50800,
0x00f802b9, 0x00f802b9,
/* 0x0540: memx_recv */ /* 0x0540: memx_recv */
...@@ -1175,7 +1242,312 @@ uint32_t nvc0_pwr_code[] = { ...@@ -1175,7 +1242,312 @@ uint32_t nvc0_pwr_code[] = {
/* 0x0550: perf_recv */ /* 0x0550: perf_recv */
/* 0x0552: perf_init */ /* 0x0552: perf_init */
0x00f800f8, 0x00f800f8,
/* 0x0554: test_recv */ /* 0x0554: i2c_drive_scl */
0xf40036b0,
0x07f1110b,
0x04b607e0,
0x0001d006,
0x00f804bd,
/* 0x0568: i2c_drive_scl_lo */
0x07e407f1,
0xd00604b6,
0x04bd0001,
/* 0x0576: i2c_drive_sda */
0x36b000f8,
0x110bf400,
0x07e007f1,
0xd00604b6,
0x04bd0002,
/* 0x058a: i2c_drive_sda_lo */
0x07f100f8,
0x04b607e4,
0x0002d006,
0x00f804bd,
/* 0x0598: i2c_sense_scl */
0xf10132f4,
0xb607c437,
0x33cf0634,
0x0431fd00,
0xf4060bf4,
/* 0x05ae: i2c_sense_scl_done */
0x00f80131,
/* 0x05b0: i2c_sense_sda */
0xf10132f4,
0xb607c437,
0x33cf0634,
0x0432fd00,
0xf4060bf4,
/* 0x05c6: i2c_sense_sda_done */
0x00f80131,
/* 0x05c8: i2c_raise_scl */
0x47f140f9,
0x37f00898,
0x5421f501,
/* 0x05d5: i2c_raise_scl_wait */
0xe8e7f105,
0x7f21f403,
0x059821f5,
0xb60901f4,
0x1bf40142,
/* 0x05e9: i2c_raise_scl_done */
0xf840fcef,
/* 0x05ed: i2c_start */
0x9821f500,
0x0d11f405,
0x05b021f5,
0xf40611f4,
/* 0x05fe: i2c_start_rep */
0x37f0300e,
0x5421f500,
0x0137f005,
0x057621f5,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0xc821f550,
0x0464b605,
/* 0x062b: i2c_start_send */
0xf01f11f4,
0x21f50037,
0xe7f10576,
0x21f41388,
0x0037f07f,
0x055421f5,
0x1388e7f1,
/* 0x0647: i2c_start_out */
0xf87f21f4,
/* 0x0649: i2c_stop */
0x0037f000,
0x055421f5,
0xf50037f0,
0xf1057621,
0xf403e8e7,
0x37f07f21,
0x5421f501,
0x88e7f105,
0x7f21f413,
0xf50137f0,
0xf1057621,
0xf41388e7,
0x00f87f21,
/* 0x067c: i2c_bitw */
0x057621f5,
0x03e8e7f1,
0xbb7f21f4,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x05c821f5,
0xf40464b6,
0xe7f11811,
0x21f41388,
0x0037f07f,
0x055421f5,
0x1388e7f1,
/* 0x06bb: i2c_bitw_out */
0xf87f21f4,
/* 0x06bd: i2c_bitr */
0x0137f000,
0x057621f5,
0x03e8e7f1,
0xbb7f21f4,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x05c821f5,
0xf40464b6,
0x21f51b11,
0x37f005b0,
0x5421f500,
0x88e7f105,
0x7f21f413,
0xf4013cf0,
/* 0x0702: i2c_bitr_done */
0x00f80131,
/* 0x0704: i2c_get_byte */
0xf00057f0,
/* 0x070a: i2c_get_byte_next */
0x54b60847,
0x0076bb01,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b606bd,
0x2b11f404,
0xb60553fd,
0x1bf40142,
0x0137f0d8,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x7c21f550,
0x0464b606,
/* 0x0754: i2c_get_byte_done */
/* 0x0756: i2c_put_byte */
0x47f000f8,
/* 0x0759: i2c_put_byte_next */
0x0142b608,
0xbb3854ff,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x067c21f5,
0xf40464b6,
0x46b03411,
0xd81bf400,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0xbd21f550,
0x0464b606,
0xbb0f11f4,
0x36b00076,
0x061bf401,
/* 0x07af: i2c_put_byte_done */
0xf80132f4,
/* 0x07b1: i2c_addr */
0x0076bb00,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b605ed,
0x2911f404,
0x012ec3e7,
0xfd0134b6,
0x76bb0553,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0xf550fc04,
0xb6075621,
/* 0x07f6: i2c_addr_done */
0x00f80464,
/* 0x07f8: i2c_acquire_addr */
0xb6f8cec7,
0xe0b702e4,
0xee980bfc,
/* 0x0807: i2c_acquire */
0xf500f800,
0xf407f821,
0xd9f00421,
0x3f21f403,
/* 0x0816: i2c_release */
0x21f500f8,
0x21f407f8,
0x03daf004,
0xf83f21f4,
/* 0x0825: i2c_recv */
0x0132f400,
0xb6f8c1c7,
0x16b00214,
0x3a1ff528,
0xd413a001,
0x0032980b,
0x0bac13a0,
0xf4003198,
0xd0f90231,
0xd0f9e0f9,
0x000067f1,
0x100063f1,
0xbb016792,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x080721f5,
0xfc0464b6,
0x00d6b0d0,
0x00b31bf5,
0xbb0057f0,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x07b121f5,
0xf50464b6,
0xc700d011,
0x76bbe0c5,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0xf550fc04,
0xb6075621,
0x11f50464,
0x57f000ad,
0x0076bb01,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b607b1,
0x8a11f504,
0x0076bb00,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b60704,
0x6a11f404,
0xbbe05bcb,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x064921f5,
0xb90464b6,
0x74bd025b,
/* 0x092b: i2c_recv_not_rd08 */
0xb0430ef4,
0x1bf401d6,
0x0057f03d,
0x07b121f5,
0xc73311f4,
0x21f5e0c5,
0x11f40756,
0x0057f029,
0x07b121f5,
0xc71f11f4,
0x21f5e0b5,
0x11f40756,
0x4921f515,
0xc774bd06,
0x1bf408c5,
0x0232f409,
/* 0x096b: i2c_recv_not_wr08 */
/* 0x096b: i2c_recv_done */
0xc7030ef4,
0x21f5f8ce,
0xe0fc0816,
0x12f4d0fc,
0x027cb90a,
0x02b921f5,
/* 0x0980: i2c_recv_exit */
/* 0x0982: i2c_init */
0x00f800f8,
/* 0x0984: test_recv */
0x05d817f1, 0x05d817f1,
0xcf0614b6, 0xcf0614b6,
0x10b60011, 0x10b60011,
...@@ -1185,12 +1557,12 @@ uint32_t nvc0_pwr_code[] = { ...@@ -1185,12 +1557,12 @@ uint32_t nvc0_pwr_code[] = {
0x00e7f104, 0x00e7f104,
0x4fe3f1d9, 0x4fe3f1d9,
0xf521f513, 0xf521f513,
/* 0x057b: test_init */ /* 0x09ab: test_init */
0xf100f801, 0xf100f801,
0xf50800e7, 0xf50800e7,
0xf801f521, 0xf801f521,
/* 0x0585: idle_recv */ /* 0x09b5: idle_recv */
/* 0x0587: idle */ /* 0x09b7: idle */
0xf400f800, 0xf400f800,
0x17f10031, 0x17f10031,
0x14b605d4, 0x14b605d4,
...@@ -1198,32 +1570,20 @@ uint32_t nvc0_pwr_code[] = { ...@@ -1198,32 +1570,20 @@ uint32_t nvc0_pwr_code[] = {
0xf10110b6, 0xf10110b6,
0xb605d407, 0xb605d407,
0x01d00604, 0x01d00604,
/* 0x05a3: idle_loop */ /* 0x09d3: idle_loop */
0xf004bd00, 0xf004bd00,
0x32f45817, 0x32f45817,
/* 0x05a9: idle_proc */ /* 0x09d9: idle_proc */
/* 0x05a9: idle_proc_exec */ /* 0x09d9: idle_proc_exec */
0xb910f902, 0xb910f902,
0x21f5021e, 0x21f5021e,
0x10fc02c2, 0x10fc02c2,
0xf40911f4, 0xf40911f4,
0x0ef40231, 0x0ef40231,
/* 0x05bd: idle_proc_next */ /* 0x09ed: idle_proc_next */
0x5810b6ef, 0x5810b6ef,
0xf4061fb8, 0xf4061fb8,
0x02f4e61b, 0x02f4e61b,
0x0028f4dd, 0x0028f4dd,
0x00bb0ef4, 0x00bb0ef4,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
}; };
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_PROC #undef INCLUDE_PROC
...@@ -46,6 +47,7 @@ ...@@ -46,6 +47,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_DATA #undef INCLUDE_DATA
...@@ -57,6 +59,7 @@ ...@@ -57,6 +59,7 @@
#include "host.fuc" #include "host.fuc"
#include "memx.fuc" #include "memx.fuc"
#include "perf.fuc" #include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc" #include "test.fuc"
#include "idle.fuc" #include "idle.fuc"
#undef INCLUDE_CODE #undef INCLUDE_CODE
......
...@@ -89,16 +89,9 @@ uint32_t nvd0_pwr_data[] = { ...@@ -89,16 +89,9 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x54534554, 0x5f433249,
0x000004eb, 0x000008e3,
0x000004ca, 0x00000786,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -111,16 +104,6 @@ uint32_t nvd0_pwr_data[] = { ...@@ -111,16 +104,6 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x454c4449,
0x000004f7,
0x000004f5,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -128,18 +111,9 @@ uint32_t nvd0_pwr_data[] = { ...@@ -128,18 +111,9 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x54534554,
0x00000000, 0x00000906,
0x00000000, 0x000008e5,
0x00000000,
0x00000000,
/* 0x0210: proc_list_tail */
/* 0x0210: time_prev */
0x00000000,
/* 0x0214: time_next */
0x00000000,
/* 0x0218: fifo_queue */
0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -159,6 +133,9 @@ uint32_t nvd0_pwr_data[] = { ...@@ -159,6 +133,9 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x454c4449,
0x00000912,
0x00000910,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -171,7 +148,6 @@ uint32_t nvd0_pwr_data[] = { ...@@ -171,7 +148,6 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0298: rfifo_queue */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -179,8 +155,12 @@ uint32_t nvd0_pwr_data[] = { ...@@ -179,8 +155,12 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0268: proc_list_tail */
/* 0x0268: time_prev */
0x00000000, 0x00000000,
/* 0x026c: time_next */
0x00000000, 0x00000000,
/* 0x0270: fifo_queue */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -204,31 +184,16 @@ uint32_t nvd0_pwr_data[] = { ...@@ -204,31 +184,16 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0318: memx_func_head */
0x00010000,
0x00000000, 0x00000000,
0x000003f4,
/* 0x0324: memx_func_next */
0x00000001,
0x00000000,
0x00000415,
0x00000002,
0x00000002,
0x00000430,
0x00040003,
0x00000000, 0x00000000,
0x00000458,
0x00010004,
0x00000000, 0x00000000,
0x00000472,
/* 0x0354: memx_func_tail */
/* 0x0354: memx_data_head */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x02f0: rfifo_queue */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -261,10 +226,25 @@ uint32_t nvd0_pwr_data[] = { ...@@ -261,10 +226,25 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0370: memx_func_head */
0x00010000,
0x00000000, 0x00000000,
0x000003f4,
/* 0x037c: memx_func_next */
0x00000001,
0x00000000, 0x00000000,
0x00000415,
0x00000002,
0x00000002,
0x00000430,
0x00040003,
0x00000000, 0x00000000,
0x00000458,
0x00010004,
0x00000000, 0x00000000,
0x00000472,
/* 0x03ac: memx_func_tail */
/* 0x03ac: memx_data_head */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -735,7 +715,6 @@ uint32_t nvd0_pwr_data[] = { ...@@ -735,7 +715,6 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0b54: memx_data_tail */
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
...@@ -778,6 +757,29 @@ uint32_t nvd0_pwr_data[] = { ...@@ -778,6 +757,29 @@ uint32_t nvd0_pwr_data[] = {
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
/* 0x0bac: memx_data_tail */
/* 0x0bac: i2c_scl_map */
0x00000400,
0x00000800,
0x00001000,
0x00002000,
0x00004000,
0x00008000,
0x00010000,
0x00020000,
0x00040000,
0x00080000,
/* 0x0bd4: i2c_sda_map */
0x00100000,
0x00200000,
0x00400000,
0x00800000,
0x01000000,
0x02000000,
0x04000000,
0x08000000,
0x10000000,
0x20000000,
0x00000000, 0x00000000,
}; };
...@@ -836,21 +838,21 @@ uint32_t nvd0_pwr_code[] = { ...@@ -836,21 +838,21 @@ uint32_t nvd0_pwr_code[] = {
0x9800f8e2, 0x9800f8e2,
0x96b003e9, 0x96b003e9,
0x2a0bf400, 0x2a0bf400,
0xbb840a98, 0xbb9a0a98,
0x1cf4029a, 0x1cf4029a,
0x01d7f00f, 0x01d7f00f,
0x020621f5, 0x020621f5,
0x0ef494bd, 0x0ef494bd,
/* 0x00c5: intr_watchdog_next_time */ /* 0x00c5: intr_watchdog_next_time */
0x850a9815, 0x9b0a9815,
0xf400a6b0, 0xf400a6b0,
0x9ab8090b, 0x9ab8090b,
0x061cf406, 0x061cf406,
/* 0x00d4: intr_watchdog_next_time_set */ /* 0x00d4: intr_watchdog_next_time_set */
/* 0x00d7: intr_watchdog_next_proc */ /* 0x00d7: intr_watchdog_next_proc */
0x80850980, 0x809b0980,
0xe0b603e9, 0xe0b603e9,
0x10e6b158, 0x68e6b158,
0xc61bf402, 0xc61bf402,
/* 0x00e6: intr */ /* 0x00e6: intr */
0x00f900f8, 0x00f900f8,
...@@ -868,15 +870,15 @@ uint32_t nvd0_pwr_code[] = { ...@@ -868,15 +870,15 @@ uint32_t nvd0_pwr_code[] = {
0x0887f004, 0x0887f004,
0xc40088cf, 0xc40088cf,
0x0bf40289, 0x0bf40289,
0x85008020, 0x9b008020,
0xf458e7f0, 0xf458e7f0,
0x0998a721, 0x0998a721,
0x0096b085, 0x0096b09b,
0xf00e0bf4, 0xf00e0bf4,
0x09d03407, 0x09d03407,
0x8004bd00, 0x8004bd00,
/* 0x013e: intr_skip_watchdog */ /* 0x013e: intr_skip_watchdog */
0x89e48409, 0x89e49a09,
0x0bf40800, 0x0bf40800,
0x8897f13c, 0x8897f13c,
0x0099cf06, 0x0099cf06,
...@@ -929,7 +931,7 @@ uint32_t nvd0_pwr_code[] = { ...@@ -929,7 +931,7 @@ uint32_t nvd0_pwr_code[] = {
0x0ed03407, 0x0ed03407,
0x8004bd00, 0x8004bd00,
/* 0x01f6: timer_enable */ /* 0x01f6: timer_enable */
0x87f0840e, 0x87f09a0e,
0x3807f001, 0x3807f001,
0xbd0008d0, 0xbd0008d0,
/* 0x0201: timer_done */ /* 0x0201: timer_done */
...@@ -960,7 +962,7 @@ uint32_t nvd0_pwr_code[] = { ...@@ -960,7 +962,7 @@ uint32_t nvd0_pwr_code[] = {
0x06aeb800, 0x06aeb800,
0xb6100bf4, 0xb6100bf4,
0x86b15880, 0x86b15880,
0x1bf40210, 0x1bf40268,
0x0132f4f0, 0x0132f4f0,
/* 0x0264: find_done */ /* 0x0264: find_done */
0xfc028eb9, 0xfc028eb9,
...@@ -1024,7 +1026,7 @@ uint32_t nvd0_pwr_code[] = { ...@@ -1024,7 +1026,7 @@ uint32_t nvd0_pwr_code[] = {
0x0bf40612, 0x0bf40612,
0x071ec42f, 0x071ec42f,
0xb704ee94, 0xb704ee94,
0x980218e0, 0x980270e0,
0xec9803eb, 0xec9803eb,
0x01ed9802, 0x01ed9802,
0xf500ee98, 0xf500ee98,
...@@ -1048,7 +1050,7 @@ uint32_t nvd0_pwr_code[] = { ...@@ -1048,7 +1050,7 @@ uint32_t nvd0_pwr_code[] = {
0xec0bf406, 0xec0bf406,
0xb60723c4, 0xb60723c4,
0x30b70434, 0x30b70434,
0x3b800298, 0x3b8002f0,
0x023c8003, 0x023c8003,
0x80013d80, 0x80013d80,
0x20b6003e, 0x20b6003e,
...@@ -1061,12 +1063,12 @@ uint32_t nvd0_pwr_code[] = { ...@@ -1061,12 +1063,12 @@ uint32_t nvd0_pwr_code[] = {
/* 0x03be: host_init */ /* 0x03be: host_init */
0x17f100f8, 0x17f100f8,
0x14b60080, 0x14b60080,
0x1815f110, 0x7015f110,
0xd007f102, 0xd007f102,
0x0001d004, 0x0001d004,
0x17f104bd, 0x17f104bd,
0x14b60080, 0x14b60080,
0x9815f110, 0xf015f110,
0xdc07f102, 0xdc07f102,
0x0001d004, 0x0001d004,
0x17f004bd, 0x17f004bd,
...@@ -1122,13 +1124,13 @@ uint32_t nvd0_pwr_code[] = { ...@@ -1122,13 +1124,13 @@ uint32_t nvd0_pwr_code[] = {
0x10b60013, 0x10b60013,
0x10349504, 0x10349504,
0x980c30f0, 0x980c30f0,
0x55f9c835, 0x55f9de35,
0xf40612b8, 0xf40612b8,
0xd0fcec1e, 0xd0fcec1e,
0x21f5e0fc, 0x21f5e0fc,
0x00f8026b, 0x00f8026b,
/* 0x04a8: memx_info */ /* 0x04a8: memx_info */
0x0354c7f1, 0x03acc7f1,
0x0800b7f1, 0x0800b7f1,
0x026b21f5, 0x026b21f5,
/* 0x04b6: memx_recv */ /* 0x04b6: memx_recv */
...@@ -1140,49 +1142,342 @@ uint32_t nvd0_pwr_code[] = { ...@@ -1140,49 +1142,342 @@ uint32_t nvd0_pwr_code[] = {
/* 0x04c6: perf_recv */ /* 0x04c6: perf_recv */
0x00f800f8, 0x00f800f8,
/* 0x04c8: perf_init */ /* 0x04c8: perf_init */
/* 0x04ca: test_recv */ /* 0x04ca: i2c_drive_scl */
0x17f100f8, 0x36b000f8,
0x11cf05d8, 0x0e0bf400,
0x0110b600, 0x07e007f1,
0x05d807f1,
0xbd0001d0, 0xbd0001d0,
0x00e7f104, /* 0x04db: i2c_drive_scl_lo */
0x4fe3f1d9, 0xf100f804,
0xb621f513, 0xd007e407,
/* 0x04eb: test_init */ 0x04bd0001,
0xf100f801, /* 0x04e6: i2c_drive_sda */
0xf50800e7, 0x36b000f8,
0xf801b621, 0x0e0bf400,
/* 0x04f5: idle_recv */ 0x07e007f1,
/* 0x04f7: idle */ 0xbd0002d0,
0xf400f800, /* 0x04f7: i2c_drive_sda_lo */
0x17f10031, 0xf100f804,
0x11cf05d4, 0xd007e407,
0x0110b600, 0x04bd0002,
0x05d407f1, /* 0x0502: i2c_sense_scl */
0xbd0001d0, 0x32f400f8,
/* 0x050d: idle_loop */ 0xc437f101,
0x5817f004, 0x0033cf07,
/* 0x0513: idle_proc */ 0xf40431fd,
/* 0x0513: idle_proc_exec */ 0x31f4060b,
0xf90232f4, /* 0x0515: i2c_sense_scl_done */
0x021eb910, /* 0x0517: i2c_sense_sda */
0x027421f5, 0xf400f801,
0x11f410fc, 0x37f10132,
0x0231f409, 0x33cf07c4,
/* 0x0527: idle_proc_next */ 0x0432fd00,
0xb6ef0ef4, 0xf4060bf4,
0x1fb85810, /* 0x052a: i2c_sense_sda_done */
0xe61bf406, 0x00f80131,
0xf4dd02f4, /* 0x052c: i2c_raise_scl */
0x0ef40028, 0x47f140f9,
0x000000c1, 0x37f00898,
0x00000000, 0xca21f501,
0x00000000, /* 0x0539: i2c_raise_scl_wait */
0x00000000, 0xe8e7f104,
0x00000000, 0x6721f403,
0x00000000, 0x050221f5,
0x00000000, 0xb60901f4,
0x1bf40142,
/* 0x054d: i2c_raise_scl_done */
0xf840fcef,
/* 0x0551: i2c_start */
0x0221f500,
0x0d11f405,
0x051721f5,
0xf40611f4,
/* 0x0562: i2c_start_rep */
0x37f0300e,
0xca21f500,
0x0137f004,
0x04e621f5,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x2c21f550,
0x0464b605,
/* 0x058f: i2c_start_send */
0xf01f11f4,
0x21f50037,
0xe7f104e6,
0x21f41388,
0x0037f067,
0x04ca21f5,
0x1388e7f1,
/* 0x05ab: i2c_start_out */
0xf86721f4,
/* 0x05ad: i2c_stop */
0x0037f000,
0x04ca21f5,
0xf50037f0,
0xf104e621,
0xf403e8e7,
0x37f06721,
0xca21f501,
0x88e7f104,
0x6721f413,
0xf50137f0,
0xf104e621,
0xf41388e7,
0x00f86721,
/* 0x05e0: i2c_bitw */
0x04e621f5,
0x03e8e7f1,
0xbb6721f4,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x052c21f5,
0xf40464b6,
0xe7f11811,
0x21f41388,
0x0037f067,
0x04ca21f5,
0x1388e7f1,
/* 0x061f: i2c_bitw_out */
0xf86721f4,
/* 0x0621: i2c_bitr */
0x0137f000,
0x04e621f5,
0x03e8e7f1,
0xbb6721f4,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x052c21f5,
0xf40464b6,
0x21f51b11,
0x37f00517,
0xca21f500,
0x88e7f104,
0x6721f413,
0xf4013cf0,
/* 0x0666: i2c_bitr_done */
0x00f80131,
/* 0x0668: i2c_get_byte */
0xf00057f0,
/* 0x066e: i2c_get_byte_next */
0x54b60847,
0x0076bb01,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b60621,
0x2b11f404,
0xb60553fd,
0x1bf40142,
0x0137f0d8,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0xe021f550,
0x0464b605,
/* 0x06b8: i2c_get_byte_done */
/* 0x06ba: i2c_put_byte */
0x47f000f8,
/* 0x06bd: i2c_put_byte_next */
0x0142b608,
0xbb3854ff,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x05e021f5,
0xf40464b6,
0x46b03411,
0xd81bf400,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x2121f550,
0x0464b606,
0xbb0f11f4,
0x36b00076,
0x061bf401,
/* 0x0713: i2c_put_byte_done */
0xf80132f4,
/* 0x0715: i2c_addr */
0x0076bb00,
0xf90465b6,
0x04659450,
0xbd0256bb,
0x0475fd50,
0x21f550fc,
0x64b60551,
0x2911f404,
0x012ec3e7,
0xfd0134b6,
0x76bb0553,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0xf550fc04,
0xb606ba21,
/* 0x075a: i2c_addr_done */
0x00f80464,
/* 0x075c: i2c_acquire_addr */
0xb6f8cec7,
0xe0b705e4,
0x00f8d014,
/* 0x0768: i2c_acquire */
0x075c21f5,
0xf00421f4,
0x21f403d9,
/* 0x0777: i2c_release */
0xf500f833,
0xf4075c21,
0xdaf00421,
0x3321f403,
/* 0x0786: i2c_recv */
0x32f400f8,
0xf8c1c701,
0xb00214b6,
0x1ff52816,
0x13a0013a,
0x32980bd4,
0xac13a000,
0x0031980b,
0xf90231f4,
0xf9e0f9d0,
0x0067f1d0,
0x0063f100,
0x01679210,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x6821f550,
0x0464b607,
0xd6b0d0fc,
0xb31bf500,
0x0057f000,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0x1521f550,
0x0464b607,
0x00d011f5,
0xbbe0c5c7,
0x65b60076,
0x9450f904,
0x56bb0465,
0xfd50bd02,
0x50fc0475,
0x06ba21f5,
0xf50464b6,
0xf000ad11,
0x76bb0157,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0xf550fc04,
0xb6071521,
0x11f50464,
0x76bb008a,
0x0465b600,
0x659450f9,
0x0256bb04,
0x75fd50bd,
0xf550fc04,
0xb6066821,
0x11f40464,
0xe05bcb6a,
0xb60076bb,
0x50f90465,
0xbb046594,
0x50bd0256,
0xfc0475fd,
0xad21f550,
0x0464b605,
0xbd025bb9,
0x430ef474,
/* 0x088c: i2c_recv_not_rd08 */
0xf401d6b0,
0x57f03d1b,
0x1521f500,
0x3311f407,
0xf5e0c5c7,
0xf406ba21,
0x57f02911,
0x1521f500,
0x1f11f407,
0xf5e0b5c7,
0xf406ba21,
0x21f51511,
0x74bd05ad,
0xf408c5c7,
0x32f4091b,
0x030ef402,
/* 0x08cc: i2c_recv_not_wr08 */
/* 0x08cc: i2c_recv_done */
0xf5f8cec7,
0xfc077721,
0xf4d0fce0,
0x7cb90a12,
0x6b21f502,
/* 0x08e1: i2c_recv_exit */
/* 0x08e3: i2c_init */
0xf800f802,
/* 0x08e5: test_recv */
0xd817f100,
0x0011cf05,
0xf10110b6,
0xd005d807,
0x04bd0001,
0xd900e7f1,
0x134fe3f1,
0x01b621f5,
/* 0x0906: test_init */
0xe7f100f8,
0x21f50800,
0x00f801b6,
/* 0x0910: idle_recv */
/* 0x0912: idle */
0x31f400f8,
0xd417f100,
0x0011cf05,
0xf10110b6,
0xd005d407,
0x04bd0001,
/* 0x0928: idle_loop */
0xf45817f0,
/* 0x092e: idle_proc */
/* 0x092e: idle_proc_exec */
0x10f90232,
0xf5021eb9,
0xfc027421,
0x0911f410,
0xf40231f4,
/* 0x0942: idle_proc_next */
0x10b6ef0e,
0x061fb858,
0xf4e61bf4,
0x28f4dd02,
0xc10ef400,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
0x00000000, 0x00000000,
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#define PROC_HOST 0x54534f48 #define PROC_HOST 0x54534f48
#define PROC_MEMX 0x584d454d #define PROC_MEMX 0x584d454d
#define PROC_PERF 0x46524550 #define PROC_PERF 0x46524550
#define PROC_I2C_ 0x5f433249
#define PROC_TEST 0x54534554 #define PROC_TEST 0x54534554
/* KERN: message identifiers */ /* KERN: message identifiers */
...@@ -24,4 +25,22 @@ ...@@ -24,4 +25,22 @@
#define MEMX_WAIT 3 #define MEMX_WAIT 3
#define MEMX_DELAY 4 #define MEMX_DELAY 4
/* I2C_: message identifiers */
#define I2C__MSG_RD08 0
#define I2C__MSG_WR08 1
#define I2C__MSG_DATA0_PORT 24:31
#define I2C__MSG_DATA0_ADDR 14:23
#define I2C__MSG_DATA0_RD08_PORT I2C__MSG_DATA0_PORT
#define I2C__MSG_DATA0_RD08_ADDR I2C__MSG_DATA0_ADDR
#define I2C__MSG_DATA0_RD08_REG 0:7
#define I2C__MSG_DATA1_RD08_VAL 0:7
#define I2C__MSG_DATA0_WR08_PORT I2C__MSG_DATA0_PORT
#define I2C__MSG_DATA0_WR08_ADDR I2C__MSG_DATA0_ADDR
#define I2C__MSG_DATA0_WR08_SYNC 8:8
#define I2C__MSG_DATA0_WR08_REG 0:7
#define I2C__MSG_DATA1_WR08_VAL 0:7
#endif #endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
反馈
建议
客服 返回
顶部