1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include <stdio.h>
#include <stdint.h>
#include <nouveau_class.h>
#include <nouveau_pushbuf.h>
#include <nouveau_notifier.h>
#include "screen.h"
#include "object.h"
#include "fifo.h"
void image_pattern_init(void)
{
struct nouveau_grobj *subchImagePattern = grobj[NvSubImagePattern];
printf("-- Image pattern, init\n");
BEGIN_RING(chan, subchImagePattern, NV04_IMAGE_PATTERN_DMA_NOTIFY, 1);
OUT_RING (chan, notifier->handle);
BEGIN_RING(chan, subchImagePattern, NV04_IMAGE_PATTERN_MONOCHROME_FORMAT, 3);
OUT_RING (chan, NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_CGA6);
OUT_RING (chan, NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_8X8);
OUT_RING (chan, NV04_IMAGE_PATTERN_PATTERN_SELECT_MONO);
BEGIN_RING(chan, subchImagePattern, NV04_IMAGE_PATTERN_COLOR_FORMAT, 1);
OUT_RING (chan, (screen_bpp == 32)
? NV04_IMAGE_PATTERN_COLOR_FORMAT_A8R8G8B8
: NV04_IMAGE_PATTERN_COLOR_FORMAT_A16R5G6B5
);
BEGIN_RING(chan, subchImagePattern, NV04_IMAGE_PATTERN_MONOCHROME_COLOR0, 4);
OUT_RING (chan, 0x5a6b7d8d); /* color for bit=0 */
OUT_RING (chan, 0xf9e8d7c6); /* color for bit=1 */
OUT_RING (chan, 0x5a5a5a5a); /* pattern */
OUT_RING (chan, 0xaa55aa55);
FIRE_RING(chan);
}
|