Port ppc driver to alpha.
Submitted by: Andrew M. Miklic <miklic@ibm.net>
This commit is contained in:
parent
d5865fe838
commit
5c885c3f83
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=60544
@ -116,6 +116,14 @@ device mcclock0 at isa? port 0x70
|
||||
device sio0 at isa? port IO_COM1 irq 4
|
||||
device sio1 at isa? port IO_COM2 irq 3 flags 0x50
|
||||
|
||||
# Parallel port
|
||||
device ppc0 at isa? irq 7
|
||||
device ppbus # Parallel port bus (required)
|
||||
device lpt # Printer
|
||||
device plip # TCP/IP over parallel
|
||||
device ppi # Parallel port interface device
|
||||
#device vpo # Requires scbus and da
|
||||
|
||||
# PCI Ethernet NICs.
|
||||
device de # DEC/Intel DC21x4x (``Tulip'')
|
||||
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
|
||||
|
@ -116,6 +116,14 @@ device mcclock0 at isa? port 0x70
|
||||
device sio0 at isa? port IO_COM1 irq 4
|
||||
device sio1 at isa? port IO_COM2 irq 3 flags 0x50
|
||||
|
||||
# Parallel port
|
||||
device ppc0 at isa? irq 7
|
||||
device ppbus # Parallel port bus (required)
|
||||
device lpt # Printer
|
||||
device plip # TCP/IP over parallel
|
||||
device ppi # Parallel port interface device
|
||||
#device vpo # Requires scbus and da
|
||||
|
||||
# PCI Ethernet NICs.
|
||||
device de # DEC/Intel DC21x4x (``Tulip'')
|
||||
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
|
||||
|
@ -61,6 +61,13 @@ breakpoint(void)
|
||||
/*
|
||||
* Bulk i/o (for IDE driver).
|
||||
*/
|
||||
static __inline void insb(u_int32_t port, void *buffer, size_t count)
|
||||
{
|
||||
u_int8_t *p = (u_int8_t *) buffer;
|
||||
while (count--)
|
||||
*p++ = inb(port);
|
||||
}
|
||||
|
||||
static __inline void insw(u_int32_t port, void *buffer, size_t count)
|
||||
{
|
||||
u_int16_t *p = (u_int16_t *) buffer;
|
||||
@ -75,6 +82,13 @@ static __inline void insl(u_int32_t port, void *buffer, size_t count)
|
||||
*p++ = inl(port);
|
||||
}
|
||||
|
||||
static __inline void outsb(u_int32_t port, const void *buffer, size_t count)
|
||||
{
|
||||
const u_int8_t *p = (const u_int8_t *) buffer;
|
||||
while (count--)
|
||||
outb(port, *p++);
|
||||
}
|
||||
|
||||
static __inline void outsw(u_int32_t port, const void *buffer, size_t count)
|
||||
{
|
||||
const u_int16_t *p = (const u_int16_t *) buffer;
|
||||
|
@ -170,6 +170,7 @@ dev/syscons/sysmouse.c optional sc
|
||||
isa/atkbd_isa.c optional atkbd
|
||||
isa/atkbdc_isa.c optional atkbdc
|
||||
isa/fd.c optional fd
|
||||
isa/ppc.c optional ppc
|
||||
isa/psm.c optional psm
|
||||
isa/sio.c optional sio
|
||||
isa/syscons_isa.c optional sc
|
||||
|
@ -15,6 +15,9 @@ DEC_3000_300 opt_cpu.h
|
||||
DEC_3000_500 opt_cpu.h
|
||||
DEC_1000A opt_cpu.h
|
||||
|
||||
PPC_PROBE_CHIPSET opt_ppc.h
|
||||
PPC_DEBUG opt_ppc.h
|
||||
|
||||
SHOW_BUSYBUFS
|
||||
PANIC_REBOOT_WAIT_TIME opt_panic.h
|
||||
|
||||
|
@ -1764,7 +1764,31 @@ ppc_probe(device_t dev)
|
||||
device_printf(dev, "cannot reserve I/O port range\n");
|
||||
goto error;
|
||||
}
|
||||
ppc->ppc_base = rman_get_start(ppc->res_ioport);
|
||||
|
||||
/* Assume we support the extended IO range of some ppc chipsets...*/
|
||||
|
||||
ppc->rid_extraio = 1;
|
||||
ppc->res_extraio =
|
||||
bus_alloc_resource(dev,
|
||||
SYS_RES_IOPORT,
|
||||
&ppc->rid_extraio,
|
||||
0,
|
||||
~0,
|
||||
IO_LPTSIZE,
|
||||
RF_ACTIVE);
|
||||
|
||||
/* If we cannot reserve the extra ports for the extended IO range,
|
||||
indicate this with a non-threatening message (this is not an error,
|
||||
so don't treat it as such)... */
|
||||
|
||||
if (ppc->res_extraio == 0) {
|
||||
|
||||
ppc->rid_extraio = 0;
|
||||
|
||||
device_printf(dev, "This ppc chipset does not support the extended I/O port range...no problem\n");
|
||||
}
|
||||
|
||||
ppc->ppc_base = rman_get_start(ppc->res_ioport);
|
||||
|
||||
ppc->ppc_flags = device_get_flags(dev);
|
||||
|
||||
|
@ -100,8 +100,8 @@ struct ppc_data {
|
||||
|
||||
device_t ppbus; /* parallel port chipset corresponding ppbus */
|
||||
|
||||
int rid_irq, rid_drq, rid_ioport;
|
||||
struct resource *res_irq, *res_drq, *res_ioport;
|
||||
int rid_irq, rid_drq, rid_ioport, rid_extraio;
|
||||
struct resource *res_irq, *res_drq, *res_ioport, *res_extraio;
|
||||
|
||||
void *intr_cookie;
|
||||
|
||||
|
@ -157,7 +157,15 @@
|
||||
#define IO_GSCSIZE 8 /* GeniScan GS-4500G hand scanner */
|
||||
#define IO_ICUSIZE 16 /* 8259A interrupt controllers */
|
||||
#define IO_KBDSIZE 16 /* 8042 Keyboard controllers */
|
||||
#define IO_LPTSIZE 8 /* LPT controllers, some use only 4 */
|
||||
|
||||
/* The following line was changed to support more architectures (simpler
|
||||
chipsets (like those for Alpha) only use 4, but more complex controllers
|
||||
(usually modern i386's) can use an additional 4; the probe to see if
|
||||
the additional 4 can be used by the specific chipset is now done in the ppc
|
||||
code by ppc_probe()... */
|
||||
|
||||
#define IO_LPTSIZE 4 /* LPT controllers, Alpha only uses 4 */
|
||||
|
||||
#define IO_MDASIZE 12 /* Monochrome display controllers */
|
||||
#define IO_NPXSIZE 16 /* 80387/80487 NPX registers */
|
||||
#define IO_PMPSIZE 2 /* 82347 power management peripheral */
|
||||
|
@ -1764,7 +1764,31 @@ ppc_probe(device_t dev)
|
||||
device_printf(dev, "cannot reserve I/O port range\n");
|
||||
goto error;
|
||||
}
|
||||
ppc->ppc_base = rman_get_start(ppc->res_ioport);
|
||||
|
||||
/* Assume we support the extended IO range of some ppc chipsets...*/
|
||||
|
||||
ppc->rid_extraio = 1;
|
||||
ppc->res_extraio =
|
||||
bus_alloc_resource(dev,
|
||||
SYS_RES_IOPORT,
|
||||
&ppc->rid_extraio,
|
||||
0,
|
||||
~0,
|
||||
IO_LPTSIZE,
|
||||
RF_ACTIVE);
|
||||
|
||||
/* If we cannot reserve the extra ports for the extended IO range,
|
||||
indicate this with a non-threatening message (this is not an error,
|
||||
so don't treat it as such)... */
|
||||
|
||||
if (ppc->res_extraio == 0) {
|
||||
|
||||
ppc->rid_extraio = 0;
|
||||
|
||||
device_printf(dev, "This ppc chipset does not support the extended I/O port range...no problem\n");
|
||||
}
|
||||
|
||||
ppc->ppc_base = rman_get_start(ppc->res_ioport);
|
||||
|
||||
ppc->ppc_flags = device_get_flags(dev);
|
||||
|
||||
|
@ -100,8 +100,8 @@ struct ppc_data {
|
||||
|
||||
device_t ppbus; /* parallel port chipset corresponding ppbus */
|
||||
|
||||
int rid_irq, rid_drq, rid_ioport;
|
||||
struct resource *res_irq, *res_drq, *res_ioport;
|
||||
int rid_irq, rid_drq, rid_ioport, rid_extraio;
|
||||
struct resource *res_irq, *res_drq, *res_ioport, *res_extraio;
|
||||
|
||||
void *intr_cookie;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user