INIT_WORK(&isp116x->rh_resume, isp116x_rh_resume, hcd); 
static int __init isp116x_probe(struct device *dev){	struct usb_hcd *hcd;	struct isp116x *isp116x;	struct platform_device *pdev;	struct resource *addr, *data;	void __iomem *addr_reg;	void __iomem *data_reg;	int irq;	int ret = 0;	pdev = container_of(dev, struct platform_device, dev);	if (pdev->num_resources < 3) {		ret = -ENODEV;		goto err1;	}	data = platform_get_resource(pdev, IORESOURCE_MEM, 0);	addr = platform_get_resource(pdev, IORESOURCE_MEM, 1);	irq = platform_get_irq(pdev, 0);	if (!addr || !data || irq < 0) {		ret = -ENODEV;		goto err1;	}	if (dev->dma_mask) {		DBG("DMA not supported\n");		ret = -EINVAL;		goto err1;	}	if (!request_mem_region(addr->start, 2, hcd_name)) {		ret = -EBUSY;		goto err1;	}	addr_reg = ioremap(addr->start, resource_len(addr));	if (addr_reg == NULL) {		ret = -ENOMEM;		goto err2;	}	if (!request_mem_region(data->start, 2, hcd_name)) {		ret = -EBUSY;		goto err3;	}	data_reg = ioremap(data->start, resource_len(data));	if (data_reg == NULL) {		ret = -ENOMEM;		goto err4;	}	/* allocate and initialize hcd */	hcd = usb_create_hcd(&isp116x_hc_driver, dev, dev->bus_id);	if (!hcd) {		ret = -ENOMEM;		goto err5;	}	/* this rsrc_start is bogus */	hcd->rsrc_start = addr->start;	isp116x = hcd_to_isp116x(hcd);	isp116x->data_reg = data_reg;	isp116x->addr_reg = addr_reg;	spin_lock_init(&isp116x->lock);	INIT_LIST_HEAD(&isp116x->async);	INIT_WORK(&isp116x->rh_resume, isp116x_rh_resume, hcd);	isp116x->board = dev->platform_data;	if (!isp116x->board) {		ERR("Platform data structure not initialized\n");		ret = -ENODEV;		goto err6;	}	if (isp116x_check_platform_delay(isp116x)) {		ERR("USE_PLATFORM_DELAY defined, but delay function not "		    "implemented.\n");		ERR("See comments in drivers/usb/host/isp116x-hcd.c\n");		ret = -ENODEV;		goto err6;	}	ret = usb_add_hcd(hcd, irq, SA_INTERRUPT);	if (ret != 0)		goto err6;	create_debug_file(isp116x);	return 0;      err6:	usb_put_hcd(hcd);      err5:	iounmap(data_reg);      err4:	release_mem_region(data->start, 2);      err3:	iounmap(addr_reg);      err2:	release_mem_region(addr->start, 2);      err1:	ERR("init error, %d\n", ret);	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ccdcf77ae32e3d3347fdf3810b27f899e98c34fb/isp116x-hcd.c/buggy/drivers/usb/host/isp116x-hcd.c