PERFORCE change 124424 for review
Christopher Davis
loafier at FreeBSD.org
Tue Jul 31 14:29:44 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=124424
Change 124424 by loafier at chrisdsoc on 2007/07/31 14:29:03
Remove bus tags & handles, change read/write functions, etc
Affected files ...
.. //depot/projects/soc2007/loafier_busalloc/src/sys/dev/sound/pci/cs4281.c#2 edit
Differences ...
==== //depot/projects/soc2007/loafier_busalloc/src/sys/dev/sound/pci/cs4281.c#2 (text+ko) ====
@@ -78,8 +78,6 @@
device_t dev;
u_int32_t type;
- bus_space_tag_t st;
- bus_space_handle_t sh;
bus_dma_tag_t parent_dmat;
struct resource *reg, *irq, *mem;
@@ -140,13 +138,13 @@
static inline u_int32_t
cs4281_rd(struct sc_info *sc, int regno)
{
- return bus_space_read_4(sc->st, sc->sh, regno);
+ return bus_read_4(sc->reg, regno);
}
static inline void
cs4281_wr(struct sc_info *sc, int regno, u_int32_t data)
{
- bus_space_write_4(sc->st, sc->sh, regno, data);
+ bus_write_4(sc->reg, regno, data);
DELAY(100);
}
@@ -730,6 +728,22 @@
/* -------------------------------------------------------------------- */
/* Probe and attach the card */
+static void
+cs4281_destroy(device_t dev, struct sc_info *sc)
+{
+ if (sc->reg)
+ bus_release_resource(dev, sc->regtype, sc->regid, sc->reg);
+ if (sc->mem)
+ bus_release_resource(dev, SYS_RES_MEMORY, sc->memid, sc->mem);
+ if (sc->ih)
+ bus_teardown_intr(dev, sc->irq, sc->ih);
+ if (sc->irq)
+ bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irq);
+ if (sc->parent_dmat)
+ bus_dma_tag_destroy(sc->parent_dmat);
+ free(sc, M_DEVBUF);
+}
+
static int
cs4281_pci_probe(device_t dev)
{
@@ -751,16 +765,15 @@
{
struct sc_info *sc;
struct ac97_info *codec = NULL;
- u_int32_t data;
char status[SND_STATUSLEN];
sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO);
sc->dev = dev;
sc->type = pci_get_devid(dev);
- data = pci_read_config(dev, PCIR_COMMAND, 2);
- data |= (PCIM_CMD_PORTEN | PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN);
- pci_write_config(dev, PCIR_COMMAND, data, 2);
+ pci_enable_busmaster(dev);
+ pci_enable_io(dev, SYS_RES_IOPORT);
+ pci_enable_io(dev, SYS_RES_MEMORY);
#if __FreeBSD_version > 500000
if (pci_get_powerstate(dev) != PCI_POWERSTATE_D0) {
@@ -795,8 +808,6 @@
goto bad;
}
}
- sc->st = rman_get_bustag(sc->reg);
- sc->sh = rman_get_bushandle(sc->reg);
sc->memid = PCIR_BAR(1);
sc->mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &sc->memid, 0,
@@ -866,17 +877,7 @@
bad:
if (codec)
ac97_destroy(codec);
- if (sc->reg)
- bus_release_resource(dev, sc->regtype, sc->regid, sc->reg);
- if (sc->mem)
- bus_release_resource(dev, SYS_RES_MEMORY, sc->memid, sc->mem);
- if (sc->ih)
- bus_teardown_intr(dev, sc->irq, sc->ih);
- if (sc->irq)
- bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irq);
- if (sc->parent_dmat)
- bus_dma_tag_destroy(sc->parent_dmat);
- free(sc, M_DEVBUF);
+ cs4281_destroy(dev, sc);
return ENXIO;
}
@@ -895,13 +896,7 @@
/* power off */
cs4281_power(sc, 3);
-
- bus_release_resource(dev, sc->regtype, sc->regid, sc->reg);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->memid, sc->mem);
- bus_teardown_intr(dev, sc->irq, sc->ih);
- bus_release_resource(dev, SYS_RES_IRQ, sc->irqid, sc->irq);
- bus_dma_tag_destroy(sc->parent_dmat);
- free(sc, M_DEVBUF);
+ cs4281_destroy(dev, sc);
return 0;
}
More information about the p4-projects
mailing list