Two drivers sharing a single PCI device

Hans Petter Selasky hps at selasky.org
Sat Feb 7 06:06:17 UTC 2015


On 02/06/15 13:33, O'Connor, Daniel wrote:
>
>> On 6 Feb 2015, at 22:25, Hans Petter Selasky <hps at selasky.org> wrote:
>> On 02/06/15 04:50, O'Connor, Daniel wrote:
>>> Hi,
>>> I am working on an EHCI debug driver and I have the basics working (attach, probe for a debug dongle and send data back and forth) - https://bitbucket.org/DJOConnor/dbgp
>>>
>>> However one problem remaining is that for it to work you have to detach the EHCI driver (obviously rather suboptimal :) so I am wondering what the best way would be to allow both ehci and dbgp to attach to the same PCI device.
>>>
>>> The dbgp driver doesn't touch the EHCI registers once it's running but it does have some code to start the EHCI controller and reset the port during attach.
>>>
>>> I can modify echi so it uses RF_SHAREABLE which should allow them to get newbus handles to the same area but the problem is that only one probe routine gets called.
>>
>> You possibly want "D_TRACKCLOSE" in d_flags in your cdevsw.
>
>> What's the advantage of using the debug port over the regular EHCI USB interface?
>
> I don't think that would help. It is supposed to be (largely) separate from the regular EHCI controller - it has it's own register set and it can steal the debug port from the regular controller so it doesn't appear occupied (although there is a bit of messing around on port reset).
>
> The advantage is that it runs separately to the EHCI interface and it is quite simple to talk to, there is more information in appendix C of the USB 2 spec (usb_20.pdf).
>

Hi,

You know about "sys/boot/usb" ? If you could integrate the USB debug 
port to use the kernel USB stack HOST API, only limited to BULK, CONTROL 
and INTERRUPT, then we could easily use it there aswell. The EHCI debug 
port functions very much resemble those found in 
"sys/dev/usb/controller/dwc_otg*" for example.

--HPS



More information about the freebsd-hackers mailing list