Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
64c672ae
Commit
64c672ae
authored
Nov 09, 2013
by
Ben Skeggs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drm/nouveau/pwr: implement a simple i2c stack
Signed-off-by:
Ben Skeggs
<
bskeggs@redhat.com
>
parent
2e9dfe23
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
2066 additions
and
279 deletions
+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
No files found.
drivers/gpu/drm/nouveau/core/subdev/pwr/fuc/i2c_.fuc
0 → 100644
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment