Commit 8ea943dc authored by 127.0.0.1's avatar 127.0.0.1

No commit message

No commit message
parent e24d1063
......@@ -61,7 +61,29 @@ There are 2 sets of firmware for video decoding, one for kernel and one for user
The kernel parts can be obtained by doing a mmiotrace of a program using vdpau for video decoding, for example mplayer -vc ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau,ffodivxvdpau, somefile.mkv
XXXX: different from fifo extraction, document..
After you obtained the mmiotrace, look for the base offsets used by the firmware:
{{{
$ demmio vdpau-mmiotrace | grep P.*P.*XFER_EXT_BASE
[0] 437.753081 MMIO32 W 0x084110 0x004de400 PBSP.XFER_EXT_BASE <= 0x4de40000
[0] 445.278672 MMIO32 W 0x085110 0x004dde00 PVP.XFER_EXT_BASE <= 0x4dde0000
[0] 445.938745 MMIO32 W 0x086110 0x004dd800 PPPP.XFER_EXT_BASE <= 0x4dd80000
$ demmio vdpau-mmiotrace | less
/RAMIN32.*4de40000 would get you to the start of the mmiotrace, from my log I could see the RAMIN32 writes end at 4de50918, so I need to grab 4de[45].* for BSP firmware:
$ demmio vd-trace.xz 2>&1 | grep 'RAMIN32 .* 4de[45].* <=' | awk '{ print $7 }' | python -c \
"
import struct; import sys; fd = open(\"fuc084\", \"wb\");
for line in sys.stdin:
fd.write(struct.pack(\"@I\", int(line.rstrip(), 16)))
"
This was just for PBSP, but the same applies to PVP with fuc085, and PPPP with fuc086. Put the resulting files in /lib/firmware/nouveau/
Offsets may differ, and it is recommended to check you don't end up with too big or too small a file. It *looks* like mine are multiples of 1000 bytes, on the nvidia 310 drivers.
}}}
----
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment