= Beagle BSP: Add FDT based initialization = [[TOC(GSoC/2020/Beagle_FDT_initialization , depth=2)]] = Project Description = '''Project Name:''' Beagle BSP: Add a flattened device tree based initialization '''Student:''' G S Niteesh Babu '''Mentors:''' Christian Mauderer, Amaan Cheval, Vijay Kumar Banerjee [https://docs.google.com/document/d/1V2RitYJOvWOvfow99hPUFB034iw4gb4eSfH8MixHnrk/edit Original proposal] The Beagle BSP in RTEMS is nearly complete with almost all peripherals working and has official support for the following board variants. * BeagleBoard * BeagleBoard XM * BeagleBone Black * BeagleBone Original As of 2020, the BSP has support for the following peripherals. * PRU * ADC * GPIO * I2C * SPI * PWM * USB * MMC * Networking * Framebuffer RTEMS uses libBSD to provide support to various subsystems like TCP/IP, USB, SD, and some more. And indeed the USB, Networking, MMC subsystems in the Beagle BSP are supported using libBSD. Most modern SoCs use a pin controller to share a pin among multiple peripherals. For example, a single pin can act as an I2C data line or as a USB data line. This is done to support more sets of peripherals with a small number of pins. The drivers have to configure the pins before initializing the device. In RTEMS the drivers do this manually whereas in libBSD this configuration is done with the help of a pin muxing driver present in libBSD. This causes double initialization of a few pins. Once during initialization of RTEMS drivers and a second time during initialization of libBSD. One of the goals of this project is to move the pin muxing driver into RTEMS and have the driver in libBSD to use it. The other goal is to refactor the drivers present in RTEMS for the Beagle BSP to parse values from the device tree and remove the hardcoded values. This would make the BSP more generic and hence adding support for other board variants will become easy. The following has to be done to complete the project. 1. Implement OFW functions. 2. Import Beagle pin mux driver. 3. Design and implement a generic pin mux driver. 4. Refactor the device drivers to parse values from FDT. 5. Test the drivers.