drm/nouveau/pwr: implement a simple i2c stack
authorBen Skeggs <bskeggs@redhat.com>
Sat, 9 Nov 2013 01:58:13 +0000 (11:58 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Thu, 23 Jan 2014 03:39:09 +0000 (13:39 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/i2c_.fuc [new file with mode: 0644]
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/macros.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/os.h

diff --git a/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/i2c_.fuc b/drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/i2c_.fuc
new file mode 100644 (file)
index 0000000..757dda7
--- /dev/null
@@ -0,0 +1,393 @@
+/*
+ * 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
index 2a74ea9..e2a63ac 100644 (file)
 #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
 */     .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 /*
index 947be53..17a8a38 100644 (file)
@@ -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
index 255234a..4bd43a9 100644 (file)
@@ -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,
 };
index 6fde0b8..6744fcc 100644 (file)
@@ -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
index 66a3109..5a73fa6 100644 (file)
@@ -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,
 };
index eaa64da..48f7943 100644 (file)
@@ -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
index 1f49618..4dba00d 100644 (file)
@@ -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,
 };
index 32d65ea..8a89dfe 100644 (file)
@@ -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
index c2be8db..5e24c6b 100644 (file)
@@ -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,
index 5fb0ccc..574acfa 100644 (file)
@@ -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 */
 #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