Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
64c672ae
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
64c672ae
编写于
11月 09, 2013
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/pwr: implement a simple i2c stack
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
2e9dfe23
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
2066 addition
and
279 deletion
+2066
-279
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/i2c_.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/i2c_.fuc
+393
-0
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/macros.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/macros.fuc
+53
-0
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc
+3
-0
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
+369
-74
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc
+3
-0
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
+409
-49
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc
+3
-0
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
+409
-49
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc
+3
-0
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
+402
-107
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/os.h
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/os.h
+19
-0
未找到文件。
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/i2c_.fuc
0 → 100644
浏览文件 @
64c672ae
/*
* 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
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/macros.fuc
浏览文件 @
64c672ae
...
...
@@ -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 /*
...
...
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc
浏览文件 @
64c672ae
...
...
@@ -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
...
...
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nv108.fuc.h
浏览文件 @
64c672ae
...
...
@@ -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
,
/* 0x02
98: r
fifo_queue */
/* 0x02
70:
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
,
0x029abb
84
,
0x029abb
9a
,
0x0d0e1cf4
,
0x01de7e01
,
0xf494bd00
,
/* 0x00b2: intr_watchdog_next_time */
0x0a98140e
,
0x00a6b0
85
,
0x00a6b0
9b
,
0xa6080bf4
,
0x061cf49a
,
/* 0x00c0: intr_watchdog_next_time_set */
/* 0x00c3: intr_watchdog_next_proc */
0xb5
85
09b5
,
0xb5
9b
09b5
,
0xe0b603e9
,
0x
10
e6b158
,
0x
68
e6b158
,
0xc81bf402
,
/* 0x00d2: intr */
0x00f900f8
,
...
...
@@ -862,15 +864,15 @@ uint32_t nv108_pwr_code[] = {
0x080804bd
,
0xc40088cf
,
0x0bf40289
,
0x
85
00b51f
,
0x
9b
00b51f
,
0x957e580e
,
0x09980000
,
0x0096b0
85
,
0x0096b0
9b
,
0x000d0bf4
,
0x0009f634
,
0x09b504bd
,
/* 0x0125: intr_skip_watchdog */
0x0089e4
84
,
0x0089e4
9a
,
0x360bf408
,
0xcf068849
,
0x9ac40099
,
...
...
@@ -918,7 +920,7 @@ uint32_t nv108_pwr_code[] = {
/* 0x01c6: timer_reset */
0x3400161e
,
0xbd000ef6
,
0x
84
0eb504
,
0x
9a
0eb504
,
/* 0x01d0: timer_enable */
0x38000108
,
0xbd0008f6
,
...
...
@@ -949,7 +951,7 @@ uint32_t nv108_pwr_code[] = {
0xa6008a98
,
0x100bf4ae
,
0xb15880b6
,
0xf402
10
86
,
0xf402
68
86
,
0x32f4f11b
,
/* 0x0239: find_done */
0xfc8eb201
,
...
...
@@ -1009,7 +1011,7 @@ uint32_t nv108_pwr_code[] = {
0x0bf412a6
,
0x071ec42e
,
0xb704ee94
,
0x9802
18
e0
,
0x9802
70
e0
,
0xec9803eb
,
0x01ed9802
,
0x7e00ee98
,
...
...
@@ -1031,7 +1033,7 @@ uint32_t nv108_pwr_code[] = {
0xf412a608
,
0x23c4ef0b
,
0x0434b607
,
0x02
98
30b7
,
0x02
f0
30b7
,
0xb5033bb5
,
0x3db5023c
,
0x003eb501
,
...
...
@@ -1044,11 +1046,11 @@ uint32_t nv108_pwr_code[] = {
/* 0x0379: host_init */
0x00804100
,
0xf11014b6
,
0x4002
18
15
,
0x4002
70
15
,
0x01f604d0
,
0x4104bd00
,
0x14b60080
,
0x
98
15f110
,
0x
f0
15f110
,
0x04dc4002
,
0xbd0001f6
,
0x40010104
,
...
...
@@ -1101,13 +1103,13 @@ uint32_t nv108_pwr_code[] = {
0x001398b2
,
0x950410b6
,
0x30f01034
,
0x
c8
35980c
,
0x
de
35980c
,
0x12a655f9
,
0xfced1ef4
,
0x7ee0fcd0
,
0xf800023f
,
/* 0x0455: memx_info */
0x03
54
4c00
,
0x03
ac
4c00
,
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
,
/* 0x0
494
: test_init */
/* 0x0
898
: test_init */
0x7e08004e
,
0xf8000196
,
/* 0x0
49d
: idle_recv */
/* 0x0
49f
: idle */
/* 0x0
8a1
: idle_recv */
/* 0x0
8a3
: idle */
0xf400f800
,
0x54410031
,
0x0011cf04
,
0x400110b6
,
0x01f60454
,
/* 0x0
4b3
: idle_loop */
/* 0x0
8b7
: idle_loop */
0x0104bd00
,
0x0232f458
,
/* 0x0
4b8
: idle_proc */
/* 0x0
4b8
: idle_proc_exec */
/* 0x0
8bc
: idle_proc */
/* 0x0
8bc
: idle_proc_exec */
0x1eb210f9
,
0x0002487e
,
0x11f410fc
,
0x0231f409
,
/* 0x0
4cb
: idle_proc_next */
/* 0x0
8cf
: idle_proc_next */
0xb6f00ef4
,
0x1fa65810
,
0xf4e81bf4
,
...
...
@@ -1161,5 +1457,4 @@ uint32_t nv108_pwr_code[] = {
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
};
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc
浏览文件 @
64c672ae
...
...
@@ -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
...
...
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nva3.fuc.h
浏览文件 @
64c672ae
...
...
@@ -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
,
0x00000
57
b
,
0x00000
55
4
,
0x00000
9a
b
,
0x00000
98
4
,
0x00000000
,
0x00000000
,
0x00000000
,
...
...
@@ -112,8 +134,8 @@ uint32_t nva3_pwr_data[] = {
0x00000000
,
0x00000000
,
0x454c4449
,
0x00000
58
7
,
0x00000
58
5
,
0x00000
9b
7
,
0x00000
9b
5
,
0x00000000
,
0x00000000
,
0x00000000
,
...
...
@@ -133,12 +155,12 @@ uint32_t nva3_pwr_data[] = {
0x00000000
,
0x00000000
,
0x00000000
,
/* 0x02
10
: proc_list_tail */
/* 0x02
10
: time_prev */
/* 0x02
68
: proc_list_tail */
/* 0x02
68
: time_prev */
0x00000000
,
/* 0x02
14
: time_next */
/* 0x02
6c
: time_next */
0x00000000
,
/* 0x02
18
: fifo_queue */
/* 0x02
70
: fifo_queue */
0x00000000
,
0x00000000
,
0x00000000
,
...
...
@@ -171,7 +193,7 @@ uint32_t nva3_pwr_data[] = {
0x00000000
,
0x00000000
,
0x00000000
,
/* 0x02
98
: rfifo_queue */
/* 0x02
f0
: rfifo_queue */
0x00000000
,
0x00000000
,
0x00000000
,
...
...
@@ -204,11 +226,11 @@ uint32_t nva3_pwr_data[] = {
0x00000000
,
0x00000000
,
0x00000000
,
/* 0x03
18
: memx_func_head */
/* 0x03
70
: memx_func_head */
0x00010000
,
0x00000000
,
0x0000046f
,
/* 0x03
24
: memx_func_next */
/* 0x03
7c
: 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
,
0xbb
84
0a98
,
0xbb
9a
0a98
,
0x1cf4029a
,
0x01d7f00f
,
0x025421f5
,
0x0ef494bd
,
/* 0x00e9: intr_watchdog_next_time */
0x
85
0a9815
,
0x
9b
0a9815
,
0xf400a6b0
,
0x9ab8090b
,
0x061cf406
,
/* 0x00f8: intr_watchdog_next_time_set */
/* 0x00fb: intr_watchdog_next_proc */
0x80
85
0980
,
0x80
9b
0980
,
0xe0b603e9
,
0x
10
e6b158
,
0x
68
e6b158
,
0xc61bf402
,
/* 0x010a: intr */
0x00f900f8
,
...
...
@@ -880,15 +947,15 @@ uint32_t nva3_pwr_code[] = {
0x0088cf06
,
0xf40289c4
,
0x0080230b
,
0x58e7f0
85
,
0x58e7f0
9b
,
0x98cb21f4
,
0x96b0
85
09
,
0x96b0
9b
09
,
0x110bf400
,
0xb63407f0
,
0x09d00604
,
0x8004bd00
,
/* 0x016e: intr_skip_watchdog */
0x89e4
84
09
,
0x89e4
9a
09
,
0x0bf40800
,
0x8897f148
,
0x0694b606
,
...
...
@@ -948,7 +1015,7 @@ uint32_t nva3_pwr_code[] = {
0x000ed006
,
0x0e8004bd
,
/* 0x0241: timer_enable */
0x0187f0
84
,
0x0187f0
9a
,
0xb63807f0
,
0x08d00604
,
/* 0x024f: timer_done */
...
...
@@ -979,7 +1046,7 @@ uint32_t nva3_pwr_code[] = {
0xb8008a98
,
0x0bf406ae
,
0x5880b610
,
0x02
10
86b1
,
0x02
68
86b1
,
0xf4f01bf4
,
/* 0x02b2: find_done */
0x8eb90132
,
...
...
@@ -1049,7 +1116,7 @@ uint32_t nva3_pwr_code[] = {
0x320bf406
,
0x94071ec4
,
0xe0b704ee
,
0xeb9802
18
,
0xeb9802
70
,
0x02ec9803
,
0x9801ed98
,
0x21f500ee
,
...
...
@@ -1075,7 +1142,7 @@ uint32_t nva3_pwr_code[] = {
0xe60bf406
,
0xb60723c4
,
0x30b70434
,
0x3b8002
98
,
0x3b8002
f0
,
0x023c8003
,
0x80013d80
,
0x20b6003e
,
...
...
@@ -1090,13 +1157,13 @@ uint32_t nva3_pwr_code[] = {
/* 0x0430: host_init */
0x008017f1
,
0xf11014b6
,
0xf102
18
15
,
0xf102
70
15
,
0xb604d007
,
0x01d00604
,
0xf104bd00
,
0xb6008017
,
0x15f11014
,
0x07f102
98
,
0x07f102
f0
,
0x04b604dc
,
0x0001d006
,
0x17f004bd
,
...
...
@@ -1156,14 +1223,14 @@ uint32_t nva3_pwr_code[] = {
0x00139802
,
0x950410b6
,
0x30f01034
,
0x
c8
35980c
,
0x
de
35980c
,
0x12b855f9
,
0xec1ef406
,
0xe0fcd0fc
,
0x02b921f5
,
/* 0x0532: memx_info */
0xc7f100f8
,
0xb7f103
54
,
0xb7f103
ac
,
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
,
/* 0x0
57
b: test_init */
/* 0x0
9a
b: test_init */
0xf100f801
,
0xf50800e7
,
0xf801f521
,
/* 0x0
58
5: idle_recv */
/* 0x0
58
7: idle */
/* 0x0
9b
5: idle_recv */
/* 0x0
9b
7: idle */
0xf400f800
,
0x17f10031
,
0x14b605d4
,
...
...
@@ -1198,32 +1570,20 @@ uint32_t nva3_pwr_code[] = {
0xf10110b6
,
0xb605d407
,
0x01d00604
,
/* 0x0
5a
3: idle_loop */
/* 0x0
9d
3: idle_loop */
0xf004bd00
,
0x32f45817
,
/* 0x0
5a
9: idle_proc */
/* 0x0
5a
9: idle_proc_exec */
/* 0x0
9d
9: idle_proc */
/* 0x0
9d
9: idle_proc_exec */
0xb910f902
,
0x21f5021e
,
0x10fc02c2
,
0xf40911f4
,
0x0ef40231
,
/* 0x0
5b
d: idle_proc_next */
/* 0x0
9e
d: idle_proc_next */
0x5810b6ef
,
0xf4061fb8
,
0x02f4e61b
,
0x0028f4dd
,
0x00bb0ef4
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
};
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc
浏览文件 @
64c672ae
...
...
@@ -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
...
...
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvc0.fuc.h
浏览文件 @
64c672ae
...
...
@@ -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
,
0x00000
57
b
,
0x00000
55
4
,
0x00000
9a
b
,
0x00000
98
4
,
0x00000000
,
0x00000000
,
0x00000000
,
...
...
@@ -112,8 +134,8 @@ uint32_t nvc0_pwr_data[] = {
0x00000000
,
0x00000000
,
0x454c4449
,
0x00000
58
7
,
0x00000
58
5
,
0x00000
9b
7
,
0x00000
9b
5
,
0x00000000
,
0x00000000
,
0x00000000
,
...
...
@@ -133,12 +155,12 @@ uint32_t nvc0_pwr_data[] = {
0x00000000
,
0x00000000
,
0x00000000
,
/* 0x02
10
: proc_list_tail */
/* 0x02
10
: time_prev */
/* 0x02
68
: proc_list_tail */
/* 0x02
68
: time_prev */
0x00000000
,
/* 0x02
14
: time_next */
/* 0x02
6c
: time_next */
0x00000000
,
/* 0x02
18
: fifo_queue */
/* 0x02
70
: fifo_queue */
0x00000000
,
0x00000000
,
0x00000000
,
...
...
@@ -171,7 +193,7 @@ uint32_t nvc0_pwr_data[] = {
0x00000000
,
0x00000000
,
0x00000000
,
/* 0x02
98
: rfifo_queue */
/* 0x02
f0
: rfifo_queue */
0x00000000
,
0x00000000
,
0x00000000
,
...
...
@@ -204,11 +226,11 @@ uint32_t nvc0_pwr_data[] = {
0x00000000
,
0x00000000
,
0x00000000
,
/* 0x03
18
: memx_func_head */
/* 0x03
70
: memx_func_head */
0x00010000
,
0x00000000
,
0x0000046f
,
/* 0x03
24
: memx_func_next */
/* 0x03
7c
: 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
,
0xbb
84
0a98
,
0xbb
9a
0a98
,
0x1cf4029a
,
0x01d7f00f
,
0x025421f5
,
0x0ef494bd
,
/* 0x00e9: intr_watchdog_next_time */
0x
85
0a9815
,
0x
9b
0a9815
,
0xf400a6b0
,
0x9ab8090b
,
0x061cf406
,
/* 0x00f8: intr_watchdog_next_time_set */
/* 0x00fb: intr_watchdog_next_proc */
0x80
85
0980
,
0x80
9b
0980
,
0xe0b603e9
,
0x
10
e6b158
,
0x
68
e6b158
,
0xc61bf402
,
/* 0x010a: intr */
0x00f900f8
,
...
...
@@ -880,15 +947,15 @@ uint32_t nvc0_pwr_code[] = {
0x0088cf06
,
0xf40289c4
,
0x0080230b
,
0x58e7f0
85
,
0x58e7f0
9b
,
0x98cb21f4
,
0x96b0
85
09
,
0x96b0
9b
09
,
0x110bf400
,
0xb63407f0
,
0x09d00604
,
0x8004bd00
,
/* 0x016e: intr_skip_watchdog */
0x89e4
84
09
,
0x89e4
9a
09
,
0x0bf40800
,
0x8897f148
,
0x0694b606
,
...
...
@@ -948,7 +1015,7 @@ uint32_t nvc0_pwr_code[] = {
0x000ed006
,
0x0e8004bd
,
/* 0x0241: timer_enable */
0x0187f0
84
,
0x0187f0
9a
,
0xb63807f0
,
0x08d00604
,
/* 0x024f: timer_done */
...
...
@@ -979,7 +1046,7 @@ uint32_t nvc0_pwr_code[] = {
0xb8008a98
,
0x0bf406ae
,
0x5880b610
,
0x02
10
86b1
,
0x02
68
86b1
,
0xf4f01bf4
,
/* 0x02b2: find_done */
0x8eb90132
,
...
...
@@ -1049,7 +1116,7 @@ uint32_t nvc0_pwr_code[] = {
0x320bf406
,
0x94071ec4
,
0xe0b704ee
,
0xeb9802
18
,
0xeb9802
70
,
0x02ec9803
,
0x9801ed98
,
0x21f500ee
,
...
...
@@ -1075,7 +1142,7 @@ uint32_t nvc0_pwr_code[] = {
0xe60bf406
,
0xb60723c4
,
0x30b70434
,
0x3b8002
98
,
0x3b8002
f0
,
0x023c8003
,
0x80013d80
,
0x20b6003e
,
...
...
@@ -1090,13 +1157,13 @@ uint32_t nvc0_pwr_code[] = {
/* 0x0430: host_init */
0x008017f1
,
0xf11014b6
,
0xf102
18
15
,
0xf102
70
15
,
0xb604d007
,
0x01d00604
,
0xf104bd00
,
0xb6008017
,
0x15f11014
,
0x07f102
98
,
0x07f102
f0
,
0x04b604dc
,
0x0001d006
,
0x17f004bd
,
...
...
@@ -1156,14 +1223,14 @@ uint32_t nvc0_pwr_code[] = {
0x00139802
,
0x950410b6
,
0x30f01034
,
0x
c8
35980c
,
0x
de
35980c
,
0x12b855f9
,
0xec1ef406
,
0xe0fcd0fc
,
0x02b921f5
,
/* 0x0532: memx_info */
0xc7f100f8
,
0xb7f103
54
,
0xb7f103
ac
,
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
,
/* 0x0
57
b: test_init */
/* 0x0
9a
b: test_init */
0xf100f801
,
0xf50800e7
,
0xf801f521
,
/* 0x0
58
5: idle_recv */
/* 0x0
58
7: idle */
/* 0x0
9b
5: idle_recv */
/* 0x0
9b
7: idle */
0xf400f800
,
0x17f10031
,
0x14b605d4
,
...
...
@@ -1198,32 +1570,20 @@ uint32_t nvc0_pwr_code[] = {
0xf10110b6
,
0xb605d407
,
0x01d00604
,
/* 0x0
5a
3: idle_loop */
/* 0x0
9d
3: idle_loop */
0xf004bd00
,
0x32f45817
,
/* 0x0
5a
9: idle_proc */
/* 0x0
5a
9: idle_proc_exec */
/* 0x0
9d
9: idle_proc */
/* 0x0
9d
9: idle_proc_exec */
0xb910f902
,
0x21f5021e
,
0x10fc02c2
,
0xf40911f4
,
0x0ef40231
,
/* 0x0
5b
d: idle_proc_next */
/* 0x0
9e
d: idle_proc_next */
0x5810b6ef
,
0xf4061fb8
,
0x02f4e61b
,
0x0028f4dd
,
0x00bb0ef4
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
};
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc
浏览文件 @
64c672ae
...
...
@@ -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
...
...
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/nvd0.fuc.h
浏览文件 @
64c672ae
...
...
@@ -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
,
0xbb
84
0a98
,
0xbb
9a
0a98
,
0x1cf4029a
,
0x01d7f00f
,
0x020621f5
,
0x0ef494bd
,
/* 0x00c5: intr_watchdog_next_time */
0x
85
0a9815
,
0x
9b
0a9815
,
0xf400a6b0
,
0x9ab8090b
,
0x061cf406
,
/* 0x00d4: intr_watchdog_next_time_set */
/* 0x00d7: intr_watchdog_next_proc */
0x80
85
0980
,
0x80
9b
0980
,
0xe0b603e9
,
0x
10
e6b158
,
0x
68
e6b158
,
0xc61bf402
,
/* 0x00e6: intr */
0x00f900f8
,
...
...
@@ -868,15 +870,15 @@ uint32_t nvd0_pwr_code[] = {
0x0887f004
,
0xc40088cf
,
0x0bf40289
,
0x
85
008020
,
0x
9b
008020
,
0xf458e7f0
,
0x0998a721
,
0x0096b0
85
,
0x0096b0
9b
,
0xf00e0bf4
,
0x09d03407
,
0x8004bd00
,
/* 0x013e: intr_skip_watchdog */
0x89e4
84
09
,
0x89e4
9a
09
,
0x0bf40800
,
0x8897f13c
,
0x0099cf06
,
...
...
@@ -929,7 +931,7 @@ uint32_t nvd0_pwr_code[] = {
0x0ed03407
,
0x8004bd00
,
/* 0x01f6: timer_enable */
0x87f0
84
0e
,
0x87f0
9a
0e
,
0x3807f001
,
0xbd0008d0
,
/* 0x0201: timer_done */
...
...
@@ -960,7 +962,7 @@ uint32_t nvd0_pwr_code[] = {
0x06aeb800
,
0xb6100bf4
,
0x86b15880
,
0x1bf402
10
,
0x1bf402
68
,
0x0132f4f0
,
/* 0x0264: find_done */
0xfc028eb9
,
...
...
@@ -1024,7 +1026,7 @@ uint32_t nvd0_pwr_code[] = {
0x0bf40612
,
0x071ec42f
,
0xb704ee94
,
0x9802
18
e0
,
0x9802
70
e0
,
0xec9803eb
,
0x01ed9802
,
0xf500ee98
,
...
...
@@ -1048,7 +1050,7 @@ uint32_t nvd0_pwr_code[] = {
0xec0bf406
,
0xb60723c4
,
0x30b70434
,
0x3b8002
98
,
0x3b8002
f0
,
0x023c8003
,
0x80013d80
,
0x20b6003e
,
...
...
@@ -1061,12 +1063,12 @@ uint32_t nvd0_pwr_code[] = {
/* 0x03be: host_init */
0x17f100f8
,
0x14b60080
,
0x
18
15f110
,
0x
70
15f110
,
0xd007f102
,
0x0001d004
,
0x17f104bd
,
0x14b60080
,
0x
98
15f110
,
0x
f0
15f110
,
0xdc07f102
,
0x0001d004
,
0x17f004bd
,
...
...
@@ -1122,13 +1124,13 @@ uint32_t nvd0_pwr_code[] = {
0x10b60013
,
0x10349504
,
0x980c30f0
,
0x55f9
c8
35
,
0x55f9
de
35
,
0xf40612b8
,
0xd0fcec1e
,
0x21f5e0fc
,
0x00f8026b
,
/* 0x04a8: memx_info */
0x03
54
c7f1
,
0x03
ac
c7f1
,
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
,
...
...
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/os.h
浏览文件 @
64c672ae
...
...
@@ -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%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录