static int ohci_s3c2410_hub_status_data (struct usb_hcd *hcd, char *buf) { struct s3c2410_hcd_info *info = to_s3c2410_info(hcd); struct s3c2410_hcd_port *port; int orig; int portno; orig = ohci_hub_status_data (hcd, buf); if (info == NULL) return orig; port = &info->port[0]; /* mark any changed port as changed */ for (portno = 0; portno < 2; port++, portno++) { if (port->oc_changed == 1 && port->flags & S3C_HCDFLG_USED) { dev_dbg(hcd->self.controller, "oc change on port %d\n", portno); if (orig < 1) orig = 1; buf[0] |= 1<<(portno+1); } } return orig; }
/* * Update the status data from the hub with the over-current indicator change. */ static int ohci_at91_hub_status_data(struct usb_hcd *hcd, char *buf) { struct at91_usbh_data *pdata = hcd->self.controller->platform_data; int length = ohci_hub_status_data(hcd, buf); int port; at91_for_each_port(port) { if (pdata->overcurrent_changed[port]) { if (!length) length = 1; buf[0] |= 1 << (port + 1); } } return length; }
static int ohci_da8xx_hub_status_data(struct usb_hcd *hcd, char *buf) { int length = ohci_hub_status_data(hcd, buf); if (ocic_mask & (1 << 1)) { dev_dbg(hcd->self.controller, "over-current indicator change " "on port 1\n"); if (!length) length = 1; buf[0] |= 1 << 1; } return length; }