'struct acpi_resources' will have references to malloc'ed memory.
So it's better to not to allocate on stack.
This commit is contained in:
parent
2ea4c76684
commit
e7df232658
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: fdc_acpi.c,v 1.9 2003/06/18 08:58:34 drochner Exp $ */
|
/* $NetBSD: fdc_acpi.c,v 1.10 2003/08/15 17:22:23 kochi Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002 Jared D. McNeill <jmcneill@invisible.ca>
|
* Copyright (c) 2002 Jared D. McNeill <jmcneill@invisible.ca>
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: fdc_acpi.c,v 1.9 2003/06/18 08:58:34 drochner Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: fdc_acpi.c,v 1.10 2003/08/15 17:22:23 kochi Exp $");
|
||||||
|
|
||||||
#include "rnd.h"
|
#include "rnd.h"
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ struct fdc_acpi_softc {
|
||||||
struct fdc_softc sc_fdc;
|
struct fdc_softc sc_fdc;
|
||||||
bus_space_handle_t sc_baseioh;
|
bus_space_handle_t sc_baseioh;
|
||||||
struct acpi_devnode *sc_node; /* ACPI devnode */
|
struct acpi_devnode *sc_node; /* ACPI devnode */
|
||||||
|
struct acpi_resources res;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int fdc_acpi_enumerate(struct fdc_acpi_softc *);
|
static int fdc_acpi_enumerate(struct fdc_acpi_softc *);
|
||||||
|
@ -122,7 +123,6 @@ fdc_acpi_attach(struct device *parent, struct device *self, void *aux)
|
||||||
struct fdc_acpi_softc *asc = (struct fdc_acpi_softc *)self;
|
struct fdc_acpi_softc *asc = (struct fdc_acpi_softc *)self;
|
||||||
struct fdc_softc *sc = &asc->sc_fdc;
|
struct fdc_softc *sc = &asc->sc_fdc;
|
||||||
struct acpi_attach_args *aa = aux;
|
struct acpi_attach_args *aa = aux;
|
||||||
struct acpi_resources res;
|
|
||||||
struct acpi_io *io, *ctlio;
|
struct acpi_io *io, *ctlio;
|
||||||
struct acpi_irq *irq;
|
struct acpi_irq *irq;
|
||||||
struct acpi_drq *drq;
|
struct acpi_drq *drq;
|
||||||
|
@ -134,7 +134,7 @@ fdc_acpi_attach(struct device *parent, struct device *self, void *aux)
|
||||||
asc->sc_node = aa->aa_node;
|
asc->sc_node = aa->aa_node;
|
||||||
|
|
||||||
/* parse resources */
|
/* parse resources */
|
||||||
rv = acpi_resource_parse(&sc->sc_dev, aa->aa_node, &res,
|
rv = acpi_resource_parse(&sc->sc_dev, aa->aa_node, &asc->res,
|
||||||
&acpi_resource_parse_ops_default);
|
&acpi_resource_parse_ops_default);
|
||||||
if (rv != AE_OK) {
|
if (rv != AE_OK) {
|
||||||
printf("%s: unable to parse resources\n", sc->sc_dev.dv_xname);
|
printf("%s: unable to parse resources\n", sc->sc_dev.dv_xname);
|
||||||
|
@ -142,7 +142,7 @@ fdc_acpi_attach(struct device *parent, struct device *self, void *aux)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* find our i/o registers */
|
/* find our i/o registers */
|
||||||
io = acpi_res_io(&res, 0);
|
io = acpi_res_io(&asc->res, 0);
|
||||||
if (io == NULL) {
|
if (io == NULL) {
|
||||||
printf("%s: unable to find i/o register resource\n",
|
printf("%s: unable to find i/o register resource\n",
|
||||||
sc->sc_dev.dv_xname);
|
sc->sc_dev.dv_xname);
|
||||||
|
@ -150,7 +150,7 @@ fdc_acpi_attach(struct device *parent, struct device *self, void *aux)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* find our IRQ */
|
/* find our IRQ */
|
||||||
irq = acpi_res_irq(&res, 0);
|
irq = acpi_res_irq(&asc->res, 0);
|
||||||
if (irq == NULL) {
|
if (irq == NULL) {
|
||||||
printf("%s: unable to find irq resource\n",
|
printf("%s: unable to find irq resource\n",
|
||||||
sc->sc_dev.dv_xname);
|
sc->sc_dev.dv_xname);
|
||||||
|
@ -158,7 +158,7 @@ fdc_acpi_attach(struct device *parent, struct device *self, void *aux)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* find our DRQ */
|
/* find our DRQ */
|
||||||
drq = acpi_res_drq(&res, 0);
|
drq = acpi_res_drq(&asc->res, 0);
|
||||||
if (drq == NULL) {
|
if (drq == NULL) {
|
||||||
printf("%s: unable to find drq resource\n",
|
printf("%s: unable to find drq resource\n",
|
||||||
sc->sc_dev.dv_xname);
|
sc->sc_dev.dv_xname);
|
||||||
|
@ -195,7 +195,7 @@ fdc_acpi_attach(struct device *parent, struct device *self, void *aux)
|
||||||
* omitting the controller I/O port. (One has to exist for there to
|
* omitting the controller I/O port. (One has to exist for there to
|
||||||
* be a working fdc). Just try and force the mapping in.
|
* be a working fdc). Just try and force the mapping in.
|
||||||
*/
|
*/
|
||||||
ctlio = acpi_res_io(&res, 1);
|
ctlio = acpi_res_io(&asc->res, 1);
|
||||||
if (ctlio == NULL) {
|
if (ctlio == NULL) {
|
||||||
if (bus_space_map(sc->sc_iot, io->ar_base + io->ar_length + 1,
|
if (bus_space_map(sc->sc_iot, io->ar_base + io->ar_length + 1,
|
||||||
1, 0, &sc->sc_fdctlioh)) {
|
1, 0, &sc->sc_fdctlioh)) {
|
||||||
|
|
Loading…
Reference in New Issue