svn commit: r186805 - head/sys/powerpc/powermac
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Mon Jan 5 17:54:58 PST 2009
Author: nwhitehorn
Date: Tue Jan 6 01:54:57 2009
New Revision: 186805
URL: http://svn.freebsd.org/changeset/base/186805
Log:
Add a new quirk type so that the MacIO driver will assign memory resources
belonging to a devices children, in analogy to the way we handle interrupts
for SCC serial devices. This is required to counteract overly deep nesting
on onboard audio devices.
Submitted by: Marco Trillo
Modified:
head/sys/powerpc/powermac/macio.c
Modified: head/sys/powerpc/powermac/macio.c
==============================================================================
--- head/sys/powerpc/powermac/macio.c Tue Jan 6 01:36:36 2009 (r186804)
+++ head/sys/powerpc/powermac/macio.c Tue Jan 6 01:54:57 2009 (r186805)
@@ -152,6 +152,7 @@ static struct macio_pci_dev {
*/
#define MACIO_QUIRK_IGNORE 0x00000001
#define MACIO_QUIRK_CHILD_HAS_INTR 0x00000002
+#define MACIO_QUIRK_USE_CHILD_REG 0x00000004
struct macio_quirk_entry {
const char *mq_name;
@@ -162,7 +163,9 @@ static struct macio_quirk_entry macio_qu
{ "escc-legacy", MACIO_QUIRK_IGNORE },
{ "timer", MACIO_QUIRK_IGNORE },
{ "escc", MACIO_QUIRK_CHILD_HAS_INTR },
- { NULL, 0 }
+ { "i2s", MACIO_QUIRK_CHILD_HAS_INTR |
+ MACIO_QUIRK_USE_CHILD_REG },
+ { NULL, 0 }
};
static int
@@ -318,7 +321,10 @@ macio_attach(device_t dev)
resource_list_init(&dinfo->mdi_resources);
dinfo->mdi_ninterrupts = 0;
macio_add_intr(child, dinfo);
- macio_add_reg(child, dinfo);
+ if ((quirks & MACIO_QUIRK_USE_CHILD_REG) != 0)
+ macio_add_reg(OF_child(child), dinfo);
+ else
+ macio_add_reg(child, dinfo);
if ((quirks & MACIO_QUIRK_CHILD_HAS_INTR) != 0)
for (subchild = OF_child(child); subchild != 0;
subchild = OF_peer(subchild))
More information about the svn-src-all
mailing list