zero_set_config (struct zero_dev *dev, unsigned number, int gfp_flags) 
zero_set_config (struct zero_dev *dev, unsigned number, unsigned gfp_flags) 
zero_set_config (struct zero_dev *dev, unsigned number, int gfp_flags){	int			result = 0;	struct usb_gadget	*gadget = dev->gadget;	if (number == dev->config)		return 0;	if (gadget_is_sa1100 (gadget) && dev->config) {		/* tx fifo is full, but we can't clear it...*/		INFO (dev, "can't change configurations\n");		return -ESPIPE;	}	zero_reset_config (dev);	switch (number) {	case CONFIG_SOURCE_SINK:		result = set_source_sink_config (dev, gfp_flags);		break;	case CONFIG_LOOPBACK:		result = set_loopback_config (dev, gfp_flags);		break;	default:		result = -EINVAL;		/* FALL THROUGH */	case 0:		return result;	}	if (!result && (!dev->in_ep || !dev->out_ep))		result = -ENODEV;	if (result)		zero_reset_config (dev);	else {		char *speed;		switch (gadget->speed) {		case USB_SPEED_LOW:	speed = "low"; break;		case USB_SPEED_FULL:	speed = "full"; break;		case USB_SPEED_HIGH:	speed = "high"; break;		default: 		speed = "?"; break;		}		dev->config = number;		INFO (dev, "%s speed config #%d: %s\n", speed, number,				(number == CONFIG_SOURCE_SINK)					? source_sink : loopback);	}	return result;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/5db539e49fc7471e23bf3c94ca304f008cb7b7f3/zero.c/buggy/drivers/usb/gadget/zero.c