*(__le32 *) buf = cpu_to_le32(0); 
*(__le32 *) buf = 0; 
static int isp116x_hub_control(struct usb_hcd *hcd,			       u16 typeReq,			       u16 wValue, u16 wIndex, char *buf, u16 wLength){	struct isp116x *isp116x = hcd_to_isp116x(hcd);	int ret = 0;	unsigned long flags;	int ports = isp116x->rhdesca & RH_A_NDP;	u32 tmp = 0;	switch (typeReq) {	case ClearHubFeature:		DBG("ClearHubFeature: ");		switch (wValue) {		case C_HUB_OVER_CURRENT:			DBG("C_HUB_OVER_CURRENT\n");			spin_lock_irqsave(&isp116x->lock, flags);			isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_OCIC);			spin_unlock_irqrestore(&isp116x->lock, flags);		case C_HUB_LOCAL_POWER:			DBG("C_HUB_LOCAL_POWER\n");			break;		default:			goto error;		}		break;	case SetHubFeature:		DBG("SetHubFeature: ");		switch (wValue) {		case C_HUB_OVER_CURRENT:		case C_HUB_LOCAL_POWER:			DBG("C_HUB_OVER_CURRENT or C_HUB_LOCAL_POWER\n");			break;		default:			goto error;		}		break;	case GetHubDescriptor:		DBG("GetHubDescriptor\n");		isp116x_hub_descriptor(isp116x,				       (struct usb_hub_descriptor *)buf);		break;	case GetHubStatus:		DBG("GetHubStatus\n");		*(__le32 *) buf = cpu_to_le32(0);		break;	case GetPortStatus:		DBG("GetPortStatus\n");		if (!wIndex || wIndex > ports)			goto error;		tmp = isp116x->rhport[--wIndex];		*(__le32 *) buf = cpu_to_le32(tmp);		DBG("GetPortStatus: port[%d]  %08x\n", wIndex + 1, tmp);		break;	case ClearPortFeature:		DBG("ClearPortFeature: ");		if (!wIndex || wIndex > ports)			goto error;		wIndex--;		switch (wValue) {		case USB_PORT_FEAT_ENABLE:			DBG("USB_PORT_FEAT_ENABLE\n");			tmp = RH_PS_CCS;			break;		case USB_PORT_FEAT_C_ENABLE:			DBG("USB_PORT_FEAT_C_ENABLE\n");			tmp = RH_PS_PESC;			break;		case USB_PORT_FEAT_SUSPEND:			DBG("USB_PORT_FEAT_SUSPEND\n");			tmp = RH_PS_POCI;			break;		case USB_PORT_FEAT_C_SUSPEND:			DBG("USB_PORT_FEAT_C_SUSPEND\n");			tmp = RH_PS_PSSC;			break;		case USB_PORT_FEAT_POWER:			DBG("USB_PORT_FEAT_POWER\n");			tmp = RH_PS_LSDA;			break;		case USB_PORT_FEAT_C_CONNECTION:			DBG("USB_PORT_FEAT_C_CONNECTION\n");			tmp = RH_PS_CSC;			break;		case USB_PORT_FEAT_C_OVER_CURRENT:			DBG("USB_PORT_FEAT_C_OVER_CURRENT\n");			tmp = RH_PS_OCIC;			break;		case USB_PORT_FEAT_C_RESET:			DBG("USB_PORT_FEAT_C_RESET\n");			tmp = RH_PS_PRSC;			break;		default:			goto error;		}		spin_lock_irqsave(&isp116x->lock, flags);		isp116x_write_reg32(isp116x, wIndex				    ? HCRHPORT2 : HCRHPORT1, tmp);		isp116x->rhport[wIndex] =		    isp116x_read_reg32(isp116x, wIndex ? HCRHPORT2 : HCRHPORT1);		spin_unlock_irqrestore(&isp116x->lock, flags);		break;	case SetPortFeature:		DBG("SetPortFeature: ");		if (!wIndex || wIndex > ports)			goto error;		wIndex--;		switch (wValue) {		case USB_PORT_FEAT_SUSPEND:			DBG("USB_PORT_FEAT_SUSPEND\n");			spin_lock_irqsave(&isp116x->lock, flags);			isp116x_write_reg32(isp116x, wIndex					    ? HCRHPORT2 : HCRHPORT1, RH_PS_PSS);			break;		case USB_PORT_FEAT_POWER:			DBG("USB_PORT_FEAT_POWER\n");			spin_lock_irqsave(&isp116x->lock, flags);			isp116x_write_reg32(isp116x, wIndex					    ? HCRHPORT2 : HCRHPORT1, RH_PS_PPS);			break;		case USB_PORT_FEAT_RESET:			DBG("USB_PORT_FEAT_RESET\n");			root_port_reset(isp116x, wIndex);			spin_lock_irqsave(&isp116x->lock, flags);			break;		default:			goto error;		}		isp116x->rhport[wIndex] =		    isp116x_read_reg32(isp116x, wIndex ? HCRHPORT2 : HCRHPORT1);		spin_unlock_irqrestore(&isp116x->lock, flags);		break;	default:	      error:		/* "protocol stall" on error */		DBG("PROTOCOL STALL\n");		ret = -EPIPE;	}	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/17f8bb7312fa9b00f80c3c0f8d5a5d698eb97bbd/isp116x-hcd.c/clean/drivers/usb/host/isp116x-hcd.c