BeagleBoard/GSoC/2019Proposal/usbDeviceTreeIntegration

To develop a system to enumerate USB devices from device tree nodes on boot.

Student: Jmarek Mentors: rcn-ee Code: https://github.com/BeaglePilot Wiki: http://elinux.org/BeagleBoard/GSoC/Proposal/usbDeviceTreeIntegration GSoC: GSoC entry

=Status= This project is currently just a proposal.

=Proposal=

About Me
IRC: jmarek Github: jmarek117 School: Michigan Technological University Country: United States Primary language: English Typical work hours: 8AM-5PM US Eastern Previous GSoC participation: This GSoC project is an opportunity to have a more structured introduction into participating in upstream Linux Kernel development. I have experience working on the X-ES custom kernel branch they maintain to support their products but I would like to make more broad contributions to the community.

About your project
Project name: USB configFS in device tree

Description
To speed up the boot process by configuring USB statically in the device tree instead of it being conventionally done through a script at boot time. Goal: USB configfs in device tree such that they can be configured statically in device tree ahead of boot and speed the boot process.

Timeline
I do not have a lot of experience mapping out a project over the course of 3 months and that may be reflected in the project outline.

2017-06-06: Gain understanding of configFS and libcomposite 2017-06-13: Gain an understanding of usb device enumeration and usb function drivers 2017-06-20: Build device tree property outline 2017-06-27: Start interface between device tree and configFS 2017-07-04: Continue interface between device tree and configFS 2017-07-11: Continue interface between device tree and configFS 2017-07-18: Verify USB device discovery and enumeration 2017-07-25: Start interface between USB device and function drivers 2017-08-01: Continue interface betwen USB device and function drivers 2017-08-08: verify USB functionality 2017-08-15: verify USB funcitonality

There are factors that will change this time line including my understanding of the USB subsystem. It may be that after the device listed in the device tree is enumerated, the USB subsystem of the kernel links it to the appropriate function drivers, or the function drivers are linked to the USB device when the device driver is compiled. The answer to this question and other similar to it will be resolved within the first 2 weeks of GSoC as I research the USB kernel subsystem to map out what the project needs to look like.

Experience and approach
I am a fourth year computer science student with a co-op at Extreme Engineering Solutions (X-ES). X-ES produces ruggadized single board computers that run a branch of the Linux kernel that the Linux team at X-ES develops and maintains. As an embedded systems engineer co-op on the Linux team I gained experience working with development on the Linux kernel for embedded systems. Projects I worked on included writing device drivers to interface with a chipset on a SPI bus. This project gave me exposure to working with device trees and writing device drivers to interface with systems over bus communications.

Contingency
There are many resources online to help with Linux kernel development. Elixir provides a interface to kernel source code that is easy to navigate, forums exist for all aspects of the Linux kernel and its unlikely I will run into a problem dissimilar from problems other people have had in the past. In the event that the forums are of no use there is still the mailing lists.

Benefit
If successfully completed, what will its impact be on the BeagleBoard.org community? Include quotes from BeagleBoard.org community members who can be found on http://beagleboard.org/discuss and http://bbb.io/gsocchat.

Why do you want to work on this project?
I want to be a contributor to the Linux kernel and this project would give me a structured introduction to the process. This project also allows me to build on my experience from working with X-ES on embedded Linux.