BeagleBoard/GSoC/alaaemad-2023-proposal

= Proposal for Porting multi-channel sound card drivers to recent kernels =


 * Student: Alaa Emad
 * Mentors: rma, henrix, giuliomoro, jluthra
 * Code: https://github.com/BelaPlatform/Bela
 * Proposal : https://elinux.org/BeagleBoard/GSoC/alaaemad-2023-proposal
 * GSoC:

= Status =
 * Pre-application phase

=Proposal=
 * Completed all the general requirements
 * Completed "Hello World" of cross-compilation mentioned in the requirements list.

About you

 * IRC: alaaemad
 * Github: https://github.com/alaa-emad
 * School: Cairo University
 * Country: Egypt
 * Primary language: English, Arabic
 * Typical work hours: 8 AM - 5 PM (GMT + 2 Cairo time)
 * This is the first time I am participating in GSoC.

About your project
Project name: Porting multi-channel sound card drivers to recent kernels

Description
As part of this project, I will develop and/or update kernel audio drivers for some soundcards currently available for the BeagleBoard series of SBCs. The objective is to have support for the latest TI kernel (> 5.10) and for some of the most recent TI SoC, such as the Sitara AM6xxx series that is on the SK-AM62 board and the TDA4VM that is on the BeagleBone AI-64.

As given on the official website, Bela is a hardware and software system for creating beautiful interaction with sensors and sound. Bela consists of a Bela cape on top of a BeagleBone Black computer (uptil now). Bela has a lot of analog and digital inputs and outputs for hooking up sensors and controlling other devices, and most importantly Bela has stereo audio i/o allowing you to interact with the world of sound. Both Bela systems use the same Bela software. It uses a customised Debian distribution which - most notably - uses a Xenomai kernel instead of a stock kernel. Xenomai is co-kernel for Linux which allows to achieve hard real-time performance on Linux machines (http://xenomai.org/). It thus takes advantage of features of the BeagleBone computers and can achieve extremely fast audio and sensor processing times.
 * What is Bela?

Bela is ideal for creating anything interactive that uses sensors and sound. So far, Bela has been used to create: and many more applications that are listed here
 * Applications of Bela:
 * 1) musical instruments and audio effects
 * 2) kinetic sculptures
 * 3) wearable devices
 * 4) interactive sound installations


 * Why Porting multi-channel sound card drivers to recent kernels?


 * The Bela and BelaMini capes feature a TLV320AIC3104 codec (stereo I/O) controlled via I2C and connected to the McASP clock and data lines. This could be used in older kernels and architectures (e.g.: up to 4.14 on Sitara AM3358) with the simple-audio-card driver and a relevant device tree fragment. It has to be tested whether it still works on more recent kernels and SoCs.


 * A multi-channel version (BelaMiniMultichannelExpander) combines 1x TLV320AIC3104 and 3xTLV320AIC3106 to achieve 8in/8out; this is supported via a Bela-specific library but there is no kernel support for it yet.


 * The Bela cape Rev C adds an ES9080Q 8-channel DAC which is also connected to the McASP; this is supported via a user-space Bela-specific library, but there is no kernel support for it yet.


 * The CTAG capes have an AD1938 codec (4in / 8out) which is controlled via SPI, has an on-board crystal oscillator, and are connected to the McASP data and clock lines. This has its own device driver which has been fixed up a few times over time (most recently here, AFAIK) but its features are limited and needs to be tidied up and tested on newer kernels.

Proposed method of Implementation
During this project I will:



Timeline
Provide a development timeline with a milestone each of the 11 weeks and any pre-work. (A realistic timeline is critical to our selection process.)

Experience and approach
I have 4+ years of experience with software development. I hold a Professional Master's Degree specializing in Embedded Systems. I have 2+ years of experience with C/C++ and Embedded Systems and good experience with Linux Kernel. I was Linux Kernel mentee in Linux Kernel Mentorship Program. This project helps the applicants choose bugs to fix, work through the problem found, and help get the issue resolved in the Linux kernel by producing a fix.

Contingency
I believe that if I get stuck on my project and my mentor isn’t around, I will use the resources that are available to me and look for the information that I need to continue the work.

Benefit
I believe that the project is very important for Beagle Bone Audio Applications. It will provide support for the latest TI kernel (> 5.10) and for some of the most recent TI SoC, such as the Sitara AM6xxx series that is on the SK-AM62 board and the TDA4VM that is on the BeagleBone AI-64.

Misc

 * For hello_world of cross-compilation, sent a PR to the mentioned upstream