return result;
}
-
/**
* Write a USB 32bit CSR. It performs the necessary address
* swizzle for 32bit CSRs and logs the value in a readable format
usb->usbcx_hprt.s.prtspd == CVMX_USB_SPEED_HIGH;
}
-
/**
* Trivial utility function to return the correct PID for a pipe
*
CVMX_USBCX_HPRT(usb->index));
}
-
/**
* Disable a USB port. After this call the USB port will not
* generate data transfers and will not generate events.
return 0;
}
-
/**
* Get the current state of the USB port. Use this call to
* determine if the usb port has anything connected, is enabled,
return pipe;
}
-
/**
* Poll the RX FIFOs and remove data as needed. This function is only used
* in non DMA mode. It is very important that this function be called quickly
CVMX_SYNCW;
}
-
/**
* Fill the TX hardware fifo with data out of the software
* fifos
return fifo->head != fifo->tail;
}
-
/**
* Check the hardware FIFOs and fill them as needed
*
}
}
-
/**
* Fill the TX FIFO with an outgoing packet
*
usbc_hctsiz.u32);
}
-
/**
* Start a channel to perform the pipe's head transaction
*
cvmx_usb_fill_tx_fifo(usb, channel);
}
-
/**
* Find a pipe that is ready to be scheduled to hardware.
* @usb: USB device state populated by cvmx_usb_initialize().
return NULL;
}
-
/**
* Called whenever a pipe might need to be scheduled to the
* hardware.
kfree(transaction);
}
-
/**
* Submit a usb transaction to a pipe. Called for all types
* of transactions.
return transaction;
}
-
/**
* Call to submit a USB Bulk transfer to a pipe.
*
urb);
}
-
/**
* Call to submit a USB Interrupt transfer to a pipe.
*
urb);
}
-
/**
* Call to submit a USB Control transfer to a pipe.
*
urb);
}
-
/**
* Call to submit a USB Isochronous transfer to a pipe.
*
packets, urb);
}
-
/**
* Cancel one outstanding request in a pipe. Canceling a request
* can fail if the transaction has already completed before cancel
return 0;
}
-
/**
* Cancel all outstanding requests in a pipe. Logically all this
* does is call cvmx_usb_cancel() in a loop.
return 0;
}
-
/**
* Close a pipe created with cvmx_usb_open_pipe().
*
return frame_number;
}
-
/**
* Poll a channel for status
*
dev_err(dev, "Illegal USBN \"clock-frequency\" %u\n",
clock_rate);
return -ENXIO;
-
}
i = of_property_read_string(usbn_node,