Fri Aug 7 19:27:54 2009 UTC ()
set device properties for genfb, now wsdisplay attaches successfully
TODO: replace hardcoded values with reality


(macallan)
diff -r1.1 -r1.2 src/sys/arch/evbmips/gdium/autoconf.c

cvs diff -r1.1 -r1.2 src/sys/arch/evbmips/gdium/autoconf.c (switch to unified diff)

--- src/sys/arch/evbmips/gdium/autoconf.c 2009/08/06 00:50:25 1.1
+++ src/sys/arch/evbmips/gdium/autoconf.c 2009/08/07 19:27:54 1.2
@@ -1,112 +1,127 @@ @@ -1,112 +1,127 @@
1/* $NetBSD: autoconf.c,v 1.1 2009/08/06 00:50:25 matt Exp $ */ 1/* $NetBSD: autoconf.c,v 1.2 2009/08/07 19:27:54 macallan Exp $ */
2 2
3/* 3/*
4 * Copyright 2002 Wasabi Systems, Inc. 4 * Copyright 2002 Wasabi Systems, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Written by Simon Burge for Wasabi Systems, Inc. 7 * Written by Simon Burge for Wasabi Systems, Inc.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
11 * are met: 11 * are met:
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright 14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the 15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution. 16 * documentation and/or other materials provided with the distribution.
17 * 3. All advertising materials mentioning features or use of this software 17 * 3. All advertising materials mentioning features or use of this software
18 * must display the following acknowledgement: 18 * must display the following acknowledgement:
19 * This product includes software developed for the NetBSD Project by 19 * This product includes software developed for the NetBSD Project by
20 * Wasabi Systems, Inc. 20 * Wasabi Systems, Inc.
21 * 4. The name of Wasabi Systems, Inc. may not be used to endorse 21 * 4. The name of Wasabi Systems, Inc. may not be used to endorse
22 * or promote products derived from this software without specific prior 22 * or promote products derived from this software without specific prior
23 * written permission. 23 * written permission.
24 * 24 *
25 * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND 25 * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
27 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 27 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC 28 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC
29 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE. 35 * POSSIBILITY OF SUCH DAMAGE.
36 */ 36 */
37 37
38#include <sys/cdefs.h> 38#include <sys/cdefs.h>
39__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.1 2009/08/06 00:50:25 matt Exp $"); 39__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.2 2009/08/07 19:27:54 macallan Exp $");
40 40
41#include <sys/param.h> 41#include <sys/param.h>
42#include <sys/systm.h> 42#include <sys/systm.h>
43#include <sys/buf.h> 43#include <sys/buf.h>
44#include <sys/conf.h> 44#include <sys/conf.h>
45#include <sys/device.h> 45#include <sys/device.h>
46#include <sys/cpu.h> 46#include <sys/cpu.h>
47 47
48static void findroot(void); 48static void findroot(void);
49 49
50void 50void
51cpu_configure(void) 51cpu_configure(void)
52{ 52{
53 53
54 intr_init(); 54 intr_init();
55 55
56 /* Kick off autoconfiguration. */ 56 /* Kick off autoconfiguration. */
57 (void)splhigh(); 57 (void)splhigh();
58 if (config_rootfound("mainbus", NULL) == NULL) 58 if (config_rootfound("mainbus", NULL) == NULL)
59 panic("no mainbus found"); 59 panic("no mainbus found");
60 60
61 /* 61 /*
62 * Hardware interrupts will be enabled in 62 * Hardware interrupts will be enabled in
63 * sys/arch/mips/mips/mips3_clockintr.c:mips3_initclocks() 63 * sys/arch/mips/mips/mips3_clockintr.c:mips3_initclocks()
64 * to avoid hardclock(9) by CPU INT5 before softclockintr is 64 * to avoid hardclock(9) by CPU INT5 before softclockintr is
65 * initialized in initclocks(). 65 * initialized in initclocks().
66 */ 66 */
67} 67}
68 68
69void 69void
70cpu_rootconf(void) 70cpu_rootconf(void)
71{ 71{
72 findroot(); 72 findroot();
73 73
74 printf("boot device: %s\n", 74 printf("boot device: %s\n",
75 booted_device ? booted_device->dv_xname : "<unknown>"); 75 booted_device ? booted_device->dv_xname : "<unknown>");
76 76
77 setroot(booted_device, booted_partition); 77 setroot(booted_device, booted_partition);
78} 78}
79 79
80extern char bootstring[]; 80extern char bootstring[];
81extern int netboot; 81extern int netboot;
82 82
83static void 83static void
84findroot(void) 84findroot(void)
85{ 85{
86 struct device *dv; 86 struct device *dv;
87 87
88 if (booted_device) 88 if (booted_device)
89 return; 89 return;
90 90
91 if ((booted_device == NULL) && netboot == 0) 91 if ((booted_device == NULL) && netboot == 0)
92 for (dv = TAILQ_FIRST(&alldevs); dv != NULL; 92 for (dv = TAILQ_FIRST(&alldevs); dv != NULL;
93 dv = TAILQ_NEXT(dv, dv_list)) 93 dv = TAILQ_NEXT(dv, dv_list))
94 if (device_class(dv) == DV_DISK && 94 if (device_class(dv) == DV_DISK &&
95 device_is_a(dv, "wd")) 95 device_is_a(dv, "wd"))
96 booted_device = dv; 96 booted_device = dv;
97 97
98 /* 98 /*
99 * XXX Match up MBR boot specification with BSD disklabel for root? 99 * XXX Match up MBR boot specification with BSD disklabel for root?
100 */ 100 */
101 booted_partition = 0; 101 booted_partition = 0;
102 102
103 return; 103 return;
104} 104}
105 105
106void 106void
107device_register(struct device *dev, void *aux) 107device_register(struct device *dev, void *aux)
108{ 108{
 109 prop_dictionary_t dict;
 110
109 if ((booted_device == NULL) && (netboot == 1)) 111 if ((booted_device == NULL) && (netboot == 1))
110 if (device_class(dev) == DV_IFNET) 112 if (device_class(dev) == DV_IFNET)
111 booted_device = dev; 113 booted_device = dev;
 114 if (device_is_a(dev, "genfb")) {
 115 dict = device_properties(dev);
 116 /*
 117 * this is a hack
 118 * is_console and address need to be checked against reality
 119 */
 120 prop_dictionary_set_bool(dict, "is_console", 1);
 121 prop_dictionary_set_uint32(dict, "width", 1024);
 122 prop_dictionary_set_uint32(dict, "height", 600);
 123 prop_dictionary_set_uint32(dict, "depth", 16);
 124 prop_dictionary_set_uint32(dict, "linebytes", 2048);
 125 prop_dictionary_set_uint32(dict, "address", 0x04000000);
 126 }
112} 127}