Home | History | Annotate | Download | only in dev

Lines Matching refs:ga

1 /*	$NetBSD: ga.c,v 1.5 2009/11/07 07:27:43 cegger Exp $	*/
35 __KERNEL_RCSID(0, "$NetBSD: ga.c,v 1.5 2009/11/07 07:27:43 cegger Exp $");
52 bool ga_map(struct ga *);
53 void ga_clut_init(struct ga *);
54 void ga_vblank_start(const struct ga *);
55 void ga_bt463_reg(const struct ga *, int);
56 void ga_bt463_data(const struct ga *, int);
57 void ga_bt463_reg_data(const struct ga *, int, int);
59 void ga_dda_busy(const struct ga *);
60 void ga_ovl_init(const struct ga *);
61 void ga_id_init(const struct ga *);
62 void ga_block_clear(const struct ga *);
63 void ga_plane_mask_test(const struct ga *);
66 #define ga_reg_write(ga, ofs, val) \
67 (*(volatile uint32_t *)((ga)->reg_addr + (ofs)) = (val))
68 #define ga_reg_read(ga, ofs) \
69 (*(volatile uint32_t *)((ga)->reg_addr + (ofs)))
72 ga_init(struct ga *ga)
76 /* Map GA register and buffers */
77 if (ga->reg_addr == 0 && ga_map(ga) != 0)
80 /* This is 350 GA-ROM initialization sequence. */
81 if (ga->flags == 0x0000) {
82 ga_bt463_reg_data(ga, 0x201, 0x40);
83 ga_bt463_reg_data(ga, 0x202, 0x40);
84 ga_bt463_reg_data(ga, 0x203,
85 ((ga_reg_read(ga, 0xe00) & 2) << 6) | 0x40);
86 } else if (ga->flags == 0x0001) {
87 ga_bt463_reg_data(ga, 0x201, 0x40);
88 ga_bt463_reg_data(ga, 0x202, 0);
89 ga_bt463_reg_data(ga, 0x203,
90 ((ga_reg_read(ga, 0xe00) & 2) << 6) | 0x40);
91 ga_bt463_reg_data(ga, 0x204, 0xff); /* Display ON/OFF ? */
92 ga_bt463_reg_data(ga, 0x206, 0);
93 ga_bt463_reg_data(ga, 0x20a, 0);
97 ga_bt463_reg(ga, 0x300);
99 ga_bt463_data(ga, 0x00);
100 ga_bt463_data(ga, 0xe1);
101 ga_bt463_data(ga, 0x01);
104 ga_vblank_start(ga);
107 ga_bt463_reg(ga, 0x302);
109 ga_bt463_data(ga, 0x00);
110 ga_bt463_data(ga, 0xe3);
111 ga_bt463_data(ga, 0x21);
115 if (ga->flags != 0x0001) {
117 ga_bt463_reg(ga, 0x205);
119 ga_bt463_data(ga, 0xff);
123 ga_bt463_reg(ga, 0x209);
125 ga_bt463_data(ga, 0x00);
127 ga_clut_init(ga);
130 ga_bt463_reg(ga, 0x200);
132 ga_reg_write(ga, 0xc8c, 0);
133 ga_reg_write(ga, 0xc8c, 0);
134 ga_reg_write(ga, 0xc8c, 0);
137 if (ga_reg_read(ga, 0xe00) & 2)
138 ga_reg_write(ga, 0xe08, 0x790); /* 71Hz */
140 ga_reg_write(ga, 0xe08, 0x670); /* 60Hz */
142 ga_block_clear(ga);
143 ga_ovl_init(ga);
144 ga_id_init(ga);
147 ga_reg_write(ga, 0xc90, 0);
148 ga_reg_write(ga, 0xc94, 0);
149 ga_reg_write(ga, 0xca0, 0);
150 ga_reg_write(ga, 0xca4, 0);
152 ga_reg_write(ga, 0xc98, 0);
153 ga_reg_write(ga, 0xca8, 0);
160 ga_map(struct ga *ga)
164 ga->reg_addr = GA_REG_ADDR;
174 printf("can't map GA register.\n");
183 ga->reg_addr = (uint32_t)va;
190 ga_vblank_start(const struct ga *ga)
193 while ((ga_reg_read(ga, 0xe00) & 0x1) == 0) /* V-blank */
195 while ((ga_reg_read(ga, 0xe00) & 0x1) == 1)
202 ga_bt463_reg(const struct ga *ga, int r)
205 ga_reg_write(ga, 0xc80, r & 0xff);
206 ga_reg_write(ga, 0xc84, (r >> 8) & 0xff);
210 ga_bt463_data(const struct ga *ga, int v)
213 ga_reg_write(ga, 0xc88, v & 0xff);
217 ga_bt463_reg_data(const struct ga *ga, int r, int v)
220 ga_bt463_reg(ga, r);
221 ga_bt463_data(ga, v);
226 ga_clut_init(struct ga *ga)
249 ga_bt463_reg(ga, 0);
252 ga_reg_write(ga, 0xc8c, ga->clut[i][0] = ansi_color[i][0]);
253 ga_reg_write(ga, 0xc8c, ga->clut[i][1] = ansi_color[i][1]);
254 ga_reg_write(ga, 0xc8c, ga->clut[i][2] = ansi_color[i][2]);
260 ga_reg_write(ga, 0xc8c, ga->clut[i][0] = j);
261 ga_reg_write(ga, 0xc8c, ga->clut[i][1] = j);
262 ga_reg_write(ga, 0xc8c, ga->clut[i][2] = j);
269 ga_reg_write(ga, 0xc8c,
270 ga->clut[i][0] = compo6[r]);
271 ga_reg_write(ga, 0xc8c,
272 ga->clut[i][1] = compo6[g]);
273 ga_reg_write(ga, 0xc8c,
274 ga->clut[i][2] = compo6[b]);
281 ga_reg_write(ga, 0xc8c, ga->clut[i][0] = 0xff);
282 ga_reg_write(ga, 0xc8c, ga->clut[i][1] = 0xff);
283 ga_reg_write(ga, 0xc8c, ga->clut[i][2] = 0xff);
288 ga_reg_write(ga, 0xc8c, 0);
289 ga_reg_write(ga, 0xc8c, 0);
290 ga_reg_write(ga, 0xc8c, 0);
295 ga_clut_get(struct ga *ga)
299 ga_bt463_reg(ga, 0);
301 ga->clut[i][0] = ga_reg_read(ga, 0xc8c);
302 ga->clut[i][1] = ga_reg_read(ga, 0xc8c);
303 ga->clut[i][2] = ga_reg_read(ga, 0xc8c);
308 ga_clut_set(const struct ga *ga)
312 ga_bt463_reg(ga, 0);
314 ga_reg_write(ga, 0xc8c, ga->clut[i][0]);
315 ga_reg_write(ga, 0xc8c, ga->clut[i][1]);
316 ga_reg_write(ga, 0xc8c, ga->clut[i][2]);
323 ga_dda_busy(const struct ga *ga)
326 while ((ga_reg_read(ga, 0xf00) & 0x8000) == 0)
331 ga_ovl_init(const struct ga *ga)
335 ga_reg_write(ga, 0x400, 0xffffffff);
343 ga_id_init(const struct ga *ga)
354 ga_block_clear(const struct ga *ga)
358 ga_reg_write(ga, 0xe80, 0);
359 ga_reg_write(ga, 0x400, 0xffffff);
368 ga_plane_mask_test(const struct ga *ga)
372 ga_reg_write(ga, 0x400, 0xffffff);
375 ga_reg_write(ga, 0x400, 0xaaaaaa);
380 ga_reg_write(ga, 0x400, 0xffffff);
385 ga_reg_write(ga, 0x400, 0x555555);
389 ga_reg_write(ga, 0x400, 0xffffff);
397 ga_reg_write(ga, 0x400, 0xaaaaaa);
402 ga_reg_write(ga, 0x400, 0);
407 ga_reg_write(ga, 0x400, 0xffffff);
410 ga_reg_write(ga, 0xe80, 0xffffff);
411 ga_reg_write(ga, 0x400, 0xffffff);
418 ga_reg_write(ga, 0xe80, 0);
419 ga_reg_write(ga, 0x400, 0xaaaaaa);
425 ga_reg_write(ga, 0x400, 0x555555);