2 * linux/arch/alpha/kernel/console.c
4 * Architecture-specific specific support for VGA device on
9 #include <linux/init.h>
10 #include <linux/tty.h>
11 #include <linux/console.h>
14 #include <asm/machvec.h>
18 #ifdef CONFIG_VGA_HOSE
20 struct pci_controller
*pci_vga_hose
;
21 static struct resource alpha_vga
= {
27 static struct pci_controller
* __init
28 default_vga_hose_select(struct pci_controller
*h1
, struct pci_controller
*h2
)
30 if (h2
->index
< h1
->index
)
37 locate_and_init_vga(void *(*sel_func
)(void *, void *))
39 struct pci_controller
*hose
= NULL
;
40 struct pci_dev
*dev
= NULL
;
42 /* Default the select function */
43 if (!sel_func
) sel_func
= (void *)default_vga_hose_select
;
45 /* Find the console VGA device */
46 for(dev
=NULL
; (dev
=pci_get_class(PCI_CLASS_DISPLAY_VGA
<< 8, dev
));) {
50 hose
= sel_func(hose
, dev
->sysdata
);
53 /* Did we already initialize the correct one? Is there one? */
54 if (!hose
|| (conswitchp
== &vga_con
&& pci_vga_hose
== hose
))
57 /* Create a new VGA ioport resource WRT the hose it is on. */
58 alpha_vga
.start
+= hose
->io_space
->start
;
59 alpha_vga
.end
+= hose
->io_space
->start
;
60 request_resource(hose
->io_space
, &alpha_vga
);
62 /* Set the VGA hose and init the new console. */
65 do_take_over_console(&vga_con
, 0, MAX_NR_CONSOLES
-1, 1);
70 find_console_vga_hose(void)
72 u64
*pu64
= (u64
*)((u64
)hwrpb
+ hwrpb
->ctbt_offset
);
74 if (pu64
[7] == 3) { /* TERM_TYPE == graphics */
75 struct pci_controller
*hose
;
76 int h
= (pu64
[30] >> 24) & 0xff; /* console hose # */
79 * Our hose numbering DOES match the console's, so find
82 for (hose
= hose_head
; hose
; hose
= hose
->next
) {
83 if (hose
->index
== h
) break;
87 printk("Console graphics on hose %d\n", h
);