Commit 64c672ae authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/pwr: implement a simple i2c stack

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 2e9dfe23
/*
* 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 @@
#define NV_PPWR_MMIO_CTRL_OP_WR 0x00000002
#define NV_PPWR_OUTPUT 0x07c0
#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_FB_PAUSE 0x00000004
#define NV_PPWR_OUTPUT_CLR 0x07e4
......@@ -125,6 +169,15 @@
*/ .b32 0 /*
*/ .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
#define nv_iord(reg,ior) /*
*/ mov reg ior /*
......
......@@ -37,6 +37,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_PROC
......@@ -46,6 +47,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_DATA
......@@ -57,6 +59,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_CODE
......
......@@ -89,16 +89,9 @@ uint32_t nv108_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
0x54534554,
0x00000494,
0x00000475,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x5f433249,
0x00000877,
0x0000071e,
0x00000000,
0x00000000,
0x00000000,
......@@ -111,15 +104,6 @@ uint32_t nv108_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
0x454c4449,
0x0000049f,
0x0000049d,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
......@@ -127,18 +111,17 @@ uint32_t nv108_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
0x54534554,
0x00000898,
0x00000879,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
/* 0x0210: proc_list_tail */
/* 0x0210: time_prev */
0x00000000,
/* 0x0214: time_next */
0x00000000,
/* 0x0218: fifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -150,6 +133,9 @@ uint32_t nv108_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
0x454c4449,
0x000008a3,
0x000008a1,
0x00000000,
0x00000000,
0x00000000,
......@@ -169,9 +155,12 @@ uint32_t nv108_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0268: proc_list_tail */
/* 0x0268: time_prev */
0x00000000,
/* 0x026c: time_next */
0x00000000,
/* 0x0298: rfifo_queue */
/* 0x0270: fifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -204,31 +193,7 @@ uint32_t nv108_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0318: memx_func_head */
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,
/* 0x02f0: rfifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -261,10 +226,25 @@ uint32_t nv108_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0370: memx_func_head */
0x00010000,
0x00000000,
0x000003a9,
/* 0x037c: memx_func_next */
0x00000001,
0x00000000,
0x000003c7,
0x00000002,
0x00000002,
0x000003df,
0x00040003,
0x00000000,
0x00000407,
0x00010004,
0x00000000,
0x00000421,
/* 0x03ac: memx_func_tail */
/* 0x03ac: memx_data_head */
0x00000000,
0x00000000,
0x00000000,
......@@ -735,7 +715,6 @@ uint32_t nv108_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0b54: memx_data_tail */
0x00000000,
0x00000000,
0x00000000,
......@@ -778,6 +757,29 @@ uint32_t nv108_pwr_data[] = {
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,
};
......@@ -832,20 +834,20 @@ uint32_t nv108_pwr_code[] = {
0x03e99800,
0xf40096b0,
0x0a98280b,
0x029abb84,
0x029abb9a,
0x0d0e1cf4,
0x01de7e01,
0xf494bd00,
/* 0x00b2: intr_watchdog_next_time */
0x0a98140e,
0x00a6b085,
0x00a6b09b,
0xa6080bf4,
0x061cf49a,
/* 0x00c0: intr_watchdog_next_time_set */
/* 0x00c3: intr_watchdog_next_proc */
0xb58509b5,
0xb59b09b5,
0xe0b603e9,
0x10e6b158,
0x68e6b158,
0xc81bf402,
/* 0x00d2: intr */
0x00f900f8,
......@@ -862,15 +864,15 @@ uint32_t nv108_pwr_code[] = {
0x080804bd,
0xc40088cf,
0x0bf40289,
0x8500b51f,
0x9b00b51f,
0x957e580e,
0x09980000,
0x0096b085,
0x0096b09b,
0x000d0bf4,
0x0009f634,
0x09b504bd,
/* 0x0125: intr_skip_watchdog */
0x0089e484,
0x0089e49a,
0x360bf408,
0xcf068849,
0x9ac40099,
......@@ -918,7 +920,7 @@ uint32_t nv108_pwr_code[] = {
/* 0x01c6: timer_reset */
0x3400161e,
0xbd000ef6,
0x840eb504,
0x9a0eb504,
/* 0x01d0: timer_enable */
0x38000108,
0xbd0008f6,
......@@ -949,7 +951,7 @@ uint32_t nv108_pwr_code[] = {
0xa6008a98,
0x100bf4ae,
0xb15880b6,
0xf4021086,
0xf4026886,
0x32f4f11b,
/* 0x0239: find_done */
0xfc8eb201,
......@@ -1009,7 +1011,7 @@ uint32_t nv108_pwr_code[] = {
0x0bf412a6,
0x071ec42e,
0xb704ee94,
0x980218e0,
0x980270e0,
0xec9803eb,
0x01ed9802,
0x7e00ee98,
......@@ -1031,7 +1033,7 @@ uint32_t nv108_pwr_code[] = {
0xf412a608,
0x23c4ef0b,
0x0434b607,
0x029830b7,
0x02f030b7,
0xb5033bb5,
0x3db5023c,
0x003eb501,
......@@ -1044,11 +1046,11 @@ uint32_t nv108_pwr_code[] = {
/* 0x0379: host_init */
0x00804100,
0xf11014b6,
0x40021815,
0x40027015,
0x01f604d0,
0x4104bd00,
0x14b60080,
0x9815f110,
0xf015f110,
0x04dc4002,
0xbd0001f6,
0x40010104,
......@@ -1101,13 +1103,13 @@ uint32_t nv108_pwr_code[] = {
0x001398b2,
0x950410b6,
0x30f01034,
0xc835980c,
0xde35980c,
0x12a655f9,
0xfced1ef4,
0x7ee0fcd0,
0xf800023f,
/* 0x0455: memx_info */
0x03544c00,
0x03ac4c00,
0x7e08004b,
0xf800023f,
/* 0x0461: memx_recv */
......@@ -1119,7 +1121,301 @@ uint32_t nv108_pwr_code[] = {
/* 0x0471: perf_recv */
/* 0x0473: perf_init */
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,
0xb60011cf,
0x58400110,
......@@ -1128,26 +1424,26 @@ uint32_t nv108_pwr_code[] = {
0xe3f1d900,
0x967e134f,
0x00f80001,
/* 0x0494: test_init */
/* 0x0898: test_init */
0x7e08004e,
0xf8000196,
/* 0x049d: idle_recv */
/* 0x049f: idle */
/* 0x08a1: idle_recv */
/* 0x08a3: idle */
0xf400f800,
0x54410031,
0x0011cf04,
0x400110b6,
0x01f60454,
/* 0x04b3: idle_loop */
/* 0x08b7: idle_loop */
0x0104bd00,
0x0232f458,
/* 0x04b8: idle_proc */
/* 0x04b8: idle_proc_exec */
/* 0x08bc: idle_proc */
/* 0x08bc: idle_proc_exec */
0x1eb210f9,
0x0002487e,
0x11f410fc,
0x0231f409,
/* 0x04cb: idle_proc_next */
/* 0x08cf: idle_proc_next */
0xb6f00ef4,
0x1fa65810,
0xf4e81bf4,
......@@ -1161,5 +1457,4 @@ uint32_t nv108_pwr_code[] = {
0x00000000,
0x00000000,
0x00000000,
0x00000000,
};
......@@ -37,6 +37,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_PROC
......@@ -46,6 +47,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_DATA
......@@ -57,6 +59,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_CODE
......
......@@ -89,9 +89,31 @@ uint32_t nva3_pwr_data[] = {
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,
0x0000057b,
0x00000554,
0x000009ab,
0x00000984,
0x00000000,
0x00000000,
0x00000000,
......@@ -112,8 +134,8 @@ uint32_t nva3_pwr_data[] = {
0x00000000,
0x00000000,
0x454c4449,
0x00000587,
0x00000585,
0x000009b7,
0x000009b5,
0x00000000,
0x00000000,
0x00000000,
......@@ -133,12 +155,12 @@ uint32_t nva3_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0210: proc_list_tail */
/* 0x0210: time_prev */
/* 0x0268: proc_list_tail */
/* 0x0268: time_prev */
0x00000000,
/* 0x0214: time_next */
/* 0x026c: time_next */
0x00000000,
/* 0x0218: fifo_queue */
/* 0x0270: fifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -171,7 +193,7 @@ uint32_t nva3_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0298: rfifo_queue */
/* 0x02f0: rfifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -204,11 +226,11 @@ uint32_t nva3_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0318: memx_func_head */
/* 0x0370: memx_func_head */
0x00010000,
0x00000000,
0x0000046f,
/* 0x0324: memx_func_next */
/* 0x037c: memx_func_next */
0x00000001,
0x00000000,
0x00000496,
......@@ -221,8 +243,17 @@ uint32_t nva3_pwr_data[] = {
0x00010004,
0x00000000,
0x000004fc,
/* 0x0354: memx_func_tail */
/* 0x0354: memx_data_head */
/* 0x03ac: memx_func_tail */
/* 0x03ac: memx_data_head */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
......@@ -726,6 +757,43 @@ uint32_t nva3_pwr_data[] = {
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,
......@@ -735,7 +803,6 @@ uint32_t nva3_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0b54: memx_data_tail */
0x00000000,
0x00000000,
0x00000000,
......@@ -845,21 +912,21 @@ uint32_t nva3_pwr_code[] = {
0x9800f8df,
0x96b003e9,
0x2a0bf400,
0xbb840a98,
0xbb9a0a98,
0x1cf4029a,
0x01d7f00f,
0x025421f5,
0x0ef494bd,
/* 0x00e9: intr_watchdog_next_time */
0x850a9815,
0x9b0a9815,
0xf400a6b0,
0x9ab8090b,
0x061cf406,
/* 0x00f8: intr_watchdog_next_time_set */
/* 0x00fb: intr_watchdog_next_proc */
0x80850980,
0x809b0980,
0xe0b603e9,
0x10e6b158,
0x68e6b158,
0xc61bf402,
/* 0x010a: intr */
0x00f900f8,
......@@ -880,15 +947,15 @@ uint32_t nva3_pwr_code[] = {
0x0088cf06,
0xf40289c4,
0x0080230b,
0x58e7f085,
0x58e7f09b,
0x98cb21f4,
0x96b08509,
0x96b09b09,
0x110bf400,
0xb63407f0,
0x09d00604,
0x8004bd00,
/* 0x016e: intr_skip_watchdog */
0x89e48409,
0x89e49a09,
0x0bf40800,
0x8897f148,
0x0694b606,
......@@ -948,7 +1015,7 @@ uint32_t nva3_pwr_code[] = {
0x000ed006,
0x0e8004bd,
/* 0x0241: timer_enable */
0x0187f084,
0x0187f09a,
0xb63807f0,
0x08d00604,
/* 0x024f: timer_done */
......@@ -979,7 +1046,7 @@ uint32_t nva3_pwr_code[] = {
0xb8008a98,
0x0bf406ae,
0x5880b610,
0x021086b1,
0x026886b1,
0xf4f01bf4,
/* 0x02b2: find_done */
0x8eb90132,
......@@ -1049,7 +1116,7 @@ uint32_t nva3_pwr_code[] = {
0x320bf406,
0x94071ec4,
0xe0b704ee,
0xeb980218,
0xeb980270,
0x02ec9803,
0x9801ed98,
0x21f500ee,
......@@ -1075,7 +1142,7 @@ uint32_t nva3_pwr_code[] = {
0xe60bf406,
0xb60723c4,
0x30b70434,
0x3b800298,
0x3b8002f0,
0x023c8003,
0x80013d80,
0x20b6003e,
......@@ -1090,13 +1157,13 @@ uint32_t nva3_pwr_code[] = {
/* 0x0430: host_init */
0x008017f1,
0xf11014b6,
0xf1021815,
0xf1027015,
0xb604d007,
0x01d00604,
0xf104bd00,
0xb6008017,
0x15f11014,
0x07f10298,
0x07f102f0,
0x04b604dc,
0x0001d006,
0x17f004bd,
......@@ -1156,14 +1223,14 @@ uint32_t nva3_pwr_code[] = {
0x00139802,
0x950410b6,
0x30f01034,
0xc835980c,
0xde35980c,
0x12b855f9,
0xec1ef406,
0xe0fcd0fc,
0x02b921f5,
/* 0x0532: memx_info */
0xc7f100f8,
0xb7f10354,
0xb7f103ac,
0x21f50800,
0x00f802b9,
/* 0x0540: memx_recv */
......@@ -1175,7 +1242,312 @@ uint32_t nva3_pwr_code[] = {
/* 0x0550: perf_recv */
/* 0x0552: perf_init */
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,
0xcf0614b6,
0x10b60011,
......@@ -1185,12 +1557,12 @@ uint32_t nva3_pwr_code[] = {
0x00e7f104,
0x4fe3f1d9,
0xf521f513,
/* 0x057b: test_init */
/* 0x09ab: test_init */
0xf100f801,
0xf50800e7,
0xf801f521,
/* 0x0585: idle_recv */
/* 0x0587: idle */
/* 0x09b5: idle_recv */
/* 0x09b7: idle */
0xf400f800,
0x17f10031,
0x14b605d4,
......@@ -1198,32 +1570,20 @@ uint32_t nva3_pwr_code[] = {
0xf10110b6,
0xb605d407,
0x01d00604,
/* 0x05a3: idle_loop */
/* 0x09d3: idle_loop */
0xf004bd00,
0x32f45817,
/* 0x05a9: idle_proc */
/* 0x05a9: idle_proc_exec */
/* 0x09d9: idle_proc */
/* 0x09d9: idle_proc_exec */
0xb910f902,
0x21f5021e,
0x10fc02c2,
0xf40911f4,
0x0ef40231,
/* 0x05bd: idle_proc_next */
/* 0x09ed: idle_proc_next */
0x5810b6ef,
0xf4061fb8,
0x02f4e61b,
0x0028f4dd,
0x00bb0ef4,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
};
......@@ -37,6 +37,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_PROC
......@@ -46,6 +47,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_DATA
......@@ -57,6 +59,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_CODE
......
......@@ -89,9 +89,31 @@ uint32_t nvc0_pwr_data[] = {
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,
0x0000057b,
0x00000554,
0x000009ab,
0x00000984,
0x00000000,
0x00000000,
0x00000000,
......@@ -112,8 +134,8 @@ uint32_t nvc0_pwr_data[] = {
0x00000000,
0x00000000,
0x454c4449,
0x00000587,
0x00000585,
0x000009b7,
0x000009b5,
0x00000000,
0x00000000,
0x00000000,
......@@ -133,12 +155,12 @@ uint32_t nvc0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0210: proc_list_tail */
/* 0x0210: time_prev */
/* 0x0268: proc_list_tail */
/* 0x0268: time_prev */
0x00000000,
/* 0x0214: time_next */
/* 0x026c: time_next */
0x00000000,
/* 0x0218: fifo_queue */
/* 0x0270: fifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -171,7 +193,7 @@ uint32_t nvc0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0298: rfifo_queue */
/* 0x02f0: rfifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -204,11 +226,11 @@ uint32_t nvc0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0318: memx_func_head */
/* 0x0370: memx_func_head */
0x00010000,
0x00000000,
0x0000046f,
/* 0x0324: memx_func_next */
/* 0x037c: memx_func_next */
0x00000001,
0x00000000,
0x00000496,
......@@ -221,8 +243,17 @@ uint32_t nvc0_pwr_data[] = {
0x00010004,
0x00000000,
0x000004fc,
/* 0x0354: memx_func_tail */
/* 0x0354: memx_data_head */
/* 0x03ac: memx_func_tail */
/* 0x03ac: memx_data_head */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
......@@ -726,6 +757,43 @@ uint32_t nvc0_pwr_data[] = {
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,
......@@ -735,7 +803,6 @@ uint32_t nvc0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0b54: memx_data_tail */
0x00000000,
0x00000000,
0x00000000,
......@@ -845,21 +912,21 @@ uint32_t nvc0_pwr_code[] = {
0x9800f8df,
0x96b003e9,
0x2a0bf400,
0xbb840a98,
0xbb9a0a98,
0x1cf4029a,
0x01d7f00f,
0x025421f5,
0x0ef494bd,
/* 0x00e9: intr_watchdog_next_time */
0x850a9815,
0x9b0a9815,
0xf400a6b0,
0x9ab8090b,
0x061cf406,
/* 0x00f8: intr_watchdog_next_time_set */
/* 0x00fb: intr_watchdog_next_proc */
0x80850980,
0x809b0980,
0xe0b603e9,
0x10e6b158,
0x68e6b158,
0xc61bf402,
/* 0x010a: intr */
0x00f900f8,
......@@ -880,15 +947,15 @@ uint32_t nvc0_pwr_code[] = {
0x0088cf06,
0xf40289c4,
0x0080230b,
0x58e7f085,
0x58e7f09b,
0x98cb21f4,
0x96b08509,
0x96b09b09,
0x110bf400,
0xb63407f0,
0x09d00604,
0x8004bd00,
/* 0x016e: intr_skip_watchdog */
0x89e48409,
0x89e49a09,
0x0bf40800,
0x8897f148,
0x0694b606,
......@@ -948,7 +1015,7 @@ uint32_t nvc0_pwr_code[] = {
0x000ed006,
0x0e8004bd,
/* 0x0241: timer_enable */
0x0187f084,
0x0187f09a,
0xb63807f0,
0x08d00604,
/* 0x024f: timer_done */
......@@ -979,7 +1046,7 @@ uint32_t nvc0_pwr_code[] = {
0xb8008a98,
0x0bf406ae,
0x5880b610,
0x021086b1,
0x026886b1,
0xf4f01bf4,
/* 0x02b2: find_done */
0x8eb90132,
......@@ -1049,7 +1116,7 @@ uint32_t nvc0_pwr_code[] = {
0x320bf406,
0x94071ec4,
0xe0b704ee,
0xeb980218,
0xeb980270,
0x02ec9803,
0x9801ed98,
0x21f500ee,
......@@ -1075,7 +1142,7 @@ uint32_t nvc0_pwr_code[] = {
0xe60bf406,
0xb60723c4,
0x30b70434,
0x3b800298,
0x3b8002f0,
0x023c8003,
0x80013d80,
0x20b6003e,
......@@ -1090,13 +1157,13 @@ uint32_t nvc0_pwr_code[] = {
/* 0x0430: host_init */
0x008017f1,
0xf11014b6,
0xf1021815,
0xf1027015,
0xb604d007,
0x01d00604,
0xf104bd00,
0xb6008017,
0x15f11014,
0x07f10298,
0x07f102f0,
0x04b604dc,
0x0001d006,
0x17f004bd,
......@@ -1156,14 +1223,14 @@ uint32_t nvc0_pwr_code[] = {
0x00139802,
0x950410b6,
0x30f01034,
0xc835980c,
0xde35980c,
0x12b855f9,
0xec1ef406,
0xe0fcd0fc,
0x02b921f5,
/* 0x0532: memx_info */
0xc7f100f8,
0xb7f10354,
0xb7f103ac,
0x21f50800,
0x00f802b9,
/* 0x0540: memx_recv */
......@@ -1175,7 +1242,312 @@ uint32_t nvc0_pwr_code[] = {
/* 0x0550: perf_recv */
/* 0x0552: perf_init */
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,
0xcf0614b6,
0x10b60011,
......@@ -1185,12 +1557,12 @@ uint32_t nvc0_pwr_code[] = {
0x00e7f104,
0x4fe3f1d9,
0xf521f513,
/* 0x057b: test_init */
/* 0x09ab: test_init */
0xf100f801,
0xf50800e7,
0xf801f521,
/* 0x0585: idle_recv */
/* 0x0587: idle */
/* 0x09b5: idle_recv */
/* 0x09b7: idle */
0xf400f800,
0x17f10031,
0x14b605d4,
......@@ -1198,32 +1570,20 @@ uint32_t nvc0_pwr_code[] = {
0xf10110b6,
0xb605d407,
0x01d00604,
/* 0x05a3: idle_loop */
/* 0x09d3: idle_loop */
0xf004bd00,
0x32f45817,
/* 0x05a9: idle_proc */
/* 0x05a9: idle_proc_exec */
/* 0x09d9: idle_proc */
/* 0x09d9: idle_proc_exec */
0xb910f902,
0x21f5021e,
0x10fc02c2,
0xf40911f4,
0x0ef40231,
/* 0x05bd: idle_proc_next */
/* 0x09ed: idle_proc_next */
0x5810b6ef,
0xf4061fb8,
0x02f4e61b,
0x0028f4dd,
0x00bb0ef4,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
};
......@@ -37,6 +37,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_PROC
......@@ -46,6 +47,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_DATA
......@@ -57,6 +59,7 @@
#include "host.fuc"
#include "memx.fuc"
#include "perf.fuc"
#include "i2c_.fuc"
#include "test.fuc"
#include "idle.fuc"
#undef INCLUDE_CODE
......
......@@ -89,16 +89,9 @@ uint32_t nvd0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
0x54534554,
0x000004eb,
0x000004ca,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x5f433249,
0x000008e3,
0x00000786,
0x00000000,
0x00000000,
0x00000000,
......@@ -111,16 +104,6 @@ uint32_t nvd0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
0x454c4449,
0x000004f7,
0x000004f5,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
......@@ -128,18 +111,9 @@ uint32_t nvd0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
/* 0x0210: proc_list_tail */
/* 0x0210: time_prev */
0x00000000,
/* 0x0214: time_next */
0x00000000,
/* 0x0218: fifo_queue */
0x00000000,
0x54534554,
0x00000906,
0x000008e5,
0x00000000,
0x00000000,
0x00000000,
......@@ -159,6 +133,9 @@ uint32_t nvd0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
0x454c4449,
0x00000912,
0x00000910,
0x00000000,
0x00000000,
0x00000000,
......@@ -171,7 +148,6 @@ uint32_t nvd0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0298: rfifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -179,8 +155,12 @@ uint32_t nvd0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0268: proc_list_tail */
/* 0x0268: time_prev */
0x00000000,
/* 0x026c: time_next */
0x00000000,
/* 0x0270: fifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -204,31 +184,16 @@ uint32_t nvd0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0318: memx_func_head */
0x00010000,
0x00000000,
0x000003f4,
/* 0x0324: memx_func_next */
0x00000001,
0x00000000,
0x00000415,
0x00000002,
0x00000002,
0x00000430,
0x00040003,
0x00000000,
0x00000458,
0x00010004,
0x00000000,
0x00000472,
/* 0x0354: memx_func_tail */
/* 0x0354: memx_data_head */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
/* 0x02f0: rfifo_queue */
0x00000000,
0x00000000,
0x00000000,
......@@ -261,10 +226,25 @@ uint32_t nvd0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0370: memx_func_head */
0x00010000,
0x00000000,
0x000003f4,
/* 0x037c: memx_func_next */
0x00000001,
0x00000000,
0x00000415,
0x00000002,
0x00000002,
0x00000430,
0x00040003,
0x00000000,
0x00000458,
0x00010004,
0x00000000,
0x00000472,
/* 0x03ac: memx_func_tail */
/* 0x03ac: memx_data_head */
0x00000000,
0x00000000,
0x00000000,
......@@ -735,7 +715,6 @@ uint32_t nvd0_pwr_data[] = {
0x00000000,
0x00000000,
0x00000000,
/* 0x0b54: memx_data_tail */
0x00000000,
0x00000000,
0x00000000,
......@@ -778,6 +757,29 @@ uint32_t nvd0_pwr_data[] = {
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,
};
......@@ -836,21 +838,21 @@ uint32_t nvd0_pwr_code[] = {
0x9800f8e2,
0x96b003e9,
0x2a0bf400,
0xbb840a98,
0xbb9a0a98,
0x1cf4029a,
0x01d7f00f,
0x020621f5,
0x0ef494bd,
/* 0x00c5: intr_watchdog_next_time */
0x850a9815,
0x9b0a9815,
0xf400a6b0,
0x9ab8090b,
0x061cf406,
/* 0x00d4: intr_watchdog_next_time_set */
/* 0x00d7: intr_watchdog_next_proc */
0x80850980,
0x809b0980,
0xe0b603e9,
0x10e6b158,
0x68e6b158,
0xc61bf402,
/* 0x00e6: intr */
0x00f900f8,
......@@ -868,15 +870,15 @@ uint32_t nvd0_pwr_code[] = {
0x0887f004,
0xc40088cf,
0x0bf40289,
0x85008020,
0x9b008020,
0xf458e7f0,
0x0998a721,
0x0096b085,
0x0096b09b,
0xf00e0bf4,
0x09d03407,
0x8004bd00,
/* 0x013e: intr_skip_watchdog */
0x89e48409,
0x89e49a09,
0x0bf40800,
0x8897f13c,
0x0099cf06,
......@@ -929,7 +931,7 @@ uint32_t nvd0_pwr_code[] = {
0x0ed03407,
0x8004bd00,
/* 0x01f6: timer_enable */
0x87f0840e,
0x87f09a0e,
0x3807f001,
0xbd0008d0,
/* 0x0201: timer_done */
......@@ -960,7 +962,7 @@ uint32_t nvd0_pwr_code[] = {
0x06aeb800,
0xb6100bf4,
0x86b15880,
0x1bf40210,
0x1bf40268,
0x0132f4f0,
/* 0x0264: find_done */
0xfc028eb9,
......@@ -1024,7 +1026,7 @@ uint32_t nvd0_pwr_code[] = {
0x0bf40612,
0x071ec42f,
0xb704ee94,
0x980218e0,
0x980270e0,
0xec9803eb,
0x01ed9802,
0xf500ee98,
......@@ -1048,7 +1050,7 @@ uint32_t nvd0_pwr_code[] = {
0xec0bf406,
0xb60723c4,
0x30b70434,
0x3b800298,
0x3b8002f0,
0x023c8003,
0x80013d80,
0x20b6003e,
......@@ -1061,12 +1063,12 @@ uint32_t nvd0_pwr_code[] = {
/* 0x03be: host_init */
0x17f100f8,
0x14b60080,
0x1815f110,
0x7015f110,
0xd007f102,
0x0001d004,
0x17f104bd,
0x14b60080,
0x9815f110,
0xf015f110,
0xdc07f102,
0x0001d004,
0x17f004bd,
......@@ -1122,13 +1124,13 @@ uint32_t nvd0_pwr_code[] = {
0x10b60013,
0x10349504,
0x980c30f0,
0x55f9c835,
0x55f9de35,
0xf40612b8,
0xd0fcec1e,
0x21f5e0fc,
0x00f8026b,
/* 0x04a8: memx_info */
0x0354c7f1,
0x03acc7f1,
0x0800b7f1,
0x026b21f5,
/* 0x04b6: memx_recv */
......@@ -1140,49 +1142,342 @@ uint32_t nvd0_pwr_code[] = {
/* 0x04c6: perf_recv */
0x00f800f8,
/* 0x04c8: perf_init */
/* 0x04ca: test_recv */
0x17f100f8,
0x11cf05d8,
0x0110b600,
0x05d807f1,
/* 0x04ca: i2c_drive_scl */
0x36b000f8,
0x0e0bf400,
0x07e007f1,
0xbd0001d0,
0x00e7f104,
0x4fe3f1d9,
0xb621f513,
/* 0x04eb: test_init */
0xf100f801,
0xf50800e7,
0xf801b621,
/* 0x04f5: idle_recv */
/* 0x04f7: idle */
0xf400f800,
0x17f10031,
0x11cf05d4,
0x0110b600,
0x05d407f1,
0xbd0001d0,
/* 0x050d: idle_loop */
0x5817f004,
/* 0x0513: idle_proc */
/* 0x0513: idle_proc_exec */
0xf90232f4,
0x021eb910,
0x027421f5,
0x11f410fc,
0x0231f409,
/* 0x0527: idle_proc_next */
0xb6ef0ef4,
0x1fb85810,
0xe61bf406,
0xf4dd02f4,
0x0ef40028,
0x000000c1,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
/* 0x04db: i2c_drive_scl_lo */
0xf100f804,
0xd007e407,
0x04bd0001,
/* 0x04e6: i2c_drive_sda */
0x36b000f8,
0x0e0bf400,
0x07e007f1,
0xbd0002d0,
/* 0x04f7: i2c_drive_sda_lo */
0xf100f804,
0xd007e407,
0x04bd0002,
/* 0x0502: i2c_sense_scl */
0x32f400f8,
0xc437f101,
0x0033cf07,
0xf40431fd,
0x31f4060b,
/* 0x0515: i2c_sense_scl_done */
/* 0x0517: i2c_sense_sda */
0xf400f801,
0x37f10132,
0x33cf07c4,
0x0432fd00,
0xf4060bf4,
/* 0x052a: i2c_sense_sda_done */
0x00f80131,
/* 0x052c: i2c_raise_scl */
0x47f140f9,
0x37f00898,
0xca21f501,
/* 0x0539: i2c_raise_scl_wait */
0xe8e7f104,
0x6721f403,
0x050221f5,
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,
......
......@@ -7,6 +7,7 @@
#define PROC_HOST 0x54534f48
#define PROC_MEMX 0x584d454d
#define PROC_PERF 0x46524550
#define PROC_I2C_ 0x5f433249
#define PROC_TEST 0x54534554
/* KERN: message identifiers */
......@@ -24,4 +25,22 @@
#define MEMX_WAIT 3
#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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment