PERFORCE change 110093 for review
Marcel Moolenaar
marcel at FreeBSD.org
Thu Nov 16 03:22:43 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=110093
Change 110093 by marcel at marcel_nfs on 2006/11/16 03:22:07
Allow the range of a SCC class to be 0. This gives all child
devices the same I/O range, which is useful for embedded
communications controllers.
Affected files ...
.. //depot/projects/uart/dev/scc/scc_core.c#25 edit
Differences ...
==== //depot/projects/uart/dev/scc/scc_core.c#25 (text) ====
@@ -101,7 +101,7 @@
struct scc_softc *sc, *sc0;
const char *sep;
bus_space_handle_t bh;
- u_long base, size, start;
+ u_long base, size, start, sz;
int c, error, mode, sysdev;
/*
@@ -153,6 +153,7 @@
*/
sysdev = 0;
base = rman_get_start(sc->sc_rres);
+ sz = (size != 0) ? size : rman_get_size(sc->sc_rres);
start = base + ((cl->cl_range < 0) ? size * (cl->cl_channels - 1) : 0);
for (c = 0; c < cl->cl_channels; c++) {
ch = &sc->sc_chan[c];
@@ -160,11 +161,11 @@
ch->ch_nr = c + 1;
resource_list_add(&ch->ch_rlist, sc->sc_rtype, 0, start,
- start + size - 1, size);
+ start + sz - 1, sz);
rle = resource_list_find(&ch->ch_rlist, sc->sc_rtype, 0);
rle->res = &ch->ch_rres;
bus_space_subregion(rman_get_bustag(sc->sc_rres),
- rman_get_bushandle(sc->sc_rres), start - base, size, &bh);
+ rman_get_bushandle(sc->sc_rres), start - base, sz, &bh);
rman_set_bushandle(rle->res, bh);
rman_set_bustag(rle->res, rman_get_bustag(sc->sc_rres));
@@ -334,7 +335,7 @@
{
struct scc_softc *sc;
struct scc_class *cl;
- u_long size;
+ u_long size, sz;
int error;
/*
@@ -376,9 +377,10 @@
* Fill in the bus access structure and call the hardware specific
* probe method.
*/
+ sz = (size != 0) ? size : rman_get_size(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.range = size;
+ sc->sc_bas.range = sz;
sc->sc_bas.rclk = rclk;
sc->sc_bas.regshft = regshft;
More information about the p4-projects
mailing list