These hackish changes have been sitting around for a while. Commit

them so they don't get lost. This driver will be overhauled later
on anyway to make it shareable between sh[3-5].
This commit is contained in:
scw 2002-09-28 11:08:13 +00:00
parent 02787a17bc
commit 3d776f64cf
1 changed files with 25 additions and 13 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: scif.c,v 1.3 2002/09/27 20:35:30 thorpej Exp $ */
/* $NetBSD: scif.c,v 1.4 2002/09/28 11:08:13 scw Exp $ */
/*-
* Copyright (C) 1999 T.Horiuchi and SAITOH Masanobu. All rights reserved.
@ -251,7 +251,7 @@ int scifisconsole = 0;
#ifdef SCIFCN_SPEED
unsigned int scifcn_speed = SCIFCN_SPEED;
#else
unsigned int scifcn_speed = 9600;
unsigned int scifcn_speed = 38400;
#endif
#define divrnd(n, q) (((n)*2/(q)+1)/2) /* divide and round off */
@ -350,11 +350,11 @@ InitializeScif(bus_space_tag_t bt, bus_space_handle_t bh, unsigned int bps)
/* Serial Mode Register */
/* 8bit,NonParity,Even,1Stop */
bus_space_write_2(bt, bh, SCIF_REG_SCSMR2, 0x00);
#if 0
/* Bit Rate Register */
bus_space_write_1(bt, bh, SCIF_REG_SCBRR2,
divrnd(cprc_clocks.cc_peripheral, 32 * bps) - 1);
#endif
/*
* wait 1mSec, because Send/Recv must begin 1 bit period after
* BRR is set.
@ -366,7 +366,9 @@ InitializeScif(bus_space_tag_t bt, bus_space_handle_t bh, unsigned int bps)
/* Send permission, Receive permission ON */
bus_space_write_2(bt, bh, SCIF_REG_SCSCR2,
SCIF_SCSCR2_TE | SCIF_SCSCR2_RE);
SCIF_SCSCR2_TE | SCIF_SCSCR2_RE | 0x0a);
bus_space_write_2(bt, bh, SCIF_REG_SCSPTR2, 0x85);
/* Serial Status Register */
/* Clear Status */
@ -412,6 +414,7 @@ scif_putc(bus_space_tag_t bt, bus_space_handle_t bh, unsigned char c)
static unsigned char
scif_getc(bus_space_tag_t bt, bus_space_handle_t bh)
{
#if 0
u_int8_t c, err_c;
u_int16_t err_c2;
@ -428,18 +431,15 @@ scif_getc(bus_space_tag_t bt, bus_space_handle_t bh)
}
c = bus_space_read_1(bt, bh, SCIF_REG_SCFDR2);
err_c = bus_space_read_2(bt, bh, SCIF_REG_SCFSR2);
err_c = bus_space_read_2(bt, bh, SCIF_REG_SCFSR2);
bus_space_write_2(bt, bh, SCIF_REG_SCFSR2,
bus_space_read_2(bt, bh, SCIF_REG_SCFSR2) &
~(SCIF_SCFSR2_ER | SCIF_SCFSR2_BRK |
SCIF_SCFSR2_RDF | SCIF_SCFSR2_DR));
err_c & ~(SCIF_SCFSR2_ER | SCIF_SCFSR2_BRK |
SCIF_SCFSR2_RDF | SCIF_SCFSR2_DR));
err_c2 = bus_space_read_2(bt, bh, SCIF_REG_SCLSR2);
bus_space_write_2(bt, bh, SCIF_REG_SCLSR2,
bus_space_read_2(bt, bh, SCIF_REG_SCLSR2) &
~SCIF_SCLSR2_ORER);
err_c2 & ~SCIF_SCLSR2_ORER);
if ((err_c & (SCIF_SCFSR2_ER | SCIF_SCFSR2_BRK | SCIF_SCFSR2_FER
| SCIF_SCFSR2_PER)) == 0) {
@ -447,6 +447,18 @@ scif_getc(bus_space_tag_t bt, bus_space_handle_t bh)
return(c);
}
}
#else
unsigned char c;
while (!(bus_space_read_2(bt, bh, SCIF_REG_SCFSR2) & SCIF_SCFSR2_DR))
;
c = bus_space_read_1(bt, bh, SCIF_REG_SCFRD2);
bus_space_write_2(bt, bh, SCIF_REG_SCFSR2, 0);
return (c);
#endif
}
#if 0
@ -486,7 +498,7 @@ scif_attach(struct device *parent, struct device *self, void *args)
sc->sc_fifolen = 16;
sc->sc_iot = pa->pa_bust;
bus_space_map(sc->sc_iot, pa->pa_offset, SCIF_REG_SZ, 0, sc->sc_ioh);
bus_space_map(sc->sc_iot, pa->pa_offset, SCIF_REG_SZ, 0, &sc->sc_ioh);
if (scifisconsole || kgdb_attached) {
/* InitializeScif(scifcn_speed); */