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
04a39c57
Commit
04a39c57
authored
Feb 24, 2010
by
Ben Skeggs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drm/nouveau: merge nvbios and nouveau_bios_info
Signed-off-by:
Ben Skeggs
<
bskeggs@redhat.com
>
parent
7f245b20
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
73 additions
and
81 deletions
+73
-81
drivers/gpu/drm/nouveau/nouveau_bios.c
drivers/gpu/drm/nouveau/nouveau_bios.c
+39
-43
drivers/gpu/drm/nouveau/nouveau_bios.h
drivers/gpu/drm/nouveau/nouveau_bios.h
+3
-6
drivers/gpu/drm/nouveau/nouveau_calc.c
drivers/gpu/drm/nouveau/nouveau_calc.c
+2
-2
drivers/gpu/drm/nouveau/nouveau_connector.c
drivers/gpu/drm/nouveau/nouveau_connector.c
+3
-3
drivers/gpu/drm/nouveau/nouveau_debugfs.c
drivers/gpu/drm/nouveau/nouveau_debugfs.c
+2
-2
drivers/gpu/drm/nouveau/nouveau_drv.h
drivers/gpu/drm/nouveau/nouveau_drv.h
+1
-2
drivers/gpu/drm/nouveau/nouveau_hw.c
drivers/gpu/drm/nouveau/nouveau_hw.c
+3
-3
drivers/gpu/drm/nouveau/nouveau_i2c.c
drivers/gpu/drm/nouveau/nouveau_i2c.c
+1
-1
drivers/gpu/drm/nouveau/nv04_dac.c
drivers/gpu/drm/nouveau/nv04_dac.c
+4
-4
drivers/gpu/drm/nouveau/nv04_dfp.c
drivers/gpu/drm/nouveau/nv04_dfp.c
+2
-2
drivers/gpu/drm/nouveau/nv04_display.c
drivers/gpu/drm/nouveau/nv04_display.c
+1
-1
drivers/gpu/drm/nouveau/nv04_tv.c
drivers/gpu/drm/nouveau/nv04_tv.c
+1
-1
drivers/gpu/drm/nouveau/nv17_tv.c
drivers/gpu/drm/nouveau/nv17_tv.c
+3
-3
drivers/gpu/drm/nouveau/nv50_dac.c
drivers/gpu/drm/nouveau/nv50_dac.c
+2
-2
drivers/gpu/drm/nouveau/nv50_display.c
drivers/gpu/drm/nouveau/nv50_display.c
+6
-6
No files found.
drivers/gpu/drm/nouveau/nouveau_bios.c
View file @
04a39c57
...
...
@@ -311,11 +311,11 @@ valid_reg(struct nvbios *bios, uint32_t reg)
/* C51 has misaligned regs on purpose. Marvellous */
if
(
reg
&
0x2
||
(
reg
&
0x1
&&
dev_priv
->
VBIOS
.
pub
.
chip_version
!=
0x51
))
(
reg
&
0x1
&&
dev_priv
->
vbios
.
chip_version
!=
0x51
))
NV_ERROR
(
dev
,
"======= misaligned reg 0x%08X =======
\n
"
,
reg
);
/* warn on C51 regs that haven't been verified accessible in tracing */
if
(
reg
&
0x1
&&
dev_priv
->
VBIOS
.
pub
.
chip_version
==
0x51
&&
if
(
reg
&
0x1
&&
dev_priv
->
vbios
.
chip_version
==
0x51
&&
reg
!=
0x130d
&&
reg
!=
0x1311
&&
reg
!=
0x60081d
)
NV_WARN
(
dev
,
"=== C51 misaligned reg 0x%08X not verified ===
\n
"
,
reg
);
...
...
@@ -420,7 +420,7 @@ bios_wr32(struct nvbios *bios, uint32_t reg, uint32_t data)
LOG_OLD_VALUE
(
bios_rd32
(
bios
,
reg
));
BIOSLOG
(
bios
,
" Write: Reg: 0x%08X, Data: 0x%08X
\n
"
,
reg
,
data
);
if
(
dev_priv
->
VBIOS
.
execute
)
{
if
(
dev_priv
->
vbios
.
execute
)
{
still_alive
();
nv_wr32
(
bios
->
dev
,
reg
,
data
);
}
...
...
@@ -647,7 +647,7 @@ nv50_pll_set(struct drm_device *dev, uint32_t reg, uint32_t clk)
reg0
=
(
reg0
&
0xfff8ffff
)
|
(
pll
.
log2P
<<
16
);
reg1
=
(
reg1
&
0xffff0000
)
|
(
pll
.
N1
<<
8
)
|
pll
.
M1
;
if
(
dev_priv
->
VBIOS
.
execute
)
{
if
(
dev_priv
->
vbios
.
execute
)
{
still_alive
();
nv_wr32
(
dev
,
reg
+
4
,
reg1
);
nv_wr32
(
dev
,
reg
+
0
,
reg0
);
...
...
@@ -689,7 +689,7 @@ setPLL(struct nvbios *bios, uint32_t reg, uint32_t clk)
static
int
dcb_entry_idx_from_crtchead
(
struct
drm_device
*
dev
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
/*
* For the results of this function to be correct, CR44 must have been
...
...
@@ -713,7 +713,7 @@ static struct nouveau_i2c_chan *
init_i2c_device_find
(
struct
drm_device
*
dev
,
int
i2c_index
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
dcb_table
*
dcb
=
&
dev_priv
->
VBIOS
.
dcb
;
struct
dcb_table
*
dcb
=
&
dev_priv
->
vbios
.
dcb
;
if
(
i2c_index
==
0xff
)
{
/* note: dcb_entry_idx_from_crtchead needs pre-script set-up */
...
...
@@ -745,7 +745,7 @@ get_tmds_index_reg(struct drm_device *dev, uint8_t mlv)
*/
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
const
int
pramdac_offset
[
13
]
=
{
0
,
0
,
0x8
,
0
,
0x2000
,
0
,
0
,
0
,
0x2008
,
0
,
0
,
0
,
0x2000
};
const
uint32_t
pramdac_table
[
4
]
=
{
...
...
@@ -3124,7 +3124,7 @@ run_digital_op_script(struct drm_device *dev, uint16_t scriptptr,
struct
dcb_entry
*
dcbent
,
int
head
,
bool
dl
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
struct
init_exec
iexec
=
{
true
,
false
};
NV_TRACE
(
dev
,
"0x%04X: Parsing digital output script table
\n
"
,
...
...
@@ -3141,7 +3141,7 @@ run_digital_op_script(struct drm_device *dev, uint16_t scriptptr,
static
int
call_lvds_manufacturer_script
(
struct
drm_device
*
dev
,
struct
dcb_entry
*
dcbent
,
int
head
,
enum
LVDS_script
script
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
uint8_t
sub
=
bios
->
data
[
bios
->
fp
.
xlated_entry
+
script
]
+
(
bios
->
fp
.
link_c_increment
&&
dcbent
->
or
&
OUTPUT_C
?
1
:
0
);
uint16_t
scriptofs
=
ROM16
(
bios
->
data
[
bios
->
init_script_tbls_ptr
+
sub
*
2
]);
...
...
@@ -3195,7 +3195,7 @@ static int run_lvds_table(struct drm_device *dev, struct dcb_entry *dcbent, int
* of a list of pxclks and script pointers.
*/
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
unsigned
int
outputset
=
(
dcbent
->
or
==
4
)
?
1
:
0
;
uint16_t
scriptptr
=
0
,
clktable
;
uint8_t
clktableptr
=
0
;
...
...
@@ -3262,7 +3262,7 @@ int call_lvds_script(struct drm_device *dev, struct dcb_entry *dcbent, int head,
*/
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
uint8_t
lvds_ver
=
bios
->
data
[
bios
->
fp
.
lvdsmanufacturerpointer
];
uint32_t
sel_clk_binding
,
sel_clk
;
int
ret
;
...
...
@@ -3396,7 +3396,7 @@ static int parse_fp_mode_table(struct drm_device *dev, struct nvbios *bios)
#ifndef __powerpc__
NV_ERROR
(
dev
,
"Pointer to flat panel table invalid
\n
"
);
#endif
bios
->
pub
.
digital_min_front_porch
=
0x4b
;
bios
->
digital_min_front_porch
=
0x4b
;
return
0
;
}
...
...
@@ -3429,7 +3429,7 @@ static int parse_fp_mode_table(struct drm_device *dev, struct nvbios *bios)
* fptable[4] is the minimum
* RAMDAC_FP_HCRTC -> RAMDAC_FP_HSYNC_START gap
*/
bios
->
pub
.
digital_min_front_porch
=
fptable
[
4
];
bios
->
digital_min_front_porch
=
fptable
[
4
];
ofs
=
-
7
;
break
;
default:
...
...
@@ -3468,7 +3468,7 @@ static int parse_fp_mode_table(struct drm_device *dev, struct nvbios *bios)
/* nv4x cards need both a strap value and fpindex of 0xf to use DDC */
if
(
lth
.
lvds_ver
>
0x10
)
bios
->
pub
.
fp_no_ddc
=
fpstrapping
!=
0xf
||
fpindex
!=
0xf
;
bios
->
fp_no_ddc
=
fpstrapping
!=
0xf
||
fpindex
!=
0xf
;
/*
* If either the strap or xlated fpindex value are 0xf there is no
...
...
@@ -3492,7 +3492,7 @@ static int parse_fp_mode_table(struct drm_device *dev, struct nvbios *bios)
bool
nouveau_bios_fp_mode
(
struct
drm_device
*
dev
,
struct
drm_display_mode
*
mode
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
uint8_t
*
mode_entry
=
&
bios
->
data
[
bios
->
fp
.
mode_ptr
];
if
(
!
mode
)
/* just checking whether we can produce a mode */
...
...
@@ -3563,11 +3563,11 @@ int nouveau_bios_parse_lvds_table(struct drm_device *dev, int pxclk, bool *dl, b
* until later, when this function should be called with non-zero pxclk
*/
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
int
fpstrapping
=
get_fp_strap
(
dev
,
bios
),
lvdsmanufacturerindex
=
0
;
struct
lvdstableheader
lth
;
uint16_t
lvdsofs
;
int
ret
,
chip_version
=
bios
->
pub
.
chip_version
;
int
ret
,
chip_version
=
bios
->
chip_version
;
ret
=
parse_lvds_manufacturer_table_header
(
dev
,
bios
,
&
lth
);
if
(
ret
)
...
...
@@ -3683,7 +3683,7 @@ bios_output_config_match(struct drm_device *dev, struct dcb_entry *dcbent,
uint16_t
record
,
int
record_len
,
int
record_nr
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
uint32_t
entry
;
uint16_t
table
;
int
i
,
v
;
...
...
@@ -3717,7 +3717,7 @@ nouveau_bios_dp_table(struct drm_device *dev, struct dcb_entry *dcbent,
int
*
length
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
uint8_t
*
table
;
if
(
!
bios
->
display
.
dp_table_ptr
)
{
...
...
@@ -3766,7 +3766,7 @@ nouveau_bios_run_display_table(struct drm_device *dev, struct dcb_entry *dcbent,
*/
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
uint8_t
*
table
=
&
bios
->
data
[
bios
->
display
.
script_table_ptr
];
uint8_t
*
otable
=
NULL
;
uint16_t
script
;
...
...
@@ -3919,8 +3919,8 @@ int run_tmds_table(struct drm_device *dev, struct dcb_entry *dcbent, int head, i
*/
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
int
cv
=
bios
->
pub
.
chip_version
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
int
cv
=
bios
->
chip_version
;
uint16_t
clktable
=
0
,
scriptptr
;
uint32_t
sel_clk_binding
,
sel_clk
;
...
...
@@ -3979,8 +3979,8 @@ int get_pll_limits(struct drm_device *dev, uint32_t limit_match, struct pll_lims
*/
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
int
cv
=
bios
->
pub
.
chip_version
,
pllindex
=
0
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
int
cv
=
bios
->
chip_version
,
pllindex
=
0
;
uint8_t
pll_lim_ver
=
0
,
headerlen
=
0
,
recordlen
=
0
,
entries
=
0
;
uint32_t
crystal_strap_mask
,
crystal_straps
;
...
...
@@ -4333,7 +4333,7 @@ static void parse_bios_version(struct drm_device *dev, struct nvbios *bios, uint
*/
bios
->
major_version
=
bios
->
data
[
offset
+
3
];
bios
->
pub
.
chip_version
=
bios
->
data
[
offset
+
2
];
bios
->
chip_version
=
bios
->
data
[
offset
+
2
];
NV_TRACE
(
dev
,
"Bios version %02x.%02x.%02x.%02x
\n
"
,
bios
->
data
[
offset
+
3
],
bios
->
data
[
offset
+
2
],
bios
->
data
[
offset
+
1
],
bios
->
data
[
offset
]);
...
...
@@ -4403,7 +4403,7 @@ static int parse_bit_A_tbl_entry(struct drm_device *dev, struct nvbios *bios, st
}
/* First entry is normal dac, 2nd tv-out perhaps? */
bios
->
pub
.
dactestval
=
ROM32
(
bios
->
data
[
load_table_ptr
+
headerlen
])
&
0x3ff
;
bios
->
dactestval
=
ROM32
(
bios
->
data
[
load_table_ptr
+
headerlen
])
&
0x3ff
;
return
0
;
}
...
...
@@ -4527,8 +4527,8 @@ static int parse_bit_i_tbl_entry(struct drm_device *dev, struct nvbios *bios, st
return
-
ENOSYS
;
}
bios
->
pub
.
dactestval
=
ROM32
(
bios
->
data
[
daccmpoffset
+
dacheaderlen
]);
bios
->
pub
.
tvdactestval
=
ROM32
(
bios
->
data
[
daccmpoffset
+
dacheaderlen
+
4
]);
bios
->
dactestval
=
ROM32
(
bios
->
data
[
daccmpoffset
+
dacheaderlen
]);
bios
->
tvdactestval
=
ROM32
(
bios
->
data
[
daccmpoffset
+
dacheaderlen
+
4
]);
return
0
;
}
...
...
@@ -4801,7 +4801,7 @@ static int parse_bmp_structure(struct drm_device *dev, struct nvbios *bios, unsi
bios
->
dcb
.
i2c
[
0
].
read
=
NV_CIO_CRE_DDC_STATUS__INDEX
;
bios
->
dcb
.
i2c
[
1
].
write
=
NV_CIO_CRE_DDC0_WR__INDEX
;
bios
->
dcb
.
i2c
[
1
].
read
=
NV_CIO_CRE_DDC0_STATUS__INDEX
;
bios
->
pub
.
digital_min_front_porch
=
0x4b
;
bios
->
digital_min_front_porch
=
0x4b
;
bios
->
fmaxvco
=
256000
;
bios
->
fminvco
=
128000
;
bios
->
fp
.
duallink_transition_clk
=
90000
;
...
...
@@ -5047,7 +5047,7 @@ struct dcb_gpio_entry *
nouveau_bios_gpio_entry
(
struct
drm_device
*
dev
,
enum
dcb_gpio_tag
tag
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
int
i
;
for
(
i
=
0
;
i
<
bios
->
dcb
.
gpio
.
entries
;
i
++
)
{
...
...
@@ -5160,7 +5160,7 @@ struct dcb_connector_table_entry *
nouveau_bios_connector_entry
(
struct
drm_device
*
dev
,
int
index
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
struct
dcb_connector_table_entry
*
cte
;
if
(
index
>=
bios
->
dcb
.
connector
.
entries
)
...
...
@@ -5823,7 +5823,7 @@ static int load_nv17_hw_sequencer_ucode(struct drm_device *dev,
uint8_t
*
nouveau_bios_embedded_edid
(
struct
drm_device
*
dev
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
const
uint8_t
edid_sig
[]
=
{
0x00
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0x00
};
uint16_t
offset
=
0
;
...
...
@@ -5856,7 +5856,7 @@ nouveau_bios_run_init_table(struct drm_device *dev, uint16_t table,
struct
dcb_entry
*
dcbent
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
struct
init_exec
iexec
=
{
true
,
false
};
mutex_lock
(
&
bios
->
lock
);
...
...
@@ -5869,7 +5869,7 @@ nouveau_bios_run_init_table(struct drm_device *dev, uint16_t table,
static
bool
NVInitVBIOS
(
struct
drm_device
*
dev
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
memset
(
bios
,
0
,
sizeof
(
struct
nvbios
));
mutex_init
(
&
bios
->
lock
);
...
...
@@ -5885,7 +5885,7 @@ static bool NVInitVBIOS(struct drm_device *dev)
static
int
nouveau_parse_vbios_struct
(
struct
drm_device
*
dev
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
const
uint8_t
bit_signature
[]
=
{
0xff
,
0xb8
,
'B'
,
'I'
,
'T'
};
const
uint8_t
bmp_signature
[]
=
{
0xff
,
0x7f
,
'N'
,
'V'
,
0x0
};
int
offset
;
...
...
@@ -5912,7 +5912,7 @@ int
nouveau_run_vbios_init
(
struct
drm_device
*
dev
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
int
i
,
ret
=
0
;
NVLockVgaCrtcs
(
dev
,
false
);
...
...
@@ -5959,7 +5959,7 @@ static void
nouveau_bios_i2c_devices_takedown
(
struct
drm_device
*
dev
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
struct
dcb_i2c_entry
*
entry
;
int
i
;
...
...
@@ -5972,13 +5972,11 @@ int
nouveau_bios_init
(
struct
drm_device
*
dev
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
uint32_t
saved_nv_pextdev_boot_0
;
bool
was_locked
;
int
ret
;
dev_priv
->
vbios
=
&
bios
->
pub
;
if
(
!
NVInitVBIOS
(
dev
))
return
-
ENODEV
;
...
...
@@ -6020,10 +6018,8 @@ nouveau_bios_init(struct drm_device *dev)
bios_wr32
(
bios
,
NV_PEXTDEV_BOOT_0
,
saved_nv_pextdev_boot_0
);
ret
=
nouveau_run_vbios_init
(
dev
);
if
(
ret
)
{
dev_priv
->
vbios
=
NULL
;
if
(
ret
)
return
ret
;
}
/* feature_byte on BMP is poor, but init always sets CR4B */
was_locked
=
NVLockVgaCrtcs
(
dev
,
false
);
...
...
drivers/gpu/drm/nouveau/nouveau_bios.h
View file @
04a39c57
...
...
@@ -186,18 +186,15 @@ struct pll_lims {
int
refclk
;
};
struct
nouveau_bios_info
{
struct
nvbios
{
struct
drm_device
*
dev
;
uint8_t
chip_version
;
uint32_t
dactestval
;
uint32_t
tvdactestval
;
uint8_t
digital_min_front_porch
;
bool
fp_no_ddc
;
};
struct
nvbios
{
struct
drm_device
*
dev
;
struct
nouveau_bios_info
pub
;
struct
mutex
lock
;
...
...
drivers/gpu/drm/nouveau/nouveau_calc.c
View file @
04a39c57
...
...
@@ -274,7 +274,7 @@ getMNP_single(struct drm_device *dev, struct pll_lims *pll_lim, int clk,
* returns calculated clock
*/
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
int
cv
=
dev_priv
->
vbios
->
chip_version
;
int
cv
=
dev_priv
->
vbios
.
chip_version
;
int
minvco
=
pll_lim
->
vco1
.
minfreq
,
maxvco
=
pll_lim
->
vco1
.
maxfreq
;
int
minM
=
pll_lim
->
vco1
.
min_m
,
maxM
=
pll_lim
->
vco1
.
max_m
;
int
minN
=
pll_lim
->
vco1
.
min_n
,
maxN
=
pll_lim
->
vco1
.
max_n
;
...
...
@@ -373,7 +373,7 @@ getMNP_double(struct drm_device *dev, struct pll_lims *pll_lim, int clk,
* returns calculated clock
*/
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
int
chip_version
=
dev_priv
->
vbios
->
chip_version
;
int
chip_version
=
dev_priv
->
vbios
.
chip_version
;
int
minvco1
=
pll_lim
->
vco1
.
minfreq
,
maxvco1
=
pll_lim
->
vco1
.
maxfreq
;
int
minvco2
=
pll_lim
->
vco2
.
minfreq
,
maxvco2
=
pll_lim
->
vco2
.
maxfreq
;
int
minU1
=
pll_lim
->
vco1
.
min_inputfreq
,
minU2
=
pll_lim
->
vco2
.
min_inputfreq
;
...
...
drivers/gpu/drm/nouveau/nouveau_connector.c
View file @
04a39c57
...
...
@@ -680,7 +680,7 @@ nouveau_connector_create_lvds(struct drm_device *dev,
/* Firstly try getting EDID over DDC, if allowed and I2C channel
* is available.
*/
if
(
!
dev_priv
->
VBIOS
.
pub
.
fp_no_ddc
&&
nv_encoder
->
dcb
->
i2c_index
<
0xf
)
if
(
!
dev_priv
->
vbios
.
fp_no_ddc
&&
nv_encoder
->
dcb
->
i2c_index
<
0xf
)
i2c
=
nouveau_i2c_find
(
dev
,
nv_encoder
->
dcb
->
i2c_index
);
if
(
i2c
)
{
...
...
@@ -695,7 +695,7 @@ nouveau_connector_create_lvds(struct drm_device *dev,
*/
if
(
!
nv_connector
->
edid
&&
nouveau_bios_fp_mode
(
dev
,
&
native
)
&&
(
nv_encoder
->
dcb
->
lvdsconf
.
use_straps_for_mode
||
dev_priv
->
VBIOS
.
pub
.
fp_no_ddc
))
{
dev_priv
->
vbios
.
fp_no_ddc
))
{
nv_connector
->
native_mode
=
drm_mode_duplicate
(
dev
,
&
native
);
goto
out
;
}
...
...
@@ -704,7 +704,7 @@ nouveau_connector_create_lvds(struct drm_device *dev,
* stored for the panel stored in them.
*/
if
(
!
nv_connector
->
edid
&&
!
nv_connector
->
native_mode
&&
!
dev_priv
->
VBIOS
.
pub
.
fp_no_ddc
)
{
!
dev_priv
->
vbios
.
fp_no_ddc
)
{
struct
edid
*
edid
=
(
struct
edid
*
)
nouveau_bios_embedded_edid
(
dev
);
if
(
edid
)
{
...
...
drivers/gpu/drm/nouveau/nouveau_debugfs.c
View file @
04a39c57
...
...
@@ -151,8 +151,8 @@ nouveau_debugfs_vbios_image(struct seq_file *m, void *data)
struct
drm_nouveau_private
*
dev_priv
=
node
->
minor
->
dev
->
dev_private
;
int
i
;
for
(
i
=
0
;
i
<
dev_priv
->
VBIOS
.
length
;
i
++
)
seq_printf
(
m
,
"%c"
,
dev_priv
->
VBIOS
.
data
[
i
]);
for
(
i
=
0
;
i
<
dev_priv
->
vbios
.
length
;
i
++
)
seq_printf
(
m
,
"%c"
,
dev_priv
->
vbios
.
data
[
i
]);
return
0
;
}
...
...
drivers/gpu/drm/nouveau/nouveau_drv.h
View file @
04a39c57
...
...
@@ -605,8 +605,7 @@ struct drm_nouveau_private {
struct
list_head
gpuobj_list
;
struct
nvbios
VBIOS
;
struct
nouveau_bios_info
*
vbios
;
struct
nvbios
vbios
;
struct
nv04_mode_state
mode_reg
;
struct
nv04_mode_state
saved_reg
;
...
...
drivers/gpu/drm/nouveau/nouveau_hw.c
View file @
04a39c57
...
...
@@ -160,7 +160,7 @@ static void
setPLL_single
(
struct
drm_device
*
dev
,
uint32_t
reg
,
struct
nouveau_pll_vals
*
pv
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
int
chip_version
=
dev_priv
->
vbios
->
chip_version
;
int
chip_version
=
dev_priv
->
vbios
.
chip_version
;
uint32_t
oldpll
=
NVReadRAMDAC
(
dev
,
0
,
reg
);
int
oldN
=
(
oldpll
>>
8
)
&
0xff
,
oldM
=
oldpll
&
0xff
;
uint32_t
pll
=
(
oldpll
&
0xfff80000
)
|
pv
->
log2P
<<
16
|
pv
->
NM1
;
...
...
@@ -216,7 +216,7 @@ setPLL_double_highregs(struct drm_device *dev, uint32_t reg1,
struct
nouveau_pll_vals
*
pv
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
int
chip_version
=
dev_priv
->
vbios
->
chip_version
;
int
chip_version
=
dev_priv
->
vbios
.
chip_version
;
bool
nv3035
=
chip_version
==
0x30
||
chip_version
==
0x35
;
uint32_t
reg2
=
reg1
+
((
reg1
==
NV_RAMDAC_VPLL2
)
?
0x5c
:
0x70
);
uint32_t
oldpll1
=
NVReadRAMDAC
(
dev
,
0
,
reg1
);
...
...
@@ -374,7 +374,7 @@ nouveau_hw_setpll(struct drm_device *dev, uint32_t reg1,
struct
nouveau_pll_vals
*
pv
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
int
cv
=
dev_priv
->
vbios
->
chip_version
;
int
cv
=
dev_priv
->
vbios
.
chip_version
;
if
(
cv
==
0x30
||
cv
==
0x31
||
cv
==
0x35
||
cv
==
0x36
||
cv
>=
0x40
)
{
...
...
drivers/gpu/drm/nouveau/nouveau_i2c.c
View file @
04a39c57
...
...
@@ -254,7 +254,7 @@ struct nouveau_i2c_chan *
nouveau_i2c_find
(
struct
drm_device
*
dev
,
int
index
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
if
(
index
>=
DCB_MAX_NUM_I2C_ENTRIES
)
return
NULL
;
...
...
drivers/gpu/drm/nouveau/nv04_dac.c
View file @
04a39c57
...
...
@@ -230,13 +230,13 @@ uint32_t nv17_dac_sample_load(struct drm_encoder *encoder)
if
(
dcb
->
type
==
OUTPUT_TV
)
{
testval
=
RGB_TEST_DATA
(
0xa0
,
0xa0
,
0xa0
);
if
(
dev_priv
->
vbios
->
tvdactestval
)
testval
=
dev_priv
->
vbios
->
tvdactestval
;
if
(
dev_priv
->
vbios
.
tvdactestval
)
testval
=
dev_priv
->
vbios
.
tvdactestval
;
}
else
{
testval
=
RGB_TEST_DATA
(
0x140
,
0x140
,
0x140
);
/* 0x94050140 */
if
(
dev_priv
->
vbios
->
dactestval
)
testval
=
dev_priv
->
vbios
->
dactestval
;
if
(
dev_priv
->
vbios
.
dactestval
)
testval
=
dev_priv
->
vbios
.
dactestval
;
}
saved_rtest_ctrl
=
NVReadRAMDAC
(
dev
,
0
,
NV_PRAMDAC_TEST_CONTROL
+
regoffset
);
...
...
drivers/gpu/drm/nouveau/nv04_dfp.c
View file @
04a39c57
...
...
@@ -269,10 +269,10 @@ static void nv04_dfp_mode_set(struct drm_encoder *encoder,
regp
->
fp_horiz_regs
[
FP_TOTAL
]
=
output_mode
->
htotal
-
1
;
if
(
!
nv_gf4_disp_arch
(
dev
)
||
(
output_mode
->
hsync_start
-
output_mode
->
hdisplay
)
>=
dev_priv
->
vbios
->
digital_min_front_porch
)
dev_priv
->
vbios
.
digital_min_front_porch
)
regp
->
fp_horiz_regs
[
FP_CRTC
]
=
output_mode
->
hdisplay
;
else
regp
->
fp_horiz_regs
[
FP_CRTC
]
=
output_mode
->
hsync_start
-
dev_priv
->
vbios
->
digital_min_front_porch
-
1
;
regp
->
fp_horiz_regs
[
FP_CRTC
]
=
output_mode
->
hsync_start
-
dev_priv
->
vbios
.
digital_min_front_porch
-
1
;
regp
->
fp_horiz_regs
[
FP_SYNC_START
]
=
output_mode
->
hsync_start
-
1
;
regp
->
fp_horiz_regs
[
FP_SYNC_END
]
=
output_mode
->
hsync_end
-
1
;
regp
->
fp_horiz_regs
[
FP_VALID_START
]
=
output_mode
->
hskew
;
...
...
drivers/gpu/drm/nouveau/nv04_display.c
View file @
04a39c57
...
...
@@ -93,7 +93,7 @@ int
nv04_display_create
(
struct
drm_device
*
dev
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
dcb_table
*
dcb
=
&
dev_priv
->
VBIOS
.
dcb
;
struct
dcb_table
*
dcb
=
&
dev_priv
->
vbios
.
dcb
;
struct
drm_encoder
*
encoder
;
struct
drm_crtc
*
crtc
;
uint16_t
connector
[
16
]
=
{
0
};
...
...
drivers/gpu/drm/nouveau/nv04_tv.c
View file @
04a39c57
...
...
@@ -262,7 +262,7 @@ int nv04_tv_create(struct drm_device *dev, struct dcb_entry *entry)
nv_encoder
->
or
=
ffs
(
entry
->
or
)
-
1
;
/* Run the slave-specific initialization */
adap
=
&
dev_priv
->
VBIOS
.
dcb
.
i2c
[
i2c_index
].
chan
->
adapter
;
adap
=
&
dev_priv
->
vbios
.
dcb
.
i2c
[
i2c_index
].
chan
->
adapter
;
was_locked
=
NVLockVgaCrtcs
(
dev
,
false
);
...
...
drivers/gpu/drm/nouveau/nv17_tv.c
View file @
04a39c57
...
...
@@ -45,8 +45,8 @@ static uint32_t nv42_tv_sample_load(struct drm_encoder *encoder)
#define RGB_TEST_DATA(r, g, b) (r << 0 | g << 10 | b << 20)
testval
=
RGB_TEST_DATA
(
0x82
,
0xeb
,
0x82
);
if
(
dev_priv
->
vbios
->
tvdactestval
)
testval
=
dev_priv
->
vbios
->
tvdactestval
;
if
(
dev_priv
->
vbios
.
tvdactestval
)
testval
=
dev_priv
->
vbios
.
tvdactestval
;
dacclk
=
NVReadRAMDAC
(
dev
,
0
,
NV_PRAMDAC_DACCLK
+
regoffset
);
head
=
(
dacclk
&
0x100
)
>>
8
;
...
...
@@ -367,7 +367,7 @@ static void nv17_tv_prepare(struct drm_encoder *encoder)
!
enc
->
crtc
&&
nv04_dfp_get_bound_head
(
dev
,
dcb
)
==
head
)
{
nv04_dfp_bind_head
(
dev
,
dcb
,
head
^
1
,
dev_priv
->
VBIOS
.
fp
.
dual_link
);
dev_priv
->
vbios
.
fp
.
dual_link
);
}
}
...
...
drivers/gpu/drm/nouveau/nv50_dac.c
View file @
04a39c57
...
...
@@ -79,8 +79,8 @@ nv50_dac_detect(struct drm_encoder *encoder, struct drm_connector *connector)
}
/* Use bios provided value if possible. */
if
(
dev_priv
->
vbios
->
dactestval
)
{
load_pattern
=
dev_priv
->
vbios
->
dactestval
;
if
(
dev_priv
->
vbios
.
dactestval
)
{
load_pattern
=
dev_priv
->
vbios
.
dactestval
;
NV_DEBUG_KMS
(
dev
,
"Using bios provided load_pattern of %d
\n
"
,
load_pattern
);
}
else
{
...
...
drivers/gpu/drm/nouveau/nv50_display.c
View file @
04a39c57
...
...
@@ -465,7 +465,7 @@ static int nv50_display_disable(struct drm_device *dev)
int
nv50_display_create
(
struct
drm_device
*
dev
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
dcb_table
*
dcb
=
&
dev_priv
->
VBIOS
.
dcb
;
struct
dcb_table
*
dcb
=
&
dev_priv
->
vbios
.
dcb
;
uint32_t
connector
[
16
]
=
{};
int
ret
,
i
;
...
...
@@ -526,7 +526,7 @@ int nv50_display_create(struct drm_device *dev)
connector
[
entry
->
connector
]
|=
(
1
<<
entry
->
type
);
}
/* It appears that DCB 3.0+
VBIOS
has a connector table, however,
/* It appears that DCB 3.0+
vbios
has a connector table, however,
* I'm not 100% certain how to decode it correctly yet so just
* look at what encoders are present on each connector index and
* attempt to derive the connector type from that.
...
...
@@ -667,8 +667,8 @@ nv50_display_irq_head(struct drm_device *dev, int *phead,
return
-
1
;
}
for
(
i
=
0
;
i
<
dev_priv
->
VBIOS
.
dcb
.
entries
;
i
++
)
{
struct
dcb_entry
*
dcbent
=
&
dev_priv
->
VBIOS
.
dcb
.
entry
[
i
];
for
(
i
=
0
;
i
<
dev_priv
->
vbios
.
dcb
.
entries
;
i
++
)
{
struct
dcb_entry
*
dcbent
=
&
dev_priv
->
vbios
.
dcb
.
entry
[
i
];
if
(
dcbent
->
type
!=
type
)
continue
;
...
...
@@ -692,7 +692,7 @@ nv50_display_script_select(struct drm_device *dev, struct dcb_entry *dcbent,
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nouveau_connector
*
nv_connector
=
NULL
;
struct
drm_encoder
*
encoder
;
struct
nvbios
*
bios
=
&
dev_priv
->
VBIOS
;
struct
nvbios
*
bios
=
&
dev_priv
->
vbios
;
uint32_t
mc
,
script
=
0
,
or
;
list_for_each_entry
(
encoder
,
&
dev
->
mode_config
.
encoder_list
,
head
)
{
...
...
@@ -710,7 +710,7 @@ nv50_display_script_select(struct drm_device *dev, struct dcb_entry *dcbent,
switch
(
dcbent
->
type
)
{
case
OUTPUT_LVDS
:
script
=
(
mc
>>
8
)
&
0xf
;
if
(
bios
->
pub
.
fp_no_ddc
)
{
if
(
bios
->
fp_no_ddc
)
{
if
(
bios
->
fp
.
dual_link
)
script
|=
0x0100
;
if
(
bios
->
fp
.
if_is_24bit
)
...
...
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