* Copyright (c) 1992 The Regents of the University of California.
* This code is derived from software contributed to Berkeley by
* Sony Corp. and Kazumasa Utashiro of Software Research Associates, Inc.
* %sccs.include.redist.c%
* from: $Hdr: fb_probe.c,v 4.300 91/06/09 06:32:57 root Rel41 $ SONY
* @(#)fb_probe.c 7.2 (Berkeley) %G%
#include <machine/fix_machine_type.h>
#include "../../iop/framebuf.h"
#include <news3400/iop/framebuf.h>
#include <news3400/fb/fbdefs.h>
static int cons_dev
= -1;
extern struct fbdevsw fbdevsw
[];
struct autodev autodev
[] = {
-1, (char *)0xf0600000, (char *)0xf0610000,
-1, (char *)0xf0620000, (char *)0xf0630000,
-1, (char *)0xf0640000, (char *)0xf0650000,
-1, (char *)0xf0660000, (char *)0xf0670000,
-1, (char *)0xf0680000, (char *)0xf0690000,
-1, (char *)0xf06a0000, (char *)0xf06b0000,
-1, (char *)0xf06c0000, (char *)0xf06d0000,
-1, (char *)0xf06e0000, (char *)0xf06f0000,
#endif /* defined(news1700) */
struct autodev autodev
[] = {
-1, (char *)0x20600000, (char *)0x20610000,
-1, (char *)0x20620000, (char *)0x20630000,
-1, (char *)0x20640000, (char *)0x20650000,
-1, (char *)0x20660000, (char *)0x20670000,
-1, (char *)0x20680000, (char *)0x20690000,
-1, (char *)0x206a0000, (char *)0x206b0000,
-1, (char *)0x206c0000, (char *)0x206d0000,
-1, (char *)0x206e0000, (char *)0x206f0000,
struct autodev autodev
[] = {
-1, (char *)0xb8600000, (char *)0xb8610000,
-1, (char *)0xb8620000, (char *)0xb8630000,
-1, (char *)0xb8640000, (char *)0xb8650000,
-1, (char *)0xb8660000, (char *)0xb8670000,
-1, (char *)0xb8680000, (char *)0xb8690000,
-1, (char *)0xb86a0000, (char *)0xb86b0000,
-1, (char *)0xb86c0000, (char *)0xb86d0000,
-1, (char *)0xb86e0000, (char *)0xb86f0000,
struct autodev autodev
[] = {
-1, (char *)0xee600000, (char *)0xee610000,
-1, (char *)0xee620000, (char *)0xee630000,
-1, (char *)0xee640000, (char *)0xee650000,
-1, (char *)0xee660000, (char *)0xee670000,
-1, (char *)0xee680000, (char *)0xee690000,
-1, (char *)0xee6a0000, (char *)0xee6b0000,
-1, (char *)0xee6c0000, (char *)0xee6d0000,
-1, (char *)0xee6e0000, (char *)0xee6f0000,
return (unit
< nfbdev
? unit
: -1);
for (i
= 0; i
< nfbdev
; i
++)
if (i
!= cons_dev
&& --unit
== 0)
for (i
= 0; i
< nfbdev
; i
++)
if (fbdev
[i
].type
== type
&& fbdev
[i
].unit
== unit
)
if (autodev
[i
].type
!= -1)
return (autodev
[i
].type
);
for (i
= 0; i
< 8; i
++) {
if (badaddr(autodev
[i
].base
, 1)) {
if (*(long *)autodev
[i
].base
!= OMAGIC
) {
switch((*(int *)(autodev
[i
].base
+ 0x20))) {
autodev
[i
].type
= FB_NWB514
;
autodev
[i
].type
= FB_NWB251
;
autodev
[i
].type
= FB_NWB518
;
autodev
[i
].type
= FB_NWB254
;
autodev
[i
].type
= FB_NWB257
;
autodev
[i
].type
= FB_NWB256
;
autodev
[i
].type
= FB_SLB101
;
autodev
[i
].type
= FB_NWB255
;
switch (dipsw
& SW_CONSOLE
) {
cons_dev
= search_fbdev(FB_NWB225
, 0);
cons_dev
= search_fbdev(FB_NWB512
, 0);
if ((cons_dev
= search_fbdev(FB_LCDM
, 0)) >= 0)
if ((cons_dev
= search_fbdev(FB_POPM
, 0)) >= 0)
if ((cons_dev
= search_fbdev(FB_POPC
, 0)) >= 0)
if ((cons_dev
= search_fbdev(FB_NWB252
, 0)) >= 0)
if ((cons_dev
= search_fbdev(FB_NWB253
, 0)) >= 0)
cons_dev
= search_fbdev(search_autocons(), 0);
consfb
= &fbdev
[cons_dev
];
register struct fbdevsw
*pfsw
= fbdevsw
;
for (i
= 0; i
< pfsw
->num
; i
++) {
if (fbdev
[j
].type
= (*pfsw
->fb_probe
)(i
, &fbdev
[j
])) {
(*pfsw
->fb_setup
)(&fbdev
[j
], dipsw
);