desc->bNbrPorts = ports; temp = 1 + (ports / 8); 
desc->bNbrPorts = ohci->num_ports; temp = 1 + (ohci->num_ports / 8); 
ohci_hub_descriptor (	struct ohci_hcd			*ohci,	struct usb_hub_descriptor	*desc) {	u32		rh = roothub_a (ohci);	int		ports = rh & RH_A_NDP; 	u16		temp;	desc->bDescriptorType = 0x29;	desc->bPwrOn2PwrGood = (rh & RH_A_POTPGT) >> 24;	desc->bHubContrCurrent = 0;	desc->bNbrPorts = ports;	temp = 1 + (ports / 8);	desc->bDescLength = 7 + 2 * temp;	temp = 0;	if (rh & RH_A_NPS)		/* no power switching? */	    temp |= 0x0002;	if (rh & RH_A_PSM) 		/* per-port power switching? */	    temp |= 0x0001;	if (rh & RH_A_NOCP)		/* no overcurrent reporting? */	    temp |= 0x0010;	else if (rh & RH_A_OCPM)	/* per-port overcurrent reporting? */	    temp |= 0x0008;	desc->wHubCharacteristics = (__force __u16)cpu_to_hc16(ohci, temp);	/* two bitmaps:  ports removable, and usb 1.0 legacy PortPwrCtrlMask */	rh = roothub_b (ohci);	memset(desc->bitmap, 0xff, sizeof(desc->bitmap));	desc->bitmap [0] = rh & RH_B_DR;	if (ports > 7) {		desc->bitmap [1] = (rh & RH_B_DR) >> 8;		desc->bitmap [2] = 0xff;	} else		desc->bitmap [1] = 0xff;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/fdd13b36c4a501d8787a27e54635fbd943f2685d/ohci-hub.c/buggy/drivers/usb/host/ohci-hub.c