Lines Matching refs:hc

131  * \param hc the host controller which got the interrupt
133 void usb_ehci_roothub_interrupt(usb_ehci_hc_t *hc)
137 for (uint16_t i = 0; i < hc->rh_num_ports; i++) {
138 ehci_portsc_t ps = ehci_portsc_rd(&hc->ehci_base, i);
146 usb_hub_root_interrupt(hc->controller);
164 usb_ehci_hc_t *hc = (usb_ehci_hc_t *) device->controller->hc_control;
166 const void *data = (const void *) &hc->rh_desc;
181 hc->rh_desc.temp[0] = hc->rh_device_config;
202 hc->rh_desc.hub_desc = rh_desc;
203 hc->rh_desc.hub_desc.bNbrPorts = hc
205 hc->rh_desc.hub_desc.wHubCharacteristics
207 &hc->ehci_base);
208 hc->rh_desc.hub_desc.wHubCharacteristics
209 .power_mode = ehci_hcsparams_ppc_rdf(&hc->ehci_base);
210 hc->rh_desc.hub_desc.bPwrOn2PwrGood = 200;
211 hc->rh_desc.hub_desc.bDescLength = 8
212 + ((hc->rh_num_ports + 7) / 8);
213 data_length = hc->rh_desc.hub_desc.bDescLength;
237 str = hc->rh_vendor;
263 hc->rh_desc.temp[0] = 0;
270 hc->rh_desc.status.wStatus = USB_STATUS_SELF_POWERED;
274 memset(hc->rh_desc.temp, 0, 16);
282 hc->rh_desc.status.wStatus = 0;
290 hc->rh_device_address = req->wValue;
298 hc->rh_device_config = req->wValue;
328 if ((req->wIndex < 1) || (req->wLength > hc->rh_num_ports)) {
337 ehci_portsc_ped_wrf(&hc->ehci_base, req->wIndex, 0);
340 if (ehci_portsc_sus_rdf(&hc->ehci_base, req->wIndex)
341 && (!ehci_portsc_fpr_rdf(&hc->ehci_base, req->wIndex))) {
342 ehci_portsc_fpr_wrf(&hc->ehci_base, req->wIndex, 1);
346 ehci_portsc_sus_wrf(&hc->ehci_base, req->wIndex, 0);
347 ehci_portsc_fpr_wrf(&hc->ehci_base, req->wIndex, 0);
348 ehci_portsc_ls_wrf(&hc->ehci_base, req->wIndex, 0x3);
352 ehci_portsc_pp_wrf(&hc->ehci_base, req->wIndex, 0);
359 ehci_portsc_pic_wrf(&hc->ehci_base, req->wIndex, 0);
362 ehci_portsc_csc_wrf(&hc->ehci_base, req->wIndex, 1);
366 ehci_portsc_pec_wrf(&hc->ehci_base, req->wIndex, 1);
369 ehci_portsc_sus_wrf(&hc->ehci_base, req->wIndex, 1);
372 ehci_portsc_occ_wrf(&hc->ehci_base, req->wIndex, 1);
375 hc->rh_reset = 0;
386 if ((req->wIndex < 1) || (req->wIndex > hc->rh_num_ports)) {
392 data_length = sizeof(hc->rh_desc.port_status);
393 struct usb_hub_port_status *ps = &(hc->rh_desc
397 ehci_portsc_t ehci_ps = ehci_portsc_rd(&hc->ehci_base,
423 ps->wPortChange.is_reset = hc->rh_reset;
433 if ((req->wIndex < 1) || (req->wIndex > hc->rh_num_ports)) {
441 ehci_portsc_ped_wrf(&hc->ehci_base, req->wIndex, 1);
444 ehci_portsc_sus_wrf(&hc->ehci_base, req->wIndex, 1);
447 if (ehci_portsc_ls_rdf(&hc->ehci_base, req->wIndex) == 0x1) {
449 usb_ehci_roothub_port_disown(hc, req->wIndex);
453 ehci_portsc_pr_wrf(&hc->ehci_base, req->wIndex, 1);
457 ehci_portsc_pr_wrf(&hc->ehci_base, req->wIndex, 0);
460 if (ehci_portsc_pr_rdf(&hc->ehci_base, req->wIndex)) {
465 if (!ehci_portsc_ped_rdf(&hc->ehci_base, req->wIndex)) {
468 * if (hc->flags.tt_present) {
469 usb_ehci_roothub_port_disown(hc, req->wIndex, 0);
472 hc->rh_reset = 1;
476 ehci_portsc_pp_wrf(&hc->ehci_base, req->wIndex, 1);
481 ehci_portsc_pic_wrf(&hc->ehci_base, req->wIndex, 1);
514 * \param hc the host controller of the root hub
517 void usb_ehci_roothub_port_disown(usb_ehci_hc_t *hc, uint16_t portno)
519 if (portno > ehci_hcsparams_n_ports_rdf(&hc->ehci_base)) {
528 ehci_portsc_po_wrf(&hc->ehci_base, portno, 1);