device, gp->addr, gp->active_state); 
name, gp->addr, gp->active_state); 
static int find_audio_gpio(const char *name, const char *platform,			   struct pmac_gpio *gp){	struct device_node *np;  	u32 *base, addr;	if (! (np = find_devices("gpio")))		return -ENODEV;	for (np = np->child; np; np = np->sibling) {		char *property = get_property(np, "audio-gpio", NULL);		if (property && strcmp(property, name) == 0)			break;		if (device_is_compatible(np, name))			break;	}	if (np == NULL)		return -ENODEV;	base = (u32 *)get_property(np, "AAPL,address", NULL);	if (! base) {		base = (u32 *)get_property(np, "reg", NULL);		if (!base) {			DBG("(E) cannot find address for device %s !\n", name);			return -ENODEV;		}		addr = *base;		if (addr < 0x50)			addr += 0x50;	} else		addr = *base;	gp->addr = addr & 0x0000ffff;	/* Try to find the active state, default to 0 ! */	base = (u32 *)get_property(np, "audio-gpio-active-state", NULL);	if (base) {		gp->active_state = *base;		gp->active_val = (*base) ? 0x5 : 0x4;		gp->inactive_val = (*base) ? 0x4 : 0x5;	} else {		u32 *prop = NULL;		gp->active_state = 0;		gp->active_val = 0x4;		gp->inactive_val = 0x5;		/* Here are some crude hacks to extract the GPIO polarity and		 * open collector informations out of the do-platform script		 * as we don't yet have an interpreter for these things		 */		if (platform)			prop = (u32 *)get_property(np, platform, NULL);		if (prop) {			if (prop[3] == 0x9 && prop[4] == 0x9) {				gp->active_val = 0xd;				gp->inactive_val = 0xc;			}			if (prop[3] == 0x1 && prop[4] == 0x1) {				gp->active_val = 0x5;				gp->inactive_val = 0x4;			}		}	}	DBG("(I) GPIO device %s found, offset: %x, active state: %d !\n",	    device, gp->addr, gp->active_state);	return (np->n_intrs > 0) ? np->intrs[0].line : 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6995f17a5ab3c3fd4df2e5b107d08cff1db3fa41/toonie.c/clean/sound/ppc/toonie.c