0
votes

If I use an USB Device with Interrupt In Endpoint (Mouse/KBD/Touchscreen), the host controller is getting the data from the Endpoint by polling this endpoint. So in Linux this pipe is called URB (USB Request Block) ... and this URB is initiated by the host controller. So data is collected by host controller - and now, I lost the path. I think the data is buffered to ram, maybe by the dma controller (not sure) ... and the host controller must register an interrupt to the Interrupt Controller so that the Core can handle the Interrupt coming originally from the USB-Device. Which driver registers the interrupts to the PIC? Where is the data stored when it is polled by the host controller?

Anyone is familiar with this?


****My specs:************* Jetson Tegra K1 with Ubuntu 14.04.4 TLS Egalax USB Touch Screen - USB Hid device

dmesg: input: eGalax Inc. eGalaxTouch EXC3000-1470-46.00.00 as /devices/platform/tegra-ehci.2/usb2/2-1/2-1.2/2-1.2.3/2-1.2.3:1.0/input/input8 [ 83.700372] hid-multitouch 0003:0EEF:C000.0007: input: USB HID v2.10 Pointer [eGalax Inc. eGalaxTouch EXC3000-1470-46.00.00] on usb-tegra-ehci.2-1.2.3/input0 lsusb - v: Bus 002 Device 012: ID 0eef:c000 D-WAV Scientific Co., Ltd bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 2 Mouse Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval

1

1 Answers

0
votes

Which driver registers the interrupts to the PIC?

EHCI driver for tegra platform registers the interrupt. Just refer the file ehci-tegra.c in "drivers/usb/host". You can add debug prints and recompile for tegra platform and this file will be built.

Where is the data stored when it is polled by the host controller?

Data is definitely stored in the RAM. And the buffer address is actually set by the user space application.