On Wed, Dec 21, 2016 at 1:56 PM, roboknight <robokni...@gmail.com> wrote:

>
>
> On Tuesday, December 20, 2016 at 3:27:44 PM UTC-5, William Hermans wrote:
>>
>>
>>
>> On Tue, Dec 20, 2016 at 10:02 AM, roboknight <robok...@gmail.com> wrote:
>>
>> At the underlined point, I believe ep->desc is NULL because using the
>> kernel and an arm objdump variant,
>>>
>>> I located the assembly that is causing the NULL dereference.  Inside of
>>> usb_endpoing_dir_out, it tries to
>>> dereference ep->desc, but ep->desc must be NULL otherwise things would
>>> likely go swimmingly.  The problem
>>> is, I don't know what would cause ep->desc == NULL?  Whatever causes
>>> this (and it might be related to
>>> a function called "usb_gadget_ep_match_desc") I'd like to know because
>>> knowing might tell me how to fix
>>> whatever it is I'm doing wrong or maybe patch the code so that things
>>> might work.
>>>
>>> I'm hoping someone knowledgeable about am335x USB can help here, or
>>> maybe let me know what I'm missing
>>> in my HID configuration.  The above configuration steps may not work,
>>> however, some python code I had previously
>>> also fails to function.  It might even be possible that I just need to
>>> use the regular HID driver and not one based on
>>> libcomposite.
>>>
>>> Thanks for reading this.  Hopefully there are some answers.
>>>
>>
>> So, I'm not a USB composite framework expert. I only started reading
>> about it last night for another reason. A lot of what you're stating in
>> your last couple paragraphs here do not make sense to me. What I'm reading
>> from your post is that the end point descriptor must be NULL. but you're
>> not sure why it's NULL . . .yadda yadda yadda . . .That should not be true.
>>
>
> The yadda yadda yadda was kind of the point.  I actually have looked into
> it further and the only way that reference would actually be null is if the
> autoepconfig function couldn't choose any available endpoint because none
> of them matched the correct criteria.  I'm not sure where I'm supposed to
> SET UP the appropriate criteria, hence the question, and the details.
>
>>
>> My first impression after looking through that code is user error. Simply
>> because a function that's being used requires a valid end point descriptor
>> reference as an argument, and that argument is NULL. Which tells me that
>> whole "object" was never instantiated in the first place.
>>
> those objects aren't "instantiated".  They are actually endpoints that are
> "built-in" (you can see one for full-speed, high-speed, and now
> super-speed).  One of the endpoints is supposed to get selected based on an
> appropriate description.  Mine probably doesn't match or I haven't set one,
> hence it doesn't work.  But I don't see anywhere where I can actually
> SPECIFY the necessary things in configfs... Maybe you just can't build a
> HID device with configfs right now?  Or maybe something changed.  Either
> way, I'm researching the answer to that question so I can figure out what I
> really need to do.  Maybe there is another way I can configure a HID
> driver, not using configfs.
>
> The things I was able to do in the 3.13.xx kernel don't seem to work with
> this kernel either, or I don't have them set up correctly, hence I figured
> the "new" or current method was to use configfs.  But maybe this isn't the
> case.
>
> I have tried to get the "latest" from the TI repo, and the results are the
> same.  So I'm guessing that my kernel configuration was probably okay, but
> somehow I'm not doing something right with configfs, or configfs doesn't
> work for HID devices yet (I don't know if I believe that, but its
> possible).  At any rate, I've not managed to get it working yet.
>

Yeah that's all I was really saying. Sometimes *things* like to be done in
a certain order, or maybe a configfs step that was required was missed ?
Theres a LWN article I was reading the other day, that seems to be pretty
full of information. However, the "walk-thru" only talks about
re-implementing the mass storage gadget using USB composite.
https://lwn.net/Articles/395712/

I've also seen a few presentation type PDF's out there. I do not really
know enough about the framework to know how useful these are though. Passed
that, I have not yet seen one for HiD. Although . . . you know what, I
think DR. Phil Polstra did a presentation on emulating a keyboard using HiD
USB device, and I do think he used configfs . . . However he may have used
an older kernel as well.

I'll tell you what though, even though I'm not necessarily interested in
creating an HiD device. I have interest in this whole composite framework.
SO I'll do some searching on my own, and let you know what I find. I may
even just start out with an HiD "thing" just to get my feet wet.

Maybe you've seen these already ? I'm not sure if any, or all of this is
already know to you, but here goes . . .

Matt Porter:
http://events.linuxfoundation.org/sites/events/files/slides/USB%20Gadget%20Configfs%20API_0.pdf
 Andrzej Pietrasiewicz:
https://events.linuxfoundation.org/sites/events/files/slides/LinuxConNA-Make-your-own-USB-gadget-Andrzej.Pietrasiewicz.pdf

Additional documentation / example code:
http://lxr.free-electrons.com/source/Documentation/usb/gadget_hid.txt

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/CALHSORrSC5RsWQ5rdcMg%3D4SuOmgvw2h4YFAMLhQTozGO6q1ajQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to