Catch up with ACPI-CA 20051021 import
This commit is contained in:
parent
2e9142f013
commit
e72362d4d0
@ -229,7 +229,7 @@ madt_probe(void)
|
||||
* the version 1.0 portion of the RSDP. Version 2.0 has
|
||||
* an additional checksum that we verify first.
|
||||
*/
|
||||
if (AcpiTbChecksum(rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0) {
|
||||
if (AcpiTbGenerateChecksum(rsdp, ACPI_RSDP_XCHECKSUM_LENGTH)) {
|
||||
if (bootverbose)
|
||||
printf("MADT: RSDP failed extended checksum\n");
|
||||
return (ENXIO);
|
||||
|
@ -208,6 +208,7 @@ contrib/dev/acpica/nsxfeval.c optional acpi
|
||||
contrib/dev/acpica/nsxfname.c optional acpi
|
||||
contrib/dev/acpica/nsxfobj.c optional acpi
|
||||
contrib/dev/acpica/psargs.c optional acpi
|
||||
contrib/dev/acpica/psloop.c optional acpi
|
||||
contrib/dev/acpica/psopcode.c optional acpi
|
||||
contrib/dev/acpica/psparse.c optional acpi
|
||||
contrib/dev/acpica/psscope.c optional acpi
|
||||
@ -219,6 +220,7 @@ contrib/dev/acpica/rsaddr.c optional acpi
|
||||
contrib/dev/acpica/rscalc.c optional acpi
|
||||
contrib/dev/acpica/rscreate.c optional acpi
|
||||
contrib/dev/acpica/rsdump.c optional acpi
|
||||
contrib/dev/acpica/rsinfo.c optional acpi
|
||||
contrib/dev/acpica/rsio.c optional acpi
|
||||
contrib/dev/acpica/rsirq.c optional acpi
|
||||
contrib/dev/acpica/rslist.c optional acpi
|
||||
@ -235,6 +237,8 @@ contrib/dev/acpica/tbutils.c optional acpi
|
||||
contrib/dev/acpica/tbxface.c optional acpi
|
||||
contrib/dev/acpica/tbxfroot.c optional acpi
|
||||
contrib/dev/acpica/utalloc.c optional acpi
|
||||
contrib/dev/acpica/utcache.c optional acpi \
|
||||
compile-with "${NORMAL_C} -DACPI_USE_LOCAL_CACHE"
|
||||
contrib/dev/acpica/utclib.c optional acpi
|
||||
contrib/dev/acpica/utcopy.c optional acpi
|
||||
contrib/dev/acpica/utdebug.c optional acpi
|
||||
@ -244,7 +248,9 @@ contrib/dev/acpica/utglobal.c optional acpi
|
||||
contrib/dev/acpica/utinit.c optional acpi
|
||||
contrib/dev/acpica/utmath.c optional acpi
|
||||
contrib/dev/acpica/utmisc.c optional acpi
|
||||
contrib/dev/acpica/utmutex.c optional acpi
|
||||
contrib/dev/acpica/utobject.c optional acpi
|
||||
contrib/dev/acpica/utstate.c optional acpi
|
||||
contrib/dev/acpica/utxface.c optional acpi
|
||||
contrib/dev/ath/freebsd/ah_osdep.c optional ath_hal \
|
||||
compile-with "${NORMAL_C} -I$S/contrib/dev/ath/freebsd"
|
||||
|
@ -351,18 +351,19 @@ AcpiOsDeleteLock (ACPI_HANDLE Handle)
|
||||
* (and thus can't block) but since we have ithreads, we don't worry
|
||||
* about potentially blocking.
|
||||
*/
|
||||
void
|
||||
AcpiOsAcquireLock (ACPI_HANDLE Handle, UINT32 Flags)
|
||||
ACPI_NATIVE_UINT
|
||||
AcpiOsAcquireLock (ACPI_HANDLE Handle)
|
||||
{
|
||||
struct mtx *m = (struct mtx *)Handle;
|
||||
|
||||
if (Handle == NULL)
|
||||
return;
|
||||
return (0);
|
||||
mtx_lock(m);
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
AcpiOsReleaseLock (ACPI_HANDLE Handle, UINT32 Flags)
|
||||
AcpiOsReleaseLock (ACPI_HANDLE Handle, ACPI_NATIVE_UINT Flags)
|
||||
{
|
||||
struct mtx *m = (struct mtx *)Handle;
|
||||
|
||||
|
@ -104,7 +104,8 @@ AcpiOsTableOverride (
|
||||
sprintf(fake_ssdt.AslCompilerId, "%.4s", "FBSD");
|
||||
fake_ssdt.AslCompilerRevision = htole32(1);
|
||||
fake_ssdt.no_op = htole32(0x005c0310); /* Scope(\) */
|
||||
fake_ssdt.Checksum -= AcpiTbChecksum(&fake_ssdt, sizeof(fake_ssdt));
|
||||
fake_ssdt.Checksum -= AcpiTbGenerateChecksum(&fake_ssdt,
|
||||
sizeof(fake_ssdt));
|
||||
}
|
||||
*NewTable = (void *)&fake_ssdt;
|
||||
}
|
||||
|
@ -1957,7 +1957,7 @@ acpi_FindIndexedResource(ACPI_BUFFER *buf, int index, ACPI_RESOURCE **resp)
|
||||
return (AE_BAD_PARAMETER);
|
||||
|
||||
/* Check for terminator */
|
||||
if (rp->Id == ACPI_RSTYPE_END_TAG || rp->Length == 0)
|
||||
if (rp->Type == ACPI_RESOURCE_TYPE_END_TAG || rp->Length == 0)
|
||||
return (AE_NOT_FOUND);
|
||||
rp = ACPI_NEXT_RESOURCE(rp);
|
||||
}
|
||||
@ -1989,7 +1989,7 @@ acpi_AppendBufferResource(ACPI_BUFFER *buf, ACPI_RESOURCE *res)
|
||||
if ((buf->Pointer = AcpiOsAllocate(buf->Length)) == NULL)
|
||||
return (AE_NO_MEMORY);
|
||||
rp = (ACPI_RESOURCE *)buf->Pointer;
|
||||
rp->Id = ACPI_RSTYPE_END_TAG;
|
||||
rp->Type = ACPI_RESOURCE_TYPE_END_TAG;
|
||||
rp->Length = 0;
|
||||
}
|
||||
if (res == NULL)
|
||||
@ -2005,7 +2005,7 @@ acpi_AppendBufferResource(ACPI_BUFFER *buf, ACPI_RESOURCE *res)
|
||||
/* Range check, don't go outside the buffer */
|
||||
if (rp >= (ACPI_RESOURCE *)((u_int8_t *)buf->Pointer + buf->Length))
|
||||
return (AE_BAD_PARAMETER);
|
||||
if (rp->Id == ACPI_RSTYPE_END_TAG || rp->Length == 0)
|
||||
if (rp->Type == ACPI_RESOURCE_TYPE_END_TAG || rp->Length == 0)
|
||||
break;
|
||||
rp = ACPI_NEXT_RESOURCE(rp);
|
||||
}
|
||||
@ -2022,8 +2022,8 @@ acpi_AppendBufferResource(ACPI_BUFFER *buf, ACPI_RESOURCE *res)
|
||||
* for some reason we are stuffing a *really* huge resource.
|
||||
*/
|
||||
while ((((u_int8_t *)rp - (u_int8_t *)buf->Pointer) +
|
||||
res->Length + ACPI_RESOURCE_LENGTH_NO_DATA +
|
||||
ACPI_RESOURCE_LENGTH) >= buf->Length) {
|
||||
res->Length + ACPI_RS_SIZE_NO_DATA +
|
||||
ACPI_RS_SIZE_MIN) >= buf->Length) {
|
||||
if ((newp = AcpiOsAllocate(buf->Length * 2)) == NULL)
|
||||
return (AE_NO_MEMORY);
|
||||
bcopy(buf->Pointer, newp, buf->Length);
|
||||
@ -2035,11 +2035,11 @@ acpi_AppendBufferResource(ACPI_BUFFER *buf, ACPI_RESOURCE *res)
|
||||
}
|
||||
|
||||
/* Insert the new resource. */
|
||||
bcopy(res, rp, res->Length + ACPI_RESOURCE_LENGTH_NO_DATA);
|
||||
bcopy(res, rp, res->Length + ACPI_RS_SIZE_NO_DATA);
|
||||
|
||||
/* And add the terminator. */
|
||||
rp = ACPI_NEXT_RESOURCE(rp);
|
||||
rp->Id = ACPI_RSTYPE_END_TAG;
|
||||
rp->Type = ACPI_RESOURCE_TYPE_END_TAG;
|
||||
rp->Length = 0;
|
||||
|
||||
return (AE_OK);
|
||||
|
@ -168,8 +168,8 @@ acpi_count_irq_resources(ACPI_RESOURCE *res, void *context)
|
||||
struct link_count_request *req;
|
||||
|
||||
req = (struct link_count_request *)context;
|
||||
switch (res->Id) {
|
||||
case ACPI_RSTYPE_START_DPF:
|
||||
switch (res->Type) {
|
||||
case ACPI_RESOURCE_TYPE_START_DEPENDENT:
|
||||
switch (req->in_dpf) {
|
||||
case DPF_OUTSIDE:
|
||||
/* We've started the first DPF. */
|
||||
@ -181,14 +181,14 @@ acpi_count_irq_resources(ACPI_RESOURCE *res, void *context)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ACPI_RSTYPE_END_DPF:
|
||||
case ACPI_RESOURCE_TYPE_END_DEPENDENT:
|
||||
/* We are finished with DPF parsing. */
|
||||
KASSERT(req->in_dpf != DPF_OUTSIDE,
|
||||
("%s: end dpf when not parsing a dpf", __func__));
|
||||
req->in_dpf = DPF_OUTSIDE;
|
||||
break;
|
||||
case ACPI_RSTYPE_IRQ:
|
||||
case ACPI_RSTYPE_EXT_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
|
||||
/*
|
||||
* Don't count resources if we are in a DPF set that we are
|
||||
* ignoring.
|
||||
@ -207,8 +207,8 @@ link_add_crs(ACPI_RESOURCE *res, void *context)
|
||||
|
||||
ACPI_SERIAL_ASSERT(pci_link);
|
||||
req = (struct link_res_request *)context;
|
||||
switch (res->Id) {
|
||||
case ACPI_RSTYPE_START_DPF:
|
||||
switch (res->Type) {
|
||||
case ACPI_RESOURCE_TYPE_START_DEPENDENT:
|
||||
switch (req->in_dpf) {
|
||||
case DPF_OUTSIDE:
|
||||
/* We've started the first DPF. */
|
||||
@ -222,14 +222,14 @@ link_add_crs(ACPI_RESOURCE *res, void *context)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ACPI_RSTYPE_END_DPF:
|
||||
case ACPI_RESOURCE_TYPE_END_DEPENDENT:
|
||||
/* We are finished with DPF parsing. */
|
||||
KASSERT(req->in_dpf != DPF_OUTSIDE,
|
||||
("%s: end dpf when not parsing a dpf", __func__));
|
||||
req->in_dpf = DPF_OUTSIDE;
|
||||
break;
|
||||
case ACPI_RSTYPE_IRQ:
|
||||
case ACPI_RSTYPE_EXT_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
|
||||
KASSERT(req->link_index < req->sc->pl_num_links,
|
||||
("%s: array boundary violation", __func__));
|
||||
link = &req->sc->pl_links[req->link_index];
|
||||
@ -242,10 +242,10 @@ link_add_crs(ACPI_RESOURCE *res, void *context)
|
||||
* systems return multiple IRQs (which is nonsense for _CRS)
|
||||
* when the link hasn't been programmed.
|
||||
*/
|
||||
if (res->Id == ACPI_RSTYPE_IRQ) {
|
||||
if (res->Data.Irq.NumberOfInterrupts == 1)
|
||||
if (res->Type == ACPI_RESOURCE_TYPE_IRQ) {
|
||||
if (res->Data.Irq.InterruptCount == 1)
|
||||
link->l_irq = res->Data.Irq.Interrupts[0];
|
||||
} else if (res->Data.ExtendedIrq.NumberOfInterrupts == 1)
|
||||
} else if (res->Data.ExtendedIrq.InterruptCount == 1)
|
||||
link->l_irq = res->Data.ExtendedIrq.Interrupts[0];
|
||||
|
||||
/*
|
||||
@ -268,13 +268,14 @@ link_add_prs(ACPI_RESOURCE *res, void *context)
|
||||
{
|
||||
struct link_res_request *req;
|
||||
struct link *link;
|
||||
UINT32 *irqs;
|
||||
int i;
|
||||
UINT8 *irqs = NULL;
|
||||
UINT32 *ext_irqs = NULL;
|
||||
int i, is_ext_irq = 1;
|
||||
|
||||
ACPI_SERIAL_ASSERT(pci_link);
|
||||
req = (struct link_res_request *)context;
|
||||
switch (res->Id) {
|
||||
case ACPI_RSTYPE_START_DPF:
|
||||
switch (res->Type) {
|
||||
case ACPI_RESOURCE_TYPE_START_DEPENDENT:
|
||||
switch (req->in_dpf) {
|
||||
case DPF_OUTSIDE:
|
||||
/* We've started the first DPF. */
|
||||
@ -286,14 +287,16 @@ link_add_prs(ACPI_RESOURCE *res, void *context)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ACPI_RSTYPE_END_DPF:
|
||||
case ACPI_RESOURCE_TYPE_END_DEPENDENT:
|
||||
/* We are finished with DPF parsing. */
|
||||
KASSERT(req->in_dpf != DPF_OUTSIDE,
|
||||
("%s: end dpf when not parsing a dpf", __func__));
|
||||
req->in_dpf = DPF_OUTSIDE;
|
||||
break;
|
||||
case ACPI_RSTYPE_IRQ:
|
||||
case ACPI_RSTYPE_EXT_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
is_ext_irq = 0;
|
||||
/* fall through */
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
|
||||
/*
|
||||
* Don't parse resources if we are in a DPF set that we are
|
||||
* ignoring.
|
||||
@ -317,13 +320,13 @@ link_add_prs(ACPI_RESOURCE *res, void *context)
|
||||
* _SRS.
|
||||
*/
|
||||
bcopy(res, &link->l_prs_template, sizeof(ACPI_RESOURCE));
|
||||
if (res->Id == ACPI_RSTYPE_IRQ) {
|
||||
link->l_num_irqs = res->Data.Irq.NumberOfInterrupts;
|
||||
irqs = res->Data.Irq.Interrupts;
|
||||
} else {
|
||||
if (is_ext_irq) {
|
||||
link->l_num_irqs =
|
||||
res->Data.ExtendedIrq.NumberOfInterrupts;
|
||||
irqs = res->Data.ExtendedIrq.Interrupts;
|
||||
res->Data.ExtendedIrq.InterruptCount;
|
||||
ext_irqs = res->Data.ExtendedIrq.Interrupts;
|
||||
} else {
|
||||
link->l_num_irqs = res->Data.Irq.InterruptCount;
|
||||
irqs = res->Data.Irq.Interrupts;
|
||||
}
|
||||
if (link->l_num_irqs == 0)
|
||||
break;
|
||||
@ -337,9 +340,15 @@ link_add_prs(ACPI_RESOURCE *res, void *context)
|
||||
link->l_irqs = malloc(sizeof(int) * link->l_num_irqs,
|
||||
M_PCI_LINK, M_WAITOK | M_ZERO);
|
||||
for (i = 0; i < link->l_num_irqs; i++) {
|
||||
link->l_irqs[i] = irqs[i];
|
||||
if (irqs[i] >= NUM_ISA_INTERRUPTS)
|
||||
link->l_isa_irq = FALSE;
|
||||
if (is_ext_irq) {
|
||||
link->l_irqs[i] = ext_irqs[i];
|
||||
if (ext_irqs[i] >= NUM_ISA_INTERRUPTS)
|
||||
link->l_isa_irq = FALSE;
|
||||
} else {
|
||||
link->l_irqs[i] = irqs[i];
|
||||
if (irqs[i] >= NUM_ISA_INTERRUPTS)
|
||||
link->l_isa_irq = FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -669,8 +678,8 @@ acpi_pci_link_srs_from_crs(struct acpi_pci_link_softc *sc, ACPI_BUFFER *srsbuf)
|
||||
resource = (ACPI_RESOURCE *)crsbuf.Pointer;
|
||||
end = (ACPI_RESOURCE *)((char *)crsbuf.Pointer + crsbuf.Length);
|
||||
for (;;) {
|
||||
switch (resource->Id) {
|
||||
case ACPI_RSTYPE_START_DPF:
|
||||
switch (resource->Type) {
|
||||
case ACPI_RESOURCE_TYPE_START_DEPENDENT:
|
||||
switch (in_dpf) {
|
||||
case DPF_OUTSIDE:
|
||||
/* We've started the first DPF. */
|
||||
@ -685,19 +694,19 @@ acpi_pci_link_srs_from_crs(struct acpi_pci_link_softc *sc, ACPI_BUFFER *srsbuf)
|
||||
}
|
||||
resptr = NULL;
|
||||
break;
|
||||
case ACPI_RSTYPE_END_DPF:
|
||||
case ACPI_RESOURCE_TYPE_END_DEPENDENT:
|
||||
/* We are finished with DPF parsing. */
|
||||
KASSERT(in_dpf != DPF_OUTSIDE,
|
||||
("%s: end dpf when not parsing a dpf", __func__));
|
||||
in_dpf = DPF_OUTSIDE;
|
||||
resptr = NULL;
|
||||
break;
|
||||
case ACPI_RSTYPE_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
MPASS(i < sc->pl_num_links);
|
||||
MPASS(link->l_prs_template.Id == ACPI_RSTYPE_IRQ);
|
||||
MPASS(link->l_prs_template.Type == ACPI_RESOURCE_TYPE_IRQ);
|
||||
newres = link->l_prs_template;
|
||||
resptr = &newres;
|
||||
resptr->Data.Irq.NumberOfInterrupts = 1;
|
||||
resptr->Data.Irq.InterruptCount = 1;
|
||||
if (PCI_INTERRUPT_VALID(link->l_irq)) {
|
||||
KASSERT(link->l_irq < NUM_ISA_INTERRUPTS,
|
||||
("%s: can't put non-ISA IRQ %d in legacy IRQ resource type",
|
||||
@ -708,12 +717,12 @@ acpi_pci_link_srs_from_crs(struct acpi_pci_link_softc *sc, ACPI_BUFFER *srsbuf)
|
||||
link++;
|
||||
i++;
|
||||
break;
|
||||
case ACPI_RSTYPE_EXT_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
|
||||
MPASS(i < sc->pl_num_links);
|
||||
MPASS(link->l_prs_template.Id == ACPI_RSTYPE_EXT_IRQ);
|
||||
MPASS(link->l_prs_template.Type == ACPI_RESOURCE_TYPE_EXTENDED_IRQ);
|
||||
newres = link->l_prs_template;
|
||||
resptr = &newres;
|
||||
resptr->Data.ExtendedIrq.NumberOfInterrupts = 1;
|
||||
resptr->Data.ExtendedIrq.InterruptCount = 1;
|
||||
if (PCI_INTERRUPT_VALID(link->l_irq))
|
||||
resptr->Data.ExtendedIrq.Interrupts[0] =
|
||||
link->l_irq;
|
||||
@ -737,7 +746,7 @@ acpi_pci_link_srs_from_crs(struct acpi_pci_link_softc *sc, ACPI_BUFFER *srsbuf)
|
||||
return (status);
|
||||
}
|
||||
}
|
||||
if (resource->Id == ACPI_RSTYPE_END_TAG)
|
||||
if (resource->Type == ACPI_RESOURCE_TYPE_END_TAG)
|
||||
break;
|
||||
resource = ACPI_NEXT_RESOURCE(resource);
|
||||
if (resource >= end)
|
||||
@ -764,10 +773,10 @@ acpi_pci_link_srs_from_links(struct acpi_pci_link_softc *sc,
|
||||
/* Add a new IRQ resource from each link. */
|
||||
link = &sc->pl_links[i];
|
||||
newres = link->l_prs_template;
|
||||
if (newres.Id == ACPI_RSTYPE_IRQ) {
|
||||
if (newres.Type == ACPI_RESOURCE_TYPE_IRQ) {
|
||||
|
||||
/* Build an IRQ resource. */
|
||||
newres.Data.Irq.NumberOfInterrupts = 1;
|
||||
newres.Data.Irq.InterruptCount = 1;
|
||||
if (PCI_INTERRUPT_VALID(link->l_irq)) {
|
||||
KASSERT(link->l_irq < NUM_ISA_INTERRUPTS,
|
||||
("%s: can't put non-ISA IRQ %d in legacy IRQ resource type",
|
||||
@ -778,7 +787,7 @@ acpi_pci_link_srs_from_links(struct acpi_pci_link_softc *sc,
|
||||
} else {
|
||||
|
||||
/* Build an ExtIRQ resuorce. */
|
||||
newres.Data.ExtendedIrq.NumberOfInterrupts = 1;
|
||||
newres.Data.ExtendedIrq.InterruptCount = 1;
|
||||
if (PCI_INTERRUPT_VALID(link->l_irq))
|
||||
newres.Data.ExtendedIrq.Interrupts[0] =
|
||||
link->l_irq;
|
||||
@ -835,11 +844,11 @@ acpi_pci_link_route_irqs(device_t dev)
|
||||
resource = (ACPI_RESOURCE *)srsbuf.Pointer;
|
||||
end = (ACPI_RESOURCE *)((char *)srsbuf.Pointer + srsbuf.Length);
|
||||
for (;;) {
|
||||
if (resource->Id == ACPI_RSTYPE_END_TAG)
|
||||
if (resource->Type == ACPI_RESOURCE_TYPE_END_TAG)
|
||||
break;
|
||||
switch (resource->Id) {
|
||||
case ACPI_RSTYPE_IRQ:
|
||||
case ACPI_RSTYPE_EXT_IRQ:
|
||||
switch (resource->Type) {
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
|
||||
MPASS(i < sc->pl_num_links);
|
||||
|
||||
/*
|
||||
|
@ -60,14 +60,14 @@ acpi_lookup_irq_handler(ACPI_RESOURCE *res, void *context)
|
||||
struct lookup_irq_request *req;
|
||||
u_int irqnum, irq;
|
||||
|
||||
switch (res->Id) {
|
||||
case ACPI_RSTYPE_IRQ:
|
||||
case ACPI_RSTYPE_EXT_IRQ:
|
||||
if (res->Id == ACPI_RSTYPE_IRQ) {
|
||||
irqnum = res->Data.Irq.NumberOfInterrupts;
|
||||
switch (res->Type) {
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
|
||||
if (res->Type == ACPI_RESOURCE_TYPE_IRQ) {
|
||||
irqnum = res->Data.Irq.InterruptCount;
|
||||
irq = res->Data.Irq.Interrupts[0];
|
||||
} else {
|
||||
irqnum = res->Data.ExtendedIrq.NumberOfInterrupts;
|
||||
irqnum = res->Data.ExtendedIrq.InterruptCount;
|
||||
irq = res->Data.ExtendedIrq.Interrupts[0];
|
||||
}
|
||||
if (irqnum != 1)
|
||||
@ -111,23 +111,23 @@ acpi_config_intr(device_t dev, ACPI_RESOURCE *res)
|
||||
u_int irq;
|
||||
int pol, trig;
|
||||
|
||||
switch (res->Id) {
|
||||
case ACPI_RSTYPE_IRQ:
|
||||
KASSERT(res->Data.Irq.NumberOfInterrupts == 1,
|
||||
switch (res->Type) {
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
KASSERT(res->Data.Irq.InterruptCount == 1,
|
||||
("%s: multiple interrupts", __func__));
|
||||
irq = res->Data.Irq.Interrupts[0];
|
||||
trig = res->Data.Irq.EdgeLevel;
|
||||
pol = res->Data.Irq.ActiveHighLow;
|
||||
trig = res->Data.Irq.Triggering;
|
||||
pol = res->Data.Irq.Polarity;
|
||||
break;
|
||||
case ACPI_RSTYPE_EXT_IRQ:
|
||||
KASSERT(res->Data.ExtendedIrq.NumberOfInterrupts == 1,
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
|
||||
KASSERT(res->Data.ExtendedIrq.InterruptCount == 1,
|
||||
("%s: multiple interrupts", __func__));
|
||||
irq = res->Data.ExtendedIrq.Interrupts[0];
|
||||
trig = res->Data.ExtendedIrq.EdgeLevel;
|
||||
pol = res->Data.ExtendedIrq.ActiveHighLow;
|
||||
trig = res->Data.ExtendedIrq.Triggering;
|
||||
pol = res->Data.ExtendedIrq.Polarity;
|
||||
break;
|
||||
default:
|
||||
panic("%s: bad resource type %u", __func__, res->Id);
|
||||
panic("%s: bad resource type %u", __func__, res->Type);
|
||||
}
|
||||
BUS_CONFIG_INTR(dev, irq, (trig == ACPI_EDGE_SENSITIVE) ?
|
||||
INTR_TRIGGER_EDGE : INTR_TRIGGER_LEVEL, (pol == ACPI_ACTIVE_HIGH) ?
|
||||
@ -186,129 +186,129 @@ acpi_parse_resources(device_t dev, ACPI_HANDLE handle,
|
||||
curr += res->Length;
|
||||
|
||||
/* Handle the individual resource types */
|
||||
switch(res->Id) {
|
||||
case ACPI_RSTYPE_END_TAG:
|
||||
switch(res->Type) {
|
||||
case ACPI_RESOURCE_TYPE_END_TAG:
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "EndTag\n"));
|
||||
curr = last;
|
||||
break;
|
||||
case ACPI_RSTYPE_FIXED_IO:
|
||||
if (res->Data.FixedIo.RangeLength <= 0)
|
||||
case ACPI_RESOURCE_TYPE_FIXED_IO:
|
||||
if (res->Data.FixedIo.AddressLength <= 0)
|
||||
break;
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "FixedIo 0x%x/%d\n",
|
||||
res->Data.FixedIo.BaseAddress,
|
||||
res->Data.FixedIo.RangeLength));
|
||||
res->Data.FixedIo.Address,
|
||||
res->Data.FixedIo.AddressLength));
|
||||
set->set_ioport(dev, context,
|
||||
res->Data.FixedIo.BaseAddress,
|
||||
res->Data.FixedIo.RangeLength);
|
||||
res->Data.FixedIo.Address,
|
||||
res->Data.FixedIo.AddressLength);
|
||||
break;
|
||||
case ACPI_RSTYPE_IO:
|
||||
if (res->Data.Io.RangeLength <= 0)
|
||||
case ACPI_RESOURCE_TYPE_IO:
|
||||
if (res->Data.Io.AddressLength <= 0)
|
||||
break;
|
||||
if (res->Data.Io.MinBaseAddress == res->Data.Io.MaxBaseAddress) {
|
||||
if (res->Data.Io.Minimum == res->Data.Io.Maximum) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "Io 0x%x/%d\n",
|
||||
res->Data.Io.MinBaseAddress,
|
||||
res->Data.Io.RangeLength));
|
||||
res->Data.Io.Minimum,
|
||||
res->Data.Io.AddressLength));
|
||||
set->set_ioport(dev, context,
|
||||
res->Data.Io.MinBaseAddress,
|
||||
res->Data.Io.RangeLength);
|
||||
res->Data.Io.Minimum,
|
||||
res->Data.Io.AddressLength);
|
||||
} else {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "Io 0x%x-0x%x/%d\n",
|
||||
res->Data.Io.MinBaseAddress,
|
||||
res->Data.Io.MaxBaseAddress,
|
||||
res->Data.Io.RangeLength));
|
||||
res->Data.Io.Minimum,
|
||||
res->Data.Io.Maximum,
|
||||
res->Data.Io.AddressLength));
|
||||
set->set_iorange(dev, context,
|
||||
res->Data.Io.MinBaseAddress,
|
||||
res->Data.Io.MaxBaseAddress,
|
||||
res->Data.Io.RangeLength,
|
||||
res->Data.Io.Minimum,
|
||||
res->Data.Io.Maximum,
|
||||
res->Data.Io.AddressLength,
|
||||
res->Data.Io.Alignment);
|
||||
}
|
||||
break;
|
||||
case ACPI_RSTYPE_FIXED_MEM32:
|
||||
if (res->Data.FixedMemory32.RangeLength <= 0)
|
||||
case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
|
||||
if (res->Data.FixedMemory32.AddressLength <= 0)
|
||||
break;
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "FixedMemory32 0x%x/%d\n",
|
||||
res->Data.FixedMemory32.RangeBaseAddress,
|
||||
res->Data.FixedMemory32.RangeLength));
|
||||
res->Data.FixedMemory32.Address,
|
||||
res->Data.FixedMemory32.AddressLength));
|
||||
set->set_memory(dev, context,
|
||||
res->Data.FixedMemory32.RangeBaseAddress,
|
||||
res->Data.FixedMemory32.RangeLength);
|
||||
res->Data.FixedMemory32.Address,
|
||||
res->Data.FixedMemory32.AddressLength);
|
||||
break;
|
||||
case ACPI_RSTYPE_MEM32:
|
||||
if (res->Data.Memory32.RangeLength <= 0)
|
||||
case ACPI_RESOURCE_TYPE_MEMORY32:
|
||||
if (res->Data.Memory32.AddressLength <= 0)
|
||||
break;
|
||||
if (res->Data.Memory32.MinBaseAddress ==
|
||||
res->Data.Memory32.MaxBaseAddress) {
|
||||
if (res->Data.Memory32.Minimum ==
|
||||
res->Data.Memory32.Maximum) {
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "Memory32 0x%x/%d\n",
|
||||
res->Data.Memory32.MinBaseAddress,
|
||||
res->Data.Memory32.RangeLength));
|
||||
res->Data.Memory32.Minimum,
|
||||
res->Data.Memory32.AddressLength));
|
||||
set->set_memory(dev, context,
|
||||
res->Data.Memory32.MinBaseAddress,
|
||||
res->Data.Memory32.RangeLength);
|
||||
res->Data.Memory32.Minimum,
|
||||
res->Data.Memory32.AddressLength);
|
||||
} else {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "Memory32 0x%x-0x%x/%d\n",
|
||||
res->Data.Memory32.MinBaseAddress,
|
||||
res->Data.Memory32.MaxBaseAddress,
|
||||
res->Data.Memory32.RangeLength));
|
||||
res->Data.Memory32.Minimum,
|
||||
res->Data.Memory32.Maximum,
|
||||
res->Data.Memory32.AddressLength));
|
||||
set->set_memoryrange(dev, context,
|
||||
res->Data.Memory32.MinBaseAddress,
|
||||
res->Data.Memory32.MaxBaseAddress,
|
||||
res->Data.Memory32.RangeLength,
|
||||
res->Data.Memory32.Minimum,
|
||||
res->Data.Memory32.Maximum,
|
||||
res->Data.Memory32.AddressLength,
|
||||
res->Data.Memory32.Alignment);
|
||||
}
|
||||
break;
|
||||
case ACPI_RSTYPE_MEM24:
|
||||
if (res->Data.Memory24.RangeLength <= 0)
|
||||
case ACPI_RESOURCE_TYPE_MEMORY24:
|
||||
if (res->Data.Memory24.AddressLength <= 0)
|
||||
break;
|
||||
if (res->Data.Memory24.MinBaseAddress ==
|
||||
res->Data.Memory24.MaxBaseAddress) {
|
||||
if (res->Data.Memory24.Minimum ==
|
||||
res->Data.Memory24.Maximum) {
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "Memory24 0x%x/%d\n",
|
||||
res->Data.Memory24.MinBaseAddress,
|
||||
res->Data.Memory24.RangeLength));
|
||||
set->set_memory(dev, context, res->Data.Memory24.MinBaseAddress,
|
||||
res->Data.Memory24.RangeLength);
|
||||
res->Data.Memory24.Minimum,
|
||||
res->Data.Memory24.AddressLength));
|
||||
set->set_memory(dev, context, res->Data.Memory24.Minimum,
|
||||
res->Data.Memory24.AddressLength);
|
||||
} else {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "Memory24 0x%x-0x%x/%d\n",
|
||||
res->Data.Memory24.MinBaseAddress,
|
||||
res->Data.Memory24.MaxBaseAddress,
|
||||
res->Data.Memory24.RangeLength));
|
||||
res->Data.Memory24.Minimum,
|
||||
res->Data.Memory24.Maximum,
|
||||
res->Data.Memory24.AddressLength));
|
||||
set->set_memoryrange(dev, context,
|
||||
res->Data.Memory24.MinBaseAddress,
|
||||
res->Data.Memory24.MaxBaseAddress,
|
||||
res->Data.Memory24.RangeLength,
|
||||
res->Data.Memory24.Minimum,
|
||||
res->Data.Memory24.Maximum,
|
||||
res->Data.Memory24.AddressLength,
|
||||
res->Data.Memory24.Alignment);
|
||||
}
|
||||
break;
|
||||
case ACPI_RSTYPE_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
/*
|
||||
* from 1.0b 6.4.2
|
||||
* "This structure is repeated for each separate interrupt
|
||||
* required"
|
||||
*/
|
||||
set->set_irq(dev, context, res->Data.Irq.Interrupts,
|
||||
res->Data.Irq.NumberOfInterrupts, res->Data.Irq.EdgeLevel,
|
||||
res->Data.Irq.ActiveHighLow);
|
||||
res->Data.Irq.InterruptCount, res->Data.Irq.Triggering,
|
||||
res->Data.Irq.Polarity);
|
||||
break;
|
||||
case ACPI_RSTYPE_DMA:
|
||||
case ACPI_RESOURCE_TYPE_DMA:
|
||||
/*
|
||||
* from 1.0b 6.4.3
|
||||
* "This structure is repeated for each separate dma channel
|
||||
* required"
|
||||
*/
|
||||
set->set_drq(dev, context, res->Data.Dma.Channels,
|
||||
res->Data.Dma.NumberOfChannels);
|
||||
res->Data.Dma.ChannelCount);
|
||||
break;
|
||||
case ACPI_RSTYPE_START_DPF:
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "start dependant functions\n"));
|
||||
set->set_start_dependant(dev, context,
|
||||
case ACPI_RESOURCE_TYPE_START_DEPENDENT:
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "start dependent functions\n"));
|
||||
set->set_start_dependent(dev, context,
|
||||
res->Data.StartDpf.CompatibilityPriority);
|
||||
break;
|
||||
case ACPI_RSTYPE_END_DPF:
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "end dependant functions\n"));
|
||||
set->set_end_dependant(dev, context);
|
||||
case ACPI_RESOURCE_TYPE_END_DEPENDENT:
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "end dependent functions\n"));
|
||||
set->set_end_dependent(dev, context);
|
||||
break;
|
||||
case ACPI_RSTYPE_ADDRESS32:
|
||||
case ACPI_RESOURCE_TYPE_ADDRESS32:
|
||||
if (res->Data.Address32.AddressLength <= 0)
|
||||
break;
|
||||
if (res->Data.Address32.ProducerConsumer != ACPI_CONSUMER) {
|
||||
@ -331,47 +331,47 @@ acpi_parse_resources(device_t dev, ACPI_HANDLE handle,
|
||||
if (res->Data.Address32.ResourceType == ACPI_MEMORY_RANGE) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"Address32/Memory 0x%x/%d\n",
|
||||
res->Data.Address32.MinAddressRange,
|
||||
res->Data.Address32.Minimum,
|
||||
res->Data.Address32.AddressLength));
|
||||
set->set_memory(dev, context,
|
||||
res->Data.Address32.MinAddressRange,
|
||||
res->Data.Address32.Minimum,
|
||||
res->Data.Address32.AddressLength);
|
||||
} else {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"Address32/IO 0x%x/%d\n",
|
||||
res->Data.Address32.MinAddressRange,
|
||||
res->Data.Address32.Minimum,
|
||||
res->Data.Address32.AddressLength));
|
||||
set->set_ioport(dev, context,
|
||||
res->Data.Address32.MinAddressRange,
|
||||
res->Data.Address32.Minimum,
|
||||
res->Data.Address32.AddressLength);
|
||||
}
|
||||
} else {
|
||||
if (res->Data.Address32.ResourceType == ACPI_MEMORY_RANGE) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"Address32/Memory 0x%x-0x%x/%d\n",
|
||||
res->Data.Address32.MinAddressRange,
|
||||
res->Data.Address32.MaxAddressRange,
|
||||
res->Data.Address32.Minimum,
|
||||
res->Data.Address32.Maximum,
|
||||
res->Data.Address32.AddressLength));
|
||||
set->set_memoryrange(dev, context,
|
||||
res->Data.Address32.MinAddressRange,
|
||||
res->Data.Address32.MaxAddressRange,
|
||||
res->Data.Address32.Minimum,
|
||||
res->Data.Address32.Maximum,
|
||||
res->Data.Address32.AddressLength,
|
||||
res->Data.Address32.Granularity);
|
||||
} else {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"Address32/IO 0x%x-0x%x/%d\n",
|
||||
res->Data.Address32.MinAddressRange,
|
||||
res->Data.Address32.MaxAddressRange,
|
||||
res->Data.Address32.Minimum,
|
||||
res->Data.Address32.Maximum,
|
||||
res->Data.Address32.AddressLength));
|
||||
set->set_iorange(dev, context,
|
||||
res->Data.Address32.MinAddressRange,
|
||||
res->Data.Address32.MaxAddressRange,
|
||||
res->Data.Address32.Minimum,
|
||||
res->Data.Address32.Maximum,
|
||||
res->Data.Address32.AddressLength,
|
||||
res->Data.Address32.Granularity);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ACPI_RSTYPE_ADDRESS16:
|
||||
case ACPI_RESOURCE_TYPE_ADDRESS16:
|
||||
if (res->Data.Address16.AddressLength <= 0)
|
||||
break;
|
||||
if (res->Data.Address16.ProducerConsumer != ACPI_CONSUMER) {
|
||||
@ -394,62 +394,62 @@ acpi_parse_resources(device_t dev, ACPI_HANDLE handle,
|
||||
if (res->Data.Address16.ResourceType == ACPI_MEMORY_RANGE) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"Address16/Memory 0x%x/%d\n",
|
||||
res->Data.Address16.MinAddressRange,
|
||||
res->Data.Address16.Minimum,
|
||||
res->Data.Address16.AddressLength));
|
||||
set->set_memory(dev, context,
|
||||
res->Data.Address16.MinAddressRange,
|
||||
res->Data.Address16.Minimum,
|
||||
res->Data.Address16.AddressLength);
|
||||
} else {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"Address16/IO 0x%x/%d\n",
|
||||
res->Data.Address16.MinAddressRange,
|
||||
res->Data.Address16.Minimum,
|
||||
res->Data.Address16.AddressLength));
|
||||
set->set_ioport(dev, context,
|
||||
res->Data.Address16.MinAddressRange,
|
||||
res->Data.Address16.Minimum,
|
||||
res->Data.Address16.AddressLength);
|
||||
}
|
||||
} else {
|
||||
if (res->Data.Address16.ResourceType == ACPI_MEMORY_RANGE) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"Address16/Memory 0x%x-0x%x/%d\n",
|
||||
res->Data.Address16.MinAddressRange,
|
||||
res->Data.Address16.MaxAddressRange,
|
||||
res->Data.Address16.Minimum,
|
||||
res->Data.Address16.Maximum,
|
||||
res->Data.Address16.AddressLength));
|
||||
set->set_memoryrange(dev, context,
|
||||
res->Data.Address16.MinAddressRange,
|
||||
res->Data.Address16.MaxAddressRange,
|
||||
res->Data.Address16.Minimum,
|
||||
res->Data.Address16.Maximum,
|
||||
res->Data.Address16.AddressLength,
|
||||
res->Data.Address16.Granularity);
|
||||
} else {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"Address16/IO 0x%x-0x%x/%d\n",
|
||||
res->Data.Address16.MinAddressRange,
|
||||
res->Data.Address16.MaxAddressRange,
|
||||
res->Data.Address16.Minimum,
|
||||
res->Data.Address16.Maximum,
|
||||
res->Data.Address16.AddressLength));
|
||||
set->set_iorange(dev, context,
|
||||
res->Data.Address16.MinAddressRange,
|
||||
res->Data.Address16.MaxAddressRange,
|
||||
res->Data.Address16.Minimum,
|
||||
res->Data.Address16.Maximum,
|
||||
res->Data.Address16.AddressLength,
|
||||
res->Data.Address16.Granularity);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ACPI_RSTYPE_ADDRESS64:
|
||||
case ACPI_RESOURCE_TYPE_ADDRESS64:
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"unimplemented Address64 resource\n"));
|
||||
break;
|
||||
case ACPI_RSTYPE_EXT_IRQ:
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
|
||||
if (res->Data.ExtendedIrq.ProducerConsumer != ACPI_CONSUMER) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"ignored ExtIRQ producer\n"));
|
||||
break;
|
||||
}
|
||||
set->set_irq(dev, context,res->Data.ExtendedIrq.Interrupts,
|
||||
res->Data.ExtendedIrq.NumberOfInterrupts,
|
||||
res->Data.ExtendedIrq.EdgeLevel,
|
||||
res->Data.ExtendedIrq.ActiveHighLow);
|
||||
set->set_ext_irq(dev, context, res->Data.ExtendedIrq.Interrupts,
|
||||
res->Data.ExtendedIrq.InterruptCount,
|
||||
res->Data.ExtendedIrq.Triggering,
|
||||
res->Data.ExtendedIrq.Polarity);
|
||||
break;
|
||||
case ACPI_RSTYPE_VENDOR:
|
||||
case ACPI_RESOURCE_TYPE_VENDOR:
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES,
|
||||
"unimplemented VendorSpecific resource\n"));
|
||||
break;
|
||||
@ -479,13 +479,15 @@ static void acpi_res_set_memory(device_t dev, void *context,
|
||||
static void acpi_res_set_memoryrange(device_t dev, void *context,
|
||||
u_int32_t low, u_int32_t high,
|
||||
u_int32_t length, u_int32_t align);
|
||||
static void acpi_res_set_irq(device_t dev, void *context, u_int32_t *irq,
|
||||
static void acpi_res_set_irq(device_t dev, void *context, u_int8_t *irq,
|
||||
int count, int trig, int pol);
|
||||
static void acpi_res_set_drq(device_t dev, void *context, u_int32_t *drq,
|
||||
static void acpi_res_set_ext_irq(device_t dev, void *context,
|
||||
u_int32_t *irq, int count, int trig, int pol);
|
||||
static void acpi_res_set_drq(device_t dev, void *context, u_int8_t *drq,
|
||||
int count);
|
||||
static void acpi_res_set_start_dependant(device_t dev, void *context,
|
||||
static void acpi_res_set_start_dependent(device_t dev, void *context,
|
||||
int preference);
|
||||
static void acpi_res_set_end_dependant(device_t dev, void *context);
|
||||
static void acpi_res_set_end_dependent(device_t dev, void *context);
|
||||
|
||||
struct acpi_parse_resource_set acpi_res_parse_set = {
|
||||
acpi_res_set_init,
|
||||
@ -495,9 +497,10 @@ struct acpi_parse_resource_set acpi_res_parse_set = {
|
||||
acpi_res_set_memory,
|
||||
acpi_res_set_memoryrange,
|
||||
acpi_res_set_irq,
|
||||
acpi_res_set_ext_irq,
|
||||
acpi_res_set_drq,
|
||||
acpi_res_set_start_dependant,
|
||||
acpi_res_set_end_dependant
|
||||
acpi_res_set_start_dependent,
|
||||
acpi_res_set_end_dependent
|
||||
};
|
||||
|
||||
struct acpi_res_context {
|
||||
@ -576,7 +579,7 @@ acpi_res_set_memoryrange(device_t dev, void *context, u_int32_t low,
|
||||
}
|
||||
|
||||
static void
|
||||
acpi_res_set_irq(device_t dev, void *context, u_int32_t *irq, int count,
|
||||
acpi_res_set_irq(device_t dev, void *context, u_int8_t *irq, int count,
|
||||
int trig, int pol)
|
||||
{
|
||||
struct acpi_res_context *cp = (struct acpi_res_context *)context;
|
||||
@ -592,7 +595,23 @@ acpi_res_set_irq(device_t dev, void *context, u_int32_t *irq, int count,
|
||||
}
|
||||
|
||||
static void
|
||||
acpi_res_set_drq(device_t dev, void *context, u_int32_t *drq, int count)
|
||||
acpi_res_set_ext_irq(device_t dev, void *context, u_int32_t *irq, int count,
|
||||
int trig, int pol)
|
||||
{
|
||||
struct acpi_res_context *cp = (struct acpi_res_context *)context;
|
||||
|
||||
if (cp == NULL || irq == NULL)
|
||||
return;
|
||||
|
||||
/* This implements no resource relocation. */
|
||||
if (count != 1)
|
||||
return;
|
||||
|
||||
bus_set_resource(dev, SYS_RES_IRQ, cp->ar_nirq++, *irq, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
acpi_res_set_drq(device_t dev, void *context, u_int8_t *drq, int count)
|
||||
{
|
||||
struct acpi_res_context *cp = (struct acpi_res_context *)context;
|
||||
|
||||
@ -607,23 +626,23 @@ acpi_res_set_drq(device_t dev, void *context, u_int32_t *drq, int count)
|
||||
}
|
||||
|
||||
static void
|
||||
acpi_res_set_start_dependant(device_t dev, void *context, int preference)
|
||||
acpi_res_set_start_dependent(device_t dev, void *context, int preference)
|
||||
{
|
||||
struct acpi_res_context *cp = (struct acpi_res_context *)context;
|
||||
|
||||
if (cp == NULL)
|
||||
return;
|
||||
device_printf(dev, "dependant functions not supported\n");
|
||||
device_printf(dev, "dependent functions not supported\n");
|
||||
}
|
||||
|
||||
static void
|
||||
acpi_res_set_end_dependant(device_t dev, void *context)
|
||||
acpi_res_set_end_dependent(device_t dev, void *context)
|
||||
{
|
||||
struct acpi_res_context *cp = (struct acpi_res_context *)context;
|
||||
|
||||
if (cp == NULL)
|
||||
return;
|
||||
device_printf(dev, "dependant functions not supported\n");
|
||||
device_printf(dev, "dependent functions not supported\n");
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -323,13 +323,15 @@ struct acpi_parse_resource_set {
|
||||
uint32_t length);
|
||||
void (*set_memoryrange)(device_t dev, void *context, uint32_t low,
|
||||
uint32_t high, uint32_t length, uint32_t align);
|
||||
void (*set_irq)(device_t dev, void *context, u_int32_t *irq,
|
||||
void (*set_irq)(device_t dev, void *context, u_int8_t *irq,
|
||||
int count, int trig, int pol);
|
||||
void (*set_drq)(device_t dev, void *context, u_int32_t *drq,
|
||||
void (*set_ext_irq)(device_t dev, void *context, u_int32_t *irq,
|
||||
int count, int trig, int pol);
|
||||
void (*set_drq)(device_t dev, void *context, u_int8_t *drq,
|
||||
int count);
|
||||
void (*set_start_dependant)(device_t dev, void *context,
|
||||
void (*set_start_dependent)(device_t dev, void *context,
|
||||
int preference);
|
||||
void (*set_end_dependant)(device_t dev, void *context);
|
||||
void (*set_end_dependent)(device_t dev, void *context);
|
||||
};
|
||||
|
||||
extern struct acpi_parse_resource_set acpi_res_parse_set;
|
||||
|
@ -229,7 +229,7 @@ madt_probe(void)
|
||||
* the version 1.0 portion of the RSDP. Version 2.0 has
|
||||
* an additional checksum that we verify first.
|
||||
*/
|
||||
if (AcpiTbChecksum(rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0) {
|
||||
if (AcpiTbGenerateChecksum(rsdp, ACPI_RSDP_XCHECKSUM_LENGTH)) {
|
||||
if (bootverbose)
|
||||
printf("MADT: RSDP failed extended checksum\n");
|
||||
return (ENXIO);
|
||||
|
@ -24,15 +24,15 @@ SRCS+= hwacpi.c hwgpe.c hwregs.c hwsleep.c hwtimer.c
|
||||
SRCS+= nsaccess.c nsalloc.c nsdump.c nseval.c nsinit.c
|
||||
SRCS+= nsload.c nsnames.c nsobject.c nsparse.c nssearch.c
|
||||
SRCS+= nsutils.c nswalk.c nsxfeval.c nsxfname.c nsxfobj.c
|
||||
SRCS+= psargs.c psopcode.c psparse.c psscope.c
|
||||
SRCS+= psargs.c psloop.c psopcode.c psparse.c psscope.c
|
||||
SRCS+= pstree.c psutils.c pswalk.c psxface.c
|
||||
SRCS+= rsaddr.c rscalc.c rscreate.c rsdump.c rsio.c
|
||||
SRCS+= rsaddr.c rscalc.c rscreate.c rsdump.c rsinfo.c rsio.c
|
||||
SRCS+= rsirq.c rslist.c rsmemory.c rsmisc.c rsutils.c
|
||||
SRCS+= rsxface.c tbconvrt.c tbget.c tbgetall.c tbinstal.c
|
||||
SRCS+= tbrsdt.c tbutils.c tbxface.c tbxfroot.c utalloc.c
|
||||
SRCS+= utclib.c utcopy.c utdebug.c utdelete.c uteval.c
|
||||
SRCS+= utglobal.c utinit.c utmath.c utmisc.c utobject.c
|
||||
SRCS+= utxface.c
|
||||
SRCS+= utcache.c utclib.c utcopy.c utdebug.c utdelete.c
|
||||
SRCS+= uteval.c utglobal.c utinit.c utmath.c utmisc.c
|
||||
SRCS+= utmutex.c utobject.c utstate.c utxface.c
|
||||
|
||||
# OSPM layer and core hardware drivers
|
||||
SRCS+= acpi.c acpi_button.c acpi_isab.c
|
||||
@ -64,6 +64,7 @@ DBSRC+= dbinput.c dbstats.c dbutils.c dbxface.c
|
||||
DBSRC+= dmbuffer.c dmnames.c dmopcode.c dmobject.c dmresrc.c dmresrcl.c
|
||||
DBSRC+= dmresrcs.c dmutils.c dmwalk.c
|
||||
|
||||
CFLAGS+=-DACPI_USE_LOCAL_CACHE
|
||||
.if !defined(KERNBUILDDIR)
|
||||
.if ACPI_MAX_THREADS
|
||||
CFLAGS+=-DACPI_MAX_THREADS=${ACPI_MAX_THREADS}
|
||||
|
@ -2,7 +2,7 @@
|
||||
# $FreeBSD$
|
||||
|
||||
ACPICA_DIR= ${.CURDIR}/../../../sys/contrib/dev/acpica
|
||||
CFLAGS+= -I${.CURDIR}/../../../sys -I${ACPICA_DIR} -I${ACPICA_DIR}/compiler
|
||||
CFLAGS+= -I${.CURDIR}/../../../sys
|
||||
|
||||
.if exists(${.CURDIR}/../../Makefile.inc)
|
||||
.include "${.CURDIR}/../../Makefile.inc"
|
||||
|
@ -1,38 +1,61 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= acpidb
|
||||
SRCS+= acpidb.c
|
||||
SRCS= acpidb.c
|
||||
SRCS+= osunixxf.c
|
||||
SRCS+= dbcmds.c dbdisply.c dbexec.c dbfileio.c \
|
||||
dbhistry.c dbinput.c dbstats.c dbutils.c \
|
||||
dbxface.c dmbuffer.c dmnames.c dmobject.c \
|
||||
dmopcode.c dmresrc.c dmresrcl.c dmresrcs.c \
|
||||
dmutils.c dmwalk.c dsfield.c dsinit.c \
|
||||
dsmethod.c dsmthdat.c dsobject.c dsopcode.c \
|
||||
dsutils.c dswexec.c dswload.c dswscope.c dswstate.c \
|
||||
evevent.c evgpe.c evgpeblk.c evmisc.c \
|
||||
evregion.c evrgnini.c evsci.c evxface.c \
|
||||
evxfevnt.c evxfregn.c exconfig.c exconvrt.c \
|
||||
excreate.c exdump.c exfield.c exfldio.c \
|
||||
exmisc.c exmutex.c exnames.c exoparg1.c \
|
||||
exoparg2.c exoparg3.c exoparg6.c exprep.c \
|
||||
exregion.c exresnte.c exresolv.c exresop.c \
|
||||
exstore.c exstoren.c exstorob.c exsystem.c exutils.c \
|
||||
hwacpi.c hwgpe.c hwregs.c hwsleep.c \
|
||||
nsaccess.c nsalloc.c nsdump.c nseval.c \
|
||||
nsinit.c nsload.c nsnames.c nsobject.c \
|
||||
nsparse.c nssearch.c nsutils.c nswalk.c \
|
||||
nsxfeval.c nsxfname.c nsxfobj.c \
|
||||
psargs.c psopcode.c psparse.c psscope.c \
|
||||
pstree.c psutils.c pswalk.c psxface.c \
|
||||
rsaddr.c rscalc.c rscreate.c rsdump.c \
|
||||
rsio.c rsirq.c rslist.c rsmemory.c \
|
||||
rsmisc.c rsutils.c rsxface.c \
|
||||
tbconvrt.c tbget.c tbgetall.c tbinstal.c \
|
||||
tbrsdt.c tbutils.c tbxface.c tbxfroot.c \
|
||||
utalloc.c utcopy.c utdebug.c utdelete.c \
|
||||
uteval.c utglobal.c utinit.c utmath.c \
|
||||
utmisc.c utobject.c utxface.c
|
||||
|
||||
# debugger
|
||||
SRCS+= dbcmds.c dbdisply.c dbexec.c dbfileio.c dbhistry.c \
|
||||
dbinput.c dbstats.c dbutils.c dbxface.c
|
||||
|
||||
# disassembler
|
||||
SRCS+= dmbuffer.c dmnames.c dmobject.c dmopcode.c dmresrc.c \
|
||||
dmresrcl.c dmresrcs.c dmutils.c dmwalk.c
|
||||
|
||||
# events
|
||||
SRCS+= evevent.c evgpe.c evgpeblk.c evmisc.c evregion.c \
|
||||
evrgnini.c evsci.c evxface.c evxfevnt.c evxfregn.c
|
||||
|
||||
# hardware
|
||||
SRCS+= hwacpi.c hwgpe.c hwregs.c hwsleep.c
|
||||
|
||||
# interpreter/dispatcher
|
||||
SRCS+= dsfield.c dsinit.c dsmethod.c dsmthdat.c dsobject.c \
|
||||
dsopcode.c dsutils.c dswexec.c dswload.c dswscope.c \
|
||||
dswstate.c
|
||||
|
||||
# interpreter/executer
|
||||
SRCS+= exconfig.c exconvrt.c excreate.c exdump.c exfield.c \
|
||||
exfldio.c exmisc.c exmutex.c exnames.c exoparg1.c \
|
||||
exoparg2.c exoparg3.c exoparg6.c exprep.c exregion.c \
|
||||
exresnte.c exresolv.c exresop.c exstore.c exstoren.c \
|
||||
exstorob.c exsystem.c exutils.c
|
||||
|
||||
# interpreter/parser
|
||||
SRCS+= psargs.c psloop.c psopcode.c psparse.c psscope.c \
|
||||
pstree.c psutils.c pswalk.c psxface.c
|
||||
|
||||
# namespace
|
||||
SRCS+= nsaccess.c nsalloc.c nsdump.c nseval.c nsinit.c \
|
||||
nsload.c nsnames.c nsobject.c nsparse.c nssearch.c \
|
||||
nsutils.c nswalk.c nsxfeval.c nsxfname.c nsxfobj.c
|
||||
|
||||
# resources
|
||||
SRCS+= rsaddr.c rscalc.c rscreate.c rsdump.c rsinfo.c \
|
||||
rsio.c rsirq.c rslist.c rsmemory.c rsmisc.c \
|
||||
rsutils.c rsxface.c
|
||||
|
||||
# tables
|
||||
SRCS+= tbconvrt.c tbget.c tbgetall.c tbinstal.c tbrsdt.c \
|
||||
tbutils.c tbxface.c tbxfroot.c
|
||||
|
||||
# tools/acpiexec
|
||||
SRCS+= aeexec.c
|
||||
|
||||
# utilities
|
||||
SRCS+= utalloc.c utcache.c utcopy.c utdebug.c utdelete.c \
|
||||
uteval.c utglobal.c utinit.c utmath.c utmisc.c \
|
||||
utmutex.c utobject.c utstate.c utxface.c
|
||||
|
||||
MAN= acpidb.8
|
||||
WARNS?= 2
|
||||
|
@ -41,9 +41,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <acpi.h>
|
||||
#include <acnamesp.h>
|
||||
#include <acdebug.h>
|
||||
#include <contrib/dev/acpica/acpi.h>
|
||||
#include <contrib/dev/acpica/acnamesp.h>
|
||||
#include <contrib/dev/acpica/acdebug.h>
|
||||
|
||||
/*
|
||||
* Dummy DSDT Table Header
|
||||
|
@ -1,38 +1,60 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= iasl
|
||||
SRCS= aslcompiler.y.h aslcompilerlex.l aslcompilerparse.y \
|
||||
aslanalyze.c aslcodegen.c \
|
||||
aslcompile.c aslerror.c aslfiles.c asllength.c \
|
||||
asllisting.c aslload.c asllookup.c aslmain.c \
|
||||
aslmap.c aslopcodes.c asloperands.c aslresource.c \
|
||||
aslrestype1.c aslrestype2.c asltree.c aslutils.c \
|
||||
asltransform.c aslfold.c aslstubs.c aslopt.c
|
||||
SRCS+= adisasm.c getopt.c osunixxf.c
|
||||
SRCS+= dbfileio.c dmbuffer.c dmnames.c dmopcode.c dmobject.c \
|
||||
dmresrc.c dmresrcl.c dmresrcs.c dmutils.c dmwalk.c \
|
||||
dsopcode.c dsutils.c dswexec.c dswload.c \
|
||||
dswscope.c dswstate.c dsfield.c dsobject.c \
|
||||
exconvrt.c excreate.c exdump.c exmisc.c \
|
||||
exmutex.c exnames.c exoparg1.c exoparg2.c \
|
||||
exoparg3.c exoparg6.c exprep.c exregion.c \
|
||||
exresnte.c exresolv.c exresop.c exstore.c \
|
||||
exstoren.c exstorob.c exsystem.c exutils.c \
|
||||
nsaccess.c nsalloc.c nsdump.c nsnames.c nsobject.c \
|
||||
nsparse.c nssearch.c nsutils.c nswalk.c nsxfobj.c \
|
||||
psargs.c psopcode.c psparse.c psscope.c \
|
||||
pstree.c psutils.c pswalk.c \
|
||||
tbinstal.c tbutils.c \
|
||||
utalloc.c utcopy.c utdebug.c utdelete.c \
|
||||
utglobal.c utobject.c utmisc.c utmath.c
|
||||
SRCS= adisasm.c
|
||||
SRCS+= osunixxf.c
|
||||
|
||||
# common
|
||||
SRCS+= getopt.c
|
||||
|
||||
# compiler
|
||||
SRCS+= aslanalyze.c aslcodegen.c aslcompile.c aslcompiler.y.h \
|
||||
aslcompilerlex.l aslcompilerparse.y aslerror.c \
|
||||
aslfiles.c aslfold.c asllength.c asllisting.c \
|
||||
aslload.c asllookup.c aslmain.c aslmap.c aslopcodes.c \
|
||||
asloperands.c aslopt.c aslresource.c aslrestype1.c \
|
||||
aslrestype2.c aslstubs.c asltransform.c asltree.c \
|
||||
aslutils.c
|
||||
|
||||
# debugger
|
||||
SRCS+= dbfileio.c
|
||||
|
||||
# disassembler
|
||||
SRCS+= dmbuffer.c dmnames.c dmobject.c dmopcode.c dmresrc.c \
|
||||
dmresrcl.c dmresrcs.c dmutils.c dmwalk.c
|
||||
|
||||
# interpreter/dispatcher
|
||||
SRCS+= dsfield.c dsobject.c dsopcode.c dsutils.c dswexec.c \
|
||||
dswload.c dswscope.c dswstate.c
|
||||
|
||||
# interpreter/executer
|
||||
SRCS+= exconvrt.c excreate.c exdump.c exmisc.c exmutex.c \
|
||||
exnames.c exoparg1.c exoparg2.c exoparg3.c exoparg6.c \
|
||||
exprep.c exregion.c exresnte.c exresolv.c exresop.c \
|
||||
exstore.c exstoren.c exstorob.c exsystem.c exutils.c
|
||||
|
||||
# interpreter/parser
|
||||
SRCS+= psargs.c psloop.c psopcode.c psparse.c psscope.c \
|
||||
pstree.c psutils.c pswalk.c
|
||||
|
||||
# namespace
|
||||
SRCS+= nsaccess.c nsalloc.c nsdump.c nsnames.c nsobject.c \
|
||||
nsparse.c nssearch.c nsutils.c nswalk.c nsxfobj.c
|
||||
|
||||
# tables
|
||||
SRCS+= tbinstal.c tbutils.c
|
||||
|
||||
# utilities
|
||||
SRCS+= utalloc.c utcache.c utcopy.c utdebug.c utdelete.c \
|
||||
utglobal.c utmath.c utmisc.c utmutex.c utobject.c \
|
||||
utstate.c
|
||||
|
||||
MAN= iasl.8
|
||||
|
||||
CFLAGS+= -D_ACPI_ASL_COMPILER -I.
|
||||
|
||||
CFLAGS+= -DACPI_ASL_COMPILER -I.
|
||||
CFLAGS+= -D_USE_BERKELEY_YACC
|
||||
LFLAGS= -i -PAslCompiler
|
||||
YFLAGS= -d -pAslCompiler
|
||||
LFLAGS= -i -PAslCompiler
|
||||
YFLAGS= -d -pAslCompiler
|
||||
|
||||
CLEANFILES= aslcompiler.y.h aslcompilerlex.l aslcompilerparse.y
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user