- Keep the base address in struct uart_bas for sab82532 and z8530 modules.

- Remove buggy uart_cpu_busaddr() function.
This commit is contained in:
Yoshihiro Takahashi 2003-09-23 09:25:38 +00:00
parent 34c875bc30
commit c423dba334
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=120378
11 changed files with 17 additions and 51 deletions

View file

@ -36,6 +36,7 @@
* other timing related computations.
*/
struct uart_bas {
bus_addr_t iobase;
bus_space_tag_t bst;
bus_space_handle_t bsh;
u_int regshft;

View file

@ -267,6 +267,7 @@ uart_bus_probe(device_t dev, int regshft, int rclk, int rid)
* accordingly. In general, you don't want to permanently disrupt
* console I/O.
*/
sc->sc_bas.iobase = rman_get_start(sc->sc_rres);
sc->sc_bas.bsh = rman_get_bushandle(sc->sc_rres);
sc->sc_bas.bst = rman_get_bustag(sc->sc_rres);
sc->sc_bas.regshft = regshft;

View file

@ -67,7 +67,6 @@ struct uart_devinfo {
void *cookie; /* Type dependent use. */
};
bus_addr_t uart_cpu_busaddr(struct uart_bas *);
int uart_cpu_eqres(struct uart_bas *, struct uart_bas *);
int uart_cpu_getdev(int, struct uart_devinfo *);

View file

@ -39,13 +39,6 @@ __FBSDID("$FreeBSD$");
#include <dev/uart/uart.h>
#include <dev/uart/uart_cpu.h>
bus_addr_t
uart_cpu_busaddr(struct uart_bas *bas)
{
return (bas->bsh);
}
int
uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2)
{
@ -65,6 +58,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
return (ENXIO);
boothowto |= RB_SERIAL;
di->ops = uart_ns8250_ops;
di->bas.iobase = 0x3f8;
di->bas.bst = busspace_isa_io;
if (bus_space_map(di->bas.bst, 0x3f8, 8, 0, &di->bas.bsh) != 0)
return (ENXIO);
@ -102,6 +96,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
* only have ns8250 and successors on alpha.
*/
di->ops = uart_ns8250_ops;
di->bas.iobase = ivar;
di->bas.bst = busspace_isa_io;
if (bus_space_map(di->bas.bst, ivar, 8, 0, &di->bas.bsh) != 0)
return (ENXIO);

View file

@ -36,13 +36,6 @@ __FBSDID("$FreeBSD$");
#include <dev/uart/uart.h>
#include <dev/uart/uart_cpu.h>
bus_addr_t
uart_cpu_busaddr(struct uart_bas *bas)
{
return (bas->bsh);
}
int
uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2)
{
@ -82,6 +75,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
* ns8250 and successors on i386.
*/
di->ops = uart_ns8250_ops;
di->bas.iobase = ivar;
di->bas.bst = AMD64_BUS_SPACE_IO;
if (bus_space_map(di->bas.bst, ivar, 8, 0, &di->bas.bsh) != 0)
return (ENXIO);

View file

@ -36,13 +36,6 @@ __FBSDID("$FreeBSD$");
#include <dev/uart/uart.h>
#include <dev/uart/uart_cpu.h>
bus_addr_t
uart_cpu_busaddr(struct uart_bas *bas)
{
return (bas->bsh);
}
int
uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2)
{
@ -82,6 +75,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
* ns8250 and successors on i386.
*/
di->ops = uart_ns8250_ops;
di->bas.iobase = ivar;
di->bas.bst = I386_BUS_SPACE_IO;
if (bus_space_map(di->bas.bst, ivar, 8, 0, &di->bas.bsh) != 0)
return (ENXIO);

View file

@ -44,13 +44,6 @@ static int dig64_to_uart_parity[] = {
UART_PARITY_ODD, UART_PARITY_MARK, UART_PARITY_SPACE
};
bus_addr_t
uart_cpu_busaddr(struct uart_bas *bas)
{
return (bas->bsh);
}
int
uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2)
{
@ -82,13 +75,13 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
continue;
di->ops = uart_ns8250_ops;
di->bas.iobase = (ent->address.addr_high << 32) +
ent->address.addr_low;
di->bas.bst = IA64_BUS_SPACE_IO;
di->bas.bst = (ent->address.addr_space == 0)
? IA64_BUS_SPACE_MEM : IA64_BUS_SPACE_IO;
if (bus_space_map(di->bas.bst,
(ent->address.addr_high << 32) +
ent->address.addr_low,
8, 0, &di->bas.bsh) != 0)
if (bus_space_map(di->bas.bst, di->bas.iobase, 8, 0,
&di->bas.bsh) != 0)
return (ENXIO);
di->bas.regshft = 0;
di->bas.rclk = ent->pclock << 4;
@ -131,6 +124,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
* ns8250 and successors on i386.
*/
di->ops = uart_ns8250_ops;
di->bas.iobase = ivar;
di->bas.bst = IA64_BUS_SPACE_IO;
if (bus_space_map(di->bas.bst, ivar, 8, 0, &di->bas.bsh) != 0)
return (ENXIO);

View file

@ -36,13 +36,6 @@ __FBSDID("$FreeBSD$");
#include <dev/uart/uart.h>
#include <dev/uart/uart_cpu.h>
bus_addr_t
uart_cpu_busaddr(struct uart_bas *bas)
{
return (bas->bsh->bsh_base);
}
int
uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2)
{
@ -87,6 +80,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
di->ops = uart_ns8250_ops;
else
di->ops = uart_i8251_ops;
di->bas.iobase = ivar;
di->bas.bst = I386_BUS_SPACE_IO;
if (bus_space_map(di->bas.bst, ivar, 8, 0, &di->bas.bsh) != 0)
return (ENXIO);

View file

@ -58,13 +58,6 @@ uart_cpu_channel(char *dev)
return (alias[len - 1] - 'a');
}
bus_addr_t
uart_cpu_busaddr(struct uart_bas *bas)
{
return (bas->bsh);
}
int
uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2)
{
@ -143,6 +136,7 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
return (ENXIO);
/* Fill in the device info. */
di->bas.iobase = addr;
di->bas.bst = &bst_store[devtype];
di->bas.bsh = sparc64_fake_bustag(space, addr, di->bas.bst);

View file

@ -42,8 +42,8 @@ __FBSDID("$FreeBSD$");
#define DEFAULT_RCLK 29491200
#define IS_CHANNEL_A(bas) ((uart_cpu_busaddr(bas) & 0x40) == 0x00)
#define IS_CHANNEL_B(bas) ((uart_cpu_busaddr(bas) & 0x40) == 0x40)
#define IS_CHANNEL_A(bas) (((bas)->iobase & 0x40) == 0x00)
#define IS_CHANNEL_B(bas) (((bas)->iobase & 0x40) == 0x40)
/*
* NOTE: To allow us to read the baudrate divisor from the chip, we

View file

@ -42,8 +42,8 @@ __FBSDID("$FreeBSD$");
#define DEFAULT_RCLK 307200
#define IS_CHANNEL_A(bas) ((uart_cpu_busaddr(bas) & 7) != 0)
#define IS_CHANNEL_B(bas) ((uart_cpu_busaddr(bas) & 7) == 0)
#define IS_CHANNEL_A(bas) (((bas)->iobase & 7) != 0)
#define IS_CHANNEL_B(bas) (((bas)->iobase & 7) == 0)
/* Multiplexed I/O. */
static __inline void