PERFORCE change 30343 for review
Marcel Moolenaar
marcel at FreeBSD.org
Thu May 1 13:57:31 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=30343
Change 30343 by marcel at marcel_nfs on 2003/05/01 13:57:09
Integrate (using -I) all sio changes on the ia64 branch
with this branch. Two exceptions: files.i386 and files.ia64
were edited because they contained vga(4) changes. The
changes manually made in files.ia64 are identical to those
on the ia64 branch. The changes made in files.i386 include
the addition of a second sio_isa.c rule: sio_isa.c needs
to be included if both the sio and acpi options are defined,
irrespective of whether isa is defined.
This merge includes:
o Seperation of the sio(4) low-level console code in
sio_cons.c. We use a static softc for the UART used
as console and replace the dynamic softc with the
static softc when we find the sio during bus
enumeration. This guarantees that we preserve state
and also automagically avoids that we have to know
in advance which sio device is the console (since
we don't care anymore).
o Addition of sio_machdep.c to provide the low-level
console code with tag and handle information (among
other things) to keep MI code clean. The MD code
can use whatever means suitable to come up with the
right tag and handle: on i386 this is done by using
the hints, on ia64 we use the HCDP table first and
then the hints and on alpha we use the console
structures for that. Support of sparc64, amd64 and
powerpc. needs to be added when appropriate.
o Add code to detect the (receiver) FIFO size. This
avoids having to fiddle with hints and flags. The
assumption is that the transmitter FIFO is at least
the same size currently (we don't try to detect that
seperately).
o Add support for hint.sio.X.baud so that we can step
away from depending on pre-compiled default baudrates.
o In case it's not clear already: this merge adds support
for memory mapped I/O. The driver is fully newbusified,
except for the barriers.
This merge axes (either permanently or temporarily):
o Remove support for multi-port cards. The intend is
to us puc(4) for that. The sio driver is to remain
pure as much as possible. Handling multi-port cards
somewhere else also avoids adding MD code in an
otherwise MI driver.
o Remove most of the sio flags. Some are redundant now,
other need to find there way back. Hopefully we can
avoid the same mess.
o Remove support for GDB. This definitely has to come
back, but needs to be done in the same MI/MD way as
for the console. On ia64 (at least) the firmware can
provide the port to use for debugging, which makes
it a dynamic property that should be handled pretty
much the same as the console itself.
NOTE: pc98 seems to be the odd-ball due to having the
sio driver in pc98 specific source files. I don't know
to what extend sio/pc98 is different and whether we
can integrate it here.
NOTE ALSO: most (if not all) if this change the interaction
with the hardware, not the high level code that deals with
it being a tty. Provided the hardware is properly accessed,
nothing should change functionally.
NOTE ALSO WIK: this driver has so far been used successfully
on ia64 and has had testing on both i386 and alpha.
Affected files ...
.. //depot/projects/sio/sys/alpha/alpha/api_up1000.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_1000a.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_2100_a50.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_2100_a500.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_axppci_33.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_eb164.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_eb64plus.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_kn20aa.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_kn300.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_st550.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/dec_st6600.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/machdep.c#2 integrate
.. //depot/projects/sio/sys/alpha/alpha/sio_machdep.c#1 branch
.. //depot/projects/sio/sys/conf/files#2 integrate
.. //depot/projects/sio/sys/conf/files.alpha#2 integrate
.. //depot/projects/sio/sys/conf/files.i386#2 edit
.. //depot/projects/sio/sys/conf/files.ia64#2 edit
.. //depot/projects/sio/sys/conf/files.sparc64#2 integrate
.. //depot/projects/sio/sys/dev/puc/puc.c#2 integrate
.. //depot/projects/sio/sys/dev/puc/pucdata.c#2 integrate
.. //depot/projects/sio/sys/dev/sio/sio_cons.c#1 branch
.. //depot/projects/sio/sys/dev/sio/sio_ebus.c#2 integrate
.. //depot/projects/sio/sys/dev/sio/sio_isa.c#2 integrate
.. //depot/projects/sio/sys/dev/sio/sio_puc.c#2 integrate
.. //depot/projects/sio/sys/dev/sio/siovar.h#2 integrate
.. //depot/projects/sio/sys/ia64/ia64/sio_machdep.c#1 branch
Differences ...
==== //depot/projects/sio/sys/alpha/alpha/api_up1000.c#2 (text+ko) ====
@@ -55,8 +55,6 @@
void api_up1000_init(void);
static void api_up1000_cons_init(void);
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
void
@@ -81,30 +79,13 @@
struct ctb *ctb;
irongate_init();
-#ifdef DDB
- siogdbattach(0x2f8, 57600);
-#endif
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- {
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10))
- */
- DELAY(160000000 / comcnrate);
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
- break;
- }
+ break;
case 3:
/* display console ... */
==== //depot/projects/sio/sys/alpha/alpha/dec_1000a.c#2 (text+ko) ====
@@ -93,11 +93,6 @@
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
-
void dec_1000a_init(int);
static void dec_1000a_cons_init(void);
@@ -112,8 +107,6 @@
static void dec_1000a_intr_enable(int);
static void dec_1000a_intr_init(void);
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
@@ -185,35 +178,12 @@
apecs_init();
}
-#ifdef DDB
- siogdbattach(0x2f8, 57600);
-#endif
-
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- {
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10)).
- */
- DELAY(160000000 / comcnrate);
-
- /*
- * Force a comconsole on com1 if the SRM has a serial
- * console.
- */
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
- break;
- }
+ break;
case 3:
/* display console ... */
==== //depot/projects/sio/sys/alpha/alpha/dec_2100_a50.c#2 (text+ko) ====
@@ -51,10 +51,6 @@
#include <alpha/pci/apecsvar.h>
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
void dec_2100_a50_init(void);
static void dec_2100_a50_cons_init(void);
@@ -63,8 +59,6 @@
void sio_intr_disestablish(int);
void sio_intr_setup(void);
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
const struct alpha_variation_table dec_2100_a50_variations[] = {
@@ -110,32 +104,12 @@
apecs_init();
-#ifdef DDB
- siogdbattach(0x2f8, 9600);
-#endif
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- {
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10)).
- */
- DELAY(160000000 / comcnrate);
- /*
- * Force a comconsole on com1 if the SRM has a serial console.
- */
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
- break;
- }
+ break;
case 3:
/* display console ... */
==== //depot/projects/sio/sys/alpha/alpha/dec_2100_a500.c#2 (text+ko) ====
@@ -44,17 +44,11 @@
#include <alpha/pci/t2reg.h>
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
void dec_2100_a500_init(int);
static void dec_2100_a500_cons_init(void);
static void dec_2100_a500_intr_init(void);
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
void
@@ -97,29 +91,11 @@
struct ctb *ctb;
t2_init();
-#ifdef DDB
- siogdbattach(0x2f8, 9600);
-#endif
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10))
- */
- DELAY(160000000 / comcnrate);
- /*
- * force a comconsole on com1 if the SRM has a serial console
- */
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
break;
case 3:
==== //depot/projects/sio/sys/alpha/alpha/dec_axppci_33.c#2 (text+ko) ====
@@ -48,17 +48,11 @@
#include <alpha/pci/lcavar.h>
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
void dec_axppci_33_init(void);
static void dec_axppci_33_cons_init(void);
static int dec_axppci_33_intr_route (device_t, device_t, int);
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
const struct alpha_variation_table dec_axppci_33_variations[] = {
@@ -121,32 +115,12 @@
lca_init();
-#ifdef DDB
- siogdbattach(0x2f8, 9600);
-#endif
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- {
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10))
- */
- DELAY(160000000 / comcnrate);
- /*
- * force a comconsole on com1 if the SRM has a serial console
- */
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
- break;
- }
+ break;
case 3:
/* display console ... */
==== //depot/projects/sio/sys/alpha/alpha/dec_eb164.c#2 (text+ko) ====
@@ -47,11 +47,6 @@
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
-
void dec_eb164_init(void);
static void dec_eb164_cons_init(void);
static void eb164_intr_init(void);
@@ -60,8 +55,6 @@
extern void eb164_intr_enable_icsr(int irq);
extern void eb164_intr_disable_icsr(int irq);
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
void
@@ -95,35 +88,12 @@
cia_init();
-#ifdef DDB
- siogdbattach(0x2f8, 57600);
-#endif
-
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- {
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10))
- */
- DELAY(160000000 / comcnrate);
-
- /*
- * Force a comconsole on com1 if the SRM has a serial
- * console.
- */
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
- break;
- }
+ break;
case 3:
/* display console ... */
==== //depot/projects/sio/sys/alpha/alpha/dec_eb64plus.c#2 (text+ko) ====
@@ -67,11 +67,6 @@
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
-
void dec_eb64plus_init(void);
static void dec_eb64plus_cons_init(void);
static void dec_eb64plus_intr_init(void);
@@ -82,7 +77,6 @@
extern const char * bootdev_protocol(void);
extern int bootdev_boot_dev_type(void);
-extern int siocnattach(int, int);
extern int sccnattach(void);
const struct alpha_variation_table dec_eb64plus_variations[] = {
@@ -131,26 +125,7 @@
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- {
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10))
- */
- DELAY(160000000 / comcnrate);
-
- /*
- * force a comconsole on com1 if the SRM has a serial
- * console.
- */
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
- break;
- }
+ break;
case 3:
#ifdef DEV_SC
==== //depot/projects/sio/sys/alpha/alpha/dec_kn20aa.c#2 (text+ko) ====
@@ -49,11 +49,6 @@
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
-
void dec_kn20aa_init(void);
static void dec_kn20aa_cons_init(void);
static void dec_kn20aa_intr_init(void);
@@ -61,8 +56,6 @@
static void dec_kn20aa_intr_disable(int);
static void dec_kn20aa_intr_enable(int);
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
#if 0
@@ -104,29 +97,12 @@
cia_init();
-#ifdef DDB
- siogdbattach(0x2f8, 9600);
-#endif
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- {
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10))
- */
- DELAY(160000000 / comcnrate);
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
- break;
- }
+ break;
case 3:
/* display console ... */
==== //depot/projects/sio/sys/alpha/alpha/dec_kn300.c#2 (text+ko) ====
@@ -57,11 +57,6 @@
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
-
void dec_kn300_init(void);
void dec_kn300_cons_init(void);
@@ -73,8 +68,6 @@
};
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
void
@@ -103,26 +96,12 @@
struct ctb *ctb;
mcbus_init();
-#ifdef DDB
- siogdbattach(0x2f8, 57600);
-#endif
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10))
- */
- DELAY(160000000 / comcnrate);
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
break;
case 3:
==== //depot/projects/sio/sys/alpha/alpha/dec_st550.c#2 (text+ko) ====
@@ -54,11 +54,6 @@
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
-
void st550_init(void);
static void st550_cons_init(void);
static void st550_intr_init(void);
@@ -70,8 +65,6 @@
#define ST550_PCI_IRQ_BEGIN 8
#define ST550_PCI_MAX_IRQ 47
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
void
@@ -102,27 +95,11 @@
cia_init();
-#ifdef DDB
- siogdbattach(0x2f8, 57600);
-#endif
-
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10))
- */
- DELAY(160000000 / comcnrate);
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
break;
case 3:
==== //depot/projects/sio/sys/alpha/alpha/dec_st6600.c#2 (text+ko) ====
@@ -46,11 +46,6 @@
#include "opt_dev_sc.h"
-#ifndef CONSPEED
-#define CONSPEED TTYDEF_SPEED
-#endif
-static int comcnrate = CONSPEED;
-
void st6600_init(void);
static void st6600_cons_init(void);
static void st6600_intr_init(void);
@@ -58,8 +53,6 @@
#define ST6600_PCI_IRQ_BEGIN 8
#define ST6600_PCI_MAX_IRQ 63
-extern int siocnattach(int, int);
-extern int siogdbattach(int, int);
extern int sccnattach(void);
void
@@ -85,30 +78,13 @@
struct ctb *ctb;
tsunami_init();
-#ifdef DDB
- siogdbattach(0x2f8, 57600);
-#endif
ctb = (struct ctb *)(((caddr_t)hwrpb) + hwrpb->rpb_ctb_off);
switch (ctb->ctb_term_type) {
case 2:
/* serial console ... */
- /* XXX */
- {
- /*
- * Delay to allow PROM putchars to complete.
- * FIFO depth * character time,
- * character time = (1000000 / (defaultrate / 10))
- */
- DELAY(160000000 / comcnrate);
- comconsole = 0;
- if (siocnattach(0x3f8, comcnrate))
- panic("can't init serial console");
-
- boothowto |= RB_SERIAL;
- break;
- }
+ break;
case 3:
/* display console ... */
==== //depot/projects/sio/sys/alpha/alpha/machdep.c#2 (text+ko) ====
@@ -119,6 +119,7 @@
#include <sys/sysctl.h>
#include <sys/uio.h>
#include <sys/linker.h>
+#include <sys/cons.h>
#include <net/netisr.h>
#include <vm/vm.h>
#include <vm/vm_kern.h>
@@ -579,10 +580,11 @@
* Initalize the real console, so the the bootstrap console is
* no longer necessary.
*/
- if (platform.cons_init) {
+ if (platform.cons_init)
platform.cons_init();
- promcndetach();
- }
+ promcndetach();
+ cninit();
+
/* NO MORE FIRMWARE ACCESS ALLOWED */
#ifdef _PMAP_MAY_USE_PROM_CONSOLE
/*
==== //depot/projects/sio/sys/conf/files#2 (text+ko) ====
@@ -649,6 +649,8 @@
dev/si/si_eisa.c optional si eisa
dev/si/si_isa.c optional si isa
dev/si/si_pci.c optional si pci
+dev/sio/sio.c optional sio
+dev/sio/sio_cons.c optional sio
dev/sio/sio_ebus.c optional sio ebus
dev/sio/sio_pccard.c optional sio card
dev/sio/sio_pccard.c optional sio pccard
==== //depot/projects/sio/sys/conf/files.alpha#2 (text+ko) ====
@@ -78,6 +78,7 @@
alpha/alpha/promcons.c standard
alpha/alpha/prom_disp.s standard
alpha/alpha/sgmap.c standard
+alpha/alpha/sio_machdep.c optional sio
alpha/alpha/support.s standard
alpha/alpha/swtch.s standard
alpha/alpha/sys_machdep.c standard
@@ -178,7 +179,6 @@
dev/kbd/kbd.c optional kbd
dev/kbd/kbd.c optional sc
dev/kbd/kbd.c optional ukbd
-dev/sio/sio.c optional sio
dev/sio/sio_isa.c optional sio isa
dev/syscons/schistory.c optional sc
dev/syscons/scmouse.c optional sc
==== //depot/projects/sio/sys/conf/files.i386#2 (text+ko) ====
@@ -131,7 +131,7 @@
dev/sbni/if_sbni.c optional sbni
dev/sbni/if_sbni_isa.c optional sbni isa
dev/sbni/if_sbni_pci.c optional sbni pci
-dev/sio/sio.c optional sio
+dev/sio/sio_isa.c optional sio acpi
dev/sio/sio_isa.c optional sio isa
dev/sr/if_sr_isa.c optional sr isa
dev/syscons/apm/apm_saver.c optional apm_saver apm
@@ -230,6 +230,7 @@
i386/i386/perfmon.c optional perfmon
i386/i386/perfmon.c optional perfmon profiling-routine
i386/i386/pmap.c standard
+i386/i386/sio_machdep.c optional sio
i386/i386/support.s standard
i386/i386/swtch.s standard
i386/i386/sys_machdep.c standard
==== //depot/projects/sio/sys/conf/files.ia64#2 (text+ko) ====
@@ -34,7 +34,7 @@
dev/kbd/kbd.c optional kbd
dev/kbd/kbd.c optional sc
dev/kbd/kbd.c optional ukbd
-dev/sio/sio.c optional sio
+dev/sio/sio_isa.c optional sio acpi
dev/sio/sio_isa.c optional sio isa
dev/syscons/schistory.c optional sc
dev/syscons/scmouse.c optional sc
@@ -85,6 +85,7 @@
ia64/ia64/sal.c standard
ia64/ia64/sapic.c standard
ia64/ia64/setjmp.s standard
+ia64/ia64/sio_machdep.c optional sio
ia64/ia64/ssc.c optional ski
ia64/ia64/sscdisk.c optional ski
ia64/ia64/support.s standard
==== //depot/projects/sio/sys/conf/files.sparc64#2 (text+ko) ====
@@ -15,7 +15,6 @@
dev/ofw/ofw_console.c optional ofw_console
dev/ofw/openfirm.c standard
dev/ofw/openfirmio.c standard
-dev/sio/sio.c optional sio
dev/sio/sio_isa.c optional sio isa
geom/geom_bsd.c standard
geom/geom_bsd_enc.c standard
==== //depot/projects/sio/sys/dev/puc/puc.c#2 (text+ko) ====
@@ -315,9 +315,6 @@
continue;
}
device_set_ivars(sc->sc_ports[i].dev, pdev);
- device_set_desc(sc->sc_ports[i].dev, sc->sc_desc->name);
- if (!bootverbose)
- device_quiet(sc->sc_ports[i].dev);
#ifdef PUC_DEBUG
printf("puc: type %d, bar %x, offset %x\n",
sc->sc_desc->ports[i].type,
==== //depot/projects/sio/sys/dev/puc/pucdata.c#2 (text+ko) ====
@@ -49,6 +49,17 @@
const struct puc_device_description puc_devices[] = {
+ { "Diva Serial [GSP] Multiport UART",
+ NULL,
+ { 0x103c, 0x1048, 0x103c, 0x1282 },
+ { 0xffff, 0xffff, 0xffff, 0xffff },
+ {
+ { PUC_PORT_TYPE_COM, 0x10, 0x00, 0, PUC_FLAGS_MEMORY },
+ { PUC_PORT_TYPE_COM, 0x10, 0x10, 0, PUC_FLAGS_MEMORY },
+ { PUC_PORT_TYPE_COM, 0x10, 0x38, 0, PUC_FLAGS_MEMORY },
+ },
+ },
+
{ "Comtrol RocketPort 550/4 RJ45",
NULL,
{ 0x11fe, 0x8014, 0, 0 },
==== //depot/projects/sio/sys/dev/sio/sio_ebus.c#2 (text+ko) ====
@@ -34,6 +34,9 @@
#include <sys/tty.h>
#include <machine/bus.h>
+#include <machine/resource.h>
+
+#include <sys/rman.h>
#include <dev/sio/siovar.h>
@@ -55,11 +58,9 @@
static driver_t sio_ebus_driver = {
sio_driver_name,
sio_ebus_methods,
- 0,
+ sizeof(struct com_s),
};
-DRIVER_MODULE(sio, ebus, sio_ebus_driver, sio_devclass, 0, 0);
-
/* Needed for EBus attach and sparc64 console support */
char *sio_ofw_names[] = {
"serial",
@@ -91,23 +92,31 @@
}
static int
-sio_ebus_probe(dev)
- device_t dev;
+sio_ebus_probe(device_t dev)
{
- char *n;
+ struct com_s *com;
+ char *n;
n = ebus_get_name(dev);
if (!sio_ofw_inlist(n, sio_ofw_names) && (strcmp(n, "serial") != 0 ||
!sio_ofw_inlist(ebus_get_compat(dev), sio_ofw_compat)))
return (ENXIO);
- /* Do not probe IRQ - isa_irq_pending() does not work for ebus. */
- return (sioprobe(dev, 0, 0UL, 1));
+
+ com = device_get_softc(dev);
+ com->addr_rid = 0;
+ com->addr_type = SYS_RES_IOPORT;
+ com->addr_res = bus_alloc_resource(dev, com->addr_type, &com->addr_rid,
+ 0, ~0, 8, RF_ACTIVE);
+ if (com->addr_res == NULL)
+ return (ENXIO);
+ return (sioprobe(dev));
}
static int
-sio_ebus_attach(dev)
- device_t dev;
+sio_ebus_attach(device_t dev)
{
- return (sioattach(dev, 0, 0UL));
+ return (sioattach(dev));
}
+
+DRIVER_MODULE(sio, ebus, sio_ebus_driver, sio_devclass, 0, 0);
==== //depot/projects/sio/sys/dev/sio/sio_isa.c#2 (text+ko) ====
@@ -24,6 +24,8 @@
* $FreeBSD: src/sys/dev/sio/sio_isa.c,v 1.10 2003/03/11 16:49:06 takawata Exp $
*/
+#include "opt_isa.h"
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
@@ -33,10 +35,13 @@
#include <sys/malloc.h>
#include <sys/mutex.h>
#include <sys/module.h>
+#include <sys/timepps.h>
#include <sys/tty.h>
-#include <machine/bus_pio.h>
+
#include <machine/bus.h>
-#include <sys/timepps.h>
+#include <machine/resource.h>
+
+#include <sys/rman.h>
#include <dev/sio/siovar.h>
@@ -50,14 +55,13 @@
/* Device interface */
DEVMETHOD(device_probe, sio_isa_probe),
DEVMETHOD(device_attach, sio_isa_attach),
-
{ 0, 0 }
};
static driver_t sio_isa_driver = {
sio_driver_name,
sio_isa_methods,
- 0,
+ sizeof(struct com_s),
};
static struct isa_pnp_id sio_ids[] = {
@@ -148,21 +152,38 @@
};
static int
-sio_isa_probe(dev)
- device_t dev;
+sio_isa_probe(device_t dev)
{
+ struct com_s *com;
+
/* Check isapnp ids */
if (ISA_PNP_PROBE(device_get_parent(dev), dev, sio_ids) == ENXIO)
return (ENXIO);
- return (sioprobe(dev, 0, 0UL, 0));
+
+ com = device_get_softc(dev);
+ com->addr_rid = 0;
+ com->addr_type = SYS_RES_IOPORT;
+ com->addr_res = bus_alloc_resource(dev, com->addr_type, &com->addr_rid,
+ 0, ~0, 8, RF_ACTIVE);
+ if (com->addr_res == NULL) {
+ com->addr_rid = 0;
+ com->addr_type = SYS_RES_MEMORY;
+ com->addr_res = bus_alloc_resource(dev, com->addr_type,
+ &com->addr_rid, 0, ~0, 8, RF_ACTIVE);
+ if (com->addr_res == NULL)
+ return (ENXIO);
+ }
+ return (sioprobe(dev));
}
static int
-sio_isa_attach(dev)
- device_t dev;
+sio_isa_attach(device_t dev)
{
- return (sioattach(dev, 0, 0UL));
+
+ return (sioattach(dev));
}
+DRIVER_MODULE(sio, acpi, sio_isa_driver, sio_devclass, 0, 0);
+#ifdef DEV_ISA
DRIVER_MODULE(sio, isa, sio_isa_driver, sio_devclass, 0, 0);
-DRIVER_MODULE(sio, acpi, sio_isa_driver, sio_devclass, 0, 0);
+#endif
==== //depot/projects/sio/sys/dev/sio/sio_puc.c#2 (text+ko) ====
@@ -36,9 +36,10 @@
#include <sys/mutex.h>
#include <sys/module.h>
#include <sys/tty.h>
-#include <machine/bus_pio.h>
#include <machine/bus.h>
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list